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,128 @@
// Created by Malice_Molaka
// For script support contact Malice at Malice_Molaka@hotmail.com
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("Dante's Corpse")]
public class Dante : Mobile
{
public virtual bool IsInvulnerable { get { return true; } }
[Constructable]
public Dante()
{
// STR/DEX/INT
InitStats(31, 41, 51);
// name
Name = "Dante";
Body = 0x190;
// immortal and frozen to-the-spot features below:
Blessed = true;
CantWalk = false;
// Adding a backpack
Container pack = new Backpack();
pack.DropItem(new Gold(250, 300));
pack.Movable = false;
AddItem(pack);
LeatherChest Chest = new LeatherChest();
Chest.Movable = false;
AddItem(Chest);
LeatherGorget Neck = new LeatherGorget();
Neck.Movable = false;
AddItem(Neck);
LeatherArms Arms = new LeatherArms();
Arms.Movable = false;
AddItem(Arms);
LeatherLegs Legs = new LeatherLegs();
Legs.Movable = false;
AddItem(Legs);
LeatherGloves Gloves = new LeatherGloves();
Gloves.Movable = false;
AddItem(Gloves);
FloppyHat Helm = new FloppyHat();
Helm.Movable = false;
AddItem(Helm);
}
public Dante(Serial serial) : base(serial) { }
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{ base.GetContextMenuEntries(from, list); list.Add(new DanteEntry(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 DanteEntry : ContextMenuEntry
{
private Mobile m_Mobile; private Mobile m_Giver;
public DanteEntry(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;
{
// gump name
if (!mobile.HasGump(typeof(DanteQuestGump)))
{
mobile.SendGump(new DanteQuestGump(mobile));
}
}
}
}
public override bool OnDragDrop(Mobile from, Item dropped)
{
Mobile m = from; PlayerMobile mobile = m as PlayerMobile;
if (mobile != null)
{
// item to be dropped
if (dropped is DantesInks)
{
if (dropped.Amount != 5)
{ this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "That is not the right amount!", mobile.NetState); return false; }
dropped.Delete();
// the reward
mobile.AddToBackpack(new Gold(2000));
{
if (1 > Utility.RandomDouble()) // 1 = 100% = chance to drop
switch (Utility.Random(3))
{
case 0: mobile.AddToBackpack(new DantesEarrings()); break;
case 1: mobile.AddToBackpack(new DantesRing()); break;
case 2: mobile.AddToBackpack(new DantesBracelet()); break;
}
return true;
}
// thanks message
this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "Hurry Back!! I have many pages to write.", mobile.NetState);
return true;
}
else if (dropped is Whip) { this.PrivateOverheadMessage(MessageType.Regular, 1153, 1054071, mobile.NetState); return false; } else { this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "I have no need for this...", mobile.NetState); }
}
return false;
}
}
}

View File

@@ -0,0 +1,46 @@
using System;
using Server;
using Server.Commands;
using Server.Gumps;
using Server.Network;
using Server.Items;
using Server.Mobiles;
namespace Server.Gumps
{
public class DanteQuestGump : Gump
{
public static void Initialize()
{
CommandSystem.Register("DanteQuestGump", AccessLevel.GameMaster, new CommandEventHandler(DanteQuestGump_OnCommand));
}
private static void DanteQuestGump_OnCommand(CommandEventArgs e)
{
e.Mobile.SendGump(new DanteQuestGump(e.Mobile));
}
public DanteQuestGump(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 Stolen Inks");
//----------------------/----------------------------------------------/
AddHtml(107, 140, 300, 230, " < BODY > " +
"<BASEFONT COLOR=YELLOW>Greetings Traveler.<BR>" +
"<BASEFONT COLOR=YELLOW>Sorry to bother you but I need a little help.<BR>" +
"<BASEFONT COLOR=YELLOW>I was robbed of my inks and need them to finish illustrating my book.<BR>" +
"<BASEFONT COLOR=YELLOW>You see I have just returned from the underworld and am writing a book about my adventures there.<BR>" +
"<BASEFONT COLOR=YELLOW>If you could find them and bring some of them back,<BR>" +
"<BASEFONT COLOR=YELLOW>bring five inks and, I'll reward you with some <BR>" +
"<BASEFONT COLOR=YELLOW>jewelry I found, I have three different pieces.Drop the inks on your player to stack them.<BR>" +
"<BASEFONT COLOR=YELLOW>Last I saw my inks was right before I was attacked by some brigands outside of Cove.<BR>" +
"<BASEFONT COLOR=YELLOW>That will teach me teach me to travel in unguarded.<BR>" +
"<BASEFONT COLOR=YELLOW><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,56 @@
using System;
using Server;
namespace Server.Items
{
public class DantesBracelet : GoldBracelet
{
public override int ArtifactRarity{ get{ return 21; } }
[Constructable]
public DantesBracelet()
{
Name = "Dantes Bracelet";
Hue = 468;
Attributes.LowerManaCost = 10;
Attributes.DefendChance = 10;
Attributes.Luck = 180;
Attributes.BonusMana = 5;
Attributes.BonusHits = 25;
Attributes.BonusStam = 5;
Attributes.RegenHits = 1;
Attributes.RegenMana = 1;
Attributes.RegenStam = 1;
Attributes.CastRecovery = 3;
Attributes.CastSpeed = 2;
Resistances.Energy = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Physical = 5;
SkillBonuses.SetValues( 0, SkillName.Magery, 10.0 );
}
public DantesBracelet( 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,98 @@
using System;
using System.Collections;
using Server.Items;
using Server.ContextMenus;
using Server.Misc;
using Server.Network;
namespace Server.Mobiles
{
[CorpseName( "a brigand corpse" )]
public class DantesBrigands : BaseCreature
{
[Constructable]
public DantesBrigands() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SpeechHue = Utility.RandomDyedHue();
Title = ", the Brigand";
Hue = Utility.RandomSkinHue();
if ( this.Female = Utility.RandomBool() )
{
this.Body = 0x191;
this.Name = NameList.RandomName( "female" );
AddItem( new Skirt( Utility.RandomRedHue() ) );
}
else
{
this.Body = 0x190;
this.Name = NameList.RandomName( "male" );
AddItem( new ShortPants( Utility.RandomRedHue() ) );
}
SetStr( 386, 464 );
SetDex( 251, 265 );
SetInt( 361, 375 );
SetHits( 4800 );
SetDamage( 28, 32 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 25, 30 );
SetResistance( ResistanceType.Cold, 25, 30 );
SetResistance( ResistanceType.Poison, 10, 20 );
SetResistance( ResistanceType.Energy, 10, 20 );
SetSkill( SkillName.Anatomy, 125.0 );
SetSkill( SkillName.Fencing, 46.0, 77.5 );
SetSkill( SkillName.Macing, 35.0, 57.5 );
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
SetSkill( SkillName.MagicResist, 113.5, 142.5 );
SetSkill( SkillName.Swords, 125.0 );
SetSkill( SkillName.Tactics, 125.0 );
SetSkill( SkillName.Lumberjacking, 125.0 );
Fame = 25000;
Karma = -25000;
VirtualArmor = 50;
AddItem( new ThighBoots( Utility.RandomRedHue() ) );
AddItem( new Surcoat( Utility.RandomRedHue() ) );
AddItem( new Axe());
PackItem( new DantesInks());
Utility.AssignRandomHair( this );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override bool AlwaysMurderer{ get{ return true; } }
public DantesBrigands( 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,56 @@
using System;
using Server;
namespace Server.Items
{
public class DantesEarrings : GoldEarrings
{
public override int ArtifactRarity{ get{ return 21; } }
[Constructable]
public DantesEarrings()
{
Name = "Dantes Earrings";
Hue = 468;
Attributes.LowerManaCost = 10;
Attributes.DefendChance = 10;
Attributes.Luck = 240;
Attributes.BonusMana = 5;
Attributes.BonusHits = 25;
Attributes.BonusStam = 5;
Attributes.RegenHits = 1;
Attributes.RegenMana = 1;
Attributes.RegenStam = 1;
Attributes.CastRecovery = 3;
Attributes.CastSpeed = 2;
Resistances.Energy = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Physical = 5;
SkillBonuses.SetValues( 0, SkillName.MagicResist, 15.0 );
}
public DantesEarrings( 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,69 @@
// Created by Malice_Molaka
// For Script support contact Malice at Malice_Molaka@hotmail.com
using System;using Server;namespace Server.Items
{
public class DantesInks : Item
{
public override int LabelNumber{ get{ return 1062926; } } // I used Petal of the Rose of Trinsic as the base
[Constructable]
public DantesInks() : this( 1 )
{
}
[Constructable]
public DantesInks( int amount ) : base( 0x15FA ) // this is the itemid for the brain
{
Name = "Dante's Inks"; // This is the item name
Stackable = true; // This makes the item either stackable or not
Amount = amount;
Hue = Utility.RandomList( 1157, 1175, 1172, 1171, 1170, 1169, 1168, 1167, 1166, 1165 );
Weight = 3.0; // This makes the item weigh what you want it to
}
public virtual bool Dye( Mobile from, DyeTub sender )
{
from.SendLocalizedMessage( 1042083 ); // You can not dye that.
return false;
}
public override void OnDoubleClick( Mobile from )
{
if ( !IsChildOf( from.Backpack ) )
{
from.SendLocalizedMessage( 1042038 ); // This gives the player the message "You must have the object in your backpack to use it."
}
else if ( from.GetStatMod( "Brain" ) != null )
{
from.SendLocalizedMessage( 1062927 ); // This gives the player the message "You have eaten one of these recently and eating another would provide no benefit."
}
else
{
from.PlaySound( 0x1EE );
from.AddStatMod( new StatMod( StatType.Int, "DantesInks", 5, TimeSpan.FromMinutes( 15.0 ) ) ); // this makes DantesInks give you 5 INT for 15 mins when eaten
Consume();
}
}
public DantesInks( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( (int) 0 ); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View File

@@ -0,0 +1,56 @@
using System;
using Server;
namespace Server.Items
{
public class DantesRing : GoldRing
{
public override int ArtifactRarity{ get{ return 21; } }
[Constructable]
public DantesRing()
{
Name = "Dantes Ring";
Hue = 468;
Attributes.LowerManaCost = 10;
Attributes.DefendChance = 10;
Attributes.Luck = 140;
Attributes.BonusMana = 5;
Attributes.BonusHits = 25;
Attributes.BonusStam = 5;
Attributes.RegenHits = 1;
Attributes.RegenMana = 1;
Attributes.RegenStam = 1;
Attributes.CastRecovery = 3;
Attributes.CastSpeed = 2;
Resistances.Energy = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Physical = 5;
SkillBonuses.SetValues( 0, SkillName.EvalInt, 5.0 );
}
public DantesRing( 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,109 @@
using System;
using Server;
using Server.Items;
using Server.Mobiles;
using System.Collections;
using Server.Network;
namespace Server.Items
{
public class DantesTeleporter : Item
{
private Point3D m_DestLoc;
private Map m_DestMap;
private bool m_AllowCreatures;
private bool m_TelePets;
[CommandProperty( AccessLevel.GameMaster )]
public Point3D Location
{
get { return m_DestLoc; }
set { m_DestLoc = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public Map Map
{
get { return m_DestMap; }
set { m_DestMap = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool AllowCreatures
{
get { return m_AllowCreatures; }
set { m_AllowCreatures = value; InvalidateProperties(); }
}
[CommandProperty( AccessLevel.GameMaster )]
public bool TelePets
{
get { return m_TelePets; }
set { m_TelePets = value; InvalidateProperties(); }
}
[Constructable]
public DantesTeleporter() : base( 3948 )
{
Visible = false;
Hue = 1;
Movable = false;
Weight = 0.0;
Name = "Dante's Teleporter";
}
public DantesTeleporter( Serial serial ) : base( serial )
{
}
public override bool OnMoveOver( Mobile m )
{
if( !m_AllowCreatures && !m.Player )
return true;
if( m.Backpack.ConsumeTotal( typeof( DantesBracelet ), 1 ) )
{
if( m_TelePets )
{
Server.Mobiles.BaseCreature.TeleportPets( m, m_DestLoc, m_DestMap );
}
m.PlaySound(0x1F7);
m.MoveToWorld( m_DestLoc, m_DestMap );
return false;
}
m.SendMessage( " You must have Dante's Bracelet if you wish to pass." );
return true;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( m_DestLoc );
writer.Write( m_DestMap );
writer.Write( m_AllowCreatures );
writer.Write( m_TelePets );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
m_DestLoc = reader.ReadPoint3D();
m_DestMap = reader.ReadMap();
m_AllowCreatures = reader.ReadBool();
m_TelePets = reader.ReadBool();
}
}
}