Closed maurezen closed 4 years ago
u1/u2 flag: game.global.universe
(1 and 2 respectively)
probably a good moment to work towards #7 - at the very least, query.js/getEnemyMax* should have universe flag and delegate to global game at least for u2.
[done] learn how to build smithy and other u2-specific buildings. buildings.js
//Smithy
if (!game.buildings.Smithy.locked) {
safeBuyBuilding('Smithy');
}
//Microchip
if (!game.buildings.Smithy.locked) {
safeBuyBuilding('Microchip');
}
learn how to juggle radiating and better heirlooms.
[done] Hideous patch fo query.js
//this is a hideous copy from game.global.getEnemyMaxAttack
//to fully delegate to game.global.getEnemyMaxAttack we need to hijack getCurrentMapObject() with world
//and also apply diff/corrupt outside
function getEnemyMaxAttack(world, level, name, diff, corrupt) {
var amt = 0;
var adjWorld = ((world - 1) * 100) + level;
var attackBase = (game.global.universe == 2) ? 750 : 50;
amt += attackBase * Math.sqrt(world) * Math.pow(3.27, world / 2);
amt -= 10;
if (world == 1){
amt *= 0.35;
amt = (amt * 0.20) + ((amt * 0.75) * (level / 100));
}
else if (world == 2){
amt *= 0.5;
amt = (amt * 0.32) + ((amt * 0.68) * (level / 100));
}
else if (world < 60)
amt = (amt * 0.375) + ((amt * 0.7) * (level / 100));
else{
amt = (amt * 0.4) + ((amt * 0.9) * (level / 100));
amt *= Math.pow(1.15, world - 59);
}
if (world < 60) amt *= 0.85;
//if (world > 6 && game.global.mapsActive) amt *= 1.1;
if (diff) {
amt *= diff;
}
if (game.global.universe == 2){
var part1 = (world > 40) ? 40 : world;
var part2 = (world > 60) ? 20 : world - 40;
var part3 = (world - 60);
if (part2 < 0) part2 = 0;
if (part3 < 0) part3 = 0;
amt *= Math.pow(1.5, part1);
amt *= Math.pow(1.4, part2);
amt *= Math.pow(1.32, part3);
}
if (!corrupt)
amt *= game.badGuys[name].attack;
else {
amt *= getCorruptScale("attack");
}
return Math.floor(amt);
}
//this is a hideous copy from game.global.getEnemyMaxHealth
//to fully delegate to game.global.getEnemyMaxHealth we need to hijack getCurrentMapObject() with world
//and also apply corrupt outside
function getEnemyMaxHealth(world, level, corrupt) {
if (!level)
level = 30;
var amt = 0;
var healthBase = (game.global.universe == 2) ? 10e7 : 130;
amt += healthBase * Math.sqrt(world) * Math.pow(3.265, world / 2);
amt -= 110;
if (world == 1 || world == 2 && level < 10) {
amt *= 0.6;
amt = (amt * 0.25) + ((amt * 0.72) * (level / 100));
}
else if (world < 60)
amt = (amt * 0.4) + ((amt * 0.4) * (level / 110));
else {
amt = (amt * 0.5) + ((amt * 0.8) * (level / 100));
amt *= Math.pow(1.1, world - 59);
}
if (world < 60) amt *= 0.75;
//if (world > 5 && game.global.mapsActive) amt *= 1.1;
if (game.global.universe == 2){
var part1 = (world > 60) ? 60 : world;
var part2 = (world - 60);
if (part2 < 0) part2 = 0;
amt *= Math.pow(1.4, part1);
amt *= Math.pow(1.32, part2);
}
if (!corrupt)
amt *= game.badGuys["Grimp"].health;
else
amt *= getCorruptScale("health");
return Math.floor(amt);
}
[done] While this works in principle, the estimates are way off in u2 due to them being too conservative (world+1, cell50). We need to fix that, I suppose.
maps.js
if (AutoStance<=1) {
enemyDamage = getEnemyMaxAttack(game.global.world, 90, 'Snimp', 1.2);
enemyDamage = calcDailyAttackMod(enemyDamage); //daily mods: badStrength,badMapStrength,bloodthirst
} else {
enemyDamage = calcBadGuyDmg(null,getEnemyMaxAttack(game.global.world, 90, 'Snimp', 1.0),true,true); //(enemy,attack,daily,maxormin,[disableFlucts])
}
enemyHealth = getEnemyMaxHealth(game.global.world, 90);
[done] We also need to fix the issue with siphonology being applied in u2.
//Dynamic Siphonology section (when necessary)
var siphlvl = shouldFarmLowerZone ? game.global.world - 10 : (game.global.universe == 1 ? game.global.world - game.portal.Siphonology.level : game.global.world);
Somehow now suicide happens all the time. shouldFarmLowerZone somehow happens to be true and siphlvl is not 14 but 9 (grew up from 4 I suppose). turning off LowerFarmingZone doesn't really help.
Oh, that was auto force abandon. Should fix that for u2! (breedtimer.js)
also need to take a look at autoportal/autoperk (and corresponding settings being broken af in u2). u2 uses the same game.portal stuff, with additional radLevel, radLocked and radSpent fields.
also found that classy is temporarily capped at 75. probably should use that.
also need add new unique maps to automaps. [done] 'Big Wall', 'Dimension of Rage' , 'Prismatic Palace' others
if ((theMap.name == 'The Wall' || theMap.name == 'Big Wall') && game.upgrades.Bounty.allowed == 0 && !game.talents.bounty.purchased) {
var theMapDifficulty = Math.ceil(theMap.difficulty / 2);
if(game.global.world < 15 + theMapDifficulty) continue;
selectedMap = theMap.id;
break;
}
if ((theMap.name == 'Dimension of Anger' || theMap.name == 'Dimension of Rage') && document.getElementById("portalBtn").style.display == "none" && !game.talents.portal.purchased) {
var theMapDifficulty = Math.ceil(theMap.difficulty / 2);
if(game.global.world < 20 + theMapDifficulty) continue;
selectedMap = theMap.id;
break;
}
[done] add u2 upgrades: add 'Prismatic', 'Rage', 'Prismalicious' to upgrade list in upgrade.js
portal at setting is broken and disappeared at the moment. this makes at toggle setting css break as well. those are gated behind balance challenge being unlocked, what a weird way to spell Z40. change that to actually use max world in corresponding u, or check for balance and unbalanced. [done] unlocked portal at right away
worker ratio presets have to be tweaked as well
learn how to adapt block-dependant calculations to energy shield [done] void maps [] h/d calculations
autoperk mostly updated. known issues: [done] need to update ratios with new perks (prismal) [done] need to cope with u1 perks being tinkered with at u2 [done] need to stop motivation being grossly overrated [done] update he/hr portal for u2 [done] update portal at for u2 [ ] u1/u2 switch should switch the autoperk stuff
[done] graphs don't see portals in u2 atm, gotta take care of that
[done] gotta add meteorologists as well
All optimal shields have Trimp Attack and Crit Damage. The other 4 mods vary Starter Buble shield - Crit Chance/Gamma Burst/Trimp Health/VMDC Later Buble/Melt shield - Crit Chance/Trimp Health/Prismatic Shield/VMDC Duel shield - Gamma Burst/Trimp Health/Prismatic Shield/Plaguebringer Shielded achieves shield - Crit Chance/Gamma Burst/Trimp Health/Prismatic Shield Push Shield - Crit Chance/Trimp Health/Plaguebringer/Prismatic Shield U1 trapper/Trappapalooza - Crit Chance/Gamma Burst/Trimp Health/Plaguebringer U1 c2/Daily Shield - Crit Chance/Gamma Burst/Plaguebringer/VMDC
the enemy speed calculations should be aware of Equality
gotta finally address enoughHealth calculations (take into account prismatic getting reset each fight, speed of killing, that sort of thing)
freezes in map creation at lategame (last push stopped at 81 because of this)
Alright, it's been quite a while and most of the quirks are gone by now. Closing this and opening separate issues for everything that comes up further.
Adapt AT to U2. Add radon stats mirroring helium (radon = 0 in U1 and likewise, he = 0 in U2) and scruffy exp mirroring fluffy (these have to be separate charts due to wildly different scales).