예제 #1
0
        /// <summary>
        /// Returns a body part for a creature defender
        /// </summary>
        public void GetBodyPart(Creature defender, Quadrant quadrant)
        {
            // get cached body parts table
            var bodyParts = Creature.GetBodyParts(defender.WeenieClassId);

            // rng roll for body part
            var bodyPart = bodyParts.RollBodyPart(quadrant);

            if (bodyPart == CombatBodyPart.Undefined)
            {
                log.Debug($"DamageEvent.GetBodyPart({defender?.Name} ({defender?.Guid}) ) - couldn't find body part for wcid {defender.WeenieClassId}, Quadrant {quadrant}");
                Evaded = true;
                return;
            }

            //Console.WriteLine($"AttackHeight: {AttackHeight}, Quadrant: {quadrant & FrontBack}{quadrant & LeftRight}, AttackPart: {bodyPart}");

            defender.Biota.PropertiesBodyPart.TryGetValue(bodyPart, out var value);
            PropertiesBodyPart = new KeyValuePair <CombatBodyPart, PropertiesBodyPart>(bodyPart, value);

            // select random body part @ current attack height

            /*BiotaPropertiesBodyPart = BodyParts.GetBodyPart(defender, attackHeight);
             *
             * if (BiotaPropertiesBodyPart == null)
             * {
             *  Evaded = true;
             *  return;
             * }*/

            CreaturePart = new Creature_BodyPart(defender, PropertiesBodyPart);
        }
예제 #2
0
파일: DamageEvent.cs 프로젝트: justonia/ACE
        /// <summary>
        /// Returns a body part for a creature defender
        /// </summary>
        public void GetBodyPart(AttackHeight attackHeight, Creature defender)
        {
            // select random body part @ current attack height
            BiotaPropertiesBodyPart = BodyParts.GetBodyPart(defender, attackHeight);

            if (BiotaPropertiesBodyPart == null)
            {
                Evaded = true;
                return;
            }
            CreaturePart = new Creature_BodyPart(defender, BiotaPropertiesBodyPart);
        }