private void SetTheCurrentMonsterForTheCurrentLocation(Location location, TTS tts) { // Populate the current monster with this location's monster (or null, if there is no monster here) CurrentMonster = location.NewInstanceOfMonsterLivingHere(); if (CurrentMonster != null) { RaiseMessage("Tu vês " + CheckMonsterGender(CurrentMonster.Name, 1) + " " + CurrentMonster.Name + "."); if (text != "") { tts.Speak(text + " e vês " + CheckMonsterGender(CurrentMonster.Name, 1) + " " + CurrentMonster.Name + "."); text = ""; } else { tts.Speak("Tu vês " + CheckMonsterGender(CurrentMonster.Name, 1) + " " + CurrentMonster.Name + "."); } } else { if (text != "") { tts.Speak(text); text = ""; } } }
private void GivePlayerQuestRewards(Quest quest, TTS tts) { RaiseMessage(""); RaiseMessage("Completaste a missão '" + quest.Name + "'!"); RaiseMessage("Recompensa: "); RaiseMessage(quest.RewardExperiencePoints + " pontos de experiência."); RaiseMessage(quest.RewardGold + " moedas de ouro"); RaiseMessage(quest.RewardItem.Name, true); AddExperiencePoints(quest.RewardExperiencePoints); Gold += quest.RewardGold; RemoveQuestCompletionItems(quest); AddItemToInventory(quest.RewardItem); MarkPlayerQuestCompleted(quest); if (quest.RewardItem == null) { tts.Speak(text + " e completáste a missão '" + quest.Name + "'!" + "\n" + " Gánháste " + quest.RewardExperiencePoints + " pontos de experiência, " + quest.RewardGold + " moedas de ouro."); } else { tts.Speak(text + " e completáste a missão '" + quest.Name + "'!" + "\n" + " Gánháste " + quest.RewardExperiencePoints + " pontos de experiência, " + quest.RewardGold + " moedas de ouro e o item: " + quest.RewardItem.Name + "."); } text = ""; }
public void UseWeapon(Weapon weapon, TTS tts) { int damage = RandomNumberGenerator.NumberBetween(weapon.MinimumDamage, weapon.MaximumDamage); if (damage == 0) { text = "Falháste o ataque. "; RaiseMessage("Falhaste o ataque."); // Place AttackMiss sound PlayAudio("AttackMiss", DisableAudio); } else { CurrentMonster.CurrentHitPoints -= damage; RaiseMessage("Acertaste! Tiraste " + damage + " pontos de vida. "); text = "Acertáste! Tiráste " + damage + " pontos de vida. "; if (damage == 1) { text = "Acertáste! Tiráste " + damage + " ponto de vida. "; } // Place SwordHit or ClubHit sound if (CurrentWeapon.ID == World.ITEM_ID_RUSTY_SWORD) { PlayAudio("SwordHit", DisableAudio); } else if (CurrentWeapon.ID == World.ITEM_ID_CLUB) { PlayAudio("ClubHit", DisableAudio); } } if (CurrentMonster.IsDead) { RaiseMessage(""); RaiseMessage("Mataste o monstro!"); // Place MonsterPain sound based on weapon used if (CurrentWeapon.ID == World.ITEM_ID_RUSTY_SWORD) { PlayAudio("MonsterPainSword", DisableAudio); } else if (CurrentWeapon.ID == World.ITEM_ID_CLUB) { PlayAudio("MonsterPainClub", DisableAudio); } LootTheCurrentMonster(tts); // "Move" to the current location, to refresh the current monster MoveTo(CurrentLocation, tts); } else { LetTheMonsterAttack(tts); } }
public void MoveWest(TTS tts) { if (CurrentLocation.LocationToWest != null) { text = "Foste para Oeste."; MoveTo(CurrentLocation.LocationToWest, tts); } else { tts.Speak("Não podes ir mais para Oeste."); } }
public void MoveSouth(TTS tts) { if (CurrentLocation.LocationToSouth != null) { text = "Foste para Sul."; MoveTo(CurrentLocation.LocationToSouth, tts); } else { tts.Speak("Não podes ir mais para Sul."); } }
public void UsePotion(HealingPotion potion, TTS tts) { RaiseMessage("Tu bebes a " + potion.Name + "."); text = "Bebeste a poção"; HealPlayer(potion.AmountToHeal); RemoveItemFromInventory(potion); // The player used their turn to drink the potion, so let the monster attack now LetTheMonsterAttack(tts); }
private void LootTheCurrentMonster(TTS tts) { RaiseMessage(""); RaiseMessage("Recebeste " + CurrentMonster.RewardExperiencePoints + " pontos de experiência."); RaiseMessage("Recebeste " + CurrentMonster.RewardGold + " moedas de ouro."); text = "Matáste o monstro! Recebeste " + CurrentMonster.RewardGold + " moedas de ouro " + "e " + CurrentMonster.RewardExperiencePoints + " pontos de experiência"; AddExperiencePoints(CurrentMonster.RewardExperiencePoints); Gold += CurrentMonster.RewardGold; // Give monster's loot items to the player foreach (InventoryItem inventoryItem in CurrentMonster.LootItems) { AddItemToInventory(inventoryItem.Details); RaiseMessage(string.Format("Saqueaste: {0} {1}", inventoryItem.Quantity, inventoryItem.Description)); } RaiseMessage(""); }
private void GiveQuestToPlayer(Quest quest, TTS tts) { RaiseMessage("Tens uma missão nova: " + quest.Name + "."); RaiseMessage(quest.Description); RaiseMessage("Para completá-la, volta com:"); string items = ""; foreach (QuestCompletionItem qci in quest.QuestCompletionItems) { items += string.Format("{0} {1}", qci.Quantity, qci.Quantity == 1 ? qci.Details.Name : qci.Details.NamePlural); items += ","; RaiseMessage(string.Format("{0} {1}", qci.Quantity, qci.Quantity == 1 ? qci.Details.Name : qci.Details.NamePlural)); } RaiseMessage(""); Quests.Add(new PlayerQuest(quest)); tts.Speak(text + " e tens uma missão nova: " + quest.Name + "." + " Para completá-la, volta com: " + items); text = ""; }
public void MoveTo(Location location, TTS tts) { if (PlayerDoesNotHaveTheRequiredItemToEnter(location)) { RaiseMessage("Tens de obter " + location.ItemRequiredToEnter.Name + " primeiro para entrar neste local."); text = "Tens de obter " + location.ItemRequiredToEnter.Name + " primeiro para entrar neste local."; tts.Speak(text); text = ""; return; } // The player can enter this location CurrentLocation = location; if (!LocationsVisited.Contains(CurrentLocation.ID)) { LocationsVisited.Add(CurrentLocation.ID); } CompletelyHeal(); if (location.HasAQuest) { if (PlayerDoesNotHaveThisQuest(location.QuestAvailableHere)) { GiveQuestToPlayer(location.QuestAvailableHere, tts); } else { if (PlayerHasNotCompleted(location.QuestAvailableHere) && PlayerHasAllQuestCompletionItemsFor(location.QuestAvailableHere)) { GivePlayerQuestRewards(location.QuestAvailableHere, tts); } } } SetTheCurrentMonsterForTheCurrentLocation(location, tts); }
private void LetTheMonsterAttack(TTS tts) { int damageToPlayer = RandomNumberGenerator.NumberBetween(0, CurrentMonster.MaximumDamage); RaiseMessage(CheckMonsterGender(CurrentMonster.Name, 0).ToUpper() + " " + CurrentMonster.Name + " tirou-te " + damageToPlayer + " pontos de vida."); CurrentHitPoints -= damageToPlayer; if (IsDead) { text = CheckMonsterGender(CurrentMonster.Name, 0).ToUpper() + " " + CurrentMonster.Name + " tirou-te " + damageToPlayer + " pontos de vida." + "E por isso Morrêste!"; RaiseMessage(CheckMonsterGender(CurrentMonster.Name, 0).ToUpper() + " " + CurrentMonster.Name + " matou-te."); // Place PlayerPain sound here PlayAudio("PlayerPain", DisableAudio); tts.Speak(text); text = ""; MoveHome(tts); } else { tts.Speak(text + CheckMonsterGender(CurrentMonster.Name, 0).ToUpper() + " " + CurrentMonster.Name + " tirou-te " + damageToPlayer + " pontos de vida."); text = ""; } }
private void MoveHome(TTS tts) { MoveTo(World.LocationByID(World.LOCATION_ID_HOME), tts); }