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:
Kamron Batman 2024-06-16 10:26:09 -07:00 • committed by GitHub
parent f87c8f73ab
commit 20596e52fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 1327 additions and 1338 deletions

View file

@ -1,37 +1,31 @@
namespace Server.Ethics
namespace Server.Ethics;
public abstract class Power
{
public abstract class Power
public PowerDefinition Definition { get; protected set; }
public virtual bool CheckInvoke(Player from)
{
protected PowerDefinition m_Definition;
public PowerDefinition Definition => m_Definition;
public virtual bool CheckInvoke(Player from)
if (!from.Mobile.CheckAlive())
{
if (!from.Mobile.CheckAlive())
{
return false;
}
if (from.Power < m_Definition.Power)
{
from.Mobile.LocalOverheadMessage(
MessageType.Regular,
0x3B2,
false,
"You lack the power to invoke this ability."
);
return false;
}
return true;
return false;
}
public abstract void BeginInvoke(Player from);
public virtual void FinishInvoke(Player from)
if (from.Power < Definition.Power)
{
from.Power -= m_Definition.Power;
from.Mobile.LocalOverheadMessage(
MessageType.Regular,
0x3B2,
false,
"You lack the power to invoke this ability."
);
return false;
}
return true;
}
public abstract void BeginInvoke(Player from);
public virtual void FinishInvoke(Player from) => from.Power -= Definition.Power;
}