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,55 @@
/* Created by Hammerhand */
using System;
using Server;
using Server.Commands;
using Server.Gumps;
using Server.Network;
using Server.Items;
using Server.Mobiles;
namespace Server.Gumps
{ public class GhostlyBlacksmithGump : Gump {
public static void Initialize() {
CommandSystem.Register( "GhostlyBlacksmithGump", AccessLevel.GameMaster, new CommandEventHandler( GhostlyBlacksmithGump_OnCommand ) );
}
private static void GhostlyBlacksmithGump_OnCommand( CommandEventArgs e )
{
e.Mobile.SendGump( new GhostlyBlacksmithGump( e.Mobile ) ); }
public GhostlyBlacksmithGump( Mobile owner ) : base( 50,50 )
{
//----------------------------------------------------------------------------------------------------
AddPage( 0 );AddImageTiled( 54, 33, 369, 400, 2624 );AddAlphaRegion( 54, 33, 369, 400 );AddImageTiled( 416, 39, 44, 389, 203 );
//--------------------------------------Window size bar--------------------------------------------
AddImage( 97, 49, 9005 );AddImageTiled( 58, 39, 29, 390, 10460 );AddImageTiled( 412, 37, 31, 389, 10460 );
AddLabel( 140, 60, 0x34, "Ghostly Blacksmith Quest" );
//----------------------/----------------------------------------------/
AddHtml( 107, 140, 300, 230, " < BODY > " +
"<BASEFONT COLOR=YELLOW>'Greetings Warrior' says the spirit. <BR>" +
"<BASEFONT COLOR=YELLOW>'Once, long ago I crafted a special<BR>" +
"<BASEFONT COLOR=YELLOW>sword for the battles against evil.<BR>" +
"<BASEFONT COLOR=YELLOW>The sword was victorious, but now is <BR>" +
"<BASEFONT COLOR=YELLOW>broken. I feel its presence may be<BR>" +
"<BASEFONT COLOR=YELLOW>needed yet again. I need you to go<BR>" +
"<BASEFONT COLOR=YELLOW>and find the items needed to craft a <BR>" +
"<BASEFONT COLOR=YELLOW>new one.Take this Ghostly Smelting Box to combine them<BR>" +
"<BASEFONT COLOR=YELLOW>into the Energized Sosarian Ingots<BR>" +
"<BASEFONT COLOR=YELLOW>that are needed to make the weapon.<BR>" +
"<BASEFONT COLOR=YELLOW> Just double click the box when you have them all.'<BR>" +
"<BASEFONT COLOR=YELLOW> <BR>" +
"<BASEFONT COLOR=YELLOW>'The items are Star Metal Fragments,<BR>" +
"<BASEFONT COLOR=YELLOW>Special Charcoal, Sosarian Ore and an<BR>" +
"<BASEFONT COLOR=YELLOW>Energizer Crystal.'<BR>" +
"<BASEFONT COLOR=YELLOW> <BR>" +
"<BASEFONT COLOR=YELLOW> 'The Fragments and Crystal can be found at Exodus Dungeon in Ilshenar.<BR>" +
"<BASEFONT COLOR=YELLOW>The Charcoal will be outside of Umbra, somewhere in the corrupted forest.<BR>" +
"<BASEFONT COLOR=YELLOW>And the Sosarian Ore in one of the <BR>" +
"<BASEFONT COLOR=YELLOW>Malas mines.'<BR>" +
"<BASEFONT COLOR=YELLOW> <BR>" +
"<BASEFONT COLOR=YELLOW>'Once you have the ingots, bring them<BR>" +
"<BASEFONT COLOR=YELLOW>to me and I'll recreate the sword for<BR>" +
"<BASEFONT COLOR=YELLOW>you. Please hurry, for I fear we havent<BR>" +
"<BASEFONT COLOR=YELLOW>much time.'<BR>" +
"</BODY>", false, true);
//----------------------/----------------------------------------------/
AddImage( 430, 9, 10441);AddImageTiled( 40, 38, 17, 391, 9263 );AddImage( 6, 25, 10421 );AddImage( 34, 12, 10420 );AddImageTiled( 94, 25, 342, 15, 10304 );AddImageTiled( 40, 427, 415, 16, 10304 );AddImage( -10, 314, 10402 );AddImage( 56, 150, 10411 );AddImage( 155, 120, 2103 );AddImage( 136, 84, 96 );AddButton( 225, 390, 0xF7, 0xF8, 0, GumpButtonType.Reply, 0 ); }
//----------------------/----------------------------------------------/
public override void OnResponse( NetState state, RelayInfo info ){ Mobile from = state.Mobile; switch ( info.ButtonID ) { case 0:{ break; }}}}}

View File

@@ -0,0 +1,124 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using System.Collections;
using System.Collections.Generic;
using Server.Items;
using Server.Targeting;
using Server.ContextMenus;
using Server.Gumps;
using Server.Misc;
using Server.Network;
using Server.Spells;
namespace Server.Mobiles
{[CorpseName( "AGhostlyBlacksmith's Corpse" )]public class AGhostlyBlacksmith : Mobile{public virtual bool IsInvulnerable{ get{ return true; } }
[Constructable]public AGhostlyBlacksmith(){
InitStats( 31, 41, 51 );
Name = "A Ghostly Blacksmith";
Title = "";
Body = 0x190;
Hue = 1072;
AddItem( new Server.Items.DeathShroud() );
AddItem(new SmithHammer());
Blessed = true;
CantWalk = true;
Container pack = new Backpack();
pack.DropItem( new Gold( 250, 300 ) );
pack.Movable = false;
AddItem( pack );
}
public AGhostlyBlacksmith(Serial serial)
: base(serial)
{
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
list.Add(new AGhostlyBlacksmithEntry(from, this));
}
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();
}
public class AGhostlyBlacksmithEntry : ContextMenuEntry
{
private Mobile m_Mobile; private Mobile m_Giver;
public AGhostlyBlacksmithEntry(Mobile from, Mobile giver)
: base(6146, 3)
{
m_Mobile = from; m_Giver = giver;
}
public override void OnClick()
{
if (!(m_Mobile is PlayerMobile)) return;
PlayerMobile mobile = (PlayerMobile)m_Mobile;
{
if (!mobile.HasGump(typeof(GhostlyBlacksmithGump)))
{
mobile.SendGump(new GhostlyBlacksmithGump(mobile));
mobile.AddToBackpack(new AncientSmeltingBox());
}
}
}
}
public override bool OnDragDrop(Mobile from, Item dropped)
{
Mobile m = from;
PlayerMobile mobile = m as PlayerMobile;
if (mobile != null)
{
if (dropped is EnergizedSosarianIngots)
{
dropped.Delete();
mobile.AddToBackpack(new Gold(2000));
mobile.AddToBackpack(new LegendarySwordOfAmbrose());
this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "Thank you. May this sword server you well against Evil.", mobile.NetState);
return true;
}
else
{
this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "I have no need for this...", mobile.NetState); return true;
}
}
return false;
}
}
}

View File

@@ -0,0 +1,83 @@
/* Created by Hammerhand */
using System;
using Server;
using Server.Gumps;
using Server.Network;
using System.Collections;
using Server.Multis;
using Server.Mobiles;
namespace Server.Items
{
public class AncientSmeltingBox : Item
{
[Constructable]
public AncientSmeltingBox() : this( null )
{
}
[Constructable]
public AncientSmeltingBox ( string name ) : base ( 0x9A8 )
{
Name = "Ancient Smelting Box";
LootType = LootType.Blessed;
Hue = 1259;
}
public AncientSmeltingBox(Serial serial)
: base(serial)
{
}
public override void OnDoubleClick(Mobile m)
{
Item e = m.Backpack.FindItemByType(typeof(AncientSmeltingBox));
if (e != null)
{
Item a = m.Backpack.FindItemByType(typeof(SosarianOre));
Item b = m.Backpack.FindItemByType(typeof(EnergizerCrystal));
Item c = m.Backpack.FindItemByType(typeof(StarMetalFragments));
Item d = m.Backpack.FindItemByType(typeof(SpecialCharcoal));
if (e == null || e.Amount < 1 || a == null || a.Amount < 1 || b == null || b.Amount < 1 || c == null || c.Amount < 1 || d == null || d.Amount < 1)
{
m.SendMessage("You are missing something...");
}
else
{
m.AddToBackpack(new EnergizedSosarianIngots());
a.Delete();
b.Delete();
c.Delete();
d.Delete();
m.SendMessage("You Combine the items into the Energized Sosarian Ingots");
this.Delete();
}
}
}
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,47 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using Server;
namespace Server.Items
{
public class EnergizedSosarianIngots : Item
{
[Constructable]
public EnergizedSosarianIngots() : this( 1 )
{}
[Constructable]
public EnergizedSosarianIngots( int amountFrom, int amountTo ) : this( Utility.RandomMinMax( amountFrom, amountTo ) )
{}
[Constructable]
public EnergizedSosarianIngots( int amount ) : base( 7155 )
{
Name = "Energized Sosarian Ingots";
Hue = 55;
Stackable = false;
Weight = 0.01;
Amount = amount;
}
public EnergizedSosarianIngots(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(); }}}

View File

@@ -0,0 +1,46 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using Server;
namespace Server.Items
{
public class EnergizerCrystal : Item
{
[Constructable]
public EnergizerCrystal() : this(1)
{}
[Constructable]
public EnergizerCrystal( int amountFrom, int amountTo ) : this( Utility.RandomMinMax( amountFrom, amountTo ) )
{}
[Constructable]
///////////The hexagon value ont he line below is the ItemID
public EnergizerCrystal( int amount ) : base( 7961 )
{
///////////Item name
Name = "Energizer Crystal";
///////////Item hue
Hue = 2953;
///////////Stackable
Stackable = false;
///////////Weight of one item
Weight = 0.01;
Amount = amount;
}
public EnergizerCrystal( 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(); }}}

View File

@@ -0,0 +1,55 @@
// Created with UO Weapon Generator
// Created On: 8/12/2007 10:06:14 PM
// By: Hammerhand
using System;
using Server;
namespace Server.Items
{
public class LegendarySwordOfAmbrose : Longsword
{
public override int ArtifactRarity{ get{ return 31; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public LegendarySwordOfAmbrose()
{
Name = "Legendary Sword Of Ambrose";
Hue = 2401;
Slayer = SlayerName.DaemonDismissal;
Attributes.SpellChanneling = 1;
Attributes.BonusHits = 20;
Attributes.RegenHits = 2;
Attributes.RegenStam = 2;
WeaponAttributes.UseBestSkill = 1;
WeaponAttributes.HitLeechStam = 40;
Attributes.AttackChance = 18;
Attributes.DefendChance = 15;
Attributes.WeaponDamage = 65;
Attributes.WeaponSpeed = 35;
Attributes.ReflectPhysical = 25;
WeaponAttributes.ResistPhysicalBonus = 15;
WeaponAttributes.DurabilityBonus = 15;
WeaponAttributes.SelfRepair = 65;
WeaponAttributes.HitLightning = 56;
}
public LegendarySwordOfAmbrose(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();
}
} // End Class
} // End Namespace

View File

@@ -0,0 +1,46 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using Server;
namespace Server.Items
{
public class SosarianOre : Item
{
[Constructable]
public SosarianOre() : this( 1 )
{}
[Constructable]
public SosarianOre( int amountFrom, int amountTo ) : this( Utility.RandomMinMax( amountFrom, amountTo ) )
{}
[Constructable]
public SosarianOre( int amount ) : base( 6584 )
{
Name = "SosarianOre";
Hue = 55;
Stackable = false;
Weight = 0.01;
Amount = amount;
}
public SosarianOre( 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(); }}}

View File

@@ -0,0 +1,46 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using Server;
namespace Server.Items
{
public class SpecialCharcoal : Item
{
[Constructable]
public SpecialCharcoal(): this(1)
{}
[Constructable]
public SpecialCharcoal( int amountFrom, int amountTo ) : this( Utility.RandomMinMax( amountFrom, amountTo ) )
{}
[Constructable]
public SpecialCharcoal( int amount ) : base( 3979 )
{
Name = "Special Charcoal";
Hue = 0;
Stackable = false;
Weight = 0.01;
Amount = amount;
}
public SpecialCharcoal( 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(); }}}

View File

@@ -0,0 +1,45 @@
/* This file was created with
Ilutzio's Questmaker. Enjoy! */
/* Created by Hammerhand */
using System;
using Server;
namespace Server.Items
{
public class StarMetalFragments : Item
{
[Constructable]
public StarMetalFragments(): this(1)
{}
[Constructable]
public StarMetalFragments( int amountFrom, int amountTo ) : this( Utility.RandomMinMax( amountFrom, amountTo ) )
{}
[Constructable]
public StarMetalFragments( int amount ) : base( 3977 )
{
Name = "Star Metal Fragments";
Hue = 2413;
Stackable = false;
Weight = 0.01;
Amount = amount;
}
public StarMetalFragments( 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(); }}}

View File

@@ -0,0 +1,80 @@
/* Created by Hammerhand */
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an ancient reapers corpse" )]
public class AncientReaper : BaseCreature
{
[Constructable]
public AncientReaper() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an ancient reaper";
Body = 47;
BaseSoundID = 442;
Hue = 2411;
SetStr( 150, 375 );
SetDex( 100, 175 );
SetInt( 101, 250 );
SetHits( 1500, 1850 );
SetStam( 100 );
SetDamage( 20, 43 );
SetDamageType( ResistanceType.Physical, 80 );
SetDamageType( ResistanceType.Poison, 20 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
SetSkill( SkillName.Magery, 90.1, 100.0 );
SetSkill( SkillName.MagicResist, 100.1, 125.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.Wrestling, 50.1, 60.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
switch (Utility.Random(5))
{
case 0: PackItem(new SpecialCharcoal()); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
public override int TreasureMapLevel{ get{ return 2; } }
public override bool DisallowAllMoves{ get{ return true; } }
public AncientReaper( 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,79 @@
/* Created by Hammerhand */
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an energized elemental corpse" )]
public class EnergizedElemental : BaseCreature
{
[Constructable]
public EnergizedElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an energized elemental";
Body = 159;
BaseSoundID = 278;
Hue = 2953;
SetStr( 800, 928 );
SetDex( 166, 185 );
SetInt( 500, 750 );
SetHits( 1516, 1869 );
SetDamage( 38, 47 );
SetDamageType( ResistanceType.Physical, 50 );
SetDamageType( ResistanceType.Poison, 50 );
SetDamageType( ResistanceType.Energy, 50 );
SetResistance( ResistanceType.Physical, 55, 65 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 40, 50 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.EvalInt, 85.1, 100.0 );
SetSkill( SkillName.Magery, 85.1, 100.0 );
SetSkill( SkillName.Meditation, 10.4, 50.0 );
SetSkill( SkillName.MagicResist, 80.1, 95.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
Fame = 12500;
Karma = -12500;
VirtualArmor = 60;
switch (Utility.Random(5))
{
case 0: PackItem(new EnergizerCrystal()); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.Rich );
}
public override int TreasureMapLevel{ get{ return 5; } }
public EnergizedElemental( 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,82 @@
/* Created by Hammerhand */
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a Sosarian elemental corpse" )]
public class SosarianElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
[Constructable]
public SosarianElemental() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a Sorarian elemental";
Body = 14;
BaseSoundID = 268;
Hue = 55;
SetStr( 1260, 1550 );
SetDex( 150, 185 );
SetInt( 1200, 1392 );
SetHits( 600, 930 );
SetDamage( 28, 37 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 30, 35 );
SetResistance( ResistanceType.Fire, 10, 20 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 15, 25 );
SetResistance( ResistanceType.Energy, 15, 25 );
SetSkill( SkillName.MagicResist, 50.1, 95.0 );
SetSkill( SkillName.Tactics, 60.1, 100.0 );
SetSkill( SkillName.Wrestling, 60.1, 100.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 34;
ControlSlots = 2;
switch (Utility.Random(5))
{
case 0: PackItem(new SosarianOre()); break;
}
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
}
public override bool BleedImmune{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 1; } }
public SosarianElemental( 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,202 @@
/* Created by Hammerhand */
using System;
using Server.Items;
using Server.Network;
namespace Server.Mobiles
{
[CorpseName( "a star metal golem corpse" )]
public class StarMetalGolem : BaseCreature
{
private bool m_Stunning;
public override bool IsScaredOfScaryThings{ get{ return false; } }
public override bool IsScaryToPets{ get{ return true; } }
[Constructable]
public StarMetalGolem() : this( false, 1.0 )
{
}
[Constructable]
public StarMetalGolem( bool summoned, double scalar ) : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
{
Name = "a Star Metal golem";
Body = 752;
if ( summoned )
Hue = 2413;
SetStr( (int)(500*scalar), (int)(750*scalar) );
SetDex( (int)(176*scalar), (int)(300*scalar) );
SetInt( (int)(400*scalar), (int)(650*scalar) );
SetHits( (int)(1510*scalar), (int)(2100*scalar) );
SetDamage( (int)(36*scalar), (int)(50*scalar) );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, (int)(50*scalar), (int)(65*scalar) );
if ( summoned )
SetResistance( ResistanceType.Fire, (int)(50*scalar), (int)(60*scalar) );
else
SetResistance( ResistanceType.Fire, (int)(100*scalar) );
SetResistance( ResistanceType.Cold, (int)(10*scalar), (int)(30*scalar) );
SetResistance( ResistanceType.Poison, (int)(10*scalar), (int)(25*scalar) );
SetResistance( ResistanceType.Energy, (int)(30*scalar), (int)(40*scalar) );
SetSkill( SkillName.MagicResist, (150.1*scalar), (190.0*scalar) );
SetSkill( SkillName.Tactics, (60.1*scalar), (100.0*scalar) );
SetSkill( SkillName.Wrestling, (60.1*scalar), (100.0*scalar) );
if ( summoned )
{
Fame = 10;
Karma = 10;
}
else
{
Fame = 3500;
Karma = -3500;
}
if ( !summoned )
{
switch (Utility.Random(5))
{
case 0: PackItem(new StarMetalFragments()); break;
}
}
ControlSlots = 4;
}
public override bool DeleteOnRelease{ get{ return true; } }
public override int GetAngerSound()
{
return 541;
}
public override int GetIdleSound()
{
if ( !Controlled )
return 542;
return base.GetIdleSound();
}
public override int GetDeathSound()
{
if ( !Controlled )
return 545;
return base.GetDeathSound();
}
public override int GetAttackSound()
{
return 562;
}
public override int GetHurtSound()
{
if ( Controlled )
return 320;
return base.GetHurtSound();
}
public override bool AutoDispel{ get{ return !Controlled; } }
public override bool BleedImmune{ get{ return true; } }
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
if ( !m_Stunning && 0.3 > Utility.RandomDouble() )
{
m_Stunning = true;
defender.Animate( 21, 6, 1, true, false, 0 );
this.PlaySound( 0xEE );
defender.LocalOverheadMessage( MessageType.Regular, 0x3B2, false, "You have been stunned by a colossal blow!" );
BaseWeapon weapon = this.Weapon as BaseWeapon;
if ( weapon != null )
weapon.OnHit( this, defender );
if ( defender.Alive )
{
defender.Frozen = true;
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( Recover_Callback ), defender );
}
}
}
private void Recover_Callback( object state )
{
Mobile defender = state as Mobile;
if ( defender != null )
{
defender.Frozen = false;
defender.Combatant = null;
defender.LocalOverheadMessage( MessageType.Regular, 0x3B2, false, "You recover your senses." );
}
m_Stunning = false;
}
public override void OnDamage( int amount, Mobile from, bool willKill )
{
if ( Controlled || Summoned )
{
Mobile master = ( this.ControlMaster );
if ( master == null )
master = this.SummonMaster;
if ( master != null && master.Player && master.Map == this.Map && master.InRange( Location, 20 ) )
{
if ( master.Mana >= amount )
{
master.Mana -= amount;
}
else
{
amount -= master.Mana;
master.Mana = 0;
master.Damage( amount );
}
}
}
base.OnDamage( amount, from, willKill );
}
public override bool BardImmune{ get{ return !Core.AOS || Controlled; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public StarMetalGolem( 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();
}
}
}