public virtual Spell DoCombo(Mobile c) { Spell spell = null; if (m_Combo == 0) { spell = new ExplosionSpell(m_Mobile, null); ++m_Combo; // Move to next spell } else if (m_Combo == 1) { spell = new WeakenSpell(m_Mobile, null); ++m_Combo; // Move to next spell } else if (m_Combo == 2) { if (!c.Poisoned) spell = new PoisonSpell(m_Mobile, null); else if (IsNecromancer) spell = new StrangleSpell(m_Mobile, null); ++m_Combo; // Move to next spell } if (m_Combo == 3 && spell == null) { switch (Utility.Random(IsNecromancer ? 4 : 3)) { case 0: { if (c.Int < c.Dex) spell = new FeeblemindSpell(m_Mobile, null); else spell = new ClumsySpell(m_Mobile, null); ++m_Combo; // Move to next spell break; } case 1: { spell = new EnergyBoltSpell(m_Mobile, null); m_Combo = -1; // Reset combo state break; } case 2: { spell = new FlameStrikeSpell(m_Mobile, null); m_Combo = -1; // Reset combo state break; } default: { spell = new PainSpikeSpell(m_Mobile, null); m_Combo = -1; // Reset combo state break; } } } else if (m_Combo == 4 && spell == null) { spell = new MindBlastSpell(m_Mobile, null); m_Combo = -1; } return spell; }
public InternalTarget( FeeblemindSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful ) { m_Owner = owner; }
public bool ApplyStatEffect(PlayerMobile Wearer, bool bStr, bool bDex, bool bInt, int change) { Spell spell = null; if( Wearer == null ) return false; // Try to apply bless to all stats int BlessOffset = change; bool AppliedStr = false; bool AppliedInt = false; bool AppliedDex = false; if( bStr ) { if(BlessOffset > 0) { spell = new StrengthSpell(Wearer, null); } else spell = new WeakenSpell(Wearer, null); if (Wearer.Region.OnBeginSpellCast( Wearer, spell ) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return false; } AppliedStr = AddStatBonus(Wearer, BlessOffset, StatType.Str, TimeSpan.Zero); } if( bInt ) { if(BlessOffset > 0) { spell = new CunningSpell(Wearer, null); } else spell = new FeeblemindSpell(Wearer, null); if (Wearer.Region.OnBeginSpellCast( Wearer, spell ) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return false; } AppliedInt = AddStatBonus(Wearer, BlessOffset, StatType.Int, TimeSpan.Zero); } if( bDex ) { if(BlessOffset > 0) { spell = new AgilitySpell(Wearer, null); } else spell = new ClumsySpell(Wearer, null); if (Wearer.Region.OnBeginSpellCast( Wearer, spell ) == false) { Wearer.SendMessage("The magic normally within this object seems absent."); return false; } AppliedDex = AddStatBonus(Wearer, BlessOffset, StatType.Dex, TimeSpan.Zero); } Wearer.CheckStatTimers(); // If any stats were adjusted, start timer to remove the stats after effect expires // return that spell was successful if (AppliedStr || AppliedInt || AppliedDex) /* 7/25/04 smerX */ { if( m_StatEffectTimer != null ) { m_StatEffectTimer.Stop(); m_StatEffectTimer = null; } m_StatEffectTimer = new MagicEffectTimer(Wearer, this, TimeSpan.FromSeconds(120)); m_StatEffectTimer.Start(); return true; } else { return false; } }
public Spell CheckCurse() { Mobile foe = m_Mobile.Combatant; if ( foe == null ) return null; StatMod mod = foe.GetStatMod( "[Magic] Int Offset" ); if ( mod != null && mod.Offset < 0 ) return null; if ( m_Mobile.Skills[SkillName.Magery].Value >= 40.0 ) return new CurseSpell( m_Mobile, null ); int whichone = 1; Spell spell = null; if ( (mod = foe.GetStatMod( "[Magic] Str Offset" )) != null ) whichone++; if ( (mod= m_Mobile.GetStatMod( "[Magic] Dex Offset" )) != null ) whichone++; switch ( whichone ) { case 1: spell = new FeeblemindSpell( m_Mobile, null ); break; case 2: spell = new WeakenSpell( m_Mobile, null ); break; case 3: spell = new ClumsySpell( m_Mobile, null ); break; } return spell; }
public virtual Spell DoCombo( Mobile c ) { Spell spell = null; if ( m_Combo == 0 ) { spell = new ExplosionSpell( m_Mobile, null ); ++m_Combo; // Move to next spell } else if ( m_Combo == 1 ) { spell = new WeakenSpell( m_Mobile, null ); ++m_Combo; // Move to next spell } else if ( m_Combo == 2 ) { if ( !( ( m_Mobile is IEvoCreature || m_Mobile is EvolutionDragon ) && c is PlayerMobile ) && !c.Poisoned ) spell = new PoisonSpell( m_Mobile, null ); ++m_Combo; // Move to next spell } if ( m_Combo == 3 && spell == null ) { switch ( Utility.Random( 3 ) ) { default: case 0: { if ( c.Int < c.Dex ) spell = new FeeblemindSpell( m_Mobile, null ); else spell = new ClumsySpell( m_Mobile, null ); ++m_Combo; // Move to next spell break; } case 1: { spell = new EnergyBoltSpell( m_Mobile, null ); m_Combo = -1; // Reset combo state break; } case 2: { spell = new FlameStrikeSpell( m_Mobile, null ); m_Combo = -1; // Reset combo state break; } } } else if ( m_Combo == 4 && spell == null ) { spell = new MindBlastSpell( m_Mobile, null ); m_Combo = -1; } return spell; }
public void ChargedAbilityAttack( Mobile attacker, Mobile defender ) { if ( m_AbilityCharges <= 0 ) return; AbilitySpell m_Spell = null; Mobile dummy = DummyCaster; switch ( m_ChargedAbility ) { case WeaponChargedAbility.Clumsiness: m_Spell = new ClumsySpell( dummy, null ); break; case WeaponChargedAbility.Feeblemindedness: m_Spell = new FeeblemindSpell( dummy, null ); break; case WeaponChargedAbility.Weakness: m_Spell = new WeakenSpell( dummy, null ); break; case WeaponChargedAbility.Burning : m_Spell = new MagicArrowSpell( dummy, null ); break; case WeaponChargedAbility.Wounding: m_Spell = new HarmSpell( dummy, null ); break; case WeaponChargedAbility.DragonsBreath: case WeaponChargedAbility.DaemonsBreath: m_Spell = new FireballSpell( dummy, null ); break; case WeaponChargedAbility.Thunder: m_Spell = new LightningSpell( dummy, null ); break; case WeaponChargedAbility.MagesBane: m_Spell = new ManaDrainSpell( dummy, null ); break; case WeaponChargedAbility.GhoulsTouch: m_Spell = new ParalyzeSpell( dummy, null ); break; case WeaponChargedAbility.Evil: m_Spell = new CurseSpell( dummy, null ); break; } if ( m_Spell != null ) { m_Spell.OnHit( attacker, defender ); m_AbilityCharges--; } dummy.Delete(); }
public InternalTarget(FeeblemindSpell owner) : base(owner.SpellRange, false, TargetFlags.Harmful) { m_Owner = owner; }
public InternalTarget(FeeblemindSpell owner) : base(Core.ML ? 10 : 12, false, TargetFlags.Harmful) { m_Owner = owner; }
public InternalSphereTarget(FeeblemindSpell owner) : base(Core.ML ? 10 : 12, false, TargetFlags.Harmful) { m_Owner = owner; m_Owner.Caster.SendAsciiMessage("Selecione o alvo..."); }