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 id="upgrade-panel">
|
||||||
<div class="menu-title">Upgrades</div>
|
<div class="menu-title">Upgrades</div>
|
||||||
<div id="total-level" class="stat-line"></div>
|
<div id="total-level" class="stat-line"></div>
|
||||||
|
<div id="star-bonus" class="stat-line"></div>
|
||||||
<div class="upgrade-row">
|
<div class="upgrade-row">
|
||||||
</br>
|
</br>
|
||||||
<div id="spendable-mass">Available to Spend: 0 kg</div>
|
<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,
|
COMET_BASE_COST: 1e7,
|
||||||
PLANET_BASE_COST: 1e24,
|
PLANET_BASE_COST: 1e24,
|
||||||
GIANT_BASE_COST: 1e27,
|
GIANT_BASE_COST: 1e27,
|
||||||
MTYPE_BASE_COST: 1e28,
|
MTYPE_BASE_COST: 1e29,
|
||||||
KTYPE_BASE_COST: 1e29,
|
KTYPE_BASE_COST: 1e30,
|
||||||
GTYPE_BASE_COST: 1e30,
|
GTYPE_BASE_COST: 1e31,
|
||||||
|
|
||||||
// Upgrade scaling
|
// Upgrade scaling
|
||||||
UPGRADE_COST_MULTIPLIER_ASTER: 1.25,
|
UPGRADE_COST_MULTIPLIER_ASTER: 1.25,
|
||||||
@ -74,10 +74,11 @@ var CONFIG = {
|
|||||||
ktype: [8.95e29, 1.59e30], // K-Type: 0.45-0.8 M☉
|
ktype: [8.95e29, 1.59e30], // K-Type: 0.45-0.8 M☉
|
||||||
gtype: [1.59e30, 2.07e30] // G-Type: 0.8-1.04 M☉
|
gtype: [1.59e30, 2.07e30] // G-Type: 0.8-1.04 M☉
|
||||||
},
|
},
|
||||||
|
|
||||||
// Star-tier spawn rate bonuses (applied to all lower tiers)
|
// Star-tier spawn rate bonuses (applied to all lower tiers)
|
||||||
MTYPE_SPAWN_BOOST_PER_LEVEL: 0.03, // 3% per level
|
MTYPE_SPAWN_BOOST_PER_LEVEL: 0.01, // 1% per level
|
||||||
KTYPE_SPAWN_BOOST_PER_LEVEL: 0.04, // 4% per level
|
KTYPE_SPAWN_BOOST_PER_LEVEL: 0.02, // 2% per level
|
||||||
GTYPE_SPAWN_BOOST_PER_LEVEL: 0.05, // 5% per level
|
GTYPE_SPAWN_BOOST_PER_LEVEL: 0.03, // 3% per level
|
||||||
|
|
||||||
// Visual Sizes
|
// Visual Sizes
|
||||||
VISUAL_SIZE_SMALL: 1,
|
VISUAL_SIZE_SMALL: 1,
|
||||||
|
|||||||
33
js/game.js
33
js/game.js
@ -257,20 +257,39 @@ var Game = (function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateSpawnIntervals() {
|
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 /
|
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 /
|
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 /
|
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 /
|
state.currentGiantSpawnInterval = CONFIG.BASE_GIANT_SPAWN_INTERVAL /
|
||||||
(1 + state.giantUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GIANT);
|
((1 + state.giantUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GIANT) * starBonus);
|
||||||
|
|
||||||
|
// M-type boosted by all stars
|
||||||
state.currentMtypeSpawnInterval = CONFIG.BASE_MTYPE_SPAWN_INTERVAL /
|
state.currentMtypeSpawnInterval = CONFIG.BASE_MTYPE_SPAWN_INTERVAL /
|
||||||
(1 + state.mtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_MTYPE);
|
((1 + state.mtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_MTYPE) * starBonus);
|
||||||
|
|
||||||
|
// K-type boosted by all stars
|
||||||
state.currentKtypeSpawnInterval = CONFIG.BASE_KTYPE_SPAWN_INTERVAL /
|
state.currentKtypeSpawnInterval = CONFIG.BASE_KTYPE_SPAWN_INTERVAL /
|
||||||
(1 + state.ktypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_KTYPE);
|
((1 + state.ktypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_KTYPE) * starBonus);
|
||||||
|
|
||||||
|
// G-type boosted by all stars
|
||||||
state.currentGtypeSpawnInterval = CONFIG.BASE_GTYPE_SPAWN_INTERVAL /
|
state.currentGtypeSpawnInterval = CONFIG.BASE_GTYPE_SPAWN_INTERVAL /
|
||||||
(1 + state.gtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GTYPE);
|
((1 + state.gtypeUpgradeLevel * CONFIG.UPGRADE_BONUS_PER_LEVEL_GTYPE) * starBonus);
|
||||||
}
|
}
|
||||||
|
|
||||||
function recalculateUpgradeCosts() {
|
function recalculateUpgradeCosts() {
|
||||||
|
|||||||
31
js/ui.js
31
js/ui.js
@ -352,9 +352,38 @@ var UI = {
|
|||||||
'<span class="tooltip-trigger">' +
|
'<span class="tooltip-trigger">' +
|
||||||
'Total Level: ' + totalLevel +
|
'Total Level: ' + totalLevel +
|
||||||
'<span class="tooltip">' +
|
'<span class="tooltip">' +
|
||||||
'Sum of all upgrades.<br>'
|
'Sum of all upgrades.<br>' +
|
||||||
'</span>' +
|
'</span>' +
|
||||||
'</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() {
|
updateActiveObjects: function() {
|
||||||
|
|||||||
@ -148,6 +148,8 @@ canvas {
|
|||||||
width: 280px;
|
width: 280px;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
max-height: 80vh;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#settings-menu.open {
|
#settings-menu.open {
|
||||||
@ -200,6 +202,8 @@ canvas {
|
|||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
width: 280px;
|
width: 280px;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
max-height: 80vh;
|
||||||
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#upgrade-panel.open {
|
#upgrade-panel.open {
|
||||||
|
|||||||
Reference in New Issue
Block a user