Matemeo
New Member
- Reaction score
- 20
I took Chocobo's damage system, and rewrote it in JASS, to suit the needs of my map, however, I came across an odd error/bug =/ Here's the trigger.
What the trigger does is simple. After a unit gets damaged, its supposed to store that damage in a variable called DamageDone, then, if the damaging unit has a buff called 'arcane energy' then it rolls from 1-100, and stores the number in a variable called RandomChance. If the variable is equal to or less ten 15 then, it'll 'crit'. (15%chance) If it doesn't land between 1-15 then it'll just carry through to displaying the damage done. If it does crit, then it finds the difference between the original damage, and the extra damage, storing it in a variable called extra damage. Later it lowers enemy hp by extra damage, iin case it crits. However, for some reason, the text tag only appears when I crit, if I dont crit, then it won't show up.
I thought I had it written out right, but it seems I don't, if anyone can offer some insight, thanks in advance.
PS (Dont yell at me about my terrible programming style ) Thanks.
-matemeo
JASS:
function Trig_Show_Damages_Actions takes nothing returns nothing
local real DamageDone
local real RandomChance
local real ExtraDamage
set udg_loc = GetUnitLoc(GetTriggerUnit())
set DamageDone = (GetEventDamage())
if UnitHasBuffBJ(GetEventDamageSource(),039;B000039;) == true then
set RandomChance = GetRandomInt(1,100)
if RandomChance <= 15 then
set ExtraDamage = (GetEventDamage())
set DamageDone = (GetEventDamage() * 1.5)
set ExtraDamage = (DamageDone - ExtraDamage)
else
set DamageDone = (GetEventDamage())
endif
endif
call SetUnitLifeBJ( GetTriggerUnit(), GetUnitStateSwap(UNIT_STATE_LIFE, GetTriggerUnit()) - ExtraDamage )
if RandomChance <= 15 then
call CreateTextTagLocBJ(( I2S(R2I(DamageDone)) ), udg_loc, 0, 15, 100, 0, 0, 0 )
else
call CreateTextTagLocBJ((I2S(R2I(DamageDone))), udg_loc,0,10,100,100,100,0)
endif
call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 15.00, 90 )
call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 3.00 )
call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 1.00 )
endfunction
//===========================================================================
function InitTrig_Show_Damages takes nothing returns nothing
set gg_trg_Show_Damages = CreateTrigger( )
call TriggerAddAction( gg_trg_Show_Damages, function Trig_Show_Damages_Actions )
endfunction
What the trigger does is simple. After a unit gets damaged, its supposed to store that damage in a variable called DamageDone, then, if the damaging unit has a buff called 'arcane energy' then it rolls from 1-100, and stores the number in a variable called RandomChance. If the variable is equal to or less ten 15 then, it'll 'crit'. (15%chance) If it doesn't land between 1-15 then it'll just carry through to displaying the damage done. If it does crit, then it finds the difference between the original damage, and the extra damage, storing it in a variable called extra damage. Later it lowers enemy hp by extra damage, iin case it crits. However, for some reason, the text tag only appears when I crit, if I dont crit, then it won't show up.
I thought I had it written out right, but it seems I don't, if anyone can offer some insight, thanks in advance.
PS (Dont yell at me about my terrible programming style ) Thanks.
-matemeo