//---------------------------------------------------------------------------- // TakeDamage //---------------------------------------------------------------------------- #region TakeDamage public IEnumerator TakeDamage(AttackRoll attackRoll) { int damage = attackRoll.MyDamageData.GetDamage(); MyHasHealth.TakeDamage(attackRoll.MyDamageData.GetDamage()); if (MyHasHealth.GetHealth() != 0) { yield return(StartCoroutine(MyNarrator.Damage())); } else { yield return(StartCoroutine(MyCanDie.TakeAttack(attackRoll))); } }
//---------------------------------------------------------------------------- // RollForAttack //---------------------------------------------------------------------------- #region RollForAttack public IEnumerator RollForAttack() { MyAttackRoll = new AttackRoll(); if (Advantage && !Disadvantage) { MyAttackRoll.Roll = RollWithAdvantage(); } else if (Disadvantage && !Advantage) { MyAttackRoll.Roll = RollWithDisadvantage(); } else { MyAttackRoll.Roll = Random.Range(1, 21); } MyAttackRoll.PureRoll = MyAttackRoll.Roll; MyAttackRoll.Roll += SumOfModifiers; yield break; }
//---------------------------------------------------------------------------- // RollDamage //---------------------------------------------------------------------------- #region RollDamage public IEnumerator RollDamage(AttackRoll attackRoll) { attackRoll.MyDamageData.AddDamage(MyWeapon.RollDamage(), MyWeapon.MyDamageType, DamageSource.Roll); yield break; }
//---------------------------------------------------------------------------- // DoesAttackRollHit //---------------------------------------------------------------------------- #region DoesAttackRollHit public IEnumerator DoesAttackRollHit(AttackRoll attackRoll) { attackRoll.DidHit = attackRoll.Roll > MyACAlterer.GetAC(this); yield break; }