Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class GibberHead : Item
|
||||
{
|
||||
[Constructable]
|
||||
public GibberHead()
|
||||
: base(7960)
|
||||
{
|
||||
Weight = 5.0;
|
||||
Name = "a gibberling queen head";
|
||||
Hue = 0;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
}
|
||||
|
||||
public GibberHead(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
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("a corpse")]
|
||||
public class GibberHunter : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public GibberHunter()
|
||||
: base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("male");
|
||||
Title = "the hunter";
|
||||
Body = 400;
|
||||
|
||||
///////////immortal and frozen to-the-spot features below:
|
||||
Blessed = true;
|
||||
CantWalk = true;
|
||||
///////////STR/DEX/INT
|
||||
InitStats(31, 41, 51);
|
||||
/*
|
||||
SetStr(76, 100);
|
||||
SetDex(56, 75);
|
||||
SetInt(11, 14);
|
||||
|
||||
SetHits(100);
|
||||
SetDex(25);
|
||||
SetInt(100);
|
||||
|
||||
SetDamage(11, 15);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 20);
|
||||
SetResistance(ResistanceType.Cold, 20);
|
||||
SetResistance(ResistanceType.Poison, 20);
|
||||
|
||||
SetSkill(SkillName.Magery, 100.0);
|
||||
SetSkill(SkillName.Meditation, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 100.0);
|
||||
SetSkill(SkillName.Tactics, 100.0);
|
||||
SetSkill(SkillName.Archery, 100.0);
|
||||
SetSkill(SkillName.Anatomy, 100.0);
|
||||
SetSkill(SkillName.Focus, 100.0);*/
|
||||
|
||||
Utility.AssignRandomHair(this);
|
||||
AddItem(new Shirt());
|
||||
AddItem(new LongPants());
|
||||
|
||||
Bow bow = new Bow();
|
||||
bow.Attributes.SpellChanneling = 1;
|
||||
bow.Attributes.CastSpeed = -1;
|
||||
AddItem(bow);
|
||||
|
||||
Fame = 450;
|
||||
Karma = 0;
|
||||
|
||||
VirtualArmor = 24;
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
AddItem(new Gold(2500));
|
||||
}
|
||||
|
||||
public override bool OnDragDrop(Mobile from, Item dropped)
|
||||
{
|
||||
|
||||
Mobile m = from;
|
||||
|
||||
PlayerMobile mobile = m as PlayerMobile;
|
||||
|
||||
if (mobile != null)
|
||||
{
|
||||
if (dropped is GibberHead)
|
||||
{
|
||||
dropped.Delete();
|
||||
//mobile.AddToBackpack(new SoulThiefsDagger( ));
|
||||
mobile.AddToBackpack(new GibberToken());
|
||||
this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "Thank you. as i said here is a reward.", mobile.NetState);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.PrivateOverheadMessage(MessageType.Regular, 1153, false, "I have no need for this...", mobile.NetState); return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public class TheHunterEntry : ContextMenuEntry
|
||||
{
|
||||
private Mobile m_Mobile; private Mobile m_Giver;
|
||||
|
||||
public TheHunterEntry(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(HunterQuestGump)))
|
||||
{
|
||||
if (GibberToken.GibberTokenExistsOn(mobile))
|
||||
{
|
||||
mobile.SendMessage("You have already completed this task.");
|
||||
}
|
||||
else
|
||||
{
|
||||
mobile.SendGump(new HunterQuestGump());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
list.Add(new TheHunterEntry(from, this));
|
||||
}
|
||||
|
||||
public GibberHunter(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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a gibberling corpse" )]
|
||||
public class GibberlingQueen : BaseCreature
|
||||
{
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.Dismount;
|
||||
}
|
||||
|
||||
private Mobile spawn;
|
||||
private Point3D spawnloc;
|
||||
private Map spawnmap;
|
||||
|
||||
[Constructable]
|
||||
public GibberlingQueen() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a gibberling queen";
|
||||
Body = 307;
|
||||
BaseSoundID = 422;
|
||||
|
||||
SetStr( 350 );
|
||||
SetDex( 120 );
|
||||
SetInt( 120 );
|
||||
|
||||
SetHits( 750 );
|
||||
|
||||
SetDamage( 17, 24 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 0 );
|
||||
SetDamageType( ResistanceType.Fire, 40 );
|
||||
SetDamageType( ResistanceType.Energy, 60 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40 );
|
||||
SetResistance( ResistanceType.Fire, 60 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 60 );
|
||||
SetResistance( ResistanceType.Energy, 60 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 120.0 );
|
||||
SetSkill( SkillName.Tactics, 120.0 );
|
||||
SetSkill( SkillName.Wrestling, 120.0 );
|
||||
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
|
||||
VirtualArmor = 37;
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
c.AddItem(new GibberHead());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich, 6 );
|
||||
}
|
||||
|
||||
public override void OnDamage(int amount, Mobile from, bool willKill)
|
||||
{
|
||||
if (0.30 > Utility.RandomDouble())
|
||||
{
|
||||
GibberSpawn(from);
|
||||
}
|
||||
else if (amount > 10)
|
||||
{
|
||||
GibberSpawn(from);
|
||||
GibberSpawn(from);
|
||||
GibberSpawn(from);
|
||||
GibberSpawn(from);
|
||||
}
|
||||
}
|
||||
|
||||
public void GibberSpawn(Mobile attacker)
|
||||
{
|
||||
spawn = new Gibberling();
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
spawnloc = new Point3D(this.X + 1, this.Y + 1, this.Z);
|
||||
break;
|
||||
case 1:
|
||||
spawnloc = new Point3D(attacker.X + 1, attacker.Y + 1, attacker.Z);
|
||||
break;
|
||||
}
|
||||
spawnmap = attacker.Map;
|
||||
spawn.Combatant = attacker;
|
||||
|
||||
spawn.MoveToWorld(spawnloc, spawnmap);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
public GibberlingQueen(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class GibberToken : Item
|
||||
{
|
||||
[Constructable]
|
||||
public GibberToken()
|
||||
: base(7960)
|
||||
{
|
||||
Weight = 0.0;
|
||||
Hue = 0;
|
||||
Movable = false;
|
||||
Visible = false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
}
|
||||
|
||||
public static bool GibberTokenExistsOn(Mobile mob)
|
||||
{
|
||||
Container pack = mob.Backpack;
|
||||
|
||||
return (pack != null && pack.FindItemByType(typeof(GibberToken)) != null);
|
||||
}
|
||||
|
||||
public GibberToken(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Gumps
|
||||
{
|
||||
public class HunterQuestGump : Gump
|
||||
{
|
||||
|
||||
public HunterQuestGump()
|
||||
: base(0, 0)
|
||||
{
|
||||
|
||||
this.Closable = false;
|
||||
this.Disposable = false;
|
||||
this.Dragable = true;
|
||||
this.Resizable = false;
|
||||
this.AddPage(0);
|
||||
|
||||
this.AddBackground(232, 113, 289, 364, 9250);
|
||||
this.AddLabel(332, 146, 0, @"Gibberling Hunter");
|
||||
// Quest text
|
||||
this.AddHtml(252, 190, 250, 225, "< BODY > " +
|
||||
"Usually i have no trouble fighting the gibberling "+
|
||||
"by my self, but now that has changed.<BR><BR> "+
|
||||
"They are being organised by a queen, "+
|
||||
"The Gibberling Queen, she is the strongest "+
|
||||
"gibberling i have ever fought, i am lucky "+
|
||||
"to have escaped with my life!, hordes of "+
|
||||
"gibberling follow her into battle "+
|
||||
"like nothing i have ever seen. "+
|
||||
"<BR><BR> "+
|
||||
"I will reward you if you disperse of "+
|
||||
"this beast for me, with a special dagger. "+
|
||||
"just bring me her head when you are done, "+
|
||||
"she was last seen South of Umbra in the desert thru the mountain passage "+
|
||||
"gathering more gibberling, may you survive "+
|
||||
"your task and live to reap the reward. "+
|
||||
" </BODY> ", (bool)true, (bool)true);// Quest text
|
||||
this.AddImage(246, 124, 9004);
|
||||
this.AddImage(469, 124, 9004);
|
||||
this.AddImage(246, 431, 9005);
|
||||
this.AddButton(339, 421, 1149, 1148, 0, GumpButtonType.Reply, 0);
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState state, RelayInfo info)
|
||||
{
|
||||
Mobile from = state.Mobile;
|
||||
|
||||
switch (info.ButtonID)
|
||||
{
|
||||
case 0: // Close/Cancel
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user