Need help with Jass Spell Code

Lufion

New Member
Reaction score
0
Code:
scope KatonJutsu initialitzer KatonInit
/////////////////Setup///////////////////////////////////////////
globals
private contstant integer SPELL_ID = 'ANcl'

private function Katon_DMG takes integer Katonlevel returns real
return level *50
endfunction

private function Katon_Range takes integer Katonlevel returns real
return level *150
endfunction

private function unit KatonTargets takes nothing returns boolean
return (GetWidgetLife(KatonTargets) > 0.405) and (IsUnitType(KatonTargets, UNIT_TYPE_STRUCTURE) == false) and (IsUnitType(KatonTargets, UNIT_TYPE_MAGIC_IMMUNE) == false)

/////////////////Globals///////////////////////////////////////////
globals

private group Enemies // if the spell can be used by multiple ppl/characters then I should create a global group, because the spell wouldnt have to create a new group for every Caster then which could create lag)
private boolexpr K    // "This offtipic is for group aswell" also, if CreateGroup is used in automatic functions like the inizializer, it can crash the Game sometimes unless u only set it in the initializer which only works if u created a group beforehand which we did now

/////////////////PickedUnitsInRange///////////////////////////////////////////
private function KatonPick takes nothing returns boolean

return KatonTargets(GetFilterUnit())

/////////////////Conditions///////////////////////////////////////////
private function Katon_Condition takes nothing returns nothing
return GetSpellAbilityId() == SPELL_ID  // The Same as the GUI Condition : " abillity beeing cast equal to ..." 
endfunction
/////////////////Actions///////////////////////////////////////////
private function Katon_Action takes nothing returns nothing
 local location KatonLoc = GetSpellTargetLoc()     // We need to get the Spell Target Location with these 3 Calls ( "","")
        local real KatonX = GetLocationX(KatonLoc) // "
        local real KatonY = GetLocationY(KatonLoc) // "
        local unit KatonCaster = GetTriggerUnit()  // sets the Caster of the Spell
        local integer Katonlevel = GetUnitAbilityLevel(caster, SPELL_ID) //
        local unit CurrentUnit
        
        call GroupEnumUnitsInRange (Enemies, KatonX,KatonY,Katon_Range,K)
        
        loop
        set CurrentUnit = FirstOfGroup(Enemies)
        exitwhen (CurrentUnit == null)
        call GroupRemoveUnit (Enemies, CurrentUnit)
        if IsUnitEnemy (CurrentUnit, GetOwningPlayer(KatonCaster) then
        call UnitDamageTarget(KatonCaster, CurrentUnit, Katon_DMG(Katonlevel), true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, null
        endloop
        
        
        call RemoveLocation(spellLoc)  // This removes the Location and the one below sets the Variable to null (which prevents leak aswell)
        set KatonLoc = null           // caster and Spell Location has to be set 0 to prevent leak
        set KatonCaster = null       // "
endfunction
/////////////////Initializer///////////////////////////////////////////
private function KatonInit takes nothing returns nothing
    local trigger KatonTrigger = CreateTrigger( )
    call TriggerRegisterAnyUnitEventBJ ( KatonTrigger, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition ( KatonTrigger, Condition( function Katon_Condition ))
    call TriggerAddAction( KatonTrigger, function Katon_Action )


//setting globals
set Enemies = CreateGroup ()
set K = Condition(function KatonPick)


//preloading effects
endfunction

endscope

Soo I need help with this Spell I made in vJass. I'm a newbie so go easy on me. I've looked over it for a few times now and re-read severel tutorials, but I can't find my mistakes allthough there are probably quite a few. So I'd be really glad if someone could point out the mistakes I made here so I can improve and do it better next time. PS: Dont mind the // cuz they are meant to remind me of things I thought would be good to know. Anyway thanks in advance
 

Attachments

  • 1.png
    1.png
    56.5 KB · Views: 430
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top