Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //! zinc
- library BarrelofRum requires Damage{
- private{
- constant integer UNIT_ID = 'u011';
- constant real DAMAGE = 18.75; //150.0
- constant real TICK = 0.25; //Damage dealt every .25 seconds.
- constant real DURATION = 2.01;
- }
- struct data{
- unit caster;
- unit target;
- real tick;
- IgniteDoused myBuff;
- method onDestroy(){
- caster=null;
- target=null;
- }
- }
- function onTimer(){
- timer t=GetExpiredTimer();
- data this=GetTimerData(t);
- UnitDamageTargetEx(this.caster,this.target,DAMAGE,false,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_FIRE,WEAPON_TYPE_WHOKNOWS);
- this.tick+=TICK;
- if (this.tick>=DURATION){
- ReleaseTimer(t);
- this.myBuff.setUnit(null);
- this.destroy();
- }
- t=null;
- }
- function onAction()->boolean{
- data this=data.create();
- timer t=NewTimer();
- this.caster=GetEventDamageSource();
- this.target=GetTriggerUnit();
- this.tick=0.0;
- if (Damage_GetType()==DAMAGE_TYPE_FIRE&&!IgniteDoused.isOn(this.target)&&Doused.isOn(this.target)){
- this.myBuff=this.myBuff.create(this.caster);
- this.myBuff.destroyTimed(DURATION);
- TimerStart(t,TICK,true,function onTimer);
- SetTimerData(t,this);
- }else{
- ReleaseTimer(t);
- this.destroy();
- }
- t=null;
- return false;
- }
- function onInit(){
- trigger t=CreateTrigger();
- Damage_RegisterEvent(t);
- TriggerAddCondition(t,Condition(function onAction));
- t=null;
- }
- }
- //! endzinc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement