/// <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); }
/// <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); }