Ejemplo n.º 1
0
        protected AttackAction(Entity attacker, Entity defender, Entity weapon, DefendComponent.AttackablePart bodyPartTargetted, bool targettingPenalty) : base(attacker)
        {
            Contract.Requires <ArgumentNullException>(attacker != null, "attacker");
            Contract.Requires <ArgumentNullException>(weapon != null, "weapon");
            Contract.Requires <ArgumentNullException>(defender != null, "defender");
            Contract.Requires <ArgumentNullException>(bodyPartTargetted != null, "bodyPartTargetted");

            Contract.Requires <ArgumentException>(attacker.Has <ActorComponent>(), "attacker doesn't have a location");
            Contract.Requires <ArgumentException>(attacker.Has <Location>(), "attacker doesn't have a location");
            Contract.Requires <ArgumentException>(defender.Has <DefendComponent>(), "defender cannot be attacked");
            Contract.Requires <ArgumentException>(defender.Has <Location>(), "defender doesn't have a location");
            Contract.Requires <ArgumentException>(defender.Get <DefendComponent>() == bodyPartTargetted.Owner, "defender does not contain supplied body part");
            Contract.Requires <ArgumentException>(defender.Get <Location>().Level == attacker.Get <Location>().Level, "attacker is not on the same level as defender");
            Contract.Requires <ArgumentException>(defender.Id == bodyPartTargetted.Owner.OwnerUId);

            Defender          = defender;
            Weapon            = weapon;
            BodyPartTargetted = bodyPartTargetted;
            TargettingPenalty = targettingPenalty;
        }
Ejemplo n.º 2
0
 public RangeAttackAction(Entity attacker, Entity defender, Entity weapon, DefendComponent.AttackablePart bodyPartTargetted, bool targettingPenalty = false)
     : base(attacker, defender, weapon, bodyPartTargetted, targettingPenalty)
 {
     Contract.Requires <ArgumentException>(weapon.Has <RangeComponent>(), "weapon cannot range attack");
 }