--- a/hedgewars/HHHandlers.inc Tue Jun 28 17:12:09 2011 +0400
+++ b/hedgewars/HHHandlers.inc Tue Jun 28 21:28:13 2011 +0200
@@ -533,7 +533,13 @@
begin
Gear^.Message:= gmDestroy;
PlaySound(sndShotgunReload);
-if (Gear^.Pos and posCaseTrap) <> 0 then doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, HH^.Hedgehog, EXPLAutoSound)
+if (Gear^.Pos and posCaseExplode) <> 0 then
+ if (Gear^.Pos and posCasePoison) <> 0 then
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned)
+ else
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound)
+else if (Gear^.Pos and posCasePoison) <> 0 then
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, HH^.Hedgehog, EXPLAutoSound + EXPLPoisoned + EXPLNoDamage)
else
case Gear^.Pos of
posCaseUtility,
--- a/hedgewars/uConsts.pas Tue Jun 28 17:12:09 2011 +0400
+++ b/hedgewars/uConsts.pas Tue Jun 28 21:28:13 2011 +0200
@@ -260,7 +260,8 @@
posCaseHealth = $00000002;
posCaseUtility = $00000004;
posCaseDummy = $00000008;
- posCaseTrap = $00000010;
+ posCaseExplode = $00000010;
+ posCasePoison = $00000020;
NoPointX = Low(LongInt);
cTargetPointRef : TPoint = (X: NoPointX; Y: 0);
--- a/hedgewars/uGears.pas Tue Jun 28 17:12:09 2011 +0400
+++ b/hedgewars/uGears.pas Tue Jun 28 21:28:13 2011 +0200
@@ -39,7 +39,7 @@
procedure freeModule;
function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear;
function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword ): PGear;
-function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; trap: boolean ): PGear;
+function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean ): PGear;
procedure ResurrectHedgehog(gear: PGear);
procedure ProcessGears;
procedure EndTurnCleanup;
@@ -1685,13 +1685,14 @@
SpawnCustomCrateAt := FollowGear;
end;
-function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; trap: boolean): PGear;
+function SpawnFakeCrateAt(x, y: LongInt; crate: TCrateType; explode: boolean; poison: boolean): PGear;
begin
FollowGear := AddGear(x, y, gtCase, 0, _0, _0, 0);
cCaseFactor := 0;
+ FollowGear^.Pos := posCaseDummy;
- if trap then FollowGear^.Pos := posCaseTrap
- else FollowGear^.Pos := posCaseDummy;
+ if explode then FollowGear^.Pos := FollowGear^.Pos + posCaseExplode;
+ if poison then FollowGear^.Pos := FollowGear^.Pos + posCasePoison;
case crate of
HealthCrate: begin
--- a/hedgewars/uScript.pas Tue Jun 28 17:12:09 2011 +0400
+++ b/hedgewars/uScript.pas Tue Jun 28 21:28:13 2011 +0200
@@ -226,13 +226,13 @@
function lc_spawnfakehealthcrate(L: Plua_State) : LongInt; Cdecl;
var gear: PGear;
begin
- if lua_gettop(L) <> 3 then begin
+ if lua_gettop(L) <> 4 then begin
LuaError('Lua: Wrong number of parameters passed to SpawnFakeHealthCrate!');
lua_pushnil(L);
end
else begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
- HealthCrate, lua_toboolean(L, 3));
+ HealthCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
lua_pushinteger(L, gear^.uid);
end;
lc_spawnfakehealthcrate := 1;
@@ -241,13 +241,13 @@
function lc_spawnfakeammocrate(L: PLua_State): LongInt; Cdecl;
var gear: PGear;
begin
- if lua_gettop(L) <> 3 then begin
+ if lua_gettop(L) <> 4 then begin
LuaError('Lua: Wrong number of parameters passed to SpawnFakeAmmoCrate!');
lua_pushnil(L);
end
else begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
- AmmoCrate, lua_toboolean(L, 3));
+ AmmoCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
lua_pushinteger(L, gear^.uid);
end;
lc_spawnfakeammocrate := 1;
@@ -256,13 +256,13 @@
function lc_spawnfakeutilitycrate(L: PLua_State): LongInt; Cdecl;
var gear: PGear;
begin
- if lua_gettop(L) <> 3 then begin
+ if lua_gettop(L) <> 4 then begin
LuaError('Lua: Wrong number of parameters passed to SpawnFakeUtilityCrate!');
lua_pushnil(L);
end
else begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
- UtilityCrate, lua_toboolean(L, 3));
+ UtilityCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
lua_pushinteger(L, gear^.uid);
end;
lc_spawnfakeutilitycrate := 1;