Reorganizes Project (#41)

This commit is contained in:
Kamron Batman 2019-08-02 18:13:40 -07:00 • committed by GitHub
parent 08bf44af9a
commit 3614a66aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3499 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,90 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class CursedSoul : BaseCreature
{
[Constructible]
public CursedSoul() : base(AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
Body = 3;
BaseSoundID = 471;
SetStr(20, 40);
SetDex(40, 60);
SetInt(15, 25);
SetHits(10, 20);
SetDamage(3, 7);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 15, 20);
SetResistance(ResistanceType.Fire, 8, 12);
SetSkill(SkillName.Wrestling, 35.0, 39.0);
SetSkill(SkillName.Tactics, 5.0, 15.0);
SetSkill(SkillName.MagicResist, 10.0);
Fame = 200;
Karma = -200;
switch (Utility.Random(10))
{
case 0:
PackItem(new LeftArm());
break;
case 1:
PackItem(new RightArm());
break;
case 2:
PackItem(new Torso());
break;
case 3:
PackItem(new Bone());
break;
case 4:
PackItem(new RibCage());
break;
case 5:
PackItem(new RibCage());
break;
case 6:
PackItem(new BonePile());
break;
case 7:
PackItem(new BonePile());
break;
case 8:
PackItem(new BonePile());
break;
case 9:
PackItem(new BonePile());
break;
}
}
public CursedSoul(Serial serial) : base(serial)
{
}
public override string CorpseName => "a cursed soul corpse";
public override string DefaultName => "a cursed soul";
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();
}
}
}

View file

@ -0,0 +1,79 @@
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class DeadlyImp : BaseCreature
{
[Constructible]
public DeadlyImp() : base(AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
Body = 74;
BaseSoundID = 422;
Hue = 0x66A;
SetStr(91, 115);
SetDex(61, 80);
SetInt(86, 105);
SetHits(1000);
SetDamage(50, 80);
SetDamageType(ResistanceType.Fire, 100);
SetResistance(ResistanceType.Physical, 95, 98);
SetResistance(ResistanceType.Fire, 95, 98);
SetResistance(ResistanceType.Cold, 95, 98);
SetResistance(ResistanceType.Poison, 95, 98);
SetResistance(ResistanceType.Energy, 95, 98);
SetSkill(SkillName.Magery, 120.0);
SetSkill(SkillName.Tactics, 120.0);
SetSkill(SkillName.Wrestling, 120.0);
Fame = 2500;
Karma = -2500;
CantWalk = true;
}
public DeadlyImp(Serial serial) : base(serial)
{
}
public override string DefaultName => "a deadly imp";
public override void AggressiveAction(Mobile aggressor, bool criminal)
{
base.AggressiveAction(aggressor, criminal);
if (aggressor is PlayerMobile player)
{
QuestSystem qs = player.Quest;
if (qs is HaochisTrialsQuest)
{
QuestObjective obj = qs.FindObjective<SecondTrialAttackObjective>();
if (obj?.Completed == false)
{
obj.Complete();
qs.AddObjective(new SecondTrialReturnObjective(false));
}
}
}
}
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();
}
}
}

View file

@ -0,0 +1,56 @@
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class DiseasedCat : BaseCreature
{
[Constructible]
public DiseasedCat() : base(AIType.AI_Animal, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
Body = 0xC9;
Hue = Utility.RandomAnimalHue();
BaseSoundID = 0x69;
SetStr(9);
SetDex(35);
SetInt(5);
SetHits(6);
SetMana(0);
SetDamage(1);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 5, 10);
SetSkill(SkillName.MagicResist, 5.0);
SetSkill(SkillName.Tactics, 4.0);
SetSkill(SkillName.Wrestling, 5.0);
VirtualArmor = 8;
}
public DiseasedCat(Serial serial) : base(serial)
{
}
public override string DefaultName => "a diseased cat";
public override bool AlwaysMurderer => true;
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();
}
}
}

View file

@ -0,0 +1,101 @@
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class FierceDragon : BaseCreature
{
[Constructible]
public FierceDragon() : base(AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
Body = 103;
BaseSoundID = 362;
SetStr(6000, 6020);
SetDex(0);
SetInt(850, 870);
SetDamage(50, 80);
SetDamageType(ResistanceType.Fire, 100);
SetResistance(ResistanceType.Physical, 95, 98);
SetResistance(ResistanceType.Fire, 95, 98);
SetResistance(ResistanceType.Cold, 95, 98);
SetResistance(ResistanceType.Poison, 95, 98);
SetResistance(ResistanceType.Energy, 95, 98);
SetSkill(SkillName.Tactics, 120.0);
SetSkill(SkillName.Wrestling, 120.0);
SetSkill(SkillName.Magery, 120.0);
Fame = 15000;
Karma = 15000;
CantWalk = true;
}
public FierceDragon(Serial serial) : base(serial)
{
}
public override string DefaultName => "a fierce dragon";
public override int GetIdleSound()
{
return 0x2C4;
}
public override int GetAttackSound()
{
return 0x2C0;
}
public override int GetDeathSound()
{
return 0x2C1;
}
public override int GetAngerSound()
{
return 0x2C4;
}
public override int GetHurtSound()
{
return 0x2C3;
}
public override void AggressiveAction(Mobile aggressor, bool criminal)
{
base.AggressiveAction(aggressor, criminal);
if (aggressor is PlayerMobile player)
{
QuestSystem qs = player.Quest;
if (qs is HaochisTrialsQuest)
{
QuestObjective obj = qs.FindObjective<SecondTrialAttackObjective>();
if (obj?.Completed == false)
{
obj.Complete();
qs.AddObjective(new SecondTrialReturnObjective(true));
}
}
}
}
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();
}
}
}

View file

@ -0,0 +1,173 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class Haochi : BaseQuester
{
[Constructible]
public Haochi() : base("the Honorable Samurai Legend")
{
}
public Haochi(Serial serial) : base(serial)
{
}
public override string DefaultName => "Daimyo Haochi";
public override int TalkNumber => -1;
public override void InitBody()
{
InitStats(100, 100, 25);
Hue = 0x8403;
Female = false;
Body = 0x190;
}
public override void InitOutfit()
{
HairItemID = 0x204A;
HairHue = 0x901;
AddItem(new SamuraiTabi());
AddItem(new JinBaori());
AddItem(new PlateHaidate());
AddItem(new StandardPlateKabuto());
AddItem(new PlateMempo());
AddItem(new PlateDo());
AddItem(new PlateHiroSode());
}
public override int GetAutoTalkRange(PlayerMobile pm)
{
return 2;
}
public override void OnTalk(PlayerMobile player, bool contextMenu)
{
QuestSystem qs = player.Quest;
if (qs is HaochisTrialsQuest)
{
if (HaochisTrialsQuest.HasLostHaochisKatana(player))
{
qs.AddConversation(new LostSwordConversation());
return;
}
QuestObjective obj = qs.FindObjective<FindHaochiObjective>();
if (obj?.Completed == false)
{
obj.Complete();
return;
}
obj = qs.FindObjective<FirstTrialReturnObjective>();
if (obj?.Completed == false)
{
player.AddToBackpack(new LeatherDo());
obj.Complete();
return;
}
obj = qs.FindObjective<SecondTrialReturnObjective>();
if (obj?.Completed == false)
{
if (((SecondTrialReturnObjective)obj).Dragon)
player.AddToBackpack(new LeatherSuneate());
obj.Complete();
return;
}
obj = qs.FindObjective<ThirdTrialReturnObjective>();
if (obj?.Completed == false)
{
player.AddToBackpack(new LeatherHiroSode());
obj.Complete();
return;
}
obj = qs.FindObjective<FourthTrialReturnObjective>();
if (obj?.Completed == false)
{
if (!((FourthTrialReturnObjective)obj).KilledCat)
{
Container cont = GetNewContainer();
cont.DropItem(new LeatherHiroSode());
cont.DropItem(new JinBaori());
player.AddToBackpack(cont);
}
obj.Complete();
return;
}
obj = qs.FindObjective<FifthTrialReturnObjective>();
if (obj?.Completed == false)
{
HaochisKatana katana = player.Backpack?.FindItemByType<HaochisKatana>();
if (katana == null)
return;
katana.Delete();
obj.Complete();
obj = qs.FindObjective<FifthTrialIntroObjective>();
if (obj != null && ((FifthTrialIntroObjective)obj).StolenTreasure)
qs.AddConversation(new SixthTrialIntroConversation(true));
else
qs.AddConversation(new SixthTrialIntroConversation(false));
}
obj = qs.FindObjective<SixthTrialReturnObjective>();
if (obj?.Completed == false)
{
obj.Complete();
return;
}
obj = qs.FindObjective<SeventhTrialReturnObjective>();
if (obj?.Completed == false)
{
BaseWeapon weapon = new Daisho();
BaseRunicTool.ApplyAttributesTo(weapon, Utility.Random(1, 3), 10, 30);
player.AddToBackpack(weapon);
BaseArmor armor = new LeatherDo();
BaseRunicTool.ApplyAttributesTo(armor, Utility.Random(1, 3), 10, 20);
player.AddToBackpack(armor);
obj.Complete();
}
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,103 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class HaochisGuardsman : BaseQuester
{
[Constructible]
public HaochisGuardsman() : base("the Guardsman of Daimyo Haochi")
{
}
public HaochisGuardsman(Serial serial) : base(serial)
{
}
public override int TalkNumber => -1;
public override void InitBody()
{
InitStats(100, 100, 25);
Hue = Race.Human.RandomSkinHue();
Female = false;
Body = 0x190;
Name = NameList.RandomName("male");
}
public override void InitOutfit()
{
Utility.AssignRandomHair(this);
AddItem(new LeatherDo());
AddItem(new LeatherHiroSode());
AddItem(new SamuraiTabi(Utility.RandomNondyedHue()));
switch (Utility.Random(3))
{
case 0:
AddItem(new StuddedHaidate());
break;
case 1:
AddItem(new PlateSuneate());
break;
default:
AddItem(new LeatherSuneate());
break;
}
switch (Utility.Random(4))
{
case 0:
AddItem(new DecorativePlateKabuto());
break;
case 1:
AddItem(new ChainHatsuburi());
break;
case 2:
AddItem(new LightPlateJingasa());
break;
default:
AddItem(new LeatherJingasa());
break;
}
Item weapon;
switch (Utility.Random(3))
{
case 0:
weapon = new NoDachi();
break;
case 1:
weapon = new Lajatang();
break;
default:
weapon = new Wakizashi();
break;
}
weapon.Movable = false;
AddItem(weapon);
}
public override void OnTalk(PlayerMobile player, bool contextMenu)
{
}
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();
}
}
}

View file

@ -0,0 +1,59 @@
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class InjuredWolf : BaseCreature
{
[Constructible]
public InjuredWolf() : base(AIType.AI_Animal, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
Body = 0xE1;
BaseSoundID = 0xE5;
Hue = Utility.RandomAnimalHue();
SetStr(10, 20);
SetDex(45, 65);
SetInt(10, 15);
SetHits(1);
SetDamage(1, 3);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 15);
SetResistance(ResistanceType.Fire, 5, 10);
SetSkill(SkillName.MagicResist, 10.0);
SetSkill(SkillName.Tactics, 0.0, 5.0);
SetSkill(SkillName.Wrestling, 20.0, 30.0);
}
public InjuredWolf(Serial serial) : base(serial)
{
}
public override string CorpseName => "an injured wolf corpse";
public override string DefaultName => "an injured wolf";
public override int GetIdleSound()
{
return 0xE9;
}
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();
}
}
}

View file

@ -0,0 +1,88 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class Relnia : BaseQuester
{
[Constructible]
public Relnia() : base("the Gypsy")
{
}
public Relnia(Serial serial) : base(serial)
{
}
public override string DefaultName => "Disheveled Relnia";
public override int TalkNumber => -1;
public override void InitBody()
{
InitStats(100, 100, 25);
Hue = 0x83FF;
Female = true;
Body = 0x191;
}
public override void InitOutfit()
{
HairItemID = 0x203C;
HairHue = 0x654;
AddItem(new ThighBoots(0x901));
AddItem(new FancyShirt(0x5F3));
AddItem(new SkullCap(0x6A7));
AddItem(new Skirt(0x544));
}
public override void OnTalk(PlayerMobile player, bool contextMenu)
{
}
public override bool OnDragDrop(Mobile from, Item dropped)
{
if (from is PlayerMobile player)
{
QuestSystem qs = player.Quest;
if (qs is HaochisTrialsQuest)
{
QuestObjective obj = qs.FindObjective<FourthTrialCatsObjective>();
if (obj?.Completed == false)
if (dropped is Gold gold)
{
obj.Complete();
qs.AddObjective(new FourthTrialReturnObjective(false));
SayTo(from, 1063241); // I thank thee. This gold will be a great help to me and mine!
gold.Consume(); // Intentional difference from OSI: don't take all the gold of poor newbies!
return gold.Deleted;
}
}
}
return base.OnDragDrop(from, dropped);
}
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();
}
}
}

View file

@ -0,0 +1,67 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class YoungNinja : BaseCreature
{
[Constructible]
public YoungNinja() : base(AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
InitStats(45, 30, 5);
SetHits(20, 30);
Hue = Race.Human.RandomSkinHue();
Body = 0x190;
Utility.AssignRandomHair(this);
Utility.AssignRandomFacialHair(this);
AddItem(new NinjaTabi());
AddItem(new LeatherNinjaPants());
AddItem(new LeatherNinjaJacket());
AddItem(new LeatherNinjaBelt());
AddItem(new Bandana(Utility.RandomNondyedHue()));
switch (Utility.Random(3))
{
case 0:
AddItem(new Tessen());
break;
case 1:
AddItem(new Kama());
break;
default:
AddItem(new Lajatang());
break;
}
SetSkill(SkillName.Swords, 50.0);
SetSkill(SkillName.Tactics, 50.0);
}
public YoungNinja(Serial serial) : base(serial)
{
}
public override string CorpseName => "a young ninja's corpse";
public override string DefaultName => "a young ninja";
public override bool AlwaysMurderer => true;
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();
}
}
}

View file

@ -0,0 +1,79 @@
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Samurai
{
public class YoungRonin : BaseCreature
{
[Constructible]
public YoungRonin() : base(AIType.AI_Melee, FightMode.Aggressor, 10, 1, 0.2, 0.4)
{
InitStats(45, 30, 5);
SetHits(10, 20);
Hue = Race.Human.RandomSkinHue();
Body = 0x190;
Utility.AssignRandomHair(this);
Utility.AssignRandomFacialHair(this);
AddItem(new LeatherDo());
AddItem(new LeatherHiroSode());
AddItem(new SamuraiTabi());
switch (Utility.Random(3))
{
case 0:
AddItem(new StuddedHaidate());
break;
case 1:
AddItem(new PlateSuneate());
break;
default:
AddItem(new LeatherSuneate());
break;
}
AddItem(new Bandana(Utility.RandomNondyedHue()));
switch (Utility.Random(3))
{
case 0:
AddItem(new NoDachi());
break;
case 1:
AddItem(new Lajatang());
break;
default:
AddItem(new Wakizashi());
break;
}
SetSkill(SkillName.Swords, 50.0);
SetSkill(SkillName.Tactics, 50.0);
}
public YoungRonin(Serial serial) : base(serial)
{
}
public override string CorpseName => "a young ronin's corpse";
public override string DefaultName => "a young ronin";
public override bool AlwaysMurderer => true;
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();
}
}
}