public void Play() { _nonPlayerCharactersList = new List<Character>(); _player = new Character("Hero"); _player.CharacterMessage += MessageHandler; _nonPlayerCharactersInInstanceList = new ObservableCollection<Character>(); Character bandit = new Character("Bandit"); Character banditLeader = new Character("Bandit Leader"); bandit.CharacterMessage += MessageHandler; banditLeader.CharacterMessage += MessageHandler; _nonPlayerCharactersInInstanceList.Add(bandit); _nonPlayerCharactersInInstanceList.Add(banditLeader); _player.MyTurn(); }
public void PlayerAction(PlayerActionEnum action, Character target = null) { switch (action) { default: break; case PlayerActionEnum.Attack: if (target != null) { _player.Attack(target); } break; case PlayerActionEnum.FullAttack: if (target != null) { _player.FullRoundAttack(target); } break; case PlayerActionEnum.EndTurn: EndTurn(); break; } }
public void TakeTurn(Character target) { MoveAction = true; StandardAction = true; FullRoundAttack(target); }
public void FullRoundAttack(Character target) { for (int i = 0; i < AttacksPerFullRound; i++) { Attack(target); } StandardAction = false; MoveAction = false; }
//holy hell this is bad find a way to fix it public void BadSubscribeWorkaround(Character tar) { if (_badworkaround==false) { tar.CharacterMessage += TargetMessageHandler; _badworkaround = true; } }
public void Attack(Character target) { if (!StandardAction) { MessageEvent("\nyou have already taken a standard action this round"); return; } StandardAction = false; MessageEvent("\n" + Name + " strikes."); /* restrict dealing damage to dead people if (target.CurrentHealthPoints < (-1*((int)target.Constitution))) { Debug.WriteLine("he is dead...."); return; } */ int damage = 0; int result = Dice.RollTheDice(1, 20); if (result==1) { return; MessageEvent("Critical Failure"); } int attack = result + Melee; MessageEvent(Name + " rolls a " + result + "+" + Melee + "=" + attack + " agaisnt AC: " + target.ArmorClass); if ((attack>=target.ArmorClass || result ==20) && Weapon.WeaponType != WeaponTypeEnum.TwoHandedMelee) { MessageEvent(Name + " succesfully hits"); damage += Weapon.Damange() + StrengthModifier; } if ((attack >= target.ArmorClass || result == 20) && Weapon.WeaponType == WeaponTypeEnum.TwoHandedMelee) { MessageEvent(Name + " succesfully hits"); damage += Weapon.Damange() + Convert.ToInt32(StrengthModifier*1.5); } if (result == 20) { MessageEvent("Critical Hit"); int confirm = Dice.RollTheDice(1, 20); if (confirm == 20) { MessageEvent("Critical Confirmed"); //placeholder for event crit confirmed for (int i = 1; i < Weapon.CriticalMultiplier; i++) { damage += Weapon.Damange() + StrengthModifier; } } } //event placeholder player name dealth damage //BadSubscribeWorkaround(target); target.TakeDamage(damage); }