public void ReturnToBase(bool successful) { if (successful) {//all enemies defeated HomeBase.ResourceConMat += ResourceConMat; HomeBase.ResourceGold += ResourceGold; HomeBase.ResourceOre += ResourceOre; HomeBase.BaseWeaponInventory.AddRange(WeaponLoot); HomeBase.BaseArmorInventory.AddRange(ArmourLoot); for (int i = Friends.Count - 1; i >= 0; i--) { Character temp = null; temp = Friends[i]; Friends.RemoveAt(i); HomeBase.TakeCharacter(temp); break; } } else { if (Friends.Count > 0) {//Retreat button hit //get survivors out for (int i = Friends.Count - 1; i >= 0; i--) { Character temp = null; temp = Friends[i]; Friends.RemoveAt(i); HomeBase.TakeCharacter(temp); break; } //take home half the stuff you would have gotten on a victory HomeBase.ResourceConMat += ResourceConMat / 2; HomeBase.ResourceGold += ResourceGold / 2; HomeBase.ResourceOre += ResourceOre / 2; int removeAmount = WeaponLoot.Count / 2; while (removeAmount > 0) { WeaponLoot.RemoveAt(Random.Range(0, WeaponLoot.Count - 1)); removeAmount--; } HomeBase.BaseWeaponInventory.AddRange(WeaponLoot); removeAmount = ArmourLoot.Count / 2; while (removeAmount > 0) { ArmourLoot.RemoveAt(Random.Range(0, ArmourLoot.Count - 1)); removeAmount--; } HomeBase.BaseArmorInventory.AddRange(ArmourLoot); } else {//everyone's dead } } //stuff that always happens. WeaponLoot.Clear(); ArmourLoot.Clear(); ResourceConMat = 0; ResourceGold = 0; ResourceOre = 0; foreach (CombatTile CT in BattleFieldTiles) { CT.ChangeState(0); } foreach (Character friend in Friends) { friend.MapPosition = new Vector2Int(-1, -1); } Foes.Clear(); HomeBase.OnReturnFromCombat(); ReturnsToMainBase.Toggle(); }