# HG changeset patch # User Henek # Date 1309289293 -7200 # Node ID ff7ecf483759b9c44134d13d6fdaba378c85c952 # Parent 6963e37f2dd2fa3f5de44d776691f5a241678f66 fake crates now with complementary poison diff -r 6963e37f2dd2 -r ff7ecf483759 hedgewars/HHHandlers.inc --- 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, diff -r 6963e37f2dd2 -r ff7ecf483759 hedgewars/uConsts.pas --- 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); diff -r 6963e37f2dd2 -r ff7ecf483759 hedgewars/uGears.pas --- 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 diff -r 6963e37f2dd2 -r ff7ecf483759 hedgewars/uScript.pas --- 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;