ggejs
Version:
A powerful JavaScript library for interacting with the server of Goodgame Empire: Four Kingdoms
199 lines (183 loc) • 5.71 kB
JavaScript
module.exports.FACTOR_VICTORY_LEVEL = 1.9;
module.exports.POWER_VICTORY_LEVEL = 0.555;
module.exports.COOLDOWN = 10800;
module.exports.DUNGEON_PLAYER_ID = -202;
module.exports.DUNGEON_PLAYER_NAME_COUNT = 13;
module.exports.KINGDOM_DUNGEON_PLAYER_ID = -220;
module.exports.KINGDOM_BOSS_DUNGEON_PLAYER_ID = -230;
module.exports.BLUE_FACTION_KING = -410;
module.exports.RED_FACTION_KING = -411;
module.exports.RANDOM_DUNGEON_EVENT_PLAYER_ID = -500;
module.exports.APRIL_DUNGEON_EVENT_PLAYER_ID = -501;
module.exports.ST_PATRICKS_DAY_DUNGEON_EVENT_PLAYER_ID = -502;
module.exports.EASTER_DUNGEON_EVENT_PLAYER_ID = -503;
module.exports.RANDOM_DUNGEON_MAX_GUARDS = 50;
module.exports.BASIC_NOMAD_CAMP_PLAYER_ID = -601;
module.exports.BASIC_SAMURAI_CAMP_PLAYER_ID = -651;
module.exports.BASIC_INVASION_CAMP_PLAYER_ID = -701;
module.exports.BASIC_ALIEN_ID = -1000;
module.exports.BASIC_SAMURAI_ALIEN_ID = -1001;
module.exports.BASIC_RED_ALIEN_ID = -1002;
module.exports.BASIC_ALLIANCE_NOMAD_CAMP_PLAYER_ID = -801;
module.exports.BASIC_DAIMYO_CASTLE_PLAYER_ID = -811;
module.exports.BASIC_DAIMYO_TOWNSHIP_PLAYER_ID = -815;
module.exports.BASIC_COLLECTOR_PLAYER_ID = -1100;
module.exports.BASIC_ALLIANCE_BATTLE_GROUND_RESOURCE_TOWER_PLAYER_ID = -1200;
module.exports.BASIC_WOLF_KING_PLAYER_ID = -1201;
module.exports.DUNGEON_SKIN_ROBBER_BARON_KING = 1;
module.exports.DUNGEON_SKIN_COW = 2;
module.exports.DUNGEON_SKIN_ST_PATRICKS_DAY = 3;
module.exports.DUNGEON_SKIN_EASTER = 4;
module.exports.NOMAD_CAMP_COUNT = 4;
module.exports.MESSAGE_FAKE_TUTORIAL_BATTLELOG_PID = -2;
module.exports.DUNGEON_DELETION_CLASSIC_FACTOR = 1;
module.exports.DUNGEON_DELETION_ICE_FACTOR = 2.2;
module.exports.DUNGEON_DELETION_DESERT_FACTOR = 3.5;
module.exports.DUNGEON_DELETION_VULCAN_FACTOR = 4;
module.exports.NO_LOW_LEVEL_DUNGEON_ATTACK = false;
module.exports.INVALID = -1;
/**
* @param {number} skinId
* @return {number}
*/
module.exports.getEventDungeonOwnerIDBySkinId = function (skinId) {
switch (skinId - 1) {
case 0:
return -500;
case 1:
return -501;
case 2:
return -502;
case 3:
return -503;
default:
return -1;
}
}
/** @return {number} */
module.exports.getEventDungeonDefaultOwnerId = function () {
return -500;
}
/**
* @param {number} kingdomId
* @param {number} idOffset
* @return {Number}
*/
module.exports.getDungeonOwnerId = function (kingdomId, idOffset) {
if (kingdomId === 0) return -202 - idOffset;
return -220 - (kingdomId - 1);
}
/**
* @param {number} kingdomId
* @return {number}
*/
module.exports.getBossDungeonOwnerId = function (kingdomId) {
return -230 - (kingdomId - 1);
}
/**
* @param {number} victories
* @param {number} kingdomId
* @return {number}
*/
module.exports.getLevel = function (victories, kingdomId) {
return Math.floor(1.9 * Math.pow(Math.abs(victories), 0.555)) + getKingdomOffset(kingdomId);
}
/**
* @param {number} costFor180Minutes
* @param {number} remainingTimeInSec
* @return {number}
*/
module.exports.getSkipCost = function (costFor180Minutes, remainingTimeInSec) {
return Math.max(1, costFor180Minutes * remainingTimeInSec / 180 / 60);
}
/**
* @param {number} dungeonLevel
* @param {number} kingdomId
* @return {number}
*/
module.exports.getVictories = function (dungeonLevel, kingdomId) {
return Math.floor(Math.pow((dungeonLevel - getKingdomOffset(kingdomId) + 1) / 1.9, 1.8018018018018016));
}
/**
* @param {number} kingdomId
* @return {number}
*/
function getKingdomOffset(kingdomId) {
switch (kingdomId) {
case 0:
return 1;
case 1:
return 35;
case 2:
return 20;
case 3:
return 45;
}
return 0;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getResources = function (dungeonLevel) {
return Math.pow(dungeonLevel, 2.2) * 1.2 + 90;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getC1 = function (dungeonLevel) {
if (dungeonLevel >= 61) return Math.pow(dungeonLevel, 1.1) * 210;
return Math.pow(dungeonLevel, 2.1) * 3.5 + 25;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getC2 = function (dungeonLevel) {
return Math.max(0, (Math.random() * 11 - 5 + dungeonLevel * 0.5 + 0.7) * 0.5);
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getC2Probability = function (dungeonLevel) {
if (dungeonLevel >= 3) return 50;
return 0;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getWallUpgradeByLevel = function (dungeonLevel) {
if (dungeonLevel < 11) return 1;
if (dungeonLevel < 24) return 2;
return 3;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getWallWOD = function (dungeonLevel) {
if (dungeonLevel < 11) return 501;
if (dungeonLevel < 24) return 502;
return 503;
}
/**
* @param {number} dungeonLevel
* @return {number}
*/
module.exports.getGateWOD = function (dungeonLevel) {
if (dungeonLevel < 11) return 450;
if (dungeonLevel < 24) return 451;
return 452;
}
/**
* @param {number} victories
* @param {number} kingdomId
* @return {number}
*/
module.exports.getGuards = function (victories, kingdomId) {
const level = module.exports.getLevel(victories, kingdomId);
return Math.max(0, Math.min(50, Math.round(0.06 * (level - 4) * (level - 4) + 0.5 * (level - 4))));
}