using System; using Server; using Server.Network; using Server.Targets; using Server.Spells; using Server.Spells.Seventh; namespace Server.Gumps { public class PolymorphEntry { public static readonly PolymorphEntry Chicken = new PolymorphEntry( 208, 1015236, 15, 10 ); public static readonly PolymorphEntry Dog = new PolymorphEntry( 217, 1015237, 17, 10 ); public static readonly PolymorphEntry Wolf = new PolymorphEntry( 225, 1015238, 18, 10 ); public static readonly PolymorphEntry Panther = new PolymorphEntry( 214, 1015239, 20, 14 ); public static readonly PolymorphEntry Gorilla = new PolymorphEntry( 29, 1015240, 23, 10 ); public static readonly PolymorphEntry BlackBear = new PolymorphEntry( 211, 1015241, 22, 10 ); public static readonly PolymorphEntry GrizzlyBear = new PolymorphEntry( 212, 1015242, 22, 12 ); public static readonly PolymorphEntry PolarBear = new PolymorphEntry( 213, 1015243, 26, 10 ); public static readonly PolymorphEntry HumanMale = new PolymorphEntry( 0x190, 1015244, 29, 8 ); public static readonly PolymorphEntry HumanFemale = new PolymorphEntry( 0x191, 1015254, 29, 10 ); public static readonly PolymorphEntry Slime = new PolymorphEntry( 51, 1015246, 5, 10 ); public static readonly PolymorphEntry Orc = new PolymorphEntry( 17, 1015247, 29, 10 ); public static readonly PolymorphEntry LizardMan = new PolymorphEntry( 33, 1015248, 26, 10 ); public static readonly PolymorphEntry Gargoyle = new PolymorphEntry( 4, 1015249, 22, 10 ); public static readonly PolymorphEntry Ogre = new PolymorphEntry( 1, 1015250, 24, 9 ); public static readonly PolymorphEntry Troll = new PolymorphEntry( 54, 1015251, 25, 9 ); public static readonly PolymorphEntry Ettin = new PolymorphEntry( 2, 1015252, 25, 8 ); public static readonly PolymorphEntry Daemon = new PolymorphEntry( 9, 1015253, 25, 8 ); private int m_Body, m_Num, m_X, m_Y; private PolymorphEntry( int Body, int LocNum, int X, int Y ) { m_Body = Body; m_Num = LocNum; m_X = X; m_Y = Y; } public int BodyID { get { return m_Body; } } public int LocNumber{ get { return m_Num; } } public int X{ get{ return m_X; } } public int Y{ get{ return m_Y; } } } public class PolymorphGump : Gump { private class PolymorphCategory { private int m_Num; private PolymorphEntry[] m_Entries; public PolymorphCategory( int num, params PolymorphEntry[] entries ) { m_Num = num; m_Entries = entries; } public PolymorphEntry[] Entries{ get { return m_Entries; } } public int LocNumber{ get { return m_Num; } } } private static PolymorphCategory[] Categories = new PolymorphCategory[] { new PolymorphCategory( 1015235, // Animals PolymorphEntry.Chicken, PolymorphEntry.Dog, PolymorphEntry.Wolf, PolymorphEntry.Panther, PolymorphEntry.Gorilla, PolymorphEntry.BlackBear, PolymorphEntry.GrizzlyBear, PolymorphEntry.PolarBear, PolymorphEntry.HumanMale ), new PolymorphCategory( 1015245, // Monsters PolymorphEntry.Slime, PolymorphEntry.Orc, PolymorphEntry.LizardMan, PolymorphEntry.Gargoyle, PolymorphEntry.Ogre, PolymorphEntry.Troll, PolymorphEntry.Ettin, PolymorphEntry.Daemon, PolymorphEntry.HumanFemale ) }; private Mobile m_Caster; private Item m_Scroll; public PolymorphGump( Mobile caster, Item scroll ) : base( 50, 50 ) { m_Caster = caster; m_Scroll = scroll; int x,y; AddPage( 0 ); AddBackground( 0, 0, 585, 393, 5054 ); AddBackground( 195, 36, 387, 275, 3000 ); AddHtmlLocalized( 0, 0, 510, 18, 1015234, false, false ); //
Polymorph Selection Menu
AddHtmlLocalized( 60, 355, 150, 18, 1011036, false, false ); // OKAY AddButton( 25, 355, 4005, 4007, 1, GumpButtonType.Reply, 1 ); AddHtmlLocalized( 320, 355, 150, 18, 1011012, false, false ); // CANCEL AddButton( 285, 355, 4005, 4007, 0, GumpButtonType.Reply, 2 ); y = 35; for ( int i=0;i 0 ) { int cnum = info.Switches[0]; int cat = cnum%256; int ent = cnum>>8; if ( cat >= 0 && cat < Categories.Length ) { if ( ent >= 0 && ent < Categories[cat].Entries.Length ) { Spell spell = new PolymorphSpell( m_Caster, m_Scroll, Categories[cat].Entries[ent].BodyID ); spell.Cast(); } } } } } public class NewPolymorphGump : Gump { private static readonly PolymorphEntry[] m_Entries = new PolymorphEntry[] { PolymorphEntry.Chicken, PolymorphEntry.Dog, PolymorphEntry.Wolf, PolymorphEntry.Panther, PolymorphEntry.Gorilla, PolymorphEntry.BlackBear, PolymorphEntry.GrizzlyBear, PolymorphEntry.PolarBear, PolymorphEntry.HumanMale, PolymorphEntry.HumanFemale, PolymorphEntry.Slime, PolymorphEntry.Orc, PolymorphEntry.LizardMan, PolymorphEntry.Gargoyle, PolymorphEntry.Ogre, PolymorphEntry.Troll, PolymorphEntry.Ettin, PolymorphEntry.Daemon }; private Mobile m_Caster; private Item m_Scroll; public NewPolymorphGump( Mobile caster, Item scroll ) : base( 0, 0 ) { m_Caster = caster; m_Scroll = scroll; AddPage( 0 ); AddBackground( 0, 0, 520, 404, 0x13BE ); AddImageTiled( 10, 10, 500, 20, 0xA40 ); AddImageTiled( 10, 40, 500, 324, 0xA40 ); AddImageTiled( 10, 374, 500, 20, 0xA40 ); AddAlphaRegion( 10, 10, 500, 384 ); AddHtmlLocalized( 14, 12, 500, 20, 1015234, 0x7FFF, false, false ); //
Polymorph Selection Menu
AddButton( 10, 374, 0xFB1, 0xFB2, 0, GumpButtonType.Reply, 0 ); AddHtmlLocalized( 45, 376, 450, 20, 1060051, 0x7FFF, false, false ); // CANCEL for ( int i = 0; i < m_Entries.Length; i++ ) { PolymorphEntry entry = m_Entries[i]; int page = i / 10 + 1; int pos = i % 10; if ( pos == 0 ) { if ( page > 1 ) { AddButton( 400, 374, 0xFA5, 0xFA7, 0, GumpButtonType.Page, page ); AddHtmlLocalized( 440, 376, 60, 20, 1043353, 0x7FFF, false, false ); // Next } AddPage( page ); if ( page > 1 ) { AddButton( 300, 374, 0xFAE, 0xFB0, 0, GumpButtonType.Page, 1 ); AddHtmlLocalized( 340, 376, 60, 20, 1011393, 0x7FFF, false, false ); // Back } } int x = ( pos % 2 == 0 ) ? 14 : 264; int y = ( pos / 2 ) * 64 + 44; AddHtmlLocalized( x + 84, y, 250, 60, entry.LocNumber, 0x7FFF, false, false ); } } public override void OnResponse( NetState sender, RelayInfo info ) { int idx = info.ButtonID - 1; if ( idx < 0 || idx >= m_Entries.Length ) return; Spell spell = new PolymorphSpell( m_Caster, m_Scroll, m_Entries[idx].BodyID ); spell.Cast(); } } }