Return to post
settings
{
main
{
Description: "Hero Swap v1.0 by Caaethil#2559 - Concept by /u/Thermogenic - Code: 1DNMN6 - You control the hero of a player on the enemy team, and they control yours! You can change your linked enemy's hero once per death while in your spawn room via the regular hero select screen."
Description: "Hero Swap v1.1 by Caaethil#2559 - Concept by /u/Thermogenic - Code: 1DNMN6 - You control the hero of a player on the enemy team, and they control yours! You can change your linked enemy's hero once per death while in your spawn room via the regular hero select screen."
}
modes
{
Assault
{
enabled maps
{
}
}
Control
{
enabled maps
{
Busan
}
}
Escort
{
enabled maps
{
}
}
Hybrid
{
enabled maps
{
}
}
General
{
Hero Limit: Off
}
}
}
variables
{
player:
0: linked_player
1: forced_hero
2: selected_hero
3: can_select
4: ultimate_charge
5: update_ultimate_charge
}
rule("Initialise Player (On Join)")
{
event
{
Player Joined Match;
All;
All;
}
actions
{
Event Player.linked_player = Players In Slot(Slot Of(Event Player), Opposite Team Of(Team Of(Event Player)));
Event Player.linked_player.linked_player = Event Player;
Event Player.can_select = True;
Event Player.update_ultimate_charge = True;
Create HUD Text(Event Player.linked_player == 0 ? Event Player : Null, Null, Null, Custom String(
"You do not yet have a linked enemy."), Right, 0, Color(White), Color(White), Color(White), Visible To and String,
Default Visibility);
Create HUD Text(Event Player.linked_player == 0 ? Event Player : Null, Null, Null, Custom String(
"You will be linked when the enemy team has enough players!"), Right, 1, Color(White), Color(White), Color(White),
Visible To and String, Default Visibility);
Create HUD Text(Event Player.linked_player != 0 && !Is Game In Progress ? Event Player : Null, Null, Custom String(
"Your Linked Enemy:"), Event Player.linked_player, Right, 0, Color(White), Color(White), Color(White), Visible To and String,
Default Visibility);
Create HUD Text(Event Player.linked_player != 0 && Is Game In Progress ? Event Player : Null, Hero Icon String(Hero Of(
Event Player.linked_player)), Custom String("Your Linked Enemy:"), Event Player.linked_player, Right, 0, Color(White), Color(
White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(!Is Game In Progress ? Event Player : Null, Null, Null, Custom String(
"When the round begins, you and your linked enemy will swap heroes."), Left, 0, Color(White), Color(White), Color(Yellow),
Visible To and String, Default Visibility);
Create HUD Text(!Is Game In Progress ? Event Player : Null, Null, Null, Custom String(
"You can change their hero again when you die..."), Left, 1, Color(White), Color(White), Color(Yellow), Visible To and String,
Default Visibility);
Create HUD Text(!Is Game In Progress ? Event Player : Null, Null, Null, Custom String(
"...And they can change yours again when they die!"), Left, 2, Color(White), Color(White), Color(Yellow),
Visible To and String, Default Visibility);
Create HUD Text(Is Game In Progress && Event Player.can_select && Is In Spawn Room(Event Player) ? Event Player : Null, Null, Null,
Custom String("Select a new hero to change your linked enemy's hero."), Left, 0, Color(White), Color(White), Color(Green),
Visible To and String, Default Visibility);
Create HUD Text(Is Game In Progress && Event Player.can_select && Is In Spawn Room(Event Player) && Hero Of(
Event Player.linked_player) != Hero Of(Event Player) ? Event Player : Null, Null, Null, Custom String(
"Hold {0} and {1} at the same time to select your current hero as your linked enemy's hero.", Input Binding String(Button(
Crouch)), Input Binding String(Button(Interact))), Left, 1, Color(White), Color(White), Color(Green), Visible To and String,
Default Visibility);
Create HUD Text(Is Game In Progress && !Event Player.can_select && Is In Spawn Room(Event Player) ? Event Player : Null, Null,
Null, Custom String("You cannot change your linked enemy's hero again until your next death."), Left, 0, Color(White), Color(
White), Color(Red), Visible To and String, Default Visibility);
}
}
rule("Re-Initialise Player (On New Round)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == False;
Is Between Rounds == True;
}
actions
{
Event Player.forced_hero = Null;
Start Forcing Player To Be Hero(Event Player, Event Player.selected_hero);
Stop Forcing Player To Be Hero(Event Player);
}
}
rule("Initialise Player (On Join When Game Started)")
{
event
{
Player Joined Match;
All;
All;
}
conditions
{
Is Game In Progress == True;
Event Player.linked_player != 0;
}
actions
{
Event Player.selected_hero = Hero Of(Event Player);
Start Forcing Player To Be Hero(Event Player, Event Player.linked_player.selected_hero);
Event Player.forced_hero = Hero Of(Event Player.linked_player);
Stop Forcing Player To Be Hero(Event Player);
Start Forcing Player To Be Hero(Event Player.linked_player, Event Player.selected_hero);
Event Player.linked_player.forced_hero = Event Player.selected_hero;
If(Event Player.linked_player.can_select == True);
Stop Forcing Player To Be Hero(Event Player.linked_player);
}
}
rule("Re-Initialise Players (On Player Leave)")
{
event
{
Player Left Match;
All;
All;
}
actions
{
Players In Slot(0, Team 1).linked_player = Players In Slot(0, Team 2);
Players In Slot(0, Team 2).linked_player = Players In Slot(0, Team 1);
Players In Slot(1, Team 1).linked_player = Players In Slot(1, Team 2);
Players In Slot(1, Team 2).linked_player = Players In Slot(1, Team 1);
Players In Slot(2, Team 1).linked_player = Players In Slot(2, Team 2);
Players In Slot(2, Team 2).linked_player = Players In Slot(2, Team 1);
Players In Slot(3, Team 1).linked_player = Players In Slot(3, Team 2);
Players In Slot(3, Team 2).linked_player = Players In Slot(3, Team 1);
Players In Slot(4, Team 1).linked_player = Players In Slot(4, Team 2);
Players In Slot(4, Team 2).linked_player = Players In Slot(4, Team 1);
Players In Slot(5, Team 1).linked_player = Players In Slot(5, Team 2);
Players In Slot(5, Team 2).linked_player = Players In Slot(5, Team 1);
}
}
rule("Fix Heroes (On Player Leave)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Event Player.forced_hero != Event Player.linked_player.selected_hero;
}
actions
{
Event Player.update_ultimate_charge = False;
Start Forcing Player To Be Hero(Event Player, Event Player.linked_player.selected_hero);
If(Event Player.can_select == True);
Stop Forcing Player To Be Hero(Event Player);
End;
Event Player.forced_hero = Event Player.linked_player.selected_hero;
Wait(0.016, Ignore Condition);
Set Ultimate Charge(Event Player, Event Player.ultimate_charge);
Event Player.update_ultimate_charge = True;
}
}
rule("Set Selected Hero (Before Match Start)")
rule("Set Selected Hero (Before Round Start)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == False;
Hero Of(Event Player) != Event Player.selected_hero;
}
actions
{
Event Player.selected_hero = Hero Of(Event Player);
}
}
rule("Initial Swap (On Match Start)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
}
actions
{
Start Forcing Player To Be Hero(Event Player, Event Player.forced_hero);
Event Player.can_select = False;
}
}
rule("Select Enemy Hero")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Hero Of(Event Player) != Event Player.forced_hero;
}
actions
{
Event Player.linked_player.update_ultimate_charge = False;
Event Player.update_ultimate_charge = False;
Event Player.selected_hero = Hero Of(Event Player);
Event Player.linked_player.forced_hero = Hero Of(Event Player);
Start Forcing Player To Be Hero(Event Player.linked_player, Event Player.linked_player.forced_hero);
Wait(0.016, Ignore Condition);
Set Ultimate Charge(Event Player.linked_player, Event Player.linked_player.ultimate_charge);
If(Event Player.linked_player.can_select == True);
Stop Forcing Player To Be Hero(Event Player.linked_player);
End;
Start Forcing Player To Be Hero(Event Player, Event Player.forced_hero);
Wait(0.016, Ignore Condition);
Set Ultimate Charge(Event Player, Event Player.ultimate_charge);
Event Player.can_select = False;
Event Player.linked_player.update_ultimate_charge = True;
Event Player.update_ultimate_charge = True;
}
}
rule("Allow Choice on Death")
{
event
{
Player Died;
All;
All;
}
actions
{
Event Player.can_select = True;
Stop Forcing Player To Be Hero(Event Player);
}
}
rule("Update Ultimate Charge Variable")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.update_ultimate_charge == True;
Ultimate Charge Percent(Event Player) != Event Player.ultimate_charge;
}
actions
{
Event Player.ultimate_charge = Ultimate Charge Percent(Event Player);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Select Forced Hero As Enemy Hero")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Event Player.can_select == True;
Is In Spawn Room(Event Player) == True;
Hero Of(Event Player.linked_player) != Hero Of(Event Player);
Is Button Held(Event Player, Button(Crouch)) == True;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Event Player.linked_player.update_ultimate_charge = False;
Event Player.selected_hero = Hero Of(Event Player);
Event Player.linked_player.forced_hero = Hero Of(Event Player);
Start Forcing Player To Be Hero(Event Player.linked_player, Event Player.linked_player.forced_hero);
Wait(0.016, Ignore Condition);
Set Ultimate Charge(Event Player.linked_player, Event Player.linked_player.ultimate_charge);
If(Event Player.linked_player.can_select == True);
Stop Forcing Player To Be Hero(Event Player.linked_player);
End;
Event Player.can_select = False;
Event Player.linked_player.update_ultimate_charge = True;
}
}