Need help with Jass Spell Code


New Member
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


General chit-chat
Help Users
  • No one is chatting at the moment.
  • C Cherry.Grove:
    My one game was basically Among Us but you sabotaged an entire medieval city simulated drastically inefficiently with dynamic NPCs :S
  • C Cherry.Grove:
    of course I never finished it x D
  • jonas jonas:
  • jonas jonas:
    I think you can still run the original game, just there's a chance your map won't work with the newer patches
  • jonas jonas:
    what development framework have you been looking at for mobile development?
  • jonas jonas:
    I'm currently creating (as a hobby) a space invaders like game for mobile using Xamarin, after starting a few larger projects that I also may not have finished :rolleyes::p
  • The Helper The Helper:
    Awesome! you should look at the Atari VCS platform it does not have a huge user base but the one it has is super active at around 11k and they have no games in there store
  • The Helper The Helper:
    basically it is linux
  • The Helper The Helper:
    OMG it is BanLord as Blackveiled on the forum
  • The Helper The Helper:
    what is up buddy
  • jonas jonas:
    thanks for the tip, that sounds cool. Never heard about the VCS before but seems like it should be a good match
  • tom_mai78101 tom_mai78101:
    The winter vacation left a toll on me. I missed staying up late and sleeping in late.
  • C Cherry.Grove:
    i haven't looked into it yet
  • C Cherry.Grove:
    If I could use something Python compatible it would save me some learning
  • C Cherry.Grove:
    But Unity might be easiest
  • C Cherry.Grove:
    looking at old posts here makes me happy. Makes me be all like "wow I was pretty smart in 2009"
  • C Cherry.Grove:
    mostly failing at life through adulthood really demotivated me for a while
  • C Cherry.Grove:
    ....what I don't get is why the fuck they would force us to permanently convert to a version of the game everyone fucking hated : \
  • C Cherry.Grove:
    Raid Shadow Legends texture pack smh
  • jonas jonas:
    Most people fail at life throughout their adulthood. Sometimes we get to learn from it. Usually it just feels like crap.
  • The Helper The Helper:
    What does not kill you makes you stronger is what they say
  • C Cherry.Grove:
    for real! :cool:
  • Varine Varine:
    Are we still on the topic of failing? I failed lots!
  • jonas jonas:
    If you ever want to talk about it we're here. The way I see it, you're still around. That required a few very difficult successes if you ask me:)

    Members online

    No members online now.


    Hive Workshop NUON Dome