below is the dread warhorse, i did the best i could to get it to port over but have three problems-

A: trick still works but the poison section had to be // out due to errors

B: the cloud is still there as is the necomage evil laugh But its a skull cloud
(i did a edit of the cloud for a friend don't have the original now)

C: had to change the name to CustomDreadWarHorse due to the main files had one (weaker and no cloud)


using System;
using Server;
using Server.Items;
using Server.Mobiles;
using System.Collections;
using System.Collections.Generic;
using Server.Network;
using Server.Spells;
using Server.Gumps;
using Server.ContextMenus;
using System.Collections.Generic;
using Server.Targeting;
using Server.Misc;

namespace Server.Mobiles
{
[CorpseName( "a dread warhorse corpse" )]
public class CustomDreadWarHorse : BaseMount
{

[Constructable]
public CustomDreadWarHorse() : this( "a dread warhorse" )
{
}

[Constructable]
public CustomDreadWarHorse( string name ) : base( name, 0x74, 0x3EA7, AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{



BodyValue = 177;
BaseSoundID = 0xA8;
Hue = 1175;

SetStr( 750, 900 );
SetDex( 350, 400 );
SetInt( 500, 650 );

SetHits( 850, 1000 );

SetDamage( 40, 45 );
// (new servuo edits start)
SetSpecialAbility(SpecialAbility.DragonBreath);
// (new servuo edits end)
SetDamageType( ResistanceType.Physical, 40 );
SetDamageType( ResistanceType.Poison, 20 );
SetDamageType( ResistanceType.Energy, 40 );

SetResistance( ResistanceType.Physical, 65, 75 );
SetResistance( ResistanceType.Fire, 20, 40 );
SetResistance( ResistanceType.Cold, 20, 40 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 40, 50 );

SetSkill( SkillName.EvalInt, 115.2, 119.3 );
SetSkill( SkillName.Magery, 119.5, 129.5 );
SetSkill( SkillName.MagicResist, 91.4, 119.4 );
SetSkill( SkillName.Tactics, 108.1, 115.0 );
SetSkill( SkillName.Wrestling, 97.3, 108.2 );
SetSkill(SkillName.Anatomy, 110.1, 130.9);
SetSkill(SkillName.Meditation, 118.5, 132.6);



Fame = 14000;
Karma = -14000;

VirtualArmor = 60;

Tamable = true;
ControlSlots = 3;
MinTameSkill = 105.0;

// m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds( Utility.RandomMinMax( 25, 30 ) );
}

public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
AddLoot( LootPack.Potions );
}

public override int GetAngerSound()
{
if ( !Controlled )
return 0x16A;

return base.GetAngerSound();
}


public override Poison PoisonImmune
{
get
{
return Poison.Deadly;
}
}

// #region [Poison Attack]
// private DateTime m_NextAbilityTime;
// public override void OnActionCombat()
// {
// Mobile combatant = Combatant;
// if (DateTime.Now < m_NextAbilityTime || combatant == null || combatant.Deleted || combatant.Map != Map
// || !InRange(combatant, 3) || !CanBeHarmful(combatant) || !InLOS(combatant))
// return;
// m_NextAbilityTime = DateTime.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(25, 30));
// if (Utility.RandomBool())
// {
// this.FixedParticles(0x376A, 9, 32, 0x2539, EffectLayer.LeftHand);
// this.PlaySound(0x1DE);
// foreach (Mobile m in this.GetMobilesInRange(3))
// {
// if (m != this && m != this.ControlMaster && IsEnemy(m))
// {
// m.ApplyPoison(this, Poison.Deadly);
// }
// }
// }
// }
// #endregion

//public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override int Meat{ get{ return 5; } }
public override int Hides{ get{ return 10; } }
public override HideType HideType{ get{ return HideType.Barbed; } }
public override FoodType FavoriteFood{ get{ return FoodType.Meat; } }
public override bool CanAngerOnTame { get { return true; } }

public static void Initialize()
{

EventSink.Speech += new SpeechEventHandler(EventSink_Speech);

}

#region [ BlackCloud Ability ]
private static void BlackCloud(Mobile from)
{
Effects.SendLocationEffect(new Point3D(from.X - 3, from.Y - 2, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 3, from.Y - 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 3, from.Y, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 2, from.Y - 3, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 2, from.Y - 2, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 2, from.Y + 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 1, from.Y - 3, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 1, from.Y - 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 1, from.Y, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X - 1, from.Y + 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X, from.Y - 3, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X, from.Y - 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X, from.Y + 2, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X + 1, from.Y - 2, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X + 1, from.Y - 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X + 1, from.Y + 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X + 1, from.Y + 1, from.Z + 1), from.Map, 0x3728, 30);
Effects.SendLocationEffect(new Point3D(from.X + 2, from.Y, from.Z + 1), from.Map, 0x3728, 30);

from.PlaySound(412);

}
#endregion

#region [OnSpeech]
private static void EventSink_Speech(SpeechEventArgs e)
{

if (e.Handled)
{

return;

}

if (e.Mobile is PlayerMobile && e.Mobile.Mounted && e.Mobile.Mount is CustomDreadWarHorse)
{

if (Insensitive.Equals(e.Speech, "Trick") )
{

BlackCloud(e.Mobile);
e.Handled = true;
}
}
}
#endregion

public CustomDreadWarHorse( Serial serial ) : base( serial )
{
}

public override void GetProperties( ObjectPropertyList list )
{
base.GetProperties( list );
}

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();
}
}
}
Post automatically merged:

 

Attachments

  • _DreadWarHorse.cs
    7 KB · Views: 2
Back