use crate::compiler::*;
use crate::lang_types::*;
macro_rules! impl_into {
($f:literal $t:ty) => {
impl True<$t>
};
($t:ty) => {
impl Cast<$t>
}
}
macro_rules! action {
(
$(#[$doc:meta])*
> $name:ident ( $( $arg:ident : $($force:literal)? $type:ty ),* ) => $fmt:literal
) => {
$(#[$doc])*
pub fn $name($($arg: impl_into!($($force)? $type)),*) {
get_compiler().push_action(format!($fmt, $(Cast::<$type>::cast($arg).compile()),*));
}
};
(
$(#[$doc:meta])*
$name:ident ( $arg_0:ident : $($force_0:literal)? $type_0:ty $( , $arg_n:ident : $($force_n:literal)? $type_n:ty )* ) => $fmt:literal
) => {
$(#[$doc])*
pub fn $name($arg_0: impl_into!($($force_0)? $type_0) $( , $arg_n: impl_into!($($force_n)? $type_n))*) {
get_compiler().push_action(format!($fmt, Cast::<$type_0>::cast($arg_0).compile() $( , Cast::<$type_n>::cast($arg_n).compile())*));
}
#[allow(non_camel_case_types)]
pub trait $name {
$(#[$doc])*
fn $name(self $( , $arg_n: impl_into!($($force_n)? $type_n))*);
}
impl<T: True<$type_0>> $name for T {
$(#[$doc])*
fn $name(self $( , $arg_n: impl_into!($($force_n)? $type_n))*) {
get_compiler().push_action(format!($fmt, self.cast().compile() $( , Cast::<$type_n>::cast($arg_n).compile())*));
}
}
};
}
action! { > cf_abort() => "Abort" }
action! { > cf_abort_if(condition: Boolean) => "Abort If({})" }
action! { > abort_if_condition_is_false() => "Abort If Condition Is False" }
action! { > abort_if_condition_is_true() => "Abort If Condition Is True" }
action! { add_health_pool(player: Array<Player>, health_type: HealthType, max_health: Number) => "Add Health Pool To Player({}, {}, {})" }
action! { allow_button(player: Array<Player>, button: Button) => "Allow Button({}, {})" }
action! { apply_impulse(player: Array<Player>, direction: Vector, speed: Number, relative: RelativeSystem) => "Apply Impulse({}, {}, {}, {})" }
action! { attach(children: Array<Player>, parent: Player, offset: Vector) => "Attach Players({}, {}, {})" }
action! { big_message(visible_to: Array<Player>, header: Text) => "Big Message({}, {})" }
action! { > cf_break() => "Break" }
action! { call(subroutine: Subroutine) => "Call Subroutine({})" }
action! { cancel_primary_action(player: Player) => "Cancel Primary Action({})" }
action! { clear_status(player: Array<Player>, status: Status) => "Clear Status({}, {})" }
action! { communicate(player: Array<Player>, interaction: Interaction) => "Communicate({}, {})" }
action! { > cf_continue() => "Continue" }
action! { > create_beam_effect(visible_to: Array<Player>, beam_type: BeamEffect, start_position: Vector, end_position: Vector, color: Color, reevaluation: Reeval_1) => "Create Beam Effect({}, {}, {}, {}, {}, {})" }
action! { > create_dummy_bot(hero: Hero, team: Team, slot: Number, position: Vector, facing: Vector) => "Create Dummy Bot({}, {}, {}, {}, {})" }
action! { > create_effect(visible_to: Array<Player>, effect_type: LingeringEffect, color: Color, position: Vector, radius_or_loudness: Number, reevaluation: Reeval_1) => "Create Effect({}, {}, {}, {}, {}, {})" }
action! { > create_homing_projectile(
projectile_type: ProjectileType,
owner: Player,
start_position: Vector,
direction: Vector,
relative: RelativeSystem,
modify_health_type: ModifyHealthType,
affected_team: Team,
amount: Number,
amount_scalar: Number,
explosion_radius: Number,
explosion_effect: SplashVisual,
explosion_sound: SplashSound,
over_size: Number,
speed: Number,
lifetime: Number,
impulse: Number,
homing_target: Vector,
homing_strength: Number
) => "Create Homing Projectile({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_hud_text(
visible_to: Array<Player>,
header: Text,
subheader: Text,
text: Text,
location: HudLocation,
sort_order: Number,
header_color: Color,
subheader_color: Color,
text_color: Color,
reevaluation: Reeval_2,
non_team_spectators: SpectatorVisibility
) => "Create Hud Text({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_icon(
visible_to: Array<Player>,
position: Vector,
icon: Icon,
reevaluation: Reeval_3,
icon_color: Color,
show_when_offscreen: Boolean
) => "Create Icon({}, {}, {}, {}, {}, {})" }
action! { > create_in_world_text(
visible_to: Array<Player>,
header: Text,
position: Vector,
scale: Number,
clipping: Clipping,
reevaluation: Reeval_4,
text_color: Color,
non_team_spectators: SpectatorVisibility
) => "Create In World Text({}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_progress_bar_hud_text(
visible_to: Array<Player>,
value: Number,
text: Text,
location: HudLocation,
sort_order: Number,
progess_bar_color: Color,
text_color: Color,
reevaluation: Reeval_5,
non_team_spectators: SpectatorVisibility
) => "Create Progress Bar Hud Text({}, {}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_progress_bar_in_world_text(
visible_to: Array<Player>,
value: Number,
text: Text,
position: Vector,
scale: Number,
clipping: Clipping,
progess_bar_color: Color,
text_color: Color,
reevaluation: Reeval_6,
non_team_spectators: SpectatorVisibility
) => "Create Progress Bar In World Text({}, {}, {}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_projectile(
projectile_type: ProjectileType,
owner: Player,
start_position: Vector,
direction: Vector,
relative: RelativeSystem,
modify_health_type: ModifyHealthType,
affected_team: Team,
amount: Number,
amount_scalar: Number,
explosion_radius: Number,
explosion_effect: SplashVisual,
explosion_sound: SplashSound,
oversize: Number,
speed: Number,
lifetime: Number,
impulse: Number,
ricochet_count: Number,
gravity: Number
) => "Create Projectile({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {})" }
action! { > create_projectile_effect(
visible_to: Array<Player>,
projectile_type: ProjectileType,
friendly_to: Team,
position: Vector,
direction: Vector,
oversize: Number,
reevaluation: Reeval_7
) => "Create Projectile Effect({}, {}, {}, {}, {}, {}, {})" }
action! { damage(player: Array<Player>, damager: Player, amount: Number) => "Damage({}, {}, {})" }
action! { > declare_match_draw() => "Declare Match Draw" }
action! { declare_victory(player: Player) => "Declare Player Victory({})" }
action! { > declare_round_draw() => "Declare Round Draw" }
action! { declare_round_victory(team: Team) => "Declare Round Victory({})" }
action! { declare_team_victory(team: Team) => "Declare Team Victory({})" }
action! { > destroy_all_dummy_bots() => "Destroy All Dummy Bots" }
action! { > destroy_all_effects() => "Destroy All Effects" }
action! { > destroy_all_hud_text() => "Destroy All Hud Text" }
action! { > destroy_all_icons() => "Destroy All Icons" }
action! { > destroy_all_in_world_text() => "Destroy All In World Text" }
action! { > destroy_all_progress_bar_hud_text() => "Destroy All Progress Bar Hud Text" }
action! { > destroy_all_progress_bar_in_world_text() => "Destroy All Progress Bar In World Text" }
action! { destroy_dummy_bot(team: Team, slot: Number) => "Destroy Dummy Bot({}, {})" }
action! { destroy_effect(entity: Entity) => "Destroy Effect({})" }
action! { destroy_hud_text(entity: Entity) => "Destroy Hud Text({})" }
action! { destroy_icon(entity: Entity) => "Destroy Icon({})" }
action! { destroy_in_world_text(entity: Entity) => "Destroy In World Text({})" }
action! { destroy_progess_bar_hud_text(entity: Entity) => "Destroy Progess Bar Hud Text({})" }
action! { destroy_progess_bar_in_world_text(entity: Entity) => "Destroy Progess Bar In World Text({})" }
action! { detach(children: Array<Player>) => "Detach Players({})" }
action! { > disable_builtin_game_mode_announcer() => "Disable Builtin Game Mode Announcer" }
action! { > disable_builtin_game_mode_completion() => "Disable Builtin Game Mode Completion" }
action! { > disable_builtin_game_mode_music() => "Disable Builtin Game Mode Music" }
action! { > disable_builtin_game_mode_respawning() => "Disable Builtin Game Mode Respawning" }
action! { > disable_builtin_game_mode_scoring() => "Disable Builtin Game Mode Scoring" }
action! { disable_death_spectate_all_player(player: Array<Player>) => "Disable Death Spectate All Players({})" }
action! { disable_death_spectate_target_hud(player: Array<Player>) => "Disable Death Spectate Target Hud({})" }
action! { disable_game_mode_hud(player: Array<Player>) => "Disable Game Mode Hud({})" }
action! { disable_game_mode_in_world_ui(player: Array<Player>) => "Disable Game Mode In World Ui({})" }
action! { disable_hero_hud(player: Array<Player>) => "Disable Hero Hud({})" }
action! { > disable_inspector_recording() => "Disable Inspector Recording" }
action! { disable_kill_feed(player: Array<Player>) => "Disable Kill Feed({})" }
action! { disable_messages(player: Array<Player>) => "Disable Messages({})" }
action! { disable_movement_collision_with_environment(player: Array<Player>, include_floors: Boolean) => "Disable Movement Collision With Environment({}, {})" }
action! { disable_movement_collision_with_player(player: Array<Player>) => "Disable Movement Collision With Players({})" }
action! { disable_nameplates(viewed_player: Array<Player>, viewing_player: Array<Player>) => "Disable Nameplates({}, {})" }
action! { disable_scoreboard(player: Array<Player>) => "Disable Scoreboard({})" }
action! { disable_text_chat(player: Array<Player>) => "Disable Text Chat({})" }
action! { disable_voice_chat(player: Array<Player>, team_voice_chat: Boolean, group_voice_chat: Boolean, match_voice_chat: Boolean) => "Disable Voice Chat({}, {}, {}, {})" }
action! { disallow_button(player: Array<Player>, button: Button) => "Disallow Button({}, {})" }
action! { > cf_else() => "Else" }
action! { > cf_else_if(condition: Boolean) => "Else If({})" }
action! { > enable_builtin_game_mode_announcer() => "Enable Builtin Game Mode Announcer" }
action! { > enable_builtin_game_mode_completion() => "Enable Builtin Game Mode Completion" }
action! { > enable_builtin_game_mode_music() => "Enable Builtin Game Mode Music" }
action! { > enable_builtin_game_mode_respawning() => "Enable Builtin Game Mode Respawning" }
action! { > enable_builtin_game_mode_scoring() => "Enable Builtin Game Mode Scoring" }
action! { enable_death_spectate_all_player(player: Array<Player>) => "Enable Death Spectate All Players({})" }
action! { enable_death_spectate_target_hud(player: Array<Player>) => "Enable Death Spectate Target Hud({})" }
action! { enable_game_mode_hud(player: Array<Player>) => "Enable Game Mode Hud({})" }
action! { enable_game_mode_in_world_ui(player: Array<Player>) => "Enable Game Mode In World Ui({})" }
action! { enable_hero_hud(player: Array<Player>) => "Enable Hero Hud({})" }
action! { > enable_inspector_recording() => "Enable Inspector Recording" }
action! { enable_kill_feed(player: Array<Player>) => "Enable Kill Feed({})" }
action! { enable_messages(player: Array<Player>) => "Enable Messages({})" }
action! { enable_movement_collision_with_environment(player: Array<Player>) => "Enable Movement Collision With Environment({})" }
action! { enable_movement_collision_with_player(player: Array<Player>) => "Enable Movement Collision With Players({})" }
action! { enable_nameplates(viewed_player: Array<Player>, viewing_player: Array<Player>) => "Enable Nameplates({}, {})" }
action! { enable_scoreboard(player: Array<Player>) => "Enable Scoreboard({})" }
action! { enable_text_chat(player: Array<Player>) => "Enable Text Chat({})" }
action! { enable_voice_chat(player: Array<Player>) => "Enable Voice Chat({})" }
action! { > cf_end() => "End" }
action! { > go_to_assamble_heroes() => "Go To Assamble Heroes" }
action! { heal(player: Array<Player>, healer: Player, amount: Number) => "Heal({}, {}, {})" }
action! { > cf_if(condition: Boolean) => "If({})" }
action! { kill(player: Array<Player>, killer: Player) => "Kill({}, {})" }
action! { log_to_inspetor(message: Text) => "Log To Inspetor({})" }
action! { > cf_loop() => "Loop" }
action! { > cf_loop_if(condition: Boolean) => "Loop If({})" }
action! { > cf_loop_if_condition_is_false() => "Loop If Condition Is False" }
action! { > cf_loop_if_condition_is_true() => "Loop If Condition Is True" }
action! { modify_score(player: Array<Player>, score: Number) => "Modify Player Score({}, {})" }
action! { modify_team_score(team: Team, score: Number) => "Modify Team Score({}, {})" }
action! { move_to_team(player: Player, team: Team, slot: Number) => "Move Player To Team({}, {}, {})" }
action! { > pause_match_time() => "Pause Match Time" }
action! { play_effect(visible_to: Array<Player>, effect_type: SplashEffect, color: Color, position: Vector, radius_or_loudness: Number) => "Play Effect({}, {}, {}, {}, {})" }
action! { preload_hero(player: Player, hero: Hero) => "Preload Hero({}, {})" }
action! { press_button(player: Array<Player>, button: Button) => "Press Button({}, {})" }
action! { remove_all_health_pools(player: Array<Player>) => "Remove All Health Pools From Player({})" }
action! { remove_health_pool(entity: Entity) => "Remove Health Pool From Player({})" }
action! { remove_from_lobby(player: Array<Player>) => "Remove Player({})" }
action! { reset_hero_availability(player: Array<Player>) => "Reset Player Hero Availability({})" }
action! { respawn(player: Array<Player>) => "Respawn({})" }
action! { > restart_match() => "Restart Match" }
action! { resurrect(player: Array<Player>) => "Resurrect({})" }
action! { > return_to_lobby() => "Return To Lobby" }
action! { set_ability_1_enabled(player: Array<Player>, enabled: Boolean) => "Set Ability 1 Enabled({}, {})" }
action! { set_ability_2_enabled(player: Array<Player>, enabled: Boolean) => "Set Ability 2 Enabled({}, {})" }
action! { set_ability_charge(player: Array<Player>, button: Button, charge_count: Number) => "Set Ability Charge({}, {}, {})" }
action! { set_ability_cooldown(player: Array<Player>, button: Button, cooldown: Number) => "Set Ability Cooldown({}, {}, {})" }
action! { set_ability_resource(player: Array<Player>, button: Button, resource: Number) => "Set Ability Resource({}, {}, {})" }
action! { set_aim_speed(player: Array<Player>, turn_speed_percent: Number) => "Set Aim Speed({}, {})" }
action! { set_ammo(player: Array<Player>, clip: Number, ammo: Number) => "Set Ammo({}, {}, {})" }
action! { set_crouch_enabled(player: Array<Player>, enabled: Boolean) => "Set Crouch Enabled({}, {})" }
action! { set_damage_dealt(player: Array<Player>, damage_dealt_percent: Number) => "Set Damage Dealt({}, {})" }
action! { set_damage_received(player: Array<Player>, damage_received_percent: Number) => "Set Damage Received({}, {})" }
action! { set_environment_credit(player: Array<Player>, environment_credit_player: Player) => "Set Environment Credit Player({}, {})" }
action! { set_facing(player: Array<Player>, direction: Vector, relative: RelativeSystem) => "Set Facing({}, {}, {})" }
action! { set_gravity(player: Array<Player>, gravity_percent: Number) => "Set Gravity({}, {})" }
action! { set_healing_dealt(player: Array<Player>, healing_dealt_percent: Number) => "Set Healing Dealt({}, {})" }
action! { set_healing_received(player: Array<Player>, healing_received_percent: Number) => "Set Healing Received({}, {})" }
action! { set_invisible(player: Array<Player>, invisible_to: Invisibility) => "Set Invisible({}, {})" }
action! { set_jump_enabled(player: Array<Player>, enabled: Boolean) => "Set Jump Enabled({}, {})" }
action! { set_jump_vertical_speed(player: Array<Player>, speed_percent: Number) => "Set Jump Vertical Speed({}, {})" }
action! { set_knockback_dealt(player: Array<Player>, knockback_dealt_percent: Number) => "Set Knockback Dealt({}, {})" }
action! { set_knockback_received(player: Array<Player>, knockback_received_percent: Number) => "Set Knockback Received({}, {})" }
action! { > set_match_time(time: Number) => "Set Match Time({})" }
action! { set_max_ammo(player: Array<Player>, clip: Number, max_ammo: Number) => "Set Max Ammo({}, {}, {})" }
action! { set_max_health(player: Array<Player>, max_health_percent: Number) => "Set Max Health({}, {})" }
action! { set_melee_enabled(player: Array<Player>, enabled: Boolean) => "Set Melee Enabled({}, {})" }
action! { set_move_speed(player: Array<Player>, move_speed_percent: Number) => "Set Move Speed({}, {})" }
action! { set_objective_description(visible_to: Array<Player>, header: Text, reevaluation: Reeval_2) => "Set Objective Description({}, {}, {})" }
action! { set_allowed_heroes(player: Array<Player>, heroes: Array<Hero>) => "Set Player Allowed Heroes({}, {})" }
action! { set_health(player: Array<Player>, health: Number) => "Set Player Health({}, {})" }
action! { set_score(player: Array<Player>, score: Number) => "Set Player Score({}, {})" }
action! { set_primary_fire_enabled(player: Array<Player>, enabled: Boolean) => "Set Primary Fire Enabled({}, {})" }
action! { set_projectile_gravity(player: Array<Player>, projectile_gravity_percent: Number) => "Set Projectile Gravity({}, {})" }
action! { set_projectile_speed(player: Array<Player>, projectile_speed_percent: Number) => "Set Projectile Speed({}, {})" }
action! { set_reload_enabled(player: Array<Player>, enabled: Boolean) => "Set Reload Enabled({}, {})" }
action! { set_respawn_max_time(player: Array<Player>, time: Number) => "Set Respawn Max Time({}, {})" }
action! { set_secondary_fire_enabled(player: Array<Player>, enabled: Boolean) => "Set Secondary Fire Enabled({}, {})" }
action! { > set_slow_motion(speed_percent: Number) => "Set Slow Motion({})" }
action! { set_status(player: Array<Player>, assister: Player, status: Status, duration: Number) => "Set Status({}, {}, {}, {})" }
action! { set_team_score(team: Team, score: Number) => "Set Team Score({}, {})" }
action! { set_ultimate_ability_enabled(player: Array<Player>, enabled: Boolean) => "Set Ultimate Ability Enabled({}, {})" }
action! { set_ultimate_charge(player: Array<Player>, ultimate_charge_percent: Number) => "Set Ultimate Charge({}, {})" }
action! { set_weapon(player: Array<Player>, weapon: Number) => "Set Weapon({}, {})" }
action! { > cf_skip(number_of_actions: Number) => "Skip({})" }
action! { > cf_skip_if(condition: Boolean, number_of_actions: Number) => "Skip If({}, {})" }
action! { small_message(visible_to: Array<Player>, header: Text) => "Small Message({}, {})" }
action! { start_accelerating(player: Array<Player>, direction: Vector, rate: Number, max_speed: Number, relative: RelativeSystem, reevaluation: Reeval_8) => "Start Accelerating({}, {}, {}, {}, {}, {})" }
action! { start_assist(assisters: Array<Player>, targets: Array<Player>, reevaluation: Reeval_9) => "Start Assist({}, {}, {})" }
action! { start_camera(player: Array<Player>, eye_position: Vector, look_at_position: Vector, blend_speed: Number) => "Start Camera({}, {}, {}, {})" }
action! { start_damage_modification(receivers: Array<Player>, damagers: Array<Player>, damage_percent: Number, reevaluation: Reeval_10) => "Start Damage Modification({}, {}, {}, {})" }
action! { start_damage_over_time(player: Array<Player>, damager: Player, duration: Number, damage_per_second: Number) => "Start Damage Over Time({}, {}, {}, {})" }
action! { start_facing(player: Array<Player>, direction: Vector, turn_rate: Number, relative: RelativeSystem, reevaluation: Reeval_11) => "Start Facing({}, {}, {}, {}, {})" }
action! { start_forcing_dummy_bot_name(player: Array<Player>, name: Text) => "Start Forcing Dummy Bot Name({}, {})" }
action! { start_forcing_outlines(viewed_player: Array<Player>, viewing_player: Array<Player>, visible: Boolean, color: Color, outline_type: OutlineType) => "Start Forcing Player Outlines({}, {}, {}, {}, {})" }
action! { start_forcing_position(player: Array<Player>, position: Vector, reevaluation: Boolean) => "Start Forcing Player Position({}, {}, {})" }
action! { start_forcing_hero(player: Array<Player>, hero: Hero) => "Start Forcing Player To Be Hero({}, {})" }
action! { start_forcing_spawn_room(team: Team, room: Number) => "Start Forcing Spawn Room({}, {})" }
action! { start_forcing_throttle(player: Array<Player>, min_forward: Number, max_forward: Number, min_backward: Number, max_backward: Number, min_sideways: Number, max_sideways: Number) => "Start Forcing Throttle({}, {}, {}, {}, {}, {}, {})" }
action! { > start_game_mode() => "Start Game Mode" }
action! { start_heal_over_time(player: Array<Player>, healer: Player, duration: Number, healing_per_second: Number) => "Start Heal Over Time({}, {}, {}, {})" }
action! { start_healing_modification(receivers: Array<Player>, healers: Array<Player>, healing_percent: Number, reevaluation: Reeval_12) => "Start Healing Modification({}, {}, {}, {})" }
action! { start_holding_button(player: Array<Player>, button: Button) => "Start Holding Button({}, {})" }
action! { start_modifying_hero_voice_lines(player: Array<Player>, pitch_scalar: Number, reevaluation: Boolean) => "Start Modifying Hero Voice Lines({}, {}, {})" }
action! { start_rule(subroutine: Subroutine, behavior: SubroutineBehavior) => "Start Rule({}, {})" }
action! { start_scaling_barriers(player: Array<Player>, scale: Number, reevaluate: Boolean) => "Start Scaling Barriers({}, {}, {})" }
action! { start_scaling_player(player: Array<Player>, scale: Number, reevaluate: Boolean) => "Start Scaling Player({}, {}, {})" }
action! { start_throttle_in_direction(
players: Array<Player>,
direction: Vector,
magnitude: Number,
relative: RelativeSystem,
behavior: ThrottleBehavior,
reevaluation: Reeval_13
) => "Start Throttle In Direction({}, {}, {}, {}, {}, {})" }
action! { start_transforming_throttle(player: Array<Player>, x_axis_scalar: Number, y_axis_scalar: Number, relative_direction: Vector) => "Start Transforming Throttle({}, {}, {}, {})" }
action! { stop_accelerating(player: Array<Player>) => "Stop Accelerating({})" }
action! { > stop_all_assists() => "Stop All Assists" }
action! { > stop_all_damage_modifications() => "Stop All Damage Modifications" }
action! { > stop_all_damage_over_time() => "Stop All Damage Over Time" }
action! { > stop_all_heal_over_time() => "Stop All Heal Over Time" }
action! { > stop_all_healing_modifications() => "Stop All Healing Modifications" }
action! { stop_assist(entity: Entity) => "Stop Assist({})" }
action! { stop_camera(player: Array<Player>) => "Stop Camera({})" }
action! { stop_damage_modification(entity: Entity) => "Stop Damage Modification({})" }
action! { stop_damage_over_time(entity: Entity) => "Stop Damage Over Time({})" }
action! { stop_facing(player: Array<Player>) => "Stop Facing({})" }
action! { stop_forcing_dummy_bot_name(player: Array<Player>) => "Stop Forcing Dummy Bot Name({})" }
action! { stop_forcing_outlines(viewed_player: Array<Player>, viewing_player: Array<Player>) => "Stop Forcing Player Outlines({}, {})" }
action! { stop_forcing_position(player: Array<Player>) => "Stop Forcing Player Position({})" }
action! { stop_forcing_hero(player: Array<Player>) => "Stop Forcing Player To Be Hero({})" }
action! { stop_forcing_spawn_room(team: Team) => "Stop Forcing Spawn Room({})" }
action! { stop_forcing_throttle(player: Array<Player>) => "Stop Forcing Throttle({})" }
action! { stop_heal_over_time(entity: Entity) => "Stop Heal Over Time({})" }
action! { stop_healing_modification(entity: Entity) => "Stop Healing Modification({})" }
action! { stop_holding_button(player: Array<Player>) => "Stop Holding Button({})" }
action! { stop_modifying_hero_voice_lines(player: Array<Player>) => "Stop Modifying Hero Voice Lines({})" }
action! { stop_scaling_barriers(player: Array<Player>) => "Stop Scaling Barriers({})" }
action! { stop_scaling_player(player: Array<Player>) => "Stop Scaling Player({})" }
action! { stop_throttle_in_direction(player: Array<Player>) => "Stop Throttle In Direction({})" }
action! { stop_transforming_throttle(player: Array<Player>) => "Stop Transforming Throttle({})" }
action! { teleport(player: Array<Player>, position: Vector) => "Teleport({}, {})" }
action! { > unpause_match_time() => "Unpause Match Time" }
action! { > cf_wait(duration: Number, wait_behavior: WaitBehavior) => "Wait({}, {})" }
action! { > cf_wait_until(contine_condition: Boolean, timeout: Number) => "Wait Until({}, {})" }
action! { > cf_while(condition: Boolean) => "While({})" }