Need help with Jass Spell Code

Discussion in 'JASS Zone' started by Lufion, Jul 26, 2018.

  1. Lufion

    Lufion New Member

    +0 / 0 / -0
    scope KatonJutsu initialitzer KatonInit
    private contstant integer SPELL_ID = 'ANcl'
    private function Katon_DMG takes integer Katonlevel returns real
    return level *50
    private function Katon_Range takes integer Katonlevel returns real
    return level *150
    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)
    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
    private function KatonPick takes nothing returns boolean
    return KatonTargets(GetFilterUnit())
    private function Katon_Condition takes nothing returns nothing
    return GetSpellAbilityId() == SPELL_ID  // The Same as the GUI Condition : " abillity beeing cast equal to ..." 
    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)
            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
            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       // "
    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
    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

    Attached Files:

    • 1.png
      File size:
      56.5 KB
  2. 3ICE

    3ICE Cool Member

    +3 / 0 / -0
    misspelled initializer:
    Noticed because Syntax highlighting would give it a different, non-keyword color. Looked weird.

Share This Page