# HG changeset patch # User mbait # Date 1269680350 0 # Node ID 5fe9c4ac4c9962f87f60c7d8f4a39e48bc0210f8 # Parent cc13b42ab593b27dc90b23a759ca27446cebbf78 Added poisoned eggs diff -r cc13b42ab593 -r 5fe9c4ac4c99 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sat Mar 27 05:45:45 2010 +0000 +++ b/hedgewars/GSHandlers.inc Sat Mar 27 08:59:10 2010 +0000 @@ -2909,7 +2909,7 @@ doStepFallingGear(Gear); if (Gear^.State and gstCollision) <> 0 then begin - doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound); + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound + EXPLPoisoned); DeleteGear(Gear); exit end; diff -r cc13b42ab593 -r 5fe9c4ac4c99 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Sat Mar 27 05:45:45 2010 +0000 +++ b/hedgewars/HHHandlers.inc Sat Mar 27 08:59:10 2010 +0000 @@ -336,6 +336,7 @@ end; posCaseHealth: begin inc(HH^.Health, Gear^.Health); + PHedgehog(HH^.Hedgehog)^.Poisoned := false; str(Gear^.Health, s); s:= '+' + s; AddCaption(s, PHedgehog(HH^.Hedgehog)^.Team^.Clan^.Color, capgrpAmmoinfo); diff -r cc13b42ab593 -r 5fe9c4ac4c99 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sat Mar 27 05:45:45 2010 +0000 +++ b/hedgewars/uGears.pas Sat Mar 27 08:59:10 2010 +0000 @@ -580,27 +580,32 @@ i: LongWord; flag: Boolean; begin -Gear:= GearsList; + Gear:= GearsList; -while Gear <> nil do - begin - if Gear^.Kind = gtHedgehog then - begin - inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage))); - if PHedgehog(Gear^.Hedgehog)^.King then - begin - flag:= false; - team:= PHedgehog(Gear^.Hedgehog)^.Team; - for i:= 0 to Pred(team^.HedgehogsNumber) do - if (team^.Hedgehogs[i].Gear <> nil) and - (not team^.Hedgehogs[i].King) and - (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) then flag:= true; - if not flag then inc(Gear^.Damage, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))) - end - end; + while Gear <> nil do + begin + if Gear^.Kind = gtHedgehog then + begin + if PHedgehog(Gear^.Hedgehog)^.Poisoned then + inc(Gear^.Damage, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))); + inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage))); + if PHedgehog(Gear^.Hedgehog)^.King then + begin + flag:= false; + team:= PHedgehog(Gear^.Hedgehog)^.Team; + for i:= 0 to Pred(team^.HedgehogsNumber) do + if (team^.Hedgehogs[i].Gear <> nil) and + (not team^.Hedgehogs[i].King) and + (team^.Hedgehogs[i].Gear^.Health > team^.Hedgehogs[i].Gear^.Damage) + then begin + flag:= true; + end; + if not flag then inc(Gear^.Damage, min(5, max(0,Gear^.Health - 1 - Gear^.Damage))) + end; + end; - Gear:= Gear^.NextGear - end; + Gear:= Gear^.NextGear + end; end; procedure ProcessGears; @@ -1815,8 +1820,12 @@ Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner); Gear^.Active:= true; FollowGear:= Gear - end - end + end; + + if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) then + PHedgehog(Gear^.Hedgehog)^.Poisoned := true; + end; + end; gtGrave: begin // Run the calcs only once we know we have a type that will need damage diff -r cc13b42ab593 -r 5fe9c4ac4c99 hedgewars/uTeams.pas --- a/hedgewars/uTeams.pas Sat Mar 27 05:45:45 2010 +0000 +++ b/hedgewars/uTeams.pas Sat Mar 27 08:59:10 2010 +0000 @@ -55,7 +55,7 @@ King: boolean; // Flag for a bunch of hedgehog attributes Unplaced: boolean; // Flag for hog placing mode Timer: Longword; - Poisoned: boolean; + Poisoned: boolean; end; TTeam = record @@ -365,6 +365,7 @@ begin Hedgehogs[0].King:= true; Hedgehogs[0].Hat:= 'crown'; + Hedgehogs[0].Poisoned := false; h:= Hedgehogs[0].Gear^.Health; Hedgehogs[0].Gear^.Health:= hwRound(int2hwFloat(th)*_0_375); if Hedgehogs[0].Gear^.Health > h then