System JASS Spell Handler (For Vanilla World Editor)

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
JASS:

//////////////////////////////////////////////
//   JASS Spells Handler (For GUI users)
//        v1.0.0
//      by kingking
//
//  What is JASS Spells Handler?
//  JASS Spells Handler is a trigger system for handling spell triggers.
//
//  Why use JASS Spell Handler?
//  When your map has many spell triggers, those triggers will fire the condition,
//  even they are not the trigger for the spell. This will lower the efficiency of your
//  map.
//  JASS Spell Handler will only fire the one needed.
//  For vJass users, you can have better option than this.
//
//  How to implement?
//  1) Go to the main window of World Editor.
//  2) Select File -> Preference.
//  3) Tick "Automatically create unknown variables...".
//  4) Press Ok.
//  5) Copy InitJASSSpellsHandler into your map.
//  6) Copy this script to your map header.
// 
//  How to use?
//  -> Register all spells under InitJASSSpellsHandler.
//  
//  There are some spell events provided :
//  RegisterSpell_OnCast(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit starts casting the spell
//  RegisterSpell_OnEffect(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit starts the effect of spell
//  RegisterSpell_OnChannel(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit starts channeling the spell
//  RegisterSpell_OnEndCast(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit stops casting the spell
//  RegisterSpell_OnFinish(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit finishs casting the spell
//  RegisterSpell_OnLearn(gg_trg_<trigger's name>,<rawcode of ability>) -> Unit learnt a skill.
//
//  Example :
//  Spell's trigger name : Bomb, Rawcode of ability is 'A000'
//  call RegisterSpell_OnEffect(gg_trg_Bomb,'A000')
//
//  Don't forget to remove event and AbilityBeingCast condition in your spells' trigger if you used this on them.
//
//  Advantage :
//  -> Easy to use.
//  -> Can be used in vanilla world editor.
//
//  Disadvantage :
//  -> Supports one trigger per spell event only.
//
//  Requires : Your brain, =D
//
/////////////////////////////////////////////////
function RegisterSpell_OnCast takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,0,abil_id,whichTrigger)
endfunction

function RegisterSpell_OnEffect takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,1,abil_id,whichTrigger)
endfunction

function RegisterSpell_OnChannel takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,2,abil_id,whichTrigger)
endfunction

function RegisterSpell_OnEndCast takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,3,abil_id,whichTrigger)
endfunction

function RegisterSpell_OnFinish takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,4,abil_id,whichTrigger)
endfunction

function RegisterSpell_OnLearn takes trigger whichTrigger, integer abil_id returns nothing
    call SaveTriggerHandle(udg_SpellHandler_hasht,5,abil_id,whichTrigger)
endfunction

function SpellHandler_Callback takes nothing returns boolean
    local eventid eventz = GetTriggerEventId()
    local integer id
    local trigger trig = null
    if eventz == EVENT_PLAYER_UNIT_SPELL_CAST then
        set id = GetSpellAbilityId()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,0,id)
    elseif eventz == EVENT_PLAYER_UNIT_SPELL_EFFECT then
        set id = GetSpellAbilityId()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,1,id)
    elseif eventz == EVENT_PLAYER_HERO_SKILL then
        set id = GetLearnedSkill()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,5,id)
    elseif eventz == EVENT_PLAYER_UNIT_SPELL_CHANNEL then
        set id = GetSpellAbilityId()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,2,id)
    elseif eventz == EVENT_PLAYER_UNIT_SPELL_ENDCAST then  
        set id = GetSpellAbilityId()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,3,id)
    elseif eventz == EVENT_PLAYER_UNIT_SPELL_FINISH then  
        set id = GetSpellAbilityId()
        set trig = LoadTriggerHandle(udg_SpellHandler_hasht,4,id)
    endif
    if trig != null and TriggerEvaluate(trig) then
        call TriggerExecute(trig)
    endif
    set eventz = null
    set trig = null
    return false
endfunction

function SpellHandler_Init takes nothing returns nothing
    local trigger trig = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_SPELL_CAST)
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_SPELL_CHANNEL)
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_UNIT_SPELL_ENDCAST)
    call TriggerRegisterAnyUnitEventBJ(trig,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(trig,Condition(function SpellHandler_Callback))

    set udg_SpellHandler_hasht = InitHashtable()
endfunction

/// <- system ends -> ////
 

Romek

Super Moderator
Reaction score
963
> Nobody cares for vanilla jass.
This.

Either that, or the number of people who care is so small, that they all probably have their own versions of systems, and aren't in need of things like this.
Putting that aside, this is just a less functional rip of GTrigger.

> (For Vanilla World Editor and GUI-ers)
Using GUI and doing things efficiently don't cross in any way whatsoever.

> [ljass]// This will lower the efficiency of your map.[/ljass]
...:rolleyes:

I'd also like to note that we're not going to be accepting less-functional, difficult to import duplicates of every system on this website, for 'Vanilla WE Users'.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top