The fight system was working behind the scenes. The problem was that the game was trying to put the fight’s visual effects in the wrong place.
What was broken
The game used an invisible “Social Attack controller” object to manage the fight.
That controller is not actually standing on the lot. It lives way off the map at:
(-32768, -32768, 1)
So when the game tried to place the smoke cloud halfway between:
Sim + controller
…it picked a ridiculous off-map position. Result: the fight logic ran, but the visible fight setup failed.
What the fix changed
Now the game does this instead:
Find Sim A
Find Sim B
Place the smoke cloud halfway between the two real Sims
That means the fight cloud appears where the Sims actually are.
Second fix
The attacked Sim was also starting their response in the wrong state, like they were still “waiting” or had rejected the interaction.
So the pushed Be Attacked action now starts with the correct result value for Social Attack responses. That lets the target Sim actually enter the fight response properly.
Animation cleanup
The animation code was also tightened up so Social Attack animations are picked based on the actual Sim involved, not some stale cached value.
And you confirmed the real human fight animations already exist, so there was no need for a weird dog/cat-style fallback.
Build part
The server showed that the fight logic was looping correctly, but the visible fight happens on the client.
So rebuilding both server and client Release targets mattered. The server could be correct, but without the rebuilt client, the player still would not see the fixed visuals.
Tiny summary
The fight was not failing because of environment variables.
It was failing because the game was trying to spawn the fight smoke using an invisible controller’s fake off-map position instead of the two Sims’ real positions. Once the smoke, response state, and animations were tied to the actual Sims, the fight became visible and behaved correctly.
