kill me irl

From tobi, 10 Months ago, written in Venderant Nalaberong, viewed 109 times.
earl https://txt.blorgblorgbl.org/view/5021e744 Embed
Download Paste or View Raw
  1. const http = require('http');
  2. const express = require('express');
  3. const cors = require('cors');
  4. const colyseus = require('colyseus');
  5. const monitor = require("@colyseus/monitor").monitor;
  6. const schemalib = require('@colyseus/schema');
  7. require('@geckos.io/phaser-on-nodejs')
  8. const phaser = require('phaser');
  9. var easystarjs = require('easystarjs');
  10. var easystar = new easystarjs.js();
  11.  
  12. const updateVersion = 4;
  13.  
  14. function moveToward (x1, y1, x2, y2, speed = 100) {
  15.         moverad = Phaser.Math.Angle.Between(x1, y1, x2, y2);
  16.         newx = speed * Math.cos(moverad);
  17.         newy = speed * Math.sin(moverad);
  18.         return([newx, newy]);
  19. };
  20.  
  21. function moveTowardAngle (currentThing)
  22. {
  23.         moverad = currentThing.angle;
  24.         movex = currentThing.speed * Math.cos(moverad);
  25.         movey = currentThing.speed * Math.sin(moverad);
  26.         currentThing.body.setVelocity(movex, movey);
  27. }
  28.  
  29. function calculateGrid (walls, blockers) {
  30.         var thegrid = []
  31.         var phaserScene = game.scene.getScene("GameplayScene");
  32.        
  33.         for(y = 0; y < (walls.height/32); y++){
  34.                 col = [];
  35.                 for(x = 0; x < (walls.width/32); x++){
  36.                         if (walls.getTileAt(x,y) != null)
  37.                         {
  38.                                 col.push(1);
  39.                         }
  40.                         else if (blockers.length > 0)
  41.                         {
  42.                                 var blocked = false;
  43.                                 var cumsluts = phaserScene.add.rectangle((x*32),(y*32),32,32)
  44.                                 phaserScene.physics.add.existing(cumsluts);
  45.                                 blockers.forEach((hotCum) => {
  46.                                         if (phaserScene.physics.overlap(cumsluts, hotCum) == true) {
  47.                                                 blocked = true;
  48.                                                 console.log("block'd");
  49.                                         }
  50.                                 });
  51.                                 cumsluts.destroy();
  52.                                
  53.                                 if (blocked == true) {
  54.                                         col.push(1);
  55.                                 }
  56.                                 else if (blocked == false) {
  57.                                         col.push(0);
  58.                                 }
  59.                         }
  60.                         else
  61.                         {
  62.                                 col.push(0);
  63.                         }
  64.                 }
  65.                 thegrid.push(col);
  66.         }
  67.        
  68.         var phaserScene = game.scene.getScene("GameplayScene");
  69.         if (phaserScene.theEnemies && phaserScene.theEnemies.getChildren().length > 0) {
  70.                 phaserScene.theEnemies.getChildren().forEach((hotCum) => {
  71.                         hotCum.path = null;
  72.                 });
  73.         }
  74.        
  75.         console.log("huh?");
  76.         return thegrid;
  77. }
  78.  
  79. function deferredSetEnemyPath(enemy) {
  80.  return function(path) { setEnemyPath(path,enemy); }                           
  81. }
  82.  
  83. function setEnemyPath(path,enemy) {
  84.         var phaserScene = game.scene.getScene("GameplayScene");
  85.         if (path != null && path != undefined)
  86.         {
  87.                 enemy.path = path;
  88.                 phaserScene.pathBlocked = false;
  89.         }
  90.         else {
  91.                 phaserScene.pathBlocked = true;
  92.         }
  93. }
  94.  
  95. function spawnEnemy (x, y, health = 2, speed = 75, damage = 1) {
  96.         var phaserScene = game.scene.getScene("GameplayScene");
  97.         var newEnemy = phaserScene.physics.add.image(x,y,'player');
  98.         newEnemy.angle = 90;
  99.         newEnemy.speed = speed;
  100.         newEnemy.maxHealth = health;
  101.         newEnemy.health = health;
  102.         newEnemy.damage = damage;
  103.         newEnemy.damageTimer = null;
  104.         newEnemy.path = null;
  105.         newEnemy.flashing = false;
  106.         phaserScene.theEnemies.add(newEnemy);
  107.         hardDicks.state.enemies.push(new Enemy(newEnemy.angle, x, y));
  108.         console.log("new enemy spawned @ " + x.toString() + ", " + y.toString());
  109. }
  110.  
  111. function spawnBullet (origin, targetx, targety, damage=1, angleMod=0) {
  112.         var theClient = origin;
  113.         var phaserScene = game.scene.getScene("GameplayScene");
  114.         var newBullet = phaserScene.physics.add.image(theClient.x,theClient.y,'bullet');
  115.         newBullet.speed = 350;
  116.         newBullet.angle = Phaser.Math.Angle.Between(theClient.x, theClient.y, targetx, targety) + Phaser.Math.DegToRad(angleMod);
  117.         //newBullet.setAngle(Phaser.Math.RadToDeg(newBullet.angle)+90);
  118.         newBullet.body.width = 3;
  119.         newBullet.body.height = 3;
  120.         newBullet.setOrigin(0.5,0.5);
  121.         newBullet.x = theClient.x;
  122.         newBullet.y = theClient.y;
  123.         newBullet.team = "players";
  124.         newBullet.damage = damage;
  125.         phaserScene.theBullets.add(newBullet);
  126. }
  127.  
  128. function turnToward (currentEnemy, turntargetx, turntargety) {
  129.         newangle = Phaser.Math.Angle.WrapDegrees(Phaser.Math.RoundTo(Phaser.Math.RadToDeg(Phaser.Math.Angle.Between(currentEnemy.x, currentEnemy.y, turntargetx, turntargety))) + 90);
  130.        
  131.         if ( newangle > currentEnemy.angle + 1 )
  132.         {
  133.                 if ( newangle - currentEnemy.angle > 180 )
  134.                 { intermediateangle = Phaser.Math.Angle.WrapDegrees(currentEnemy.angle - 1); }
  135.                 else
  136.                 { intermediateangle = Phaser.Math.Angle.WrapDegrees(currentEnemy.angle + 1); }
  137.         }
  138.         else if ( newangle < currentEnemy.angle - 1 )
  139.         {
  140.                 if ( currentEnemy.angle - newangle > 180 )
  141.                 { intermediateangle = Phaser.Math.Angle.WrapDegrees(currentEnemy.angle + 1); }
  142.                 else
  143.                 { intermediateangle = Phaser.Math.Angle.WrapDegrees(currentEnemy.angle - 1); }
  144.         }
  145.         else
  146.         {
  147.                 intermediateangle = newangle;
  148.         }
  149.        
  150.         currentEnemy.setAngle(intermediateangle);
  151. }
  152.  
  153. var gameState = "empty";
  154. var gameStateTimer = null;
  155. var waveNum = 1;
  156.  
  157. var GameplayScene = new Phaser.Class({
  158.        
  159.         Extends: Phaser.Scene,
  160.        
  161.         initialize:
  162.        
  163.         function GameplayScene ()
  164.         {
  165.                 Phaser.Scene.call(this, { key: 'GameplayScene' });
  166.         },
  167.        
  168.         preload: function ()
  169.     {
  170.                 this.load.image('player','../../../../assets/player.png');
  171.                 this.load.image('bullet','../../../../assets/bullet.png');
  172.                 this.load.image('reactor','../../../../assets/reactor.png');
  173.                 this.load.image('block_set','../../../../assets/block_set.png');
  174.                 this.load.image('block','../../../../assets/placeblock.png');
  175.                 this.load.tilemapTiledJSON("xmap", "../../../../assets/xmap.json");
  176.         },
  177.        
  178.         create: function ()
  179.     {
  180.                 this.levelmap = this.make.tilemap({ key: "xmap" });
  181.                 this.levelmap.addTilesetImage('block_set', 'block_set');
  182.                
  183.                 this.walls = this.levelmap.createStaticLayer("walls", "block_set", 0, 0);
  184.                
  185.                 this.walls.setCollisionByProperty({ collide: true });
  186.                
  187.                 this.blockers = this.physics.add.group();
  188.                
  189.                 easystar.setGrid(calculateGrid(this.walls, this.blockers.getChildren()));
  190.                 easystar.setAcceptableTiles([0]);
  191.                 easystar.setTileCost(0, 1);
  192.                 easystar.enableDiagonals();
  193.                
  194.                 console.log("i am going to kill a man");
  195.                 this.physics.world.setBounds(0, 0, this.levelmap.width * 32, this.levelmap.height * 32);
  196.                 this.thePlayers = this.physics.add.group();
  197.                 this.physics.add.collider(this.thePlayers, this.walls);
  198.                 this.theBullets = this.physics.add.group();
  199.                 this.theEnemies = this.physics.add.group();
  200.                 this.corpseQueue = [];
  201.                 this.physics.add.collider(this.theEnemies, this.walls);
  202.                 this.physics.add.collider(this.thePlayers, this.theEnemies);
  203.                 this.physics.add.collider(this.theEnemies, this.blockers);
  204.                 //this.physics.add.collider(this.thePlayers, this.blockers);
  205.                 this.physics.collide(this.thePlayers);
  206.                 this.physics.collide(this.theEnemies);
  207.                
  208.                 this.pathBlocked = false;
  209.                
  210.                 this.theReactor = this.physics.add.image(this.levelmap.createFromObjects('objects', 'reactorspawn')[0].setVisible(false).x, this.levelmap.createFromObjects('objects', 'reactorspawn')[0].setVisible(false).y, 'reactor');
  211.                 this.theReactor.body.setImmovable(true);
  212.                 //this.physics.add.collider(this.thePlayers, this.theReactor);
  213.                
  214.                 this.theReactor.maxHealth = 50;
  215.                 this.theReactor.health = this.theReactor.maxHealth;
  216.                 this.theReactor.alive = true;
  217.                
  218.                 this.spawnTimer = null;
  219.         },
  220.        
  221.         update: function ()
  222.     {
  223.                 if (this.pathBlocked == true) {
  224.                         var theID = this.blockers.getChildren()[this.blockers.getChildren().length - 1].placer
  225.                         this.blockers.remove(this.blockers.getChildren()[this.blockers.getChildren().length - 1]);
  226.                         hardDicks.state.placeables.pop();
  227.                         var theClient = this.thePlayers.getChildren()[this.thePlayers.getChildren().findIndex(hotcum => hotcum.id == theID)]
  228.                         theClient.placeables_blocks++;
  229.                         hardDicks.broadcast("refresh_blocks");
  230.                         easystar.setGrid(calculateGrid(this.walls, this.blockers.getChildren()));
  231.                         this.pathBlocked = false;
  232.                 }
  233.                 easystar.calculate();
  234.                 this.theBullets.getChildren().forEach((hotCum) => {
  235.                         moveTowardAngle(hotCum);
  236.                         if (hotCum.x < 0 || hotCum.x > this.levelmap.width * 32) {
  237.                                 hotCum.destroy();
  238.                                 this.theBullets.remove(hotCum);
  239.                         }
  240.                         if (hotCum.y < 0 || hotCum.y > this.levelmap.height * 32) {
  241.                                 hotCum.destroy();
  242.                                 this.theBullets.remove(hotCum);
  243.                         }
  244.                         if (this.walls.getTileAtWorldXY(hotCum.x, hotCum.y) != null)
  245.                         {
  246.                                 hotCum.destroy();
  247.                                 this.theBullets.remove(hotCum);
  248.                         }
  249.                 });
  250.                 this.theEnemies.getChildren().forEach((hotCum) => {
  251.                         var theCenterX = this.theReactor.x;
  252.                         var theCenterY = this.theReactor.y;
  253.                         if (hotCum.path == null && Phaser.Math.Distance.Between(hotCum.x, hotCum.y, theCenterX, theCenterY) > 32) {
  254.                                 easystar.findPath(Math.floor(hotCum.x/32), Math.floor(hotCum.y/32), Math.floor(theCenterX/32), Math.floor(theCenterY/32), deferredSetEnemyPath(hotCum));
  255.                         }
  256.                         else if (hotCum.path != null && hotCum.path[0]) {
  257.                                 turnToward(hotCum,(hotCum.path[0].x*32)+16,(hotCum.path[0].y*32)+16);
  258.                                 var cumsluts = moveToward(hotCum.x, hotCum.y, (hotCum.path[0].x*32)+16, (hotCum.path[0].y*32)+16, hotCum.speed);
  259.                                 hotCum.body.setVelocity(cumsluts[0], cumsluts[1]);
  260.                                 if (Phaser.Math.Distance.Between(hotCum.x, hotCum.y, (hotCum.path[0].x*32)+16, (hotCum.path[0].y*32)+16) <= 16) {
  261.                                         hotCum.path.shift();
  262.                                 }
  263.                         }
  264.                         if (Phaser.Math.Distance.Between(hotCum.x, hotCum.y, theCenterX, theCenterY) <= 32) {
  265.                                 hotCum.body.setVelocity(0);
  266.                                 hotCum.path = null;
  267.                         }
  268.                        
  269.                         this.theBullets.getChildren().forEach((iceCum) => {
  270.                                 if (iceCum.team == "players" && Phaser.Math.Distance.Between(hotCum.x, hotCum.y, iceCum.x, iceCum.y) <= 12) {
  271.                                         hotCum.health -= iceCum.damage;
  272.                                         iceCum.destroy();
  273.                                         this.theBullets.remove(iceCum);
  274.                                         hotCum.flashing = true;
  275.                                         this.time.addEvent({ delay: 100, callback: (spooge=hotCum)=>{spooge.flashing = false} });
  276.                                 }
  277.                         });
  278.                        
  279.                         if (Phaser.Math.Distance.Between(hotCum.x, hotCum.y, this.theReactor.x, this.theReactor.y) <= 32 && hotCum.damageTimer == null && this.theReactor.alive == true) {
  280.                                 hotCum.damageTimer = this.time.addEvent({ delay: 1000, callback: (boatloadsOfCum = hotCum)=>{boatloadsOfCum.damageTimer = null;} });
  281.                                 this.theReactor.health -= hotCum.damage;
  282.                                 hardDicks.broadcast("damage_reactor", {currentHealth: this.theReactor.health, maxHealth: this.theReactor.maxHealth});
  283.                         }
  284.                        
  285.                         if (hotCum.health <= 0) {
  286.                                 hotCum.sprite = "enemy_fractured";
  287.                                
  288.                                 if (Phaser.Math.Between(1,100) <= 15) {
  289.                                         var rollTheDice = Phaser.Math.Between(1,4)
  290.                                         if (rollTheDice == 1){
  291.                                                 hardDicks.state.pickups.push(new Pickup("weap_shotgun", hotCum.x, hotCum.y))
  292.                                         }
  293.                                         else if (rollTheDice == 2){
  294.                                                 hardDicks.state.pickups.push(new Pickup("weap_rapidfire", hotCum.x, hotCum.y))
  295.                                         }
  296.                                         else if (rollTheDice == 3){
  297.                                                 hardDicks.state.pickups.push(new Pickup("genheal", hotCum.x, hotCum.y))
  298.                                         }
  299.                                         else if (rollTheDice == 4){
  300.                                                 hardDicks.state.pickups.push(new Pickup("wallpickup", hotCum.x, hotCum.y))
  301.                                         }
  302.                                 }
  303.                                
  304.                                 this.corpseQueue.push(hotCum);
  305.                                 this.theEnemies.remove(hotCum);
  306.                         }
  307.                 });
  308.         }
  309. });
  310.  
  311. const game = new Phaser.Game({ type: Phaser.HEADLESS, fps: 30, audio: {noAudio: true}, physics: {default:'arcade'}, scene: [GameplayScene]});
  312.  
  313. const schema = schemalib.Schema;
  314. const MapSchema = schemalib.MapSchema;
  315. const ArraySchema = schemalib.ArraySchema;
  316.  
  317. class Player extends schema {
  318.         constructor (clientid, x, y, angle) {
  319.         super();
  320.  
  321.                 this.id = clientid;
  322.                 this.name = "";
  323.                 this.x = x;
  324.                 this.y = y;
  325.                 this.angle = angle;
  326.                 this.weapon = "regular";
  327.                 this.ammo = 0;
  328.                 this.blocks = 0;
  329.     }
  330. }
  331. schemalib.defineTypes(Player, {
  332.         id: "string",
  333.         name: "string",
  334.         x: "number",
  335.         y: "number",
  336.         angle: "number",
  337.         weapon: "string",
  338.         ammo: "number",
  339.         blocks: "number"
  340. });
  341.  
  342. class Bullet extends schema {
  343.         constructor (angle, x, y) {
  344.                 super();
  345.                
  346.                 this.angle = angle;
  347.                 this.x = x;
  348.                 this.y = y;
  349.         }
  350. }
  351. schemalib.defineTypes(Bullet, {
  352.         angle: "number",
  353.         x: "number",
  354.         y: "number"
  355. });
  356.  
  357. class Enemy extends schema {
  358.         constructor (angle, x, y, flashing=false) {
  359.                 super();
  360.                
  361.                 this.angle = angle;
  362.                 this.x = x;
  363.                 this.y = y;
  364.                 this.flashing = flashing;
  365.         }
  366. }
  367. schemalib.defineTypes(Enemy, {
  368.         angle: "number",
  369.         x: "number",
  370.         y: "number",
  371.         flashing: "boolean"
  372. });
  373.  
  374. class Corpse extends schema {
  375.         constructor (sprite, angle, x, y) {
  376.                 super();
  377.                
  378.                 this.sprite = sprite;
  379.                 this.angle = angle;
  380.                 this.x = x;
  381.                 this.y = y;
  382.         }
  383. }
  384. schemalib.defineTypes(Corpse, {
  385.         sprite: "string",
  386.         angle: "number",
  387.         x: "number",
  388.         y: "number"
  389. });
  390.  
  391. class Pickup extends schema {
  392.         constructor (type, x, y) {
  393.                 super();
  394.                
  395.                 this.type = type;
  396.                 this.x = x;
  397.                 this.y = y;
  398.         }
  399. }
  400.  
  401. schemalib.defineTypes(Pickup, {
  402.         type: "string",
  403.         x: "number",
  404.         y: "number"
  405. });
  406.  
  407. class Placeable extends schema {
  408.         constructor (type, x, y) {
  409.                 super();
  410.                
  411.                 this.type = type;
  412.                 this.x = x;
  413.                 this.y = y;
  414.         }
  415. }
  416.  
  417. schemalib.defineTypes(Placeable, {
  418.         type: "string",
  419.         x: "number",
  420.         y: "number"
  421. });
  422.  
  423. class MyState extends schema {
  424.     constructor () {
  425.         super();
  426.  
  427.         this.players = new MapSchema();
  428.                 this.bullets = new ArraySchema();
  429.                 this.enemies = new ArraySchema();
  430.                 this.corpses = new ArraySchema();
  431.                 this.pickups = new ArraySchema();
  432.                 this.placeables = new ArraySchema();
  433.     }
  434. }
  435. schemalib.defineTypes(MyState, {
  436.   players: { map: Player },
  437.   bullets: { array: Bullet },
  438.   enemies: { array: Enemy },
  439.   corpses: { array: Corpse },
  440.   pickups: { array: Pickup },
  441.   placeables: { array: Placeable },
  442. });
  443.  
  444.  
  445. var hardDicks = null;
  446.  
  447. MyRoom = class extends colyseus.Room {
  448.  
  449.         onCreate (options) {
  450.                 this.setState(new MyState());
  451.                
  452.                 hardDicks = this;
  453.  
  454.                 this.setSimulationInterval((deltaTime) => this.update(deltaTime),33.3);
  455.                
  456.                 this.onMessage("send_player_angle", (client, message) => {
  457.                         var phaserScene = game.scene.getScene("GameplayScene");
  458.                         if (phaserScene.thePlayers != undefined) {
  459.                                 phaserScene.thePlayers.getChildren()[phaserScene.thePlayers.getChildren().findIndex(hotcum => hotcum.id == client.id)].angle = message.angle;
  460.                         }
  461.                 });
  462.                
  463.                 this.onMessage("send_name", (client, message) => {
  464.                         this.state.players.get(client.id).name = message.newname;
  465.                         console.log("client "+client.id+" is now named "+message.newname);
  466.                 });
  467.                
  468.                 this.onMessage("fire_bullet", (client, message) => {
  469.                         var phaserScene = game.scene.getScene("GameplayScene");
  470.                         var theClient = phaserScene.thePlayers.getChildren()[phaserScene.thePlayers.getChildren().findIndex(hotcum => hotcum.id == client.id)]
  471.                         if (theClient.shotTimer == null) {
  472.                                 if (theClient.weapon == "weap_shotgun") {
  473.                                         spawnBullet(theClient, message.targetx, message.targety, 2, -9);
  474.                                         spawnBullet(theClient, message.targetx, message.targety, 2, -6);
  475.                                         spawnBullet(theClient, message.targetx, message.targety, 2, -3);
  476.                                         spawnBullet(theClient, message.targetx, message.targety, 2);
  477.                                         spawnBullet(theClient, message.targetx, message.targety, 2, 3);
  478.                                         spawnBullet(theClient, message.targetx, message.targety, 2, 6);
  479.                                         spawnBullet(theClient, message.targetx, message.targety, 2, 9);
  480.                                         var theDelay = 800;
  481.                                 }
  482.                                 else if (theClient.weapon == "weap_rapidfire") {
  483.                                         spawnBullet(theClient, message.targetx, message.targety, 1);
  484.                                         var theDelay = 100;
  485.                                 }
  486.                                 else {
  487.                                         spawnBullet(theClient, message.targetx, message.targety, 2);
  488.                                         var theDelay = 500;
  489.                                 }
  490.                                
  491.                                 theClient.ammo--;
  492.                                
  493.                                 if (theClient.ammo <= 0) { theClient.weapon = "regular"; }
  494.                                
  495.                                 theClient.shotTimer = phaserScene.time.addEvent({ delay: theDelay, callback: (hotCum = theClient)=>{hotCum.shotTimer = null;} });
  496.                         }
  497.                 });
  498.                
  499.                 this.onMessage("place_block", (client, message) => {
  500.                         var phaserScene = game.scene.getScene("GameplayScene");
  501.                         var theClient = phaserScene.thePlayers.getChildren()[phaserScene.thePlayers.getChildren().findIndex(hotcum => hotcum.id == client.id)]
  502.                        
  503.                         if (theClient.placeables_blocks > 0) {
  504.                                 if (message.x >= phaserScene.theReactor.x-192 && message.x <= phaserScene.theReactor.x+192 && message.y >= phaserScene.theReactor.y-192 && message.y <= phaserScene.theReactor.y+192) {
  505.                                         console.log("you can't place that there :(");                          
  506.                                 }
  507.                                 else {
  508.                                         var newBlock = phaserScene.physics.add.image(Math.floor(message.x/32)*32,Math.floor(message.y/32)*32,'block');
  509.                                         phaserScene.blockers.add(newBlock);
  510.                                         newBlock.setImmovable(true);
  511.                                         newBlock.placer = theClient.id;
  512.                                         this.state.placeables.push(new Placeable("block", Math.floor(message.x/32)*32, Math.floor(message.y/32)*32));
  513.                                         theClient.placeables_blocks--;
  514.                                         /* if (phaserScene.blockers.getChildren().length > 11) {
  515.                                                 phaserScene.blockers.remove(phaserScene.blockers.getChildren()[0]);
  516.                                                 this.state.placeables.shift();
  517.                                                 this.broadcast("refresh_blocks");
  518.                                         } */
  519.                                         easystar.setGrid(calculateGrid(phaserScene.walls, phaserScene.blockers.getChildren()));
  520.                                 }
  521.                         }
  522.                 });
  523.                
  524.                 this.onMessage("send_movement", (client, message) => {
  525.                         var phaserScene = game.scene.getScene("GameplayScene");
  526.                         if (phaserScene.thePlayers && phaserScene.thePlayers.getChildren().length > 0) {
  527.                                 var theClient = phaserScene.thePlayers.getChildren()[phaserScene.thePlayers.getChildren().findIndex(hotcum => hotcum.id == client.id)]
  528.                                 if (message.hor != 0 || message.vert != 0) {
  529.                                         var cumsluts = moveToward(theClient.x, theClient.y, theClient.x+message.hor, theClient.y+message.vert, theClient.speed);
  530.                                         theClient.body.setVelocity(cumsluts[0], cumsluts[1]);
  531.                                 }
  532.                                 else {
  533.                                         theClient.body.setVelocity(0);
  534.                                 }
  535.                                
  536.                                 this.state.pickups.forEach((hotCum) => {
  537.                                         if (Phaser.Math.Distance.Between(theClient.x,theClient.y,hotCum.x,hotCum.y) <= 20) {
  538.                                                 if (hotCum.type == "genheal") {
  539.                                                         if (gameState != "failure") {
  540.                                                                 phaserScene.theReactor.health += 15;
  541.                                                                 if (phaserScene.theReactor.health > phaserScene.theReactor.maxHealth) {
  542.                                                                         phaserScene.theReactor.health = phaserScene.theReactor.maxHealth;
  543.                                                                 }
  544.                                                                 this.broadcast("damage_reactor", {currentHealth: phaserScene.theReactor.health, maxHealth: phaserScene.theReactor.maxHealth});
  545.                                                         }
  546.                                                 }
  547.                                                 else if (hotCum.type == "wallpickup") {
  548.                                                         theClient.placeables_blocks += 3;
  549.                                                         console.log(theClient.placeables_blocks);
  550.                                                 }
  551.                                                 else {
  552.                                                         theClient.weapon = hotCum.type;
  553.                                                         if (hotCum.type == "weap_rapidfire") { theClient.ammo = 75; }
  554.                                                         else if (hotCum.type == "weap_shotgun") { theClient.ammo = 15; }
  555.                                                 }
  556.                                                 this.state.pickups.splice(this.state.pickups.indexOf(hotCum),1);
  557.                                         }
  558.                                 });
  559.                         }
  560.                 });
  561.         }
  562.  
  563.         update(deltaTime) {
  564.                 var phaserScene = game.scene.getScene("GameplayScene");
  565.                
  566.                 if (this.state.players.size > 0) {
  567.                         if (phaserScene.theReactor.health <= 0 && phaserScene.theReactor.alive == true) {
  568.                                 gameState = "failure";
  569.                                 clearTimeout(gameStateTimer);
  570.                                 this.broadcast("display_message", { main: "FAILURE!", sub: "Persist in the doomed world you have created.", bottom: "(if everyone quits briefly the game will reset)" });
  571.                                 this.broadcast("destroy_reactor");
  572.                                 phaserScene.theReactor.alive = false;
  573.                         }
  574.                        
  575.                         if (gameState == "empty") {
  576.                                 gameState = "warmup";
  577.                                 gameStateTimer = setTimeout(function(){
  578.                                         gameState = "wave";
  579.                                         gameStateTimer = null;
  580.                                 }, 5000);
  581.                                 this.broadcast("display_message", { main: "Warmup!", sub: "enemies will spawn in five seconds :)" });
  582.                         }
  583.                         else if (gameState == "wave" && gameStateTimer == null) {
  584.                                 this.broadcast("display_message", { main: "Wave "+waveNum.toString(), sub: "protect the reactor!" });
  585.                                 gameStateTimer = setTimeout(function(){
  586.                                         var phaserScene = game.scene.getScene("GameplayScene");
  587.                                        
  588.                                         gameState = "stragglers";
  589.                                         gameStateTimer = null;
  590.                                 }, 60000);
  591.                         }
  592.                         else if (gameState == "stragglers" && phaserScene.theEnemies.getChildren().length == 0) {
  593.                                 this.broadcast("display_message", { main: "Wave "+waveNum.toString()+" Complete!", sub: "you sure shot those guys..." });
  594.                                 gameState = "breather";
  595.                                 gameStateTimer = setTimeout(function(){
  596.                                         gameState = "wave";
  597.                                         gameStateTimer = null;
  598.                                         waveNum++;
  599.                                         if (hardDicks.state.corpses.length > 0) {
  600.                                                 hardDicks.state.corpses.splice(0,hardDicks.state.corpses.length);
  601.                                         }
  602.                                 }, 5000);
  603.                         }
  604.                        
  605.                         if (gameState == "breather" && waveNum >= 5 && phaserScene.theReactor.alive == true) {
  606.                                 gameState = "success";
  607.                                 clearTimeout(gameStateTimer);
  608.                                 this.broadcast("display_message", { main: "Victory!", sub: "you are so good at shooting guys!!!", bottom: "(if everyone quits briefly the game will reset)" });
  609.                         }
  610.                        
  611.                         if (gameState == "wave" && phaserScene.spawnTimer == null) {
  612.                                 processSpawns();
  613.                                 var theDelay = 3000;
  614.                                 if (waveNum <= 5) {
  615.                                         theDelay -= 500 * waveNum;
  616.                                 }
  617.                                 phaserScene.spawnTimer = phaserScene.time.addEvent({ delay: theDelay, callback: (hotCum = phaserScene)=>{hotCum.spawnTimer = null;} });
  618.                         }
  619.                        
  620.                         this.broadcast("check_player_angle");
  621.                         this.broadcast("check_player_movement");
  622.                        
  623.                         this.state.bullets.splice(0,this.state.bullets.length);
  624.                         this.state.enemies.splice(0,this.state.enemies.length);
  625.                        
  626.                         if (phaserScene.corpseQueue.length > 0) {
  627.                                 var theCorpse = phaserScene.corpseQueue[0];
  628.                                 this.state.corpses.push(new Corpse(theCorpse.sprite, theCorpse.angle, theCorpse.x, theCorpse.y));
  629.                                 theCorpse.destroy();
  630.                                 phaserScene.corpseQueue.shift();
  631.                         }
  632.                        
  633.                         if (phaserScene.theBullets && phaserScene.theBullets.getChildren().length > 0) {
  634.                                 phaserScene.theBullets.getChildren().forEach((hotCum) => {
  635.                                         var eachBullet = new Bullet(hotCum.angle, hotCum.x, hotCum.y);
  636.                                         this.state.bullets.push(eachBullet);
  637.                                 });
  638.                         }
  639.                        
  640.                         if (phaserScene.theEnemies && phaserScene.theEnemies.getChildren().length > 0) {
  641.                                 phaserScene.theEnemies.getChildren().forEach((hotCum) => {
  642.                                         var eachEnemy = new Enemy(hotCum.angle, hotCum.x, hotCum.y, hotCum.flashing);
  643.                                         this.state.enemies.push(eachEnemy);
  644.                                 });
  645.                         }
  646.                        
  647.                         if (phaserScene.thePlayers && phaserScene.thePlayers.getChildren().length > 0) {
  648.                                 phaserScene.thePlayers.getChildren().forEach((hotCum) => {
  649.                                         hotCum.body.setCollideWorldBounds(true);
  650.                                         hotCum.setOrigin(0.5,0.5);
  651.                                         var fuckSuck = this.state.players.get(hotCum.id);
  652.                                         fuckSuck.x = hotCum.x;
  653.                                         fuckSuck.y = hotCum.y;
  654.                                         fuckSuck.angle = hotCum.angle;
  655.                                         fuckSuck.weapon = hotCum.weapon;
  656.                                         fuckSuck.ammo = hotCum.ammo;
  657.                                         fuckSuck.blocks = hotCum.placeables_blocks;
  658.                                 });
  659.                         }
  660.                 }
  661.                 else {
  662.                         gameState = "empty";
  663.                         clearTimeout(gameStateTimer);
  664.                         gameStateTimer = null;
  665.                         waveNum = 1;
  666.                         phaserScene.theReactor.health = phaserScene.theReactor.maxHealth;
  667.                         phaserScene.theReactor.alive = true;
  668.                         while (phaserScene.theEnemies.getChildren().length > 0) {
  669.                                 phaserScene.theEnemies.remove(phaserScene.theEnemies.getChildren()[0], true, true);
  670.                         }
  671.                         while (phaserScene.blockers.getChildren().length > 0) {
  672.                                 phaserScene.blockers.remove(phaserScene.blockers.getChildren()[0], true, true);
  673.                         }
  674.                         easystar.setGrid(calculateGrid(phaserScene.walls, phaserScene.blockers.getChildren()));
  675.                 }
  676.         }
  677.  
  678.         onJoin (client, options) {
  679.                 var phaserScene = game.scene.getScene("GameplayScene");
  680.                 var spawnX = phaserScene.levelmap.createFromObjects('objects', 'playerspawn')[0].setVisible(false).x;
  681.                 var spawnY = phaserScene.levelmap.createFromObjects('objects', 'playerspawn')[0].setVisible(false).y;
  682.                 var newPlayer = phaserScene.physics.add.image(spawnX,spawnY,'player');
  683.                 newPlayer.id = client.id;
  684.                 newPlayer.weapon = "regular";
  685.                 newPlayer.speed = 200;
  686.                 newPlayer.ammo = 0;
  687.                 newPlayer.placeables_blocks = 15;
  688.                 newPlayer.shotTimer = null;
  689.                 phaserScene.thePlayers.add(newPlayer);
  690.                 this.state.players.set(client.id, new Player(client.id,spawnX,spawnY,90));
  691.                 console.log("a player joined with the ID "+client.id);
  692.                 this.broadcast("check_version", {version: updateVersion});
  693.         }
  694.  
  695.         onLeave (client, consented) {
  696.                 this.state.players.delete(client.id);
  697.                 var phaserScene = game.scene.getScene("GameplayScene");
  698.                
  699.                 if (phaserScene.thePlayers != undefined) {
  700.                         phaserScene.thePlayers.remove(phaserScene.thePlayers.getChildren()[phaserScene.thePlayers.getChildren().findIndex(hotcum => hotcum.id == client.id)], true, true);
  701.                 }
  702.                
  703.                 console.log("a player left with the ID "+client.id);
  704.         }
  705.  
  706.         onDispose() {
  707.         }
  708. }
  709.  
  710. function processSpawns() {
  711.         var phaserScene = game.scene.getScene("GameplayScene");
  712.         if (phaserScene.thePlayers.getChildren().length > 0 && gameState == "wave") {
  713.                 /* phaserScene.levelmap.createFromObjects('objects', 'enemyspawn').forEach((hotCum) => {
  714.                         var hex = hotCum.setVisible(false).x;
  715.                         var why = hotCum.setVisible(false).y;
  716.                         spawnEnemy(hex,why);
  717.                 }); */
  718.                 var spawns = phaserScene.levelmap.createFromObjects('objects', 'enemyspawn');
  719.                 var ourLuckyWinner = spawns[Phaser.Math.Between(0,spawns.length-1)];
  720.                
  721.                 var rollTheDice = Phaser.Math.Between(1,10);
  722.                 if (rollTheDice <= 6) {
  723.                         spawnEnemy(ourLuckyWinner.x,ourLuckyWinner.y);
  724.                 }
  725.                 else if (rollTheDice < 9 && rollTheDice > 6) {
  726.                         spawnEnemy(ourLuckyWinner.x, ourLuckyWinner.y, 1, 250);
  727.                 }
  728.                 else if (rollTheDice >= 9) {
  729.                         spawnEnemy(ourLuckyWinner.x, ourLuckyWinner.y, 10, 30, 3);
  730.                 }
  731.                
  732.         }
  733.         else if (hardDicks && gameState == "empty") {
  734.                 if (hardDicks.state.corpses.length > 0) {
  735.                         hardDicks.state.corpses.splice(0,hardDicks.state.corpses.length);
  736.                 }
  737.                 if (hardDicks.state.pickups.length > 0) {
  738.                         hardDicks.state.pickups.splice(0,hardDicks.state.corpses.length);
  739.                 }
  740.                 while (phaserScene.theEnemies.getChildren().length > 0) {
  741.                         phaserScene.theEnemies.remove(phaserScene.theEnemies.getChildren()[0], true, true);
  742.                 }
  743.                 while (phaserScene.blockers.getChildren().length > 0) {
  744.                         phaserScene.blockers.remove(phaserScene.blockers.getChildren()[0], true, true);
  745.                 }
  746.                 easystar.setGrid(calculateGrid(phaserScene.walls, phaserScene.blockers.getChildren()));
  747.         }
  748. }
  749.  
  750.  
  751. const port = process.env.PORT || 2567;
  752. const app = express()
  753.  
  754. app.use(cors());
  755. //app.options('*', cors());
  756. app.use(express.json());
  757.  
  758. const server = http.createServer(app);
  759. const gameServer = new colyseus.Server({
  760.   server: server,
  761. });
  762.  
  763. // register your room handlers
  764. var hmmmm = gameServer.define('my_room', MyRoom);
  765.  
  766. /**
  767.  * Register @colyseus/social routes
  768.  *
  769.  * - uncomment if you want to use default authentication (https://docs.colyseus.io/server/authentication/)
  770.  * - also uncomment the require statement
  771.  */
  772. // app.use("/", socialRoutes);
  773.  
  774. // register colyseus monitor AFTER registering your room handlers
  775. app.use("/colyseus", monitor());
  776.  
  777. gameServer.listen(port);
  778. console.log(`Listening on ws://localhost:${ port }`)
  779.  

Reply to "kill me irl"

Here you can reply to the paste above

captcha