# HG changeset patch # User smxx # Date 1269619161 0 # Node ID b7fa8ad60e3bed6fa51c0fd5bd5247f4ab9a9e6c # Parent 8deb4e8f5172075f9bc6d244834872d20b23d3d1 Engine: * Replaced UFO with the Homing Bee (Bzzzzz!) diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/GSHandlers.inc Fri Mar 26 15:59:21 2010 +0000 @@ -458,14 +458,14 @@ end; //////////////////////////////////////////////////////////////////////////////// -procedure doStepUFOWork(Gear: PGear); +procedure doStepBeeWork(Gear: PGear); var t: hwFloat; - y: LongInt; begin AllInactive:= false; t:= Distance(Gear^.dX, Gear^.dY); Gear^.dX:= Gear^.Elasticity * (Gear^.dX + _0_000004 * (TargetPoint.X - hwRound(Gear^.X))); Gear^.dY:= Gear^.Elasticity * (Gear^.dY + _0_000004 * (TargetPoint.Y - hwRound(Gear^.Y))); + t:= t / Distance(Gear^.dX, Gear^.dY); Gear^.dX:= Gear^.dX * t; Gear^.dY:= Gear^.dY * t; @@ -474,9 +474,7 @@ if (GameTicks and $3F) = 0 then begin - y:= hwRound(Gear^.Y); - if y + Gear^.Radius < cWaterLine then - AddGear(hwRound(Gear^.X), y, gtSmokeTrace, 0, _0, _0, 0); + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtBeeTrace); end; CheckCollision(Gear); @@ -489,7 +487,7 @@ end; end; -procedure doStepUFO(Gear: PGear); +procedure doStepBee(Gear: PGear); begin AllInactive:= false; Gear^.X:= Gear^.X + Gear^.dX; @@ -505,9 +503,9 @@ dec(Gear^.Timer); if Gear^.Timer = 0 then begin - Gear^.SoundChannel:= LoopSound(sndUFO); + Gear^.SoundChannel:= LoopSound(sndBee); Gear^.Timer:= 5000; - Gear^.doStep:= @doStepUFOWork + Gear^.doStep:= @doStepBeeWork end; end; diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/HHHandlers.inc Fri Mar 26 15:59:21 2010 +0000 @@ -144,7 +144,7 @@ amMolotov: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMolotov, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); amClusterBomb: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtClusterBomb, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, Ammo^[CurSlot, CurAmmo].Timer); amBazooka: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtAmmo_Grenade, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); - amUFO: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtUFO, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); + amBee: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtBee, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0); amShotgun: begin PlaySound(sndShotgunReload); CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtShotgunShot, 0, xx * _0_5, yy * _0_5, 0); diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/uAIAmmoTests.pas --- a/hedgewars/uAIAmmoTests.pas Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/uAIAmmoTests.pas Fri Mar 26 15:59:21 2010 +0000 @@ -54,7 +54,7 @@ (proc: @TestGrenade; flags: 0), // amGrenade (proc: @TestClusterBomb; flags: 0), // amClusterBomb (proc: @TestBazooka; flags: 0), // amBazooka - (proc: nil; flags: 0), // amUFO + (proc: nil; flags: 0), // amBee (proc: @TestShotgun; flags: 0), // amShotgun (proc: nil; flags: 0), // amPickHammer (proc: nil; flags: 0), // amSkip diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/uConsts.pas Fri Mar 26 15:59:21 2010 +0000 @@ -48,7 +48,7 @@ ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags); TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame, - sprLag, sprArrow, sprGrenade, sprTargetP, sprUFO, + sprLag, sprArrow, sprGrenade, sprTargetP, sprBee, sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff, sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower, sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont, @@ -76,10 +76,10 @@ sprAmTeleport, sprSplash, sprDroplet, sprBirdy, sprHandCake, sprHandConstruction, sprHandGrenade, sprHandMelon, sprHandMortar, sprHandSkip, sprHandCluster, sprHandDynamite, sprHandHellish, sprHandMine, sprHandSeduction, sprHandVamp, - sprBigExplosion, sprSmokeRing); + sprBigExplosion, sprSmokeRing, sprBeeTrace); TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, // 3 - gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope, // 8 + gtGrave, gtBee, gtShotgunShot, gtPickHammer, gtRope, // 8 gtSmokeTrace, gtExplosion, gtMine, gtCase, gtDEagleShot, gtDynamite, // 14 gtClusterBomb, gtCluster, gtShover, gtFlame, // 18 gtFirePunch, gtATStartGame, gtATSmoothWindCh, gtATFinishGame, // 24 @@ -93,14 +93,14 @@ TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire, vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble, vgtSteam, vgtAmmo, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, - vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing); + vgtDust, vgtSplash, vgtDroplet, vgtSmokeRing, vgtBeeTrace); TGearsType = set of TGearType; TSound = (sndNone, sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease, sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact, - sndMineTick, sndPickhammer, sndGun, sndUFO, sndJump1, sndJump2, + sndMineTick, sndPickhammer, sndGun, sndBee, sndJump1, sndJump2, sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming, sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye, sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret, @@ -115,7 +115,7 @@ sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity, sndDroplet1, sndDroplet2, sndDroplet3); - TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amUFO, amShotgun, amPickHammer, + TAmmoType = (amNothing, amGrenade, amClusterBomb, amBazooka, amBee, amShotgun, amPickHammer, amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip, amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch, amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake, @@ -465,8 +465,8 @@ Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprGrenade (FileName: 'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTargetP - (FileName: 'UFO'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprUFO + (FileName: 'Bee'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBee (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeTrace (FileName: 'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; @@ -718,7 +718,9 @@ (FileName: 'BigExplosion'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 385; Height: 385; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBigExplosion (FileName: 'SmokeRing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false)// sprSmokeRing + Width: 200; Height: 200; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeRing + (FileName: 'BeeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false) // sprBeeTrace ); Wavez: array [TWave] of record @@ -754,7 +756,7 @@ (FileName: 'minetick.ogg'; Path: ptSounds),// sndMineTicks (FileName: 'pickhammer.ogg'; Path: ptSounds),// sndPickhammer (FileName: 'gun.ogg'; Path: ptSounds),// sndGun - (FileName: 'ufo.ogg'; Path: ptSounds),// sndUFO + (FileName: 'bee.ogg'; Path: ptSounds),// sndBee (FileName: 'Jump1.ogg'; Path: ptVoices),// sndJump1 (FileName: 'Jump2.ogg'; Path: ptVoices),// sndJump2 (FileName: 'Jump3.ogg'; Path: ptVoices),// sndJump3 @@ -913,7 +915,7 @@ SkipTurns: 0; PosCount: 1; PosSprite: sprWater), - (NameId: sidUFO; + (NameId: sidBee; NameTex: nil; Probability: 100; NumberInCase: 1; @@ -923,7 +925,7 @@ NumPerTurn: 0; Timer: 0; Pos: 0; - AmmoType: amUFO; + AmmoType: amBee; AttackVoice: sndNone); Slot: 0; TimeAfterTurn: 3000; diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/uGears.pas --- a/hedgewars/uGears.pas Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/uGears.pas Fri Mar 26 15:59:21 2010 +0000 @@ -138,7 +138,7 @@ @doStepGrenade, @doStepHealthTag, @doStepGrave, - @doStepUFO, + @doStepBee, @doStepShotgunShot, @doStepPickHammer, @doStepRope, @@ -290,7 +290,7 @@ gear^.Radius:= 10; gear^.Elasticity:= _0_6; end; - gtUFO: begin + gtBee: begin gear^.Radius:= 5; gear^.Timer:= 500; gear^.RenderTimer:= true; @@ -1602,7 +1602,7 @@ gtGrave: DrawTextureF(PHedgehog(Gear^.Hedgehog)^.Team^.GraveTex, 1, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (GameTicks shr 7) and 7, 1, 32, 32); - gtUFO: DrawRotatedF(sprUFO, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tag, 0, DxDy2Angle(Gear^.dX, Gear^.dY) - GameTicks div 2); + gtBee: DrawRotatedF(sprBee, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (GameTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); gtPickHammer: DrawSprite(sprPHammer, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 50 + LongInt(((GameTicks shr 5) and 1) * 2) + WorldDy, 0); gtRope: DrawRope(Gear); diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/uLocale.pas Fri Mar 26 15:59:21 2010 +0000 @@ -20,7 +20,7 @@ unit uLocale; interface -type TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidUFO, sidShotgun, +type TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun, sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle, sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds, sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch, diff -r 8deb4e8f5172 -r b7fa8ad60e3b hedgewars/uVisualGears.pas --- a/hedgewars/uVisualGears.pas Fri Mar 26 15:56:26 2010 +0000 +++ b/hedgewars/uVisualGears.pas Fri Mar 26 15:59:21 2010 +0000 @@ -128,6 +128,14 @@ end; +procedure doStepBeeTrace(Gear: PVisualGear; Steps: Longword); +begin +if Gear^.FrameTicks > Steps then + dec(Gear^.FrameTicks, Steps) +else + DeleteVisualGear(Gear); +end; + procedure doStepCloud(Gear: PVisualGear; Steps: Longword); var i: Longword; begin @@ -457,7 +465,8 @@ @doStepDust, @doStepSplash, @doStepDroplet, - @doStepSmokeRing + @doStepSmokeRing, + @doStepBeeTrace ); function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear; @@ -594,6 +603,10 @@ FrameTicks:= 250 + random(1751); Frame:= random(3) end; + vgtBeeTrace: begin + FrameTicks:= 1000; + Frame:= random(16); + end; vgtSmokeRing: begin dx:= _0; dx.isNegative:= false; @@ -727,6 +740,14 @@ end; vgtSplash: DrawSprite(sprSplash, hwRound(Gear^.X) + WorldDx - 64, hwRound(Gear^.Y) + WorldDy - 72, 19 - (Gear^.FrameTicks div 37)); vgtDroplet: DrawSprite(sprDroplet, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame); + vgtBeeTrace: begin + if Gear^.FrameTicks < 250 then + glColor4f(1, 1, 1, Gear^.FrameTicks / 500) + else + glColor4f(1, 1, 1, 0.5); + DrawRotatedF(sprBeeTrace, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, (RealTicks shr 4) mod cMaxAngle); + glColor4f(1, 1, 1, 1); + end; vgtSmokeRing: begin glColor4f(1, 1, 1, Gear^.alpha); DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/Bee.png Binary file share/hedgewars/Data/Graphics/Bee.png has changed diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/BeeTrace.png Binary file share/hedgewars/Data/Graphics/BeeTrace.png has changed diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/Homing Bee 2.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/share/hedgewars/Data/Graphics/Homing Bee 2.svg Fri Mar 26 15:59:21 2010 +0000 @@ -0,0 +1,408 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Graphics/UFO.png Binary file share/hedgewars/Data/Graphics/UFO.png has changed diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Fri Mar 26 15:56:26 2010 +0000 +++ b/share/hedgewars/Data/Locale/de.txt Fri Mar 26 15:59:21 2010 +0000 @@ -1,9 +1,9 @@ -; German locale +; German locale 00:00=Granate 00:01=Splittergranate 00:02=Bazooka -00:03=UFO +00:03=Zielsuchende Biene 00:04=Schrotflinte 00:05=Presslufthammer 00:06=Runde überspringen @@ -208,7 +208,7 @@ 04:00=Greife deine Feinde mit einfachen Granaten an.|Der Zeitzünder steuert den Explosionszeitpunkt.|1-5: Zeitzünder einstellen|Angriff: Halten, um mit mehr Kraft zu werfen 04:01=Greife deine Feinde mit Splittergranaten an.|Der Zeitzünder wird die Granate in mehrere|kleine Bomben zerspringen lassen.|1-5: Zeitzünder einstellen|Angriff: Halten, um mit mehr Kraft zu werfen 04:02=Greife deine Feinde mit einem ballistischen|Projektil an, das vom Wind beeinflusst wird.|Angriff: Halten, um mit mehr Kraft zu feuern -04:03=Starte eine gelenkte Bombe, die auf ein gewähltes|Ziel zusteuern wird. Feuere nicht mit voller Kraft,|um die Zielgenauigkeit zu verbessern.|Cursor: Ziel wählen|Angriff: Halten, um mit mehr Kraft zu feuern +04:03=Starte eine explosive Biene, die auf ein gewähltes|Ziel zusteuern wird. Feuere nicht mit voller Kraft,|um die Zielgenauigkeit zu verbessern.|Cursor: Ziel wählen|Angriff: Halten, um mit mehr Kraft zu feuern 04:04=Greife deine Feinde mit einer Schrotflinte und|zwei Schüssen an. Durch die Streuung musst du|nicht genau zielen, um trotzdem zu treffen.|Angriff: Feuern (mehrfach) 04:05=Ab in den Untergrund! Benutze den Presslufthammer,|um einen Schacht nach unten zu graben und so|andere Gebiete zu erreichen.|Angriff: Presslufthammer ein- oder ausschalten 04:06=Gelangweilt? Keine Optionen? Munition sparen?|Kein Problem! Passe einfach diese Runde, Feigling!|Angriff: Runde ohne Angriff aussetzen diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Fri Mar 26 15:56:26 2010 +0000 +++ b/share/hedgewars/Data/Locale/en.txt Fri Mar 26 15:59:21 2010 +0000 @@ -3,7 +3,7 @@ 00:00=Grenade 00:01=ClusterBomb 00:02=Bazooka -00:03=UFO +00:03=Homing Bee 00:04=Shotgun 00:05=PickHammer 00:06=Skip @@ -410,7 +410,7 @@ 04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power 04:01=Attack your enemies using a cluster bomb.|It will split into smaller bombs once its timer|reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power 04:02=Attack your enemies using a ballistic projectile|that might be influenced by wind.|Attack: Hold to shoot with more power -04:03=Launch a guided bomb that will lock on|the selected target. Don't shoot with full power|to improve its precision.|Cursor: Pick target|Attack: Hold to shoot with more power +04:03=Launch an explosive bee that will lock on|the selected target. Don't shoot with full power|to improve its precision.|Cursor: Pick target|Attack: Hold to shoot with more power 04:04=Attack your enemy using a shotgun with two shots.|Thanks to its spread you don't need direct hits|to harm your opponents.|Attack: Shoot (multiple times) 04:05=Move underground! Use the pickhammer to drill|a hole into the ground and reach other areas.|Attack: Start or stop digging 04:06=Bored? No way to attack? Save your ammo?|No problem! Just skip your turn, coward!|Attack: Skip your turn without fighting diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Missions/Training/Shotgun Training.lua --- a/share/hedgewars/Data/Missions/Training/Shotgun Training.lua Fri Mar 26 15:56:26 2010 +0000 +++ b/share/hedgewars/Data/Missions/Training/Shotgun Training.lua Fri Mar 26 15:59:21 2010 +0000 @@ -131,9 +131,9 @@ -- The delay between each round Delay = 0 -- The map to be played - Map = "mushrooms" + Map = "Mushrooms" -- The theme to be used - Theme = "nature" + Theme = "Nature" -- Create the player team AddTeam(loc(teamname), 14483456, "Simple", "Island", "Default") diff -r 8deb4e8f5172 -r b7fa8ad60e3b share/hedgewars/Data/Sounds/Bee.ogg Binary file share/hedgewars/Data/Sounds/Bee.ogg has changed