public List <ChoiceConsequence> GetConsequences() { if (choices.Count != consequence.Count) { Debug.LogError("Choice to Consequence count mismatch!"); throw new System.Exception("Choice to Consequence count mismatch!"); } List <ChoiceConsequence> returnval = new List <ChoiceConsequence>(); for (int currentChoice = 0; currentChoice < choices.Count; currentChoice++) { ChoiceConsequence currentConsequence = new ChoiceConsequence(choices[currentChoice], consequence[currentChoice]); returnval.Add(currentConsequence); } return(returnval); }
public void ResolveChoiceConsequence(ChoiceConsequence consequence) { Debug.Log("StoryEventController.ResolveChoiceConsequence() called, resolving effect of consequence: " + consequence.consequenceType.ToString()); if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.EventEnds) { // } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.AllCharactersGainXP) { foreach (CharacterData character in CharacterRoster.Instance.allCharacterDataObjects) { character.ModifyCurrentXP(consequence.xpGainAmount); } } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainGold) { PlayerDataManager.Instance.ModifyGold(consequence.goldGainAmount); } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificItem) { InventoryController.Instance.AddItemToInventory(consequence.specificItemGained, true); } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainRandomItem) { for (int i = 0; i < consequence.randomItemsGained; i++) { if (consequence.randomItemRarity == ItemDataSO.ItemRarity.Common) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomCommonItem(), true); } else if (consequence.randomItemRarity == ItemDataSO.ItemRarity.Rare) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomRareItem(), true); } else if (consequence.randomItemRarity == ItemDataSO.ItemRarity.Epic) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomEpicItem(), true); } } } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainRandomWeapon) { for (int i = 0; i < consequence.randomWeaponsGained; i++) { if (consequence.randomWeaponRarity == ItemDataSO.ItemRarity.Common) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomCommonWeaponItem(), true); } else if (consequence.randomWeaponRarity == ItemDataSO.ItemRarity.Rare) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomRareWeaponItem(), true); } else if (consequence.randomWeaponRarity == ItemDataSO.ItemRarity.Epic) { InventoryController.Instance.AddItemToInventory(ItemLibrary.Instance.GetRandomEpicWeaponItem(), true); } } } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificAffliction) { StateManager.Instance.GainState(consequence.afflictionGained, true); } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificState) { StateManager.Instance.GainState(consequence.stateGained, true); } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.TriggerCombatEvent) { SetAwaitingCombatEventState(consequence.combatEvent); } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.RandomPartyMemberDies) { for (int i = 0; i < consequence.partyMembersKilled; i++) { List <CharacterData> charactersWithAtleast1HP = new List <CharacterData>(); CharacterData characterKilled = null; // Get all viable characters to kill foreach (CharacterData cd in CharacterRoster.Instance.allCharacterDataObjects) { if (cd.currentHealth > 0) { charactersWithAtleast1HP.Add(cd); } } // determine which character should die if (charactersWithAtleast1HP.Count == 1) { characterKilled = charactersWithAtleast1HP[0]; } else if (charactersWithAtleast1HP.Count > 1) { characterKilled = charactersWithAtleast1HP[Random.Range(0, charactersWithAtleast1HP.Count)]; } else { Debug.Log("StoryEventController.ResolveChoiceConsequence() tried to resolve the event 'RandomCharacterDies', but " + "the player does not have any characters with more then 0 HP..."); } // kill the character if (characterKilled) { Debug.Log("StoryEventController.ResolveChoiceConsequence() killing random character called: " + characterKilled.myName); characterKilled.ModifyCurrentHealth(-characterKilled.currentHealth); } } } else if (consequence.consequenceType == ChoiceConsequence.ConsequenceType.LoseAllInventoryItems) { InventoryController.Instance.DestroyAllItemsInInventory(); } }
public string ConvertChoiceConsequenceToString(ChoiceConsequence choiceConsequence) { Debug.Log("StoryEventController.ConvertChoiceConsequenceToString() called..."); string stringReturned = ""; if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.EventEnds) { stringReturned = "Event Ends"; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.AllCharactersGainXP) { stringReturned = "All characters gain " + choiceConsequence.xpGainAmount.ToString() + " XP"; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainGold) { stringReturned = "Gain " + choiceConsequence.goldGainAmount.ToString() + "g"; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificItem) { stringReturned = "Gain item: " + choiceConsequence.specificItemGained.Name; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.TriggerCombatEvent) { stringReturned = "Triggers combat event: " + choiceConsequence.combatEvent.waveName; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificAffliction) { stringReturned = "Gain Affliction: " + choiceConsequence.afflictionGained.stateName; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainSpecificState) { stringReturned = "Gain State: " + choiceConsequence.stateGained.stateName; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.RandomPartyMemberDies) { if (choiceConsequence.partyMembersKilled > 1) { stringReturned = choiceConsequence.partyMembersKilled.ToString() + " random party members die"; } else if (choiceConsequence.partyMembersKilled == 1) { stringReturned = choiceConsequence.partyMembersKilled.ToString() + " random party member dies"; } } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.LoseAllInventoryItems) { stringReturned = "Lose all items in your inventory"; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainRandomItem) { string itemsString = "item"; if (choiceConsequence.randomItemsGained > 1) { itemsString = "items"; } stringReturned = "Gain " + choiceConsequence.randomItemsGained.ToString() + " random " + choiceConsequence.randomItemRarity.ToString() + " " + itemsString; } else if (choiceConsequence.consequenceType == ChoiceConsequence.ConsequenceType.GainRandomWeapon) { string itemsString = "weapon"; if (choiceConsequence.randomWeaponsGained > 1) { itemsString = "weapons"; } stringReturned = "Gain " + choiceConsequence.randomWeaponsGained.ToString() + " random " + choiceConsequence.randomWeaponRarity.ToString() + " " + itemsString; } else { Debug.Log("StoryEventController.ConvertChoiceRequirementToString() detected that a string conversion for" + " the enum value " + choiceConsequence.ToString() + " has not been defined, returning an empty string..."); } return(stringReturned); }