ModernUO/Projects/Scripts/Engines/Quests/Study of the Solen Hive/Mobiles/Naturalist.cs
2019-08-02 18:16:11 -07:00

191 lines
No EOL
4.7 KiB
C#

using Server.Engines.Plants;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Naturalist
{
public class Naturalist : BaseQuester
{
[Constructible]
public Naturalist() : base("the Naturalist")
{
}
public Naturalist(Serial serial) : base(serial)
{
}
public override void InitBody()
{
InitStats(100, 100, 25);
Hue = Race.Human.RandomSkinHue();
Female = false;
Body = 0x190;
Name = NameList.RandomName("male");
}
public override void InitOutfit()
{
AddItem(new Tunic(0x598));
AddItem(new LongPants(0x59B));
AddItem(new Boots());
Utility.AssignRandomHair(this);
Utility.AssignRandomFacialHair(this, HairHue);
}
public override void OnTalk(PlayerMobile player, bool contextMenu)
{
if (player.Quest is StudyOfSolenQuest qs && qs.Naturalist == this)
{
StudyNestsObjective study = qs.FindObjective<StudyNestsObjective>();
if (study == null)
return;
if (!study.Completed)
{
PlaySound(0x41F);
qs.AddConversation(new NaturalistDuringStudyConversation());
return;
}
QuestObjective obj = qs.FindObjective<ReturnToNaturalistObjective>();
if (obj?.Completed == false)
{
Seed reward;
PlantType type;
switch (Utility.Random(17))
{
case 0:
type = PlantType.CampionFlowers;
break;
case 1:
type = PlantType.Poppies;
break;
case 2:
type = PlantType.Snowdrops;
break;
case 3:
type = PlantType.Bulrushes;
break;
case 4:
type = PlantType.Lilies;
break;
case 5:
type = PlantType.PampasGrass;
break;
case 6:
type = PlantType.Rushes;
break;
case 7:
type = PlantType.ElephantEarPlant;
break;
case 8:
type = PlantType.Fern;
break;
case 9:
type = PlantType.PonytailPalm;
break;
case 10:
type = PlantType.SmallPalm;
break;
case 11:
type = PlantType.CenturyPlant;
break;
case 12:
type = PlantType.WaterPlant;
break;
case 13:
type = PlantType.SnakePlant;
break;
case 14:
type = PlantType.PricklyPearCactus;
break;
case 15:
type = PlantType.BarrelCactus;
break;
default:
type = PlantType.TribarrelCactus;
break;
}
if (study.StudiedSpecialNest)
{
reward = new Seed(type, PlantHue.FireRed);
}
else
{
PlantHue hue;
switch (Utility.Random(3))
{
case 0:
hue = PlantHue.Pink;
break;
case 1:
hue = PlantHue.Magenta;
break;
default:
hue = PlantHue.Aqua;
break;
}
reward = new Seed(type, hue);
}
if (player.PlaceInBackpack(reward))
{
obj.Complete();
PlaySound(0x449);
PlaySound(0x41B);
if (study.StudiedSpecialNest)
qs.AddConversation(new SpecialEndConversation());
else
qs.AddConversation(new EndConversation());
}
else
{
reward.Delete();
qs.AddConversation(new FullBackpackConversation());
}
}
}
else
{
QuestSystem newQuest = new StudyOfSolenQuest(player, this);
if (player.Quest == null && QuestSystem.CanOfferQuest(player, typeof(StudyOfSolenQuest)))
{
PlaySound(0x42F);
newQuest.SendOffer();
}
else
{
PlaySound(0x448);
newQuest.AddConversation(new DontOfferConversation());
}
}
}
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();
}
}
}