#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
111
Scripts/Engines/Quests/Terrible Hatchlings/Conversations.cs
Normal file
111
Scripts/Engines/Quests/Terrible Hatchlings/Conversations.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Engines.Quests.Zento
|
||||
{
|
||||
public class AcceptConversation : QuestConversation
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
/* <I><U>Important Quest Information</U></I><BR><BR>
|
||||
*
|
||||
* During your quest, any important information that a
|
||||
* <a href = "?ForceTopic31">NPC</a> gives you, will appear in a window
|
||||
* such as this one. You can review the information at any time during your
|
||||
* quest.<BR><BR>
|
||||
*
|
||||
* <U>Getting Help</U><BR><BR>
|
||||
*
|
||||
* Some of the text you will come across during your quest,
|
||||
* will be underlined <a href = "?ForceTopic73">links to the codex of wisdom</a>,
|
||||
* or online help system. You can click on the text to get detailed information
|
||||
* on the underlined subject. You may also access the Codex Of Wisdom by
|
||||
* pressing "F1" or by clicking on the "?" on the toolbar at the top of
|
||||
* your screen.<BR><BR><U>Context Menus</U><BR><BR>
|
||||
*
|
||||
* Context menus can be called up by single left-clicking (or Shift + single
|
||||
* left-click, if you changed it) on most objects or NPCs in the world.
|
||||
* Nearly everything, including your own avatar will have context menus available.
|
||||
* Bringing up your avatar's context menu will give you options to cancel your quest
|
||||
* and review various quest information.<BR><BR>
|
||||
*/
|
||||
return 1049092;
|
||||
}
|
||||
}
|
||||
|
||||
public AcceptConversation()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnRead()
|
||||
{
|
||||
System.AddObjective( new FirstKillObjective() );
|
||||
}
|
||||
}
|
||||
|
||||
public class DirectionConversation : QuestConversation
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
// The Deathwatch Beetle Hatchlings live in The Waste - the desert close to this city.
|
||||
return 1063323;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Logged{ get{ return false; } }
|
||||
|
||||
public DirectionConversation()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class TakeCareConversation : QuestConversation
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
// I know you can take care of those nasty Deathwatch Beetle Hatchlings! No get to it!
|
||||
return 1063324;
|
||||
}
|
||||
}
|
||||
|
||||
public override bool Logged{ get{ return false; } }
|
||||
|
||||
public TakeCareConversation()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class EndConversation : QuestConversation
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
/* Thank you for helping me get rid of these vile beasts!
|
||||
* You have been rewarded for your good deeds. If you wish to
|
||||
* help me in the future, visit me again.<br><br>
|
||||
*
|
||||
* Farewell.
|
||||
*/
|
||||
return 1063321;
|
||||
}
|
||||
}
|
||||
|
||||
public EndConversation()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnRead()
|
||||
{
|
||||
System.Complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Gumps;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Engines.Quests.Zento
|
||||
{
|
||||
public class AnsellaGryen : BaseQuester
|
||||
{
|
||||
[Constructable]
|
||||
public AnsellaGryen()
|
||||
{
|
||||
}
|
||||
|
||||
public override void InitBody()
|
||||
{
|
||||
InitStats( 100, 100, 25 );
|
||||
|
||||
Hue = 0x83EA;
|
||||
|
||||
Female = true;
|
||||
Body = 0x191;
|
||||
Name = "Ansella Gryen";
|
||||
}
|
||||
|
||||
public override void InitOutfit()
|
||||
{
|
||||
HairItemID = 0x203B;
|
||||
HairHue = 0x1BB;
|
||||
|
||||
AddItem( new SamuraiTabi( 0x8FD ) );
|
||||
AddItem( new FemaleKimono( 0x4B6 ) );
|
||||
AddItem( new Obi( 0x526 ) );
|
||||
|
||||
AddItem( new GoldBracelet() );
|
||||
}
|
||||
|
||||
public override int GetAutoTalkRange( PlayerMobile m )
|
||||
{
|
||||
if ( m.Quest == null )
|
||||
return 3;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
public override void OnTalk( PlayerMobile player, bool contextMenu )
|
||||
{
|
||||
QuestSystem qs = player.Quest;
|
||||
|
||||
if ( qs is TerribleHatchlingsQuest )
|
||||
{
|
||||
if ( qs.IsObjectiveInProgress( typeof( FirstKillObjective ) ) )
|
||||
{
|
||||
qs.AddConversation( new DirectionConversation() );
|
||||
}
|
||||
else if ( qs.IsObjectiveInProgress( typeof( SecondKillObjective ) )
|
||||
|| qs.IsObjectiveInProgress( typeof( ThirdKillObjective ) ) )
|
||||
{
|
||||
qs.AddConversation( new TakeCareConversation() );
|
||||
}
|
||||
else
|
||||
{
|
||||
QuestObjective obj = qs.FindObjective( typeof( ReturnObjective ) );
|
||||
|
||||
if ( obj != null && !obj.Completed )
|
||||
{
|
||||
Container cont = GetNewContainer();
|
||||
|
||||
cont.DropItem( new Gold( Utility.RandomMinMax( 100, 200 ) ) );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
{
|
||||
BaseWeapon weapon = Loot.Construct( Loot.SEWeaponTypes ) as BaseWeapon;
|
||||
|
||||
if ( weapon != null )
|
||||
{
|
||||
BaseRunicTool.ApplyAttributesTo( weapon, 3, 10, 30 );
|
||||
cont.DropItem( weapon );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseArmor armor = Loot.Construct( Loot.SEArmorTypes ) as BaseArmor;
|
||||
|
||||
if ( armor != null )
|
||||
{
|
||||
BaseRunicTool.ApplyAttributesTo( armor, 1, 10, 20 );
|
||||
cont.DropItem( armor );
|
||||
}
|
||||
}
|
||||
|
||||
if ( player.PlaceInBackpack( cont ) )
|
||||
{
|
||||
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
|
||||
{
|
||||
TerribleHatchlingsQuest newQuest = new TerribleHatchlingsQuest( player );
|
||||
bool inRestartPeriod = false;
|
||||
|
||||
if ( qs != null )
|
||||
{
|
||||
if ( contextMenu )
|
||||
SayTo( player, 1063322 ); // Before you can help me with the Terrible Hatchlings, you'll need to finish the quest you've already taken!
|
||||
}
|
||||
else if ( QuestSystem.CanOfferQuest( player, typeof( TerribleHatchlingsQuest ), out inRestartPeriod ) )
|
||||
{
|
||||
newQuest.SendOffer();
|
||||
}
|
||||
else if ( inRestartPeriod && contextMenu )
|
||||
{
|
||||
SayTo( player, 1049357 ); // I have nothing more for you at this time.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public AnsellaGryen( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.WriteEncodedInt( 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadEncodedInt();
|
||||
}
|
||||
|
||||
public override void TurnToTokuno() { }
|
||||
}
|
||||
}
|
||||
178
Scripts/Engines/Quests/Terrible Hatchlings/Objectives.cs
Normal file
178
Scripts/Engines/Quests/Terrible Hatchlings/Objectives.cs
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Engines.Quests.Zento
|
||||
{
|
||||
public class FirstKillObjective : QuestObjective
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
// Kill 10 Deathwatch Beetle Hatchlings and return to Ansella Gryen.
|
||||
return 1063316;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RenderProgress( BaseQuestGump gump )
|
||||
{
|
||||
if ( !Completed )
|
||||
{
|
||||
// Deathwatch Beetle Hatchlings killed:
|
||||
gump.AddHtmlLocalized( 70, 260, 270, 100, 1063318, 0x12DC6BF, false, false );
|
||||
|
||||
gump.AddLabel( 70, 280, 0x64, "0" );
|
||||
gump.AddLabel( 100, 280, 0x64, "/" );
|
||||
gump.AddLabel( 130, 280, 0x64, "10" );
|
||||
}
|
||||
else
|
||||
{
|
||||
base.RenderProgress( gump );
|
||||
}
|
||||
}
|
||||
|
||||
public FirstKillObjective()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnKill( BaseCreature creature, Container corpse )
|
||||
{
|
||||
if ( creature is DeathwatchBeetleHatchling )
|
||||
Complete();
|
||||
}
|
||||
|
||||
public override void OnComplete()
|
||||
{
|
||||
System.AddObjective( new SecondKillObjective() );
|
||||
}
|
||||
}
|
||||
|
||||
public class SecondKillObjective : QuestObjective
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
/* Great job! One less terrible hatchling in the Waste!<BR><BR>
|
||||
*
|
||||
* Once you've killed 10 of the Deathwatch Beetle Hatchlings,
|
||||
* return to Ansella for your reward!
|
||||
*/
|
||||
return 1063320;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RenderProgress( BaseQuestGump gump )
|
||||
{
|
||||
if ( !Completed )
|
||||
{
|
||||
// Deathwatch Beetle Hatchlings killed:
|
||||
gump.AddHtmlLocalized( 70, 260, 270, 100, 1063318, 0x12DC6BF, false, false );
|
||||
|
||||
gump.AddLabel( 70, 280, 0x64, "1" );
|
||||
gump.AddLabel( 100, 280, 0x64, "/" );
|
||||
gump.AddLabel( 130, 280, 0x64, "10" );
|
||||
}
|
||||
else
|
||||
{
|
||||
base.RenderProgress( gump );
|
||||
}
|
||||
}
|
||||
|
||||
public SecondKillObjective()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnKill( BaseCreature creature, Container corpse )
|
||||
{
|
||||
if ( creature is DeathwatchBeetleHatchling )
|
||||
{
|
||||
Complete();
|
||||
System.AddObjective( new ThirdKillObjective( 2 ) );
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnRead()
|
||||
{
|
||||
if ( !Completed )
|
||||
{
|
||||
Complete();
|
||||
System.AddObjective( new ThirdKillObjective( 1 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ThirdKillObjective : QuestObjective
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
// Continue killing Deathwatch Beetle Hatchlings.
|
||||
return 1063319;
|
||||
}
|
||||
}
|
||||
|
||||
public override void RenderProgress( BaseQuestGump gump )
|
||||
{
|
||||
if ( !Completed )
|
||||
{
|
||||
// Deathwatch Beetle Hatchlings killed:
|
||||
gump.AddHtmlLocalized( 70, 260, 270, 100, 1063318, 0x12DC6BF, false, false );
|
||||
|
||||
gump.AddLabel( 70, 280, 0x64, CurProgress.ToString() );
|
||||
gump.AddLabel( 100, 280, 0x64, "/" );
|
||||
gump.AddLabel( 130, 280, 0x64, "10" );
|
||||
}
|
||||
else
|
||||
{
|
||||
base.RenderProgress( gump );
|
||||
}
|
||||
}
|
||||
|
||||
public override int MaxProgress{ get{ return 10; } }
|
||||
|
||||
public ThirdKillObjective( int startingProgress )
|
||||
{
|
||||
CurProgress = startingProgress;
|
||||
}
|
||||
|
||||
public ThirdKillObjective()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnKill( BaseCreature creature, Container corpse )
|
||||
{
|
||||
if ( creature is DeathwatchBeetleHatchling )
|
||||
CurProgress++;
|
||||
}
|
||||
|
||||
public override void OnComplete()
|
||||
{
|
||||
System.AddObjective( new ReturnObjective() );
|
||||
}
|
||||
}
|
||||
|
||||
public class ReturnObjective : QuestObjective
|
||||
{
|
||||
public override object Message
|
||||
{
|
||||
get
|
||||
{
|
||||
// Return to Ansella Gryen for your reward.
|
||||
return 1063313;
|
||||
}
|
||||
}
|
||||
|
||||
public ReturnObjective()
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnComplete()
|
||||
{
|
||||
System.AddConversation( new EndConversation() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Engines.Quests.Zento
|
||||
{
|
||||
public class TerribleHatchlingsQuest : QuestSystem
|
||||
{
|
||||
private static Type[] m_TypeReferenceTable = new Type[]
|
||||
{
|
||||
typeof( AcceptConversation ),
|
||||
typeof( DirectionConversation ),
|
||||
typeof( TakeCareConversation ),
|
||||
typeof( EndConversation ),
|
||||
typeof( FirstKillObjective ),
|
||||
typeof( SecondKillObjective ),
|
||||
typeof( ThirdKillObjective ),
|
||||
typeof( ReturnObjective )
|
||||
};
|
||||
|
||||
public override Type[] TypeReferenceTable{ get{ return m_TypeReferenceTable; } }
|
||||
|
||||
public override object Name
|
||||
{
|
||||
get
|
||||
{
|
||||
// Terrible Hatchlings
|
||||
return 1063314;
|
||||
}
|
||||
}
|
||||
|
||||
public override object OfferMessage
|
||||
{
|
||||
get
|
||||
{
|
||||
/* The Deathwatch Beetle Hatchlings have trampled through my fields
|
||||
* again, what a nuisance! Please help me get rid of the terrible
|
||||
* hatchlings. If you kill 10 of them, you will be rewarded.
|
||||
* The Deathwatch Beetle Hatchlings live in The Waste -
|
||||
* the desert close to this city.<BR><BR>
|
||||
*
|
||||
* Will you accept this challenge?
|
||||
*/
|
||||
return 1063315;
|
||||
}
|
||||
}
|
||||
|
||||
public override TimeSpan RestartDelay{ get{ return TimeSpan.MaxValue; } }
|
||||
public override bool IsTutorial{ get{ return true; } }
|
||||
|
||||
public override int Picture{ get{ return 0x15CF; } }
|
||||
|
||||
public TerribleHatchlingsQuest( PlayerMobile from ) : base( from )
|
||||
{
|
||||
}
|
||||
|
||||
// Serialization
|
||||
public TerribleHatchlingsQuest()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Accept()
|
||||
{
|
||||
base.Accept();
|
||||
|
||||
AddConversation( new AcceptConversation() );
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue