-#define grappled(a) Snagged(a, 1)
-#define fouled(a) Snagged(a, 0)
-#define snagged(a) (Snagged(a, 0) || Snagged(a, 1))
-#define grappled2(a,b) Snagged2(a, b, 1, 0)
-#define fouled2(a,b) Snagged2(a, b, 0, 0)
-#define snagged2(a,b) (Snagged2(a, b, 0, 0) || Snagged2(a, b, 1, 0))
-#define Xgrappled2(a,b) Snagged2(a, b, 1, 1)
-#define Xfouled2(a,b) Snagged2(a, b, 0, 1)
-#define Xsnagged2(a,b) (Snagged2(a, b, 0, 1) || Snagged2(a, b, 1, 1))
+#define grappled(a) ((a)->file->ngrap)
+#define fouled(a) ((a)->file->nfoul)
+#define snagged(a) (grappled(a) + fouled(a))
+
+#define grappled2(a, b) ((a)->file->grap[(b)->file->index].sn_count)
+#define fouled2(a, b) ((a)->file->foul[(b)->file->index].sn_count)
+#define snagged2(a, b) (grappled2(a, b) + fouled2(a, b))
+
+#define Xgrappled2(a, b) ((a)->file->grap[(b)->file->index].sn_turn < turn-1 ? grappled2(a, b) : 0)
+#define Xfouled2(a, b) ((a)->file->foul[(b)->file->index].sn_turn < turn-1 ? fouled2(a, b) : 0)
+#define Xsnagged2(a, b) (Xgrappled2(a, b) + Xfouled2(a, b))
+
+#define cleangrapple(a, b, c) Cleansnag(a, b, c, 1)
+#define cleanfoul(a, b, c) Cleansnag(a, b, c, 2)
+#define cleansnag(a, b, c) Cleansnag(a, b, c, 3)