/** * This is the options control code to setup and fiddle with player options * for various things. * @author Pinkfish * @started Mon Oct 27 12:46:36 PST 2003 */ #define PLAYER_OPTIONS_CLASS #include <player.h> mixed query_property(string); varargs void add_property(string,mixed,int); /** * This method does all the mangeling needed to bring the class up to the * new sizes. */ private class player_options_control query_player_options() { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { return new(class player_options_control); } if (sizeof(options) == 4) { class player_options_control newbit; // Upgrade the size. newbit = new(class player_options_control); newbit->follow_everyone = options->follow_everyone; newbit->follow_groups = options->follow_groups; newbit->follow_friends = options->follow_friends; newbit->lead_behind = options->lead_behind; options = newbit; } return options; } /** * Should the player auto follow in groups. */ int query_auto_follow_group() { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { return 0; } return options->follow_groups; } /** * Should the player auto follow friends. */ int query_auto_follow_friends() { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { return 0; } return options->follow_friends; } /** * Should the player auto follow everyone. */ int query_auto_follow_everyone() { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { return 0; } return options->follow_everyone; } /** * Should the player auto follow everyone. */ int query_lead_from_behind() { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { return 0; } return options->lead_behind; } /** * Set the follow in groups automatically flag * @param flag */ void set_auto_follow_group(int flag) { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { options = new(class player_options_control); } options->follow_groups = flag; add_property(PLAYER_OPTIONS_CONTROL_PROP, options); } /** * Set the follow frienda automatically flag. * @param flag set the follow friends flag */ void set_auto_follow_friends(int flag) { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { options = new(class player_options_control); } options->follow_friends = flag; add_property(PLAYER_OPTIONS_CONTROL_PROP, options); } /** * Sets the follow everyone flag. * @param flag follow everyone */ void set_auto_follow_everyone(int flag) { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { options = new(class player_options_control); } options->follow_everyone = flag; add_property(PLAYER_OPTIONS_CONTROL_PROP, options); } /** * Sets the lead from behind flag. * @param flag the lead from behind flag */ void set_lead_from_behind(int flag) { class player_options_control options; options = query_property(PLAYER_OPTIONS_CONTROL_PROP); if (!options) { options = new(class player_options_control); } options->lead_behind = flag; add_property(PLAYER_OPTIONS_CONTROL_PROP, options); } /** * Sets the mxp toggle flag. If this flag is set to 1 then mxp is * disabled. */ void set_mxp_disable(int flag) { class player_options_control options; options = query_player_options(); options->mxp_disable = 1; add_property(PLAYER_OPTIONS_CONTROL_PROP, options); } /** * This queries the mxp diable flag. * @return the current state of the mxp disable flag */ int query_mxp_disable() { class player_options_control options; options = query_player_options(); return options->mxp_disable; } /** * This method returns if we should use the mxp codes or not. * @return use mxp codes or not */ int is_mxp_enabled() { #if efun_defined(has_mxp) if (has_mxp(this_object())) { return !query_mxp_disable(); } #endif return 0; }