# HG changeset patch # User smxx # Date 1270551069 0 # Node ID e6e9b811d32f40718b53404b8fd3f1eb7879722d # Parent a68632232d1a20463317c6297ff94568aea5d779 Engine: * Teams leaving a net game will now teleport out of the map instead of commiting suicide diff -r a68632232d1a -r e6e9b811d32f hedgewars/HHHandlers.inc --- a/hedgewars/HHHandlers.inc Tue Apr 06 09:58:43 2010 +0000 +++ b/hedgewars/HHHandlers.inc Tue Apr 06 10:51:09 2010 +0000 @@ -308,6 +308,35 @@ end; //////////////////////////////////////////////////////////////////////////////// +procedure doStepHedgehogGone(Gear: PGear); +const frametime = 65; + timertime = frametime * 11; +begin +if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit; +if Gear^.Timer > 1 then + begin + AllInactive:= false; + dec(Gear^.Timer); + if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos) + end else +if Gear^.Timer = 1 then + begin + DeleteGear(Gear); + SetAllToActive + end else // Gear^.Timer = 0 + begin + AllInactive:= false; + Gear^.Z:= cCurrHHZ; + RemoveGearFromList(Gear); + InsertGearToList(Gear); + PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); + PlaySound(sndWarp); + Gear^.Pos:= 0; + Gear^.Timer:= timertime + end +end; + +//////////////////////////////////////////////////////////////////////////////// procedure PickUp(HH, Gear: PGear); var s: shortstring; a: TAmmoType; @@ -755,14 +784,24 @@ if PrvInactive then begin Gear^.Timer:= 0; - Gear^.State:= Gear^.State or gstHHDeath; - Gear^.doStep:= @doStepHedgehogDead; FollowGear:= Gear; PrvInactive:= false; AllInactive:= false; - // Death message - AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + if not PHedgehog(Gear^.Hedgehog)^.Team^.hasGone then + begin + Gear^.State:= Gear^.State or gstHHDeath; + Gear^.doStep:= @doStepHedgehogDead; + // Death message + AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + end + else + begin + Gear^.State:= Gear^.State or gstHHGone; + Gear^.doStep:= @doStepHedgehogGone; + // Gone message + AddCaption(Format(GetEventString(eidGone), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage); + end end; exit end; diff -r a68632232d1a -r e6e9b811d32f hedgewars/uConsts.pas --- a/hedgewars/uConsts.pas Tue Apr 06 09:58:43 2010 +0000 +++ b/hedgewars/uConsts.pas Tue Apr 06 10:51:09 2010 +0000 @@ -345,6 +345,7 @@ gstWait = $00020000; gstNotKickable = $00040000; gstLoser = $00080000; + gstHHGone = $00100000; gm_Left = $00000001; gm_Right = $00000002; diff -r a68632232d1a -r e6e9b811d32f hedgewars/uGears.pas --- a/hedgewars/uGears.pas Tue Apr 06 09:58:43 2010 +0000 +++ b/hedgewars/uGears.pas Tue Apr 06 10:51:09 2010 +0000 @@ -925,6 +925,11 @@ begin DrawSprite(sprHHDeath, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 26 + WorldDy, Gear^.Pos); exit + end +else if (Gear^.State and gstHHGone) <> 0 then + begin + DrawRotatedF(sprTeleport, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy, Gear^.Pos, hwSign(Gear^.dX), 0); + exit end; defaultPos:= true; diff -r a68632232d1a -r e6e9b811d32f hedgewars/uLocale.pas --- a/hedgewars/uLocale.pas Tue Apr 06 09:58:43 2010 +0000 +++ b/hedgewars/uLocale.pas Tue Apr 06 10:51:09 2010 +0000 @@ -36,7 +36,7 @@ TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw, eidNewHealthPack, eidNewAmmoPack, eidNewUtilityPack, eidTurnSkipped, eidHurtSelf, - eidHomerun, eidFrozen); + eidHomerun, eidGone); TGoalStrId = (gidCaption, gidSubCaption, gidForts, gidLowGravity, gidInvulnerable, gidVampiric, gidKarma, gidKing, gidPlaceHog, gidArtillery, diff -r a68632232d1a -r e6e9b811d32f share/hedgewars/Data/Locale/de.txt --- a/share/hedgewars/Data/Locale/de.txt Tue Apr 06 09:58:43 2010 +0000 +++ b/share/hedgewars/Data/Locale/de.txt Tue Apr 06 10:51:09 2010 +0000 @@ -1,4 +1,4 @@ -; German locale +; German locale 00:00=Granate 00:01=Splittergranate @@ -160,6 +160,12 @@ 02:10=Ein Vogel, ein Flugzeug, ... 02:10=Der verleiht Flügel! +; Hog (%1) has to leave (team is gone) +02:11=%1 muss ins Bett! +02:11=%1 scheint zu beschäftigt zu sein +02:11=Beam ihn hoch, Scotty! +02:11=%1 muss weg + ; Weapon Categories 03:00=Zeitzünder-Granate 03:01=Zeitzünder-Granate diff -r a68632232d1a -r e6e9b811d32f share/hedgewars/Data/Locale/en.txt --- a/share/hedgewars/Data/Locale/en.txt Tue Apr 06 09:58:43 2010 +0000 +++ b/share/hedgewars/Data/Locale/en.txt Tue Apr 06 10:51:09 2010 +0000 @@ -362,6 +362,12 @@ 02:10=A bird, a plane, ... 02:10=That one is out! +; Hog (%1) has to leave (team is gone) +02:11=%1 has to go to bed! +02:11=%1 seems too busy to play +02:11=Beam him up, Scotty! +02:11=%1 has to go + ; Weapon Categories 03:00=Timed Grenade 03:01=Timed Grenade