public static void Postfix(AttackStackSequence __instance, MessageCenterMessage message) { try { Logger.Debug($"[AttackStackSequence_OnAttackBegin_POSTFIX] Focus on attacked target..."); CombatGameState ___combatGameState = (CombatGameState)AccessTools.Property(typeof(AttackStackSequence), "Combat").GetValue(__instance, null); AttackSequenceBeginMessage attackSequenceBeginMessage = message as AttackSequenceBeginMessage; AttackDirector.AttackSequence attackSequence = ___combatGameState.AttackDirector.GetAttackSequence(attackSequenceBeginMessage.sequenceId); bool isChosenTargetFriendly = attackSequence.chosenTarget.team.GUID == ___combatGameState.LocalPlayerTeamGuid || ___combatGameState.HostilityMatrix.IsLocalPlayerFriendly(attackSequence.chosenTarget.team.GUID); bool shouldFocus = (CameraUnchained.Settings.FocusOnTargetedFriendly && isChosenTargetFriendly) || (CameraUnchained.Settings.FocusOnTargetedEnemy && !isChosenTargetFriendly); Logger.Info($"[AttackStackSequence_OnAttackBegin_POSTFIX] isChosenTargetFriendly: {isChosenTargetFriendly}, shouldFocus: {shouldFocus}"); if (attackSequence == null || !shouldFocus) { return; } if (attackSequence.stackItemUID == __instance.SequenceGUID && !__instance.hasOwningSequence) { CameraControl.Instance.SetMovingToGroundPos(attackSequence.chosenTarget.CurrentPosition, 0.95f); } } catch (Exception e) { Logger.Error(e); } }
public static void Postfix(AttackDirector __instance, MessageCenterMessage message) { Mod.Log.Debug?.Write("AD:OASB - entered."); AttackSequenceBeginMessage asbMessage = message as AttackSequenceBeginMessage; if (__instance == null || asbMessage == null) { return; } int sequenceId = asbMessage.sequenceId; AttackDirector.AttackSequence attackSequence = __instance.GetAttackSequence(sequenceId); if (attackSequence == null) { Mod.Log.Debug?.Write($"AttackSequence not found - created by a mod or CAC watchdog killed it. Skipping!"); ModState.BreachAttackId = ModState.NO_ATTACK_SEQUENCE_ID; } // No chosen target, nothing to damage if (attackSequence.chosenTarget == null) { return; } Mod.Log.Debug?.Write($"Recording attackSequence: {attackSequence.id} for possible hull breaches."); ModState.BreachAttackId = attackSequence.id; }