fix: Converts ethics system to generic entity persistence (#1824)
### Summary Converts ethics system to entity persistence and removes the persistence item. ### TODO 1. The enable/disable toggle doesn't propagate to all code that does Ethics checks (notoriety, pvp, etc). 2. We need commands to remove them from an ethic.
This commit is contained in:
parent
f87c8f73ab
commit
20596e52fa
36 changed files with 1327 additions and 1338 deletions
|
|
@ -1,40 +1,44 @@
|
|||
using ModernUO.Serialization;
|
||||
using Server.Factions;
|
||||
|
||||
namespace Server.Ethics.Hero
|
||||
namespace Server.Ethics.Hero;
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
public sealed partial class HeroEthic : Ethic
|
||||
{
|
||||
public sealed 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()
|
||||
{
|
||||
public HeroEthic()
|
||||
if (!RegisterEthic(this))
|
||||
{
|
||||
m_Definition = new EthicDefinition(
|
||||
0x482,
|
||||
"Hero",
|
||||
"(Hero)",
|
||||
"I will defend the virtues",
|
||||
new Power[]
|
||||
{
|
||||
new HolySense(),
|
||||
new HolyItem(),
|
||||
new SummonFamiliar(),
|
||||
new HolyBlade(),
|
||||
new Bless(),
|
||||
new HolyShield(),
|
||||
new HolySteed(),
|
||||
new HolyWord()
|
||||
}
|
||||
);
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool IsEligible(Mobile mob)
|
||||
public override bool IsEligible(Mobile mob) => mob.Kills < 5 && Faction.Find(mob) is TrueBritannians or CouncilOfMages;
|
||||
|
||||
[AfterDeserialization]
|
||||
private void AfterDeserialization()
|
||||
{
|
||||
if (!RegisterEthic(this))
|
||||
{
|
||||
if (mob.Kills >= 5)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var fac = Faction.Find(mob);
|
||||
|
||||
return fac is TrueBritannians or CouncilOfMages;
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue