public static bool OnCast(Mobile caster, Spell spell) { ITransformationSpell transformSpell = spell as ITransformationSpell; if (transformSpell == null) { return(false); } if (Factions.Sigil.ExistsOn(caster)) { caster.SendLocalizedMessage(1061632); // You can't do that while carrying the sigil. } else if (!caster.CanBeginAction(typeof(PolymorphSpell))) { caster.SendLocalizedMessage(1061628); // You can't do that while polymorphed. } else if (DisguiseTimers.IsDisguised(caster)) { caster.SendLocalizedMessage(1061631); // You can't do that while disguised. return(false); } else if (AnimalForm.UnderTransformation(caster)) { caster.SendLocalizedMessage(1061091); // You cannot cast that spell in this form. } else if (!caster.CanBeginAction(typeof(IncognitoSpell)) || (caster.IsBodyMod && GetContext(caster) == null)) { spell.DoFizzle(); } else if (spell.CheckSequence()) { TransformContext context = GetContext(caster); Type ourType = spell.GetType(); bool wasTransformed = (context != null); bool ourTransform = (wasTransformed && context.Type == ourType); if (wasTransformed) { RemoveContext(caster, context, ourTransform); if (ourTransform) { caster.PlaySound(0xFA); caster.FixedParticles(0x3728, 1, 13, 5042, EffectLayer.Waist); } } if (!ourTransform) { List <ResistanceMod> mods = new List <ResistanceMod>(); if (transformSpell.PhysResistOffset != 0) { mods.Add(new ResistanceMod(ResistanceType.Physical, transformSpell.PhysResistOffset)); } if (transformSpell.FireResistOffset != 0) { mods.Add(new ResistanceMod(ResistanceType.Fire, transformSpell.FireResistOffset)); } if (transformSpell.ColdResistOffset != 0) { mods.Add(new ResistanceMod(ResistanceType.Cold, transformSpell.ColdResistOffset)); } if (transformSpell.PoisResistOffset != 0) { mods.Add(new ResistanceMod(ResistanceType.Poison, transformSpell.PoisResistOffset)); } if (transformSpell.NrgyResistOffset != 0) { mods.Add(new ResistanceMod(ResistanceType.Energy, transformSpell.NrgyResistOffset)); } if (!((Body)transformSpell.Body).IsHuman) { Mobiles.IMount mt = caster.Mount; if (mt != null) { mt.Rider = null; } } caster.BodyMod = transformSpell.Body; caster.HueMod = transformSpell.Hue; for (int i = 0; i < mods.Count; ++i) { caster.AddResistanceMod(mods[i]); } transformSpell.DoEffect(caster); Timer timer = new TransformTimer(caster, transformSpell); timer.Start(); AddContext(caster, new TransformContext(timer, mods, ourType, transformSpell)); return(true); } } return(false); }
public static bool OnCast( Mobile caster, Spell spell ) { ITransformationSpell transformSpell = spell as ITransformationSpell; if( transformSpell == null ) return false; if( Factions.Sigil.ExistsOn( caster ) ) { caster.SendLocalizedMessage( 1061632 ); // You can't do that while carrying the sigil. } else if( !caster.CanBeginAction( typeof( PolymorphSpell ) ) ) { caster.SendLocalizedMessage( 1061628 ); // You can't do that while polymorphed. } else if( AnimalForm.UnderTransformation( caster ) ) { caster.SendLocalizedMessage( 1061091 ); // You cannot cast that spell in this form. } else if( !caster.CanBeginAction( typeof( IncognitoSpell ) ) || (caster.IsBodyMod && GetContext( caster ) == null) ) { spell.DoFizzle(); } else if( spell.CheckSequence() ) { TransformContext context = GetContext( caster ); Type ourType = spell.GetType(); bool wasTransformed = (context != null); bool ourTransform = (wasTransformed && context.Type == ourType); if( wasTransformed ) { RemoveContext( caster, context, ourTransform ); if( ourTransform ) { caster.PlaySound( 0xFA ); caster.FixedParticles( 0x3728, 1, 13, 5042, EffectLayer.Waist ); } } if( !ourTransform ) { List<ResistanceMod> mods = new List<ResistanceMod>(); if( transformSpell.PhysResistOffset != 0 ) mods.Add( new ResistanceMod( ResistanceType.Physical, transformSpell.PhysResistOffset ) ); if( transformSpell.FireResistOffset != 0 ) mods.Add( new ResistanceMod( ResistanceType.Fire, transformSpell.FireResistOffset ) ); if( transformSpell.ColdResistOffset != 0 ) mods.Add( new ResistanceMod( ResistanceType.Cold, transformSpell.ColdResistOffset ) ); if( transformSpell.PoisResistOffset != 0 ) mods.Add( new ResistanceMod( ResistanceType.Poison, transformSpell.PoisResistOffset ) ); if( transformSpell.NrgyResistOffset != 0 ) mods.Add( new ResistanceMod( ResistanceType.Energy, transformSpell.NrgyResistOffset ) ); if( !((Body)transformSpell.Body).IsHuman ) { Mobiles.IMount mt = caster.Mount; if( mt != null ) mt.Rider = null; } caster.BodyMod = transformSpell.Body; caster.HueMod = transformSpell.Hue; for( int i = 0; i < mods.Count; ++i ) caster.AddResistanceMod( mods[i] ); transformSpell.DoEffect( caster ); Timer timer = new TransformTimer( caster, transformSpell ); timer.Start(); AddContext( caster, new TransformContext( timer, mods, ourType, transformSpell ) ); return true; } } return false; }
public static bool OnCast(Mobile caster, Spell spell) { ITransformationSpell transformSpell = spell as ITransformationSpell; if (transformSpell == null) { return(false); } if (!caster.CanBeginAction(typeof(PolymorphSpell))) { caster.SendLocalizedMessage(1061628); // You can't do that while polymorphed. } else if (DisguiseTimers.IsDisguised(caster)) { caster.SendLocalizedMessage(1061631); // You can't do that while disguised. return(false); } else if (!caster.CanBeginAction(typeof(IncognitoSpell)) || (caster.IsBodyMod && GetContext(caster) == null)) { spell.DoFizzle(); } else if (spell.CheckSequence()) { TransformContext context = GetContext(caster); Type ourType = spell.GetType(); bool wasTransformed = (context != null); bool ourTransform = (wasTransformed && context.Type == ourType); if (wasTransformed) { RemoveContext(caster, context, ourTransform); if (ourTransform) { caster.PlaySound(0xFA); caster.FixedParticles(0x3728, 1, 13, 5042, EffectLayer.Waist); } } if (!ourTransform) { if (!((Body)transformSpell.Body).IsHuman) { Mobiles.IMount mt = caster.Mount; if (mt != null) { mt.Rider = null; } } caster.BodyMod = transformSpell.Body; caster.HueMod = transformSpell.Hue; transformSpell.DoEffect(caster); Timer timer = new TransformTimer(caster, transformSpell); timer.Start(); AddContext(caster, new TransformContext(timer, ourType, transformSpell)); return(true); } } return(false); }
public static bool OnCast( Mobile caster, Spell spell ) { ITransformationSpell transformSpell = spell as ITransformationSpell; if( transformSpell == null ) return false; if( !caster.CanBeginAction( typeof( PolymorphSpell ) ) ) { caster.SendLocalizedMessage( 1061628 ); // You can't do that while polymorphed. } else if ( DisguiseTimers.IsDisguised( caster ) ) { caster.SendLocalizedMessage( 1061631 ); // You can't do that while disguised. return false; } else if( !caster.CanBeginAction( typeof( IncognitoSpell ) ) || (caster.IsBodyMod && GetContext( caster ) == null) ) { spell.DoFizzle(); } else if( spell.CheckSequence() ) { TransformContext context = GetContext( caster ); Type ourType = spell.GetType(); bool wasTransformed = (context != null); bool ourTransform = (wasTransformed && context.Type == ourType); if( wasTransformed ) { RemoveContext( caster, context, ourTransform ); if( ourTransform ) { caster.PlaySound( 0xFA ); caster.FixedParticles( 0x3728, 1, 13, 5042, EffectLayer.Waist ); } } if( !ourTransform ) { if( !((Body)transformSpell.Body).IsHuman ) { Mobiles.IMount mt = caster.Mount; if( mt != null ) mt.Rider = null; } caster.BodyMod = transformSpell.Body; caster.HueMod = transformSpell.Hue; transformSpell.DoEffect( caster ); Timer timer = new TransformTimer( caster, transformSpell ); timer.Start(); AddContext( caster, new TransformContext( timer, ourType, transformSpell ) ); return true; } } return false; }
public override void OnCast() { Mobile caster = this.Caster; if (caster.Mounted) { caster.SendLocalizedMessage(1042561); // Please dismount first. } else if (!caster.CanBeginAction(typeof(IncognitoSpell))) { caster.SendMessage("Vous ne pouvez faire ce sort en étant sous l'effet de l'incognito."); } else if (!caster.CanBeginAction(typeof(PolymorphSpell))) { caster.SendMessage("Vous ne pouvez faire ce sort en étant transformé."); } /*else if (!caster.CanBeginAction(typeof(ChauveSouris))) * { * caster.SendMessage("Vous ne pouvez vous transformer en étant sous la forme d'une chauve-souris."); * } * else if (caster is PlayerMobile && ((PlayerMobile)caster).Disguised) * { * caster.SendMessage("Vous ne pouvez faire ce sort en étant déguisé."); * }*/ else if (CheckSequence()) { TransformContext context = GetContext(caster); Type ourType = this.GetType(); bool wasTransformed = (context != null); bool ourTransform = (wasTransformed && context.Type == ourType); if (wasTransformed) { RemoveContext(caster, context, ourTransform); if (ourTransform) { caster.PlaySound(0xFA); Effects.SendTargetParticles(Caster, 0x3728, 1, 13, 5042, EffectLayer.Waist); } } if (!ourTransform) { ArrayList mods = new ArrayList(); if (StrOffset != 0) { mods.Add(new StatMod(StatType.Str, "TransformationSpell", StrOffset, TimeSpan.FromDays(90.0))); } if (DexOffset != 0) { mods.Add(new StatMod(StatType.Dex, "TransformationSpell", DexOffset, TimeSpan.FromDays(90.0))); } if (IntOffset != 0) { mods.Add(new StatMod(StatType.Int, "TransformationSpell", IntOffset, TimeSpan.FromDays(90.0))); } if (!((Body)this.Body).IsHuman) { Mobiles.IMount mt = Caster.Mount; if (mt != null) { mt.Rider = null; } } caster.BodyMod = this.Body; caster.HueMod = this.Hue; for (int i = 0; i < mods.Count; ++i) { caster.AddStatMod((StatMod)mods[i]); } PlayEffect(caster); Timer timer = new TransformTimer(caster, this); timer.Start(); AddContext(caster, new TransformContext(timer, mods, ourType)); } } FinishSequence(); }