Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions McpMod.Actions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public static partial class McpMod
{
if (!CombatManager.Instance.IsInProgress)
return Error("Not in combat");
if (!CombatManager.Instance.IsPlayPhase)
if (!IsPlayPhase())
return Error("Not in play phase - cannot act during enemy turn");
if (CombatManager.Instance.PlayerActionsDisabled)
return Error("Player actions are currently disabled");
Expand Down Expand Up @@ -150,7 +150,7 @@ public static partial class McpMod
{
if (!CombatManager.Instance.IsInProgress)
return Error("Not in combat");
if (!CombatManager.Instance.IsPlayPhase)
if (!IsPlayPhase())
return Error("Not in play phase - cannot act during enemy turn");
if (CombatManager.Instance.PlayerActionsDisabled)
return Error("Player actions are currently disabled (turn may already be ending)");
Expand Down Expand Up @@ -193,7 +193,7 @@ public static partial class McpMod
{
if (!inCombat)
return Error($"Potion '{SafeGetText(() => potion.Title)}' can only be used in combat");
if (!CombatManager.Instance.IsPlayPhase)
if (!IsPlayPhase())
return Error("Cannot use potions outside of play phase");
}
else if (potion.Usage == PotionUsage.Automatic)
Expand Down Expand Up @@ -362,7 +362,7 @@ public static partial class McpMod
var merchUI = NMerchantRoom.Instance;
if (merchUI?.Inventory != null && !merchUI.Inventory.IsOpen)
merchUI.OpenInventory();
inventory = merchantRoom.Inventory;
inventory = merchantRoom.GetLocalInventory();
}
else if (player.RunState.CurrentRoom is EventRoom eventRoom
&& eventRoom.CanonicalEvent is FakeMerchant
Expand Down Expand Up @@ -1050,7 +1050,7 @@ public static partial class McpMod
.FirstOrDefault(IsControlVisibleOrActionable);
}

private static Creature? ResolveTarget(CombatState combatState, string entityId)
private static Creature? ResolveTarget(ICombatState combatState, string entityId)
{
// Try to match by entity_id pattern: "model_entry_N"
// First try matching by combat_id if it's a pure number
Expand Down
22 changes: 22 additions & 0 deletions McpMod.CombatCompat.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using MegaCrit.Sts2.Core.Combat;

namespace STS2_MCP;

public static partial class McpMod
{
private static bool IsPlayPhase()
{
return IsPlayPhase(CombatManager.Instance.DebugOnlyGetState());
}

private static bool IsPlayPhase(CombatState? combatState)
{
var manager = CombatManager.Instance;
return manager.IsInProgress
&& combatState?.CurrentSide == CombatSide.Player
&& !manager.PlayerActionsDisabled
&& !manager.IsEnemyTurnStarted
&& !manager.EndingPlayerTurnPhaseOne
&& !manager.EndingPlayerTurnPhaseTwo;
}
}
4 changes: 2 additions & 2 deletions McpMod.MultiplayerActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public static partial class McpMod
{
if (!CombatManager.Instance.IsInProgress)
return Error("Not in combat");
if (!CombatManager.Instance.IsPlayPhase)
if (!IsPlayPhase())
return Error("Not in play phase - cannot act during enemy turn");
if (CombatManager.Instance.PlayerActionsDisabled)
return Error("Player actions are currently disabled");
Expand Down Expand Up @@ -106,7 +106,7 @@ public static partial class McpMod
{
if (!CombatManager.Instance.IsInProgress)
return Error("Not in combat");
if (!CombatManager.Instance.IsPlayPhase)
if (!IsPlayPhase())
return Error("Not in play phase - cannot act during enemy turn");
if (CombatManager.Instance.PlayerActionsDisabled)
return Error("Player actions are currently disabled");
Expand Down
2 changes: 1 addition & 1 deletion McpMod.MultiplayerState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ public static partial class McpMod

battle["round"] = combatState.RoundNumber;
battle["turn"] = combatState.CurrentSide.ToString().ToLower();
battle["is_play_phase"] = CombatManager.Instance.IsPlayPhase;
battle["is_play_phase"] = IsPlayPhase(combatState);
battle["all_players_ready"] = CombatManager.Instance.AllPlayersReadyToEndTurn();

// Enemies
Expand Down
4 changes: 2 additions & 2 deletions McpMod.StateBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1072,7 +1072,7 @@ private static void AddMultiplayerLoadLobbyMenuState(

battle["round"] = combatState.RoundNumber;
battle["turn"] = combatState.CurrentSide.ToString().ToLower();
battle["is_play_phase"] = CombatManager.Instance.IsPlayPhase;
battle["is_play_phase"] = IsPlayPhase(combatState);

// Enemies
var enemies = new List<Dictionary<string, object?>>();
Expand Down Expand Up @@ -1531,7 +1531,7 @@ private static string GetCostDisplay(CardModel card)
{
var state = new Dictionary<string, object?>();

var inventory = merchantRoom.Inventory;
var inventory = merchantRoom.GetLocalInventory();
if (inventory == null)
{
state["items"] = new List<Dictionary<string, object?>>();
Expand Down