//------------------------------------------------------------------- // STANDARD INCLUDES: //------------------------------------------------------------------- //#include ..\..\externalobjects.cs //#include ..\..\playerAreas.cs //#include ..\..\terrainpicker.cs //#include ..\..\HuntingAreas.cs //#include ..\..\nuggetUtils.cs //#include ..\..\default_start_groupings.cs //#include ..\..\Utils_CommonTriggers.cs //#include ..\..\Utils_CivHandler.cs //#include ..\..\Utils_GameTuning.cs //#include ..\..\Utils_Helpers.cs //#include ..\..\Utils_Econ.cs //#include ..\..\Utils_TriggerConditionWrappers.cs //#include ..\..\Utils_TriggerEffectWrappers.cs //#include ..\Utils_Celeste.cs //#include ..\Utils_TechId.cs //------------------------------------------------------------------- //------------------------------------------------------------------- // SCRIPT START: //------------------------------------------------------------------- public partial class RMScript : RandomMap { private bool _bIsRepeat; private bool _bIsElite; private bool _bIsLegendary; private int _mainPlayerId; private int _coopPlayerId; private bool _isMapCoop; //--------------------------------------------------------------- // MAIN: //--------------------------------------------------------------- public override void Main() { //----------------------------------------------------------- // SETUP: //----------------------------------------------------------- UtilsGT_PreInit(); SetStatusText("", 0.01f); // see if this is a repeatable _bIsRepeat = VariableGet("IsREPEAT", false); // see if this is a elite _bIsElite = VariableGet("bIsELITE", false); // see if this is a legendary _bIsLegendary = VariableGet("IsLEGENDARY", false); // fetch variable from the mission var scenarioFile = VariableGet("scenarioFile", ""); if (string.IsNullOrEmpty(scenarioFile)) { // early out on invalid scenario SetStatusText("Failed to load. Invalid scenarioFile.", 1.0f); return; } // PreInitSetup(); // terrain and scenario creation GetTerrain("Greek Inland"); InitializeFromScenario(scenarioFile); SetSkipBeautify(true); // class and mission tool data spawns var questTargetClass = new Class("questTargets"); var nuggets = new Class("nuggets"); Constraint questTargetConstraint = new ClassDistanceConstraint("quest target constraint", questTargetClass, 30.0f); Constraint avoidNuggets = new ClassDistanceConstraint("avoidNuggets", nuggets, 5.0f); PlaceExternalObjects(questTargetClass, 0.0f); // UtilsGT_Init(); // _mainPlayerId = VariableGet("MainPlayerID", -1); if (_mainPlayerId == -1) { Info("No MainPlayerID specified, defaulting to 1"); _mainPlayerId = 1; } _coopPlayerId = VariableGet("CoopPlayerID", -1); _isMapCoop = _coopPlayerId != -1 && IsPlayerHuman(_coopPlayerId); //----------------------------------------------------------- // Place player //----------------------------------------------------------- PlacePlayer(_mainPlayerId, 0.81f, 0.60f); if (_isMapCoop) PlacePlayer(_coopPlayerId, 0.23f, 0.86f); //----------------------------------------------------------- // Place starting units //----------------------------------------------------------- if (_isMapCoop) { var startingVillagers2 = new ObjectDef("starting villagers2"); startingVillagers2.AddItem(UtilsCH_GetVillager(_coopPlayerId), 20, 5.0f); startingVillagers2.SetMinDistance(0); startingVillagers2.SetMaxDistance(0); startingVillagers2.PlaceAtLoc(_coopPlayerId, PlayerLocXFraction(_coopPlayerId), PlayerLocZFraction(_coopPlayerId), 1); } //----------------------------------------------------------- // WRAP UP: //----------------------------------------------------------- SetStatusText("Done.", 1.0f); // PostInitSetup(); //----------------------------------------------------------- // WRAP UP: //----------------------------------------------------------- SetStatusText("Done.", 1.0f); } private void PreInitSetup() { // } private void PostInitSetup() { // report our settings if (_isMapCoop) Info("MAP SETTINGS: bIsREPEAT:[" + _bIsRepeat + "], bIsELITE:[" + _bIsElite + "], bIsLEGENDARY:[" + _bIsLegendary + "], region:[" + region + "], MainPlayerID:[" + _mainPlayerId + "], CoopPlayerID:[" + _coopPlayerId + "]"); else Info("MAP SETTINGS: bIsREPEAT:[" + _bIsRepeat + "], bIsELITE:[" + _bIsElite + "], bIsLEGENDARY:[" + _bIsLegendary + "], region:[" + region + "], MainPlayerID:[" + _mainPlayerId + "]"); CommonMapSetup(_bIsRepeat, _bIsElite, _bIsLegendary); SetupHumanPlayer(_mainPlayerId); if (_isMapCoop) SetupHumanPlayer(_coopPlayerId); } private void SetupHumanPlayer(int playerId) { // Disable all units and techs UtilsCH_ForbidAllUnits(playerId); UtilsCH_DisableAllCivTech(playerId); // Enable back some units UtilsCH_EnableUnitTypeBySuffix(playerId, "Bldg_GuardTower"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Bldg_Fortress"); UtilsCH_EnableUnitTypeBySuffix(playerId, "WallConnector"); UtilsCH_EnableUnitTypeBySuffix(playerId, "WallStraight1"); UtilsCH_EnableUnitTypeBySuffix(playerId, "WallStraight2"); UtilsCH_EnableUnitTypeBySuffix(playerId, "WallStraight5"); UtilsCH_EnableUnitTypeBySuffix(playerId, "WallGate"); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechTower2"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechArmorWall1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechArmorWall2"], 2); // Free Tribute Upgrade In Market TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMarketTribute1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMarketTribute2"], 2); //Set Player age CreateTrigger("Force_Age_4_P" + playerId, true, true, false, 4, false, false); TriggerEffect_SetTechStatus(playerId, UtilsCH_GetAgeTechID(playerId, 1), 2); TriggerEffect_SetTechStatus(playerId, UtilsCH_GetAgeTechID(playerId, 2), 2); TriggerEffect_SetTechStatus(playerId, UtilsCH_GetAgeTechID(playerId, 3), 2); TriggerEffect_SetTechStatus(playerId, UtilsCH_GetAgeTechID(playerId, 4), 2); // Enable back some stuff based on which player they are if (playerId == _mainPlayerId) { TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechSlinger_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechBowman_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechHorseman_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechBatteringRam_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechScorpio_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["RomanTechOnager_Upgrade1"], 2); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeArmor1"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeArmor2"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeArmor3"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceArmor1"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceArmor2"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceArmor3"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeAttack1"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeAttack2"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechMeleeAttack3"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceAttack1"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceAttack2"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechPierceAttack3"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechSlingerAttack1"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechSlingerAttack2"], 1); TriggerEffect_SetTechStatus(playerId, TechTreeId["TechSlingerAttack3"], 1); UtilsCH_EnableUnitTypeBySuffix(playerId, "Arc_Slinger"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Arc_Bowman"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Cav_Horseman"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Sie_BatteringRam"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Sie_Scorpio"); UtilsCH_EnableUnitTypeBySuffix(playerId, "Sie_Onager"); } else if (playerId == _coopPlayerId) { UtilsCH_EnableUnitTypeBySuffix(playerId, "Bldg_StoreHouse"); } } }