#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
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue