Spell Mojo Magic

Hatebreeder

So many apples
Reaction score
381
Question: Does Textmacro cause the spell to leak whenever it is called?

I don't remember what it was, but somewhere I heard that using textmacros wasn't a very good idea for spells :X
 

Flare

Stops copies me!
Reaction score
662
Question: Does Textmacro cause the spell to leak whenever it is called?

I don't remember what it was, but somewhere I heard that using textmacros wasn't a very good idea for spells :X
Leaks? Certainly not - if you make it leak, then it will leak. The textmacro itself is just inserting it's contained code into your script, wherever you run the textmacro.

As regards being bad for a spell? No. Some people feel that it's bad practise (for whatever reason) to use textmacro's in spells, but it will not have any negative effect on your spell (other than possible readability issues). The only way a textmacro would be bad if it was written poorly :p

JASS:
                if .ticks == 0 and DMG_ON_END then
                    //! runtextmacro DAMAGE_PART()
                else
                    //! runtextmacro DAMAGE_PART()
                endif

Why does that if block exist if the DAMAGE_PART code runs regardless of whether the condition is true or false?

JASS:
            call SetUnitState( .target, UNIT_STATE_LIFE, ( GetUnitStateSwap(UNIT_STATE_LIFE, .target) + DAMAGE_MULTI ) ) //Heal Target
            call SetUnitState( .caster, UNIT_STATE_LIFE, ( GetUnitStateSwap(UNIT_STATE_LIFE, .caster) + DAMAGE_MULTI ) ) //Heal Caster

GetUnitStateSwap? Why not GetUnitState or GetWidgetLife?

JASS:
            local real loc1z = GetLocationZ(Location(loc1x,loc1y)) + GetUnitFlyHeight(.caster) + HEIGHT
            local real loc2x = GetUnitX(.target)
            local real loc2y = GetUnitY(.target)
            local real loc2z = GetLocationZ(Location(loc2x,loc2y)) + GetUnitFlyHeight(.target) + HEIGHT

Location (x, y) returns a new location, so you've got 2 leaks there - store the locations in variables and clean them appropriately, or make a GetCoordZ function e.g.
JASS:
globals
  private location MoveLoc = Location (0, 0)
endglobals

function GetCoordZ takes real x, real y returns real
  call MoveLocation (MoveLoc, x, y)
  return GetLocationZ (MoveLoc)
endfunction

That way, you save yourself the hassle of constantly creating new locations, and no need to worry about leaks (since MoveLoc will only ever contain a reference to that one location)

I assume the code in the first post is up-to-date? If not, this post may be irrelevant ^.^
 

Nexor

...
Reaction score
74
Map update again ! :D

Thanks Flare for suggestions !
I changed the things you've mentioned. Hope now is good :)
 

Viikuna

No Marlo no game.
Reaction score
265
I remember this spell,.

I generally hate all textmacro stuff outside of system codes, you could have done this with a one extra function, but I guess it doesnt look that bad or unreadable, so whatever. ( But be careful not to go too far. This shows perfectly how terrible textmacro abusing can make your code look. )

But hey, you forget to remove this: [lJASS]local timer tim = CreateTimer()[/lJASS] from your action function.
 

Nexor

...
Reaction score
74
That system was the trigger I tried to learn the usage of T32 :D

Oh I found that unused timer, thanks.
Is this enough for this spell or needs another functions in it or something?
 
General chit-chat
Help Users

      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