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,44 @@
using System;
namespace Server.Items
{
public class AlchemistsBauble : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public AlchemistsBauble()
{
Hue = 0x290;
SkillBonuses.SetValues(0, SkillName.Magery, 10.0);
Attributes.EnhancePotions = 30;
Attributes.LowerRegCost = 20;
Resistances.Poison = 10;
}
public AlchemistsBauble(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1070638;
}
}
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();
}
}
}

View File

@@ -0,0 +1,125 @@
using System;
using Server.Targeting;
namespace Server.Items
{
public class AmuletOfRighteousness : SilverNecklace, IUsesRemaining
{
public override bool IsArtifact { get { return true; } }
private int m_UsesRemaining;
[Constructable]
public AmuletOfRighteousness()
: this(100)
{
}
[Constructable]
public AmuletOfRighteousness(int uses)
: base()
{
this.LootType = LootType.Blessed;
this.Weight = 1.0;
this.m_UsesRemaining = uses;
}
public AmuletOfRighteousness(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1075313;
}
}// Amulet of Righteousness
public virtual bool ShowUsesRemaining
{
get
{
return true;
}
set
{
}
}
[CommandProperty(AccessLevel.GameMaster)]
public int UsesRemaining
{
get
{
return this.m_UsesRemaining;
}
set
{
this.m_UsesRemaining = value;
this.InvalidateProperties();
}
}
public override void AddUsesRemainingProperties(ObjectPropertyList list)
{
list.Add(1060584, this.m_UsesRemaining.ToString()); // uses remaining: ~1_val~
}
public override void OnDoubleClick(Mobile from)
{
base.OnDoubleClick(from);
if (this.IsChildOf(from.Backpack))
from.Target = new InternalTarget(this);
else
from.SendLocalizedMessage(1062334); // This item must be in your backpack to be used.
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
writer.Write((int)this.m_UsesRemaining);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
this.m_UsesRemaining = reader.ReadInt();
}
private class InternalTarget : Target
{
private readonly AmuletOfRighteousness m_Amulet;
public InternalTarget(AmuletOfRighteousness amulet)
: base(12, false, TargetFlags.None)
{
this.m_Amulet = amulet;
}
protected override void OnTarget(Mobile from, object targeted)
{
if (this.m_Amulet == null || this.m_Amulet.Deleted)
return;
if (targeted is Mobile)
{
Mobile target = (Mobile)targeted;
if (this.m_Amulet.UsesRemaining <= 0)
{
from.SendLocalizedMessage(1042544); // This item is out of charges.
return;
}
target.BoltEffect(0);
this.m_Amulet.UsesRemaining -= 1;
this.m_Amulet.InvalidateProperties();
}
}
}
}
}

View File

@@ -0,0 +1,364 @@
using System;
using Server;
using System.Collections.Generic;
using Server.Regions;
namespace Server.Items
{
public enum VirtueType
{
None = 0,
Honesty = 1,
Compassion = 2,
Valor = 3,
Justice = 4,
Sacrafice = 5,
Honor = 6,
Spirituality = 7,
Humility = 8
}
public class AnkhPendant : BaseNecklace
{
public static void Initialize()
{
EventSink.Speech += new SpeechEventHandler(EventSink_Speech);
}
public override int LabelNumber { get { return 1079525; } } // Ankh Pendant
[Constructable]
public AnkhPendant()
: base(0x3BB5)
{
Hue = Utility.RandomBool() ? 2213 : 0;
}
public static void EventSink_Speech(SpeechEventArgs e)
{
Mobile from = e.Mobile;
Item ankh = from.FindItemOnLayer(Layer.Neck);
if (!(ankh is AnkhPendant))
return;
string str = e.Speech.ToLower();
VirtueType t = VirtueType.None;
if (str == "ahm")
t = VirtueType.Honesty;
else if (str == "mu")
t = VirtueType.Compassion;
else if (str == "ra")
t = VirtueType.Valor;
else if (str == "beh")
t = VirtueType.Justice;
else if (str == "cah")
t = VirtueType.Sacrafice;
else if (str == "summ")
t = VirtueType.Honor;
else if (str == "om")
t = VirtueType.Spirituality;
else if (str == "lum")
t = VirtueType.Humility;
if (t != VirtueType.None && CheckShrine(t, from))
ApplyBonus(t, from);
}
public static int GetHitsRegenModifier(Mobile from)
{
if (!m_Table.ContainsKey(from))
return 0;
if (CheckExpired(from))
return 0;
AnkhPendantBonusContext context = m_Table[from];
if (context == null)
return 0;
switch (context.VType)
{
case VirtueType.Honesty: break;
case VirtueType.Compassion:
return 2;
case VirtueType.Valor: break;
case VirtueType.Justice:
return context.DoBump ? 2 : 1;
case VirtueType.Sacrafice:
return context.DoBump ? 2 : 1;
case VirtueType.Honor: break;
case VirtueType.Spirituality:
return context.DoBump ? 2 : 1;
case VirtueType.Humility:
if (context.Random == 0)
return 3;
break;
}
return 0;
}
public static int GetStamRegenModifier(Mobile from)
{
if (!m_Table.ContainsKey(from))
return 0;
if (CheckExpired(from))
return 0;
AnkhPendantBonusContext context = m_Table[from];
if (context == null)
return 0;
switch (context.VType)
{
case VirtueType.Honesty: break;
case VirtueType.Compassion: break;
case VirtueType.Valor:
return 2;
case VirtueType.Justice:
break;
case VirtueType.Sacrafice:
return context.DoBump ? 2 : 1;
case VirtueType.Honor:
return context.DoBump ? 2 : 1;
case VirtueType.Spirituality:
return context.DoBump2 ? 2 : 1;
case VirtueType.Humility:
if (context.Random == 1)
return 3;
break;
}
return 0;
}
public static int GetManaRegenModifier(Mobile from)
{
if (!m_Table.ContainsKey(from))
return 0;
if (CheckExpired(from))
return 0;
AnkhPendantBonusContext context = m_Table[from];
if (context == null)
return 0;
switch (context.VType)
{
case VirtueType.Honesty:
return 2;
case VirtueType.Compassion: break;
case VirtueType.Valor:
break;
case VirtueType.Justice:
return context.DoBump ? 2 : 1;
case VirtueType.Sacrafice:
break;
case VirtueType.Honor:
return context.DoBump ? 2 : 1;
case VirtueType.Spirituality:
return context.DoBump3 ? 2 : 1;
case VirtueType.Humility:
if (context.Random == 2)
return 3;
break;
}
return 0;
}
public static bool CheckExpired(Mobile from)
{
if (m_Table.ContainsKey(from) && m_Table[from].Expired)
{
AddToCooldown(from);
return true;
}
return false;
}
public static bool CheckShrine(VirtueType t, Mobile from)
{
Region r = from.Region;
Map map = from.Map;
if (r is DungeonRegion || r is TownRegion || (map != Map.Trammel && map != Map.Felucca))
return false;
bool atShrine = false;
for (int i = 0; i < m_ShrineLocs.Length; i++)
{
if (m_ShrineLocs[i].Contains(new Point2D(from.X, from.Y)) && (int)t == i + 1)
{
atShrine = true;
break;
}
}
if (atShrine)
{
if (IsUnderEffects(from))
{
from.SendLocalizedMessage(1079544, String.Format("#{0}", GetCliloc(m_Table[from].VType)));
return false;
}
if (IsWaitingCooldown(from))
{
TimeSpan ts = DateTime.UtcNow - m_Cooldown[from];
if (ts.TotalHours >= 1)
from.SendLocalizedMessage(1079550, ((int)ts.TotalHours).ToString()); //You can improve your fortunes again in about ~1_TIME~ hours.
else
from.SendLocalizedMessage(1079547); //Your fortunes are about to improve.
return false;
}
}
return atShrine;
}
public static Rectangle2D[] ShrineLocs { get { return m_ShrineLocs; } }
private static Rectangle2D[] m_ShrineLocs = new Rectangle2D[]
{
new Rectangle2D(4208, 563, 2, 2), //Honesty
new Rectangle2D(1857, 874, 2, 2), //Compassion
new Rectangle2D(2491, 3930, 2, 2), //Valor
new Rectangle2D(1300, 633, 2, 2), //Justice
new Rectangle2D(3354, 289, 2, 2), //Sacrafice
new Rectangle2D(1726, 3527, 2, 2), //Honor
new Rectangle2D(1605, 2489, 2, 2), //Spirituality
new Rectangle2D(4273, 3696, 2, 2), //Humility
};
private static void ApplyBonus(VirtueType t, Mobile from)
{
m_Table[from] = new AnkhPendantBonusContext(from, t);
from.Delta(MobileDelta.WeaponDamage);
from.SendLocalizedMessage(1079546, String.Format("#{0}", GetCliloc(t)));
}
private static int GetCliloc(VirtueType t)
{
switch (t)
{
default:
case VirtueType.Honesty: return 1079539;
case VirtueType.Compassion: return 1079535;
case VirtueType.Valor: return 1079543;
case VirtueType.Justice: return 1079536;
case VirtueType.Sacrafice: return 1079538;
case VirtueType.Honor: return 1079540;
case VirtueType.Spirituality: return 1079542;
case VirtueType.Humility: return 1079541;
}
}
public static bool IsUnderEffects(Mobile from)
{
return m_Table.ContainsKey(from);
}
public static bool IsWaitingCooldown(Mobile from)
{
if (m_Cooldown.ContainsKey(from) && m_Cooldown[from] < DateTime.UtcNow)
m_Cooldown.Remove(from);
return m_Cooldown.ContainsKey(from);
}
public static void AddToCooldown(Mobile from)
{
if (m_Table.ContainsKey(from))
m_Table.Remove(from);
from.Delta(MobileDelta.WeaponDamage);
if (from.NetState != null)
from.SendLocalizedMessage(1079553); //The effects of meditating at the shrine have worn off.
m_Cooldown[from] = DateTime.UtcNow + TimeSpan.FromHours(24);
}
private static Dictionary<Mobile, AnkhPendantBonusContext> m_Table = new Dictionary<Mobile, AnkhPendantBonusContext>();
private static Dictionary<Mobile, DateTime> m_Cooldown = new Dictionary<Mobile, DateTime>();
private class AnkhPendantBonusContext
{
private Mobile m_Mobile;
private VirtueType m_Type;
private int m_Random;
private bool m_DoBump;
private bool m_DoBump2;
private bool m_DoBump3;
private DateTime m_Expires;
public VirtueType VType { get { return m_Type; } }
public bool DoBump { get { return m_DoBump; } }
public bool DoBump2 { get { return m_DoBump2; } }
public bool DoBump3 { get { return m_DoBump3; } }
public int Random { get { return m_Random; } }
public bool Expired { get { return DateTime.UtcNow > m_Expires; } }
public AnkhPendantBonusContext(Mobile from, VirtueType type)
{
m_Mobile = from;
m_Type = type;
m_Random = -1;
m_Expires = DateTime.UtcNow + TimeSpan.FromMinutes(60);
switch (type)
{
case VirtueType.Honesty:
case VirtueType.Compassion:
case VirtueType.Valor: break;
case VirtueType.Humility:
m_Random = Utility.Random(3);
break;
case VirtueType.Justice:
case VirtueType.Sacrafice:
case VirtueType.Honor:
m_DoBump = Utility.RandomBool();
break;
case VirtueType.Spirituality:
m_DoBump = 0.25 > Utility.RandomDouble();
m_DoBump2 = 0.25 > Utility.RandomDouble();
m_DoBump3 = 0.25 > Utility.RandomDouble();
break;
}
}
}
public AnkhPendant(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (version == 0)
reader.ReadBool();
}
}
}

View File

@@ -0,0 +1,96 @@
using System;
using Server.Mobiles;
namespace Server.Items
{
[TypeAlias("Server.Items.BarreraakRing")]
public class BarreraaksRing : GoldRing
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1095049; } } // Barreraak<61>s Old Beat Up Ring
[Constructable]
public BarreraaksRing()
{
//TODO: Get Hue
LootType = LootType.Blessed;
}
public override bool CanEquip(Mobile from)
{
if (!base.CanEquip(from))
{
return false;
}
else if (from.Mounted)
{
from.SendLocalizedMessage(1010097); // You cannot use this while mounted.
return false;
}
else if (from.Flying)
{
from.SendLocalizedMessage(1113414); // You can't use this while flying!
return false;
}
else if (from.IsBodyMod)
{
from.SendLocalizedMessage(1111896); // You may only change forms while in your original body.
return false;
}
return true;
}
public override void OnAdded( object parent )
{
base.OnAdded(parent);
if(parent is Mobile)
((Mobile)parent).BodyMod = 334;
}
public override void OnRemoved( object parent )
{
base.OnRemoved(parent);
if(parent is Mobile)
((Mobile)parent).BodyMod = 0;
}
public BarreraaksRing(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)1);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (Parent is Mobile)
{
var m = (Mobile)Parent;
Timer.DelayCall(() =>
{
if (!m.Mounted && !m.Flying && !m.IsBodyMod)
{
m.BodyMod = 334;
}
});
}
if (version == 0)
{
reader.ReadInt();
}
}
}
}

View File

@@ -0,0 +1,49 @@
using System;
namespace Server.Items
{
public class BraceletOfHealth : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public BraceletOfHealth()
{
Hue = 0x21;
Attributes.BonusHits = 5;
Attributes.RegenHits = 10;
}
public BraceletOfHealth(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1061103;
}
}// Bracelet of Health
public override int ArtifactRarity
{
get
{
return 11;
}
}
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();
}
}
}

View File

@@ -0,0 +1,44 @@
using System;
namespace Server.Items
{
public class BraceletOfPrimalConsumption : GoldBracelet
{
public override int LabelNumber { get { return 1157350; } } // bracelet of primal consumption
public override bool IsArtifact { get { return true; } }
[Constructable]
public BraceletOfPrimalConsumption()
{
AbsorptionAttributes.EaterDamage = 6;
Attributes.Luck = 200;
Resistances.Physical = 20;
Resistances.Fire = 20;
Resistances.Cold = 20;
Resistances.Poison = 20;
Resistances.Energy = 20;
}
public BraceletOfPrimalConsumption(Serial serial)
: base(serial)
{
}
public override int InitMinHits { get { return 255; } }
public override int InitMaxHits { get { return 255; } }
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();
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
namespace Server.Items
{
public class BraceletOfResilience : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public BraceletOfResilience()
{
LootType = LootType.Blessed;
Attributes.DefendChance = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Energy = 5;
}
public BraceletOfResilience(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1077627;
}
}// Bracelet of Resilience
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class BurningAmber : GoldRing
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1114790; } } // Burning Amber
[Constructable]
public BurningAmber()
{
Hue = 1174;
Attributes.CastRecovery = 3;
Attributes.RegenMana = 2;
Attributes.BonusDex = 5;
Resistances.Fire = 20;
}
public BurningAmber(Serial serial)
: base(serial)
{
}
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();
}
}
}

View File

@@ -0,0 +1,44 @@
using System;
namespace Server.Items
{
public class ClaspOfConcentration : SilverBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public ClaspOfConcentration()
{
LootType = LootType.Blessed;
Attributes.RegenStam = 2;
Attributes.RegenMana = 1;
Resistances.Fire = 5;
Resistances.Cold = 5;
}
public ClaspOfConcentration(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1077695;
}
}// Clasp of Concentration
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class CrystallineRing : GoldRing
{
public override int LabelNumber { get { return 1075096; } } // Crystalline Ring
public override bool IsArtifact { get { return true; } }
[Constructable]
public CrystallineRing()
{
Hue = 0x480;
Attributes.RegenHits = 5;
Attributes.RegenMana = 3;
Attributes.SpellDamage = 20;
SkillBonuses.SetValues(0, SkillName.Magery, 20.0);
SkillBonuses.SetValues(1, SkillName.Focus, 20.0);
}
public CrystallineRing(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
namespace Server.Items
{
public class DemonBridleRing : GoldRing
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1113651; } } // Demon Bridle Ring
[Constructable]
public DemonBridleRing()
{
Hue = 39;
Attributes.CastRecovery = 2;
Attributes.CastSpeed = 1;
Attributes.RegenHits = 1;
Attributes.RegenMana = 1;
Attributes.DefendChance = 10;
Attributes.LowerManaCost = 4;
Resistances.Fire = 5;
}
public DemonBridleRing(Serial serial)
: base(serial)
{
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
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();
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
namespace Server.Items
{
public class DjinnisRing : SilverRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public DjinnisRing()
{
Attributes.BonusInt = 5;
Attributes.SpellDamage = 10;
Attributes.CastSpeed = 2;
}
public DjinnisRing(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1094927;
}
}// Djinni's Ring [Replica]
public override int InitMinHits
{
get
{
return 150;
}
}
public override int InitMaxHits
{
get
{
return 150;
}
}
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();
}
}
}

View File

@@ -0,0 +1,75 @@
using System;
namespace Server.Items
{
public class DragonJadeEarrings : GargishEarrings
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1113720; } } // Dragon Jade Earrings
public override int BasePhysicalResistance { get { return 9; } }
public override int BaseFireResistance { get { return 16; } }
public override int BaseColdResistance { get { return 5; } }
public override int BasePoisonResistance { get { return 13; } }
public override int BaseEnergyResistance { get { return 3; } }
[Constructable]
public DragonJadeEarrings()
{
Hue = 2129;
Attributes.BonusDex = 5;
Attributes.BonusStr = 5;
Attributes.RegenHits = 2;
Attributes.RegenStam = 3;
Attributes.LowerManaCost = 5;
AbsorptionAttributes.EaterFire = 10;
}
public DragonJadeEarrings(Serial serial)
: base(serial)
{
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
public override bool CanBeWornByGargoyles
{
get
{
return true;
}
}
public override Race RequiredRace
{
get
{
return Race.Gargoyle;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,138 @@
using System;
namespace Server.Items
{
public class EarringBoxSet : RedVelvetGiftBox
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public EarringBoxSet()
: base()
{
DropItem(new EarringsOfProtection(AosElementAttribute.Physical));
DropItem(new EarringsOfProtection(AosElementAttribute.Fire));
DropItem(new EarringsOfProtection(AosElementAttribute.Cold));
DropItem(new EarringsOfProtection(AosElementAttribute.Poison));
DropItem(new EarringsOfProtection(AosElementAttribute.Energy));
}
public EarringBoxSet(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class EarringsOfProtection : BaseJewel
{
private AosElementAttribute m_Attribute;
[Constructable]
public EarringsOfProtection()
: this(RandomType())
{
}
[Constructable]
public EarringsOfProtection(AosElementAttribute element)
: base(0x1087, Layer.Earrings)
{
Resistances[((AosElementAttribute)element)] = 2;
m_Attribute = element;
LootType = LootType.Blessed;
Hue = GetItemData(m_Attribute, false);
}
public EarringsOfProtection(Serial serial)
: base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public virtual AosElementAttribute Attribute
{
get
{
return m_Attribute;
}
}
public override int LabelNumber
{
get
{
return GetItemData(m_Attribute, true);
}
}
public static AosElementAttribute RandomType()
{
return GetTypes(Utility.Random(5));
}
public static AosElementAttribute GetTypes(int value)
{
switch( value )
{
case 0:
return AosElementAttribute.Physical;
case 1:
return AosElementAttribute.Fire;
case 2:
return AosElementAttribute.Cold;
case 3:
return AosElementAttribute.Poison;
default:
return AosElementAttribute.Energy;
}
}
public static int GetItemData(AosElementAttribute element, bool label)
{
switch( element )
{
case AosElementAttribute.Physical:
return (label) ? 1071091 : 0; // Earring of Protection (Physical) 1071091
case AosElementAttribute.Fire:
return (label) ? 1071092 : 0x4ec; // Earring of Protection (Fire) 1071092
case AosElementAttribute.Cold:
return (label) ? 1071093 : 0x4f2; // Earring of Protection (Cold) 1071093
case AosElementAttribute.Poison:
return (label) ? 1071094 : 0x4f8; // Earring of Protection (Poison) 1071094
case AosElementAttribute.Energy:
return (label) ? 1071095 : 0x4fe; // Earring of Protection (Energy) 1071095
default:
return -1;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
writer.Write((int)m_Attribute);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
m_Attribute = (AosElementAttribute)reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,43 @@
using System;
namespace Server.Items
{
public class EssenceOfBattle : GoldRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public EssenceOfBattle()
{
Hue = 0x550;
Attributes.BonusDex = 7;
Attributes.BonusStr = 7;
Attributes.WeaponDamage = 30;
}
public EssenceOfBattle(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1072935;
}
}// Essence of Battle
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,40 @@
using System;
using Server;
namespace Server.Items
{
public class JadeArmband : GoldBracelet
{
public override int LabelNumber { get { return 1112407; } } //Jade Armband [Replica]
public override bool IsArtifact { get { return true; } }
public override int InitMinHits { get { return 150; } }
public override int InitMaxHits { get { return 150; } }
[Constructable]
public JadeArmband()
{
Hue = 2126;
Attributes.AttackChance = 10;
Attributes.DefendChance = 10;
Attributes.WeaponSpeed = 5;
Resistances.Poison = 20;
}
public JadeArmband( Serial serial ) : base( serial )
{
}
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();
}
}
}

View File

@@ -0,0 +1,39 @@
using System;
namespace Server.Items
{
public class Lavaliere : GoldNecklace
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1114843; } } // Lavaliere
[Constructable]
public Lavaliere()
{
Hue = 1194;
AbsorptionAttributes.EaterKinetic = 20;
Attributes.DefendChance = 10;
Resistances.Physical = 15;
Attributes.LowerManaCost = 10;
Attributes.LowerRegCost = 20;
}
public Lavaliere(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,35 @@
using System;
namespace Server.Items
{
public class LuckyNecklace : BaseJewel
{
public override int LabelNumber { get { return 1075239; } } //Lucky Necklace
[Constructable]
public LuckyNecklace()
: base(0x1088, Layer.Neck)
{
Hue = 1150;
Attributes.Luck = 200;
LootType = LootType.Blessed;
}
public LuckyNecklace(Serial serial)
: base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,144 @@
using System;
namespace Server.Items
{
public class VesperCollectionRing : GoldRing
{
public override bool IsArtifact { get { return true; } }
public VesperCollectionRing()
: base()
{
}
public VesperCollectionRing(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1073234;
}
}// A Souvenir from the Museum of Vesper
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class VesperCollectionNecklace : GoldNecklace
{
public override bool IsArtifact { get { return true; } }
public VesperCollectionNecklace()
: base()
{
}
public VesperCollectionNecklace(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1073234;
}
}// A Souvenir from the Museum of Vesper
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class VesperCollectionBracelet : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
public VesperCollectionBracelet()
: base()
{
}
public VesperCollectionBracelet(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1073234;
}
}// A Souvenir from the Museum of Vesper
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class VesperCollectionEarrings : GoldEarrings
{
public override bool IsArtifact { get { return true; } }
public VesperCollectionEarrings()
: base()
{
}
public VesperCollectionEarrings(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1073234;
}
}// A Souvenir from the Museum of Vesper
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
namespace Server.Items
{
public class NecklaceofDiligence : SilverNecklace
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public NecklaceofDiligence()
{
Hue = 221;
Attributes.RegenMana = 1;
Attributes.BonusInt = 5;
}
public NecklaceofDiligence(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1113137;
}
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
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();
}
}
}

View File

@@ -0,0 +1,73 @@
using System;
namespace Server.Items
{
public class ObsidianEarrings : GargishEarrings
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1113820; } } // Obsidian Earrings
public override int BasePhysicalResistance { get { return 4; } }
public override int BaseFireResistance { get { return 10; } }
public override int BaseColdResistance { get { return 10; } }
public override int BasePoisonResistance { get { return 3; } }
public override int BaseEnergyResistance { get { return 13; } }
[Constructable]
public ObsidianEarrings()
{
Attributes.BonusMana = 8;
Attributes.RegenMana = 2;
Attributes.RegenStam = 2;
Attributes.SpellDamage = 8;
AbsorptionAttributes.CastingFocus = 4;
}
public ObsidianEarrings(Serial serial)
: base(serial)
{
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
public override bool CanBeWornByGargoyles
{
get
{
return true;
}
}
public override Race RequiredRace
{
get
{
return Race.Gargoyle;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
namespace Server.Items
{
public class OrnamentOfTheMagician : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public OrnamentOfTheMagician()
{
Hue = 0x554;
Attributes.CastRecovery = 3;
Attributes.CastSpeed = 2;
Attributes.LowerManaCost = 10;
Attributes.LowerRegCost = 20;
Resistances.Energy = 15;
}
public OrnamentOfTheMagician(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1061105;
}
}// Ornament of the Magician
public override int ArtifactRarity
{
get
{
return 11;
}
}
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();
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
namespace Server.Items
{
public class PendantOfTheMagi : GoldNecklace
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public PendantOfTheMagi()
{
Hue = 0x48D;
Attributes.BonusInt = 10;
Attributes.RegenMana = 3;
Attributes.SpellDamage = 5;
Attributes.LowerManaCost = 10;
Attributes.LowerRegCost = 30;
}
public PendantOfTheMagi(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1072937;
}
}// Pendant of the Magi
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class PetrifiedMatriarchsTongue : GoldRing
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1115776; } } // Petrified Matriarch's Tongue
public override int InitMinHits { get { return 255; } }
public override int InitMaxHits { get { return 255; } }
[Constructable]
public PetrifiedMatriarchsTongue()
{
Hue = 2006; //TODO: get proper hue, this is a guess
Attributes.RegenMana = 2;
Attributes.AttackChance = 10;
Attributes.CastSpeed = 1;
Attributes.CastRecovery = 2;
Attributes.LowerManaCost = 4;
Resistances.Poison = 5;
}
public PetrifiedMatriarchsTongue(Serial serial)
: base(serial)
{
}
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();
}
}
}

View File

@@ -0,0 +1,41 @@
using System;
namespace Server.Items
{
public class ReginasRing : SilverRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public ReginasRing()
: base()
{
LootType = LootType.Blessed;
}
public ReginasRing(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1075305;
}
}// Regina's Ring
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View File

@@ -0,0 +1,51 @@
using System;
namespace Server.Items
{
public class ResilientBracer : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public ResilientBracer()
{
Hue = 0x488;
SkillBonuses.SetValues(0, SkillName.MagicResist, 15.0);
Attributes.BonusHits = 5;
Attributes.RegenHits = 2;
Attributes.DefendChance = 10;
}
public ResilientBracer(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1072933;
}
}// Resillient Bracer
public override int PhysicalResistance
{
get
{
return 20;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,52 @@
using System;
namespace Server.Items
{
public class RingOfTheElements : GoldRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public RingOfTheElements()
{
Hue = 0x4E9;
Attributes.Luck = 100;
Resistances.Fire = 16;
Resistances.Cold = 16;
Resistances.Poison = 16;
Resistances.Energy = 16;
}
public RingOfTheElements(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1061104;
}
}// Ring of the Elements
public override int ArtifactRarity
{
get
{
return 11;
}
}
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();
}
}
}

View File

@@ -0,0 +1,43 @@
using System;
namespace Server.Items
{
public class RingOfTheSavant : GoldRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public RingOfTheSavant()
{
LootType = LootType.Blessed;
Attributes.BonusInt = 3;
Attributes.CastRecovery = 1;
Attributes.CastSpeed = 1;
}
public RingOfTheSavant(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1077608;
}
}// Ring of the Savant
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,51 @@
using System;
namespace Server.Items
{
public class RingOfTheVile : GoldRing
{
public override bool IsArtifact { get { return true; } }
[Constructable]
public RingOfTheVile()
{
Hue = 0x4F7;
Attributes.BonusDex = 8;
Attributes.RegenStam = 6;
Attributes.AttackChance = 15;
Resistances.Poison = 20;
}
public RingOfTheVile(Serial serial)
: base(serial)
{
}
public override int LabelNumber
{
get
{
return 1061102;
}
}// Ring of the Vile
public override int ArtifactRarity
{
get
{
return 11;
}
}
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();
}
}
}

View File

@@ -0,0 +1,57 @@
using System;
namespace Server.Items
{
public class TokenOfHolyFavor : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1113652; } } // Token of Holy Favor
[Constructable]
public TokenOfHolyFavor()
{
Hue = 96;
Attributes.BonusHits = 5;
Attributes.CastRecovery = 2;
Attributes.CastSpeed = 1;
Attributes.DefendChance = 10;
Attributes.AttackChance = 10;
Attributes.SpellDamage = 4;
Resistances.Cold = 5;
Resistances.Poison = 5;
}
public TokenOfHolyFavor(Serial serial)
: base(serial)
{
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
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();
}
}
}

View File

@@ -0,0 +1,74 @@
using System;
namespace Server.Items
{
public class TorcOfTheGuardians : GoldNecklace
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1113721; } } // Torc of the Guardians
[Constructable]
public TorcOfTheGuardians()
{
Hue = 1837;
Attributes.BonusInt = 5;
Attributes.BonusStr = 5;
Attributes.BonusDex = 5;
Attributes.RegenStam = 2;
Attributes.RegenMana = 2;
Attributes.LowerManaCost = 5;
Resistances.Physical = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Energy = 5;
}
public TorcOfTheGuardians(Serial serial)
: base(serial)
{
}
public override int InitMinHits
{
get
{
return 255;
}
}
public override int InitMaxHits
{
get
{
return 255;
}
}
public override Race RequiredRace
{
get
{
return Race.Gargoyle;
}
}
public override bool CanBeWornByGargoyles
{
get
{
return true;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.WriteEncodedInt(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
namespace Server.Items
{
public class Venom : GoldBracelet
{
public override bool IsArtifact { get { return true; } }
public override int LabelNumber { get { return 1114783; } } // Venom
[Constructable]
public Venom()
{
Hue = 1371;
Attributes.CastRecovery = 1;
Attributes.CastSpeed = 2;
Attributes.SpellDamage = 10;
Resistances.Poison = 20;
}
public Venom(Serial serial)
: base(serial)
{
}
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();
}
}
}