Add SuperReady and PlayerSuper Lua hooks
Adds two new Lua hooks to more easily control the player's eligibility to turn and remain super, and exposes a new function P_RevertSuperForm
to allow scripters to deactivate a super form with all the bells and whistles.
SuperReady
Hook format: addHook("SuperReady", functionname)
Function format: function(player_t player)
Function return value: Boolean (can the player turn super? nil
= use default behavior)
Executes whenever a player attempts to turn super (i.e. whenever P_SuperReady
is called). If the function returns true
, the player will be considered ready to turn super, and if the function returns false
, the player will not be considered ready to turn super, regardless of the number of chaos emeralds or rings collected or whether they have the SF_SUPER
flag. Otherwise (return
, return nil
or simply no return value), SRB2's default checks are used to determine whether the player can turn super.
(I am aware that !1641 (closed) implements a feature similar this hook—I wrote this hook before that MR was put up, but I can remove the hook if that implementation is preferred.)
PlayerSuper
Hook format: addHook("PlayerSuper", functionname)
Function format: function(player_t player)
Function return value: Boolean (can the player remain super? nil
= use default behavior)
Executes every tic while a player is super. If the function returns true
, the player will be forced to stay super, and if the function returns false
, the player will revert from their super form, regardless of the number of chaos emeralds or rings they have or whether they have the SF_SUPER
flag. Otherwise (return
, return nil
or simply no return value), SRB2's default checks are used to determine whether the player can remain super.
Example script: fang69.lua
This lets Fang turn super when he has exactly 69 rings (nice) and doesn't care about how many emeralds he has or that he doesn't have the SF_SUPER
flag. However, if he fires a cork, he will revert from his super form immediately.