ModernUO/Projects/UOContent/Engines/Ethics/Hero/Ethic.cs
Jack 6745cf2075
feat: Adds Mobile.Murderer virtual property, consolidates kill-threshold checks (#2355)
## Summary

- Adds `public virtual bool Murderer => Kills >= 5` property to `Mobile`, replacing ~30 scattered `Kills >= 5` / `Kills < 5` magic-number checks across the codebase
- `BaseCreature` overrides `Murderer` to also return `true` when `AlwaysMurderer` is set
- Updates `Corpse` serialization to v15, storing `_murderer` as a `bool` field (migrated from `int Kills >= 5` in earlier versions)
2026-03-06 08:36:41 -08:00

44 lines
962 B
C#

using ModernUO.Serialization;
using Server.Factions;
namespace Server.Ethics.Hero;
[SerializationGenerator(0, false)]
public sealed partial class HeroEthic : Ethic
{
public override EthicDefinition Definition => new(
0x482,
"Hero",
"(Hero)",
"I will defend the virtues",
[
new HolySense(),
new HolyItem(),
new SummonFamiliar(),
new HolyBlade(),
new Bless(),
new HolyShield(),
new HolySteed(),
new HolyWord()
]
);
public HeroEthic()
{
if (!RegisterEthic(this))
{
Delete();
}
}
public override bool IsEligible(Mobile mob) => !mob.Murderer && Faction.Find(mob) is TrueBritannians or CouncilOfMages;
[AfterDeserialization]
private void AfterDeserialization()
{
if (!RegisterEthic(this))
{
Delete();
}
}
}