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