### Summary - Fixes the name `Vegies` to `Veggies` - Adds feeding leather to goats - Adds metal for Lava Lizards - Fixes Bone Helm being classified as plate instead of bone. - Fixes wooden shields not classified as wood. ### Note On OSI, the preferred foods on the animal lore gump doesn't contain all possible favorite food categories. Furthermore, the one listed is not necessarily always the "first" in the list of possible categories. We aren't going to try and fix that since it isn't important.
125 lines
4.1 KiB
C#
125 lines
4.1 KiB
C#
using ModernUO.Serialization;
|
|
using System;
|
|
using Server.Items;
|
|
|
|
namespace Server.Mobiles
|
|
{
|
|
[SerializationGenerator(0, false)]
|
|
public partial class Unicorn : BaseMount
|
|
{
|
|
public override string DefaultName => "a unicorn";
|
|
|
|
[Constructible]
|
|
public Unicorn() : base(0x7A, 0x3EB4, AIType.AI_Mage, FightMode.Evil)
|
|
{
|
|
BaseSoundID = 0x4BC;
|
|
|
|
SetStr(296, 325);
|
|
SetDex(96, 115);
|
|
SetInt(186, 225);
|
|
|
|
SetHits(191, 210);
|
|
|
|
SetDamage(16, 22);
|
|
|
|
SetDamageType(ResistanceType.Physical, 75);
|
|
SetDamageType(ResistanceType.Energy, 25);
|
|
|
|
SetResistance(ResistanceType.Physical, 55, 65);
|
|
SetResistance(ResistanceType.Fire, 25, 40);
|
|
SetResistance(ResistanceType.Cold, 25, 40);
|
|
SetResistance(ResistanceType.Poison, 55, 65);
|
|
SetResistance(ResistanceType.Energy, 25, 40);
|
|
|
|
SetSkill(SkillName.EvalInt, 80.1, 90.0);
|
|
SetSkill(SkillName.Magery, 60.2, 80.0);
|
|
SetSkill(SkillName.Meditation, 50.1, 60.0);
|
|
SetSkill(SkillName.MagicResist, 75.3, 90.0);
|
|
SetSkill(SkillName.Tactics, 20.1, 22.5);
|
|
SetSkill(SkillName.Wrestling, 80.5, 92.5);
|
|
|
|
Fame = 9000;
|
|
Karma = 9000;
|
|
|
|
Tamable = true;
|
|
ControlSlots = 2;
|
|
MinTameSkill = 95.1;
|
|
}
|
|
|
|
public override int StepsMax => 4480;
|
|
public override string CorpseName => "a unicorn corpse";
|
|
public override bool AllowMaleRider => false;
|
|
public override bool AllowMaleTamer => false;
|
|
|
|
public override bool InitialInnocent => true;
|
|
|
|
public override TimeSpan MountAbilityDelay => TimeSpan.FromHours(1.0);
|
|
|
|
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
|
|
|
public override Poison PoisonImmune => Poison.Lethal;
|
|
public override int Meat => 3;
|
|
public override int Hides => 10;
|
|
public override HideType HideType => HideType.Horned;
|
|
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
|
|
|
public override void OnDisallowedRider(Mobile m)
|
|
{
|
|
m.SendLocalizedMessage(1042318); // The unicorn refuses to allow you to ride it.
|
|
}
|
|
|
|
public override bool DoMountAbility(int damage, Mobile attacker)
|
|
{
|
|
if (Rider == null || attacker == null) // sanity
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (Rider.Poisoned && Rider.Hits - damage < 40)
|
|
{
|
|
var p = Rider.Poison;
|
|
|
|
if (p != null)
|
|
{
|
|
var chanceToCure = 10000 + (int)(Skills.Magery.Value * 75) -
|
|
(p.Level + 1) * (Core.AOS ? p.Level < 4 ? 3300 : 3100 : 1750);
|
|
chanceToCure /= 100;
|
|
|
|
if (chanceToCure > Utility.Random(100))
|
|
{
|
|
// TODO: Confirm if mount is the one flagged for curing it or the rider is
|
|
if (Rider.CurePoison(this))
|
|
{
|
|
// Your mount senses you are in danger and aids you with magic.
|
|
Rider.LocalOverheadMessage(MessageType.Regular,0x3B2,1080039);
|
|
Rider.FixedParticles(0x373A, 10, 15, 5012, EffectLayer.Waist);
|
|
Rider.PlaySound(0x1E0); // Cure spell effect.
|
|
Rider.PlaySound(0xA9); // Unicorn's whinny.
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public override void GenerateLoot()
|
|
{
|
|
AddLoot(LootPack.Rich);
|
|
AddLoot(LootPack.LowScrolls);
|
|
AddLoot(LootPack.Potions);
|
|
}
|
|
|
|
public override void OnDeath(Container c)
|
|
{
|
|
base.OnDeath(c);
|
|
|
|
if (Utility.RandomDouble() < 0.35)
|
|
{
|
|
c.DropItem(new UnicornRibs());
|
|
}
|
|
}
|
|
}
|
|
}
|