/// <summary> /// Triggered when a vehicle dies /// </summary> public bool vehicleDeath(Vehicle dead, Player killer) { if (!dead._bBotVehicle) { Structure structure = _structures.Values.FirstOrDefault(st => st._vehicle == dead); if (structure == null) { return(true); } //Destroy it structure.destroyed(dead, killer); } return(true); }
public bool tryCommandCenterMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); //Sanity if (structure == null) { return(false); } int level = structure._productionLevel; int upgradeNextLevel = calculateUpgradeCost(structure._upgradeCost, ProductionBuilding.CommandCenter); switch (idx) { //1 - Factory - Production (125 Iron) case 1: { if (player.getInventoryAmount(2027) < 125) { player.sendMessage(-1, "I'm sorry, you don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -125); player.inventoryModify(193, 1); player.sendMessage(0, "1 [RTS] Factory - Production Kit has been added to your inventory"); player.syncState(); } break; //2 - Factory - Defense (100 Iron) case 2: { if (player.getInventoryAmount(2027) < 100) { player.sendMessage(-1, "I'm sorry, you don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -100); player.inventoryModify(194, 1); player.sendMessage(0, "1 [RTS] Factory - Defense Kit has been added to your inventory"); player.syncState(); } break; //3 - Factory - Housing (200 Iron) case 3: { if (player.getInventoryAmount(2027) < 200) { player.sendMessage(-1, "I'm sorry, you don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -200); player.inventoryModify(204, 1); player.sendMessage(0, "1 [RTS] Factory - Housing Kit has been added to your inventory"); player.syncState(); } break; //4 - Power Station (25 Iron) case 4: { if (player.getInventoryAmount(2027) < 25) { player.sendMessage(-1, "I'm sorry, you don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -25); player.inventoryModify(200, 1); player.sendMessage(0, "1 [RTS] Power Station Kit has been added to your inventory"); player.syncState(); } break; //8 - Repair case 8: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //16 - Click For Info case 5: { player.sendMessage(0, "$Command Center Info:"); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("&-Repair Cost: {0}", repairCost)); player.sendMessage(0, String.Format("&-Current Level: {0}", structure._productionLevel)); player.sendMessage(0, String.Format("&-Upgrade Cost for next level: {0} Iron", structure._upgradeCost)); player.sendMessage(0, "The Command Center is the center of operation for any city/base. It also is your warppoint from which you'll spawn when exiting the DS. In it you will find the following options:"); player.sendMessage(0, "$ - Factory - Production"); player.sendMessage(0, "& --- Refinery - Iron (Refines scrap metal into Refined Iron)"); player.sendMessage(0, "& --- Iron Mine (Produces Refined Iron at hourly intervals)"); player.sendMessage(0, "& --- Scrapyard (Produces Scrap Metal at hourly intervals)"); player.sendMessage(0, "$ - Factory - Defense"); player.sendMessage(0, "& --- Marine Barracks (Allows you to train Marine bots)"); player.sendMessage(0, "& --- Ripper Barracks (Allows you to train Ripper bots)"); player.sendMessage(0, "& --- All other options should be self explanatory"); player.sendMessage(0, "$ - Factory - Housing"); player.sendMessage(0, "& --- Shack (Produces $850/4hrs at Level 1)"); player.sendMessage(0, "& --- House (Produces $1650/8hrs at Level 1)"); player.sendMessage(0, "& --- Villa (Produces $3250/24hrs at Level 1)"); player.sendMessage(0, "$ - Power Station (Power stations are used to power nearby buildings, " + "these must be placed before any other building is constructed with exception of the Command Center"); break; } //Return to DS case 6: { player.warp(1924 * 16, 347 * 16); } break; //7 - Upgrade case 7: { if (player.getInventoryAmount(2027) < structure._upgradeCost) { player.sendMessage(-1, "&You do not have sufficient iron to upgrade this building"); return(false); } player.inventoryModify(2027, -structure._upgradeCost); player.syncState(); //Up the cost for the next level structure._upgradeCost = upgradeNextLevel; structure._productionLevel++; player.sendMessage(0, String.Format("&Structure upgraded")); } break; //14 - Upgrade case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; } return(false); }
public bool tryHousingProductionMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); switch (idx) { //1 - Shack (75 Iron) case 1: { if (player.getInventoryAmount(2027) < 75) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -75); player.inventoryModify(192, 1); player.sendMessage(0, "1 [RTS] Shack Kit has been added to your inventory"); player.syncState(); } break; //2 - House (125 Iron) case 2: { if (player.getInventoryAmount(2027) < 125) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -125); player.inventoryModify(201, 1); player.sendMessage(0, "1 [RTS] House Kit has been added to your inventory"); player.syncState(); } break; //3 - Villa (175 Iron) case 3: { if (player.getInventoryAmount(2027) < 175) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -175); player.inventoryModify(202, 1); player.sendMessage(0, "1 [RTS] Villa Kit has been added to your inventory"); player.syncState(); } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //Info case 16: { player.sendMessage(0, "$ - Factory - Housing"); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("& --- Repair Cost: {0}", repairCost)); player.sendMessage(0, "& --- Shack (Produces $850/4hrs at Level 1)"); player.sendMessage(0, "& --- House (Produces $1650/8hrs at Level 1)"); player.sendMessage(0, "& --- Villa (Produces $3250/24hrs at Level 1)"); break; } } return(false); }
public bool tryDefenseMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); switch (idx) { //1 - Marine Barracks (100 Iron) case 1: { if (player.getInventoryAmount(2027) < 100) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -100); player.inventoryModify(195, 1); player.sendMessage(0, "1 [RTS] Marine Barracks Kit has been added to your inventory"); player.syncState(); } break; //2 - Ripper Barracks (100 Iron) case 2: { if (player.getInventoryAmount(2027) < 100) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -100); player.inventoryModify(196, 1); player.sendMessage(0, "1 [RTS] Ripper Barracks Kit has been added to your inventory"); player.syncState(); } break; //3 - Turret - HMG (25 Iron) case 3: { if (player.getInventoryAmount(2027) < 25) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -25); player.inventoryModify(198, 1); player.sendMessage(0, "1 [RTS] AT HMG Kit has been added to your inventory"); player.syncState(); } break; //4 - Turret - Rocket(25 Iron) case 4: { if (player.getInventoryAmount(2027) < 25) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -25); player.inventoryModify(199, 1); player.sendMessage(0, "1 [RTS] AT Rocket Kit has been added to your inventory"); player.syncState(); } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //16 - Click For Info case 16: { player.sendMessage(0, "$ - Factory - Defense"); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("& --- Repair Cost: {0}", repairCost)); player.sendMessage(0, "& --- Marine Barracks (Allows you to train Marine bots)"); player.sendMessage(0, "& --- Ripper Barracks (Allows you to train Ripper bots)"); player.sendMessage(0, "& --- All other options should be self explanatory"); } break; } return(false); }
public bool tryProductionMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); switch (idx) { //1 - Refinery - Iron (200 Iron) case 1: { if (player.getInventoryAmount(2027) < 200) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -200); player.inventoryModify(197, 1); player.sendMessage(0, "1 [RTS] Refinery - Iron has been added to your inventory"); player.syncState(); } break; //2 - Iron Mine (100 Iron) case 2: { if (player.getInventoryAmount(2027) < 100) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -100); player.inventoryModify(205, 1); player.sendMessage(0, "1 [RTS] Iron Mine Kit has been added to your inventory"); player.syncState(); } break; //3 - Scrapyard (100 Iron) case 3: { if (player.getInventoryAmount(2027) < 100) { player.sendMessage(-1, "&You don't have enough iron for this option"); return(false); } player.inventoryModify(2027, -100); player.inventoryModify(206, 1); player.sendMessage(0, "1 [RTS] Scrapyard Kit has been added to your inventory"); player.syncState(); } break; //16 - Click For Info case 16: { player.sendMessage(0, "$ - Factory - Production"); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("& --- Repair Cost: {0}", repairCost)); player.sendMessage(0, "& --- Refinery - Iron (Refines scrap metal into Refined Iron)"); player.sendMessage(0, "& --- Iron Mine (Produces Refined Iron at hourly intervals)"); player.sendMessage(0, "& --- Scrapyard (Produces Scrap Metal at hourly intervals)"); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; } return(false); }
public bool tryIronRefinery(Player player, Computer computer, VehInfo.Computer.ComputerProduct product) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); switch (idx) { //1 - 1 Iron (2 Scrap Metal) case 1: { if (player.getInventoryAmount(2026) < 2) { player.sendMessage(-1, "Refinery Worker> I'm sorry, you don't have enough scrap metal for this option"); return(false); } player.inventoryModify(2027, 1); player.inventoryModify(2026, -2); player.sendMessage(0, "1 Iron has been added to your inventory"); player.syncState(); } break; //2 - 5 Iron (10 Scrap Metal) case 2: { if (player.getInventoryAmount(2026) < 10) { player.sendMessage(-1, "Refinery Worker> I'm sorry, you don't have enough scrap metal for this option"); return(false); } player.inventoryModify(2027, 5); player.inventoryModify(2026, -10); player.sendMessage(0, "5 Iron has been added to your inventory"); player.syncState(); } break; //3 - 10 Iron (18 Scrap Metal) case 3: { if (player.getInventoryAmount(2026) < 18) { player.sendMessage(-1, "Refinery Worker> I'm sorry, you don't have enough scrap metal for this option"); return(false); } player.inventoryModify(2027, 10); player.inventoryModify(2026, -18); player.sendMessage(0, "10 Iron has been added to your inventory"); player.syncState(); } break; //4 - 35 Iron (25 Scrap Metal) case 4: { if (player.getInventoryAmount(2026) < 25) { player.sendMessage(-1, "Refinery Worker> I'm sorry, you don't have enough scrap metal for this option"); return(false); } player.inventoryModify(2027, 35); player.inventoryModify(2026, -25); player.sendMessage(0, "35 Iron has been added to your inventory"); player.syncState(); } break; //5 - 50 Iron (30 Scrap Metal) case 5: { if (player.getInventoryAmount(2026) < 30) { player.sendMessage(-1, "Refinery Worker> I'm sorry, you don't have enough scrap metal for this option"); return(false); } player.inventoryModify(2027, 50); player.inventoryModify(2026, -30); player.sendMessage(0, "50 Iron has been added to your inventory"); player.syncState(); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //16 - Info case 16: { int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("&-Repair Cost: {0}", repairCost)); } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; } return(false); }
public bool tryBarracksMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product, DefenseProduction type) { int idx = Convert.ToInt32(product.Title.Substring(0, 2)); Structure structure = getStructureByVehicleID(computer._id); if (_units.Count >= _botMax) { player.sendMessage(-1, "You have reach the maximum amount of units you can train/Have active at one time."); return(false); } switch (idx) { //1 - Train 1 Normal ($500) case 1: { if (player.Cash < 500) { player.sendMessage(-1, "Insufficient funds for this option"); return(false); } player.Cash -= 500; player.sendMessage(0, "Unit Ready"); player.syncState(); switch (type) { case DefenseProduction.Marine: newUnit(BotType.Marine, null, null, BotLevel.Normal, player._state); break; case DefenseProduction.Ripper: newUnit(BotType.Ripper, null, null, BotLevel.Normal, player._state); break; } } break; //2 - Train 1 Adept ($1000) case 2: { if (player.Cash < 1000) { player.sendMessage(-1, "Insufficient funds for this option"); return(false); } player.Cash -= 1000; player.sendMessage(0, "Unit Ready"); player.syncState(); switch (type) { case DefenseProduction.Marine: newUnit(BotType.Marine, null, null, BotLevel.Adept, player._state); break; case DefenseProduction.Ripper: newUnit(BotType.Ripper, null, null, BotLevel.Adept, player._state); break; } } break; //3 - Train 1 Elite ($1500) case 3: { if (player.Cash < 1500) { player.sendMessage(-1, "Insufficient funds for this option"); return(false); } player.Cash -= 1500; player.sendMessage(0, "Unit Ready"); player.syncState(); switch (type) { case DefenseProduction.Marine: newUnit(BotType.EliteMarine, null, null, BotLevel.Elite, player._state); break; case DefenseProduction.Ripper: newUnit(BotType.EliteHeavy, null, null, BotLevel.Elite, player._state); break; } } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; //16 - Click For Info case 16: { player.sendMessage(0, "$Barracks Info:"); player.sendMessage(0, "& --- The barracks allows you to train new units (bots) that will guard your city."); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("& --- Repair Cost: {0}", repairCost)); } break; } return(false); }
public bool tryCollectionMenu(Player player, Computer computer, VehInfo.Computer.ComputerProduct product, ProductionBuilding buildingType) { int idx = Convert.ToInt32(product.Title.Substring(0, 1)); Structure structure = getStructureByVehicleID(computer._id); //Sanity if (structure == null) { return(false); } int level = structure._productionLevel; int cash = calculateProduction(level, buildingType); int cashNextLevel = calculateProduction(level + 1, buildingType); int upgradeNextLevel = calculateUpgradeCost(structure._upgradeCost, buildingType); switch (idx) { //1 - Collect case 1: { //Are we ready? if (!IsProductionReady(structure)) { player.sendMessage(0, "&This building is not ready for collection yet."); return(false); } //Produce! structure.produce(player); } break; //2 - Upgrade (100 Iron) case 2: { if (player.getInventoryAmount(2027) < structure._upgradeCost) { player.sendMessage(-1, "&You do not have sufficient iron to upgrade this building"); return(false); } player.inventoryModify(2027, -structure._upgradeCost); player.syncState(); //Up the cost for the next level structure._upgradeCost = upgradeNextLevel; structure._productionLevel++; structure._productionQuantity = cashNextLevel; player.sendMessage(0, String.Format("&Structure upgraded, Next collection: {0}", structure._productionQuantity)); } break; //3 More Info case 3: { player.sendMessage(0, String.Format("$Building Info:")); int repairCost = calculateRepairCost(structure._vehicle); player.sendMessage(0, String.Format("& --- Repair Cost: {0}", repairCost)); player.sendMessage(0, String.Format("& --- Current Level: {0}", structure._productionLevel)); player.sendMessage(0, String.Format("& --- Upgrade Cost for next level: {0} Iron", structure._upgradeCost)); player.sendMessage(0, String.Format("& --- Next Collection amount: {0}", structure._productionQuantity)); player.sendMessage(0, String.Format("& --- Next Level Collection amount: {0}", cashNextLevel)); TimeSpan remaining = _baseScript.timeTo(structure._nextProduction.TimeOfDay); player.sendMessage(0, String.Format("Next collection ready in {0} Hour(s) & {1} minute(s)", remaining.Hours, remaining.Minutes)); } break; //14 - Sell case 14: { player.inventoryModify(2026, structure._vehicle._type.DropItemQuantity); player.syncState(); player.sendMessage(0, String.Format("&Structure sold ({0} Scrap added to your inventory)", structure._type.DropItemQuantity)); structure.destroyed(structure._vehicle, player); structure._vehicle.destroy(false); } break; //15 - Repair case 15: { int repairCost = calculateRepairCost(structure._vehicle); if (player.getInventoryAmount(2026) < repairCost) { player.sendMessage(-1, "I'm sorry, you don't have enough scrap metal to repair this building"); return(false); } structure._vehicle._state.health = (short)structure._vehicle._type.Hitpoints; player.inventoryModify(2026, -repairCost); player.sendMessage(0, "Structure repaired"); player.syncState(); } break; } return(false); }