First off: Indentation. Use it. It really helps with making script code clear, especially if you have multiple nested if statements.
Code:
SET_FLAG(PLAYER0,FLAG0,0)
CREATE_PARTY(SUPER_FAIRY)
ADD_TO_PARTY(SUPER_FAIRY,FAIRY,7,500,ATTACK_ENEM IES,0)
SET_TIMER(PLAYER0,TIMER0)
IF_ACTION_POINT(1,PLAYER0)
IF(PLAYER_GOOD,FLAG0 == 0)
IF(PLAYER0,TIMER0 >= 150)
NEXT_COMMAND_REUSABLE
ADD_PARTY_TO_LEVEL(PLAYER_GOOD,SUPER_FAIRY,-1,1)
NEXT_COMMAND_REUSABLE
SET_TIMER(PLAYER0,TIMER0)
*IF_ACTION_POINT(2,PLAYER0)*
*SET_FLAG(PLAYER0,FLAG0,1)*
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
This already shows to start off that you have one ENDIF statement too many, which can break things.
Anyway, you have two IF_ACTION_POINT statements nested in another. IF_ACTION_POINT only triggers once, which means that the SET_FLAG will only run if both action point statements are triggered at the exact same time - which is nearly impossible to time right.
You should put the second IF_ACTION_POINT and SET_FLAG statement outside the code block.