public static function getCurrentCommands(SR_Player $player, $show_hidden = true, $boldify = false, $long_versions = true, $translate = false, $filter_hidden = false, $hidden_only = false) { if ($player->isOptionEnabled(SR_Player::DEAD)) { return array_merge(self::$CMDS_ALWAYS_CREATE, array('reset')); } if (false === $player->isCreated()) { return self::$CMDS_ALWAYS_CREATE; } if (false === ($party = $player->getParty())) { return array(); } $action = $party->getAction(); $leader = $player->isLeader(); $commands = array(); # Allways commands if (!$hidden_only) { $commands = array_merge($commands, self::$CMDS_ALWAYS); } # Always if ($show_hidden) { $commands = array_merge($commands, self::$CMDS_ALWAYS_CREATE); } # GM commands if ($show_hidden && $player->isGM()) { $commands = array_merge($commands, self::$CMDS_GM); } # Hidden commands if ($show_hidden) { $commands = array_merge($commands, self::$CMDS_ALWAYS_HIDDEN); } # Player actions if (!$hidden_only) { $commands = array_merge($commands, self::$CMDS[$action]); if (false !== ($scanner = $player->getInvItemByName('Scanner_v6', false))) { $commands[] = 'spy'; } if ($player->getBase('alchemy') >= 0) { $commands[] = 'brew'; } } # Leader actions if ($leader) { if ($show_hidden) { $commands = array_merge($commands, self::$CMDS_LEADER_ALWAYS); } if (!$hidden_only) { # Outside location? if (false !== ($location = $party->getLocationClass('outside'))) { if ($location->isEnterAllowed($player)) { # We can enter $commands[] = 'enter'; } } # Action $commands = array_merge($commands, self::$CMDS_LEADER[$action]); } } # Location commands if (!$hidden_only) { if (false !== ($location = $party->getLocationClass('inside'))) { # Leader if ($leader === true) { // $commands = array_merge($commands, self::shortcutArray($location->getLeaderCommands($player))); $commands = array_merge($commands, $location->getLeaderCommands($player)); if ($location->isPVP()) { $commands[] = 'fight'; } } # Talk $commands = array_merge($commands, $location->getNPCTalkCommands($player)); # Special // $commands = array_merge($commands, self::shortcutArray($location->getCommands($player))); $commands = array_merge($commands, $location->getCommands($player)); } elseif (false !== ($location = $party->getLocationClass('outside'))) { if ($location->isHijackable()) { $commands[] = 'hijack'; } // if ($location->isPVP()) // { $commands[] = 'fight'; // } } } // if ($long_versions === false) // { // $commands = array_map(array(__CLASS__, 'shortcut'), $commands); // } // if ($long_versions === true) // { // $commands = array_map(array(__CLASS__, 'unshortcut'), $commands); // } ############## ### FORMAT ### ############## if ($filter_hidden) { $commands = array_values(array_diff($commands, self::$REALLY_HIDDEN)); } if ($boldify) { // if ($long_versions === true) // { // $commands = array_map(array(__CLASS__, 'boldify_longs'), $commands); // } // else // { $commands = array_map(array(__CLASS__, 'boldify'), $commands); // } } # Shortcut if (!$long_versions) { $commands = array_map(array(__CLASS__, 'shortcut_bolded'), $commands); } # Translate if ($translate) { $commands = array_map(array(__CLASS__, 'translate_bolded'), $commands); } # \o/ return $commands; }