private void SetupUpgrades() { FabricatorUpgrades = new FabricatorUpgrade[] { new FabricatorUpgrade("Improved Impact Dampening (+10 Max Health)", (pc) => { pc.MaxHealth += 10; pc.Health += 10; }), new FabricatorUpgrade("Wiring Improvements (10% More Energy from Batteries)", (pc) => { pc.MaxEnergy = (int)(pc.MaxEnergy * 1.1); pc.batteryEfficiency += 0.1; }), new FabricatorUpgrade("Upgrade Sensors (+1 Vision Range)", (pc) => { pc.VisionRadius += 1; }), new FabricatorUpgrade("Add Armor Plating (+1 Damage Reduction)", (pc) => { pc.DamageReduction += 1; }), new FabricatorUpgrade("Servo Actuator Replacement (+1 to Dodging)", (pc) => { pc.DodgeBonus += 1; }), new FabricatorUpgrade("Targetting CPU Over-Clocking (+1 to Accuracy)", (pc) => { pc.ToHitBonus += 1; }), new FabricatorUpgrade("Myomer Strengthening (+1 Melee Damage)", (pc) => { pc.MeleeDamage += 1; }), new FabricatorUpgrade("Kinetic Accelerator Boost (+1 Ranged Damage)", (pc) => { pc.RangedDamage += 1; }), }; }
static void Update_Keyboard_Fabricator(ConsoleKeyInfo cki) { FrameBuffer.Instance.Clear(); if (cki.Key == ConsoleKey.Escape) { Game.Instance.InputMode = InputMode.Normal; RedrawRequests.FullRedraw(); } else { // Try to map to an inventory item int i = (int)cki.KeyChar - 'a'; if (i < 0 || i >= Game.Instance.FabricatorUpgrades.Length) { // Out of bounds for upgrades. return; } FabricatorUpgrade fu = Game.Instance.FabricatorUpgrades[i]; PlayerCharacter pc = PlayerCharacter.Instance; if (fu.NextUpgradeCost > pc.Money) { Game.Instance.Message("Insufficient metal scraps for upgrade."); return; } Game.Instance.Message("PURCHASED: " + fu.Name); Console.Beep(); pc.Money -= fu.NextUpgradeCost; fu.OnPurchase(pc); fu.NextUpgradeCost = (int)(fu.NextUpgradeCost * 2); } }