Add new advanced enemy type (advanced3), flamethrower tower, laser cannon tower, and update wave configuration with new enemy spawns and timing
This commit introduces a new advanced enemy variant (advanced3) with increased health and speed, adds two new tower types (flamethrower and laser cannon) with their respective configurations, extends the spawn timing for existing enemies in wave 9, and enhances the upgrade menu UI to display stat improvements.
This commit is contained in:
parent
283a51044c
commit
ff5f9db876
Binary file not shown.
|
Before Width: | Height: | Size: 494 KiB After Width: | Height: | Size: 848 KiB |
Binary file not shown.
|
|
@ -14,7 +14,7 @@ export class Enemies {
|
|||
this.baseSprite = ENEMIES_CONFIG[type].spriteStart;
|
||||
this.spawnRange = {
|
||||
low: 500,
|
||||
high: 8000
|
||||
high: 12000
|
||||
}
|
||||
|
||||
this.spawnEnemy();
|
||||
|
|
|
|||
|
|
@ -86,5 +86,16 @@ export const ENEMIES_CONFIG = {
|
|||
'spriteSheet': 'advanced-enemies',
|
||||
'dropLow': 15,
|
||||
'dropHigh': 25
|
||||
},
|
||||
'advanced3': {
|
||||
'spread': 0,
|
||||
'health': 1100,
|
||||
'fullHealth': 1100,
|
||||
'speedLow': 65,
|
||||
'speedHigh': 85,
|
||||
'spriteStart': 20,
|
||||
'spriteSheet': 'advanced-enemies',
|
||||
'dropLow': 15,
|
||||
'dropHigh': 25
|
||||
}
|
||||
}
|
||||
|
|
@ -33,43 +33,6 @@ export const TOWERS_CONFIG = {
|
|||
'anim': 'gun-level3-fire'
|
||||
}
|
||||
},
|
||||
'cannon': {
|
||||
'name': 'Cannon',
|
||||
'cost': 200,
|
||||
'spriteStart': 10,
|
||||
'dmgType': 'aoe',
|
||||
'level1': {
|
||||
'dmgLow': 15,
|
||||
'dmgHigh': 35,
|
||||
'rate': 2500,
|
||||
'duration': 200,
|
||||
'range': 400,
|
||||
'aoe': 55,
|
||||
'anim': 'cannon-level1-fire'
|
||||
},
|
||||
'level2': {
|
||||
'sprite': 12,
|
||||
'cost': 400,
|
||||
'dmgLow': 28,
|
||||
'dmgHigh': 60,
|
||||
'rate': 2500,
|
||||
'duration': 500,
|
||||
'range': 450,
|
||||
'aoe': 60,
|
||||
'anim': 'cannon-level1-fire'
|
||||
},
|
||||
'level3': {
|
||||
'sprite': 14,
|
||||
'cost': 800,
|
||||
'dmgLow': 35,
|
||||
'dmgHigh': 90,
|
||||
'rate': 2500,
|
||||
'duration': 500,
|
||||
'range': 500,
|
||||
'aoe': 65,
|
||||
'anim': 'cannon-level1-fire'
|
||||
}
|
||||
},
|
||||
'flame': {
|
||||
'name': 'Flamethrower',
|
||||
'cost': 150,
|
||||
|
|
@ -107,39 +70,41 @@ export const TOWERS_CONFIG = {
|
|||
'anim': 'flamethrower'
|
||||
}
|
||||
},
|
||||
'icbm': {
|
||||
'name': 'ICBM Launcher',
|
||||
'cost': 500,
|
||||
'spriteStart': 30,
|
||||
'cannon': {
|
||||
'name': 'Cannon',
|
||||
'cost': 200,
|
||||
'spriteStart': 10,
|
||||
'dmgType': 'aoe',
|
||||
'level1': {
|
||||
'dmgLow': 40,
|
||||
'dmgHigh': 50,
|
||||
'rate': 10000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 200,
|
||||
'anim': 'none'
|
||||
'dmgLow': 15,
|
||||
'dmgHigh': 35,
|
||||
'rate': 2500,
|
||||
'duration': 200,
|
||||
'range': 400,
|
||||
'aoe': 55,
|
||||
'anim': 'cannon-level1-fire'
|
||||
},
|
||||
'level2': {
|
||||
'cost': 1000,
|
||||
'dmgLow': 40,
|
||||
'dmgHigh': 50,
|
||||
'rate': 8000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 210,
|
||||
'anim': 'none'
|
||||
'sprite': 12,
|
||||
'cost': 400,
|
||||
'dmgLow': 28,
|
||||
'dmgHigh': 60,
|
||||
'rate': 2500,
|
||||
'duration': 500,
|
||||
'range': 450,
|
||||
'aoe': 60,
|
||||
'anim': 'cannon-level1-fire'
|
||||
},
|
||||
'level3': {
|
||||
'cost': 2000,
|
||||
'dmgLow': 50,
|
||||
'dmgHigh': 60,
|
||||
'rate': 5000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 225,
|
||||
'anim': 'none'
|
||||
'sprite': 14,
|
||||
'cost': 800,
|
||||
'dmgLow': 35,
|
||||
'dmgHigh': 90,
|
||||
'rate': 2500,
|
||||
'duration': 500,
|
||||
'range': 500,
|
||||
'aoe': 65,
|
||||
'anim': 'cannon-level1-fire'
|
||||
}
|
||||
},
|
||||
'laser': {
|
||||
|
|
@ -175,5 +140,40 @@ export const TOWERS_CONFIG = {
|
|||
'range': 400,
|
||||
'anim': 'laser-level3-fire'
|
||||
}
|
||||
},
|
||||
'icbm': {
|
||||
'name': 'ICBM Launcher',
|
||||
'cost': 500,
|
||||
'spriteStart': 30,
|
||||
'dmgType': 'aoe',
|
||||
'level1': {
|
||||
'dmgLow': 40,
|
||||
'dmgHigh': 50,
|
||||
'rate': 10000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 200,
|
||||
'anim': 'none'
|
||||
},
|
||||
'level2': {
|
||||
'cost': 1000,
|
||||
'dmgLow': 40,
|
||||
'dmgHigh': 50,
|
||||
'rate': 8000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 210,
|
||||
'anim': 'none'
|
||||
},
|
||||
'level3': {
|
||||
'cost': 2000,
|
||||
'dmgLow': 50,
|
||||
'dmgHigh': 60,
|
||||
'rate': 5000,
|
||||
'duration': 2000,
|
||||
'range': 800,
|
||||
'aoe': 225,
|
||||
'anim': 'none'
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -92,7 +92,7 @@ export class TowerManager {
|
|||
|
||||
this.upgradeCost = TOWERS_CONFIG[tower.props.type][nextLevel].cost;
|
||||
|
||||
this.upgradeText = this.scene.add.text(tower.x + 175, tower.y - 50, `Upgrade: ${this.upgradeCost}`, {
|
||||
this.upgradeText = this.scene.add.text(tower.x + 175, tower.y - 75, `Upgrade: ${this.upgradeCost}`, {
|
||||
fontFamily: 'neuropol, arial',
|
||||
fontSize: '32px',
|
||||
fill: '#ffd900ff',
|
||||
|
|
@ -109,6 +109,20 @@ export class TowerManager {
|
|||
}).setDepth(13).setInteractive();
|
||||
this.upgradeDetails.add(this.upgradeText);
|
||||
|
||||
if (currentLevel !== 3) {
|
||||
const currentStats = TOWERS_CONFIG[tower.props.type][currentLevel];
|
||||
const nextStats = TOWERS_CONFIG[tower.props.type][nextLevel];
|
||||
const rangeText = `Range: +${nextStats.range - currentStats.range}\n`;
|
||||
const damageText = `Damage: +${nextStats.dmgHigh - currentStats.dmgHigh}`;
|
||||
const upgradesText = `${rangeText}${damageText}`;
|
||||
|
||||
this.upgradeTextStats = this.scene.add.text(tower.x + 200, tower.y - 25, upgradesText, {
|
||||
fontFamily: 'neuropol, arial', fontSize: '20px', fill: '#00ff88ff', stroke: '#00c493ff', strokeThickness: 2,
|
||||
shadow: { offsetX: 2, offsetY: 2, color: '#000000', blur: 2, stroke: false, fill: true }
|
||||
}).setDepth(13).setInteractive();
|
||||
this.upgradeDetails.add(this.upgradeTextStats);
|
||||
}
|
||||
|
||||
if (currentLevel === 'level3') {
|
||||
this.upgradeText.setText('Max Upgrade').disableInteractive();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,6 +174,32 @@ export const WAVE_CONFIG = {
|
|||
advanced1: 1,
|
||||
basic3: 10
|
||||
}
|
||||
},
|
||||
//Wave
|
||||
9: {
|
||||
//Schedule
|
||||
1: {
|
||||
begin: 0,
|
||||
advanced3: 1,
|
||||
medium1: 4,
|
||||
basic4: 6
|
||||
},
|
||||
2: {
|
||||
begin: 25,
|
||||
basic3: 10,
|
||||
medium2: 6,
|
||||
},
|
||||
3: {
|
||||
begin: 45,
|
||||
advanced3: 2,
|
||||
basic4: 15
|
||||
},
|
||||
4: {
|
||||
begin: 35,
|
||||
medium1: 4,
|
||||
medium2: 4,
|
||||
basic4: 20
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue