/*
SpellCraftBook.cs - Version 12.0
Last Modified On 10/16/2003 at 3:48:16 PM
Script generated by Gump Creator 2.01
245, create new page, 7 entries per page
next page id = 5601 ( 365, 245 )
next page press = 5605;
last page id = 5603 ( 340, 245 )
last page press = 5607;
*/
using System;
using Server;
using Server.Gumps;
using Server.Network;
using Server.Items;
using Server.SpellCrafting;
using Server.SpellCrafting.Items;
using Server.SpellCrafting.Crafts;
using Server.Targeting;
namespace Server.SpellCrafting.Gumps
{
public class SpellCraftBook : Gump
{
private Mobile m_Owner;
private int gumpX, gumpY, m_Count, m_Page;
public SpellCraftBook( Mobile owner, BookOfSpellCrafts book ) : base( 10, 10 )
{
owner.CloseGump( typeof( SpellCraftBook ) );
m_Owner = owner;
Closable = true;
Disposable = true;
Dragable = true;
Resizable = false;
AddImage( 50, 50, 0x1F4 );
AddHtml( 76, 60, 185, 20, "<center>Spellcraft Index</center", false, false );
AddButton( 80, 85, 0x1523, 0x1523, 1, GumpButtonType.Page, 1 );
AddLabel( 95, 85, 0, Core.AOS ? "Stat Bonus Crafts" : "Durability Crafts" );
AddButton( 80, 105, 0x1523, 0x1523, 2, GumpButtonType.Page, 2 );
AddLabel( 95, 105, 0, Core.AOS ? "Resist Bonus Crafts" : "Weapon Damage Crafts" );
AddButton( 80, 125, 0x1523, 0x1523, 3, GumpButtonType.Page, 3 );
AddLabel( 95, 125, 0, Core.AOS ? "Regeneration Crafts" : "Weapon Accuracy Crafts" );
AddButton( 80, 145, 0x1523, 0x1523, 4, GumpButtonType.Page, 4 );
AddLabel( 95, 145, 0, Core.AOS ? "Casting Crafts" : "Armor Protection Crafts" );
if ( Core.AOS )
{
AddButton( 80, 165, 0x1523, 0x1523, 5, GumpButtonType.Page, 5 );
AddLabel( 95, 165, 0, "Weapon Crafts" );
AddButton( 80, 185, 0x1523, 0x1523, 8, GumpButtonType.Page, 8 );
AddLabel( 95, 185, 0, "Miscellaneous Crafts" );
}
AddLabel( 80, 230, 0, "Total Spellcrafts:" );
AddHtml( 205, 230, 40, 20, String.Format( "<div align=right>{0}</div>", book.Count ), false, false );
AddPage( 1 );
if ( Core.AOS )
AddHtml( 262, 60, 185, 20, "<center>Stat Bonus Crafts</center>", false, false );
else
AddHtml( 262, 60, 185, 20, "<center>Durability Crafts</center>", false, false );
m_Page = 1;
gumpX = 275; gumpY = 85;
if ( Core.AOS )
{
if( book.HasCraft( 0 ) )
{
AddCraft( gumpX, gumpY, 7, "Strength Bonus" );
gumpY += 20;
}
if( book.HasCraft( 1 ) )
{
AddCraft( gumpX, gumpY, 8, "Dexterity Bonus" );
gumpY += 20;
}
if( book.HasCraft( 2 ) )
{
AddCraft( gumpX, gumpY, 9, "Intelligence Bonus" );
gumpY += 20;
}
if( book.HasCraft( 3 ) )
{
AddCraft( gumpX, gumpY, 10, "Hit Point Bonus" );
gumpY += 20;
}
if( book.HasCraft( 4 ) )
{
AddCraft( gumpX, gumpY, 11, "Stamina Bonus" );
gumpY += 20;
}
if( book.HasCraft( 5 ) )
{
AddCraft( gumpX, gumpY, 12, "Mana Bonus" );
gumpY += 20;
}
}
else
{
if ( book.HasCraft( 48 ) )
{
AddCraft( gumpX, gumpY, 54, "Durable" );
gumpY += 20;
}
if ( book.HasCraft( 49 ) )
{
AddCraft( gumpX, gumpY, 55, "Substantial" );
gumpY += 20;
}
if ( book.HasCraft( 50 ) )
{
AddCraft( gumpX, gumpY, 56, "Massive" );
gumpY += 20;
}
if ( book.HasCraft( 51 ) )
{
AddCraft( gumpX, gumpY, 57, "Fortified" );
gumpY += 20;
}
if ( book.HasCraft( 52 ) )
{
AddCraft( gumpX, gumpY, 58, "Indestructible" );
gumpY += 20;
}
}
AddPage( 2 );
if ( Core.AOS )
AddHtml( 262, 60, 185, 20, "<center>Resist Bonus Crafts</center>", false, false );
else
AddHtml( 262, 60, 185, 20, "<center>Weapon Damage Crafts</center>", false, false );
gumpX = 275; gumpY = 85;
m_Page = 2;
if ( Core.AOS )
{
if( book.HasCraft( 6 ) )
{
AddCraft( gumpX, gumpY, 13, "Physical Resist Bonus" );
gumpY += 20;
}
if( book.HasCraft( 7 ) )
{
AddCraft( gumpX, gumpY, 14, "Fire Resist Bonus" );
gumpY += 20;
}
if( book.HasCraft( 8 ) )
{
AddCraft( gumpX, gumpY, 15, "Cold Resist Bonus" );
gumpY += 20;
}
if( book.HasCraft( 9 ) )
{
AddCraft( gumpX, gumpY, 16, "Poison Resist Bonus" );
gumpY += 20;
}
if( book.HasCraft( 10 ) )
{
AddCraft( gumpX, gumpY, 17, "Energy Resist Bonus" );
gumpY += 20;
}
}
else
{
if ( book.HasCraft( 53 ) )
{
AddCraft( gumpX, gumpY, 59, "Ruin" );
gumpY += 20;
}
if ( book.HasCraft( 54 ) )
{
AddCraft( gumpX, gumpY, 60, "Might" );
gumpY += 20;
}
if ( book.HasCraft( 55 ) )
{
AddCraft( gumpX, gumpY, 61, "Force" );
gumpY += 20;
}
if ( book.HasCraft( 56 ) )
{
AddCraft( gumpX, gumpY, 62, "Power" );
gumpY += 20;
}
if ( book.HasCraft( 57 ) )
{
AddCraft( gumpX, gumpY, 63, "Vanquishing" );
gumpY += 20;
}
}
AddPage( 3 );
if ( Core.AOS )
AddHtml( 262, 60, 185, 20, "<center>Regeneration Crafts</center>", false, false );
else
AddHtml( 262, 60, 185, 20, "<center>Accuracy Crafts</center>", false, false );
gumpX = 275; gumpY = 85;
m_Page = 3;
if ( Core.AOS )
{
if( book.HasCraft( 11 ) )
{
AddCraft( gumpX, gumpY, 18, "Hit Point Regeneration" );
gumpY += 20;
}
if( book.HasCraft( 12 ) )
{
AddCraft( gumpX, gumpY, 19, "Mana Regeneration" );
gumpY += 20;
}
if( book.HasCraft( 13 ) )
{
AddCraft( gumpX, gumpY, 20, "Stamina Regeneration" );
gumpY += 20;
}
}
else
{
if ( book.HasCraft( 58 ) )
{
AddCraft( gumpX, gumpY, 64, "Accurate" );
gumpY += 20;
}
if ( book.HasCraft( 59 ) )
{
AddCraft( gumpX, gumpY, 65, "Surpassingly Accurate" );
gumpY += 20;
}
if ( book.HasCraft( 60 ) )
{
AddCraft( gumpX, gumpY, 66, "Emminently Accurate" );
gumpY += 20;
}
if ( book.HasCraft( 61 ) )
{
AddCraft( gumpX, gumpY, 67, "Exceedingly Accurate" );
gumpY += 20;
}
if ( book.HasCraft( 62 ) )
{
AddCraft( gumpX, gumpY, 68, "Supremely Accurate" );
gumpY += 20;
}
}
AddPage( 4 );
if ( Core.AOS )
AddHtml( 262, 60, 185, 20, "<center>Casting Crafts</center>", false, false );
else
AddHtml( 262, 60, 185, 20, "<center>Armor Protection Crafts</center>", false, false );
gumpX = 275; gumpY = 85;
m_Page = 4;
if ( Core.AOS )
{
if( book.HasCraft( 14 ) )
{
AddCraft( gumpX, gumpY, 21, "Faster Cast Recovery" );
gumpY += 20;
}
if( book.HasCraft( 15 ) )
{
AddCraft( gumpX, gumpY, 22, "Faster Cast Speed" );
gumpY += 20;
}
if( book.HasCraft( 16 ) )
{
AddCraft( gumpX, gumpY, 23, "Lower Mana Cost" );
gumpY += 20;
}
if( book.HasCraft( 17 ) )
{
AddCraft( gumpX, gumpY, 24, "Lower Reagent Cost" );
gumpY += 20;
}
if( book.HasCraft( 18 ) )
{
AddCraft( gumpX, gumpY, 25, "Mage Armor" );
gumpY += 20;
}
if( book.HasCraft( 19 ) )
{
AddCraft( gumpX, gumpY, 26, "Mage Weapon" );
gumpY += 20;
}
if( book.HasCraft( 20 ) )
{
AddCraft( gumpX, gumpY, 27, "Spell Channeling" );
gumpY += 20;
}
if( book.HasCraft( 21 ) )
{
AddCraft( gumpX, gumpY, 28, "Spell Damage Increase" );
gumpY += 20;
}
}
else
{
if ( book.HasCraft( 63 ) )
{
AddCraft( gumpX, gumpY, 69, "Defense" );
gumpY += 20;
}
if ( book.HasCraft( 64 ) )
{
AddCraft( gumpX, gumpY, 70, "Guarding" );
gumpY += 20;
}
if ( book.HasCraft( 65 ) )
{
AddCraft( gumpX, gumpY, 71, "Hardening" );
gumpY += 20;
}
if ( book.HasCraft( 66 ) )
{
AddCraft( gumpX, gumpY, 72, "Fortification" );
gumpY += 20;
}
if ( book.HasCraft( 67 ) )
{
AddCraft( gumpX, gumpY, 73, "Invulnerability" );
gumpY += 20;
}
}
if ( Core.AOS )
{
AddPage( 5 );
AddHtml( 262, 60, 185, 20, "<center>Weapon Crafts</center>", false, false );
gumpX = 275; gumpY = 85;
m_Count = 0;
m_Page = 5;
if( book.HasCraft( 22 ) )
{
AddCraft( gumpX, gumpY, 29, ++m_Count, m_Page, "Hit Cold Area" );
gumpY += 20;
}
if( book.HasCraft( 23 ) )
{
AddCraft( gumpX, gumpY, 30, ++m_Count, m_Page, "Hit Energy Area" );
gumpY += 20;
}
if( book.HasCraft( 24 ) )
{
AddCraft( gumpX, gumpY, 31, ++m_Count, m_Page, "Hit Fire Area" );
gumpY += 20;
}
if( book.HasCraft( 25 ) )
{
AddCraft( gumpX, gumpY, 32, ++m_Count, m_Page, "Hit Physical Area" );
gumpY += 20;
}
if( book.HasCraft( 26 ) )
{
AddCraft( gumpX, gumpY, 33, ++m_Count, m_Page, "Hit Poison Area" );
gumpY += 20;
}
if( book.HasCraft( 27 ) )
{
AddCraft( gumpX, gumpY, 34, ++m_Count, m_Page, "Hit Dispel" );
gumpY += 20;
}
if( book.HasCraft( 28 ) )
{
AddCraft( gumpX, gumpY, 35, ++m_Count, m_Page, "Hit Fireball" );
gumpY += 20;
}
if( book.HasCraft( 29 ) )
{
AddCraft( gumpX, gumpY, 36, ++m_Count, m_Page, "Hit Harm" );
gumpY += 20;
}
if( book.HasCraft( 30 ) )
{
AddCraft( gumpX, gumpY, 37, ++m_Count, m_Page, "Hit Lightning" );
gumpY += 20;
}
if( book.HasCraft( 31 ) )
{
AddCraft( gumpX, gumpY, 38, ++m_Count, m_Page, "Hit Magic Arrow" );
gumpY += 20;
}
if( book.HasCraft( 32 ) )
{
AddCraft( gumpX, gumpY, 39, ++m_Count, m_Page, "Hit Lower Attack" );
gumpY += 20;
}
if( book.HasCraft( 33 ) )
{
AddCraft( gumpX, gumpY, 40, ++m_Count, m_Page, "Hit Lower Defense" );
gumpY += 20;
}
if( book.HasCraft( 34 ) )
{
AddCraft( gumpX, gumpY, 41, ++m_Count, m_Page, "Hit Leech Hits" );
gumpY += 20;
}
if( book.HasCraft( 35 ) )
{
AddCraft( gumpX, gumpY, 42, ++m_Count, m_Page, "Hit Leech Mana" );
gumpY += 20;
}
if( book.HasCraft( 36 ) )
{
AddCraft( gumpX, gumpY, 43, ++m_Count, m_Page, "Hit Leech Stamina" );
gumpY += 20;
}
if( book.HasCraft( 37 ) )
{
AddCraft( gumpX, gumpY, 44, ++m_Count, m_Page, "Use Best Weapon Skill" );
gumpY += 20;
}
if( book.HasCraft( 38 ) )
{
AddCraft( gumpX, gumpY, 45, ++m_Count, m_Page, "Weapon Damage Increase" );
gumpY += 20;
}
if( book.HasCraft( 39 ) )
{
AddCraft( gumpX, gumpY, 46, ++m_Count, m_Page, "Swing Speed Increase" );
gumpY += 20;
}
AddPage( 8 );
AddHtml( 262, 60, 185, 20, "<center>Miscellaneous Crafts</center>", false, false );
gumpX = 275; gumpY = 85;
if( book.HasCraft( 40 ) )
{
AddCraft( gumpX, gumpY, 47, "Hit Chance Increase" );
gumpY += 20;
}
if( book.HasCraft( 41 ) )
{
AddCraft( gumpX, gumpY, 48, "Defense Chance Increase" );
gumpY += 20;
}
if( book.HasCraft( 42 ) )
{
AddCraft( gumpX, gumpY, 49, "Enhance Potions" );
gumpY += 20;
}
if( book.HasCraft( 43 ) )
{
AddCraft( gumpX, gumpY, 50, "Lower Stat Requirements" );
gumpY += 20;
}
if( book.HasCraft( 44 ) )
{
AddCraft( gumpX, gumpY, 51, "Luck" );
gumpY += 20;
}
if( book.HasCraft( 45 ) )
{
AddCraft( gumpX, gumpY, 52, "Reflect Physical" );
gumpY += 20;
}
if( book.HasCraft( 46 ) )
{
AddCraft( gumpX, gumpY, 53, "Self Repair" );
gumpY += 20;
}
if( book.HasCraft( 47 ) )
{
AddCraft( gumpX, gumpY, 74, "Item Name" );
gumpY += 20;
}
}
}
public void AddCraft( int x, int y, int buttonID, string text )
{
AddButton( gumpX, gumpY, 0x846, 0x845, buttonID, GumpButtonType.Reply, 0 );
AddLabel( gumpX + 20, gumpY - 2, 0, text );
}
public void AddCraft( int x, int y, int buttonID, int count, int currPage, string text )
{
if ( count == 8 || count == 15 )
{
AddButton( 365, 235, 5601, 5605, 50 + buttonID, GumpButtonType.Page, currPage + 1 );
AddPage( currPage + 1 );
AddButton( 340, 235, 5603, 5607, 51 + buttonID, GumpButtonType.Page, currPage );
m_Page = currPage + 1;
gumpX = 275; gumpY = 85;
}
AddButton( gumpX, gumpY, 0x846, 0x845, buttonID, GumpButtonType.Reply, 0 );
AddLabel( gumpX + 20, gumpY - 2, 0, text );
}
public override void OnResponse( NetState state, RelayInfo info )
{
Mobile from = state.Mobile;
int craft = info.ButtonID - 7;
if ( craft < 0 )
return;
if ( !SpellCraft.Enabled[craft] )
{
from.SendMessage( "This craft is currently not enabled." );
return;
}
from.SendMessage( "Select the item to place this spellcraft on." );
switch( craft )
{
case 0: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusStr.Callback ) ); break;
case 1: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusDex.Callback ) ); break;
case 2: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusInt.Callback ) ); break;
case 3: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusHits.Callback ) ); break;
case 4: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusStam.Callback ) ); break;
case 5: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( BonusMana.Callback ) ); break;
case 6: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( PhysicalResist.Callback ) ); break;
case 7: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( FireResist.Callback ) ); break;
case 8: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( ColdResist.Callback ) ); break;
case 9: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( PoisonResist.Callback ) ); break;
case 10: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( EnergyResist.Callback ) ); break;
case 11: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( RegenHits.Callback ) ); break;
case 12: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( RegenMana.Callback ) ); break;
case 13: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( RegenStam.Callback ) ); break;
case 14: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( CastRecovery.Callback ) ); break;
case 15: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( CastSpeed.Callback ) ); break;
case 16: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( LowerManaCost.Callback ) ); break;
case 17: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( LowerRegCost.Callback ) ); break;
case 18: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( MageArmor.Callback ) ); break;
case 19: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( MageWeapon.Callback ) ); break;
case 20: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( SpellChanneling.Callback ) ); break;
case 21: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( SpellDamage.Callback ) ); break;
case 22: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitColdArea.Callback ) ); break;
case 23: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitEnergyArea.Callback ) ); break;
case 24: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitFireArea.Callback ) ); break;
case 25: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitPhysicalArea.Callback ) ); break;
case 26: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitPoisonArea.Callback ) ); break;
case 27: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitDispel.Callback ) ); break;
case 28: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitFireball.Callback ) ); break;
case 29: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitHarm.Callback ) ); break;
case 30: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLightning.Callback ) ); break;
case 31: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitMagicArrow.Callback ) ); break;
case 32: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLowerAttack.Callback ) ); break;
case 33: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLowerDefend.Callback ) ); break;
case 34: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLeechHits.Callback ) ); break;
case 35: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLeechMana.Callback ) ); break;
case 36: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( HitLeechStam.Callback ) ); break;
case 37: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( UseBestSkill.Callback ) ); break;
case 38: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( WeaponDamage.Callback ) ); break;
case 39: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( WeaponSpeed.Callback ) ); break;
case 40: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( AttackChance.Callback ) ); break;
case 41: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( DefendChance.Callback ) ); break;
case 42: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( EnhancePotions.Callback ) ); break;
case 43: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( LowerStatReq.Callback ) ); break;
case 44: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Luck.Callback ) ); break;
case 45: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( ReflectPhysical.Callback ) ); break;
case 46: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( SelfRepair.Callback ) ); break;
case 47: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( ItemName.Callback ) ); break;
// Non-AOS Callbacks
case 48: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Durable.Callback ) ); break;
case 49: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Substantial.Callback ) ); break;
case 50: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Massive.Callback ) ); break;
case 51: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Fortified.Callback ) ); break;
case 52: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Indestructible.Callback ) ); break;
case 53: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Ruin.Callback ) ); break;
case 54: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Might.Callback ) ); break;
case 55: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Force.Callback ) ); break;
case 56: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Power.Callback ) ); break;
case 57: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Vanq.Callback ) ); break;
case 58: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Accurate.Callback ) ); break;
case 59: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Surpassingly.Callback ) ); break;
case 60: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Eminently.Callback ) ); break;
case 61: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Exceedingly.Callback ) ); break;
case 62: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Supremely.Callback ) ); break;
case 63: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Defense.Callback ) ); break;
case 64: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Guarding.Callback ) ); break;
case 65: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Hardening.Callback ) ); break;
case 66: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Fortification.Callback ) ); break;
case 67: from.BeginTarget( 1, false, TargetFlags.None, new TargetCallback( Invulnerability.Callback ) ); break;
default: break;
}
}
}
}