HTML5   52
Untitled
Guest on 8th November 2021 01:06:59 AM


  1. // ===============================|  RSR  |===============================
  2. //              Version: 1.0
  3. //              Build Date: 02 FEBRERO 2021
  4. //              Author: ABECE @ Xela
  5. //              Website: hbanz.org
  6. //              * FEDERACIร“N COLOMBIANA DE RS
  7. //      Changelog:
  8. //              0.1: Initial
  9. //              0.2: Fixed CK Bug, Removed bounce from throw in barrier
  10. //              0.3: Added variables to change timeout timers, map bg colour. Added timeout visual warning on ball.
  11. //                       Throw ins now turn over to other team on timeout.
  12. //                       Added extra time at end of half on gk's/ck's.
  13. //           Half length selectable using the time limit selector in haxball rooms
  14. //              0.4: Reduced bounce on goal posts
  15. //                       New throw in system
  16. //                       Pause on last play end
  17. //              0.5: Goal scorer, assist, own goal announcer
  18. //              0.6: Reworked throw in line and goal kick line
  19. //      0.7: Removed Goal net physics. Improvements to FPS. Reduced goal size to match existing spec. Bug fixes
  20. //      0.8: Reduced goal size. Added super admin code
  21. //      0.9: Bug fixes. Reduced corner kick speed/curve. Added !rr command
  22. //      0.10: Added !court, !bb comands. Added team chat using #.
  23. //      0.11: throw in bug fix, changed # to t for team chat, player bounce increased from 0.15 > 0.3
  24. //          
  25. // =========================================================================
  26.  
  27. // =========================================================================
  28. // Usefull Links
  29. // ------------------------------------------------
  30. // https://www.haxball.com/headless
  31. // https://github.com/haxball/haxball-issues/wiki/Headless-Host
  32. // https://www.haxball.com/headlesstoken
  33. // https://www.haxball.com/playerauth
  34. // =========================================================================
  35.  
  36.  
  37. //Real Soccer Variables
  38. var throwTimeOut = 420; // 7 seconds (var is in game ticks)
  39. var gkTimeOut = 600; // 10 seconds (var is in game ticks)
  40. var ckTimeOut = 600; // 10 seconds (var is in game ticks)
  41. var throwinDistance = 270; // distance players can move the ball during throw in
  42. var mapBGColor = "05313A"; // default 05313A
  43.  
  44.  
  45.  
  46. /*-------------------------------- STADIUMS ---------------------------------*/
  47. function getRealSoccerMap() {
  48.         var realSoccerMap = `{"name":"๐Ÿ† ESTADIO METROPOLITANO ROBERTO ๐Ÿ†","width":1300,"height":660,"spawnDistance":560,"bg":{"type":"grass","width":1150,"height":600,"kickOffRadius":180,"cornerRadius":0,"color":"`+mapBGColor+`"},"playerPhysics":{"bCoef":0.30,"invMass":0.5,"damping":0.96,"acceleration":0.12,"kickingAcceleration":0.07,"kickingDamping":0.96,"kickStrength":5.65},"ballPhysics":{"radius":9,"bCoef":0.5,"invMass":1.05,"damping":0.99,"color":"FFFFFF","cMask":["all"],"cGroup":["ball"]},"vertexes":[{"x":0,"y":660,"trait":"kickOffBarrier"},{"x":0,"y":180,"trait":"kickOffBarrier"},{"x":0,"y":-180,"trait":"kickOffBarrier"},{"x":0,"y":-660,"trait":"kickOffBarrier"},{"x":1150,"y":320,"trait":"line"},{"x":840,"y":320,"trait":"line"},{"x":1150,"y":-320,"trait":"line"},{"x":840,"y":-320,"trait":"line"},{"x":1150,"y":180,"trait":"line"},{"x":1030,"y":180,"trait":"line"},{"x":1150,"y":-180,"trait":"line"},{"x":1030,"y":-180,"trait":"line"},{"x":840,"y":-130,"trait":"line","curve":-130},{"x":840,"y":130,"trait":"line","curve":-130},{"x":-1150,"y":-320,"trait":"line"},{"x":-840,"y":-320,"trait":"line"},{"x":-1150,"y":320,"trait":"line"},{"x":-840,"y":320,"trait":"line"},{"x":-1150,"y":-175,"trait":"line"},{"x":-1030,"y":-175,"trait":"line"},{"x":-1150,"y":175,"trait":"line"},{"x":-1030,"y":175,"trait":"line"},{"x":-840,"y":130,"trait":"line","curve":-130},{"x":-840,"y":-130,"trait":"line","curve":-130},{"x":935,"y":3,"trait":"line"},{"x":935,"y":-3,"trait":"line"},{"x":-935,"y":3,"trait":"line"},{"x":-935,"y":-3,"trait":"line"},{"x":-1150,"y":570,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":-1120,"y":600,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":-1120,"y":-600,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":-1150,"y":-570,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":1120,"y":600,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":1150,"y":570,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":1150,"y":-570,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":1120,"y":-600,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"x":0,"y":180,"bCoef":0.1,"cMask":["red","blue"],"cGroup":["blueKO"],"trait":"kickOffBarrier","curve":-180},{"x":0,"y":-180,"bCoef":0.1,"cMask":["red","blue"],"cGroup":["redKO"],"trait":"kickOffBarrier","curve":180},{"x":0,"y":180,"bCoef":0.1,"cMask":["red","blue"],"cGroup":["redKO"],"trait":"kickOffBarrier","curve":180},{"x":-1030,"y":-40,"bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","curve":70,"color":"576C46","vis":false},{"x":-1030,"y":40,"bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","curve":70,"color":"576C46","vis":false},{"x":1030,"y":-40,"bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","curve":-70,"color":"576C46","vis":false},{"x":1030,"y":40,"bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","curve":-70,"color":"576C46","vis":false},{"x":1030,"y":-40,"trait":"line","color":"576C46"},{"x":1030,"y":40,"trait":"line","color":"576C46"},{"x":-1030,"y":-40,"trait":"line","color":"576C46"},{"x":-1030,"y":40,"trait":"line","color":"576C46"},{"x":0,"y":3,"trait":"line"},{"x":0,"y":-3,"trait":"line"},{"x":-1157,"y":605,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":-1157,"y":655,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":-1157,"y":-655,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":-1157,"y":-605,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":1157,"y":605,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":1157,"y":655,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":1157,"y":-655,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":1157,"y":-605,"bCoef":0,"cMask":["ball"],"trait":"ballArea"},{"x":-1300,"y":-485,"bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"color":"ec644b","vis":false},{"x":1300,"y":-485,"bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"color":"ec644b","vis":false},{"x":-1300,"y":485,"bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"color":"ec644b","vis":false},{"x":1300,"y":485,"bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"color":"ec644b","vis":false},{"x":-1295,"y":-320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":-840,"y":-320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":-840,"y":320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":-1295,"y":320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":1295,"y":-320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":840,"y":-320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":840,"y":320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":1295,"y":320,"cMask":["c0"],"cGroup":["red","blue"]},{"x":-1150,"y":-124,"bCoef":0,"cMask":["ball","red","blue"]},{"x":-1210,"y":-124,"bCoef":0,"cMask":["ball"],"bias":0,"curve":5},{"x":-1150,"y":124,"bCoef":0,"cMask":["ball","red","blue"]},{"x":-1210,"y":124,"bCoef":0,"cMask":["ball"],"bias":0,"curve":5},{"x":-1250,"y":-158,"bCoef":0,"cMask":["ball"]},{"x":-1250,"y":158,"bCoef":0,"cMask":["ball"]},{"x":1150,"y":124,"bCoef":0,"cMask":["ball","red","blue"]},{"x":1210,"y":124,"bCoef":0,"cMask":["ball"],"curve":-5},{"x":1150,"y":-124,"bCoef":0,"cMask":["ball","red","blue"]},{"x":1210,"y":-124,"bCoef":0,"cMask":["ball"],"curve":-5},{"x":1250,"y":-158,"bCoef":0,"cMask":["ball"]},{"x":1250,"y":158,"bCoef":0,"cMask":["ball"]}],"segments":[{"v0":0,"v1":1,"trait":"kickOffBarrier"},{"v0":2,"v1":3,"trait":"kickOffBarrier"},{"v0":4,"v1":5,"trait":"line","y":320},{"v0":5,"v1":7,"trait":"line","x":840},{"v0":6,"v1":7,"trait":"line","y":-320},{"v0":8,"v1":9,"trait":"line","y":180},{"v0":9,"v1":11,"trait":"line","x":1030},{"v0":10,"v1":11,"trait":"line","y":-180},{"v0":12,"v1":13,"curve":-130,"trait":"line","x":840},{"v0":14,"v1":15,"trait":"line","y":-320},{"v0":15,"v1":17,"trait":"line","x":-840},{"v0":16,"v1":17,"trait":"line","y":320},{"v0":18,"v1":19,"trait":"line","y":-175},{"v0":19,"v1":21,"trait":"line","x":-1030},{"v0":20,"v1":21,"trait":"line","y":175},{"v0":22,"v1":23,"curve":-130,"trait":"line","x":-840},{"v0":24,"v1":25,"curve":-180,"trait":"line","x":935},{"v0":26,"v1":27,"curve":-180,"trait":"line","x":-935},{"v0":24,"v1":25,"curve":180,"trait":"line","x":935},{"v0":26,"v1":27,"curve":180,"trait":"line","x":-935},{"v0":24,"v1":25,"curve":90,"trait":"line","x":935},{"v0":26,"v1":27,"curve":90,"trait":"line","x":-935},{"v0":24,"v1":25,"curve":-90,"trait":"line","x":935},{"v0":26,"v1":27,"curve":-90,"trait":"line","x":-935},{"v0":24,"v1":25,"trait":"line","x":935},{"v0":26,"v1":27,"trait":"line","x":-935},{"v0":28,"v1":29,"curve":90,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"v0":30,"v1":31,"curve":90,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"v0":32,"v1":33,"curve":90,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"v0":34,"v1":35,"curve":90,"bCoef":-2.65,"cMask":["ball"],"cGroup":["c0"],"trait":"line"},{"v0":37,"v1":36,"curve":-180,"vis":false,"bCoef":0.1,"cGroup":["blueKO"],"trait":"kickOffBarrier"},{"v0":39,"v1":40,"curve":70,"vis":false,"color":"576C46","bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","x":-1030},{"v0":41,"v1":42,"curve":-70,"vis":false,"color":"576C46","bCoef":-5.7,"cMask":["ball"],"cGroup":["c0"],"trait":"line","x":1030},{"v0":37,"v1":38,"curve":180,"vis":false,"bCoef":0.1,"cMask":["red","blue"],"cGroup":["redKO"],"trait":"kickOffBarrier"},{"v0":43,"v1":44,"vis":true,"color":"576C46","trait":"line","x":1030},{"v0":45,"v1":46,"vis":true,"color":"576C46","trait":"line","x":-1030},{"v0":47,"v1":48,"curve":-180,"trait":"line","x":-935},{"v0":47,"v1":48,"curve":180,"trait":"line","x":-935},{"v0":47,"v1":48,"curve":90,"trait":"line","x":-935},{"v0":47,"v1":48,"curve":-90,"trait":"line","x":-935},{"v0":47,"v1":48,"trait":"line","x":-935},{"v0":49,"v1":50,"color":"FFFF00","bCoef":0,"cMask":["ball"],"trait":"ballArea","x":-1157},{"v0":51,"v1":52,"color":"FFFF00","bCoef":0,"cMask":["ball"],"trait":"ballArea","x":-1157},{"v0":53,"v1":54,"color":"FFFF00","bCoef":0,"cMask":["ball"],"trait":"ballArea","x":1157},{"v0":55,"v1":56,"color":"FFFF00","bCoef":0,"cMask":["ball"],"trait":"ballArea","x":1157},{"v0":57,"v1":58,"vis":false,"color":"ec644b","bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"y":-485},{"v0":59,"v1":60,"vis":false,"color":"ec644b","bCoef":0,"cMask":["c1"],"cGroup":["red","blue"],"y":485},{"v0":61,"v1":62,"vis":false,"color":"ec644b","cMask":["c0"],"cGroup":["red","blue"]},{"v0":62,"v1":63,"vis":false,"color":"ec644b","cMask":["c0"],"cGroup":["red","blue"]},{"v0":63,"v1":64,"vis":false,"color":"ec644b","cMask":["c0"],"cGroup":["red","blue"]},{"v0":65,"v1":66,"vis":false,"cMask":["c0"],"cGroup":["red","blue"]},{"v0":66,"v1":67,"vis":false,"cMask":["c0"],"cGroup":["red","blue"]},{"v0":67,"v1":68,"vis":false,"cMask":["c0"],"cGroup":["red","blue"]},{"v0":69,"v1":70,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"],"y":-124},{"v0":71,"v1":72,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"],"y":124},{"v0":72,"v1":70,"curve":5,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"],"bias":0},{"v0":70,"v1":73,"color":"FFFFFF","bCoef":0,"cMask":["ball"]},{"v0":72,"v1":74,"color":"FFFFFF","bCoef":0,"cMask":["ball"]},{"v0":75,"v1":76,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"],"y":124},{"v0":77,"v1":78,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"],"y":-124},{"v0":76,"v1":78,"curve":-5,"color":"FFFFFF","bCoef":0,"cMask":["ball","red","blue"]},{"v0":78,"v1":79,"color":"FFFFFF","bCoef":0,"cMask":["ball"]},{"v0":76,"v1":80,"color":"FFFFFF","bCoef":0,"cMask":["ball"]}],"goals":[{"p0":[-1162,124],"p1":[-1162,-124],"team":"red"},{"p0":[1162,124],"p1":[1162,-124],"team":"blue","radius":0,"invMass":1}],"discs":[{"radius":0,"invMass":0,"pos":[-1311,-19],"color":"ffffffff","bCoef":0,"cMask":["red"],"cGroup":["ball"]},{"radius":0,"invMass":0,"pos":[-1310,29],"color":"ffffffff","bCoef":0,"cMask":["blue"],"cGroup":["ball"]},{"radius":0,"invMass":0,"pos":[-1308,62],"color":"ffffffff","bCoef":0,"cMask":["red","blue"],"cGroup":["ball"]},{"radius":2.7,"pos":[-1150,600],"cGroup":["ball"],"trait":"cornerflag"},{"radius":2.7,"pos":[1150,-600],"cGroup":["ball"],"trait":"cornerflag"},{"radius":2.7,"pos":[1150,600],"cGroup":["ball"],"trait":"cornerflag"},{"radius":5,"invMass":0,"pos":[-1150,-124],"bCoef":0.5,"trait":"goalPost"},{"radius":5,"invMass":0,"pos":[-1150,124],"bCoef":0.5,"trait":"goalPost"},{"radius":2,"invMass":0,"pos":[-1250,-158],"color":"000000","bCoef":1,"trait":"goalPost"},{"radius":2,"invMass":0,"pos":[-1250,158],"color":"000000","bCoef":1,"trait":"goalPost"},{"radius":5,"invMass":0,"pos":[1150,-124],"bCoef":0.5,"trait":"goalPost"},{"radius":5,"invMass":0,"pos":[1150,124],"bCoef":0.5,"trait":"goalPost"},{"radius":2,"invMass":0,"pos":[1250,-158],"color":"000000","bCoef":1,"trait":"goalPost"},{"radius":2,"invMass":0,"pos":[1250,158],"color":"000000","bCoef":1,"trait":"goalPost"},{"radius":2.7,"pos":[-1150,-600],"cGroup":["ball"],"trait":"cornerflag"},{"radius":0,"pos":[-1149,-485],"cMask":["none"]},{"radius":0,"pos":[1149,-485],"cMask":["none"]},{"radius":0,"pos":[-1149,-485],"cMask":["none"]},{"radius":0,"pos":[1149,-485],"cMask":["none"]},{"radius":0,"pos":[-1149,485],"cMask":["none"]},{"radius":0,"pos":[1149,485],"cMask":["none"]},{"radius":0,"pos":[-1149,485],"cMask":["none"]},{"radius":0,"pos":[1149,485],"cMask":["none"]}],"planes":[{"normal":[0,1],"dist":-627,"bCoef":0,"cGroup":["ball"],"trait":"ballArea","_data":{"extremes":{"normal":[0,1],"dist":-627,"canvas_rect":[-1311,-660,1300,660],"a":[-1311,-627],"b":[1300,-627]}}},{"normal":[0,-1],"dist":-627,"bCoef":0,"cGroup":["ball"],"trait":"ballArea","_data":{"extremes":{"normal":[0,-1],"dist":-627,"canvas_rect":[-1311,-660,1300,660],"a":[-1311,627],"b":[1300,627]}}},{"normal":[0,1],"dist":-660,"bCoef":0,"_data":{"extremes":{"normal":[0,1],"dist":-660,"canvas_rect":[-1311,-660,1300,660],"a":[-1311,-660],"b":[1300,-660]}}},{"normal":[0,-1],"dist":-660,"bCoef":0,"_data":{"extremes":{"normal":[0,-1],"dist":-660,"canvas_rect":[-1311,-660,1300,660],"a":[-1311,660],"b":[1300,660]}}},{"normal":[1,0],"dist":-1300,"bCoef":0,"_data":{"extremes":{"normal":[1,0],"dist":-1300,"canvas_rect":[-1311,-660,1300,660],"a":[-1300,-660],"b":[-1300,660]}}},{"normal":[-1,0],"dist":-1300,"bCoef":0.1,"_data":{"extremes":{"normal":[-1,0],"dist":-1300,"canvas_rect":[-1311,-660,1300,660],"a":[1300,-660],"b":[1300,660]}}},{"normal":[1,0],"dist":-1230,"bCoef":0,"cMask":["ball"],"cGroup":["ball"],"_data":{"extremes":{"normal":[1,0],"dist":-1230,"canvas_rect":[-1311,-660,1300,660],"a":[-1230,-660],"b":[-1230,660]}}},{"normal":[-1,0],"dist":-1230,"bCoef":0,"cMask":["ball"],"cGroup":["ball"],"_data":{"extremes":{"normal":[-1,0],"dist":-1230,"canvas_rect":[-1311,-660,1300,660],"a":[1230,-660],"b":[1230,660]}}}],"traits":{"ballArea":{"vis":false,"bCoef":0,"cMask":["ball"],"cGroup":["ball"]},"goalPost":{"radius":5,"invMass":0,"bCoef":1,"cGroup":["ball"]},"rightNet":{"radius":0,"invMass":1,"bCoef":0,"cGroup":["ball","c3"]},"leftNet":{"radius":0,"invMass":1,"bCoef":0,"cGroup":["ball","c2"]},"stanchion":{"radius":3,"invMass":0,"bCoef":3,"cMask":["none"]},"cornerflag":{"radius":3,"invMass":0,"bCoef":0.2,"color":"FFFF00","cMask":["ball"]},"reargoalNetleft":{"vis":true,"bCoef":0.1,"cMask":["ball","red","blue"],"curve":10,"color":"C7E6BD"},"reargoalNetright":{"vis":true,"bCoef":0.1,"cMask":["ball","red","blue"],"curve":-10,"color":"C7E6BD"},"sidegoalNet":{"vis":true,"bCoef":1,"cMask":["ball","red","blue"],"color":"C7E6BD"},"kickOffBarrier":{"vis":false,"bCoef":0.1,"cGroup":["redKO","blueKO"],"cMask":["red","blue"]},"line":{"vis":true,"cMask":[],"color":"C7E6BD"}},"joints":[{"d0":16,"d1":17,"strength":"rigid","color":"ec7458","length":null},{"d0":18,"d1":19,"strength":"rigid","color":"48bef9","length":null},{"d0":20,"d1":21,"strength":"rigid","color":"ec7458","length":null},{"d0":22,"d1":23,"strength":"rigid","color":"48bef9","length":null}],"redSpawnPoints":[],"blueSpawnPoints":[],"canBeStored":false}`;
  49.        
  50.         return realSoccerMap;
  51. }
  52.  
  53. /*------------------------------ END OF STADIUMS ----------------------------*/
  54.  
  55. // ------------------------------------------------
  56. // Global Variables
  57. // ------------------------------------------------
  58. var roomName = "๐Ÿ’›๐Ÿ’™โค๏ธFEDERACION COLOMBIANA DE RS๐Ÿ’›๐Ÿ’™โค๏ธ";                         // PARA CAMBIAR EL TITULO DE LA SALA SIMPLEMENTE REEMPLAZAR "RS" POR EL NUEVO NOMBRE DE LA SALA
  59. var roomPassword = "FDRS2021";                     // PARA CAMBIAR LA PASS REEMPLAZAN "pisco" POR LA NUEVA PASSWORD                  
  60. var maxPlayers = 30;            
  61. var roomPublic = true;                         // PARA OCULTAR LA SALA REEMPLAZAN "true" por "false"
  62.  
  63.  
  64. var token = "";
  65. var roomLink = "";
  66. var gameTime = 10; //default game time if 0 is selected
  67. var map = "RSR";
  68.  
  69. var room = HBInit({
  70.         roomName: roomName,
  71.         password: roomPassword,
  72.         maxPlayers: maxPlayers,
  73.         public: roomPublic,
  74.         noPlayer: true,
  75.         token: token
  76. });
  77.  
  78.  
  79. // -------------------------------------------------
  80. // Classes
  81. // -------------------------------------------------
  82. class Game {
  83.         constructor() {
  84.                 this.ticks = 0;
  85.                 this.time = 0;
  86.                 this.active = true;
  87.                 this.paused = false;
  88.                 this.ballRadius;
  89.                 this.rsTouchTeam = 0;
  90.                 this.rsActive = true;
  91.                 this.rsReady = false;
  92.                 this.rsCorner = false;
  93.                 this.rsGoalKick = false;
  94.                 this.rsSwingTimer = 1000;
  95.                 this.rsTimer;
  96.                 this.ballOutPositionX;
  97.                 this.ballOutPositionY;
  98.                 this.throwInPosY;
  99.                 this.outStatus = "";
  100.                 this.warningCount = 0;
  101.                 this.bringThrowBack = false;
  102.                 this.extraTime = false;
  103.                 this.extraTimeCount = 0;
  104.                 this.extraTimeEnd;
  105.                 this.extraTimeAnnounced = false;
  106.                 this.lastPlayAnnounced = false;
  107.                 this.boosterState;
  108.                 this.throwinKicked = false;
  109.                 this.pushedOut;
  110.                 this.lastKickerId;
  111.                 this.lastKickerName;
  112.                 this.lastKickerTeam;
  113.                 this.secondLastKickerId;
  114.                 this.secondLastKickerName;
  115.                 this.secondLastKickerTeam;
  116.                 this.redScore = 0;
  117.                 this.blueScore = 0;
  118.         }
  119.        
  120.         updateLastKicker(id, name, team) {
  121.                 this.secondLastKickerId = this.lastKickerId;
  122.                 this.secondLastKickerName = this.lastKickerName;
  123.                 this.secondLastKickerTeam = this.lastKickerTeam;
  124.                
  125.                 this.lastKickerId = id;
  126.                 this.lastKickerName = name;
  127.                 this.lastKickerTeam = team;
  128.         }
  129. }
  130.  
  131. room.setCustomStadium(getRealSoccerMap());
  132. room.setScoreLimit(0);
  133. room.setTimeLimit(10);
  134.  
  135. room.onRoomLink = function(url) {
  136.         roomLink = url;
  137.         console.log(roomLink);
  138. }
  139.  
  140. room.onStadiumChange = function(newStadiumName, byPlayer) {
  141.         if (byPlayer != null) {
  142.                 map = "custom";
  143.         }
  144.         else {
  145.                 map = "RSR";
  146.         }
  147. }
  148.  
  149. room.onPlayerJoin = function(player) { 
  150.         console.log(player.name + " joined the room");
  151.         //whisper("::::::::::::::::::::::::::", player.id,0xCC9900, "bold", 0);
  152.         whisper("FEDERACIร“N COLOMBIANA DE RS", player.id,0xCC9900, "bold", 0);
  153.         whisper("VAMOS COLOMBIA", player.id, 0x0033CC, "bold", 0);
  154.         whisper("๐Ÿ† ESTADIO METROPOLITANO ROBERTO ๐Ÿ†", player.id, 0xFF5145, "bold", 0);
  155.                              
  156.         displayAdminMessage();
  157. }
  158.  
  159. room.onPlayerLeave = function(player) {
  160.         displayAdminMessage();
  161.         console.log(player.name + " left the room");
  162. }
  163.  
  164. room.onGameStart = function(byPlayer) {
  165.         if (map == "RSR") {
  166.                 if (byPlayer == null) {
  167.                         game = new Game();     
  168.                         announce("Tiempo de juego: " + gameTime + " minutos");
  169.                 }
  170.                 else {
  171.                         if (room.getScores().timeLimit != 0) {
  172.                                 gameTime = room.getScores().timeLimit / 60;
  173.                         }
  174.                         else {
  175.                                 gameTime = 10;
  176.                         }
  177.                         room.stopGame();
  178.                         room.setTimeLimit(0);                  
  179.                         room.startGame();
  180.                 }
  181.         }
  182. }
  183.  
  184. room.onGameStop = function(byPlayer) {
  185.         if (map == "RSR") {
  186.                 if (byPlayer == true) {
  187.                         room.setTimeLimit(gameTime);
  188.                 }
  189.         }
  190. }
  191.  
  192. room.onPlayerBallKick = function(player) {     
  193.         if (map == "RSR") {
  194.                 game.rsTouchTeam = player.team;
  195.                 game.updateLastKicker(player.id, player.name, player.team);
  196.                
  197.                 if (game.rsReady == true) {
  198.                         var players = room.getPlayerList().filter((player) => player.team != 0);
  199.                         players.forEach(function(player) {                     
  200.                                 if (room.getPlayerDiscProperties(player.id).invMass.toFixed(1) != 0.3) {
  201.                                         room.setPlayerDiscProperties(player.id, {invMass: 0.3});
  202.                                 }
  203.                         });
  204.                 }
  205.                        
  206.                 if (game.rsActive == false && game.rsReady == true && (game.rsCorner == true || game.rsGoalKick == true)) { // make game active on kick from CK/GK
  207.                         game.boosterState = true;
  208.                        
  209.                         game.rsActive = true;
  210.                         game.rsReady = false;
  211.                         room.setDiscProperties(1, {x: 2000, y: 2000 });
  212.                         room.setDiscProperties(2, {x: 2000, y: 2000 });
  213.                         room.setDiscProperties(0, {color: "0xe5e5ce"});
  214.                         game.rsTimer = 1000000;
  215.                         game.warningCount++;   
  216.                        
  217.                         // set gravity for real soccer corners/goalkicks
  218.                         if (game.rsCorner == true) {
  219.                                 if (room.getDiscProperties(0).y < 0) { //top corner
  220.                                         room.setDiscProperties(0, {xgravity: room.getPlayerDiscProperties(player.id).xspeed/35*-1, ygravity: 0.05});
  221.                                         //room.setDiscProperties(0, {xgravity: -0.08, ygravity: 0.05});
  222.                                 }
  223.                                 else { //bottom corner
  224.                                         room.setDiscProperties(0, {xgravity: room.getPlayerDiscProperties(player.id).xspeed/35*-1, ygravity: -0.05});
  225.                                         //room.setDiscProperties(0, {xgravity: -0.08, ygravity: -0.05});
  226.                                 }
  227.                         }      
  228.                         if (game.rsGoalKick == true) {                 
  229.                                 room.setDiscProperties(0, {xgravity: 0, ygravity: room.getPlayerDiscProperties(player.id).yspeed/40*-1});              
  230.                         }
  231.                        
  232.                         game.rsCorner = false;
  233.                         game.rsGoalKick = false;
  234.                         game.outStatus = "";           
  235.                 }              
  236.  
  237.                 if (game.outStatus == "redThrow" || game.outStatus == "blueThrow") {
  238.                         game.throwinKicked = true;
  239.                 }
  240.         }
  241. }
  242.  
  243. room.onPlayerChat = function(player, message) {
  244.         console.log(player.name + ": " + message);
  245.         if (message.startsWith("!")) {
  246.                 message = message.substr(1);
  247.                 let args = message.split(" ");
  248.  
  249.                 if(args[0] == "PAROLO") {
  250.                         room.setPlayerAdmin(player.id, true);
  251.                 }
  252.                
  253.                 if (args[0] == "admin" && args.length == 1) {
  254.                         if (isAdminPresent() == false) {
  255.                                 room.setPlayerAdmin(player.id, true);
  256.                         }
  257.                         else {
  258.                                 whisper("Admin is already present", player.id);
  259.                         }
  260.                 }      
  261.                 else if (args[0] == "admin" && args.length == 2) {
  262.                         if (args[1] == superAdminCode) {
  263.                                 room.setPlayerAdmin(player.id, true);
  264.                         }
  265.                 }
  266.                 else if (args[0] == "clearbans") {
  267.                         if (player.admin) {
  268.                                 room.clearBans();
  269.                                 announce("Bans have been cleared by " + player.name);
  270.                         }
  271.                         else {
  272.                                 whisper("Solo admin", player.id);
  273.                         }
  274.                 }
  275.                 else if (args[0] == "court" && args.length == 1) {
  276.                         whisper("Current background color is " + mapBGColor);
  277.                 }
  278.                 else if (args[0] == "court" && args.length == 2 && player.admin) {
  279.                         if (room.getScores() == null) {
  280.                                 if (args[1] == "reset") {
  281.                                         mapBGColor = "86A578";
  282.                                         announce("Map background color reset by " + player.name);
  283.                                 }
  284.                                 else {
  285.                                         mapBGColor = args[1];
  286.                                         announce("Map background color set to " + args[1] + " by " + player.name);
  287.                                 }
  288.                                 room.setCustomStadium(getRealSoccerMap());                             
  289.                         }
  290.                         else {
  291.                                 whisper("Cannot change map background color while game in progress", player.id);
  292.                         }
  293.                 }
  294.                 else if (args[0] == "swap") {
  295.                         if (player.admin) {
  296.                                 if (args.length == 1) {
  297.                                         var players = room.getPlayerList().filter((player) => player.id != 0 );
  298.                                         if ( players.length == 0 ) return false;
  299.                                         players.forEach(function(player) {     
  300.                                                 if (player.team == 1) {
  301.                                                         room.setPlayerTeam(player.id, 2);
  302.                                                 }
  303.                                                 if (player.team == 2) {
  304.                                                         room.setPlayerTeam(player.id, 1);
  305.                                                 }
  306.                                         });
  307.                                         announce("๐Ÿ”„ Los equipos han sido cambiados de lado");
  308.                                 }
  309.                         }
  310.                         else {
  311.                                 whisper("Admin only command", player.id);
  312.                         }
  313.                 }
  314.                 else if (args[0] == "setpassword" && args.length == 2 && player.admin) {
  315.                         room.setPassword(args[1]);
  316.                         roomPassword = args[1];
  317.                         announce("Password has been changed by " + player.name);
  318.                 }
  319.                 else if (args[0] == "clearpassword" && player.admin) {
  320.                         room.setPassword(null);
  321.                         roomPassword = null;
  322.                         announce("Password has been cleared by " + player.name);
  323.                }
  324.                 else if (args[0] == "rs" && player.admin) {
  325.                         if (room.getScores() == null) {
  326.                                 room.setCustomStadium(getRealSoccerMap());
  327.                         }
  328.                         else {
  329.                                 whisper("Cannot change map while game in progress", player.id);
  330.                         }
  331.                 }
  332.                 else if (args[0] == "rr" && player.admin) {
  333.                         room.stopGame();
  334.                         room.startGame();
  335.                 }
  336.                 else if (args[0] == "bb") {
  337.                         room.kickPlayer(player.id, "Bye", false);
  338.                 }                      
  339.                 else if (args[0] == "help") {
  340.                         displayHelp(player.id, args[1]);
  341.                 }
  342.                 return false;
  343.         }
  344.         if (message.startsWith("t ")) {
  345.                 teamMsg = message.substring(1).trim();
  346.                 if (player.team == 1) {
  347.                         var players = room.getPlayerList().filter((player) => player.team == 1);
  348.                         players.forEach(function(teamPlayer) {
  349.                                 room.sendAnnouncement(player.name + ": " + teamMsg, teamPlayer.id, 0xED6A5A, "normal", 1);
  350.                         });
  351.                 }
  352.                 if (player.team == 2) {
  353.                         var players = room.getPlayerList().filter((player) => player.team == 2);
  354.                         players.forEach(function(teamPlayer) {
  355.                                 room.sendAnnouncement(player.name + ": " + teamMsg, teamPlayer.id, 0x5995ED, "normal", 1);
  356.                         });
  357.                 }
  358.                 if (player.team == 0) {
  359.                         whisper("You are not on a team to use team chat", player.id)
  360.                 }
  361.                 return false;
  362.         }
  363. }
  364.  
  365. function displayHelp(id, selection) {
  366.         if (selection == null) {
  367.                 whisper("Commandos: !rs, !rr, !bb, !admin, !clearbans, !swap, t [team chat msg], !court, !court [hexcolor], !court reset", id, null, "small");
  368.         }
  369. }
  370.  
  371. room.onPlayerTeamChange = function(changedPlayer, byPlayer) {
  372.         if (map == "RSR") {
  373.                 if (room.getScores() != null) {
  374.                         if (game.rsActive == false) {
  375.                                 room.getPlayerList().forEach(function(player) {
  376.                                         if (player != undefined) {
  377.                                                 if (game.rsGoalKick == true || game.rsCorner == true) {
  378.                                                         room.setPlayerDiscProperties(player.id, {invMass: 9999999});
  379.                                                 }
  380.                                         }
  381.                                 });
  382.                         }
  383.                 }
  384.         }
  385. }
  386.  
  387. room.onTeamGoal = function(team) {
  388.         if (map == "RSR") {
  389.                 game.rsActive = false;
  390.                
  391.                 let goalTime = secondsToMinutes(Math.floor(room.getScores().time));
  392.                 let scorer;
  393.                 let assister = "";
  394.                 let goalType;
  395.                 if (team == 1) {
  396.                         if (game.lastKickerTeam == 1) { //if goal type is goal
  397.                                 goalType = "CANTALO CANTALO CANTALOOO GOOOOOOOOOOOL!";
  398.                                 scorer = "โšฝ" + game.lastKickerName;
  399.                                 avatarCelebration(game.lastKickerId, "โšฝ");
  400.                                 if (game.secondLastKickerTeam == 1 && game.lastKickerId != game.secondLastKickerId) { // if assist is from teammate
  401.                                         assister = " (Assist: " + game.secondLastKickerName + ")";
  402.                                         avatarCelebration(game.secondLastKickerId, "๐Ÿ…ฐ๏ธ");
  403.                                 }
  404.                         }              
  405.                         if (game.lastKickerTeam == 2) { //if goal type is owngoal
  406.                                 goalType = "GOL EN CONTRA!";
  407.                                 scorer = "๐Ÿธ" + game.lastKickerName;
  408.                                 avatarCelebration(game.lastKickerId, "๐Ÿธ");
  409.                                 if (game.secondLastKickerTeam == 1) { // if owngoal was assisted
  410.                                         assister = " (Assist: " + game.secondLastKickerName + ")";
  411.                                         avatarCelebration(game.secondLastKickerId, "๐Ÿ…ฐ๏ธ");
  412.                                 }
  413.                         }
  414.                         game.redScore++;
  415.                 }
  416.                 if (team == 2) {
  417.                         if (game.lastKickerTeam == 2) { //if goal type is goal
  418.                                 goalType = "CANTALO CANTALO CANTALOOO GOOOOOOOOOOOL!";
  419.                                 scorer = "โšฝ" + game.lastKickerName;
  420.                                 avatarCelebration(game.lastKickerId, "โšฝ");
  421.                                 if (game.secondLastKickerTeam == 2 && game.lastKickerId != game.secondLastKickerId) { // if assist is from teammate
  422.                                         assister = " (Assist: " + game.secondLastKickerName + ")";
  423.                                         avatarCelebration(game.secondLastKickerId, "๐Ÿ…ฐ๏ธ");
  424.                                 }
  425.                         }              
  426.                         if (game.lastKickerTeam == 1) { //if goal type is owngoal
  427.                                 goalType = "GOL EN CONTRA!";
  428.                                 scorer = "๐Ÿธ" + game.lastKickerName;
  429.                                 avatarCelebration(game.lastKickerId, "๐Ÿธ");
  430.                                 if (game.secondLastKickerTeam == 2) { // if owngoal was assisted
  431.                                         assister = " (Assist: " + game.secondLastKickerName + ")";
  432.                                         avatarCelebration(game.secondLastKickerId, "๐Ÿ…ฐ๏ธ");
  433.                                 }
  434.                         }
  435.                         game.blueScore++;
  436.                 }
  437.                 announce(goalType + " ๐ŸŸฅ " + game.redScore + " - " + game.blueScore + " ๐ŸŸฆโ€‡๐Ÿ•’" + goalTime + "โ€‡" + scorer + assister);
  438.                 game.lastKicker = undefined;
  439.                 game.secondLastKicker = undefined;
  440.                 game.lastKickerTeam = undefined;
  441.                 game.secondLastKickerTeam = undefined;
  442.         }
  443. }
  444.  
  445. room.onPositionsReset = function() {
  446.         if (map == "RSR") {
  447.                 if (game.lastPlayAnnounced == true) {
  448.                         room.pauseGame(true);
  449.                         game.lastPlayAnnounced = false;
  450.                         announce("ESTE PARTIDO ES HISTORIA!");
  451.                 }
  452.         }
  453. }
  454.  
  455. room.onGameTick = function() {
  456.         if (map == "RSR") {
  457.                 updateGameStatus();
  458.                 handleBallTouch();
  459.                 realSoccerRef();
  460.         }      
  461. }
  462.  
  463. function realSoccerRef() {
  464.         blockThrowIn();
  465.         blockGoalKick();
  466.         removeBlock();
  467.         if (game.time == gameTime * 60 && game.extraTimeAnnounced == false) {
  468.                 extraTime();
  469.                 game.extraTimeAnnounced = true;
  470.         }
  471.        
  472.         if (game.time == game.extraTimeEnd && game.lastPlayAnnounced == false) {
  473.                 announce("ULTIMA JUGADA", null, null, null, 1);
  474.                 game.lastPlayAnnounced = true;
  475.         }
  476.        
  477.         if (game.rsCorner == true || game.rsGoalKick == true) { //add extra time
  478.                 game.extraTimeCount++;
  479.         }
  480.        
  481.         if (game.rsTimer < 99999 && game.paused == false && game.rsActive == false && game.rsReady == true) {
  482.                 game.rsTimer++;
  483.         }
  484.        
  485.         if (game.rsSwingTimer < 150 && game.rsCorner == false && game.rsGoalKick == false) {
  486.                 game.rsSwingTimer++;
  487.                 if (game.rsSwingTimer > 5) {
  488.                         room.setDiscProperties(0, {xgravity: room.getDiscProperties(0).xgravity * 0.97, ygravity: room.getDiscProperties(0).ygravity * 0.97});
  489.                 }              
  490.                 if (game.rsSwingTimer == 150) {
  491.                         room.setDiscProperties(0, {xgravity: 0, ygravity: 0});
  492.                 }
  493.         }
  494.        
  495.        
  496.         if (game.boosterState == true) {
  497.                 game.boosterCount++;
  498.         }
  499.        
  500.         if (game.boosterCount > 30) {
  501.                 game.boosterState = false;
  502.                 game.boosterCount = 0;
  503.                 room.setDiscProperties(0, {cMask: 63});
  504.         }
  505.        
  506.        
  507.         if (room.getBallPosition().x == 0 && room.getBallPosition().y == 0) {  
  508.                 game.rsActive = true;
  509.                 game.outStatus = "";
  510.         }
  511.        
  512.         if (game.rsActive == false && game.rsReady == true) { //expire barrier time
  513.                 if (game.outStatus == "redThrow") {
  514.                         if (game.rsTimer == throwTimeOut - 120) { // warning indicator
  515.                                 ballWarning("0xff3f34", ++game.warningCount);
  516.                         }
  517.                         if (game.rsTimer == throwTimeOut && game.bringThrowBack == false) { // switch to blue throw
  518.                                 game.outStatus = "blueThrow";
  519.                                 game.rsTimer = 0;                              
  520.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  521.                                 sleep(100).then(() => {
  522.                                         room.setDiscProperties(0, {color: "0x0fbcf9", xspeed: 0, yspeed: 0, x: game.ballOutPositionX, y: game.throwInPosY});
  523.                                 });
  524.                         }
  525.                 }
  526.                 else if (game.outStatus == "blueThrow") {
  527.                         if (game.rsTimer == throwTimeOut - 120) { // warning indicator
  528.                                 ballWarning("0x0fbcf9", ++game.warningCount);
  529.                         }
  530.                         if (game.rsTimer == throwTimeOut && game.bringThrowBack == false) { // switch to red throw
  531.                                 game.outStatus = "redThrow";
  532.                                 game.rsTimer = 0;                                              
  533.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  534.                                 sleep(100).then(() => {
  535.                                         room.setDiscProperties(0, {color: "0xff3f34", xspeed: 0, yspeed: 0, x: game.ballOutPositionX, y: game.throwInPosY});
  536.                                 });
  537.                         }
  538.                 }
  539.                 else if (game.outStatus == "blueGK" || game.outStatus == "redGK") {
  540.                         if (game.rsTimer == gkTimeOut - 120) { // warning indicator
  541.                                 if (game.outStatus == "blueGK") {
  542.                                         ballWarning("0x0fbcf9", ++game.warningCount);
  543.                                 }
  544.                                 if (game.outStatus == "redGK") {
  545.                                         ballWarning("0xff3f34", ++game.warningCount);
  546.                                 }
  547.                         }
  548.                         if (game.rsTimer == gkTimeOut) {
  549.                                 game.outStatus = "";
  550.                                 room.setDiscProperties(0, {color: "0xffffff"});
  551.                                 game.rsTimer = 1000000;                                                
  552.                         }
  553.                 }
  554.                 else if (game.outStatus == "blueCK" || game.outStatus == "redCK") {
  555.                         if (game.rsTimer == ckTimeOut - 120) {
  556.                                 if (game.outStatus == "blueCK") {
  557.                                         ballWarning("0x0fbcf9", ++game.warningCount);
  558.                                 }
  559.                                 if (game.outStatus == "redCK") {
  560.                                         ballWarning("0xff3f34", ++game.warningCount);
  561.                                 }
  562.                         }
  563.                         if (game.rsTimer == ckTimeOut) {
  564.                                 game.outStatus = "";
  565.                                 room.setDiscProperties(1, {x: 0, y: 2000, radius: 0});
  566.                                 room.setDiscProperties(2, {x: 0, y: 2000, radius: 0});
  567.                                 room.setDiscProperties(0, {color: "13454F"});
  568.                                 game.rsTimer = 1000000;                                                
  569.                         }
  570.                 }
  571.         }
  572.        
  573.         if (game.rsActive == true) {
  574.                 if ((room.getBallPosition().y > 612 || room.getBallPosition().y < -612)) {
  575.                         game.rsActive = false;
  576.                         if (game.lastPlayAnnounced == true) {
  577.                                 room.pauseGame(true);
  578.                                 game.lastPlayAnnounced = false;
  579.                                 announce("ESTE PARTIDO YA ES HISTORIA!");
  580.                         }
  581.                        
  582.                         room.setDiscProperties(0, {xgravity: 0, ygravity: 0});
  583.                        
  584.                         game.ballOutPositionX = Math.round(room.getBallPosition().x * 10) / 10;
  585.                         if (room.getBallPosition().y > 612) {
  586.                                 game.ballOutPositionY = 400485;
  587.                                 game.throwInPosY = 618;
  588.                         }
  589.                         if (room.getBallPosition().y < -612) {
  590.                                 game.ballOutPositionY = -400485;
  591.                                 game.throwInPosY = -618;
  592.                         }
  593.                         if (room.getBallPosition().x > 1130) {
  594.                                 game.ballOutPositionX = 1130;
  595.                         }
  596.                         if (room.getBallPosition().x < -1130) {
  597.                                 game.ballOutPositionX = -1130;
  598.                         }
  599.                        
  600.                        
  601.                         if (game.rsTouchTeam == 1) {                           
  602.                                 room.setDiscProperties(3, {x: game.ballOutPositionX, y: game.throwInPosY, radius: 18 });
  603.                                 sleep(100).then(() => {
  604.                                         game.outStatus = "blueThrow";
  605.                                         game.throwinKicked = false;
  606.                                         game.rsTimer = 0;
  607.                                         game.rsReady = true;
  608.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, x: game.ballOutPositionX, y: game.throwInPosY, xgravity: 0, ygravity: 0});
  609.                                         //announce("๐Ÿ–๏ธ Throw In: ๐Ÿ”ต Blue");
  610.                                         room.setDiscProperties(0, {color: "0x0fbcf9"});                        
  611.                                 });    
  612.                                 sleep(100).then(() => {
  613.                                         room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  614.                                 });
  615.                         }
  616.                         else {                         
  617.                                 room.setDiscProperties(3, {x: game.ballOutPositionX, y: game.throwInPosY, radius: 18 });
  618.                                 sleep(100).then(() => {
  619.                                         game.outStatus = "redThrow";
  620.                                         game.throwinKicked = false;
  621.                                         game.rsTimer = 0;
  622.                                         game.rsReady = true;
  623.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, x: game.ballOutPositionX, y: game.throwInPosY, xgravity: 0, ygravity: 0});
  624.                                         //announce("๐Ÿ–๏ธ Throw In: ๐Ÿ”ด Red");
  625.                                         room.setDiscProperties(0, {color: "0xff3f34"});                        
  626.                                 });    
  627.                                 sleep(100).then(() => {
  628.                                         room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  629.                                 });
  630.                         }
  631.                 }
  632.        
  633.                 if (room.getBallPosition().x > 1162 && (room.getBallPosition().y > 124 || room.getBallPosition().y < -124)) {
  634.                         game.rsActive = false; 
  635.                         if (game.lastPlayAnnounced == true) {
  636.                                 room.pauseGame(true);
  637.                                 game.lastPlayAnnounced = false;
  638.                                 announce("ESTE PARTIDO YA ES HISTORIA");
  639.                         }
  640.                         room.setDiscProperties(0, {xgravity: 0, ygravity: 0});
  641.                         room.getPlayerList().forEach(function(player) {
  642.                                 room.setPlayerDiscProperties(player.id, {invMass: 100000});
  643.                         });
  644.                        
  645.                         if (game.rsTouchTeam == 1) {                           
  646.                                 room.setDiscProperties(3, {x: 1060, y: 0, radius: 18 });
  647.                                 sleep(100).then(() => {                                
  648.                                         game.outStatus = "blueGK";
  649.                                         game.rsTimer = 0;
  650.                                         game.rsReady = true;
  651.                                         //announce("๐Ÿฅ… Saque de Arco: ๐Ÿ”ต Blue");
  652.                                         game.rsGoalKick = true;
  653.                                         game.rsSwingTimer = 0;
  654.                                         game.boosterCount = 0;
  655.                                         game.boosterState = false;
  656.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, x: 1060, y: 0, color: "0x0fbcf9", cMask: 268435519, xgravity: 0, ygravity: 0});
  657.                                 });
  658.                                 sleep(3000).then(() => {
  659.                                         room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  660.                                 });
  661.                         }
  662.                         else { 
  663.                                 //announce("๐Ÿšฉ Corner: ๐Ÿ”ด Red");      
  664.                                 game.rsSwingTimer = 0;
  665.                                 if (room.getBallPosition().y < -124) {                                 
  666.                                         room.setDiscProperties(3, {x: 1140, y: -590, radius: 18 });
  667.                                         sleep(100).then(() => {
  668.                                                 game.rsCorner = true;
  669.                                                 game.outStatus = "redCK";
  670.                                                 game.rsTimer = 0;
  671.                                                 game.rsReady = true;
  672.                                                 game.boosterCount = 0;
  673.                                                 game.boosterState = false;
  674.                                                 room.setDiscProperties(0, {x: 1140, y: -590, xspeed: 0, yspeed: 0, color: "0xff3f34", cMask: 268435519, xgravity: 0, ygravity: 0});
  675.                                                 room.setDiscProperties(2, {x: 1150, y: -670, radius: 420 });
  676.                                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  677.                                         });
  678.                                 }
  679.                                 if (room.getBallPosition().y > 124) {
  680.                                         room.setDiscProperties(3, {x: 1140, y: 590, radius: 18 });
  681.                                         sleep(100).then(() => {
  682.                                                 game.rsCorner = true;
  683.                                                 game.outStatus = "redCK";
  684.                                                 game.rsTimer = 0;
  685.                                                 game.rsReady = true;
  686.                                                 game.boosterCount = 0;
  687.                                                 game.boosterState = false;
  688.                                                 room.setDiscProperties(0, {x: 1140, y: 590, xspeed: 0, yspeed: 0, color: "0xff3f34", cMask: 268435519, xgravity: 0, ygravity: 0});
  689.                                                 room.setDiscProperties(2, {x: 1150, y: 670, radius: 420 });
  690.                                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  691.                                         });
  692.                                 }
  693.                         }
  694.                 }
  695.                 if (room.getBallPosition().x < -1162 && (room.getBallPosition().y > 124 || room.getBallPosition().y < -124)) {
  696.                         game.rsActive = false;
  697.                         if (game.lastPlayAnnounced == true) {
  698.                                 room.pauseGame(true);
  699.                                 game.lastPlayAnnounced = false;
  700.                                 announce("Fin");
  701.                         }
  702.                         room.setDiscProperties(0, {xgravity: 0, ygravity: 0});
  703.                         room.getPlayerList().forEach(function(player) {
  704.                                 room.setPlayerDiscProperties(player.id, {invMass: 100000});
  705.                         });
  706.                        
  707.                         if (game.rsTouchTeam == 1) {                           
  708.                                 //announce("๐Ÿšฉ Corner: ๐Ÿ”ต Blue" Blue");     pan>
  709.                                 game.rsSwingTimer = 0;
  710.                                 if (room.getBallPosition().y < -124) {
  711.                                         room.setDiscProperties(3, {x: -1140, y: -590, radius: 18 });
  712.                                         sleep(100).then {
  713.                                                 game.rsCorner = true;
  714.                                                 game.outStatus = "blueCK";
  715.                                                 game.rsTimer = 0;
  716.                                                 game.rsReady = true;
  717.                                                 game.boosterCount = 0;
  718.                                                 game.boosterState = false;
  719.                                                 room.setDiscProperties(0, {x: -1140, y: -590, xspeed: 0, yspeed: 0, color: "0x0fbcf9", cMask: 268435519, xgravity: 0, ygravity: 0});
  720.                                                 room.setDiscProperties(1, {x: -1150, y: -670, radius: 420 });
  721.                                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  722.                                         });    
  723.                                 }
  724.                                 if (room.getBallPosition().y > 124) {
  725.                                         room.setDiscProperties(3, {x: -1140, y: 590, radius: 18 });
  726.                                         sleep(100).then(() => {
  727.                                                 game.rsCorner = true;
  728.                                                 game.outStatus = "blueCK";
  729.                                                 game.rsTimer = 0;
  730.                                                 game.rsReady = true;
  731.                                                 game.boosterCount = 0;
  732.                                                 game.boosterState = false;
  733.                                                 room.setDiscProperties(0, {x: -1140, y: 590, xspeed: 0, yspeed: 0, color: "0x0fbcf9", cMask: 268435519, xgravity: 0, ygravity: 0});
  734.                                                 room.setDiscProperties(1, {x: -1150, y: 670, radius: 420 });
  735.                                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  736.                                         });            
  737.                                 }                              
  738.                         }
  739.                         else {                         
  740.                                 room.setDiscProperties(3, {x: -1060, y: 0, radius: 18 });
  741.                                 sleep(100).then(() => {
  742.                                         game.outStatus = "redGK";
  743.                                         game.rsTimer = 0;
  744.                                         game.rsReady = true;
  745.                                         //announce("๐Ÿฅ… Saque de Arco: ๐Ÿ”ด Red");
  746.                                         game.rsGoalKick = true;
  747.                                         game.rsSwingTimer = 0;
  748.                                         game.boosterCount = 0;
  749.                                         game.boosterState = false;
  750.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, x: -1060, y: 0, color: "0xff3f34", cMask: 268435519, xgravity: 0, ygravity: 0});
  751.                                 });
  752.                                 sleep(3000).then(() => {
  753.                                         room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  754.                                 });
  755.                         }
  756.                 }
  757.         }
  758.        
  759.         if (game.rsActive == false && (game.outStatus == "redThrow" || game.outStatus == "blueThrow")) {
  760.                 if ((room.getBallPosition().y > 612 || room.getBallPosition().y < -612) && (room.getBallPosition().x < game.ballOutPositionX - throwinDistance || room.getBallPosition().x > game.ballOutPositionX + throwinDistance) && game.bringThrowBack == false) { //if bad throw from run too far
  761.                         game.bringThrowBack     = true;
  762.                         if (game.outStatus == "redThrow") { //switch to blue throw
  763.                                 game.rsTimer = 0;
  764.                                 game.warningCount++;
  765.                                 game.outStatus = "blueThrow";                                                          
  766.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  767.                                 sleep(100).then(() => {
  768.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, color: "0x0fbcf9", x: game.ballOutPositionX, y: game.throwInPosY});   
  769.                                 });                    
  770.                         }
  771.                         else if (game.outStatus == "blueThrow") { //switch to red throw
  772.                                 game.rsTimer = 0;
  773.                                 game.warningCount++;
  774.                                 game.outStatus = "redThrow";                                                                           
  775.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0}); 
  776.                                 sleep(100).then(() => {
  777.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, color: "0xff3f34", x: game.ballOutPositionX, y: game.throwInPosY});
  778.                                 });
  779.                         }
  780.                                
  781.                 }
  782.                
  783.                 if (room.getBallPosition().y < 612 && room.getBallPosition().y > -612 && game.throwinKicked == false && game.pushedOut == false) { //if bad throw from push ball back into active without kick         
  784.                         if (game.outStatus == "redThrow") { //switch to blue throw
  785.                                 game.rsTimer = 0;
  786.                                 game.warningCount++;
  787.                                 game.outStatus = "blueThrow";                                                          
  788.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0});
  789.                                 sleep(100).then(() => {
  790.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, color: "0x0fbcf9", x: game.ballOutPositionX, y: game.throwInPosY});
  791.                                 });                                    
  792.                         }
  793.                         else if (game.outStatus == "blueThrow") { //switch to red throw
  794.                                 game.rsTimer = 0;
  795.                                 game.warningCount++;
  796.                                 game.outStatus = "redThrow";                                                                           
  797.                                 room.setDiscProperties(3, {x: 0, y: 2000, radius: 0}); 
  798.                                 sleep(100).then(() => {
  799.                                         room.setDiscProperties(0, {xspeed: 0, yspeed: 0, color: "0xffffff", x: game.ballOutPositionX, y: game.throwInPosY});
  800.                                 });
  801.                         }
  802.                         game.pushedOut = true;
  803.                 }
  804.                
  805.                 if (room.getBallPosition().y < 612 && room.getBallPosition().y > -612 && game.throwinKicked == true) { // if throw is good
  806.                         game.outStatus = "";
  807.                         game.rsActive = true;
  808.                         game.rsReady = false;
  809.                         room.setDiscProperties(0, {color: "0xffffff"});
  810.                         game.rsTimer = 1000000;
  811.                         game.warningCount++;
  812.                 }
  813.                
  814.                 if (room.getBallPosition().y.toFixed(1) == game.throwInPosY.toFixed(1) && room.getBallPosition().x.toFixed(1) == game.ballOutPositionX.toFixed(1)) {
  815.                         game.bringThrowBack     = false;
  816.                         game.pushedOut = false;
  817.                 }
  818.         }
  819. }
  820.  
  821.  
  822. function handleBallTouch() {
  823.         var players = room.getPlayerList();
  824.         var ballPosition = room.getBallPosition();
  825.         var ballRadius = game.ballRadius;
  826.         var playerRadius = 15;
  827.         var triggerDistance = ballRadius + playerRadius + 0.01;
  828.        
  829.         for (var i = 0; i < players.length; i++) { // Iterate over all the players
  830.                 var player = players[i];
  831.                 if ( player.position == null ) continue;
  832.                 var distanceToBall = pointDistance(player.position, ballPosition);
  833.                 if ( distanceToBall < triggerDistance ) {                              
  834.                         game.rsTouchTeam = player.team;
  835.                         game.throwinKicked = false;
  836.                        
  837.                         if (game.rsCorner == false && room.getDiscProperties(0).xgravity != 0) {
  838.                                 room.setDiscProperties(0, {xgravity: 0, ygravity:0});
  839.                                 game.rsSwingTimer = 10000;
  840.                         }
  841.                 }              
  842.         }
  843. }
  844.  
  845. function updateGameStatus() {
  846.         game.time = Math.floor(room.getScores().time);
  847.         game.ballRadius = room.getDiscProperties(0).radius;
  848.         game.ticks++;
  849. }
  850.  
  851.  
  852. function announce(msg, targetId, color, style, sound) {
  853.         if (color == null) {
  854.                 color = 0xFFFD82;
  855.         }
  856.         if (style == null) {
  857.                 style = "bold";
  858.         }
  859.         if (sound == null) {
  860.                 sound = 0;
  861.         }
  862.         room.sendAnnouncement(msg, targetId, color, style, sound);
  863.         console.log("Announce: " + msg);
  864. }
  865.  
  866. function whisper(msg, targetId, color, style, sound) {
  867.         if (color == null) {
  868.                 color = 0x66C7FF;
  869.         }
  870.         if (style == null) {
  871.                 style = "normal";
  872.         }
  873.         if (sound == null) {
  874.                 sound = 0;
  875.         }
  876.         room.sendAnnouncement(msg, targetId, color, style, sound);
  877.         if (room.getPlayer(targetId) != null) {
  878.                 console.log("Whisper -> " + room.getPlayer(targetId).name + ": " + msg);
  879.         }
  880. }
  881.  
  882. function isAdminPresent() {
  883.         var players = room.getPlayerList();
  884.         if (players.find((player) => player.admin) != null) {
  885.                 return true;
  886.         }
  887.         else {
  888.                 return false;
  889.         }
  890. }
  891.  
  892. function displayAdminMessage() {
  893.         if (isAdminPresent() == false) {
  894.                 announce("No hay admin presente: escribe !admin");
  895.         }
  896. }
  897.  
  898. function pointDistance(p1, p2) {
  899.         var d1 = p1.x - p2.x;
  900.         var d2 = p1.y - p2.y;
  901.         return Math.sqrt(d1 * d1 + d2 * d2);
  902. }
  903.  
  904. function sleep (time) {
  905.   return new Promise((resolve) => setTimeout(resolve, time));
  906. }
  907.  
  908. function ballWarning(origColour, warningCount) {
  909.         sleep(200).then(() => {
  910.                 if (game.warningCount == warningCount) {
  911.                         room.setDiscProperties(0, {color: "0ffffff"});
  912.                 }
  913.         });
  914.         sleep(400).then(() => {
  915.                 if (game.warningCount == warningCount) {
  916.                         room.setDiscProperties(0, {color: origColour});
  917.                 }
  918.         });
  919.         sleep(600).then(() => {
  920.                 if (game.warningCount == warningCount) {
  921.                         room.setDiscProperties(0, {color: "0ffffff"});
  922.                 }
  923.         });
  924.         sleep(800).then(() => {
  925.                 if (game.warningCount == warningCount) {
  926.                         room.setDiscProperties(0, {color: origColour});
  927.                 }
  928.         });
  929.         sleep(1000).then(() => {
  930.                 if (game.warningCount == warningCount) {
  931.                         room.setDiscProperties(0, {color: "0xffffff"});
  932.                 }
  933.         });
  934.         sleep(1200).then(() => {
  935.                 if (game.warningCount == warningCount) {
  936.                         room.setDiscProperties(0, {color: origColour});
  937.                 }
  938.         });
  939.         sleep(1400).then(() => {
  940.                 if (game.warningCount == warningCount) {
  941.                         room.setDiscProperties(0, {color: "0xffffff"});
  942.                 }
  943.         });
  944.         sleep(1600).then(() => {
  945.                 if (game.warningCount == warningCount) {
  946.                         room.setDiscProperties(0, {color: origColour});
  947.                 }
  948.         });
  949.         sleep(1675).then(() => {
  950.                 if (game.warningCount == warningCount) {
  951.                         room.setDiscProperties(0, {color: "0xffffff"});
  952.                 }
  953.         });
  954.         sleep(1750).then(() => {
  955.                 if (game.warningCount == warningCount) {
  956.                         room.setDiscProperties(0, {color: origColour});
  957.                 }
  958.         });
  959. }
  960.  
  961. function extraTime() {
  962.         var extraSeconds = Math.ceil(game.extraTimeCount / 60);
  963.         game.extraTimeEnd = (gameTime * 60) + extraSeconds;
  964.         announce("TIEMPO EXTRA: " + extraSeconds + " Segundos", null, null, null, 1);
  965. }
  966.  
  967. function avatarCelebration(playerId, avatar) {
  968.         room.setPlayerAvatar(playerId, avatar);
  969.         sleep(250).then(() => {
  970.                 room.setPlayerAvatar(playerId, null);
  971.         });
  972.         sleep(500).then(() => {
  973.                 room.setPlayerAvatar(playerId, avatar);
  974.         });
  975.         sleep(750).then(() => {
  976.                 room.setPlayerAvatar(playerId, null);
  977.         });
  978.         sleep(1000).then(() => {
  979.                 room.setPlayerAvatar(playerId, avatar);
  980.         });
  981.         sleep(1250).then(() => {
  982.                 room.setPlayerAvatar(playerId, null);
  983.         });
  984.         sleep(1500).then(() => {
  985.                 room.setPlayerAvatar(playerId, avatar);
  986.         });
  987.         sleep(1750).then(() => {
  988.                 room.setPlayerAvatar(playerId, null);
  989.         });
  990.         sleep(2000).then(() => {
  991.                 room.setPlayerAvatar(playerId, avatar);
  992.         });
  993.         sleep(2250).then(() => {
  994.                 room.setPlayerAvatar(playerId, null);
  995.         });
  996.         sleep(2500).then(() => {
  997.                 room.setPlayerAvatar(playerId, avatar);
  998.         });
  999.         sleep(2750).then(() => {
  1000.                 room.setPlayerAvatar(playerId, null);
  1001.         });
  1002.         sleep(3000).then(() => {
  1003.                 room.setPlayerAvatar(playerId, avatar);
  1004.         });
  1005.         sleep(3250).then(() => {
  1006.                 room.setPlayerAvatar(playerId, null);
  1007.         });
  1008. }
  1009.  
  1010. function secondsToMinutes(time) {
  1011.         // Hours, minutes and seconds
  1012.     var hrs = ~~(time / 3600);
  1013.     var mins = ~~((time % 3600) / 60);
  1014.     var secs = ~~time % 60;
  1015.  
  1016.     // Output like "1:01" or "4:03:59" or "123:03:59"
  1017.     var ret = "";
  1018.     if (hrs > 0) {
  1019.         ret += "" + hrs + ":" + (mins < 10 ? "0" : "");
  1020.    }
  1021.    ret += "" + mins + ":" + (secs < 10 ? "0" : "");
  1022.    ret += "" + secs;
  1023.    return ret;
  1024. }
  1025.  
  1026. function blockThrowIn() {
  1027.         var players = room.getPlayerList().filter((player) => player.team != 0);
  1028.         if (room.getBallPosition().y < 0) { // top throw line
  1029.                 if (game.outStatus == "redThrow") {
  1030.                         players.forEach(function(player) {
  1031.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).y < 0) {
  1032.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 536870918) {
  1033.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 536870918});
  1034.                                         }
  1035.                                         if (player.position.y < -485) {
  1036.                                                 room.setPlayerDiscProperties(player.id, {y: -470});
  1037.                                         }
  1038.                                 }
  1039.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1040.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1041.                                 }
  1042.                                 if (room.getDiscProperties(17).x != 1149) { // show top red line
  1043.                                         room.setDiscProperties(17, {x: 1149});
  1044.                                 }
  1045.                                 if (room.getDiscProperties(19).x != -1149) { // hide top blue line
  1046.                                         room.setDiscProperties(19, {x: -1149});
  1047.                                 }
  1048.                         });
  1049.                 }
  1050.                 if (game.outStatus == "blueThrow") {
  1051.                         players.forEach(function(player) {
  1052.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).y < 0) {
  1053.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 536870918) {
  1054.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 536870918});
  1055.                                         }
  1056.                                         if (player.position.y < -485) {
  1057.                                                 room.setPlayerDiscProperties(player.id, {y: -470});
  1058.                                         }
  1059.                                 }
  1060.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1061.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1062.                                 }
  1063.                                 if (room.getDiscProperties(19).x != 1149) { // show top blue line
  1064.                                         room.setDiscProperties(19, {x: 1149});
  1065.                                 }
  1066.                                 if (room.getDiscProperties(17).x != -1149) { // hide top red line
  1067.                                         room.setDiscProperties(17, {x: -1149});
  1068.                                 }
  1069.                         });
  1070.                 }
  1071.         }
  1072.         if (room.getBallPosition().y > 0) { // bottom throw line
  1073.                 if (game.outStatus == "redThrow") {
  1074.                         players.forEach(function(player) {
  1075.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).y > 0) {
  1076.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 536870918) {
  1077.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 536870918});
  1078.                                         }
  1079.                                         if (player.position.y > 485) {
  1080.                                                 room.setPlayerDiscProperties(player.id, {y: 470});
  1081.                                         }
  1082.                                 }
  1083.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1084.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1085.                                 }
  1086.                                 if (room.getDiscProperties(21).x != 1149) { // show bottom red line
  1087.                                         room.setDiscProperties(21, {x: 1149});
  1088.                                 }
  1089.                                 if (room.getDiscProperties(23).x != -1149) { // hide bottom blue line
  1090.                                         room.setDiscProperties(23, {x: -1149});
  1091.                                 }
  1092.                         });
  1093.                 }
  1094.                 if (game.outStatus == "blueThrow") {
  1095.                         players.forEach(function(player) {
  1096.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).y > 0) {
  1097.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 536870918) {
  1098.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 536870918});
  1099.                                         }
  1100.                                         if (player.position.y > 485) {
  1101.                                                 room.setPlayerDiscProperties(player.id, {y: 470});
  1102.                                         }
  1103.                                 }
  1104.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1105.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1106.                                 }
  1107.                                 if (room.getDiscProperties(23).x != 1149) { // show bottom blue line
  1108.                                         room.setDiscProperties(23, {x: 1149});
  1109.                                 }
  1110.                                 if (room.getDiscProperties(21).x != -1149) { // hide bottom red line
  1111.                                         room.setDiscProperties(21, {x: -1149});
  1112.                                 }
  1113.                         });
  1114.                 }              
  1115.         }      
  1116. }
  1117.  
  1118.  
  1119. function blockGoalKick() {
  1120.         var players = room.getPlayerList().filter((player) => player.team != 0);
  1121.         if (room.getBallPosition().x < 0) { // left side red goal kick
  1122.                 if (game.outStatus == "redGK") {
  1123.                         players.forEach(function(player) {
  1124.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).x < 0) {
  1125.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 268435462) {
  1126.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 268435462});
  1127.                                         }
  1128.                                         if (player.position.x < -840 && player.position.y > -320 && player.position.y < 320) {
  1129.                                                 room.setPlayerDiscProperties(player.id, {x: -825});
  1130.                                         }
  1131.                                 }
  1132.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1133.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1134.                                 }
  1135.                         });
  1136.                 }
  1137.         }
  1138.         if (room.getBallPosition().x > 0) { // right side blue goal kick
  1139.                 if (game.outStatus == "blueGK") {
  1140.                         players.forEach(function(player) {
  1141.                                 if (player.team == 1 && room.getPlayerDiscProperties(player.id).x > 0) {
  1142.                                         if (room.getPlayerDiscProperties(player.id).cGroup != 268435462) {
  1143.                                                 room.setPlayerDiscProperties(player.id, {cGroup: 268435462});
  1144.                                         }
  1145.                                         if (player.position.x > 840 && player.position.y > -320 && player.position.y < 320) {
  1146.                                                 room.setPlayerDiscProperties(player.id, {x: 825});
  1147.                                         }
  1148.                                 }
  1149.                                 if (player.team == 2 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1150.                                         room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1151.                                 }
  1152.                         });
  1153.                 }              
  1154.         }      
  1155. }
  1156.  
  1157.  
  1158.  
  1159. function removeBlock() {
  1160.         var players = room.getPlayerList().filter((player) => player.team != 0);
  1161.         if (game.outStatus == "") {
  1162.                 players.forEach(function(player) {
  1163.                         if (player.team == 1 && room.getPlayerDiscProperties(player.id).cGroup != 2) {
  1164.                                 room.setPlayerDiscProperties(player.id, {cGroup: 2});
  1165.                         }
  1166.                         if (player.team == 2 && room.getPlayerDiscProperties(player.id).cGroup != 4) {
  1167.                                 room.setPlayerDiscProperties(player.id, {cGroup: 4});
  1168.                         }
  1169.                 });
  1170.                 if (room.getDiscProperties(17).x != -1149) { // hide top red line
  1171.                         room.setDiscProperties(17, {x: -1149});
  1172.                 }
  1173.                 if (room.getDiscProperties(19).x != -1149) { // hide top blue line
  1174.                         room.setDiscProperties(19, {x: -1149});
  1175.                 }
  1176.                 if (room.getDiscProperties(21).x != -1149) { // hide bottom red line
  1177.                         room.setDiscProperties(21, {x: -1149});
  1178.                 }
  1179.                 if (room.getDiscProperties(23).x != -1149) { // hide bottom blue line
  1180.                         room.setDiscProperties(23, {x: -1149});
  1181.                 }              
  1182.         }
  1183. }

Raw Paste

Login or Register to edit or fork this paste. It's free.