Making damage per 1 second, using T32

shiFt

Member
Reaction score
8
Ive made an immolation spell using T32, but im struggling on dealing the damage per second rather than the T32 PERIOD, How do I do this?
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
Never really used it but I think T32 has a hardcoded period of 0.03125.

Well not really hardcoded but:

"// =Cons=
// - Only allows one period.
"

>How do I do this?

Well if you can use T32 then you can surely use some other timer [recycling] system or just
simple create timer + attach stuff to timer + detach stuff from timer + destroy timer combo.
 

jrhetf4xb

Member
Reaction score
12
Just do tick counting ...

JASS:
struct Data
{
    integer ticks;

    private  method periodic()
    {
        this.ticks -= 1;
        if (this.ticks <= 0) 
        {
            // Do all your damage stuff and reset ticks
            this.ticks = R2I(1. / T32_PERIOD); // or just 32 with 0.03125 period
        }

    }

    static method create() -> thistype
    {
        thistype this = thistype.allocate();
        this.ticks = R2I(1. / T32_PERIOD); // 32 ticks per sec
        this.startPeriodic();
    }
}



In other words, just use an integer with a value of 1/T32_PERIOD and subtract 1 every period until it reaches 0 (when 1 second has passed).
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
>Just do tick counting ...

This may sound nuts but 32 function calls + 32 comparisons + 32 subtractions per second maybe kinda inefficient compared to 1 function call per second.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
I am just saying that it's kinda ironic that systems designed for speed actually makes the mapper to write code bloat.
 

Romek

Super Moderator
Reaction score
963
How about dealing [ljass]DAMAGE * T32_PERIOD[/ljass] every time the timer expires?
The health of the unit would decrease much smoother too.

> I am just saying that it's kinda ironic that systems designed for speed actually makes the mapper to write code bloat.
If you don't need a timer running at such a high frequency, don't use a system that's optimized for doing exactly that. If you need a lower frequency timer, there are plenty of other systems out there (such as TimerUtils) that'll do just that, very efficiently.
 

Sevion

The DIY Ninja
Reaction score
424
How about dealing [ljass]DAMAGE * T32_PERIOD[/ljass] every time the timer expires?
The health of the unit would decrease much smoother too.

This.

Makes no sense doing it any other way unless you WANT it to suddenly do that damage every second.

Every T32_PERIOD would be much smoother.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
>How about dealing DAMAGE * T32_PERIOD every time the timer expires?
The health of the unit would decrease much smoother too.

Yeah Good point:

So it is now less efficient and to the player watching the units life dropping that fast would be jaw dropping.

Also note that in the worst case instead of the unit surviving for 0.96875 more seconds and being able to be saved by the player's quick reactions the unit dies and brings frustration to the player making him shout `imba` etc..
 

Romek

Super Moderator
Reaction score
963
> So it is now less efficient and to the player watching the units life dropping that fast would be jaw dropping.
It would drop at exactly the same rate:
If [ljass]DAMAGE[/ljass] is in health/second, then dealing [ljass]DAMAGE[/ljass] damage every second would have the same effect as dealing [ljass]DAMAGE * 0.03125[/ljass] damage every 0.03125 seconds, just the latter would be smoother. T32_PERIOD is 0.03125 by default, though it can be changed.

Once again, if you think that dealing damage at such a high frequency is inefficient, then don't deal damage at such a high frequency. It's really that simple.
 

shiFt

Member
Reaction score
8
Thanks for explaining Romek, I just thought the smooth damage dealing would raise questions by players as to if the ability is really doing the described damage.
 
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