--- a/hedgewars/GSHandlers.inc Sat Sep 20 04:51:06 2008 +0000
+++ b/hedgewars/GSHandlers.inc Mon Sep 22 22:14:01 2008 +0000
@@ -1696,9 +1696,34 @@
end;
////////////////////////////////////////////////////////////////////////////////
-procedure doStepSeduction(Gear: PGear);
+procedure doStepSeductionWork(Gear: PGear);
+var x, y: LongInt;
begin
AllInactive:= false;
-DeleteGear(Gear);
+
+Gear^.X:= Gear^.X + Gear^.dX;
+Gear^.Y:= Gear^.Y + Gear^.dY;
+x:= hwRound(Gear^.X);
+y:= hwRound(Gear^.Y);
+if ((y and $FFFFFC00) = 0) and ((x and $FFFFF800) = 0) then
+ if (Land[y, x] <> 0) then
+ begin
+ Gear^.dX.isNegative:= not Gear^.dX.isNegative;
+ Gear^.dY.isNegative:= not Gear^.dY.isNegative;
+ Gear^.dY:= Gear^.dY - _0_2;
+ AmmoShove(Gear, 0, 40);
+ DeleteGear(Gear)
+ end
+ else
+else
+ DeleteGear(Gear)
end;
+
+procedure doStepSeduction(Gear: PGear);
+var x, y: LongInt;
+begin
+AllInactive:= false;
+DeleteCI(PHedgehog(Gear^.Hedgehog)^.Gear);
+Gear^.doStep:= @doStepSeductionWork
+end;
--- a/hedgewars/HHHandlers.inc Sat Sep 20 04:51:06 2008 +0000
+++ b/hedgewars/HHHandlers.inc Mon Sep 22 22:14:01 2008 +0000
@@ -166,7 +166,7 @@
CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 3, hwRound(Y), gtCake, 0, xx, _0, 0);
PlaySound(sndLaugh, false)
end;
- amSeduction: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtSeduction, 0, xx, yy, 0);
+ amSeduction: FollowGear:= AddGear(hwRound(X + xx * cHHRadius * 2), hwRound(Y + yy * cHHRadius * 2), gtSeduction, 0, xx * _0_5, yy * _0_5, 0);
amWatermelon: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtWatermelon, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer);
amHellishBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtHellishBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 5000);
end;
--- a/hedgewars/uConsts.pas Sat Sep 20 04:51:06 2008 +0000
+++ b/hedgewars/uConsts.pas Mon Sep 22 22:14:01 2008 +0000
@@ -48,7 +48,7 @@
sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave,
sprHurrah, sprLemonade, sprExplPart, sprExplPart2,
sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon,
- sprEvilTrace, sprHellishBomb);
+ sprEvilTrace, sprHellishBomb, sprSeduction);
TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag,
gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope,
@@ -435,7 +435,9 @@
(FileName: 'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 32; Height: 32; saveSurf: false),// sprEvilTrace
(FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 16; Height: 16; saveSurf: false) // sprHellishBomb
+ Width: 16; Height: 16; saveSurf: false),// sprHellishBomb
+ (FileName: 'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+ Width: 16; Height: 16; saveSurf: false) // sprSeduction
);
Wavez: array [TWave] of record
@@ -995,9 +997,7 @@
NameTex: nil;
Probability: 100;
NumberInCase: 1;
- Ammo: (Propz: ammoprop_ForwMsgs or
- ammoprop_NoCrosshair or
- ammoprop_DontHold;
+ Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
Count: 1;
NumPerTurn: 0;
Timer: 0;
--- a/hedgewars/uGears.pas Sat Sep 20 04:51:06 2008 +0000
+++ b/hedgewars/uGears.pas Mon Sep 22 22:14:01 2008 +0000
@@ -1096,6 +1096,7 @@
DrawRotatedf(sprCakeWalk, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle + hwSign(Gear^.dX) * 90)
else
DrawRotatedf(sprCakeDown, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 5 - Gear^.Pos, hwSign(Gear^.dX), 0);
+ gtSeduction: DrawSprite(sprSeduction, hwRound(Gear^.X) - 8 + WorldDx, hwRound(Gear^.Y) - 8 + WorldDy, 0);
gtWatermelon: DrawRotatedf(sprWatermelon, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 0, Gear^.DirAngle);
gtMelonPiece: DrawRotatedf(sprWatermelon, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 1, 0, Gear^.DirAngle);
gtHellishBomb: DrawRotated(sprHellishBomb, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle);
@@ -1237,7 +1238,7 @@
gtCase: begin
inc(t^.ar[i]^.Damage, Damage);
- if t^.ar[i]^.Kind = gtHedgehog then
+ if (t^.ar[i]^.Kind = gtHedgehog) and (Damage > 0) then
AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, t^.ar[i]);
DeleteCI(t^.ar[i]);
Binary file share/hedgewars/Data/Graphics/Seduction.png has changed
--- a/share/hedgewars/Data/Locale/it.txt Sat Sep 20 04:51:06 2008 +0000
+++ b/share/hedgewars/Data/Locale/it.txt Mon Sep 22 22:14:01 2008 +0000
@@ -27,7 +27,7 @@
00:24=Torta
00:25=Seduzione
00:26=Bomba anguria
-00:27=Granata a mano infernale
+00:27=Granata infernale
01:00=Combattiamo!
01:01=Round in paritÃ
@@ -40,3 +40,4 @@
+