ModernUO/Projects/UOContent/Engines/ML Quests/Definitions/DungeonBountyBoard.cs

102 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using ModernUO.Serialization;
using Server.Engines.MLQuests;
using Server.Engines.MLQuests.Objectives;
using Server.Engines.MLQuests.Rewards;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.MLQuests.Definitions;
// ==========================================
// 1. BOUNTY BOARD ITEM
// ==========================================
[SerializationGenerator(0, false)]
public partial class DungeonBountyBoard : Item, IQuestGiver
{
// Implementation for IQuestGiver
public List<MLQuest> MLQuests => MLQuestSystem.FindQuestList(GetType());
[Constructible]
public DungeonBountyBoard() : base(0x1E5E) // Bulletin board Graphic ID
{
Name = "Dungeon Bounty Board";
Movable = false;
}
public override void OnDoubleClick(Mobile from)
{
if (from is PlayerMobile pm)
{
if (from.InRange(GetWorldLocation(), 3))
{
MLQuestSystem.OnDoubleClick(this, pm);
}
else
{
from.SendLocalizedMessage(500446); // That is too far away.
}
}
}
}
// ==========================================
// 2. DESTARD BOUNTY: DRAKES
// ==========================================
public class DestardDrakeBounty : MLQuest
{
public DestardDrakeBounty()
{
Activated = true;
Title = "Bounty: Destard Drakes";
Description = "Notice to all adventurers: Drake activity in the caverns of Destard has surged! Slay 10 Drakes to thin their numbers and keep the surrounding passes safe.";
RefusalMessage = "The bounty remains posted if you change your mind.";
InProgressMessage = "You haven't slain enough Drakes yet. Return once you've dispatched 10 of them in Destard.";
CompletionMessage = "Excellent work! The realm thanks you for your service. Here is your gold reward.";
CompletionNotice = CompletionNoticeShort;
// Objective: Slay 10 Drakes
Objectives.Add(new KillObjective(10, new[] { typeof(Drake) }, "Drakes"));
// Reward: 1,200 Gold
Rewards.Add(new ItemReward("1,200 Gold", typeof(Gold), 1200));
}
public override void Generate()
{
base.Generate();
MLQuestSystem.Register(this, typeof(DungeonBountyBoard));
}
}
// ==========================================
// 3. DECEIT BOUNTY: SKELETAL KNIGHTS
// ==========================================
public class DeceitSkeletalKnightBounty : MLQuest
{
public DeceitSkeletalKnightBounty()
{
Activated = true;
Title = "Bounty: Deceit Skeletal Knights";
Description = "Undead forces are amassing within the halls of Deceit. Slay 10 Skeletal Knights and report back to claim your reward.";
RefusalMessage = "The bounty remains posted on the board.";
InProgressMessage = "The skeletal knights still roam Deceit. Return when you have destroyed 10 of them.";
CompletionMessage = "The undead threat has been pushed back! Take your gold reward.";
CompletionNotice = CompletionNoticeShort;
// Objective: Slay 10 Skeletal Knights
Objectives.Add(new KillObjective(10, new[] { typeof(SkeletalKnight) }, "Skeletal Knights"));
// Reward: 1,500 Gold
Rewards.Add(new ItemReward("1,500 Gold", typeof(Gold), 1500));
}
public override void Generate()
{
base.Generate();
MLQuestSystem.Register(this, typeof(DungeonBountyBoard));
}
}