Skip to content

Instantly share code, notes, and snippets.

@nabbynz
Last active November 2, 2017 20:50

Revisions

  1. nabbynz revised this gist Nov 2, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    // ==UserScript==
    // @name Fireworks FTW
    // @description Shows some fireworks when you win a normal pub game (and/or the raptors)
    // @version 0.0.4
    // @version 0.0.5
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    @@ -215,7 +215,7 @@ tagpro.ready(function() {
    }

    if (showGordons) {
    if (tagpro.score.r - tagpro.score.b === 3) { //parade if we win 3:0
    if (Math.abs(tagpro.score.r - tagpro.score.b) === 3) { //parade if we win 3:0
    var interval = 100;
    for (var id=0; id<images.length; id++) {
    setTimeout(function(id) {
  2. nabbynz revised this gist Nov 2, 2017. 1 changed file with 22 additions and 21 deletions.
    43 changes: 22 additions & 21 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    // ==UserScript==
    // @name Fireworks FTW
    // @description Shows some fireworks when you win a normal pub game (and/or the raptors)
    // @version 0.0.3
    // @version 0.0.4
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    @@ -17,7 +17,7 @@ if ($('script[src]').toArray().some(e => e.src.endsWith('easter-2017.js'))) retu

    // Options...
    var showFireworks = true;
    var showRaptors = false;
    var showGordons = true;
    var fireworksCount = 5; //the total number of fireworks to show (Default: 5)
    var fireworksNumber = 100; //the number of particles per firework (Default: 100)
    var fireworksTime = 1; //the max number of seconds that the fireworks are on screen for at the end of the game (Default: 1)
    @@ -26,17 +26,15 @@ var fireworksColor = '#00ff00'; //only used if fireworksType is 'color' (Default


    tagpro.ready(function() {
    if (showRaptors) {
    if (showGordons) {
    var images = [];

    //add the 17 original raptors by rohlin...
    for (var i=1; i<=17; i++) {
    images.push("http://static.koalabeast.com/events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    }

    //you can also add other images to the array like this...
    //images.push("http://i.imgur.com/6h2Fna8.png");

    images.push("https://i.imgur.com/ID2lhJS.png");
    images.push("https://i.imgur.com/FzoxvLn.png");
    images.push("https://i.imgur.com/Ktg8C2D.png");
    images.push("https://i.imgur.com/FgWDO4X.png");
    images.push("https://i.imgur.com/7ukfF4H.png");
    images.push("https://i.imgur.com/FG1pxpS.png");

    const raptorSprites = images.map(function(v, i) {
    var raptorSprite = new PIXI.Sprite.fromImage(v);
    @@ -48,7 +46,7 @@ tagpro.ready(function() {
    return raptorSprite;
    });

    var initRaptor = function(id) {
    var initRaptor = function(id, speed=5) {
    var raptorSprite = raptorSprites[id];

    if (raptorSprite.visible) {
    @@ -62,18 +60,20 @@ tagpro.ready(function() {
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;

    var moveRaptor = function() {
    raptorSprite.x -= 5;
    var moveRaptor = function(speed) {
    raptorSprite.x -= speed;

    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }

    setTimeout(moveRaptor, 1000 / 60);
    setTimeout(function() {
    moveRaptor(speed);
    }, 1000 / 60);
    };

    moveRaptor();
    moveRaptor(speed);
    };
    }

    @@ -147,7 +147,7 @@ tagpro.ready(function() {

    tr.createFireworks = function (x, y) {
    if (!tr.options.disableParticles) {
    var emitter = new cloudkid.Emitter(
    var emitter = new PIXI.particles.Emitter(
    tr.layers.foreground,
    [tr.particleTexture, tr.particleFireTexture],
    tagpro.particleDefinitions.firework
    @@ -209,18 +209,19 @@ tagpro.ready(function() {

    tagpro.socket.on("end", function(data) {
    if ( (data.winner === 'red' && tagpro.players[tagpro.playerId].team === 1) || (data.winner === 'blue' && tagpro.players[tagpro.playerId].team === 2) ) {
    if (showFireworks) {

    if (showFireworks) {
    initFireworks();
    }

    if (showRaptors) {
    if (showGordons) {
    if (tagpro.score.r - tagpro.score.b === 3) { //parade if we win 3:0
    var interval = 100;
    for (var id=0; id<images.length; id++) {
    setTimeout(function(id) {
    initRaptor(id);
    initRaptor(id, 10);
    }, interval, id);
    interval += 400;
    interval += 500;
    }

    } else {
  3. nabbynz revised this gist Jun 5, 2017. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -208,7 +208,6 @@ tagpro.ready(function() {
    }

    tagpro.socket.on("end", function(data) {
    console.log(tr.updatePlayerSpritePosition);
    if ( (data.winner === 'red' && tagpro.players[tagpro.playerId].team === 1) || (data.winner === 'blue' && tagpro.players[tagpro.playerId].team === 2) ) {
    if (showFireworks) {
    initFireworks();
  4. nabbynz revised this gist Jun 5, 2017. 1 changed file with 76 additions and 60 deletions.
    136 changes: 76 additions & 60 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,9 @@
    // ==UserScript==
    // @name Fireworks FTW
    // @description Shows some fireworks when you win (and/or the raptors)
    // @version 0.0.2
    // @description Shows some fireworks when you win a normal pub game (and/or the raptors)
    // @version 0.0.3
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @downloadURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @grant none
    @@ -11,12 +12,17 @@

    console.log('START: ' + GM_info.script.name + ' (v' + GM_info.script.version + ' by ' + GM_info.script.author + ')');

    if ($('script[src]').toArray().some(e => e.src.endsWith('easter-2017.js'))) return; //don't run if eggball (snaps)


    // Options...
    var showRaptors = false;
    var showFireworks = true;
    var showRaptors = false;
    var fireworksCount = 5; //the total number of fireworks to show (Default: 5)
    var fireworksNumber = 100; //the number of particles per firework (Default: 100)
    var fireworksTime = 1; //the max number of seconds that the fireworks are on screen for at the end of the game (Default: 1)
    var fireworksType = 'rainbow'; //can be either: 'rainbow' (multi-colors) or 'team' (winning red/blue team color) or 'color' (uses fireworksColor below)
    var fireworksColor = '#00ff00'; //only used if fireworksType is 'color' (Default: '#00ff00' - green).


    tagpro.ready(function() {
    @@ -25,7 +31,7 @@ tagpro.ready(function() {

    //add the 17 original raptors by rohlin...
    for (var i=1; i<=17; i++) {
    images.push("events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    images.push("http://static.koalabeast.com/events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    }

    //you can also add other images to the array like this...
    @@ -41,6 +47,34 @@ tagpro.ready(function() {

    return raptorSprite;
    });

    var initRaptor = function(id) {
    var raptorSprite = raptorSprites[id];

    if (raptorSprite.visible) {
    return;
    }

    tagpro.renderer.layers.ui.removeChild(raptorSprite);
    tagpro.renderer.layers.ui.addChild(raptorSprite);

    raptorSprite.x = tagpro.renderer.renderer.width;
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;

    var moveRaptor = function() {
    raptorSprite.x -= 5;

    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }

    setTimeout(moveRaptor, 1000 / 60);
    };

    moveRaptor();
    };
    }

    if (showFireworks) {
    @@ -52,7 +86,7 @@ tagpro.ready(function() {
    },
    "scale": {
    "start": 0.01,
    "end": 0.57,
    "end": 0.33,
    "minimumScaleMultiplier": 0.75
    },
    "color": {
    @@ -61,7 +95,7 @@ tagpro.ready(function() {
    },
    "speed": {
    "start": 100,
    "end": 1000,
    "end": 750,
    "minimumSpeedMultiplier": 1
    },
    "acceleration": {
    @@ -101,7 +135,7 @@ tagpro.ready(function() {
    }
    ],
    "frequency": 0.005,
    "emitterLifetime": 0.25,
    "emitterLifetime": 1,
    "maxParticles": fireworksNumber,
    "pos": {
    "x": 0,
    @@ -115,15 +149,15 @@ tagpro.ready(function() {
    if (!tr.options.disableParticles) {
    var emitter = new cloudkid.Emitter(
    tr.layers.foreground,
    [tr.particleTexture],
    [tr.particleTexture, tr.particleFireTexture],
    tagpro.particleDefinitions.firework
    );
    emitter.updateSpawnPos(x, y);
    tr.emitters.push(emitter);
    }
    };

    function rainbow(numOfSteps, step) {
    var rainbow = function(numOfSteps, step) {
    //From: https://stackoverflow.com/questions/1484506/random-color-generator-in-javascript
    var r, g, b;
    var h = step / numOfSteps;
    @@ -140,65 +174,47 @@ tagpro.ready(function() {
    }
    var c = "#" + ("00" + (~ ~(r * 255)).toString(16)).slice(-2) + ("00" + (~ ~(g * 255)).toString(16)).slice(-2) + ("00" + (~ ~(b * 255)).toString(16)).slice(-2);
    return (c);
    }
    };

    var initFireworks = function() {
    let vpWidth = $('#viewport').width();
    let vpHeight = $('#viewport').height();
    let startX = tagpro.players[tagpro.playerId].x - vpWidth / 2;
    let startY = tagpro.players[tagpro.playerId].y + vpHeight / 2;
    let fwPos = vpWidth / (fireworksCount+1);

    for (var i=1; i<=fireworksCount; i++) {
    let x = startX + fwPos * i;
    let y = startY;
    let c1, c2;
    if (fireworksType === 'team') {
    c1 = tagpro.players[tagpro.playerId].team === 1 ? '#ffffff' : '#ffffff';
    c2 = tagpro.players[tagpro.playerId].team === 1 ? '#ff0000' : '#0000ff';
    } else if (fireworksType === 'color') {
    c1 = '#ffffff';
    c2 = fireworksColor;
    } else {
    c1 = rainbow(fireworksCount, i);
    c2 = rainbow(fireworksCount, i+1);
    }

    tagpro.particleDefinitions.firework.color.start = c1;
    tagpro.particleDefinitions.firework.color.end = c2;
    tagpro.particleDefinitions.firework.emitterLifetime = fireworksTime;

    tr.createFireworks(x, y);
    }
    };
    }

    tagpro.socket.on("end", function(data) {
    console.log(tr.updatePlayerSpritePosition);
    if ( (data.winner === 'red' && tagpro.players[tagpro.playerId].team === 1) || (data.winner === 'blue' && tagpro.players[tagpro.playerId].team === 2) ) {
    if (showFireworks) {
    var initFireworks = function() {
    let vpWidth = $('#viewport').width();
    let vpHeight = $('#viewport').height();
    let startX = tagpro.players[tagpro.playerId].x - vpWidth / 2;
    let startY = tagpro.players[tagpro.playerId].y + vpHeight / 2;
    let fwPos = vpWidth / (fireworksCount+1);

    for (var i=1; i<=fireworksCount; i++) {
    let x = startX + fwPos * i;
    let y = startY;
    let c1 = rainbow(fireworksCount, i);
    let c2 = rainbow(fireworksCount, i+1);

    tagpro.particleDefinitions.firework.color.start = c1;
    tagpro.particleDefinitions.firework.color.end = c2;
    tagpro.particleDefinitions.firework.emitterLifetime = Math.random() * fireworksTime + 0.1;

    tr.createFireworks(x, y);
    }
    };

    if (showFireworks) {
    initFireworks();
    }

    if (showRaptors) {
    var initRaptor = function(id) {
    var raptorSprite = raptorSprites[id];

    if (raptorSprite.visible) {
    return;
    }

    tagpro.renderer.layers.ui.removeChild(raptorSprite);
    tagpro.renderer.layers.ui.addChild(raptorSprite);

    raptorSprite.x = tagpro.renderer.renderer.width;
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;

    var moveRaptor = function() {
    raptorSprite.x -= 5;

    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }

    setTimeout(moveRaptor, 1000 / 60);
    };

    moveRaptor();
    };

    if (tagpro.score.r - tagpro.score.b === 3) { //parade if we win 3:0
    var interval = 100;
    for (var id=0; id<images.length; id++) {
  5. nabbynz revised this gist Jun 3, 2017. 1 changed file with 163 additions and 157 deletions.
    320 changes: 163 additions & 157 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    // ==UserScript==
    // @name Fireworks FTW
    // @description Shows some fireworks (and/or the raptors) when you win
    // @version 0.0.1
    // @description Shows some fireworks when you win (and/or the raptors)
    // @version 0.0.2
    // @include http://tagpro-*.koalabeast.com:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @downloadURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    @@ -14,186 +14,191 @@ console.log('START: ' + GM_info.script.name + ' (v' + GM_info.script.version + '
    // Options...
    var showRaptors = false;
    var showFireworks = true;
    var fireworksCount = 5; //number of fireworks to show (Default: 5)

    var fireworksCount = 5; //the total number of fireworks to show (Default: 5)
    var fireworksNumber = 100; //the number of particles per firework (Default: 100)
    var fireworksTime = 1; //the max number of seconds that the fireworks are on screen for at the end of the game (Default: 1)


    tagpro.ready(function() {
    var tr = tagpro.renderer;
    var images = [];
    if (showRaptors) {
    var images = [];

    //add the 17 original raptors by rohlin...
    for (var i=1; i<=17; i++) {
    images.push("events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    }
    //add the 17 original raptors by rohlin...
    for (var i=1; i<=17; i++) {
    images.push("events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    }

    //you can also add other images to the array like this...
    //images.push("http://i.imgur.com/6h2Fna8.png");

    //you can also add other images to the array like this...
    //images.push("http://i.imgur.com/6h2Fna8.png");

    const raptorSprites = images.map(function(v, i) {
    var raptorSprite = new PIXI.Sprite.fromImage(v);

    raptorSprite.visible = false;
    const raptorSprites = images.map(function(v, i) {
    var raptorSprite = new PIXI.Sprite.fromImage(v);

    tagpro.renderer.layers.ui.addChild(raptorSprite);
    raptorSprite.visible = false;

    return raptorSprite;
    });
    tagpro.renderer.layers.ui.addChild(raptorSprite);

    return raptorSprite;
    });
    }

    tagpro.particleDefinitions.firework = {
    "alpha": {
    "start": 0.28,
    "end": 0.74
    },
    "scale": {
    "start": 0.01,
    "end": 0.57,
    "minimumScaleMultiplier": 0.75
    },
    "color": {
    "start": "#2b0aff",
    "end": "#f78d2a"
    },
    "speed": {
    "start": 100,
    "end": 1000,
    "minimumSpeedMultiplier": 1
    },
    "acceleration": {
    "x": 0,
    "y": 0
    },
    "maxSpeed": 0,
    "startRotation": {
    "min": 180,
    "max": 360
    },
    "noRotation": false,
    "rotationSpeed": {
    "min": 0,
    "max": 200
    },
    "lifetime": {
    "min": 0.5,
    "max": 1
    },
    "blendMode": "normal",
    "ease": [
    {
    "s": 0,
    "cp": 0.329,
    "e": 0.548
    if (showFireworks) {
    var tr = tagpro.renderer;
    tagpro.particleDefinitions.firework = {
    "alpha": {
    "start": 0.28,
    "end": 0.74
    },
    "scale": {
    "start": 0.01,
    "end": 0.57,
    "minimumScaleMultiplier": 0.75
    },
    "color": {
    "start": "#2b0aff",
    "end": "#f78d2a"
    },
    "speed": {
    "start": 100,
    "end": 1000,
    "minimumSpeedMultiplier": 1
    },
    "acceleration": {
    "x": 0,
    "y": 0
    },
    {
    "s": 0.548,
    "cp": 0.767,
    "e": 0.876
    "maxSpeed": 0,
    "startRotation": {
    "min": 180,
    "max": 360
    },
    {
    "s": 0.876,
    "cp": 0.985,
    "e": 1
    "noRotation": false,
    "rotationSpeed": {
    "min": 0,
    "max": 200
    },
    "lifetime": {
    "min": 0.5,
    "max": 1
    },
    "blendMode": "normal",
    "ease": [
    {
    "s": 0,
    "cp": 0.329,
    "e": 0.548
    },
    {
    "s": 0.548,
    "cp": 0.767,
    "e": 0.876
    },
    {
    "s": 0.876,
    "cp": 0.985,
    "e": 1
    }
    ],
    "frequency": 0.005,
    "emitterLifetime": 0.25,
    "maxParticles": fireworksNumber,
    "pos": {
    "x": 0,
    "y": 0
    },
    "addAtBack": true,
    "spawnType": "point"
    };

    tr.createFireworks = function (x, y) {
    if (!tr.options.disableParticles) {
    var emitter = new cloudkid.Emitter(
    tr.layers.foreground,
    [tr.particleTexture],
    tagpro.particleDefinitions.firework
    );
    emitter.updateSpawnPos(x, y);
    tr.emitters.push(emitter);
    }
    ],
    "frequency": 0.005,
    "emitterLifetime": 0.25,
    "maxParticles": 200,
    "pos": {
    "x": 0,
    "y": 0
    },
    "addAtBack": true,
    "spawnType": "point"
    };

    tr.createFireworks = function (x, y) {
    if (!tr.options.disableParticles) {
    var emitter = new cloudkid.Emitter(
    tr.layers.foreground,
    [tr.particleTexture],
    tagpro.particleDefinitions.firework
    );
    emitter.updateSpawnPos(x, y);
    tr.emitters.push(emitter);
    }
    };

    function rainbow(numOfSteps, step) {
    //From: https://stackoverflow.com/questions/1484506/random-color-generator-in-javascript
    var r, g, b;
    var h = step / numOfSteps;
    var i = ~~(h * 6);
    var f = h * 6 - i;
    var q = 1 - f;
    switch(i % 6){
    case 0: r = 1; g = f; b = 0; break;
    case 1: r = q; g = 1; b = 0; break;
    case 2: r = 0; g = 1; b = f; break;
    case 3: r = 0; g = q; b = 1; break;
    case 4: r = f; g = 0; b = 1; break;
    case 5: r = 1; g = 0; b = q; break;
    };

    function rainbow(numOfSteps, step) {
    //From: https://stackoverflow.com/questions/1484506/random-color-generator-in-javascript
    var r, g, b;
    var h = step / numOfSteps;
    var i = ~~(h * 6);
    var f = h * 6 - i;
    var q = 1 - f;
    switch(i % 6){
    case 0: r = 1; g = f; b = 0; break;
    case 1: r = q; g = 1; b = 0; break;
    case 2: r = 0; g = 1; b = f; break;
    case 3: r = 0; g = q; b = 1; break;
    case 4: r = f; g = 0; b = 1; break;
    case 5: r = 1; g = 0; b = q; break;
    }
    var c = "#" + ("00" + (~ ~(r * 255)).toString(16)).slice(-2) + ("00" + (~ ~(g * 255)).toString(16)).slice(-2) + ("00" + (~ ~(b * 255)).toString(16)).slice(-2);
    return (c);
    }
    var c = "#" + ("00" + (~ ~(r * 255)).toString(16)).slice(-2) + ("00" + (~ ~(g * 255)).toString(16)).slice(-2) + ("00" + (~ ~(b * 255)).toString(16)).slice(-2);
    return (c);
    }

    tagpro.socket.on("end", function(data) {
    if ( (data.winner === 'red' && tagpro.players[tagpro.playerId].team === 1) || (data.winner === 'blue' && tagpro.players[tagpro.playerId].team === 2) ) {
    var initRaptor = function(id) {
    var raptorSprite = raptorSprites[id];
    if (showFireworks) {
    var initFireworks = function() {
    let vpWidth = $('#viewport').width();
    let vpHeight = $('#viewport').height();
    let startX = tagpro.players[tagpro.playerId].x - vpWidth / 2;
    let startY = tagpro.players[tagpro.playerId].y + vpHeight / 2;
    let fwPos = vpWidth / (fireworksCount+1);

    for (var i=1; i<=fireworksCount; i++) {
    let x = startX + fwPos * i;
    let y = startY;
    let c1 = rainbow(fireworksCount, i);
    let c2 = rainbow(fireworksCount, i+1);

    tagpro.particleDefinitions.firework.color.start = c1;
    tagpro.particleDefinitions.firework.color.end = c2;
    tagpro.particleDefinitions.firework.emitterLifetime = Math.random() * fireworksTime + 0.1;

    tr.createFireworks(x, y);
    }
    };

    if (raptorSprite.visible) {
    return;
    }
    initFireworks();
    }

    if (showRaptors) {
    var initRaptor = function(id) {
    var raptorSprite = raptorSprites[id];

    tagpro.renderer.layers.ui.removeChild(raptorSprite);
    tagpro.renderer.layers.ui.addChild(raptorSprite);
    if (raptorSprite.visible) {
    return;
    }

    raptorSprite.x = tagpro.renderer.renderer.width;
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;
    tagpro.renderer.layers.ui.removeChild(raptorSprite);
    tagpro.renderer.layers.ui.addChild(raptorSprite);

    var moveRaptor = function() {
    raptorSprite.x -= 5;
    raptorSprite.x = tagpro.renderer.renderer.width;
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;

    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }
    var moveRaptor = function() {
    raptorSprite.x -= 5;

    setTimeout(moveRaptor, 1000 / 60);
    };
    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }

    moveRaptor();
    };

    var initFireworks = function() {
    let vpWidth = $('#viewport').width();
    let vpHeight = $('#viewport').height();
    let startX = tagpro.players[tagpro.playerId].x - vpWidth / 2;
    let startY = tagpro.players[tagpro.playerId].y + vpHeight / 2;
    let fwPos = vpWidth / (fireworksCount+1);

    for (var i=1; i<=fireworksCount; i++) {
    let x = startX + fwPos * i;
    let y = startY;
    let c1 = rainbow(fireworksCount, i);
    let c2 = rainbow(fireworksCount, i+1);

    tagpro.particleDefinitions.firework.color.start = c1;
    tagpro.particleDefinitions.firework.color.end = c2;
    tagpro.particleDefinitions.firework.emitterLifetime = Math.random() * 4 + 0.1;

    tr.createFireworks(x, y);
    }
    };
    setTimeout(moveRaptor, 1000 / 60);
    };

    moveRaptor();
    };

    if (showFireworks) {
    initFireworks();
    }

    if (showRaptors) {
    if (tagpro.score.r - tagpro.score.b === 3) { //parade if we win 3:0
    var interval = 100;
    for (var id=0; id<images.length; id++) {
    @@ -207,6 +212,7 @@ tagpro.ready(function() {
    initRaptor(Math.floor(Math.random()*images.length-1)+1);
    }
    }

    }
    });

  6. nabbynz revised this gist Jun 3, 2017. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,6 @@
    // @description Shows some fireworks (and/or the raptors) when you win
    // @version 0.0.1
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @downloadURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @grant none
  7. nabbynz revised this gist Jun 3, 2017. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,9 @@
    // @version 0.0.1
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @updateURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @downloadURL https://gist.github.com/nabbynz/fcc6c8b663d46b800ec4216c6065c2e5/raw/Fireworks_FTW.user.js
    // @grant none
    // @author nabby
    // ==/UserScript==

  8. nabbynz created this gist Jun 3, 2017.
    211 changes: 211 additions & 0 deletions Fireworks_FTW.user.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,211 @@
    // ==UserScript==
    // @name Fireworks FTW
    // @description Shows some fireworks (and/or the raptors) when you win
    // @version 0.0.1
    // @include http://tagpro-*.koalabeast.com:*
    // @include http://*.newcompte.fr:*
    // @author nabby
    // ==/UserScript==

    console.log('START: ' + GM_info.script.name + ' (v' + GM_info.script.version + ' by ' + GM_info.script.author + ')');

    // Options...
    var showRaptors = false;
    var showFireworks = true;
    var fireworksCount = 5; //number of fireworks to show (Default: 5)



    tagpro.ready(function() {
    var tr = tagpro.renderer;
    var images = [];

    //add the 17 original raptors by rohlin...
    for (var i=1; i<=17; i++) {
    images.push("events/easter-2017/images/raptor" + i + ".png"); //http://static.koalabeast.com/
    }

    //you can also add other images to the array like this...
    //images.push("http://i.imgur.com/6h2Fna8.png");


    const raptorSprites = images.map(function(v, i) {
    var raptorSprite = new PIXI.Sprite.fromImage(v);

    raptorSprite.visible = false;

    tagpro.renderer.layers.ui.addChild(raptorSprite);

    return raptorSprite;
    });

    tagpro.particleDefinitions.firework = {
    "alpha": {
    "start": 0.28,
    "end": 0.74
    },
    "scale": {
    "start": 0.01,
    "end": 0.57,
    "minimumScaleMultiplier": 0.75
    },
    "color": {
    "start": "#2b0aff",
    "end": "#f78d2a"
    },
    "speed": {
    "start": 100,
    "end": 1000,
    "minimumSpeedMultiplier": 1
    },
    "acceleration": {
    "x": 0,
    "y": 0
    },
    "maxSpeed": 0,
    "startRotation": {
    "min": 180,
    "max": 360
    },
    "noRotation": false,
    "rotationSpeed": {
    "min": 0,
    "max": 200
    },
    "lifetime": {
    "min": 0.5,
    "max": 1
    },
    "blendMode": "normal",
    "ease": [
    {
    "s": 0,
    "cp": 0.329,
    "e": 0.548
    },
    {
    "s": 0.548,
    "cp": 0.767,
    "e": 0.876
    },
    {
    "s": 0.876,
    "cp": 0.985,
    "e": 1
    }
    ],
    "frequency": 0.005,
    "emitterLifetime": 0.25,
    "maxParticles": 200,
    "pos": {
    "x": 0,
    "y": 0
    },
    "addAtBack": true,
    "spawnType": "point"
    };

    tr.createFireworks = function (x, y) {
    if (!tr.options.disableParticles) {
    var emitter = new cloudkid.Emitter(
    tr.layers.foreground,
    [tr.particleTexture],
    tagpro.particleDefinitions.firework
    );
    emitter.updateSpawnPos(x, y);
    tr.emitters.push(emitter);
    }
    };

    function rainbow(numOfSteps, step) {
    //From: https://stackoverflow.com/questions/1484506/random-color-generator-in-javascript
    var r, g, b;
    var h = step / numOfSteps;
    var i = ~~(h * 6);
    var f = h * 6 - i;
    var q = 1 - f;
    switch(i % 6){
    case 0: r = 1; g = f; b = 0; break;
    case 1: r = q; g = 1; b = 0; break;
    case 2: r = 0; g = 1; b = f; break;
    case 3: r = 0; g = q; b = 1; break;
    case 4: r = f; g = 0; b = 1; break;
    case 5: r = 1; g = 0; b = q; break;
    }
    var c = "#" + ("00" + (~ ~(r * 255)).toString(16)).slice(-2) + ("00" + (~ ~(g * 255)).toString(16)).slice(-2) + ("00" + (~ ~(b * 255)).toString(16)).slice(-2);
    return (c);
    }

    tagpro.socket.on("end", function(data) {
    if ( (data.winner === 'red' && tagpro.players[tagpro.playerId].team === 1) || (data.winner === 'blue' && tagpro.players[tagpro.playerId].team === 2) ) {
    var initRaptor = function(id) {
    var raptorSprite = raptorSprites[id];

    if (raptorSprite.visible) {
    return;
    }

    tagpro.renderer.layers.ui.removeChild(raptorSprite);
    tagpro.renderer.layers.ui.addChild(raptorSprite);

    raptorSprite.x = tagpro.renderer.renderer.width;
    raptorSprite.y = tagpro.renderer.renderer.height - raptorSprite.height;
    raptorSprite.visible = true;

    var moveRaptor = function() {
    raptorSprite.x -= 5;

    if (raptorSprite.x < -raptorSprite.width) {
    raptorSprite.visible = false;
    return;
    }

    setTimeout(moveRaptor, 1000 / 60);
    };

    moveRaptor();
    };

    var initFireworks = function() {
    let vpWidth = $('#viewport').width();
    let vpHeight = $('#viewport').height();
    let startX = tagpro.players[tagpro.playerId].x - vpWidth / 2;
    let startY = tagpro.players[tagpro.playerId].y + vpHeight / 2;
    let fwPos = vpWidth / (fireworksCount+1);

    for (var i=1; i<=fireworksCount; i++) {
    let x = startX + fwPos * i;
    let y = startY;
    let c1 = rainbow(fireworksCount, i);
    let c2 = rainbow(fireworksCount, i+1);

    tagpro.particleDefinitions.firework.color.start = c1;
    tagpro.particleDefinitions.firework.color.end = c2;
    tagpro.particleDefinitions.firework.emitterLifetime = Math.random() * 4 + 0.1;

    tr.createFireworks(x, y);
    }
    };

    if (showFireworks) {
    initFireworks();
    }

    if (showRaptors) {
    if (tagpro.score.r - tagpro.score.b === 3) { //parade if we win 3:0
    var interval = 100;
    for (var id=0; id<images.length; id++) {
    setTimeout(function(id) {
    initRaptor(id);
    }, interval, id);
    interval += 400;
    }

    } else {
    initRaptor(Math.floor(Math.random()*images.length-1)+1);
    }
    }
    }
    });

    });