merge, mah friend, long time no see
authorkoda
Wed, 03 Jun 2015 14:52:30 +0100
changeset 10980 c1ef8a7da0c6
parent 10979 a332a60df7ce (diff)
parent 10977 b2823ea26631 (current diff)
child 10981 c92456ecdbad
merge, mah friend, long time no see
--- a/hedgewars/uScript.pas	Tue Jun 02 19:51:04 2015 +0100
+++ b/hedgewars/uScript.pas	Wed Jun 03 14:52:30 2015 +0100
@@ -87,7 +87,8 @@
     uIO,
     uVisualGearsList,
     uGearsHandlersMess,
-    uPhysFSLayer
+    uPhysFSLayer,
+    SDLh
 {$IFNDEF PAS2C}
     , typinfo
 {$ENDIF}
@@ -101,6 +102,7 @@
     ScriptLoaded : boolean;
     mapDims : boolean;
     PointsBuffer: shortstring;
+    prevCursorPoint: TPoint;  // why is tpoint still in sdlh...
 
 procedure ScriptPrepareAmmoStore; forward;
 procedure ScriptApplyAmmoStore; forward;
@@ -2615,6 +2617,8 @@
     exit;
 
 // push game variables so they may be modified by the script
+ScriptSetInteger('CursorX', CursorPoint.X);
+ScriptSetInteger('CursorY', CursorPoint.Y);
 ScriptSetInteger('BorderColor', ExplosionBorderColor);
 ScriptSetInteger('GameFlags', GameFlags);
 ScriptSetString('Seed', cSeed);
@@ -2773,6 +2777,23 @@
 ScriptSetInteger('GameTime', GameTicks);
 ScriptSetInteger('TotalRounds', TotalRounds);
 ScriptSetInteger('WaterLine', cWaterLine);
+if isCursorVisible and (not bShowAmmoMenu) then
+    if (prevCursorPoint.X <> CursorPoint.X) or 
+       (prevCursorPoint.Y <> CursorPoint.Y) then
+        begin
+        ScriptSetInteger('CursorX', CursorPoint.X - WorldDx);
+        ScriptSetInteger('CursorY', cScreenHeight - CursorPoint.Y- WorldDy);
+        prevCursorPoint.X:= CursorPoint.X;
+        prevCursorPoint.Y:= CursorPoint.Y;
+        end
+else
+    begin
+    ScriptSetInteger('CursorX', NoPointX);
+    ScriptSetInteger('CursorY', NoPointX);
+    prevCursorPoint.X:= NoPointX;
+    prevCursorPoint.Y:= NoPointX
+    end;
+
 if not mapDims then
     begin
     mapDims:= true;
@@ -3329,6 +3350,8 @@
 begin
 mapDims:= false;
 PointsBuffer:= '';
+prevCursorPoint.X:= NoPointX;
+prevCursorPoint.Y:= 0;
 end;
 
 procedure freeModule;
--- a/hedgewars/uWorld.pas	Tue Jun 02 19:51:04 2015 +0100
+++ b/hedgewars/uWorld.pas	Wed Jun 03 14:52:30 2015 +0100
@@ -1659,35 +1659,32 @@
 
 
 // Cursor
-if isCursorVisible then
+if isCursorVisible and (not bShowAmmoMenu) then
     begin
-    if (not bShowAmmoMenu) then
-        begin
-        if not CurrentTeam^.ExtDriven then TargetCursorPoint:= CursorPoint;
-        with CurrentHedgehog^ do
-            if (Gear <> nil) and ((Gear^.State and gstChooseTarget) <> 0) then
+    if not CurrentTeam^.ExtDriven then TargetCursorPoint:= CursorPoint;
+    with CurrentHedgehog^ do
+        if (Gear <> nil) and ((Gear^.State and gstChooseTarget) <> 0) then
+            begin
+        if (CurAmmoType = amNapalm) or (CurAmmoType = amMineStrike) or (((GameFlags and gfMoreWind) <> 0) and ((CurAmmoType = amDrillStrike) or (CurAmmoType = amAirAttack))) then
+            DrawLine(-3000, topY-300, 7000, topY-300, 3.0, (Team^.Clan^.Color shr 16), (Team^.Clan^.Color shr 8) and $FF, Team^.Clan^.Color and $FF, $FF);
+        i:= GetCurAmmoEntry(CurrentHedgehog^)^.Pos;
+        with Ammoz[CurAmmoType] do
+            if PosCount > 1 then
                 begin
-            if (CurAmmoType = amNapalm) or (CurAmmoType = amMineStrike) or (((GameFlags and gfMoreWind) <> 0) and ((CurAmmoType = amDrillStrike) or (CurAmmoType = amAirAttack))) then
-                DrawLine(-3000, topY-300, 7000, topY-300, 3.0, (Team^.Clan^.Color shr 16), (Team^.Clan^.Color shr 8) and $FF, Team^.Clan^.Color and $FF, $FF);
-            i:= GetCurAmmoEntry(CurrentHedgehog^)^.Pos;
-            with Ammoz[CurAmmoType] do
-                if PosCount > 1 then
+                if (CurAmmoType = amGirder) or (CurAmmoType = amTeleport) then
                     begin
-                    if (CurAmmoType = amGirder) or (CurAmmoType = amTeleport) then
-                        begin
-                    // pulsating transparency
-                        if ((GameTicks div 16) mod $80) >= $40 then
-                            Tint($FF, $FF, $FF, $C0 - (GameTicks div 16) mod $40)
-                        else
-                            Tint($FF, $FF, $FF, $80 + (GameTicks div 16) mod $40);
-                        end;
-                    DrawSprite(PosSprite, TargetCursorPoint.X - (SpritesData[PosSprite].Width shr 1), cScreenHeight - TargetCursorPoint.Y - (SpritesData[PosSprite].Height shr 1),i);
-                    Untint();
+                // pulsating transparency
+                    if ((GameTicks div 16) mod $80) >= $40 then
+                        Tint($FF, $FF, $FF, $C0 - (GameTicks div 16) mod $40)
+                    else
+                        Tint($FF, $FF, $FF, $80 + (GameTicks div 16) mod $40);
                     end;
+                DrawSprite(PosSprite, TargetCursorPoint.X - (SpritesData[PosSprite].Width shr 1), cScreenHeight - TargetCursorPoint.Y - (SpritesData[PosSprite].Height shr 1),i);
+                Untint();
                 end;
-        //DrawSprite(sprArrow, TargetCursorPoint.X, cScreenHeight - TargetCursorPoint.Y, (RealTicks shr 6) mod 8)
-        DrawTextureF(SpritesData[sprArrow].Texture, cDefaultZoomLevel / cScaleFactor, TargetCursorPoint.X + round(SpritesData[sprArrow].Width / cScaleFactor), cScreenHeight + round(SpritesData[sprArrow].Height / cScaleFactor) - TargetCursorPoint.Y, (RealTicks shr 6) mod 8, 1, SpritesData[sprArrow].Width, SpritesData[sprArrow].Height);
-        end
+            end;
+    //DrawSprite(sprArrow, TargetCursorPoint.X, cScreenHeight - TargetCursorPoint.Y, (RealTicks shr 6) mod 8)
+    DrawTextureF(SpritesData[sprArrow].Texture, cDefaultZoomLevel / cScaleFactor, TargetCursorPoint.X + round(SpritesData[sprArrow].Width / cScaleFactor), cScreenHeight + round(SpritesData[sprArrow].Height / cScaleFactor) - TargetCursorPoint.Y, (RealTicks shr 6) mod 8, 1, SpritesData[sprArrow].Width, SpritesData[sprArrow].Height);
     end;
 
 // debug stuff
Binary file share/hedgewars/Data/Graphics/missions.png has changed
--- a/share/hedgewars/Data/Scripts/Multiplayer/TechRacer.lua	Tue Jun 02 19:51:04 2015 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/TechRacer.lua	Wed Jun 03 14:52:30 2015 +0100
@@ -61,6 +61,13 @@
 -- randomly assign a map in the case of no map param
 -- no longer allow custom ammosets (ammo should be specified by map so that records can be valid, though we probably still need to completely limit gameflags)
 
+--------------
+--0.9
+--------------
+-- added variable portal limiter (and effects) from Escape script
+-- allow variable ufoFuel (nil is default, 2000 is infinite)
+-- disallow specifying fuel in params (do this in TechMaps or HedgeEditor please)
+
 -----------------------------
 -- SCRIPT BEGINS
 -----------------------------
@@ -155,8 +162,8 @@
 
 local activationStage = 0
 local jet = nil
-infUFO = nil
-
+portalDistance = 5000 -- 15
+ufoFuel = 0
 local fMod = 1000000 -- 1
 local roundLimit = 3
 local roundNumber = 0
@@ -668,8 +675,8 @@
 
 	parseParams()
 	mapID = tonumber(params["m"])
-	infUFO = params["ufo"]
 
+	--ufoFuel = tonumber(params["ufoFuel"])
 	roundLimit = tonumber(params["rounds"])
 
 	if (roundLimit == 0) or (roundLimit == nil) then
@@ -809,6 +816,10 @@
 		elseif specialPointsFlag[i] == 98 then
 			--PlaceStruc("weaponfilter")]]
 
+		elseif specialPointsFlag[i] == 98 then
+			portalDistance = specialPointsX[i]
+			ufoFuel = specialPointsY[i]
+
 		-- Normal Girders
 		elseif specialPointsFlag[i] == 100 then
 			PlaceSprite(specialPointsX[i], specialPointsY[i], sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
@@ -981,10 +992,14 @@
 
 function onGameTick20()
 
-		if (jet ~= nil) and (infUFO == "true") then
-			SetHealth(jet, 2000)
+		if (jet ~= nil) and (ufoFuel ~= 0) then
+			if ufoFuel == 2000 then
+				SetHealth(jet, 2000)
+			end
 		end
 
+		runOnGears(PortalEffects)
+
         -- airstrike detected, convert this into a potential waypoint spot
         if cGear ~= nil then
                 x,y = GetGearPosition(cGear)
@@ -1096,6 +1111,61 @@
 
 end
 
+-- handle short range portal gun
+function PortalEffects(gear)
+
+	if GetGearType(gear) == gtPortal then
+
+		tag = GetTag(gear)
+		if tag == 0 then
+			col = 0xfab02aFF -- orange ball
+		elseif tag == 1 then
+			col = 0x00FF00FF -- orange portal
+		elseif tag == 2 then
+			col = 0x364df7FF  -- blue ball
+		elseif tag == 3 then
+			col = 0xFFFF00FF  -- blue portal
+		end
+
+		if (tag == 0) or (tag == 2) then -- i.e ball form
+			tempE = AddVisualGear(GetX(gear), GetY(gear), vgtDust, 0, true)
+			g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+			SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, 1, g9, col )
+
+			remLife = getGearValue(gear,"life")
+			remLife = remLife - 1
+			setGearValue(gear, "life", remLife)
+
+			if remLife == 0 then
+
+				tempE = AddVisualGear(GetX(gear)+15, GetY(gear), vgtSmoke, 0, true)
+				g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+				SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, col )
+
+				tempE = AddVisualGear(GetX(gear)-15, GetY(gear), vgtSmoke, 0, true)
+				g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+				SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, col )
+
+				tempE = AddVisualGear(GetX(gear), GetY(gear)+15, vgtSmoke, 0, true)
+				g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+				SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, col )
+
+				tempE = AddVisualGear(GetX(gear), GetY(gear)-15, vgtSmoke, 0, true)
+				g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+				SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, col )
+
+
+				PlaySound(sndVaporize)
+				DeleteGear(gear)
+
+			end
+
+		end
+
+	end
+
+end
+
 function onGearResurrect(gear)
 
         AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
@@ -1112,6 +1182,7 @@
 		(GetGearType(gear) == gtTarget) or
 		(GetGearType(gear) == gtFlame) or
 		(GetGearType(gear) == gtExplosives) or
+		(GetGearType(gear) == gtPortal) or
 		(GetGearType(gear) == gtMine) or
 		(GetGearType(gear) == gtSMine) or
 		(GetGearType(gear) == gtAirMine) or
@@ -1125,21 +1196,28 @@
 
 function onGearAdd(gear)
 
-        if isATrackedGear(gear) then
-			trackGear(gear)
+       if isATrackedGear(gear) then
+		trackGear(gear)
+
+		if GetGearType(gear) == gtPortal then
+			setGearValue(gear,"life",portalDistance)
+		elseif GetGearType(gear) == gtHedgehog then
+            hhs[numhhs] = gear
+            numhhs = numhhs + 1
+            SetEffect(gear, heResurrectable, 1)
 		end
 
-		if GetGearType(gear) == gtHedgehog then
-                hhs[numhhs] = gear
-                numhhs = numhhs + 1
-                SetEffect(gear, heResurrectable, 1)
-        end
+	end
 
-        if GetGearType(gear) == gtAirAttack then
-                cGear = gear
-        elseif GetGearType(gear) == gtJetpack then
-			jet = gear
+	if GetGearType(gear) == gtAirAttack then
+       cGear = gear
+	elseif GetGearType(gear) == gtJetpack then
+		jet = gear
+		if (ufoFuel ~= 0) then
+			SetHealth(jet, ufoFuel)
 		end
+	end
+
 
 end
 
--- a/share/hedgewars/Data/Scripts/TechMaps.lua	Tue Jun 02 19:51:04 2015 +0100
+++ b/share/hedgewars/Data/Scripts/TechMaps.lua	Wed Jun 03 14:52:30 2015 +0100
@@ -8,6 +8,8 @@
 -- TO DO
 --------------
 -- continue to fix/improve old/broken/incompatible maps, and add more maps.
+-- add ufo fuel per map
+
 
 HedgewarsScriptLoad("/Scripts/Tracker.lua")
 
@@ -1480,7 +1482,7 @@
 
 		-- more detailed landflag test map, should hopefully work now
 		-- probably my second favorite techracer map
-		infUFO = "false"
+
 		------ GIRDER LIST ------
 		LoadSprite(402, 1863, sprAmGirder, 0, 16448250, nil, nil, nil, lfIce)
 		LoadSprite(442, 1863, sprAmGirder, 4, 16448250, nil, nil, nil, lfIce)
@@ -1714,7 +1716,7 @@
 	elseif mID == 3 then
 
 		--Helix airmine map
-		infUFO = "true"
+		ufoFuel = 2000
 		------ GIRDER LIST ------
 		LoadSprite(3703, 157, sprAmGirder, 7, 4294967295, nil, nil, nil, lfNormal)
 		LoadSprite(3846, 100, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
@@ -2347,7 +2349,6 @@
 	elseif mID == 6 then
 	--incomplete challenge, still working on this map
 
-	infUFO = "false"
 	------ GIRDER LIST ------
 	LoadSprite(419, 298, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
 	LoadSprite(348, 387, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
@@ -2396,6 +2397,157 @@
 	LoadSprite(1176, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
 	LoadSprite(1333, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
 	LoadSprite(1491, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1649, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1808, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1898, 1800, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1942, 1798, sprAmGirder, 3, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2010, 1798, sprAmGirder, 1, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2054, 1804, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2054, 1925, sprAmGirder, 2, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1898, 1639, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2054, 1643, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2125, 1553, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2197, 1464, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2126, 1374, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1965, 1374, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1804, 1374, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1733, 1464, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1823, 1547, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2023, 1976, sprAmGirder, 0, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1961, 2003, sprAmGirder, 3, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2216, 1464, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2234, 1464, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2252, 1464, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2270, 1464, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(2245, 1553, sprAmGirder, 0, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2246, 1374, sprAmGirder, 0, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2351, 1310, sprAmGirder, 7, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(2350, 1490, sprAmGirder, 7, 2516582650, nil, nil, nil, lfIndestructible)
+
+	------ RUBBER BAND LIST ------
+	LoadSprite(210, 958, sprAmRubber, 1, 4294967295, nil, nil, nil, lfBouncy)
+	LoadSprite(98, 844, sprAmRubber, 1, 4294967295, nil, nil, nil, lfBouncy)
+
+	------ LAND SPRITE LIST ------
+
+	------ WAYPOINT LIST ------
+	AddWayPoint(438, 278)
+	AddWayPoint(1870, 1354)
+	AddWayPoint(892, 1100)
+
+	------ HEALTH CRATE LIST ------
+
+	------ AMMO CRATE LIST ------
+	tempG = SpawnAmmoCrate(1943, 1978, amBazooka)
+	setGearValue(tempG,"caseType", "ammo")
+	setGearValue(tempG,"contents", "amBazooka")
+	tempG = SpawnAmmoCrate(2002, 1952, amSineGun)
+	setGearValue(tempG,"caseType", "ammo")
+	setGearValue(tempG,"contents", "amSineGun")
+	tempG = SpawnAmmoCrate(2002, 1890, amSineGun)
+	setGearValue(tempG,"caseType", "ammo")
+	setGearValue(tempG,"contents", "amSineGun")
+	tempG = SpawnAmmoCrate(2002, 1921, amSineGun)
+	setGearValue(tempG,"caseType", "ammo")
+	setGearValue(tempG,"contents", "amSineGun")
+	tempG = SpawnAmmoCrate(1998, 1859, amSineGun)
+	setGearValue(tempG,"caseType", "ammo")
+	setGearValue(tempG,"contents", "amSineGun")
+
+	------ UTILITY CRATE LIST ------
+	tempG = SpawnUtilityCrate(368, 274, amPickHammer)
+	setGearValue(tempG,"caseType", "util")
+	setGearValue(tempG,"contents", "amPickHammer")
+	tempG = SpawnUtilityCrate(526, 568, amExtraTime)
+	setGearValue(tempG,"caseType", "util")
+	setGearValue(tempG,"contents", "amExtraTime")
+	tempG = SpawnUtilityCrate(474, 1014, amExtraTime)
+	setGearValue(tempG,"caseType", "util")
+	setGearValue(tempG,"contents", "amExtraTime")
+	tempG = SpawnUtilityCrate(906, 1955, amRope)
+	setGearValue(tempG,"caseType", "util")
+	setGearValue(tempG,"contents", "amRope")
+	tempG = SpawnUtilityCrate(2127, 1529, amBlowTorch)
+	setGearValue(tempG,"caseType", "util")
+	setGearValue(tempG,"contents", "amBlowTorch")
+
+	------ BARREL LIST ------
+	SetHealth(AddGear(1860, 1523, gtExplosives, 0, 0, 0, 0), 1)
+	SetHealth(AddGear(1817, 1523, gtExplosives, 0, 0, 0, 0), 1)
+	SetHealth(AddGear(1836, 1493, gtExplosives, 0, 0, 0, 0), 1)
+	SetHealth(AddGear(1769, 1523, gtExplosives, 0, 0, 0, 0), 1)
+	SetHealth(AddGear(1792, 1494, gtExplosives, 0, 0, 0, 0), 1)
+
+	------ MINE LIST ------
+	SetTimer(AddGear(318, 1028, gtMine, 0, 0, 0, 0), 1)
+
+	------ STICKY MINE LIST ------
+	tempG = AddGear(1767, 1506, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1792, 1477, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1813, 1506, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1837, 1476, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1858, 1506, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1882, 1537, gtSMine, 0, 0, 0, 0)
+	tempG = AddGear(1748, 1537, gtSMine, 0, 0, 0, 0)
+
+	------ AIR MINE LIST ------
+	SetTimer(AddGear(837, 1570, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(835, 1361, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(836, 1425, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(833, 1495, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(967, 1566, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(970, 1354, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(967, 1422, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(968, 1493, gtAirMine, 0, 0, 0, 0), 1)
+
+	--[[------ GIRDER LIST ------
+	LoadSprite(419, 298, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(348, 387, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(521, 359, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(459, 385, sprAmGirder, 3, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(570, 387, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(601, 298, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(348, 547, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(570, 547, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(348, 707, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(570, 707, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(397, 466, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(458, 491, sprAmGirder, 1, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(521, 592, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(458, 620, sprAmGirder, 3, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(397, 713, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(459, 740, sprAmGirder, 1, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(348, 867, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(570, 866, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(641, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(800, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(959, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(482, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(323, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(163, 1038, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(48, 1038, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(813, 1126, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(989, 1127, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(989, 1288, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(989, 1449, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(813, 1287, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(813, 1448, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(900, 1214, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(989, 1570, sprAmGirder, 2, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(813, 1569, sprAmGirder, 2, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(813, 1690, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(521, 844, sprAmGirder, 0, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(457, 870, sprAmGirder, 3, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(392, 941, sprAmGirder, 1, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(813, 1851, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(813, 1972, sprAmGirder, 2, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(989, 1690, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1044, 1817, sprAmGirder, 5, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(901, 1979, sprAmGirder, 4, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(1002, 2005, sprAmGirder, 1, 4294967295, nil, nil, nil, lfNormal)
+	LoadSprite(1176, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1333, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
+	LoadSprite(1491, 1873, sprAmGirder, 4, 2516582650, nil, nil, nil, lfIndestructible)
 	LoadSprite(1625, 1815, sprAmGirder, 7, 2516582650, nil, nil, nil, lfIndestructible)
 	LoadSprite(1680, 1688, sprAmGirder, 6, 2516582650, nil, nil, nil, lfIndestructible)
 	LoadSprite(1669, 1980, sprAmGirder, 7, 4294967295, nil, nil, nil, lfNormal)
@@ -2467,13 +2619,13 @@
 	SetTimer(AddGear(967, 1566, gtAirMine, 0, 0, 0, 0), 1)
 	SetTimer(AddGear(970, 1354, gtAirMine, 0, 0, 0, 0), 1)
 	SetTimer(AddGear(967, 1422, gtAirMine, 0, 0, 0, 0), 1)
-	SetTimer(AddGear(968, 1493, gtAirMine, 0, 0, 0, 0), 1)
+	SetTimer(AddGear(968, 1493, gtAirMine, 0, 0, 0, 0), 1)]]
 
 	elseif mID == 7 then
 	--Bouncy UFO MAP
 	-- should be played with infinite fuel
 
-	infUFO = "true"
+	ufoFuel = 2000
 	------ GIRDER LIST ------
 	LoadSprite(3699, 436, sprAmGirder, 0, 16448250, nil, nil, nil, lfIce)
 	LoadSprite(934, 806, sprAmGirder, 6, 4294967295, nil, nil, nil, lfNormal)
@@ -3027,7 +3179,6 @@
 
 	else
 
-		infUFO = "false"
 		-- the first test epic multi map
 		-- default to this crazy shit
 		---------- GIRDER LIST---------