Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,213 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace Server
{
public class BestialSetHelper
{
public static readonly int BerserkHue = 1255;
public static Dictionary<Mobile, BerserkTimer> _Table;
public static void OnHeal(Mobile healed, Mobile healer, ref int toHeal)
{
if (_Table == null || !_Table.ContainsKey(healed))
return;
int block = (TotalPieces(healed) * _Table[healed].Level) + 2;
toHeal = Math.Max(1, toHeal - block);
healed.SendLocalizedMessage(1151540, block.ToString()); // Your rage blocks ~1_VALUE~ points of healing.
}
public static void OnDamage(Mobile victim, Mobile attacker, ref int damage)
{
int equipped = TotalPieces(victim);
if (/*victim != attacker && */equipped > 0 && victim.Hits - damage < (victim.HitsMax / 2))
{
if (_Table == null || !_Table.ContainsKey(victim))
{
AddBerserk(victim);
return;
}
else if (!_Table[victim].Running)
{
return;
}
int absorb = (equipped * _Table[victim].Level) + 2;
damage = Math.Max(1, damage - absorb);
_Table[victim].DamageTaken += damage;
victim.SendLocalizedMessage(1151539, absorb.ToString()); // In your rage, you shrug off ~1_VALUE~ points of damage.
}
}
public static int GetTotalBerserk(Item item)
{
if (item == null)
return 0;
Mobile m = item.RootParent as Mobile;
if (m != null && _Table != null && _Table.ContainsKey(m))
return _Table[m].Level;
return 1;
}
public static void OnAdded(Mobile m, Item item)
{
if (_Table != null && _Table.ContainsKey(m) && _Table[m].Running && item is ISetItem && ((ISetItem)item).SetID == SetItem.Bestial)
{
item.Hue = BestialSetHelper.BerserkHue + _Table[m].Level;
}
}
public static void OnRemoved(Mobile m, Item item)
{
if (TotalPieces(m) == 0)
{
if (_Table != null && _Table.ContainsKey(m))
_Table[m].EndBerserk();
}
if (item is ISetItem && ((ISetItem)item).SetID == SetItem.Bestial)
item.Hue = 2010;
}
public static void DoHue(Mobile m, int hue)
{
foreach (Item i in m.Items.Where(item => item is ISetItem && ((ISetItem)item).SetID == SetItem.Bestial && item.Hue != hue))
{
i.Hue = hue;
}
m.HueMod = hue;
}
public static int TotalPieces(Mobile m)
{
return m.Items.Where(i => i is ISetItem && ((ISetItem)i).SetID == SetItem.Bestial).Count();
}
public static void AddBerserk(Mobile m)
{
if (_Table == null)
_Table = new Dictionary<Mobile, BerserkTimer>();
_Table[m] = new BerserkTimer(m);
}
public static void RemoveBerserk(Mobile m)
{
if (_Table != null && _Table.ContainsKey(m))
{
_Table.Remove(m);
if (_Table.Count == 0)
_Table = null;
}
}
public static bool IsBerserk(Mobile m)
{
return _Table != null && _Table.ContainsKey(m);
}
public class BerserkTimer : Timer
{
private int _DamageTaken;
public Mobile Mobile { get; set; }
public int DamageTaken
{
get { return _DamageTaken; }
set
{
int level = Level;
int old = _DamageTaken;
_DamageTaken = value;
if (old < _DamageTaken)
LastDamage = DateTime.UtcNow;
if (level < Level)
{
int hue = BestialSetHelper.BerserkHue + Level;
BestialSetHelper.DoHue(this.Mobile, hue);
if(level < 5)
Mobile.SendLocalizedMessage(1151533, "", hue); //Your rage grows!
}
else if (level > Level && level > 0)
{
int hue = BestialSetHelper.BerserkHue + Level;
BestialSetHelper.DoHue(this.Mobile, hue);
if (level > 1)
Mobile.SendLocalizedMessage(1151534, "", hue); //Your rage recedes.
}
}
}
public int StartHue { get; set; }
public DateTime LastDamage { get; set; }
public int Level { get { return Math.Min(5, Math.Max(1, _DamageTaken / 50)); } }
public BerserkTimer(Mobile m) : base(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1))
{
Mobile = m;
StartHue = m.HueMod;
Timer.DelayCall(TimeSpan.FromSeconds(1), () =>
{
LastDamage = DateTime.UtcNow;
Start();
});
}
protected override void OnTick()
{
if (LastDamage + TimeSpan.FromSeconds(10) < DateTime.UtcNow || !Mobile.Alive)
{
EndBerserk();
}
else if (LastDamage + TimeSpan.FromSeconds(3) < DateTime.UtcNow && Level > 1)
{
DamageTaken -= 50;
}
else if (Mobile.HueMod == StartHue || Mobile.HueMod == -1)
{
BestialSetHelper.DoHue(this.Mobile, BestialSetHelper.BerserkHue);
Mobile.SendLocalizedMessage(1151532); //You enter a berserk rage!
}
}
public void EndBerserk()
{
BestialSetHelper.RemoveBerserk(this.Mobile);
Mobile.HueMod = StartHue;
Mobile.SendLocalizedMessage(1151535); //Your berserk rage has subsided.
foreach (Item item in Mobile.Items.Where(i => i is ISetItem && ((ISetItem)i).SetID == SetItem.Bestial))
{
item.Hue = 2010;
}
Stop();
}
}
}
}

View File

@@ -0,0 +1,73 @@
using System;
using Server;
namespace Server.Items
{
public class BestialArms : GargishLeatherArms, ISetItem
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1151545; } } // Bestial Arms
#region ISetItem Members
public override SetItem SetID { get { return SetItem.Bestial; } }
public override int Pieces { get { return 4; } }
#endregion
public override int BasePhysicalResistance { get { return 7; } }
public override int BaseFireResistance { get { return 8; } }
public override int BaseColdResistance { get { return 21; } }
public override int BasePoisonResistance { get { return 8; } }
public override int BaseEnergyResistance { get { return 8; } }
public override int InitMinHits { get { return 125; } }
public override int InitMaxHits { get { return 125; } }
[Constructable]
public BestialArms()
{
this.ItemID = 0x4052;
this.Hue = 2010;
this.Weight = 4;
this.StrRequirement = 25;
}
public BestialArms(Serial serial)
: base(serial)
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if(this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialEarrings : GargishEarrings, ISetItem
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1151543; } } // Bestial Earrings
#region ISetItem Members
public override SetItem SetID { get { return SetItem.Bestial; } }
public override int Pieces { get { return 4; } }
#endregion
public override int BasePhysicalResistance { get { return 3; } }
public override int BaseFireResistance { get { return 4; } }
public override int BaseColdResistance { get { return 4; } }
public override int BasePoisonResistance { get { return 4; } }
public override int BaseEnergyResistance { get { return 17; } }
public override int InitMinHits { get { return 125; } }
public override int InitMaxHits { get { return 125; } }
[Constructable]
public BestialEarrings()
{
this.Hue = 2010;
this.Weight = 1;
}
public BestialEarrings(Serial serial)
: base(serial)
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialGloves : LeatherGloves
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber{ get{ return 1151198; } } // Bestial Gloves
#region ISetItem Members
public override SetItem SetID{ get{ return SetItem.Bestial; } }
public override int Pieces{ get{ return 4; } }
#endregion
public override int BasePhysicalResistance{ get{ return 4; } }
public override int BaseFireResistance{ get{ return 19; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
public override int InitMinHits{ get{ return 125; } }
public override int InitMaxHits{ get{ return 125; } }
[Constructable]
public BestialGloves() : base()
{
this.Hue = 2010;
this.Weight = 1;
this.StrRequirement = 20;
}
public BestialGloves( Serial serial ) : base( serial )
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialGorget : LeatherGorget
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber{ get{ return 1151200; } } // Bestial Gorget
#region ISetItem Members
public override SetItem SetID{ get{ return SetItem.Bestial; } }
public override int Pieces{ get{ return 4; } }
#endregion
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 20; } }
public override int BaseColdResistance{ get{ return 7; } }
public override int BasePoisonResistance{ get{ return 7; } }
public override int BaseEnergyResistance{ get{ return 8; } }
public override int InitMinHits{ get{ return 125; } }
public override int InitMaxHits{ get{ return 125; } }
[Constructable]
public BestialGorget() : base()
{
this.Hue = 2010;
this.Weight = 1;
this.StrRequirement = 25;
}
public BestialGorget( Serial serial ) : base( serial )
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialHelm : BearMask
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber{ get{ return 1151197; } } // Bestial Helm
#region ISetItem Members
public override SetItem SetID{ get{ return SetItem.Bestial; } }
public override int Pieces{ get{ return 4; } }
#endregion
public override int BasePhysicalResistance{ get{ return 8; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 22; } }
public override int BasePoisonResistance{ get{ return 7; } }
public override int BaseEnergyResistance{ get{ return 7; } }
public override int InitMinHits{ get{ return 125; } }
public override int InitMaxHits{ get{ return 125; } }
[Constructable]
public BestialHelm() : base()
{
this.Hue = 2010;
this.Weight = 5;
this.StrRequirement = 10;
}
public BestialHelm( Serial serial ) : base( serial )
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialKilt : GargishClothKilt, ISetItem
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1151546; } } // Bestial Kilt
#region ISetItem Members
public override SetItem SetID { get { return SetItem.Bestial; } }
public override int Pieces { get { return 4; } }
#endregion
public override int BasePhysicalResistance { get { return 24; } }
public override int BaseFireResistance { get { return 10; } }
public override int BaseColdResistance { get { return 9; } }
public override int BasePoisonResistance { get { return 10; } }
public override int BaseEnergyResistance { get { return 9; } }
public override int InitMinHits { get { return 125; } }
public override int InitMaxHits { get { return 125; } }
[Constructable]
public BestialKilt()
{
this.Hue = 2010;
this.Weight = 5;
}
public BestialKilt(Serial serial)
: base(serial)
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialLegs : LeatherLegs
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber{ get{ return 1151199; } } // Bestial Leggings
#region ISetItem Members
public override SetItem SetID{ get{ return SetItem.Bestial; } }
public override int Pieces{ get{ return 4; } }
#endregion
public override int BasePhysicalResistance{ get{ return 4; } }
public override int BaseFireResistance{ get{ return 19; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
public override int InitMinHits{ get{ return 125; } }
public override int InitMaxHits{ get{ return 125; } }
[Constructable]
public BestialLegs() : base()
{
this.Hue = 2010;
this.Weight = 4;
this.StrRequirement = 20;
}
public BestialLegs( Serial serial ) : base( serial )
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using Server;
namespace Server.Items
{
public class BestialNecklace : GargishNecklace, ISetItem
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1151544; } } // Bestial Necklace
#region ISetItem Members
public override SetItem SetID { get { return SetItem.Bestial; } }
public override int Pieces { get { return 4; } }
#endregion
public override int BasePhysicalResistance { get { return 3; } }
public override int BaseFireResistance { get { return 4; } }
public override int BaseColdResistance { get { return 4; } }
public override int BasePoisonResistance { get { return 4; } }
public override int BaseEnergyResistance { get { return 17; } }
public override int InitMinHits { get { return 125; } }
public override int InitMaxHits { get { return 125; } }
[Constructable]
public BestialNecklace()
{
this.Hue = 2010;
this.Weight = 1;
}
public BestialNecklace(Serial serial)
: base(serial)
{
}
public override void OnAdded(object parent)
{
base.OnAdded(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnAdded((Mobile)parent, this);
}
}
public override void OnRemoved(object parent)
{
base.OnRemoved(parent);
if (parent is Mobile && !Deleted)
{
BestialSetHelper.OnRemoved((Mobile)parent, this);
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (this.Hue != 2010)
this.Hue = 2010;
}
}
}