# HG changeset patch # User unc0rr # Date 1230932391 0 # Node ID cf88e0ace6094cbece4890403435803d2cac8b89 # Parent e1b40c3560bb144ce9de35f45899e40e04356699 Drill rocket diff -r e1b40c3560bb -r cf88e0ace609 QTfrontend/CMakeLists.txt --- a/QTfrontend/CMakeLists.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/QTfrontend/CMakeLists.txt Fri Jan 02 21:39:51 2009 +0000 @@ -81,7 +81,7 @@ if(MINGW) # resource compilation for mingw add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o - COMMAND windres -I ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${WINDRES} -I ${CMAKE_CURRENT_SOURCE_DIR} -i ${CMAKE_CURRENT_SOURCE_DIR}/hedgewars.rc -o ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) set(hwfr_src ${hwfr_src} ${CMAKE_CURRENT_BINARY_DIR}/hedgewars_rc.o) diff -r e1b40c3560bb -r cf88e0ace609 QTfrontend/hwconsts.cpp.in --- a/QTfrontend/hwconsts.cpp.in Fri Jan 02 21:26:31 2009 +0000 +++ b/QTfrontend/hwconsts.cpp.in Fri Jan 02 21:39:51 2009 +0000 @@ -29,7 +29,7 @@ QStringList * Themes; QStringList * mapList; -QString * cDefaultAmmoStore = new QString("eammstore 9391929422199121032235111001"); +QString * cDefaultAmmoStore = new QString("eammstore 93919294221991210322351110012"); QColor * color1 = new QColor(221, 0, 0); QColor * color2 = new QColor( 67, 118, 233); diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/GSHandlers.inc Fri Jan 02 21:39:51 2009 +0000 @@ -1837,3 +1837,63 @@ if (Gear^.Tag = 47) or (cWaterLine = 0) then DeleteGear(Gear) end; + +//////////////////////////////////////////////////////////////////////////////// +procedure doStepDiggingGear(Gear: PGear); +var ox,oy: hwFloat; +begin + ox:= Gear^.X; + oy:= Gear^.Y; + Gear^.X:= Gear^.X + Gear^.dX; + Gear^.Y:= Gear^.Y + Gear^.dY; + DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 2, 6); + CheckGearDrowning(Gear); +end; + +procedure doStepDrill(Gear: PGear); +var newX, newY, oldDx, oldDy: hwFloat; + t: PGearArray; +begin + AllInactive:= false; + + if (Gear^.Timer = 5000) then begin //flying + Gear^.dX:= Gear^.dX + cWindSpeed; + oldDx:= Gear^.dX; + oldDy:= Gear^.dY; + doStepFallingGear(Gear); + if (GameTicks and $3F) = 0 then + AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); + end; + + if ((Gear^.State and gstCollision) <> 0) and (Gear^.Timer = 5000) then + begin //hit + Gear^.dX:= oldDx; + Gear^.dY:= oldDy; + t:= CheckGearsCollision(Gear); + if (t^.Count = 0) then + begin //hit the ground not the hedgehog + newy:= hwSqrt((_0_5 * Gear^.dY * Gear^.dY) / Distance(Gear^.dX, Gear^.dY)); + if (Gear^.dY < _0) then newY := -newY; + newx:= newy * Gear^.dX / Gear^.dY; + Gear^.dX := newx; + Gear^.dY := newy; + dec(Gear^.Timer); + end + else + Gear^.Timer:= 0 + end; + + if (Gear^.Timer > 0) and (Gear^.Timer < 5000) and ((Gear^.Timer mod 20) = 0) then doStepDiggingGear(Gear); + + if (Gear^.Timer = 0) + or ((Gear^.Timer < 5000) + and not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) + and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))) then + begin //out of time or exited ground + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); + DeleteGear(Gear); + exit + end; + + if (Gear^.Timer < 5000) then dec(Gear^.Timer); +end; \ No newline at end of file diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/HHHandlers.inc Fri Jan 02 21:39:51 2009 +0000 @@ -170,6 +170,7 @@ amWatermelon: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtWatermelon, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer); 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); end; uStats.AmmoUsed(Ammo^[CurSlot, CurAmmo].AmmoType); diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/uAIAmmoTests.pas Fri Jan 02 21:39:51 2009 +0000 @@ -72,7 +72,8 @@ (proc: nil; flags: 0), // amSeduction (proc: nil; flags: 0), // amBanana (proc: nil; flags: 0), // amHellishBomb - (proc: nil; flags: 0) // amNapalm + (proc: nil; flags: 0), // amNapalm + (proc: nil; flags: 0) // amDrill ); const BadTurn = Low(LongInt) div 4; diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/uConsts.pas Fri Jan 02 21:39:51 2009 +0000 @@ -49,7 +49,7 @@ sprHurrah, sprLemonade, sprExplPart, sprExplPart2, sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon, sprEvilTrace, sprHellishBomb, sprSeduction, sprDress, - sprCensored); + sprCensored, sprDrill, sprHandDrill); TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, // 3 gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope, // 8 @@ -59,7 +59,7 @@ gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, gtGirder, // 28 gtTeleport, gtSwitcher, gtTarget, gtMortar, // 32 gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 38 - gtHellishBomb, gtEvilTrace, gtWaterUp); + gtHellishBomb, gtEvilTrace, gtWaterUp, gtDrill); TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, vgtSmallDamageTag); @@ -81,7 +81,7 @@ amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, - amSeduction, amWatermelon, amHellishBomb, amNapalm); + amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill); THWFont = (fnt16, fntBig, fntSmall); @@ -445,7 +445,11 @@ (FileName: 'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 64; Height: 64; saveSurf: false),// sprDress (FileName: 'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 16; saveSurf: false) // sprCensored + Width: 64; Height: 16; saveSurf: false),// sprCensored + (FileName: 'Drill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; saveSurf: false),// sprDrill + (FileName: 'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; saveSurf: false)// sprHandDrill ); Wavez: array [TWave] of record @@ -1079,7 +1083,26 @@ isDamaging: true; SkipTurns: 0; PosCount: 2; - PosSprite: sprAmAirplane) + PosSprite: sprAmAirplane), + (NameId: sidDrill; + NameTex: nil; + Probability: 0; + NumberInCase: 1; + Ammo: (Propz: ammoprop_Power or + ammoprop_AltUse; + Count: AMMO_INFINITE; + NumPerTurn: 0; + Timer: 0; + Pos: 0; + AmmoType: amDrill); + Slot: 0; + TimeAfterTurn: 3000; + minAngle: 0; + maxAngle: 0; + isDamaging: true; + SkipTurns: 0; + PosCount: 1; + PosSprite: sprDrill) ); var CountTexz: array[1..9] of PTexture; diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/uGears.pas --- a/hedgewars/uGears.pas Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/uGears.pas Fri Jan 02 21:39:51 2009 +0000 @@ -144,7 +144,8 @@ @doStepCluster, @doStepBomb, @doStepSmokeTrace, - @doStepWaterUp + @doStepWaterUp, + @doStepDrill ); procedure InsertGearToList(Gear: PGear); @@ -342,6 +343,10 @@ Result^.Elasticity:= _0_5; Result^.Friction:= _0_96; end; + gtDrill: begin + Result^.Timer:= 5000; + Result^.Radius:= 4; + end; end; InsertGearToList(Result); AddGear:= Result @@ -783,6 +788,7 @@ case amt of amBazooka, amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle); + amDrill: DrawRotated(sprHandDrill, hx, hy, hwSign(Gear^.dX), aangle); amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle); amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle); amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle); @@ -1033,6 +1039,7 @@ begin case Gear^.Kind of gtAmmo_Bomb: DrawRotated(sprBomb, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle); + gtDrill: DrawRotated(sprDrill, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); gtHedgehog: DrawHH(Gear); gtAmmo_Grenade: DrawRotated(sprGrenade, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); gtHealthTag: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); @@ -1245,6 +1252,7 @@ gtMine, gtTarget, gtCase: begin + if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end; inc(t^.ar[i]^.Damage, Damage); if (t^.ar[i]^.Kind = gtHedgehog) and (Damage > 0) then diff -r e1b40c3560bb -r cf88e0ace609 hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Fri Jan 02 21:26:31 2009 +0000 +++ b/hedgewars/uLocale.pas Fri Jan 02 21:39:51 2009 +0000 @@ -24,7 +24,7 @@ sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch, sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip, sidKamikaze, sidCake, sidSeduction, sidWatermelon, - sidHellishBomb); + sidHellishBomb, sidDrill); TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused, sidConfirm, sidSuddenDeath); diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/bg.txt --- a/share/hedgewars/Data/Locale/bg.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/bg.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seduction 00:26=Watermelon bomb 00:27=Hellish hand-grenade +00:28=Drill Rocket 01:00=Бой! 01:01=Равен рунд diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/cz.txt --- a/share/hedgewars/Data/Locale/cz.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/cz.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Omámení 00:26=Bomba z vodního melounu 00:27=Ďábelský ruční granát +00:28=Drill Rocket 01:00=Do boje! 01:01=Kolo nerozhodně diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/de.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seduction 00:26=Watermelon bomb 00:27=Hellish hand-grenade +00:28=Drill Rocket 01:00=Auf in die Schlacht! 01:01=Unentschieden diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/en.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seduction 00:26=Watermelon Bomb 00:27=Hellish hand-grenade +00:28=Drill Rocket 01:00=Let's fight! 01:01=Round draw diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/es.txt --- a/share/hedgewars/Data/Locale/es.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/es.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seducción 00:26=Sandía bomba 00:27=Granada infernal +00:28=Drill Rocket 01:00=Luchad! 01:01=Empate diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/fr.txt --- a/share/hedgewars/Data/Locale/fr.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/fr.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seduction 00:26=Watermelon bomb 00:27=Hellish hand-grenade +00:28=Drill Rocket 01:00=C'est parti! 01:01=Round ex aequo diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/it.txt --- a/share/hedgewars/Data/Locale/it.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/it.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Seduzione 00:26=Bomba anguria 00:27=Granata infernale +00:28=Drill Rocket 01:00=Combattiamo! 01:01=Round in parità diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/pl.txt --- a/share/hedgewars/Data/Locale/pl.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/pl.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Uwodzenie 00:26=Bomba arbuzowa 00:27=Piekielna bomba +00:28=Drill Rocket 01:00=Walczmy! 01:01=Remis diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/pt-br.txt --- a/share/hedgewars/Data/Locale/pt-br.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/pt-br.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Sedução 00:26=Bomba de Melância 00:27=Granada infernal +00:28=Drill Rocket 01:00=Hora de lutar! 01:01=Partida empatou diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/ru.txt --- a/share/hedgewars/Data/Locale/ru.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/ru.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Соблазнение 00:26=Арбузная бомба 00:27=Адская граната +00:28=Сверлящая ракета 01:00=Вперёд к победе! 01:01=Ничья diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/sk.txt --- a/share/hedgewars/Data/Locale/sk.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/sk.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Zvádzanie 00:26=Melónová bomba 00:27=Pekelný granát +00:28=Drill Rocket 01:00=Do boja! 01:01=Remíza diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/sv.txt --- a/share/hedgewars/Data/Locale/sv.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/sv.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Förförelse 00:26=Vattenmelonsbomb 00:27=Helvetisk handgranat +00:28=Drill Rocket 01:00=Nu kör vi! 01:01=Oavgjort diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/uk.txt --- a/share/hedgewars/Data/Locale/uk.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/uk.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=Зваблення 00:26=Watermelon bomb 00:27=Hellish hand-grenade +00:28=Drill Rocket 01:00=Уперед до перемоги! 01:01=Нічия diff -r e1b40c3560bb -r cf88e0ace609 share/hedgewars/Data/Locale/zh_CN.txt --- a/share/hedgewars/Data/Locale/zh_CN.txt Fri Jan 02 21:26:31 2009 +0000 +++ b/share/hedgewars/Data/Locale/zh_CN.txt Fri Jan 02 21:39:51 2009 +0000 @@ -28,6 +28,7 @@ 00:25=吸引 00:26=西瓜炸弹 00:27=地狱礼花 +00:28=Drill Rocket 01:00=战斗啦! 01:01=平手