# HG changeset patch # User Wuzzy # Date 1491680628 -7200 # Node ID 71c47122fbc0de1b67d6a0c0c2e292e80d977571 # Parent de9144250c37230b0b6153e1a1349e3465990cc2 Add ammotype amDuck for rubber duck Still needs some tweaking (eject position, ammo menu slot) diff -r de9144250c37 -r 71c47122fbc0 QTfrontend/weapons.h --- a/QTfrontend/weapons.h Sat Apr 08 18:36:12 2017 +0200 +++ b/QTfrontend/weapons.h Sat Apr 08 21:43:48 2017 +0200 @@ -16,10 +16,10 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#define AMMOLINE_EMPTY_QT "000000900000000000000000000000000000000000000000000000000" -#define AMMOLINE_EMPTY_PROB "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_EMPTY_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_EMPTY_CRATE "131111031211111112311411111111111111121111111111111111111" +#define AMMOLINE_EMPTY_QT "0000009000000000000000000000000000000000000000000000000000" +#define AMMOLINE_EMPTY_PROB "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_EMPTY_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_EMPTY_CRATE "1311110312111111123114111111111111111211111111111111111111" /* AmmoType lookup table (use monospace font / cursor movements) @@ -81,63 +81,60 @@ amKnife-------------------------------------------------------------------------------| amRubber-------------------------------------------------------------------------------| amAirMine-------------------------------------------------------------------------------| + amDuck-----------------------------------------------------------------------------------| */ -#define AMMOLINE_DEFAULT_QT "939192942219912103223511100120000000021110010101111100010" -#define AMMOLINE_DEFAULT_PROB "040504054160065554655446477657666666615551010111541111111" -#define AMMOLINE_DEFAULT_DELAY "000000000000020550000004000700400000000022000000060002000" -#define AMMOLINE_DEFAULT_CRATE "131111031211111112311411111111111111121111111111111111111" +#define AMMOLINE_DEFAULT_QT "9391929422199121032235111001200000000211100101011111000102" +#define AMMOLINE_DEFAULT_PROB "0405040541600655546554464776576666666155510101115411111114" +#define AMMOLINE_DEFAULT_DELAY "0000000000000205500000040007004000000000220000000600020000" +#define AMMOLINE_DEFAULT_CRATE "1311110312111111123114111111111111111211111111111111111111" -#define AMMOLINE_CRAZY_QT "999999999999999999299999999999999929999999999999999299919" -#define AMMOLINE_CRAZY_PROB "111111011111111111111111111111111111111111111111111111111" -#define AMMOLINE_CRAZY_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_CRAZY_CRATE "131111031211111112311411111111111111121111111111111111111" +#define AMMOLINE_CRAZY_QT "9999999999999999992999999999999999299999999999999992999199" +#define AMMOLINE_CRAZY_PROB "1111110111111111111111111111111111111111111111111111111111" +#define AMMOLINE_CRAZY_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_CRAZY_CRATE "1311110312111111123114111111111111111211111111111111111111" -#define AMMOLINE_PROMODE_QT "909000900000000000000900000000000000000000000000000000000" -#define AMMOLINE_PROMODE_PROB "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_PROMODE_DELAY "000000000000020550000004000700400000000020000000000002000" -#define AMMOLINE_PROMODE_CRATE "111111011111111111111111111111111111111111111111111111111" +#define AMMOLINE_PROMODE_QT "9090009000000000000009000000000000000000000000000000000000" +#define AMMOLINE_PROMODE_PROB "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_PROMODE_DELAY "0000000000000205500000040007004000000000200000000000020000" +#define AMMOLINE_PROMODE_CRATE "1111110111111111111111111111111111111111111111111111111111" -#define AMMOLINE_SHOPPA_QT "000000990000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPA_PROB "444441004424440221011212122242200000000200040001001100101" -#define AMMOLINE_SHOPPA_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPA_CRATE "111111011111111111111111111111111111111111111111111111111" +#define AMMOLINE_SHOPPA_QT "0000009900000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPA_PROB "4444410044244402210112121222422000000002000400010011001011" +#define AMMOLINE_SHOPPA_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPA_CRATE "1111110111111111111111111111111111111111111111111111111111" -#define AMMOLINE_CLEAN_QT "101000900001000001100000000000000000000000000000100000000" -#define AMMOLINE_CLEAN_PROB "040504054160065554655446477657666666615551010111541112111" -#define AMMOLINE_CLEAN_DELAY "000000000000000000000000000000000000000000000000000002000" -#define AMMOLINE_CLEAN_CRATE "131111031211111112311411111111111111121111111111111111111" +#define AMMOLINE_CLEAN_QT "1010009000010000011000000000000000000000000000001000000000" +#define AMMOLINE_CLEAN_PROB "0405040541600655546554464776576666666155510101115411121114" +#define AMMOLINE_CLEAN_DELAY "0000000000000000000000000000000000000000000000000000020000" +#define AMMOLINE_CLEAN_CRATE "1311110312111111123114111111111111111211111111111111111111" -#define AMMOLINE_MINES_QT "000000990009000000030000000000000000000000000000000000000" -#define AMMOLINE_MINES_PROB "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_MINES_DELAY "000000000000020550000004000700400000000020000000060002000" -#define AMMOLINE_MINES_CRATE "111111011111111111111111111111111111111111111111111111111" +#define AMMOLINE_MINES_QT "0000009900090000000300000000000000000000000000000000000000" +#define AMMOLINE_MINES_PROB "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_MINES_DELAY "0000000000000205500000040007004000000000200000000600020000" +#define AMMOLINE_MINES_CRATE "1111110111111111111111111111111111111111111111111111111111" -#define AMMOLINE_PORTALS_QT "900000900200000000210000000000000011000009000000000000000" -#define AMMOLINE_PORTALS_PROB "040504054160065554655446477657666666615551010111541112111" -#define AMMOLINE_PORTALS_DELAY "000000000000020550000004000700400000000020000000060002000" -#define AMMOLINE_PORTALS_CRATE "131111031211111112311411111111111111121111111111111111111" +#define AMMOLINE_PORTALS_QT "9000009002000000002100000000000000110000090000000000000000" +#define AMMOLINE_PORTALS_PROB "0405040541600655546554464776576666666155510101115411121112" +#define AMMOLINE_PORTALS_DELAY "0000000000000205500000040007004000000000200000000600020000" +#define AMMOLINE_PORTALS_CRATE "1311110312111111123114111111111111111211111111111111111111" -#define AMMOLINE_ONEEVERY_QT "111111911111111111111111111111111111111111111111111111111" -#define AMMOLINE_ONEEVERY_PROB "111111011111111111111111111111111111111111111111111111111" -#define AMMOLINE_ONEEVERY_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_ONEEVERY_CRATE "111111011111111111111111111111111111111111111111111111111" +#define AMMOLINE_ONEEVERY_QT "1111119111111111111111111111111111111111111111111111111111" +#define AMMOLINE_ONEEVERY_PROB "1111110111111111111111111111111111111111111111111111111111" +#define AMMOLINE_ONEEVERY_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_ONEEVERY_CRATE "1111110111111111111111111111111111111111111111111111111111" -#define AMMOLINE_HIGHLANDER_QT "111111911111111111110191111111111001011111011110110011010" -#define AMMOLINE_HIGHLANDER_PROB "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_HIGHLANDER_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_HIGHLANDER_CRATE "000000000000000000000000000000000000000000000000000000000" - -#define AMMOLINE_CONSTRUCTION_QT "110001900000001001000000000000000000000000000000000000000" -#define AMMOLINE_CONSTRUCTION_PROB "111111011111111111111111111111111111111111111111111111110" -#define AMMOLINE_CONSTRUCTION_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_CONSTRUCTION_CRATE "111111011111111111111111111111111111111111111111111111111" +#define AMMOLINE_HIGHLANDER_QT "1111119111111111111101911111111110010111110111101100110101" +#define AMMOLINE_HIGHLANDER_PROB "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_HIGHLANDER_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_HIGHLANDER_CRATE "0000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPAPRO_QT "000000990000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPAPRO_PROB "444440004404440000000000000040000000000000000000000000000" -#define AMMOLINE_SHOPPAPRO_DELAY "000000000000000000000000000000000000000000000000000000000" -#define AMMOLINE_SHOPPAPRO_CRATE "111111011111111111111111111111111111111111111111111112111" +#define AMMOLINE_CONSTRUCTION_QT "1100019000000010010000000000000000000000000000000000000000" +#define AMMOLINE_CONSTRUCTION_PROB "1111110111111111111111111111111111111111111111111111111100" +#define AMMOLINE_CONSTRUCTION_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_CONSTRUCTION_CRATE "1111110111111111111111111111111111111111111111111111111111" +#define AMMOLINE_SHOPPAPRO_QT "0000009900000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPAPRO_PROB "4444400044044400000000000000400000000000000000000000000000" +#define AMMOLINE_SHOPPAPRO_DELAY "0000000000000000000000000000000000000000000000000000000000" +#define AMMOLINE_SHOPPAPRO_CRATE "1111110111111111111111111111111111111111111111111111121111" -//When adding new weapons also insert one element in cDefaultAmmos list (hwconsts.cpp.in) - - diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uAIAmmoTests.pas Sat Apr 08 21:43:48 2017 +0200 @@ -124,7 +124,8 @@ (proc: nil; flags: 0), // amIceGun (proc: nil; flags: 0), // amKnife (proc: nil; flags: 0), // amRubber - (proc: nil; flags: 0) // amAirMine + (proc: nil; flags: 0), // amAirMine + (proc: nil; flags: 0) // amDuck ); implementation diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uGearsHedgehog.pas Sat Apr 08 21:43:48 2017 +0200 @@ -325,6 +325,13 @@ newGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0); end; amDynamite: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtDynamite, 0, SignAs(_0_03, dX), _0, 5000); + amDuck: begin + newGear:= AddGear(hwRound(lx), hwRound(ly), gtDuck, 0, _0, _0, 0); + if not ((not dX.isNegative) xor ((State and gstHHHJump) <> 0)) then + newGear^.Tag:= -1 + else + newGear^.Tag:= 1; + end; amFirePunch: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtFirePunch, 0, xx, _0, 0); amWhip: begin newGear:= AddGear(hwRound(lx) + hwSign(dX) * 10, hwRound(ly), gtWhip, 0, SignAs(_1, dX), - _0_8, 0); diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uGearsList.pas Sat Apr 08 21:43:48 2017 +0200 @@ -105,7 +105,7 @@ (* gtAddAmmo *) , amNothing (* gtGenericFaller *) , amNothing (* gtKnife *) , amKnife -(* gtDuck *) , amNothing // TODO: Add ammo type +(* gtDuck *) , amDuck ); diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uGearsRender.pas Sat Apr 08 21:43:48 2017 +0200 @@ -729,6 +729,7 @@ amSkip: DrawSpriteRotated(sprHandSkip, hx, hy, sign, aangle); amClusterBomb: DrawSpriteRotated(sprHandCluster, hx, hy, sign, aangle); amDynamite: DrawSpriteRotated(sprHandDynamite, hx, hy, sign, aangle); + amDuck: DrawSpriteRotatedF(sprHandDuck, hx, hy, 0, sign, aangle); amHellishBomb: DrawSpriteRotated(sprHandHellish, hx, hy, sign, aangle); amGasBomb: DrawSpriteRotated(sprHandCheese, hx, hy, sign, aangle); amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle); diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uTypes.pas Sat Apr 08 21:43:48 2017 +0200 @@ -90,7 +90,7 @@ sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis, sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog, sprAmRubber, sprBoing, sprCustom1, sprCustom2, sprAirMine, sprHandAirMine, - sprFlakeL, sprSDFlakeL, sprCloudL, sprSDCloudL, sprDuck + sprFlakeL, sprSDFlakeL, sprCloudL, sprSDCloudL, sprDuck, sprHandDuck ); // Gears that interact with other Gears and/or Land @@ -161,7 +161,7 @@ amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42 amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48 amResurrector, amDrillStrike, amSnowball, amTardis, {amStructure,} amLandGun, // 53 - amIceGun, amKnife, amRubber, amAirMine); // 57 + amIceGun, amKnife, amRubber, amAirMine, amDuck); // 58 // Different kind of crates that e.g. hedgehogs can pick up TCrateType = (HealthCrate, AmmoCrate, UtilityCrate); diff -r de9144250c37 -r 71c47122fbc0 hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sat Apr 08 18:36:12 2017 +0200 +++ b/hedgewars/uVariables.pas Sat Apr 08 21:43:48 2017 +0200 @@ -748,7 +748,9 @@ (FileName: 'SDCloudsL'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil; Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloudL (FileName: 'Duck'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprDuck + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprDuck + (FileName: 'amDuck'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprHandDuck ); const @@ -2382,7 +2384,35 @@ PosCount: 1; PosSprite: sprWater; ejectX: 0; - ejectY: 0) + ejectY: 0), +// Rubber duck + (NameId: sidDuck; + NameTex: nil; + Probability: 100; + NumberInCase: 1; + Ammo: (Propz: ammoprop_NoCrosshair or + ammoprop_AttackInMove or + ammoprop_DontHold or + ammoprop_AltUse; + Count: 2; + NumPerTurn: 0; + Timer: 9000; + Pos: 0; + AmmoType: amDuck; + AttackVoice: sndLaugh; + Bounciness: 1000); + Slot: 8; // FIXME: Use slot 0. for some reason, hwengine does not like it + // when we put it into slot 0. + // Probably related to amNothing being in slot 0, too? + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprWater; + ejectX: 15; + ejectY: -7) ); var diff -r de9144250c37 -r 71c47122fbc0 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r de9144250c37 -r 71c47122fbc0 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r de9144250c37 -r 71c47122fbc0 share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Sat Apr 08 18:36:12 2017 +0200 +++ b/share/hedgewars/Data/Locale/en.txt Sat Apr 08 21:43:48 2017 +0200 @@ -60,6 +60,7 @@ 00:56=Cleaver 00:57=Rubber 00:58=Air Mine +00:59=Rubber Duck 01:00=Loading … 01:01=Round draw @@ -823,6 +824,7 @@ 03:56=Please use or misuse 03:57=Utility 03:58=Floating proximity bomb +03:59=Swimming bomb ; Weapon Descriptions (use | as line breaks) 04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Precise + 1-5: Set bounce strength|Attack: Hold to throw with more power @@ -884,6 +886,7 @@ 04:56=You can throw two cleavers at your enemy,|block passages and tunnels and even use them for climbing!|Be careful! Playing with knifes is dangerous.|Attack: Hold to shoot with more power (twice) 04:57=Build a VERY elastic rubber band, from which|hedgehogs and other things bounce off|without taking fall damage.|Left/Right: Change rubber band orientation|Cursor: Place rubber band in a valid position 04:58=This proximity bomb will float freely in the air and follow|hedgehogs careless enouogh to come too close to it.|Its explosion is weaker than that of the land mine, however.|Attack: Hold to shoot with more power +04:59=Send those dirty hogs swimming! This cute little squeaky|rubber duck is able to swim on water and will go with the|wind once swimming. It explodes when it hits land, so|make sure to drop it from a cliff or another safe spot.|Attack: Drop the rubber duck straight down ; Game goal strings 05:00=Game Modes