waaaks!
Zinctified
- Reaction score
- 256
I introduce you my second spellpack. Some of may notice that some of the triggers i used are from Vexorian's samples, but doesn't mean that my spells are already made by Vexorian's sample, because i combined the functions made by Vex to a spell i want to implement.
System Used: Caster System
Spell: Not MUI (I don't know?)
Spell: JASS (not JESP, i still don't k now)
Import Difficulty: Average
Inferno: Fires an inferno missile to a target unit, that creates fire burning inferno on the target's position, and damaging it overtime. Last 10 seconds.
Level 1: 15 mana cost 10 second cooldown
Level 2: 10 mana cost 5 second cooldown
Level 3: 5 mana cost 0 second cooldown
Death Arrow: Shoots a flaming arrow to the target location, when the missile arrives to the destination, it deals damage to enemy units in 350 radius.( works like grenade from vex )
Level 1: 100 damage, 1000 cast range
Level 2: 200 damage, 1500 cast range
Level 3: 300 damage, 2000 cast range
Firestorm:Creates pulses of flame from the caster slowing and damaging enemy units within 400 radius. Pulses increase per level.( the spell is based on channel and cant be canceled by yourself, you can use the starfall as the base ability )
Level 1: 5 second channel
Level 2: 10 second channel
Level 3: 15 second channel
Polymorph:The Caster curses his enemies, stunning and hexing enemy units within 500 radius for two successful curses, the curse increases depending on the caster's, unspent skill points ( i used unspent skill points for the loop, because if i used range or range, the spell would be undefeated, i tried to use group but it seems hard, and i keep getting errors when i used group )
I didnt get the screenshots right, it would be more cool in-game
Codes
Inferno
Death Arrow
Firestorm
Polymorph
enjoy and feedbacks are welcome...
EDIT: Finish Update 1
EDIT: Finish Update 2
System Used: Caster System
Spell: Not MUI (I don't know?)
Spell: JASS (not JESP, i still don't k now)
Import Difficulty: Average
Inferno: Fires an inferno missile to a target unit, that creates fire burning inferno on the target's position, and damaging it overtime. Last 10 seconds.
Level 1: 15 mana cost 10 second cooldown
Level 2: 10 mana cost 5 second cooldown
Level 3: 5 mana cost 0 second cooldown
Death Arrow: Shoots a flaming arrow to the target location, when the missile arrives to the destination, it deals damage to enemy units in 350 radius.( works like grenade from vex )
Level 1: 100 damage, 1000 cast range
Level 2: 200 damage, 1500 cast range
Level 3: 300 damage, 2000 cast range
Firestorm:Creates pulses of flame from the caster slowing and damaging enemy units within 400 radius. Pulses increase per level.( the spell is based on channel and cant be canceled by yourself, you can use the starfall as the base ability )
Level 1: 5 second channel
Level 2: 10 second channel
Level 3: 15 second channel
Polymorph:The Caster curses his enemies, stunning and hexing enemy units within 500 radius for two successful curses, the curse increases depending on the caster's, unspent skill points ( i used unspent skill points for the loop, because if i used range or range, the spell would be undefeated, i tried to use group but it seems hard, and i keep getting errors when i used group )
I didnt get the screenshots right, it would be more cool in-game
Codes
Inferno
JASS:
//**************************************************************************************************
//*Requires the CasterSytem get it now on <a href="http://www.wc3campaigns.net/vexorian" target="_blank" class="link link--external" rel="nofollow ugc noopener">www.wc3campaigns.net/vexorian</a> *
//*Polymorph: copy first the latest dummy from the caster system then copy this trigger to your map*
//*and change some fields below *
//**************************************************************************************************
// #Inferno start#
constant function iid takes nothing returns integer
return 039;A005039; // 'A005' raw code of the spell Inferno
endfunction
constant function ida takes nothing returns integer
return 039;A006039; // raw code of the spell used by the dummy (flamestrike)
endfunction
constant function ids takes nothing returns string
return "flamestrike" // base order id of the spell used by the dummy
endfunction
constant function ispeed takes nothing returns real
return 900.0 // missile speed of the spell inferno
endfunction
function Trig_Inferno1_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == iid() )
endfunction
function Trig_Inferno1_Actions takes nothing returns nothing
local unit u = GetTriggerUnit() // Triggering unit
local location loc1 = GetUnitLoc(u) // Position of Triggering unit
local location loc2 = GetUnitLoc(GetSpellTargetUnit()) // Position of target
local real wait
set wait = DistanceBetweenPoints(loc1, loc2) / ispeed()
call PolledWait(wait)
call CasterCastAbilityPointLoc(GetOwningPlayer(u), ida(), ids(), loc2, true)
call RemoveLocation(loc1)
call RemoveLocation(loc2)
set u = null
set loc1 = null
set loc2 = null
endfunction
//===========================================================================
function InitTrig_Inferno1 takes nothing returns nothing
set gg_trg_Inferno1 = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Inferno1, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Inferno1, Condition( function Trig_Inferno1_Conditions ) )
call TriggerAddAction( gg_trg_Inferno1, function Trig_Inferno1_Actions )
endfunction
// #Inferno end#
Death Arrow
JASS:
//***************************************************************************************************
//*Requires the CasterSytem get it now on <a href="http://www.wc3campaigns.net/vexorian" target="_blank" class="link link--external" rel="nofollow ugc noopener">www.wc3campaigns.net/vexorian</a> *
//*Death Arrow: copy first the latest dummy from the caster system then copy this trigger to your map*
//*and change some fields below *
//***************************************************************************************************
//#Death Arrow start#
constant function rda takes nothing returns integer
return 039;A002039;
endfunction
constant function daatk takes nothing returns string
return "attack" //animation applied to the caster
endfunction
constant function dasfx takes nothing returns string
// special effect used for the missile
return "Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile.mdl"
endfunction
constant function daspeed takes nothing returns integer
return 800 // missile's speed
endfunction
constant function daarc takes nothing returns real
return 0.05 // missile's arc (works like the world editor)
endfunction
constant function dastart takes nothing returns real
return 50.0 // starting height of the missile
endfunction
constant function daend takes nothing returns real
return 0.0 // the height where the missile land
endfunction
constant function darad takes nothing returns integer
return 350 // radius of the damage
endfunction
function Trig_DeathArrow_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == rda() ) // raw code of the spell Death Arrow
endfunction
function Trig_DeathArrow_Actions takes nothing returns nothing
local unit u = GetTriggerUnit() // triggering unit
local location loc1 = GetUnitLoc(u) // position of triggering unit
local location loc2 = GetSpellTargetLoc() // position of target location
local integer l
local real d
local integer dopt
set l = GetUnitAbilityLevel( u, rda())
set d = l*100.00
call SetUnitAnimation( u, daatk() )
set dopt = DamageTypes(ATTACK_TYPE_SIEGE,DAMAGE_TYPE_FORCE)
set dopt = dopt + DamageOnlyTo(UNIT_TYPE_GROUND) + DamageOnlyVisibles() + DontDamageSelf()
call DamagingProjectileLaunchAOELoc(u, dasfx(), daspeed(), daarc(), loc1, dastart(), loc2, daend(), darad(), d, false, dopt)
call RemoveLocation(loc1)
call RemoveLocation(loc2)
set u = null
set loc1 = null
set loc2 = null
endfunction
//===========================================================================
function InitTrig_DeathArrow takes nothing returns nothing
set gg_trg_DeathArrow = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_DeathArrow, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_DeathArrow, Condition( function Trig_DeathArrow_Conditions ) )
call TriggerAddAction( gg_trg_DeathArrow, function Trig_DeathArrow_Actions )
endfunction
//#Death Arrow end#
Firestorm
JASS:
//**************************************************************************************************
//*Requires the CasterSytem get it now on <a href="http://www.wc3campaigns.net/vexorian" target="_blank" class="link link--external" rel="nofollow ugc noopener">www.wc3campaigns.net/vexorian</a> *
//*Firestorm: copy first the latest dummy from the caster system then copy this trigger to your map*
//*and change some fields below *
//*also copy the variable DamageOptions *
//*and paste it on your variables *
//**************************************************************************************************
//#Firestorm start#
constant function rf takes nothing returns integer
return 039;A003039; // 'A003' raw code for the spell firestorm
endfunction
constant function fa takes nothing returns string
return "Firestorm_Actions"
endfunction
constant function farea takes nothing returns real
return 450.0 //radius of the spell
endfunction
constant function fid takes nothing returns string
return "starfall" //base order id of the spell
endfunction
constant function fsfx1 takes nothing returns string
//special effect attached to triggering unit
return "Abilities\\Spells\\Other\\Volcano\\VolcanoDeath.mdl"
endfunction
constant function fsfx2 takes nothing returns string
// the four special effect that surrounds the caster
return "Abilities\\Weapons\\PhoenixMissile\\Phoenix_Missile.mdl"
endfunction
constant function fds takes nothing returns string
// base order id of the dummy spell
return "thunderclap"
endfunction
constant function fda takes nothing returns integer
return 039;A004039; // raw code for the dummy spell
endfunction
constant function fdel takes nothing returns real
return 0.75 // a delay to cast the dummy spell and damage unit
endfunction
function InitTrig_Firestorm takes nothing returns nothing
call OnAbilityEffect( rf(), fa() )
endfunction
function Firestorm_Actions takes nothing returns nothing
local unit u = GetTriggerUnit() //triggering unit
local location loc1 = GetUnitLoc(u) // position of triggering unit
local location pol
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real off
local integer dopt
local integer l = GetUnitAbilityLevel(u, rf()) // level of spell Firestorm
local integer i
local real dmg = 25.0*l //damage dealt
loop
exitwhen (GetUnitCurrentOrder(u) != OrderId(fid()))
call DestroyEffect( AddSpecialEffectLoc( fsfx1(), loc1) )
set off = GetRandomReal(0, 36.0)
set i = 0
loop
exitwhen i>4
set pol = PolarProjectionBJ(loc1, 100.0, off+i*72.0)
call DestroyEffect( AddSpecialEffectLoc( fsfx2(), pol ) )
call RemoveLocation(pol)
set i = i+1
endloop
set dopt=DamageTypes(ATTACK_TYPE_CHAOS,DAMAGE_TYPE_DIVINE) + DamageException(UNIT_TYPE_UNDEAD,3.0)
call DamageUnitsInAOEExLoc(u, dmg, loc1, farea(), false, udg_DamageOptions)
call CasterCastAbilityPoint(GetOwningPlayer(u), fda(), fds(), x, y, false)
call PolledWait(fdel())
endloop
call RemoveLocation(loc1)
set loc1 = null
set pol = null
set u = null
endfunction
//#Firestorm end#
Polymorph
JASS:
//**************************************************************************************************
//*Requires the CasterSytem get it now on <a href="http://www.wc3campaigns.net/vexorian" target="_blank" class="link link--external" rel="nofollow ugc noopener">www.wc3campaigns.net/vexorian</a> *
//*Polymorph: copy first the latest dummy from the caster system then copy this trigger to your map*
//*and change some fields below *
//**************************************************************************************************
//#Polymorph start#
constant function tunit takes nothing returns unit
return GetTriggerUnit() // triggering unit
endfunction
constant function rpoly takes nothing returns integer
return 039;A000039; // raw code for polymorph
endfunction
constant function rhex takes nothing returns integer
return 039;A001039; // raw code of the hex ability used on enemies
endfunction
constant function rstorm takes nothing returns integer
return 039;AHtb039; // raw code of the storm bolt, i used normal storm bolt from human
endfunction
constant function shex takes nothing returns string
return "hex" // base string id for the hex ability
endfunction
constant function sstorm takes nothing returns string
return "thunderbolt" // base string id for the normal stormbolt
endfunction
constant function tdelay takes nothing returns real
return 0.35 // the delay on hexing and stunning units again
endfunction
function Trig_Polymorph_Conditions takes nothing returns boolean
return ( GetSpellAbilityId() == rpoly() )
endfunction
function Polymorph_NoTrig takes nothing returns boolean
return ( GetTriggerUnit() != GetFilterUnit() )
endfunction
globals
boolexpr Polymorph_Filter = null
endglobals
function Trig_Polymorph_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local group g = CreateGroup()
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local integer i = 1
local integer n = GetHeroSkillPoints(u) + 2 // skillpoints of the caster +2
call CS_EnumUnitsInAOE(g, x, y, 500.0, Polymorph_Filter)
loop
exitwhen i>n
call PolledWait(tdelay())
call CasterCastAbilityGroup(GetOwningPlayer(tunit()), rhex(), shex(), g, true)
call CasterCastAbilityGroup(GetOwningPlayer(tunit()), rstorm(), sstorm(), g, false)
set i = i + 1
endloop
call DestroyGroup(g)
set g = null
set u = null
endfunction
//===========================================================================
function InitTrig_Polymorph takes nothing returns nothing
set Polymorph_Filter = Condition(function Polymorph_NoTrig)
set gg_trg_Polymorph = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Polymorph, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Polymorph, Condition( function Trig_Polymorph_Conditions ) )
call TriggerAddAction( gg_trg_Polymorph, function Trig_Polymorph_Actions )
endfunction
//#Polymorph end#
enjoy and feedbacks are welcome...
EDIT: Finish Update 1
EDIT: Finish Update 2