modified: index.html
modified: js/config.js modified: js/game.js modified: js/ui.js modified: style.css
This commit is contained in:
@ -75,6 +75,7 @@ a1.7 1.7 0 0 0-1.5 1z"></path>
|
||||
<div id="upgrade-panel">
|
||||
<div class="menu-title">Upgrades</div>
|
||||
<div id="total-level" class="stat-line"></div>
|
||||
<div id="star-bonus" class="stat-line"></div>
|
||||
<div class="upgrade-row">
|
||||
</br>
|
||||
<div id="spendable-mass">Available to Spend: 0 kg</div>
|
||||
|
||||
13
js/config.js
13
js/config.js
@ -36,9 +36,9 @@ var CONFIG = {
|
||||
COMET_BASE_COST: 1e7,
|
||||
PLANET_BASE_COST: 1e24,
|
||||
GIANT_BASE_COST: 1e27,
|
||||
MTYPE_BASE_COST: 1e28,
|
||||
KTYPE_BASE_COST: 1e29,
|
||||
GTYPE_BASE_COST: 1e30,
|
||||
MTYPE_BASE_COST: 1e29,
|
||||
KTYPE_BASE_COST: 1e30,
|
||||
GTYPE_BASE_COST: 1e31,
|
||||
|
||||
// Upgrade scaling
|
||||
UPGRADE_COST_MULTIPLIER_ASTER: 1.25,
|
||||
@ -74,10 +74,11 @@ var CONFIG = {
|
||||
ktype: [8.95e29, 1.59e30], // K-Type: 0.45-0.8 M☉
|
||||
gtype: [1.59e30, 2.07e30] // G-Type: 0.8-1.04 M☉
|
||||
},
|
||||
|
||||
// Star-tier spawn rate bonuses (applied to all lower tiers)
|
||||
MTYPE_SPAWN_BOOST_PER_LEVEL: 0.03, // 3% per level
|
||||
KTYPE_SPAWN_BOOST_PER_LEVEL: 0.04, // 4% per level
|
||||
GTYPE_SPAWN_BOOST_PER_LEVEL: 0.05, // 5% per level
|
||||
MTYPE_SPAWN_BOOST_PER_LEVEL: 0.01, // 1% per level
|
||||
KTYPE_SPAWN_BOOST_PER_LEVEL: 0.02, // 2% per level
|
||||
GTYPE_SPAWN_BOOST_PER_LEVEL: 0.03, // 3% per level
|
||||
|
||||
// Visual Sizes
|
||||
VISUAL_SIZE_SMALL: 1,
|
||||
|
||||
39
js/game.js
39
js/game.js
@ -257,20 +257,39 @@ var Game = (function() {
|
||||
}
|
||||
|
||||
function updateSpawnIntervals() {
|
||||
// Calculate star-tier spawn boost (multiplicative)
|
||||
var starBonus = 1 +
|
||||
(state.mtypeUpgradeLevel * CONFIG.MTYPE_SPAWN_BOOST_PER_LEVEL) +
|
||||
(state.ktypeUpgradeLevel * CONFIG.KTYPE_SPAWN_BOOST_PER_LEVEL) +
|
||||
(state.gtypeUpgradeLevel * CONFIG.GTYPE_SPAWN_BOOST_PER_LEVEL);
|
||||
|
||||
// Asteroids boosted by all stars
|
||||
state.currentAsteroidSpawnInterval = CONFIG.BASE_ASTEROID_SPAWN_INTERVAL /
|
||||
(1 + state.asteroidUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_ASTER);
|
||||
((1 + state.asteroidUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_ASTER) * starBonus);
|
||||
|
||||
// Comets boosted by all stars
|
||||
state.currentCometSpawnInterval = CONFIG.BASE_COMET_SPAWN_INTERVAL /
|
||||
(1 + state.cometUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_COMET);
|
||||
((1 + state.cometUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_COMET) * starBonus);
|
||||
|
||||
// Planets boosted by all stars
|
||||
state.currentPlanetSpawnInterval = CONFIG.BASE_PLANET_SPAWN_INTERVAL /
|
||||
(1 + state.planetUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_PLANT);
|
||||
((1 + state.planetUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_PLANT) * starBonus);
|
||||
|
||||
// Giants boosted by all stars
|
||||
state.currentGiantSpawnInterval = CONFIG.BASE_GIANT_SPAWN_INTERVAL /
|
||||
(1 + state.giantUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GIANT);
|
||||
state.currentMtypeSpawnInterval = CONFIG.BASE_MTYPE_SPAWN_INTERVAL /
|
||||
(1 + state.mtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_MTYPE);
|
||||
state.currentKtypeSpawnInterval = CONFIG.BASE_KTYPE_SPAWN_INTERVAL /
|
||||
(1 + state.ktypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_KTYPE);
|
||||
state.currentGtypeSpawnInterval = CONFIG.BASE_GTYPE_SPAWN_INTERVAL /
|
||||
(1 + state.gtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GTYPE);
|
||||
((1 + state.giantUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GIANT) * starBonus);
|
||||
|
||||
// M-type boosted by all stars
|
||||
state.currentMtypeSpawnInterval = CONFIG.BASE_MTYPE_SPAWN_INTERVAL /
|
||||
((1 + state.mtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_MTYPE) * starBonus);
|
||||
|
||||
// K-type boosted by all stars
|
||||
state.currentKtypeSpawnInterval = CONFIG.BASE_KTYPE_SPAWN_INTERVAL /
|
||||
((1 + state.ktypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_KTYPE) * starBonus);
|
||||
|
||||
// G-type boosted by all stars
|
||||
state.currentGtypeSpawnInterval = CONFIG.BASE_GTYPE_SPAWN_INTERVAL /
|
||||
((1 + state.gtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GTYPE) * starBonus);
|
||||
}
|
||||
|
||||
function recalculateUpgradeCosts() {
|
||||
|
||||
71
js/ui.js
71
js/ui.js
@ -336,25 +336,54 @@ var UI = {
|
||||
},
|
||||
|
||||
updateTotalLevel: function(gameState) {
|
||||
var el = this.elements.totalLevel;
|
||||
if (!el) return;
|
||||
|
||||
var totalLevel =
|
||||
gameState.asteroidUpgradeLevel +
|
||||
gameState.cometUpgradeLevel +
|
||||
gameState.planetUpgradeLevel +
|
||||
gameState.giantUpgradeLevel +
|
||||
gameState.mtypeUpgradeLevel +
|
||||
gameState.ktypeUpgradeLevel +
|
||||
gameState.gtypeUpgradeLevel;
|
||||
|
||||
el.innerHTML =
|
||||
'<span class="tooltip-trigger">' +
|
||||
'Total Level: ' + totalLevel +
|
||||
'<span class="tooltip">' +
|
||||
'Sum of all upgrades.<br>'
|
||||
'</span>' +
|
||||
'</span>';
|
||||
var el = this.elements.totalLevel;
|
||||
if (!el) return;
|
||||
|
||||
var totalLevel =
|
||||
gameState.asteroidUpgradeLevel +
|
||||
gameState.cometUpgradeLevel +
|
||||
gameState.planetUpgradeLevel +
|
||||
gameState.giantUpgradeLevel +
|
||||
gameState.mtypeUpgradeLevel +
|
||||
gameState.ktypeUpgradeLevel +
|
||||
gameState.gtypeUpgradeLevel;
|
||||
|
||||
el.innerHTML =
|
||||
'<span class="tooltip-trigger">' +
|
||||
'Total Level: ' + totalLevel +
|
||||
'<span class="tooltip">' +
|
||||
'Sum of all upgrades.<br>' +
|
||||
'</span>' +
|
||||
'</span>';
|
||||
|
||||
var starBonusEl = document.getElementById('star-bonus');
|
||||
if (!starBonusEl) return;
|
||||
|
||||
var mBonus = gameState.mtypeUpgradeLevel * CONFIG.MTYPE_SPAWN_BOOST_PER_LEVEL * 100;
|
||||
var kBonus = gameState.ktypeUpgradeLevel * CONFIG.KTYPE_SPAWN_BOOST_PER_LEVEL * 100;
|
||||
var gBonus = gameState.gtypeUpgradeLevel * CONFIG.GTYPE_SPAWN_BOOST_PER_LEVEL * 100;
|
||||
var totalStarBonus = (mBonus + kBonus + gBonus).toFixed(0);
|
||||
|
||||
var starTooltip =
|
||||
'*-Type upgrades boost the spawn rate of all objects.';
|
||||
|
||||
if (mBonus > 1) {
|
||||
starTooltip += '<br><br>M-Type: +' + mBonus.toFixed(0) + '%<br>';
|
||||
}
|
||||
|
||||
if (kBonus > 1) {
|
||||
starTooltip += 'K-Type: +' + kBonus.toFixed(0) + '%<br>';
|
||||
}
|
||||
|
||||
if (gBonus > 1) {
|
||||
starTooltip += 'G-Type: +' + gBonus.toFixed(0) + '%';
|
||||
}
|
||||
|
||||
starBonusEl.innerHTML =
|
||||
'<span class="tooltip-trigger">' +
|
||||
'<br><span style="color:#FC6;">Star Bonus: +' + totalStarBonus + '%</span>' +
|
||||
'<span class="tooltip">' + starTooltip + '</span>' +
|
||||
'</span>';
|
||||
},
|
||||
|
||||
updateActiveObjects: function() {
|
||||
@ -391,7 +420,7 @@ var UI = {
|
||||
updateAsteroidUpgrade: function(gameState) {
|
||||
var rate = (1000 / gameState.currentAsteroidSpawnInterval).toFixed(2);
|
||||
var bonusPercent = (gameState.asteroidUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_ASTER * 100).toFixed(0);
|
||||
var tooltipText = 'Asteroids are rocky, airless bodies that range in size from tiny pebbles to hundreds of kilometers across. Some asteroids have moons or even binary companions.<br><br>Rate: ' + rate + '/sec<br>Bonus: ' + bonusPercent + '%';
|
||||
var tooltipText = 'Asteroids are rocky, airless bodies that range in size from tiny pebbles to hundreds of kilometers across. Some asteroids have moons or even binary companions.<br><br>Rate: ' + rate + '/sec<br>Bonus: ' + bonusPercent + '%';
|
||||
if (!gameState.cometUnlocked) tooltipText += '<br><span style="color:#0FF;">Unlocks Comets at level 20</span>';
|
||||
|
||||
this.elements.asteroidLevel.innerHTML = '<span class="tooltip-trigger">Asteroids: Level ' +
|
||||
@ -489,7 +518,7 @@ var UI = {
|
||||
updateGtypeUpgrade: function(gameState) {
|
||||
var rate = (CONFIG.BASE_GTYPE_SPAWN_INTERVAL / gameState.currentGtypeSpawnInterval).toFixed(2);
|
||||
var bonusPercent = (gameState.gtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GTYPE * 100).toFixed(0);
|
||||
var tooltipText = 'G-Types, also known as yellow dwarfs, are medium-sized stars that are about the size of our Sun (~1 M☉). The term yellow dwarf is a misnomer, as most G-Types (including the Sun) are in fact white. These stars are stable and long-lived, making them strong candidates for hosting habitable planets.<br><br>Rate: ' + rate + '/3days<br>Bonus: ' + bonusPercent + '%';
|
||||
var tooltipText = 'G-Types, also known as yellow dwarfs, are medium-sized stars that are about the size of our Sun (~1 M☉). The term yellow dwarf is a misnomer, as most G-Types (including the Sun) are in fact white. These stars are stable and long-lived, making them strong candidates for hosting habitable planets.<br><br>Rate: ' + rate + '/3days<br>Bonus: ' + bonusPercent + '%';
|
||||
|
||||
this.elements.gtypeLevel.innerHTML = '<span class="tooltip-trigger">G-Type: Level ' +
|
||||
gameState.gtypeUpgradeLevel +
|
||||
|
||||
Reference in New Issue
Block a user