Advertisement
Guest User

Untitled

a guest
Sep 14th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.77 KB | None | 0 0
  1. scope QuilSpray initializer init
  2.     globals
  3.         private constant integer ABIL_ID = 'A000'
  4.         private constant attacktype ATTACK_TYPE = ATTACK_TYPE_NORMAL
  5.         private constant damagetype DAMAGE_TYPE = DAMAGE_TYPE_NORMAL
  6.         private constant string EFFECT_ID = "Abilities\\Spells\\NightElf\\FanOfKnives\\FanOfKnivesCaster.mdl"
  7.         private hashtable HASH = InitHashtable()
  8.     endglobals
  9.    
  10.     private constant function Damage takes integer level returns real
  11.         return 20.00*level
  12.     endfunction
  13.    
  14.     private constant function DamageIncrease takes nothing returns real
  15.         return 30.00
  16.     endfunction
  17.    
  18.     private constant function DamageCap takes nothing returns real
  19.         return 180.00
  20.     endfunction
  21.    
  22.     private constant function Duration takes nothing returns real
  23.         return 10.00
  24.     endfunction
  25.    
  26.     private constant function AreaOfEffect takes nothing returns real
  27.         return 625.00
  28.     endfunction
  29.    
  30.     private struct QuilSpray
  31.         static QuilSpray array Data
  32.         unit caster = null
  33.         player owner = null
  34.         integer level = 0
  35.        
  36.         static method onCreate takes unit whichUnit,player whichPlayer,integer abilityLevel returns QuilSpray
  37.             local QuilSpray q=QuilSpray.allocate()
  38.             local unit t
  39.             local integer h
  40.             local real l
  41.             local real b
  42.             local real d
  43.             local group g = CreateGroup()
  44.            
  45.             set q.caster=whichUnit
  46.             set h=GetHandleId(q.caster)
  47.             set q.owner=whichPlayer
  48.             set q.level=abilityLevel
  49.             set l=LoadReal(HASH,h,1)
  50.             set b=l+DamageIncrease
  51.             set d=Damage(q.level)+l
  52.             call SaveReal(HASH,h,1,b)
  53.             if (d>=DamageCap) then
  54.                 set d=DamageCap
  55.             endif
  56.             call DestroyEffect(AddSpecialEffect(EFFECT_ID,GetUnitX(q.caster),GetUnitY(q.caster)))
  57.             call GroupEnumUnitsInRange(g,GetUnitX(q.caster),GetUnitY(q.caster),AreaOfEffect,null)
  58.             loop
  59.                 set t=FirstOfGroup(g)
  60.                 exitwhen t==null
  61.                 if (IsUnitEnemy(t,q.owner)) then
  62.                     if not (IsUnitType(t,UNIT_TYPE_MAGIC_IMMUNE)) then
  63.                         if not (IsUnitType(t,UNIT_TYPE_STRUCTURE)) then
  64.                             static if (Library_Damage) then
  65.                                 call Damage_Physical(q.caster,t,d,ATTACK_TYPE,true,false)
  66.                             else
  67.                                 call DisableTrigger(GetTriggeringTrigger())
  68.                                 call UnitDamageTarget(q.caster,t,d,true,false,ATTACK_TYPE,DAMAGE_TYPE,null)
  69.                                 call EnableTrigger(GetTriggeringTrigger())
  70.                             endif
  71.                         endif
  72.                     endif
  73.                 endif
  74.             endloop
  75.             static if (Library_PWait2) then
  76.                 call PolledWait2(Duration)
  77.             else
  78.                 call TriggerSleepAction(Duration)
  79.             endif
  80.             set b=0
  81.             call FlushChildHashtable(HASH,h)
  82.             call DestroyGroup(g)
  83.             set t=null
  84.             set g=null
  85.             return q
  86.         endmethod
  87.     endstruct
  88.    
  89.     private function Actions takes nothing returns boolean
  90.         local unit u = GetTriggerUnit()
  91.         local player p = GetTriggerPlayer()
  92.         local integer l = GetUnitAbilityLevel(u,ABIL_ID)
  93.         call QuilSpray.onCreate(u,p,l)
  94.         set u=null
  95.         set p=null
  96.         return true
  97.     endfunction
  98.    
  99.     private function init takes nothing returns nothing
  100.         local trigger trig = CreateTrigger()
  101.         call GT_RegisterStartsEffectEvent(trig,ABIL_ID)
  102.         call TriggerAddCondition(trig,Condition(function Actions))
  103.         set trig=null
  104.     endfunction
  105. endscope
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement