Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Work with your friends, build a Mei wall tower to reach the checkpoint. Wall cooldown is depend on player count. Made by VoN#12146, Code: PS2NR."
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max Spectators: 6
  • Max Team 1 Players: 12
  • Max Team 2 Players: 0
  • Swap Teams After Match: No
  • }
  • modes
  • {
  • Team Deathmatch
  • {
  • Self Initiated Respawn: Off
  • enabled maps
  • {
  • Lijiang Garden Lunar New Year
  • }
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Kill Cam: Off
  • Kill Feed: Off
  • Respawn As Random Hero: On
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Genji
  • {
  • Swift Strike Cooldown Time: 0%
  • }
  • Mei
  • {
  • Cryo-Freeze Cooldown Time: 10%
  • }
  • enabled heroes
  • {
  • Mei
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: Checkpoints
  • 1: MeiCD
  • 2: CurrentCP
  • 4: CurrentTry
  • 5: FarthestTry
  • 6: IsCountingDown
  • 7: DummyCreated
  • 9: ActiveAreas
  • 10: PlayerCount
  • 11: DebugCDToggle
  • 12: DebugCDProvided
  • 13: DebugNoclipEnable
  • 14: DebugShowInfo
  • 15: DebugAddDummy
  • 16: OptionPlayerCollision
  • 114: cfg_CamDistance
  • 115: cfg_CamRaycastsEyePos
  • 116: cfg_CamHasCrosshairCorrection
  • 117: cfg_CamOverridesGame
  • 118: cfg_CamOverridesEmotes
  • 119: cfg_CamOffset
  • 120: cfg_CamAimDistance
  • 121: cfg_CamBlendSpeed
  • 122: cfg_ScopesDisableCam
  • 123: cfg_StartWithCamActive
  • player:
  • 0: PlayerID
  • 1: AlreadySet
  • 106: IsNoclipping
  • 107: plyr_CamDistance
  • 108: plyr_CamRaycastsEyePos
  • 109: plyr_CamHasCrosshairCorrection
  • 110: plyr_CamOverridesGame
  • 111: plyr_CamOverridesEmotes
  • 112: plyr_CamOffset
  • 113: plyr_CamAimDistance
  • 114: plyr_CamActive
  • 115: plyr_CamBlendSpeed
  • 116: plyr_ScopesDisableCam
  • }
  • subroutines
  • {
  • 0: teleportAll
  • 114: RefreshCam
  • }
  • rule("Global Init")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is In Setup == True;
  • }
  • actions
  • {
  • Wait(5, Ignore Condition);
  • Communicate(All Players(Team 1), Countdown);
  • Global.CurrentCP = 1;
  • Global.DebugCDToggle = Workshop Setting Toggle(Custom String("Debug"), Custom String("Use Provided Cooldown Time"), False, 0);
  • Global.DebugCDProvided = Workshop Setting Integer(Custom String("Debug"), Custom String("Cooldown"), 1, 0, 15, 1);
  • Global.DebugNoclipEnable = Workshop Setting Toggle(Custom String("Debug"), Custom String("Noclip "), False, 2);
  • Global.DebugShowInfo = Workshop Setting Toggle(Custom String("Debug"), Custom String("Show debug info"), False, 3);
  • Global.DebugAddDummy = Workshop Setting Toggle(Custom String("Debug"), Custom String("Add dummy"), False, 4);
  • Global.OptionPlayerCollision = Workshop Setting Toggle(Custom String("Options"), Custom String("Player Collision"), False, 0);
  • }
  • }
  • rule("Game In Progress")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Pause Match Time;
  • disabled Set Match Time(0);
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Scoring;
  • Disable Built-In Game Mode Music;
  • }
  • }
  • rule("Init Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Alive(Event Player) == True;
  • Has Spawned(Event Player) == True;
  • Event Player.AlreadySet == False;
  • }
  • actions
  • {
  • Global.PlayerCount += 1;
  • Event Player.PlayerID = Global.PlayerCount;
  • Event Player.PlayerID = Slot Of(Event Player);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Disable Game Mode HUD(Event Player);
  • Create HUD Text(Event Player, Custom String("You are player {0}.", Event Player.PlayerID), Null, Null, Left, 0, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Custom String("Current checkpoint: {0}", Global.CurrentCP), Null, Null, Top, 0, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Current try: {0}", Global.CurrentTry), Null, Top, 1, Color(White), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Farthest try: {0}", Global.FarthestTry), Null, Top, 2, Color(White), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String(" \r\nCreated by VoN#12146\r\nCode: PS2NR", Global.FarthestTry), Null, Right, 0,
  • Color(White), Color(Orange), Color(White), None, Default Visibility);
  • "Reevaluation must be on for this to work."
  • Create HUD Text(Event Player, Null, Custom String("Press {0} + {1} to skip a level", Input Binding String(Button(Melee)),
  • Input Binding String(Button(Jump))), Null, Right, 1, Color(White), Color(Aqua), Color(White), String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Press {0} + {1} to go back a level", Input Binding String(Button(Melee)),
  • Input Binding String(Button(Interact))), Null, Right, 1, Color(White), Color(Aqua), Color(White), String, Default Visibility);
  • Input Binding String(Button(Interact))), Null, Right, 2, Color(White), Color(Aqua), Color(White), String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("Only player0 could skip level", Input Binding String(Button(Melee)),
  • Input Binding String(Button(Jump))), Null, Right, 3, Color(White), Color(Aqua), Color(White), None, Default Visibility);
  • Set Respawn Max Time(Event Player, 0);
  • "after system countdown"
  • Wait(3, Ignore Condition);
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.Checkpoints[Global.CurrentCP]), To World);
  • If(Global.OptionPlayerCollision != True);
  • Disable Movement Collision With Players(Event Player);
  • End;
  • Event Player.AlreadySet = True;
  • }
  • }
  • rule("Player Comes Alive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "This **** activate everytime when player respawn"
  • Is Alive(Event Player) == True;
  • "This **** only activate once(goes from false to true once), which is at the start of the match"
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.PlayerID = Slot Of(Event Player);
  • Call Subroutine(teleportAll);
  • }
  • }
  • rule("Set Checkpoints - Workshop Island")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Current Map == Map(Workshop Island);
  • }
  • actions
  • {
  • "Ez"
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-1.673, 10.694, -1.153));
  • "Mid Air"
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-0.920, 24.600, 3.054));
  • "Mid Air 2"
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-39.381, 25.126, 41.155));
  • "Outside downward"
  • Modify Global Variable(Checkpoints, Append To Array, Vector(3.826, -7.864, 46.940));
  • "Sky"
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-123.695, 135.815, 123.695));
  • }
  • }
  • rule("Set ActiveAreas - Workshop Island")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Current Map == Map(Workshop Island);
  • }
  • actions
  • {
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(9.641, 0, 0.483));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-0.507, 0, 4.042));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(11.966, 0, 18.228));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(12.100, 0, 20.006));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-18.973, 0, 19.004));
  • }
  • }
  • rule("Set Checkpoints - Lijiang Garden Lunar")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Current Map == Map(Lijiang Garden Lunar New Year);
  • }
  • actions
  • {
  • Modify Global Variable(Checkpoints, Append To Array, Vector(61.630, 100.200, 148.130));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(50.681, 105.445, 136.884));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(53, 98, 162));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(23.228, 85.729, 107.978));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-0.353, 111.884, 114.996));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-1.134, 146.168, 162.137));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(33.926, 128.435, 227.073));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(34.089, 114.998, 212.153));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-0.616, 238.343, 185.260));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(-0.831, 274.500, 258.208));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(0.747, 375.273, 201.119));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(0.269, 599.886, 245.516));
  • Modify Global Variable(Checkpoints, Append To Array, Vector(0.934, 974.115, 276.352));
  • }
  • }
  • rule("Set ActiveAreas - Lijiang Garden Lunar")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Current Map == Map(Lijiang Garden Lunar New Year);
  • }
  • actions
  • {
  • "Part 1 "
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(85, 96, 148));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(85, 96, 148));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(85, 96, 148));
  • "Part 2"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(42.641, 94.900, 138.996));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(42.641, 94.900, 138.996));
  • "Tower Side Start"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-15.775, 97.900, 184.302));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(8.533, 94.150, 155.540));
  • "Lower Sky Box Start"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(0, 154.390, 176.780));
  • "Tower Start"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-1.370, 245.335, 207.651));
  • "Tower Start (Outside)"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-0.583, 243.811, 200.866));
  • "Upper Tower Start"
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-0.583, 323, 200.866));
  • Modify Global Variable(ActiveAreas, Append To Array, Vector(-0.583, 323, 200.866));
  • }
  • }
  • rule("Set Mei CD")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Mei;
  • }
  • conditions
  • {
  • Ability Cooldown(Event Player, Button(Ability 2)) > 0;
  • }
  • actions
  • {
  • If(Global.DebugCDToggle == True);
  • Global.MeiCD = Global.DebugCDProvided;
  • Else;
  • Global.MeiCD = 0 + 3 * (Count Of(All Players(Team 1)) - 1);
  • End;
  • Set Ability Cooldown(Event Player, Button(Ability 2), Global.MeiCD);
  • Global.CurrentTry += 1;
  • Skip If(Global.CurrentTry <= Global.FarthestTry, 1);
  • Global.FarthestTry = Global.CurrentTry;
  • Global.IsCountingDown = False;
  • }
  • }
  • rule("Effects")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • disabled Is Game In Progress == True;
  • (Global.CurrentCP < Count Of(Global.Checkpoints)) == True;
  • }
  • actions
  • {
  • Create Effect(Event Player, Sphere, Color(Sky Blue), Global.Checkpoints[Global.CurrentCP], 1.500, Position and Radius);
  • Create Effect(Event Player, Ring, Color(Green), Global.ActiveAreas[Global.CurrentCP], 4, Position and Radius);
  • Create Icon(Event Player, Global.Checkpoints[Global.CurrentCP], Flag, Position, Color(Sky Blue), True);
  • }
  • }
  • rule("Collision")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Global.Checkpoints[Global.CurrentCP]) < 2;
  • Global.CurrentCP < Count Of(Global.Checkpoints);
  • }
  • actions
  • {
  • If(Global.CurrentCP == Count Of(Global.Checkpoints) - 1);
  • Big Message(All Players(Team 1), Custom String("Happy New Year!"));
  • Big Message(All Players(Team 1), Custom String("You and Your Friends are Insane!!!"));
  • Play Effect(All Players(Team 1), Buff Explosion Sound, Color(White), Event Player, 50);
  • Global.DebugNoclipEnable = True;
  • Else;
  • Big Message(All Players(Team 1), Custom String("Checkpoint {0}/{1}", Global.CurrentCP, Count Of(Global.Checkpoints) - 1));
  • Wait(0.016, Ignore Condition);
  • Global.CurrentTry = 0;
  • Global.FarthestTry = 0;
  • End;
  • Play Effect(All Players(Team 1), Buff Explosion Sound, Color(White), Event Player, 50);
  • Global.CurrentCP += 1;
  • Call Subroutine(teleportAll);
  • }
  • }
  • rule("Teleport back when left zone")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Global.ActiveAreas[Global.CurrentCP]) > 4;
  • (Absolute Value(Y Component Of(Position Of(Event Player)) - Y Component Of(Global.ActiveAreas[Global.CurrentCP])) < 0.010) == True;
  • Is On Ground(Event Player) == True;
  • Global.CurrentCP < Count Of(Global.Checkpoints);
  • }
  • actions
  • {
  • Teleport(Event Player, Global.ActiveAreas[Global.CurrentCP]);
  • Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 30);
  • }
  • }
  • rule("[subroutine] Teleport all")
  • {
  • event
  • {
  • Subroutine;
  • teleportAll;
  • }
  • actions
  • {
  • If(Global.CurrentCP == Count Of(Global.Checkpoints));
  • Teleport(All Players(Team 1), Global.Checkpoints[Global.CurrentCP - 1]);
  • Else;
  • Teleport(All Players(Team 1), Global.ActiveAreas[Global.CurrentCP]);
  • "Too fast that player has not yet become alive so cannot force facing"
  • Wait(0.250, Ignore Condition);
  • Set Facing(All Players(Team 1), Direction Towards(Eye Position(Event Player), Global.Checkpoints[Global.CurrentCP]), To World);
  • End;
  • Play Effect(All Players(Team 1), Ring Explosion Sound, Color(White), Event Player, 30);
  • }
  • }
  • rule("Button reset Try Count")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Global.CurrentTry = 0;
  • }
  • }
  • rule("Falls reset Try Count")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Absolute Value(Y Component Of(Position Of(Event Player)) - Y Component Of(Global.ActiveAreas[Global.CurrentCP])) < 0.010) == True;
  • Is On Ground(Event Player) == True;
  • }
  • actions
  • {
  • Global.CurrentTry = 0;
  • }
  • }
  • rule("Skip CP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Button Held(Event Player, Button(Melee)) && Is Button Held(Event Player, Button(Jump))) == True;
  • Global.CurrentCP < Count Of(Global.Checkpoints) - 1;
  • Slot Of(Event Player) == 0;
  • }
  • actions
  • {
  • Global.CurrentCP += 1;
  • Global.CurrentTry = 0;
  • Global.FarthestTry = 0;
  • Call Subroutine(teleportAll);
  • }
  • }
  • rule("Skip Back CP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Is Button Held(Event Player, Button(Melee)) && Is Button Held(Event Player, Button(Interact))) == True;
  • Global.CurrentCP > 1;
  • Slot Of(Event Player) == 0;
  • }
  • actions
  • {
  • Global.CurrentCP -= 1;
  • Global.CurrentTry = 0;
  • Global.FarthestTry = 0;
  • Call Subroutine(teleportAll);
  • }
  • }
  • rule("Fancy effect every 5 tries")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Global.CurrentTry % 4 == 1) == True;
  • }
  • actions
  • {
  • disabled Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player, 5);
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Event Player, 30);
  • }
  • }
  • rule("Player Dead")
  • {
  • event
  • {
  • Player Died;
  • Team 1;
  • All;
  • }
  • actions
  • {
  • Global.CurrentTry = 0;
  • Respawn(All Players(Team 1));
  • }
  • }
  • rule("Destory Effects")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.CurrentCP == Count Of(Global.Checkpoints);
  • }
  • actions
  • {
  • Destroy All Effects;
  • }
  • }
  • rule("3rdCam - Configuration")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • "Controls how far behind the player's head camera will be."
  • Global.cfg_CamDistance = 5;
  • "Determines whether the camera will check for surfaces behind the player. Setting this to False can reduce server load, but may result in the camera clipping into terrain."
  • Global.cfg_CamRaycastsEyePos = True;
  • "Controls the offset of the camera from the player's facing direction. X affects the left/right offset, Y controls the up/down offset, and Z controls the forward/back offset. Any X or Y offset can result in misalignment of the player crosshair."
  • Global.cfg_CamOffset = Vector(-0.500, 0, 0);
  • "Determines whether or not the camera will attempt to place the crosshair directly over what the hero is aiming at. Setting this to True will increase server load. Aim may also feel somewhat jittery, especially when cfg_CamOffset is large."
  • Global.cfg_CamHasCrosshairCorrection = False;
  • "Determines the distance at which the crosshair will be exactly accurate to the hero's target. If set to 0, the crosshair aiming line will be parallel to the hero aiming line. (If cfg_CamCrosshairCorrection is enabled, this setting is ignored.)"
  • Global.cfg_CamAimDistance = 0;
  • "Controls the blend speed of the camera."
  • Global.cfg_CamBlendSpeed = 75;
  • "Determines whether the camera will override the game's native third person cameras, such as Reinhardt's shield or Hammond's ball form."
  • Global.cfg_CamOverridesGame = True;
  • "Determines whether or not the camera will override the third person emoting camera."
  • Global.cfg_CamOverridesEmotes = True;
  • "Determines whether scopes such as Ana's, Widow's, or Ashe's disable the camera."
  • Global.cfg_ScopesDisableCam = True;
  • Global.cfg_StartWithCamActive = True;
  • }
  • }
  • rule("3rdCam - Start cams")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.cfg_StartWithCamActive == True;
  • }
  • actions
  • {
  • "Resets a particular player's camera settings back to the defaults listed in Configuration. Make sure not to call this subroutine from a Global rule."
  • Event Player.plyr_CamDistance = Global.cfg_CamDistance;
  • Event Player.plyr_CamRaycastsEyePos = Global.cfg_CamRaycastsEyePos;
  • Event Player.plyr_CamOffset = Global.cfg_CamOffset;
  • Event Player.plyr_CamHasCrosshairCorrection = Global.cfg_CamHasCrosshairCorrection;
  • Event Player.plyr_CamAimDistance = Global.cfg_CamAimDistance;
  • Event Player.plyr_CamBlendSpeed = Global.cfg_CamBlendSpeed;
  • Event Player.plyr_CamOverridesGame = Global.cfg_CamOverridesGame;
  • Event Player.plyr_CamOverridesEmotes = Global.cfg_CamOverridesEmotes;
  • Event Player.plyr_ScopesDisableCam = Global.cfg_ScopesDisableCam;
  • Event Player.plyr_CamActive = True;
  • Call Subroutine(RefreshCam);
  • }
  • }
  • rule("3rdCam - [Subroutine] RefreshCam")
  • {
  • event
  • {
  • Subroutine;
  • RefreshCam;
  • }
  • actions
  • {
  • Skip If(!Event Player.plyr_ScopesDisableCam, 1);
  • "Refreshes a particular player's camera. Call this after changing a player's camera settings. Make sure not to call this subroutine from a Global rule."
  • Stop Camera(Event Player);
  • If(Event Player.plyr_CamActive);
  • If(!Event Player.plyr_CamRaycastsEyePos && !Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Eye Position(Event Player) + (
  • Event Player.plyr_CamAimDistance <= 0 ? World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • : Facing Direction Of(Event Player) * Event Player.plyr_CamAimDistance), Event Player.plyr_CamBlendSpeed);
  • Else If(Event Player.plyr_CamRaycastsEyePos && !Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset,
  • Event Player, Rotation), Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Null, All Players(All Teams), True), Eye Position(
  • Event Player) + (Event Player.plyr_CamAimDistance <= 0 ? World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • : Facing Direction Of(Event Player) * Event Player.plyr_CamAimDistance), Event Player.plyr_CamBlendSpeed);
  • Else If(!Event Player.plyr_CamRaycastsEyePos && Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Ray Cast Hit Position(Eye Position(Event Player),
  • Eye Position(Event Player) + Facing Direction Of(Event Player) * 300, All Players(Opposite Team Of(Team Of(Event Player))),
  • All Players(Team Of(Event Player)), True), Event Player.plyr_CamBlendSpeed);
  • Else If(Event Player.plyr_CamRaycastsEyePos && Event Player.plyr_CamHasCrosshairCorrection);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset,
  • Event Player, Rotation), Eye Position(Event Player) + World Vector Of(Event Player.plyr_CamOffset, Event Player, Rotation)
  • + Facing Direction Of(Event Player) * -1 * Event Player.plyr_CamDistance, Null, All Players(All Teams), True),
  • Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 300,
  • All Players(Opposite Team Of(Team Of(Event Player))), All Players(Team Of(Event Player)), True),
  • Event Player.plyr_CamBlendSpeed);
  • Else;
  • Small Message(Host Player, Custom String("Camera error - {0}", Event Player));
  • End;
  • End;
  • }
  • }
  • rule("3rdCam - Mei Ability 1 switch cams")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • Team 1;
  • Mei;
  • }
  • conditions
  • {
  • Is Using Ability 1(Event Player) == True;
  • }
  • actions
  • {
  • Skip If(Event Player.plyr_CamActive == True, 3);
  • Event Player.plyr_CamActive = True;
  • Call Subroutine(RefreshCam);
  • Skip(2);
  • Stop Camera(Event Player);
  • Event Player.plyr_CamActive = False;
  • }
  • }
  • rule("DEBUG - Show info")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.DebugShowInfo == True;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Position Of(Event Player), Null, Null, Left, 100, Color(Red), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Custom String("CD: {0}", Ability Cooldown(Event Player, Button(Ability 2))), Null, Top, 100,
  • Color(White), Color(Red), Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Custom String("Is On Ground: {0}", Is On Ground(Event Player)), Null, Top, 100, Color(White),
  • Color(Red), Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Custom String("Using Ability 2: {0}", Is Using Ability 2(Event Player)), Null, Top, 100, Color(
  • White), Color(Red), Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Custom String("Map: {0}", Current Map), Null, Top, 100, Color(White), Color(Red), Color(White),
  • Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Custom String("height active {0}", Y Component Of(Global.ActiveAreas[Global.CurrentCP])), Null,
  • Top, 100, Color(White), Color(Red), Color(White), Visible To and String, Visible Always);
  • Create HUD Text(Event Player, Null, Custom String("height player {0}", Y Component Of(Position Of(Event Player))), Null, Top, 100,
  • Color(White), Color(Red), Color(White), Visible To and String, Visible Always);
  • }
  • }
  • rule("DEBUG - Add dummy")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Global.DebugAddDummy == True;
  • }
  • actions
  • {
  • If(Global.DummyCreated != True);
  • Create Dummy Bot(Hero(Ana), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Baptiste), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Genji), Team 1, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Global.DummyCreated = True;
  • Wait(0.250, Ignore Condition);
  • }
  • }
  • rule("DEBUG - Toggle noclip")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Global.DebugNoclipEnable == True;
  • }
  • actions
  • {
  • Event Player.IsNoclipping = !Event Player.IsNoclipping;
  • If(Event Player.IsNoclipping);
  • Small Message(Event Player, Custom String("Noclip activated"));
  • Else;
  • Small Message(Event Player, Custom String("Noclip deactivated"));
  • End;
  • }
  • }
  • rule("DEBUG - Start noclipping")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsNoclipping == True;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 0);
  • Disable Movement Collision With Environment(Event Player, True);
  • Disable Movement Collision With Players(Event Player);
  • Set Move Speed(Event Player, 0);
  • Disallow Button(Event Player, Button(Jump));
  • Disallow Button(Event Player, Button(Crouch));
  • }
  • }
  • rule("DEBUG - Stop noclipping")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsNoclipping == False;
  • }
  • actions
  • {
  • Set Gravity(Event Player, 100);
  • Enable Movement Collision With Environment(Event Player);
  • Enable Movement Collision With Players(Event Player);
  • Set Move Speed(Event Player, 100);
  • Allow Button(Event Player, Button(Jump));
  • Allow Button(Event Player, Button(Crouch));
  • }
  • }
  • rule("DEBUG - Noclip propulsion")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsNoclipping == True;
  • (Is Button Held(Event Player, Button(Crouch)) || Is Button Held(Event Player, Button(Jump)) || Throttle Of(Event Player) != Vector(
  • 0, 0, 0)) == True;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Velocity Of(Event Player) * -1, Speed Of(Event Player) * 0.030, To World, Incorporate Contrary Motion);
  • Apply Impulse(Event Player, Normalize(Facing Direction Of(Event Player) * Z Component Of(Throttle Of(Event Player))
  • + World Vector Of(Left, Event Player, Rotation) * X Component Of(Throttle Of(Event Player)) + Up * (Is Button Held(
  • Event Player, Button(Jump)) - Is Button Held(Event Player, Button(Crouch)))), (60 + 400 * Is Button Held(Event Player, Button(
  • Reload)) - Speed Of(Event Player)) / 62.500, To World, Incorporate Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("DEBUG - Noclip air resistance")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.IsNoclipping == True;
  • (Is Button Held(Event Player, Button(Crouch)) || Is Button Held(Event Player, Button(Jump)) || Throttle Of(Event Player) != Vector(
  • 0, 0, 0)) == False;
  • Speed Of(Event Player) > 0.010;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Velocity Of(Event Player) * -1, Speed Of(Event Player) * 0.060, To World, Incorporate Contrary Motion);
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
Join the Workshop.codes Discord