diff --git a/dist/shattered_sword_assets/sounds/level_up.wav b/dist/shattered_sword_assets/sounds/level_up.wav new file mode 100644 index 0000000..74f1f74 Binary files /dev/null and b/dist/shattered_sword_assets/sounds/level_up.wav differ diff --git a/src/shattered_sword/Player/PlayerController.ts b/src/shattered_sword/Player/PlayerController.ts index 36d029e..46a1b6a 100644 --- a/src/shattered_sword/Player/PlayerController.ts +++ b/src/shattered_sword/Player/PlayerController.ts @@ -98,6 +98,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA CURRENT_SHIELD : number =0; MAX_SHIELD : number = 20; invincible : boolean = false; + level : number = 1; godMode: boolean = false; @@ -281,6 +282,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA } if(this.CURRENT_HP <= 0){ + this.lives --; (this.owner).animation.play("DYING"); (this.owner).animation.queue("DEAD", true, Player_Events.PLAYER_KILLED); this.emitter.fireEvent(Player_Events.PLAYER_KILLED); @@ -315,6 +317,9 @@ export default class PlayerController extends StateMachineAI implements BattlerA //if > than max exp level up (give buff) if(this.CURRENT_EXP >= this.MAX_EXP){ this.CURRENT_EXP -= this.MAX_EXP; + this.MAX_EXP += 50; //increase max exp needed for level up + this.level++ ; + this.emitter.fireEvent(GameEventType.PLAY_SOUND, {key: "level_up", loop: false, holdReference: false}); this.emitter.fireEvent(Player_Events.GIVE_BUFF); } } @@ -331,7 +336,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA // Get sub-array of first 3 elements after shuffled let shuffled = PlayerController.buffPool.slice(0, 3); //3 buff categories - let num = Number(Math.random().toPrecision(1)) * 10; //random number from 1 to 10 if no value given + let num = parseFloat(Math.random().toPrecision(1)) * 10; //random number from 1 to 10 if no value given if(typeof val !== 'undefined'){ num = val; } @@ -346,12 +351,21 @@ export default class PlayerController extends StateMachineAI implements BattlerA } let dotBuffs : Buff[] = [ - {type:BuffType.BLEED, value:1, category: BuffCategory.DOT, string: "Your hits \napply Bleed"}, - {type:BuffType.BURN, value:1, category: BuffCategory.DOT, string: "Your hits \napply Burn"}, - {type:BuffType.POISON, value:1, category: BuffCategory.DOT, string: "Your hits \napply poison"}, - {type:BuffType.EXTRA_DOT, value:num, category: BuffCategory.DOT, string: "increase your \nDOT damage"}, - ]; + if(!this.hasBleed){ + dotBuffs.push({type:BuffType.BLEED, value:1, category: BuffCategory.DOT, string: "Your hits \napply Bleed"}); + } + if(!this.hasBurn){ + dotBuffs.push({type:BuffType.BURN, value:1, category: BuffCategory.DOT, string: "Your hits \napply Burn"}); + } + if(!this.hasPoison){ + dotBuffs.push({type:BuffType.POISON, value:1, category: BuffCategory.DOT, string: "Your hits \napply poison"}); + } + + if(dotBuffs.length < 3){ //only add extra dot if at least one dot is acquired + dotBuffs.push({type:BuffType.EXTRA_DOT, value:num, category: BuffCategory.DOT, string: "increase your \nDOT damage"}); + } + let shieldBuffs : Buff[] = [ {type:BuffType.HEALTH, value:1, category: BuffCategory.SHIELD}, @@ -366,7 +380,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA let healthBuffs : Buff[] = [ - {type:BuffType.DEF, value:num, category: BuffCategory.HEALTH} + {type:BuffType.DEF, value: num, category: BuffCategory.HEALTH} ]; if(!this.hasLifesteal){ healthBuffs.push({type:BuffType.LIFESTEAL, value:1, category: BuffCategory.HEALTH, string:"Gain lifesteal"}); @@ -381,7 +395,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA {type:BuffType.SPEED, value:num, category: BuffCategory.EXTRA}, {type:BuffType.ATK, value:num, category: BuffCategory.EXTRA} ]; - if(!this.hasOneShot){ + if(!this.hasOneShot){ //only add oneshot buff if it isnt already included extraBuffs.push({type:BuffType.ONESHOT, value:1, category: BuffCategory.EXTRA, string: "Your hits hurt \n100x more but \nyour max health \nis set to 1 "}); }; diff --git a/src/shattered_sword/Scenes/GameLevel.ts b/src/shattered_sword/Scenes/GameLevel.ts index 16d7666..307973b 100644 --- a/src/shattered_sword/Scenes/GameLevel.ts +++ b/src/shattered_sword/Scenes/GameLevel.ts @@ -76,6 +76,9 @@ export default class GameLevel extends Scene { protected expLabel : Label; protected expBar: Rect; + //level label + protected playerLevelLabel : Label; + //shield label protected shieldLabel : Label; protected shieldBar: Rect; @@ -144,7 +147,7 @@ export default class GameLevel extends Scene { this.load.audio("jump", "shattered_sword_assets/sounds/jump2.wav"); this.load.audio("hurt", "shattered_sword_assets/sounds/hurt.wav"); this.load.audio("die", "shattered_sword_assets/sounds/die.wav"); - + this.load.audio("level_up","shattered_sword_assets/sounds/level_up.wav"); this.load.image("knife", "shattered_sword_assets/sprites/knife.png"); @@ -206,6 +209,7 @@ export default class GameLevel extends Scene { // Initialize the timers + /* this.respawnTimer = new Timer(1000, () => { if(GameLevel.livesCount === 0){ this.sceneManager.changeToScene(MainMenu); @@ -215,6 +219,7 @@ export default class GameLevel extends Scene { this.player.unfreeze(); } }); + */ let enemies = this.rmg.getEnemies(); //may have to move this to start scene in gameLevel @@ -392,6 +397,11 @@ export default class GameLevel extends Scene { this.expBar.fillWidth = (playerAI.CURRENT_EXP/playerAI.MAX_EXP)*150; // this.expLabel.sizeToText(); + //update level ui + this.playerLevelLabel.text = "lv." + playerAI.level; + //update lives ui + this.livesCountLabel.text = "Lives: " + playerAI.lives; + //move background @@ -529,7 +539,12 @@ export default class GameLevel extends Scene { this.shieldBar.borderWidth = 3; this.shieldBar.color = Color.ORANGE; - this.expLabel =