public void StartBattle(ExplorerPositionData position) { _contextLogic.TurnType = BattleTurnResultType.StartTurn; _battleLogic.StartBattle(); _contextLogic.SetAbilityContext(-1, -1, false); _impactLogic.ExecuteImpact(_contextLogic.ImpactInit); _battleLogic.BatchEventBattle(); _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; foreach (var temp in _battle.LiveAllies) { _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; ExecuteStartAbility(temp, false); } foreach (var temp in _battle.LiveEnemies) { _contextLogic.TurnType = BattleTurnResultType.PassiveAbility; ExecuteStartAbility(temp, true); if (_contextLogic.MobImpacts.TryGetValue(temp, out var impact)) { _contextLogic.SetAbilityContext(temp, null, true); _impactLogic.ExecuteImpact(impact); } } _contextLogic.TurnType = BattleTurnResultType.EndTurn; _explorer.State.Position = position; _battleLogic.UpdateMobs(); _battleLogic.BatchEventBattle(); LogicLog.SetBattle(LogBattleType.Start, _explorer.State.LastInteractiveId, _explorer.State.RoomId, _explorer.CurrentStage); }