1-- Stratagus Map - Single player campaign 2 3Load("campaigns/orc-exp/levelx12o_c2.sms") 4 5Briefing( 6 title, 7 objectives, 8 "../campaigns/orc/interface/introscreen5.png", 9 "campaigns/orc-exp/levelx12o.txt", 10 {"campaigns/orc-exp/levelx12o-intro1.wav", 11 "campaigns/orc-exp/levelx12o-intro2.wav", 12 "campaigns/orc-exp/levelx12o-intro3.wav"} 13) 14 15Triggers = [[ 16-- FIXME: Check if units are destroyed. 17AddTrigger( 18 function() return GetNumOpponents(GetThisPlayer()) == 0 end, 19 function() return ActionVictory() end) 20 21AddTrigger( 22 function() return GetPlayerData(GetThisPlayer(), "TotalNumUnits") == 0 end, 23 function() return ActionDefeat() end) 24]] 25 26assert(loadstring(Triggers))() 27 28--Units 29DefineAllowNormalHumanUnits("AAAAAAAAAAAAAAAA") 30DefineAllowExtraHumanUnits("FFFFFFFFFFFFFFFF") 31DefineAllowNormalOrcUnits("AAAAAAAAAAAAAAAA") 32DefineAllowExtraOrcUnits("FFFFFFFFFFFFFFFF") 33DefineAllowSpecialUnits("FFFFFFFFFFFFFFFF") 34DefineAllowHumanAlways() 35DefineAllowOrcAlways() 36 37local orc_exp_12a_loop_funcs = { 38 function() DebugPrint("Looping !\n") return false end, 39 function() return AiSleep(5000) end, 40 function() return AiForce(1, {AiSoldier(), 4, AiShooter(), 3, AiCavalry(), 2, AiCatapult(), 2}) end, 41 function() return AiWaitForce(1) end, 42 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 43 function() stratagus.gameData.AIState.loop_index[1 + AiPlayer()] = 0; return false end, 44} 45 46local orc_exp_12b_loop_funcs = { 47 function() DebugPrint("Looping !\n") return false end, 48 function() return AiSleep(3000) end, 49 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 3, AiCavalry(), 3, AiCatapult(), 1, AiMage(), 2}) end, 50 function() return AiWaitForce(1) end, 51 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 52 function() stratagus.gameData.AIState.loop_index[1 + AiPlayer()] = 0; return false end, 53} 54 55local orc_exp_12c_loop_funcs = { 56 function() DebugPrint("Looping !\n") return false end, 57 function() return AiSleep(5000) end, 58 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 4, AiCatapult(), 1, AiCavalry(), 3, AiMage(), 2}) end, 59 function() return AiWaitForce(1) end, 60 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 61 function() stratagus.gameData.AIState.loop_index[1 + AiPlayer()] = 0; return false end, 62} 63 64local orc_exp_12d_loop_funcs = { 65 function() DebugPrint("Looping !\n") return false end, 66 function() return AiSleep(5000) end, 67 function() return AiForce(3, {AiFlyer(), 3}) end, 68 function() return AiWaitForce(3) end, 69 function() DebugMessage("Attacking..."); return AiAttackWithForce(3) end, 70 function() stratagus.gameData.AIState.loop_index[1 + AiPlayer()] = 0; return false end, 71} 72 73local orc_exp_12a_funcs = { 74 function() return AiNeed(AiBarracks()) end, 75 function() return AiUpgradeTo(AiBetterCityCenter()) end, 76 function() return AiNeed(AiLumberMill()) end, 77 function() return AiNeed(AiBlacksmith()) end, 78 function() return AiResearch(AiUpgradeArmor1()) end, 79 function() return AiResearch(AiUpgradeWeapon1()) end, 80 81 function() return AiNeed(AiBarracks()) end, 82 function() return AiNeed(AiStables()) end, 83 function() return AiSet(AiWorker(), 7) end, 84 function() return AiWait(AiWorker()) end, 85 86 function() return AiForce(1, {AiSoldier(), 4, AiShooter(), 3, AiCavalry(), 2, AiCatapult(), 2}) end, 87 function() return AiWaitForce(1) end, 88 function() return AiSleep(5000) end, 89 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 90 91 function() return AiLoop(orc_exp_12a_loop_funcs, stratagus.gameData.AIState.loop_index) end, 92} 93 94local orc_exp_12b_funcs = { 95 function() return AiNeed(AiLumberMill()) end, 96 function() return AiNeed(AiBarracks()) end, 97 function() return AiSet(AiWorker(), 9) end, 98 function() return AiWait(AiWorker()) end, 99 100 function() return AiForce(1, {AiSoldier(), 3, AiShooter(), 2}) end, 101 function() return AiNeed(AiBlacksmith()) end, 102 function() return AiNeed(AiStables()) end, 103 function() return AiNeed(AiTower()) end, 104 function() return AiNeed(AiTower()) end, 105 function() return AiUpgradeTo(AiGuardTower()) end, 106 function() return AiUpgradeTo(AiGuardTower()) end, 107 function() return AiNeed(AiBarracks()) end, 108 109 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 3, AiCavalry(), 3, AiCatapult(), 1}) end, 110 function() return AiWaitForce(1) end, 111 function() return AiResearch(AiUpgradeWeapon1()) end, 112 function() return AiResearch(AiUpgradeMissile1()) end, 113 function() return AiResearch(AiUpgradeArmor1()) end, 114 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 115 116 function() return AiResearch(AiUpgradeCavalryMage()) end, 117 function() return AiResearch(AiCavalryMageSpell1()) end, 118 function() return AiResearch(AiUpgradeMissile2()) end, 119 function() return AiResearch(AiUpgradeArmor2()) end, 120 function() return AiNeed(AiMageTower()) end, 121 function() return AiResearch(AiMageSpell2()) end, 122 function() return AiResearch(AiMageSpell3()) end, 123 124 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 3, AiCavalry(), 3, AiCatapult(), 1, AiMage(), 2}) end, 125 function() return AiWaitForce(1) end, 126 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 127 128 function() return AiLoop(orc_exp_12b_loop_funcs, stratagus.gameData.AIState.loop_index) end, 129} 130 131local orc_exp_12c_funcs = { 132 function() return AiNeed(AiCityCenter()) end, 133 function() return AiNeed(AiLumberMill()) end, 134 function() return AiNeed(AiBarracks()) end, 135 function() return AiNeed(AiBlacksmith()) end, 136 function() return AiNeed(AiTower()) end, 137 function() return AiUpgradeTo(AiGuardTower()) end, 138 function() return AiNeed(AiBarracks()) end, 139 function() return AiUpgradeTo(AiBetterCityCenter()) end, 140 function() return AiNeed(AiStables()) end, 141 function() return AiResearch(AiUpgradeWeapon1()) end, 142 function() return AiResearch(AiUpgradeMissile1()) end, 143 function() return AiResearch(AiUpgradeArmor1()) end, 144 function() return AiUpgradeTo(AiBestCityCenter()) end, 145 function() return AiNeed(AiTemple()) end, 146 function() return AiResearch(AiUpgradeCavalryMage()) end, 147 function() return AiResearch(AiCavalryMageSpell1()) end, 148 function() return AiNeed(AiMageTower()) end, 149 function() return AiResearch(AiMageSpell4()) end, 150 function() return AiResearch(AiMageSpell5()) end, 151 152 function() return AiSet(AiWorker(), 8) end, 153 function() return AiWait(AiWorker()) end, 154 155 function() return AiSet(AiWorker(), 11) end, 156 function() return AiWait(AiBetterCityCenter()) end, 157 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 4, AiCatapult(), 1, AiCavalry(), 3}) end, 158 function() return AiWaitForce(1) end, 159 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 160 161 function() return AiWait(AiBestCityCenter()) end, 162 function() return AiForce(1, {AiSoldier(), 5, AiShooter(), 4, AiCatapult(), 1, AiCavalry(), 3}) end, 163 function() return AiWaitForce(1) end, 164 function() DebugMessage("Attacking..."); return AiAttackWithForce(1) end, 165 166 function() return AiLoop(orc_exp_12c_loop_funcs, stratagus.gameData.AIState.loop_index) end, 167} 168 169local orc_exp_12d_funcs = { 170 function() return AiSet(AiWorker(), 12) end, 171 function() return AiWait(AiWorker()) end, 172 function() return AiSet(AiTanker(), 3) end, 173 function() return AiNeed(AiBarracks()) end, 174 function() return AiNeed(AiBarracks()) end, 175 function() return AiNeed(AiTower()) end, 176 function() return AiUpgradeTo(AiGuardTower()) end, 177 function() return AiNeed(AiLumberMill()) end, 178 function() return AiNeed(AiBlacksmith()) end, 179 function() return AiNeed(AiStables()) end, 180 function() return AiNeed(AiHarbor()) end, 181 function() return AiNeed(AiFoundry()) end, 182 function() return AiResearch(AiUpgradeShipArmor1()) end, 183 function() return AiResearch(AiUpgradeShipCannon1()) end, 184 function() return AiResearch(AiUpgradeShipArmor2()) end, 185 function() return AiResearch(AiUpgradeShipCannon2()) end, 186 function() return AiResearch(AiUpgradeCatapult1()) end, 187 function() return AiNeed(AiMageTower()) end, 188 function() return AiNeed(AiAirport()) end, 189 function() return AiNeed(AiTemple()) end, 190 function() return AiResearch(AiUpgradeCavalryMage()) end, 191 function() return AiResearch(AiCavalryMageSpell1()) end, 192 function() return AiResearch(AiCavalryMageSpell2()) end, 193 function() return AiResearch(AiMageSpell1()) end, 194 function() return AiResearch(AiMageSpell2()) end, 195 function() return AiResearch(AiMageSpell3()) end, 196 function() return AiResearch(AiMageSpell4()) end, 197 function() return AiResearch(AiMageSpell5()) end, 198 function() return AiResearch(AiUpgradeWeapon1()) end, 199 function() return AiResearch(AiUpgradeMissile1()) end, 200 function() return AiResearch(AiUpgradeArmor1()) end, 201 function() return AiResearch(AiUpgradeWeapon2()) end, 202 function() return AiResearch(AiUpgradeMissile2()) end, 203 function() return AiResearch(AiUpgradeArmor2()) end, 204 function() return AiResearch(AiUpgradeEliteShooter()) end, 205 function() return AiResearch(AiUpgradeEliteShooter1()) end, 206 function() return AiResearch(AiUpgradeEliteShooter2()) end, 207 function() return AiResearch(AiUpgradeEliteShooter3()) end, 208 209 function() return AiForce(1, {AiDestroyer(), 3, AiBattleship(), 3, AiSubmarine(), 2}) end, 210 function() return AiForce(2, {AiShooter(), 6, AiCavalry(), 8, AiCatapult(), 2, AiMage(), 4}) end, 211 212 function() return AiForce(3, {AiFlyer(), 3}) end, 213 function() return AiWaitForce(3) end, 214 function() return AiSleep(2000) end, 215 function() DebugMessage("Attacking..."); return AiAttackWithForce(3) end, 216 217 function() return AiLoop(orc_exp_12d_loop_funcs, stratagus.gameData.AIState.loop_index) end, 218} 219 220function AiOrcExp12a() return AiLoop(orc_exp_12a_funcs, stratagus.gameData.AIState.index) end 221function AiOrcExp12b() return AiLoop(orc_exp_12b_funcs, stratagus.gameData.AIState.index) end 222function AiOrcExp12c() return AiLoop(orc_exp_12c_funcs, stratagus.gameData.AIState.index) end 223function AiOrcExp12d() return AiLoop(orc_exp_12d_funcs, stratagus.gameData.AIState.index) end 224DefineAi("orc-exp-12a", "*", "orc-exp-12a", AiOrcExp12a) 225DefineAi("orc-exp-12b", "*", "orc-exp-12b", AiOrcExp12b) 226DefineAi("orc-exp-12c", "*", "orc-exp-12c", AiOrcExp12c) 227DefineAi("orc-exp-12d", "*", "orc-exp-12d", AiOrcExp12d) 228 229Load("campaigns/orc-exp/levelx12o.sms") 230 231-- Default Spells Researched 232DefineAllow("upgrade-holy-vision", "RRRRRRRRRRRRRRRR") 233DefineAllow("upgrade-fireball", "RRRRRRRRRRRRRRRR") 234DefineAllow("upgrade-eye-of-kilrogg", "RRRRRRRRRRRRRRRR") 235DefineAllow("upgrade-death-coil", "RRRRRRRRRRRRRRRR") 236 237-- Extra Spells Begin Researched in this Mission 238DefineAllow("upgrade-bloodlust", "RRRRRRRRRRRRRRRR") 239DefineAllow("upgrade-runes", "RRRRRRRRRRRRRRRR") 240DefineAllow("upgrade-raise-dead", "RRRRRRRRRRRRRRRR") 241DefineAllow("upgrade-whirlwind", "RRRRRRRRRRRRRRRR") 242DefineAllow("upgrade-haste", "RRRRRRRRRRRRRRRR") 243DefineAllow("upgrade-unholy-armor", "RRRRRRRRRRRRRRRR") 244DefineAllow("upgrade-death-and-decay", "RRRRRRRRRRRRRRRR")