468 lines
12 KiB
C#
468 lines
12 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Mobiles;
|
|
using Server.Gumps;
|
|
using Server.Network;
|
|
|
|
namespace Server.Items
|
|
{
|
|
[FlipableAddon(Direction.South, Direction.East)]
|
|
public class SkeletalHangmanAddon : BaseAddon
|
|
{
|
|
private Mobile _Clicker;
|
|
|
|
public override BaseAddonDeed Deed { get { return new SkeletalHangmanAddonDeed(); } }
|
|
|
|
[Constructable]
|
|
public SkeletalHangmanAddon()
|
|
: this(null)
|
|
{
|
|
}
|
|
|
|
public SkeletalHangmanAddon(Mobile clicker)
|
|
{
|
|
_Clicker = clicker;
|
|
|
|
AddComponent(new AddonComponent(0x9D39), 0, 0, 0);
|
|
AddComponent(new InternalComponent(0x9D38), 0, 1, 0);
|
|
}
|
|
|
|
public virtual void Flip(Mobile from, Direction direction)
|
|
{
|
|
switch (direction)
|
|
{
|
|
case Direction.South:
|
|
AddComponent(new AddonComponent(0x9D39), 0, 0, 0);
|
|
AddComponent(new InternalComponent(0x9D38), 0, 1, 0);
|
|
break;
|
|
case Direction.East:
|
|
AddComponent(new AddonComponent(0x9D3B), 0, 0, 0);
|
|
AddComponent(new InternalComponent(0x9D3A), 1, 0, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public class InternalComponent : AddonComponent
|
|
{
|
|
public override bool ForceShowProperties { get { return true; } }
|
|
|
|
public InternalComponent(int id) : base(id)
|
|
{
|
|
}
|
|
|
|
public override void AddNameProperty(ObjectPropertyList list)
|
|
{
|
|
SkeletalHangmanAddon addon = Addon as SkeletalHangmanAddon;
|
|
|
|
if (addon._Clicker != null)
|
|
{
|
|
list.Add(1156983, addon._Clicker.Name);
|
|
}
|
|
else
|
|
{
|
|
list.Add(1156982);
|
|
}
|
|
}
|
|
|
|
public InternalComponent(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 SkeletalHangmanAddon(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write(0);
|
|
|
|
writer.Write(_Clicker);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
|
|
_Clicker = reader.ReadMobile();
|
|
}
|
|
}
|
|
|
|
public class SkeletalHangmanAddonDeed : BaseAddonDeed
|
|
{
|
|
public override int LabelNumber { get { return 1156982; } } // Skeletal Hangman
|
|
public override BaseAddon Addon { get { return new SkeletalHangmanAddon(_Clicker); } }
|
|
|
|
private Mobile _Clicker;
|
|
|
|
[Constructable]
|
|
public SkeletalHangmanAddonDeed()
|
|
{
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile m)
|
|
{
|
|
_Clicker = m;
|
|
|
|
base.OnDoubleClick(m);
|
|
}
|
|
|
|
public SkeletalHangmanAddonDeed(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
[FlipableAddon(Direction.South, Direction.East)]
|
|
public class KotlSacraficialAltarAddon : BaseAddon
|
|
{
|
|
public override BaseAddonDeed Deed { get { return new KotlSacraficialAltarAddonDeed(); } }
|
|
|
|
[Constructable]
|
|
public KotlSacraficialAltarAddon()
|
|
{
|
|
AddComponent(new AddonComponent(0x9D5F), 0, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D60), 0, 1, 0);
|
|
AddComponent(new AddonComponent(0x9D61), 1, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D62), 1, 1, 0);
|
|
}
|
|
|
|
public virtual void Flip(Mobile from, Direction direction)
|
|
{
|
|
switch (direction)
|
|
{
|
|
case Direction.East:
|
|
AddComponent(new AddonComponent(0x9D5F), 0, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D60), 0, 1, 0);
|
|
AddComponent(new AddonComponent(0x9D61), 1, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D62), 1, 1, 0);
|
|
break;
|
|
case Direction.South:
|
|
AddComponent(new AddonComponent(0x9D63), 0, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D64), 1, 0, 0);
|
|
AddComponent(new AddonComponent(0x9D65), 0, 1, 0);
|
|
AddComponent(new AddonComponent(0x9D66), 1, 1, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public KotlSacraficialAltarAddon(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 KotlSacraficialAltarAddonDeed : BaseAddonDeed
|
|
{
|
|
public override BaseAddon Addon { get { return new KotlSacraficialAltarAddon(); } }
|
|
public override int LabelNumber { get { return 1124311; } } // Kotl Sacrificial Altar
|
|
|
|
[Constructable]
|
|
public KotlSacraficialAltarAddonDeed()
|
|
{
|
|
}
|
|
|
|
public KotlSacraficialAltarAddonDeed(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 TreasuresOfKotlRewardDeed : BaseRewardTitleDeed
|
|
{
|
|
private TextDefinition _Title;
|
|
|
|
public override TextDefinition Title { get { return _Title; } }
|
|
|
|
public TreasuresOfKotlRewardDeed(int localization)
|
|
{
|
|
_Title = localization;
|
|
}
|
|
|
|
public TreasuresOfKotlRewardDeed(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write(0);
|
|
|
|
TextDefinition.Serialize(writer, _Title);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
|
|
_Title = TextDefinition.Deserialize(reader);
|
|
}
|
|
}
|
|
|
|
public class KatalkotlsRing : SilverRing
|
|
{
|
|
public override int LabelNumber { get { return 1156989; } }
|
|
|
|
[Constructable]
|
|
public KatalkotlsRing()
|
|
{
|
|
Hue = 2591;
|
|
|
|
SkillBonuses.SetValues(0, SkillName.MagicResist, 10);
|
|
SkillBonuses.SetValues(1, SkillName.Meditation, 10);
|
|
Attributes.RegenHits = 5;
|
|
Attributes.RegenMana = 3;
|
|
Attributes.SpellDamage = 20;
|
|
}
|
|
|
|
public bool HasSkillBonus
|
|
{
|
|
get { return SkillBonuses.Skill_3_Value != 0; }
|
|
}
|
|
|
|
public override void OnDoubleClick(Mobile m)
|
|
{
|
|
if (IsChildOf(m.Backpack) && m is PlayerMobile && !HasSkillBonus)
|
|
{
|
|
BaseGump.SendGump(new ApplySkillBonusGump((PlayerMobile)m, SkillBonuses, Skills, 20, 2));
|
|
}
|
|
else
|
|
{
|
|
base.OnDoubleClick(m);
|
|
}
|
|
}
|
|
|
|
public override void GetProperties(ObjectPropertyList list)
|
|
{
|
|
base.GetProperties(list);
|
|
|
|
if (!HasSkillBonus)
|
|
{
|
|
list.Add(1155609); // Double Click to Set Skill Bonus
|
|
}
|
|
}
|
|
|
|
public static SkillName[] Skills =
|
|
{
|
|
SkillName.Necromancy,
|
|
SkillName.Magery,
|
|
SkillName.Bushido,
|
|
SkillName.Chivalry,
|
|
SkillName.Ninjitsu,
|
|
SkillName.Mysticism
|
|
};
|
|
|
|
public KatalkotlsRing(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 BootsOfEscaping : ThighBoots
|
|
{
|
|
public override int LabelNumber { get { return 1155607; } } // Boots of Escaping
|
|
|
|
public BootsOfEscaping()
|
|
{
|
|
Attributes.BonusDex = 4;
|
|
Attributes.RegenStam = 1;
|
|
}
|
|
|
|
public BootsOfEscaping(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 TalonsOfEscaping : LeatherTalons
|
|
{
|
|
public override int LabelNumber { get { return 1155682; } } // Talons of Escaping
|
|
|
|
public TalonsOfEscaping()
|
|
{
|
|
Attributes.BonusDex = 4;
|
|
Attributes.RegenStam = 1;
|
|
}
|
|
|
|
public TalonsOfEscaping(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
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 TribalBanner : Item, IFlipable
|
|
{
|
|
public override int LabelNumber { get { return ItemID + 1084024; } }
|
|
public override bool ForceShowProperties { get { return true; } }
|
|
|
|
public int NorthID { get { return GetTribeID(_Tribe); } }
|
|
public int WestID { get { return GetTribeID(_Tribe) + 1; } }
|
|
|
|
private EodonTribe _Tribe;
|
|
|
|
[CommandProperty(AccessLevel.GameMaster)]
|
|
public EodonTribe Tribe
|
|
{
|
|
get { return _Tribe; }
|
|
set
|
|
{
|
|
_Tribe = value;
|
|
|
|
int id = GetTribeID(_Tribe);
|
|
|
|
if (ItemID != id)
|
|
ItemID = id;
|
|
|
|
InvalidateProperties();
|
|
}
|
|
}
|
|
|
|
[Constructable]
|
|
public TribalBanner(EodonTribe tribe) : base(GetTribeID(tribe))
|
|
{
|
|
_Tribe = tribe;
|
|
}
|
|
|
|
public static int GetTribeID(EodonTribe tribe)
|
|
{
|
|
switch (tribe)
|
|
{
|
|
default:
|
|
case EodonTribe.Jukari: return 0x9D53;
|
|
case EodonTribe.Kurak: return 0x9D55;
|
|
case EodonTribe.Barako: return 0x9D57;
|
|
case EodonTribe.Sakkhra: return 0x9D59;
|
|
case EodonTribe.Barrab: return 0x9D5B;
|
|
case EodonTribe.Urali: return 0x9D5D;
|
|
}
|
|
}
|
|
|
|
public void OnFlip(Mobile from)
|
|
{
|
|
// lets make sure we have the right ID before we begin
|
|
int id = ItemID;
|
|
|
|
if (id != WestID && id != NorthID)
|
|
{
|
|
id = WestID;
|
|
}
|
|
|
|
if (id == WestID)
|
|
ItemID = NorthID;
|
|
else
|
|
ItemID = WestID;
|
|
}
|
|
|
|
public TribalBanner(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write(0);
|
|
|
|
writer.Write((int)_Tribe);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
|
|
_Tribe = (EodonTribe)reader.ReadInt();
|
|
}
|
|
}
|
|
}
|