# Facilitates StarCraft 2 AI module Sc2 VERSION: untyped # Returns whether we are on the ladder or not def self.ladder?: () -> bool # sord omit - no YARD type given for :config, using untyped # Instantiate the Configuration singleton or return it. # Remember that the instance has attribute readers so that we can access the configured values def self.config: () -> untyped # Set to new Sc2::Configuration def self.config=: (untyped value) -> untyped # _@return_ — a logger instance or a new $stdout logger if undefined def self.logger: () -> Logger # Sets logger singleton def self.logger=: (Logger value) -> Logger # Generic, single error for everything Sc2 class Error < StandardError end # Helps determine common paths to sc2 install dir, executable and maps. # It maintains some semblance of compatibility with python-sc2 config # # ENV['SC2PATH'] can be set manually to StarCraft 2 base directory for Linux # ENV['SC2PF'] can and should be manually set to "WineLinux" when running Wine # Credit to Hannes, Sean and Burny for setting the standard class Paths PF_WINDOWS: untyped PF_WSL1: untyped PF_WSL2: untyped PF_DARWIN: untyped PF_LINUX: untyped PF_WINE: untyped BASE_DIR: untyped EXEC_INFO_PATH: untyped BIN_PATH: untyped WORKING_DIR: untyped # An array of available platforms # # _@return_ — an array of valid platforms def self.platforms: () -> ::Array[String] # sord warn - "\"Windows\"" does not appear to be a type # sord warn - "\"WSL1\"" does not appear to be a type # sord warn - "\"WSL2\"" does not appear to be a type # sord warn - "\"Darwin\"" does not appear to be a type # sord warn - "\"Linux\"" does not appear to be a type # sord warn - "\"WineLinux\"" does not appear to be a type # Bucketed platform names follows convention # Uses ENV['SC2PF'] if configured. This is the only way to set "WineLinux" # # _@return_ — string platform name def self.platform: () -> (SORD_ERROR_Windows | SORD_ERROR_WSL1 | SORD_ERROR_WSL2 | SORD_ERROR_Darwin | SORD_ERROR_Linux | SORD_ERROR_WineLinux) # Attempts to auto-detect the user's install directory via ExecuteInfo.txt # SC2PATH is required on WineLinux and Linux # # _@return_ — path def self.install_dir: () -> String # Replays directory based on install_dir # # _@return_ — replays directory def self.replay_dir: () -> String # Maps directory based on install_dir # # _@return_ — maps directory def self.maps_dir: () -> String # Working directory if required by platform # Some platforms the correct working directory for launch to find linked libraries # # _@return_ — string path or nil if not required def self.exec_working_dir: () -> String? # Gets a path to latest Sc2 executable, or specific build's executable if defined # noinspection RubyMismatchedReturnType # # _@param_ `base_build` — version to use if installed # # _@return_ — path to executable def self.executable: (?base_build: Integer?) -> String? # Returns project root directory # # _@return_ — path because bundler does. def self.project_root_dir: () -> String # For local and ladder play, your files modified at runtime should live in ./data # # _@return_ — path to ./data def self.bot_data_dir: () -> String # Returns the local replay folder # For local play, your replay filse are saved to ./replays # # _@return_ — path to ./replays def self.bot_data_replay_dir: () -> String # Root directory of gem itself for other bundled files # # _@return_ — path to gem folder which contains lib/,data/,etc. def self.gem_root: () -> Pathname # Directory of template folders # # _@return_ — path to where template directories live, i.e. "new" and "ladder" def self.template_root: () -> Pathname # Path to shipped versions.json # # _@return_ — path def self.gem_data_versions_path: () -> Pathname # Gets system temp directory and creates /sc2ai # # _@return_ — temporary directory for use with -tempDir def self.generate_temp_dir: () -> String # Checks if running WSL def self.wsl?: () -> bool # Checks if running WSL2 specifically on top of wsl? being true def self.wsl2?: () -> bool # Convert a path like "C:\\path\\To a\\Location" to "/mnt/c/path/To a/Location" # # _@param_ `path` # # _@return_ — path converted def self.win_to_wsl: (path: String) -> String # Convert a path like "/mnt/c/path/To a/Location" to "C:\\path\\To a\\Location" # # _@param_ `path` # # _@return_ — path converted def self.wsl_to_win: (path: String) -> String # Versions directory based on install_dir # # _@return_ — install_dir + "/Versions" def self.version_dir: () -> String # sord warn - JSON wasn't able to be resolved to a constant in this project # Loads version data # # _@return_ — versions.json def self.version_json: () -> JSON # Reads contents for ExecuteInfo.txt # # _@return_ — contents of exec_info or empty string def self.read_exec_info: () -> String end # Produces suitable PortConfig based on start_port and num_players. # Community-consensus on port usage: where start_port is x # term "start_port" only used for calculation: x # legacy, ignored port: x+1 # @server.game_port: x+2, @server.base_port: x+3 # below is meant to be repeated, but client only allows 1 additional client. player 2: # @client_ports.game_port: x+4, @client_ports.base_port: x+5 class Ports # Basic port config using the magic of incrementation on start_port # # _@param_ `start_port` # # _@param_ `num_players` — Player count which require clients # # _@return_ — basic port config def self.port_config_basic: (start_port: Integer, num_players: Integer) -> PortConfig # Checks system for open ports to get a list of ports for num_players # since start_port is purely cosmetic, it's set to the first port, minus two # # _@param_ `num_players` — Player count which require clients # # _@return_ — new portconfig def self.port_config_auto: (num_players: Integer) -> PortConfig # Checks if port is open # # _@param_ `port` — check if open def self.port_available?: ((String | Integer) port) -> bool # Checks system for a random available port which we haven't used yet # # _@return_ — port def self.random_available_port: () -> Integer # Gets range of ports based on offset and number of players # # _@param_ `from` — (inclusive) # # _@param_ `num_players` # # _@return_ — range of ports def self.port_range: (Integer from, Integer num_players) -> ::Range[untyped] # sord omit - no YARD type given for "port", using untyped # Will bind tcp port and return port if successful # if port is zero, it will return random port bound to # # _@return_ — port if bind succeeds, false on failure def self.bind: (untyped port) -> (Integer | bool) end # A port configuration for a Match which allows generating Api::PortSet class PortConfig # sord omit - no YARD type given for "start_port:", using untyped # sord omit - no YARD type given for "num_players:", using untyped # sord omit - no YARD type given for "ports:", using untyped def initialize: (start_port: untyped, num_players: untyped, ?ports: untyped) -> void # sord omit - no YARD type given for :start_port, using untyped # Returns the value of attribute start_port. attr_reader start_port: untyped # sord omit - no YARD type given for :server_port_set, using untyped # Returns the value of attribute server_port_set. attr_reader server_port_set: untyped # sord omit - no YARD type given for :client_port_sets, using untyped # Returns the value of attribute client_port_sets. attr_reader client_port_sets: untyped end # Allows defining Ai, Bot, BotProcess (external), Human or Observer for a Match class Player include Sc2::Player::GameState extend Forwardable IDENTIFIED_RACES: untyped # _@param_ `race` — see {Api::Race} # # _@param_ `name` # # _@param_ `type` — see {Api::PlayerType} # # _@param_ `difficulty` — see {Api::Difficulty} # # _@param_ `ai_build` — see {Api::AIBuild} def initialize: ( race: Integer, name: String, ?_type: Integer?, ?difficulty: Integer?, ?ai_build: Integer? ) -> void # Returns whether or not the player requires a sc2 instance # # _@return_ — Sc2 client needed or not def requires_client?: () -> bool # Creates a new connection to Sc2 client # # _@param_ `host` # # _@param_ `port` # # _@see_ `Sc2::Connection#initialize` def connect: (host: String, port: Integer) -> Sc2::Connection # Terminates connection to Sc2 client def disconnect: () -> void # sord omit - no YARD return type given, using untyped # _@param_ `map` # # _@param_ `players` # # _@param_ `realtime` — whether realtime mode (no manual Steps) def create_game: (map: Sc2::MapFile, players: ::Array[Sc2::Player], ?realtime: bool) -> untyped # sord omit - no YARD return type given, using untyped # _@param_ `server_host` — ip address # # _@param_ `port_config` def join_game: (server_host: String, port_config: Sc2::PortConfig) -> untyped # sord omit - no YARD return type given, using untyped # Multiplayer only. Disconnects from a multiplayer game, equivalent to surrender. Keeps client alive. def leave_game: () -> untyped # Checks whether the Player#race is known. This is false on start for Random until scouted. # # _@return_ — true if the race is Terran, Protoss or Zerg, or false unknown def race_unknown?: () -> bool # sord omit - no YARD return type given, using untyped # Initialize data on step 0 before stepping and before on_start is called def prepare_start: () -> untyped # sord omit - no YARD return type given, using untyped # Initialize step 0 after data has been gathered def started: () -> untyped # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # Moves emulation ahead and calls back #on_step # # _@return_ — observation of the game state def step_forward: () -> Api::Observation # Refreshes game state for current loop. # Will update GameState#observation and GameState#game_info # TODO: After cleaning up all the comments, review whether this is too heavy or not. #perf #clean def refresh_state: () -> void # Refreshes bot#game_info ignoring all caches def refresh_game_info: () -> void # sord omit - no YARD return type given, using untyped # If you're random, best to set #race to match after launched def set_race_for_random: () -> untyped # sord omit - no YARD return type given, using untyped # Sets enemy once #game_info becomes available on start def set_enemy: () -> untyped # sord omit - no YARD type given for "player_results", using untyped # Parses player result and neatly calls back to on_finish # If overriding this, it must manually do callback to player on_finish # # _@return_ — Api::Result::** def on_player_result: (untyped player_results) -> Symbol? # sord omit - no YARD return type given, using untyped # Callback when game status changes def on_status_change: (Symbol status) -> untyped # Determines if your game_info will be refreshed at this moment # Has a hard-capped refresh of only ever 4 steps # In general game_info is only refreshed Player::Bot reads from pathing_grid or placement_grid def game_info_stale?: () -> bool # A Hash by unit tag, holding an array of available ability ids # Synchronously calls RequestQueryAvailableAbilities and caches for this game loop. # # _@return_ — { unit_tag => [ability_id, ...], ... } def available_abilities: () -> ::Hash[Integer, ::Array[Integer]] # sord warn - Api::PlayerCommon wasn't able to be resolved to a constant in this project # An alias for observation.player_common to allow easier access to i.e. common.minerals # # _@return_ — common info such as minerals, vespene, supply def common: () -> Api::PlayerCommon attr_accessor IDENTIFIED_RACES: ::Array[Integer] # Manages connection to client and performs Requests # # _@see_ `Sc2::Connection` — and Sc2::Connection::Requests specifically attr_accessor api: (Sc2::Connection | untyped) # Realtime mode does not require stepping. When you observe the current step is returned. # # _@return_ — whether realtime is enabled (otherwise step-mode) attr_accessor realtime: (bool | untyped) # _@return_ — number of frames to step in step-mode, default 1 attr_accessor step_count: (Integer | untyped) # Enables the feature layer at 1x1 pixels. Adds additional actions (UI and Spatial) at the cost of overall performance. # Must be configured before #join_game attr_accessor enable_feature_layer: (bool | untyped) # # _@see_ `#join_game` — for options attr_accessor interface_options: ::Hash[untyped, untyped] # sord warn - Api::Race::NoRace wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Terran wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Zerg wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Protoss wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Random wasn't able to be resolved to a constant in this project # sord warn - Api::Race::NoRace wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Terran wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Zerg wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Protoss wasn't able to be resolved to a constant in this project # sord warn - Api::Race::Random wasn't able to be resolved to a constant in this project # _@return_ — if Observer # # _@return_ — if is_a? Bot, Human, BotProcess # # _@return_ — if is_a? Bot, Human, BotProcess # # _@return_ — if is_a? Bot, Human, BotProcess # # _@return_ — if specified random and in-game race hasn't been scouted yet # # _@return_ — if is_a? forgetful person attr_accessor race: (Api::Race::NoRace | Api::Race::Terran | Api::Race::Zerg | Api::Race::Protoss | Api::Race::Random)? # _@return_ — in-game name attr_accessor name: String # sord warn - Api::PlayerType::Participant wasn't able to be resolved to a constant in this project # sord warn - Api::PlayerType::Computer wasn't able to be resolved to a constant in this project # sord warn - Api::PlayerType::Observer wasn't able to be resolved to a constant in this project # sord warn - Api::PlayerType::Participant wasn't able to be resolved to a constant in this project # sord warn - Api::PlayerType::Computer wasn't able to be resolved to a constant in this project # sord warn - Api::PlayerType::Observer wasn't able to be resolved to a constant in this project # _@return_ — PlayerType attr_accessor type: (Api::PlayerType::Participant | Api::PlayerType::Computer | Api::PlayerType::Observer) # sord warn - Api::Difficulty::VeryEasy wasn't able to be resolved to a constant in this project # sord warn - Api::Difficulty::CheatInsane wasn't able to be resolved to a constant in this project # sord warn - Api::Difficulty::VeryEasy wasn't able to be resolved to a constant in this project # sord warn - Api::Difficulty::CheatInsane wasn't able to be resolved to a constant in this project # if @type is Api::PlayerType::Computer, set one of Api::Difficulty scale 1 to 10 # # _@return_ — if easiest, int 1 # # _@return_ — if toughest, int 10 # # _@see_ `Api::Difficulty` — for options attr_accessor difficulty: (Api::Difficulty::VeryEasy | Api::Difficulty::CheatInsane) # sord omit - no YARD type given for :ai_build, using untyped # # _@see_ `Api::AIBuild` — proto for options attr_accessor ai_build: untyped # _@return_ — ladder matches will set an opponent id attr_accessor opponent_id: String # An object which interacts with an SC2 client and is game-aware. class Bot < Sc2::Player include Sc2::Player::Units include Sc2::Player::Actions include Sc2::Player::Debug IDENTIFIED_RACES: untyped def initialize: (race: Integer, name: String) -> void # sord omit - no YARD return type given, using untyped # Override to customize initialization # Alias of before_join # You can enable_feature_layer=true, set step_count, define # # ```ruby # def configure # step_count = 4 # Update less frequently # enable_feature_layer = true # # end # ``` def configure: () -> untyped # sord warn - Api::Result::Victory wasn't able to be resolved to a constant in this project # sord warn - Api::Result::Defeat wasn't able to be resolved to a constant in this project # sord warn - Api::Result::Tie wasn't able to be resolved to a constant in this project # sord warn - Api::Result::Undecided wasn't able to be resolved to a constant in this project # TODO: If this suffices for Bot and Observer, they should share this code. # Initializes and refreshes game data and runs the game loop # # _@return_ — result def play: () -> (Api::Result::Victory | Api::Result::Defeat | Api::Result::Tie | Api::Result::Undecided) # sord omit - no YARD return type given, using untyped # Override to perform steps before first on_step gets called. # Current game_loop is 0 and @api is available def on_start: () -> untyped # sord omit - no YARD return type given, using untyped # Override to implement your own game logic. # Gets called whenever the game moves forward. def on_step: () -> untyped # sord omit - no YARD return type given, using untyped # Override to handle game result (:Victory/:Loss/:Tie) # Called when game has ended with a result, i.e. result = ::Victory # # _@param_ `result` — Api::Result::Victory or Api::Result::Victory::Defeat or Api::Result::Victory::Undecided # # ```ruby # def on_finish(result) # if result == :Victory # puts "Yay!" # else # puts "Lets try again!" # end # end # ``` def on_finish: (Symbol result) -> untyped # sord omit - no YARD return type given, using untyped # Called when Random race is first detected. # Override to handle race identification of random enemy. # # _@param_ `race` — Api::Race::* excl *::Random def on_random_race_detected: (Integer race) -> untyped # sord omit - no YARD return type given, using untyped # Called on step if errors are present. Equivalent of UI red text errors. # Override to read action errors. # # _@param_ `errors` def on_action_errors: (::Array[Api::ActionError] errors) -> untyped # sord warn - Api::Action wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Actions this player performed since the last Observation. # Override to read actions successfully performed # # _@param_ `actions` — a list of actions which were performed def on_actions_performed: (::Array[Api::Action] actions) -> untyped # sord omit - no YARD return type given, using untyped # Callback when observation.alerts is populated # Override to use alerts or read Player.observation.alerts # # _@param_ `alerts` — array of Api::Alert::* # # ```ruby # alerts.each do |alert| # case alert # when :NuclearLaunchDetected # pp "TAKE COVER!" # when :NydusWormDetected # pp "FIND THE WORM!" # end # end # ``` # # _@see_ `enum` — Alert in sc2api.proto for options def on_alerts: (::Array[Integer] alerts) -> untyped # sord omit - no YARD return type given, using untyped # Callback when upgrades are completed, multiple might finish on the same observation. # # _@param_ `upgrade_ids` — Api::UpgradeId::* def on_upgrades_completed: (::Array[Integer] upgrade_ids) -> untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Callback, on observation parse when iterating over every unit # Can be useful for decorating additional properties on a unit before on_step # A Sc2::Player should override this to decorate additional properties def on_parse_observation_unit: (untyped unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback for unit destroyed. Tags might be found in `previous.all_units` # This excludes unknown objects, like projectiles and only shows things the API has "seen" as a unit # Override to use in your bot class or use Player. # # _@param_ `unit` # # _@see_ `Sc2::Player::Units#units_destroyed` def on_unit_destroyed: (Api::Unit unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback for unit created. # Override to use in your bot class. # # _@param_ `unit` def on_unit_created: (Api::Unit unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback for unit type changing. # To detect certain unit creations, you should use this method to watch morphs. # Override to use in your bot class or use Player. # # _@param_ `unit` # # _@param_ `previous_unit_type_id` — Api::UnitTypeId::* def on_unit_type_changed: (Api::Unit unit, Integer previous_unit_type_id) -> untyped # sord omit - no YARD return type given, using untyped # Callback for structure building began # Override to use in your bot class. # # _@param_ `unit` def on_structure_started: (Api::Unit unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback for structure building is completed # Override to use in your bot class or use Player. # # _@param_ `unit` def on_structure_completed: (Api::Unit unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback for unit (Unit/Structure) taking damage # Override to use in your bot class or use Player. # # _@param_ `unit` # # _@param_ `amount` — of damage def on_unit_damaged: (Api::Unit unit, Integer amount) -> untyped # sord omit - no YARD return type given, using untyped # Writes the current observation as json to data/debug_observation.json # Slows step to a crawl, so don't leave this on in the ladder. def debug_json_observation: () -> untyped # sord warn - Api::DebugCommand wasn't able to be resolved to a constant in this project # Queues debug command for performing later # # _@param_ `debug_command` def queue_debug_command: (Api::DebugCommand debug_command) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints debug text top left corner # # _@param_ `text` — will respect newlines # # _@param_ `size` — of font, default 14px def debug_print: (String text, ?size: Size) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints text on screen from top and left # # _@param_ `text` — will respect newlines # # _@param_ `left_percent` — range 0..100. percent from left of screen # # _@param_ `top_percent` — range 0..100. percent from top of screen # # _@param_ `color` — default white # # _@param_ `size` — of font, default 14px def debug_text_screen: ( String text, ?left_percent: Numeric, ?top_percent: Numeric, ?color: Api::Color?, ?size: Size ) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints text on screen at 3d world position # # _@param_ `text` — will respect newlines # # _@param_ `point` — point in the world, i.e. unit.pos # # _@param_ `color` — default white # # _@param_ `size` — of font, default 14px def debug_text_world: ( String text, point: Api::Point, ?color: Api::Color?, ?size: Size ) -> void # Draws a line between two Api::Point's for color # # _@param_ `p0` — the first point # # _@param_ `p1` — the second point # # _@param_ `color` — default white def debug_draw_line: (p0: Api::Point, p1: Api::Point, ?color: Api::Color?) -> void # Draws a box around position xy at base of z. Good for structure boxing. # # _@param_ `point` # # _@param_ `radius` — default one tile wide, 1.0 # # _@param_ `color` — default white. min(r,b) is used for both r&b # # ```ruby # # Draws a box on structure placement grid # debug_draw_box(point: unit.pos, radius: unit.footprint_radius) # ``` # # _@note_ — Api::Color RGB is broken for this command. Will use min(r,b) # # _@note_ — Z index is elevated 0.02 so the line is visible and doesn't clip through terrain def debug_draw_box: (point: Api::Point, ?radius: Float, ?color: Api::Color?) -> void # Debug draws a sphere at position with a radius in color # # _@param_ `point` # # _@param_ `radius` — default one tile wide, 1.0 # # _@param_ `color` — default white def debug_draw_sphere: (point: Api::Point, ?radius: Float, ?color: Api::Color?) -> void # Possible values: # Api::DebugGameState::Show_map # Api::DebugGameState::Control_enemy # Api::DebugGameState::Food # Api::DebugGameState::Free # Api::DebugGameState::All_resources # Api::DebugGameState::God # Api::DebugGameState::Minerals # Api::DebugGameState::Gas # Api::DebugGameState::Cooldown # Api::DebugGameState::Tech_tree # Api::DebugGameState::Upgrade # Api::DebugGameState::Fast_build # # _@param_ `command` — one of Api::DebugGameState::* def debug_game_state: (Integer command) -> void # Spawns a quantity of units under an owner at position given # # _@param_ `unit_type_id` — Api::UnitTypeId::* # # _@param_ `owner` — typically you are 1 and 2 is enemy (see @common.player_id) # # _@param_ `pos` — position in 2d # # _@param_ `quantity` — default 1 def debug_create_unit: ( unit_type_id: Integer, owner: Integer, pos: Api::Point2D, ?quantity: Integer ) -> void # Kills a target unit or unit tag # # _@param_ `unit_tags` — one or many unit tags to kill def debug_kill_unit: (unit_tags: (Integer | ::Array[Integer])) -> void # Hangs, crashes and exits the Sc2 client. DO NOT USE. # # _@param_ `test` — one of Api::DebugTestProcess::Test::Crash, Api::DebugTestProcess::Test::Hang, Api::DebugTestProcess::Test::Exit # # _@param_ `delay_ms` — default 0, how long this test is delayed def debug_test_process: (test: Integer, ?delay_ms: Integer) -> void # sord omit - no YARD return type given, using untyped # Useful only for single-player "curriculum" maps # # _@param_ `score` — sets the score def debug_set_score: (?score: Float) -> untyped # Ends game with a specified result of either Surrender or DeclareVictory # # _@param_ `end_result` — either 1/2. Api::DebugEndGame::EndResult::Surrender or Api::DebugEndGame::EndResult::DeclareVictory def debug_end_game: (end_result: Integer) -> void # Sets unit_value Energy, Life or Shields for a specific unit tag to given value # # _@param_ `unit_tag` # # _@param_ `unit_value` — 1=Energy,2=Life,3=Shields one of Api::DebugSetUnitValue::UnitValue::* # # _@param_ `value` — the value which the attribute will be set to def debug_set_unit_value: (unit_tag: Integer, unit_value: Integer, value: Float) -> void # sord omit - no YARD return type given, using untyped # Sends actions via api and flushes debug_commands_queue def perform_debug_commands: () -> untyped # Empties and resets @debug_queue def clear_debug_command_queue: () -> void # sord warn - Api::Action wasn't able to be resolved to a constant in this project # Queues action for performing end of step # # _@param_ `action` def queue_action: (Api::Action action) -> void # sord omit - no YARD return type given, using untyped # Queues a Api::ActionRaw. Perform ability on unit_tags optionally on target_world_space_pos/target_unit_tag # # _@param_ `unit_tags` # # _@param_ `ability_id` # # _@param_ `queue_command` — shift+command # # _@param_ `target_world_space_pos` # # _@param_ `target_unit_tag` def action_raw_unit_command: ( unit_tags: ::Array[Integer], ability_id: Integer, ?queue_command: bool, ?target_world_space_pos: Api::Point2D?, ?target_unit_tag: Integer? ) -> untyped # sord omit - no YARD return type given, using untyped # Queues a Api::ActionRawUnitCommand. # Send accepts a Api::Unit, tag or tags and targets Api::Point2D or unit.tag # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `ability_id` # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def action: ( units: (::Array[Integer] | Integer | Api::Unit), ability_id: Integer, ?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool ) -> untyped # sord omit - no YARD return type given, using untyped # Builds target unit type using units as source at optional target # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — is a unit tag or a Api::Point2D. Nil for addons/orbital # # _@param_ `queue_command` — shift+command def build: ( units: (::Array[Integer] | Integer | Api::Unit), unit_type_id: Integer, ?target: (Api::Point2D | Integer)?, ?queue_command: bool ) -> untyped # sord omit - no YARD return type given, using untyped # Warps in unit type at target (location or pylon) with optional source units (warp gates) # When not specifying the specific warp gate(s), all warpgates will be used # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `queue_command` — shift+command # # _@param_ `target` — is a unit tag or a Api::Point2D # # _@param_ `units` def warp: ( unit_type_id: Integer, target: (Api::Point2D | Integer), queue_command: bool, ?units: (::Array[Integer] | Integer | Api::Unit)? ) -> untyped # sord omit - no YARD return type given, using untyped # Research a specific upgrade # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `upgrade_id` — Api::UpgradeId to research # # _@param_ `queue_command` — shift+command def research: (units: (::Array[Integer] | Integer | Api::Unit), upgrade_id: Integer, ?queue_command: bool) -> untyped # Toggles auto-cast ability for units # # _@param_ `units` — can be an Api::Unit, array of Tags or single Tag # # _@param_ `ability_id` def action_raw_toggle_autocast: (units: (::Array[Integer] | Integer | Api::Unit), ability_id: Integer) -> void # Toggles auto-cast ability for units # # _@param_ `point` def action_raw_camera_move: (point: Api::Point) -> void # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # Issues spatial unit command. Target is either target_screen_coord or target_minimap_coord. # # _@param_ `ability_id` # # _@param_ `target_screen_coord` # # _@param_ `target_minimap_coord` # # _@param_ `queue_command` — shift+command def action_spatial_unit_command: ( ability_id: Api::AbilityId, ?target_screen_coord: Api::Point2I?, ?target_minimap_coord: Api::Point2I?, ?queue_command: bool ) -> void # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # Simulates a click on the minimap to move the camera. # # _@param_ `center_minimap` def action_spatial_camera_move: (center_minimap: Api::Point2I) -> void # Issues spatial unit select point command. Target is either target_screen_coord or target_minimap_coord. # # _@param_ `type` — 1,2,3,4 = Api::ActionSpatialUnitSelectionPoint::Type::* enum Type { Select = 1; // Equivalent to normal click. Changes selection to unit. Toggle = 2; // Equivalent to shift+click. Toggle selection of unit. AllType = 3; // Equivalent to control+click. Selects all units of a given type. AddAllType = 4; // Equivalent to shift+control+click. Selects all units of a given type. } # # _@param_ `selection_screen_coord` def action_spatial_unit_selection_point: (?_type: Integer, ?selection_screen_coord: Api::PointI?) -> void # sord warn - Api::RectangleI wasn't able to be resolved to a constant in this project # Issue rectangle select # # _@param_ `selection_screen_coord` — rectangle coordinates # # _@param_ `selection_add` — default false Equivalent to shift+drag. Adds units to selection. default false def action_spatial_unit_selection_rect: (selection_screen_coord: Api::RectangleI, ?selection_add: bool) -> void # Perform action on control group like setting or recalling, use in conjunction with unit selection. # Populated if Feature Layer or Render interface is enabled. # # _@param_ `action` — 1-5 = Api::ActionControlGroup::ControlGroupAction::* enum ControlGroupAction { Recall = 1; // Equivalent to number hotkey. Replaces current selection with control group. Set = 2; // Equivalent to Control + number hotkey. Sets control group to current selection. Append = 3; // Equivalent to Shift + number hotkey. Adds current selection into control group. SetAndSteal = 4; // Equivalent to Control + Alt + number hotkey. Sets control group to current selection. Units are removed from other control groups. AppendAndSteal = 5; // Equivalent to Shift + Alt + number hotkey. Adds current selection into control group. Units are removed from other control groups. } # # _@param_ `control_group_index` — 0-9 def action_ui_control_group: (action: Integer, control_group_index: Integer) -> void # Selects army (F2) # # _@param_ `selection_add` — default false To add to other selected items def action_ui_select_army: (?selection_add: bool) -> void # Selects warp gates (Protoss) # # _@param_ `selection_add` — default false To add to other selected items def action_ui_select_warp_gates: (?selection_add: bool) -> void # Selects larva (Zerg) def action_ui_select_larva: () -> void # sord omit - no YARD return type given, using untyped # Select idle workers # # _@param_ `type` — 1-4 = Api::ActionSelectIdleWorker::Type::* enum Type { Set = 1; // Equivalent to click with no modifiers. Replaces selection with single idle worker. Add = 2; // Equivalent to shift+click. Adds single idle worker to current selection. All = 3; // Equivalent to control+click. Selects all idle workers. AddAll = 4; // Equivalent to shift+control+click. Adds all idle workers to current selection. } def action_ui_select_idle_worker: (_type: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Multi-panel actions for select/deselect # message ActionMultiPanel { # optional Type type = 1; # optional int32 unit_index = 2; # } # # _@param_ `type` — 1-4 = Api::ActionMultiPanel::Type::* # # _@param_ `unit_index` — n'th unit on panel enum Type { SingleSelect = 1; // Click on icon DeselectUnit = 2; // Shift Click on icon SelectAllOfType = 3; // Control Click on icon. DeselectAllOfType = 4; // Control+Shift Click on icon. } def action_ui_multi_panel: (_type: Integer, unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Cargo panel actions for unloading units. # # _@param_ `unit_index` — index of unit to unload def action_ui_cargo_panel_unload: (unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Remove unit from production queue # # _@param_ `unit_index` — target unit index def action_ui_production_panel_remove_from_queue: (unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Toggle autocast on selected unit. Also possible with raw actions using a unit target. # # _@param_ `ability_id` — Api::AbilityId::* ability def action_ui_toggle_autocast: (ability_id: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Send a chat message # # _@param_ `message` — to send # # _@param_ `channel` — 1-2, default:Team Api::ActionChat::Channel::Broadcast = 1, Api::ActionChat::Channel::Team = 2 def action_chat: (String message, ?channel: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Sends actions via api and flushes action_queue def perform_actions: () -> untyped # Empties and resets @action_queue def clear_action_queue: () -> void # Returns an array of unit tags from a variety of sources # noinspection RubyMismatchedReturnType # # _@param_ `source` — unit tag, tags, unit or unit group # # _@return_ — unit tag array def unit_tags_from_source: ((Integer | ::Array[Integer] | Api::Unit | Sc2::UnitGroup) source) -> ::Array[Integer] # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if this upgrade has finished researching def upgrade_completed?: (untyped upgrade_id) -> bool # Returns the upgrade ids which are researching or queued # Not set for enemy. def upgrades_in_progress: () -> ::Array[Integer] # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if the upgrade is busy researching def upgrade_in_progress?: (untyped upgrade_id) -> bool # sord omit - no YARD type given for "unit_type_id", using untyped # For this unit type, tells you how many are in progress by checking orders for all it's sources. def units_in_progress: (untyped unit_type_id) -> Integer # Returns static [Api::UnitTypeData] for a unit # # _@param_ `unit` — Api::UnitTypeId or Api::Unit def unit_data: ((Integer | Api::Unit) unit) -> Api::UnitTypeData # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # Returns static [Api::AbilityData] for an ability # # _@param_ `ability_id` — Api::AbilityId::* def ability_data: (Integer ability_id) -> Api::AbilityData # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # Returns static [Api::UpgradeData] for an upgrade id # # _@param_ `upgrade_id` — Api::UpgradeId::* def upgrade_data: (Integer upgrade_id) -> Api::UpgradeData # Checks unit data for an attribute value # # _@param_ `unit` — Api::UnitTypeId or Api::Unit # # _@param_ `attribute` — Api::Attribute, i.e. Api::Attribute::Mechanical or :Mechanical # # _@return_ — whether unit has attribute # # ```ruby # unit_has_attribute?(Api::UnitTypeId::SCV, Api::Attribute::Mechanical) # unit_has_attribute?(units.workers.first, :Mechanical) # unit_has_attribute?(Api::UnitTypeId::SCV, :Mechanical) # ``` def unit_has_attribute?: ((Integer | Api::Unit) unit, Symbol attribute) -> bool # Creates a unit group from all_units with matching tag # # _@param_ `tags` — array of unit tags def unit_group_from_tags: (::Array[Integer] tags) -> Sc2::UnitGroup # sord omit - no YARD type given for "unit_type_id", using untyped # Sums the cost (mineral/vespene/supply) of unit type used for internal spend trackers # This is called internally when building/morphing/training def subtract_cost: (untyped unit_type_id) -> void # sord omit - no YARD type given for "unit_type_id:", using untyped # sord omit - no YARD type given for "quantity:", using untyped # Checks whether you have the resources to construct quantity of unit type def can_afford?: (unit_type_id: untyped, ?quantity: untyped) -> bool # sord omit - no YARD type given for "upgrade_id", using untyped # Checks whether you have the resources to def can_afford_upgrade?: (untyped upgrade_id) -> bool # Returns whether Query Available Ability is true for unit and tag # Queries API if necessary. Uses batching in the background. # # _@param_ `unit_tag` # # _@param_ `ability_id` def unit_ability_available?: (unit_tag: Integer, ability_id: Integer) -> bool # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Divides raw data units into various attributes on every step # Note, this needs to be fast. # # _@param_ `observation` def parse_observation_units: (Api::Observation observation) -> untyped # Returns alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def own_alliance: () -> Symbol # Returns enemy alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def enemy_alliance: () -> Symbol # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Issues units/structure callbacks for units which are new def issue_new_unit_callbacks: (untyped unit) -> untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD type given for "previous_unit", using untyped # sord omit - no YARD return type given, using untyped # Issues callbacks for units over time, such as damaged or type changed def issue_existing_unit_callbacks: (untyped unit, untyped previous_unit) -> untyped attr_accessor enemy: (Sc2::Player::Enemy | untyped) # _@return_ — the previous state of the game attr_accessor previous: (Sc2::Player::PreviousState | untyped) # _@return_ — geo and map helper functions attr_accessor geo: (Sc2::Player::Geo | untyped) end # A specialized type of player instance which each player has one of # This should never be initialized by hand class Enemy < Sc2::Player include Sc2::Player::Units IDENTIFIED_RACES: untyped # sord warn - Api::PlayerInfo wasn't able to be resolved to a constant in this project # Creates an Enemy object after game has started using Api::GameInfo's Api::PlayerInfo # # _@param_ `player_info` # # _@return_ — your opposing player def self.from_proto: (?player_info: Api::PlayerInfo?) -> Sc2::Player::Enemy # Will attempt to loop over player units and set its race if it can detect. # Generally only used for enemy # # _@return_ — Api::Race if race detected, false otherwise def detect_race_from_units: () -> (bool | Integer) # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if this upgrade has finished researching def upgrade_completed?: (untyped upgrade_id) -> bool # Returns the upgrade ids which are researching or queued # Not set for enemy. def upgrades_in_progress: () -> ::Array[Integer] # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if the upgrade is busy researching def upgrade_in_progress?: (untyped upgrade_id) -> bool # sord omit - no YARD type given for "unit_type_id", using untyped # For this unit type, tells you how many are in progress by checking orders for all it's sources. def units_in_progress: (untyped unit_type_id) -> Integer # Returns static [Api::UnitTypeData] for a unit # # _@param_ `unit` — Api::UnitTypeId or Api::Unit def unit_data: ((Integer | Api::Unit) unit) -> Api::UnitTypeData # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # Returns static [Api::AbilityData] for an ability # # _@param_ `ability_id` — Api::AbilityId::* def ability_data: (Integer ability_id) -> Api::AbilityData # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # Returns static [Api::UpgradeData] for an upgrade id # # _@param_ `upgrade_id` — Api::UpgradeId::* def upgrade_data: (Integer upgrade_id) -> Api::UpgradeData # Checks unit data for an attribute value # # _@param_ `unit` — Api::UnitTypeId or Api::Unit # # _@param_ `attribute` — Api::Attribute, i.e. Api::Attribute::Mechanical or :Mechanical # # _@return_ — whether unit has attribute # # ```ruby # unit_has_attribute?(Api::UnitTypeId::SCV, Api::Attribute::Mechanical) # unit_has_attribute?(units.workers.first, :Mechanical) # unit_has_attribute?(Api::UnitTypeId::SCV, :Mechanical) # ``` def unit_has_attribute?: ((Integer | Api::Unit) unit, Symbol attribute) -> bool # Creates a unit group from all_units with matching tag # # _@param_ `tags` — array of unit tags def unit_group_from_tags: (::Array[Integer] tags) -> Sc2::UnitGroup # sord omit - no YARD type given for "unit_type_id", using untyped # Sums the cost (mineral/vespene/supply) of unit type used for internal spend trackers # This is called internally when building/morphing/training def subtract_cost: (untyped unit_type_id) -> void # sord omit - no YARD type given for "unit_type_id:", using untyped # sord omit - no YARD type given for "quantity:", using untyped # Checks whether you have the resources to construct quantity of unit type def can_afford?: (unit_type_id: untyped, ?quantity: untyped) -> bool # sord omit - no YARD type given for "upgrade_id", using untyped # Checks whether you have the resources to def can_afford_upgrade?: (untyped upgrade_id) -> bool # Returns whether Query Available Ability is true for unit and tag # Queries API if necessary. Uses batching in the background. # # _@param_ `unit_tag` # # _@param_ `ability_id` def unit_ability_available?: (unit_tag: Integer, ability_id: Integer) -> bool # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Divides raw data units into various attributes on every step # Note, this needs to be fast. # # _@param_ `observation` def parse_observation_units: (Api::Observation observation) -> untyped # Returns alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def own_alliance: () -> Symbol # Returns enemy alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def enemy_alliance: () -> Symbol # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Issues units/structure callbacks for units which are new def issue_new_unit_callbacks: (untyped unit) -> untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD type given for "previous_unit", using untyped # sord omit - no YARD return type given, using untyped # Issues callbacks for units over time, such as damaged or type changed def issue_existing_unit_callbacks: (untyped unit, untyped previous_unit) -> untyped end # @private # Launches an external bot, such as a python practice partner by triggering an exteral executable. # Allows using CLI launch options hash or "laddorconfig.json"-complient launcher. class BotProcess < Sc2::Player IDENTIFIED_RACES: untyped def initialize: (race: Integer, name: String) -> void end # A Computer opponent using the game's built-in AI for a Match class Computer < Sc2::Player IDENTIFIED_RACES: untyped # sord warn - Api::AIBuild::RandomBuild wasn't able to be resolved to a constant in this project # _@param_ `race` — (see Api::Race) # # _@param_ `difficulty` — see Api::Difficulty::VeryEasy,Api::Difficulty::VeryHard,etc.) # # _@param_ `ai_build` — (see Api::AIBuild) # # _@param_ `name` def initialize: ( race: Integer, ?difficulty: Integer, ?ai_build: Api::AIBuild::RandomBuild, ?name: String ) -> void # Returns whether or not the player requires a sc2 instance # # _@return_ — false always for Player::Computer def requires_client?: () -> bool def connect: (host: String, port: Integer) -> Sc2::Connection end # A human player for a Match class Human < Sc2::Player IDENTIFIED_RACES: untyped def initialize: (race: Integer, name: String) -> void end # A spectator for a Match class Observer < Sc2::Player IDENTIFIED_RACES: untyped def initialize: (?name: String?) -> void end # Holds map and geography helper functions class Geo # sord omit - no YARD type given for "bot", using untyped def initialize: (untyped _bot) -> void # Gets the map tile width. Range is 1-255. # Effected by crop_to_playable_area def map_width: () -> Integer # Gets the map tile height. Range is 1-255. # Effected by crop_to_playable_area def map_height: () -> Integer # Center of the map def map_center: () -> Api::Point2D # Returns zero to map_width as range # # _@return_ — 0 to map_width def map_range_x: () -> ::Range[untyped] # Returns zero to map_height as range # # _@return_ — 0 to map_height def map_range_y: () -> ::Range[untyped] # Returns zero to map_width-1 as range def map_tile_range_x: () -> ::Range[untyped] # Returns zero to map_height-1 as range def map_tile_range_y: () -> ::Range[untyped] # Returns whether a x/y (integer) is placeable as per minimap image data. # It does not say whether a position is occupied by another building. # One pixel covers one whole block. Corrects floats on your behalf # # _@param_ `x` # # _@param_ `y` # # _@return_ — whether tile is placeable? # # _@see_ `Sc2::Player#pathable?` — for detecting obstructions def placeable?: (x: (Float | Integer), y: (Float | Integer)) -> bool # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Returns a parsed placement_grid from bot.game_info.start_raw. # Each value in [row][column] holds a boolean value represented as an integer # It does not say whether a position is occupied by another building. # One pixel covers one whole block. Rounds fractionated positions down. def parsed_placement_grid: () -> Numo::Bit # Whether this tile is where an expansion is supposed to be placed. # To see if a unit/structure is blocking an expansion, pass their coordinates to this method. # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if location has creep on it def expo_placement?: (x: (Float | Integer), y: (Float | Integer)) -> bool # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Returns a grid where only the expo locations are marked def expo_placement_grid: () -> Numo::Bit # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Returns a grid where only placement obstructions are marked # includes Tumors and lowered Supply Depots def placement_obstruction_grid: () -> Numo::Bit # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Returns a grid where powered locations are marked true def parsed_power_grid: () -> Numo::Bit # Returns whether a x/y block is powered. Only fully covered blocks are true. # One pixel covers one whole block. Corrects float inputs on your behalf. # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if location is powered def powered?: (x: (Float | Integer), y: (Float | Integer)) -> bool # Returns whether a x/y block is pathable as per minimap # One pixel covers one whole block. Corrects float inputs on your behalf. # # _@param_ `x` # # _@param_ `y` # # _@return_ — whether tile is patahble def pathable?: (x: (Float | Integer), y: (Float | Integer)) -> bool # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Gets the pathable areas as things stand right now in the game # Buildings, minerals, structures, etc. all result in a nonpathable place # # _@return_ — Numo array # # ```ruby # parsed_pathing_grid[0,0] # reads bottom left corner # # use helper function #pathable # pathable?(x: 0, y: 0) # reads bottom left corner # ``` def parsed_pathing_grid: () -> Numo::Bit # sord omit - no YARD return type given, using untyped # Clears pathing-grid dependent objects like placements. # Called when pathing grid gets updated def clear_cached_pathing_grid: () -> untyped # Returns the terrain height (z) at position x and y # Granularity is per placement grid block, since this comes from minimap image data. # # _@param_ `x` # # _@param_ `y` # # _@return_ — z axis position between -16 and 16 def terrain_height: (x: (Float | Integer), y: (Float | Integer)) -> Float # Returns the terrain height (z) at position x and y for a point # # _@param_ `position` # # _@return_ — z axis position between -16 and 16 def terrain_height_for_pos: (Sc2::Position position) -> Float # sord warn - Numo::SFloat wasn't able to be resolved to a constant in this project # Returns a parsed terrain_height from bot.game_info.start_raw. # Each value in [row][column] holds a float value which is the z height # # _@return_ — Numo array def parsed_terrain_height: () -> Numo::SFloat # Returns one of three Integer visibility indicators at tile for x & y # # _@param_ `x` # # _@param_ `y` # # _@return_ — 0=Hidden,1= Snapshot,2=Visible def visibility: (x: (Float | Integer), y: (Float | Integer)) -> Integer # Returns whether the point (tile) is currently in vision # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if fog is completely lifted def map_visible?: (x: (Float | Integer), y: (Float | Integer)) -> bool # Returns whether point (tile) has been seen before or currently visible # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if partially or fully lifted fog def map_seen?: (x: (Float | Integer), y: (Float | Integer)) -> bool # Returns whether the point (tile) has never been seen/explored before (dark fog) # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if fog of war is fully dark def map_unseen?: (x: (Float | Integer), y: (Float | Integer)) -> bool # sord warn - Numo::SFloat wasn't able to be resolved to a constant in this project # Returns a parsed map_state.visibility from bot.observation.raw_data. # Each value in [row][column] holds one of three integers (0,1,2) to flag a vision type # # _@return_ — Numo array # # _@see_ `#visibility` — for reading from this value def parsed_visibility_grid: () -> Numo::SFloat # Returns whether a tile has creep on it, as per minimap # One pixel covers one whole block. Corrects float inputs on your behalf. # # _@param_ `x` # # _@param_ `y` # # _@return_ — true if location has creep on it def creep?: (x: (Float | Integer), y: (Float | Integer)) -> bool # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # Provides parsed minimap representation of creep spread # Caches for 4 frames # # _@return_ — Numo array def parsed_creep: () -> Numo::Bit # sord warn - Numo::Bit wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # TODO: Remove this method if it has no use. Build points uses this code directly for optimization. # Reduce the dimensions of a grid by merging cells using length x length squares. # Merged cell keeps it's 1 value only if all merged cells are equal to 1, else 0 # # _@param_ `input_grid` — Bit grid like parsed_pathing_grid or parsed_placement_grid # # _@param_ `length` — how many cells to merge, i.e. 3 for finding 3x3 placement def divide_grid: (Numo::Bit input_grid, Integer length) -> untyped # Returns own 2d start position as set by initial camera # This differs from position of first base structure def start_position: () -> Api::Point2D # Returns the enemy 2d start position def enemy_start_position: () -> Api::Point2D # Gets expos and surrounding minerals # The index is a build location for an expo and the value is a UnitGroup, which has minerals and geysers # # _@return_ — Location => UnitGroup of resources (minerals+geysers) # # ```ruby # random_expo = geo.expansions.keys.sample #=> Point2D # expo_resources = geo.expansions[random_expo] #=> UnitGroup # alive_minerals = expo_resources.minerals & neutral.minerals # geysers = expo_resources.geysers # ``` def expansions: () -> ::Hash[Api::Point2D, UnitGroup] # Returns a list of 2d points for expansion build locations # Does not contain mineral info, but the value can be checked against geo.expansions # # _@return_ — points where expansions can be placed # # ```ruby # random_expo = expansion_points.sample # expo_resources = geo.expansions[random_expo] # ``` def expansion_points: () -> ::Array[Api::Point2D] # Returns a slice of #expansions where a base hasn't been built yet # The has index is a build position and the value is a UnitGroup of resources for the base # # _@return_ — Location => UnitGroup of resources (minerals+geysers) # # ```ruby # # Lets find the nearest unoccupied expo # expo_pos = expansions_unoccupied.keys.min { |p2d| p2d.distance_to(structures.hq.first) } # # What minerals/geysers does it have? # puts expansions_unoccupied[expo_pos].minerals # or expansions[expo_pos]... => UnitGroup # puts expansions_unoccupied[expo_pos].geysers # or expansions[expo_pos]... => UnitGroup # ``` def expansions_unoccupied: () -> ::Hash[Api::Point2D, UnitGroup] # Gets minerals for a base or base position # # _@param_ `base` — base Unit or Position # # _@return_ — UnitGroup of minerals for the base def minerals_for_base: ((Api::Unit | Sc2::Position) base) -> Sc2::UnitGroup # Gets geysers for a base or base position # # _@param_ `base` — base Unit or Position # # _@return_ — UnitGroup of geysers for the base def geysers_for_base: ((Api::Unit | Sc2::Position) base) -> Sc2::UnitGroup # Gets geysers which have not been taken for a base or base position # # _@param_ `base` — base Unit or Position # # _@return_ — UnitGroup of geysers for the base def geysers_open_for_base: ((Api::Unit | Sc2::Position) base) -> Sc2::UnitGroup # _@param_ `base` — base Unit or Position # # _@return_ — UnitGroup of resources (minerals+geysers) def resources_for_base: ((Api::Unit | Sc2::Position) base) -> Sc2::UnitGroup # Gets gasses for a base or base position # # _@param_ `base` — base Unit or Position # # _@return_ — UnitGroup of geysers for the base def gas_for_base: ((Api::Unit | Sc2::Position) base) -> Sc2::UnitGroup # sord omit - no YARD type given for "in_power:", using untyped # Gets buildable point grid for squares of size, i.e. 3 = 3x3 placements # Uses pathing grid internally, to ignore taken positions # Does not query the api and is generally fast. # # _@param_ `length` — length of the building, 2 for depot/pylon, 3 for rax/gate # # _@param_ `on_creep` — whether this build location should be on creep # # _@return_ — Array of [x,y] tuples def build_coordinates: (length: Integer, ?on_creep: bool, ?in_power: untyped) -> ::Array[::Array[[Float, Float]]] # Gets a buildable location for a square of length, near target. Chooses from random amount of nearest locations. # For robustness, it is advised to set `random` to, i.e. 3, to allow choosing the 3 nearest possible places, should one location be blocked. # For zerg, the buildable locations are only on creep. # Internally creates a kdtree for building locations based on pathable, placeable and creep # # _@param_ `length` — length of the building, 2 for depot/pylon, 3 for rax/gate # # _@param_ `target` — near where to find a placement # # _@param_ `random` — number of nearest points to randomly choose from. 1 for nearest point. # # _@param_ `in_power` — whether this must be on a power field # # _@return_ — buildable location, nil if no buildable location found def build_placement_near: ( length: Integer, target: (Api::Unit | Sc2::Position), ?random: Integer, ?in_power: bool ) -> Api::Point2D? # Draws a grid within a unit (pylon/prisms) radius, then selects points which are placeable # # _@param_ `source` — either a pylon or a prism # # _@param_ `unit_type_id` — optionally, the unit you wish to place. Stalkers are widest, so use default nil for a mixed composition warp # # _@return_ — an array of 2d points where theoretically placeable def warp_points: (source: Api::Unit, ?unit_type_id: Api::Unit?) -> ::Array[Api::Point2D] # Finds points in a straight line. # In a line, on the angle of source->target point, starting at source+offset, in increments find points on the line up to max distance # # _@param_ `source` — location from which we go # # _@param_ `target` — location towards which we go # # _@param_ `offset` — how far from source to start # # _@param_ `increment` — how far apart to gets, i.e. increment = unit.radius*2 to space units in a line # # _@param_ `count` — number of points to retrieve # # _@return_ — points up to a max of count def points_nearest_linear: ( source: Sc2::Position, target: Sc2::Position, ?offset: Float, ?increment: Float, ?count: Integer ) -> ::Array[Api::Point2D] # Gets a random point near a location with a positive/negative offset applied to both x and y # # _@param_ `pos` # # _@param_ `offset` # # ```ruby # Randomly randomly adjust both x and y by a range of -3.5 or +3.5 # geo.point_random_near(point: structures.hq.first, offset: 3.5) # ``` def point_random_near: (pos: Sc2::Position, ?offset: Float) -> Api::Point2D # _@param_ `pos` # # _@param_ `radius` def point_random_on_circle: (pos: Sc2::Position, ?radius: Float) -> Api::Point2D # _@return_ — player with active connection attr_accessor bot: (Sc2::Player | untyped) end # WARNING! Debug methods will not be available on Ladder # This provides debug helper functions for RequestDebug module Debug # sord warn - Api::DebugCommand wasn't able to be resolved to a constant in this project # Queues debug command for performing later # # _@param_ `debug_command` def queue_debug_command: (Api::DebugCommand debug_command) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints debug text top left corner # # _@param_ `text` — will respect newlines # # _@param_ `size` — of font, default 14px def debug_print: (String text, ?size: Size) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints text on screen from top and left # # _@param_ `text` — will respect newlines # # _@param_ `left_percent` — range 0..100. percent from left of screen # # _@param_ `top_percent` — range 0..100. percent from top of screen # # _@param_ `color` — default white # # _@param_ `size` — of font, default 14px def debug_text_screen: ( String text, ?left_percent: Numeric, ?top_percent: Numeric, ?color: Api::Color?, ?size: Size ) -> void # sord warn - Size wasn't able to be resolved to a constant in this project # Prints text on screen at 3d world position # # _@param_ `text` — will respect newlines # # _@param_ `point` — point in the world, i.e. unit.pos # # _@param_ `color` — default white # # _@param_ `size` — of font, default 14px def debug_text_world: ( String text, point: Api::Point, ?color: Api::Color?, ?size: Size ) -> void # Draws a line between two Api::Point's for color # # _@param_ `p0` — the first point # # _@param_ `p1` — the second point # # _@param_ `color` — default white def debug_draw_line: (p0: Api::Point, p1: Api::Point, ?color: Api::Color?) -> void # Draws a box around position xy at base of z. Good for structure boxing. # # _@param_ `point` # # _@param_ `radius` — default one tile wide, 1.0 # # _@param_ `color` — default white. min(r,b) is used for both r&b # # ```ruby # # Draws a box on structure placement grid # debug_draw_box(point: unit.pos, radius: unit.footprint_radius) # ``` # # _@note_ — Api::Color RGB is broken for this command. Will use min(r,b) # # _@note_ — Z index is elevated 0.02 so the line is visible and doesn't clip through terrain def debug_draw_box: (point: Api::Point, ?radius: Float, ?color: Api::Color?) -> void # Debug draws a sphere at position with a radius in color # # _@param_ `point` # # _@param_ `radius` — default one tile wide, 1.0 # # _@param_ `color` — default white def debug_draw_sphere: (point: Api::Point, ?radius: Float, ?color: Api::Color?) -> void # Possible values: # Api::DebugGameState::Show_map # Api::DebugGameState::Control_enemy # Api::DebugGameState::Food # Api::DebugGameState::Free # Api::DebugGameState::All_resources # Api::DebugGameState::God # Api::DebugGameState::Minerals # Api::DebugGameState::Gas # Api::DebugGameState::Cooldown # Api::DebugGameState::Tech_tree # Api::DebugGameState::Upgrade # Api::DebugGameState::Fast_build # # _@param_ `command` — one of Api::DebugGameState::* def debug_game_state: (Integer command) -> void # Spawns a quantity of units under an owner at position given # # _@param_ `unit_type_id` — Api::UnitTypeId::* # # _@param_ `owner` — typically you are 1 and 2 is enemy (see @common.player_id) # # _@param_ `pos` — position in 2d # # _@param_ `quantity` — default 1 def debug_create_unit: ( unit_type_id: Integer, owner: Integer, pos: Api::Point2D, ?quantity: Integer ) -> void # Kills a target unit or unit tag # # _@param_ `unit_tags` — one or many unit tags to kill def debug_kill_unit: (unit_tags: (Integer | ::Array[Integer])) -> void # Hangs, crashes and exits the Sc2 client. DO NOT USE. # # _@param_ `test` — one of Api::DebugTestProcess::Test::Crash, Api::DebugTestProcess::Test::Hang, Api::DebugTestProcess::Test::Exit # # _@param_ `delay_ms` — default 0, how long this test is delayed def debug_test_process: (test: Integer, ?delay_ms: Integer) -> void # sord omit - no YARD return type given, using untyped # Useful only for single-player "curriculum" maps # # _@param_ `score` — sets the score def debug_set_score: (?score: Float) -> untyped # Ends game with a specified result of either Surrender or DeclareVictory # # _@param_ `end_result` — either 1/2. Api::DebugEndGame::EndResult::Surrender or Api::DebugEndGame::EndResult::DeclareVictory def debug_end_game: (end_result: Integer) -> void # Sets unit_value Energy, Life or Shields for a specific unit tag to given value # # _@param_ `unit_tag` # # _@param_ `unit_value` — 1=Energy,2=Life,3=Shields one of Api::DebugSetUnitValue::UnitValue::* # # _@param_ `value` — the value which the attribute will be set to def debug_set_unit_value: (unit_tag: Integer, unit_value: Integer, value: Float) -> void # sord omit - no YARD return type given, using untyped # Sends actions via api and flushes debug_commands_queue def perform_debug_commands: () -> untyped # Empties and resets @debug_queue def clear_debug_command_queue: () -> void # sord omit - no YARD type given for :debug_command_queue, using untyped # Holds debug commands which will be queued off each time we step forward attr_accessor debug_command_queue: untyped # sord warn - Api::Action wasn't able to be resolved to a constant in this project # sord warn - Api::Action wasn't able to be resolved to a constant in this project attr_accessor debug_commands_queue: ::Array[Api::Action] end # Helper methods for working with units module Units # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if this upgrade has finished researching def upgrade_completed?: (untyped upgrade_id) -> bool # Returns the upgrade ids which are researching or queued # Not set for enemy. def upgrades_in_progress: () -> ::Array[Integer] # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if the upgrade is busy researching def upgrade_in_progress?: (untyped upgrade_id) -> bool # sord omit - no YARD type given for "unit_type_id", using untyped # For this unit type, tells you how many are in progress by checking orders for all it's sources. def units_in_progress: (untyped unit_type_id) -> Integer # Returns static [Api::UnitTypeData] for a unit # # _@param_ `unit` — Api::UnitTypeId or Api::Unit def unit_data: ((Integer | Api::Unit) unit) -> Api::UnitTypeData # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # Returns static [Api::AbilityData] for an ability # # _@param_ `ability_id` — Api::AbilityId::* def ability_data: (Integer ability_id) -> Api::AbilityData # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # Returns static [Api::UpgradeData] for an upgrade id # # _@param_ `upgrade_id` — Api::UpgradeId::* def upgrade_data: (Integer upgrade_id) -> Api::UpgradeData # Checks unit data for an attribute value # # _@param_ `unit` — Api::UnitTypeId or Api::Unit # # _@param_ `attribute` — Api::Attribute, i.e. Api::Attribute::Mechanical or :Mechanical # # _@return_ — whether unit has attribute # # ```ruby # unit_has_attribute?(Api::UnitTypeId::SCV, Api::Attribute::Mechanical) # unit_has_attribute?(units.workers.first, :Mechanical) # unit_has_attribute?(Api::UnitTypeId::SCV, :Mechanical) # ``` def unit_has_attribute?: ((Integer | Api::Unit) unit, Symbol attribute) -> bool # Creates a unit group from all_units with matching tag # # _@param_ `tags` — array of unit tags def unit_group_from_tags: (::Array[Integer] tags) -> Sc2::UnitGroup # sord omit - no YARD type given for "unit_type_id", using untyped # Sums the cost (mineral/vespene/supply) of unit type used for internal spend trackers # This is called internally when building/morphing/training def subtract_cost: (untyped unit_type_id) -> void # sord omit - no YARD type given for "unit_type_id:", using untyped # sord omit - no YARD type given for "quantity:", using untyped # Checks whether you have the resources to construct quantity of unit type def can_afford?: (unit_type_id: untyped, ?quantity: untyped) -> bool # sord omit - no YARD type given for "upgrade_id", using untyped # Checks whether you have the resources to def can_afford_upgrade?: (untyped upgrade_id) -> bool # Returns whether Query Available Ability is true for unit and tag # Queries API if necessary. Uses batching in the background. # # _@param_ `unit_tag` # # _@param_ `ability_id` def unit_ability_available?: (unit_tag: Integer, ability_id: Integer) -> bool # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Divides raw data units into various attributes on every step # Note, this needs to be fast. # # _@param_ `observation` def parse_observation_units: (Api::Observation observation) -> untyped # Returns alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def own_alliance: () -> Symbol # Returns enemy alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def enemy_alliance: () -> Symbol # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Issues units/structure callbacks for units which are new def issue_new_unit_callbacks: (untyped unit) -> untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD type given for "previous_unit", using untyped # sord omit - no YARD return type given, using untyped # Issues callbacks for units over time, such as damaged or type changed def issue_existing_unit_callbacks: (untyped unit, untyped previous_unit) -> untyped attr_accessor all_units: (Sc2::UnitGroup | untyped) # _@return_ — a group of placeholder structures attr_accessor units: Sc2::UnitGroup # sord omit - no YARD type given for :structures, using untyped # A full list of all your structures (non-units) attr_accessor structures: untyped # sord omit - no YARD type given for :placeholders, using untyped # A list of structures which haven't started attr_accessor placeholders: untyped # _@return_ — a group of neutral units attr_accessor neutral: Sc2::UnitGroup # _@return_ — a group of neutral units attr_accessor effects: Sc2::UnitGroup # sord omit - no YARD type given for :upgrades_completed, using untyped # Returns the upgrade ids you have acquired such as weapon upgrade and armor upgrade ids. # Shorthand for observation.raw_data.player.upgrade_ids attr_reader upgrades_completed: untyped # sord warn - Api::RadarRing wasn't able to be resolved to a constant in this project # sord warn - Api::RadarRing wasn't able to be resolved to a constant in this project # _@return_ — an array of radar rings sources attr_accessor power_sources: ::Array[Api::RadarRing] # sord omit - no YARD type given for :radar_rings, using untyped # An array of Sensor tower rings as per minimap. It has a `pos` and a `radius` attr_accessor radar_rings: untyped # sord omit - no YARD type given for :_all_seen_unit_tags, using untyped # Privately keep track of all seen Unit tags (excl structures) in order to detect new created units attr_accessor _all_seen_unit_tags: untyped # sord omit - no YARD type given for :all_seen_unit_tags, using untyped # Privately keep track of all seen Unit tags (excl structures) in order to detect new created units attr_accessor all_seen_unit_tags: untyped # _@return_ — group of Units and Structures effected attr_accessor event_units_damaged: Sc2::UnitGroup # sord omit - no YARD type given for :event_units_destroyed, using untyped # TODO: Unit buff disabled, because it calls back too often (mineral in hand). Put back if useful # Units (Unit/Structure) on which a new buff_ids appeared this frame # See which buffs via: unit.buff_ids - unit.previous.buff_ids # Read this on_step. Alternative to callback on_unit_buffed # attr_accessor :event_units_buffed attr_accessor event_units_destroyed: untyped end # Holds action list and queues batch module Actions # sord warn - Api::Action wasn't able to be resolved to a constant in this project # Queues action for performing end of step # # _@param_ `action` def queue_action: (Api::Action action) -> void # sord omit - no YARD return type given, using untyped # Queues a Api::ActionRaw. Perform ability on unit_tags optionally on target_world_space_pos/target_unit_tag # # _@param_ `unit_tags` # # _@param_ `ability_id` # # _@param_ `queue_command` — shift+command # # _@param_ `target_world_space_pos` # # _@param_ `target_unit_tag` def action_raw_unit_command: ( unit_tags: ::Array[Integer], ability_id: Integer, ?queue_command: bool, ?target_world_space_pos: Api::Point2D?, ?target_unit_tag: Integer? ) -> untyped # sord omit - no YARD return type given, using untyped # Queues a Api::ActionRawUnitCommand. # Send accepts a Api::Unit, tag or tags and targets Api::Point2D or unit.tag # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `ability_id` # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def action: ( units: (::Array[Integer] | Integer | Api::Unit), ability_id: Integer, ?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool ) -> untyped # sord omit - no YARD return type given, using untyped # Builds target unit type using units as source at optional target # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — is a unit tag or a Api::Point2D. Nil for addons/orbital # # _@param_ `queue_command` — shift+command def build: ( units: (::Array[Integer] | Integer | Api::Unit), unit_type_id: Integer, ?target: (Api::Point2D | Integer)?, ?queue_command: bool ) -> untyped # sord omit - no YARD return type given, using untyped # Warps in unit type at target (location or pylon) with optional source units (warp gates) # When not specifying the specific warp gate(s), all warpgates will be used # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `queue_command` — shift+command # # _@param_ `target` — is a unit tag or a Api::Point2D # # _@param_ `units` def warp: ( unit_type_id: Integer, target: (Api::Point2D | Integer), queue_command: bool, ?units: (::Array[Integer] | Integer | Api::Unit)? ) -> untyped # sord omit - no YARD return type given, using untyped # Research a specific upgrade # # _@param_ `units` — can be an Api::Unit, array of Api::Unit#tag or single tag # # _@param_ `upgrade_id` — Api::UpgradeId to research # # _@param_ `queue_command` — shift+command def research: (units: (::Array[Integer] | Integer | Api::Unit), upgrade_id: Integer, ?queue_command: bool) -> untyped # Toggles auto-cast ability for units # # _@param_ `units` — can be an Api::Unit, array of Tags or single Tag # # _@param_ `ability_id` def action_raw_toggle_autocast: (units: (::Array[Integer] | Integer | Api::Unit), ability_id: Integer) -> void # Toggles auto-cast ability for units # # _@param_ `point` def action_raw_camera_move: (point: Api::Point) -> void # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # Issues spatial unit command. Target is either target_screen_coord or target_minimap_coord. # # _@param_ `ability_id` # # _@param_ `target_screen_coord` # # _@param_ `target_minimap_coord` # # _@param_ `queue_command` — shift+command def action_spatial_unit_command: ( ability_id: Api::AbilityId, ?target_screen_coord: Api::Point2I?, ?target_minimap_coord: Api::Point2I?, ?queue_command: bool ) -> void # sord warn - Api::Point2I wasn't able to be resolved to a constant in this project # Simulates a click on the minimap to move the camera. # # _@param_ `center_minimap` def action_spatial_camera_move: (center_minimap: Api::Point2I) -> void # Issues spatial unit select point command. Target is either target_screen_coord or target_minimap_coord. # # _@param_ `type` — 1,2,3,4 = Api::ActionSpatialUnitSelectionPoint::Type::* enum Type { Select = 1; // Equivalent to normal click. Changes selection to unit. Toggle = 2; // Equivalent to shift+click. Toggle selection of unit. AllType = 3; // Equivalent to control+click. Selects all units of a given type. AddAllType = 4; // Equivalent to shift+control+click. Selects all units of a given type. } # # _@param_ `selection_screen_coord` def action_spatial_unit_selection_point: (?_type: Integer, ?selection_screen_coord: Api::PointI?) -> void # sord warn - Api::RectangleI wasn't able to be resolved to a constant in this project # Issue rectangle select # # _@param_ `selection_screen_coord` — rectangle coordinates # # _@param_ `selection_add` — default false Equivalent to shift+drag. Adds units to selection. default false def action_spatial_unit_selection_rect: (selection_screen_coord: Api::RectangleI, ?selection_add: bool) -> void # Perform action on control group like setting or recalling, use in conjunction with unit selection. # Populated if Feature Layer or Render interface is enabled. # # _@param_ `action` — 1-5 = Api::ActionControlGroup::ControlGroupAction::* enum ControlGroupAction { Recall = 1; // Equivalent to number hotkey. Replaces current selection with control group. Set = 2; // Equivalent to Control + number hotkey. Sets control group to current selection. Append = 3; // Equivalent to Shift + number hotkey. Adds current selection into control group. SetAndSteal = 4; // Equivalent to Control + Alt + number hotkey. Sets control group to current selection. Units are removed from other control groups. AppendAndSteal = 5; // Equivalent to Shift + Alt + number hotkey. Adds current selection into control group. Units are removed from other control groups. } # # _@param_ `control_group_index` — 0-9 def action_ui_control_group: (action: Integer, control_group_index: Integer) -> void # Selects army (F2) # # _@param_ `selection_add` — default false To add to other selected items def action_ui_select_army: (?selection_add: bool) -> void # Selects warp gates (Protoss) # # _@param_ `selection_add` — default false To add to other selected items def action_ui_select_warp_gates: (?selection_add: bool) -> void # Selects larva (Zerg) def action_ui_select_larva: () -> void # sord omit - no YARD return type given, using untyped # Select idle workers # # _@param_ `type` — 1-4 = Api::ActionSelectIdleWorker::Type::* enum Type { Set = 1; // Equivalent to click with no modifiers. Replaces selection with single idle worker. Add = 2; // Equivalent to shift+click. Adds single idle worker to current selection. All = 3; // Equivalent to control+click. Selects all idle workers. AddAll = 4; // Equivalent to shift+control+click. Adds all idle workers to current selection. } def action_ui_select_idle_worker: (_type: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Multi-panel actions for select/deselect # message ActionMultiPanel { # optional Type type = 1; # optional int32 unit_index = 2; # } # # _@param_ `type` — 1-4 = Api::ActionMultiPanel::Type::* # # _@param_ `unit_index` — n'th unit on panel enum Type { SingleSelect = 1; // Click on icon DeselectUnit = 2; // Shift Click on icon SelectAllOfType = 3; // Control Click on icon. DeselectAllOfType = 4; // Control+Shift Click on icon. } def action_ui_multi_panel: (_type: Integer, unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Cargo panel actions for unloading units. # # _@param_ `unit_index` — index of unit to unload def action_ui_cargo_panel_unload: (unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Remove unit from production queue # # _@param_ `unit_index` — target unit index def action_ui_production_panel_remove_from_queue: (unit_index: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Toggle autocast on selected unit. Also possible with raw actions using a unit target. # # _@param_ `ability_id` — Api::AbilityId::* ability def action_ui_toggle_autocast: (ability_id: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Send a chat message # # _@param_ `message` — to send # # _@param_ `channel` — 1-2, default:Team Api::ActionChat::Channel::Broadcast = 1, Api::ActionChat::Channel::Team = 2 def action_chat: (String message, ?channel: Integer) -> untyped # sord omit - no YARD return type given, using untyped # Sends actions via api and flushes action_queue def perform_actions: () -> untyped # Empties and resets @action_queue def clear_action_queue: () -> void # Returns an array of unit tags from a variety of sources # noinspection RubyMismatchedReturnType # # _@param_ `source` — unit tag, tags, unit or unit group # # _@return_ — unit tag array def unit_tags_from_source: ((Integer | ::Array[Integer] | Api::Unit | Sc2::UnitGroup) source) -> ::Array[Integer] # sord warn - Api::Action wasn't able to be resolved to a constant in this project attr_accessor action_queue: ::Array[Api::Action] end # Holds game state module GameState include Sc2::Connection::StatusListener extend Forwardable # sord omit - no YARD return type given, using untyped # Callback when game status changes def on_status_change: (Symbol status) -> untyped # Determines if your game_info will be refreshed at this moment # Has a hard-capped refresh of only ever 4 steps # In general game_info is only refreshed Player::Bot reads from pathing_grid or placement_grid def game_info_stale?: () -> bool # A Hash by unit tag, holding an array of available ability ids # Synchronously calls RequestQueryAvailableAbilities and caches for this game loop. # # _@return_ — { unit_tag => [ability_id, ...], ... } def available_abilities: () -> ::Hash[Integer, ::Array[Integer]] # sord warn - Api::PlayerCommon wasn't able to be resolved to a constant in this project # An alias for observation.player_common to allow easier access to i.e. common.minerals # # _@return_ — common info such as minerals, vespene, supply def common: () -> Api::PlayerCommon # _@return_ — status attr_accessor status: (Symbol | untyped) # _@return_ — current game loop attr_accessor game_loop: (Integer | untyped) # sord warn - Api::ResponseGameInfo wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseGameInfo wasn't able to be resolved to a constant in this project # Access useful game information. Used in parsed pathing grid, terrain height, placement grid. # Holds Api::ResponseGameInfo::#start_locations. attr_accessor game_info: Api::ResponseGameInfo # This is the last loop at which game_info was set. # Used to determine staleness. attr_accessor game_info_loop: Integer # sord warn - Api::ResponseData wasn't able to be resolved to a constant in this project attr_accessor data: (Api::ResponseData | untyped) # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # _@return_ — snapshot of current game state attr_accessor observation: (Api::Observation | untyped) # sord warn - Api::ChatReceived wasn't able to be resolved to a constant in this project # _@return_ — messages since last observation attr_accessor chats_received: ::Array[Api::ChatReceived] # sord warn - Api::Result wasn't able to be resolved to a constant in this project # _@return_ — the result of the game (:Victory/:Defeat/:Tie) attr_accessor result: (Api::Result | untyped) # _@return_ — sum of minerals spent via Unit##build an Unit#morph # # _@see_ `Unit#build` — and #morph attr_accessor spent_minerals: (Integer | untyped) # _@return_ — sum of vespene gas spent via Unit##build an Unit##morph # # _@see_ `Unit#build` — and #morph attr_accessor spent_vespene: (Integer | untyped) # _@return_ — sum of supply spent via Unit##build an Unit##morph # # _@see_ `Unit#build` — and #morph attr_accessor spent_supply: (Integer | untyped) # This is the last loop at which available_abilities was queried. # Used to determine staleness. attr_accessor available_abilities_loop: Integer end # Container for the previous game state, based on current bot state # Keep to one instance, but with variables to prevent large memory leaks # @see Sc2::Player::GameState for current state class PreviousState include Sc2::Player::GameState include Sc2::Player::Units # sord omit - no YARD return type given, using untyped # Sets the previous state of the bot using the last frame # # _@param_ `bot` def reset: (Sc2::Player::Bot _bot) -> untyped # sord omit - no YARD return type given, using untyped # Override to modify the previous frame before being set to current # # _@param_ `bot` def before_reset: (Sc2::Player::Bot _bot) -> untyped # sord omit - no YARD return type given, using untyped # Override to modify previous frame after reset is complete # # _@param_ `bot` def after_reset: (Sc2::Player::Bot _bot) -> untyped # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if this upgrade has finished researching def upgrade_completed?: (untyped upgrade_id) -> bool # Returns the upgrade ids which are researching or queued # Not set for enemy. def upgrades_in_progress: () -> ::Array[Integer] # sord omit - no YARD type given for "upgrade_id", using untyped # Returns true if the upgrade is busy researching def upgrade_in_progress?: (untyped upgrade_id) -> bool # sord omit - no YARD type given for "unit_type_id", using untyped # For this unit type, tells you how many are in progress by checking orders for all it's sources. def units_in_progress: (untyped unit_type_id) -> Integer # Returns static [Api::UnitTypeData] for a unit # # _@param_ `unit` — Api::UnitTypeId or Api::Unit def unit_data: ((Integer | Api::Unit) unit) -> Api::UnitTypeData # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # Returns static [Api::AbilityData] for an ability # # _@param_ `ability_id` — Api::AbilityId::* def ability_data: (Integer ability_id) -> Api::AbilityData # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # Returns static [Api::UpgradeData] for an upgrade id # # _@param_ `upgrade_id` — Api::UpgradeId::* def upgrade_data: (Integer upgrade_id) -> Api::UpgradeData # Checks unit data for an attribute value # # _@param_ `unit` — Api::UnitTypeId or Api::Unit # # _@param_ `attribute` — Api::Attribute, i.e. Api::Attribute::Mechanical or :Mechanical # # _@return_ — whether unit has attribute # # ```ruby # unit_has_attribute?(Api::UnitTypeId::SCV, Api::Attribute::Mechanical) # unit_has_attribute?(units.workers.first, :Mechanical) # unit_has_attribute?(Api::UnitTypeId::SCV, :Mechanical) # ``` def unit_has_attribute?: ((Integer | Api::Unit) unit, Symbol attribute) -> bool # Creates a unit group from all_units with matching tag # # _@param_ `tags` — array of unit tags def unit_group_from_tags: (::Array[Integer] tags) -> Sc2::UnitGroup # sord omit - no YARD type given for "unit_type_id", using untyped # Sums the cost (mineral/vespene/supply) of unit type used for internal spend trackers # This is called internally when building/morphing/training def subtract_cost: (untyped unit_type_id) -> void # sord omit - no YARD type given for "unit_type_id:", using untyped # sord omit - no YARD type given for "quantity:", using untyped # Checks whether you have the resources to construct quantity of unit type def can_afford?: (unit_type_id: untyped, ?quantity: untyped) -> bool # sord omit - no YARD type given for "upgrade_id", using untyped # Checks whether you have the resources to def can_afford_upgrade?: (untyped upgrade_id) -> bool # Returns whether Query Available Ability is true for unit and tag # Queries API if necessary. Uses batching in the background. # # _@param_ `unit_tag` # # _@param_ `ability_id` def unit_ability_available?: (unit_tag: Integer, ability_id: Integer) -> bool # sord warn - Api::Observation wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Divides raw data units into various attributes on every step # Note, this needs to be fast. # # _@param_ `observation` def parse_observation_units: (Api::Observation observation) -> untyped # Returns alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def own_alliance: () -> Symbol # Returns enemy alliance based on whether you are a player or an enemy # # _@return_ — :Self or :Enemy from Api::Alliance def enemy_alliance: () -> Symbol # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Issues units/structure callbacks for units which are new def issue_new_unit_callbacks: (untyped unit) -> untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD type given for "previous_unit", using untyped # sord omit - no YARD return type given, using untyped # Issues callbacks for units over time, such as damaged or type changed def issue_existing_unit_callbacks: (untyped unit, untyped previous_unit) -> untyped # sord omit - no YARD return type given, using untyped # Callback when game status changes def on_status_change: (Symbol status) -> untyped # Determines if your game_info will be refreshed at this moment # Has a hard-capped refresh of only ever 4 steps # In general game_info is only refreshed Player::Bot reads from pathing_grid or placement_grid def game_info_stale?: () -> bool # A Hash by unit tag, holding an array of available ability ids # Synchronously calls RequestQueryAvailableAbilities and caches for this game loop. # # _@return_ — { unit_tag => [ability_id, ...], ... } def available_abilities: () -> ::Hash[Integer, ::Array[Integer]] # sord warn - Api::PlayerCommon wasn't able to be resolved to a constant in this project # An alias for observation.player_common to allow easier access to i.e. common.minerals # # _@return_ — common info such as minerals, vespene, supply def common: () -> Api::PlayerCommon end end # Holds game data from tech tree and Api::ResponseData # Called once on game start class Data # sord warn - Api::ResponseData wasn't able to be resolved to a constant in this project # _@param_ `data` def initialize: (Api::ResponseData data) -> void # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # sord warn - "Hash SORD_ERROR_HashIntegerApiAbilityDataindexeddata # Indexes unit data by id # # _@param_ `units` # # _@return_ — indexed data def units_from_proto: (::Array[Api::UnitTypeData] units) -> ::Hash[Integer, Api::UnitTypeData] # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # sord warn - "Hash SORD_ERROR_HashIntegerApiUpgradeDataindexeddata # sord omit - no YARD type given for "effects", using untyped # sord omit - no YARD return type given, using untyped def effects_from_proto: (untyped effects) -> untyped # sord omit - no YARD type given for "buffs", using untyped # sord omit - no YARD return type given, using untyped def buffs_from_proto: (untyped buffs) -> untyped # sord omit - no YARD return type given, using untyped # Overrides unit data from api to implement fixes or change context # i.e. Api::UnitTypeId::ORBITALCOMMAND cost is cost-to-upgrade instead of CC + Orbital combined cost. # Run once. Depends on all data already being set. def override_unit_data: () -> untyped # sord omit - no YARD return type given, using untyped # Fixes mineral_cost, vespene_cost and food_required values def correct_unit_type_costs: () -> untyped # sord omit - no YARD return type given, using untyped # Fixes mineral_cost_sum, vespene_cost_sum def correct_unit_type_sum: () -> untyped # sord omit - no YARD return type given, using untyped # Adds placement_length to units if applicable def decorate_unit_type_placement_length: () -> untyped # sord warn - Api::AbilityData wasn't able to be resolved to a constant in this project # _@return_ — AbilityId => AbilityData attr_accessor abilities: (::Hash[Integer, Api::AbilityData] | untyped) # _@return_ — UnitId => UnitTypeData attr_accessor units: (::Hash[Integer, Api::UnitTypeData] | untyped) # sord warn - Api::UpgradeData wasn't able to be resolved to a constant in this project # _@return_ — UpgradeId => UpgradeData attr_accessor upgrades: (::Hash[Integer, Api::UpgradeData] | untyped) # sord omit - no YARD type given for :buffs, using untyped # Not particularly useful data. Just use BuffId directly # @return [Hash] BuffId => BuffData attr_accessor buffs: untyped # sord omit - no YARD type given for :effects, using untyped # Not particularly useful data. Just use EffectId directly # @return [Hash] EffectId => EffectData attr_accessor effects: untyped end # Manages client connection to the Api class Connection include Sc2::Connection::Requests # #param [Sc2::CallbackListener] listener # # _@param_ `host` # # _@param_ `port` def initialize: (host: String, port: Integer) -> void # Attempts to connect for a period of time, ignoring errors nad performing on_* callbacks def connect: () -> void # Closes Connection to client def close: () -> void # Add a listener of specific callback type # # _@param_ `listener` # # _@param_ `klass` def add_listener: (Object listener, klass: (Module[Sc2::Connection::ConnectionListener] | Module[Sc2::Connection::StatusListener])) -> void # sord omit - no YARD return type given, using untyped # Removes a listener of specific callback type # # _@param_ `listener` # # _@param_ `klass` def remove_listener: (Object listener, klass: (Module[Sc2::Connection::ConnectionListener] | Module[Sc2::Connection::StatusListener])) -> untyped # sord omit - no YARD type given for "request", using untyped # sord warn - Api::Response wasn't able to be resolved to a constant in this project # --------------------------------------------------------- # Sends a request synchronously and returns Api::Response type # # _@return_ — response def send_request: (untyped request) -> Api::Response # sord omit - no YARD type given for "request", using untyped # Sends and ignores response. # Meant to be used as optimization for RequestStep. # No other command sends and ignores. # Expects request to be to_proto'd already def send_request_and_ignore: (untyped request) -> void # sord warn - HTTP::Endpoint wasn't able to be resolved to a constant in this project # _@return_ — websocket url for establishing protobuf connection def endpoint: () -> HTTP::Endpoint # sord omit - no YARD type given for "map:", using untyped # sord omit - no YARD type given for "players:", using untyped # sord omit - no YARD type given for "realtime:", using untyped # sord omit - no YARD return type given, using untyped # Send to host to initialize game def create_game: (map: untyped, players: untyped, ?realtime: untyped) -> untyped # sord warn - Google::Protobuf::EnumValue wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Send to host and all clients for game to begin. # # _@param_ `race` — Api::Race # # _@param_ `name` — player name # # _@param_ `server_host` — hostname or ip of sc2 client # # _@param_ `port_config` — port config auto or basic, using start port # # _@param_ `enable_feature_layer` — Enables the feature layer at 1x1 pixels # # _@param_ `interface_options` def join_game: ( race: Google::Protobuf::EnumValue, name: String, server_host: String, port_config: Sc2::PortConfig, ?enable_feature_layer: bool, ?interface_options: ::Hash[untyped, untyped] ) -> untyped # sord omit - no YARD type given for "enabled", using untyped # sord omit - no YARD return type given, using untyped # Default options for feature layer, which enables it, # but sets the map/minimap size to 1x1 for peak performance. # A user can manually pass in it's own interface options def feature_layer_interface_options: (untyped enabled) -> untyped # sord omit - no YARD return type given, using untyped # Single player only. Reinitializes the game with the same player setup. def restart_game: () -> untyped # sord omit - no YARD type given for "record_replay:", using untyped # sord omit - no YARD return type given, using untyped # Given a replay file path or replay file contents, will start the replay # # _@param_ `replay_path` — path to replay # # _@param_ `replay_data` — alternative to file, binary string of replay_file.read # # _@param_ `map_data` — optional binary string of SC2 map if not present in paths # # _@param_ `options` — Api:RequestStartReplay options, such as disable_fog, observed_player_id, map_data # # _@param_ `interface_options` # # ```ruby # Sc2.config do |config| # config.version = "4.10" # end # Async do # client = Sc2::ClientManager.obtain(0) # observer = Sc2::Player::Observer.new # observer.connect(host: client.host, port: client.port) # pp observer.api.start_replay( # replay_path: Pathname("./replays/test.SC2Replay").realpath # ) # while observer.status == :in_replay # # Step forward # observer.api.step(1) # # fresh observation info # observation = observer.api.observation # # fresh game info # game_info = observer.api.game_info # end # ensure # Sc2::ClientManager.stop(0) # end # ``` def start_replay: ( ?replay_path: String?, ?replay_data: String?, ?map_data: String?, ?record_replay: untyped, ?interface_options: ::Hash[untyped, untyped], **::Hash[untyped, untyped] options ) -> untyped # sord omit - no YARD return type given, using untyped # Multiplayer only. Disconnects from a multiplayer game, equivalent to surrender. Keeps client alive. def leave_game: () -> untyped # sord omit - no YARD return type given, using untyped # Saves game to an in-memory bookmark. def request_quick_save: () -> untyped # sord omit - no YARD return type given, using untyped # Loads from an in-memory bookmark. def request_quick_load: () -> untyped # sord omit - no YARD return type given, using untyped # Quits Sc2. Does not work on ladder. def quit: () -> untyped # sord warn - Api::ResponseGameInfo wasn't able to be resolved to a constant in this project # Static data about the current game and map. def game_info: () -> Api::ResponseGameInfo # sord warn - Api::ResponseData wasn't able to be resolved to a constant in this project # Data about different gameplay elements. May be different for different games. # Note that buff_id and effect_id gives worse quality data than generated from stableids (EffectId and BuffId) # Those options are disabled by default # # _@param_ `ability_id` — to include ability data # # _@param_ `unit_type_id` — to include unit data # # _@param_ `upgrade_id` — to include upgrade data # # _@param_ `buff_id` — to get include buff data # # _@param_ `effect_id` — to get to include effect data def data: ( ?ability_id: bool, ?unit_type_id: bool, ?upgrade_id: bool, ?buff_id: bool, ?effect_id: bool ) -> Api::ResponseData # sord omit - no YARD return type given, using untyped # Snapshot of the current game state. Primary source for raw information # # _@param_ `game_loop` — you wish to wait for (realtime only) def observation: (?game_loop: Integer?) -> untyped # sord warn - Api::Action wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseAction wasn't able to be resolved to a constant in this project # Executes an array of [Api::Action] for a participant # # _@param_ `actions` — to perform def action: (::Array[Api::Action] actions) -> Api::ResponseAction # sord warn - Api::ObserverAction wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Executes an actions for an observer. # # _@param_ `actions` def observer_action: (::Array[Api::ObserverAction] actions) -> untyped # sord omit - no YARD return type given, using untyped # Moves observer camera to a position at a distance # # _@param_ `world_pos` # # _@param_ `distance` — Distance between camera and terrain. Larger value zooms out camera. Defaults to standard camera distance if set to 0. def observer_action_camera_move: (Api::Point2D world_pos, ?Float distance) -> untyped # sord omit - no YARD type given for "step_count", using untyped # sord omit - no YARD return type given, using untyped # Advances the game simulation by step_count. Not used in realtime mode. # Only constant step size supported - subsequent requests use cache. def step: (?untyped step_count) -> untyped # sord warn - Api::RequestQueryPathing wasn't able to be resolved to a constant in this project # sord warn - Api::RequestQueryAvailableAbilities wasn't able to be resolved to a constant in this project # sord warn - Api::RequestQueryBuildingPlacement wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQuery wasn't able to be resolved to a constant in this project # Additional methods for inspecting game state. Synchronous and must wait on response # # _@param_ `pathing` # # _@param_ `abilities` # # _@param_ `placements` # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. def query: ( ?pathing: ::Array[Api::RequestQueryPathing]?, ?abilities: ::Array[Api::RequestQueryAvailableAbilities]?, ?placements: ::Array[Api::RequestQueryBuildingPlacement]?, ?ignore_resource_requirements: bool ) -> Api::ResponseQuery # sord warn - Api::RequestQueryPathing wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryPathing wasn't able to be resolved to a constant in this project # Queries one or more pathing queries # # _@param_ `queries` — one or more pathing queries # # _@return_ — one or more results depending on input size def query_pathings: (::Array[Api::RequestQueryPathing] queries) -> ::Array[Api::ResponseQueryPathing] # sord warn - Api::RequestQueryAvailableAbilities wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryAvailableAbilities wasn't able to be resolved to a constant in this project # Queries one or more ability-available checks # # _@param_ `queries` — one or more pathing queries # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. # # _@return_ — one or more results depending on input size def query_abilities: (::Array[Api::RequestQueryAvailableAbilities] queries, ?ignore_resource_requirements: bool) -> ::Array[Api::ResponseQueryAvailableAbilities] # sord warn - Api::ResponseQueryAvailableAbilities wasn't able to be resolved to a constant in this project # Queries available abilities for units # # _@param_ `unit_tags` — an array of unit tags or a single tag # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. # # _@return_ — one or more results depending on input size def query_abilities_for_unit_tags: (::Array[Integer] unit_tags, ?ignore_resource_requirements: bool) -> ::Array[Api::ResponseQueryAvailableAbilities] # sord omit - no YARD type given for "ignore_resource_requirements:", using untyped # Queries available ability ids for one unit # Shortened response over #query_abilities_for_unit_tags, since we know the tag already # and can just return an array of ability ids. # Note: Querying single units are expensive and should be batched with #query_abilities_for_unit_tags # # _@param_ `unit` — a unit or a tag. # # _@return_ — array of ability ids def query_ability_ids_for_unit: ((Api::Unit | Integer) unit, ?ignore_resource_requirements: untyped) -> ::Array[Integer] # sord warn - Api::RequestQueryBuildingPlacement wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryBuildingPlacement wasn't able to be resolved to a constant in this project # Queries one or more pathing queries # # _@param_ `queries` — one or more placement queries # # _@return_ — one or more results depending on input size def query_placements: (::Array[Api::RequestQueryBuildingPlacement] queries) -> ::Array[Api::ResponseQueryBuildingPlacement] # sord omit - no YARD return type given, using untyped # Generates a replay. def save_replay: () -> untyped # sord warn - Api::ResponseReplayInfo wasn't able to be resolved to a constant in this project # Returns metadata about a replay file. Does not load the replay. # RequestReplayInfo replay_info = 16; // # # _@param_ `replay_path` — path to replay # # _@param_ `replay_data` — alternative to file, binary string of replay_file.read # # _@param_ `download_data` — if true, ensure the data and binary are downloaded if this is an old version replay. def replay_info: (?replay_path: String?, ?replay_data: String?, ?download_data: String) -> Api::ResponseReplayInfo # sord warn - Api::ResponseAvailableMaps wasn't able to be resolved to a constant in this project # Returns directory of maps that can be played on. # # _@return_ — which has #local_map_paths and #battlenet_map_names arrays def available_maps: () -> Api::ResponseAvailableMaps # sord omit - no YARD return type given, using untyped # Saves binary map data to the local temp directory. def save_map: () -> untyped # sord omit - no YARD return type given, using untyped # Network ping for testing connection. def ping: () -> untyped # sord warn - Api::DebugCommand wasn't able to be resolved to a constant in this project # Display debug information and execute debug actions # # _@param_ `commands` def debug: (::Array[Api::DebugCommand] commands) -> void # sord omit - no YARD type given for "**kwargs", using untyped # sord omit - no YARD return type given, using untyped # Sends request for type and returns response that type, i.e. # send_request_for(observation: RequestObservation) # Is identical to # send_request( # Api::Request.new(observation: RequestObservation) # )[:observation] def send_request_for: (**untyped kwargs) -> untyped # Returns the value of attribute host. attr_accessor host: untyped # Returns the value of attribute port. attr_accessor port: untyped # Returns the value of attribute websocket. attr_accessor websocket: untyped # Last known game status, i.e. :launched, :ended, :unknown # :launched // Game has been launch and is not yet doing anything. # :init_game // Create game has been called, and the host is awaiting players. # :in_game // In a single or multiplayer game. # :in_replay // In a replay. # :ended // Game has ended, can still request game info, but ready for a new game. # :quit // Application is shutting down. # :unknown // Should not happen, but indicates an error if it occurs. # @return [Symbol] game status attr_accessor status: untyped # Returns the value of attribute listeners. attr_accessor listeners: ::Hash[String, ::Array[untyped]] # Sends protobuf requests over Connection to Client module Requests # sord omit - no YARD type given for "map:", using untyped # sord omit - no YARD type given for "players:", using untyped # sord omit - no YARD type given for "realtime:", using untyped # sord omit - no YARD return type given, using untyped # Send to host to initialize game def create_game: (map: untyped, players: untyped, ?realtime: untyped) -> untyped # sord warn - Google::Protobuf::EnumValue wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Send to host and all clients for game to begin. # # _@param_ `race` — Api::Race # # _@param_ `name` — player name # # _@param_ `server_host` — hostname or ip of sc2 client # # _@param_ `port_config` — port config auto or basic, using start port # # _@param_ `enable_feature_layer` — Enables the feature layer at 1x1 pixels # # _@param_ `interface_options` def join_game: ( race: Google::Protobuf::EnumValue, name: String, server_host: String, port_config: Sc2::PortConfig, ?enable_feature_layer: bool, ?interface_options: ::Hash[untyped, untyped] ) -> untyped # sord omit - no YARD type given for "enabled", using untyped # sord omit - no YARD return type given, using untyped # Default options for feature layer, which enables it, # but sets the map/minimap size to 1x1 for peak performance. # A user can manually pass in it's own interface options def feature_layer_interface_options: (untyped enabled) -> untyped # sord omit - no YARD return type given, using untyped # Single player only. Reinitializes the game with the same player setup. def restart_game: () -> untyped # sord omit - no YARD type given for "record_replay:", using untyped # sord omit - no YARD return type given, using untyped # Given a replay file path or replay file contents, will start the replay # # _@param_ `replay_path` — path to replay # # _@param_ `replay_data` — alternative to file, binary string of replay_file.read # # _@param_ `map_data` — optional binary string of SC2 map if not present in paths # # _@param_ `options` — Api:RequestStartReplay options, such as disable_fog, observed_player_id, map_data # # _@param_ `interface_options` # # ```ruby # Sc2.config do |config| # config.version = "4.10" # end # Async do # client = Sc2::ClientManager.obtain(0) # observer = Sc2::Player::Observer.new # observer.connect(host: client.host, port: client.port) # pp observer.api.start_replay( # replay_path: Pathname("./replays/test.SC2Replay").realpath # ) # while observer.status == :in_replay # # Step forward # observer.api.step(1) # # fresh observation info # observation = observer.api.observation # # fresh game info # game_info = observer.api.game_info # end # ensure # Sc2::ClientManager.stop(0) # end # ``` def start_replay: ( ?replay_path: String?, ?replay_data: String?, ?map_data: String?, ?record_replay: untyped, ?interface_options: ::Hash[untyped, untyped], **::Hash[untyped, untyped] options ) -> untyped # sord omit - no YARD return type given, using untyped # Multiplayer only. Disconnects from a multiplayer game, equivalent to surrender. Keeps client alive. def leave_game: () -> untyped # sord omit - no YARD return type given, using untyped # Saves game to an in-memory bookmark. def request_quick_save: () -> untyped # sord omit - no YARD return type given, using untyped # Loads from an in-memory bookmark. def request_quick_load: () -> untyped # sord omit - no YARD return type given, using untyped # Quits Sc2. Does not work on ladder. def quit: () -> untyped # sord warn - Api::ResponseGameInfo wasn't able to be resolved to a constant in this project # Static data about the current game and map. def game_info: () -> Api::ResponseGameInfo # sord warn - Api::ResponseData wasn't able to be resolved to a constant in this project # Data about different gameplay elements. May be different for different games. # Note that buff_id and effect_id gives worse quality data than generated from stableids (EffectId and BuffId) # Those options are disabled by default # # _@param_ `ability_id` — to include ability data # # _@param_ `unit_type_id` — to include unit data # # _@param_ `upgrade_id` — to include upgrade data # # _@param_ `buff_id` — to get include buff data # # _@param_ `effect_id` — to get to include effect data def data: ( ?ability_id: bool, ?unit_type_id: bool, ?upgrade_id: bool, ?buff_id: bool, ?effect_id: bool ) -> Api::ResponseData # sord omit - no YARD return type given, using untyped # Snapshot of the current game state. Primary source for raw information # # _@param_ `game_loop` — you wish to wait for (realtime only) def observation: (?game_loop: Integer?) -> untyped # sord warn - Api::Action wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseAction wasn't able to be resolved to a constant in this project # Executes an array of [Api::Action] for a participant # # _@param_ `actions` — to perform def action: (::Array[Api::Action] actions) -> Api::ResponseAction # sord warn - Api::ObserverAction wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Executes an actions for an observer. # # _@param_ `actions` def observer_action: (::Array[Api::ObserverAction] actions) -> untyped # sord omit - no YARD return type given, using untyped # Moves observer camera to a position at a distance # # _@param_ `world_pos` # # _@param_ `distance` — Distance between camera and terrain. Larger value zooms out camera. Defaults to standard camera distance if set to 0. def observer_action_camera_move: (Api::Point2D world_pos, ?Float distance) -> untyped # sord omit - no YARD type given for "step_count", using untyped # sord omit - no YARD return type given, using untyped # Advances the game simulation by step_count. Not used in realtime mode. # Only constant step size supported - subsequent requests use cache. def step: (?untyped step_count) -> untyped # sord warn - Api::RequestQueryPathing wasn't able to be resolved to a constant in this project # sord warn - Api::RequestQueryAvailableAbilities wasn't able to be resolved to a constant in this project # sord warn - Api::RequestQueryBuildingPlacement wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQuery wasn't able to be resolved to a constant in this project # Additional methods for inspecting game state. Synchronous and must wait on response # # _@param_ `pathing` # # _@param_ `abilities` # # _@param_ `placements` # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. def query: ( ?pathing: ::Array[Api::RequestQueryPathing]?, ?abilities: ::Array[Api::RequestQueryAvailableAbilities]?, ?placements: ::Array[Api::RequestQueryBuildingPlacement]?, ?ignore_resource_requirements: bool ) -> Api::ResponseQuery # sord warn - Api::RequestQueryPathing wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryPathing wasn't able to be resolved to a constant in this project # Queries one or more pathing queries # # _@param_ `queries` — one or more pathing queries # # _@return_ — one or more results depending on input size def query_pathings: (::Array[Api::RequestQueryPathing] queries) -> ::Array[Api::ResponseQueryPathing] # sord warn - Api::RequestQueryAvailableAbilities wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryAvailableAbilities wasn't able to be resolved to a constant in this project # Queries one or more ability-available checks # # _@param_ `queries` — one or more pathing queries # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. # # _@return_ — one or more results depending on input size def query_abilities: (::Array[Api::RequestQueryAvailableAbilities] queries, ?ignore_resource_requirements: bool) -> ::Array[Api::ResponseQueryAvailableAbilities] # sord warn - Api::ResponseQueryAvailableAbilities wasn't able to be resolved to a constant in this project # Queries available abilities for units # # _@param_ `unit_tags` — an array of unit tags or a single tag # # _@param_ `ignore_resource_requirements` — Ignores requirements like food, minerals and so on. # # _@return_ — one or more results depending on input size def query_abilities_for_unit_tags: (::Array[Integer] unit_tags, ?ignore_resource_requirements: bool) -> ::Array[Api::ResponseQueryAvailableAbilities] # sord omit - no YARD type given for "ignore_resource_requirements:", using untyped # Queries available ability ids for one unit # Shortened response over #query_abilities_for_unit_tags, since we know the tag already # and can just return an array of ability ids. # Note: Querying single units are expensive and should be batched with #query_abilities_for_unit_tags # # _@param_ `unit` — a unit or a tag. # # _@return_ — array of ability ids def query_ability_ids_for_unit: ((Api::Unit | Integer) unit, ?ignore_resource_requirements: untyped) -> ::Array[Integer] # sord warn - Api::RequestQueryBuildingPlacement wasn't able to be resolved to a constant in this project # sord warn - Api::ResponseQueryBuildingPlacement wasn't able to be resolved to a constant in this project # Queries one or more pathing queries # # _@param_ `queries` — one or more placement queries # # _@return_ — one or more results depending on input size def query_placements: (::Array[Api::RequestQueryBuildingPlacement] queries) -> ::Array[Api::ResponseQueryBuildingPlacement] # sord omit - no YARD return type given, using untyped # Generates a replay. def save_replay: () -> untyped # sord warn - Api::ResponseReplayInfo wasn't able to be resolved to a constant in this project # Returns metadata about a replay file. Does not load the replay. # RequestReplayInfo replay_info = 16; // # # _@param_ `replay_path` — path to replay # # _@param_ `replay_data` — alternative to file, binary string of replay_file.read # # _@param_ `download_data` — if true, ensure the data and binary are downloaded if this is an old version replay. def replay_info: (?replay_path: String?, ?replay_data: String?, ?download_data: String) -> Api::ResponseReplayInfo # sord warn - Api::ResponseAvailableMaps wasn't able to be resolved to a constant in this project # Returns directory of maps that can be played on. # # _@return_ — which has #local_map_paths and #battlenet_map_names arrays def available_maps: () -> Api::ResponseAvailableMaps # sord omit - no YARD return type given, using untyped # Saves binary map data to the local temp directory. def save_map: () -> untyped # sord omit - no YARD return type given, using untyped # Network ping for testing connection. def ping: () -> untyped # sord warn - Api::DebugCommand wasn't able to be resolved to a constant in this project # Display debug information and execute debug actions # # _@param_ `commands` def debug: (::Array[Api::DebugCommand] commands) -> void # sord omit - no YARD type given for "**kwargs", using untyped # sord omit - no YARD return type given, using untyped # Sends request for type and returns response that type, i.e. # send_request_for(observation: RequestObservation) # Is identical to # send_request( # Api::Request.new(observation: RequestObservation) # )[:observation] def send_request_for: (**untyped kwargs) -> untyped end # Callbacks when game status changes module StatusListener # sord omit - no YARD return type given, using untyped # Called when game status changes # noinspection # # _@param_ `status` — game state, i.e. :in_game, :ended, :launched def on_status_change: (Symbol status) -> untyped end # Callbacks should be included on your listening class # noinspection RubyUnusedLocalVariable module ConnectionListener # sord warn - Sc2Ai::Connection wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Called when connection established to application # noinspection # # _@param_ `connection` def on_connected: (Sc2Ai::Connection connection) -> untyped # sord warn - Sc2Ai::Connection wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Called while waiting on connection to application # noinspection Lint/UnusedMethodArgument # # _@param_ `connection` def on_connection_waiting: (Sc2Ai::Connection connection) -> untyped # sord warn - Sc2Ai::Connection wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Called when disconnected from application # noinspection Lint/UnusedMethodArgument # # _@param_ `connection` def on_disconnect: (Sc2Ai::Connection connection) -> untyped end end # Manage virtual control groups of units, similar to Hash or Array. class UnitGroup include Enumerable extend Forwardable TYPE_WORKER: ::Array[Integer] TYPE_GAS_STRUCTURE: ::Array[Integer] TYPE_MINERAL: ::Array[Integer] TYPE_GEYSER: ::Array[Integer] TYPE_REJECT_DEBRIS: ::Array[Integer] TYPE_TECHLAB: untyped TYPE_REACTOR: ::Array[Integer] TYPE_BASES: ::Array[Integer] # _@param_ `units` — default to be added. # # _@return_ — Sc2::UnitGroup new unit group def initialize: (?(Api::Unit | ::Hash[Integer, Api::Unit] | ::Array[Api::Unit] | Sc2::UnitGroup)? units) -> void # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#empty?` def empty?: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#eql?` def eql?: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#length` def length: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#size` def size: () -> untyped # sord omit - no YARD type given for ":", using untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#:[]` def :@units: (?: untyped) -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#keys` def keys: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#values` def values: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#values_at` def values_at: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#clear` def clear: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#delete_if` def delete_if: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#select!` def select!: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#filter!` def filter!: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#keep_if` def keep_if: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#reject!` def reject!: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#shift` def shift: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#to_a` def to_a: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#to_h` def to_h: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#to_hash` def to_hash: () -> untyped # sord omit - no YARD return type given, using untyped # Forwards to hash of #units. # # _@see_ `Hash#to_proc` def to_proc: () -> untyped # sord omit - no YARD type given for "index", using untyped # Gets the Unit at an index def at: (untyped index) -> Api::Unit def first: () -> Api::Unit def last: () -> Api::Unit # sord omit - no YARD return type given, using untyped # Calls the given block with each Api::Unit value # # ```ruby # unit_group.each do |unit| # puts unit.tag #=> 1234 ... # end # ``` def each: () ?{ (Api::Unit unit) -> void } -> untyped # Calls the given block with each key-value pair # # _@return_ — a new unit group with items merged # # ```ruby # unit_group.each_with_tag do |tag, unit| # puts "#{tag}: #{unit}"} #=> "12345: #" # end # ``` def each_with_tag: () ?{ (Integer tag, Api::Unit unit) -> void } -> self # Checks whether this group contains a unit. # # _@param_ `unit` — a unit or a tag. # # _@return_ — A boolean indicating if the #units include? unit. def contains?: ((Api::Unit | Integer) unit) -> bool # sord omit - no YARD type given for "unit_tag", using untyped # sord omit - no YARD type given for "unit", using untyped # sord omit - no YARD return type given, using untyped # Associates a given unit tag with a given unit. # # _@see_ `UnitGroup#add` — #add, which is easier to just pass an Api::Unit def []=: (untyped unit_tag, untyped unit) -> untyped # Adds a unit or units to the group. # # _@param_ `units` def add: ((Api::Unit | ::Array[Api::Unit] | Sc2::UnitGroup) units) -> self # Remove a another UnitGroup's units from ours or a singular Api::Unit either by object or Api::Unit#tag # # _@param_ `unit_group_unit_or_tag` # # _@return_ — the removed item(s) or nil def remove: ((Sc2::UnitGroup | Api::Unit | Integer)? unit_group_unit_or_tag) -> (::Hash[Integer, Api::Unit] | Api::Unit)? # Creates a new unit group which is the result of the two being subtracted # # _@param_ `other_unit_group` # # _@return_ — new unit group def subtract: (UnitGroup other_unit_group) -> UnitGroup # sord omit - no YARD type given for "unit_group", using untyped # Merges unit_group with our units and returns a new unit group # # _@return_ — a new unit group with items merged def merge: (untyped unit_group) -> Sc2::UnitGroup # sord omit - no YARD type given for "unit_group", using untyped # Merges unit_group.units into self.units and returns self def merge!: (untyped unit_group) -> self # sord omit - no YARD type given for "unit_group", using untyped # Replaces the entire contents of #units with the contents of a given unit_group. # Synonymous with self.units = unit_group.units def replace: (untyped unit_group) -> void # Returns a new UnitGroup object whose #units entries are those for which the block returns a truthy value # noinspection RubyMismatchedReturnType # UnitGroup acts as an array, so sig is ok. # # _@return_ — new unit group def select: () -> Sc2::UnitGroup # Returns a new UnitGroup object whose entries are all those from #units for which the block returns false or nil # noinspection RubyMismatchedReturnType # UnitGroup acts as an array, so sig is ok. # # _@return_ — new unit group def reject: () -> Sc2::UnitGroup # Returns a copy of self with units removed for specified tags. # # _@return_ — new unit group def except: () -> Sc2::UnitGroup # Returns a new unit group containing the entries for given tag(s). # # _@return_ — new unit group def slice: () -> Sc2::UnitGroup # Returns a new unit group containing each element found both in self and in all of the given other_arrays; duplicates are omitted; items are compared using eql? (items must also implement hash correctly): # # _@param_ `other_unit_group` # # _@return_ — new unit group def intersection: (UnitGroup other_unit_group) -> UnitGroup # Selects a single random Unit without a parameter or an array of Units with a param, i.e. self.random(2) def sample: () -> Api::Unit # Returns the first Unit for which the block returns a truthy value def detect: () -> Api::Unit # Returns an array of unit tags # # _@return_ — array of unit#tag def tags: () -> ::Array[Integer] # sord omit - no YARD type given for "key", using untyped # sord omit - no YARD return type given, using untyped # Caches a block based on key and current UnitGroup#units.hash # If the hash changes (units are modified) the cache expires # This allows lazy lookups which only fires if the units change # Allows, i.e. Player#units.workers to fire only the first time it's called per frame def cached: (untyped key) -> untyped # Returns the center (average) position of all units or nil if the group is empty. # Outliers effect this point def pos_centroid: () -> Api::Point2D? # Our first unit's bot object. # Returns nil if units are empty, so use safety operator bot&.method(...) # # _@return_ — player with active connection def bot: () -> Sc2::Player? # Performs action on all units in this group # # _@param_ `ability_id` # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def action: (ability_id: Integer, ?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> void # sord omit - no YARD return type given, using untyped # Builds target unit type, i.e. issuing a build command to worker.build(...Api::UnitTypeId::BARRACKS) # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — is a unit tag or a Api::Point2D. Nil for addons/orbital # # _@param_ `queue_command` — shift+command def build: (unit_type_id: Integer, ?target: (Api::Point2D | Api::Unit | Integer)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Warps in unit type at target (location or pylon) # Will only have affect is this group consists of warp gates, i.e. bot.structures.warpgates # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — a point, which should be inside an energy source # # _@param_ `queue_command` — shift+command def warp: (unit_type_id: Integer, target: Api::Point2D, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Research a specific upgrade at one of these structures # # _@param_ `upgrade_id` — Api::UpgradeId to research # # _@param_ `queue_command` — shift+command def research: (upgrade_id: Integer, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action SMART (right-click) # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def smart: (?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action MOVE # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def move: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action STOP # # _@param_ `queue_command` — shift+command def stop: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action HOLDPOSITION # # _@param_ `queue_command` — shift+command def hold: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action ATTACK # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def attack: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # sord omit - no YARD type given for "queue_command:", using untyped # sord omit - no YARD return type given, using untyped # Issues repair command on target # # _@param_ `target` — is a unit or unit tag def repair: (target: (Api::Unit | Integer), ?queue_command: untyped) -> untyped # Returns a new UnitGroup containing all units matching unit type id(s) # Multiple values work as an "OR" filter # # _@param_ `unit_type_ids` — one or an array of unit Api::UnitTypeId # # ```ruby # # Single # ug.select_type(Api::UnitTypeId::MARINE) #=> # # Multiple - select space-men # ug.select_type([Api::UnitTypeId::MARINE, Api::UnitTypeId::REAPER]) #=> # ``` def select_type: ((Integer | ::Array[Integer]) unit_type_ids) -> UnitGroup # Returns a new UnitGroup excluding all units matching unit type id(s) # # _@param_ `unit_type_ids` — one or an array of unit Api::UnitTypeId # # ```ruby # # Single # ug.reject_type(Api::UnitTypeId::SCV) #=> # # Multiple - reject immovable army # ug.reject_type([Api::UnitTypeId::SIEGETANKSIEGED, Api::UnitTypeId::WIDOWMINEBURROWED]) #=> # ``` def reject_type: ((Integer | ::Array[Integer]) unit_type_ids) -> UnitGroup # sord warn - Sc2::UnitGroupNotSelector wasn't able to be resolved to a constant in this project # Creates a negative selector, which will perform the opposite on the current scope # for it's next select_type/reject_type call. # # ```ruby # structures.not.creep_tumors #=> all structures # structures.not.pylons #=> # units.not.workers # equivalent of units.army, but works too # ``` def not: () -> Sc2::UnitGroupNotSelector # Returns a new UnitGroup containing all units matching attribute id(s) # Multiple values work as an "AND" filter # # _@param_ `attributes` — one or an array of unit Api::UnitTypeId # # ```ruby # # Single # ug.select_attribute(Api::Attribute::Structure) #=> # ug.select_attribute(:Structure) #=> # # Multiple - select mechanical flying units # ug.select_attribute([:Mechanical, :Flying]) #=> # ``` def select_attribute: ((Integer | ::Array[Integer]) attributes) -> UnitGroup # Returns a new UnitGroup containing all units excluding attribute id(s) # Multiple values work as an "AND" filter # # _@param_ `attributes` — one or an array of unit Api::UnitTypeId # # ```ruby # # Single # ug.reject_attribute(Api::Attribute::Structure) #=> # ug.reject_attribute(:Structure) #=> # # Multiple - reject mechanical flying units # ug.reject_attribute(:Mechanical, :Flying) #=> # ``` def reject_attribute: ((Integer | ::Array[Integer]) attributes) -> UnitGroup # Selects units you own # i.e. @bot.all_units.owned # => Units you own # # _@return_ — workers def owned: () -> Sc2::UnitGroup # Selects worker units # # _@return_ — workers def workers: () -> Sc2::UnitGroup # Selects non army units workers. Generally run on Sc2::Player#units # # _@return_ — army # # in the Player context # ```ruby # fighters = units.army # enemy_fighters = units.army # ``` # # _@see_ `#non_army_unit_type_ids` — to modify filters def army: () -> Sc2::UnitGroup # Selects units with attribute Structure # # _@return_ — structures def structures: () -> Sc2::UnitGroup # sord omit - no YARD return type given, using untyped # Contains an array non-army types # Override to remove or add units you want units.army to exclude # # ```ruby # # i.e. to have units.army to exclude Overseers # @non_army_unit_types.push(Api::UnitTypeId::OVERSEER) # # i.e. to have units.army to include Queens # @non_army_unit_types.delete(Api::UnitTypeId::QUEEN) # @non_army_unit_types.delete(Api::UnitTypeId::QUEENBURROWED) # ``` def non_army_unit_type_ids: () -> untyped # Selects command posts (CC, OC, PF, Nexus, Hatch, Hive, Lair) # Aliases are #hq and #townhalls # # _@return_ — unit group of workers def bases: () -> Sc2::UnitGroup # Selects gas structures (refinery/extractor/assimilator) # # _@return_ — gas structures def gas: () -> UnitGroup # Selects only units which have finished constructing, i.o.w. build_progress == 1.0 # # _@return_ — complete unit group def completed: () -> UnitGroup # Selects only units which have finished constructing, i.o.w. build_progress != 1.0 # # _@return_ — incomplete unit group def incomplete: () -> UnitGroup # sord omit - no YARD return type given, using untyped # Selects only units which do not have orders def idle: () -> untyped # Selects units which have this ability available # Queries API if necessary # # _@param_ `ability_id` # # _@return_ — units which have the ability available def ability_available?: (Integer ability_id) -> UnitGroup # Checks whether any unit's first order matches these abilities # # _@param_ `ability_ids` — accepts one or an array of Api::AbilityId def is_performing_ability?: ((Integer | ::Array[Integer]) ability_ids) -> bool # Selects mineral fields # # _@return_ — mineral fields # # ```ruby # # Typically a Player selects via group @neutral # @neutral.minerals # ``` def minerals: () -> Sc2::UnitGroup # Selects gas geysers # # _@return_ — gas geysers # # ```ruby # # Typically a Player selects via group @neutral # @neutral.geysers # ``` def geysers: () -> Sc2::UnitGroup # Selects xel'naga watchtowers # # _@return_ — watchtowers # # ```ruby # # Typically a Player selects via group @neutral # @neutral.watchtowers # ``` def watchtowers: () -> Sc2::UnitGroup # Reverse filters our minerals, geysers and towers to get what is hopefully debris # # _@return_ — debris # # ```ruby # # Typically a Player selects via group @neutral # @neutral.debris # ``` def debris: () -> Sc2::UnitGroup # ZERG ------------------------------------------ # Selects larva units # # _@return_ — larva def larva: () -> Sc2::UnitGroup # Selects eggs. Eggs come from Larva and turn into Units. # # _@return_ — eggs def eggs: () -> Sc2::UnitGroup # Selects queens # # _@return_ — queens def queens: () -> Sc2::UnitGroup # Selects overlords def overlords: () -> Sc2::UnitGroup # Selects overseers def overseers: () -> Sc2::UnitGroup # Selects creep tumors (all) # CREEPTUMORQUEEN is still building & burrowing # while CREEPTUMOR was spread from another tumor still building & burrowing # and CREEPTUMORBURROWED are burrowed tumors which have already spread or can still spread more # # _@return_ — all tumors # # _@see_ `#creep_tumors_burrowed` — for those ready to be spread def creep_tumors: () -> Sc2::UnitGroup # Selects creep tumors which are burrowed. # Burrowed tumors have already been spread or are spread-ready. # No way to distinguish spreadable tumors without manual tracking. # # _@return_ — burrowed tumors (with and without spread ability) def creep_tumors_burrowed: () -> Sc2::UnitGroup # Selects pylons # # _@return_ — pylons def pylons: () -> Sc2::UnitGroup # Selects warp gates (not gateways) # # _@return_ — warp gates def warpgates: () -> Sc2::UnitGroup # Selects pylons and warp prisms in phasing mode # # _@return_ — pylons annd warp prisms phasing def warpables: () -> Sc2::UnitGroup # sord warn - Kdtree wasn't able to be resolved to a constant in this project # Builds a kdtree if not already built and returns it def kdtree: () -> Kdtree # sord omit - no YARD type given for "amount:", using untyped # Returns an # # _@param_ `pos` — unit.pos or a point of any kind # # _@return_ — return group or single unit if amount is not supplied def nearest_to: (pos: Sc2::Position, ?amount: untyped) -> (Sc2::UnitGroup | Api::Unit)? # sord omit - no YARD return type given, using untyped # Selects units which are in a particular circle # # _@param_ `point` — center of circle # # _@param_ `radius` def select_in_circle: (point: (Api::Point2D | Api::Point), radius: Float) -> untyped # sord omit - no YARD type given for :units, using untyped # A hash of units by tag. # @return [Hash] Api::Unit.tag => Api::Unit attr_accessor units: untyped # Returns the value of attribute _cache_hash. attr_accessor _cache_hash: untyped # Returns the value of attribute _cache. attr_accessor _cache: untyped # Whether we should be building a kdtree # Added to allow the disabling of this property # i.e. allows optimization of not to build if group is too big: # return @units.size > 200 # If you don't do a lot of repeat filtering and don't get gains from repeated searches # then override the attribute and set this to: @units.size > 120 attr_accessor use_kdtree: bool # @private # Negative selector allowing unit group "ug.not." filter class UnitGroupNotSelector < Sc2::UnitGroup TYPE_WORKER: ::Array[Integer] TYPE_GAS_STRUCTURE: ::Array[Integer] TYPE_MINERAL: ::Array[Integer] TYPE_GEYSER: ::Array[Integer] TYPE_REJECT_DEBRIS: ::Array[Integer] TYPE_TECHLAB: untyped TYPE_REACTOR: ::Array[Integer] TYPE_BASES: ::Array[Integer] # sord infer - argument name in single @param inferred as "unit_group" def initialize: ((Api::Unit | ::Hash[Integer, Api::Unit] | ::Array[Api::Unit] | Sc2::UnitGroup)? unit_group) -> void # Does the opposite of selector and returns those values for parent def select: () -> Sc2::UnitGroup # Does the opposite of selector and returns those values for parent def reject: () -> Sc2::UnitGroup # Returns the value of attribute parent. attr_accessor parent: untyped end end # Global config manager for runtime # @example Manual configuration block # Sc2.config do |config| # config.sc2_platform = "WineLinux" # config.sc2_path = "/c/Program Files (x86)/StarCraft II/" # config.ports = [5001,5002,5003] # config.host = '127.0.0.1' # end class Configuration include Sc2::Client::ConfigurableOptions CONFIG_ATTRIBUTES: untyped # Create a new Configuration and sets defaults and loads config from yaml def initialize: () -> void # Config file location # # _@return_ — path def config_file: () -> Pathname # Sets defaults when initializing def set_defaults: () -> void # Writes this instance's attributes to yaml config_file def save_config: () -> void # Converts attributes to yaml # # _@return_ — yaml matching stringified keys from CONFIG_ATTRIBUTES def to_yaml: () -> ::Hash[untyped, untyped] # Converts attributes to hash # # _@return_ — hash matching stringified keys from CONFIG_ATTRIBUTES def to_h: () -> ::Hash[untyped, untyped] # Loads YAML config # # _@param_ `file` — location of config file # # _@return_ — success/failure def load_config: ((Pathname | String) file) -> bool # Makes sure we have a temporary directory on linux if not specified def ensure_temp_dir: () -> void # sord omit - no YARD return type given, using untyped # Resets configurable launch options to their defaults def load_default_launch_options: () -> untyped # sord omit - no YARD type given for :sc2_platform, using untyped # Sc2 platform config alias will override ENV["SC2PF"] # @return [String] (see Sc2::Paths#platform) attr_accessor sc2_platform: untyped # Sc2 Path config alias will override ENV["SC2PATH"] # # _@return_ — sc2_path (see Sc2::Paths#platform) attr_accessor sc2_path: (String | untyped) # if empty, a random port will be picked when launching # Launch param: -listen attr_accessor ports: (::Array[Integer] | untyped) end # Runs a match using a map and player configuration class Match include Sc2::Connection::StatusListener # sord omit - no YARD return type given, using untyped # Callback when game status changes def on_status_change: (Symbol status) -> untyped # _@param_ `players` # # _@param_ `map` — String path or map name, or Map def initialize: (players: ::Array[Sc2::Player], ?map: (String | Sc2::MapFile)?) -> void # Validates a runnable match and raises an error if invalid def validate: () -> void # Connects players to instances, creates a game and joins everyone to play! def run: () -> void # sord omit - no YARD type given for "player", using untyped # sord omit - no YARD return type given, using untyped # Saves the replay from the player's perspective. # Requires active client and connection. def autosave_replay: (untyped player) -> untyped # Gets a PortConfig # # _@return_ — port configuration based on players def port_config: () -> Sc2::PortConfig # sord omit - no YARD return type given, using untyped # Gets a Sc2 client from Sc2::ClientManager and connects them def connect_players: () -> untyped # sord omit - no YARD return type given, using untyped # Configure hooks def setup_player_hooks: () -> untyped # Returns a list of players which requires an Sc2 instance # # _@return_ — players which requires_client? def api_players: () -> ::Array[Sc2::Player] # Returns the first player which requires an Api connection as the host # # _@return_ — host def player_host: () -> Sc2::Player # Returns the value of attribute players. attr_accessor players: untyped # _@return_ — an array of assigned players (ai,bots,humans,observers) attr_accessor players Sets the Player(s) for the match: ::Array[Sc2::Player] # sord omit - no YARD type given for :map, using untyped # Returns the value of attribute map. attr_reader map: untyped # _@return_ — the Map for the match attr_accessor map Sets the Map for the match: Sc2::MapFile end # Manages client connection to the Api class Client include Sc2::Client::ConfigurableOptions # Whether the Sc2 process is running or not def running?: () -> bool # Initialize new Sc2 client (starts with #launch) # # _@param_ `host` — to listen on, i.e. "0.0.0.0", "127.0.0.1" # # _@param_ `port` — 5001 # # _@param_ `options` — (see Sc2::Client::ConfigurableOptions) def initialize: (host: String, port: Integer, **::Hash[untyped, untyped] options) -> void # sord omit - no YARD return type given, using untyped # Launches and returns pid or proc def launch: () -> untyped # Stops the Sc2 instance
# This naturally disconnects attached players too def stop: () -> void # sord omit - no YARD return type given, using untyped # Reads "base-version" and "data-hash" for corresponding version # return [Array] tuple base_build and data_version # # _@param_ `version` # # ```ruby # client.base_build => nil # client.data_version => nil # client.use_version("4.10") # client.base_build => 75689 # client.data_version => "B89B5D6FA7CBF6452E721311BFBC6CB2" # ``` def use_version: (String version) -> untyped # Takes all configuration and Sc2 executable string with arguments # # _@return_ — command to launch Sc2 def command_string: () -> String # sord warn - JSON wasn't able to be resolved to a constant in this project # Reads bundled versions.json # # _@return_ — contents of versions.json def versions_json: () -> JSON # sord omit - no YARD return type given, using untyped # Resets configurable launch options to their defaults def load_default_launch_options: () -> untyped # Sc2 port param on which to listen for connections, default is randomly selected
# Launch param: -port 12345 attr_accessor port: Integer # Sc2 build number determines where to look for correct executable version binary attr_accessor base_build: Integer # Sc2 data param, typically only required when launching older versions and Linux # Launch param: -dataVersion "B89B5D6FA7CBF6452E721311BFBC6CB2" attr_accessor data_version: String # sord warn - Async::Task wasn't able to be resolved to a constant in this project # sord warn - Async::Task wasn't able to be resolved to a constant in this project # The async task running Sc2. Used when interrupting. attr_accessor task: Async::Task # Attributes shared by Configuration and Client module ConfigurableOptions # sord omit - no YARD return type given, using untyped # Resets configurable launch options to their defaults def load_default_launch_options: () -> untyped # Sc2 host param on which to listen for connections, default '0.0.0.0' # # Launch param: -host 0.0.0.0 attr_accessor host: String? # Override the path to find the data package. # # Required if the binary is not in the standard versions folder location. # # Launch param: -dataDir ../../ attr_accessor data_dir: String? # If set to true, will send param to client. # # Enables logging of all protocol requests/responses to std::err. # # Launch param: -verbose attr_accessor verbose: bool # Override the path if you really need to set your own temp dir # # Implicit default is /tmp/ # # Launch param: -tempDir ../../ attr_accessor temp_dir: String? # Sets the path the to hardware rendering library. # # Required for using the rendered interface with hardware rendering # # Launch param: -eglpath # # Example: /usr/lib/nvidia-384/libEGL.so attr_accessor egl_path: String? # Sets the path the to software rendering library. # # Required for using the rendered interface with software rendering # # Launch param: -eglpath # # Example: /usr/lib/x86_64-linux-gnu/libOSMesa.so attr_accessor osmesa_path: String? # Launch param: -displayMode # # _@return_ — 0 for window, 1 for fullscreen, nil for system default attr_accessor display_mode: Integer? # pixel width of game window attr_accessor windowwidth: Integer # pixel height of game window attr_accessor windowheight: Integer # left position of window if windowed attr_accessor windowx: Integer # top position of window if windowed attr_accessor windowy: Integer # Version number such as "4.10". Leave blank to use latest attr_accessor version: String? end end # Helps easily locate a map and fetch input for Api::LocalMap class MapFile EXTENSION: untyped # Accepts a map file name and initializes a local map object # # _@param_ `name` — absolute path or path relative to maps # # ```ruby # map = Sc2::Map.new("2000AtmospheresAIE") # map = Sc2::Map.new("2000AtmospheresAIE.SC2Map") # map = Sc2::Map.new("/absolute/path/to/2000AtmospheresAIE.SC2Map") # # If within your Sc2 Maps folder, you have a sub-folder "sc2ai_2022_season3" # map = Sc2::Map.new("sc2ai_2022_season3/2000AtmospheresAIE.SC2Map") # ``` def initialize: (String name) -> void # Returns contents of map file for user with LocalMap.map_data # # _@return_ — contents of file def data: () -> String? # Returns the value of attribute path. attr_accessor path: untyped end # Starts, stops and holds reference to clients class ClientManager include Singleton extend Forwardable # sord omit - no YARD type given for "player_index", using untyped # sord omit - no YARD return type given, using untyped # Gets client for player X or starts an instance def obtain: (untyped player_index) -> untyped # Gets Sc2::Client client for player index # # _@param_ `player_index` — normally 0,1 # # _@return_ — running client or nil if not set def get: (Integer player_index) -> Sc2::Connection? # Starts an Sc2 client for player_index. Will stop existing client if present. # # _@param_ `player_index` — normally 0,1 # # _@return_ — started client def start: (Integer player_index) -> Sc2::Client # Stops client at player index # # _@param_ `player_index` def stop: (Integer player_index) -> void # Stops all clients def stop_all: () -> void def initialize: () -> void # Returns the value of attribute clients. attr_accessor clients: untyped # Returns the value of attribute ports. attr_accessor ports: untyped end # A unified construct that tames Api::* messages which contain location data # Items which are of type Sc2::Position will have #x and #y property at the least. module Position TOLERANCE: untyped # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end end # This class was partially generated with the help of AI. module Api # Constant reference of Buff ids module BuffId NULL: untyped RADAR25: untyped TAUNTB: untyped DISABLEABILS: untyped TRANSIENTMORPH: untyped GRAVITONBEAM: untyped GHOSTCLOAK: untyped BANSHEECLOAK: untyped POWERUSERWARPABLE: untyped VORTEXBEHAVIORENEMY: untyped CORRUPTION: untyped QUEENSPAWNLARVATIMER: untyped GHOSTHOLDFIRE: untyped GHOSTHOLDFIREB: untyped LEECH: untyped LEECHDISABLEABILITIES: untyped EMPDECLOAK: untyped FUNGALGROWTH: untyped GUARDIANSHIELD: untyped SEEKERMISSILETIMEOUT: untyped TIMEWARPPRODUCTION: untyped ETHEREAL: untyped NEURALPARASITE: untyped NEURALPARASITEWAIT: untyped STIMPACKMARAUDER: untyped SUPPLYDROP: untyped STIMPACK: untyped PSISTORM: untyped CLOAKFIELDEFFECT: untyped CHARGING: untyped AIDANGERBUFF: untyped VORTEXBEHAVIOR: untyped SLOW: untyped TEMPORALRIFTUNIT: untyped SHEEPBUSY: untyped CONTAMINATED: untyped TIMESCALECONVERSIONBEHAVIOR: untyped BLINDINGCLOUDSTRUCTURE: untyped COLLAPSIBLEROCKTOWERCONJOINEDSEARCH: untyped COLLAPSIBLEROCKTOWERRAMPDIAGONALCONJOINEDSEARCH: untyped COLLAPSIBLETERRANTOWERCONJOINEDSEARCH: untyped COLLAPSIBLETERRANTOWERRAMPDIAGONALCONJOINEDSEARCH: untyped DIGESTERCREEPSPRAYVISION: untyped INVULNERABILITYSHIELD: untyped MINEDRONECOUNTDOWN: untyped MOTHERSHIPSTASIS: untyped MOTHERSHIPSTASISCASTER: untyped MOTHERSHIPCOREENERGIZEVISUAL: untyped ORACLEREVELATION: untyped GHOSTSNIPEDOT: untyped NEXUSPHASESHIFT: untyped NEXUSINVULNERABILITY: untyped ROUGHTERRAINSEARCH: untyped ROUGHTERRAINSLOW: untyped ORACLECLOAKFIELD: untyped ORACLECLOAKFIELDEFFECT: untyped SCRYERFRIENDLY: untyped SPECTRESHIELD: untyped VIPERCONSUMESTRUCTURE: untyped RESTORESHIELDS: untyped MERCENARYCYCLONEMISSILES: untyped MERCENARYSENSORDISH: untyped MERCENARYSHIELD: untyped SCRYER: untyped STUNROUNDINITIALBEHAVIOR: untyped BUILDINGSHIELD: untyped LASERSIGHT: untyped PROTECTIVEBARRIER: untyped CORRUPTORGROUNDATTACKDEBUFF: untyped BATTLECRUISERANTIAIRDISABLE: untyped BUILDINGSTASIS: untyped STASIS: untyped RESOURCESTUN: untyped MAXIMUMTHRUST: untyped CHARGEUP: untyped CLOAKUNIT: untyped NULLFIELD: untyped RESCUE: untyped BENIGN: untyped LASERTARGETING: untyped ENGAGE: untyped CAPRESOURCE: untyped BLINDINGCLOUD: untyped DOOMDAMAGEDELAY: untyped EYESTALK: untyped BURROWCHARGE: untyped HIDDEN: untyped MINEDRONEDOT: untyped MEDIVACSPEEDBOOST: untyped EXTENDBRIDGEEXTENDINGBRIDGENEWIDE8OUT: untyped EXTENDBRIDGEEXTENDINGBRIDGENWWIDE8OUT: untyped EXTENDBRIDGEEXTENDINGBRIDGENEWIDE10OUT: untyped EXTENDBRIDGEEXTENDINGBRIDGENWWIDE10OUT: untyped EXTENDBRIDGEEXTENDINGBRIDGENEWIDE12OUT: untyped EXTENDBRIDGEEXTENDINGBRIDGENWWIDE12OUT: untyped PHASESHIELD: untyped PURIFY: untyped VOIDSIPHON: untyped ORACLEWEAPON: untyped ANTIAIRWEAPONSWITCHCOOLDOWN: untyped ARBITERMPSTASISFIELD: untyped IMMORTALOVERLOAD: untyped CLOAKINGFIELDTARGETED: untyped LIGHTNINGBOMB: untyped ORACLEPHASESHIFT: untyped RELEASEINTERCEPTORSCOOLDOWN: untyped RELEASEINTERCEPTORSTIMEDLIFEWARNING: untyped RELEASEINTERCEPTORSWANDERDELAY: untyped RELEASEINTERCEPTORSBEACON: untyped ARBITERMPCLOAKFIELDEFFECT: untyped PURIFICATIONNOVA: untyped CORRUPTIONBOMBDAMAGE: untyped CORSAIRMPDISRUPTIONWEB: untyped DISRUPTORPUSH: untyped LIGHTOFAIUR: untyped LOCKON: untyped OVERCHARGE: untyped OVERCHARGEDAMAGE: untyped OVERCHARGESPEEDBOOST: untyped SEEKERMISSILE: untyped TEMPORALFIELD: untyped VOIDRAYSWARMDAMAGEBOOST: untyped VOIDMPIMMORTALREVIVESUPRESSED: untyped DEVOURERMPACIDSPORES: untyped DEFILERMPCONSUME: untyped DEFILERMPDARKSWARM: untyped DEFILERMPPLAGUE: untyped QUEENMPENSNARE: untyped ORACLESTASISTRAPTARGET: untyped SELFREPAIR: untyped AGGRESSIVEMUTATION: untyped PARASITICBOMB: untyped PARASITICBOMBUNITKU: untyped PARASITICBOMBSECONDARYUNITSEARCH: untyped ADEPTDEATHCHECK: untyped LURKERHOLDFIRE: untyped LURKERHOLDFIREB: untyped TIMESTOPSTUN: untyped SLAYNELEMENTALGRABSTUN: untyped PURIFICATIONNOVAPOST: untyped DISABLEINTERCEPTORS: untyped BYPASSARMORDEBUFFONE: untyped BYPASSARMORDEBUFFTWO: untyped BYPASSARMORDEBUFFTHREE: untyped CHANNELSNIPECOMBAT: untyped TEMPESTDISRUPTIONBLASTSTUNBEHAVIOR: untyped GRAVITONPRISON: untyped INFESTORDISEASE: untyped SS_LIGHTNINGPROJECTOR: untyped PURIFIERPLANETCRACKERCHARGE: untyped SPECTRECLOAKING: untyped WRAITHCLOAK: untyped PSYTROUSOXIDE: untyped BANSHEECLOAKCROSSSPECTRUMDAMPENERS: untyped SS_BATTLECRUISERHUNTERSEEKERTIMEOUT: untyped SS_STRONGERENEMYBUFF: untyped SS_TERRATRONARMMISSILETARGETCHECK: untyped SS_MISSILETIMEOUT: untyped SS_LEVIATHANBOMBCOLLISIONCHECK: untyped SS_LEVIATHANBOMBEXPLODETIMER: untyped SS_LEVIATHANBOMBMISSILETARGETCHECK: untyped SS_TERRATRONCOLLISIONCHECK: untyped SS_CARRIERBOSSCOLLISIONCHECK: untyped SS_CORRUPTORMISSILETARGETCHECK: untyped SS_INVULNERABLE: untyped SS_LEVIATHANTENTACLEMISSILETARGETCHECK: untyped SS_LEVIATHANTENTACLEMISSILETARGETCHECKINVERTED: untyped SS_LEVIATHANTENTACLETARGETDEATHDELAY: untyped SS_LEVIATHANTENTACLEMISSILESCANSWAPDELAY: untyped SS_POWERUPDIAGONAL2: untyped SS_BATTLECRUISERCOLLISIONCHECK: untyped SS_TERRATRONMISSILESPINNERMISSILELAUNCHER: untyped SS_TERRATRONMISSILESPINNERCOLLISIONCHECK: untyped SS_TERRATRONMISSILELAUNCHER: untyped SS_BATTLECRUISERMISSILELAUNCHER: untyped SS_TERRATRONSTUN: untyped SS_VIKINGRESPAWN: untyped SS_WRAITHCOLLISIONCHECK: untyped SS_SCOURGEMISSILETARGETCHECK: untyped SS_SCOURGEDEATH: untyped SS_SWARMGUARDIANCOLLISIONCHECK: untyped SS_FIGHTERBOMBMISSILEDEATH: untyped SS_FIGHTERDRONEDAMAGERESPONSE: untyped SS_INTERCEPTORCOLLISIONCHECK: untyped SS_CARRIERCOLLISIONCHECK: untyped SS_MISSILETARGETCHECKVIKINGDRONE: untyped SS_MISSILETARGETCHECKVIKINGSTRONG1: untyped SS_MISSILETARGETCHECKVIKINGSTRONG2: untyped SS_POWERUPHEALTH1: untyped SS_POWERUPHEALTH2: untyped SS_POWERUPSTRONG: untyped SS_POWERUPMORPHTOBOMB: untyped SS_POWERUPMORPHTOHEALTH: untyped SS_POWERUPMORPHTOSIDEMISSILES: untyped SS_POWERUPMORPHTOSTRONGERMISSILES: untyped SS_CORRUPTORCOLLISIONCHECK: untyped SS_SCOUTCOLLISIONCHECK: untyped SS_PHOENIXCOLLISIONCHECK: untyped SS_SCOURGECOLLISIONCHECK: untyped SS_LEVIATHANCOLLISIONCHECK: untyped SS_SCIENCEVESSELCOLLISIONCHECK: untyped SS_TERRATRONSAWCOLLISIONCHECK: untyped SS_LIGHTNINGPROJECTORCOLLISIONCHECK: untyped SHIFTDELAY: untyped BIOSTASIS: untyped PERSONALCLOAKINGFREE: untyped EMPDRAIN: untyped MINDBLASTSTUN: untyped VOODOOSHIELD: untyped SPECTRECLOAKINGFREE: untyped ULTRASONICPULSESTUN: untyped IRRADIATE: untyped NYDUSWORMLAVAINSTANTDEATH: untyped PREDATORCLOAKING: untyped PSIDISRUPTION: untyped MINDCONTROL: untyped QUEENKNOCKDOWN: untyped SCIENCEVESSELCLOAKFIELD: untyped SPORECANNONMISSILE: untyped ARTANISTEMPORALRIFTUNIT: untyped ARTANISCLOAKINGFIELDEFFECT: untyped ARTANISVORTEXBEHAVIOR: untyped INCAPACITATED: untyped KARASSPSISTORM: untyped DUTCHMARAUDERSLOW: untyped JUMPSTOMPSTUN: untyped JUMPSTOMPFSTUN: untyped RAYNORMISSILETIMEDLIFE: untyped PSIONICSHOCKWAVEHEIGHTANDSTUN: untyped SHADOWCLONE: untyped AUTOMATEDREPAIR: untyped SLIMED: untyped RAYNORTIMEBOMBMISSILE: untyped RAYNORTIMEBOMBUNIT: untyped TYCHUSCOMMANDOSTIMPACK: untyped VIRALPLASMA: untyped NAPALM: untyped BURSTCAPACITORSDAMAGEBUFF: untyped COLONYINFESTATION: untyped DOMINATION: untyped EMPBURST: untyped HYBRIDCZERGYROOTS: untyped HYBRIDFZERGYROOTS: untyped LOCKDOWNB: untyped SPECTRELOCKDOWNB: untyped VOODOOLOCKDOWN: untyped ZERATULSTUN: untyped BUILDINGSCARAB: untyped VORTEXBEHAVIORERADICATOR: untyped GHOSTBLAST: untyped HEROICBUFF03: untyped CANNONRADAR: untyped SS_MISSILETARGETCHECKVIKING: untyped SS_MISSILETARGETCHECK: untyped SS_MAXSPEED: untyped SS_MAXACCELERATION: untyped SS_POWERUPDIAGONAL1: untyped WATER: untyped DEFENSIVEMATRIX: untyped TESTATTRIBUTE: untyped TESTVETERANCY: untyped SHREDDERSWARMDAMAGEAPPLY: untyped CORRUPTORINFESTING: untyped MERCGROUNDDROPDELAY: untyped MERCGROUNDDROP: untyped MERCAIRDROPDELAY: untyped SPECTREHOLDFIRE: untyped SPECTREHOLDFIREB: untyped ITEMGRAVITYBOMBS: untyped CARRYMINERALFIELDMINERALS: untyped CARRYHIGHYIELDMINERALFIELDMINERALS: untyped CARRYHARVESTABLEVESPENEGEYSERGAS: untyped CARRYHARVESTABLEVESPENEGEYSERGASPROTOSS: untyped CARRYHARVESTABLEVESPENEGEYSERGASZERG: untyped PERMANENTLYCLOAKED: untyped RAVENSCRAMBLERMISSILE: untyped RAVENSHREDDERMISSILETIMEOUT: untyped RAVENSHREDDERMISSILETINT: untyped RAVENSHREDDERMISSILEARMORREDUCTION: untyped CHRONOBOOSTENERGYCOST: untyped NEXUSSHIELDRECHARGEONPYLONBEHAVIOR: untyped NEXUSSHIELDRECHARGEONPYLONBEHAVIORSECONDARYONTARGET: untyped INFESTORENSNARE: untyped INFESTORENSNAREMAKEPRECURSORREHEIGHTSOURCE: untyped NEXUSSHIELDOVERCHARGE: untyped PARASITICBOMBDELAYTIMEDLIFE: untyped TRANSFUSION: untyped ACCELERATIONZONETEMPORALFIELD: untyped ACCELERATIONZONEFLYINGTEMPORALFIELD: untyped INHIBITORZONEFLYINGTEMPORALFIELD: untyped LOADOUTSPRAYTRACKER: untyped INHIBITORZONETEMPORALFIELD: untyped CLOAKFIELD: untyped RESONATINGGLAIVESPHASESHIFT: untyped NEURALPARASITECHILDREN: untyped AMORPHOUSARMORCLOUD: untyped RAVENSHREDDERMISSILEARMORREDUCTIONUISUBTRUCT: untyped TAKENDAMAGE: untyped RAVENSCRAMBLERMISSILECARRIER: untyped BATTERYOVERCHARGE: untyped # sord omit - no YARD return type given, using untyped def self._250MMSTRIKECANNONS: () -> untyped # sord omit - no YARD return type given, using untyped def self._330MMBARRAGECANNONS: () -> untyped end # Constant reference of Effect ids module EffectId NULL: untyped PSISTORMPERSISTENT: untyped GUARDIANSHIELDPERSISTENT: untyped TEMPORALFIELDGROWINGBUBBLECREATEPERSISTENT: untyped TEMPORALFIELDAFTERBUBBLECREATEPERSISTENT: untyped THERMALLANCESFORWARD: untyped SCANNERSWEEP: untyped NUKEPERSISTENT: untyped LIBERATORTARGETMORPHDELAYPERSISTENT: untyped LIBERATORTARGETMORPHPERSISTENT: untyped BLINDINGCLOUDCP: untyped RAVAGERCORROSIVEBILECP: untyped LURKERMP: untyped end # Provides helper functions which work with and rely on auto generated data in tech_tree_data.rb # To lighten code generation, these methods live in a file of their own and may be modified. module TechTree # Get units can be created at source + the ability to trigger it. Optionally target a specific unit from source # # _@param_ `source` — Api::UnitTypeId the unit type which will do the creation # # _@param_ `target` — (optional) Api::UnitTypeId the unit type which will be created # # _@return_ — either a hash of [UnitTypeId] => { ability hash } or { ability hash } when target is present # # ```ruby # # The data we reference looks like this, unit_type_creation_abilities_data # UnitTypeId.FACTORY: { # UnitTypeId.CYCLONE: { # 'ability': AbilityId.TRAIN_CYCLONE, # 'requires_techlab': True # }, # UnitTypeId.HELLION: { # 'ability': AbilityId.FACTORYTRAIN_HELLION # }, # # Targeting only a source, i.e. factory, your results are all units # { # UnitTypeId.CYCLONE: { # 'ability': AbilityId.TRAIN_CYCLONE, # 'requires_techlab': True # }, # UnitTypeId.HELLION: { # 'ability': AbilityId.FACTORYTRAIN_HELLION # },... # } # # To get the requirements, you could call a source and target like such # Api::TechTree.unit_type_creation_abilities(source: ..., target: ... ) # { # "ability" => 123 # "requires_techlab" => true # "required_building" => 456 # } # ``` def self.unit_type_creation_abilities: (source: Integer, ?target: Integer?) -> ::Hash[untyped, untyped] # Which ability id creates the target, given the source unit/building # # _@param_ `source` — Api::UnitTypeId the unit type which will do the creation # # _@param_ `target` — (optional) Api::UnitTypeId the unit type which will be created # # _@return_ — AbilityId or nil if target is not found at source # # _@see_ `Api::TechTree#unit_type_creation_abilities` — to get a full list of units and their creation abilities def self.unit_type_creation_ability_id: (source: Integer, target: Integer) -> Integer? # Returns what unit types a specific unit type can produce # # _@param_ `unit_type_id` — the unit which you want to check # # _@return_ — returns an array of unit type ids as per Api:UnitTypeId def self.creates_unit_types: (unit_type_id: Integer) -> ::Array[Integer] # Returns what the unit type another is created from # # _@param_ `unit_type_id` — the unit which you want to check # # _@return_ — returns an array of unit type ids as per Api:UnitTypeId def self.unit_created_from: (unit_type_id: Integer) -> ::Array[Integer] # Returns what the unit type an upgrade is researched from # # _@param_ `upgrade_id` — the unit which you want to check # # _@return_ — unit_type_id an array of unit type ids as per Api:UnitTypeId def self.upgrade_researched_from: (upgrade_id: Integer) -> Integer # sord omit - no YARD type given for "upgrade_id:", using untyped # Returns the ability which researches this upgrade # # _@return_ — ability_id def self.upgrade_research_ability_id: (upgrade_id: untyped) -> Integer # Returns a full list of structure unit id's which perform upgrades # This is a useful list when checking if any updates are in progress, # because we scan these structure types for orders # # _@return_ — unit type ids def self.upgrade_structure_unit_type_ids: () -> ::Array[Integer] # Returns hash of upgrade info for a specific structure where the upgrade id is the key # # _@param_ `source_unit_type_id` — source structure unit type id # # _@return_ — ability_id def self.upgrade_ability_data: (Integer source_unit_type_id) -> ::Hash[Integer, ::Hash[untyped, untyped]] # sord omit - no YARD type given for "unit_type_id", using untyped # Returns known abilities fo unit type # # _@return_ — array of ability_ids def self.unit_abilities: (untyped unit_type_id) -> ::Array[Integer] # sord omit - no YARD return type given, using untyped def standard_abilities: () -> untyped # sord omit - no YARD type given for "unit_type_id", using untyped # Returns special abilities, excluding basic start/stop/attack commands # # _@return_ — array of ability_ids def self.unit_special_abilities: (untyped unit_type_id) -> ::Array[Integer] # sord omit - no YARD return type given, using untyped def self.unit_type_creation_abilities_data: () -> untyped # sord omit - no YARD return type given, using untyped # We want to be able to research an upgrade by doing # can_research(UpgradeId, return_idle_structures=True) -> returns list of idle structures that can research it # So we need to assign each upgrade id one building type, and its research ability and requirements (e.g. armory for infantry level 2) # # i.e. # upgrade_research_abilities_data = { # UnitTypeId.ENGINEERINGBAY: { # UpgradeId.TERRANINFANTRYWEAPONSLEVEL1: # { # ability: AbilityId.ENGINEERINGBAYRESEARCH_TERRANINFANTRYWEAPONSLEVEL1, # required_building: None, # requires_power: False, # If a pylon nearby is required # }, # UpgradeId.TERRANINFANTRYWEAPONSLEVEL2: { # ability: AbilityId.ENGINEERINGBAYRESEARCH_TERRANINFANTRYWEAPONSLEVEL2, # required_building: UnitTypeId.ARMORY, # requires_power: False, # If a pylon nearby is required # }, # } # } def self.upgrade_research_abilities_data: () -> untyped # sord omit - no YARD return type given, using untyped # unit_created_from_data = { # UnitTypeId.ADEPT: [UnitTypeId.GATEWAY, UnitTypeId.WARPGATE], # UnitTypeId.ARMORY: [UnitTypeId.SCV], # UnitTypeId.ASSIMILATOR: [UnitTypeId.PROBE], # } def self.unit_created_from_data: () -> untyped # sord omit - no YARD return type given, using untyped # unit_created_from_data = { # UpgradeId.ADEPTPIERCINGATTACK: UnitTypeId.TWILIGHTCOUNCIL, # UpgradeId.ANABOLICSYNTHESIS: UnitTypeId.ULTRALISKCAVERN, # UpgradeId.BANSHEECLOAK: UnitTypeId.STARPORTTECHLAB, # } def self.upgrade_researched_from_data: () -> untyped # sord omit - no YARD return type given, using untyped def self.unit_abilities_data: () -> untyped # sord omit - no YARD return type given, using untyped def self.unit_alias_data: () -> untyped # sord omit - no YARD return type given, using untyped def self.unit_tech_alias_data: () -> untyped end # Constant reference of Ability ids module AbilityId NULL_NULL: untyped SMART: untyped TAUNT_TAUNT: untyped STOP_STOP: untyped STOP_HOLDFIRESPECIAL: untyped STOP_CHEER: untyped STOP_DANCE: untyped HOLDFIRE_STOPSPECIAL: untyped HOLDFIRE_HOLDFIRE: untyped MOVE_MOVE: untyped PATROL_PATROL: untyped HOLDPOSITION_HOLD: untyped SCAN_MOVE: untyped MOVE_TURN: untyped BEACON_CANCEL: untyped BEACON_BEACONMOVE: untyped ATTACK_ATTACK: untyped ATTACK_ATTACKTOWARDS: untyped ATTACK_ATTACKBARRAGE: untyped EFFECT_SPRAY_TERRAN: untyped EFFECT_SPRAY_ZERG: untyped EFFECT_SPRAY_PROTOSS: untyped EFFECT_SALVAGE: untyped CORRUPTION_CORRUPTIONABILITY: untyped CORRUPTION_CANCEL: untyped BEHAVIOR_HOLDFIREON_GHOST: untyped BEHAVIOR_HOLDFIREOFF_GHOST: untyped MORPHTOINFESTEDTERRAN_INFESTEDTERRANS: untyped EXPLODE_EXPLODE: untyped RESEARCH_INTERCEPTORGRAVITONCATAPULT: untyped FLEETBEACONRESEARCH_RESEARCHINTERCEPTORLAUNCHSPEEDUPGRADE: untyped RESEARCH_PHOENIXANIONPULSECRYSTALS: untyped FLEETBEACONRESEARCH_TEMPESTRANGEUPGRADE: untyped FLEETBEACONRESEARCH_RESEARCHVOIDRAYSPEEDUPGRADE: untyped FLEETBEACONRESEARCH_TEMPESTRESEARCHGROUNDATTACKUPGRADE: untyped FUNGALGROWTH_FUNGALGROWTH: untyped GUARDIANSHIELD_GUARDIANSHIELD: untyped EFFECT_REPAIR_MULE: untyped MORPHZERGLINGTOBANELING_BANELING: untyped NEXUSTRAINMOTHERSHIP_MOTHERSHIP: untyped FEEDBACK_FEEDBACK: untyped EFFECT_MASSRECALL_STRATEGICRECALL: untyped PLACEPOINTDEFENSEDRONE_POINTDEFENSEDRONE: untyped HALLUCINATION_ARCHON: untyped HALLUCINATION_COLOSSUS: untyped HALLUCINATION_HIGHTEMPLAR: untyped HALLUCINATION_IMMORTAL: untyped HALLUCINATION_PHOENIX: untyped HALLUCINATION_PROBE: untyped HALLUCINATION_STALKER: untyped HALLUCINATION_VOIDRAY: untyped HALLUCINATION_WARPPRISM: untyped HALLUCINATION_ZEALOT: untyped HARVEST_GATHER_MULE: untyped HARVEST_RETURN_MULE: untyped SEEKERMISSILE_HUNTERSEEKERMISSILE: untyped CALLDOWNMULE_CALLDOWNMULE: untyped GRAVITONBEAM_GRAVITONBEAM: untyped CANCEL_GRAVITONBEAM: untyped BUILDINPROGRESSNYDUSCANAL_CANCEL: untyped SIPHON_SIPHON: untyped SIPHON_CANCEL: untyped LEECH_LEECH: untyped SPAWNCHANGELING_SPAWNCHANGELING: untyped DISGUISEASZEALOT_ZEALOT: untyped DISGUISEASMARINEWITHSHIELD_MARINE: untyped DISGUISEASMARINEWITHOUTSHIELD_MARINE: untyped DISGUISEASZERGLINGWITHWINGS_ZERGLING: untyped DISGUISEASZERGLINGWITHOUTWINGS_ZERGLING: untyped PHASESHIFT_PHASESHIFT: untyped RALLY_BUILDING: untyped RALLY_MORPHING_UNIT: untyped RALLY_COMMANDCENTER: untyped RALLY_NEXUS: untyped RALLY_HATCHERY_UNITS: untyped RALLY_HATCHERY_WORKERS: untyped RESEARCH_GLIALREGENERATION: untyped RESEARCH_TUNNELINGCLAWS: untyped ROACHWARRENRESEARCH_ROACHSUPPLY: untyped SAPSTRUCTURE_SAPSTRUCTURE: untyped INFESTEDTERRANS_INFESTEDTERRANS: untyped NEURALPARASITE_NEURALPARASITE: untyped CANCEL_NEURALPARASITE: untyped EFFECT_INJECTLARVA: untyped EFFECT_STIM_MARAUDER: untyped SUPPLYDROP_SUPPLYDROP: untyped TEMPORALRIFT_TEMPORALRIFT: untyped EFFECT_CHRONOBOOST: untyped RESEARCH_ANABOLICSYNTHESIS: untyped RESEARCH_CHITINOUSPLATING: untyped WORMHOLETRANSIT_WORMHOLETRANSIT: untyped HARVEST_GATHER_SCV: untyped HARVEST_RETURN_SCV: untyped HARVEST_GATHER_PROBE: untyped HARVEST_RETURN_PROBE: untyped ATTACKWARPPRISM_ATTACKWARPPRISM: untyped ATTACKWARPPRISM_ATTACKTOWARDS: untyped ATTACKWARPPRISM_ATTACKBARRAGE: untyped CANCEL_QUEUE1: untyped CANCELSLOT_QUEUE1: untyped CANCEL_QUEUE5: untyped CANCELSLOT_QUEUE5: untyped CANCEL_QUEUECANCELTOSELECTION: untyped CANCELSLOT_QUEUECANCELTOSELECTION: untyped QUE5LONGBLEND_CANCEL: untyped QUE5LONGBLEND_CANCELSLOT: untyped CANCEL_QUEUEADDON: untyped CANCELSLOT_ADDON: untyped CANCEL_BUILDINPROGRESS: untyped HALT_BUILDING: untyped EFFECT_REPAIR_SCV: untyped TERRANBUILD_COMMANDCENTER: untyped TERRANBUILD_SUPPLYDEPOT: untyped TERRANBUILD_REFINERY: untyped TERRANBUILD_BARRACKS: untyped TERRANBUILD_ENGINEERINGBAY: untyped TERRANBUILD_MISSILETURRET: untyped TERRANBUILD_BUNKER: untyped TERRANBUILD_SENSORTOWER: untyped TERRANBUILD_GHOSTACADEMY: untyped TERRANBUILD_FACTORY: untyped TERRANBUILD_STARPORT: untyped TERRANBUILD_ARMORY: untyped TERRANBUILD_FUSIONCORE: untyped HALT_TERRANBUILD: untyped RAVENBUILD_AUTOTURRET: untyped RAVENBUILD_CANCEL: untyped EFFECT_STIM_MARINE: untyped BEHAVIOR_CLOAKON_GHOST: untyped BEHAVIOR_CLOAKOFF_GHOST: untyped SNIPE_SNIPE: untyped MEDIVACHEAL_HEAL: untyped SIEGEMODE_SIEGEMODE: untyped UNSIEGE_UNSIEGE: untyped BEHAVIOR_CLOAKON_BANSHEE: untyped BEHAVIOR_CLOAKOFF_BANSHEE: untyped LOAD_MEDIVAC: untyped UNLOADALLAT_MEDIVAC: untyped UNLOADUNIT_MEDIVAC: untyped SCANNERSWEEP_SCAN: untyped YAMATO_YAMATOGUN: untyped MORPH_VIKINGASSAULTMODE: untyped MORPH_VIKINGFIGHTERMODE: untyped LOAD_BUNKER: untyped UNLOADALL_BUNKER: untyped UNLOADUNIT_BUNKER: untyped UNLOADALL_COMMANDCENTER: untyped UNLOADUNIT_COMMANDCENTER: untyped LOADALL_COMMANDCENTER: untyped LIFT_COMMANDCENTER: untyped LAND_COMMANDCENTER: untyped BUILD_TECHLAB_BARRACKS: untyped BUILD_REACTOR_BARRACKS: untyped CANCEL_BARRACKSADDON: untyped LIFT_BARRACKS: untyped BUILD_TECHLAB_FACTORY: untyped BUILD_REACTOR_FACTORY: untyped CANCEL_FACTORYADDON: untyped LIFT_FACTORY: untyped BUILD_TECHLAB_STARPORT: untyped BUILD_REACTOR_STARPORT: untyped CANCEL_STARPORTADDON: untyped LIFT_STARPORT: untyped LAND_FACTORY: untyped LAND_STARPORT: untyped COMMANDCENTERTRAIN_SCV: untyped LAND_BARRACKS: untyped MORPH_SUPPLYDEPOT_LOWER: untyped MORPH_SUPPLYDEPOT_RAISE: untyped BARRACKSTRAIN_MARINE: untyped BARRACKSTRAIN_REAPER: untyped BARRACKSTRAIN_GHOST: untyped BARRACKSTRAIN_MARAUDER: untyped FACTORYTRAIN_SIEGETANK: untyped FACTORYTRAIN_THOR: untyped FACTORYTRAIN_HELLION: untyped TRAIN_HELLBAT: untyped TRAIN_CYCLONE: untyped FACTORYTRAIN_WIDOWMINE: untyped STARPORTTRAIN_MEDIVAC: untyped STARPORTTRAIN_BANSHEE: untyped STARPORTTRAIN_RAVEN: untyped STARPORTTRAIN_BATTLECRUISER: untyped STARPORTTRAIN_VIKINGFIGHTER: untyped STARPORTTRAIN_LIBERATOR: untyped RESEARCH_HISECAUTOTRACKING: untyped RESEARCH_TERRANSTRUCTUREARMORUPGRADE: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYWEAPONSLEVEL1: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYWEAPONSLEVEL2: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYWEAPONSLEVEL3: untyped RESEARCH_NEOSTEELFRAME: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYARMORLEVEL1: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYARMORLEVEL2: untyped ENGINEERINGBAYRESEARCH_TERRANINFANTRYARMORLEVEL3: untyped MERCCOMPOUNDRESEARCH_REAPERSPEED: untyped BUILD_NUKE: untyped BARRACKSTECHLABRESEARCH_STIMPACK: untyped RESEARCH_COMBATSHIELD: untyped RESEARCH_CONCUSSIVESHELLS: untyped RESEARCH_INFERNALPREIGNITER: untyped FACTORYTECHLABRESEARCH_RESEARCHTRANSFORMATIONSERVOS: untyped RESEARCH_DRILLINGCLAWS: untyped FACTORYTECHLABRESEARCH_RESEARCHLOCKONRANGEUPGRADE: untyped RESEARCH_SMARTSERVOS: untyped FACTORYTECHLABRESEARCH_RESEARCHARMORPIERCINGROCKETS: untyped RESEARCH_CYCLONERAPIDFIRELAUNCHERS: untyped RESEARCH_CYCLONELOCKONDAMAGE: untyped FACTORYTECHLABRESEARCH_CYCLONERESEARCHHURRICANETHRUSTERS: untyped RESEARCH_BANSHEECLOAKINGFIELD: untyped STARPORTTECHLABRESEARCH_RESEARCHMEDIVACENERGYUPGRADE: untyped RESEARCH_RAVENCORVIDREACTOR: untyped STARPORTTECHLABRESEARCH_RESEARCHSEEKERMISSILE: untyped STARPORTTECHLABRESEARCH_RESEARCHDURABLEMATERIALS: untyped RESEARCH_BANSHEEHYPERFLIGHTROTORS: untyped STARPORTTECHLABRESEARCH_RESEARCHLIBERATORAGMODE: untyped STARPORTTECHLABRESEARCH_RESEARCHRAPIDDEPLOYMENT: untyped RESEARCH_RAVENRECALIBRATEDEXPLOSIVES: untyped RESEARCH_HIGHCAPACITYFUELTANKS: untyped RESEARCH_ADVANCEDBALLISTICS: untyped STARPORTTECHLABRESEARCH_RAVENRESEARCHENHANCEDMUNITIONS: untyped STARPORTTECHLABRESEARCH_RESEARCHRAVENINTERFERENCEMATRIX: untyped RESEARCH_PERSONALCLOAKING: untyped ARMORYRESEARCH_TERRANVEHICLEPLATINGLEVEL1: untyped ARMORYRESEARCH_TERRANVEHICLEPLATINGLEVEL2: untyped ARMORYRESEARCH_TERRANVEHICLEPLATINGLEVEL3: untyped ARMORYRESEARCH_TERRANVEHICLEWEAPONSLEVEL1: untyped ARMORYRESEARCH_TERRANVEHICLEWEAPONSLEVEL2: untyped ARMORYRESEARCH_TERRANVEHICLEWEAPONSLEVEL3: untyped ARMORYRESEARCH_TERRANSHIPPLATINGLEVEL1: untyped ARMORYRESEARCH_TERRANSHIPPLATINGLEVEL2: untyped ARMORYRESEARCH_TERRANSHIPPLATINGLEVEL3: untyped ARMORYRESEARCH_TERRANSHIPWEAPONSLEVEL1: untyped ARMORYRESEARCH_TERRANSHIPWEAPONSLEVEL2: untyped ARMORYRESEARCH_TERRANSHIPWEAPONSLEVEL3: untyped ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL1: untyped ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL2: untyped ARMORYRESEARCH_TERRANVEHICLEANDSHIPPLATINGLEVEL3: untyped PROTOSSBUILD_NEXUS: untyped PROTOSSBUILD_PYLON: untyped PROTOSSBUILD_ASSIMILATOR: untyped PROTOSSBUILD_GATEWAY: untyped PROTOSSBUILD_FORGE: untyped PROTOSSBUILD_FLEETBEACON: untyped PROTOSSBUILD_TWILIGHTCOUNCIL: untyped PROTOSSBUILD_PHOTONCANNON: untyped PROTOSSBUILD_STARGATE: untyped PROTOSSBUILD_TEMPLARARCHIVE: untyped PROTOSSBUILD_DARKSHRINE: untyped PROTOSSBUILD_ROBOTICSBAY: untyped PROTOSSBUILD_ROBOTICSFACILITY: untyped PROTOSSBUILD_CYBERNETICSCORE: untyped BUILD_SHIELDBATTERY: untyped PROTOSSBUILD_CANCEL: untyped LOAD_WARPPRISM: untyped UNLOADALL_WARPPRISM: untyped UNLOADALLAT_WARPPRISM: untyped UNLOADUNIT_WARPPRISM: untyped GATEWAYTRAIN_ZEALOT: untyped GATEWAYTRAIN_STALKER: untyped GATEWAYTRAIN_HIGHTEMPLAR: untyped GATEWAYTRAIN_DARKTEMPLAR: untyped GATEWAYTRAIN_SENTRY: untyped TRAIN_ADEPT: untyped STARGATETRAIN_PHOENIX: untyped STARGATETRAIN_CARRIER: untyped STARGATETRAIN_VOIDRAY: untyped STARGATETRAIN_ORACLE: untyped STARGATETRAIN_TEMPEST: untyped ROBOTICSFACILITYTRAIN_WARPPRISM: untyped ROBOTICSFACILITYTRAIN_OBSERVER: untyped ROBOTICSFACILITYTRAIN_COLOSSUS: untyped ROBOTICSFACILITYTRAIN_IMMORTAL: untyped TRAIN_DISRUPTOR: untyped NEXUSTRAIN_PROBE: untyped PSISTORM_PSISTORM: untyped CANCEL_HANGARQUEUE5: untyped CANCELSLOT_HANGARQUEUE5: untyped BROODLORDQUEUE2_CANCEL: untyped BROODLORDQUEUE2_CANCELSLOT: untyped BUILD_INTERCEPTORS: untyped FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL1: untyped FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL2: untyped FORGERESEARCH_PROTOSSGROUNDWEAPONSLEVEL3: untyped FORGERESEARCH_PROTOSSGROUNDARMORLEVEL1: untyped FORGERESEARCH_PROTOSSGROUNDARMORLEVEL2: untyped FORGERESEARCH_PROTOSSGROUNDARMORLEVEL3: untyped FORGERESEARCH_PROTOSSSHIELDSLEVEL1: untyped FORGERESEARCH_PROTOSSSHIELDSLEVEL2: untyped FORGERESEARCH_PROTOSSSHIELDSLEVEL3: untyped RESEARCH_GRAVITICBOOSTER: untyped RESEARCH_GRAVITICDRIVE: untyped RESEARCH_EXTENDEDTHERMALLANCE: untyped ROBOTICSBAYRESEARCH_RESEARCHIMMORTALREVIVE: untyped RESEARCH_PSISTORM: untyped ZERGBUILD_HATCHERY: untyped ZERGBUILD_CREEPTUMOR: untyped ZERGBUILD_EXTRACTOR: untyped ZERGBUILD_SPAWNINGPOOL: untyped ZERGBUILD_EVOLUTIONCHAMBER: untyped ZERGBUILD_HYDRALISKDEN: untyped ZERGBUILD_SPIRE: untyped ZERGBUILD_ULTRALISKCAVERN: untyped ZERGBUILD_INFESTATIONPIT: untyped ZERGBUILD_NYDUSNETWORK: untyped ZERGBUILD_BANELINGNEST: untyped BUILD_LURKERDEN: untyped ZERGBUILD_ROACHWARREN: untyped ZERGBUILD_SPINECRAWLER: untyped ZERGBUILD_SPORECRAWLER: untyped ZERGBUILD_CANCEL: untyped HARVEST_GATHER_DRONE: untyped HARVEST_RETURN_DRONE: untyped RESEARCH_ZERGMELEEWEAPONSLEVEL1: untyped RESEARCH_ZERGMELEEWEAPONSLEVEL2: untyped RESEARCH_ZERGMELEEWEAPONSLEVEL3: untyped RESEARCH_ZERGGROUNDARMORLEVEL1: untyped RESEARCH_ZERGGROUNDARMORLEVEL2: untyped RESEARCH_ZERGGROUNDARMORLEVEL3: untyped RESEARCH_ZERGMISSILEWEAPONSLEVEL1: untyped RESEARCH_ZERGMISSILEWEAPONSLEVEL2: untyped RESEARCH_ZERGMISSILEWEAPONSLEVEL3: untyped EVOLUTIONCHAMBERRESEARCH_EVOLVEPROPULSIVEPERISTALSIS: untyped UPGRADETOLAIR_LAIR: untyped CANCEL_MORPHLAIR: untyped UPGRADETOHIVE_HIVE: untyped CANCEL_MORPHHIVE: untyped UPGRADETOGREATERSPIRE_GREATERSPIRE: untyped CANCEL_MORPHGREATERSPIRE: untyped RESEARCH_PNEUMATIZEDCARAPACE: untyped LAIRRESEARCH_EVOLVEVENTRALSACKS: untyped RESEARCH_BURROW: untyped RESEARCH_ZERGLINGADRENALGLANDS: untyped RESEARCH_ZERGLINGMETABOLICBOOST: untyped RESEARCH_GROOVEDSPINES: untyped RESEARCH_MUSCULARAUGMENTS: untyped HYDRALISKDENRESEARCH_RESEARCHLURKERRANGE: untyped RESEARCH_ZERGFLYERATTACKLEVEL1: untyped RESEARCH_ZERGFLYERATTACKLEVEL2: untyped RESEARCH_ZERGFLYERATTACKLEVEL3: untyped RESEARCH_ZERGFLYERARMORLEVEL1: untyped RESEARCH_ZERGFLYERARMORLEVEL2: untyped RESEARCH_ZERGFLYERARMORLEVEL3: untyped LARVATRAIN_DRONE: untyped LARVATRAIN_ZERGLING: untyped LARVATRAIN_OVERLORD: untyped LARVATRAIN_HYDRALISK: untyped LARVATRAIN_MUTALISK: untyped LARVATRAIN_ULTRALISK: untyped LARVATRAIN_ROACH: untyped LARVATRAIN_INFESTOR: untyped LARVATRAIN_CORRUPTOR: untyped LARVATRAIN_VIPER: untyped TRAIN_SWARMHOST: untyped MORPHTOBROODLORD_BROODLORD: untyped CANCEL_MORPHBROODLORD: untyped BURROWDOWN_BANELING: untyped BURROWBANELINGDOWN_CANCEL: untyped BURROWUP_BANELING: untyped BURROWDOWN_DRONE: untyped BURROWDRONEDOWN_CANCEL: untyped BURROWUP_DRONE: untyped BURROWDOWN_HYDRALISK: untyped BURROWHYDRALISKDOWN_CANCEL: untyped BURROWUP_HYDRALISK: untyped BURROWDOWN_ROACH: untyped BURROWROACHDOWN_CANCEL: untyped BURROWUP_ROACH: untyped BURROWDOWN_ZERGLING: untyped BURROWZERGLINGDOWN_CANCEL: untyped BURROWUP_ZERGLING: untyped BURROWDOWN_INFESTORTERRAN: untyped BURROWUP_INFESTORTERRAN: untyped REDSTONELAVACRITTERBURROW_BURROWDOWN: untyped REDSTONELAVACRITTERINJUREDBURROW_BURROWDOWN: untyped REDSTONELAVACRITTERUNBURROW_BURROWUP: untyped REDSTONELAVACRITTERINJUREDUNBURROW_BURROWUP: untyped LOAD_OVERLORD: untyped UNLOADALLAT_OVERLORD: untyped UNLOADUNIT_OVERLORD: untyped MERGEABLE_CANCEL: untyped WARPABLE_CANCEL: untyped WARPGATETRAIN_ZEALOT: untyped WARPGATETRAIN_STALKER: untyped WARPGATETRAIN_HIGHTEMPLAR: untyped WARPGATETRAIN_DARKTEMPLAR: untyped WARPGATETRAIN_SENTRY: untyped TRAINWARP_ADEPT: untyped BURROWDOWN_QUEEN: untyped BURROWQUEENDOWN_CANCEL: untyped BURROWUP_QUEEN: untyped LOAD_NYDUSNETWORK: untyped UNLOADALL_NYDASNETWORK: untyped UNLOADUNIT_NYDASNETWORK: untyped EFFECT_BLINK_STALKER: untyped BURROWDOWN_INFESTOR: untyped BURROWINFESTORDOWN_CANCEL: untyped BURROWUP_INFESTOR: untyped MORPH_OVERSEER: untyped CANCEL_MORPHOVERSEER: untyped UPGRADETOPLANETARYFORTRESS_PLANETARYFORTRESS: untyped CANCEL_MORPHPLANETARYFORTRESS: untyped RESEARCH_NEURALPARASITE: untyped INFESTATIONPITRESEARCH_RESEARCHLOCUSTLIFETIMEINCREASE: untyped INFESTATIONPITRESEARCH_EVOLVEAMORPHOUSARMORCLOUD: untyped RESEARCH_CENTRIFUGALHOOKS: untyped BURROWDOWN_ULTRALISK: untyped BURROWUP_ULTRALISK: untyped UPGRADETOORBITAL_ORBITALCOMMAND: untyped CANCEL_MORPHORBITAL: untyped MORPH_WARPGATE: untyped UPGRADETOWARPGATE_CANCEL: untyped MORPH_GATEWAY: untyped MORPHBACKTOGATEWAY_CANCEL: untyped LIFT_ORBITALCOMMAND: untyped LAND_ORBITALCOMMAND: untyped FORCEFIELD_FORCEFIELD: untyped FORCEFIELD_CANCEL: untyped MORPH_WARPPRISMPHASINGMODE: untyped PHASINGMODE_CANCEL: untyped MORPH_WARPPRISMTRANSPORTMODE: untyped TRANSPORTMODE_CANCEL: untyped RESEARCH_BATTLECRUISERWEAPONREFIT: untyped FUSIONCORERESEARCH_RESEARCHBALLISTICRANGE: untyped FUSIONCORERESEARCH_RESEARCHRAPIDREIGNITIONSYSTEM: untyped FUSIONCORERESEARCH_RESEARCHMEDIVACENERGYUPGRADE: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRWEAPONSLEVEL1: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRWEAPONSLEVEL2: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRWEAPONSLEVEL3: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRARMORLEVEL1: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRARMORLEVEL2: untyped CYBERNETICSCORERESEARCH_PROTOSSAIRARMORLEVEL3: untyped RESEARCH_WARPGATE: untyped CYBERNETICSCORERESEARCH_RESEARCHHALLUCINATION: untyped RESEARCH_CHARGE: untyped RESEARCH_BLINK: untyped RESEARCH_ADEPTRESONATINGGLAIVES: untyped TWILIGHTCOUNCILRESEARCH_RESEARCHPSIONICSURGE: untyped TWILIGHTCOUNCILRESEARCH_RESEARCHAMPLIFIEDSHIELDING: untyped TWILIGHTCOUNCILRESEARCH_RESEARCHPSIONICAMPLIFIERS: untyped TACNUKESTRIKE_NUKECALLDOWN: untyped CANCEL_NUKE: untyped SALVAGEBUNKERREFUND_SALVAGE: untyped SALVAGEBUNKER_SALVAGE: untyped EMP_EMP: untyped VORTEX_VORTEX: untyped TRAINQUEEN_QUEEN: untyped BURROWCREEPTUMORDOWN_BURROWDOWN: untyped TRANSFUSION_TRANSFUSION: untyped BARRACKSTECHLABMORPH_TECHLABBARRACKS: untyped FACTORYTECHLABMORPH_TECHLABFACTORY: untyped STARPORTTECHLABMORPH_TECHLABSTARPORT: untyped BARRACKSREACTORMORPH_REACTOR: untyped FACTORYREACTORMORPH_REACTOR: untyped STARPORTREACTORMORPH_REACTOR: untyped ATTACK_REDIRECT: untyped EFFECT_STIM_MARINE_REDIRECT: untyped EFFECT_STIM_MARAUDER_REDIRECT: untyped BURROWEDSTOP_STOPROACHBURROWED: untyped BURROWEDSTOP_HOLDFIRESPECIAL: untyped STOP_REDIRECT: untyped BEHAVIOR_GENERATECREEPON: untyped BEHAVIOR_GENERATECREEPOFF: untyped BUILD_CREEPTUMOR_QUEEN: untyped QUEENBUILD_CANCEL: untyped SPINECRAWLERUPROOT_SPINECRAWLERUPROOT: untyped SPINECRAWLERUPROOT_CANCEL: untyped SPORECRAWLERUPROOT_SPORECRAWLERUPROOT: untyped SPORECRAWLERUPROOT_CANCEL: untyped SPINECRAWLERROOT_SPINECRAWLERROOT: untyped CANCEL_SPINECRAWLERROOT: untyped SPORECRAWLERROOT_SPORECRAWLERROOT: untyped CANCEL_SPORECRAWLERROOT: untyped BUILD_CREEPTUMOR_TUMOR: untyped CANCEL_CREEPTUMOR: untyped BUILDAUTOTURRET_AUTOTURRET: untyped MORPH_ARCHON: untyped ARCHON_WARP_TARGET: untyped BUILD_NYDUSWORM: untyped BUILDNYDUSCANAL_SUMMONNYDUSCANALATTACKER: untyped BUILDNYDUSCANAL_CANCEL: untyped EFFECT_CHARGE: untyped HERDINTERACT_HERD: untyped FRENZY_FRENZY: untyped CONTAMINATE_CONTAMINATE: untyped INFESTEDTERRANSLAYEGG_INFESTEDTERRANS: untyped CANCEL_QUEUEPASIVE: untyped CANCELSLOT_QUEUEPASSIVE: untyped CANCEL_QUEUEPASSIVECANCELTOSELECTION: untyped CANCELSLOT_QUEUEPASSIVECANCELTOSELECTION: untyped MORPHTOGHOSTALTERNATE_MOVE: untyped MORPHTOGHOSTNOVA_MOVE: untyped DIGESTERCREEPSPRAY_DIGESTERCREEPSPRAY: untyped MORPHTOCOLLAPSIBLETERRANTOWERDEBRIS_CANCEL: untyped MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPLEFT_CANCEL: untyped MORPHTOCOLLAPSIBLETERRANTOWERDEBRISRAMPRIGHT_CANCEL: untyped MORPH_MOTHERSHIP: untyped CANCEL_MORPHMOTHERSHIP: untyped MOTHERSHIPSTASIS_MOTHERSHIPSTASIS: untyped CANCEL_MOTHERSHIPSTASIS: untyped MOTHERSHIPCOREWEAPON_MOTHERSHIPSTASIS: untyped NEXUSTRAINMOTHERSHIPCORE_MOTHERSHIPCORE: untyped MOTHERSHIPCORETELEPORT_MOTHERSHIPCORETELEPORT: untyped SALVAGEDRONEREFUND_SALVAGE: untyped SALVAGEDRONE_SALVAGE: untyped SALVAGEZERGLINGREFUND_SALVAGE: untyped SALVAGEZERGLING_SALVAGE: untyped SALVAGEQUEENREFUND_SALVAGE: untyped SALVAGEQUEEN_SALVAGE: untyped SALVAGEROACHREFUND_SALVAGE: untyped SALVAGEROACH_SALVAGE: untyped SALVAGEBANELINGREFUND_SALVAGE: untyped SALVAGEBANELING_SALVAGE: untyped SALVAGEHYDRALISKREFUND_SALVAGE: untyped SALVAGEHYDRALISK_SALVAGE: untyped SALVAGEINFESTORREFUND_SALVAGE: untyped SALVAGEINFESTOR_SALVAGE: untyped SALVAGESWARMHOSTREFUND_SALVAGE: untyped SALVAGESWARMHOST_SALVAGE: untyped SALVAGEULTRALISKREFUND_SALVAGE: untyped SALVAGEULTRALISK_SALVAGE: untyped DIGESTERTRANSPORT_LOADDIGESTER: untyped SPECTRESHIELD_SPECTRESHIELD: untyped XELNAGAHEALINGSHRINE_XELNAGAHEALINGSHRINE: untyped NEXUSINVULNERABILITY_NEXUSINVULNERABILITY: untyped NEXUSPHASESHIFT_NEXUSPHASESHIFT: untyped SPAWNCHANGELINGTARGET_SPAWNCHANGELING: untyped QUEENLAND_QUEENLAND: untyped QUEENFLY_QUEENFLY: untyped ORACLECLOAKFIELD_ORACLECLOAKFIELD: untyped FLYERSHIELD_FLYERSHIELD: untyped LOCUSTTRAIN_SWARMHOST: untyped EFFECT_MASSRECALL_MOTHERSHIPCORE: untyped SINGLERECALL_SINGLERECALL: untyped MORPH_HELLION: untyped RESTORESHIELDS_RESTORESHIELDS: untyped SCRYER_SCRYER: untyped LEECHRESOURCES_CANCEL: untyped SNIPEDOT_SNIPEDOT: untyped SWARMHOSTSPAWNLOCUSTS_LOCUSTMP: untyped CLONE_CLONE: untyped BUILDINGSHIELD_BUILDINGSHIELD: untyped MORPHTOCOLLAPSIBLEROCKTOWERDEBRIS_CANCEL: untyped MORPH_HELLBAT: untyped BUILDINGSTASIS_BUILDINGSTASIS: untyped MAXIUMTHRUST_MAXIMUMTHRUST: untyped BURROWDOWN_SWARMHOST: untyped MORPHTOSWARMHOSTBURROWEDMP_CANCEL: untyped BURROWUP_SWARMHOST: untyped SPAWNINFESTEDTERRAN_LOCUSTMP: untyped ATTACKPROTOSSBUILDING_ATTACKBUILDING: untyped ATTACKPROTOSSBUILDING_ATTACKTOWARDS: untyped ATTACKPROTOSSBUILDING_ATTACKBARRAGE: untyped BURROWEDBANELINGSTOP_STOPROACHBURROWED: untyped BURROWEDBANELINGSTOP_HOLDFIRESPECIAL: untyped STOP_BUILDING: untyped STOPPROTOSSBUILDING_HOLDFIRE: untyped STOPPROTOSSBUILDING_CHEER: untyped STOPPROTOSSBUILDING_DANCE: untyped BLINDINGCLOUD_BLINDINGCLOUD: untyped EYESTALK_EYESTALK: untyped EYESTALK_CANCEL: untyped EFFECT_ABDUCT: untyped VIPERCONSUME_VIPERCONSUME: untyped VIPERCONSUMEMINERALS_VIPERCONSUME: untyped VIPERCONSUMESTRUCTURE_VIPERCONSUME: untyped CANCEL_PROTOSSBUILDINGQUEUE: untyped PROTOSSBUILDINGQUEUE_CANCELSLOT: untyped QUE8_CANCEL: untyped QUE8_CANCELSLOT: untyped TESTZERG_CANCEL: untyped BEHAVIOR_BUILDINGATTACKON: untyped BEHAVIOR_BUILDINGATTACKOFF: untyped PICKUPSCRAPSMALL_PICKUPSCRAPSMALL: untyped PICKUPSCRAPMEDIUM_PICKUPSCRAPMEDIUM: untyped PICKUPSCRAPLARGE_PICKUPSCRAPLARGE: untyped PICKUPPALLETGAS_PICKUPPALLETGAS: untyped PICKUPPALLETMINERALS_PICKUPPALLETMINERALS: untyped MASSIVEKNOCKOVER_MASSIVEKNOCKOVER: untyped BURROWDOWN_WIDOWMINE: untyped WIDOWMINEBURROW_CANCEL: untyped BURROWUP_WIDOWMINE: untyped WIDOWMINEATTACK_WIDOWMINEATTACK: untyped TORNADOMISSILE_TORNADOMISSILE: untyped MOTHERSHIPCOREENERGIZE_MOTHERSHIPCOREENERGIZE: untyped MOTHERSHIPCOREENERGIZE_CANCEL: untyped LURKERASPECTMPFROMHYDRALISKBURROWED_LURKERMPFROMHYDRALISKBURROWED: untyped LURKERASPECTMPFROMHYDRALISKBURROWED_CANCEL: untyped LURKERASPECTMP_LURKERMP: untyped LURKERASPECTMP_CANCEL: untyped BURROWDOWN_LURKER: untyped BURROWLURKERMPDOWN_CANCEL: untyped BURROWUP_LURKER: untyped MORPH_LURKERDEN: untyped CANCEL_MORPHLURKERDEN: untyped HALLUCINATION_ORACLE: untyped EFFECT_MEDIVACIGNITEAFTERBURNERS: untyped EXTENDINGBRIDGENEWIDE8OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENEWIDE8_BRIDGERETRACT: untyped EXTENDINGBRIDGENWWIDE8OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENWWIDE8_BRIDGERETRACT: untyped EXTENDINGBRIDGENEWIDE10OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENEWIDE10_BRIDGERETRACT: untyped EXTENDINGBRIDGENWWIDE10OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENWWIDE10_BRIDGERETRACT: untyped EXTENDINGBRIDGENEWIDE12OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENEWIDE12_BRIDGERETRACT: untyped EXTENDINGBRIDGENWWIDE12OUT_BRIDGEEXTEND: untyped EXTENDINGBRIDGENWWIDE12_BRIDGERETRACT: untyped INVULNERABILITYSHIELD_INVULNERABILITYSHIELD: untyped CRITTERFLEE_CRITTERFLEE: untyped ORACLEREVELATION_ORACLEREVELATION: untyped ORACLEREVELATIONMODE_ORACLEREVELATIONMODE: untyped ORACLEREVELATIONMODE_CANCEL: untyped ORACLENORMALMODE_ORACLENORMALMODE: untyped ORACLENORMALMODE_CANCEL: untyped MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT_CANCEL: untyped MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFT_CANCEL: untyped VOIDSIPHON_VOIDSIPHON: untyped ULTRALISKWEAPONCOOLDOWN_ULTRALISKWEAPONCOOLDOWN: untyped MOTHERSHIPCOREPURIFYNEXUSCANCEL_CANCEL: untyped EFFECT_PHOTONOVERCHARGE: untyped XELNAGA_CAVERNS_DOORE_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOOREOPENED_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORN_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORNE_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORNEOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORNOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORNW_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORNWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORS_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORSE_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORSEOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORSOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORSW_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORSWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_DOORW_XELNAGA_CAVERNS_DOORDEFAULTCLOSE: untyped XELNAGA_CAVERNS_DOORWOPENED_XELNAGA_CAVERNS_DOORDEFAULTOPEN: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE8OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE8_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW8OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW8_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE10OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE10_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW10OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW10_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE12OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE12_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW12OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW12_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH8OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH8_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV8OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV8_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH10OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH10_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV10OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV10_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH12OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH12_BRIDGERETRACT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV12OUT_BRIDGEEXTEND: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV12_BRIDGERETRACT: untyped EFFECT_TIMEWARP: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT8OUT_BRIDGEEXTEND: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT8_BRIDGERETRACT: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT8OUT_BRIDGEEXTEND: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT8_BRIDGERETRACT: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT10OUT_BRIDGEEXTEND: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT10_BRIDGERETRACT: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT10OUT_BRIDGEEXTEND: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT10_BRIDGERETRACT: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPWEAPONSLEVEL1: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPWEAPONSLEVEL2: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPWEAPONSLEVEL3: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL1: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL2: untyped ARMORYRESEARCHSWARM_TERRANVEHICLEANDSHIPPLATINGLEVEL3: untyped CAUSTICSPRAY_CAUSTICSPRAY: untyped ORACLECLOAKINGFIELDTARGETED_ORACLECLOAKINGFIELDTARGETED: untyped EFFECT_IMMORTALBARRIER: untyped MORPHTORAVAGER_RAVAGER: untyped CANCEL_MORPHRAVAGER: untyped MORPH_LURKER: untyped CANCEL_MORPHLURKER: untyped ORACLEPHASESHIFT_ORACLEPHASESHIFT: untyped RELEASEINTERCEPTORS_RELEASEINTERCEPTORS: untyped EFFECT_CORROSIVEBILE: untyped BURROWDOWN_RAVAGER: untyped BURROWRAVAGERDOWN_CANCEL: untyped BURROWUP_RAVAGER: untyped PURIFICATIONNOVA_PURIFICATIONNOVA: untyped EFFECT_PURIFICATIONNOVA: untyped IMPALE_IMPALE: untyped LOCKON_LOCKON: untyped LOCKONAIR_LOCKONAIR: untyped CANCEL_LOCKON: untyped CORRUPTIONBOMB_CORRUPTIONBOMB: untyped CORRUPTIONBOMB_CANCEL: untyped EFFECT_TACTICALJUMP: untyped OVERCHARGE_OVERCHARGE: untyped MORPH_THORHIGHIMPACTMODE: untyped THORAPMODE_CANCEL: untyped MORPH_THOREXPLOSIVEMODE: untyped CANCEL_MORPHTHOREXPLOSIVEMODE: untyped LIGHTOFAIUR_LIGHTOFAIUR: untyped EFFECT_MASSRECALL_MOTHERSHIP: untyped LOAD_NYDUSWORM: untyped UNLOADALL_NYDUSWORM: untyped BEHAVIOR_PULSARBEAMON: untyped BEHAVIOR_PULSARBEAMOFF: untyped PULSARBEAM_RIPFIELD: untyped PULSARCANNON_PULSARCANNON: untyped VOIDSWARMHOSTSPAWNLOCUST_VOIDSWARMHOSTSPAWNLOCUST: untyped LOCUSTMPFLYINGMORPHTOGROUND_LOCUSTMPFLYINGSWOOP: untyped LOCUSTMPMORPHTOAIR_LOCUSTMPFLYINGSWOOP: untyped EFFECT_LOCUSTSWOOP: untyped HALLUCINATION_DISRUPTOR: untyped HALLUCINATION_ADEPT: untyped EFFECT_VOIDRAYPRISMATICALIGNMENT: untyped AIURLIGHTBRIDGENE8OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENE8_BRIDGERETRACT: untyped AIURLIGHTBRIDGENE10OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENE10_BRIDGERETRACT: untyped AIURLIGHTBRIDGENE12OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENE12_BRIDGERETRACT: untyped AIURLIGHTBRIDGENW8OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENW8_BRIDGERETRACT: untyped AIURLIGHTBRIDGENW10OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENW10_BRIDGERETRACT: untyped AIURLIGHTBRIDGENW12OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGENW12_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENE8OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENE8_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENE10OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENE10_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENE12OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENE12_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENW8OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENW8_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENW10OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENW10_BRIDGERETRACT: untyped AIURTEMPLEBRIDGENW12OUT_BRIDGEEXTEND: untyped AIURTEMPLEBRIDGENW12_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENE8OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENE8_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENE10OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENE10_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENE12OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENE12_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENW8OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENW8_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENW10OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENW10_BRIDGERETRACT: untyped SHAKURASLIGHTBRIDGENW12OUT_BRIDGEEXTEND: untyped SHAKURASLIGHTBRIDGENW12_BRIDGERETRACT: untyped VOIDMPIMMORTALREVIVEREBUILD_IMMORTAL: untyped VOIDMPIMMORTALREVIVEDEATH_IMMORTAL: untyped ARBITERMPSTASISFIELD_ARBITERMPSTASISFIELD: untyped ARBITERMPRECALL_ARBITERMPRECALL: untyped CORSAIRMPDISRUPTIONWEB_CORSAIRMPDISRUPTIONWEB: untyped MORPHTOGUARDIANMP_MORPHTOGUARDIANMP: untyped MORPHTOGUARDIANMP_CANCEL: untyped MORPHTODEVOURERMP_MORPHTODEVOURERMP: untyped MORPHTODEVOURERMP_CANCEL: untyped DEFILERMPCONSUME_DEFILERMPCONSUME: untyped DEFILERMPDARKSWARM_DEFILERMPDARKSWARM: untyped DEFILERMPPLAGUE_DEFILERMPPLAGUE: untyped DEFILERMPBURROW_BURROWDOWN: untyped DEFILERMPBURROW_CANCEL: untyped DEFILERMPUNBURROW_BURROWUP: untyped QUEENMPENSNARE_QUEENMPENSNARE: untyped QUEENMPSPAWNBROODLINGS_QUEENMPSPAWNBROODLINGS: untyped QUEENMPINFESTCOMMANDCENTER_QUEENMPINFESTCOMMANDCENTER: untyped LIGHTNINGBOMB_LIGHTNINGBOMB: untyped GRAPPLE_GRAPPLE: untyped ORACLESTASISTRAP_ORACLEBUILDSTASISTRAP: untyped BUILD_STASISTRAP: untyped CANCEL_STASISTRAP: untyped ORACLESTASISTRAPACTIVATE_ACTIVATESTASISWARD: untyped SELFREPAIR_SELFREPAIR: untyped SELFREPAIR_CANCEL: untyped AGGRESSIVEMUTATION_AGGRESSIVEMUTATION: untyped PARASITICBOMB_PARASITICBOMB: untyped ADEPTPHASESHIFT_ADEPTPHASESHIFT: untyped PURIFICATIONNOVAMORPH_PURIFICATIONNOVA: untyped PURIFICATIONNOVAMORPHBACK_PURIFICATIONNOVA: untyped BEHAVIOR_HOLDFIREON_LURKER: untyped BEHAVIOR_HOLDFIREOFF_LURKER: untyped LIBERATORMORPHTOAG_LIBERATORAGMODE: untyped LIBERATORMORPHTOAA_LIBERATORAAMODE: untyped MORPH_LIBERATORAGMODE: untyped MORPH_LIBERATORAAMODE: untyped TIMESTOP_TIMESTOP: untyped TIMESTOP_CANCEL: untyped AIURLIGHTBRIDGEABANDONEDNE8OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNE8_BRIDGERETRACT: untyped AIURLIGHTBRIDGEABANDONEDNE10OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNE10_BRIDGERETRACT: untyped AIURLIGHTBRIDGEABANDONEDNE12OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNE12_BRIDGERETRACT: untyped AIURLIGHTBRIDGEABANDONEDNW8OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNW8_BRIDGERETRACT: untyped AIURLIGHTBRIDGEABANDONEDNW10OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNW10_BRIDGERETRACT: untyped AIURLIGHTBRIDGEABANDONEDNW12OUT_BRIDGEEXTEND: untyped AIURLIGHTBRIDGEABANDONEDNW12_BRIDGERETRACT: untyped KD8CHARGE_KD8CHARGE: untyped PENETRATINGSHOT_PENETRATINGSHOT: untyped CLOAKINGDRONE_CLOAKINGDRONE: untyped CANCEL_ADEPTPHASESHIFT: untyped CANCEL_ADEPTSHADEPHASESHIFT: untyped SLAYNELEMENTALGRAB_SLAYNELEMENTALGRAB: untyped MORPHTOCOLLAPSIBLEPURIFIERTOWERDEBRIS_CANCEL: untyped PORTCITY_BRIDGE_UNITNE8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNE8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSE8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSE8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITNW8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNW8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSW8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSW8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITNE10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNE10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSE10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSE10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITNW10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNW10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSW10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSW10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITNE12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNE12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSE12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSE12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITNW12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITNW12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITSW12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITSW12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITN8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITN8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITS8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITS8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITE8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITE8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITW8OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITW8_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITN10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITN10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITS10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITS10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITE10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITE10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITW10OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITW10_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITN12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITN12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITS12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITS12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITE12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITE12_BRIDGERETRACT: untyped PORTCITY_BRIDGE_UNITW12OUT_BRIDGEEXTEND: untyped PORTCITY_BRIDGE_UNITW12_BRIDGERETRACT: untyped TEMPESTDISRUPTIONBLAST_TEMPESTDISRUPTIONBLAST: untyped CANCEL_TEMPESTDISRUPTIONBLAST: untyped EFFECT_SHADOWSTRIDE: untyped EFFECT_SPAWNLOCUSTS: untyped LOCUSTMPFLYINGSWOOPATTACK_LOCUSTMPFLYINGSWOOP: untyped MORPH_OVERLORDTRANSPORT: untyped CANCEL_MORPHOVERLORDTRANSPORT: untyped EFFECT_GHOSTSNIPE: untyped CHANNELSNIPE_CANCEL: untyped PURIFYMORPHPYLON_MOTHERSHIPCOREWEAPON: untyped PURIFYMORPHPYLONBACK_MOTHERSHIPCOREWEAPON: untyped RESEARCH_SHADOWSTRIKE: untyped HEAL_MEDICHEAL: untyped LURKERASPECT_LURKER: untyped LURKERASPECT_CANCEL: untyped BURROWLURKERDOWN_BURROWDOWN: untyped BURROWLURKERDOWN_CANCEL: untyped BURROWLURKERUP_BURROWUP: untyped D8CHARGE_D8CHARGE: untyped DEFENSIVEMATRIX_DEFENSIVEMATRIX: untyped MISSILEPODS_MISSILEPODS: untyped LOKIMISSILEPODS_MISSILEPODS: untyped HUTTRANSPORT_HUTLOAD: untyped HUTTRANSPORT_HUTUNLOADALL: untyped LEVIATHANSPAWNBROODLORD_SPAWNBROODLORD: untyped SS_CARRIERBOSSATTACKLAUNCH_SS_SHOOTING: untyped SS_CARRIERSPAWNINTERCEPTOR_SS_CARRIERSPAWNINTERCEPTOR: untyped SS_CARRIERBOSSATTACKTARGET_SS_SHOOTING: untyped SS_FIGHTERBOMB_SS_FIGHTERBOMB: untyped SS_PHOENIXSHOOTING_SS_SHOOTING: untyped SS_BATTLECRUISERMISSILEATTACK_SS_SHOOTING: untyped SS_LEVIATHANSPAWNBOMBS_SS_LEVIATHANSPAWNBOMBS: untyped SS_BATTLECRUISERHUNTERSEEKERATTACK_SS_SHOOTING: untyped SS_LEVIATHANTENTACLEATTACKL1NODELAY_SS_LEVIATHANTENTACLEATTACKL1NODELAY: untyped SS_LEVIATHANTENTACLEATTACKL2NODELAY_SS_LEVIATHANTENTACLEATTACKL2NODELAY: untyped SS_LEVIATHANTENTACLEATTACKR1NODELAY_SS_LEVIATHANTENTACLEATTACKR1NODELAY: untyped SS_LEVIATHANTENTACLEATTACKR2NODELAY_SS_LEVIATHANTENTACLEATTACKR2NODELAY: untyped SS_SCIENCEVESSELTELEPORT_ZERATULBLINK: untyped SS_TERRATRONBEAMATTACK_SS_TERRATRONBEAMATTACK: untyped SS_TERRATRONSAWATTACK_SS_TERRATRONSAWATTACK: untyped SS_WRAITHATTACK_SS_SHOOTING: untyped SS_SWARMGUARDIANATTACK_SS_SHOOTING: untyped SS_SCOUTATTACK_SS_SHOOTING: untyped SS_INTERCEPTORATTACK_SS_SHOOTING: untyped SS_CORRUPTORATTACK_SS_SHOOTING: untyped SS_LEVIATHANTENTACLEATTACKL2_SS_LEVIATHANTENTACLEATTACKL2: untyped SS_LEVIATHANTENTACLEATTACKR1_SS_LEVIATHANTENTACLEATTACKR1: untyped SS_LEVIATHANTENTACLEATTACKL1_SS_LEVIATHANTENTACLEATTACKL1: untyped SS_LEVIATHANTENTACLEATTACKR2_SS_LEVIATHANTENTACLEATTACKR2: untyped SS_SCIENCEVESSELATTACK_SS_SHOOTING: untyped LURKERASPECTFROMHYDRALISKBURROWED_LURKERFROMHYDRALISKBURROWED: untyped LURKERASPECTFROMHYDRALISKBURROWED_CANCEL: untyped UPGRADETOLURKERDEN_LURKERDEN: untyped UPGRADETOLURKERDEN_CANCEL: untyped ADVANCEDCONSTRUCTION_CANCEL: untyped BUILDINPROGRESSNONCANCELLABLE_CANCEL: untyped INFESTEDVENTSPAWNCORRUPTOR_SPAWNCORRUPTOR: untyped INFESTEDVENTSPAWNBROODLORD_SPAWNBROODLORD: untyped IRRADIATE_IRRADIATE: untyped IRRADIATE_CANCEL: untyped INFESTEDVENTSPAWNMUTALISK_LEVIATHANSPAWNMUTALISK: untyped MAKEVULTURESPIDERMINES_SPIDERMINEREPLENISH: untyped MEDIVACDOUBLEBEAMHEAL_HEAL: untyped MINDCONTROL_MINDCONTROL: untyped OBLITERATE_OBLITERATE: untyped VOODOOSHIELD_VOODOOSHIELD: untyped RELEASEMINION_RELEASEMINION: untyped ULTRASONICPULSE_ULTRASONICPULSE: untyped ARCHIVESEAL_ARCHIVESEAL: untyped ARTANISVORTEX_VORTEX: untyped ARTANISWORMHOLETRANSIT_WORMHOLETRANSIT: untyped BUNKERATTACK_BUNKERATTACK: untyped BUNKERATTACK_ATTACKTOWARDS: untyped BUNKERATTACK_ATTACKBARRAGE: untyped BUNKERSTOP_STOPBUNKER: untyped BUNKERSTOP_HOLDFIRESPECIAL: untyped CANCELTERRAZINEHARVEST_CANCEL: untyped LEVIATHANSPAWNMUTALISK_LEVIATHANSPAWNMUTALISK: untyped PARKCOLONISTVEHICLE_PARKCOLONISTVEHICLE: untyped STARTCOLONISTVEHICLE_STARTCOLONISTVEHICLE: untyped CONSUMPTION_CONSUMPTION: untyped CONSUMEDNA_CONSUMEDNA: untyped EGGPOP_EGGPOP: untyped EXPERIMENTALPLASMAGUN_EXPERIMENTALPLASMAGUN: untyped GATHERSPECIALOBJECT_GATHERSPECIALOBJECT: untyped LOKIUNDOCK_LIFT: untyped MINDBLAST_MINDBLAST: untyped MORPHTOINFESTEDCIVILIAN_MORPHTOINFESTEDCIVILIAN: untyped QUEENSHOCKWAVE_QUEENSHOCKWAVE: untyped TAURENOUTHOUSELIFTOFF_TAURENOUTHOUSEFLY: untyped TAURENOUTHOUSETRANSPORT_LOADTAURENOUTHOUSE: untyped TAURENOUTHOUSETRANSPORT_UNLOADTAURENOUTHOUSE: untyped TYCHUS03OMEGASTORM_OMEGASTORM: untyped RAYNORSNIPE_RAYNORSNIPE: untyped BONESHEAL_BONESHEAL: untyped BONESTOSSGRENADE_TOSSGRENADETYCHUS: untyped HERCULESTRANSPORT_MEDIVACLOAD: untyped HERCULESTRANSPORT_MEDIVACUNLOADALL: untyped SPECOPSDROPSHIPTRANSPORT_MEDIVACLOAD: untyped SPECOPSDROPSHIPTRANSPORT_MEDIVACUNLOADALL: untyped DUSKWINGBANSHEECLOAKINGFIELD_CLOAKONBANSHEE: untyped DUSKWINGBANSHEECLOAKINGFIELD_CLOAKOFF: untyped HYPERIONYAMATOSPECIAL_HYPERIONYAMATOGUN: untyped INFESTABLEHUTTRANSPORT_HUTLOAD: untyped INFESTABLEHUTTRANSPORT_HUTUNLOADALL: untyped DUTCHPLACETURRET_DUTCHPLACETURRET: untyped BURROWINFESTEDCIVILIANDOWN_BURROWDOWN: untyped BURROWINFESTEDCIVILIANUP_BURROWUP: untyped SELENDISHANGAR_INTERCEPTOR: untyped SIEGEBREAKERSIEGE_SIEGEMODE: untyped SIEGEBREAKERUNSIEGE_UNSIEGE: untyped SOULCHANNEL_CANCEL: untyped SENTRYGUNBURROW_BURROWTURRET: untyped SENTRYGUNUNBURROW_UNBURROWTURRET: untyped GRAVITONPRISON_GRAVITONPRISON: untyped IMPLOSION_IMPLOSION: untyped OMEGASTORM_OMEGASTORM: untyped PSIONICSHOCKWAVE_PSIONICSHOCKWAVE: untyped HYBRIDFAOESTUN_HYBRIDFAOESTUN: untyped SUMMONMERCENARIES_HIREKELMORIANMINERS: untyped SUMMONMERCENARIES_HIREDEVILDOGS: untyped SUMMONMERCENARIES_HIRESPARTANCOMPANY: untyped SUMMONMERCENARIES_HIREHAMMERSECURITIES: untyped SUMMONMERCENARIES_HIRESIEGEBREAKERS: untyped SUMMONMERCENARIES_HIREHELSANGELS: untyped SUMMONMERCENARIES_HIREDUSKWING: untyped SUMMONMERCENARIES_HIREDUKESREVENGE: untyped SUMMONMERCENARIESPH_HIREKELMORIANMINERSPH: untyped ENERGYNOVA_ENERGYNOVA: untyped THEMOROSDEVICE_THEMOROSDEVICE: untyped TOSSGRENADE_TOSSGRENADE: untyped VOIDSEEKERTRANSPORT_MEDIVACLOAD: untyped VOIDSEEKERTRANSPORT_MEDIVACUNLOADALL: untyped TERRANBUILDDROP_SUPPLYDEPOTDROP: untyped TERRANBUILDDROP_CANCEL: untyped ODINNUCLEARSTRIKE_ODINNUKECALLDOWN: untyped ODINNUCLEARSTRIKE_CANCEL: untyped ODINWRECKAGE_ODIN: untyped RESEARCHLABTRANSPORT_HUTLOAD: untyped RESEARCHLABTRANSPORT_HUTUNLOADALL: untyped COLONYSHIPTRANSPORT_MEDIVACLOAD: untyped COLONYSHIPTRANSPORT_MEDIVACUNLOADALL: untyped COLONYINFESTATION_COLONYINFESTATION: untyped DOMINATION_DOMINATION: untyped DOMINATION_CANCEL: untyped KARASSPLASMASURGE_KARASSPLASMASURGE: untyped KARASSPSISTORM_PSISTORM: untyped HYBRIDBLINK_ZERATULBLINK: untyped HYBRIDCPLASMABLAST_HYBRIDCPLASMABLAST: untyped HEROARMNUKE_NUKEARM: untyped HERONUCLEARSTRIKE_NUKECALLDOWN: untyped HERONUCLEARSTRIKE_CANCEL: untyped ODINBARRAGE_ODINBARRAGE: untyped ODINBARRAGE_CANCEL: untyped PURIFIERTOGGLEPOWER_PURIFIERPOWERDOWN: untyped PURIFIERTOGGLEPOWER_PURIFIERPOWERUP: untyped PHASEMINEBLAST_PHASEMINEBLAST: untyped VOIDSEEKERPHASEMINEBLAST_PHASEMINEBLAST: untyped TRANSPORTTRUCKTRANSPORT_TRANSPORTTRUCKLOAD: untyped TRANSPORTTRUCKTRANSPORT_TRANSPORTTRUCKUNLOADALL: untyped VAL03QUEENOFBLADESBURROW_BURROWDOWN: untyped VAL03QUEENOFBLADESDEEPTUNNEL_DEEPTUNNEL: untyped VAL03QUEENOFBLADESUNBURROW_BURROWUP: untyped LOKIYAMATO_LOKIYAMATOGUN: untyped DUKESREVENGEYAMATO_YAMATOGUN: untyped ZERATULBLINK_ZERATULBLINK: untyped ROGUEGHOSTCLOAK_CLOAKONSPECTRE: untyped ROGUEGHOSTCLOAK_CLOAKOFF: untyped VULTURESPIDERMINES_SPIDERMINE: untyped VULTUREQUEUE3_CANCEL: untyped VULTUREQUEUE3_CANCELSLOT: untyped SUPERWARPGATETRAIN_ZEALOT: untyped SUPERWARPGATETRAIN_STALKER: untyped SUPERWARPGATETRAIN_IMMORTAL: untyped SUPERWARPGATETRAIN_HIGHTEMPLAR: untyped SUPERWARPGATETRAIN_DARKTEMPLAR: untyped SUPERWARPGATETRAIN_SENTRY: untyped SUPERWARPGATETRAIN_CARRIER: untyped SUPERWARPGATETRAIN_PHOENIX: untyped SUPERWARPGATETRAIN_VOIDRAY: untyped SUPERWARPGATETRAIN_ARCHON: untyped SUPERWARPGATETRAIN_WARPINZERATUL: untyped SUPERWARPGATETRAIN_WARPINURUN: untyped SUPERWARPGATETRAIN_WARPINMOHANDAR: untyped SUPERWARPGATETRAIN_WARPINSELENDIS: untyped SUPERWARPGATETRAIN_WARPINSCOUT: untyped SUPERWARPGATETRAIN_COLOSSUS: untyped SUPERWARPGATETRAIN_WARPPRISM: untyped BURROWOMEGALISKDOWN_BURROWDOWN: untyped BURROWOMEGALISKUP_BURROWUP: untyped BURROWINFESTEDABOMINATIONDOWN_BURROWDOWN: untyped BURROWINFESTEDABOMINATIONUP_BURROWUP: untyped BURROWHUNTERKILLERDOWN_BURROWDOWN: untyped BURROWHUNTERKILLERDOWN_CANCEL: untyped BURROWHUNTERKILLERUP_BURROWUP: untyped NOVASNIPE_NOVASNIPE: untyped VORTEXPURIFIER_VORTEX: untyped TALDARIMVORTEX_VORTEX: untyped PURIFIERPLANETCRACKER_PLANETCRACKER: untyped BURROWINFESTEDTERRANCAMPAIGNDOWN_BURROWDOWN: untyped BURROWINFESTEDTERRANCAMPAIGNUP_BURROWUP: untyped INFESTEDMONSTERTRAIN_INFESTEDCIVILIAN: untyped INFESTEDMONSTERTRAIN_INFESTEDTERRANCAMPAIGN: untyped INFESTEDMONSTERTRAIN_INFESTEDABOMINATION: untyped BIODOMETRANSPORT_BIODOMELOAD: untyped BIODOMETRANSPORT_BIODOMEUNLOADALL: untyped ATTACKALLOWSINVULNERABLE_ATTACKALLOWSINVULNERABLE: untyped ATTACKALLOWSINVULNERABLE_ATTACKTOWARDS: untyped ATTACKALLOWSINVULNERABLE_ATTACKBARRAGE: untyped ZERATULSTUN_ZERATULSTUN: untyped WRAITHCLOAK_CLOAKOFF: untyped BARRACKSTECHREACTORMORPH_TECHLABBARRACKS: untyped FACTORYTECHREACTORMORPH_TECHLABFACTORY: untyped STARPORTTECHREACTORMORPH_TECHLABSTARPORT: untyped SS_FIGHTERSHOOTING_SS_SHOOTING: untyped RAYNORC4_PLANTC4CHARGE: untyped DUKESREVENGEDEFENSIVEMATRIX_DEFENSIVEMATRIX: untyped DUKESREVENGEMISSILEPODS_MISSILEPODS: untyped THORWRECKAGE_THOR: untyped THORREBORN_THOR: untyped THORREBORN_CANCEL: untyped SPECTRENUKE_SPECTRENUKECALLDOWN: untyped SPECTRENUKE_CANCEL: untyped SPECTRENUKESILOARMMAGAZINE_SPECTRENUKEARM: untyped COLONISTSHIPLIFTOFF_LIFT: untyped COLONISTSHIPLAND_LAND: untyped BIODOMECOMMANDLIFTOFF_LIFT: untyped BIODOMECOMMANDLAND_LAND: untyped HERCULESLIFTOFF_LIFT: untyped HERCULESLAND_HERCULESLAND: untyped LIGHTBRIDGEOFF_LIGHTBRIDGEOFF: untyped LIGHTBRIDGEON_LIGHTBRIDGEON: untyped LIBRARYDOWN_LIBRARYDOWN: untyped LIBRARYUP_LIBRARYUP: untyped TEMPLEDOORDOWN_TEMPLEDOORDOWN: untyped TEMPLEDOORUP_TEMPLEDOORUP: untyped TEMPLEDOORDOWNURDL_TEMPLEDOORDOWNURDL: untyped TEMPLEDOORUPURDL_TEMPLEDOORUPURDL: untyped PSYTROUSOXIDE_PSYTROUSOXIDEON: untyped PSYTROUSOXIDE_PSYTROUSOXIDEOFF: untyped BIOPLASMIDDISCHARGE_BIOPLASMIDDISCHARGE: untyped WRECKINGCREWASSAULTMODE_ASSAULTMODE: untyped WRECKINGCREWFIGHTERMODE_FIGHTERMODE: untyped BIOSTASIS_BIOSTASIS: untyped COLONISTTRANSPORTTRANSPORT_COLONISTTRANSPORTLOAD: untyped COLONISTTRANSPORTTRANSPORT_COLONISTTRANSPORTUNLOADALL: untyped DROPTOSUPPLYDEPOT_RAISE: untyped REFINERYTOAUTOMATEDREFINERY_RAISE: untyped HELIOSCRASHMORPH_CRASHMORPH: untyped NANOREPAIR_HEAL: untyped PICKUP_PICKUP: untyped PICKUPARCADE_PICKUP: untyped PICKUPGAS100_PICKUPGAS100: untyped PICKUPMINERALS100_PICKUPMINERALS100: untyped TAURENSTIMPACK_STIM: untyped TESTREVIVE_SCV: untyped TESTINTERACT_DESIGNATE: untyped CLIFFDOOROPEN0_SPACEPLATFORMDOOROPEN: untyped CLIFFDOORCLOSE0_SPACEPLATFORMDOORCLOSE: untyped CLIFFDOOROPEN1_SPACEPLATFORMDOOROPEN: untyped CLIFFDOORCLOSE1_SPACEPLATFORMDOORCLOSE: untyped DESTRUCTIBLEGATEDIAGONALBLURLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATEDIAGONALULBRLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALBFLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLFLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLOWERED_GATEOPEN: untyped DESTRUCTIBLEGATEDIAGONALBLUR_GATECLOSE: untyped DESTRUCTIBLEGATEDIAGONALULBR_GATECLOSE: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALBF_GATECLOSE: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTAL_GATECLOSE: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLF_GATECLOSE: untyped DESTRUCTIBLEGATESTRAIGHTVERTICAL_GATECLOSE: untyped TESTLEARN_TESTLEARN: untyped TESTLEVELEDSPELL_YAMATOGUN: untyped METALGATEDIAGONALBLURLOWERED_GATEOPEN: untyped METALGATEDIAGONALULBRLOWERED_GATEOPEN: untyped METALGATESTRAIGHTHORIZONTALBFLOWERED_GATEOPEN: untyped METALGATESTRAIGHTHORIZONTALLOWERED_GATEOPEN: untyped METALGATESTRAIGHTVERTICALLFLOWERED_GATEOPEN: untyped METALGATESTRAIGHTVERTICALLOWERED_GATEOPEN: untyped METALGATEDIAGONALBLUR_GATECLOSE: untyped METALGATEDIAGONALULBR_GATECLOSE: untyped METALGATESTRAIGHTHORIZONTALBF_GATECLOSE: untyped METALGATESTRAIGHTHORIZONTAL_GATECLOSE: untyped METALGATESTRAIGHTVERTICALLF_GATECLOSE: untyped METALGATESTRAIGHTVERTICAL_GATECLOSE: untyped SECURITYGATEDIAGONALBLURLOWERED_GATEOPEN: untyped SECURITYGATEDIAGONALULBRLOWERED_GATEOPEN: untyped SECURITYGATESTRAIGHTHORIZONTALBFLOWERED_GATEOPEN: untyped SECURITYGATESTRAIGHTHORIZONTALLOWERED_GATEOPEN: untyped SECURITYGATESTRAIGHTVERTICALLFLOWERED_GATEOPEN: untyped SECURITYGATESTRAIGHTVERTICALLOWERED_GATEOPEN: untyped SECURITYGATEDIAGONALBLUR_GATECLOSE: untyped SECURITYGATEDIAGONALULBR_GATECLOSE: untyped SECURITYGATESTRAIGHTHORIZONTALBF_GATECLOSE: untyped SECURITYGATESTRAIGHTHORIZONTAL_GATECLOSE: untyped SECURITYGATESTRAIGHTVERTICALLF_GATECLOSE: untyped SECURITYGATESTRAIGHTVERTICAL_GATECLOSE: untyped CHANGESHRINETERRAN_CHANGESHRINETERRAN: untyped CHANGESHRINEPROTOSS_CHANGESHRINEPROTOSS: untyped SPECTREHOLDFIRE_SPECTREHOLDFIRE: untyped SPECTREWEAPONSFREE_WEAPONSFREE: untyped GWALEARN_TESTLEARN: untyped LIGHTBRIDGEOFFTOPRIGHT_LIGHTBRIDGEOFF: untyped LIGHTBRIDGEONTOPRIGHT_LIGHTBRIDGEON: untyped TESTHEROGRAB_GRABZERGLING: untyped TESTHEROTHROW_THROWZERGLING: untyped TESTHERODEBUGMISSILEABILITY_TESTHERODEBUGMISSILEABILITY: untyped TESTHERODEBUGTRACKINGABILITY_TESTHERODEBUGTRACKINGABILITY: untyped TESTHERODEBUGTRACKINGABILITY_CANCEL: untyped CANCEL: untyped HALT: untyped BURROWDOWN: untyped BURROWUP: untyped LOADALL: untyped UNLOADALL: untyped STOP: untyped HARVEST_GATHER: untyped HARVEST_RETURN: untyped LOAD: untyped UNLOADALLAT: untyped UNLOADUNIT: untyped CANCEL_LAST: untyped CANCEL_SLOT: untyped RALLY_UNITS: untyped ATTACK: untyped EFFECT_STIM: untyped BEHAVIOR_CLOAKON: untyped BEHAVIOR_CLOAKOFF: untyped LAND: untyped LIFT: untyped MORPH_ROOT: untyped MORPH_UPROOT: untyped BUILD_TECHLAB: untyped BUILD_REACTOR: untyped EFFECT_SPRAY: untyped EFFECT_REPAIR: untyped EFFECT_MASSRECALL: untyped EFFECT_BLINK: untyped BEHAVIOR_HOLDFIREON: untyped BEHAVIOR_HOLDFIREOFF: untyped RALLY_WORKERS: untyped BUILD_CREEPTUMOR: untyped RESEARCH_PROTOSSAIRARMOR: untyped RESEARCH_PROTOSSAIRWEAPONS: untyped RESEARCH_PROTOSSGROUNDARMOR: untyped RESEARCH_PROTOSSGROUNDWEAPONS: untyped RESEARCH_PROTOSSSHIELDS: untyped RESEARCH_TERRANINFANTRYARMOR: untyped RESEARCH_TERRANINFANTRYWEAPONS: untyped RESEARCH_TERRANSHIPWEAPONS: untyped RESEARCH_TERRANVEHICLEANDSHIPPLATING: untyped RESEARCH_TERRANVEHICLEWEAPONS: untyped RESEARCH_ZERGFLYERARMOR: untyped RESEARCH_ZERGFLYERATTACK: untyped RESEARCH_ZERGGROUNDARMOR: untyped RESEARCH_ZERGMELEEWEAPONS: untyped RESEARCH_ZERGMISSILEWEAPONS: untyped CANCEL_VOIDRAYPRISMATICALIGNMENT: untyped RESEARCH_ADAPTIVETALONS: untyped LURKERDENRESEARCH_RESEARCHLURKERRANGE: untyped MORPH_OBSERVERMODE: untyped MORPH_SURVEILLANCEMODE: untyped MORPH_OVERSIGHTMODE: untyped MORPH_OVERSEERMODE: untyped EFFECT_INTERFERENCEMATRIX: untyped EFFECT_REPAIRDRONE: untyped EFFECT_REPAIR_REPAIRDRONE: untyped EFFECT_ANTIARMORMISSILE: untyped EFFECT_CHRONOBOOSTENERGYCOST: untyped EFFECT_MASSRECALL_NEXUS: untyped NEXUSSHIELDRECHARGE_NEXUSSHIELDRECHARGE: untyped NEXUSSHIELDRECHARGEONPYLON_NEXUSSHIELDRECHARGEONPYLON: untyped INFESTORENSNARE_INFESTORENSNARE: untyped EFFECT_RESTORE: untyped NEXUSSHIELDOVERCHARGE_NEXUSSHIELDOVERCHARGE: untyped NEXUSSHIELDOVERCHARGEOFF_NEXUSSHIELDOVERCHARGEOFF: untyped ATTACK_BATTLECRUISER: untyped BATTLECRUISERATTACK_ATTACKTOWARDS: untyped BATTLECRUISERATTACK_ATTACKBARRAGE: untyped BATTLECRUISERATTACKEVALUATOR_MOTHERSHIPCOREATTACK: untyped MOVE_BATTLECRUISER: untyped PATROL_BATTLECRUISER: untyped HOLDPOSITION_BATTLECRUISER: untyped BATTLECRUISERMOVE_ACQUIREMOVE: untyped BATTLECRUISERMOVE_TURN: untyped BATTLECRUISERSTOPEVALUATOR_STOP: untyped STOP_BATTLECRUISER: untyped BATTLECRUISERSTOP_HOLDFIRE: untyped BATTLECRUISERSTOP_CHEER: untyped BATTLECRUISERSTOP_DANCE: untyped VIPERPARASITICBOMBRELAY_PARASITICBOMB: untyped PARASITICBOMBRELAYDODGE_PARASITICBOMB: untyped HOLDPOSITION: untyped MOVE: untyped PATROL: untyped LOADOUTSPRAY_LOADOUTSPRAY1: untyped LOADOUTSPRAY_LOADOUTSPRAY2: untyped LOADOUTSPRAY_LOADOUTSPRAY3: untyped LOADOUTSPRAY_LOADOUTSPRAY4: untyped LOADOUTSPRAY_LOADOUTSPRAY5: untyped LOADOUTSPRAY_LOADOUTSPRAY6: untyped LOADOUTSPRAY_LOADOUTSPRAY7: untyped LOADOUTSPRAY_LOADOUTSPRAY8: untyped LOADOUTSPRAY_LOADOUTSPRAY9: untyped LOADOUTSPRAY_LOADOUTSPRAY10: untyped LOADOUTSPRAY_LOADOUTSPRAY11: untyped LOADOUTSPRAY_LOADOUTSPRAY12: untyped LOADOUTSPRAY_LOADOUTSPRAY13: untyped LOADOUTSPRAY_LOADOUTSPRAY14: untyped MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN_CANCEL: untyped MORPHTOCOLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN_CANCEL: untyped BATTERYOVERCHARGE_BATTERYOVERCHARGE: untyped AMORPHOUSARMORCLOUD_AMORPHOUSARMORCLOUD: untyped SHIELDBATTERYRECHARGEEX5_SHIELDBATTERYRECHARGE: untyped SHIELDBATTERYRECHARGEEX5_STOP: untyped MORPHTOBANELING_BANELING: untyped MORPHTOBANELING_CANCEL: untyped MOTHERSHIPCLOAK_ORACLECLOAKFIELD: untyped # sord omit - no YARD return type given, using untyped def self._250MMSTRIKECANNONS_250MMSTRIKECANNONS: () -> untyped # sord omit - no YARD return type given, using untyped def self._250MMSTRIKECANNONS_CANCEL: () -> untyped # sord omit - no YARD return type given, using untyped def self._330MMBARRAGECANNONS_330MMBARRAGECANNONS: () -> untyped # sord omit - no YARD return type given, using untyped def self._330MMBARRAGECANNONS_CANCEL: () -> untyped # Returns an array of all constants def self.ids: () -> ::Array[Integer] # Returns the generic id of an ability, aka the "remapid" or "remaps_to_ability_id" # # _@param_ `ability_id` # # _@return_ — either the current id if no remap or the remapped id def self.generic_id: (Integer ability_id) -> Integer # sord omit - no YARD return type given, using untyped def self.remap_ids: () -> untyped end # Constant reference of Upgrade ids module UpgradeId NULL: untyped CARRIERLAUNCHSPEEDUPGRADE: untyped GLIALRECONSTITUTION: untyped TUNNELINGCLAWS: untyped CHITINOUSPLATING: untyped HISECAUTOTRACKING: untyped TERRANBUILDINGARMOR: untyped TERRANINFANTRYWEAPONSLEVEL1: untyped TERRANINFANTRYWEAPONSLEVEL2: untyped TERRANINFANTRYWEAPONSLEVEL3: untyped NEOSTEELFRAME: untyped TERRANINFANTRYARMORSLEVEL1: untyped TERRANINFANTRYARMORSLEVEL2: untyped TERRANINFANTRYARMORSLEVEL3: untyped REAPERSPEED: untyped STIMPACK: untyped SHIELDWALL: untyped PUNISHERGRENADES: untyped SIEGETECH: untyped HIGHCAPACITYBARRELS: untyped BANSHEECLOAK: untyped MEDIVACCADUCEUSREACTOR: untyped RAVENCORVIDREACTOR: untyped HUNTERSEEKER: untyped DURABLEMATERIALS: untyped PERSONALCLOAKING: untyped GHOSTMOEBIUSREACTOR: untyped TERRANVEHICLEARMORSLEVEL1: untyped TERRANVEHICLEARMORSLEVEL2: untyped TERRANVEHICLEARMORSLEVEL3: untyped TERRANVEHICLEWEAPONSLEVEL1: untyped TERRANVEHICLEWEAPONSLEVEL2: untyped TERRANVEHICLEWEAPONSLEVEL3: untyped TERRANSHIPARMORSLEVEL1: untyped TERRANSHIPARMORSLEVEL2: untyped TERRANSHIPARMORSLEVEL3: untyped TERRANSHIPWEAPONSLEVEL1: untyped TERRANSHIPWEAPONSLEVEL2: untyped TERRANSHIPWEAPONSLEVEL3: untyped PROTOSSGROUNDWEAPONSLEVEL1: untyped PROTOSSGROUNDWEAPONSLEVEL2: untyped PROTOSSGROUNDWEAPONSLEVEL3: untyped PROTOSSGROUNDARMORSLEVEL1: untyped PROTOSSGROUNDARMORSLEVEL2: untyped PROTOSSGROUNDARMORSLEVEL3: untyped PROTOSSSHIELDSLEVEL1: untyped PROTOSSSHIELDSLEVEL2: untyped PROTOSSSHIELDSLEVEL3: untyped OBSERVERGRAVITICBOOSTER: untyped GRAVITICDRIVE: untyped EXTENDEDTHERMALLANCE: untyped HIGHTEMPLARKHAYDARINAMULET: untyped PSISTORMTECH: untyped ZERGMELEEWEAPONSLEVEL1: untyped ZERGMELEEWEAPONSLEVEL2: untyped ZERGMELEEWEAPONSLEVEL3: untyped ZERGGROUNDARMORSLEVEL1: untyped ZERGGROUNDARMORSLEVEL2: untyped ZERGGROUNDARMORSLEVEL3: untyped ZERGMISSILEWEAPONSLEVEL1: untyped ZERGMISSILEWEAPONSLEVEL2: untyped ZERGMISSILEWEAPONSLEVEL3: untyped OVERLORDSPEED: untyped OVERLORDTRANSPORT: untyped BURROW: untyped ZERGLINGATTACKSPEED: untyped ZERGLINGMOVEMENTSPEED: untyped HYDRALISKSPEED: untyped ZERGFLYERWEAPONSLEVEL1: untyped ZERGFLYERWEAPONSLEVEL2: untyped ZERGFLYERWEAPONSLEVEL3: untyped ZERGFLYERARMORSLEVEL1: untyped ZERGFLYERARMORSLEVEL2: untyped ZERGFLYERARMORSLEVEL3: untyped INFESTORENERGYUPGRADE: untyped CENTRIFICALHOOKS: untyped BATTLECRUISERENABLESPECIALIZATIONS: untyped BATTLECRUISERBEHEMOTHREACTOR: untyped PROTOSSAIRWEAPONSLEVEL1: untyped PROTOSSAIRWEAPONSLEVEL2: untyped PROTOSSAIRWEAPONSLEVEL3: untyped PROTOSSAIRARMORSLEVEL1: untyped PROTOSSAIRARMORSLEVEL2: untyped PROTOSSAIRARMORSLEVEL3: untyped WARPGATERESEARCH: untyped HALTECH: untyped CHARGE: untyped BLINKTECH: untyped ANABOLICSYNTHESIS: untyped OBVERSEINCUBATION: untyped VIKINGJOTUNBOOSTERS: untyped ORGANICCARAPACE: untyped INFESTORPERISTALSIS: untyped ABDOMINALFORTITUDE: untyped HYDRALISKSPEEDUPGRADE: untyped BANELINGBURROWMOVE: untyped COMBATDRUGS: untyped STRIKECANNONS: untyped TRANSFORMATIONSERVOS: untyped PHOENIXRANGEUPGRADE: untyped TEMPESTRANGEUPGRADE: untyped NEURALPARASITE: untyped LOCUSTLIFETIMEINCREASE: untyped ULTRALISKBURROWCHARGEUPGRADE: untyped ORACLEENERGYUPGRADE: untyped RESTORESHIELDS: untyped PROTOSSHEROSHIPWEAPON: untyped PROTOSSHEROSHIPDETECTOR: untyped PROTOSSHEROSHIPSPELL: untyped REAPERJUMP: untyped INCREASEDRANGE: untyped ZERGBURROWMOVE: untyped ANIONPULSECRYSTALS: untyped TERRANVEHICLEANDSHIPWEAPONSLEVEL1: untyped TERRANVEHICLEANDSHIPWEAPONSLEVEL2: untyped TERRANVEHICLEANDSHIPWEAPONSLEVEL3: untyped TERRANVEHICLEANDSHIPARMORSLEVEL1: untyped TERRANVEHICLEANDSHIPARMORSLEVEL2: untyped TERRANVEHICLEANDSHIPARMORSLEVEL3: untyped FLYINGLOCUSTS: untyped ROACHSUPPLY: untyped IMMORTALREVIVE: untyped DRILLCLAWS: untyped CYCLONELOCKONRANGEUPGRADE: untyped CYCLONEAIRUPGRADE: untyped LIBERATORMORPH: untyped ADEPTSHIELDUPGRADE: untyped LURKERRANGE: untyped IMMORTALBARRIER: untyped ADEPTKILLBOUNCE: untyped ADEPTPIERCINGATTACK: untyped CINEMATICMODE: untyped CURSORDEBUG: untyped MAGFIELDLAUNCHERS: untyped EVOLVEGROOVEDSPINES: untyped EVOLVEMUSCULARAUGMENTS: untyped BANSHEESPEED: untyped MEDIVACRAPIDDEPLOYMENT: untyped RAVENRECALIBRATEDEXPLOSIVES: untyped MEDIVACINCREASESPEEDBOOST: untyped LIBERATORAGRANGEUPGRADE: untyped DARKTEMPLARBLINKUPGRADE: untyped RAVAGERRANGE: untyped RAVENDAMAGEUPGRADE: untyped CYCLONELOCKONDAMAGEUPGRADE: untyped ARESCLASSWEAPONSSYSTEMVIKING: untyped AUTOHARVESTER: untyped HYBRIDCPLASMAUPGRADEHARD: untyped HYBRIDCPLASMAUPGRADEINSANE: untyped INTERCEPTORLIMIT4: untyped INTERCEPTORLIMIT6: untyped NOTPOSSIBLESIEGEMODE: untyped NEOSTEELFRAME_2: untyped NEOSTEELANDSHRIKETURRETICONUPGRADE: untyped OCULARIMPLANTS: untyped CROSSSPECTRUMDAMPENERS: untyped ORBITALSTRIKE: untyped CLUSTERBOMB: untyped SHAPEDHULL: untyped SPECTRETOOLTIPUPGRADE: untyped ULTRACAPACITORS: untyped VANADIUMPLATING: untyped COMMANDCENTERREACTOR: untyped REGENERATIVEBIOSTEEL: untyped CELLULARREACTORS: untyped BANSHEECLOAKEDDAMAGE: untyped DISTORTIONBLASTERS: untyped EMPTOWER: untyped SUPPLYDEPOTDROP: untyped HIVEMINDEMULATOR: untyped FORTIFIEDBUNKERCARAPACE: untyped PREDATOR: untyped SCIENCEVESSEL: untyped DUALFUSIONWELDERS: untyped ADVANCEDCONSTRUCTION: untyped ADVANCEDMEDICTRAINING: untyped PROJECTILEACCELERATORS: untyped REINFORCEDSUPERSTRUCTURE: untyped MULE: untyped ORBITALRELAY: untyped RAZORWIRE: untyped ADVANCEDHEALINGAI: untyped TWINLINKEDFLAMETHROWERS: untyped NANOCONSTRUCTOR: untyped CERBERUSMINES: untyped HYPERFLUXOR: untyped TRILITHIUMPOWERCELLS: untyped PERMANENTCLOAKGHOST: untyped PERMANENTCLOAKSPECTRE: untyped ULTRASONICPULSE: untyped SURVIVALPODS: untyped ENERGYSTORAGE: untyped FULLBORECANISTERAMMO: untyped CAMPAIGNJOTUNBOOSTERS: untyped MICROFILTERING: untyped PARTICLECANNONAIR: untyped VULTUREAUTOREPAIR: untyped PSIDISRUPTOR: untyped SCIENCEVESSELENERGYMANIPULATION: untyped SCIENCEVESSELPLASMAWEAPONRY: untyped SHOWGATLINGGUN: untyped TECHREACTOR: untyped TECHREACTORAI: untyped TERRANDEFENSERANGEBONUS: untyped X88TNAPALMUPGRADE: untyped HURRICANEMISSILES: untyped MECHANICALREBIRTH: untyped MARINESTIMPACK: untyped DARKTEMPLARTACTICS: untyped CLUSTERWARHEADS: untyped CLOAKDISTORTIONFIELD: untyped DEVASTATORMISSILES: untyped DISTORTIONTHRUSTERS: untyped DYNAMICPOWERROUTING: untyped IMPALERROUNDS: untyped KINETICFIELDS: untyped BURSTCAPACITORS: untyped HAILSTORMMISSILEPODS: untyped RAPIDDEPLOYMENT: untyped REAPERSTIMPACK: untyped REAPERD8CHARGE: untyped TYCHUS05BATTLECRUISERPENETRATION: untyped VIRALPLASMA: untyped FIREBATJUGGERNAUTPLATING: untyped MULTILOCKTARGETINGSYSTEMS: untyped TURBOCHARGEDENGINES: untyped DISTORTIONSENSORS: untyped INFERNALPREIGNITERS: untyped HELLIONCAMPAIGNINFERNALPREIGNITER: untyped NAPALMFUELTANKS: untyped AUXILIARYMEDBOTS: untyped JUGGERNAUTPLATING: untyped MARAUDERLIFEBOOST: untyped COMBATSHIELD: untyped REAPERU238ROUNDS: untyped MAELSTROMROUNDS: untyped SIEGETANKSHAPEDBLAST: untyped TUNGSTENSPIKES: untyped BEARCLAWNOZZLES: untyped NANOBOTINJECTORS: untyped STABILIZERMEDPACKS: untyped HALOROCKETS: untyped SCAVENGINGSYSTEMS: untyped EXTRAMINES: untyped ARESCLASSWEAPONSSYSTEM: untyped WHITENAPALM: untyped VIRALMUNITIONS: untyped JACKHAMMERCONCUSSIONGRENADES: untyped FIRESUPPRESSIONSYSTEMS: untyped FLARERESEARCH: untyped MODULARCONSTRUCTION: untyped EXPANDEDHULL: untyped SHRIKETURRET: untyped MICROFUSIONREACTORS: untyped WRAITHCLOAK: untyped SINGULARITYCHARGE: untyped GRAVITICTHRUSTERS: untyped YAMATOCANNON: untyped DEFENSIVEMATRIX: untyped DARKPROTOSS: untyped TERRANINFANTRYWEAPONSULTRACAPACITORSLEVEL1: untyped TERRANINFANTRYWEAPONSULTRACAPACITORSLEVEL2: untyped TERRANINFANTRYWEAPONSULTRACAPACITORSLEVEL3: untyped TERRANINFANTRYARMORSVANADIUMPLATINGLEVEL1: untyped TERRANINFANTRYARMORSVANADIUMPLATINGLEVEL2: untyped TERRANINFANTRYARMORSVANADIUMPLATINGLEVEL3: untyped TERRANVEHICLEWEAPONSULTRACAPACITORSLEVEL1: untyped TERRANVEHICLEWEAPONSULTRACAPACITORSLEVEL2: untyped TERRANVEHICLEWEAPONSULTRACAPACITORSLEVEL3: untyped TERRANVEHICLEARMORSVANADIUMPLATINGLEVEL1: untyped TERRANVEHICLEARMORSVANADIUMPLATINGLEVEL2: untyped TERRANVEHICLEARMORSVANADIUMPLATINGLEVEL3: untyped TERRANSHIPWEAPONSULTRACAPACITORSLEVEL1: untyped TERRANSHIPWEAPONSULTRACAPACITORSLEVEL2: untyped TERRANSHIPWEAPONSULTRACAPACITORSLEVEL3: untyped TERRANSHIPARMORSVANADIUMPLATINGLEVEL1: untyped TERRANSHIPARMORSVANADIUMPLATINGLEVEL2: untyped TERRANSHIPARMORSVANADIUMPLATINGLEVEL3: untyped HIREKELMORIANMINERSPH: untyped HIREDEVILDOGSPH: untyped HIRESPARTANCOMPANYPH: untyped HIREHAMMERSECURITIESPH: untyped HIRESIEGEBREAKERSPH: untyped HIREHELSANGELSPH: untyped HIREDUSKWINGPH: untyped HIREDUKESREVENGE: untyped TOSHEASYMODE: untyped VOIDRAYSPEEDUPGRADE: untyped SMARTSERVOS: untyped ARMORPIERCINGROCKETS: untyped CYCLONERAPIDFIRELAUNCHERS: untyped RAVENENHANCEDMUNITIONS: untyped DIGGINGCLAWS: untyped CARRIERCARRIERCAPACITY: untyped CARRIERLEASHRANGEUPGRADE: untyped HURRICANETHRUSTERS: untyped TEMPESTGROUNDATTACKUPGRADE: untyped MICROBIALSHROUD: untyped INTERFERENCEMATRIX: untyped SUNDERINGIMPACT: untyped AMPLIFIEDSHIELDING: untyped PSIONICAMPLIFIERS: untyped SECRETEDCOATING: untyped ENHANCEDSHOCKWAVES: untyped # sord omit - no YARD return type given, using untyped def self._330MMBARRAGECANNONS: () -> untyped end # Constant reference of UnitType ids module UnitTypeId NOTAUNIT: untyped SYSTEM_SNAPSHOT_DUMMY: untyped BALL: untyped STEREOSCOPICOPTIONSUNIT: untyped COLOSSUS: untyped TECHLAB: untyped REACTOR: untyped INFESTORTERRAN: untyped BANELINGCOCOON: untyped BANELING: untyped MOTHERSHIP: untyped POINTDEFENSEDRONE: untyped CHANGELING: untyped CHANGELINGZEALOT: untyped CHANGELINGMARINESHIELD: untyped CHANGELINGMARINE: untyped CHANGELINGZERGLINGWINGS: untyped CHANGELINGZERGLING: untyped COMMANDCENTER: untyped SUPPLYDEPOT: untyped REFINERY: untyped BARRACKS: untyped ENGINEERINGBAY: untyped MISSILETURRET: untyped BUNKER: untyped SENSORTOWER: untyped GHOSTACADEMY: untyped FACTORY: untyped STARPORT: untyped ARMORY: untyped FUSIONCORE: untyped AUTOTURRET: untyped SIEGETANKSIEGED: untyped SIEGETANK: untyped VIKINGASSAULT: untyped VIKINGFIGHTER: untyped COMMANDCENTERFLYING: untyped BARRACKSTECHLAB: untyped BARRACKSREACTOR: untyped FACTORYTECHLAB: untyped FACTORYREACTOR: untyped STARPORTTECHLAB: untyped STARPORTREACTOR: untyped FACTORYFLYING: untyped STARPORTFLYING: untyped SCV: untyped BARRACKSFLYING: untyped SUPPLYDEPOTLOWERED: untyped MARINE: untyped REAPER: untyped GHOST: untyped MARAUDER: untyped THOR: untyped HELLION: untyped MEDIVAC: untyped BANSHEE: untyped RAVEN: untyped BATTLECRUISER: untyped NUKE: untyped NEXUS: untyped PYLON: untyped ASSIMILATOR: untyped GATEWAY: untyped FORGE: untyped FLEETBEACON: untyped TWILIGHTCOUNCIL: untyped PHOTONCANNON: untyped STARGATE: untyped TEMPLARARCHIVE: untyped DARKSHRINE: untyped ROBOTICSBAY: untyped ROBOTICSFACILITY: untyped CYBERNETICSCORE: untyped ZEALOT: untyped STALKER: untyped HIGHTEMPLAR: untyped DARKTEMPLAR: untyped SENTRY: untyped PHOENIX: untyped CARRIER: untyped VOIDRAY: untyped WARPPRISM: untyped OBSERVER: untyped IMMORTAL: untyped PROBE: untyped INTERCEPTOR: untyped HATCHERY: untyped CREEPTUMOR: untyped EXTRACTOR: untyped SPAWNINGPOOL: untyped EVOLUTIONCHAMBER: untyped HYDRALISKDEN: untyped SPIRE: untyped ULTRALISKCAVERN: untyped INFESTATIONPIT: untyped NYDUSNETWORK: untyped BANELINGNEST: untyped ROACHWARREN: untyped SPINECRAWLER: untyped SPORECRAWLER: untyped LAIR: untyped HIVE: untyped GREATERSPIRE: untyped EGG: untyped DRONE: untyped ZERGLING: untyped OVERLORD: untyped HYDRALISK: untyped MUTALISK: untyped ULTRALISK: untyped ROACH: untyped INFESTOR: untyped CORRUPTOR: untyped BROODLORDCOCOON: untyped BROODLORD: untyped BANELINGBURROWED: untyped DRONEBURROWED: untyped HYDRALISKBURROWED: untyped ROACHBURROWED: untyped ZERGLINGBURROWED: untyped INFESTORTERRANBURROWED: untyped REDSTONELAVACRITTERBURROWED: untyped REDSTONELAVACRITTERINJUREDBURROWED: untyped REDSTONELAVACRITTER: untyped REDSTONELAVACRITTERINJURED: untyped QUEENBURROWED: untyped QUEEN: untyped INFESTORBURROWED: untyped OVERLORDCOCOON: untyped OVERSEER: untyped PLANETARYFORTRESS: untyped ULTRALISKBURROWED: untyped ORBITALCOMMAND: untyped WARPGATE: untyped ORBITALCOMMANDFLYING: untyped FORCEFIELD: untyped WARPPRISMPHASING: untyped CREEPTUMORBURROWED: untyped CREEPTUMORQUEEN: untyped SPINECRAWLERUPROOTED: untyped SPORECRAWLERUPROOTED: untyped ARCHON: untyped NYDUSCANAL: untyped BROODLINGESCORT: untyped GHOSTALTERNATE: untyped GHOSTNOVA: untyped RICHMINERALFIELD: untyped RICHMINERALFIELD750: untyped URSADON: untyped XELNAGATOWER: untyped INFESTEDTERRANSEGG: untyped LARVA: untyped REAPERPLACEHOLDER: untyped MARINEACGLUESCREENDUMMY: untyped FIREBATACGLUESCREENDUMMY: untyped MEDICACGLUESCREENDUMMY: untyped MARAUDERACGLUESCREENDUMMY: untyped VULTUREACGLUESCREENDUMMY: untyped SIEGETANKACGLUESCREENDUMMY: untyped VIKINGACGLUESCREENDUMMY: untyped BANSHEEACGLUESCREENDUMMY: untyped BATTLECRUISERACGLUESCREENDUMMY: untyped ORBITALCOMMANDACGLUESCREENDUMMY: untyped BUNKERACGLUESCREENDUMMY: untyped BUNKERUPGRADEDACGLUESCREENDUMMY: untyped MISSILETURRETACGLUESCREENDUMMY: untyped HELLBATACGLUESCREENDUMMY: untyped GOLIATHACGLUESCREENDUMMY: untyped CYCLONEACGLUESCREENDUMMY: untyped WRAITHACGLUESCREENDUMMY: untyped SCIENCEVESSELACGLUESCREENDUMMY: untyped HERCULESACGLUESCREENDUMMY: untyped THORACGLUESCREENDUMMY: untyped PERDITIONTURRETACGLUESCREENDUMMY: untyped FLAMINGBETTYACGLUESCREENDUMMY: untyped DEVASTATIONTURRETACGLUESCREENDUMMY: untyped BLASTERBILLYACGLUESCREENDUMMY: untyped SPINNINGDIZZYACGLUESCREENDUMMY: untyped ZERGLINGKERRIGANACGLUESCREENDUMMY: untyped RAPTORACGLUESCREENDUMMY: untyped QUEENCOOPACGLUESCREENDUMMY: untyped HYDRALISKACGLUESCREENDUMMY: untyped HYDRALISKLURKERACGLUESCREENDUMMY: untyped MUTALISKBROODLORDACGLUESCREENDUMMY: untyped BROODLORDACGLUESCREENDUMMY: untyped ULTRALISKACGLUESCREENDUMMY: untyped TORRASQUEACGLUESCREENDUMMY: untyped OVERSEERACGLUESCREENDUMMY: untyped LURKERACGLUESCREENDUMMY: untyped SPINECRAWLERACGLUESCREENDUMMY: untyped SPORECRAWLERACGLUESCREENDUMMY: untyped NYDUSNETWORKACGLUESCREENDUMMY: untyped OMEGANETWORKACGLUESCREENDUMMY: untyped ZERGLINGZAGARAACGLUESCREENDUMMY: untyped SWARMLINGACGLUESCREENDUMMY: untyped BANELINGACGLUESCREENDUMMY: untyped SPLITTERLINGACGLUESCREENDUMMY: untyped ABERRATIONACGLUESCREENDUMMY: untyped SCOURGEACGLUESCREENDUMMY: untyped CORRUPTORACGLUESCREENDUMMY: untyped BILELAUNCHERACGLUESCREENDUMMY: untyped SWARMQUEENACGLUESCREENDUMMY: untyped ROACHACGLUESCREENDUMMY: untyped ROACHVILEACGLUESCREENDUMMY: untyped RAVAGERACGLUESCREENDUMMY: untyped SWARMHOSTACGLUESCREENDUMMY: untyped MUTALISKACGLUESCREENDUMMY: untyped GUARDIANACGLUESCREENDUMMY: untyped DEVOURERACGLUESCREENDUMMY: untyped VIPERACGLUESCREENDUMMY: untyped BRUTALISKACGLUESCREENDUMMY: untyped LEVIATHANACGLUESCREENDUMMY: untyped ZEALOTACGLUESCREENDUMMY: untyped ZEALOTAIURACGLUESCREENDUMMY: untyped DRAGOONACGLUESCREENDUMMY: untyped HIGHTEMPLARACGLUESCREENDUMMY: untyped ARCHONACGLUESCREENDUMMY: untyped IMMORTALACGLUESCREENDUMMY: untyped OBSERVERACGLUESCREENDUMMY: untyped PHOENIXAIURACGLUESCREENDUMMY: untyped REAVERACGLUESCREENDUMMY: untyped TEMPESTACGLUESCREENDUMMY: untyped PHOTONCANNONACGLUESCREENDUMMY: untyped ZEALOTVORAZUNACGLUESCREENDUMMY: untyped ZEALOTSHAKURASACGLUESCREENDUMMY: untyped STALKERSHAKURASACGLUESCREENDUMMY: untyped DARKTEMPLARSHAKURASACGLUESCREENDUMMY: untyped CORSAIRACGLUESCREENDUMMY: untyped VOIDRAYACGLUESCREENDUMMY: untyped VOIDRAYSHAKURASACGLUESCREENDUMMY: untyped ORACLEACGLUESCREENDUMMY: untyped DARKARCHONACGLUESCREENDUMMY: untyped DARKPYLONACGLUESCREENDUMMY: untyped ZEALOTPURIFIERACGLUESCREENDUMMY: untyped SENTRYPURIFIERACGLUESCREENDUMMY: untyped IMMORTALKARAXACGLUESCREENDUMMY: untyped COLOSSUSACGLUESCREENDUMMY: untyped COLOSSUSPURIFIERACGLUESCREENDUMMY: untyped PHOENIXPURIFIERACGLUESCREENDUMMY: untyped CARRIERACGLUESCREENDUMMY: untyped CARRIERAIURACGLUESCREENDUMMY: untyped KHAYDARINMONOLITHACGLUESCREENDUMMY: untyped SHIELDBATTERYACGLUESCREENDUMMY: untyped ELITEMARINEACGLUESCREENDUMMY: untyped MARAUDERCOMMANDOACGLUESCREENDUMMY: untyped SPECOPSGHOSTACGLUESCREENDUMMY: untyped HELLBATRANGERACGLUESCREENDUMMY: untyped STRIKEGOLIATHACGLUESCREENDUMMY: untyped HEAVYSIEGETANKACGLUESCREENDUMMY: untyped RAIDLIBERATORACGLUESCREENDUMMY: untyped RAVENTYPEIIACGLUESCREENDUMMY: untyped COVERTBANSHEEACGLUESCREENDUMMY: untyped RAILGUNTURRETACGLUESCREENDUMMY: untyped BLACKOPSMISSILETURRETACGLUESCREENDUMMY: untyped SUPPLICANTACGLUESCREENDUMMY: untyped STALKERTALDARIMACGLUESCREENDUMMY: untyped SENTRYTALDARIMACGLUESCREENDUMMY: untyped HIGHTEMPLARTALDARIMACGLUESCREENDUMMY: untyped IMMORTALTALDARIMACGLUESCREENDUMMY: untyped COLOSSUSTALDARIMACGLUESCREENDUMMY: untyped WARPPRISMTALDARIMACGLUESCREENDUMMY: untyped PHOTONCANNONTALDARIMACGLUESCREENDUMMY: untyped NEEDLESPINESWEAPON: untyped CORRUPTIONWEAPON: untyped INFESTEDTERRANSWEAPON: untyped NEURALPARASITEWEAPON: untyped POINTDEFENSEDRONERELEASEWEAPON: untyped HUNTERSEEKERWEAPON: untyped MULE: untyped THORAAWEAPON: untyped PUNISHERGRENADESLMWEAPON: untyped VIKINGFIGHTERWEAPON: untyped ATALASERBATTERYLMWEAPON: untyped ATSLASERBATTERYLMWEAPON: untyped LONGBOLTMISSILEWEAPON: untyped D8CHARGEWEAPON: untyped YAMATOWEAPON: untyped IONCANNONSWEAPON: untyped ACIDSALIVAWEAPON: untyped SPINECRAWLERWEAPON: untyped SPORECRAWLERWEAPON: untyped GLAIVEWURMWEAPON: untyped GLAIVEWURMM2WEAPON: untyped GLAIVEWURMM3WEAPON: untyped STALKERWEAPON: untyped EMP2WEAPON: untyped BACKLASHROCKETSLMWEAPON: untyped PHOTONCANNONWEAPON: untyped PARASITESPOREWEAPON: untyped BROODLING: untyped BROODLORDBWEAPON: untyped AUTOTURRETRELEASEWEAPON: untyped LARVARELEASEMISSILE: untyped ACIDSPINESWEAPON: untyped FRENZYWEAPON: untyped CONTAMINATEWEAPON: untyped BEACONRALLY: untyped BEACONARMY: untyped BEACONATTACK: untyped BEACONDEFEND: untyped BEACONHARASS: untyped BEACONIDLE: untyped BEACONAUTO: untyped BEACONDETECT: untyped BEACONSCOUT: untyped BEACONCLAIM: untyped BEACONEXPAND: untyped BEACONCUSTOM1: untyped BEACONCUSTOM2: untyped BEACONCUSTOM3: untyped BEACONCUSTOM4: untyped ADEPT: untyped ROCKS2X2NONCONJOINED: untyped FUNGALGROWTHMISSILE: untyped NEURALPARASITETENTACLEMISSILE: untyped BEACON_PROTOSS: untyped BEACON_PROTOSSSMALL: untyped BEACON_TERRAN: untyped BEACON_TERRANSMALL: untyped BEACON_ZERG: untyped BEACON_ZERGSMALL: untyped LYOTE: untyped CARRIONBIRD: untyped KARAKMALE: untyped KARAKFEMALE: untyped URSADAKFEMALEEXOTIC: untyped URSADAKMALE: untyped URSADAKFEMALE: untyped URSADAKCALF: untyped URSADAKMALEEXOTIC: untyped UTILITYBOT: untyped COMMENTATORBOT1: untyped COMMENTATORBOT2: untyped COMMENTATORBOT3: untyped COMMENTATORBOT4: untyped SCANTIPEDE: untyped DOG: untyped SHEEP: untyped COW: untyped INFESTEDTERRANSEGGPLACEMENT: untyped INFESTORTERRANSWEAPON: untyped MINERALFIELD: untyped VESPENEGEYSER: untyped SPACEPLATFORMGEYSER: untyped RICHVESPENEGEYSER: untyped DESTRUCTIBLESEARCHLIGHT: untyped DESTRUCTIBLEBULLHORNLIGHTS: untyped DESTRUCTIBLESTREETLIGHT: untyped DESTRUCTIBLESPACEPLATFORMSIGN: untyped DESTRUCTIBLESTOREFRONTCITYPROPS: untyped DESTRUCTIBLEBILLBOARDTALL: untyped DESTRUCTIBLEBILLBOARDSCROLLINGTEXT: untyped DESTRUCTIBLESPACEPLATFORMBARRIER: untyped DESTRUCTIBLESIGNSDIRECTIONAL: untyped DESTRUCTIBLESIGNSCONSTRUCTION: untyped DESTRUCTIBLESIGNSFUNNY: untyped DESTRUCTIBLESIGNSICONS: untyped DESTRUCTIBLESIGNSWARNING: untyped DESTRUCTIBLEGARAGE: untyped DESTRUCTIBLEGARAGELARGE: untyped DESTRUCTIBLETRAFFICSIGNAL: untyped TRAFFICSIGNAL: untyped BRAXISALPHADESTRUCTIBLE1X1: untyped BRAXISALPHADESTRUCTIBLE2X2: untyped DESTRUCTIBLEDEBRIS4X4: untyped DESTRUCTIBLEDEBRIS6X6: untyped DESTRUCTIBLEROCK2X4VERTICAL: untyped DESTRUCTIBLEROCK2X4HORIZONTAL: untyped DESTRUCTIBLEROCK2X6VERTICAL: untyped DESTRUCTIBLEROCK2X6HORIZONTAL: untyped DESTRUCTIBLEROCK4X4: untyped DESTRUCTIBLEROCK6X6: untyped DESTRUCTIBLERAMPDIAGONALHUGEULBR: untyped DESTRUCTIBLERAMPDIAGONALHUGEBLUR: untyped DESTRUCTIBLERAMPVERTICALHUGE: untyped DESTRUCTIBLERAMPHORIZONTALHUGE: untyped DESTRUCTIBLEDEBRISRAMPDIAGONALHUGEULBR: untyped DESTRUCTIBLEDEBRISRAMPDIAGONALHUGEBLUR: untyped OVERLORDGENERATECREEPKEYBIND: untyped MENGSKSTATUEALONE: untyped MENGSKSTATUE: untyped WOLFSTATUE: untyped GLOBESTATUE: untyped WEAPON: untyped GLAIVEWURMBOUNCEWEAPON: untyped BROODLORDWEAPON: untyped BROODLORDAWEAPON: untyped CREEPBLOCKER1X1: untyped PERMANENTCREEPBLOCKER1X1: untyped PATHINGBLOCKER1X1: untyped PATHINGBLOCKER2X2: untyped AUTOTESTATTACKTARGETGROUND: untyped AUTOTESTATTACKTARGETAIR: untyped AUTOTESTATTACKER: untyped HELPEREMITTERSELECTIONARROW: untyped MULTIKILLOBJECT: untyped SHAPEGOLFBALL: untyped SHAPECONE: untyped SHAPECUBE: untyped SHAPECYLINDER: untyped SHAPEDODECAHEDRON: untyped SHAPEICOSAHEDRON: untyped SHAPEOCTAHEDRON: untyped SHAPEPYRAMID: untyped SHAPEROUNDEDCUBE: untyped SHAPESPHERE: untyped SHAPETETRAHEDRON: untyped SHAPETHICKTORUS: untyped SHAPETHINTORUS: untyped SHAPETORUS: untyped SHAPE4POINTSTAR: untyped SHAPE5POINTSTAR: untyped SHAPE6POINTSTAR: untyped SHAPE8POINTSTAR: untyped SHAPEARROWPOINTER: untyped SHAPEBOWL: untyped SHAPEBOX: untyped SHAPECAPSULE: untyped SHAPECRESCENTMOON: untyped SHAPEDECAHEDRON: untyped SHAPEDIAMOND: untyped SHAPEFOOTBALL: untyped SHAPEGEMSTONE: untyped SHAPEHEART: untyped SHAPEJACK: untyped SHAPEPLUSSIGN: untyped SHAPESHAMROCK: untyped SHAPESPADE: untyped SHAPETUBE: untyped SHAPEEGG: untyped SHAPEYENSIGN: untyped SHAPEX: untyped SHAPEWATERMELON: untyped SHAPEWONSIGN: untyped SHAPETENNISBALL: untyped SHAPESTRAWBERRY: untyped SHAPESMILEYFACE: untyped SHAPESOCCERBALL: untyped SHAPERAINBOW: untyped SHAPESADFACE: untyped SHAPEPOUNDSIGN: untyped SHAPEPEAR: untyped SHAPEPINEAPPLE: untyped SHAPEORANGE: untyped SHAPEPEANUT: untyped SHAPEO: untyped SHAPELEMON: untyped SHAPEMONEYBAG: untyped SHAPEHORSESHOE: untyped SHAPEHOCKEYSTICK: untyped SHAPEHOCKEYPUCK: untyped SHAPEHAND: untyped SHAPEGOLFCLUB: untyped SHAPEGRAPE: untyped SHAPEEUROSIGN: untyped SHAPEDOLLARSIGN: untyped SHAPEBASKETBALL: untyped SHAPECARROT: untyped SHAPECHERRY: untyped SHAPEBASEBALL: untyped SHAPEBASEBALLBAT: untyped SHAPEBANANA: untyped SHAPEAPPLE: untyped SHAPECASHLARGE: untyped SHAPECASHMEDIUM: untyped SHAPECASHSMALL: untyped SHAPEFOOTBALLCOLORED: untyped SHAPELEMONSMALL: untyped SHAPEORANGESMALL: untyped SHAPETREASURECHESTOPEN: untyped SHAPETREASURECHESTCLOSED: untyped SHAPEWATERMELONSMALL: untyped UNBUILDABLEROCKSDESTRUCTIBLE: untyped UNBUILDABLEBRICKSDESTRUCTIBLE: untyped UNBUILDABLEPLATESDESTRUCTIBLE: untyped DEBRIS2X2NONCONJOINED: untyped ENEMYPATHINGBLOCKER1X1: untyped ENEMYPATHINGBLOCKER2X2: untyped ENEMYPATHINGBLOCKER4X4: untyped ENEMYPATHINGBLOCKER8X8: untyped ENEMYPATHINGBLOCKER16X16: untyped SCOPETEST: untyped SENTRYACGLUESCREENDUMMY: untyped MINERALFIELD750: untyped HELLIONTANK: untyped COLLAPSIBLETERRANTOWERDEBRIS: untyped DEBRISRAMPLEFT: untyped DEBRISRAMPRIGHT: untyped MOTHERSHIPCORE: untyped LOCUSTMP: untyped COLLAPSIBLEROCKTOWERDEBRIS: untyped NYDUSCANALATTACKER: untyped NYDUSCANALCREEPER: untyped SWARMHOSTBURROWEDMP: untyped SWARMHOSTMP: untyped ORACLE: untyped TEMPEST: untyped WARHOUND: untyped WIDOWMINE: untyped VIPER: untyped WIDOWMINEBURROWED: untyped LURKERMPEGG: untyped LURKERMP: untyped LURKERMPBURROWED: untyped LURKERDENMP: untyped EXTENDINGBRIDGENEWIDE8OUT: untyped EXTENDINGBRIDGENEWIDE8: untyped EXTENDINGBRIDGENWWIDE8OUT: untyped EXTENDINGBRIDGENWWIDE8: untyped EXTENDINGBRIDGENEWIDE10OUT: untyped EXTENDINGBRIDGENEWIDE10: untyped EXTENDINGBRIDGENWWIDE10OUT: untyped EXTENDINGBRIDGENWWIDE10: untyped EXTENDINGBRIDGENEWIDE12OUT: untyped EXTENDINGBRIDGENEWIDE12: untyped EXTENDINGBRIDGENWWIDE12OUT: untyped EXTENDINGBRIDGENWWIDE12: untyped COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHT: untyped COLLAPSIBLEROCKTOWERDEBRISRAMPLEFT: untyped XELNAGA_CAVERNS_DOORE: untyped XELNAGA_CAVERNS_DOOREOPENED: untyped XELNAGA_CAVERNS_DOORN: untyped XELNAGA_CAVERNS_DOORNE: untyped XELNAGA_CAVERNS_DOORNEOPENED: untyped XELNAGA_CAVERNS_DOORNOPENED: untyped XELNAGA_CAVERNS_DOORNW: untyped XELNAGA_CAVERNS_DOORNWOPENED: untyped XELNAGA_CAVERNS_DOORS: untyped XELNAGA_CAVERNS_DOORSE: untyped XELNAGA_CAVERNS_DOORSEOPENED: untyped XELNAGA_CAVERNS_DOORSOPENED: untyped XELNAGA_CAVERNS_DOORSW: untyped XELNAGA_CAVERNS_DOORSWOPENED: untyped XELNAGA_CAVERNS_DOORW: untyped XELNAGA_CAVERNS_DOORWOPENED: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE8OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE8: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW8OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW8: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE10OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE10: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW10OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW10: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE12OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENE12: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW12OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGENW12: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH8OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH8: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV8OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV8: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH10OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH10: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV10OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV10: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH12OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEH12: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV12OUT: untyped XELNAGA_CAVERNS_FLOATING_BRIDGEV12: untyped COLLAPSIBLETERRANTOWERPUSHUNITRAMPLEFT: untyped COLLAPSIBLETERRANTOWERPUSHUNITRAMPRIGHT: untyped COLLAPSIBLEROCKTOWERPUSHUNIT: untyped COLLAPSIBLETERRANTOWERPUSHUNIT: untyped COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHT: untyped COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFT: untyped DIGESTERCREEPSPRAYTARGETUNIT: untyped DIGESTERCREEPSPRAYUNIT: untyped NYDUSCANALATTACKERWEAPON: untyped VIPERCONSUMESTRUCTUREWEAPON: untyped RESOURCEBLOCKER: untyped TEMPESTWEAPON: untyped YOINKMISSILE: untyped YOINKVIKINGAIRMISSILE: untyped YOINKVIKINGGROUNDMISSILE: untyped YOINKSIEGETANKMISSILE: untyped WARHOUNDWEAPON: untyped EYESTALKWEAPON: untyped WIDOWMINEWEAPON: untyped WIDOWMINEAIRWEAPON: untyped MOTHERSHIPCOREWEAPONWEAPON: untyped TORNADOMISSILEWEAPON: untyped TORNADOMISSILEDUMMYWEAPON: untyped TALONSMISSILEWEAPON: untyped CREEPTUMORMISSILE: untyped LOCUSTMPEGGAMISSILEWEAPON: untyped LOCUSTMPEGGBMISSILEWEAPON: untyped LOCUSTMPWEAPON: untyped REPULSORCANNONWEAPON: untyped COLLAPSIBLEROCKTOWERDIAGONAL: untyped COLLAPSIBLETERRANTOWERDIAGONAL: untyped COLLAPSIBLETERRANTOWERRAMPLEFT: untyped COLLAPSIBLETERRANTOWERRAMPRIGHT: untyped ICE2X2NONCONJOINED: untyped ICEPROTOSSCRATES: untyped PROTOSSCRATES: untyped TOWERMINE: untyped PICKUPPALLETGAS: untyped PICKUPPALLETMINERALS: untyped PICKUPSCRAPSALVAGE1X1: untyped PICKUPSCRAPSALVAGE2X2: untyped PICKUPSCRAPSALVAGE3X3: untyped ROUGHTERRAIN: untyped UNBUILDABLEBRICKSSMALLUNIT: untyped UNBUILDABLEPLATESSMALLUNIT: untyped UNBUILDABLEPLATESUNIT: untyped UNBUILDABLEROCKSSMALLUNIT: untyped XELNAGAHEALINGSHRINE: untyped INVISIBLETARGETDUMMY: untyped PROTOSSVESPENEGEYSER: untyped COLLAPSIBLEROCKTOWER: untyped COLLAPSIBLETERRANTOWER: untyped THORNLIZARD: untyped CLEANINGBOT: untyped DESTRUCTIBLEROCK6X6WEAK: untyped PROTOSSSNAKESEGMENTDEMO: untyped PHYSICSCAPSULE: untyped PHYSICSCUBE: untyped PHYSICSCYLINDER: untyped PHYSICSKNOT: untyped PHYSICSL: untyped PHYSICSPRIMITIVES: untyped PHYSICSSPHERE: untyped PHYSICSSTAR: untyped CREEPBLOCKER4X4: untyped DESTRUCTIBLECITYDEBRIS2X4VERTICAL: untyped DESTRUCTIBLECITYDEBRIS2X4HORIZONTAL: untyped DESTRUCTIBLECITYDEBRIS2X6VERTICAL: untyped DESTRUCTIBLECITYDEBRIS2X6HORIZONTAL: untyped DESTRUCTIBLECITYDEBRIS4X4: untyped DESTRUCTIBLECITYDEBRIS6X6: untyped DESTRUCTIBLECITYDEBRISHUGEDIAGONALBLUR: untyped DESTRUCTIBLECITYDEBRISHUGEDIAGONALULBR: untyped TESTZERG: untyped PATHINGBLOCKERRADIUS1: untyped DESTRUCTIBLEROCKEX12X4VERTICAL: untyped DESTRUCTIBLEROCKEX12X4HORIZONTAL: untyped DESTRUCTIBLEROCKEX12X6VERTICAL: untyped DESTRUCTIBLEROCKEX12X6HORIZONTAL: untyped DESTRUCTIBLEROCKEX14X4: untyped DESTRUCTIBLEROCKEX16X6: untyped DESTRUCTIBLEROCKEX1DIAGONALHUGEULBR: untyped DESTRUCTIBLEROCKEX1DIAGONALHUGEBLUR: untyped DESTRUCTIBLEROCKEX1VERTICALHUGE: untyped DESTRUCTIBLEROCKEX1HORIZONTALHUGE: untyped DESTRUCTIBLEICE2X4VERTICAL: untyped DESTRUCTIBLEICE2X4HORIZONTAL: untyped DESTRUCTIBLEICE2X6VERTICAL: untyped DESTRUCTIBLEICE2X6HORIZONTAL: untyped DESTRUCTIBLEICE4X4: untyped DESTRUCTIBLEICE6X6: untyped DESTRUCTIBLEICEDIAGONALHUGEULBR: untyped DESTRUCTIBLEICEDIAGONALHUGEBLUR: untyped DESTRUCTIBLEICEVERTICALHUGE: untyped DESTRUCTIBLEICEHORIZONTALHUGE: untyped DESERTPLANETSEARCHLIGHT: untyped DESERTPLANETSTREETLIGHT: untyped UNBUILDABLEBRICKSUNIT: untyped UNBUILDABLEROCKSUNIT: untyped ZERUSDESTRUCTIBLEARCH: untyped ARTOSILOPE: untyped ANTEPLOTT: untyped LABBOT: untyped CRABEETLE: untyped COLLAPSIBLEROCKTOWERRAMPRIGHT: untyped COLLAPSIBLEROCKTOWERRAMPLEFT: untyped LABMINERALFIELD: untyped LABMINERALFIELD750: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT8OUT: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENESHORT8: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT8OUT: untyped SNOWREFINERY_TERRAN_EXTENDINGBRIDGENWSHORT8: untyped TARSONIS_DOORN: untyped TARSONIS_DOORNLOWERED: untyped TARSONIS_DOORNE: untyped TARSONIS_DOORNELOWERED: untyped TARSONIS_DOORE: untyped TARSONIS_DOORELOWERED: untyped TARSONIS_DOORNW: untyped TARSONIS_DOORNWLOWERED: untyped COMPOUNDMANSION_DOORN: untyped COMPOUNDMANSION_DOORNLOWERED: untyped COMPOUNDMANSION_DOORNE: untyped COMPOUNDMANSION_DOORNELOWERED: untyped COMPOUNDMANSION_DOORE: untyped COMPOUNDMANSION_DOORELOWERED: untyped COMPOUNDMANSION_DOORNW: untyped COMPOUNDMANSION_DOORNWLOWERED: untyped RAVAGERCOCOON: untyped RAVAGER: untyped LIBERATOR: untyped RAVAGERBURROWED: untyped THORAP: untyped CYCLONE: untyped LOCUSTMPFLYING: untyped DISRUPTOR: untyped AIURLIGHTBRIDGENE8OUT: untyped AIURLIGHTBRIDGENE8: untyped AIURLIGHTBRIDGENE10OUT: untyped AIURLIGHTBRIDGENE10: untyped AIURLIGHTBRIDGENE12OUT: untyped AIURLIGHTBRIDGENE12: untyped AIURLIGHTBRIDGENW8OUT: untyped AIURLIGHTBRIDGENW8: untyped AIURLIGHTBRIDGENW10OUT: untyped AIURLIGHTBRIDGENW10: untyped AIURLIGHTBRIDGENW12OUT: untyped AIURLIGHTBRIDGENW12: untyped AIURTEMPLEBRIDGENE8OUT: untyped AIURTEMPLEBRIDGENE10OUT: untyped AIURTEMPLEBRIDGENE12OUT: untyped AIURTEMPLEBRIDGENW8OUT: untyped AIURTEMPLEBRIDGENW10OUT: untyped AIURTEMPLEBRIDGENW12OUT: untyped SHAKURASLIGHTBRIDGENE8OUT: untyped SHAKURASLIGHTBRIDGENE8: untyped SHAKURASLIGHTBRIDGENE10OUT: untyped SHAKURASLIGHTBRIDGENE10: untyped SHAKURASLIGHTBRIDGENE12OUT: untyped SHAKURASLIGHTBRIDGENE12: untyped SHAKURASLIGHTBRIDGENW8OUT: untyped SHAKURASLIGHTBRIDGENW8: untyped SHAKURASLIGHTBRIDGENW10OUT: untyped SHAKURASLIGHTBRIDGENW10: untyped SHAKURASLIGHTBRIDGENW12OUT: untyped SHAKURASLIGHTBRIDGENW12: untyped VOIDMPIMMORTALREVIVECORPSE: untyped GUARDIANCOCOONMP: untyped GUARDIANMP: untyped DEVOURERCOCOONMP: untyped DEVOURERMP: untyped DEFILERMPBURROWED: untyped DEFILERMP: untyped ORACLESTASISTRAP: untyped DISRUPTORPHASED: untyped LIBERATORAG: untyped AIURLIGHTBRIDGEABANDONEDNE8OUT: untyped AIURLIGHTBRIDGEABANDONEDNE8: untyped AIURLIGHTBRIDGEABANDONEDNE10OUT: untyped AIURLIGHTBRIDGEABANDONEDNE10: untyped AIURLIGHTBRIDGEABANDONEDNE12OUT: untyped AIURLIGHTBRIDGEABANDONEDNE12: untyped AIURLIGHTBRIDGEABANDONEDNW8OUT: untyped AIURLIGHTBRIDGEABANDONEDNW8: untyped AIURLIGHTBRIDGEABANDONEDNW10OUT: untyped AIURLIGHTBRIDGEABANDONEDNW10: untyped AIURLIGHTBRIDGEABANDONEDNW12OUT: untyped AIURLIGHTBRIDGEABANDONEDNW12: untyped COLLAPSIBLEPURIFIERTOWERDEBRIS: untyped PORTCITY_BRIDGE_UNITNE8OUT: untyped PORTCITY_BRIDGE_UNITNE8: untyped PORTCITY_BRIDGE_UNITSE8OUT: untyped PORTCITY_BRIDGE_UNITSE8: untyped PORTCITY_BRIDGE_UNITNW8OUT: untyped PORTCITY_BRIDGE_UNITNW8: untyped PORTCITY_BRIDGE_UNITSW8OUT: untyped PORTCITY_BRIDGE_UNITSW8: untyped PORTCITY_BRIDGE_UNITNE10OUT: untyped PORTCITY_BRIDGE_UNITNE10: untyped PORTCITY_BRIDGE_UNITSE10OUT: untyped PORTCITY_BRIDGE_UNITSE10: untyped PORTCITY_BRIDGE_UNITNW10OUT: untyped PORTCITY_BRIDGE_UNITNW10: untyped PORTCITY_BRIDGE_UNITSW10OUT: untyped PORTCITY_BRIDGE_UNITSW10: untyped PORTCITY_BRIDGE_UNITNE12OUT: untyped PORTCITY_BRIDGE_UNITNE12: untyped PORTCITY_BRIDGE_UNITSE12OUT: untyped PORTCITY_BRIDGE_UNITSE12: untyped PORTCITY_BRIDGE_UNITNW12OUT: untyped PORTCITY_BRIDGE_UNITNW12: untyped PORTCITY_BRIDGE_UNITSW12OUT: untyped PORTCITY_BRIDGE_UNITSW12: untyped PORTCITY_BRIDGE_UNITN8OUT: untyped PORTCITY_BRIDGE_UNITN8: untyped PORTCITY_BRIDGE_UNITS8OUT: untyped PORTCITY_BRIDGE_UNITS8: untyped PORTCITY_BRIDGE_UNITE8OUT: untyped PORTCITY_BRIDGE_UNITE8: untyped PORTCITY_BRIDGE_UNITW8OUT: untyped PORTCITY_BRIDGE_UNITW8: untyped PORTCITY_BRIDGE_UNITN10OUT: untyped PORTCITY_BRIDGE_UNITN10: untyped PORTCITY_BRIDGE_UNITS10OUT: untyped PORTCITY_BRIDGE_UNITS10: untyped PORTCITY_BRIDGE_UNITE10OUT: untyped PORTCITY_BRIDGE_UNITE10: untyped PORTCITY_BRIDGE_UNITW10OUT: untyped PORTCITY_BRIDGE_UNITW10: untyped PORTCITY_BRIDGE_UNITN12OUT: untyped PORTCITY_BRIDGE_UNITN12: untyped PORTCITY_BRIDGE_UNITS12OUT: untyped PORTCITY_BRIDGE_UNITS12: untyped PORTCITY_BRIDGE_UNITE12OUT: untyped PORTCITY_BRIDGE_UNITE12: untyped PORTCITY_BRIDGE_UNITW12OUT: untyped PORTCITY_BRIDGE_UNITW12: untyped PURIFIERRICHMINERALFIELD: untyped PURIFIERRICHMINERALFIELD750: untyped COLLAPSIBLEPURIFIERTOWERPUSHUNIT: untyped LOCUSTMPPRECURSOR: untyped RELEASEINTERCEPTORSBEACON: untyped ADEPTPHASESHIFT: untyped RAVAGERCORROSIVEBILEMISSILE: untyped HYDRALISKIMPALEMISSILE: untyped CYCLONEMISSILELARGEAIR: untyped CYCLONEMISSILE: untyped CYCLONEMISSILELARGE: untyped THORAALANCE: untyped ORACLEWEAPON: untyped TEMPESTWEAPONGROUND: untyped RAVAGERWEAPONMISSILE: untyped SCOUTMPAIRWEAPONLEFT: untyped SCOUTMPAIRWEAPONRIGHT: untyped ARBITERMPWEAPONMISSILE: untyped GUARDIANMPWEAPON: untyped DEVOURERMPWEAPONMISSILE: untyped DEFILERMPDARKSWARMWEAPON: untyped QUEENMPENSNAREMISSILE: untyped QUEENMPSPAWNBROODLINGSMISSILE: untyped LIGHTNINGBOMBWEAPON: untyped HERCPLACEMENT: untyped GRAPPLEWEAPON: untyped CAUSTICSPRAYMISSILE: untyped PARASITICBOMBMISSILE: untyped PARASITICBOMBDUMMY: untyped ADEPTWEAPON: untyped ADEPTUPGRADEWEAPON: untyped LIBERATORMISSILE: untyped LIBERATORDAMAGEMISSILE: untyped LIBERATORAGMISSILE: untyped KD8CHARGE: untyped KD8CHARGEWEAPON: untyped SLAYNELEMENTALGRABWEAPON: untyped SLAYNELEMENTALGRABAIRUNIT: untyped SLAYNELEMENTALGRABGROUNDUNIT: untyped SLAYNELEMENTALWEAPON: untyped DESTRUCTIBLEEXPEDITIONGATE6X6: untyped DESTRUCTIBLEZERGINFESTATION3X3: untyped HERC: untyped MOOPY: untyped REPLICANT: untyped SEEKERMISSILE: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENE8OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENE10OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENE12OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENW8OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENW10OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLENW12OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESW8OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESW10OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESW12OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESE8OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESE10OUT: untyped AIURTEMPLEBRIDGEDESTRUCTIBLESE12OUT: untyped FLYOVERUNIT: untyped CORSAIRMP: untyped SCOUTMP: untyped ARBITERMP: untyped SCOURGEMP: untyped DEFILERMPPLAGUEWEAPON: untyped QUEENMP: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6S: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6SE: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6E: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6NE: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6N: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6NW: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6W: untyped XELNAGADESTRUCTIBLERAMPBLOCKER6SW: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8S: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8SE: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8E: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8NE: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8N: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8NW: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8W: untyped XELNAGADESTRUCTIBLERAMPBLOCKER8SW: untyped REPTILECRATE: untyped SLAYNSWARMHOSTSPAWNFLYER: untyped SLAYNELEMENTAL: untyped PURIFIERVESPENEGEYSER: untyped SHAKURASVESPENEGEYSER: untyped COLLAPSIBLEPURIFIERTOWERDIAGONAL: untyped CREEPONLYBLOCKER4X4: untyped PURIFIERMINERALFIELD: untyped PURIFIERMINERALFIELD750: untyped BATTLESTATIONMINERALFIELD: untyped BATTLESTATIONMINERALFIELD750: untyped BEACON_NOVA: untyped BEACON_NOVASMALL: untyped URSULA: untyped ELSECARO_COLONIST_HUT: untyped TRANSPORTOVERLORDCOCOON: untyped OVERLORDTRANSPORT: untyped PYLONOVERCHARGED: untyped BYPASSARMORDRONE: untyped ADEPTPIERCINGWEAPON: untyped CORROSIVEPARASITEWEAPON: untyped INFESTEDTERRAN: untyped MERCCOMPOUND: untyped SUPPLYDEPOTDROP: untyped LURKERDEN: untyped D8CHARGE: untyped THORWRECKAGE: untyped GOLIATH: untyped TECHREACTOR: untyped SS_POWERUPBOMB: untyped SS_POWERUPHEALTH: untyped SS_POWERUPSIDEMISSILES: untyped SS_POWERUPSTRONGERMISSILES: untyped LURKEREGG: untyped LURKER: untyped LURKERBURROWED: untyped ARCHIVESEALED: untyped INFESTEDCIVILIAN: untyped FLAMINGBETTY: untyped INFESTEDCIVILIANBURROWED: untyped SELENDISINTERCEPTOR: untyped SIEGEBREAKERSIEGED: untyped SIEGEBREAKER: untyped PERDITIONTURRETUNDERGROUND: untyped PERDITIONTURRET: untyped SENTRYGUNUNDERGROUND: untyped SENTRYGUN: untyped WARPIG: untyped DEVILDOG: untyped SPARTANCOMPANY: untyped HAMMERSECURITY: untyped HELSANGELFIGHTER: untyped DUSKWING: untyped DUKESREVENGE: untyped ODINWRECKAGE: untyped HERONUKE: untyped KERRIGANCHARBURROWED: untyped KERRIGANCHAR: untyped SPIDERMINEBURROWED: untyped SPIDERMINE: untyped ZERATUL: untyped URUN: untyped MOHANDAR: untyped SELENDIS: untyped SCOUT: untyped OMEGALISKBURROWED: untyped OMEGALISK: untyped INFESTEDABOMINATIONBURROWED: untyped INFESTEDABOMINATION: untyped HUNTERKILLERBURROWED: untyped HUNTERKILLER: untyped INFESTEDTERRANCAMPAIGNBURROWED: untyped INFESTEDTERRANCAMPAIGN: untyped CHECKSTATION: untyped CHECKSTATIONDIAGONALBLUR: untyped CHECKSTATIONDIAGONALULBR: untyped CHECKSTATIONVERTICAL: untyped CHECKSTATIONOPENED: untyped CHECKSTATIONDIAGONALBLUROPENED: untyped CHECKSTATIONDIAGONALULBROPENED: untyped CHECKSTATIONVERTICALOPENED: untyped BARRACKSTECHREACTOR: untyped FACTORYTECHREACTOR: untyped STARPORTTECHREACTOR: untyped SPECTRENUKE: untyped COLONISTSHIPFLYING: untyped COLONISTSHIP: untyped BIODOMECOMMANDFLYING: untyped BIODOMECOMMAND: untyped HERCULESLANDERFLYING: untyped HERCULESLANDER: untyped ZHAKULDASLIGHTBRIDGEOFF: untyped ZHAKULDASLIGHTBRIDGE: untyped ZHAKULDASLIBRARYUNITBURROWED: untyped ZHAKULDASLIBRARYUNIT: untyped XELNAGATEMPLEDOORBURROWED: untyped XELNAGATEMPLEDOOR: untyped XELNAGATEMPLEDOORURDLBURROWED: untyped XELNAGATEMPLEDOORURDL: untyped HELSANGELASSAULT: untyped AUTOMATEDREFINERY: untyped BATTLECRUISERHELIOSMORPH: untyped HEALINGPOTIONTESTINSTANT: untyped SPACEPLATFORMCLIFFDOOROPEN0: untyped SPACEPLATFORMCLIFFDOOR0: untyped SPACEPLATFORMCLIFFDOOROPEN1: untyped SPACEPLATFORMCLIFFDOOR1: untyped DESTRUCTIBLEGATEDIAGONALBLURLOWERED: untyped DESTRUCTIBLEGATEDIAGONALULBRLOWERED: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALBFLOWERED: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALLOWERED: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLFLOWERED: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLOWERED: untyped DESTRUCTIBLEGATEDIAGONALBLUR: untyped DESTRUCTIBLEGATEDIAGONALULBR: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTALBF: untyped DESTRUCTIBLEGATESTRAIGHTHORIZONTAL: untyped DESTRUCTIBLEGATESTRAIGHTVERTICALLF: untyped DESTRUCTIBLEGATESTRAIGHTVERTICAL: untyped METALGATEDIAGONALBLURLOWERED: untyped METALGATEDIAGONALULBRLOWERED: untyped METALGATESTRAIGHTHORIZONTALBFLOWERED: untyped METALGATESTRAIGHTHORIZONTALLOWERED: untyped METALGATESTRAIGHTVERTICALLFLOWERED: untyped METALGATESTRAIGHTVERTICALLOWERED: untyped METALGATEDIAGONALBLUR: untyped METALGATEDIAGONALULBR: untyped METALGATESTRAIGHTHORIZONTALBF: untyped METALGATESTRAIGHTHORIZONTAL: untyped METALGATESTRAIGHTVERTICALLF: untyped METALGATESTRAIGHTVERTICAL: untyped SECURITYGATEDIAGONALBLURLOWERED: untyped SECURITYGATEDIAGONALULBRLOWERED: untyped SECURITYGATESTRAIGHTHORIZONTALBFLOWERED: untyped SECURITYGATESTRAIGHTHORIZONTALLOWERED: untyped SECURITYGATESTRAIGHTVERTICALLFLOWERED: untyped SECURITYGATESTRAIGHTVERTICALLOWERED: untyped SECURITYGATEDIAGONALBLUR: untyped SECURITYGATEDIAGONALULBR: untyped SECURITYGATESTRAIGHTHORIZONTALBF: untyped SECURITYGATESTRAIGHTHORIZONTAL: untyped SECURITYGATESTRAIGHTVERTICALLF: untyped SECURITYGATESTRAIGHTVERTICAL: untyped TERRAZINENODEDEADTERRAN: untyped TERRAZINENODEHAPPYPROTOSS: untyped ZHAKULDASLIGHTBRIDGEOFFTOPRIGHT: untyped ZHAKULDASLIGHTBRIDGETOPRIGHT: untyped BATTLECRUISERHELIOS: untyped NUKESILONOVA: untyped ODIN: untyped PYGALISKCOCOON: untyped DEVOURERTISSUEDOODAD: untyped SS_BATTLECRUISERMISSILELAUNCHER: untyped SS_TERRATRONMISSILESPINNERMISSILE: untyped SS_TERRATRONSAW: untyped SS_BATTLECRUISERHUNTERSEEKERMISSILE: untyped SS_LEVIATHANBOMB: untyped DEVOURERTISSUEMISSILE: untyped SS_INTERCEPTOR: untyped SS_LEVIATHANBOMBMISSILE: untyped SS_LEVIATHANSPAWNBOMBMISSILE: untyped SS_FIGHTERMISSILELEFT: untyped SS_FIGHTERMISSILERIGHT: untyped SS_INTERCEPTORSPAWNMISSILE: untyped SS_CARRIERBOSSMISSILE: untyped SS_LEVIATHANTENTACLETARGET: untyped SS_LEVIATHANTENTACLEL2MISSILE: untyped SS_LEVIATHANTENTACLER1MISSILE: untyped SS_LEVIATHANTENTACLER2MISSILE: untyped SS_LEVIATHANTENTACLEL1MISSILE: untyped SS_TERRATRONMISSILE: untyped SS_WRAITHMISSILE: untyped SS_SCOURGEMISSILE: untyped SS_CORRUPTORMISSILE: untyped SS_SWARMGUARDIANMISSILE: untyped SS_STRONGMISSILE1: untyped SS_STRONGMISSILE2: untyped SS_FIGHTERDRONEMISSILE: untyped SS_PHOENIXMISSILE: untyped SS_SCOUTMISSILE: untyped SS_INTERCEPTORMISSILE: untyped SS_SCIENCEVESSELMISSILE: untyped SS_BATTLECRUISERMISSILE: untyped D8CLUSTERBOMBWEAPON: untyped D8CLUSTERBOMB: untyped BROODLORDEGG: untyped BROODLORDEGGMISSILE: untyped CIVILIANWEAPON: untyped BATTLECRUISERHELIOSALMWEAPON: untyped BATTLECRUISERLOKILMWEAPON: untyped BATTLECRUISERHELIOSGLMWEAPON: untyped BIOSTASISMISSILE: untyped INFESTEDVENTBROODLORDEGG: untyped INFESTEDVENTCORRUPTOREGG: untyped TENTACLEAMISSILE: untyped TENTACLEBMISSILE: untyped TENTACLECMISSILE: untyped TENTACLEDMISSILE: untyped MUTALISKEGG: untyped INFESTEDVENTMUTALISKEGG: untyped MUTALISKEGGMISSILE: untyped INFESTEDVENTEGGMISSILE: untyped SPORECANNONFIREMISSILE: untyped EXPERIMENTALPLASMAGUNWEAPON: untyped BRUTALISKWEAPON: untyped LOKIHURRICANEMISSILELEFT: untyped LOKIHURRICANEMISSILERIGHT: untyped ODINAAWEAPON: untyped DUSKWINGWEAPON: untyped KERRIGANWEAPON: untyped ULTRASONICPULSEWEAPON: untyped KERRIGANCHARWEAPON: untyped DEVASTATORMISSILEWEAPON: untyped SWANNWEAPON: untyped HAMMERSECURITYLMWEAPON: untyped CONSUMEDNAFEEDBACKWEAPON: untyped URUNWEAPONLEFT: untyped URUNWEAPONRIGHT: untyped HAILSTORMMISSILESWEAPON: untyped COLONYINFESTATIONWEAPON: untyped VOIDSEEKERPHASEMINEBLASTWEAPON: untyped VOIDSEEKERPHASEMINEBLASTSECONDARYWEAPON: untyped TOSSGRENADEWEAPON: untyped TYCHUSGRENADEWEAPON: untyped VILESTREAMWEAPON: untyped WRAITHAIRWEAPONRIGHT: untyped WRAITHAIRWEAPONLEFT: untyped WRAITHGROUNDWEAPON: untyped WEAPONHYBRIDD: untyped KARASSWEAPON: untyped HYBRIDCPLASMAWEAPON: untyped WARBOTBMISSILE: untyped LOKIYAMATOWEAPON: untyped HYPERIONYAMATOSPECIALWEAPON: untyped HYPERIONLMWEAPON: untyped HYPERIONALMWEAPON: untyped VULTUREWEAPON: untyped SCOUTAIRWEAPONLEFT: untyped SCOUTAIRWEAPONRIGHT: untyped HUNTERKILLERWEAPON: untyped GOLIATHAWEAPON: untyped SPARTANCOMPANYAWEAPON: untyped LEVIATHANSCOURGEMISSILE: untyped BIOPLASMIDDISCHARGEWEAPON: untyped VOIDSEEKERWEAPON: untyped HELSANGELFIGHTERWEAPON: untyped DRBATTLECRUISERALMWEAPON: untyped DRBATTLECRUISERGLMWEAPON: untyped HURRICANEMISSILERIGHT: untyped HURRICANEMISSILELEFT: untyped HYBRIDSINGULARITYFEEDBACKWEAPON: untyped DOMINIONKILLTEAMLMWEAPON: untyped ITEMGRENADESWEAPON: untyped ITEMGRAVITYBOMBSWEAPON: untyped TESTHEROTHROWMISSILE: untyped TESTHERODEBUGMISSILEABILITY1WEAPON: untyped TESTHERODEBUGMISSILEABILITY2WEAPON: untyped SPECTRE: untyped VULTURE: untyped LOKI: untyped WRAITH: untyped DOMINIONKILLTEAM: untyped FIREBAT: untyped DIAMONDBACK: untyped G4CHARGEWEAPON: untyped SS_BLACKEDGEBORDER: untyped DEVOURERTISSUESAMPLETUBE: untyped MONOLITH: untyped OBELISK: untyped ARCHIVE: untyped ARTIFACTVAULT: untyped AVERNUSGATECONTROL: untyped GATECONTROLUNIT: untyped BLIMPADS: untyped BLOCKER6X6: untyped BLOCKER8X8: untyped BLOCKER16X16: untyped CARGOTRUCKUNITFLATBED: untyped CARGOTRUCKUNITTRAILER: untyped BLIMP: untyped CASTANARWINDOWLARGEDIAGONALULBRUNIT: untyped BLOCKER4X4: untyped HOMELARGE: untyped HOMESMALL: untyped ELEVATORBLOCKER: untyped QUESTIONMARK: untyped NYDUSWORMLAVADEATH: untyped SS_BACKGROUNDSPACELARGE: untyped SS_BACKGROUNDSPACETERRAN00: untyped SS_BACKGROUNDSPACETERRAN02: untyped SS_BACKGROUNDSPACEZERG00: untyped SS_BACKGROUNDSPACEZERG02: untyped SS_CARRIERBOSS: untyped SS_BATTLECRUISER: untyped SS_TERRATRONMISSILESPINNERLAUNCHER: untyped SS_TERRATRONMISSILESPINNER: untyped SS_TERRATRONBEAMTARGET: untyped SS_LIGHTNINGPROJECTORFACERIGHT: untyped SS_SCOURGE: untyped SS_CORRUPTOR: untyped SS_TERRATRONMISSILELAUNCHER: untyped SS_LIGHTNINGPROJECTORFACELEFT: untyped SS_WRAITH: untyped SS_SWARMGUARDIAN: untyped SS_SCOUT: untyped SS_LEVIATHAN: untyped SS_SCIENCEVESSEL: untyped SS_TERRATRON: untyped SECRETDOCUMENTS: untyped PREDATOR: untyped DEFILERBONESAMPLE: untyped DEVOURERTISSUESAMPLE: untyped PROTOSSPSIELEMENTS: untyped TASSADAR: untyped SCIENCEFACILITY: untyped INFESTEDCOCOON: untyped FUSIONREACTOR: untyped BUBBACOMMERCIAL: untyped XELNAGAPRISONHEIGHT2: untyped XELNAGAPRISON: untyped XELNAGAPRISONNORTH: untyped XELNAGAPRISONNORTHHEIGHT2: untyped ZERGDROPPODCREEP: untyped IPISTOLAD: untyped L800ETC_AD: untyped NUKENOODLESCOMMERCIAL: untyped PSIOPSCOMMERCIAL: untyped SHIPALARM: untyped SPACEPLATFORMDESTRUCTIBLEJUMBOBLOCKER: untyped SPACEPLATFORMDESTRUCTIBLELARGEBLOCKER: untyped SPACEPLATFORMDESTRUCTIBLEMEDIUMBLOCKER: untyped SPACEPLATFORMDESTRUCTIBLESMALLBLOCKER: untyped TALDARIMMOTHERSHIP: untyped PLASMATORPEDOESWEAPON: untyped PSIDISRUPTOR: untyped HIVEMINDEMULATOR: untyped RAYNOR01: untyped SCIENCEVESSEL: untyped SCOURGE: untyped SPACEPLATFORMREACTORPATHINGBLOCKER: untyped TAURENOUTHOUSE: untyped TYCHUSEJECTMISSILE: untyped FEEDERLING: untyped ULAANSMOKEBRIDGE: untyped TALDARIMPRISONCRYSTAL: untyped SPACEDIABLO: untyped MURLOCMARINE: untyped XELNAGAPRISONCONSOLE: untyped TALDARIMPRISON: untyped ADJUTANTCAPSULE: untyped XELNAGAVAULT: untyped HOLDINGPEN: untyped SCRAPHUGE: untyped PRISONERCIVILIAN: untyped BIODOMEHALFBUILT: untyped BIODOME: untyped DESTRUCTIBLEKORHALFLAG: untyped DESTRUCTIBLEKORHALPODIUM: untyped DESTRUCTIBLEKORHALTREE: untyped DESTRUCTIBLEKORHALFOLIAGE: untyped DESTRUCTIBLESANDBAGS: untyped CASTANARWINDOWLARGEDIAGONALBLURUNIT: untyped CARGOTRUCKUNITBARRELS: untyped SPORECANNON: untyped STETMANN: untyped BRIDGEBLOCKER4X12: untyped CIVILIANSHIPWRECKED: untyped SWANN: untyped DRAKKENLASERDRILL: untyped MINDSIPHONRETURNWEAPON: untyped KERRIGANEGG: untyped CHRYSALISEGG: untyped PRISONERSPECTRE: untyped PRISONZEALOT: untyped SCRAPSALVAGE1X1: untyped SCRAPSALVAGE2X2: untyped SCRAPSALVAGE3X3: untyped RAYNORCOMMANDO: untyped OVERMIND: untyped OVERMINDREMAINS: untyped INFESTEDMERCHAVEN: untyped MONLYTHARTIFACTFORCEFIELD: untyped MONLYTHFORCEFIELDSTATUE: untyped VIROPHAGE: untyped PSISHOCKWEAPON: untyped TYCHUSCOMMANDO: untyped BRUTALISK: untyped PYGALISK: untyped VALHALLABASEDESTRUCTIBLEDOORDEAD: untyped VALHALLABASEDESTRUCTIBLEDOOR: untyped VOIDSEEKER: untyped MINDSIPHONWEAPON: untyped WARBOT: untyped PLATFORMCONNECTOR: untyped ARTANIS: untyped TERRAZINECANISTER: untyped HERCULES: untyped MERCENARYFORTRESS: untyped RAYNOR: untyped ARTIFACTPIECE1: untyped ARTIFACTPIECE2: untyped ARTIFACTPIECE4: untyped ARTIFACTPIECE3: untyped ARTIFACTPIECE5: untyped RIPFIELDGENERATOR: untyped RIPFIELDGENERATORSMALL: untyped XELNAGAWORLDSHIPVAULT: untyped TYCHUSCHAINGUN: untyped ARTIFACT: untyped CELLBLOCKB: untyped GHOSTLASERLINES: untyped MAINCELLBLOCK: untyped KERRIGAN: untyped DATACORE: untyped SPECIALOPSDROPSHIP: untyped TOSH: untyped CASTANARULTRALISKSHACKLEDUNIT: untyped KARASS: untyped INVISIBLEPYLON: untyped MAAR: untyped HYBRIDDESTROYER: untyped HYBRIDREAVER: untyped HYBRID: untyped TERRAZINENODE: untyped TRANSPORTTRUCK: untyped WALLOFFIRE: untyped WEAPONHYBRIDC: untyped XELNAGATEMPLE: untyped EXPLODINGBARRELLARGE: untyped SUPERWARPGATE: untyped TERRAZINETANK: untyped XELNAGASHRINE: untyped SMCAMERABRIDGE: untyped SMMARSARABARTYCHUSCAMERAS: untyped SMHYPERIONBRIDGESTAGE1HANSONCAMERAS: untyped SMHYPERIONBRIDGESTAGE1HORNERCAMERAS: untyped SMHYPERIONBRIDGESTAGE1TYCHUSCAMERAS: untyped SMHYPERIONBRIDGESTAGE1TOSHCAMERAS: untyped SMHYPERIONARMORYSTAGE1SWANNCAMERAS: untyped SMHYPERIONCANTINATOSHCAMERAS: untyped SMHYPERIONCANTINATYCHUSCAMERAS: untyped SMHYPERIONCANTINAYBARRACAMERAS: untyped SMHYPERIONLABADJUTANTCAMERAS: untyped SMHYPERIONLABCOWINCAMERAS: untyped SMHYPERIONLABHANSONCAMERAS: untyped SMHYPERIONBRIDGETRAYNOR03BRIEFINGCAMERA: untyped SMTESTCAMERA: untyped SMCAMERATERRAN01: untyped SMCAMERATERRAN02A: untyped SMCAMERATERRAN02B: untyped SMCAMERATERRAN03: untyped SMCAMERATERRAN04: untyped SMCAMERATERRAN04A: untyped SMCAMERATERRAN04B: untyped SMCAMERATERRAN05: untyped SMCAMERATERRAN06A: untyped SMCAMERATERRAN06B: untyped SMCAMERATERRAN06C: untyped SMCAMERATERRAN07: untyped SMCAMERATERRAN08: untyped SMCAMERATERRAN09: untyped SMCAMERATERRAN10: untyped SMCAMERATERRAN11: untyped SMCAMERATERRAN12: untyped SMCAMERATERRAN13: untyped SMCAMERATERRAN14: untyped SMCAMERATERRAN15: untyped SMCAMERATERRAN16: untyped SMCAMERATERRAN17: untyped SMCAMERATERRAN20: untyped SMFIRSTOFFICER: untyped SMHYPERIONBRIDGEBRIEFINGLEFT: untyped SMHYPERIONBRIDGEBRIEFINGRIGHT: untyped SMHYPERIONMEDLABBRIEFING: untyped SMHYPERIONMEDLABBRIEFINGCENTER: untyped SMHYPERIONMEDLABBRIEFINGLEFT: untyped SMHYPERIONMEDLABBRIEFINGRIGHT: untyped SMTOSHSHUTTLESET: untyped SMKERRIGANPHOTO: untyped SMTOSHSHUTTLESET2: untyped SMMARSARABARJUKEBOXHS: untyped SMMARSARABARKERRIGANPHOTOHS: untyped SMVALERIANFLAGSHIPCORRIDORSSET: untyped SMVALERIANFLAGSHIPCORRIDORSSET2: untyped SMVALERIANFLAGSHIPCORRIDORSSET3: untyped SMVALERIANFLAGSHIPCORRIDORSSET4: untyped SMVALERIANOBSERVATORYSET: untyped SMVALERIANOBSERVATORYSET2: untyped SMVALERIANOBSERVATORYSET3: untyped SMVALERIANOBSERVATORYPAINTINGHS: untyped SMCHARBATTLEZONEFLAG: untyped SMUNNSET: untyped SMTERRANREADYROOMSET: untyped SMCHARBATTLEZONESET: untyped SMCHARBATTLEZONESET2: untyped SMCHARBATTLEZONESET3: untyped SMCHARBATTLEZONESET4: untyped SMCHARBATTLEZONESET5: untyped SMCHARBATTLEZONEARTIFACTHS: untyped SMCHARBATTLEZONERADIOHS: untyped SMCHARBATTLEZONEDROPSHIPHS: untyped SMCHARBATTLEZONEBRIEFCASEHS: untyped SMCHARBATTLEZONEBRIEFINGSET: untyped SMCHARBATTLEZONEBRIEFINGSET2: untyped SMCHARBATTLEZONEBRIEFINGSETLEFT: untyped SMCHARBATTLEZONEBRIEFINGSETRIGHT: untyped SMMARSARABARBADGEHS: untyped SMHYPERIONCANTINABADGEHS: untyped SMHYPERIONCANTINAPOSTER1HS: untyped SMHYPERIONCANTINAPOSTER2HS: untyped SMHYPERIONCANTINAPOSTER3HS: untyped SMHYPERIONCANTINAPOSTER4HS: untyped SMHYPERIONCANTINAPOSTER5HS: untyped SMFLY: untyped SMBRIDGEWINDOWSPACE: untyped SMBRIDGEPLANETSPACE: untyped SMBRIDGEPLANETSPACEASTEROIDS: untyped SMBRIDGEPLANETAGRIA: untyped SMBRIDGEPLANETAIUR: untyped SMBRIDGEPLANETAVERNUS: untyped SMBRIDGEPLANETBELSHIR: untyped SMBRIDGEPLANETCASTANAR: untyped SMBRIDGEPLANETCHAR: untyped SMBRIDGEPLANETHAVEN: untyped SMBRIDGEPLANETKORHAL: untyped SMBRIDGEPLANETMEINHOFF: untyped SMBRIDGEPLANETMONLYTH: untyped SMBRIDGEPLANETNEWFOLSOM: untyped SMBRIDGEPLANETPORTZION: untyped SMBRIDGEPLANETREDSTONE: untyped SMBRIDGEPLANETSHAKURAS: untyped SMBRIDGEPLANETTARSONIS: untyped SMBRIDGEPLANETTYPHON: untyped SMBRIDGEPLANETTYRADOR: untyped SMBRIDGEPLANETULAAN: untyped SMBRIDGEPLANETULNAR: untyped SMBRIDGEPLANETVALHALLA: untyped SMBRIDGEPLANETXIL: untyped SMBRIDGEPLANETZHAKULDAS: untyped SMMARSARAPLANET: untyped SMNOVA: untyped SMHAVENPLANET: untyped SMHYPERIONBRIDGEBRIEFING: untyped SMHYPERIONBRIDGEBRIEFINGCENTER: untyped SMCHARBATTLEFIELDENDPROPS: untyped SMCHARBATTLEZONETURRET: untyped SMTERRAN01FX: untyped SMTERRAN03FX: untyped SMTERRAN05FX: untyped SMTERRAN05FXMUTALISKS: untyped SMTERRAN05PROPS: untyped SMTERRAN06AFX: untyped SMTERRAN06BFX: untyped SMTERRAN06CFX: untyped SMTERRAN12FX: untyped SMTERRAN14FX: untyped SMTERRAN15FX: untyped SMTERRAN06APROPS: untyped SMTERRAN06BPROPS: untyped SMTERRAN07PROPS: untyped SMTERRAN07FX: untyped SMTERRAN08PROPS: untyped SMTERRAN09FX: untyped SMTERRAN09PROPS: untyped SMTERRAN11FX: untyped SMTERRAN11FXMISSILES: untyped SMTERRAN11FXEXPLOSIONS: untyped SMTERRAN11FXBLOOD: untyped SMTERRAN11FXDEBRIS: untyped SMTERRAN11FXDEBRIS1: untyped SMTERRAN11FXDEBRIS2: untyped SMTERRAN11PROPS: untyped SMTERRAN11PROPSBURROWROCKS: untyped SMTERRAN11PROPSRIFLESHELLS: untyped SMTERRAN12PROPS: untyped SMTERRAN13PROPS: untyped SMTERRAN14PROPS: untyped SMTERRAN15PROPS: untyped SMTERRAN16FX: untyped SMTERRAN16FXFLAK: untyped SMTERRAN17PROPS: untyped SMTERRAN17FX: untyped SMMARSARABARPROPS: untyped SMHYPERIONCORRIDORPROPS: untyped ZERATULCRYSTALCHARGE: untyped SMRAYNORHANDS: untyped SMPRESSROOMPROPS: untyped SMRAYNORGUN: untyped SMMARINERIFLE: untyped SMTOSHKNIFE: untyped SMTOSHSHUTTLEPROPS: untyped SMHYPERIONEXTERIOR: untyped SMHYPERIONEXTERIORLOW: untyped SMHYPERIONEXTERIORHOLOGRAM: untyped SMCHARCUTSCENES00: untyped SMCHARCUTSCENES01: untyped SMCHARCUTSCENES02: untyped SMCHARCUTSCENES03: untyped SMMARSARABARBRIEFINGSET: untyped SMMARSARABARBRIEFINGSET2: untyped SMMARSARABARBRIEFINGSETLEFT: untyped SMMARSARABARBRIEFINGSETRIGHT: untyped SMMARSARABARBRIEFINGTVMAIN: untyped SMMARSARABARBRIEFINGTVMAIN2: untyped SMMARSARABARBRIEFINGTVMAIN3: untyped SMMARSARABARBRIEFINGTVPORTRAIT1: untyped SMMARSARABARBRIEFINGTVPORTRAIT2: untyped SMMARSARABARBRIEFINGTVPORTRAIT3: untyped SMMARSARABARBRIEFINGTVPORTRAIT4: untyped SMMARSARABARBRIEFINGTVPORTRAIT5: untyped SMMARSARABARSET: untyped SMMARSARABARSET2: untyped SMMARSARABARSTARMAPHS: untyped SMMARSARABARTVHS: untyped SMMARSARABARHYDRALISKSKULLHS: untyped SMMARSARABARCORKBOARDHS: untyped SMMARSARABARCORKBOARDBACKGROUND: untyped SMMARSARABARCORKBOARDITEM1HS: untyped SMMARSARABARCORKBOARDITEM2HS: untyped SMMARSARABARCORKBOARDITEM3HS: untyped SMMARSARABARCORKBOARDITEM4HS: untyped SMMARSARABARCORKBOARDITEM5HS: untyped SMMARSARABARCORKBOARDITEM6HS: untyped SMMARSARABARCORKBOARDITEM7HS: untyped SMMARSARABARCORKBOARDITEM8HS: untyped SMMARSARABARCORKBOARDITEM9HS: untyped SMMARSARABARBOTTLESHS: untyped SMVALERIANOBSERVATORYPROPS: untyped SMVALERIANOBSERVATORYSTARMAP: untyped SMBANSHEE: untyped SMVIKING: untyped SMARMORYBANSHEE: untyped SMARMORYDROPSHIP: untyped SMARMORYTANK: untyped SMARMORYVIKING: untyped SMARMORYSPIDERMINE: untyped SMARMORYGHOSTCRATE: untyped SMARMORYSPECTRECRATE: untyped SMARMORYBANSHEEPHCRATE: untyped SMARMORYDROPSHIPPHCRATE: untyped SMARMORYTANKPHCRATE: untyped SMARMORYVIKINGPHCRATE: untyped SMARMORYSPIDERMINEPHCRATE: untyped SMARMORYGHOSTCRATEPHCRATE: untyped SMARMORYSPECTRECRATEPHCRATE: untyped SMARMORYRIFLE: untyped SMDROPSHIP: untyped SMDROPSHIPBLUE: untyped SMHYPERIONARMORYVIKING: untyped SMCHARGATLINGGUN: untyped SMBOUNTYHUNTER: untyped SMCIVILIAN: untyped SMZERGEDHANSON: untyped SMLABASSISTANT: untyped SMHYPERIONARMORER: untyped SMUNNSCREEN: untyped NEWSARCTURUSINTERVIEWSET: untyped NEWSARCTURUSPRESSROOM: untyped SMDONNYVERMILLIONSET: untyped NEWSMEINHOFFREFUGEECENTER: untyped NEWSRAYNORLOGO: untyped NEWSTVEFFECT: untyped SMUNNCAMERA: untyped SMLEEKENOSET: untyped SMTVSTATIC: untyped SMDONNYVERMILLION: untyped SMDONNYVERMILLIONDEATH: untyped SMLEEKENO: untyped SMKATELOCKWELL: untyped SMMIKELIBERTY: untyped SMTERRANREADYROOMLEFTTV: untyped SMTERRANREADYROOMMAINTV: untyped SMTERRANREADYROOMRIGHTTV: untyped SMHYPERIONARMORYSTAGE1SET: untyped SMHYPERIONARMORYSTAGE1SET01: untyped SMHYPERIONARMORYSTAGE1SET02: untyped SMHYPERIONARMORYSTAGE1SET03: untyped SMHYPERIONARMORYSPACELIGHTING: untyped SMHYPERIONARMORYSTAGE1TECHNOLOGYCONSOLEHS: untyped SMHYPERIONBRIDGESTAGE1BOW: untyped SMHYPERIONBRIDGESTAGE1SET: untyped SMHYPERIONBRIDGESTAGE1SET2: untyped SMHYPERIONBRIDGESTAGE1SET3: untyped SMHYPERIONBRIDGEHOLOMAP: untyped SMHYPERIONCANTINASTAGE1SET: untyped SMHYPERIONCANTINASTAGE1SET2: untyped SMHYPERIONCANTINASTAGE1WALLPIECE: untyped SMHYPERIONBRIDGEPROPS: untyped SMHYPERIONCANTINAPROPS: untyped SMHYPERIONMEDLABPROPS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE0HS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE1HS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE2HS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE3HS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE4HS: untyped SMHYPERIONMEDLABPROTOSSCRYOTUBE5HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE0HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE1HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE2HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE3HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE4HS: untyped SMHYPERIONMEDLABZERGCRYOTUBE5HS: untyped SMHYPERIONMEDLABCRYOTUBEA: untyped SMHYPERIONMEDLABCRYOTUBEB: untyped SMHYPERIONCANTINASTAGE1EXITHS: untyped SMHYPERIONCANTINASTAGE1STAIRCASEHS: untyped SMHYPERIONCANTINASTAGE1TVHS: untyped SMHYPERIONCANTINASTAGE1ARCADEGAMEHS: untyped SMHYPERIONCANTINASTAGE1JUKEBOXHS: untyped SMHYPERIONCANTINASTAGE1CORKBOARDHS: untyped SMHYPERIONCANTINAPROGRESSFRAME: untyped SMHYPERIONCANTINAHYDRACLAWSHS: untyped SMHYPERIONCANTINAMERCCOMPUTERHS: untyped SMHYPERIONCANTINASTAGE1PROGRESS1HS: untyped SMHYPERIONCANTINASTAGE1PROGRESS2HS: untyped SMHYPERIONCANTINASTAGE1PROGRESS3HS: untyped SMHYPERIONCANTINASTAGE1PROGRESS4HS: untyped SMHYPERIONCANTINASTAGE1PROGRESS5HS: untyped SMHYPERIONCANTINASTAGE1PROGRESS6HS: untyped SMHYPERIONCORRIDORSET: untyped SMHYPERIONBRIDGESTAGE1BATTLEREPORTSHS: untyped SMHYPERIONBRIDGESTAGE1CENTERCONSOLEHS: untyped SMHYPERIONBRIDGESTAGE1BATTLECOMMANDHS: untyped SMHYPERIONBRIDGESTAGE1CANTINAHS: untyped SMHYPERIONBRIDGESTAGE1WINDOWHS: untyped SMHYPERIONMEDLABSTAGE1SET: untyped SMHYPERIONMEDLABSTAGE1SET2: untyped SMHYPERIONMEDLABSTAGE1SETLIGHTS: untyped SMHYPERIONMEDLABSTAGE1CONSOLEHS: untyped SMHYPERIONMEDLABSTAGE1DOORHS: untyped SMHYPERIONMEDLABSTAGE1CRYSTALHS: untyped SMHYPERIONMEDLABSTAGE1ARTIFACTHS: untyped SMHYPERIONLABARTIFACTPART1HS: untyped SMHYPERIONLABARTIFACTPART2HS: untyped SMHYPERIONLABARTIFACTPART3HS: untyped SMHYPERIONLABARTIFACTPART4HS: untyped SMHYPERIONLABARTIFACTBASEHS: untyped SMSHADOWBOX: untyped SMCHARBATTLEZONESHADOWBOX: untyped SMCHARINTERACTIVESKYPARALLAX: untyped SMCHARINTERACTIVE02SKYPARALLAX: untyped SMRAYNORCOMMANDER: untyped SMADJUTANT: untyped SMADJUTANTHOLOGRAM: untyped SMMARAUDER: untyped SMFIREBAT: untyped SMMARAUDERPHCRATE: untyped SMFIREBATPHCRATE: untyped SMRAYNORMARINE: untyped SMMARINE01: untyped SMMARINE02: untyped SMMARINE02AOD: untyped SMMARINE03: untyped SMMARINE04: untyped SMCADE: untyped SMHALL: untyped SMBRALIK: untyped SMANNABELLE: untyped SMEARL: untyped SMKACHINSKY: untyped SMGENERICMALEGREASEMONKEY01: untyped SMGENERICMALEGREASEMONKEY02: untyped SMGENERICMALEOFFICER01: untyped SMGENERICMALEOFFICER02: untyped SMSTETMANN: untyped SMCOOPER: untyped SMHILL: untyped SMYBARRA: untyped SMVALERIANMENGSK: untyped SMARCTURUSMENGSK: untyped SMARCTURUSHOLOGRAM: untyped SMZERATUL: untyped SMHYDRALISK: untyped SMHYDRALISKDEAD: untyped SMMUTALISK: untyped SMZERGLING: untyped SCIENTIST: untyped MINERMALE: untyped CIVILIAN: untyped COLONIST: untyped CIVILIANFEMALE: untyped COLONISTFEMALE: untyped HUT: untyped COLONISTHUT: untyped INFESTABLEHUT: untyped INFESTABLECOLONISTHUT: untyped XELNAGASHRINEXIL: untyped PROTOSSRELIC: untyped PICKUPGRENADES: untyped PICKUPPLASMAGUN: untyped PICKUPPLASMAROUNDS: untyped PICKUPMEDICRECHARGE: untyped PICKUPMANARECHARGE: untyped PICKUPRESTORATIONCHARGE: untyped PICKUPCHRONORIFTDEVICE: untyped PICKUPCHRONORIFTCHARGE: untyped GASCANISTER: untyped GASCANISTERPROTOSS: untyped GASCANISTERZERG: untyped MINERALCRYSTAL: untyped PALLETGAS: untyped PALLETMINERALS: untyped NATURALGAS: untyped NATURALMINERALS: untyped NATURALMINERALSRED: untyped PICKUPHEALTH25: untyped PICKUPHEALTH50: untyped PICKUPHEALTH100: untyped PICKUPHEALTHFULL: untyped PICKUPENERGY25: untyped PICKUPENERGY50: untyped PICKUPENERGY100: untyped PICKUPENERGYFULL: untyped PICKUPMINES: untyped PICKUPPSISTORM: untyped CIVILIANCARSUNIT: untyped CRUISERBIKE: untyped TERRANBUGGY: untyped COLONISTVEHICLEUNIT: untyped COLONISTVEHICLEUNIT01: untyped DUMPTRUCK: untyped TANKERTRUCK: untyped FLATBEDTRUCK: untyped COLONISTSHIPTHANSON02A: untyped PURIFIER: untyped INFESTEDARMORY: untyped INFESTEDBARRACKS: untyped INFESTEDBUNKER: untyped INFESTEDCC: untyped INFESTEDENGBAY: untyped INFESTEDFACTORY: untyped INFESTEDREFINERY: untyped INFESTEDSTARPORT: untyped INFESTEDMISSILETURRET: untyped LOGISTICSHEADQUARTERS: untyped INFESTEDSUPPLY: untyped TARSONISENGINE: untyped TARSONISENGINEFAST: untyped FREIGHTCAR: untyped CABOOSE: untyped HYPERION: untyped MENGSKHOLOGRAMBILLBOARD: untyped TRAYNOR01SIGNSDESTRUCTIBLE1: untyped ABANDONEDBUILDING: untyped NOVA: untyped FOOD1000: untyped PSIINDOCTRINATOR: untyped JORIUMSTOCKPILE: untyped ZERGDROPPOD: untyped TERRANDROPPOD: untyped COLONISTBIODOME: untyped COLONISTBIODOMEHALFBUILT: untyped INFESTABLEBIODOME: untyped INFESTABLECOLONISTBIODOME: untyped MEDIC: untyped VIKINGSKY_UNIT: untyped SS_FIGHTER: untyped SS_PHOENIX: untyped SS_CARRIER: untyped SS_BACKGROUNDZERG01: untyped SS_BACKGROUNDSPACE00: untyped SS_BACKGROUNDSPACE01: untyped SS_BACKGROUNDSPACE02: untyped SS_BACKGROUNDSPACEPROT00: untyped SS_BACKGROUNDSPACEPROT01: untyped SS_BACKGROUNDSPACEPROT02: untyped SS_BACKGROUNDSPACEPROT03: untyped SS_BACKGROUNDSPACEPROT04: untyped SS_BACKGROUNDSPACEPROTOSSLARGE: untyped SS_BACKGROUNDSPACEZERGLARGE: untyped SS_BACKGROUNDSPACETERRANLARGE: untyped SS_BACKGROUNDSPACEZERG01: untyped SS_BACKGROUNDSPACETERRAN01: untyped BREACHINGCHARGE: untyped INFESTATIONSPIRE: untyped SPACEPLATFORMVENTSUNIT: untyped STONEZEALOT: untyped PRESERVERPRISON: untyped PORTJUNKER: untyped LEVIATHAN: untyped SWARMLING: untyped VALHALLADESTRUCTIBLEWALL: untyped NEWFOLSOMPRISONENTRANCE: untyped ODINBUILD: untyped NUKEPACK: untyped CHARDESTRUCTIBLEROCKCOVER: untyped CHARDESTRUCTIBLEROCKCOVERV: untyped CHARDESTRUCTIBLEROCKCOVERULDR: untyped CHARDESTRUCTIBLEROCKCOVERURDL: untyped MAARWARPINUNIT: untyped EGGPURPLE: untyped TRUCKFLATBEDUNIT: untyped TRUCKSEMIUNIT: untyped TRUCKUTILITYUNIT: untyped INFESTEDCOLONISTSHIP: untyped CASTANARDESTRUCTIBLEDEBRIS: untyped COLONISTTRANSPORT: untyped PRESERVERBASE: untyped PRESERVERA: untyped PRESERVERB: untyped PRESERVERC: untyped TAURENSPACEMARINE: untyped MARSARABRIDGEBLUR: untyped MARSARABRIDGEBRUL: untyped SHORTBRIDGEVERTICAL: untyped SHORTBRIDGEHORIZONTAL: untyped TESTHERO: untyped TESTSHOP: untyped HEALINGPOTIONTESTTARGET: untyped REPULSERFIELD6: untyped REPULSERFIELD8: untyped REPULSERFIELD10: untyped REPULSERFIELD12: untyped DESTRUCTIBLEWALLCORNER45ULBL: untyped DESTRUCTIBLEWALLCORNER45ULUR: untyped DESTRUCTIBLEWALLCORNER45URBR: untyped DESTRUCTIBLEWALLCORNER45: untyped DESTRUCTIBLEWALLCORNER45UR90L: untyped DESTRUCTIBLEWALLCORNER45UL90B: untyped DESTRUCTIBLEWALLCORNER45BL90R: untyped DESTRUCTIBLEWALLCORNER45BR90T: untyped DESTRUCTIBLEWALLCORNER90L45BR: untyped DESTRUCTIBLEWALLCORNER90T45BL: untyped DESTRUCTIBLEWALLCORNER90R45UL: untyped DESTRUCTIBLEWALLCORNER90B45UR: untyped DESTRUCTIBLEWALLCORNER90TR: untyped DESTRUCTIBLEWALLCORNER90BR: untyped DESTRUCTIBLEWALLCORNER90LB: untyped DESTRUCTIBLEWALLCORNER90LT: untyped DESTRUCTIBLEWALLDIAGONALBLUR: untyped DESTRUCTIBLEWALLDIAGONALBLURLF: untyped DESTRUCTIBLEWALLDIAGONALULBRLF: untyped DESTRUCTIBLEWALLDIAGONALULBR: untyped DESTRUCTIBLEWALLSTRAIGHTVERTICAL: untyped DESTRUCTIBLEWALLVERTICALLF: untyped DESTRUCTIBLEWALLSTRAIGHTHORIZONTAL: untyped DESTRUCTIBLEWALLSTRAIGHTHORIZONTALBF: untyped DEFENSEWALLE: untyped DEFENSEWALLS: untyped DEFENSEWALLW: untyped DEFENSEWALLN: untyped DEFENSEWALLNE: untyped DEFENSEWALLSW: untyped DEFENSEWALLNW: untyped DEFENSEWALLSE: untyped WRECKEDBATTLECRUISERHELIOSFINAL: untyped FIREWORKSBLUE: untyped FIREWORKSRED: untyped FIREWORKSYELLOW: untyped PURIFIERBLASTMARKUNIT: untyped ITEMGRAVITYBOMBS: untyped ITEMGRENADES: untyped ITEMMEDKIT: untyped ITEMMINES: untyped REAPERPLACEMENT: untyped QUEENZAGARAACGLUESCREENDUMMY: untyped OVERSEERZAGARAACGLUESCREENDUMMY: untyped STUKOVINFESTEDCIVILIANACGLUESCREENDUMMY: untyped STUKOVINFESTEDMARINEACGLUESCREENDUMMY: untyped STUKOVINFESTEDSIEGETANKACGLUESCREENDUMMY: untyped STUKOVINFESTEDDIAMONDBACKACGLUESCREENDUMMY: untyped STUKOVINFESTEDBANSHEEACGLUESCREENDUMMY: untyped SILIBERATORACGLUESCREENDUMMY: untyped STUKOVINFESTEDBUNKERACGLUESCREENDUMMY: untyped STUKOVINFESTEDMISSILETURRETACGLUESCREENDUMMY: untyped STUKOVBROODQUEENACGLUESCREENDUMMY: untyped ZEALOTFENIXACGLUESCREENDUMMY: untyped SENTRYFENIXACGLUESCREENDUMMY: untyped ADEPTFENIXACGLUESCREENDUMMY: untyped IMMORTALFENIXACGLUESCREENDUMMY: untyped COLOSSUSFENIXACGLUESCREENDUMMY: untyped DISRUPTORACGLUESCREENDUMMY: untyped OBSERVERFENIXACGLUESCREENDUMMY: untyped SCOUTACGLUESCREENDUMMY: untyped CARRIERFENIXACGLUESCREENDUMMY: untyped PHOTONCANNONFENIXACGLUESCREENDUMMY: untyped PRIMALZERGLINGACGLUESCREENDUMMY: untyped RAVASAURACGLUESCREENDUMMY: untyped PRIMALROACHACGLUESCREENDUMMY: untyped FIREROACHACGLUESCREENDUMMY: untyped PRIMALGUARDIANACGLUESCREENDUMMY: untyped PRIMALHYDRALISKACGLUESCREENDUMMY: untyped PRIMALMUTALISKACGLUESCREENDUMMY: untyped PRIMALIMPALERACGLUESCREENDUMMY: untyped PRIMALSWARMHOSTACGLUESCREENDUMMY: untyped CREEPERHOSTACGLUESCREENDUMMY: untyped PRIMALULTRALISKACGLUESCREENDUMMY: untyped TYRANNOZORACGLUESCREENDUMMY: untyped PRIMALWURMACGLUESCREENDUMMY: untyped HHREAPERACGLUESCREENDUMMY: untyped HHWIDOWMINEACGLUESCREENDUMMY: untyped HHHELLIONTANKACGLUESCREENDUMMY: untyped HHWRAITHACGLUESCREENDUMMY: untyped HHVIKINGACGLUESCREENDUMMY: untyped HHBATTLECRUISERACGLUESCREENDUMMY: untyped HHRAVENACGLUESCREENDUMMY: untyped HHBOMBERPLATFORMACGLUESCREENDUMMY: untyped HHMERCSTARPORTACGLUESCREENDUMMY: untyped HHMISSILETURRETACGLUESCREENDUMMY: untyped HIGHTEMPLARSKINPREVIEW: untyped WARPPRISMSKINPREVIEW: untyped SIEGETANKSKINPREVIEW: untyped LIBERATORSKINPREVIEW: untyped VIKINGSKINPREVIEW: untyped STUKOVINFESTEDTROOPERACGLUESCREENDUMMY: untyped XELNAGADESTRUCTIBLEBLOCKER6S: untyped XELNAGADESTRUCTIBLEBLOCKER6SE: untyped XELNAGADESTRUCTIBLEBLOCKER6E: untyped XELNAGADESTRUCTIBLEBLOCKER6NE: untyped XELNAGADESTRUCTIBLEBLOCKER6N: untyped XELNAGADESTRUCTIBLEBLOCKER6NW: untyped XELNAGADESTRUCTIBLEBLOCKER6W: untyped XELNAGADESTRUCTIBLEBLOCKER6SW: untyped XELNAGADESTRUCTIBLEBLOCKER8S: untyped XELNAGADESTRUCTIBLEBLOCKER8SE: untyped XELNAGADESTRUCTIBLEBLOCKER8E: untyped XELNAGADESTRUCTIBLEBLOCKER8NE: untyped XELNAGADESTRUCTIBLEBLOCKER8N: untyped XELNAGADESTRUCTIBLEBLOCKER8NW: untyped XELNAGADESTRUCTIBLEBLOCKER8W: untyped XELNAGADESTRUCTIBLEBLOCKER8SW: untyped SNOWGLAZESTARTERMP: untyped SHIELDBATTERY: untyped OBSERVERSIEGEMODE: untyped OVERSEERSIEGEMODE: untyped RAVENREPAIRDRONE: untyped HIGHTEMPLARWEAPONMISSILE: untyped CYCLONEMISSILELARGEAIRALTERNATIVE: untyped RAVENSCRAMBLERMISSILE: untyped RAVENREPAIRDRONERELEASEWEAPON: untyped RAVENSHREDDERMISSILEWEAPON: untyped INFESTEDACIDSPINESWEAPON: untyped INFESTORENSNAREATTACKMISSILE: untyped SNARE_PLACEHOLDER: untyped TYCHUSREAPERACGLUESCREENDUMMY: untyped TYCHUSFIREBATACGLUESCREENDUMMY: untyped TYCHUSSPECTREACGLUESCREENDUMMY: untyped TYCHUSMEDICACGLUESCREENDUMMY: untyped TYCHUSMARAUDERACGLUESCREENDUMMY: untyped TYCHUSWARHOUNDACGLUESCREENDUMMY: untyped TYCHUSHERCACGLUESCREENDUMMY: untyped TYCHUSGHOSTACGLUESCREENDUMMY: untyped TYCHUSSCVAUTOTURRETACGLUESCREENDUMMY: untyped ZERATULSTALKERACGLUESCREENDUMMY: untyped ZERATULSENTRYACGLUESCREENDUMMY: untyped ZERATULDARKTEMPLARACGLUESCREENDUMMY: untyped ZERATULIMMORTALACGLUESCREENDUMMY: untyped ZERATULOBSERVERACGLUESCREENDUMMY: untyped ZERATULDISRUPTORACGLUESCREENDUMMY: untyped ZERATULWARPPRISMACGLUESCREENDUMMY: untyped ZERATULPHOTONCANNONACGLUESCREENDUMMY: untyped RENEGADELONGBOLTMISSILEWEAPON: untyped VIKING: untyped RENEGADEMISSILETURRET: untyped PARASITICBOMBRELAYDUMMY: untyped REFINERYRICH: untyped MECHAZERGLINGACGLUESCREENDUMMY: untyped MECHABANELINGACGLUESCREENDUMMY: untyped MECHAHYDRALISKACGLUESCREENDUMMY: untyped MECHAINFESTORACGLUESCREENDUMMY: untyped MECHACORRUPTORACGLUESCREENDUMMY: untyped MECHAULTRALISKACGLUESCREENDUMMY: untyped MECHAOVERSEERACGLUESCREENDUMMY: untyped MECHALURKERACGLUESCREENDUMMY: untyped MECHABATTLECARRIERLORDACGLUESCREENDUMMY: untyped MECHASPINECRAWLERACGLUESCREENDUMMY: untyped MECHASPORECRAWLERACGLUESCREENDUMMY: untyped TROOPERMENGSKACGLUESCREENDUMMY: untyped MEDIVACMENGSKACGLUESCREENDUMMY: untyped BLIMPMENGSKACGLUESCREENDUMMY: untyped MARAUDERMENGSKACGLUESCREENDUMMY: untyped GHOSTMENGSKACGLUESCREENDUMMY: untyped SIEGETANKMENGSKACGLUESCREENDUMMY: untyped THORMENGSKACGLUESCREENDUMMY: untyped VIKINGMENGSKACGLUESCREENDUMMY: untyped BATTLECRUISERMENGSKACGLUESCREENDUMMY: untyped BUNKERDEPOTMENGSKACGLUESCREENDUMMY: untyped MISSILETURRETMENGSKACGLUESCREENDUMMY: untyped ARTILLERYMENGSKACGLUESCREENDUMMY: untyped LOADOUTSPRAY1: untyped LOADOUTSPRAY2: untyped LOADOUTSPRAY3: untyped LOADOUTSPRAY4: untyped LOADOUTSPRAY5: untyped LOADOUTSPRAY6: untyped LOADOUTSPRAY7: untyped LOADOUTSPRAY8: untyped LOADOUTSPRAY9: untyped LOADOUTSPRAY10: untyped LOADOUTSPRAY11: untyped LOADOUTSPRAY12: untyped LOADOUTSPRAY13: untyped LOADOUTSPRAY14: untyped PREVIEWBUNKERUPGRADED: untyped INHIBITORZONESMALL: untyped INHIBITORZONEMEDIUM: untyped INHIBITORZONELARGE: untyped ACCELERATIONZONESMALL: untyped ACCELERATIONZONEMEDIUM: untyped ACCELERATIONZONELARGE: untyped ACCELERATIONZONEFLYINGSMALL: untyped ACCELERATIONZONEFLYINGMEDIUM: untyped ACCELERATIONZONEFLYINGLARGE: untyped INHIBITORZONEFLYINGSMALL: untyped INHIBITORZONEFLYINGMEDIUM: untyped INHIBITORZONEFLYINGLARGE: untyped ASSIMILATORRICH: untyped EXTRACTORRICH: untyped MINERALFIELD450: untyped MINERALFIELDOPAQUE: untyped MINERALFIELDOPAQUE900: untyped COLLAPSIBLEROCKTOWERDEBRISRAMPLEFTGREEN: untyped COLLAPSIBLEROCKTOWERDEBRISRAMPRIGHTGREEN: untyped COLLAPSIBLEROCKTOWERPUSHUNITRAMPLEFTGREEN: untyped COLLAPSIBLEROCKTOWERPUSHUNITRAMPRIGHTGREEN: untyped COLLAPSIBLEROCKTOWERRAMPLEFTGREEN: untyped COLLAPSIBLEROCKTOWERRAMPRIGHTGREEN: untyped # sord omit - no YARD return type given, using untyped def self._4SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._6SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._8SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._10SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._12SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._14SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._16SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._18SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._20SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._22SLOTBAG: () -> untyped # sord omit - no YARD return type given, using untyped def self._24SLOTBAG: () -> untyped end # Adds additional functionality to message object Api::Unit # Mostly adds convenience methods by adding direct access to the Sc2::Bot data and api module UnitExtension # sord omit - no YARD return type given, using untyped def hash: () -> untyped # Returns an integer unique identifier # If the unit goes out of vision and is snapshot-able, they get a random id # - Such a unit gets the same unit tag when it re-enters vision def tag: () -> Integer # sord infer - inferred type of parameter "tag" as Integer using getter's return type # Sets unit tag def tag=: (Integer tag) -> Integer # Returns static [Api::UnitTypeData] for a unit def unit_data: () -> Api::UnitTypeData # Get the unit as from the previous frame. Good for comparison. # # _@return_ — this unit from the previous frame or nil if it wasn't present def previous: () -> Api::Unit? # sord warn - Api::Attribute wasn't able to be resolved to a constant in this project # Returns static [Api::UnitTypeData] for a unit def attributes: () -> ::Array[Api::Attribute] # sord omit - no YARD type given for "attribute", using untyped # Checks unit data for an attribute value # # _@return_ — whether unit has attribute # # ```ruby # unit.has_attribute?(Api::Attribute::Mechanical) # unit.has_attribute?(:Mechanical) # ``` def has_attribute?: (untyped attribute) -> bool # Checks if unit is light # # _@return_ — whether unit has attribute :Light def is_light?: () -> bool # Checks if unit is armored # # _@return_ — whether unit has attribute :Armored def is_armored?: () -> bool # Checks if unit is biological # # _@return_ — whether unit has attribute :Biological def is_biological?: () -> bool # Checks if unit is mechanical # # _@return_ — whether unit has attribute :Mechanical def is_mechanical?: () -> bool # Checks if unit is robotic # # _@return_ — whether unit has attribute :Robotic def is_robotic?: () -> bool # Checks if unit is psionic # # _@return_ — whether unit has attribute :Psionic def is_psionic?: () -> bool # Checks if unit is massive # # _@return_ — whether unit has attribute :Massive def is_massive?: () -> bool # Checks if unit is structure # # _@return_ — whether unit has attribute :Structure def is_structure?: () -> bool # Checks if unit is hover # # _@return_ — whether unit has attribute :Hover def is_hover?: () -> bool # Checks if unit is heroic # # _@return_ — whether unit has attribute :Heroic def is_heroic?: () -> bool # Checks if unit is summoned # # _@return_ — whether unit has attribute :Summoned def is_summoned?: () -> bool # Whether unit is effected by buff_id # # _@param_ `buff_id` # # ```ruby # unit.has_buff??(Api::BuffId::QUEENSPAWNLARVATIMER) # ``` def has_buff?: (Integer buff_id) -> bool # sord omit - no YARD return type given, using untyped # Performs action on this unit # # _@param_ `ability_id` # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def action: (ability_id: Integer, ?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action SMART (right-click) # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def smart: (?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action MOVE # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def move: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action STOP # # _@param_ `queue_command` — shift+command def stop: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action HOLDPOSITION # # _@param_ `queue_command` — shift+command def hold: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action ATTACK # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def attack: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # Inverse of #attack, where you target self using another unit (source_unit) # # _@param_ `units` — a unit or unit group # # _@param_ `queue_command` — shift+command def attack_with: (units: (Api::Unit | Sc2::UnitGroup), ?queue_command: bool) -> void # sord omit - no YARD return type given, using untyped # Builds target unit type, i.e. issuing a build command to worker.build(...Api::UnitTypeId::BARRACKS) # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — is a unit tag or a Api::Point2D. Nil for addons/orbital # # _@param_ `queue_command` — shift+command def build: (unit_type_id: Integer, ?target: (Api::Point2D | Api::Unit | Integer)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Issues repair command on target # # _@param_ `target` — is a unit or unit tag # # _@param_ `queue_command` — shift+command def repair: (target: (Api::Unit | Integer), ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Research a specific upgrade # # _@param_ `upgrade_id` — Api::UnitTypeId the unit type you wish to research # # _@param_ `queue_command` — shift+command def research: (upgrade_id: Integer, ?queue_command: bool) -> untyped # Draws a placement outline # noinspection RubyArgCount # # _@param_ `color` — optional api color, default white def debug_draw_placement: (?Api::Color? color) -> void # sord omit - no YARD return type given, using untyped # Draws a sphere around the unit's attack range # # _@param_ `weapon_index` — default first weapon, see UnitTypeData.weapons # # _@param_ `color` — optional api color, default red def debug_fire_range: (?Api::Color weapon_index, ?Api::Color? color) -> untyped # sord warn - Api::RadarRing wasn't able to be resolved to a constant in this project # sord warn - Api::Effect wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Calculates the distance between self and other # # _@param_ `other` def distance_to: ((Sc2::Position | Api::Unit | Api::PowerSource | Api::RadarRing | Api::Effect) other) -> untyped # Gets the nearest amount of unit(s) from a group, relative to this unit # Omitting amount returns a single Unit. # # _@param_ `units` # # _@param_ `amount` # # _@return_ — return group or a Unit if amount is not passed def nearest: (units: Sc2::UnitGroup, ?amount: Integer?) -> (Sc2::UnitGroup | Api::Unit)? # sord omit - no YARD type given for "radius:", using untyped # Detects whether a unit is within a given circle # # _@param_ `point` def in_circle?: (point: (Api::Point2D | Api::Point), radius: untyped) -> bool # Returns whether unit is currently engaged with another # # _@param_ `target` — optionally check if unit is engaged with specific target def is_attacking?: (?target: (Api::Unit | Integer)?) -> bool # Returns whether the unit's current order is to repair and optionally check it's target # # _@param_ `target` — optionally check if unit is engaged with specific target def is_repairing?: (?target: (Api::Unit | Integer)?) -> bool # Checks whether a unit's first order for ability # # _@param_ `ability_ids` — accepts one or an array of Api::AbilityId def is_performing_ability?: ((Integer | ::Array[Integer]) ability_ids) -> bool # Returns whether engaged_target_tag or the current order matches supplied unit # # _@param_ `unit` — optionally check if unit is engaged with specific target def is_engaged_with?: ((Api::Unit | Integer) unit) -> bool # Checks whether enemy is within range of weapon or ability and can target ground/air. # Defaults to basic weapon. Pass in ability to override # # _@param_ `unit` — enemy # # _@param_ `weapon_index` — defaults to 0 which is it's basic weapon for it's current form # # _@param_ `ability_id` — passing this will override weapon Api::AbilityId::* # # ```ruby # ghost.can_attack?(enemy, weapon_index: 0, ability_id: Api::AbilityId::SNIPE) # ``` def can_attack?: (unit: Api::Unit, ?weapon_index: Integer, ?ability_id: Integer?) -> bool # Returns whether this unit has an ability available # Queries API if necessary # # _@param_ `ability_id` def ability_available?: (Integer ability_id) -> bool # sord warn - Api::unit wasn't able to be resolved to a constant in this project # sord warn - Api::Weapon wasn't able to be resolved to a constant in this project # Checks whether a weapon can target a unit # # _@param_ `unit` # # _@param_ `weapon` def can_weapon_target_unit?: (unit: Api::unit, weapon: Api::Weapon) -> bool # sord omit - no YARD type given for "unit:", using untyped # sord omit - no YARD type given for "ability:", using untyped def can_ability_target_unit?: (unit: untyped, ability: untyped) -> bool # Checks whether opposing unit is in the attack range. # # _@param_ `unit` # # _@param_ `range` — nil. will use default weapon range if nothing provided def in_attack_range?: (unit: Api::Unit, ?range: Float?) -> bool # sord warn - Api::Weapon wasn't able to be resolved to a constant in this project # Gets a weapon for this unit at index (default weapon is index 0) # # _@param_ `index` — default 0 def weapon: (?Integer index) -> Api::Weapon # For saturation counters on bases or gas, get the amount of missing harvesters required to saturate. # For a unit to which this effect doesn't apply, the amount is zero. # # _@return_ — number of harvesters required to saturate this structure def missing_harvesters: () -> Integer # The placement size, by looking up unit's creation ability, then game ability data # This value should be correct for building placement math (unit.radius is not good for this) # # _@return_ — placement radius def footprint_radius: () -> Float # Returns true if build progress is 100% def is_completed?: () -> bool # Returns true if build progress is < 100% def in_progress?: () -> bool # Returns the Api::Unit add-on (Reactor/Tech Lab), if present for this structure # # _@return_ — the unit if an addon is present or nil if not present def add_on: () -> Api::Unit? # Returns whether the structure has a reactor add-on # # _@return_ — if the unit has a reactor attached def has_reactor?: () -> bool # Returns whether the structure has a tech lab add-on # # _@return_ — if the unit has a tech lab attached # # ```ruby # # Find the first Starport with a techlab # sp = structures.select_type(Api::UnitTypeId::STARPORT).find(&:has_tech_lab) # # Get the actual tech-lab with #add_on # sp.add_on.research ... # ``` def has_tech_lab?: () -> bool # sord omit - no YARD type given for "queue_command:", using untyped # For Terran builds a tech lab add-on on the current structure def build_reactor: (?queue_command: untyped) -> void # sord omit - no YARD type given for "queue_command:", using untyped # For Terran builds a tech lab add-on on the current structure def build_tech_lab: (?queue_command: untyped) -> void # sord omit - no YARD return type given, using untyped def target_for_addon_placement: () -> untyped # sord omit - no YARD return type given, using untyped # Warps in unit type at target (location or pylon) # Only works if the source is a Warp Gate # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — a point, which should be inside an energy source # # _@param_ `queue_command` — shift+command def warp: (unit_type_id: Integer, target: Api::Point2D, ?queue_command: bool) -> untyped # Returns true if unit does not have orders # # _@return_ — whether unit is idle def is_idle?: () -> bool # sord omit - no YARD type given for "abilities", using untyped # sord omit - no YARD type given for "target:", using untyped # Reduces repetition in the is_*action*?(target:) methods def is_performing_ability_on_target?: (untyped abilities, ?target: untyped) -> bool # Every unit gets access back to the bot to allow api access. # For your own units, this allows API access. # # _@return_ — player with active connection attr_accessor bot: Sc2::Player # width = radius * 2 attr_accessor width: Float attr_reader is_flying?: bool attr_reader is_burrowed?: bool attr_reader is_hallucination?: bool attr_reader is_selected?: bool attr_reader is_on_screen?: bool attr_reader is_blip?: bool attr_reader is_powered?: bool attr_reader is_active?: bool # Returns whether the unit is grounded (not flying). attr_reader is_ground?: bool end # Adds additional functionality and fixes quirks with color specifically pertaining to debug commands module ColorExtension # sord omit - no YARD type given for "r:", using untyped # sord omit - no YARD type given for "g:", using untyped # sord omit - no YARD type given for "b:", using untyped # For lines: r & b are swapped. def initialize: (?r: untyped, ?g: untyped, ?b: untyped) -> void # Adds additional functionality to message class Api::Color module ClassMethods # Creates a new Api::Color object with random rgb values # # _@return_ — random color def random: () -> Api::Color end end # Adds additional functionality to message object Api::Point module PointExtension # sord omit - no YARD return type given, using untyped def hash: () -> untyped # sord omit - no YARD type given for "other", using untyped def eql?: (untyped other) -> bool # Creates a Point2D using x and y def to_p2d: () -> Api::Point2D # Adds additional functionality to message class Api::Point module ClassMethods # Shorthand for creating an instance for [x, y, z] # # _@param_ `x` # # _@param_ `y` # # _@param_ `z` # # ```ruby # Api::Point[1,2,3] # Where x is 1.0, y is 2.0 and z is 3.0 # ``` def []: (Float x, Float y, Float z) -> Api::Point end end # Protobuf virtual class. class Color < Google::Protobuf::AbstractMessage include Api::ColorExtension extend Api::ColorExtension::ClassMethods # Creates a new Api::Color object with random rgb values # # _@return_ — random color def self.random: () -> Api::Color # sord omit - no YARD type given for "r:", using untyped # sord omit - no YARD type given for "g:", using untyped # sord omit - no YARD type given for "b:", using untyped # For lines: r & b are swapped. def initialize: (?r: untyped, ?g: untyped, ?b: untyped) -> void end # Protobuf virtual class. class Point < Google::Protobuf::AbstractMessage include Sc2::Position include Api::PointDistanceExtension include Api::PointExtension extend Api::PointExtension::ClassMethods # Shorthand for creating an instance for [x, y, z] # # _@param_ `x` # # _@param_ `y` # # _@param_ `z` # # ```ruby # Api::Point[1,2,3] # Where x is 1.0, y is 2.0 and z is 3.0 # ``` def self.[]: (Float x, Float y, Float z) -> Api::Point # sord omit - no YARD return type given, using untyped def hash: () -> untyped # sord omit - no YARD type given for "other", using untyped def eql?: (untyped other) -> bool # Creates a Point2D using x and y def to_p2d: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end # Protobuf virtual class. class Point2D < Google::Protobuf::AbstractMessage include Sc2::Position include Api::Point2DExtension include Api::PointDistanceExtension extend Api::Point2DExtension::ClassMethods # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Shorthand for creating an instance for [x, y] # # ```ruby # Api::Point2D[2,4] # Where x is 2.0 and y is 4.0 # ``` def self.[]: (untyped x, untyped y) -> Api::Point2D # sord omit - no YARD return type given, using untyped def hash: () -> untyped # sord omit - no YARD type given for "other", using untyped def eql?: (untyped other) -> bool # sord omit - no YARD type given for "z:", using untyped # Create a new 3d Point, by adding a y axis. def to_3d: (?z: untyped) -> Api::Point # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end # Protobuf virtual class. class PointI < Google::Protobuf::AbstractMessage include Sc2::Position include Api::PointDistanceExtension # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end # Protobuf virtual class. class PowerSource < Google::Protobuf::AbstractMessage include Api::PowerSourceExtension extend Api::PowerSourceExtension::ClassMethods # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # sord omit - no YARD type given for "z", using untyped # Shorthand for creating an instance for [x, y, z] # # ```ruby # Api::Point[1,2,3] # Where x is 1.0, y is 2.0 and z is 3.0 # ``` def self.[]: (untyped x, untyped y, untyped z) -> Api::Point # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end # Protobuf virtual class. class Size2DI < Google::Protobuf::AbstractMessage include Sc2::Position include Api::PointDistanceExtension # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D end # Protobuf virtual class. class Unit < Google::Protobuf::AbstractMessage include Api::UnitExtension # sord omit - no YARD return type given, using untyped def hash: () -> untyped # Returns an integer unique identifier # If the unit goes out of vision and is snapshot-able, they get a random id # - Such a unit gets the same unit tag when it re-enters vision def tag: () -> Integer # sord infer - inferred type of parameter "tag" as Integer using getter's return type # Sets unit tag def tag=: (Integer tag) -> Integer # Returns static [Api::UnitTypeData] for a unit def unit_data: () -> Api::UnitTypeData # Get the unit as from the previous frame. Good for comparison. # # _@return_ — this unit from the previous frame or nil if it wasn't present def previous: () -> Api::Unit? # sord warn - Api::Attribute wasn't able to be resolved to a constant in this project # Returns static [Api::UnitTypeData] for a unit def attributes: () -> ::Array[Api::Attribute] # sord omit - no YARD type given for "attribute", using untyped # Checks unit data for an attribute value # # _@return_ — whether unit has attribute # # ```ruby # unit.has_attribute?(Api::Attribute::Mechanical) # unit.has_attribute?(:Mechanical) # ``` def has_attribute?: (untyped attribute) -> bool # Checks if unit is light # # _@return_ — whether unit has attribute :Light def is_light?: () -> bool # Checks if unit is armored # # _@return_ — whether unit has attribute :Armored def is_armored?: () -> bool # Checks if unit is biological # # _@return_ — whether unit has attribute :Biological def is_biological?: () -> bool # Checks if unit is mechanical # # _@return_ — whether unit has attribute :Mechanical def is_mechanical?: () -> bool # Checks if unit is robotic # # _@return_ — whether unit has attribute :Robotic def is_robotic?: () -> bool # Checks if unit is psionic # # _@return_ — whether unit has attribute :Psionic def is_psionic?: () -> bool # Checks if unit is massive # # _@return_ — whether unit has attribute :Massive def is_massive?: () -> bool # Checks if unit is structure # # _@return_ — whether unit has attribute :Structure def is_structure?: () -> bool # Checks if unit is hover # # _@return_ — whether unit has attribute :Hover def is_hover?: () -> bool # Checks if unit is heroic # # _@return_ — whether unit has attribute :Heroic def is_heroic?: () -> bool # Checks if unit is summoned # # _@return_ — whether unit has attribute :Summoned def is_summoned?: () -> bool # Whether unit is effected by buff_id # # _@param_ `buff_id` # # ```ruby # unit.has_buff??(Api::BuffId::QUEENSPAWNLARVATIMER) # ``` def has_buff?: (Integer buff_id) -> bool # sord omit - no YARD return type given, using untyped # Performs action on this unit # # _@param_ `ability_id` # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def action: (ability_id: Integer, ?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action SMART (right-click) # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def smart: (?target: (Api::Unit | Integer | Api::Point2D)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action MOVE # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def move: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action STOP # # _@param_ `queue_command` — shift+command def stop: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action HOLDPOSITION # # _@param_ `queue_command` — shift+command def hold: (?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Shorthand for performing action ATTACK # # _@param_ `target` — is a unit, unit tag or a Api::Point2D # # _@param_ `queue_command` — shift+command def attack: (target: (Api::Unit | Integer | Api::Point2D), ?queue_command: bool) -> untyped # Inverse of #attack, where you target self using another unit (source_unit) # # _@param_ `units` — a unit or unit group # # _@param_ `queue_command` — shift+command def attack_with: (units: (Api::Unit | Sc2::UnitGroup), ?queue_command: bool) -> void # sord omit - no YARD return type given, using untyped # Builds target unit type, i.e. issuing a build command to worker.build(...Api::UnitTypeId::BARRACKS) # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — is a unit tag or a Api::Point2D. Nil for addons/orbital # # _@param_ `queue_command` — shift+command def build: (unit_type_id: Integer, ?target: (Api::Point2D | Api::Unit | Integer)?, ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Issues repair command on target # # _@param_ `target` — is a unit or unit tag # # _@param_ `queue_command` — shift+command def repair: (target: (Api::Unit | Integer), ?queue_command: bool) -> untyped # sord omit - no YARD return type given, using untyped # Research a specific upgrade # # _@param_ `upgrade_id` — Api::UnitTypeId the unit type you wish to research # # _@param_ `queue_command` — shift+command def research: (upgrade_id: Integer, ?queue_command: bool) -> untyped # Draws a placement outline # noinspection RubyArgCount # # _@param_ `color` — optional api color, default white def debug_draw_placement: (?Api::Color? color) -> void # sord omit - no YARD return type given, using untyped # Draws a sphere around the unit's attack range # # _@param_ `weapon_index` — default first weapon, see UnitTypeData.weapons # # _@param_ `color` — optional api color, default red def debug_fire_range: (?Api::Color weapon_index, ?Api::Color? color) -> untyped # sord warn - Api::RadarRing wasn't able to be resolved to a constant in this project # sord warn - Api::Effect wasn't able to be resolved to a constant in this project # sord omit - no YARD return type given, using untyped # Calculates the distance between self and other # # _@param_ `other` def distance_to: ((Sc2::Position | Api::Unit | Api::PowerSource | Api::RadarRing | Api::Effect) other) -> untyped # Gets the nearest amount of unit(s) from a group, relative to this unit # Omitting amount returns a single Unit. # # _@param_ `units` # # _@param_ `amount` # # _@return_ — return group or a Unit if amount is not passed def nearest: (units: Sc2::UnitGroup, ?amount: Integer?) -> (Sc2::UnitGroup | Api::Unit)? # sord omit - no YARD type given for "radius:", using untyped # Detects whether a unit is within a given circle # # _@param_ `point` def in_circle?: (point: (Api::Point2D | Api::Point), radius: untyped) -> bool # Returns whether unit is currently engaged with another # # _@param_ `target` — optionally check if unit is engaged with specific target def is_attacking?: (?target: (Api::Unit | Integer)?) -> bool # Returns whether the unit's current order is to repair and optionally check it's target # # _@param_ `target` — optionally check if unit is engaged with specific target def is_repairing?: (?target: (Api::Unit | Integer)?) -> bool # Checks whether a unit's first order for ability # # _@param_ `ability_ids` — accepts one or an array of Api::AbilityId def is_performing_ability?: ((Integer | ::Array[Integer]) ability_ids) -> bool # Returns whether engaged_target_tag or the current order matches supplied unit # # _@param_ `unit` — optionally check if unit is engaged with specific target def is_engaged_with?: ((Api::Unit | Integer) unit) -> bool # Checks whether enemy is within range of weapon or ability and can target ground/air. # Defaults to basic weapon. Pass in ability to override # # _@param_ `unit` — enemy # # _@param_ `weapon_index` — defaults to 0 which is it's basic weapon for it's current form # # _@param_ `ability_id` — passing this will override weapon Api::AbilityId::* # # ```ruby # ghost.can_attack?(enemy, weapon_index: 0, ability_id: Api::AbilityId::SNIPE) # ``` def can_attack?: (unit: Api::Unit, ?weapon_index: Integer, ?ability_id: Integer?) -> bool # Returns whether this unit has an ability available # Queries API if necessary # # _@param_ `ability_id` def ability_available?: (Integer ability_id) -> bool # sord warn - Api::unit wasn't able to be resolved to a constant in this project # sord warn - Api::Weapon wasn't able to be resolved to a constant in this project # Checks whether a weapon can target a unit # # _@param_ `unit` # # _@param_ `weapon` def can_weapon_target_unit?: (unit: Api::unit, weapon: Api::Weapon) -> bool # sord omit - no YARD type given for "unit:", using untyped # sord omit - no YARD type given for "ability:", using untyped def can_ability_target_unit?: (unit: untyped, ability: untyped) -> bool # Checks whether opposing unit is in the attack range. # # _@param_ `unit` # # _@param_ `range` — nil. will use default weapon range if nothing provided def in_attack_range?: (unit: Api::Unit, ?range: Float?) -> bool # sord warn - Api::Weapon wasn't able to be resolved to a constant in this project # Gets a weapon for this unit at index (default weapon is index 0) # # _@param_ `index` — default 0 def weapon: (?Integer index) -> Api::Weapon # For saturation counters on bases or gas, get the amount of missing harvesters required to saturate. # For a unit to which this effect doesn't apply, the amount is zero. # # _@return_ — number of harvesters required to saturate this structure def missing_harvesters: () -> Integer # The placement size, by looking up unit's creation ability, then game ability data # This value should be correct for building placement math (unit.radius is not good for this) # # _@return_ — placement radius def footprint_radius: () -> Float # Returns true if build progress is 100% def is_completed?: () -> bool # Returns true if build progress is < 100% def in_progress?: () -> bool # Returns the Api::Unit add-on (Reactor/Tech Lab), if present for this structure # # _@return_ — the unit if an addon is present or nil if not present def add_on: () -> Api::Unit? # Returns whether the structure has a reactor add-on # # _@return_ — if the unit has a reactor attached def has_reactor?: () -> bool # Returns whether the structure has a tech lab add-on # # _@return_ — if the unit has a tech lab attached # # ```ruby # # Find the first Starport with a techlab # sp = structures.select_type(Api::UnitTypeId::STARPORT).find(&:has_tech_lab) # # Get the actual tech-lab with #add_on # sp.add_on.research ... # ``` def has_tech_lab?: () -> bool # sord omit - no YARD type given for "queue_command:", using untyped # For Terran builds a tech lab add-on on the current structure def build_reactor: (?queue_command: untyped) -> void # sord omit - no YARD type given for "queue_command:", using untyped # For Terran builds a tech lab add-on on the current structure def build_tech_lab: (?queue_command: untyped) -> void # sord omit - no YARD return type given, using untyped def target_for_addon_placement: () -> untyped # sord omit - no YARD return type given, using untyped # Warps in unit type at target (location or pylon) # Only works if the source is a Warp Gate # # _@param_ `unit_type_id` — Api::UnitTypeId the unit type you wish to build # # _@param_ `target` — a point, which should be inside an energy source # # _@param_ `queue_command` — shift+command def warp: (unit_type_id: Integer, target: Api::Point2D, ?queue_command: bool) -> untyped # Returns true if unit does not have orders # # _@return_ — whether unit is idle def is_idle?: () -> bool # sord omit - no YARD type given for "abilities", using untyped # sord omit - no YARD type given for "target:", using untyped # Reduces repetition in the is_*action*?(target:) methods def is_performing_ability_on_target?: (untyped abilities, ?target: untyped) -> bool end # Protobuf virtual class. class UnitTypeData < Google::Protobuf::AbstractMessage include Api::UnitTypeDataExtension end # Protobuf virtual class. class AvailableAbility < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class UnitOrder < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class ActionRawUnitCommand < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class ActionRawToggleAutocast < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class ActionError < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class ActionSpatialUnitCommand < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class BuildItem < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual class. class ActionToggleAutocast < Google::Protobuf::AbstractMessage include Api::AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end # Protobuf virtual enum. class Race < Google::Protobuf::AbstractMessage end # Protobuf virtual enum. class PlayerType < Google::Protobuf::AbstractMessage end # Protobuf virtual enum. class Difficulty < Google::Protobuf::AbstractMessage end # Protobuf virtual enum. class AIBuild < Google::Protobuf::AbstractMessage end # Adds additional functionality to message object Api::Point2D module Point2DExtension # sord omit - no YARD return type given, using untyped def hash: () -> untyped # sord omit - no YARD type given for "other", using untyped def eql?: (untyped other) -> bool # sord omit - no YARD type given for "z:", using untyped # Create a new 3d Point, by adding a y axis. def to_3d: (?z: untyped) -> Api::Point # Adds additional functionality to message class Api::Point2D module ClassMethods # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Shorthand for creating an instance for [x, y] # # ```ruby # Api::Point2D[2,4] # Where x is 2.0 and y is 4.0 # ``` def []: (untyped x, untyped y) -> Api::Point2D end end # Adds additional functionality to message object Api::PowerSource module PowerSourceExtension include Sc2::Position # sord omit - no YARD type given for "other", using untyped # sord omit - no YARD return type given, using untyped # Loose equality matches on floats x and y. # We never check z-axis, because the map is single-level. # TODO: We should almost certainly introduce TOLERANCE here, but verify it's cost first. def ==: (untyped other) -> untyped # A new point representing the sum of this point and the other point. # # _@param_ `other` — The other point/number to add. def add: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns a new point representing the difference between this point and the other point/number. # # _@param_ `other` — The other to subtract. def subtract: ((Api::Point2D | Numeric) other) -> Api::Point2D # Returns this point multiplied by the scalar # # _@param_ `scalar` — The scalar to multiply by. def multiply: (Float scalar) -> Api::Point2D # _@param_ `scalar` — The scalar to divide by. # # _@return_ — A new point representing this point divided by the scalar. def divide: (Float scalar) -> Api::Point2D # Returns x coordinate def x: () -> Float # sord infer - inferred type of parameter "x" as Float using getter's return type # Sets x coordinate def x=: (Float x) -> Float # Returns y coordinate def y: () -> Float # sord infer - inferred type of parameter "y" as Float using getter's return type # Sets y coordinate def y=: (Float y) -> Float # Randomly adjusts both x and y by a range of: -offset..offset # # _@param_ `offset` # # _@return_ — new Position def random_offset: (Float offset) -> Sc2::Position # sord omit - no YARD type given for "offset", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def random_offset!: (untyped offset) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Creates a new point with x and y which is offset # # _@return_ — new Position def offset: (?untyped x, ?untyped y) -> Sc2::Position # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # Changes this point's x and y by the supplied offset # # _@return_ — self def offset!: (?untyped x, ?untyped y) -> Sc2::Position # For vector returns the magnitude, synonymous with Math.hypot def magnitude: () -> Float # The dot product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the dot product with. def dot: (Api::Point2D other) -> Float # The cross product of this vector and the other vector. # # _@param_ `other` — The other vector to calculate the cross product with. def cross_product: (Api::Point2D other) -> Float # The angle between this vector and the other vector, in radians. # # _@param_ `other` — The other vector to calculate the angle to. def angle_to: (Api::Point2D other) -> Float # A new point representing the normalized version of this vector (unit length). def normalize: () -> Api::Point2D # sord omit - no YARD type given for "other", using untyped # Linear interpolation between this point and another for scale # Finds a point on a line between two points at % along the way. 0.0 returns self, 1.0 returns other, 0.5 is halfway. # # _@param_ `scale` — a value between 0.0..1.0 def lerp: (untyped other, Float scale) -> Api::Point2D # Calculates the distance between self and other # # _@param_ `other` def distance_to: (Sc2::Position other) -> Float # sord infer - Point2D was resolved to Api::Point2D # The squared distance between this point and the other point. # # _@param_ `other` — The other point to calculate the squared distance to. def distance_squared_to: (Api::Point2D other) -> Float # sord omit - no YARD type given for "x:", using untyped # sord omit - no YARD type given for "y:", using untyped # Distance between this point and coordinate of x and y def distance_to_coordinate: (x: untyped, y: untyped) -> Float # sord infer - Point2D was resolved to Api::Point2D # The distance from this point to the circle. # # _@param_ `center` — The center of the circle. # # _@param_ `radius` — The radius of the circle. def distance_to_circle: (Api::Point2D center, Float radius) -> Float # Moves in direction towards other point by distance # # _@param_ `other` — The target point to move to. # # _@param_ `distance` — The distance to move. def towards: (Api::Point2D other, Float distance) -> Api::Point2D # Moves in direction away from the other point by distance # # _@param_ `other` — The target point to move away from # # _@param_ `distance` — The distance to move. def away_from: (Api::Point2D other, Float distance) -> Api::Point2D # Adds additional functionality to message class Api::PowerSource module ClassMethods # sord omit - no YARD type given for "x", using untyped # sord omit - no YARD type given for "y", using untyped # sord omit - no YARD type given for "z", using untyped # Shorthand for creating an instance for [x, y, z] # # ```ruby # Api::Point[1,2,3] # Where x is 1.0, y is 2.0 and z is 3.0 # ``` def []: (untyped x, untyped y, untyped z) -> Api::Point end end # Adds additional functionality to message object Api::Unit module PointDistanceExtension end # Adds additional functionality to message object Api::UnitTypeData module UnitTypeDataExtension # Sum of all morphs mineral cost # i.e. 550M Orbital command = 400M CC + 150M Upgrade # i.e. 350M Hatchery = 50M Drone + 300M Build # # _@return_ — sum of mineral costs attr_accessor mineral_cost_sum: (Integer | untyped) # Sum of all morphs vespene gas cost # i.e. 250G Broodlord = 100G Corruptor + 150G Morph # # _@return_ — sum of vespene gas costs attr_accessor vespene_cost_sum: (Integer | untyped) # Length of tiles to build. # i.e. 5 for any Base-type (5x5) # i.e. 3 for Barracks (3x3) # i.e. 2 for Supply Depot (2x2) # # _@return_ — side-length for placement attr_accessor placement_length: (Integer | untyped) end # This module make sure that a read from method ability_id always returns the proper source id module AbilityRemapable # Ability Id. The generic id or "remapid". # i.e. Api::AbilityId::ATTACK_BATTLECRUISER returns generic Api::AbilityId::ATTACK def ability_id: () -> Integer end end