diff --git a/public/assets/gems/Soulforge/1.png b/public/assets/gems/Soulforge/1.png new file mode 100644 index 0000000..add5555 Binary files /dev/null and b/public/assets/gems/Soulforge/1.png differ diff --git a/public/assets/gems/Soulforge/2.png b/public/assets/gems/Soulforge/2.png new file mode 100644 index 0000000..8da6be4 Binary files /dev/null and b/public/assets/gems/Soulforge/2.png differ diff --git a/public/assets/gems/Titalium/1.png b/public/assets/gems/Titalium/1.png new file mode 100644 index 0000000..d9a9b42 Binary files /dev/null and b/public/assets/gems/Titalium/1.png differ diff --git a/public/assets/gems/Titalium/2.png b/public/assets/gems/Titalium/2.png new file mode 100644 index 0000000..e8df315 Binary files /dev/null and b/public/assets/gems/Titalium/2.png differ diff --git a/public/assets/gems/Titalium/3.png b/public/assets/gems/Titalium/3.png new file mode 100644 index 0000000..c014b53 Binary files /dev/null and b/public/assets/gems/Titalium/3.png differ diff --git a/public/assets/gems/Yeti/1.png b/public/assets/gems/Yeti/1.png new file mode 100644 index 0000000..4dbf7c1 Binary files /dev/null and b/public/assets/gems/Yeti/1.png differ diff --git a/public/assets/gems/Yeti/2.png b/public/assets/gems/Yeti/2.png new file mode 100644 index 0000000..e6b3b07 Binary files /dev/null and b/public/assets/gems/Yeti/2.png differ diff --git a/public/assets/json/Gems.json b/public/assets/json/Gems.json index 61d55e3..880ee75 100644 --- a/public/assets/json/Gems.json +++ b/public/assets/json/Gems.json @@ -39,5 +39,142 @@ "frostfire": 0 } ] + }, + { + "name": "Yeti Gem", + "description": "Yeti gem description. Something something, write this while drunk or something.", + "type": "Yeti", + "totalLevels": 2, + "textures": [], + "cantCombineWith": [], + "specialCombine": [], + "genericImprovements": [ + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0.5, + "timeToLiveUp": 0, + "pierceUp": 1 + }, + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0.5, + "timeToLiveUp": 0, + "pierceUp": 1 + } + ], + "gemResistanceModifications": [ + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + }, + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + } + ] + }, + { + "name": "Titalium Gem", + "description": "Titalium gem description. Something something zombie creeps working for you something something.", + "type": "Titalium", + "totalLevels": 3, + "textures": [], + "cantCombineWith": [], + "specialCombine": [], + "genericImprovements": [ + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0.5, + "timeToLiveUp": 0, + "pierceUp": 1 + }, + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0, + "timeToLiveUp": 0, + "pierceUp": 1 + }, + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0, + "timeToLiveUp": 0, + "pierceUp": 1 + } + ], + "gemResistanceModifications": [ + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + }, + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + }, + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + } + ] + }, + { + "name": "Soulforge Gem", + "description": "Soulforge gem description, have to write later.", + "type": "Soulforge", + "totalLevels": 2, + "textures": [], + "cantCombineWith": [], + "specialCombine": [], + "genericImprovements": [ + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0.5, + "timeToLiveUp": 0, + "pierceUp": 1 + }, + { + "damageUp": 2, + "attackSpeedUp": 100, + "rangeUp": 0.5, + "timeToLiveUp": 0, + "pierceUp": 1 + } + ], + "gemResistanceModifications": [ + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + }, + { + "physical": 0, + "divine": 0, + "fire": 0, + "ice": 0, + "frostfire": 0 + } + ] } ] diff --git a/src/classes/Bastion.ts b/src/classes/Bastion.ts index 575df08..36c9f56 100644 --- a/src/classes/Bastion.ts +++ b/src/classes/Bastion.ts @@ -33,8 +33,8 @@ export class Engine { Engine.NotificationManager.Notify('Loaded testing suite.', 'danger'); Engine.TowerManager.ToggleChoosingTowerLocation('RESET'); Engine.TowerManager.PlaceTower(GameAssets.Towers[1], 8, 10, GameAssets.Towers[0].behaviour, true); - for (let i = 0; i < 16; i++) { - this.GameScene.MissionStats.giveGem(new Gem(GemType.Fire), true); + for (let i = 0; i < 29; i++) { + this.GameScene.MissionStats.giveGem(new Gem(i % 4), true); } } } diff --git a/src/classes/game/Gem.ts b/src/classes/game/Gem.ts index bcbf2f3..f3742c1 100644 --- a/src/classes/game/Gem.ts +++ b/src/classes/game/Gem.ts @@ -8,12 +8,15 @@ export default class Gem { public texture: PIXI.Texture; public level: number = 1; public definition: GemDefinition; - public id: number; - constructor(gemType: GemType) { + public id: number | string; + constructor(gemType: GemType, doNotIncrement?: boolean) { this.definition = GameAssets.Gems[gemType]; this.texture = this.definition.textures[0]; - this.id = latestGemId + 1; - latestGemId++; + + if (!doNotIncrement) { + this.id = latestGemId + 1; + latestGemId++; + } else this.id = ''; } public currentGemImprovement() { let totalGemImprovement: GenericGemImprovement = { diff --git a/src/classes/game/MissionStats.ts b/src/classes/game/MissionStats.ts index c1c74e2..f7b894c 100644 --- a/src/classes/game/MissionStats.ts +++ b/src/classes/game/MissionStats.ts @@ -50,9 +50,9 @@ export default class MissionStats extends GameObject { } public giveGem(gem: Gem, noNotify?) { - if (this.inventory.length >= 48) + if (this.inventory.length >= 32) return Engine.NotificationManager.Notify( - "Can't hold more than 48 Gems. Extra Gem was thrown away.", + "Can't hold more than 32 Gems. Extra Gem was thrown away.", 'danger' ); this.inventory.push(gem); diff --git a/src/classes/game/TowerBehaviours.ts b/src/classes/game/TowerBehaviours.ts index ac8f24a..7f7d8d4 100644 --- a/src/classes/game/TowerBehaviours.ts +++ b/src/classes/game/TowerBehaviours.ts @@ -24,7 +24,7 @@ function projectileCheck(tower: Tower, elapsedMS: number) { * * @param tower - The tower whose damage is being computed. */ -export function computeDamage(tower: Tower) { +export function computeGemImprovements(tower: Tower) { let gemDamage = 0; tower.slottedGems.forEach((gem) => { gemDamage += gem.currentGemImprovement().damageUp; @@ -40,7 +40,7 @@ export function computeDamage(tower: Tower) { * @param elapsedMS - The elapsed time in milliseconds since the last update. */ export function BasicTowerBehaviour(tower: Tower, elapsedMS: number) { - computeDamage(tower); + if (tower.ticksUntilNextShot % 2 == 0) computeGemImprovements(tower); projectileCheck(tower, elapsedMS); if (tower.ticksUntilNextShot > 0) tower.ticksUntilNextShot--; let creepsInRange = tower.GetCreepsInRange(); diff --git a/src/classes/gui/GemTab.ts b/src/classes/gui/GemTab.ts index f7da1d5..04b0833 100644 --- a/src/classes/gui/GemTab.ts +++ b/src/classes/gui/GemTab.ts @@ -32,7 +32,7 @@ export default class GemTab extends GuiObject { this.gemTabSprite.x = 0; this.gemTabSprite.y = 0; this.gemTabSprite.width = this.bounds.width; - this.gemTabSprite.height = this.bounds.height; + this.gemTabSprite.height = this.bounds.height - 255; this.container.addChild(this.gemTabSprite); Engine.app.canvas.addEventListener('pointermove', () => { this.pointerMoveEvent(); diff --git a/src/classes/gui/TowerPanel.ts b/src/classes/gui/TowerPanel.ts index 89a226a..f75b2e7 100644 --- a/src/classes/gui/TowerPanel.ts +++ b/src/classes/gui/TowerPanel.ts @@ -7,7 +7,7 @@ import Button, { ButtonTexture } from './Button'; import { Tower } from '../game/Tower'; import Gem from '../game/Gem'; import { GemEvents } from '../Events'; -import { computeDamage } from '../game/TowerBehaviours'; +import { computeGemImprovements } from '../game/TowerBehaviours'; export class VisualGemSlot extends GuiObject { public iconSprite: PIXI.Sprite; @@ -220,7 +220,7 @@ export default class TowerPanel extends GuiObject { } public Show(tower: Tower) { this.isShown = true; - computeDamage(tower); + computeGemImprovements(tower); this.SetContent(tower); this.MakeSlots(tower); this.showingTower = tower; diff --git a/src/scenes/Game.ts b/src/scenes/Game.ts index 593b98a..fb01b7c 100644 --- a/src/scenes/Game.ts +++ b/src/scenes/Game.ts @@ -213,7 +213,7 @@ export class GameScene extends Scene { // offerText.x -= offerText.width; Engine.GameMaster.currentScene.stage.addChildAt(offerText, 0); gemsToOffer.forEach((gType, index) => { - let _Gem = new Gem(gType); + let _Gem = new Gem(gType, true); let vGem = new VisualGemSlot(0, Engine.app.stage, _Gem); this.visualGems.push(vGem); vGem.container.x = this.offerGemsSprite.x - 15 + 69 * (index + 1); @@ -228,7 +228,7 @@ export class GameScene extends Scene { vGem.onClick = () => { Engine.GameScene.tooltip.Hide(); offerText.destroy(); - this.PlayerPickedGem(_Gem); + this.PlayerPickedGem(new Gem(gType)); }; }); }