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,138 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a miner corpse" )]
public class DarkMiner : BaseCreature
{
public override bool IsScaredOfScaryThings{ get{ return false; } }
public override bool IsScaryToPets{ get{ return true; } }
[Constructable]
public DarkMiner () : this( false, 1.5 )
{
}
[Constructable]
public DarkMiner ( bool summoned, double scalar ) : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.4, 0.8 )
{
Name = "a Dark Miner";
Body = 200;
Hue = 1175;
SetStr( (int)(251*scalar), (int)(350*scalar) );
SetDex( (int)(76*scalar), (int)(100*scalar) );
SetInt( (int)(101*scalar), (int)(150*scalar) );
SetHits( (int)(151*scalar), (int)(210*scalar) );
SetDamage( (int)(15*scalar), (int)(30*scalar) );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Cold, (int)(20*scalar), (int)(40*scalar) );
SetResistance( ResistanceType.Poison, (int)(20*scalar), (int)(35*scalar) );
SetResistance( ResistanceType.Energy, (int)(40*scalar), (int)(50*scalar) );
SetSkill( SkillName.MagicResist, (190.1*scalar), (210.0*scalar) );
SetSkill( SkillName.Tactics, (100.1*scalar), (100.0*scalar) );
SetSkill( SkillName.Wrestling, (100.1*scalar), (150.0*scalar) );
SetSkill( SkillName.Magery, (100.1*scalar), (150.0*scalar) );
SetSkill( SkillName.EvalInt, (100.1*scalar), (150.0*scalar) );
SetSkill( SkillName.Meditation, (100.1*scalar), (150.0*scalar) );
PackGold( 100, 250 );
//if ( 0.2 > Utility.RandomDouble() )
PackItem( new DarkMetal(1) );
}
public override int GetAngerSound()
{
return 541;
}
public override int GetIdleSound()
{
if ( !Controlled )
return 541;
return base.GetIdleSound();
}
public override int GetDeathSound()
{
if ( !Controlled )
return 542;
return base.GetDeathSound();
}
public override int GetHurtSound()
{
if ( Controlled )
return 320;
return base.GetHurtSound();
}
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
if ( 0.2 > Utility.RandomDouble() )
defender.Combatant = null;
}
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 true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public DarkMiner ( 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,41 @@
using System;
using Server;
namespace Server.Items
{
public class DarkMetal : Item
{
[Constructable]
public DarkMetal() : this( 1 )
{
}
[Constructable]
public DarkMetal( int amount ) : base( 0xF13 )
{
Name = "Dark Metal";
Hue = 1175;
Stackable = true;
Weight = 0.1;
Amount = amount;
}
public DarkMetal( 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,60 @@
using System;
using Server;
namespace Server.Items
{
public class DarkBlade : DoubleBladedStaff
{
public override int ArtifactRarity{ get{ return 1773; } }
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.BleedAttack; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.InfectiousStrike; } }
public override float MlSpeed{ get{ return 3.50f; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public DarkBlade()
{
Weight = 15.0;
Name = "Dark Blade";
Hue = 1175;
WeaponAttributes.HitEnergyArea = 25;
WeaponAttributes.HitLightning = 45;
WeaponAttributes.SelfRepair = 14;
Attributes.CastRecovery = 2;
Attributes.CastSpeed = 1;
Attributes.SpellChanneling = 1;
Attributes.SpellDamage = 20;
Attributes.WeaponDamage = 60;
Attributes.WeaponSpeed = 40;
StrRequirement = 50;
LootType = LootType.Regular;
}
public DarkBlade( 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,30 @@
using System;
using Server;
using Server.Gumps;
namespace Server.Gumps
{
public class SatesFinish : Gump
{
public SatesFinish()
: base( 200, 200 )
{
this.Closable=true;
this.Disposable=true;
this.Dragable=true;
this.Resizable=false;
this.AddPage(0);
this.AddBackground(0, 0, 353, 118, 9270);
this.AddAlphaRegion( 2, 2, 349, 114 );
// this.AddItem(297, 38, 4168);
this.AddLabel(118, 15, 1149, @"Quest Completed");
this.AddLabel(48, 39, 255, @"Well done, you have collected all of the");
this.AddLabel(48, 55, 255, @"items I requested for the Blade.");
this.AddLabel(48, 71, 255, @"Here it is, May it serve you well.");
// this.AddItem(12, 38, 4171);
}
}
}

View File

@@ -0,0 +1,142 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
using Server.ContextMenus;
using Server.Gumps;
using Server.Misc;
using Server.Network;
using Server.Spells;
using System.Collections.Generic;
namespace Server.Mobiles
{
[CorpseName( "Sates' Corpse" )]
public class Sates : Mobile
{
public virtual bool IsInvulnerable{ get{ return true; } }
[Constructable]
public Sates()
{
Name = "Sates";
Title = "the Mind Reader";
Body = 0x190;
CantWalk = true;
Hue = Utility.RandomSkinHue();
AddItem( new Server.Items.Robe( GetRobeHue() ) );
AddItem( new Server.Items.Boots( GetBootsHue() ) );
//AddItem( new Server.Items.BoneCrusher() );
AddItem( new Server.Items.DarkBlade() );
//AddItem( new Server.Items.HolyKnightsBreastplate() );
AddItem( new Server.Items.Kilt() );
AddItem( new Server.Items.BodySash() );
int hairHue = 1153;
switch ( Utility.Random( 1 ) )
{
case 0: AddItem( new LongHair( hairHue ) ); break;
}
Blessed = true;
}
public virtual int GetBootsHue()
{
return 1623;
}
public virtual int GetRobeHue()
{
return 1623;
}
public Sates( Serial serial ) : base( serial )
{
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries( from, list );
list.Add( new SatiesEntry( 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 SatiesEntry : ContextMenuEntry
{
private Mobile m_Mobile;
private Mobile m_Giver;
public SatiesEntry( 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( SatesStart ) ) )
{
mobile.SendGump( new SatesStart( mobile ));
}
}
}
}
public override bool OnDragDrop( Mobile from, Item dropped )
{
Mobile m = from;
PlayerMobile mobile = m as PlayerMobile;
if ( mobile != null)
{
if( dropped is DarkMetal )
{
if(dropped.Amount!=15)
{
this.PrivateOverheadMessage( MessageType.Regular, 1153, false, "That is not the amount I asked for!", mobile.NetState );
return false;
}
dropped.Delete();
mobile.AddToBackpack( new DarkBlade() );
mobile.SendGump( new SatesFinish());
return true;
}
else if ( dropped is DarkMetal)
{
this.PrivateOverheadMessage( MessageType.Regular, 1153, 1054071, mobile.NetState );
return false;
}
else
{
this.PrivateOverheadMessage( MessageType.Regular, 1153, false, "Why on earth would I want to have that?", mobile.NetState );
}
}
return false;
}
}
}

View File

@@ -0,0 +1,84 @@
using System;
using Server;
using Server.Gumps;
using Server.Network;
using Server.Items;
using Server.Mobiles;
using Server.Commands;
namespace Server.Gumps
{
public class SatesStart : Gump
{
public static void Initialize()
{
CommandSystem.Register("SatesStart", AccessLevel.GameMaster, new CommandEventHandler(SatesStart_OnCommand));
}
private static void SatesStart_OnCommand( CommandEventArgs e )
{
e.Mobile.SendGump( new SatesStart( e.Mobile ) );
}
public SatesStart( 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, "The Quest of Shadows" );
AddHtml( 107, 140, 300, 230, "<BODY>" +
//----------------------/----------------------------------------------/
"<BASEFONT COLOR=YELLOW>Sates looks deep within your eyes.<BR>" +
"<BASEFONT COLOR=YELLOW>Ah, so you are interested in my blade?." +
"<BASEFONT COLOR=YELLOW>I will craft you on if you bring me 15 Dark Metal Shards." +
"<BASEFONT COLOR=YELLOW>The Monsters that hold these Dark Metal Shards are Called" +
"<BASEFONT COLOR=YELLOW>Dark Miners. These monsters take the form of horses and" +
"<BASEFONT COLOR=YELLOW>are found in the mountains North of Britain." +
"</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 ) //Function for GumpButtonType.Reply Buttons
{
Mobile from = state.Mobile;
switch ( info.ButtonID )
{
case 0: //Case uses the ActionIDs defenied above. Case 0 defenies the actions for the button with the action id 0
{
//Cancel
from.SendMessage( "I will be waiting hahahaha!" );
break;
}
}
}
}
}