private void Fight() { var attackTimer = _player.GetAttackDelay().p(); var spells = _player.GetSpells().Ready() .Ignore("ESCAPE_DUNGEON").Ignore("PLAYER_COUPDEGRACE") .Ignore("AMBUSH").Ignore("OUTOFCOMBATHEAL"); var attackTarget = _player.GetAttackTarget(); Evade evade; if (attackTarget != null && IsSpecialMob(attackTarget, out evade)) { _player.CreateTextEffect("[Dodging]"); Dodge(attackTarget, evade); return; } if (attackTarget != null && elapsedSeconds > attackTimer / 1000f) { var selfBuffSpells = spells.Target(SpellTarget.Self).Category(SpellCategory.Damage); if (selfBuffSpells.Any() && !_player.IsCastingSpell()) { _player.CreateTextEffect("[Casting Buff Spell]"); _player.CastOnSelf(selfBuffSpells.FirstOrDefault().SpellSlot); elapsedSeconds = 0; return; } var enemyBuffSpells = spells.Target(SpellTarget.Enemy).Category(SpellCategory.Buff); if (enemyBuffSpells.Any() && !_player.IsCastingSpell()) { _player.CreateTextEffect("[Casting Damage Spell]"); _player.CastOn(enemyBuffSpells.FirstOrDefault().SpellSlot, attackTarget); elapsedSeconds = 0; return; } var enemyCCSpells = spells.Target(SpellTarget.Enemy).Category(SpellCategory.CrowdControl); if (enemyCCSpells.Any() && !_player.IsCastingSpell()) { _player.CreateTextEffect("[Casting CrowdControl Spell]"); _player.CastOn(enemyCCSpells.FirstOrDefault().SpellSlot, attackTarget); elapsedSeconds = 0; return; } /* No Longer Working * var groundDamageSpells = spells.Target(gy.SpellTarget.Ground).Category(gy.SpellCategory.Damage); * if (groundDamageSpells.Any()) { * player.CreateTextEffect("[Casting Ground Spell]"); * player.CastAt(groundDamageSpells.FirstOrDefault().SpellSlot, attackTarget.transform.position); * return; * } */ } if (_player.IsUnderAttack(out FightingObjectView attacker)) { _player.SetSelectedObject(attacker); _player.AttackSelectedObject(); return; } if (_player.GetHealth() <= (_player.GetMaxHealth() * 0.1f)) { _state.Fire(Trigger.LowHealth); return; } if (_player.IsCasting()) { return; } Core.Log("[Expedition] Continuing."); _state.Fire(Trigger.Finished); }