#W# Getting things ready for the Virtue system. Added Virtue Tome.

This commit is contained in:
WarrentyExpired 2026-07-22 11:22:45 -04:00
parent a274b44658
commit 1e2b82b64b
2 changed files with 64 additions and 33 deletions

View file

@ -3295,6 +3295,15 @@ namespace Server.Mobiles
public virtual void OnKilledBy( Mobile mob )
{
if ( mob is PlayerMobile && this.Karma < 0 )
{
PlayerMobile pm = (PlayerMobile)mob;
int pointsToAward = Math.Abs( this.Karma ) / 1000;
if ( pointsToAward < 1 )
pointsToAward = 1;
pm.VirtuePoints += pointsToAward;
pm.SendMessage( 63, "You have gained {0} Virtue Points for vanquishing evil!", pointsToAward );
}
}
public override void OnDeath( Container c )

View file

@ -97,6 +97,7 @@ namespace Server.Mobiles
private int m_QuestLevel;
private string m_MapMarkers;
private int m_VirtuePoints;
#region Getters & Setters
@ -278,6 +279,13 @@ namespace Server.Mobiles
set{ SetFlag( PlayerFlag.AcceptGuildInvites, value ); }
}
[CommandProperty( AccessLevel.GameMaster )]
public int VirtuePoints
{
get { return m_VirtuePoints; }
set { m_VirtuePoints = value; }
}
#endregion
#region Auto Arrow Recovery
@ -1824,40 +1832,53 @@ namespace Server.Mobiles
base.Deserialize( reader );
int version = reader.ReadInt();
m_PeacedUntil = reader.ReadDateTime();
m_AnkhNextUse = reader.ReadDateTime();
m_AllianceMessageHue = reader.ReadEncodedInt();
m_GuildMessageHue = reader.ReadEncodedInt();
m_QuestLevel = reader.ReadInt();
m_MapMarkers = reader.ReadString();
int rank = reader.ReadEncodedInt();
int maxRank = Guilds.RankDefinition.Ranks.Length -1;
if( rank > maxRank )
rank = maxRank;
m_GuildRank = Guilds.RankDefinition.Ranks[rank];
m_LastOnline = reader.ReadDateTime();
m_Profession = reader.ReadEncodedInt();
if ( reader.ReadBool() )
switch ( version )
{
m_HairModID = reader.ReadInt();
m_HairModHue = reader.ReadInt();
m_BeardModID = reader.ReadInt();
m_BeardModHue = reader.ReadInt();
}
case 1:
{
m_VirtuePoints = reader.ReadInt();
goto case 0;
}
case 0:
{
m_PeacedUntil = reader.ReadDateTime();
m_AnkhNextUse = reader.ReadDateTime();
m_AllianceMessageHue = reader.ReadEncodedInt();
m_GuildMessageHue = reader.ReadEncodedInt();
m_QuestLevel = reader.ReadInt();
m_MapMarkers = reader.ReadString();
m_NpcGuild = (NpcGuild)reader.ReadInt();
m_NpcGuildJoinTime = reader.ReadDateTime();
m_NpcGuildGameTime = reader.ReadTimeSpan();
m_Camp = reader.ReadDateTime();
m_Bedroll = reader.ReadDateTime();
m_PermaFlags = reader.ReadStrongMobileList();
m_Flags = (PlayerFlag)reader.ReadInt();
m_LongTermElapse = reader.ReadTimeSpan();
m_ShortTermElapse = reader.ReadTimeSpan();
m_GameTime = reader.ReadTimeSpan();
int rank = reader.ReadEncodedInt();
int maxRank = Guilds.RankDefinition.Ranks.Length -1;
if( rank > maxRank )
rank = maxRank;
m_GuildRank = Guilds.RankDefinition.Ranks[rank];
m_LastOnline = reader.ReadDateTime();
m_Profession = reader.ReadEncodedInt();
if ( reader.ReadBool() )
{
m_HairModID = reader.ReadInt();
m_HairModHue = reader.ReadInt();
m_BeardModID = reader.ReadInt();
m_BeardModHue = reader.ReadInt();
}
m_NpcGuild = (NpcGuild)reader.ReadInt();
m_NpcGuildJoinTime = reader.ReadDateTime();
m_NpcGuildGameTime = reader.ReadTimeSpan();
m_Camp = reader.ReadDateTime();
m_Bedroll = reader.ReadDateTime();
m_PermaFlags = reader.ReadStrongMobileList();
m_Flags = (PlayerFlag)reader.ReadInt();
m_LongTermElapse = reader.ReadTimeSpan();
m_ShortTermElapse = reader.ReadTimeSpan();
m_GameTime = reader.ReadTimeSpan();
break;
}
}
StatCap = 200;
Skills.Cap = 7000;
@ -1911,7 +1932,8 @@ namespace Server.Mobiles
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) 1 ); // version
writer.Write( (int) m_VirtuePoints );
writer.Write( (DateTime) m_PeacedUntil );
writer.Write( (DateTime) m_AnkhNextUse );