waaaks!
Zinctified
- Reaction score
- 256
MUI
JASS
LEAKLESS
JESP
Demon's Sanctum
Slams the ground, dealing initial damage, then stuns for 1 second, and creating pits from hell, that fires damaging rays, second sanctuary rays deals double the damage dealt by the first sanctuary.
Level 1 - 50 initial damage, first sanctuary deals 20 damage.
Level 2 - 100 initial damage, first sanctuary deals 40 damage.
Level 3 - 150 initial damage, first sanctuary deals 60 damage.
Nightmare
Sends out a vicous coil to the target location, dealing damage in a line, when the coil arrives, it creates a ring of death outward, that deals damage.
Level 1 - 100 line damage, 40 nova damage.
Level 2 - 150 line damage, 60 nova damage.
Level 3 - 200 line damage, 80 nova damage
JASS
LEAKLESS
JESP
Demon's Sanctum
Slams the ground, dealing initial damage, then stuns for 1 second, and creating pits from hell, that fires damaging rays, second sanctuary rays deals double the damage dealt by the first sanctuary.
Level 1 - 50 initial damage, first sanctuary deals 20 damage.
Level 2 - 100 initial damage, first sanctuary deals 40 damage.
Level 3 - 150 initial damage, first sanctuary deals 60 damage.
JASS:
//*******************************************
//* Demon's Sanctum
//* by waaaks!
//*******************************************
//* Requires
//* -Demon Sanctum Spell
//* -First Sanctuary Spell
//* -Second Sanctuary Spell
//* -Sanctuary unit
//*******************************************
//* Object Editor Configuration
//* -Demon's Sanctuary Damage and Stun
//* -First Sanctuary Damage Range and Speed
//* -Second Sanctuary Damage Range and Speed
//*******************************************
constant function DemonSpellId takes nothing returns integer
return 039;A000039; // Demon's Sanctum Spell Id
endfunction
constant function DemonDummySpell1 takes nothing returns integer
return 039;A002039; // First Sanctuary Spell Id
endfunction
constant function DemonDummySpell2 takes nothing returns integer
return 039;A001039; // Second Sanctuary Spell Id
endfunction
constant function DummyId takes nothing returns integer
return 039;u000039; // Sanctuary Dummy Id
endfunction
constant function DummySpellString takes nothing returns string
return "carrionswarm" // Dummy Spells String Order
endfunction
constant function Range1 takes nothing returns real
return 300.0 // First Sanctuary range from the caster
endfunction
constant function Range2 takes nothing returns real
return 600.0 // Second Sanctuary range from the caster
endfunction
function Trig_DemonSanctum_Conditions takes nothing returns boolean
return GetSpellAbilityId() == DemonSpellId()
endfunction
function Trig_DemonSanctum_Actions takes nothing returns nothing
local unit cast = GetTriggerUnit()
local location loc = GetUnitLoc(cast)
local location pol1 = null
local location pol2 = null
local unit first
local unit second
local integer n = 1
local integer l = GetUnitAbilityLevel(cast, DemonSpellId())
loop
exitwhen n > 36
set pol1 = PolarProjectionBJ(loc, Range1(), 10*n)
set pol2 = PolarProjectionBJ(loc, Range2(), 10*n)
set first = CreateUnitAtLoc(GetOwningPlayer(cast), DummyId(), pol1, 10*n)
set second = CreateUnitAtLoc(GetOwningPlayer(cast), DummyId(), pol2, 10*n)
call UnitApplyTimedLife(first, 039;BTLF039;, 8.0)
call UnitApplyTimedLife(second, 039;BTLF039;, 8.0)
call UnitAddAbility(first, DemonDummySpell1())
call UnitAddAbility(second, DemonDummySpell2())
call SetUnitAbilityLevel(first, DemonDummySpell1(), l)
call SetUnitAbilityLevel(second, DemonDummySpell2(), l)
call IssuePointOrder(first, DummySpellString(), GetUnitX(cast), GetUnitY(cast))
call IssuePointOrder(second, DummySpellString(), GetUnitX(cast), GetUnitY(cast))
call RemoveLocation(pol1)
call RemoveLocation(pol2)
set n = n + 1
endloop
call RemoveLocation(loc)
set loc = null
set pol1 = null
set pol2 = null
set first = null
set second = null
endfunction
//===========================================================================
function InitTrig_DemonSanctum takes nothing returns nothing
set gg_trg_DemonSanctum = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DemonSanctum, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_DemonSanctum, Condition( function Trig_DemonSanctum_Conditions ) )
call TriggerAddAction( gg_trg_DemonSanctum, function Trig_DemonSanctum_Actions )
endfunction
Nightmare
Sends out a vicous coil to the target location, dealing damage in a line, when the coil arrives, it creates a ring of death outward, that deals damage.
Level 1 - 100 line damage, 40 nova damage.
Level 2 - 150 line damage, 60 nova damage.
Level 3 - 200 line damage, 80 nova damage
JASS:
//*******************************************
//* Nightmare
//* by waaaks!
//*******************************************
//* Requires
//* -Nightmare Spell
//* -Ring Of Death Spell
//* -A dummy unit
//*******************************************
//* Object Editor Configuration
//* -Nightmare Damage Speed, and Max Range
//* -Ring of Death Damage, Speed, Max Range
//*******************************************
constant function NightmareSpell takes nothing returns integer
return 039;A003039; // Nightmare Spell
endfunction
constant function RingOfDeathSpell takes nothing returns integer
return 039;A004039; // Ring Of Death Spell
endfunction
constant function DummyUnit takes nothing returns integer
return 039;u001039; // Your Dummy Unit
endfunction
constant function NightmareSpeed takes nothing returns real
return 600.0 // Nightmare Missile Speed
endfunction
constant function NightmareRange takes nothing returns real
return 1000.0 // Nightmare Max Range
endfunction
constant function RingOfDeathOrder takes nothing returns string
return "carrionswarm" // Ring Of Death String Order
endfunction
function Trig_Nightmare_Conditions takes nothing returns boolean
return GetSpellAbilityId() == NightmareSpell()
endfunction
function Trig_Nightmare_Actions takes nothing returns nothing
local unit cast = GetTriggerUnit()
local location loc = GetUnitLoc(cast)
local location targ = GetSpellTargetLoc()
local location loc2 = PolarProjectionBJ(loc, NightmareRange(), AngleBetweenPoints(loc, targ))
local location pol = null
local unit dummy
local integer l = GetUnitAbilityLevel(cast, NightmareSpell())
local integer n = 1
local real wait = NightmareRange() / NightmareSpeed()
call PolledWait(wait)
loop
exitwhen n > 36
set pol = PolarProjectionBJ(loc, 10.0, 10*n)
set dummy = CreateUnitAtLoc(GetOwningPlayer(cast), DummyUnit(), loc2, 10*n)
call UnitApplyTimedLife(dummy, 039;BTLF039;, 5.0)
call UnitAddAbility(dummy, RingOfDeathSpell())
call SetUnitAbilityLevel(dummy, RingOfDeathSpell(), l)
call IssuePointOrderLoc(dummy, RingOfDeathOrder(), loc2)
call RemoveLocation(pol)
set n = n + 1
endloop
call RemoveLocation(loc)
call RemoveLocation(loc2)
call RemoveLocation(targ)
set targ = null
set loc = null
set loc2 = null
set pol = null
set dummy = null
set cast = null
endfunction
//===========================================================================
function InitTrig_Nightmare takes nothing returns nothing
set gg_trg_Nightmare = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Nightmare, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Nightmare, Condition( function Trig_Nightmare_Conditions ) )
call TriggerAddAction( gg_trg_Nightmare, function Trig_Nightmare_Actions )
endfunction