Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,208 @@
using Server.Items;
using System;
namespace Server.Mobiles
{
[CorpseName("a paralithode corpse")]
public class Paralithode : BaseCreature
{
private HideTimer m_Timer;
[Constructable]
public Paralithode()
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "Paralithode";
Body = 729;
Hue = 1922;
SetStr(642, 729);
SetDex(87, 103);
SetInt(25, 30);
SetHits(1800, 2000);
SetMana(315, 343);
SetDamage(20, 24);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 60, 70);
SetResistance(ResistanceType.Poison, 50, 60);
SetResistance(ResistanceType.Energy, 50, 60);
SetSkill(SkillName.MagicResist, 68.7, 75.0);
SetSkill(SkillName.Anatomy, 98.0, 100.6);
SetSkill(SkillName.Tactics, 95.8, 100.9);
SetSkill(SkillName.Wrestling, 100.2, 109.0);
SetSkill(SkillName.Parry, 100.0, 110.0);
SetSkill(SkillName.Ninjitsu, 100.2, 109.0);
SetSkill(SkillName.DetectHidden, 50.0);
Fame = 2500;
Karma = -2500;
Tamable = true;
ControlSlots = 4;
MinTameSkill = 47.1;
PackItem(new FertileDirt(2));
m_Timer = new HideTimer(this);
m_Timer.Start();
SetWeaponAbility(WeaponAbility.DualWield);
SetWeaponAbility(WeaponAbility.ForceOfNature);
}
public Paralithode(Serial serial)
: base(serial)
{
}
public override void OnAfterDelete()
{
if (m_Timer != null)
m_Timer.Stop();
m_Timer = null;
base.OnAfterDelete();
}
public override void OnAfterTame(Mobile tamer)
{
if (m_Timer != null)
m_Timer.Stop();
CantWalk = false;
Hidden = false;
base.OnAfterTame(tamer);
}
private class HideTimer : Timer
{
private readonly Paralithode m_Creature;
public HideTimer(Paralithode owner)
: base(TimeSpan.FromSeconds(1.0), TimeSpan.FromSeconds(1.0))
{
m_Creature = owner;
Priority = TimerPriority.TwoFiftyMS;
}
protected override void OnTick()
{
if (!m_Creature.Controlled)
{
if (m_Creature.Warmode == false && m_Creature.Hidden == false)
m_Creature.PerformHide();
else if (m_Creature.Warmode == true)
{
m_Creature.CantWalk = false;
return;
}
IPooledEnumerable eable = m_Creature.GetMobilesInRange(5);
foreach (Mobile m in eable)
{
if (m == m_Creature || (m is Paralithode) || !m_Creature.CanBeHarmful(m))
continue;
m_Creature.CantWalk = false;
}
eable.Free();
}
else
{
Stop();
m_Creature.CantWalk = false;
m_Creature.Hidden = false;
}
}
}
public void PerformHide()
{
if (Deleted)
return;
Hidden = true;
CantWalk = true;
}
public override bool IsScaredOfScaryThings { get { return false; } }
public override bool IsBondable { get { return false; } }
public override FoodType FavoriteFood { get { return FoodType.FruitsAndVegies; } }
public override bool BleedImmune { get { return true; } }
public override bool DeleteOnRelease { get { return true; } }
public override bool BardImmune { get { return !Core.AOS || Controlled; } }
public override Poison PoisonImmune { get { return Poison.Lethal; } }
public override bool CanAngerOnTame { get { return true; } }
public override bool StatLossAfterTame { get { return true; } }
public override void GenerateLoot()
{
AddLoot(LootPack.Gems, 2);
}
public override int GetAngerSound()
{
return 541;
}
public override int GetIdleSound()
{
if (!Controlled)
return 542;
return base.GetIdleSound();
}
public override int GetDeathSound()
{
if (!Controlled)
return 545;
return base.GetDeathSound();
}
public override int GetAttackSound()
{
return 562;
}
public override int GetHurtSound()
{
if (Controlled)
return 320;
return base.GetHurtSound();
}
public override int Meat { get { return 9; } }
public override int Hides { get { return 20; } }
public override HideType HideType { get { return HideType.Horned; } }
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (!Controlled)
{
m_Timer = new HideTimer(this);
m_Timer.Start();
}
}
}
}