/// <summary> /// 캐릭터가 몬스터를 공격한다. (평타) /// 평타는 무조건 대상 하나만 공격할 수 있다. /// TODO: 명중률, 회피율 구현 /// </summary> public void CharacterAttacksMonster() { SmartRandom r = new SmartRandom(); targets.Clear(); int index = r.Next(d.Waves[CurrentWave].Monsters.Count); targets.Add(d.Waves[CurrentWave].Monsters[index]); long damage = Character.TotalAbility.Attack - targets[0].TotalAbility.Defense; damage = damage <= 1 ? 1 : damage; targets[0].TotalAbility.HP -= damage; // 몬스터 사망 if (targets[0].TotalAbility.HP <= 0) { KillMonster(targets[0]); } }
public string React(ConsoleKey key) { SmartRandom r = new SmartRandom(); switch (key) { // 아이템 선택 case ConsoleKey.D1: case ConsoleKey.D2: case ConsoleKey.D3: case ConsoleKey.D4: case ConsoleKey.D5: case ConsoleKey.D6: case ConsoleKey.D7: case ConsoleKey.D8: case ConsoleKey.D9: case ConsoleKey.D0: if (keyLog.Length == 2) { keyLog = string.Empty; } keyLog += ((int)key - 48).ToString(); if (keyLog.Length == 2) { int num = int.Parse(keyLog); if (num >= 1 && num <= Character.Inventory.Slots.Count) { selectedItem = Character.Inventory.Slots[num - 1].Item; } } break; // 아이템 판매 case ConsoleKey.S: if (selectedItem != null) { // 선택한 아이템이 인벤토리에 있으면 판매 if (Character.Inventory.HasItem(selectedItem)) { Character.Inventory.Remove(selectedItem); Character.Gold += selectedItem.SalePrice; } } break; // 아이템 사용/장착 case ConsoleKey.Spacebar: if (selectedItem != null) { // 선택한 아이템이 인벤토리에 있으면 사용/장착 if (Character.Inventory.HasItem(selectedItem)) { switch (selectedItem.Type) { case Item.ItemType.Material: switch (selectedItem.Name) { case "1레벨 낡은 장비 상자": string[] list1 = { "낡은 검", "낡은 지팡이", "낡은 총", "낡은 가죽헬멧", "낡은 금속헬멧", "낡은 가죽아머", "낡은 금속아머", "낡은 가죽트라우저", "낡은 금속트라우저", "낡은 가죽슈즈", "낡은 금속슈즈", "낡은 강철목걸이", "낡은 합금목걸이", "낡은 강철반지", "낡은 합금반지", "낡은 엠블렘" }; Character.Inventory.Add(ItemDictionary.MakeItem(list1[r.Next(list1.Length)])); Character.Inventory.Remove(selectedItem); break; case "5레벨 평범한 장비 상자": string[] list2 = { "평범한 검", "평범한 지팡이", "평범한 총", "평범한 가죽헬멧", "평범한 금속헬멧", "평범한 가죽아머", "평범한 금속아머", "평범한 가죽트라우저", "평범한 금속트라우저", "평범한 가죽슈즈", "평범한 금속슈즈", "평범한 강철목걸이", "평범한 합금목걸이", "평범한 강철반지", "평범한 합금반지", "평범한 엠블렘" }; Character.Inventory.Add(ItemDictionary.MakeItem(list2[r.Next(list2.Length)])); Character.Inventory.Remove(selectedItem); break; } break; case Item.ItemType.Potion: break; case Item.ItemType.Equipment: Character.MountEquipments.Equip(selectedItem); break; } } } break; case ConsoleKey.Escape: ScreenManager.CurrentScreen = ScreenManager.Screen.Main; break; } return(string.Empty); }