#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.
This commit is contained in:
parent
b51c58f514
commit
3045c83799
3512 changed files with 627673 additions and 0 deletions
120
Scripts/Engines/Quests/Witch Apprentice/Mobiles/Blackheart.cs
Normal file
120
Scripts/Engines/Quests/Witch Apprentice/Mobiles/Blackheart.cs
Normal file
|
|
@ -0,0 +1,120 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Quests.Hag
|
||||
{
|
||||
public class Blackheart : BaseQuester
|
||||
{
|
||||
[Constructable]
|
||||
public Blackheart() : base( "the Drunken Pirate" )
|
||||
{
|
||||
}
|
||||
|
||||
public Blackheart( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats( 100, 100, 25 );
|
||||
|
||||
Hue = 0x83EF;
|
||||
|
||||
Female = false;
|
||||
Body = 0x190;
|
||||
Name = "Captain Blackheart";
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
AddItem( new FancyShirt() );
|
||||
AddItem( new LongPants( 0x66D ) );
|
||||
AddItem( new ThighBoots() );
|
||||
AddItem( new TricorneHat( 0x1 ) );
|
||||
AddItem( new BodySash( 0x66D ) );
|
||||
|
||||
LeatherGloves gloves = new LeatherGloves();
|
||||
gloves.Hue = 0x66D;
|
||||
AddItem( gloves );
|
||||
|
||||
FacialHairItemID = 0x203E; // Long Beard
|
||||
FacialHairHue = 0x455;
|
||||
|
||||
Item sword = new Cutlass();
|
||||
sword.Movable = false;
|
||||
AddItem( sword );
|
||||
}
|
||||
|
||||
public override void OnTalk( PlayerMobile player, bool contextMenu )
|
||||
{
|
||||
Direction = GetDirectionTo( player );
|
||||
Animate( 33, 20, 1, true, false, 0 );
|
||||
|
||||
QuestSystem qs = player.Quest;
|
||||
|
||||
if ( qs is WitchApprenticeQuest )
|
||||
{
|
||||
FindIngredientObjective obj = qs.FindObjective( typeof( FindIngredientObjective ) ) as FindIngredientObjective;
|
||||
|
||||
if ( obj != null && !obj.Completed && obj.Ingredient == Ingredient.Whiskey )
|
||||
{
|
||||
PlaySound( Utility.RandomBool() ? 0x42E : 0x43F );
|
||||
|
||||
Item hat = player.FindItemOnLayer( Layer.Helm );
|
||||
bool tricorne = hat is TricorneHat;
|
||||
|
||||
if ( tricorne && player.BAC >= 20 )
|
||||
{
|
||||
obj.Complete();
|
||||
|
||||
if ( obj.BlackheartMet )
|
||||
qs.AddConversation( new BlackheartPirateConversation( false ) );
|
||||
else
|
||||
qs.AddConversation( new BlackheartPirateConversation( true ) );
|
||||
}
|
||||
else if ( !obj.BlackheartMet )
|
||||
{
|
||||
obj.Complete();
|
||||
|
||||
qs.AddConversation( new BlackheartFirstConversation() );
|
||||
}
|
||||
else
|
||||
{
|
||||
qs.AddConversation( new BlackheartNoPirateConversation( tricorne, player.BAC > 0 ) );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
PlaySound( 0x42C );
|
||||
SayTo( player, 1055041 ); // The drunken pirate shakes his fist at you and goes back to drinking.
|
||||
}
|
||||
|
||||
private void Heave()
|
||||
{
|
||||
this.PublicOverheadMessage( Network.MessageType.Regular, 0x3B2, 500849 ); // *hic*
|
||||
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( Utility.RandomMinMax( 60, 180 ) ), new TimerCallback( Heave ) );
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Heave();
|
||||
}
|
||||
}
|
||||
}
|
||||
220
Scripts/Engines/Quests/Witch Apprentice/Mobiles/Grizelda.cs
Normal file
220
Scripts/Engines/Quests/Witch Apprentice/Mobiles/Grizelda.cs
Normal file
|
|
@ -0,0 +1,220 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Quests.Hag
|
||||
{
|
||||
public class Grizelda : BaseQuester
|
||||
{
|
||||
public override bool ClickTitle{ get{ return true; } }
|
||||
|
||||
[Constructable]
|
||||
public Grizelda() : base( "the Hag" )
|
||||
{
|
||||
}
|
||||
|
||||
public Grizelda( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats( 100, 100, 25 );
|
||||
|
||||
Hue = 0x83EA;
|
||||
|
||||
Female = true;
|
||||
Body = 0x191;
|
||||
Name = "Grizelda";
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
AddItem( new Robe( 0x1 ) );
|
||||
AddItem( new Sandals() );
|
||||
AddItem( new WizardsHat( 0x1 ) );
|
||||
AddItem( new GoldBracelet() );
|
||||
|
||||
HairItemID = 0x203C;
|
||||
|
||||
Item staff = new GnarledStaff();
|
||||
staff.Movable = false;
|
||||
AddItem( staff );
|
||||
}
|
||||
|
||||
public override void OnTalk( PlayerMobile player, bool contextMenu )
|
||||
{
|
||||
Direction = GetDirectionTo( player );
|
||||
|
||||
QuestSystem qs = player.Quest;
|
||||
|
||||
if ( qs is WitchApprenticeQuest )
|
||||
{
|
||||
if ( qs.IsObjectiveInProgress( typeof( FindApprenticeObjective ) ) )
|
||||
{
|
||||
PlaySound( 0x259 );
|
||||
PlaySound( 0x206 );
|
||||
qs.AddConversation( new HagDuringCorpseSearchConversation() );
|
||||
}
|
||||
else
|
||||
{
|
||||
QuestObjective obj = qs.FindObjective( typeof( FindGrizeldaAboutMurderObjective ) );
|
||||
|
||||
if ( obj != null && !obj.Completed )
|
||||
{
|
||||
PlaySound( 0x420 );
|
||||
PlaySound( 0x20 );
|
||||
obj.Complete();
|
||||
}
|
||||
else if ( qs.IsObjectiveInProgress( typeof( KillImpsObjective ) )
|
||||
|| qs.IsObjectiveInProgress( typeof( FindZeefzorpulObjective ) ) )
|
||||
{
|
||||
PlaySound( 0x259 );
|
||||
PlaySound( 0x206 );
|
||||
qs.AddConversation( new HagDuringImpSearchConversation() );
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = qs.FindObjective( typeof( ReturnRecipeObjective ) );
|
||||
|
||||
if ( obj != null && !obj.Completed )
|
||||
{
|
||||
PlaySound( 0x258 );
|
||||
PlaySound( 0x41B );
|
||||
obj.Complete();
|
||||
}
|
||||
else if ( qs.IsObjectiveInProgress( typeof( FindIngredientObjective ) ) )
|
||||
{
|
||||
PlaySound( 0x259 );
|
||||
PlaySound( 0x206 );
|
||||
qs.AddConversation( new HagDuringIngredientsConversation() );
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = qs.FindObjective( typeof( ReturnIngredientsObjective ) );
|
||||
|
||||
if ( obj != null && !obj.Completed )
|
||||
{
|
||||
Container cont = GetNewContainer();
|
||||
|
||||
cont.DropItem( new BlackPearl( 30 ) );
|
||||
cont.DropItem( new Bloodmoss( 30 ) );
|
||||
cont.DropItem( new Garlic( 30 ) );
|
||||
cont.DropItem( new Ginseng( 30 ) );
|
||||
cont.DropItem( new MandrakeRoot( 30 ) );
|
||||
cont.DropItem( new Nightshade( 30 ) );
|
||||
cont.DropItem( new SulfurousAsh( 30 ) );
|
||||
cont.DropItem( new SpidersSilk( 30 ) );
|
||||
|
||||
cont.DropItem( new Cauldron() );
|
||||
cont.DropItem( new MoonfireBrew() );
|
||||
cont.DropItem( new TreasureMap( Utility.RandomMinMax( 1, 4 ), this.Map ) );
|
||||
cont.DropItem( new Gold( 2000, 2200 ) );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
{
|
||||
BaseWeapon weapon = Loot.RandomWeapon();
|
||||
|
||||
if ( Core.AOS )
|
||||
{
|
||||
BaseRunicTool.ApplyAttributesTo( weapon, 2, 20, 30 );
|
||||
}
|
||||
else
|
||||
{
|
||||
weapon.DamageLevel = (WeaponDamageLevel)BaseCreature.RandomMinMaxScaled( 2, 3 );
|
||||
weapon.AccuracyLevel = (WeaponAccuracyLevel)BaseCreature.RandomMinMaxScaled( 2, 3 );
|
||||
weapon.DurabilityLevel = (WeaponDurabilityLevel)BaseCreature.RandomMinMaxScaled( 2, 3 );
|
||||
}
|
||||
|
||||
cont.DropItem( weapon );
|
||||
}
|
||||
else
|
||||
{
|
||||
Item item;
|
||||
|
||||
if ( Core.AOS )
|
||||
{
|
||||
item = Loot.RandomArmorOrShieldOrJewelry();
|
||||
|
||||
if ( item is BaseArmor )
|
||||
BaseRunicTool.ApplyAttributesTo( (BaseArmor)item, 2, 20, 30 );
|
||||
else if ( item is BaseJewel )
|
||||
BaseRunicTool.ApplyAttributesTo( (BaseJewel)item, 2, 20, 30 );
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseArmor armor = Loot.RandomArmorOrShield();
|
||||
item = armor;
|
||||
|
||||
armor.ProtectionLevel = (ArmorProtectionLevel)BaseCreature.RandomMinMaxScaled( 2, 3 );
|
||||
armor.Durability = (ArmorDurabilityLevel)BaseCreature.RandomMinMaxScaled( 2, 3 );
|
||||
}
|
||||
|
||||
cont.DropItem( item );
|
||||
}
|
||||
|
||||
if ( player.BAC > 0 )
|
||||
cont.DropItem( new HangoverCure() );
|
||||
|
||||
if ( player.PlaceInBackpack( cont ) )
|
||||
{
|
||||
bool gainedPath = false;
|
||||
|
||||
if ( VirtueHelper.Award( player, VirtueName.Sacrifice, 250, ref gainedPath ) ) // TODO: Check amount on OSI.
|
||||
player.SendLocalizedMessage( 1054160 ); // You have gained in sacrifice.
|
||||
|
||||
PlaySound( 0x253 );
|
||||
PlaySound( 0x20 );
|
||||
obj.Complete();
|
||||
}
|
||||
else
|
||||
{
|
||||
cont.Delete();
|
||||
player.SendLocalizedMessage( 1046260 ); // You need to clear some space in your inventory to continue with the quest. Come back here when you have more space in your inventory.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QuestSystem newQuest = new WitchApprenticeQuest( player );
|
||||
bool inRestartPeriod = false;
|
||||
|
||||
if ( qs != null )
|
||||
{
|
||||
newQuest.AddConversation( new DontOfferConversation() );
|
||||
}
|
||||
else if ( QuestSystem.CanOfferQuest( player, typeof( WitchApprenticeQuest ), out inRestartPeriod ) )
|
||||
{
|
||||
PlaySound( 0x20 );
|
||||
PlaySound( 0x206 );
|
||||
newQuest.SendOffer();
|
||||
}
|
||||
else if ( inRestartPeriod )
|
||||
{
|
||||
PlaySound( 0x259 );
|
||||
PlaySound( 0x206 );
|
||||
newQuest.AddConversation( new RecentlyFinishedConversation() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Engines.Quests.Hag
|
||||
{
|
||||
public class Zeefzorpul : BaseQuester
|
||||
{
|
||||
public Zeefzorpul()
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
Body = 0x4A;
|
||||
Name = "Zeefzorpul";
|
||||
}
|
||||
|
||||
public Zeefzorpul( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanTalkTo( PlayerMobile to )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void OnTalk( PlayerMobile player, bool contextMenu )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue