With Baardvaark's permission I've adapted his saving throw script to make your chance to resist a status equal to the percentage of physical or magical armor you have left. I've gotten it to work exactly how I want it to (!!) except for this one little problem I'm hoping someone here can help me figure out.

The mod works by overriding the status entries for every debuff with a physical or magic armor check and deleting the 'saving throw' for each, so disables will pass right through armor. Then, the following events are added to the top of Statuses.gamescript, which controls status interactions (i.e. wet + chilled = frozen).

For physical armor debuffs:

Quote
EVENT ResistPhysStatuses
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
FLOAT:_PhysArmor
ON
FetchCharacterApplyStatusData(_Character, _Result)
ACTIONS
ListClear(_RemoveList)

IF "c1|c2|c3|c4|c5|c6|c7|c8"

IsEqual(_Result,CRIPPLED)
IsEqual(_Result,DISEASED)
IsEqual(_Result,TAUNTED)
IsEqual(_Result,BLEEDING)
IsEqual(_Result,TAUNTED)
IsEqual(_Result,DISARMED)
IsEqual(_Result,KNOCKED_DOWN)
IsEqual(_Result,CHICKEN)

THEN
IF "!c1&c2&c3"
CharacterHasTalent(_Character,Raistlin)
CharacterGetStat(_PhysArmor,_Character,PhysicalArmor)
IsRandom(_PhysArmor)

THEN
ListAdd(_RemoveList, _Result)
Set(_Result,null)
StatusText(_Character,"Effect resisted by physical armor")
ENDIF
ENDIF
RETURN(_RemoveList,_Result,null)

For magic armor debuffs:

Quote
EVENT ResistMagicStatuses
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
FLOAT:_MagicArmor
ON
FetchCharacterApplyStatusData(_Character, _Result)
ACTIONS
ListClear(_RemoveList)

IF "c1|c2|c3|c4|c5|c6|c7|c8|c9|c10|c11|c12|c13|c14|c15|c16|c17|c18|c19|c20"

IsEqual(_Result,BLIND)
IsEqual(_Result,CURSED)
IsEqual(_Result,WEAK)
IsEqual(_Result,CHILLED)
IsEqual(_Result,SHOCKED)
IsEqual(_Result,NULL_RESISTANCE)
IsEqual(_Result,FIREBLOOD)
IsEqual(_Result,MADNESS)
IsEqual(_Result,FLAMING_CRESCENDO)
IsEqual(_Result,DEAF)
IsEqual(_Result,POISONED)
IsEqual(_Result,BURNING)
IsEqual(_Result,NECROFIRE)
IsEqual(_Result,FEAR)
IsEqual(_Result,FROZEN)
IsEqual(_Result,PETRIFIED)
IsEqual(_Result,STUNNED)
IsEqual(_Result,SLEEPING)
IsEqual(_Result,MUTED)
IsEqual(_Result,ENTANGLED)

THEN
IF "!c1&c2&c3"
CharacterHasTalent(_Character,Raistlin)
CharacterGetStat(_MagicArmor,_Character,MagicArmor)
IsRandom(_MagicArmor)

THEN
ListAdd(_RemoveList, _Result)
Set(_Result,null)
StatusText(_Character,"Effect resisted by magic armor")

ENDIF
ENDIF
RETURN(_RemoveList,_Result,null)

So if the status is any one of the statuses we've removed saves from, we do a random roll based on the percentage of the corresponding armor type remaining, and if we roll under that percentage the status is 'blocked,' and the text 'Effect resisted by ____ armor" is shown above the character.

The problem I'm having now is that of the two events (physical and magic saves), whichever I put at the top of this file works correctly. The one I put second lets the statuses it governs right through armor. It still returns the 'Effect resisted by ____ armor' text, which indicates to me that the armor percentage check is still occuring, but the status is never 'blocked.' This works the same no matter which event comes second, physical or magic.

I assume this problem has something to do with the 'remove list.' If I had a better understanding of how the scripts here work I might be able to figure it out, but my coding process is pretty much all intuition and trial and error.

Oh, and the reason I do this in Statuses.gamescript and not a character script is that FetchCharacterApplyStatusData is the only way I've found to 'grab' a status right before it's applied. (The character script this is based on has to remove statuses immediately after application, which returns a bunch of unsightly status set, status removed notifications.)

Here's what the rest of Statuses.gamescript (the base game code) looks like:

EVENTS
EVENT CharacterSetWarm
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, WARM)
ACTIONS
Set(_Result,WARM)
ListClear(_RemoveList)
ListAdd(_RemoveList,WET)
IF "c1"
CharacterHasStatus(_Character, WARM)
THEN
ListAdd(_RemoveList,WARM)
Set(_Result,BURNING)
ELIF "c1|c2|c3"
CharacterHasStatus(_Character, BURNING)
CharacterHasStatus(_Character, NECROFIRE)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, CHILLED)
THEN
ListAdd(_RemoveList,CHILLED)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, FROZEN)
THEN
ListAdd(_RemoveList,FROZEN)
Set(_Result,CHILLED)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetBurning
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, BURNING)
ACTIONS
Set(_Result,BURNING)
ListClear(_RemoveList)
IF "c1&!c2"
CharacterHasStatus(_Character, WARM)
CharacterHasStatus(_Character, WET)
THEN
ListAdd(_RemoveList, WARM)
ELIF "c1&!c2"
CharacterHasStatus(_Character, WET)
CharacterHasStatus(_Character, WARM)
THEN
ListAdd(_RemoveList, WET)
Set(_Result, WARM)
ELIF "c1&c2"
CharacterHasStatus(_Character, WET)
CharacterHasStatus(_Character, WARM)
THEN
ListAdd(_RemoveList, WET)
ELIF "c1"
CharacterHasStatus(_Character, CHILLED)
THEN
ListAdd(_RemoveList, CHILLED)
Set(_Result, WARM)
ELIF "c1"
CharacterHasStatus(_Character, FROZEN)
THEN
ListAdd(_RemoveList, FROZEN)
Set(_Result, WET)
ELIF "c1|c2"
CharacterHasStatus(_Character, NECROFIRE)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetNecrofire
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, NECROFIRE)
ACTIONS
Set(_Result,NECROFIRE)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, PETRIFIED)
THEN
Set(_Result,null)
ELSE
ListAdd(_RemoveList, WARM)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, WET)
ListAdd(_RemoveList, FROZEN)
IF "c1"
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, BURNING)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result, BURNING)
ENDIF
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetHolyFire
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, HOLY_FIRE)
ACTIONS
Set(_Result,HOLY_FIRE)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, PETRIFIED)
THEN
Set(_Result,null)
ELSE
ListAdd(_RemoveList, WARM)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, WET)
ListAdd(_RemoveList, FROZEN)
IF "c1"
CharacterHasStatus(_Character, NECROFIRE)
THEN
ListAdd(_RemoveList, NECROFIRE)
Set(_Result, BURNING)
ENDIF
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetWet
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchCharacterApplyStatusData(_Character, WET)
ACTIONS
Set(_Result,WET)
Set(_Turns,null)
ListClear(_RemoveList)
ListAdd(_RemoveList, WARM)
ListAdd(_RemoveList, INVISIBLE)
IF "c1"
CharacterHasStatus(_Character, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, WARM)
ELIF "c1"
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, WARM)
ELIF "c1"
CharacterHasStatus(_Character, CHILLED)
THEN
ListAdd(_RemoveList, CHILLED)
Set(_Result,FROZEN)
Set(_Turns,1)
ELIF "c1|c2|c3"
CharacterHasStatus(_Character, FROZEN)
CharacterHasStatus(_Character, NECROFIRE)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, SHOCKED)
THEN
ListAdd(_RemoveList, SHOCKED)
Set(_Result,STUNNED)
Set(_Turns,1)
ENDIF
RETURN(_RemoveList,_Result,_Turns)

EVENT CharacterSetChilled
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchCharacterApplyStatusData(_Character, CHILLED)
ACTIONS
Set(_Result,CHILLED)
Set(_Turns,null)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, WARM)
ELIF "c1"
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, WARM)
ELIF "c1"
CharacterHasStatus(_Character, WARM)
THEN
ListAdd(_RemoveList, WARM)
Set(_Result,null)
ELIF "c1|c2"
CharacterHasStatus(_Character, CHILLED)
CharacterHasStatus(_Character, WET)
THEN
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, WET)
Set(_Result, FROZEN)
Set(_Turns,1)
ELIF "c1|c2|c3"
CharacterHasStatus(_Character, FROZEN)
CharacterHasStatus(_Character, NECROFIRE)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,_Turns)

EVENT CharacterSetFrozen
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, FROZEN)
ACTIONS
Set(_Result,FROZEN)
ListClear(_RemoveList)
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, WET)
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
IF "c1"
CharacterHasStatus(_Character, MAGIC_SHELL)
THEN
ListClear(_RemoveList)
ListAdd(_RemoveList, MAGIC_SHELL)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, WET)
ELIF "c1"
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, WET)
ELIF "c1|c2"
CharacterHasStatus(_Character, NECROFIRE)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, WARM)
THEN
ListAdd(_RemoveList, WARM)
Set(_Result, CHILLED)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetPetrified
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, PETRIFIED)
ACTIONS
Set(_Result,PETRIFIED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, MAGIC_SHELL)
THEN
ListClear(_RemoveList)
ListAdd(_RemoveList, MAGIC_SHELL)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListClear(_RemoveList)
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ENDIF
IF "c1"
IsEqual(_Result, PETRIFIED)
THEN
ListAdd(_RemoveList, STUNNED)
ListAdd(_RemoveList, SHOCKED)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, CRIPPLED)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, POISONED)
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetShocked
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchCharacterApplyStatusData(_Character, SHOCKED)
ACTIONS
Set(_Result,SHOCKED)
Set(_Turns,null)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, MAGIC_SHELL)
THEN
ListAdd(_RemoveList, MAGIC_SHELL)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, STUNNED)
THEN
ListAdd(_RemoveList, SHOCKED)
Set(_Result,null)
ELIF "c1|c2"
CharacterHasStatus(_Character, SHOCKED)
CharacterHasStatus(_Character, WET)
THEN
ListAdd(_RemoveList, SHOCKED)
Set(_Result,STUNNED)
Set(_Turns,1)
ENDIF
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
RETURN(_RemoveList,_Result,_Turns)

EVENT CharacterSetStunned
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, STUNNED)
ACTIONS
Set(_Result,STUNNED)
ListClear(_RemoveList)
ListAdd(_RemoveList, SHOCKED)
ListAdd(_RemoveList, PETRIFIED)
ListAdd(_RemoveList, WET)
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
IF "c1"
CharacterHasStatus(_Character, MAGIC_SHELL)
THEN
ListClear(_RemoveList)
ListAdd(_RemoveList, MAGIC_SHELL)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListClear(_RemoveList)
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetDrunk
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchCharacterApplyStatusData(_Character, DRUNK)
ACTIONS
Set(_Result,DRUNK)
Set(_Turns,null)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, CLEAR_MINDED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
Set(_Result, null)
ELIF "c1"
CharacterHasStatus(_Character, DRUNK)
THEN
ListAdd(_RemoveList, DRUNK)
Set(_Result, SLEEPING)
Set(_Turns,2)
ENDIF
RETURN(_RemoveList,_Result,_Turns)

EVENT CharacterSetSlowed
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, SLOWED)
ACTIONS
Set(_Result,SLOWED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, HASTED)
THEN
ListAdd(_RemoveList, HASTED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetHasted
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, HASTED)
ACTIONS
Set(_Result,HASTED)
ListClear(_RemoveList)
ListAdd(_RemoveList, SLOWED)
ListAdd(_RemoveList, CRIPPLED)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetFeared
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, FEAR)
ACTIONS
Set(_Result,FEAR)
ListClear(_RemoveList)
IF "c1|c2"
CharacterHasStatus(_Character, CLEAR_MINDED)
CharacterHasStatus(_Character, ENRAGED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
ListAdd(_RemoveList, ENRAGED)
Set(_Result,null)
ELSE
ListAdd(_RemoveList, CHARMED)
ListAdd(_RemoveList, TAUNTED)
ListAdd(_RemoveList, SLEEPING)
ListAdd(_RemoveList, MADNESS)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetCharmed
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CHARMED)
ACTIONS
Set(_Result,CHARMED)
ListClear(_RemoveList)
IF "c1|c2"
CharacterHasStatus(_Character, CLEAR_MINDED)
CharacterHasStatus(_Character, ENRAGED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
ListAdd(_RemoveList, ENRAGED)
Set(_Result,null)
ELSE
ListAdd(_RemoveList, FEAR)
ListAdd(_RemoveList, TAUNTED)
ListAdd(_RemoveList, SLEEPING)
ListAdd(_RemoveList, MADNESS)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetTaunted
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, TAUNTED)
ACTIONS
Set(_Result,TAUNTED)
ListClear(_RemoveList)
ListAdd(_RemoveList, INVISIBLE)
IF "c1|c2"
CharacterHasStatus(_Character, CLEAR_MINDED)
CharacterHasStatus(_Character, ENRAGED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
ListAdd(_RemoveList, ENRAGED)
Set(_Result,null)
ELSE
ListAdd(_RemoveList, CHARMED)
ListAdd(_RemoveList, FEAR)
ListAdd(_RemoveList, SLEEPING)
ListAdd(_RemoveList, MADNESS)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetSleeping
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, SLEEPING)
ACTIONS
Set(_Result,SLEEPING)
ListClear(_RemoveList)
ListAdd(_RemoveList, INVISIBLE)
IF "c1|c2"
CharacterHasStatus(_Character, CLEAR_MINDED)
CharacterHasStatus(_Character, ENRAGED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
ListAdd(_RemoveList, ENRAGED)
Set(_Result,null)
ELSE
ListAdd(_RemoveList, CHARMED)
ListAdd(_RemoveList, TAUNTED)
ListAdd(_RemoveList, FEAR)
ListAdd(_RemoveList, MADNESS)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetMadness
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, MADNESS)
ACTIONS
Set(_Result,MADNESS)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, CLEAR_MINDED)
THEN
ListAdd(_RemoveList, CLEAR_MINDED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetClearMinded
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CLEAR_MINDED)
ACTIONS
Set(_Result,CLEAR_MINDED)
ListClear(_RemoveList)
ListAdd(_RemoveList, FEAR)
ListAdd(_RemoveList, CHARMED)
ListAdd(_RemoveList, TAUNTED)
ListAdd(_RemoveList, SLEEPING)
ListAdd(_RemoveList, ENRAGED)
ListAdd(_RemoveList, BLIND)
ListAdd(_RemoveList, DRUNK)
ListAdd(_RemoveList, MADNESS)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetEnraged
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, ENRAGED)
ACTIONS
Set(_Result,ENRAGED)
ListClear(_RemoveList)
ListAdd(_RemoveList, FEAR)
ListAdd(_RemoveList, CHARMED)
ListAdd(_RemoveList, TAUNTED)
ListAdd(_RemoveList, SLEEPING)
ListAdd(_RemoveList, MADNESS)
ListAdd(_RemoveList, CLEAR_MINDED)
RETURN(_RemoveList,_Result,null)


EVENT CharacterSetRested
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, RESTED)
ACTIONS
Set(_Result,RESTED)
ListClear(_RemoveList)
ListAdd(_RemoveList, MUTED)
ListAdd(_RemoveList, BLIND)
ListAdd(_RemoveList, CRIPPLED)
ListAdd(_RemoveList, KNOCKED_DOWN)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, PLAGUE)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetMuted
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, MUTED)
ACTIONS
Set(_Result,MUTED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, RESTED)
THEN
ListAdd(_RemoveList, RESTED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetBlind
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, BLIND)
ACTIONS
Set(_Result,BLIND)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, RESTED)
THEN
ListAdd(_RemoveList, RESTED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetCrippled
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CRIPPLED)
ACTIONS
Set(_Result,CRIPPLED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, RESTED)
THEN
ListAdd(_RemoveList, RESTED)
Set(_Result,null)
ENDIF
IF "c1"
CharacterHasStatus(_Character, HASTED)
THEN
ListAdd(_RemoveList, HASTED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetKnockedDown
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, KNOCKED_DOWN)
ACTIONS
Set(_Result,KNOCKED_DOWN)
ListClear(_RemoveList)
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
IF "c1"
CharacterHasStatus(_Character, RESTED)
THEN
ListAdd(_RemoveList, RESTED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetRegeneration
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, REGENERATION)
ACTIONS
Set(_Result,REGENERATION)
ListClear(_RemoveList)
ListAdd(_RemoveList, ACID)
ListAdd(_RemoveList, POISONED)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, SUFFOCATING)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, INFESTED)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetFortified
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, FORTIFIED)
ACTIONS
Set(_Result,FORTIFIED)
ListClear(_RemoveList)
ListAdd(_RemoveList, ACID)
ListAdd(_RemoveList, POISONED)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
ListAdd(_RemoveList, DECAYING_TOUCH)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetAcid
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, ACID)
ACTIONS
Set(_Result,ACID)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, FORTIFIED)
THEN
ListAdd(_RemoveList, FORTIFIED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetPoisoned
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, POISONED)
ACTIONS
Set(_Result,POISONED)
ListClear(_RemoveList)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetBleeding
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, BLEEDING)
ACTIONS
Set(_Result,BLEEDING)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, REGENERATION)
THEN
ListAdd(_RemoveList, REGENERATION)
Set(_Result,null)
ENDIF
IF "c1"
CharacterHasStatus(_Character, FORTIFIED)
THEN
ListAdd(_RemoveList, FORTIFIED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetBlessed
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, BLESSED)
ACTIONS
Set(_Result,BLESSED)
ListClear(_RemoveList)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
ListAdd(_RemoveList, DECAYING_TOUCH)
ListAdd(_RemoveList, PETRIFIED)
ListAdd(_RemoveList, STUNNED)
ListAdd(_RemoveList, FROZEN)
ListAdd(_RemoveList, INFESTED)
ListAdd(_RemoveList, PLAGUE)
IF "c1"
CharacterHasStatus(_Character, FROZEN)
THEN
ListAdd(_RemoveList, FROZEN)
Set(_Result, CHILLED)
ENDIF
IF "c1"
CharacterHasStatus(_Character, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, HOLY_FIRE)
ENDIF
IF "c1"
CharacterHasStatus(_Character, NECROFIRE)
THEN
ListAdd(_RemoveList, NECROFIRE)
Set(_Result, BURNING)
ENDIF
IF "c1"
CharacterHasStatus(_Character, CURSED)
THEN
ListAdd(_RemoveList, CURSED)
Set(_Result,null)
ENDIF
IF "c1"
CharacterHasStatus(_Character, VOIDHOWL)
THEN
ListAdd(_RemoveList, VOIDHOWL)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetVoidHowl
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, VOIDHOWL)
ACTIONS
Set(_Result,VOIDHOWL)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetMagicShell
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, MAGIC_SHELL)
ACTIONS
Set(_Result,MAGIC_SHELL)
ListClear(_RemoveList)
ListAdd(_RemoveList, FROZEN)
ListAdd(_RemoveList, STUNNED)
ListAdd(_RemoveList, PETRIFIED)
ListAdd(_RemoveList, PLAGUE)
ListAdd(_RemoveList, SUFFOCATING)
ListAdd(_RemoveList, POISONED)
ListAdd(_RemoveList, BURNING)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetCursed
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CURSED)
ACTIONS
Set(_Result,CURSED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, CHILLED)
THEN
ListAdd(_RemoveList, CHILLED)
Set(_Result, FROZEN)
ENDIF
IF "c1"
CharacterHasStatus(_Character, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, NECROFIRE)
ENDIF
IF "c1|c2"
CharacterHasStatus(_Character, WARM)
CharacterHasStatus(_Character, HOLY_FIRE)
THEN
ListAdd(_RemoveList, WARM)
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, BURNING)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetDiseased
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, DISEASED)
ACTIONS
Set(_Result,DISEASED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, FORTIFIED)
THEN
ListAdd(_RemoveList, FORTIFIED)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetInfectiousDiseased
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, INFECTIOUS_DISEASED)
ACTIONS
Set(_Result,INFECTIOUS_DISEASED)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, FORTIFIED)
THEN
ListAdd(_RemoveList, FORTIFIED)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetDecaying
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, DECAYING_TOUCH)
ACTIONS
Set(_Result,DECAYING_TOUCH)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, FORTIFIED)
THEN
ListAdd(_RemoveList, FORTIFIED)
Set(_Result,null)
ELIF "c1"
CharacterHasStatus(_Character, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetInvisible
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, INVISIBLE)
ACTIONS
Set(_Result,INVISIBLE)
ListClear(_RemoveList)
IF "c1"
CharacterHasStatus(_Character, MARKED)
THEN
ListAdd(_RemoveList, INVISIBLE)
Set(_Result,null)
ELSE
ListAdd(_RemoveList, WET)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetDeathfog
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, DEATH_FOG)
ACTIONS
Set(_Result,DEATH_FOG)
ListClear(_RemoveList)
IF "c1|c2|c3|c4|c5|c6|c7|c8"
CharacterHasTalent(_Character, Zombie)
IsTagged(_Character, UNDEAD)
IsTagged(_Character, UNDEAD_BEAST)
IsTagged(_Character, DEATHFOG_IMMUNE)
IsTagged(_Character, DRAGON)
IsTagged(_Character, VOIDWOKEN)
IsTagged(_Character, DEMON)
IsTagged(_Character, CONSTRUCT)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetChicken
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CHICKEN)
ACTIONS
Set(_Result, CHICKEN)
ListClear(_RemoveList)
ListAdd(_RemoveList, WINGS)
IF "c1"
CharacterHasStatus(_Character, CHICKEN)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetHealingElixir
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, HEALING_ELIXIR)
ACTIONS
Set(_Result,HEALING_ELIXIR)
ListClear(_RemoveList)
ListAdd(_RemoveList, WEAK)
ListAdd(_RemoveList, SLOWED)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, POISONED)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, CRIPPLED)
ListAdd(_RemoveList, CURSED)
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, DRUNK)
ListAdd(_RemoveList, BURNING)
ListAdd(_RemoveList, BLEEDING)
ListAdd(_RemoveList, NECROFIRE)
ListAdd(_RemoveList, ACID)
ListAdd(_RemoveList, SUFFOCATING)
ListAdd(_RemoveList, DECAYING_TOUCH)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
ListAdd(_RemoveList, PLAGUE)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetChainHeal
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CHAIN_HEAL)
ACTIONS
Set(_Result,CHAIN_HEAL)
ListClear(_RemoveList)
ListAdd(_RemoveList, INFESTED)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetCleanseWounds
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, CLEANSE_WOUNDS)
ACTIONS
Set(_Result,CLEANSE_WOUNDS)
ListClear(_RemoveList)
ListAdd(_RemoveList, INFESTED)
ListAdd(_RemoveList, PLAGUE)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetSteamLance
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, STEAM_LANCE)
ACTIONS
Set(_Result,STEAM_LANCE)
ListClear(_RemoveList)
ListAdd(_RemoveList, FROZEN)
ListAdd(_RemoveList, CHILLED)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
ListAdd(_RemoveList, DECAYING_TOUCH)
ListAdd(_RemoveList, PLAGUE)
IF "c1"
CharacterHasStatus(_Character, PLAGUE)
THEN
ListAdd(_RemoveList, PLAGUE)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT CharacterSetWeb
VARS
CHARACTER:_Character
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchCharacterApplyStatusData(_Character, WEB)
ACTIONS
Set(_Result,WEB)
ListClear(_RemoveList)
IF "c1&!c2"
CharacterHasStatus(_Character, SPIDER_LEGS)
CharacterHasStatus(_Character, HASTED)
THEN
Set(_Result,HASTED)
ELIF "c1"
CharacterHasStatus(_Character, SPIDER_LEGS)
THEN
ListAdd(_RemoveList, null) /* Don't reapply Haste to avoid spam */
ELIF "c1&!c2"
CharacterHasStatus(_Character, HASTED)
CharacterHasStatus(_Character, SPIDER_LEGS)
THEN
ListAdd(_RemoveList, HASTED)
ENDIF
RETURN(_RemoveList,_Result,null)

// ITEMS ================================================================================================
EVENT ItemSetWarm
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, WARM)
ACTIONS
Set(_Result,WARM)
ListClear(_RemoveList)
ListAdd(_RemoveList,WET)
IF "c1"
ItemHasStatus(_Item, WARM)
THEN
ListAdd(_RemoveList,WARM)
Set(_Result,BURNING)
ELIF "c1|c2|c3"
ItemHasStatus(_Item, BURNING)
ItemHasStatus(_Item, NECROFIRE)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, CHILLED)
THEN
ListAdd(_RemoveList,CHILLED)
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, FROZEN)
THEN
ListAdd(_RemoveList,FROZEN)
Set(_Result, CHILLED)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetBurning
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, BURNING)
ACTIONS
Set(_Result,BURNING)
ListClear(_RemoveList)
ListAdd(_RemoveList,WARM)
IF "c1"
ItemHasStatus(_Item, CHILLED)
THEN
ListAdd(_RemoveList,CHILLED)
Set(_Result, WARM)
ELIF "c1"
ItemHasStatus(_Item, WET)
THEN
ListAdd(_RemoveList,WET)
Set(_Result, WARM)
ELIF "c1"
ItemHasStatus(_Item, FROZEN)
THEN
ListAdd(_RemoveList,FROZEN)
Set(_Result, WET)
ELIF "c1|c2"
ItemHasStatus(_Item, NECROFIRE)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetNecrofire
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, NECROFIRE)
ACTIONS
Set(_Result,NECROFIRE)
ListClear(_RemoveList)
ListAdd(_RemoveList,WARM)
ListAdd(_RemoveList,BURNING)
ListAdd(_RemoveList,CHILLED)
ListAdd(_RemoveList,WET)
ListAdd(_RemoveList,FROZEN)
IF "c1"
ItemHasStatus(_Item, HOLY_FIRE)
THEN
ListAdd(_RemoveList,HOLY_FIRE)
Set(_Result, BURNING)
ELIF "c1"
ItemHasStatus(_Item, BLESSED)
THEN
ListAdd(_RemoveList,BLESSED)
Set(_Result, BURNING)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetHolyFire
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, HOLY_FIRE)
ACTIONS
Set(_Result,HOLY_FIRE)
ListClear(_RemoveList)
ListAdd(_RemoveList,WARM)
ListAdd(_RemoveList,BURNING)
ListAdd(_RemoveList,CHILLED)
ListAdd(_RemoveList,WET)
ListAdd(_RemoveList,FROZEN)
IF "c1"
ItemHasStatus(_Item, NECROFIRE)
THEN
ListAdd(_RemoveList,NECROFIRE)
Set(_Result, BURNING)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetWet
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchItemApplyStatusData(_Item, WET)
ACTIONS
Set(_Result,WET)
Set(_Turns,null)
ListClear(_RemoveList)
ListAdd(_RemoveList,WARM)
ListAdd(_RemoveList, INVISIBLE)
IF "c1"
ItemHasStatus(_Item, BURNING)
THEN
ListAdd(_RemoveList,BURNING)
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, CHILLED)
THEN
ListAdd(_RemoveList,CHILLED)
Set(_Result, FROZEN)
Set(_Turns, 1)
ELIF "c1|c2|c3"
ItemHasStatus(_Item, FROZEN)
ItemHasStatus(_Item, NECROFIRE)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,_Turns)

EVENT ItemSetChilled
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchItemApplyStatusData(_Item, CHILLED)
ACTIONS
Set(_Result,CHILLED)
Set(_Turns,null)
ListClear(_RemoveList)
IF "c1"
ItemHasStatus(_Item, BURNING)
THEN
ListAdd(_RemoveList,BURNING)
Set(_Result, WARM)
ELIF "c1"
ItemHasStatus(_Item, WARM)
THEN
ListAdd(_RemoveList,WARM)
Set(_Result,null)
ELIF "c1|c2"
ItemHasStatus(_Item, CHILLED)
ItemHasStatus(_Item, WET)
THEN
ListAdd(_RemoveList,CHILLED)
ListAdd(_RemoveList,WET)
Set(_Result, FROZEN)
Set(_Turns, 1)
ELIF "c1|c2|c3"
ItemHasStatus(_Item, FROZEN)
ItemHasStatus(_Item, NECROFIRE)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,_Turns)

EVENT ItemSetFrozen
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, FROZEN)
ACTIONS
Set(_Result,FROZEN)
ListClear(_RemoveList)
ListAdd(_RemoveList,CHILLED)
ListAdd(_RemoveList,WET)
ListAdd(_RemoveList, INVISIBLE)
IF "c1"
ItemHasStatus(_Item, BURNING)
THEN
ListAdd(_RemoveList,BURNING)
Set(_Result, WET)
ELIF "c1|c2"
ItemHasStatus(_Item, NECROFIRE)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, WARM)
THEN
ListAdd(_RemoveList,WARM)
Set(_Result, CHILLED)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetBlessed
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, BLESSED)
ACTIONS
Set(_Result,BLESSED)
ListClear(_RemoveList)
ListAdd(_RemoveList, DISEASED)
ListAdd(_RemoveList, INFECTIOUS_DISEASED)
ListAdd(_RemoveList, DECAYING_TOUCH)
ListAdd(_RemoveList, PETRIFIED)
ListAdd(_RemoveList, STUNNED)
ListAdd(_RemoveList, PLAGUE)
IF "c1"
ItemHasStatus(_Item, FROZEN)
THEN
ListAdd(_RemoveList, FROZEN)
Set(_Result, CHILLED)
ENDIF
IF "c1"
ItemHasStatus(_Item, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, HOLY_FIRE)
ENDIF
IF "c1"
ItemHasStatus(_Item, NECROFIRE)
THEN
ListAdd(_RemoveList, NECROFIRE)
Set(_Result, BURNING)
ENDIF
IF "c1"
ItemHasStatus(_Item, CURSED)
THEN
ListAdd(_RemoveList, CURSED)
Set(_Result,null)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetCursed
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
ON
FetchItemApplyStatusData(_Item, CURSED)
ACTIONS
Set(_Result,CURSED)
ListClear(_RemoveList)
IF "c1"
ItemHasStatus(_Item, BLESSED)
THEN
ListAdd(_RemoveList, BLESSED)
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, CHILLED)
THEN
ListAdd(_RemoveList, CHILLED)
Set(_Result, FROZEN)
ENDIF
IF "c1"
ItemHasStatus(_Item, BURNING)
THEN
ListAdd(_RemoveList, BURNING)
Set(_Result, NECROFIRE)
ENDIF
IF "c1|c2"
ItemHasStatus(_Item, WARM)
ItemHasStatus(_Item, HOLY_FIRE)
THEN
ListAdd(_RemoveList, WARM)
ListAdd(_RemoveList, HOLY_FIRE)
Set(_Result, BURNING)
ENDIF
RETURN(_RemoveList,_Result,null)

EVENT ItemSetShocked
VARS
ITEM:_Item
LIST<STATUS>:_RemoveList
STATUS:_Result
INT:_Turns
ON
FetchItemApplyStatusData(_Item, SHOCKED)
ACTIONS
Set(_Result,SHOCKED)
Set(_Turns,null)
ListClear(_RemoveList)
IF "c1"
ItemHasStatus(_Item, MAGIC_SHELL)
THEN
ListAdd(_RemoveList, MAGIC_SHELL)
Set(_Result,null)
ELIF "c1"
ItemHasStatus(_Item, STUNNED)
THEN
ListAdd(_RemoveList, SHOCKED)
Set(_Result,null)
ELIF "c1|c2"
ItemHasStatus(_Item, SHOCKED)
ItemHasStatus(_Item, WET)
THEN
ListAdd(_RemoveList, SHOCKED)
Set(_Result,STUNNED)
Set(_Turns,1)
ENDIF
ListAdd(_RemoveList, INVISIBLE)
ListAdd(_RemoveList, SLEEPING)
RETURN(_RemoveList,_Result,_Turns)

EVENT CharRemoveFrozen
VARS
CHARACTER:_Character
STATUS:_StatusRemoved
ON
OnCharacterStatusRemoved(_Character, FROZEN)
ACTIONS
CharacterApplyStatus(_Character, POST_MAGIC_CONTROL, 0)

EVENT CharRemoveStunned
VARS
CHARACTER:_Character
STATUS:_StatusRemoved
ON
OnCharacterStatusRemoved(_Character, STUNNED)
ACTIONS
CharacterApplyStatus(_Character, POST_MAGIC_CONTROL, 0)
IF "c1"
IsTagged(_Character,"AUTOMATON")
THEN
CharacterApplyStatus(_Character, HYPERCHARGED, 3, 1)
ENDIF

EVENT CharRemovePetrified
VARS
CHARACTER:_Character
STATUS:_StatusRemoved
ON
OnCharacterStatusRemoved(_Character, PETRIFIED)
ACTIONS
CharacterApplyStatus(_Character, POST_PHYS_CONTROL, 0)

EVENT CharRemoveKnockedDown
VARS
CHARACTER:_Character
STATUS:_StatusRemoved
ON
OnCharacterStatusRemoved(_Character, KNOCKED_DOWN)
ACTIONS
CharacterApplyStatus(_Character, POST_PHYS_CONTROL, 0)

EVENT CharRemoveInnerDemon
VARS
CHARACTER:_Character
STATUS:_StatusRemoved
ON
OnCharacterStatusRemoved(_Character, INNER_DEMON)
ACTIONS
IF "!c1"
CharacterHasStatus(_Character,INNER_DEMON)
THEN
CharacterRemoveStatus(_Character, DEMONIC_TUTELAGE)
ENDIF

EVENT InfernalLizard_RemoveNecroFire
VARS
CHARACTER:_Character
ON
OnCharacterStatusRemoved(_Character, NECROFIRE)
ACTIONS
IF "c1&!c2"
IsTagged(_Character,"INFERNAL_LIZARD")
CharacterHasStatus(_Character,WEAK)
THEN
CharacterApplyStatus(_Character,WEAK,2,1)
ENDIF

EVENT InfernalLizard_NecroFireReApply
VARS
CHARACTER:_Character
ON
OnCharacterStatusRemoved(_Character, WEAK)
ACTIONS
IF "c1&!c2"
IsTagged(_Character,"INFERNAL_LIZARD")
CharacterHasStatus(_Character,NECROFIRE)
THEN
CharacterApplyStatus(_Character,NECROFIRE,-1,1)
ENDIF