diff -r 01f88c3b7b66 -r 1b2b84315d27 share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua --- a/share/hedgewars/Data/Missions/Training/User_Mission_-_RCPlane_Challenge.lua Thu Aug 11 23:05:14 2016 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,494 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") - -local player = nil -local RCGear = nil -local planesUsed = 0 -local planeTimer = 0 -local planeUhOh = false -local cratesLeft = 0 -local crateStreak = 0 -local longestCrateStreak = 0 -local commentTimer = 0 -local missiles = 0 -local totalMissiles = 0 -local missileScanTimer = 0 -local nextComment = sndNone - -function onGameInit() - - Seed = 1 - GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode + gfSolidLand - - TurnTime = 90 * 1000 - - Map = "Ropes" - Theme = "Eyes" - - CaseFreq = 0 - MinesNum = 0 - Explosives = 0 - - AddTeam(loc("Wannabe Flyboys"), 14483456, "Simple", "Island", "Default", "Hedgewars") - player = AddHog(loc("Ace"), 0, 80, "Gasmask") - SetGearPosition(player, 1380, 1500) - -end - - - -function onGameStart() - - SendHealthStatsOff() - - ShowMission ( - loc("RC PLANE TRAINING"), - loc("a Hedgewars challenge"), - - loc("Collect or destroy all the health crates.") .. "|" .. - loc("Compete to use as few planes as possible!") .. "|" .. - "", -amRCPlane, 4000 - ) - - PlaceGirder(2192, 508, 6) - PlaceGirder(2192, 670, 6) - PlaceGirder(2193, 792, 2) - PlaceGirder(2100, 825, 4) - PlaceGirder(2009, 899, 6) - PlaceGirder(2084, 992, 4) - PlaceGirder(2145, 1087, 6) - PlaceGirder(2199, 1235, 5) - PlaceGirder(2308, 1296, 0) - PlaceGirder(2424, 1234, 7) - PlaceGirder(2473, 1129, 2) - PlaceGirder(2437, 1046, 1) - PlaceGirder(2409, 927, 6) - PlaceGirder(2408, 763, 6) - PlaceGirder(2404, 540, 6) - PlaceGirder(2426, 423, 3) - PlaceGirder(2550, 400, 4) - PlaceGirder(2668, 425, 1) - PlaceGirder(2707, 541, 6) - PlaceGirder(2706, 703, 6) - PlaceGirder(2705, 867, 6) - PlaceGirder(2779, 962, 4) - PlaceGirder(2894, 924, 3) - PlaceGirder(2908, 802, 6) - PlaceGirder(2907, 639, 6) - PlaceGirder(3052, 566, 4) - PlaceGirder(2971, 394, 4) - PlaceGirder(3103, 448, 7) - PlaceGirder(3047, 654, 0) - PlaceGirder(3043, 746, 6) - PlaceGirder(3265, 1583, 6) - PlaceGirder(3256, 1491, 4) - PlaceGirder(3187, 1401, 6) - PlaceGirder(3326, 1400, 6) - PlaceGirder(774, 530, 5) - PlaceGirder(922, 595, 4) - PlaceGirder(1079, 533, 7) - PlaceGirder(1139, 386, 6) - PlaceGirder(1074, 237, 5) - PlaceGirder(723, 381, 6) - PlaceGirder(781, 229, 7) - PlaceGirder(927, 746, 6) - PlaceGirder(874, 736, 0) - PlaceGirder(982, 737, 0) - PlaceGirder(2430, 1730, 4) - - PlaceGirder(1613, 1104, 7) - PlaceGirder(1564, 1256, 6) - PlaceGirder(1643, 1341, 5) - PlaceGirder(1780, 1372, 4) - PlaceGirder(1869, 1296, 7) - PlaceGirder(1858, 1163, 5) - PlaceGirder(1739, 1044, 5) - PlaceGirder(1621, 926, 5) - PlaceGirder(1597, 985, 5) - PlaceGirder(1449, 939, 4) - PlaceGirder(1473, 874, 4) - PlaceGirder(2092, 1352, 7) - PlaceGirder(2145, 1444, 7) - PlaceGirder(2004, 1443, 3) - PlaceGirder(1978, 1523, 2) - PlaceGirder(2021, 1596, 1) - PlaceGirder(2103, 1625, 0) - PlaceGirder(2208, 1551, 7) - PlaceGirder(2327, 1431, 7) - PlaceGirder(2395, 1478, 6) - PlaceGirder(2396, 1600, 2) - PlaceGirder(2495, 1285, 6) - PlaceGirder(2494, 1408, 2) - PlaceGirder(2547, 530, 0) - - PlaceGirder(2451, 1551, 0) - PlaceGirder(2551, 706, 6) - PlaceGirder(2551, 869, 6) - PlaceGirder(2623, 1016, 5) - PlaceGirder(2773, 1083, 4) - PlaceGirder(2924, 1019, 7) - PlaceGirder(2568, 1491, 7) - PlaceGirder(2618, 1346, 6) - PlaceGirder(2674, 1195, 7) - PlaceGirder(2822, 1142, 4) - PlaceGirder(2963, 1069, 7) - PlaceGirder(3067, 938, 5) - PlaceGirder(2803, 1373, 2) - PlaceGirder(2811, 1559, 2) - - tempG = SpawnHealthCrate(930, 557) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(979, 692) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(876, 703) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2309, 1260) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1733, 1127) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1738, 1320) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3249, 1460) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3051, 617) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2972, 353) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2548, 358) - - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2090, 1580) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1752, 1753) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1865, 1758) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1985, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2429, 1760) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2810, 1480) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2800, 1277) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2806, 1107) - SetHealth(tempG, 25) - - PlaceGirder(1897, 903, 6) - PlaceGirder(1916, 784, 3) - PlaceGirder(2010, 732, 4) - PlaceGirder(2082, 639, 6) - PlaceGirder(2081, 516, 2) - PlaceGirder(1985, 487, 4) - PlaceGirder(1862, 407, 5) - PlaceGirder(1855, 224, 7) - PlaceGirder(2006, 163, 4) - PlaceGirder(2128, 187, 1) - PlaceGirder(2251, 213, 4) - PlaceGirder(2413, 213, 4) - PlaceGirder(1952, 618, 0) - PlaceGirder(957, 1068, 4) - PlaceGirder(794, 1069, 4) - PlaceGirder(728, 1163, 6) - PlaceGirder(728, 1287, 2) - PlaceGirder(802, 1342, 4) - PlaceGirder(966, 1342, 4) - PlaceGirder(674, 1032, 1) - PlaceGirder(554, 1011, 4) - PlaceGirder(445, 1056, 3) - PlaceGirder(422, 1174, 6) - PlaceGirder(369, 1341, 5) - PlaceGirder(495, 1313, 5) - PlaceGirder(568, 1379, 3) - PlaceGirder(577, 1202, 2) - PlaceGirder(744, 1490, 5) - PlaceGirder(760, 1617, 7) - PlaceGirder(622, 1693, 4) - PlaceGirder(476, 1623, 5) - PlaceGirder(376, 1697, 1) - PlaceGirder(955, 1746, 2) - PlaceGirder(1025, 1746, 2) - PlaceGirder(1090, 1745, 2) - PlaceGirder(1156, 1746, 2) - PlaceGirder(3806, 1530, 2) - PlaceGirder(3880, 1464, 2) - PlaceGirder(3738, 1458, 2) - PlaceGirder(3806, 1390, 2) - PlaceGirder(3805, 1588, 0) - PlaceGirder(3676, 1609, 3) - PlaceGirder(3930, 1615, 1) - PlaceGirder(3719, 1295, 0) - PlaceGirder(3888, 1294, 0) - PlaceGirder(3661, 1385, 2) - PlaceGirder(3955, 1377, 2) - PlaceGirder(3982, 1518, 0) - PlaceGirder(3378, 440, 2) - PlaceGirder(3447, 492, 4) - PlaceGirder(3564, 529, 1) - PlaceGirder(3596, 647, 6) - PlaceGirder(3521, 740, 4) - PlaceGirder(3524, 838, 4) - PlaceGirder(3644, 819, 3) - PlaceGirder(3691, 708, 6) - PlaceGirder(3690, 545, 6) - PlaceGirder(3612, 433, 5) - PlaceGirder(3463, 383, 4) - PlaceGirder(2815, 122, 7) - PlaceGirder(2960, 72, 4) - PlaceGirder(3032, 123, 2) - PlaceGirder(3063, 174, 0) - PlaceGirder(3095, 124, 2) - PlaceGirder(3169, 71, 4) - PlaceGirder(3320, 124, 5) - PlaceGirder(3210, 179, 2) - PlaceGirder(2932, 181, 2) - - tempG = SpawnHealthCrate(3804, 1461) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3269, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3066, 121) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3207, 104) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2928, 103) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1997, 202) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2253, 159) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2132, 774) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(2549, 490) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3527, 694) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3777, 78) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1124, 1746) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1056, 1740) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(993, 1742) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(799, 1298) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(577, 1126) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(596, 1463) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(3854, 1043) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(1944, 567) - SetHealth(tempG, 25) - tempG = SpawnHealthCrate(338, 1748) - SetHealth(tempG, 25) - - -end - ---function onGameTick() - - --if RCGear ~= nil then - -- AddCaption(GetTimer(RCGear)) - --end - ---end - -function onGameTick20() - if RCGear ~= nil then - if(GetTimer(RCGear) < 3000 and planeUhOh == false) then - PlaySound(sndUhOh, player) - planeUhOh = true - end - planeTimer = planeTimer + 20 - end - if commentTimer > 0 then - commentTimer = commentTimer - 20 - elseif(nextComment ~= sndNone) then - PlaySound(nextComment, player) - nextComment = sndNone - end - if missileScanTimer > 0 then - missileScanTimer = missileScanTimer - 20 - else - if crateStreak == 0 and missiles == 3 then - PlaySound(sndMissed, player) - missiles = 4 - end - end -end - -function onNewTurn() - TurnTimeLeft = -1 -end - -function onGearAdd(gear) - - if GetGearType(gear) == gtRCPlane then - RCGear = gear - planesUsed = planesUsed + 1 - planeTimer = 0 - missiles = 0 - end - - if GetGearType(gear) == gtCase then - cratesLeft = cratesLeft + 1 - end - - if GetGearType(gear) == gtAirBomb then - totalMissiles = totalMissiles + 1 - end -end - -function onGearDelete(gear) - - if GetGearType(gear) == gtRCPlane then - - RCGear = nil - planeUhOh = false - missiles = 0 - AddCaption(string.format(loc("Planes used: %d"), planesUsed)) - - if(planeTimer < 2000 and crateStreak == 0) then - nextComment = sndStupid - commentTimer = math.min(2000-planeTimer, 800) - elseif(planeTimer < 5000 and crateStreak == 0) then - PlaySound(sndOops, player) - elseif(planesUsed == 72) then - PlaySound(sndStupid, player) - elseif(planesUsed == 50) then - PlaySound(sndNutter, player) - elseif(planesUsed == 30) then - PlaySound(sndOops, player) - end - - crateStreak = 0 - - elseif GetGearType(gear) == gtAirBomb then - missiles = missiles + 1 - missileScanTimer = 500 - - elseif GetGearType(gear) == gtCase then - - cratesLeft = cratesLeft - 1 - crateStreak = crateStreak + 1 - if(crateStreak > longestCrateStreak) then - longestCrateStreak = crateStreak - end - - AddCaption(string.format(loc("Crates left: %d"), cratesLeft)) - - if cratesLeft == 0 then - - local rank = "unknown" - local color = 0xFFFFFFFF - local sound = sndVictory - if planesUsed >= 156 then - rank = loc("Destroyer of planes") - color = 0xD06700FF - sound = sndLaugh - elseif planesUsed >= 98 then - rank = loc("Hopeless case") - color = 0xFF0000FF - elseif planesUsed >= 72 then - rank = loc("Drunk greenhorn") - color = 0xFF0040FF - elseif planesUsed >= 50 then - rank = loc("Greenhorn") -- a.k.a. "absolute beginner" - color = 0xFF0080FF - elseif planesUsed >= 39 then - rank = loc("Beginner") - color = 0xFF00BFFF - elseif planesUsed >= 30 then - rank = loc("Experienced beginner") - color = 0xFF00CCFF - elseif planesUsed >= 21 then - rank = loc("Below-average pilot") - color = 0xFF00FFFF - elseif planesUsed >= 17 then - rank = loc("Average pilot") - color = 0xBF00FFFF - elseif planesUsed >= 13 then - rank = loc("Above-average pilot") - color = 0x8000FFFF - elseif planesUsed >= 8 then - rank = loc("Professional pilot") - color = 0x4000FFFF - elseif planesUsed >= 5 then - rank = loc("Professional stunt pilot") - color = 0x0000FFFF - elseif planesUsed >= 3 then - rank = loc("Elite pilot") - color = 0x0040FFFF - elseif planesUsed == 2 then - rank = loc("Upper-class elite pilot") - color = 0x0080FFFF - elseif planesUsed == 1 then - rank = loc("Top-class elite pilot") - color = 0x00FFFFFF - sound = sndFlawless - else - rank = loc("Cheater") - color = 0xFF0000FF - sound = sndCoward - end - AddCaption(string.format(loc("Rank: %s"), rank), color, capgrpMessage2) - SendStat(siCustomAchievement, string.format(loc("Your rank: %s"), rank)) - if planesUsed == 1 then - AddCaption(loc("Flawless victory!")) - SendStat(siGameResult, loc("You have perfectly beaten the challenge!")) - SendStat(siCustomAchievement, loc("You have used only 1 RC plane. Outstanding!")) - else - AddCaption(loc("Victory!")) - SendStat(siGameResult, loc("You have finished the challenge!")) - SendStat(siCustomAchievement, string.format(loc("You have used %d RC planes."), planesUsed)) - end - - if(totalMissiles > 1) then - SendStat(siCustomAchievement, string.format(loc("You have dropped %d missiles."), totalMissiles)) - end - - if(longestCrateStreak > 5) then - if(planesUsed == 1) then - SendStat(siCustomAchievement, string.format(loc("In your best (and only) flight you took out %d crates with one RC plane!"), longestCrateStreak)) - else - SendStat(siCustomAchievement, string.format(loc("In your best flight you took out %d crates with one RC plane."), longestCrateStreak)) - end - end - - if(planesUsed == 2) then - SendStat(siCustomAchievement, loc("This was an awesome performance! But this challenge can be finished with even just one RC plane. Can you figure out how?")) - end - if(planesUsed == 1) then - SendStat(siCustomAchievement, loc("Congratulations! You have truly mastered this challenge! Don't forget to save the demo.")) - SendStat(siCustomAchievement, string.format(loc("You have gained an achievement: %s"), loc("Prestigious Pilot"))) - end - - ShowMission ( - loc("CHALLENGE COMPLETE"), - loc("Congratulations!"), - string.format(loc("Planes used: %d"), planesUsed) .. "|" .. - "", 0, 0 - ) - SetState(player, gstWinner) - PlaySound(sound, player) - - - DismissTeam(loc("Wannabe Flyboys")) - EndGame() - end - - if RCGear ~= nil then - SetTimer(RCGear, GetTimer(RCGear) + 10000) - end - end - -end - -function onAmmoStoreInit() - SetAmmo(amRCPlane, 9, 0, 0, 0) -end - -function onNewTurn() - SetWeapon(amRCPlane) -end