right, got the code nailed down.... just a small resource issue to address!
lbC0055E2
LSR.W #3,D1
ADDI.W #$60,D1
CMP.W ($2E,A5),D1
BNE.B lbC0055E0
CLR.L ($2C,A5)
MOVEM.L D0/A6,-(SP)
BSR.W lbC00599C
MOVEM.L (SP)+,D0/A6
MOVE.B (A6,D0.W),D1
LSR.W #2,D1
ANDI.W #14,D1
LEA (CrystalActions).L,A0
ADDA.W (lbW00561A,PC,D1.W),A0
JSR (A0)
MOVEQ #5,D0
BRA.W PlaySound?
lbW00561A dw 0
dw $24
dw $6A
dw $8A
dw $22
dw $E0
dw $22
dw $D8
CrystalActions MOVEQ #5,D4
MOVEQ #$12,D6
BSR.W lbC0056D8
CMPI.W #5,(CurrentTower).L
BNE.B Exit_CrystalAction
MOVE.L #$90001,D7 ;Serpent Crystal Remove Location
Last_CrystalAction BSR.W RemoveLocationData?
ANDI.W #$F8,(A6,D0.W)
Exit_CrystalAction RTS
BCLR #2,(A6,D0.W)
BSR.W lbC0080F4
BSR.W lbC007556
CMPI.W #5,(CurrentTower).L
BNE.B Exit_CrystalAction
LEA (UnpackedMonsters).L,A0
CMPI.B #$6B,(11,A0) ;Only If Entropy
BNE.B lbC00568C
TST.B (A0)
BPL.B lbC00568C
ANDI.B #$7F,(A0)
MOVE.L #$90008,D7 ;Chaos Crystal Remove Location 1
BSR.W RemoveLocationData?
BSET #7,(1,A6,D0.W)
lbC00568C MOVE.L #$90003,D7 ;Chaos Crystal Remove Location 2
BRA.B Last_CrystalAction
MOVEQ #7,D4
MOVEQ #$11,D6
BSR.B lbC0056D8
CMPI.W #5,(CurrentTower).L
BNE.B Exit_CrystalAction
MOVE.L #$100008,D7 ;Dragon Crystal Remove Location
BSR.B Last_CrystalAction
MOVE.L #lbW03FC64,D7 ;Dragon Crystal Remove Location (needs fixing for wrong label)
BRA.B Last_CrystalAction
MOVEQ #9,D4
MOVEQ #$13,D6
BSR.B lbC0056D8
CMPI.W #5,(CurrentTower).L
BNE.B Exit_CrystalAction
lbC0056C4 MOVE.L #lbB02FC65,D7 ;Moon Crystal Remove Location (needs fixing also)
BSR.W Last_CrystalAction
MOVE.L #$F0009,D7 ;Moon Crystal Remove Location
BRA.W Last_CrystalAction