Release alpha 13 balance and mission tests
This commit is contained in:
1 parent
fc4fcd40a4
commit
026d0bad58
9 files changed
+219
-13
No files matched your search
@@ -1,4 +1,4 @@
|
||||
var GAME_VERSION = "0.25";
|
||||
var GAME_VERSION = "0.26";
|
||||
var MAP_COUNT = 7;
|
||||
var DIFFICULTY_COUNT = 3;
|
||||
var VALID_MODES = ["mission", "endless", "coop_ai", "coop_online"];
|
||||
@@ -32,7 +32,7 @@ var TOWERS = [
|
||||
{cost:230,damage:34,range:240,cooldown:1.05,targetClass:"both",bothScale:0.72},
|
||||
{cost:210,damage:20,range:215,cooldown:0.92,targetClass:"both",bothScale:1},
|
||||
{cost:300,damage:77,range:330,cooldown:1.85,targetClass:"both",bothScale:0.70},
|
||||
{cost:210,damage:20,range:230,cooldown:0.42,targetClass:"air"}
|
||||
{cost:210,damage:22,range:230,cooldown:0.42,targetClass:"air"}
|
||||
];
|
||||
var ENEMIES = [
|
||||
{category:"air",hp:70,speed:105,reward:18,breachDamage:1},
|
||||
@@ -40,7 +40,7 @@ var ENEMIES = [
|
||||
{category:"air",hp:520,speed:43,reward:78,breachDamage:3},
|
||||
{category:"air",hp:52,speed:178,reward:22,breachDamage:2},
|
||||
{category:"air",hp:260,speed:58,reward:52,breachDamage:2},
|
||||
{category:"air",hp:740,speed:48,reward:108,breachDamage:4},
|
||||
{category:"air",hp:620,speed:48,reward:108,breachDamage:4},
|
||||
{category:"ground",hp:88,speed:142,reward:22,breachDamage:1},
|
||||
{category:"ground",hp:390,speed:61,reward:61,breachDamage:3},
|
||||
{category:"ground",hp:980,speed:36,reward:132,breachDamage:5}
|
||||
@@ -52,7 +52,7 @@ var DIFFICULTIES = [
|
||||
];
|
||||
|
||||
function defaultBalanceConfig() {
|
||||
return {schema:1,towers:JSON.parse(JSON.stringify(TOWERS)),enemies:JSON.parse(JSON.stringify(ENEMIES))};
|
||||
return {schema:2,towers:JSON.parse(JSON.stringify(TOWERS)),enemies:JSON.parse(JSON.stringify(ENEMIES))};
|
||||
}
|
||||
function boundedNumber(value, fallback, minimum, maximum, integer) {
|
||||
var number = Number(value);
|
||||
@@ -88,13 +88,28 @@ function sanitizeBalanceConfig(input) {
|
||||
shieldResistance:boundedNumber(candidate.shieldResistance,base.shieldResistance,0.01,1,false)
|
||||
};
|
||||
});
|
||||
return {schema:1,towers:towers,enemies:enemies};
|
||||
return {schema:2,towers:towers,enemies:enemies};
|
||||
}
|
||||
function readBalanceConfig(nk) {
|
||||
var record = nk && typeof nk.storageRead === "function" ? readStorageRecord(nk,BALANCE_COLLECTION,BALANCE_KEY,SYSTEM_USER_ID) : null;
|
||||
var config = defaultBalanceConfig(), updatedAt = 0;
|
||||
if (record && record.value && record.value.config) {
|
||||
try { config = sanitizeBalanceConfig(record.value.config); updatedAt = Number(record.value.updated_at||0); }
|
||||
try {
|
||||
var storedConfig = record.value.config;
|
||||
config = sanitizeBalanceConfig(storedConfig);
|
||||
updatedAt = Number(record.value.updated_at||0);
|
||||
if (Number(storedConfig.schema || 1) < 2) {
|
||||
var legacyTower = storedConfig.towers[6] || {};
|
||||
var legacyBoss = storedConfig.enemies[5] || {};
|
||||
if (Number(legacyTower.damage) === 20) config.towers[6].damage = 22;
|
||||
if (Number(legacyBoss.hp) === 740) config.enemies[5].hp = 620;
|
||||
updatedAt = Date.now();
|
||||
if (nk && typeof nk.storageWrite === "function") {
|
||||
try { nk.storageWrite([{collection:BALANCE_COLLECTION,key:BALANCE_KEY,userId:SYSTEM_USER_ID,value:{config:config,updated_at:updatedAt},permissionRead:0,permissionWrite:0,version:record.version||"*"}]); }
|
||||
catch (writeError) { updatedAt = Number(record.value.updated_at||0); }
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (error) { config = defaultBalanceConfig(); }
|
||||
}
|
||||
return {config:config,updated_at:updatedAt};
|
||||
@@ -490,7 +505,8 @@ function matchmakerMatched(ctx, logger, nk, matches) {
|
||||
return nk.matchCreate(MATCH_MODULE,{matchedUsers:matches.length,difficulty:difficulty});
|
||||
}
|
||||
function initialState(params) {
|
||||
var difficulty = Math.max(0,Math.min(2,Math.floor(Number(params.difficulty||1))));
|
||||
var requestedDifficulty = params.difficulty === undefined || params.difficulty === null ? 1 : Number(params.difficulty);
|
||||
var difficulty = Math.max(0,Math.min(2,Math.floor(isFinite(requestedDifficulty) ? requestedDifficulty : 1)));
|
||||
var credits = DIFFICULTIES[difficulty].startCredits;
|
||||
return {presences:{},slots:{},players:{},ready:{},started:false,pausedForReconnect:false,reconnectDeadlineTick:0,gameOver:false,difficulty:difficulty,mode:String(params.mode||"quick"),roomCode:normalizeRoomCode(params.roomCode),hostUserId:String(params.hostUserId||""),emptyTicks:0,credits:[credits,credits],reactorLives:30,wave:0,waveActive:false,spawnRemaining:0,waveSchedule:[],spawnTimer:0,nextSpawnRoute:0,nextEnemyId:1,nextTowerId:1,towers:[],enemies:[],shots:[],lastSnapshotTick:0,lastLoopStartMs:0,balance:defaultBalanceConfig()};
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user