emootootoo
Top Banana
- Reaction score
- 51
Spellpack includes:
These spells require:
Newgen - includes JassHelper compiler (vjass): http://www.thehelper.net/forums/showthread.php?t=73936
The descriptions are in the top of the code boxes for the spells.
Name: Blessed Hammer
MUI: Yes
Leakless: Yes
Code:
Name: Hurricane
MUI: Yes
Leakless: Yes
Code:
Name: Poison Javelin
MUI: Yes
Leakless: Yes
Code:
Name: Iron Maiden
MUI: Yes
Leakless: Yes
Code:
Map is now updated with all spells in JESP standard.
- Blessed Hammer
- Hurricane
- Poison Javelin
- Iron Maiden
These spells require:
Newgen - includes JassHelper compiler (vjass): http://www.thehelper.net/forums/showthread.php?t=73936
The descriptions are in the top of the code boxes for the spells.
Name: Blessed Hammer
MUI: Yes
Leakless: Yes

Code:
JASS:
//=====================================================================//
// Blessed Hammer //
//=====================================================================//
//by emootootoo //
// //
// Requires: vJass, CSData, CSSafety //
// //
// Things you need to copy: //
// Abilities: Blessed Hammer //
// Units: BlessedHammerDummy //
// Sound: gg_snd_bolthammercast //
// //
// Description: Summons a magical hammer that spirals outwards from //
// the caster damaging any enemies it hits. //
//=====================================================================//
scope BlessedHammer
globals // Configuration
private integer spellID='A001'
//Blessed Hammer Ability ID
private integer DummyID='h002'
//Blessed Hammer Dummy Unit ID
private integer bhDamage=40
//Damage per level (eg: 40*level)
private integer bhSpeed=190
//Higher number = Faster
private real bhDistance=1440
//How many revolutions, 360 = 1, 1080 = 3
private integer bhRadius=500
// The radius in which the hammers spirals fit into
private integer DmgRadius=120
// The radius the hammer has to hit a unit
private string HitArt="Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"
// Art used for when the projectile hits a unit
endglobals // End Configuration
//Code =====================================================================
struct BHData
public unit BH
public integer count
public integer slvl
public real BHangle
public real BHradius
public location BHloc
public group BHgroup
public unit BHcaster
endstruct
function Trig_BlessedHammer_Conditions takes nothing returns boolean
return GetSpellAbilityId()==spellID
endfunction
function BlessedHammerTimer takes nothing returns nothing
//gets struct number from the expiring timer
local BHData BHD = GetCSData(GetExpiredTimer())
local location HammerLoc =GetUnitLoc(BHD.BH)
//gets the distance between hammer and cast point
local real dx=GetLocationX(HammerLoc)-GetLocationX(BHD.BHloc)
local real dy=GetLocationY(HammerLoc)-GetLocationY(BHD.BHloc)
local real distance=SquareRoot(dx*dx+dy*dy)
//gets the new angle and radius from caster for the hammer to move
local real anglediff=(10/(distance))*bhSpeed
local real angle=BHD.BHangle-anglediff
local real radius=BHD.BHradius+((I2R(bhRadius))/(bhDistance/(anglediff)))
//sets new position for hammer to move to
local real x=GetLocationX(BHD.BHloc)+radius*Cos(angle*bj_DEGTORAD)
local real y=GetLocationY(BHD.BHloc)+radius*Sin(angle*bj_DEGTORAD)
local group g=CreateGroup()
local group g2=CreateGroup()
local unit u
local effect sfx
//damages enemy units in range of the hammer
call GroupEnumUnitsInRange(g,x,y,DmgRadius,null)
loop
set u = FirstOfGroup(g)
exitwhen u == null
if IsUnitEnemy(u,GetOwningPlayer(BHD.BH))==true and IsUnitInGroup(u,BHD.BHgroup)==false and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false and GetUnitState(u,UNIT_STATE_LIFE)>0 then
call UnitDamageTarget(BHD.BHcaster,u,bhDamage*BHD.slvl,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
call GroupAddUnit(BHD.BHgroup,u) //adds damaged unit to the struct group
call DestroyEffect(AddSpecialEffectTarget(HitArt,u,"chest"))
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
//puts units that are already in the struct group that are still
// in range of the hammer into a temp group
loop
set u = FirstOfGroup(BHD.BHgroup)
exitwhen u == null
if IsUnitInRangeXY(u,x,y,DmgRadius)==true then
call GroupAddUnit(g2,u)
endif
call GroupRemoveUnit(BHD.BHgroup,u)
endloop
//puts all units in the temp group back into the struct group
//this makes it so the hammer can damage the same unit more than once,
//as long as it goes out of the damage range of the hammer first
loop
set u = FirstOfGroup(g2)
exitwhen u == null
call GroupAddUnit(BHD.BHgroup,u)
call GroupRemoveUnit(g2,u)
endloop
call DestroyGroup(g2)
set g2 = null
//checks if the hammer has reached its max range
//if it hasnt, moves it, if it has, finishes the spell
if distance<=bhRadius then
set BHD.count=BHD.count+1
call SetUnitPosition(BHD.BH,x,y)
set BHD.BHangle=angle
set BHD.BHradius=radius
else
call RemoveLocation(BHD.BHloc)
call DestroyGroup(BHD.BHgroup)
set BHD.BHgroup=null
call BHD.destroy()
call ReleaseTimer(GetExpiredTimer())
call RemoveUnit(BHD.BH)
endif
call RemoveLocation(HammerLoc)
//nulling handles
set HammerLoc=null
set sfx=null
set u=null
endfunction
function Trig_BlessedHammer_Actions takes nothing returns nothing
local BHData BHD=BHData.create()
local unit caster=GetTriggerUnit()
local real angle=GetUnitFacing(caster)
local real x=GetUnitX(caster)+100*Cos(angle*bj_DEGTORAD)
local real y=GetUnitY(caster)+100*Sin(angle*bj_DEGTORAD)
local timer t = NewTimer()
local unit BHammer=CreateUnit(GetOwningPlayer(caster),DummyID,x,y,angle-90)
local sound soundfx=CreateSound("war3mapImported\\bolthammercast.wav",false,true,true,10,10," ")
//gg_snd_bolthammercast
//sound effect
call AttachSoundToUnit(soundfx,caster)
call SetSoundVolume(soundfx,127)
call StartSound(soundfx)
call KillSoundWhenDone(soundfx)
//sets struct data
set BHD.count=0
set BHD.slvl=GetUnitAbilityLevel(caster,spellID)
set BHD.BH=BHammer
set BHD.BHcaster=caster
set BHD.BHangle=angle
set BHD.BHradius=40
set BHD.BHloc=Location(GetUnitX(caster),GetUnitY(caster))
set BHD.BHgroup=CreateGroup()
call SetUnitUserData(BHammer, BHD)
//sets timer
call SetCSData(t,BHD)
call TimerStart(t,0.03,true,function BlessedHammerTimer)
set soundfx=null
set t=null
set caster=null
set BHammer=null
endfunction
endscope
//===========================================================================
function InitTrig_BlessedHammer takes nothing returns nothing
set gg_trg_BlessedHammer = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_BlessedHammer, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_BlessedHammer, Condition( function Trig_BlessedHammer_Conditions ) )
call TriggerAddAction( gg_trg_BlessedHammer, function Trig_BlessedHammer_Actions )
endfunction
Name: Hurricane
MUI: Yes
Leakless: Yes

Code:
JASS:
//=====================================================================//
// Hurricane //
//=====================================================================//
//by emootootoo //
// //
// Requires: vJass, CSData, CSSafety //
// //
// Things you need to copy: //
// Abilities: Hurricane, HurricaneDummySpell //
// Units: HurricaneDummy, DummyCaster //
// Buffs: Chilled //
// //
// Description: Summons a hurricane around the caster that damages and //
// slows enemy units that come within. //
//=====================================================================//
scope Hurricane
globals // Configuration
private integer spellID='A000'
//Hurricane Ability ID
private integer dummycasterID='h003'
//The DummyCaster unit's ID
private integer dummyunitID='h000'
//The HurricaneDummy unit's ID
private real hInterval=0.5
//Time between damaging units in the hurricane (eg. 1.0 damages every 1 second)
//Note: Only use intervals of multiples of 0.05 (0.05, 0.4, 1.65, etc)
private real hDuration=10.0
//Duration of the spell
private real hRadius=500
//Radius of the Hurricane spell
private real hDamage=25
//Damage per level. Deals damage per interval to anyone in the huricane (eg. 50*lvl)
private real hDistanceInterval=150
//How far gusts of wind are apart from each other (max of 6 circles of wind around caster)
//The circles are determined starting from the max radius inwards to keep it accurate
endglobals // End Configuration
//Code =====================================================================
struct hData
public unit array hUnit[12]
public real array hAngle[12]
public real array hDist[12]
public unit hCaster
public integer hNumber
public integer count
public integer slvl
endstruct
function Trig_Hurricane_Conditions takes nothing returns boolean
return GetSpellAbilityId()==spellID
endfunction
function HurricaneTimer takes nothing returns nothing
local hData hD = GetCSData(GetExpiredTimer())
local group g=CreateGroup()
local unit u
local unit tempu
local real x
local real y
local location loc=GetUnitLoc(hD.hCaster)
local integer intcount=R2I(hInterval/0.05)
local integer tempint=0
local integer int=0
if GetUnitState(hD.hCaster,UNIT_STATE_LIFE)>0 then
else
set hD.count=R2I(hDuration/0.05)+1
endif
if hD.count<=R2I(hDuration/0.05) then
set hD.count=hD.count+1
loop
exitwhen tempint>hD.hNumber
set tempint=tempint+1
set hD.hAngle[tempint]=hD.hAngle[tempint]+8
set x=GetLocationX(loc)+hD.hDist[tempint]*Cos(hD.hAngle[tempint]*bj_DEGTORAD)
set y=GetLocationY(loc)+hD.hDist[tempint]*Sin(hD.hAngle[tempint]*bj_DEGTORAD)
call SetUnitPosition(hD.hUnit[tempint],x,y)
endloop
if ModuloInteger(hD.count,intcount)==0 then
call GroupEnumUnitsInRange(g,GetUnitX(hD.hCaster),GetUnitY(hD.hCaster),hRadius,null)
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitEnemy(u,GetOwningPlayer(hD.hCaster))==true and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false and GetUnitState(u,UNIT_STATE_LIFE)>0 then
call UnitDamageTarget(hD.hCaster,u,hDamage*hD.slvl,true,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL,null)
set tempu=CreateUnit(GetOwningPlayer(hD.hCaster),dummycasterID,GetUnitX(u),GetUnitY(u),0)
call IssueTargetOrder(tempu,"slow",u)
call UnitApplyTimedLife(tempu,'BTLF',0.75)
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
endif
else
call hD.destroy()
call ReleaseTimer(GetExpiredTimer())
loop
exitwhen int>hD.hNumber
set int=int+1
call RemoveUnit(hD.hUnit[int])
set hD.hUnit[int]=null
endloop
endif
call RemoveLocation(loc)
set loc=null
set u=null
set tempu=null
endfunction
function Trig_Hurricane_Actions takes nothing returns nothing
local hData hD=hData.create()
local unit caster=GetTriggerUnit()
local real angle=GetUnitFacing(caster)
local real tempangle
local location cloc=GetUnitLoc(caster)
local location tloc=null
local timer t = NewTimer()
local real x
local real y
local integer radnum=R2I((hRadius*2)/hDistanceInterval)
local integer tempint=2
local integer int=0
local integer bsint=0
if radnum<1 then
set radnum=1
endif
if radnum>12 then
set radnum=12
endif
loop
exitwhen int>radnum
loop
exitwhen tempint<1
if tempint==2 then
set tempangle=angle-90
else
set tempangle=angle+90
endif
set int=int+1
set tloc=GetUnitLoc(caster)
set x=GetLocationX(tloc)+(hRadius-(bsint*hDistanceInterval))*Cos(tempangle*bj_DEGTORAD)
set y=GetLocationY(tloc)+(hRadius-(bsint*hDistanceInterval))*Sin(tempangle*bj_DEGTORAD)
set hD.hUnit[int]=CreateUnit(GetOwningPlayer(caster),dummyunitID,x,y,0)
call RemoveLocation(tloc)
set tloc=Location(x,y)
call SetUnitVertexColor(hD.hUnit[int],255,255,255,0)
set hD.hAngle[int]=tempangle
set hD.hDist[int]=DistanceBetweenPoints(cloc,tloc)
set tempint=tempint-1
call RemoveLocation(tloc)
endloop
set bsint=bsint+1
set tempint=2
endloop
set hD.count=0
set hD.slvl=GetUnitAbilityLevel(caster,spellID)
set hD.hCaster=caster
set hD.hNumber=int
call SetUnitUserData(hD.hUnit[hD.hNumber], hD)
call SetCSData(t,hD)
call TimerStart(t,0.05,true,function HurricaneTimer)
set caster=null
call RemoveLocation(cloc)
set cloc=null
set tloc=null
set t=null
endfunction
endscope
//===========================================================================
function InitTrig_Hurricane takes nothing returns nothing
set gg_trg_Hurricane = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Hurricane, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Hurricane, Condition( function Trig_Hurricane_Conditions ) )
call TriggerAddAction( gg_trg_Hurricane, function Trig_Hurricane_Actions )
endfunction
Name: Poison Javelin
MUI: Yes
Leakless: Yes

Code:
JASS:
//=====================================================================//
// Poison Javelin //
//=====================================================================//
//by emootootoo //
// //
// Requires: vJass, CSData, CSSafety //
// //
// Things you need to copy: //
// Abilities: Poison Javelin, PjavPoisonCloud //
// Units: JavelinDummy, Poison Cloud //
// Buffs: Poisoned //
// //
// Description: Throws a poisonous javelin that leaves a trail of //
// poison, poisoning enemies in it. When the javelin hits an enemy, //
// it stops and deals damage to them. //
//=====================================================================//
scope PoisonJavelin
globals // Configuration
private integer spellID='A004'
//'Poison Javelin' Ability ID
private integer PJcloudID='A003'
//'PJavPoisonCloud' Ability ID
private integer dummyjavID='h005'
//The 'JavelinDummy' unit's ID
private integer dummycloudID='h004'
//The 'Poison Cloud' unit's ID
private string HitArt="Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl"
//The art on the unit that gets hit by the javelin
private real hSpeed=0.03
//Speed javelin travels
private real jDistance=1000
//Distance the Javelin travels
private real jCloudTime=5.
//Amount of time poison clouds stay on the groudn before being removed
private real jDamage=25
//Damage per level of Impact Damage (not poison damage)
//Note: Poison Damage and duration are altered in the ability 'PJavPoisonCloud'
endglobals // End configuration
//Code =====================================================================
struct jData
public unit jUnit
public unit jCaster
public integer count
public integer slvl
endstruct
function Trig_PoisonJavelin_Conditions takes nothing returns boolean
return GetSpellAbilityId()==spellID
endfunction
function PoisonJavelinTimer takes nothing returns nothing
local jData jD = GetCSData(GetExpiredTimer())
local group g=CreateGroup()
local unit u
local unit tempu
local integer tempint=0
local location dummypos=GetUnitLoc(jD.jUnit)
local real x=GetLocationX(dummypos)+20*Cos(GetUnitFacing(jD.jUnit)*bj_DEGTORAD)
local real y=GetLocationY(dummypos)+20*Sin(GetUnitFacing(jD.jUnit)*bj_DEGTORAD)
if jD.count<=jDistance/20 then
call SetUnitPosition(jD.jUnit,x,y)
set jD.count=jD.count+1
if ModuloInteger(jD.count,2)==0 then
set tempu=CreateUnit(GetOwningPlayer(jD.jCaster),dummycloudID,x,y,0)
call UnitAddAbility(tempu,PJcloudID)
call SetUnitAbilityLevel(tempu,PJcloudID,jD.slvl)
call UnitApplyTimedLife(tempu,'BTLF',jCloudTime)
endif
else
call jD.destroy()
call ReleaseTimer(GetExpiredTimer())
call RemoveUnit(jD.jUnit)
endif
call GroupEnumUnitsInRange(g,GetUnitX(jD.jUnit),GetUnitY(jD.jUnit),90,null)
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitEnemy(u,GetOwningPlayer(jD.jCaster))==true and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false and GetUnitState(u,UNIT_STATE_LIFE)>0 then
set tempint=tempint+1
call UnitDamageTarget(jD.jCaster,u,jDamage*jD.slvl,true,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL,null)
call AddSpecialEffectTarget(HitArt,u,"chest")
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
if tempint>0 then
set jD.count=R2I((jDistance/20))+1
endif
call RemoveLocation(dummypos)
set dummypos=null
set tempu=null
endfunction
function Trig_PoisonJavelin_Actions takes nothing returns nothing
local jData jD=hData.create()
local unit caster=GetTriggerUnit()
local location tpoint=GetSpellTargetLoc()
local location castpos=GetUnitLoc(caster)
local real angle=bj_RADTODEG * Atan2(GetLocationY(tpoint) - GetLocationY(castpos), GetLocationX(tpoint) - GetLocationX(castpos))
local timer t = NewTimer()
local real x=GetLocationX(castpos)+50*Cos(angle*bj_DEGTORAD)
local real y=GetLocationY(castpos)+50*Sin(angle*bj_DEGTORAD)
local unit u=CreateUnit(GetOwningPlayer(caster),dummyjavID,x,y,angle)
set jD.count=0
set jD.slvl=GetUnitAbilityLevel(caster,spellID)
set jD.jCaster=caster
set jD.jUnit=u
call SetUnitUserData(jD.jUnit, jD)
call SetCSData(t,jD)
call TimerStart(t,hSpeed,true,function PoisonJavelinTimer)
set caster=null
set u=null
call RemoveLocation(tpoint)
set tpoint=null
call RemoveLocation(castpos)
set castpos=null
set t=null
endfunction
endscope
//===========================================================================
function InitTrig_PoisonJavelin takes nothing returns nothing
set gg_trg_PoisonJavelin = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_PoisonJavelin, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_PoisonJavelin, Condition( function Trig_PoisonJavelin_Conditions ) )
call TriggerAddAction( gg_trg_PoisonJavelin, function Trig_PoisonJavelin_Actions )
endfunction
Name: Iron Maiden
MUI: Yes
Leakless: Yes

Code:
JASS:
//=====================================================================//
// Iron Maiden //
//=====================================================================//
//by emootootoo //
// //
// Requires: vJass //
// //
// Things you need to copy: //
// Abilities: Iron Maiden //
// Units: DummyCaster //
// Buffs: Iron Maiden //
// //
// Description: Curses units in an AoE making them do a % of the damage//
// they deal to to enemies, back to themselves, lasts a few seconds. //
//=====================================================================//
scope IronMaiden
globals // Configuration Continued
private integer spellID='A005'
//'Iron Maiden' Ability ID
private integer dummyID='A006'
//'IronMaidenLvl' Ability rawcode (note: item ability)
//Note: Make sure this ability has the same amount of levels as the real ability
// as it is used to keep track of the level of the curse on units.
private integer buffID='B002'
//rawcode for the 'Iron Maiden' buff
private real damageReturn=1.
//Damage return per level (ie damageReturn*level)
private integer AoE=200
//The AoE the same as the level 1 AoE in the 'Iron Maiden' ability (make same as 'Iron Maid' ability)
private integer AoEIncrease=50
//The amount of AoE added per level (make same as 'Iron Maid' ability)
private string HitArt="Abilities\\Weapons\\FlyingMachine\\FlyingMachineImpact.mdl"
//Art when they damage themselves
//Note: Most of the Data for the spell (including duration) is set in the ability 'Iron Maiden'
endglobals // End Configuration
function Trig_IronMaiden_Actions takes nothing returns nothing
if GetUnitAbilityLevel(GetTriggerUnit(),'Aloc')==0 then // locust
call TriggerRegisterUnitEvent(gg_trg_IronMaiden,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
endif
endfunction
function Trig_IronMaiden_Cast_Conditions takes nothing returns boolean
return GetSpellAbilityId()==spellID
endfunction
function Trig_IronMaiden_Cast_Actions takes nothing returns nothing
local location tloc=GetSpellTargetLoc()
local group g=CreateGroup()
local unit u
call GroupEnumUnitsInRange(g,GetLocationX(tloc),GetLocationY(tloc),AoE+(AoEIncrease*GetUnitAbilityLevel(GetTriggerUnit(),spellID)),null)
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitEnemy(u,GetOwningPlayer(GetTriggerUnit()))==true and IsUnitType(u,UNIT_TYPE_STRUCTURE)==false and GetUnitState(u,UNIT_STATE_LIFE)>0 then
call UnitAddAbility(u,dummyID)
call SetUnitAbilityLevel(u,dummyID,GetUnitAbilityLevel(GetTriggerUnit(),spellID))
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
set u=null
call RemoveLocation(tloc)
set tloc=null
endfunction
function Trig_IronMaiden_Mapstart_Actions takes nothing returns nothing
local unit u
local group g=CreateGroup()
call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea,null)
loop
set u = FirstOfGroup(g)
exitwhen u==null
if IsUnitType(u,UNIT_TYPE_STRUCTURE)==false and GetUnitState(u,UNIT_STATE_LIFE)>0 then
call TriggerRegisterUnitEvent(gg_trg_IronMaiden,u,EVENT_UNIT_DAMAGED)
endif
call GroupRemoveUnit(g,u)
endloop
call DestroyGroup(g)
set g = null
endfunction
function Trig_IronMaiden_Dmg_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetEventDamageSource(),buffID)>0 and GetOwningPlayer(GetEventDamageSource())!=GetOwningPlayer(GetTriggerUnit())
endfunction
function Trig_IronMaiden_Dmg_Actions takes nothing returns nothing
call UnitDamageTarget(GetEventDamageSource(),GetEventDamageSource(), GetEventDamage()*(damageReturn*GetUnitAbilityLevel(GetEventDamageSource(),dummyID)),true,false,ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL,null)
call AddSpecialEffectTarget(HitArt,GetEventDamageSource(),"chest")
endfunction
endscope
function InitTrig_IronMaiden takes nothing returns nothing
local trigger gg_trg_IronMaiden_Events=CreateTrigger()
local trigger gg_trg_IronMaiden_Cast=CreateTrigger()
local trigger gg_trg_IronMaiden_Mapstart=CreateTrigger()
set gg_trg_IronMaiden=CreateTrigger( )
call TriggerAddCondition( gg_trg_IronMaiden, Condition( function Trig_IronMaiden_Dmg_Conditions ) )
call TriggerAddAction( gg_trg_IronMaiden, function Trig_IronMaiden_Dmg_Actions )
call TriggerRegisterEnterRectSimple( gg_trg_IronMaiden_Events, GetPlayableMapRect() )
call TriggerAddAction( gg_trg_IronMaiden_Events, function Trig_IronMaiden_Actions )
call TriggerRegisterAnyUnitEventBJ( gg_trg_IronMaiden_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_IronMaiden_Cast, Condition( function Trig_IronMaiden_Cast_Conditions ) )
call TriggerAddAction( gg_trg_IronMaiden_Cast, function Trig_IronMaiden_Cast_Actions )
call TriggerRegisterTimerEventSingle( gg_trg_IronMaiden_Mapstart, 1 )
call TriggerAddAction( gg_trg_IronMaiden_Mapstart, function Trig_IronMaiden_Mapstart_Actions )
set gg_trg_IronMaiden_Events=null
set gg_trg_IronMaiden_Cast=null
set gg_trg_IronMaiden_Mapstart=null
endfunction
Map is now updated with all spells in JESP standard.
Attachments
-
77.7 KB Views: 684