# Making damage per 1 second, using T32

#### shiFt

##### Member
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
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.

#### shiFt

##### Member
what would dealing my damage amount * T32 Period do?

#### jrhetf4xb

##### Member
Just do tick counting ...

JASS:
``````struct Data
{
integer ticks;

private  method periodic()
{
this.ticks -= 1;
if (this.ticks &lt;= 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() -&gt; 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
>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
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
Staff member
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
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
>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
Staff member
> 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
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:
Friday Yay!
• mgarcia:
did you guys catch Carl's interview? https://www.youtube.com/watch?v=kuHiMXABkGs
• mgarcia:
he's the one that informed me about the DVD's working!
• mgarcia:
he also mentioned the progress on the controllers!
• The Helper:
I did actually it was cool to see the NUON mention
• The Helper:
https://discord.com/channels/985377399338332202/985377399950696481 you can still use this chat too we are two fisted now
• thewrongvine:
costs me \$80 to fill gas tank sad face
• Ghan:
Oof
• The Helper:
Yeah that gas is some expensive stuff
• The Helper:
ghan does not have to worry about it he has a tesla and I have a small tank so it does not cost me usually more than 50
• The Helper:
fyi Ghan we are getting an error trying to access stats or world editor tutorials Error 526 Ray ID: 72128c6bf99f6707 • 2022-06-26 02:35:15 UTCInvalid SSL certificate
• Ghan:
An artifact of switching to Cloudflare... the Let's Encrypt certs can't autorenew through Cloudflare.
• Ghan:
I got the forum updated before things expired but there were some other casualties.
• Ghan:
Everything should be fixed now....
• The Helper:
Thank you Ghan!
• The Helper:
Happy Monday!
• The Helper:
new NUON forum mod cubanral!
+1
• The Helper:
• tom_mai78101:
Started learning how to make tools-assisted speedruns, so I'm lately busy.
• tom_mai78101:
Here's my current project.
+3
that was pretty good!
• jonas:
really cool! I saw the game before but always thought it's just a half as good double dragon. Now I realize it actually has a lot of depth!
• The Helper:
I just saw a bunch of running and jumping past all the enemies look like it was scripted as he said I guess I should have watched the whole thing. I only got a couple of minutes in. You should post that video in the forum Tom
• Darthfett:
"Hi in the chat!"
+2
• tom_mai78101:
Currently busy with making the run even better, so I'll post that new one once I'm done. Right now, I had to modify the emulator itself, the tools that makes this video, and some RAM address disassembling / reverse-engineering to get the right values, and such.
+1