ModernUO/Projects/Scripts/Engines/Treasures of Tokuno/GreaterArtifacts.cs
2019-08-02 18:16:11 -07:00

557 lines
12 KiB
C#

namespace Server.Items
{
public class DarkenedSky : Kama
{
[Constructible]
public DarkenedSky()
{
WeaponAttributes.HitLightning = 60;
Attributes.WeaponSpeed = 25;
Attributes.WeaponDamage = 50;
}
public DarkenedSky(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070966; // Darkened Sky
public override void GetDamageTypes(Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct)
{
phys = fire = pois = chaos = direct = 0;
cold = nrgy = 50;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class KasaOfTheRajin : Kasa
{
[Constructible]
public KasaOfTheRajin()
{
Attributes.SpellDamage = 12;
}
public KasaOfTheRajin(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1070969; // Kasa of the Raj-in
public override int BasePhysicalResistance => 12;
public override int BaseFireResistance => 17;
public override int BaseColdResistance => 21;
public override int BasePoisonResistance => 17;
public override int BaseEnergyResistance => 17;
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(2);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (version <= 1)
{
MaxHitPoints = 255;
HitPoints = 255;
}
if (version == 0)
LootType = LootType.Regular;
}
}
public class RuneBeetleCarapace : PlateDo
{
[Constructible]
public RuneBeetleCarapace()
{
Attributes.BonusMana = 10;
Attributes.RegenMana = 3;
Attributes.LowerManaCost = 15;
ArmorAttributes.LowerStatReq = 100;
ArmorAttributes.MageArmor = 1;
}
public RuneBeetleCarapace(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070968; // Rune Beetle Carapace
public override int BaseColdResistance => 14;
public override int BaseEnergyResistance => 14;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class Stormgrip : LeatherNinjaMitts
{
[Constructible]
public Stormgrip()
{
Attributes.BonusInt = 8;
Attributes.Luck = 125;
Attributes.WeaponDamage = 25;
}
public Stormgrip(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070970; // Stormgrip
public override int BasePhysicalResistance => 10;
public override int BaseColdResistance => 18;
public override int BaseEnergyResistance => 18;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class SwordOfTheStampede : NoDachi
{
[Constructible]
public SwordOfTheStampede()
{
WeaponAttributes.HitHarm = 100;
Attributes.AttackChance = 10;
Attributes.WeaponDamage = 60;
}
public SwordOfTheStampede(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070964; // Sword of the Stampede
public override void GetDamageTypes(Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct)
{
phys = fire = pois = nrgy = chaos = direct = 0;
cold = 100;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class SwordsOfProsperity : Daisho
{
[Constructible]
public SwordsOfProsperity()
{
WeaponAttributes.MageWeapon = 30;
Attributes.SpellChanneling = 1;
Attributes.CastSpeed = 1;
Attributes.Luck = 200;
}
public SwordsOfProsperity(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070963; // Swords of Prosperity
public override void GetDamageTypes(Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct)
{
phys = cold = pois = nrgy = chaos = direct = 0;
fire = 100;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class TheHorselord : Yumi
{
[Constructible]
public TheHorselord()
{
Attributes.BonusDex = 5;
Attributes.RegenMana = 1;
Attributes.Luck = 125;
Attributes.WeaponDamage = 50;
Slayer = SlayerName.ElementalBan;
Slayer2 = SlayerName.ReptilianDeath;
}
public TheHorselord(Serial serial) : base(serial)
{
}
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override int LabelNumber => 1070967; // The Horselord
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class TomeOfLostKnowledge : Spellbook
{
[Constructible]
public TomeOfLostKnowledge()
{
LootType = LootType.Regular;
Hue = 0x530;
SkillBonuses.SetValues(0, SkillName.Magery, 15.0);
Attributes.BonusInt = 8;
Attributes.LowerManaCost = 15;
Attributes.SpellDamage = 15;
}
public TomeOfLostKnowledge(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1070971; // Tome of Lost Knowledge
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public class WindsEdge : Tessen
{
[Constructible]
public WindsEdge()
{
WeaponAttributes.HitLeechMana = 40;
Attributes.WeaponDamage = 50;
Attributes.WeaponSpeed = 50;
Attributes.DefendChance = 10;
}
public WindsEdge(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1070965; // Wind's Edge
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override void GetDamageTypes(Mobile wielder, out int phys, out int fire, out int cold, out int pois,
out int nrgy, out int chaos, out int direct)
{
phys = fire = cold = pois = chaos = direct = 0;
nrgy = 100;
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
public enum PigmentType
{
None,
ParagonGold,
VioletCouragePurple,
InvulnerabilityBlue,
LunaWhite,
DryadGreen,
ShadowDancerBlack,
BerserkerRed,
NoxGreen,
RumRed,
FireOrange,
FadedCoal,
Coal,
FadedGold,
StormBronze,
Rose,
MidnightCoal,
FadedBronze,
FadedRose,
DeepRose
}
public class PigmentsOfTokuno : BasePigmentsOfTokuno
{
private static int[][] m_Table =
{
// Hue, Label
new[]
{
/*PigmentType.None,*/ 0, -1
},
new[]
{
/*PigmentType.ParagonGold,*/ 0x501, 1070987
},
new[]
{
/*PigmentType.VioletCouragePurple,*/ 0x486, 1070988
},
new[]
{
/*PigmentType.InvulnerabilityBlue,*/ 0x4F2, 1070989
},
new[]
{
/*PigmentType.LunaWhite,*/ 0x47E, 1070990
},
new[]
{
/*PigmentType.DryadGreen,*/ 0x48F, 1070991
},
new[]
{
/*PigmentType.ShadowDancerBlack,*/ 0x455, 1070992
},
new[]
{
/*PigmentType.BerserkerRed,*/ 0x21, 1070993
},
new[]
{
/*PigmentType.NoxGreen,*/ 0x58C, 1070994
},
new[]
{
/*PigmentType.RumRed,*/ 0x66C, 1070995
},
new[]
{
/*PigmentType.FireOrange,*/ 0x54F, 1070996
},
new[]
{
/*PigmentType.Fadedcoal,*/ 0x96A, 1079579
},
new[]
{
/*PigmentType.Coal,*/ 0x96B, 1079580
},
new[]
{
/*PigmentType.FadedGold,*/ 0x972, 1079581
},
new[]
{
/*PigmentType.StormBronze,*/ 0x977, 1079582
},
new[]
{
/*PigmentType.Rose,*/ 0x97C, 1079583
},
new[]
{
/*PigmentType.MidnightCoal,*/ 0x96C, 1079584
},
new[]
{
/*PigmentType.FadedBronze,*/ 0x975, 1079585
},
new[]
{
/*PigmentType.FadedRose,*/ 0x97B, 1079586
},
new[]
{
/*PigmentType.DeepRose,*/ 0x97E, 1079587
}
};
private PigmentType m_Type;
[Constructible]
public PigmentsOfTokuno(PigmentType type = PigmentType.None) : this(type,
type == PigmentType.None || type >= PigmentType.FadedCoal ? 10 : 50)
{
}
[Constructible]
public PigmentsOfTokuno(PigmentType type, int uses) : base(uses)
{
Weight = 1.0;
Type = type;
}
public PigmentsOfTokuno(Serial serial) : base(serial)
{
}
[CommandProperty(AccessLevel.GameMaster)]
public PigmentType Type
{
get => m_Type;
set
{
m_Type = value;
int v = (int)m_Type;
if (v >= 0 && v < m_Table.Length)
{
Hue = m_Table[v][0];
Label = m_Table[v][1];
}
else
{
Hue = 0;
Label = -1;
}
}
}
public override int LabelNumber => 1070933; // Pigments of Tokuno
public static int[] GetInfo(PigmentType type)
{
int v = (int)type;
if (v < 0 || v >= m_Table.Length)
v = 0;
return m_Table[v];
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(1);
writer.WriteEncodedInt((int)m_Type);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = InheritsItem ? 0 : reader.ReadInt(); // Required for BasePigmentsOfTokuno insertion
switch (version)
{
case 1:
Type = (PigmentType)reader.ReadEncodedInt();
break;
case 0: break;
}
}
}
}