Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
257
Scripts/Quests/Eodon/MyrmidexThreat/Generate.cs
Normal file
257
Scripts/Quests/Eodon/MyrmidexThreat/Generate.cs
Normal file
@@ -0,0 +1,257 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Engines.Quests;
|
||||
using System.Collections.Generic;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Engines.MyrmidexInvasion
|
||||
{
|
||||
public static class GenerateMyrmidexQuest
|
||||
{
|
||||
public static void Generate()
|
||||
{
|
||||
Map map = Map.TerMur;
|
||||
int z = -19;
|
||||
|
||||
Static s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(888, 2303, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(889, 2304, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(896, 2295, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(897, 2296, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(904, 2303, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(905, 2304, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(896, 2311, z), map);
|
||||
|
||||
s = new Static(40142);
|
||||
s.MoveToWorld(new Point3D(897, 2312, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(887, 2304, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(888, 2305, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(895, 2296, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(896, 2297, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(903, 2304, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(904, 2305, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(895, 2312, z), map);
|
||||
|
||||
s = new Static(40169);
|
||||
s.MoveToWorld(new Point3D(896, 2313, z), map);
|
||||
|
||||
z = -20;
|
||||
|
||||
s = new Static(40161);
|
||||
s.MoveToWorld(new Point3D(897, 2305, z), map);
|
||||
|
||||
s = new Static(40165);
|
||||
s.MoveToWorld(new Point3D(894, 2306, z), map);
|
||||
|
||||
MoonstonePowerGeneratorAddon addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(884, 2292, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(896, 2286, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(909, 2291, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(914, 2305, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(909, 2318, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(896, 2323, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(884, 2316, z), map);
|
||||
|
||||
addon = new MoonstonePowerGeneratorAddon(true);
|
||||
addon.MoveToWorld(new Point3D(878, 2304, z), map);
|
||||
|
||||
var idol = new MyrmidexIdol();
|
||||
idol.MoveToWorld(new Point3D(488, 1856, 111), map);
|
||||
|
||||
Teleporter teleporter = new Teleporter(new Point3D(487, 1857, 95), map);
|
||||
teleporter.MoveToWorld(new Point3D(896, 2304, 45), map);
|
||||
|
||||
teleporter = new MyrmidexQueenTeleporter(new Point3D(711, 2302, 0), map);
|
||||
teleporter.MoveToWorld(new Point3D(121, 1682, -3), map);
|
||||
|
||||
teleporter = new MyrmidexQueenTeleporter(new Point3D(711, 2303, 0), Map.TerMur);
|
||||
teleporter.MoveToWorld(new Point3D(121, 1683, -2), map);
|
||||
|
||||
teleporter = new MyrmidexQueenTeleporter(new Point3D(711, 2304, 0), Map.TerMur);
|
||||
teleporter.MoveToWorld(new Point3D(121, 1684, -1), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(120, 1682, -1), map);
|
||||
teleporter.MoveToWorld(new Point3D(711, 2302, 0), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(120, 1683, 1), map);
|
||||
teleporter.MoveToWorld(new Point3D(711, 2303, 0), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(120, 1684, 2), map);
|
||||
teleporter.MoveToWorld(new Point3D(711, 2304, 0), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(120, 1684, 2), map);
|
||||
teleporter.MoveToWorld(new Point3D(711, 2305, 0), map);
|
||||
|
||||
teleporter = new MyrmidexPitTeleporter(Allegiance.Myrmidex, new Point3D(985, 1883, 0), map);
|
||||
teleporter.MoveToWorld(new Point3D(176, 1835, 90), map);
|
||||
|
||||
teleporter = new MyrmidexPitTeleporter(Allegiance.Myrmidex, new Point3D(986, 1883, 0), map);
|
||||
teleporter.MoveToWorld(new Point3D(177, 1835, 90), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(176, 1834, 90), map);
|
||||
teleporter.MoveToWorld(new Point3D(985, 1887, 0), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(177, 1834, 90), map);
|
||||
teleporter.MoveToWorld(new Point3D(986, 1887, 0), map);
|
||||
|
||||
teleporter = new MyrmidexPitTeleporter(Allegiance.Tribes, new Point3D(853, 1777, 0), map);
|
||||
teleporter.MoveToWorld(new Point3D(224, 1724, 6), map);
|
||||
|
||||
teleporter = new MyrmidexPitTeleporter(Allegiance.Tribes, new Point3D(854, 1777, 0), map);
|
||||
teleporter.MoveToWorld(new Point3D(224, 1725, 6), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(225, 1724, 6), map);
|
||||
teleporter.MoveToWorld(new Point3D(853, 1776, 11), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(225, 1725, 6), map);
|
||||
teleporter.MoveToWorld(new Point3D(854, 1776, 11), map);
|
||||
|
||||
teleporter = new Teleporter(new Point3D(225, 1725, 6), map);
|
||||
teleporter.MoveToWorld(new Point3D(855, 1776, 11), map);
|
||||
|
||||
var los = new LOSBlocker();
|
||||
los.MoveToWorld(new Point3D(121, 1682, -3), map);
|
||||
|
||||
los = new LOSBlocker();
|
||||
los.MoveToWorld(new Point3D(121, 1683, -3), map);
|
||||
|
||||
los = new LOSBlocker();
|
||||
los.MoveToWorld(new Point3D(121, 1684, -3), map);
|
||||
|
||||
var allegianceIdol = new AllegianceIdol(Allegiance.Tribes);
|
||||
allegianceIdol.MoveToWorld(new Point3D(267, 1741, 85), map);
|
||||
|
||||
allegianceIdol = new AllegianceIdol(Allegiance.Myrmidex);
|
||||
allegianceIdol.MoveToWorld(new Point3D(176, 1813, 91), map);
|
||||
|
||||
HealerCamp camp = new HealerCamp();
|
||||
camp.Map = Map.TerMur;
|
||||
camp.Location = new Point3D(262, 1716, 80);
|
||||
|
||||
GeoffreyCampAddon gcamp = new GeoffreyCampAddon();
|
||||
gcamp.MoveToWorld(new Point3D(264, 1732, 80), Map.TerMur);
|
||||
|
||||
BattleSpawner spawner = new BattleSpawner();
|
||||
spawner.MoveToWorld(new Point3D(851, 1776, 0), Map.TerMur);
|
||||
|
||||
Item st = new Static(0xA1F);
|
||||
st.MoveToWorld(new Point3D(913, 1871, 0), Map.TerMur);
|
||||
|
||||
st = new Static(0xA1F);
|
||||
st.MoveToWorld(new Point3D(914, 1871, 0), Map.TerMur);
|
||||
|
||||
BattleFlag bflag = new BattleFlag(0x42CB, 0);
|
||||
bflag.MoveToWorld(new Point3D(914, 1872, 5), Map.TerMur);
|
||||
|
||||
st = new Static(0xA1F);
|
||||
st.MoveToWorld(new Point3D(913, 1792, 0), Map.TerMur);
|
||||
|
||||
bflag = new BattleFlag(0x42C, 2520);
|
||||
bflag.MoveToWorld(new Point3D(914, 1793, 6), Map.TerMur);
|
||||
|
||||
bflag = new BattleFlag(0x42D, 2520);
|
||||
bflag.MoveToWorld(new Point3D(913, 1793, 6), Map.TerMur);
|
||||
|
||||
var sp = new XmlSpawner("Yar");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(169, 1813, 80), map);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Bront");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(1448, 3774, 0), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("CollectorOfOddities");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(4305, 1003, 0), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Carroll");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(2878, 723, 0), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Eriathwen");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(1426, 1653, 0), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("EllieRafkin");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(261, 1742, 80), map);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Yero");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(3692, 2252, 26), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Alida");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(5257, 4012, 40), Map.Trammel);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("Foxx");
|
||||
sp.SpawnRange = 1;
|
||||
sp.HomeRange = 5;
|
||||
sp.MoveToWorld(new Point3D(269, 1727, 80), map);
|
||||
sp.Respawn();
|
||||
|
||||
sp = new XmlSpawner("MyrmidexQueen/Cantwalk/true");
|
||||
sp.SpawnRange = 0;
|
||||
sp.HomeRange = 1;
|
||||
sp.MoveToWorld(new Point3D(768, 2303, 0), map);
|
||||
sp.Respawn();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
460
Scripts/Quests/Eodon/MyrmidexThreat/Items/QuestItems.cs
Normal file
460
Scripts/Quests/Eodon/MyrmidexThreat/Items/QuestItems.cs
Normal file
@@ -0,0 +1,460 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Engines.Quests;
|
||||
using Server.Mobiles;
|
||||
using System.Collections.Generic;
|
||||
using Server.Network;
|
||||
using Server.Gumps;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class HiddenTreasuresTreasureMap : TreasureMap
|
||||
{
|
||||
[Constructable]
|
||||
public HiddenTreasuresTreasureMap() : this(2, GetMap())
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public HiddenTreasuresTreasureMap(int level, Map map)
|
||||
: base(level, map)
|
||||
{
|
||||
}
|
||||
|
||||
public HiddenTreasuresTreasureMap(int level, Map map, Point2D location)
|
||||
{
|
||||
Level = level;
|
||||
Facet = map;
|
||||
ChestLocation = location;
|
||||
}
|
||||
|
||||
private static Map GetMap()
|
||||
{
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
default:
|
||||
case 0: return Map.Ilshenar;
|
||||
case 1: return Map.Malas;
|
||||
case 2: return Map.Tokuno;
|
||||
case 3: return Map.TerMur;
|
||||
case 4: return Map.Trammel;
|
||||
case 5: return Map.Felucca;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnMapComplete(Mobile from, TreasureMapChest chest)
|
||||
{
|
||||
base.OnMapComplete(from, chest);
|
||||
|
||||
if(chest != null)
|
||||
chest.DropItem(new StasisChamberActivator());
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1156811); // *A Special Map Thought to Lead to Lost Kotl Technology*
|
||||
}
|
||||
|
||||
public HiddenTreasuresTreasureMap(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class SaltySeaMIB : MessageInABottle
|
||||
{
|
||||
[Constructable]
|
||||
public SaltySeaMIB() : this(Utility.RandomBool() ? Map.Trammel : Map.Felucca, 3)
|
||||
{
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public SaltySeaMIB(Map map, int level)
|
||||
: base(map, level)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if ( from.InRange( GetWorldLocation(), 2 ) && from.InLOS( this ) )
|
||||
{
|
||||
Container cont = Parent as Container;
|
||||
SOS sos = new SaltySeaSOS(TargetMap, Level);
|
||||
Consume();
|
||||
|
||||
if( cont != null )
|
||||
cont.AddItem(sos);
|
||||
else
|
||||
sos.MoveToWorld(this.Location, this.Map);
|
||||
|
||||
from.LocalOverheadMessage( Network.MessageType.Regular, 0x3B2, 501891 ); // You extract the message from the bottle.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1019045); // I can't reach that.
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1156806); // *Coordinates to a Shipwreck thought to have Lost Kotl Technology*
|
||||
}
|
||||
|
||||
public SaltySeaMIB(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class SaltySeaSOS : SOS
|
||||
{
|
||||
[Constructable]
|
||||
public SaltySeaSOS(Map map, int level) : base(map, level)
|
||||
{
|
||||
//AssignLocation();
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1156806); // *Coordinates to a Shipwreck thought to have Lost Kotl Technology*
|
||||
}
|
||||
|
||||
public override void OnSOSComplete(Container chest)
|
||||
{
|
||||
base.OnSOSComplete(chest);
|
||||
|
||||
if(chest != null)
|
||||
chest.DropItem(new StasisChamberRegulator());
|
||||
}
|
||||
|
||||
public SaltySeaSOS(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MyrmidexIdol : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156823; } } // Idol of Zipactriotl
|
||||
|
||||
private static Point3D _Destination = new Point3D(896, 2304, 45);
|
||||
|
||||
public MyrmidexIdol() : base(39453)
|
||||
{
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if(!(from is PlayerMobile))
|
||||
return;
|
||||
|
||||
DestructionOfZipactriotlQuest q = QuestHelper.GetQuest((PlayerMobile)from, typeof(DestructionOfZipactriotlQuest)) as DestructionOfZipactriotlQuest;
|
||||
|
||||
if(q != null || from.AccessLevel > AccessLevel.Player)
|
||||
{
|
||||
BaseCreature.TeleportPets(from, _Destination, Map.TerMur);
|
||||
from.MoveToWorld(_Destination, Map.TerMur);
|
||||
|
||||
Effects.SendLocationParticles( EffectItem.Create( from.Location, Map.TerMur, EffectItem.DefaultDuration ), 0x3728, 10, 10, 2023 );
|
||||
Effects.SendLocationParticles( EffectItem.Create( _Destination, Map.TerMur, EffectItem.DefaultDuration ), 0x3728, 10, 10, 5023 );
|
||||
|
||||
from.PlaySound( 0x1FE );
|
||||
}
|
||||
else
|
||||
from.SendLocalizedMessage(1156841); // You must be on the "Destruction of Zipactriotl" quest to enter. Visit the Barrabian Tinker in the Barrab village to the Southwest.
|
||||
}
|
||||
|
||||
public MyrmidexIdol(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class StasisChamberPowerCore : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156623; } }
|
||||
|
||||
[Constructable]
|
||||
public StasisChamberPowerCore()
|
||||
: base(40155)
|
||||
{
|
||||
}
|
||||
|
||||
public StasisChamberPowerCore(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class StasisChamberActivator : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156624; } }
|
||||
|
||||
[Constructable]
|
||||
public StasisChamberActivator()
|
||||
: base(40158)
|
||||
{
|
||||
}
|
||||
|
||||
public StasisChamberActivator(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class StasisChamberRegulator : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156626; } }
|
||||
|
||||
[Constructable]
|
||||
public StasisChamberRegulator()
|
||||
: base(40157)
|
||||
{
|
||||
}
|
||||
|
||||
public StasisChamberRegulator(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class StasisChamberStator : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156628; } }
|
||||
|
||||
[Constructable]
|
||||
public StasisChamberStator()
|
||||
: base(40156)
|
||||
{
|
||||
}
|
||||
|
||||
public StasisChamberStator(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class BottledMyrmidexPheromone : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156620; } }
|
||||
|
||||
[Constructable]
|
||||
public BottledMyrmidexPheromone()
|
||||
: base(3836)
|
||||
{
|
||||
}
|
||||
|
||||
public BottledMyrmidexPheromone(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class BottleOfConcentratedInsecticide : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156617; } }
|
||||
|
||||
[Constructable]
|
||||
public BottleOfConcentratedInsecticide()
|
||||
: base(22344)
|
||||
{
|
||||
}
|
||||
|
||||
public BottleOfConcentratedInsecticide(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MyrmidexPopulationReport : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156775; } }
|
||||
|
||||
[Constructable]
|
||||
public MyrmidexPopulationReport()
|
||||
: base(18098)
|
||||
{
|
||||
Hue = 467;
|
||||
}
|
||||
|
||||
public MyrmidexPopulationReport(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class UnabridgedAtlasOfEodon : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156721; } } // Unabridged Atlas of Eodon
|
||||
|
||||
[Constructable]
|
||||
public UnabridgedAtlasOfEodon()
|
||||
: base(7185)
|
||||
{
|
||||
Hue = 2007;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (IsChildOf(m.Backpack))
|
||||
{
|
||||
Gump g = new Gump(100, 50);
|
||||
g.AddImage(0, 0, 30236);
|
||||
g.AddHtmlLocalized(115, 35, 350, 600, 1156723, 1, false, true);
|
||||
|
||||
m.SendGump(g);
|
||||
}
|
||||
}
|
||||
|
||||
public UnabridgedAtlasOfEodon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
436
Scripts/Quests/Eodon/MyrmidexThreat/Items/Rewards.cs
Normal file
436
Scripts/Quests/Eodon/MyrmidexThreat/Items/Rewards.cs
Normal file
@@ -0,0 +1,436 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Gumps;
|
||||
using System.Collections.Generic;
|
||||
using Server.Engines.Quests;
|
||||
using Server.Network;
|
||||
using Server.ContextMenus;
|
||||
using Server.Multis;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class MyrmidexRewardBag : Backpack
|
||||
{
|
||||
public MyrmidexRewardBag()
|
||||
{
|
||||
Hue = BaseReward.RewardBagHue();
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
default:
|
||||
case 0: DropItem(new RecipeScroll(Utility.RandomMinMax(900, 905))); break;
|
||||
case 1: DropItem(new EodonTribeRewardTitleToken()); break;
|
||||
case 2: DropItem(new RecipeScroll(455)); break;
|
||||
case 3: DropItem(new MoonstoneCrystal()); break;
|
||||
}
|
||||
}
|
||||
|
||||
public MyrmidexRewardBag(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class EodonianRewardBag : Backpack
|
||||
{
|
||||
public EodonianRewardBag()
|
||||
{
|
||||
Hue = BaseReward.RewardBagHue();
|
||||
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
default:
|
||||
case 0: DropItem(new MonsterStatuette(MonsterStatuetteType.SakkhranBirdOfPrey)); break;
|
||||
case 1: DropItem(new EodonTribeRewardTitleToken()); break;
|
||||
case 2: DropItem(new RecipeScroll(1000)); break;
|
||||
case 3:
|
||||
if (0.5 > Utility.RandomDouble())
|
||||
DropItem(new RawMoonstoneLargeAddonDeed());
|
||||
else
|
||||
DropItem(new RawMoonstoneSmallAddonDeed());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public EodonianRewardBag(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MoonstoneCrystal : Item, ISecurable
|
||||
{
|
||||
public static Dictionary<int, Point3D> Locations { get; set; }
|
||||
private SecureLevel m_SecureLevel;
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
Locations = new Dictionary<int, Point3D>();
|
||||
|
||||
Locations[1156705] = new Point3D(715, 1866, 40); // Eodon Moongate
|
||||
Locations[1156706] = new Point3D(642, 1721, 40); // Barako Village
|
||||
Locations[1156707] = new Point3D(701, 2106, 40); // Jukari Village
|
||||
Locations[1156708] = new Point3D(355, 1873, 0); // Kurak Village
|
||||
Locations[1156709] = new Point3D(552, 1471, 40); // Sakkhra Village
|
||||
Locations[1156710] = new Point3D(412, 1595, 40); // Urali Village
|
||||
Locations[1156711] = new Point3D(167, 1800, 80); // Barrab Village
|
||||
Locations[1156712] = new Point3D(929, 2016, 50); // Shadowguard
|
||||
Locations[1156713] = new Point3D(731, 1603, 40); // The great ape cave
|
||||
Locations[1156714] = new Point3D(878, 2105, 40); // The Volcano
|
||||
Locations[1156715] = new Point3D(390, 1690, 40); // Dragon Turtle Habitat
|
||||
Locations[1156716] = new Point3D(269, 1726, 80); // Britannian Encampment
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public SecureLevel Level
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.m_SecureLevel;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.m_SecureLevel = value;
|
||||
}
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
SetSecureLevelEntry.AddTo(from, this, list);
|
||||
}
|
||||
|
||||
public override int LabelNumber { get { return 1124143; } } // Moonstone Crystal
|
||||
|
||||
[Constructable]
|
||||
public MoonstoneCrystal() : base(0x9CBB)
|
||||
{
|
||||
Weight = 10;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if((IsLockedDown || IsSecure) && from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.SendGump(new InternalGump(from as PlayerMobile, this));
|
||||
}
|
||||
else if (!from.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
from.SendLocalizedMessage(500295); // You are too far away to do that.
|
||||
}
|
||||
else
|
||||
from.SendLocalizedMessage(502692); // This must be in a house and be locked down to work.
|
||||
}
|
||||
|
||||
private class InternalGump : Gump
|
||||
{
|
||||
public Item Moonstone { get; set; }
|
||||
public PlayerMobile User { get; set; }
|
||||
|
||||
public InternalGump(PlayerMobile pm, Item moonstone) : base(75, 75)
|
||||
{
|
||||
Moonstone = moonstone;
|
||||
User = pm;
|
||||
|
||||
AddGumpLayout();
|
||||
}
|
||||
|
||||
public void AddGumpLayout()
|
||||
{
|
||||
AddBackground( 0, 0, 400, 400, 9270 );
|
||||
|
||||
AddHtmlLocalized( 0, 15, 400, 16, 1154645, "#1156704", 0xFFFF, false, false ); // Select your destination:
|
||||
|
||||
ColUtility.For<int, Point3D>(MoonstoneCrystal.Locations, (i, key, value) =>
|
||||
{
|
||||
AddHtmlLocalized(60, 45 + (i * 25), 250, 16, key, 0xFFFF, false, false);
|
||||
AddButton(20, 50 + (i * 25), 2117, 2118, key, GumpButtonType.Reply, 0);
|
||||
});
|
||||
}
|
||||
|
||||
public override void OnResponse(NetState state, RelayInfo info)
|
||||
{
|
||||
if (info.ButtonID > 0)
|
||||
{
|
||||
int id = info.ButtonID;
|
||||
|
||||
if (MoonstoneCrystal.Locations.ContainsKey(id))
|
||||
{
|
||||
Point3D p = MoonstoneCrystal.Locations[id];
|
||||
|
||||
if (CheckTravel(p))
|
||||
{
|
||||
BaseCreature.TeleportPets(User, p, Map.TerMur);
|
||||
User.Combatant = null;
|
||||
User.Warmode = false;
|
||||
User.Hidden = true;
|
||||
|
||||
User.MoveToWorld(p, Map.TerMur);
|
||||
|
||||
Effects.PlaySound(p, Map.TerMur, 0x1FE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckTravel(Point3D p)
|
||||
{
|
||||
if ( !User.InRange( Moonstone.GetWorldLocation(), 2 ) || User.Map != Moonstone.Map )
|
||||
{
|
||||
User.SendLocalizedMessage( 500295 ); // You are too far away to do that.
|
||||
}
|
||||
else if ( User.Murderer )
|
||||
{
|
||||
User.SendLocalizedMessage( 1019004 ); // You are not allowed to travel there.
|
||||
}
|
||||
else if ( Server.Factions.Sigil.ExistsOn( User ) )
|
||||
{
|
||||
User.SendLocalizedMessage( 1019004 ); // You are not allowed to travel there.
|
||||
}
|
||||
else if ( User.Criminal )
|
||||
{
|
||||
User.SendLocalizedMessage( 1005561, "", 0x22 ); // Thou'rt a criminal and cannot escape so easily.
|
||||
}
|
||||
else if ( Server.Spells.SpellHelper.CheckCombat( User ) )
|
||||
{
|
||||
User.SendLocalizedMessage( 1005564, "", 0x22 ); // Wouldst thou flee during the heat of battle??
|
||||
}
|
||||
else if ( User.Spell != null )
|
||||
{
|
||||
User.SendLocalizedMessage( 1049616 ); // You are too busy to do that at the moment.
|
||||
}
|
||||
else if ( User.Map == Map.TerMur && User.InRange( p, 1 ) )
|
||||
{
|
||||
User.SendLocalizedMessage( 1019003 ); // You are already there.
|
||||
}
|
||||
else
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public MoonstoneCrystal(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
writer.Write((int)this.m_SecureLevel); // At first, need to save world with this line before next starting.
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
this.m_SecureLevel = (SecureLevel)reader.ReadInt(); // If you have not saved world with above line in Serialize(), you should not add this line.
|
||||
}
|
||||
}
|
||||
|
||||
[TypeAlias("Server.Items.KotlPowerCoil")]
|
||||
public class KotlPowerCore : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1124179; } } // Kotl Power Core
|
||||
|
||||
[Constructable]
|
||||
public KotlPowerCore() : base(40147)
|
||||
{
|
||||
}
|
||||
|
||||
public KotlPowerCore(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
[Flipable(40253, 40252)]
|
||||
public class EodonianWallMap : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156690; } } // Wall Map of Eodon
|
||||
|
||||
[Constructable]
|
||||
public EodonianWallMap()
|
||||
: base(40253)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
if(from.InRange(GetWorldLocation(), 5))
|
||||
{
|
||||
Gump g = new Gump(0, 0);
|
||||
g.AddImage(0, 0, 49999);
|
||||
|
||||
from.SendGump(g);
|
||||
}
|
||||
}
|
||||
|
||||
public EodonianWallMap(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RawMoonstoneLargeAddon : BaseAddon
|
||||
{
|
||||
public override BaseAddonDeed Deed { get { return new RawMoonstoneLargeAddonDeed(); } }
|
||||
|
||||
[Constructable]
|
||||
public RawMoonstoneLargeAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(40129, 1124130), 0, 0, 0);
|
||||
}
|
||||
|
||||
public RawMoonstoneLargeAddon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RawMoonstoneLargeAddonDeed : BaseAddonDeed
|
||||
{
|
||||
public override BaseAddon Addon { get { return new RawMoonstoneLargeAddon(); } }
|
||||
|
||||
public override int LabelNumber { get { return 1156703; } }
|
||||
|
||||
[Constructable]
|
||||
public RawMoonstoneLargeAddonDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public RawMoonstoneLargeAddonDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RawMoonstoneSmallAddon : BaseAddon
|
||||
{
|
||||
public override BaseAddonDeed Deed { get { return new RawMoonstoneSmallAddonDeed(); } }
|
||||
|
||||
[Constructable]
|
||||
public RawMoonstoneSmallAddon()
|
||||
{
|
||||
AddComponent(new LocalizedAddonComponent(40136, 1124130), 0, 0, 0);
|
||||
}
|
||||
|
||||
public RawMoonstoneSmallAddon(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class RawMoonstoneSmallAddonDeed : BaseAddonDeed
|
||||
{
|
||||
public override BaseAddon Addon { get { return new RawMoonstoneSmallAddon(); } }
|
||||
|
||||
public override int LabelNumber { get { return 1156702; } }
|
||||
|
||||
[Constructable]
|
||||
public RawMoonstoneSmallAddonDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public RawMoonstoneSmallAddonDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
87
Scripts/Quests/Eodon/MyrmidexThreat/Items/Teleporter.cs
Normal file
87
Scripts/Quests/Eodon/MyrmidexThreat/Items/Teleporter.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Engines.MyrmidexInvasion;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class MyrmidexPitTeleporter : Teleporter
|
||||
{
|
||||
public Allegiance Allegiance { get; set; }
|
||||
|
||||
[Constructable]
|
||||
public MyrmidexPitTeleporter(Allegiance allegiance, Point3D dest, Map map)
|
||||
: base(dest, map)
|
||||
{
|
||||
Allegiance = allegiance;
|
||||
}
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (MyrmidexInvasionSystem.IsAlliedWith(m, Allegiance) || m.AccessLevel > AccessLevel.Player)
|
||||
return base.OnMoveOver(m);
|
||||
|
||||
m.SendLocalizedMessage(Allegiance == Allegiance.Myrmidex ? 1156838 : 1156839); // You must ally yourself to the Eodonians to enter.
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public MyrmidexPitTeleporter(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write((int)Allegiance);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
|
||||
Allegiance = (Allegiance)reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class MyrmidexQueenTeleporter : Teleporter
|
||||
{
|
||||
[Constructable]
|
||||
public MyrmidexQueenTeleporter(Point3D p, Map map)
|
||||
: base(p, map)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool OnMoveOver(Mobile from)
|
||||
{
|
||||
if ((from is PlayerMobile && QuestHelper.GetQuest((PlayerMobile)from, typeof(InsecticideAndRegicideQuest)) != null) || from.AccessLevel > AccessLevel.Player)
|
||||
return base.OnMoveOver(from);
|
||||
|
||||
from.SendLocalizedMessage(1156840); // You must be on the "Insecticide & Regicide" quest to enter. Visit Professor Rafkin in Sir Geoffrey's camp to the East.
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public MyrmidexQueenTeleporter(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
764
Scripts/Quests/Eodon/MyrmidexThreat/Mobiles/Creatures.cs
Normal file
764
Scripts/Quests/Eodon/MyrmidexThreat/Mobiles/Creatures.cs
Normal file
@@ -0,0 +1,764 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Engines.Quests;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Movement;
|
||||
using Server.Spells;
|
||||
using Server.Spells.SkillMasteries;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class MyrmidexQueen : BaseCreature
|
||||
{
|
||||
private DateTime _NextCombo1;
|
||||
private DateTime _NextCombo2;
|
||||
private DateTime _NextEggThrow;
|
||||
|
||||
private List<BaseCreature> _Spawn;
|
||||
|
||||
public override bool AlwaysMurderer { get { return true; } }
|
||||
public override Poison PoisonImmune { get { return Poison.Parasitic; } }
|
||||
public override Poison HitPoison { get { return Poison.Parasitic; } }
|
||||
public override bool Unprovokable { get { return true; } }
|
||||
|
||||
[Constructable]
|
||||
public MyrmidexQueen()
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.3)
|
||||
{
|
||||
Body = 1404;
|
||||
Name = "Myrmidex Queen";
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetHits(60000);
|
||||
SetStr(900, 1000);
|
||||
SetDex(535);
|
||||
SetInt(1000, 1200);
|
||||
|
||||
SetDamage(18, 24);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Poison, 60);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 80, 90);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 80, 90);
|
||||
SetResistance(ResistanceType.Energy, 60, 70);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 110, 120);
|
||||
SetSkill(SkillName.Tactics, 120, 130);
|
||||
SetSkill(SkillName.MagicResist, 120, 130);
|
||||
SetSkill(SkillName.Anatomy, 0, 10);
|
||||
|
||||
_NextCombo1 = DateTime.UtcNow;
|
||||
_NextCombo2 = DateTime.UtcNow;
|
||||
_NextEggThrow = DateTime.UtcNow;
|
||||
|
||||
_Spawn = new List<BaseCreature>();
|
||||
|
||||
Fame = 35000;
|
||||
Karma = -35000;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.SuperBoss, 5);
|
||||
}
|
||||
|
||||
public override void OnThink()
|
||||
{
|
||||
base.OnThink();
|
||||
|
||||
if (Combatant == null)
|
||||
return;
|
||||
|
||||
if (_NextCombo1 < DateTime.UtcNow && 0.1 > Utility.RandomDouble())
|
||||
{
|
||||
SpitOoze();
|
||||
_NextCombo1 = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 30));
|
||||
}
|
||||
|
||||
if (_NextCombo2 < DateTime.UtcNow && 0.1 > Utility.RandomDouble())
|
||||
{
|
||||
if (0.5 > Utility.RandomDouble())
|
||||
DropRocks();
|
||||
else
|
||||
RaiseRocks();
|
||||
|
||||
_NextCombo2 = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(30, 40));
|
||||
}
|
||||
|
||||
if (_NextEggThrow < DateTime.UtcNow && 0.1 > Utility.RandomDouble())
|
||||
{
|
||||
ThrowEggs();
|
||||
_NextEggThrow = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(90, 120));
|
||||
}
|
||||
}
|
||||
|
||||
public void ThrowEggs()
|
||||
{
|
||||
if (this.Map == null)
|
||||
return;
|
||||
|
||||
int delay = 0;
|
||||
|
||||
for (byte i = 0; i <= 0x7; i++)
|
||||
{
|
||||
Direction d = (Direction)i;
|
||||
int xOffset = 0;
|
||||
int yOffset = 0;
|
||||
|
||||
Movement.Movement.Offset(d, ref xOffset, ref yOffset);
|
||||
|
||||
int x = this.X + (27 * xOffset);
|
||||
int y = this.Y + (27 * yOffset);
|
||||
|
||||
Point3D p = new Point3D(x, y, this.Map.GetAverageZ(x, y));
|
||||
|
||||
if (!this.Map.CanFit(p, 16, false, false))
|
||||
continue;
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(delay), () =>
|
||||
{
|
||||
Entity e = new Entity(Serial.Zero, p, this.Map);
|
||||
this.MovingParticles(e, 4313, 10, 0, false, true, 1371, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(Utility.RandomMinMax(2, 3)), () =>
|
||||
{
|
||||
Type t = Utility.RandomList<Type>(typeof(MyrmidexWarrior), typeof(MyrmidexDrone), typeof(MyrmidexLarvae));
|
||||
BaseCreature bc = Activator.CreateInstance(t) as BaseCreature;
|
||||
|
||||
if (bc != null)
|
||||
{
|
||||
bc.MoveToWorld(p, this.Map);
|
||||
_Spawn.Add(bc);
|
||||
}
|
||||
});
|
||||
|
||||
delay++;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void SpitOoze()
|
||||
{
|
||||
if (this.Map == null)
|
||||
return;
|
||||
|
||||
IPooledEnumerable eable = this.Map.GetMobilesInRange(this.Location, 7);
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m != this && SpellHelper.ValidIndirectTarget(this, m) && this.CanBeHarmful(m, false))
|
||||
{
|
||||
List<OozeItem> list = new List<OozeItem>();
|
||||
|
||||
var ooze1 = new OozeItem(this, 40222);
|
||||
ooze1.MoveToWorld(m.Location, m.Map);
|
||||
|
||||
var ooze2 = new OozeItem(this, Utility.Random(40214, 2));
|
||||
ooze2.MoveToWorld(new Point3D(m.X - 1, m.Y, m.Z), m.Map);
|
||||
|
||||
var ooze3 = new OozeItem(this, Utility.Random(40216, 2));
|
||||
ooze3.MoveToWorld(new Point3D(m.X, m.Y + 1, m.Z), m.Map);
|
||||
|
||||
var ooze4 = new OozeItem(this, Utility.Random(40218, 2));
|
||||
ooze4.MoveToWorld(new Point3D(m.X, m.Y - 1, m.Z), m.Map);
|
||||
|
||||
var ooze5 = new OozeItem(this, Utility.Random(40220, 2));
|
||||
ooze5.MoveToWorld(new Point3D(m.X + 1, m.Y, m.Z), m.Map);
|
||||
|
||||
var ooze6 = new OozeItem(this, 40210);
|
||||
ooze6.MoveToWorld(new Point3D(m.X - 1, m.Y + 1, m.Z), m.Map);
|
||||
|
||||
var ooze7 = new OozeItem(this, 40211);
|
||||
ooze7.MoveToWorld(new Point3D(m.X + 1, m.Y + 1, m.Z), m.Map);
|
||||
|
||||
var ooze8 = new OozeItem(this, 40212);
|
||||
ooze8.MoveToWorld(new Point3D(m.X - 1, m.Y - 1, m.Z), m.Map);
|
||||
|
||||
var ooze9 = new OozeItem(this, 40213);
|
||||
ooze9.MoveToWorld(new Point3D(m.X + 1, m.Y - 1, m.Z), m.Map);
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(Utility.RandomMinMax(20, 30)), () =>
|
||||
{
|
||||
ooze1.Delete(); ooze2.Delete(); ooze3.Delete(); ooze4.Delete(); ooze5.Delete();
|
||||
ooze6.Delete(); ooze7.Delete(); ooze8.Delete(); ooze9.Delete();
|
||||
});
|
||||
|
||||
ooze1.OnMoveOver(m);
|
||||
}
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
}
|
||||
|
||||
public void DropRocks()
|
||||
{
|
||||
if (this.Map == null)
|
||||
return;
|
||||
|
||||
IPooledEnumerable eable = this.Map.GetMobilesInRange(this.Location, 12);
|
||||
List<Mobile> random = new List<Mobile>();
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m.Alive && m is PlayerMobile && SpellHelper.ValidIndirectTarget(this, m) && this.CanBeHarmful(m, false))
|
||||
random.Add(m);
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
Mobile target = null;
|
||||
|
||||
if(random.Count > 0)
|
||||
target = random[Utility.Random(random.Count)];
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
Entity e = new Entity(Serial.Zero, new Point3D(target.X, target.Y, target.Z + 40), target.Map);
|
||||
|
||||
for (int i = 0; i < 5; i++)
|
||||
Timer.DelayCall(TimeSpan.FromMilliseconds(100 * i), () =>
|
||||
{
|
||||
Effects.SendMovingParticles(e, target, 40136, 3, 60, false, true, 0, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);
|
||||
});
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromMilliseconds(250), () =>
|
||||
{
|
||||
Effects.SendLocationEffect(target.Location, this.Map, 40136, 120);
|
||||
target.PrivateOverheadMessage(MessageType.Regular, 0x21, 1156835, target.NetState); // *Crunch Crunch Crunch*
|
||||
});
|
||||
|
||||
AOS.Damage(target, this, Utility.RandomMinMax(80, 100), 100, 0, 0, 0, 0);
|
||||
target.SendSpeedControl(SpeedControlType.WalkSpeed);
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5), () => target.SendSpeedControl(SpeedControlType.Disable));
|
||||
}
|
||||
|
||||
ColUtility.Free(random);
|
||||
}
|
||||
|
||||
public void RaiseRocks()
|
||||
{
|
||||
if (this.Map == null)
|
||||
return;
|
||||
|
||||
IPooledEnumerable eable = this.Map.GetMobilesInRange(this.Location, 12);
|
||||
List<Mobile> random = new List<Mobile>();
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m.Alive && m is PlayerMobile && SpellHelper.ValidIndirectTarget(this, m) && this.CanBeHarmful(m, false))
|
||||
random.Add(m);
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
Mobile target = null;
|
||||
|
||||
if (random.Count > 0)
|
||||
target = random[Utility.Random(random.Count)];
|
||||
|
||||
if (target != null)
|
||||
{
|
||||
Direction d = Utility.GetDirection(this, target);
|
||||
Rectangle2D r = new Rectangle2D(target.X - 8, target.Y - 2, 17, 5);
|
||||
|
||||
switch (d)
|
||||
{
|
||||
case Direction.West:
|
||||
r = new Rectangle2D(this.X - 24, this.Y - 2, 20, 5); break;
|
||||
case Direction.North:
|
||||
r = new Rectangle2D(this.X - 2, this.Y - 24, 5, 20); break;
|
||||
case Direction.East:
|
||||
r = new Rectangle2D(this.X + 4, this.Y - 2, 20, 5); break;
|
||||
case Direction.South:
|
||||
r = new Rectangle2D(this.X - 4, this.Y + 4, 20, 5); break;
|
||||
}
|
||||
|
||||
for (int x = r.X; x <= r.X + r.Width; x++)
|
||||
{
|
||||
for (int y = r.Y; y <= r.Y + r.Height; y++)
|
||||
{
|
||||
if (x > this.X - 4 && x < this.X + 4 && y > this.Y - 4 && y < this.Y + 4)
|
||||
continue;
|
||||
|
||||
if (0.75 > Utility.RandomDouble())
|
||||
{
|
||||
int id = Utility.RandomList<int>(2282, 2273, 2277, 40106, 40107, 40108, 40106, 40107, 40108, 40106, 40107, 40108);
|
||||
Effects.SendLocationEffect(new Point3D(x, y, this.Map.GetAverageZ(x, y)), this.Map, id, 60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IPooledEnumerable eable2 = this.Map.GetMobilesInBounds(r);
|
||||
|
||||
foreach (Mobile m in eable2)
|
||||
{
|
||||
if (m.Alive && m is PlayerMobile && SpellHelper.ValidIndirectTarget(this, m) && this.CanBeHarmful(m, false))
|
||||
{
|
||||
if (m.X > this.X - 4 && m.X < this.X + 4 && m.Y > this.Y - 4 && m.Y < this.Y + 4)
|
||||
continue;
|
||||
|
||||
m.Freeze(TimeSpan.FromSeconds(2));
|
||||
BleedAttack.BeginBleed(m, this, false);
|
||||
|
||||
AOS.Damage(target, this, Utility.RandomMinMax(100, 110), 100, 0, 0, 0, 0);
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x21, 1156849, m.NetState); // *Rising columns of rock rip through your flesh and concuss you!*
|
||||
}
|
||||
}
|
||||
|
||||
eable2.Free();
|
||||
}
|
||||
}
|
||||
|
||||
public class OozeItem : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1156831; } } // Noxious Goo
|
||||
|
||||
public BaseCreature Owner { get; set; }
|
||||
|
||||
public OozeItem(BaseCreature bc, int id)
|
||||
: base(id)
|
||||
{
|
||||
Owner = bc;
|
||||
Movable = false;
|
||||
Hue = 2966;
|
||||
}
|
||||
|
||||
public override bool OnMoveOver(Mobile m)
|
||||
{
|
||||
if (m != Owner && SpellHelper.ValidIndirectTarget(Owner, m) && Owner.CanBeHarmful(m, false))
|
||||
{
|
||||
if (0.60 > Utility.RandomDouble())
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x21, 1156832, m.NetState); // *The noxious goo has poisoned you!*
|
||||
m.Poison = Poison.Parasitic;
|
||||
}
|
||||
else
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x21, 1156830, m.NetState); // *You are drenched in a noxious goo!*
|
||||
|
||||
AOS.Damage(m, Owner, Utility.RandomMinMax(40, 60), 0, 0, 0, 100, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public OozeItem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
c.DropItem(new MyrmidexEggsac(Utility.RandomMinMax(5, 10)));
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
base.Delete();
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(30), () =>
|
||||
{
|
||||
ColUtility.ForEach(_Spawn.Where(sp => sp != null && sp.Alive), sp => sp.Kill());
|
||||
ColUtility.Free(_Spawn);
|
||||
});
|
||||
}
|
||||
|
||||
public MyrmidexQueen(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write(_Spawn.Count);
|
||||
_Spawn.ForEach(sp => writer.Write(sp));
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
|
||||
_Spawn = new List<BaseCreature>();
|
||||
|
||||
int c = reader.ReadInt();
|
||||
for (int i = 0; i < c; i++)
|
||||
{
|
||||
BaseCreature bc = reader.ReadMobile() as BaseCreature;
|
||||
|
||||
if (bc != null)
|
||||
_Spawn.Add(bc);
|
||||
}
|
||||
|
||||
_NextCombo1 = DateTime.UtcNow;
|
||||
_NextCombo2 = DateTime.UtcNow;
|
||||
_NextEggThrow = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
|
||||
public class Zipactriotl : BaseCreature
|
||||
{
|
||||
public bool IsQuest { get; set; }
|
||||
|
||||
public override bool AlwaysMurderer { get { return true; } }
|
||||
public override Poison PoisonImmune { get { return Poison.Parasitic; } }
|
||||
public override bool Unprovokable { get { return true; } }
|
||||
|
||||
private DateTime _NextMastery;
|
||||
private DateTime _NextSpecial;
|
||||
|
||||
[Constructable]
|
||||
public Zipactriotl() : this(false) { }
|
||||
|
||||
public Zipactriotl(bool quest)
|
||||
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.3)
|
||||
{
|
||||
Body = 1405;
|
||||
Name = "Zipactriotl";
|
||||
BaseSoundID = 609;
|
||||
|
||||
IsQuest = quest;
|
||||
|
||||
SetHits(60000);
|
||||
SetStr(900, 1000);
|
||||
SetDex(800, 850);
|
||||
SetInt(1400, 1600);
|
||||
|
||||
SetDamage(22, 26);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Energy, 50);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 80, 90);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 70, 80);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 110, 120);
|
||||
SetSkill(SkillName.Tactics, 110, 120);
|
||||
SetSkill(SkillName.MagicResist, 120, 130);
|
||||
SetSkill(SkillName.Anatomy, 40, 60);
|
||||
|
||||
_NextMastery = DateTime.UtcNow;
|
||||
_NextSpecial = DateTime.UtcNow;
|
||||
|
||||
Fame = 35000;
|
||||
Karma = -35000;
|
||||
|
||||
SetWeaponAbility(WeaponAbility.Disarm);
|
||||
SetWeaponAbility(WeaponAbility.ParalyzingBlow);
|
||||
}
|
||||
|
||||
public override bool TeleportsTo { get { return true; } }
|
||||
public override TimeSpan TeleportDuration { get { return TimeSpan.FromSeconds(15); } }
|
||||
public override double TeleportProb { get { return 0.33; } }
|
||||
|
||||
public override Mobile GetTeleportTarget()
|
||||
{
|
||||
IPooledEnumerable eable = this.GetMobilesInRange(TeleportRange);
|
||||
List<Mobile> list = new List<Mobile>();
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m != this && m is PlayerMobile && CanBeHarmful(m) && CanSee(m) && ((PlayerMobile)m).AllFollowers.Where(pet => !(pet is IMount) || ((IMount)pet).Rider == null).Count() > 0)
|
||||
{
|
||||
list.Add(m);
|
||||
}
|
||||
}
|
||||
|
||||
eable.Free();
|
||||
Mobile mob = null;
|
||||
|
||||
if (list.Count > 0)
|
||||
mob = list[Utility.Random(list.Count)];
|
||||
|
||||
ColUtility.Free(list);
|
||||
return mob;
|
||||
}
|
||||
|
||||
public override void OnThink()
|
||||
{
|
||||
base.OnThink();
|
||||
|
||||
if (Combatant == null)
|
||||
return;
|
||||
|
||||
if (_NextMastery < DateTime.UtcNow)
|
||||
{
|
||||
if (SkillMasterySpell.HasSpell(this, typeof(RampageSpell)) || Utility.RandomDouble() > 0.5)
|
||||
{
|
||||
SpecialMove.SetCurrentMove(this, SpellRegistry.GetSpecialMove(740));
|
||||
}
|
||||
else
|
||||
{
|
||||
SkillMasterySpell spell = new RampageSpell(this, null);
|
||||
spell.Cast();
|
||||
}
|
||||
|
||||
_NextMastery = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(45, 70));
|
||||
}
|
||||
|
||||
if (_NextSpecial < DateTime.UtcNow)
|
||||
{
|
||||
DoSpecial();
|
||||
_NextSpecial = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(45, 60));
|
||||
}
|
||||
}
|
||||
|
||||
public void DoSpecial()
|
||||
{
|
||||
Map map = this.Map;
|
||||
|
||||
if (map == null || map == Map.Internal)
|
||||
return;
|
||||
|
||||
int counter = 0;
|
||||
int dist = 4;
|
||||
Point3D p = Point3D.Zero;
|
||||
|
||||
IPooledEnumerable eable = map.GetMobilesInRange(Location, dist);
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m is PlayerMobile)
|
||||
{
|
||||
m.Mana = 0;
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x21, 1156856, m.NetState); // *Your mana is converted to pure energy!*
|
||||
}
|
||||
}
|
||||
eable.Free();
|
||||
|
||||
for ( int i = 0; i < _Offsets.Length; i += 2 )
|
||||
{
|
||||
int tarx = this.X + (int)(_Offsets[i] * dist);
|
||||
int tary = this.Y + (int)(_Offsets[i + 1] * dist);
|
||||
int tarz = this.Map.GetAverageZ(tarx, tary);
|
||||
|
||||
if (tarx == p.X && tary == p.Y)
|
||||
continue;
|
||||
|
||||
p = new Point3D(tarx, tary, tarz);
|
||||
|
||||
Timer.DelayCall<Point3D>(TimeSpan.FromMilliseconds(350 * counter), (point) =>
|
||||
{
|
||||
//Point3D point = new Point3D(tarx, tary, tarz);
|
||||
|
||||
Entity e = new Entity(Serial.Zero, point, map);
|
||||
this.MovingParticles(e, 0x3818, 10, 0, false, false, 1150, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);
|
||||
|
||||
Timer.DelayCall<Point3D>(TimeSpan.FromMilliseconds(250), (pnt) =>
|
||||
{
|
||||
Effects.SendLocationEffect(pnt, this.Map, 14089, 30, 1150, 4); // TODO: Check
|
||||
}, point);
|
||||
}, p);
|
||||
|
||||
counter++;
|
||||
}
|
||||
|
||||
Timer.DelayCall(TimeSpan.FromMilliseconds(Utility.RandomMinMax(300, 350) * (_Offsets.Length / 2)), () =>
|
||||
{
|
||||
eable = map.GetMobilesInRange(this.Location, dist);
|
||||
|
||||
foreach (Mobile m in eable)
|
||||
{
|
||||
if (m != this && m is PlayerMobile || (m is BaseCreature && ((BaseCreature)m).GetMaster() is PlayerMobile) && CanBeHarmful(m))
|
||||
{
|
||||
Direction d = Utility.GetDirection(this, m);
|
||||
|
||||
int range = 0;
|
||||
int x = m.X;
|
||||
int y = m.Y;
|
||||
int orx = x;
|
||||
int ory = y;
|
||||
|
||||
while (range < 15)
|
||||
{
|
||||
range++;
|
||||
int lastx = x;
|
||||
int lasty = y;
|
||||
|
||||
Movement.Movement.Offset(d, ref x, ref y);
|
||||
int z = map.GetAverageZ(x, y);
|
||||
|
||||
if (!map.CanFit(new Point3D(x, y, z), 16, false, false))
|
||||
{
|
||||
m.MoveToWorld(new Point3D(lastx, lasty, map.GetAverageZ(lastx, lasty)), map);
|
||||
AOS.Damage(m, this, Utility.RandomMinMax(100, 150), 0, 0, 0, 0, 100);
|
||||
break;
|
||||
}
|
||||
|
||||
if (range >= 15 && (orx != x || ory != y))
|
||||
{
|
||||
m.MoveToWorld(new Point3D(x, y, z), map);
|
||||
AOS.Damage(m, this, Utility.RandomMinMax(100, 150), 0, 0, 0, 0, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
eable.Free();
|
||||
});
|
||||
}
|
||||
|
||||
private static readonly double[] _Offsets = new double[]
|
||||
{
|
||||
Math.Cos( 300.0 / 180.0 * Math.PI ), Math.Sin( 300.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 320.0 / 180.0 * Math.PI ), Math.Sin( 320.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 340.0 / 180.0 * Math.PI ), Math.Sin( 340.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 000.0 / 180.0 * Math.PI ), Math.Sin( 000.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 020.0 / 180.0 * Math.PI ), Math.Sin( 020.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 040.0 / 180.0 * Math.PI ), Math.Sin( 040.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 060.0 / 180.0 * Math.PI ), Math.Sin( 060.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 080.0 / 180.0 * Math.PI ), Math.Sin( 080.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 100.0 / 180.0 * Math.PI ), Math.Sin( 100.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 120.0 / 180.0 * Math.PI ), Math.Sin( 120.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 140.0 / 180.0 * Math.PI ), Math.Sin( 140.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 160.0 / 180.0 * Math.PI ), Math.Sin( 160.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 180.0 / 180.0 * Math.PI ), Math.Sin( 180.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 200.0 / 180.0 * Math.PI ), Math.Sin( 200.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 220.0 / 180.0 * Math.PI ), Math.Sin( 220.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 240.0 / 180.0 * Math.PI ), Math.Sin( 240.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 260.0 / 180.0 * Math.PI ), Math.Sin( 260.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 280.0 / 180.0 * Math.PI ), Math.Sin( 280.0 / 180.0 * Math.PI ),
|
||||
|
||||
Math.Cos( 260.0 / 180.0 * Math.PI ), Math.Sin( 260.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 240.0 / 180.0 * Math.PI ), Math.Sin( 240.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 220.0 / 180.0 * Math.PI ), Math.Sin( 220.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 200.0 / 180.0 * Math.PI ), Math.Sin( 200.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 180.0 / 180.0 * Math.PI ), Math.Sin( 180.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 160.0 / 180.0 * Math.PI ), Math.Sin( 160.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 140.0 / 180.0 * Math.PI ), Math.Sin( 140.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 120.0 / 180.0 * Math.PI ), Math.Sin( 120.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 100.0 / 180.0 * Math.PI ), Math.Sin( 100.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 080.0 / 180.0 * Math.PI ), Math.Sin( 080.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 060.0 / 180.0 * Math.PI ), Math.Sin( 060.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 040.0 / 180.0 * Math.PI ), Math.Sin( 040.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 020.0 / 180.0 * Math.PI ), Math.Sin( 020.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 000.0 / 180.0 * Math.PI ), Math.Sin( 000.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 340.0 / 180.0 * Math.PI ), Math.Sin( 340.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 320.0 / 180.0 * Math.PI ), Math.Sin( 320.0 / 180.0 * Math.PI ),
|
||||
Math.Cos( 300.0 / 180.0 * Math.PI ), Math.Sin( 300.0 / 180.0 * Math.PI ),
|
||||
};
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.SuperBoss, 5);
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
base.Delete();
|
||||
|
||||
if (IsQuest)
|
||||
Timer.DelayCall(TimeSpan.FromMinutes(30), () => MoonstonePowerGeneratorAddon.ResetGenerators());
|
||||
}
|
||||
|
||||
public Zipactriotl(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
|
||||
writer.Write(IsQuest);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
|
||||
_NextMastery = DateTime.UtcNow;
|
||||
_NextSpecial = DateTime.UtcNow;
|
||||
|
||||
IsQuest = reader.ReadBool();
|
||||
}
|
||||
}
|
||||
|
||||
public class IgnisFatalis : BaseCreature
|
||||
{
|
||||
public override bool AlwaysMurderer { get { return true; } }
|
||||
|
||||
[Constructable]
|
||||
public IgnisFatalis()
|
||||
: base(AIType.AI_Spellweaving, FightMode.Closest, 10, 1, 0.15, 0.3)
|
||||
{
|
||||
Body = 0x105;
|
||||
Name = "Ignis Fatalis";
|
||||
BaseSoundID = 0x56B;
|
||||
|
||||
SetHits(500);
|
||||
SetStr(350, 360);
|
||||
SetDex(100, 150);
|
||||
SetInt(580, 620);
|
||||
|
||||
SetDamage(15, 22);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 0);
|
||||
SetDamageType(ResistanceType.Energy, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 40, 50);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 70, 80);
|
||||
SetResistance(ResistanceType.Energy, 100);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 100);
|
||||
SetSkill(SkillName.Tactics, 100);
|
||||
SetSkill(SkillName.MagicResist, 100);
|
||||
SetSkill(SkillName.DetectHidden, 100.0);
|
||||
SetSkill(SkillName.Magery, 100.0);
|
||||
SetSkill(SkillName.EvalInt, 100.0);
|
||||
SetSkill(SkillName.Meditation, 100.0);
|
||||
SetSkill(SkillName.Focus, 100.0);
|
||||
SetSkill(SkillName.Spellweaving, 100.0);
|
||||
|
||||
SetAreaEffect(AreaEffect.AuraOfEnergy);
|
||||
}
|
||||
|
||||
public IgnisFatalis(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
518
Scripts/Quests/Eodon/MyrmidexThreat/Mobiles/Questers.cs
Normal file
518
Scripts/Quests/Eodon/MyrmidexThreat/Mobiles/Questers.cs
Normal file
@@ -0,0 +1,518 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Engines.Quests;
|
||||
using System.Collections.Generic;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Yar : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(TheZealotryOfZipactriotlQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Yar() : base("Yar", "the Barrab Tinker")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
HairItemID = Race.RandomHair(false);
|
||||
Hue = 34214;
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new BoneChest(), 1828);
|
||||
SetWearable(new DecorativePlateKabuto(), 1828);
|
||||
SetWearable(new LeatherHaidate(), 1828);
|
||||
SetWearable(new Sandals(), 1828);
|
||||
SetWearable(new SledgeHammer(), 1828);
|
||||
}
|
||||
|
||||
public override void OnOfferFailed()
|
||||
{
|
||||
Say(1080107); // I'm sorry, I have nothing for you at this time.
|
||||
}
|
||||
|
||||
public Yar(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Carroll : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(HiddenTreasuresQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Carroll() : base("Carroll", "the Gemologist")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
HairItemID = Race.RandomHair(false);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new FancyShirt());
|
||||
SetWearable(new JinBaori(), 1366);
|
||||
SetWearable(new LongPants(), 1336);
|
||||
SetWearable(new GoldNecklace());
|
||||
SetWearable(new GoldBracelet());
|
||||
SetWearable(new GoldRing());
|
||||
SetWearable(new Shoes());
|
||||
}
|
||||
|
||||
public Carroll(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Bront : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(TheSaltySeaQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Bront() : base("Bront", "the Captain")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
HairItemID = Race.RandomHair(false);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new TricorneHat());
|
||||
SetWearable(new Epaulette());
|
||||
SetWearable(new BodySash());
|
||||
SetWearable(new ElvenShirt());
|
||||
SetWearable(new WoodlandBelt());
|
||||
SetWearable(new TattsukeHakama());
|
||||
SetWearable(new Sandals());
|
||||
}
|
||||
|
||||
public Bront(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Eriathwen : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(ATinkersTaskQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Eriathwen() : base("Eriathwen", "the Golem Maker")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Race = Race.Elf;
|
||||
Female = true;
|
||||
Body = 605;
|
||||
HairItemID = Race.RandomHair(true);
|
||||
Hue = 0x847E;
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new ElvenShirt(), 164);
|
||||
SetWearable(new ElvenPants(), 1114);
|
||||
SetWearable(new ElvenBoots(), 1828);
|
||||
}
|
||||
|
||||
public Eriathwen(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class CollectorOfOddities : BaseVendor
|
||||
{
|
||||
private List<SBInfo> m_SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos{ get { return m_SBInfos; } }
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
m_SBInfos.Add( new InternalSB() );
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public CollectorOfOddities() : base("the collector of oddities")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new FancyShirt(), 1156);
|
||||
SetWearable(new Doublet(), 1316);
|
||||
SetWearable(new ElvenPants(), 1151);
|
||||
SetWearable(new Cloak(), 1151);
|
||||
SetWearable(new ElvenBoots(), 2007);
|
||||
}
|
||||
|
||||
private class InternalSB : SBInfo
|
||||
{
|
||||
private List<GenericBuyInfo> m_BuyInfo;
|
||||
private IShopSellInfo m_SellInfo = new InternalSellInfo();
|
||||
|
||||
public InternalSB() : this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public InternalSB(BaseVendor owner)
|
||||
{
|
||||
m_BuyInfo = new InternalBuyInfo(owner);
|
||||
}
|
||||
|
||||
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
|
||||
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
|
||||
|
||||
public class InternalBuyInfo : List<GenericBuyInfo>
|
||||
{
|
||||
public InternalBuyInfo(BaseVendor owner)
|
||||
{
|
||||
Add( new GenericBuyInfo( "Stasis Chamber Power Core", typeof( StasisChamberPowerCore ), 101250, 500, 40155, 0 ) );
|
||||
|
||||
Add(new GenericBuyInfo("1159014", typeof(CircuitTrapTrainingKit), 99375, 500, 41875, 0));
|
||||
Add(new GenericBuyInfo("1159015", typeof(CylinderTrapTrainingKit), 99375, 500, 41875, 0));
|
||||
Add(new GenericBuyInfo("1159016", typeof(SliderTrapTrainingKit), 99375, 500, 41875, 0));
|
||||
}
|
||||
}
|
||||
|
||||
public class InternalSellInfo : GenericSellInfo
|
||||
{
|
||||
public InternalSellInfo()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CollectorOfOddities(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class EllieRafkin : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(ExterminatingTheInfestationQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
public override bool IsActiveVendor { get { return true; } }
|
||||
|
||||
private List<SBInfo> _SBInfos = new List<SBInfo>();
|
||||
protected override List<SBInfo> SBInfos { get { return _SBInfos; } }
|
||||
|
||||
public override void InitSBInfo()
|
||||
{
|
||||
_SBInfos.Add(new InternalSB());
|
||||
}
|
||||
|
||||
[Constructable]
|
||||
public EllieRafkin() : base("Ellie Rafkin", "the Professor")
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnOfferFailed()
|
||||
{
|
||||
Say(1080107); // I'm sorry, I have nothing for you at this time.
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = true;
|
||||
Body = 0x191;
|
||||
HairItemID = Race.RandomHair(true);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new FancyShirt());
|
||||
SetWearable(new Kilt(), 933);
|
||||
SetWearable(new ThighBoots(), 1);
|
||||
}
|
||||
|
||||
private class InternalSB : SBInfo
|
||||
{
|
||||
private List<GenericBuyInfo> m_BuyInfo;
|
||||
private IShopSellInfo m_SellInfo = new InternalSellInfo();
|
||||
|
||||
public InternalSB()
|
||||
: this(null)
|
||||
{
|
||||
}
|
||||
|
||||
public InternalSB(BaseVendor owner)
|
||||
{
|
||||
m_BuyInfo = new InternalBuyInfo(owner);
|
||||
}
|
||||
|
||||
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
|
||||
public override List<GenericBuyInfo> BuyInfo { get { return m_BuyInfo; } }
|
||||
|
||||
public class InternalBuyInfo : List<GenericBuyInfo>
|
||||
{
|
||||
public InternalBuyInfo(BaseVendor owner)
|
||||
{
|
||||
Add(new GenericBuyInfo("Unabridged Map of Eodon", typeof(UnabridgedAtlasOfEodon), 62500, 500, 7185, 0));
|
||||
}
|
||||
}
|
||||
|
||||
public class InternalSellInfo : GenericSellInfo
|
||||
{
|
||||
public InternalSellInfo()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EllieRafkin(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Foxx : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(PestControlQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Foxx() : base("Foxx", "the Lieutenant")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
HairItemID = Race.RandomHair(true);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new PlateChest());
|
||||
SetWearable(new PlateLegs());
|
||||
SetWearable(new BodySash(), 1828);
|
||||
SetWearable(new OrderShield());
|
||||
SetWearable(new Longsword());
|
||||
}
|
||||
|
||||
public override void Advertise()
|
||||
{
|
||||
Say(1156619); // Fall in now! These Myrmidex aren't going to slay themselves! We've got to squash these bugs!
|
||||
}
|
||||
|
||||
public Foxx(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Yero : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(GettingEvenQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Yero() : base("Yero", "the Gambler")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
HairItemID = Race.RandomHair(true);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new ShortPants());
|
||||
SetWearable(new Sandals());
|
||||
}
|
||||
|
||||
public Yero(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class Alida : MondainQuester
|
||||
{
|
||||
public override Type[] Quests { get { return new Type[] { typeof(OfVorpalsAndLettacesTheGardnerQuest) }; } }
|
||||
|
||||
public override bool ChangeRace { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public Alida() : base("Alida", "the Gardener")
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats(100, 100, 25);
|
||||
|
||||
Female = true;
|
||||
Body = 0x191;
|
||||
HairItemID = Race.RandomHair(true);
|
||||
Hue = Race.RandomSkinHue();
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
SetWearable(new Shirt());
|
||||
SetWearable(new LongPants(), 1);
|
||||
SetWearable(new HalfApron(), 263);
|
||||
SetWearable(new LeatherGloves());
|
||||
SetWearable(new FloppyHat());
|
||||
}
|
||||
|
||||
public Alida(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
672
Scripts/Quests/Eodon/MyrmidexThreat/Quests.cs
Normal file
672
Scripts/Quests/Eodon/MyrmidexThreat/Quests.cs
Normal file
@@ -0,0 +1,672 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using System.Linq;
|
||||
using Server.Engines.ResortAndCasino;
|
||||
using Server.Engines.MyrmidexInvasion;
|
||||
using Server.Gumps;
|
||||
|
||||
namespace Server.Engines.Quests
|
||||
{
|
||||
public class TheZealotryOfZipactriotlQuest : BaseQuest
|
||||
{
|
||||
public override QuestChain ChainID { get { return QuestChain.MyrmidexAlliance; } }
|
||||
public override Type NextQuest { get { return typeof(DestructionOfZipactriotlQuest); } }
|
||||
|
||||
public override object Title{ get{ return 1156751; } } // The Zealotry of Zipactriotl
|
||||
public override object Description{ get{ return 1156752; } } /*All hail our Myrmidex Overlords! Now that the Britannians and the rest of Eodon
|
||||
have been stopped from their offensive against the Myrmidex it is time for the
|
||||
Barrab to restore the Myrmidex to power! Long ago the Kotl came to Eodon.
|
||||
Their technology was far advanced and they built many creations. Before long
|
||||
they decided they needed servents to tend to them beyond the metal giants they
|
||||
called "Automatons" and so they created the Myrmidex. The Myrmidex would not stand
|
||||
for their oppression and rose up against their reptilian masters! The Kotl
|
||||
unleashed a great weapon called Zipactriotl to abolish the Myrmidex. In time
|
||||
the Myrmidex were reduced in numbers and the Kotl placed Zipactriotl in stasis
|
||||
until such time the Myrmidex were once again a threat. The alien technology of
|
||||
the Kotl has spread throughout the realm in the eons since their arrival - we
|
||||
must recover that technology so we may release Zipactriotl and destroy it once
|
||||
and for all! The time is now for Myrmidex rule with the Barrabian at their
|
||||
side! All hail the Myrmidex! All hail the Barrab!*/
|
||||
|
||||
public override object Refuse{ get{ return 1156753; } } /*I must question your commitment to the Myrmidex - are you satisfied with these
|
||||
Britannian invaders and their Eodonian allies?*/
|
||||
|
||||
public override object Uncomplete{ get{ return 1156754; } } /*You must acquire the Activator from the Gemologist at the Shimmering Jewel in
|
||||
Vesper, the Regulator from the Ship Captain at the Horse's Head in Jhelom, the
|
||||
Stator from the Golem Maker at the Tinker's Guild in Britain, and Power Core
|
||||
from the Oddities Collector at the Lycaeum in Moonglow before the Stasis Chamber
|
||||
can be activated and Zipactriotl can be destroyed!*/
|
||||
|
||||
public override object Complete{ get{ return 1156755; } } /**Eyes widen with excitement!* All hail the Myrmidex! All hail the Barrab!
|
||||
With these components I can bring the Stasis Chamber online and Zipactriotl can
|
||||
be destroyed!*/
|
||||
|
||||
public TheZealotryOfZipactriotlQuest()
|
||||
{
|
||||
AddObjective(new ObtainObjective(typeof(StasisChamberPowerCore), "Stasis Chamber Power Core", 1));
|
||||
AddObjective(new ObtainObjective(typeof(StasisChamberActivator), "Stasis Chamber Activator", 1));
|
||||
AddObjective(new ObtainObjective(typeof(StasisChamberRegulator), "Stasis Chamber Regulator", 1));
|
||||
AddObjective(new ObtainObjective(typeof(StasisChamberStator), "Stasis Chamber Stator", 1));
|
||||
|
||||
AddReward(new BaseReward(1156756)); // A step closer to destroying Zipactriotl...
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Myrmidex))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156778); // You must pledge allegiance to the Myrmidex and defeat the Eodonians in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Idol in the Barrab Village.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class DestructionOfZipactriotlQuest : BaseQuest
|
||||
{
|
||||
public override QuestChain ChainID { get { return QuestChain.MyrmidexAlliance; } }
|
||||
|
||||
public override object Title{ get{ return 1156757; } } // The Destruction of Zipactriotl
|
||||
|
||||
public override object Description{ get{ return 1156758; } } /*All Hail the Myrmidex! All Hail the Barrab! Muwahahah! With these components
|
||||
the Stasis Chamber can be reactivated and Zipactriotl shall meet DOOM! Go now
|
||||
to the Kotl Antechamber and destroy Zipactriotl so the Myrmidex may once again
|
||||
rule the Valley of Eodon with the Barrab shall be at their side!*/
|
||||
|
||||
public override object Refuse{ get{ return 1156760; } } /*Only those warriors brave enough to join in the destruction of Zipactriotl
|
||||
will reap in the glory! All hail the Myrmidex! All hail the Barrab!*/
|
||||
|
||||
public override object Uncomplete{ get{ return 1156761; } } /*Zipactriotl must be destroyed...the time is NOW! Go to the Antechamber in the
|
||||
Great Pyramid and restore glory to the Myrmidex!*/
|
||||
|
||||
public override object Complete{ get{ return 1156762; } } /*MUWAHAHA! ZIPACTRIOTL IS DESTROYED! THE MYRMIDEX ARE FREE TO RECLAIM EODON!
|
||||
THE BARRAB SHALL JOIN THEM AND TOGETHER WE SHALL RULE THE VALLEY!*/
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
return MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Myrmidex);
|
||||
}
|
||||
|
||||
public DestructionOfZipactriotlQuest()
|
||||
{
|
||||
AddObjective(new SlayObjective(typeof(Zipactriotl), "Zipactriotl", 1));
|
||||
|
||||
AddReward(new BaseReward(1156756)); // A step closer to destroying Zipactriotl...
|
||||
}
|
||||
|
||||
public override void GiveRewards()
|
||||
{
|
||||
base.GiveRewards();
|
||||
Owner.AddToBackpack(new MyrmidexRewardBag());
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class HiddenTreasuresQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156800; } } // Hidden Treasures
|
||||
|
||||
public override object Description{ get{ return 1156801; } } /*Hello there, looking to buy? Sell? Perhaps a pearl necklace for your lover -
|
||||
or maybe a fine ring to accompany your finest evening wear? We've got it all - just let
|
||||
me know what we can do for you and I'm sure we can accomodate! Activator? Stasis Chamber!
|
||||
Why I haven't an idea what you are talking about! *leans in and whispers* Not so
|
||||
loud - can't be too sure who's listening in these days. Listen if you want to get
|
||||
your hands on that item I know where you might be able to find one. I was able to
|
||||
acquire a treasure map that'll get you where you need to go but I need something
|
||||
first. My supply of prized gemstones has run low - you bring me those gem stones
|
||||
and I'll supply you with the map to what you're seeking.*/
|
||||
|
||||
public override object Refuse{ get{ return 1156804; } } // Well if you don't want to do it, you shouldn't have asked. Hrmph.
|
||||
|
||||
public override object Uncomplete{ get{ return 1156803; } } /*Acquire the gemstones I've asked for and I'll give you a map that will take you to
|
||||
the item you seek. It's very simple - now move along I've got customers to tend to!*/
|
||||
|
||||
public override object Complete{ get{ return 1156805; } } // *Examines the stones closely* Ahh yes, these will do quite nicely! As promised here's your map - good luck!
|
||||
|
||||
public HiddenTreasuresQuest()
|
||||
{
|
||||
AddObjective(new ObtainObjective(typeof(PerfectEmerald), "Perfect Emerald", 1));
|
||||
AddObjective(new ObtainObjective(typeof(WhitePearl), "White Pearl", 1));
|
||||
AddObjective(new ObtainObjective(typeof(BrilliantAmber), "Brilliant Amber", 1));
|
||||
|
||||
AddReward(new BaseReward(typeof(HiddenTreasuresTreasureMap), "A Special Treasure Map"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Myrmidex))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156778); // You must pledge allegiance to the Myrmidex and defeat the Eodonians in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Idol in the Barrab Village.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class TheSaltySeaQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156807; } } //The Salty Sea
|
||||
|
||||
public override object Description{ get{ return 1156808; } } /*Arr! The seas have become a wretched and dangerous place - a myriad o' creatures
|
||||
be tormentin' me ships. Can't have it! Can't have it one bit - what's that?
|
||||
Myrmidex. *He pauses and thinks for a moment as he sits back on the stool* Maybe
|
||||
I heard of em, maybe I aint...I'll tell ya what ye go and clear some o' the creature
|
||||
s that be plaguing the seas and maybe I tell ya what I know about them Myrmidex.*/
|
||||
|
||||
public override object Refuse{ get{ return 1156812; } } // What's the matter, aint got yer sea legs? Har Har Har!
|
||||
|
||||
public override object Uncomplete{ get{ return 1156813; } } /*Ye needin' to make the seas safe for Captains like me! Make sure ye killin' the
|
||||
critters in the South Britannian Sea. The seas south of the Britannian continent
|
||||
and between the far western Island of Jhelom and the Island of Valor. Big stretch
|
||||
o' ocean to be clobberin sea monsters! Get yerself a special fishing net if ye can
|
||||
't find the beasts, that'd be sure to wrangle them in!*/
|
||||
|
||||
public override object Complete{ get{ return 1156814; } } // Shiver me timbers! The sea be safe again! As promised here's the Message in a Bottle!
|
||||
|
||||
public TheSaltySeaQuest()
|
||||
{
|
||||
AddObjective(new SlayObjective(typeof(WaterElemental), "Water Elemental", 10, "South Britannian Sea"));
|
||||
AddObjective(new SlayObjective(typeof(SeaSerpent), "Sea Serpent", 10, "South Britannian Sea"));
|
||||
AddObjective(new SlayObjective(typeof(DeepSeaSerpent), "Deep Sea Serpent", 10, "South Britannian Sea"));
|
||||
AddObjective(new SlayObjective(typeof(Kraken), "Kraken", 5, "South Britannian Sea"));
|
||||
|
||||
AddReward(new BaseReward(typeof(SaltySeaMIB), "A Special Message in a Bottle"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Myrmidex))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156778); // You must pledge allegiance to the Myrmidex and defeat the Eodonians in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Idol in the Barrab Village.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class ATinkersTaskQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156815; } } // A Tinker's Task
|
||||
|
||||
public override object Description{ get{ return 1156816; } } /*Ha ha...he he...hoo hoo...yes yes...its all coming together now if only...*the
|
||||
tinker pauses and looks up* Myrmidex did you say? Oh yes, we are most certainly
|
||||
on the same page here! I assume my Barrabian colleague sent you? Of course he
|
||||
did! I'm almost ready to begin tinkering on the Automaton - but I need some
|
||||
supplies first. You collect those supplies and I'll give you the Stator you seek.
|
||||
Long live the Myrmidex! Long live the Barrab! Ha ha! He he! Hoo Hoo!*/
|
||||
|
||||
public override object Refuse{ get{ return 1156817; } } // No time to waste on those uncommitted to the cause - be gone with you!
|
||||
|
||||
public override object Uncomplete{ get{ return 1156818; } } /*Acquire the items I require to begin work on my Automaton and I'll give you the Stator.
|
||||
Don't come back until you've got everything!*/
|
||||
|
||||
public override object Complete{ get{ return 1156819; } } /*Ha ha! He he! Hoo hoo! These are just what I needed - the Automaton won't take long now,
|
||||
soon I shall wield this Kotl Technology and our Insect overlords will rule with the Barrab
|
||||
at their side. Only those loyal Britannians will be spared! Here is the Stator as
|
||||
I promised...*/
|
||||
|
||||
public ATinkersTaskQuest()
|
||||
{
|
||||
AddObjective(new ObtainObjective(typeof(IronIngot), "Iron Ingot", 500));
|
||||
AddObjective(new ObtainObjective(typeof(Gears), "Gears", 25));
|
||||
AddObjective(new ObtainObjective(typeof(PowerCrystal), "Power Crystal", 5));
|
||||
AddObjective(new ObtainObjective(typeof(ClockworkAssembly), "Clockwork assembly", 2));
|
||||
|
||||
AddReward(new BaseReward(typeof(StasisChamberStator), "Stasis Chamber Stator"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Myrmidex))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156778); // You must pledge allegiance to the Myrmidex and defeat the Eodonians in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Idol in the Barrab Village.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
// The last piece is sold on a vendor
|
||||
|
||||
public class ExterminatingTheInfestationQuest : BaseQuest
|
||||
{
|
||||
public override QuestChain ChainID { get { return QuestChain.EodonianAlliance; } }
|
||||
public override Type NextQuest { get { return typeof(InsecticideAndRegicideQuest); } }
|
||||
|
||||
public override object Title{ get{ return 1156763; } } // Exterminating the Infestation
|
||||
|
||||
public override object Description{ get{ return 1156764; } } /*It is unfortunate it had to come to this. My hope was the knowledge gained from
|
||||
all the peoples and creatures of Eodon would better our understanding of life -
|
||||
alas the Myrmidex are an abomination, creatures born into enslavement by an
|
||||
oppressive alien race, the Kotl. The Kotl came to Eodon to expand their empire
|
||||
and in doing so upset the delicate ecosystem that is the natural wonder of this
|
||||
place. The Valley cannot survive if the Myrmidex are allowed to spread, and there
|
||||
is no guarantee Britannia will be safe - they must be destroyed from within.
|
||||
We must quell their numbers significantly in order to force their Queen into
|
||||
reproduction, we must also obtain a powerful pheromone to gain safe passage within
|
||||
the deepest reaches of their pits, and we must also find an insecticide powerful
|
||||
enough to destroy them. Only then can we confront the Myrmidex Queen and end the
|
||||
Myrmidex threat.*/
|
||||
|
||||
public override object Refuse{ get{ return 1156767; } } /*I must question your commitment to our cause - are you satisfied with these Myrmidex
|
||||
invaders and their Barrabian allies?*/
|
||||
|
||||
public override object Uncomplete{ get{ return 1156768; } } /*You must obtain the Insecticide from the Gambler at the Modest Damsel in New
|
||||
Magincia, the Pheremone from the Gardener in Delucia, and the Population Report
|
||||
from Lt. Foxx before we can launch an offensive against the Myrmidex Queen!*/
|
||||
|
||||
public override object Complete{ get{ return 1156769; } } /*I should be excited but I cannot help but grimace at the destruction of an entire
|
||||
population *she frowns a bit* I must remain pragmatic though, this is for the
|
||||
greater good of the Valley and Britannia. The time to destroy the Myrmidex Queen
|
||||
is now.*/
|
||||
|
||||
public ExterminatingTheInfestationQuest()
|
||||
{
|
||||
AddObjective(new ObtainObjective(typeof(BottledMyrmidexPheromone), "Bottled Myrmidex Pheromone", 1));
|
||||
AddObjective(new ObtainObjective(typeof(BottleOfConcentratedInsecticide), "Bottle of Concentrated Insecticide", 1));
|
||||
AddObjective(new ObtainObjective(typeof(MyrmidexPopulationReport), "Myrmidex Population Report", 1));
|
||||
|
||||
AddReward(new BaseReward(1156766)); // A step closer to destroying the Myrmidex Queen...
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Tribes))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156779); // You must pledge allegiance to the Eodonians and defeat the Myrmidex in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Chaos banner in Sir Goeffrey's Camp.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class InsecticideAndRegicideQuest : BaseQuest
|
||||
{
|
||||
public override QuestChain ChainID { get { return QuestChain.EodonianAlliance; } }
|
||||
|
||||
public override object Title{ get{ return 1156770; } } // Insecticide and Regicide
|
||||
|
||||
public override object Description{ get{ return 1156771; } } /*Everything is in place. In the depths of the Myrmidex Pits are the Queen's
|
||||
chambers, it is there that she spawns new Myrmidex to bolster the numbers within
|
||||
the colony. No doubt she is powerful - the energy of the moonstones is sure to
|
||||
have seen to that. It pains me to say this but - take no mercy, she must be
|
||||
destroyed for the safety of the peoples of Eodon.*/
|
||||
|
||||
public override object Refuse{ get{ return 1156767; } } /*I must question your commitment to our cause - are you satisfied with these Myrmidex
|
||||
invaders and their Barrabian allies?;*/
|
||||
|
||||
public override object Uncomplete{ get{ return 1156773; } } /*You must go into the depths of the Myrmidex Pits and find the Queen - she must
|
||||
be destroyed! The entrance to the deepest parts of the Myrmidex Pits are in the
|
||||
sandy valley to the West.*/
|
||||
|
||||
public override object Complete{ get{ return 1156774; } } /*You are brave and courageous - the Valley of Eodon is now safe from the Myrmidex threat!;*/
|
||||
|
||||
public InsecticideAndRegicideQuest()
|
||||
{
|
||||
AddObjective(new SlayObjective(typeof(MyrmidexQueen), "Myrmidex Queen", 1));
|
||||
|
||||
AddReward(new BaseReward(1156766)); // A step closer to destroying the Myrmidex Queen...
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Tribes))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156779); // You must pledge allegiance to the Eodonians and defeat the Myrmidex in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Chaos banner in Sir Goeffrey's Camp.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void GiveRewards()
|
||||
{
|
||||
base.GiveRewards();
|
||||
Owner.AddToBackpack(new EodonianRewardBag());
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class PestControlQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156785; } } // Pest Control
|
||||
|
||||
public override object Description{ get{ return 1156776; } } /*A significant portion of the Myrmidex population has been quelled in the surface
|
||||
reaches of their habitat. Population reduction estimated to meet or exceed
|
||||
parameters set forth for operational security. Recommend proceed.*/
|
||||
|
||||
public override object Refuse{ get{ return 1156787; } } // I knew it, you must be yellar! Get out of my sight!
|
||||
|
||||
public override object Uncomplete{ get{ return 1156788; } } /*You've got to kill enough Myrmidex Larvae, Drones, and Warriors in the Valley in
|
||||
order to force the queen to show herself, they've got to be Myrmidex in the Valley
|
||||
- stay out of the Myrmidex Pits!*/
|
||||
|
||||
public override object Complete{ get{ return 1156789; } } /*Well color me surprised, you did it! Now that we've gotten rid of enough of these
|
||||
pests the Queen will have no choice but to reveal herself - here's the population
|
||||
report you'll need for Professor Rafkin!*/
|
||||
|
||||
public PestControlQuest()
|
||||
{
|
||||
AddObjective(new SlayObjective(typeof(MyrmidexLarvae), "Myrmidex Larvae", 20));
|
||||
AddObjective(new SlayObjective(typeof(MyrmidexDrone), "Myrmidex Drone", 15));
|
||||
AddObjective(new SlayObjective(typeof(MyrmidexWarrior), "Myrmidex Warrior", 10));
|
||||
|
||||
AddReward(new BaseReward(typeof(MyrmidexPopulationReport), "Myrmidex Population Report"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Tribes))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156779); // You must pledge allegiance to the Eodonians and defeat the Myrmidex in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Chaos banner in Sir Goeffrey's Camp.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GettingEvenQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156790; } } // Getting Even
|
||||
|
||||
public override object Description{ get{ return 1156791; } } /* *Sobs* Whyyyyy couldn't I just stop, no just had to be one more hand - I knew if
|
||||
I could just get on a hot streak I'd make it all better...but I lost everything,
|
||||
even my shirt! I loved that shirt, was so puffy and soft. How can fortune have
|
||||
cursed me so badly? The only thing left to do is drink this poison here and -
|
||||
*pauses and looks at you* You want this poison? *eyebrow raises a bit* Well if
|
||||
you want it so bad you've got to do me a solid, head to the Fortune's Fire Casino
|
||||
and make them pay! Bring down the house and I'll let you have the poison, at least
|
||||
show me SOMEONE can win in that wretched place!*/
|
||||
|
||||
public override object Refuse{ get{ return 1156796; } } // Can't even be bothered to help a guy down on his luck? *sigh*
|
||||
|
||||
public override object Uncomplete{ get{ return 1156797; } } /*You need to go to the Fortune's Fire Casino on Fire Island and show those dealers
|
||||
who's boss! Win 3 games each of Chuckle's Luck, Hi-Mid-Lo, and Dice Rider and I'll give
|
||||
you the poison!*/
|
||||
|
||||
public override object Complete{ get{ return 1156798; } } /*Luck be a lady tonight! Winner-winner chicken dinner! I'm back in the game, don't
|
||||
need this poison anymore - here you go!*/
|
||||
|
||||
|
||||
public GettingEvenQuest()
|
||||
{
|
||||
AddObjective(new InternalObjective(typeof(ChucklesLuck)));
|
||||
AddObjective(new InternalObjective(typeof(HiMiddleLow)));
|
||||
AddObjective(new InternalObjective(typeof(DiceRider)));
|
||||
|
||||
AddReward(new BaseReward(typeof(BottleOfConcentratedInsecticide), "A Bottle Of Concentrated Insecticide"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Tribes))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156779); // You must pledge allegiance to the Eodonians and defeat the Myrmidex in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Chaos banner in Sir Goeffrey's Camp.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override bool RenderObjective(MondainQuestGump g, bool offer)
|
||||
{
|
||||
if (offer)
|
||||
g.AddHtmlLocalized(130, 45, 270, 16, 1049010, 0xFFFFFF, false, false); // Quest Offer
|
||||
else
|
||||
g.AddHtmlLocalized(130, 45, 270, 16, 1046026, 0xFFFFFF, false, false); // Quest Log
|
||||
|
||||
g.AddButton(130, 430, 0x2EEF, 0x2EF1, (int)Buttons.PreviousPage, GumpButtonType.Reply, 0);
|
||||
g.AddButton(275, 430, 0x2EE9, 0x2EEB, (int)Buttons.NextPage, GumpButtonType.Reply, 0);
|
||||
|
||||
g.AddHtmlObject(160, 70, 330, 16, Title, BaseQuestGump.DarkGreen, false, false);
|
||||
g.AddHtmlLocalized(98, 140, 312, 16, 1049073, 0x2710, false, false); // Objective:
|
||||
|
||||
g.AddHtmlLocalized(98, 160, 312, 16, 1156792, 0x15F90, false, false); //Win 3 Games of "Chuckle's Luck" at the Fortune's Fire Casino
|
||||
g.AddHtmlLocalized(98, 176, 312, 16, 1156793, 0x15F90, false, false); //Win 3 games of "Hi-Middle-Lo" at the Fortune's Fire Casino
|
||||
g.AddHtmlLocalized(98, 192, 312, 16, 1156794, 0x15F90, false, false); //Win 3 games of "Dice Rider" at the Fortune's Fire Casino
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Update(Type t)
|
||||
{
|
||||
foreach (InternalObjective obj in this.Objectives.OfType<InternalObjective>())
|
||||
{
|
||||
if (obj.Update(t))
|
||||
{
|
||||
if(Completed)
|
||||
OnCompleted();
|
||||
else if(obj.Completed)
|
||||
Owner.SendSound(UpdateSound);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class InternalObjective : BaseObjective
|
||||
{
|
||||
public Type GameType { get; set; }
|
||||
|
||||
public InternalObjective(Type type)
|
||||
: base(3)
|
||||
{
|
||||
GameType = type;
|
||||
}
|
||||
|
||||
public override bool Update(object o)
|
||||
{
|
||||
Type t = o as Type;
|
||||
|
||||
if(t != null && t == GameType && Quest != null && Quest.Owner != null && Quest.Owner.Region.IsPartOf("FireIsleCasino"))
|
||||
{
|
||||
if(t == typeof(ChucklesLuck))
|
||||
{
|
||||
CurProgress++;
|
||||
Quest.Owner.SendSound(Quest.UpdateSound);
|
||||
|
||||
if (CurProgress <= MaxProgress)
|
||||
Quest.Owner.SendLocalizedMessage(1156795, String.Format("{0}\t{1}\t{2}", CurProgress.ToString(), MaxProgress.ToString(), "Chuckles' Luck")); // [Quest Event: Getting Even] You have won ~1_count~ of ~2_req~ games of ~3_game~!
|
||||
|
||||
}
|
||||
else if (t == typeof(HiMiddleLow))
|
||||
{
|
||||
CurProgress++;
|
||||
Quest.Owner.SendSound(Quest.UpdateSound);
|
||||
|
||||
if (CurProgress <= MaxProgress)
|
||||
Quest.Owner.SendLocalizedMessage(1156795, String.Format("{0}\t{1}\t{2}", CurProgress.ToString(), MaxProgress.ToString(), "Hi-Middle-Low")); // [Quest Event: Getting Even] You have won ~1_count~ of ~2_req~ games of ~3_game~!
|
||||
|
||||
}
|
||||
else if (t == typeof(DiceRider))
|
||||
{
|
||||
CurProgress++;
|
||||
Quest.Owner.SendSound(Quest.UpdateSound);
|
||||
|
||||
if (CurProgress <= MaxProgress)
|
||||
Quest.Owner.SendLocalizedMessage(1156795, String.Format("{0}\t{1}\t{2}", CurProgress.ToString(), MaxProgress.ToString(), "Dice Rider")); // [Quest Event: Getting Even] You have won ~1_count~ of ~2_req~ games of ~3_game~!
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class OfVorpalsAndLettacesTheGardnerQuest : BaseQuest
|
||||
{
|
||||
public override object Title{ get{ return 1156780; } } // Of Vorpals and Lettuces
|
||||
|
||||
public override object Description{ get{ return 1156781; } } /*I cannot believe these wretched pests! I can't even manage to plant a single head of lettuce
|
||||
without these rascals chomping them up! *She pauses for a moment and looks at you
|
||||
quizzically* Oh, hello there! What is it I can do for you? Roses? Watermelons?
|
||||
Lettuces? We've got them all...well maybe not lettuces but...Myrmidex Pheremone?
|
||||
Well that is certainly a special request - say, how about this? You take care of
|
||||
my rabbit problem and I'll give you the pheremone. Sounds fair to me!*/
|
||||
|
||||
public override object Refuse{ get{ return 1156782; } } // Well if you're afraid of a little bunny then you haven't much business tackling a Myrmidex. Hrmph!
|
||||
|
||||
public override object Uncomplete{ get{ return 1156783; } } /*There's no time to lose! My lettuces won't grow until you deal with the dastardly
|
||||
bunnies wreaking havoc on my gardens! Get a green thorn and plant it in the garden's dirt
|
||||
to drive them out!*/
|
||||
|
||||
public override object Complete{ get{ return 1156784; } } /*Well done! With these pests out of my gardens I can finally get on with growing a prized lettuce!
|
||||
Here's your Pheromone as I promised!*/
|
||||
|
||||
public OfVorpalsAndLettacesTheGardnerQuest()
|
||||
{
|
||||
AddObjective(new SlayObjective(typeof(VorpalBunny), "Vorpal Bunny", 1, "Delucia"));
|
||||
|
||||
AddReward(new BaseReward(typeof(BottledMyrmidexPheromone), "Bottled Myrmidex Pheromone"));
|
||||
}
|
||||
|
||||
public override bool CanOffer()
|
||||
{
|
||||
if (!MyrmidexInvasionSystem.CanRecieveQuest(Owner, Allegiance.Tribes))
|
||||
{
|
||||
Owner.SendLocalizedMessage(1156779); // You must pledge allegiance to the Eodonians and defeat the Myrmidex in the Myrmidex Pits before you can embark on this quest. You may pledge allegiance by double clicking the Chaos banner in Sir Goeffrey's Camp.
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user