|
journeyman
|
OP
journeyman
Joined: Sep 2016
|
I'd very much like to change how saves vs debuffs work, to make the system a bit less binary. What I want to implement is a system where having 75 out of 100 physical armor grants you a 75% chance to resist physical debuffs, so you still need to apply damage before you CC, just not all the way down to 0. Does anyone have any idea what files I'd be looking at?
I've got moderate fluency with modding DOS:EE. I'm only just familiarizing myself with the D:OS 2 editor.
|
|
|
|
apprentice
|
apprentice
Joined: Nov 2016
|
Sounds like an interesting concept wonder how it will workout ingame.
|
|
|
|
journeyman
|
journeyman
Joined: Sep 2017
|
Baardvark was working on a D&D mod conversion. He stated not all mechanics would be converted to a D&D-like system, but saves were definitely on his radar, so the CC wouldn't be predictable and binary the way it is now.
|
|
|
|
old hand
|
old hand
Joined: Aug 2014
|
Yup, have something cooked up here. It takes into account armor percentage, vitality, perseverance. I also tied in special resists to Stunned and Frozen, and would do the same with most other statuses probably. This script is USED by Base. Feel free to do your own thing with it or just use it for context. Have lots of other things going right now so won't be getting around to this too soon. Kind of a clunky system but it works. You'll have to also go into the status data and remove the SavingThrow from statuses.
INIT
CHARACTER:__Me
STATUS:%MagicStatus = null
STATUS:%PhysStatus = null
FLOAT:%CritResistMalus = 0.0
EVENTS
EVENT CritResistReduction
VARS
FLOAT:_Wits
CHARACTER:_Source
ON
OnCriticalHit(_Source,_,_,_)
ACTIONS
IF "c1"
CharacterGetStat(_Wits,_Source,Wits) // receiving a crit temporarily reduces your resist chance according to wits of critter
THEN
Multiply(_Wits,-0.01)
Set(%CritResistMalus,_Wits)
StartTimer("CritBonusReset",0.60,0)
ENDIF
EVENT CritReset
VARS
ON
OnTimer("CritBonusReset")
ACTIONS
Set(%CritResistMalus,0.0)
EVENT ResistMagicStatuses
VARS
STATUS:_Status
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,_Status)
ACTIONS
IF "c1|c2|c3|c4|c5|c6|c7|c8|c9|c10|c11|c12|c13|c14"
IsEqual(_Status,BURNING)
IsEqual(_Status,POISONED)
IsEqual(_Status,SLOWED)
IsEqual(_Status,FEAR)
IsEqual(_Status,BLIND)
IsEqual(_Status,CHILLED)
IsEqual(_Status,DAZED)
IsEqual(_Status,MUTED)
IsEqual(_Status,CURSED)
IsEqual(_Status,NECROFIRE)
IsEqual(_Status,CHARMED)
IsEqual(_Status,MADNESS)
IsEqual(_Status,SLEEPING)
IsEqual(_Status,FIREBLOOD)
THEN
IF "!c1&!c2&c3&c4&c5&c6&c7&c8"
CharacterHasStatus(__Me,RANDOMMALUS) // IGNORE THIS, from my mod
CharacterHasTalent(__Me,Raistlin) // Glass Cannon users can't resist
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetStatusSourceCharacter(__Me,_Status,_Source)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1&(c2|c3)&c4"
IsGreaterThen(_Con,.10)
IsLessThen(_Con,.9)
IsEqual(_Con,.9)
IsRandom(_Con)
THEN
Set(%MagicStatus,_Status)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ELIF "c1"
IsGreaterThen(_Con,.9)
THEN
Set(%MagicStatus,_Status)
StartTimer("MagicStatusTimer",0.50,0)
ENDIF
ENDIF
ENDIF
EVENT ResistPhysicalStatuses
VARS
STATUS:_Status
INT:_Pers
FLOAT:_PersRes
FLOAT:_PhysArmor
FLOAT:_Con
CHARACTER:_Source
FLOAT:_Strength
FLOAT:_Vitality
ON
OnCharacterStatusApplied(__Me,_Status)
ACTIONS
IF "c1|c2|c3|c4|c5|c6|c7|c8|c9|c10"
IsEqual(_Status,CRIPPLED)
IsEqual(_Status,KNOCKED_DOWN)
IsEqual(_Status,PETRIFIED)
IsEqual(_Status,BLEEDING)
IsEqual(_Status,DECAYING_TOUCH)
IsEqual(_Status,DISARMED)
IsEqual(_Status,CHICKEN)
IsEqual(_Status,WEAK)
IsEqual(_Status,DISEASED)
IsEqual(_Status,INFECTIOUS_DISEASED)
THEN
IF "!c1&!c2&c3&c4&c5&c6&c7&c8"
CharacterHasStatus(__Me,RANDOMMALUS)
CharacterHasTalent(__Me,Raistlin)
CharacterGetStat(_PhysArmor,__Me,PhysicalArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetStatusSourceCharacter(__Me,_Status,_Source)
CharacterGetStat(_Strength,_Source,Strength)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0)
Cast(_PersRes,_Pers)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Strength,-0.01)
Multiply(_Vitality,0.5)
Add(_Con,_Strength)
Add(_Con,_PhysArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
IF "c1&(c2|c3)&c4"
IsGreaterThen(_Con,.10)
IsLessThen(_Con,.90)
IsEqual(_Con,.9)
IsRandom(_Con)
THEN
Set(%PhysStatus,_Status)
StartTimer("PhysStatusTimer",0.50,0)
ELIF "c1"
IsGreaterThen(_Con,.9)
THEN
Set(%PhysStatus,_Status)
StartTimer("PhysStatusTimer",0.50,0)
ENDIF
ENDIF
ENDIF
EVENT ResistStunned
VARS
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
INT:_Aero
FLOAT:_AeroResist
INT:_AeroSource
FLOAT:_AeroMalus
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,STUNNED)
ACTIONS
IF "!c1&c2&c3&c4&c5&c6&c7&c8&c9"
CharacterHasTalent(__Me,Raistlin) // Glass Cannon users can't resist
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetAbility(_Aero,__Me,AirSpecialist)
CharacterGetStatusSourceCharacter(__Me,STUNNED,_Source)
CharacterGetAbility(_AeroSource,_Source,AirSpecialist)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Cast(_AeroResist,_Aero)
Cast(_AeroMalus,_AeroSource)
Multiply(_AeroMalus,-0.05)
Multiply(_AeroResist,.15)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_AeroMalus)
Add(_Con,_AeroResist)
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1"
IsRandom(_Con)
THEN
Set(%MagicStatus,STUNNED)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ENDIF
ENDIF
EVENT ResistFrozen
VARS
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
INT:_Water
FLOAT:_WaterResist
INT:_WaterSource
FLOAT:_WaterMalus
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,FROZEN)
ACTIONS
IF "!c1&c2&c3&c4&c5&c6&c7&c8&c9"
CharacterHasTalent(__Me,Raistlin)
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetAbility(_Water,__Me,WaterSpecialist)
CharacterGetStatusSourceCharacter(__Me,FROZEN,_Source)
CharacterGetAbility(_WaterSource,_Source,WaterSpecialist)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Cast(_WaterResist,_Water)
Cast(_WaterMalus,_WaterSource)
Multiply(_WaterMalus,-0.05)
Multiply(_WaterResist,.15)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_WaterMalus)
Add(_Con,_WaterResist)
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1"
IsRandom(_Con)
THEN
Set(%MagicStatus,FROZEN)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ENDIF
ENDIF
Last edited by Baardvark; 16/09/17 04:30 PM.
|
|
|
|
journeyman
|
OP
journeyman
Joined: Sep 2016
|
Very cool Baardvark. Thanks for posting this.
|
|
|
|
addict
|
addict
Joined: Jun 2013
|
|
|
|
|
member
|
member
Joined: May 2017
|
This would be amazing, not going to lie. The armor/save system is just about my only misgiving about an otherwise stellar game.
|
|
|
|
apprentice
|
apprentice
Joined: Sep 2017
|
Yup, have something cooked up here. It takes into account armor percentage, vitality, perseverance. I also tied in special resists to Stunned and Frozen, and would do the same with most other statuses probably. This script is USED by Base. Feel free to do your own thing with it or just use it for context. Have lots of other things going right now so won't be getting around to this too soon. Kind of a clunky system but it works. You'll have to also go into the status data and remove the SavingThrow from statuses.
INIT
CHARACTER:__Me
STATUS:%MagicStatus = null
STATUS:%PhysStatus = null
FLOAT:%CritResistMalus = 0.0
EVENTS
EVENT CritResistReduction
VARS
FLOAT:_Wits
CHARACTER:_Source
ON
OnCriticalHit(_Source,_,_,_)
ACTIONS
IF "c1"
CharacterGetStat(_Wits,_Source,Wits) // receiving a crit temporarily reduces your resist chance according to wits of critter
THEN
Multiply(_Wits,-0.01)
Set(%CritResistMalus,_Wits)
StartTimer("CritBonusReset",0.60,0)
ENDIF
EVENT CritReset
VARS
ON
OnTimer("CritBonusReset")
ACTIONS
Set(%CritResistMalus,0.0)
EVENT ResistMagicStatuses
VARS
STATUS:_Status
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,_Status)
ACTIONS
IF "c1|c2|c3|c4|c5|c6|c7|c8|c9|c10|c11|c12|c13|c14"
IsEqual(_Status,BURNING)
IsEqual(_Status,POISONED)
IsEqual(_Status,SLOWED)
IsEqual(_Status,FEAR)
IsEqual(_Status,BLIND)
IsEqual(_Status,CHILLED)
IsEqual(_Status,DAZED)
IsEqual(_Status,MUTED)
IsEqual(_Status,CURSED)
IsEqual(_Status,NECROFIRE)
IsEqual(_Status,CHARMED)
IsEqual(_Status,MADNESS)
IsEqual(_Status,SLEEPING)
IsEqual(_Status,FIREBLOOD)
THEN
IF "!c1&!c2&c3&c4&c5&c6&c7&c8"
CharacterHasStatus(__Me,RANDOMMALUS) // IGNORE THIS, from my mod
CharacterHasTalent(__Me,Raistlin) // Glass Cannon users can't resist
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetStatusSourceCharacter(__Me,_Status,_Source)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1&(c2|c3)&c4"
IsGreaterThen(_Con,.10)
IsLessThen(_Con,.9)
IsEqual(_Con,.9)
IsRandom(_Con)
THEN
Set(%MagicStatus,_Status)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ELIF "c1"
IsGreaterThen(_Con,.9)
THEN
Set(%MagicStatus,_Status)
StartTimer("MagicStatusTimer",0.50,0)
ENDIF
ENDIF
ENDIF
EVENT ResistPhysicalStatuses
VARS
STATUS:_Status
INT:_Pers
FLOAT:_PersRes
FLOAT:_PhysArmor
FLOAT:_Con
CHARACTER:_Source
FLOAT:_Strength
FLOAT:_Vitality
ON
OnCharacterStatusApplied(__Me,_Status)
ACTIONS
IF "c1|c2|c3|c4|c5|c6|c7|c8|c9|c10"
IsEqual(_Status,CRIPPLED)
IsEqual(_Status,KNOCKED_DOWN)
IsEqual(_Status,PETRIFIED)
IsEqual(_Status,BLEEDING)
IsEqual(_Status,DECAYING_TOUCH)
IsEqual(_Status,DISARMED)
IsEqual(_Status,CHICKEN)
IsEqual(_Status,WEAK)
IsEqual(_Status,DISEASED)
IsEqual(_Status,INFECTIOUS_DISEASED)
THEN
IF "!c1&!c2&c3&c4&c5&c6&c7&c8"
CharacterHasStatus(__Me,RANDOMMALUS)
CharacterHasTalent(__Me,Raistlin)
CharacterGetStat(_PhysArmor,__Me,PhysicalArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetStatusSourceCharacter(__Me,_Status,_Source)
CharacterGetStat(_Strength,_Source,Strength)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0)
Cast(_PersRes,_Pers)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Strength,-0.01)
Multiply(_Vitality,0.5)
Add(_Con,_Strength)
Add(_Con,_PhysArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
IF "c1&(c2|c3)&c4"
IsGreaterThen(_Con,.10)
IsLessThen(_Con,.90)
IsEqual(_Con,.9)
IsRandom(_Con)
THEN
Set(%PhysStatus,_Status)
StartTimer("PhysStatusTimer",0.50,0)
ELIF "c1"
IsGreaterThen(_Con,.9)
THEN
Set(%PhysStatus,_Status)
StartTimer("PhysStatusTimer",0.50,0)
ENDIF
ENDIF
ENDIF
EVENT ResistStunned
VARS
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
INT:_Aero
FLOAT:_AeroResist
INT:_AeroSource
FLOAT:_AeroMalus
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,STUNNED)
ACTIONS
IF "!c1&c2&c3&c4&c5&c6&c7&c8&c9"
CharacterHasTalent(__Me,Raistlin) // Glass Cannon users can't resist
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetAbility(_Aero,__Me,AirSpecialist)
CharacterGetStatusSourceCharacter(__Me,STUNNED,_Source)
CharacterGetAbility(_AeroSource,_Source,AirSpecialist)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Cast(_AeroResist,_Aero)
Cast(_AeroMalus,_AeroSource)
Multiply(_AeroMalus,-0.05)
Multiply(_AeroResist,.15)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_AeroMalus)
Add(_Con,_AeroResist)
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1"
IsRandom(_Con)
THEN
Set(%MagicStatus,STUNNED)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ENDIF
ENDIF
EVENT ResistFrozen
VARS
INT:_Pers
FLOAT:_PersRes
FLOAT:_MagicArmor
FLOAT:_Con
FLOAT:_Int
FLOAT:_Vitality
INT:_Water
FLOAT:_WaterResist
INT:_WaterSource
FLOAT:_WaterMalus
CHARACTER:_Source
ON
OnCharacterStatusApplied(__Me,FROZEN)
ACTIONS
IF "!c1&c2&c3&c4&c5&c6&c7&c8&c9"
CharacterHasTalent(__Me,Raistlin)
CharacterGetStat(_MagicArmor,__Me,MagicArmor)
CharacterGetStat(_Con,__Me,Constitution)
CharacterGetAbility(_Pers,__Me,Perseverance)
CharacterGetAbility(_Water,__Me,WaterSpecialist)
CharacterGetStatusSourceCharacter(__Me,FROZEN,_Source)
CharacterGetAbility(_WaterSource,_Source,WaterSpecialist)
CharacterGetStat(_Int,_Source,Intelligence)
CharacterGetStat(_Vitality,__Me,Vitality)
THEN
Add(_Vitality,-1.0) // Turn current vitality % into the percentage that's missing as a negative
Cast(_PersRes,_Pers) // Convert Perseverance from an integer to a float (fraction)
Cast(_WaterResist,_Water)
Cast(_WaterMalus,_WaterSource)
Multiply(_WaterMalus,-0.05)
Multiply(_WaterResist,.15)
Multiply(_PersRes,.03)
Multiply(_Con,.015)
Multiply(_Int,-0.01)
Multiply(_Vitality,0.5) // halve the vitality penalty
Add(_Con,_WaterMalus)
Add(_Con,_WaterResist)
Add(_Con,_Int)
Add(_Con,_MagicArmor)
Add(_Con,_PersRes)
Add(_Con,_Vitality)
Add(_Con,%CritResistMalus)
IF "c1"
IsRandom(_Con)
THEN
Set(%MagicStatus,FROZEN)
StartTimer("MagicStatusTimer",0.50,0) // timer delay since a status can't seem to be removed within a script when the trigger was that status being applied
ENDIF
ENDIF Baardvark, I like the idea of the decaying armor resist chance. But perhaps a proportional system is a bit too "heavy"? I don't exactly understand how the vitality and perseverance are plugged into the math equation but from my limited understanding its close-ish to.... EX:25/100 armor = 25% resist chance? The predictability of armor vs status effects as it is currently is nice in it's own way but perhaps too certain. Making it proportional is perhaps too limiting to armor. Maybe a middle ground with diminishing returns once you get past a certain threshold? IE From 100-70% armor you are still at 100% resists, below that you start losing 5% resist chance for every 10% of armor you are missing. 60% armor = 10% effect penetration 50% armor = 15% effect penetration 40% armor = 20% effect penetration 30% armor = 25% effect penetration 20% armor = 30% effect penetration Maybe it's just my line of thinking at the moment, but it seems like a middle ground where you can punch holes in armor to create a small window without heavily gutting the effectiveness of 20-50% armor. I think some people want a little randomness to the mix but maybe without making it too random?
Last edited by Ranik; 17/09/17 11:38 AM.
|
|
|
|
stranger
|
stranger
Joined: Sep 2017
|
Can this script be made into an standalone mod and updated to the Nexus?
The armor system is the first thing I thought about changing when I started the game. In the first game, I actually liked the way you could easily gain the upper-hand in a battle thanks to elemental and status effects, and armor and defended has totally eliminated this advantage in the second game. An standalone version of this script seems like a reasonable middle ground.
Thanks in advance.
|
|
|
|
old hand
|
old hand
Joined: Aug 2014
|
Baardvark, I like the idea of the decaying armor resist chance. But perhaps a proportional system is a bit too "heavy"? I don't exactly understand how the vitality and perseverance are plugged into the math equation but from my limited understanding its close-ish to....
EX:25/100 armor = 25% resist chance?
The predictability of armor vs status effects as it is currently is nice in it's own way but perhaps too certain. Making it proportional is perhaps too limiting to armor.
Maybe a middle ground with diminishing returns once you get past a certain threshold?
IE From 100-70% armor you are still at 100% resists, below that you start losing 5% resist chance for every 10% of armor you are missing.
60% armor = 10% effect penetration 50% armor = 15% effect penetration 40% armor = 20% effect penetration 30% armor = 25% effect penetration 20% armor = 30% effect penetration
Maybe it's just my line of thinking at the moment, but it seems like a middle ground where you can punch holes in armor to create a small window without heavily gutting the effectiveness of 20-50% armor.
I think some people want a little randomness to the mix but maybe without making it too random
So constitution grants 1.5% resist chance per point, and perseverance grants 3% resist chance per point. However, intelligence/strength of the caster reduces resist chance by 1%. I'm thinking int and strength bonuses probably could be nixed, in which case, even with 0% armor, you'd have at least 15% chance to resist from Con (maybe then reduce the con bonus to 1%), plus any resist chance from perseverance. So that slightly slows down the armor scaling, but not quite as much. You could probably double or increase resists you gain armor by 50%, and it would accomplish what you're asking for somewhat. That would mean (if doubled) you'd still have 100% chance to resist at 50% armor, and 50% chance to resist with 25% armor, etc. A 50% increase of the resist value of armor would mean at 50% armor, you'd have 75% chance to resist. I like the simplicity of the 1 to 1 value of armor, but making it 50% more effective might make it slightly less extreme.
|
|
|
|
journeyman
|
journeyman
Joined: Aug 2017
|
% percent of armor not seems reasonable as 200 armor and 10 armor shouldn't get the same penetration indeed a huge change of everything is required up to changing every char's stats for balance. However Every Skill can be modified by Attribute formula for hit chance like many of other games in this kind. But actually Divinity 2 is not based on specialized class system otherwise every skill will not have a %100 hit chance. But it can still be modable to make the game specialized class system like fighters with high cons, str will have higher chance to their skills hit meanwhile even hit chance of weapons can be aranged up to this system but as i mentioned this is a huge change . So armor / magical armor will only block the damage not the status effect I will think some of this in modding anyway nice opinions are coming.
|
|
|
|
journeyman
|
journeyman
Joined: Sep 2017
|
|
|
|
|
old hand
|
old hand
Joined: Mar 2014
|
Could someone please ask smarmbot to put this mod on the Nexus? In case he isnt around and doesnt see this post.
Also, thank you very, very, very much smarmbot.
Please put this on the nexus.
|
|
|
|
|