Dirac
22710180
- Reaction score
- 147
JASS:
library DampenDamage /* v1.0.4
*/uses/*
*/ DamageMod /* thehelper.net/forums/showthread.php/168198-Damage-Mod
A useful tool to handle percentual damage from units.
**********************************************************************/
globals
private constant integer DAMPEN_DAMAGE_PRIORITY =2
//The priority sets before and after which damage mods the damage is
//prevented.
endglobals
/**********************************************************************
*
* struct DampenDamage
*
* - Modifies unit damage taken by percentual value.
* - Takes the unit's custom value as an instance.
*
* real amount
* - Determines how much percentual damage the will be
* - modified for the unit.
* readonly static DamageMod MOD
* - The mod used for this code.
* method addFilter takes code func returns triggercondition
* - If the filter returns false then it skips damage
* - modification.
* method removeFilter takes triggercondition whichCondition returns nothing
* - Disables the filter
*
*********************************************************************/
private module DampenDamageModule
readonly static DamageMod MOD
private trigger trig
real amount
method addFilter takes code func returns triggercondition
if null==this.trig then
set this.trig=CreateTrigger()
endif
return TriggerAddCondition(this.trig,Filter(func))
endmethod
method removeFilter takes triggercondition whichCondition returns nothing
call TriggerRemoveCondition(this.trig,whichCondition)
endmethod
private static method onDamage takes nothing returns boolean
local real result=thistype(Damage.targetId).amount*Damage.dealt
if result>0 then
if not(null==thistype(Damage.targetId).trig) then
if not(TriggerEvaluate(thistype(Damage.targetId).trig)) then
return false
endif
endif
call Damage.prevent(result)
endif
return false
endmethod
private static method onInit takes nothing returns nothing
set MOD=DamageMod.create(function thistype.onDamage,DAMPEN_DAMAGE_PRIORITY)
endmethod
endmodule
struct DampenDamage extends array
implement DampenDamageModule
endstruct
endlibrary