# HG changeset patch # User sheepluva # Date 1439072373 -7200 # Node ID cd4b0851b060d6b3b8f14a02129167cb12f2bd37 # Parent 5a9dde74127ef210296ea2311178dc4b11ed47a8 Hammer changes/fixes: honor extra-damage (Issue 975), round up damage, do correct damage when being spammed in infinite-attack mode diff -r 5a9dde74127e -r cd4b0851b060 ChangeLog.txt --- a/ChangeLog.txt Fri Aug 07 07:30:14 2015 -0400 +++ b/ChangeLog.txt Sun Aug 09 00:19:33 2015 +0200 @@ -9,10 +9,12 @@ + Divided teams options will now just be ignored when more/less than 2 teams, instead of displaying a fatal error + Added 6 TechRacer maps to TechMaps + Added 3 SpeedShoppa Challenges: Shoppa Love, Ropes and Crates, The Customer is King + + Hammer damage is now rounded up. This means it can be used to execute hedgehogs with only 1 hp. + Improved "Art" theme. * Generated bridges/girders are now connected better to the land mass * Fixed rubberband sprite * The game will now fallback to default voicepack if a team's voicepack is not locally installed. (Instead of rendering team voiceless) + * Hammer now does more damage when the Extra-Damage utility is used * Many other bug fixes 0.9.20 -> 0.9.21: diff -r 5a9dde74127e -r cd4b0851b060 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Fri Aug 07 07:30:14 2015 -0400 +++ b/hedgewars/uGearsHandlersMess.pas Sun Aug 09 00:19:33 2015 +0200 @@ -5206,7 +5206,7 @@ procedure doStepHammer(Gear: PGear); var HHGear, tmp, tmp2: PGear; t: PGearArray; - i: LongInt; + i, dmg, d: LongInt; begin HHGear:= Gear^.Hedgehog^.Gear; HHGear^.State:= HHGear^.State or gstNoDamage; @@ -5227,7 +5227,25 @@ begin //tmp^.State:= tmp^.State or gstFlatened; if (tmp^.Kind <> gtHedgehog) or (tmp^.Hedgehog^.Effects[heInvulnerable] = 0) then - ApplyDamage(tmp, CurrentHedgehog, tmp^.Health div 3, dsUnknown); + begin + // do 1/2 current hp worth of damage if extra damage is enabled (1/3 damage if not) + if cDamageModifier > _1 then + d:= 2 + else + d:= 3; + // base damage on remaining health + dmg:= (tmp^.Health - tmp^.Damage); + if dmg > 0 then + begin + // always round up + if dmg mod d > 0 then + dmg:= dmg div d + 1 + else + dmg:= dmg div d; + + ApplyDamage(tmp, CurrentHedgehog, dmg, dsUnknown); + end; + end; //DrawTunnel(tmp^.X, tmp^.Y - _1, _0, _0_5, cHHRadius * 6, cHHRadius * 3); tmp2:= AddGear(hwRound(tmp^.X), hwRound(tmp^.Y), gtHammerHit, 0, _0, _0, 0); tmp2^.LinkedGear:= tmp;