Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
--- a/QTfrontend/hwconsts.cpp.in Sat Jun 20 07:50:03 2009 +0000
+++ b/QTfrontend/hwconsts.cpp.in Sun Jun 21 15:31:09 2009 +0000
@@ -29,15 +29,15 @@
QStringList * Themes;
QStringList * mapList;
-QString * cDefaultAmmoStore = new QString("93919294221991210322351110012010000002");
+QString * cDefaultAmmoStore = new QString("939192942219912103223511100120100000021");
QList< QPair<QString, QString> > cDefaultAmmos =
QList< QPair<QString, QString> >()
<< qMakePair(QString("Default"), *cDefaultAmmoStore)
- << qMakePair(QString("Crazy"), QString("99999999999999999929999999999999992999"))
- << qMakePair(QString("Pro mode"), QString("90900090000000000000090000000000000000"))
- << qMakePair(QString("Shoppa"), QString("00000099000000000000000000000000000000"))
- << qMakePair(QString("Basketball"),QString("00000090000009000000000000000000000000"))
- << qMakePair(QString("Minefield"),QString("00000099000900000003000000000000000000"))
+ << qMakePair(QString("Crazy"), QString("999999999999999999299999999999999929999"))
+ << qMakePair(QString("Pro mode"), QString("909000900000000000000900000000000000000"))
+ << qMakePair(QString("Shoppa"), QString("000000990000000000000000000000000000000"))
+ << qMakePair(QString("Basketball"),QString("000000900000090000000000000000000000000"))
+ << qMakePair(QString("Minefield"),QString("000000990009000000030000000000000000000"))
;
QColor * color1 = new QColor(221, 0, 0);
--- a/hedgewars/GSHandlers.inc Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/GSHandlers.inc Sun Jun 21 15:31:09 2009 +0000
@@ -2183,3 +2183,68 @@
if HHGear^.dX.isNegative then Gear^.Angle:= 4096 - Gear^.Angle;
Gear^.doStep:= @doStepRCPlaneWork
end;
+
+procedure doStepJetpackWork(Gear: PGear);
+var HHGear: PGear;
+ fuel: LongInt;
+ move: hwFloat;
+begin
+AllInactive:= false;
+HHGear:=PHedgehog(Gear^.Hedgehog)^.Gear;
+//dec(Gear^.Timer);
+move:= _0_2;
+fuel:= 50;
+if (HHGear^.Message and gm_Precise) <> 0 then
+ begin
+ move:= _0_02;
+ fuel:= 5;
+ end;
+if (HHGear^.Message and gm_Left) <> 0 then move.isNegative:= true;
+
+if (HHGear^.Message and gm_Up) <> 0 then
+ begin
+ HHGear^.dY:= HHGear^.dY - move;
+ dec(Gear^.Health, fuel)
+ end;
+if (HHGear^.Message and (gm_Left or gm_Right)) <> 0 then
+ begin
+ HHGear^.dX:= HHGear^.dX + (move * _0_2);
+ dec(Gear^.Health, fuel div 5)
+ end;
+if Gear^.Health < 0 then Gear^.Health:= 0;
+if (GameTicks and $3F) = 0 then AddCaption('Fuel: '+inttostr(round(Gear^.Health/20))+'%', $FFFFFF, capgrpMessage);
+
+//AddCaption(inttostr(round(Gear^.Health/20))+'% : '+inttostr(round(Gear^.Timer/1000)), $FFFFFF, capgrpMessage);
+
+HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Precise or gm_Left or gm_Right);
+HHGear^.State:= HHGear^.State and gstMoving and (not gstNotKickable);
+
+Gear^.X:= HHGear^.X;
+Gear^.Y:= HHGear^.Y;
+doStepHedgehogMoving(HHGear);
+
+if //(Gear^.Timer = 0) or
+ (Gear^.Health = 0) or
+ ((HHGear^.Message and gm_Attack) <> 0) or
+ (HHGear^.Damage <> 0) then
+ begin
+ HHGear^.Message:= 0;
+ DeleteGear(Gear);
+ AfterAttack;
+ HHGear^.Active:= true;
+ end
+end;
+
+procedure doStepJetpack(Gear: PGear);
+var HHGear: PGear;
+begin
+Gear^.doStep:= @doStepJetpackWork;
+
+HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
+FollowGear:= HHGear;
+with HHGear^ do
+ begin
+ State:= State and not gstAttacking;
+ Message:= Message and not gm_Attack
+ end
+end;
--- a/hedgewars/HHHandlers.inc Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/HHHandlers.inc Sun Jun 21 15:31:09 2009 +0000
@@ -186,7 +186,8 @@
amHellishBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtHellishBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 5000);
amNapalm: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 2, _0, _0, 0);
amDrill: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
- amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0);
+ amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun, 0, xx * _0_5, yy * _0_5, 0);
+ amJetpack: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtJetpack, 0, _0, _0, 0);
amLowGravity: cGravity:= cMaxWindSpeed / 2;
amExtraDamage: cDamageModifier:= _1_5;
amInvulnerable: Invulnerable:= true;
--- a/hedgewars/uAIAmmoTests.pas Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/uAIAmmoTests.pas Sun Jun 21 15:31:09 2009 +0000
@@ -82,7 +82,8 @@
(proc: nil; flags: 0), // amExtraTime
(proc: nil; flags: 0), // amLaserSight
(proc: nil; flags: 0), // amVampiric
- (proc: nil; flags: 0) // amSniperRifle
+ (proc: nil; flags: 0), // amSniperRifle
+ (proc: nil; flags: 0) // amJetpack
);
const BadTurn = Low(LongInt) div 4;
--- a/hedgewars/uConsts.pas Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/uConsts.pas Sun Jun 21 15:31:09 2009 +0000
@@ -74,7 +74,7 @@
gtTeleport, gtSwitcher, gtTarget, gtMortar, // 31
gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 37
gtHellishBomb, gtEvilTrace, gtWaterUp, gtDrill, gtBallGun, gtBall,gtRCPlane,
- gtSniperRifleShot);
+ gtSniperRifleShot, gtJetpack);
TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
@@ -100,7 +100,7 @@
amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun,
amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
- amLaserSight, amVampiric, amSniperRifle);
+ amLaserSight, amVampiric, amSniperRifle, amJetpack);
THWFont = (fnt16, fntBig, fntSmall);
@@ -465,9 +465,9 @@
(FileName: 'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 32; Height: 64; saveSurf: false),// sprPHammer
(FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 32; Height: 32; saveSurf: false),// sprHandBlowToch
+ Width: 32; Height: 32; saveSurf: false),// sprHandBlowTorch
(FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 32; Height: 32; saveSurf: false),// sprBlowToch
+ Width: 32; Height: 32; saveSurf: false),// sprBlowTorch
(FileName: 'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 64; Height: 32; saveSurf: false),// sprTeleport
(FileName: 'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
@@ -1409,6 +1409,28 @@
isDamaging: true;
SkipTurns: 0;
PosCount: 1;
+ PosSprite: sprWater),
+ (NameId: sidJetpack;
+ NameTex: nil;
+ Probability: 20;
+ NumberInCase: 1;
+ Ammo: (Propz: ammoprop_ForwMsgs or
+ ammoprop_AttackInMove or
+ ammoprop_NoCrosshair or
+ ammoprop_DontHold or
+ ammoprop_AltAttack;
+ Count: 1;
+ NumPerTurn: 1;
+ Timer: 0;
+ Pos: 0;
+ AmmoType: amJetpack);
+ Slot: 3;
+ TimeAfterTurn: 3000;
+ minAngle: 0;
+ maxAngle: 0;
+ isDamaging: true;
+ SkipTurns: 0;
+ PosCount: 1;
PosSprite: sprWater)
);
--- a/hedgewars/uGears.pas Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/uGears.pas Sun Jun 21 15:31:09 2009 +0000
@@ -162,7 +162,8 @@
@doStepBallgun,
@doStepBomb,
@doStepRCPlane,
- @doStepSniperRifleShot
+ @doStepSniperRifleShot,
+ @doStepJetpack
);
procedure InsertGearToList(Gear: PGear);
@@ -386,6 +387,10 @@
Result^.Health:= 3;
Result^.Radius:= 8;
end;
+ gtJetpack: begin
+ Result^.Timer:= 20000;
+ Result^.Health:= 2000;
+ end;
end;
InsertGearToList(Result);
AddGear:= Result
--- a/hedgewars/uLocale.pas Sat Jun 20 07:50:03 2009 +0000
+++ b/hedgewars/uLocale.pas Sun Jun 21 15:31:09 2009 +0000
@@ -26,7 +26,7 @@
sidKamikaze, sidCake, sidSeduction, sidWatermelon,
sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane,
sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime,
- sidLaserSight, sidVampiric, sidSniperRifle);
+ sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack);
TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
sidConfirm, sidSuddenDeath);
--- a/share/hedgewars/Data/Locale/cs.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/cs.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Do boje!
01:01=Kolo nerozhodně
--- a/share/hedgewars/Data/Locale/de.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/de.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laservisier
00:37=Vampirismus
00:38=Scharfschützengewehr
+00:39=Jetpack
01:00=Auf in die Schlacht!
01:01=Unentschieden
--- a/share/hedgewars/Data/Locale/en.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/en.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Let's fight!
01:01=Round draw
--- a/share/hedgewars/Data/Locale/es.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/es.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Mira láser
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Luchad!
01:01=Empate
--- a/share/hedgewars/Data/Locale/fi.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/fi.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Lasertähtäin
00:37=Vampyrismi
00:38=Tarkkuuskivääri
+00:39=Jetpack
01:00=Taistelu alkakoon!
01:01=Tasapeli
--- a/share/hedgewars/Data/Locale/fr.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/fr.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Visée laser
00:37=Vampirisme
00:38=Fusil de sniper
+00:39=Jetpack
01:00=C'est parti !
01:01=Round ex-aequo
--- a/share/hedgewars/Data/Locale/it.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/it.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Mirino Laser
00:37=Vampirismo
00:38=Fucile di precisione
+00:39=Jetpack
01:00=Combattiamo!
01:01=Round in parità
--- a/share/hedgewars/Data/Locale/ja.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/ja.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=ヨシ、ファイト!
01:01=ドロー!
--- a/share/hedgewars/Data/Locale/pl.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/pl.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Celownik laserowy
00:37=Wampiryzm
00:38=Karabin Snajperski
+00:39=Jetpack
01:00=Walczmy!
01:01=Remis
--- a/share/hedgewars/Data/Locale/pt-br.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/pt-br.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Hora de lutar!
01:01=Partida empatou
--- a/share/hedgewars/Data/Locale/pt-pt.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/pt-pt.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Mira Laser
00:37=Vampirismo
00:38=Sniper
+00:39=Jetpack
01:00=Vamos lutar!
01:01=Ronda empatada
--- a/share/hedgewars/Data/Locale/ru.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/ru.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Лазерный прицел
00:37=Вампиризм
00:38=Снайперская винтовка
+00:39=Jetpack
01:00=Вперёд к победе!
01:01=Ничья
--- a/share/hedgewars/Data/Locale/sk.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/sk.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laserové zameriavanie
00:37=Režim vampíra
00:38=Ostreľovačka
+00:39=Jetpack
01:00=Do boja!
01:01=Remíza
--- a/share/hedgewars/Data/Locale/sv.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/sv.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Nu kör vi!
01:01=Oavgjort
--- a/share/hedgewars/Data/Locale/tr.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/tr.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Lazer Görüşü
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Savaş başlasın!
01:01=Beraberlik
--- a/share/hedgewars/Data/Locale/uk.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/uk.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=Laser Sight
00:37=Vampirism
00:38=Sniper Rifle
+00:39=Jetpack
01:00=Уперед до перемоги!
01:01=Нічия
--- a/share/hedgewars/Data/Locale/zh_CN.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh_CN.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=激光瞄准
00:37=吸血鬼
00:38=狙擊槍
+00:39=Jetpack
01:00=战斗啦!
01:01=平手
--- a/share/hedgewars/Data/Locale/zh_TW.txt Sat Jun 20 07:50:03 2009 +0000
+++ b/share/hedgewars/Data/Locale/zh_TW.txt Sun Jun 21 15:31:09 2009 +0000
@@ -39,6 +39,7 @@
00:36=雷射瞄准
00:37=吸血鬼
00:38=狙擊槍
+00:39=Jetpack
01:00=戰鬥開始!
01:01=平手