Client v7 extensions

From Iris2

Jump to: navigation, search

thanks to cougar for those infos

new anim packet animation 0xe2

using System;
namespace Server
{
	#region AnimationType
	public enum AnimationType//table from debugged client.exe ;)
	{
		None		= -1,
		Attack		= 0,
		Parry		= 1,
		Block		= 2,
		Die			= 3,
		Impact		= 4,
		Fidget		= 5,
		Eat			= 6,
		Emote		= 7,
		Alert		= 8,
		TakeOff		= 9,
		Land		= 10,
		Spell		= 11,
		StartCombat = 12,
		EndCombat	= 13,
		Pillage		= 14,
		Spawn		= 15// 3D Only
	}
	#endregion
	
	#region SubTypes
	public enum AttackSubType
	{
		AttackBareHand		= 0,
		AttackBow			= 1,
		AttackCrossbow		= 2,
		AttackSmashOverHead	= 3,
		AttackSmash			= 4,
		AttackStab			= 5,
		AttackCrush			= 6,
		AttackSwing			= 7,
		AttackBackStab		= 8,
		
	}
	
	public enum EmoteSubType
	{
		Bow 		= 0,
		Salute		= 1,
		Walk		= 2,
	}
	
	public enum FidgetSubType
	{
		Idle 		= 0,
	}
	
	public enum EatSubType
	{
		Eat 		= 0,
	}
	
	public enum ImpactSubType
	{
		GetHit 		= 0,
	}
	
	public enum SpellSubType
	{
		Cast 		= 0,
		WaveHands 	= 1,	
	}
	
	public enum DieSubType
	{
		Die			= 0,
	}
	
	public enum BlockSubType
	{
		Block		= 0,
	}
	
	#endregion
	
	public class AnimationInfo
	{
		//private static readonly log4net.ILog log = log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType );

		private AnimationType m_Action;
		private int m_SubAction;
		private int m_ActionType;

		public AnimationInfo( AnimationType action, int subAction, int actionType )
		{
			m_Action = action;
			m_SubAction = subAction;
			m_ActionType = actionType;
		}

		public AnimationType Action
		{
			get { return m_Action; }
			set { m_Action = value; }
		}

		public int SubAction
		{
			get { return m_SubAction; }
			set { m_SubAction = value; }
		}

		public int ActionType
		{
			get { return m_ActionType; }
			set { m_ActionType = value; }
		}

		public static AnimationInfo GetNewAction( Body body, int oldAction )
		{
			if( body.IsHuman || body.IsEquipment )
			{
				switch( oldAction )
				{
					case 05: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 0 );//Idle	look around
					case 06: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 1 );//Idle fidle

					case 31: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 0 );//Attack bare hand

					case 18:
					case 27: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBow, 0 );//Attack bow

					case 19:
					case 28: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackCrossbow, 0 );//Attack crossbow

					case 26:
					case 11: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackSmashOverHead, 0 );//Attack 

					case 29: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 2 );//Horse Attack 2H

					case 09: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackSmash, 0 );//Attack 
					case 10: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackStab, 0 );//Attack
					case 12: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackCrush, 0 );//Attack 
					case 13: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackSwing, 0 );//Attack 
					case 14: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBackStab, 0 );//Attack

					case 16: return new AnimationInfo( AnimationType.Spell, (int)SpellSubType.Cast, 0 );//Cast
					case 17: return new AnimationInfo( AnimationType.Spell, (int)SpellSubType.WaveHands, 0 );//Cast hands up 

					case 20: return new AnimationInfo( AnimationType.Impact, (int)ImpactSubType.GetHit, 0 );//Get Hit
					case 21: return new AnimationInfo( AnimationType.Die, (int)DieSubType.Die, 1 );//Die (backwards)
					case 22: return new AnimationInfo( AnimationType.Die, (int)DieSubType.Die, 0 );//Die (forwards)

					case 30: return new AnimationInfo( AnimationType.Block, (int)BlockSubType.Block, 0 );// OR (1, 0, 0) Block

					case 32: return new AnimationInfo( AnimationType.Emote, (int)EmoteSubType.Bow, 0 );//Bow
					case 33: return new AnimationInfo( AnimationType.Emote, (int)EmoteSubType.Salute, 0 );//Salute
					case 34: return new AnimationInfo( AnimationType.Eat, (int)EatSubType.Eat, 0 );//Eat/Drink
					case 38: return new AnimationInfo( AnimationType.Emote, (int)EmoteSubType.Walk, 0 );//walk 2D only

					default:
						Console.WriteLine( "Unhandled Human Animation {0}", oldAction ); break;

				}
			}
			else if( body.IsMonster )
			{
				switch( oldAction )
				{
					case 02: return new AnimationInfo( AnimationType.Die, (int)DieSubType.Die, 1 );//Die 1
					case 03: return new AnimationInfo( AnimationType.Die, (int)DieSubType.Die, 0 );//Die 2

					case 04: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 0 );//Attack 1
					case 05: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 1 );//Attack 2
					case 06: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 2 );//Attack 3
					case 11: return new AnimationInfo( AnimationType.Pillage, (int)EatSubType.Eat, 0 );//Eat
					case 12: return new AnimationInfo( AnimationType.Spell, (int)SpellSubType.Cast, 0 );//Special Attack / Fire Breath

					case 15: return new AnimationInfo( AnimationType.Block, (int)BlockSubType.Block, 1 );//Block 1
					case 16: return new AnimationInfo( AnimationType.Block, (int)BlockSubType.Block, 0 );//Block 2

					case 17: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 0 );//Idle 1
					case 18: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 1 );//Idle 2

					case 20: return new AnimationInfo( AnimationType.TakeOff, 0, 0 );//Fly 

					case 21:
					case 10: return new AnimationInfo( AnimationType.Impact, (int)ImpactSubType.GetHit, 0 );//Get Hit
					default:
						Console.WriteLine( "Unhandled Monster Animation {0}", oldAction ); break;
				}
			}
			else if( body.IsAnimal || body.IsSea )
			{
				switch( oldAction )
				{
					case 04: return new AnimationInfo( AnimationType.Alert, (int)AttackSubType.AttackBareHand, 0 );//Attack 3
					case 03: return new AnimationInfo( AnimationType.Alert, (int)EatSubType.Eat, 0 );//Eat
					case 05: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 0 );//Attack 3
					case 06: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 1 );//Attack 3
					case 12: return new AnimationInfo( AnimationType.Attack, (int)AttackSubType.AttackBareHand, 2 );//Attack 3
					case 07: return new AnimationInfo( AnimationType.Impact, (int)ImpactSubType.GetHit, 0 );//Get Hit
					case 08: return new AnimationInfo( AnimationType.Die, (int)DieSubType.Die, 1 );//Die
					case 09: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 0 );//Idle 1
					case 10: return new AnimationInfo( AnimationType.Fidget, (int)FidgetSubType.Idle, 1 );//Idle 2
					case 15: return new AnimationInfo( AnimationType.Pillage, 0, 0 );//
					default:
						Console.WriteLine( "Unhandled Animal Animation {0}", oldAction ); break;
				}
			}

			return new AnimationInfo( AnimationType.None, 0, 0 );
		}

	}

}

spellids mysticism+bardic

				Register(677, typeof(Mysticism.NetherBoltSpell));
				Register(678, typeof(Mysticism.HealingStoneSpell));
				Register(679, typeof(Mysticism.PurgeMagicSpell));
				Register(680, typeof(Mysticism.EnchantSpell));
                Register(681, typeof(Mysticism.SleepSpell));
				Register(682, typeof(Mysticism.EagleStrikeSpell));
				Register(683, typeof(Mysticism.AnimatedWeaponSpell));
				Register(684, typeof(Mysticism.StoneFormSpell));
				Register(685, typeof(Mysticism.SpellTriggerSpell));
				Register(686, typeof(Mysticism.MassSleepSpell));
				Register(687, typeof(Mysticism.CleansingWindsSpell));
				Register(688, typeof(Mysticism.BombardSpell));
				Register(689, typeof(Mysticism.SpellPlagueSpell));
				Register(690, typeof(Mysticism.HailStormSpell));
				Register(691, typeof(Mysticism.NetherCycloneSpell));
				Register(692, typeof(Mysticism.RisingColossusSpell));
				Register(700, typeof(Bardic.Inspire));
				Register(701, typeof(Bardic.Invigorate));
				Register(702, typeof(Bardic.Resilience));
				Register(703, typeof(Bardic.Perseverance));
                Register(704, typeof(Bardic.Tribulation));
				Register(705, typeof(Bardic.Despair));
Personal tools