public override void OnThink() { base.OnThink(); if(Combatant == null) return; if(m_NextSummon < DateTime.UtcNow && this.Mana > 40 && this.Followers + 5 <= this.FollowersMax) { Spell spell = new RisingColossusSpell(this, null); spell.Cast(); m_NextSummon = DateTime.UtcNow + TimeSpan.FromSeconds(30); } Mobile combatant = Combatant; if(m_NextAIChange < DateTime.UtcNow) { if(AIObject is MageAI) ChangeAIType(AIType.AI_Mystic); else ChangeAIType(AIType.AI_Mage); Combatant = combatant; m_NextAIChange = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(10, 30)); } }
public override void OnThink() { base.OnThink(); if(Combatant == null || m_NextSummon > DateTime.Now) return; if(this.Mana > 40 && this.Followers + 5 <= this.FollowersMax) { if (!m_Manifested && m_ManifestChance > Utility.RandomDouble()) { IDamageable m = this.Combatant; if (m is BaseCreature && (((BaseCreature)m).Summoned || ((BaseCreature)m).Controlled)) m = ((BaseCreature)m).GetMaster(); this.FixedParticles(0x3709, 1, 30, 9904, 1108, 6, EffectLayer.RightFoot); BaseCreature vm = new VoidManifestation(m_Type); vm.MoveToWorld(this.Location, this.Map); vm.PlaySound(vm.GetAngerSound()); if (m != null) vm.Combatant = m; m_Manifested = true; m_NextSummon = DateTime.Now + TimeSpan.FromMinutes(10); } else { Spell spell = new RisingColossusSpell(this, null); spell.Cast(); m_NextSummon = DateTime.Now + TimeSpan.FromSeconds(30); } } }
public Spell GetMysticSpell() { Spell spell = null; switch( Utility.Random(8) ) { case 0: case 1: { if (m_Mobile.Combatant is Mobile && this.CheckForSleep((Mobile)this.m_Mobile.Combatant)) { this.m_Mobile.DebugSay("Casting Sleep"); spell = new SleepSpell(this.m_Mobile, null); break; } else goto case 7; } case 2: { if (this.m_Mobile.Followers < 2) { int whichone = Utility.Random(3); if (this.m_Mobile.Skills[SkillName.Mysticism].Value > 80.0 && whichone > 0) { this.m_Mobile.DebugSay("Casting Rising Colossus"); spell = new RisingColossusSpell(this.m_Mobile, null); } else if (this.m_Mobile.Skills[SkillName.Mysticism].Value > 30.0) { this.m_Mobile.DebugSay("Casting Animated Weapon"); spell = new AnimatedWeaponSpell(this.m_Mobile, null); } } if (spell != null) break; else goto case 7; } case 3: { if (this.m_CanShapeShift && this.m_Mobile.Skills[SkillName.Mysticism].Value > 30.0) { this.m_Mobile.DebugSay("Casting Stone Form"); spell = new StoneFormSpell(this.m_Mobile, null); break; } else goto case 7; } case 4: case 5: { if (m_Mobile.Combatant is Mobile && !SpellPlagueSpell.HasSpellPlague((Mobile)m_Mobile.Combatant) && this.m_Mobile.Skills[SkillName.Mysticism].Value > 70.0) { this.m_Mobile.DebugSay("Casting Spell Plague"); spell = new SpellPlagueSpell(this.m_Mobile, null); break; } else goto case 7; } case 6: case 7: { switch( Utility.Random((int)(this.m_Mobile.Skills[SkillName.Mysticism].Value / 20)) ) { default: spell = new NetherBoltSpell(this.m_Mobile, null); break; case 1: spell = new EagleStrikeSpell(this.m_Mobile, null); break; case 2: spell = new BombardSpell(this.m_Mobile, null); break; case 3: spell = new HailStormSpell(this.m_Mobile, null); break; case 4: spell = new NetherCycloneSpell(this.m_Mobile, null); break; } break; } } return spell; }
public InternalTarget(RisingColossusSpell owner) : base(12, true, TargetFlags.None) { m_Owner = owner; }