Add rubber utility. Graphics are still incomplete. Also flag snow/ice in theme config.
--- a/QTfrontend/weapons.h Sun Dec 08 13:49:11 2013 -0500
+++ b/QTfrontend/weapons.h Sun Dec 08 16:04:40 2013 -0500
@@ -21,45 +21,45 @@
//skip---------------------------------|
//structure------------------------------------------------------------------|
-#define AMMOLINE_DEFAULT_QT "9391929422199121032235111001201000000211110101011111121"
-#define AMMOLINE_DEFAULT_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_DEFAULT_DELAY "0000000000000205500000040007004000000000220000000600020"
-#define AMMOLINE_DEFAULT_CRATE "1311110312111111123114111111111111111211111101111111121"
+#define AMMOLINE_DEFAULT_QT "93919294221991210322351110012010000002111101010111111211"
+#define AMMOLINE_DEFAULT_PROB "04050405416006555465544647765766666661555101011154111211"
+#define AMMOLINE_DEFAULT_DELAY "00000000000002055000000400070040000000002200000006000200"
+#define AMMOLINE_DEFAULT_CRATE "13111103121111111231141111111111111112111111011111111211"
-#define AMMOLINE_CRAZY_QT "9999999999999999992999999999999999299999999909999992999"
-#define AMMOLINE_CRAZY_PROB "1111110111111111111111111111111111111111111101111111111"
-#define AMMOLINE_CRAZY_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_CRAZY_CRATE "1311110312111111123114111111111111111211110101111111121"
+#define AMMOLINE_CRAZY_QT "99999999999999999929999999999999992999999999099999929999"
+#define AMMOLINE_CRAZY_PROB "11111101111111111111111111111111111111111111011111111111"
+#define AMMOLINE_CRAZY_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_CRAZY_CRATE "13111103121111111231141111111111111112111101011111111211"
-#define AMMOLINE_PROMODE_QT "9090009000000000000009000000000000000000000000000000000"
-#define AMMOLINE_PROMODE_PROB "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_PROMODE_DELAY "0000000000000205500000040007004000000000200000000000020"
-#define AMMOLINE_PROMODE_CRATE "1111110111111111111111111111111111111111100101111111121"
+#define AMMOLINE_PROMODE_QT "90900090000000000000090000000000000000000000000000000000"
+#define AMMOLINE_PROMODE_PROB "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_PROMODE_DELAY "00000000000002055000000400070040000000002000000000000200"
+#define AMMOLINE_PROMODE_CRATE "11111101111111111111111111111111111111111001011111111211"
-#define AMMOLINE_SHOPPA_QT "0000009900000000000000000000000000000000000000000000000"
-#define AMMOLINE_SHOPPA_PROB "4444410044244402210112121222422000000002000400010011001"
-#define AMMOLINE_SHOPPA_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_SHOPPA_CRATE "1111110111111111111111111111111111111111101101111111121"
+#define AMMOLINE_SHOPPA_QT "00000099000000000000000000000000000000000000000000000000"
+#define AMMOLINE_SHOPPA_PROB "44444100442444022101121212224220000000020004000100110010"
+#define AMMOLINE_SHOPPA_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_SHOPPA_CRATE "11111101111111111111111111111111111111111011011111111210"
-#define AMMOLINE_CLEAN_QT "1010009000010000011000000000000000000000000000001000000"
-#define AMMOLINE_CLEAN_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_CLEAN_DELAY "0000000000000000000000000000000000000000000000000000020"
-#define AMMOLINE_CLEAN_CRATE "1311110312111111123114111111111111111211111101111111121"
+#define AMMOLINE_CLEAN_QT "10100090000100000110000000000000000000000000000010000000"
+#define AMMOLINE_CLEAN_PROB "04050405416006555465544647765766666661555101011154111211"
+#define AMMOLINE_CLEAN_DELAY "00000000000000000000000000000000000000000000000000000200"
+#define AMMOLINE_CLEAN_CRATE "13111103121111111231141111111111111112111111011111111211"
-#define AMMOLINE_MINES_QT "0000009900090000000300000000000000000000000000000000000"
-#define AMMOLINE_MINES_PROB "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_MINES_DELAY "0000000000000205500000040007004000000000200000000600020"
-#define AMMOLINE_MINES_CRATE "1111110111111111111111111111111111111111111101111111121"
+#define AMMOLINE_MINES_QT "00000099000900000003000000000000000000000000000000000000"
+#define AMMOLINE_MINES_PROB "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_MINES_DELAY "00000000000002055000000400070040000000002000000006000200"
+#define AMMOLINE_MINES_CRATE "11111101111111111111111111111111111111111111011111111211"
-#define AMMOLINE_PORTALS_QT "9000009002000000002100000000000000110000090000000000000"
-#define AMMOLINE_PORTALS_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_PORTALS_DELAY "0000000000000205500000040007004000000000200000000600020"
-#define AMMOLINE_PORTALS_CRATE "1311110312111111123114111111111111111211111101111111121"
+#define AMMOLINE_PORTALS_QT "90000090020000000021000000000000001100000900000000000000"
+#define AMMOLINE_PORTALS_PROB "04050405416006555465544647765766666661555101011154111211"
+#define AMMOLINE_PORTALS_DELAY "00000000000002055000000400070040000000002000000006000200"
+#define AMMOLINE_PORTALS_CRATE "13111103121111111231141111111111111112111111011111111211"
-#define AMMOLINE_ONEEVERY_QT "1111119111111111111111111111111111111111111111111111111"
-#define AMMOLINE_ONEEVERY_PROB "1111110111111111111111111111111111111111111111111111111"
-#define AMMOLINE_ONEEVERY_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_ONEEVERY_CRATE "1111110111111111111111111111111111111111111111111111111"
+#define AMMOLINE_ONEEVERY_QT "11111191111111111111111111111111111111111111111111111111"
+#define AMMOLINE_ONEEVERY_PROB "11111101111111111111111111111111111111111111111111111111"
+#define AMMOLINE_ONEEVERY_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_ONEEVERY_CRATE "11111101111111111111111111111111111111111111111111111111"
//When adding new weapons also insert one element in cDefaultAmmos list (hwconsts.cpp.in)
--- a/hedgewars/uAIAmmoTests.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uAIAmmoTests.pas Sun Dec 08 16:04:40 2013 -0500
@@ -121,7 +121,8 @@
//(proc: nil; flags: 0), // amStructure
(proc: nil; flags: 0), // amLandGun
(proc: nil; flags: 0), // amIceGun
- (proc: nil; flags: 0) // amKnife
+ (proc: nil; flags: 0), // amKnife
+ (proc: nil; flags: 0) // amGirder
);
implementation
--- a/hedgewars/uGears.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uGears.pas Sun Dec 08 16:04:40 2013 -0500
@@ -624,7 +624,7 @@
snowRight:= max(LAND_WIDTH,4096)+512;
snowLeft:= -(snowRight-LAND_WIDTH);
-if (not hasBorder) and ((Theme = 'Snow') or (Theme = 'Christmas')) then
+if (not hasBorder) and cSnow then
for i:= vobCount * Longword(max(LAND_WIDTH,4096)) div 2048 downto 1 do
AddGear(LongInt(GetRandom(snowRight - snowLeft)) + snowLeft, LAND_HEIGHT + LongInt(GetRandom(750)) - 1300, gtFlake, 0, _0, _0, 0);
end;
--- a/hedgewars/uGearsHandlersMess.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uGearsHandlersMess.pas Sun Dec 08 16:04:40 2013 -0500
@@ -437,7 +437,7 @@
if ((xland or land) and lfBouncy <> 0) and
(((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) or
((Gear^.Radius >= 3) and
- ((Gear^.dX.QWordValue > _0_1.QWordValue) or (Gear^.dY.QWordValue > _0_1.QWordValue)))) then
+ ((Gear^.dX.QWordValue > _0_15.QWordValue) or (Gear^.dY.QWordValue > _0_15.QWordValue)))) then
PlaySound(sndMelonImpact, true)
else if (Gear^.nImpactSounds > 0) and
(Gear^.State and gstCollision <> 0) and
@@ -2470,6 +2470,7 @@
HHGear: PGear;
x, y, tx, ty: hwFloat;
rx: LongInt;
+ LandFlags: Word;
begin
AllInactive := false;
@@ -2480,12 +2481,16 @@
y := HHGear^.Y;
rx:= hwRound(x);
+ LandFlags:= 0;
+ if cIce then LandFlags:= lfIce
+ else if Gear^.AmmoType = amRubber then LandFlags:= lfBouncy;
+
if ((Distance(tx - x, ty - y) > _256) and ((WorldEdge <> weWrap) or
(
(Distance(tx - int2hwFloat(rightX+(rx-leftX)), ty - y) > _256) and
(Distance(tx - int2hwFloat(leftX-(rightX-rx)), ty - y) > _256)
)))
- or (not TryPlaceOnLand(Gear^.Target.X - SpritesData[sprAmGirder].Width div 2, Gear^.Target.Y - SpritesData[sprAmGirder].Height div 2, sprAmGirder, Gear^.State, true, false)) then
+ or (not TryPlaceOnLand(Gear^.Target.X - SpritesData[Ammoz[Gear^.AmmoType].PosSprite].Width div 2, Gear^.Target.Y - SpritesData[Ammoz[Gear^.AmmoType].PosSprite].Height div 2, Ammoz[Gear^.AmmoType].PosSprite, Gear^.State, true, false, LandFlags)) then
begin
PlaySound(sndDenied);
HHGear^.Message := HHGear^.Message and (not gmAttack);
--- a/hedgewars/uGearsHedgehog.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uGearsHedgehog.pas Sun Dec 08 16:04:40 2013 -0500
@@ -353,6 +353,10 @@
amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
+ amRubber: begin
+ newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
+ newGear^.AmmoType:= amRubber
+ end;
amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
amMortar: begin
--- a/hedgewars/uGearsRender.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uGearsRender.pas Sun Dec 08 16:04:40 2013 -0500
@@ -673,6 +673,7 @@
DrawSpriteRotated(sprHandPlane, hx, hy, sign, 0);
defaultPos:= false
end;
+ amRubber,
amGirder: begin
DrawSpriteRotated(sprHandConstruction, hx, hy, sign, aangle);
if WorldEdge = weWrap then
--- a/hedgewars/uLandGraphics.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uLandGraphics.pas Sun Dec 08 16:04:40 2013 -0500
@@ -47,7 +47,8 @@
procedure DrawThickLine(X1, Y1, X2, Y2, radius: LongInt; color: Longword);
procedure DumpLandToLog(x, y, r: LongInt);
procedure DrawIceBreak(x, y, iceRadius, iceHeight: Longint);
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean): boolean; inline;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean; LandFlags: Word): boolean;
implementation
uses SDLh, uLandTexture, uVariables, uUtils, uDebug;
@@ -585,7 +586,12 @@
UpdateLandTexture(tx, ddx, ty, ddy, false)
end;
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean): boolean; inline;
+begin
+TryPlaceOnLand:= TryPlaceOnLand(cpX, cpY, Obj, Frame, doPlace, indestructible, 0);
+end;
+
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean; LandFlags: Word): boolean;
var X, Y, bpp, h, w, row, col, gx, gy, numFramesFirstCol: LongInt;
p: PByteArray;
Image: PSDL_Surface;
@@ -650,15 +656,12 @@
gY:= (cpY + y) div 2;
end;
if indestructible then
- Land[cpY + y, cpX + x]:= lfIndestructible
+ Land[cpY + y, cpX + x]:= lfIndestructible or LandFlags
else if (LandPixels[gY, gX] and AMask) shr AShift = 255 then // This test assumes lfBasic and lfObject differ only graphically
- Land[cpY + y, cpX + x]:= lfBasic
+ Land[cpY + y, cpX + x]:= lfBasic or LandFlags
else
- Land[cpY + y, cpX + x]:= lfObject;
- // For testing only. Intent is to flag this on objects with masks, or use it for an ice ray gun
- if (Theme = 'Snow') or (Theme = 'Christmas') then
- Land[cpY + y, cpX + x]:= Land[cpY + y, cpX + x] or lfIce;
- LandPixels[gY, gX]:= PLongword(@(p^[x * 4]))^
+ Land[cpY + y, cpX + x]:= lfObject or LandFlags;
+ LandPixels[gY, gX]:= PLongword(@(p^[x * 4]))^
end;
p:= @(p^[Image^.pitch]);
end;
--- a/hedgewars/uLandObjects.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uLandObjects.pas Sun Dec 08 16:04:40 2013 -0500
@@ -26,7 +26,7 @@
procedure FreeLandObjects();
procedure LoadThemeConfig;
procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface); inline;
-procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word);
+procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word);
procedure BlitImageUsingMask(cpX, cpY: Longword; Image, Mask: PSDL_Surface);
procedure AddOnLandObjects(Surface: PSDL_Surface);
procedure SetLand(var LandWord: Word; Pixel: LongWord); inline;
@@ -95,7 +95,7 @@
BlitImageAndGenerateCollisionInfo(cpX, cpY, Width, Image, 0);
end;
-procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word);
+procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word);
var p: PLongwordArray;
x, y: Longword;
bpp: LongInt;
@@ -128,7 +128,7 @@
LandPixels[(cpY + y) div 2, (cpX + x) div 2]:= p^[x];
if (Land[cpY + y, cpX + x] <= lfAllObjMask) and ((p^[x] and AMask) <> 0) then
- Land[cpY + y, cpX + x]:= lfObject or extraFlags
+ Land[cpY + y, cpX + x]:= lfObject or LandFlags
end;
p:= @(p^[Image^.pitch shr 2])
end;
@@ -277,8 +277,7 @@
rr.x:= x1;
while rr.x < x2 do
begin
- // I should theme flag this. also snow...
- if (Theme = 'Snow') or (Theme = 'Christmas') then
+ if cIce then
BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf, lfIce)
else
BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf);
@@ -706,6 +705,10 @@
cFlattenFlakes:= true
else if key = 'flatten-clouds' then
cFlattenClouds:= true
+ else if key = 'ice' then
+ cIce:= true
+ else if key = 'snow' then
+ cSnow:= true
else if key = 'sd-water-top' then
begin
i:= Pos(',', s);
--- a/hedgewars/uStore.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uStore.pas Sun Dec 08 16:04:40 2013 -0500
@@ -330,7 +330,7 @@
if (((cReducedQuality and (rqNoBackground or rqLowRes)) = 0) or // why rqLowRes?
(not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]))) and
(((cReducedQuality and rqPlainSplash) = 0) or ((not (ii in [sprSplash, sprDroplet, sprSDSplash, sprSDDroplet])))) and
- (((cReducedQuality and rqKillFlakes) = 0) or (Theme = 'Snow') or (Theme = 'Christmas') or ((not (ii in [sprFlake, sprSDFlake])))) and
+ (((cReducedQuality and rqKillFlakes) = 0) or cSnow or ((not (ii in [sprFlake, sprSDFlake])))) and
((cCloudsNumber > 0) or (ii <> sprCloud)) and
((vobCount > 0) or (ii <> sprFlake)) then
begin
--- a/hedgewars/uTypes.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uTypes.pas Sun Dec 08 16:04:40 2013 -0500
@@ -86,7 +86,7 @@
sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
sprBulletHit, sprSnowball, sprHandSnowball, sprSnow,
sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis,
- sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog
+ sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog, sprAmRubber
);
// Gears that interact with other Gears and/or Land
@@ -152,7 +152,7 @@
amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35
amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42
amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48
- amResurrector, amDrillStrike, amSnowball, amTardis, {amStructure,} amLandGun, amIceGun, amKnife); // 54
+ amResurrector, amDrillStrike, amSnowball, amTardis, {amStructure,} amLandGun, amIceGun, amKnife, amRubber); // 56
// Different kind of crates that e.g. hedgehogs can pick up
TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
@@ -433,7 +433,7 @@
sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb,
sidSineGun, sidFlamethrower,sidSMine, sidHammer, sidResurrector,
sidDrillStrike, sidSnowball, sidNothing, sidTardis,
- {sidStructure,} sidLandGun, sidIceGun, sidKnife);
+ {sidStructure,} sidLandGun, sidIceGun, sidKnife, sidRubber);
TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
--- a/hedgewars/uVariables.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uVariables.pas Sun Dec 08 16:04:40 2013 -0500
@@ -46,6 +46,9 @@
cShowFPS : boolean;
cFlattenFlakes : boolean;
cFlattenClouds : boolean;
+ cIce : boolean;
+ cSnow : boolean;
+
cAltDamage : boolean;
cReducedQuality : LongWord;
UserNick : shortstring;
@@ -679,7 +682,9 @@
(FileName: 'amIceGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 32; Height: 32; imageWidth: 32; imageHeight: 32; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprIceGun
(FileName: 'amFrozenHog'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprFrozenHog
+ Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprFrozenHog
+ (FileName: 'amRubber'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
+ Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprAmRubber
);
const
@@ -1872,7 +1877,7 @@
AmmoType: amPortalGun;
AttackVoice: sndNone;
Bounciness: 1000);
- Slot: 6;
+ Slot: 7;
TimeAfterTurn: 0;
minAngle: 0;
maxAngle: 0;
@@ -2137,7 +2142,7 @@
AmmoType: amTardis;
AttackVoice: sndNone;
Bounciness: 1000);
- Slot: 7;
+ Slot: 8;
TimeAfterTurn: 0;
minAngle: 0;
maxAngle: 0;
@@ -2250,6 +2255,33 @@
PosCount: 1;
PosSprite: sprWater;
ejectX: 0;
+ ejectY: 0),
+// Rubber
+ (NameId: sidRubber;
+ NameTex: nil;
+ Probability: 150;
+ NumberInCase: 1;
+ Ammo: (Propz: ammoprop_NoRoundEnd or
+ ammoprop_NoCrosshair or
+ ammoprop_NeedTarget or
+ ammoprop_Utility or
+ ammoprop_AttackingPut;
+ Count: 1;
+ NumPerTurn: 0;
+ Timer: 0;
+ Pos: 0;
+ AmmoType: amRubber;
+ AttackVoice: sndNone;
+ Bounciness: 1000);
+ Slot: 6;
+ TimeAfterTurn: 3000;
+ minAngle: 0;
+ maxAngle: 0;
+ isDamaging: false;
+ SkipTurns: 0;
+ PosCount: 4;
+ PosSprite: sprAmRubber;
+ ejectX: 0;
ejectY: 0)
);
@@ -2388,6 +2420,8 @@
cFlattenFlakes := false;
cFlattenClouds := false;
+ cIce := false;
+ cSnow := false;
lastVisualGearByUID := nil;
lastGearByUID := nil;
cReadyDelay := 5000;
--- a/hedgewars/uVisualGears.pas Sun Dec 08 13:49:11 2013 -0500
+++ b/hedgewars/uVisualGears.pas Sun Dec 08 16:04:40 2013 -0500
@@ -487,7 +487,7 @@
if (cReducedQuality and rqKillFlakes) <> 0 then
exit;
-if hasBorder or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+if hasBorder or (not cSnow) then
for i:= 0 to Pred(vobCount * cScreenSpace div 4096) do
AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
else
@@ -515,7 +515,7 @@
end
else vg:= vg^.NextGear;
end;
-if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+if hasBorder or (not cSnow) then
for i:= 0 to Pred(vobSDCount * cScreenSpace div 4096) do
AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
else
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed
Binary file share/hedgewars/Data/Graphics/amRubber.png has changed
--- a/share/hedgewars/Data/Locale/en.txt Sun Dec 08 13:49:11 2013 -0500
+++ b/share/hedgewars/Data/Locale/en.txt Sun Dec 08 16:04:40 2013 -0500
@@ -58,6 +58,7 @@
00:54=Land Spray
00:55=Freezer
00:56=Cleaver
+00:57=Rubber
01:00=Let's fight!
01:01=Round draw
--- a/share/hedgewars/Data/Themes/Christmas/theme.cfg Sun Dec 08 13:49:11 2013 -0500
+++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Sun Dec 08 16:04:40 2013 -0500
@@ -14,3 +14,5 @@
spray = holly, 4
spray = holly2, 4
flakes = 100, 3, 99999999, 100, 300
+ice = yes
+snow = yes
--- a/share/hedgewars/Data/Themes/Snow/theme.cfg Sun Dec 08 13:49:11 2013 -0500
+++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Sun Dec 08 16:04:40 2013 -0500
@@ -10,3 +10,5 @@
object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60
object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60
flakes = 100, 3, 99999999, 100, 300
+ice = yes
+snow = yes