public void OnParticipatingEvent(HeroManager.Hero hero) { Debug.Log("Participate"); switch (hero.heroName.name) { case "Haldorf": StartCoroutine(GameManager.uiController.AddResources(new AResource.ResourceBundle(AResource.Type.Materials, -GameManager.resources[AResource.Type.Materials] / 2))); break; case "Lartrid": GameManager.stopLuxuryProduction = 1; break; case "Zrantic": GameManager.enemyStrengthModifer = 2; break; case "Werthuz": StartCoroutine(GameManager.uiController.AddResources(new AResource.ResourceBundle(AResource.Type.Luxuries, -hero.heroName.recruitmentCost / 2))); break; case "Klpytrill": GameManager.forceKlyptrill = false; break; } }
public void HireHero() { HeroManager.Hero hiredHero = HeroManager.recruitableHeroes[heroHireScreenIndex]; StartCoroutine(AddResources(new AResource.ResourceBundle(AResource.Type.Luxuries, -hiredHero.heroName.recruitmentCost))); heroEventManager.OnRecruit(hiredHero); HeroManager.recruitedHeroes.Add(hiredHero); HeroManager.recruitableHeroes.Remove(hiredHero); GameManager.resourceGrowth[AResource.Type.Food]--; UpdateHUD(); UpdateHeroSelectScreen(); }
void UnlockPowerUp() { string heroString = SceneManager.GetActiveScene().name.Split('_')[1]; HeroManager.Hero hero = (HeroManager.Hero)Enum.Parse(typeof(HeroManager.Hero), heroString); CampaignData.GetHeroBoardStats(hero).isComplete = true; if (!didSave) { SaveLoad.Save(); didSave = true; } }
public void OnRecruit(HeroManager.Hero hero) { switch (hero.heroName.name) { case "Friptali": GameManager.extraInjuryDuration += 2; break; case "Jonvrab": GameManager.jonvrabStrengthModifier--; break; case "Klyptrill": GameManager.extraBuildingPrice += 2; GameManager.uiController.UpdateBuildMenu(); break; } }
Sprite GetCombatModifierIcon(HeroManager.Hero hero) { Sprite combatModifierIcon; CharacterFaction enemyFaction = GameManager.currentEvent.enemyType; CharacterFaction heroFaction = hero.type.faction; if (heroFaction.strongAgainst == enemyFaction) { combatModifierIcon = combatModifierIcons[2]; } else if (heroFaction.weakAgainst == enemyFaction) { combatModifierIcon = combatModifierIcons[0]; } else { combatModifierIcon = combatModifierIcons[1]; } return combatModifierIcon; }
public void UpsetEvent(HeroManager.Hero hero) { HeroManager.Hero randomHero; string friptaliBattleResult = ""; switch (hero.heroName.name) { case "Haldorf": GameManager.uiController.DestroyBuilding(true); break; case "Lartrid": GameManager.stopLuxuryProduction = 3; break; case "Friptali": randomHero = HeroManager.recruitedHeroes[random.Next(0, HeroManager.recruitedHeroes.Count)]; int randomHeroStrength = random.Next(0, 7) + randomHero.strength; int heroStrength = random.Next(0, 7) + hero.strength; GameManager.enemyStrengthModifer = 0; if (hero.type.faction.strongAgainst == randomHero.type.faction) { heroStrength++; } else if (hero.type.faction.weakAgainst == randomHero.type.faction) { heroStrength--; } int battleResult = Mathf.Clamp(heroStrength - randomHeroStrength, -2, 2); switch (battleResult) { case 2: friptaliBattleResult = "He fought " + randomHero.heroName.name + " the " + randomHero.type.heroType + " and won! " + randomHero.heroName.name + " is injured and lost 1 mentality, but Friptali gained 1 strength!"; randomHero.injured = true; randomHero.eventsInjured = 3; randomHero.mentality--; hero.strength++; break; case 1: friptaliBattleResult = "He fought " + randomHero.heroName.name + " the " + randomHero.type.heroType + " and won! " + randomHero.heroName.name + " is injured!"; randomHero.injured = true; randomHero.eventsInjured = 3; break; case 0: friptaliBattleResult = "He fought " + randomHero.heroName.name + " the " + randomHero.type.heroType + ". They both injured each other!"; hero.injured = true; hero.eventsInjured = 3; randomHero.injured = true; randomHero.eventsInjured = 3; break; case -1: friptaliBattleResult = "He fought " + randomHero.heroName.name + " the " + randomHero.type.heroType + " and lost! Friptali is injured!"; hero.injured = true; hero.eventsInjured = 3; break; case -2: friptaliBattleResult = "He fought " + randomHero.heroName.name + " the " + randomHero.type.heroType + " and won! Friptali is injured, but " + randomHero.heroName.name + " gained 1 strength and mentality!"; hero.injured = true; hero.eventsInjured = 3; randomHero.mentality++; randomHero.strength++; break; } break; case "Plarkull": foreach (HeroManager.Hero _hero in HeroManager.recruitedHeroes) { _hero.mentality--; } break; case "Jonvrab": hero.injured = true; hero.eventsInjured = 3; break; case "Zrantic": randomHero = HeroManager.recruitedHeroes[random.Next(0, HeroManager.recruitedHeroes.Count)]; randomHero.injured = true; randomHero.eventsInjured = 3; break; case "Werthuz": StartCoroutine(GameManager.uiController.AddResources(new AResource.ResourceBundle(AResource.Type.Food, -HeroManager.recruitedHeroes.Count * 2))); break; case "Klyptrill": GameManager.forceKlyptrill = true; break; } hero.mentality = 0; GameManager.uiController.DisplayUpsetEvent(hero, friptaliBattleResult); }
public static void SetHeroBoardStats(HeroManager.Hero heroBoardName, LevelStats stats) { heroesUnlocked[heroBoardName] = stats; }
public static LevelStats GetHeroBoardStats(HeroManager.Hero heroBoardName) { return(heroesUnlocked[heroBoardName]); }
public void UpdateHeroSelectScreen() { Transform buttons = heroSelectScreen.transform.GetChild(5); Button backButton = buttons.GetChild(1).gameObject.GetComponent<Button>(); Button nextButton = buttons.GetChild(0).gameObject.GetComponent<Button>(); Button useButton = buttons.GetChild(3).gameObject.GetComponent<Button>(); Transform hero = heroSelectScreen.transform.GetChild(4); TextMeshProUGUI heroName = heroSelectScreen.transform.GetChild(6).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); Image heroSprite = hero.GetChild(1).gameObject.GetComponent<Image>(); TextMeshProUGUI heroInfo = heroSelectScreen.transform.GetChild(8).GetChild(4).GetChild(0).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); TextMeshProUGUI heroStrength = heroSelectScreen.transform.GetChild(9).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); GameManager.heroSelectScreenIndex = Mathf.Clamp(GameManager.heroSelectScreenIndex, 0, Mathf.Clamp(HeroManager.recruitedHeroes.Count - 1, 0, int.MaxValue)); if (HeroManager.recruitedHeroes.Count != 0) { HeroManager.Hero _hero = HeroManager.recruitedHeroes[GameManager.heroSelectScreenIndex]; heroName.text = _hero.heroName.name + "\nthe " + _hero.type.heroType; heroSprite.enabled = true; heroSprite.sprite = _hero.type.icon; heroInfo.text = _hero.heroName.description; heroStrength.text = "Strength: " + _hero.strength + " / Mentality: " + _hero.mentality; if (GameManager.currentEvent != null) { useButton.interactable = true; heroSprite.transform.GetChild(0).gameObject.SetActive(true); heroSprite.transform.GetChild(0).GetChild(0).gameObject.GetComponent<Image>().sprite = GetCombatModifierIcon(_hero); } else { useButton.interactable = false; heroSprite.transform.GetChild(0).gameObject.SetActive(false); } if (_hero.injured) { useButton.transform.GetChild(0).gameObject.GetComponent<TextMeshProUGUI>().text = "Injured"; useButton.interactable = false; } else { useButton.transform.GetChild(0).gameObject.GetComponent<TextMeshProUGUI>().text = "Use"; } if (_hero.heroName.name == "Werthuz" && GameManager.resources[AResource.Type.Luxuries] < _hero.heroName.recruitmentCost / 2) { useButton.interactable = false; } bool ableToForceKlpytrill = false; if (_hero.heroName.name != "Klyptrill" && GameManager.forceKlyptrill == true) { foreach (HeroManager.Hero hiredHero in HeroManager.recruitedHeroes) { if (hiredHero.heroName.name == "Klyptrill" && hiredHero.injured == false) { ableToForceKlpytrill = true; } } if (ableToForceKlpytrill) { useButton.interactable = false; } } } else { heroSprite.transform.GetChild(0).gameObject.SetActive(false); heroName.text = "No Heroes\nHired"; heroInfo.text = "No hero selected"; heroStrength.text = "No hero selected"; heroSprite.enabled = false; useButton.interactable = false; } if (GameManager.heroSelectScreenIndex == 0) { backButton.interactable = false; } else { backButton.interactable = true; } if (GameManager.heroSelectScreenIndex == Mathf.Clamp(HeroManager.recruitedHeroes.Count - 1, 0, int.MaxValue)) { nextButton.interactable = false; } else { nextButton.interactable = true; } }
public void UpdateHeroHireScreen() { Transform buttons = heroHireScreen.transform.GetChild(5); Button backButton = buttons.GetChild(1).gameObject.GetComponent<Button>(); Button nextButton = buttons.GetChild(0).gameObject.GetComponent<Button>(); Button hireButton = buttons.GetChild(4).gameObject.GetComponent<Button>(); Transform hero = heroHireScreen.transform.GetChild(4); TextMeshProUGUI heroName = heroHireScreen.transform.GetChild(6).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); Image heroSprite = hero.GetChild(1).gameObject.GetComponent<Image>(); TextMeshProUGUI heroInfo = heroHireScreen.transform.GetChild(8).GetChild(4).GetChild(0).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); TextMeshProUGUI heroCost = heroHireScreen.transform.GetChild(9).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); heroHireScreenIndex = Mathf.Clamp(heroHireScreenIndex, 0, Mathf.Clamp(HeroManager.recruitableHeroes.Count - 1, 0, int.MaxValue)); if (HeroManager.recruitableHeroes.Count != 0) { HeroManager.Hero _hero = HeroManager.recruitableHeroes[heroHireScreenIndex]; heroName.text = _hero.heroName.name + "\nthe " + _hero.type.heroType; heroSprite.enabled = true; heroSprite.sprite = _hero.type.icon; heroInfo.text = _hero.heroName.description; string luxuries; if (_hero.heroName.recruitmentCost == 1) { luxuries = " Luxury item"; } else { luxuries = " Luxuries"; } heroCost.text = "Cost: " + _hero.heroName.recruitmentCost + luxuries; if (GameManager.currentEvent != null) { heroSprite.transform.GetChild(0).gameObject.SetActive(true); heroSprite.transform.GetChild(0).GetChild(0).gameObject.GetComponent<Image>().sprite = GetCombatModifierIcon(_hero); } else { heroSprite.transform.GetChild(0).gameObject.SetActive(false); } if (GameManager.resources[AResource.Type.Luxuries] < _hero.heroName.recruitmentCost) { hireButton.interactable = false; } else { hireButton.interactable = true; } } else { heroName.text = "No Heroes\nAvailable"; heroCost.text = "No hero selected"; heroInfo.text = "No hero selected"; heroSprite.enabled = false; hireButton.interactable = false; } if (heroHireScreenIndex == 0) { backButton.interactable = false; } else { backButton.interactable = true; } if (heroHireScreenIndex == Mathf.Clamp(HeroManager.recruitableHeroes.Count - 1, 0, int.MaxValue)) { nextButton.interactable = false; } else { nextButton.interactable = true; } }
public void DisplayUpsetEvent(HeroManager.Hero hero, string friptaliBattleResult) { TextMeshProUGUI heroEventText = heroEventpanel.transform.GetChild(0).GetChild(0).GetChild(0).gameObject.GetComponent<TextMeshProUGUI>(); heroEventText.text = hero.heroName.name + " the " + hero.type.heroType + " got upset! " + hero.heroName.upsetEventText + friptaliBattleResult; heroEventpanel.SetActive(true); }
public void EventFight(bool sendcitizen = false) { if (!sendcitizen) { HeroManager.Hero hero = HeroManager.recruitedHeroes[GameManager.heroSelectScreenIndex]; CharacterFaction enemyFaction = GameManager.currentEvent.enemyType; int enemyStrength = random.Next(0, 7) + GameManager.enemyStrengthModifer; int heroStrength = random.Next(0, 7) + hero.strength; if (hero.heroName.name != "Jonvrab") { heroStrength += GameManager.jonvrabStrengthModifier; } GameManager.enemyStrengthModifer = 0; if (hero.type.faction.strongAgainst == enemyFaction) { heroStrength++; } else if (hero.type.faction.weakAgainst == enemyFaction) { heroStrength--; } hero.mentality++; heroEventManager.OnParticipatingEvent(hero); int battleResult = Mathf.Clamp(heroStrength - enemyStrength, -2, 2); if (firstEvent) { battleResult = 2; firstEvent = false; } switch (battleResult) { case -2: LoseEvent(); if (buildingName == null) { buildingName = "empty field"; } eventResultText = GameManager.currentEvent.eventLoseText.Replace("X", hero.heroName.name) + " " + hero.heroName.name + " is injured and lost 1 mentality."; hero.injured = true; hero.eventsInjured = 3 + GameManager.extraInjuryDuration; hero.mentality--; break; case -1: eventResultText = GameManager.currentEvent.eventWinText.Replace("X", hero.heroName.name) + " However, HERO was injured and lost 1 strength.".Replace("HERO", hero.heroName.name); hero.strength--; hero.injured = true; hero.eventsInjured = 3 + GameManager.extraInjuryDuration; break; case 0: eventResultText = GameManager.currentEvent.eventWinText.Replace("X", hero.heroName.name) + " However, HERO was injured.".Replace("HERO", hero.heroName.name); hero.injured = true; hero.eventsInjured = 3 + GameManager.extraInjuryDuration; break; case 1: eventResultText = GameManager.currentEvent.eventWinText.Replace("X", hero.heroName.name); break; case 2: if (hero.strength < 3) { eventResultText = GameManager.currentEvent.eventWinText.Replace("X", hero.heroName.name) + " HERO gained 1 strength and mentality!".Replace("HERO", hero.heroName.name); hero.strength++; } else { eventResultText = GameManager.currentEvent.eventWinText.Replace("X", hero.heroName.name) + " HERO gained 1 mentality!".Replace("HERO", hero.heroName.name); } hero.mentality++; break; } } else { LoseEvent(); if (buildingName == null) { buildingName = "empty field"; } string citizentext = GameManager.currentEvent.eventLoseText.Replace("X", "the random citizen"); eventResultText = char.ToUpper(citizentext[0]) + citizentext.Substring(1); } foreach (HeroManager.Hero hiredHero in HeroManager.recruitedHeroes) { hiredHero.mentality--; hiredHero.eventsInjured--; if (hiredHero.eventsInjured == 0) { hiredHero.injured = false; } if (hiredHero.eventsInjured < 2 && GameManager.hospitalsBuilt > 0) { hiredHero.injured = false; } if (hiredHero.mentality <= hiredHero.heroName.upsetMentalityThreshold) { heroEventManager.UpsetEvent(hiredHero); } } GameManager.uiController.FinalizeEvent(eventResultText, sendcitizen); }