コード例 #1
0
 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();
 }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
 public void TakeTurn(Character target)
 {
     MoveAction = true;
     StandardAction = true;
     FullRoundAttack(target);
 }
コード例 #4
0
 public void FullRoundAttack(Character target)
 {
     
     for (int i = 0; i < AttacksPerFullRound; i++)
     {
         Attack(target);
     }
     StandardAction = false;
     MoveAction = false;
 }
コード例 #5
0
 //holy hell this is bad find a way to fix it
 public void BadSubscribeWorkaround(Character tar)
 {
     if (_badworkaround==false)
     {
         tar.CharacterMessage += TargetMessageHandler;
         _badworkaround = true;
     }
     
 }
コード例 #6
0
        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);
        }