I may have found my own solution for this issue. I've written a simple class that checks the Fsm.FsmList, and puts the count into a static variable. Each time the scene resets, this variable is compared to the actual count, and if they are different, we reset the FsmList using the SanityCheck function (at least, I think that's what it does!). Here's the code, and you just have to add it to a single object in your scene.
using UnityEngine;
using System.Collections;
using HutongGames.PlayMaker;
public class PlayMakerStatics : MonoBehaviour {
private static int fsmCount = 0;
private int fsmCurrentCount = 0;
// Use this for initialization
void Awake () {
if(fsmCount == 0) { // First time executing the script!
fsmCount = Fsm.FsmList.Count;
fsmCurrentCount = fsmCount;
}
else if (fsmCurrentCount != fsmCount) {
Fsm.SanityCheckFsmList();
fsmCount = Fsm.FsmList.Count;
fsmCurrentCount = fsmCount;
}
}
// Update is called once per frame
void Update () {
}
}