Talk:Flaming
Rounding for %-based brands
Simple question. How is the damage for flaming/freezing/etc. calculated? Because if it truncates, it makes quickblade of flaming worse than an executioner's axe of freezing. Hordes (talk) 07:19, 27 November 2023 (CET)
- Start at apply_damage_brand() in attack.cc, and check for
case SPWPN_FLAMING:
. It has a call to calc_elemental_brand_damage() there, which doesspecial_damage = resist_adjust_damage(defender, flavour, random2(damage_done) / 2 + 1);
, which is flaming's +0-50% damage. Then there's a check for the target's resists in resist_adjust_damage(), and so on and so forth. Ge0ff (talk) 17:32, 27 November 2023 (CET)
- "it makes quickblade of flaming worse than an executioner's axe of freezing" This makes no practical sense, regardless of how the game calculates weapon damage. Ge0ff (talk) 17:36, 27 November 2023 (CET)
- Re: "it makes quickblade of flaming worse than an executioner's axe of freezing", that meant something along the lines of "do quickblades receive a less than an avg. 25% boost from the flaming brand?" a.k.a "is flaming on a quickblade a smaller % boost than flaming on an exe's axe?".
- E.g. say the game rolled a number from 1/100 to 50/100, multiplied it, then rounded down. If you got 25/100, a given quickblade swing might go from 7 -> 8 (14% boost) while a similar executioner's axe swing might go from 19 -> 23 (+21% boost). Therefore, short blades would get a smaller % boost. This would make a practical difference, or at least, enough to be worth noting on here.
- But with the code provided, I don't think the rounding problem I presented is a problem - assuming no resistances.
- A QB that dealt 7 damage would have a range of {0,1,2,3,4,5,6} from the random2 function.
- C++ defaults to round down, and resist_adjust_damage() doesn't have any special rounding that I found. So random2(7)/2 + 1 would be rounded down. This gives a range of {0,0,1,1,2,2,3} + 1
- Average damage is (0+0+1+1+2+2+3)/7 + 1 = 1.286 + 1 = 2.286. Then, 2.286 (added damage) / 7 (base damage) = +32.65% damage on average.
- Maybe this is worth mentioning? Hordes (talk) 18:45, 27 November 2023 (CET)
- But with the code provided, I don't think the rounding problem I presented is a problem - assuming no resistances.