Greasy Fork is available in English.

Eternity Tower Audio Immersion

Adds audio immersion to the game

Version au 02/01/2018. Voir la dernière version.

// ==UserScript==
// @name          Eternity Tower Audio Immersion
// @icon          https://www.eternitytower.net/favicon.png
// @namespace     http://mean.cloud/
// @version       1.01
// @description   Adds audio immersion to the game
// @match         http*://*.eternitytower.net/*
// @copyright     2017-2018, MeanCloud
// @run-at        document-end
// ==/UserScript==

function addJQuery(callback)
{
    var script = document.createElement("script");
    script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js");
    script.addEventListener('load', function()
    {
        var script = document.createElement("script");
        script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
        document.body.appendChild(script);
    }, false);
    document.body.appendChild(script);
}

document.PETAI_PlayerIsDemon = false;
document.PETAI_UserID = "";
document.PETAI_CombatID = "";
document.PETAI_InBattle = false;

function main()
{
    setTimeout(document.PETAI_SetupDelayed, 2000);
}

document.PETAI_SetupDelayed = function()
{
    try
    {
        //document.audioBattleBG = new Audio('http://www.mean.cloud/EternityTower/audio/little_robot_sound_factory_Ambience_Hell_02.mp3');
        //document.audioBattleBG = new Audio('http://www.mean.cloud/EternityTower/audio/Bog-Creatures-On-the-Move_Looping.mp3');
        document.audioBattleBG = new Audio('http://www.mean.cloud/EternityTower/audio/Tower-Defense_Looping.mp3');
        //document.audioBattleBG = new Audio('http://www.mean.cloud/EternityTower/audio/Ancient-Troops-Amassing.mp3');
        document.audioBattleBG.loop = true;
        document.audioBattleBG.volume = 0.15;

        document.audioBecameDemon = new Audio('http://www.mean.cloud/EternityTower/audio/zapsplat_sound_design_dark_cinematic_hit_007_12691.mp3');
        document.audioBattleLost = new Audio('http://www.mean.cloud/EternityTower/audio/zapsplat_horror_descending_dark_harp_drone_12668.mp3');
        document.audioBattleWon = new Audio('http://www.mean.cloud/EternityTower/audio/multimedia_game_musical_success_complete_orchestral_horns_001.mp3');
    }
    catch (err) { }

    Meteor.connection._stream.on('message', function(sMeteorRawData)
    {
        try
        {
            var oMeteorData = JSON.parse(sMeteorRawData);

            if (oMeteorData.collection == "users")
                document.PETAI_UserID = oMeteorData.id;

            if (oMeteorData.collection == "combat")
                if ((oMeteorData.fields.owner === document.PETAI_UserID) && (document.PETAI_CombatID === ""))
                    document.PETAI_CombatID = oMeteorData.id;

            if (oMeteorData.collection == "battlesList")
            {
                try { document.audioBattleBG.fastSeek(0); } catch (err) { }
                try { document.currentTime = 0; } catch (err) { }
                document.audioBattleBG.play();

                document.PETAI_InBattle = true;
                document.PETAI_PlayerIsDemon = false;
            }

            if (oMeteorData.collection == "battles")
            {
                if (oMeteorData.fields.finished)
                {
                    document.audioBattleBG.pause();

                    document.PETAI_PlayerIsDemon = false;

                    if (oMeteorData.fields.win)
                        document.audioBattleWon.play();
                    else
                        document.audioBattleLost.play();
                }
            }

            try
            {
                if (oMeteorData.id)
                {
                    if (oMeteorData.id.toString().startsWith("battles-"))
                    {
                        battleID = oMeteorData.id;
                        battleData = JSON.parse(oMeteorData.fields.value);

                        jQ.makeArray(battleData.units).forEach(function(currentPlayer, index, array)
                                                               {
                            try
                            {
                                if (currentPlayer.name == "meancloud")
                                {
                                    jQ.makeArray(currentPlayer.buffs).forEach(function(currentBuff, index2, array2)
                                                                              {
                                        try
                                        {
                                            if (currentBuff.id == "demons_heart")
                                            {
                                                if (currentBuff.data.active)
                                                {
                                                    if (!document.PETAI_PlayerIsDemon)
                                                    {
                                                        document.PETAI_PlayerIsDemon = true;
                                                        document.audioBecameDemon.play();
                                                    }
                                                }
                                            }
                                        }
                                        catch (err) { console.log("Error with AI/battles-/2: " + err); console.log(currentPlayer); }
                                    });
                                }
                            }
                            catch (err) { console.log("Error with AI/battles-/1: " + err); console.log(oMeteorData); }
                        });
                    }
                }
            }
            catch (err) { console.log("Error with AI/battles-: " + err); console.log(oMeteorData); }
        }
        catch (err) { console.log("Error with AI: " + err); }
    });

};

addJQuery(main);

if (!String.prototype.startsWith) {
	String.prototype.startsWith = function(search, pos) {
		return this.substr(((!pos) || (pos < 0)) ? 0 : +pos, search.length) === search; }; }