Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
authornemo
Sun, 21 Jun 2009 15:31:09 +0000
changeset 2177 c045698e044f
parent 2176 fc082baf448c
child 2178 d8b3417b2704
Initial attempt at jetpack. Pluses, more like lunar lander (takes fall damage). Minuses, can't seem to cancel it or use alt weapon
QTfrontend/hwconsts.cpp.in
hedgewars/GSHandlers.inc
hedgewars/HHHandlers.inc
hedgewars/uAIAmmoTests.pas
hedgewars/uConsts.pas
hedgewars/uGears.pas
hedgewars/uLocale.pas
share/hedgewars/Data/Locale/cs.txt
share/hedgewars/Data/Locale/de.txt
share/hedgewars/Data/Locale/en.txt
share/hedgewars/Data/Locale/es.txt
share/hedgewars/Data/Locale/fi.txt
share/hedgewars/Data/Locale/fr.txt
share/hedgewars/Data/Locale/it.txt
share/hedgewars/Data/Locale/ja.txt
share/hedgewars/Data/Locale/pl.txt
share/hedgewars/Data/Locale/pt-br.txt
share/hedgewars/Data/Locale/pt-pt.txt
share/hedgewars/Data/Locale/ru.txt
share/hedgewars/Data/Locale/sk.txt
share/hedgewars/Data/Locale/sv.txt
share/hedgewars/Data/Locale/tr.txt
share/hedgewars/Data/Locale/uk.txt
share/hedgewars/Data/Locale/zh_CN.txt
share/hedgewars/Data/Locale/zh_TW.txt
--- 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=平手