added buff strings, quick bugfix
This commit is contained in:
parent
c1a00694f6
commit
07665e0e6f
|
@ -24,6 +24,7 @@ import MathUtils from "../../Wolfie2D/Utils/MathUtils";
|
|||
import { Player_Events } from "../sword_enums";
|
||||
import InputWrapper from "../Tools/InputWrapper";
|
||||
import Timer from "../../Wolfie2D/Timing/Timer";
|
||||
import PlayerController from "../Player/PlayerController";
|
||||
export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
||||
/** The owner of this AI */
|
||||
owner: AnimatedSprite;
|
||||
|
@ -64,7 +65,7 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
|
||||
direction: number; //1 for right, -1 for left
|
||||
|
||||
exp_val: number =0; //exp value to give player when this dies
|
||||
exp_val: number = 100; //exp value to give player when this dies
|
||||
|
||||
poisonTimer : Timer;
|
||||
poisonCounter : number = 0;
|
||||
|
@ -76,7 +77,7 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
bleedCounter :number = 0;
|
||||
|
||||
|
||||
initializeAI(owner: AnimatedSprite, options: Record<string, any>): void {
|
||||
initializeAI(owner: AnimatedSprite, options: Record<string, any>): void {
|
||||
this.owner = owner;
|
||||
|
||||
//add states
|
||||
|
@ -220,21 +221,21 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
|
|||
}
|
||||
*/
|
||||
|
||||
//TODO - add extra dot damage
|
||||
//TODO
|
||||
if(this.burnTimer.isStopped() && this.burnCounter >0){
|
||||
this.burnCounter --;
|
||||
this.burnTimer.start();
|
||||
this.damage(5);
|
||||
this.damage(5 + (<PlayerController>this.player._ai).extraDotDmg + (<PlayerController>this.player._ai).CURRENT_ATK * .2);
|
||||
}
|
||||
if(this.poisonTimer.isStopped() && this.poisonCounter >0){
|
||||
this.poisonCounter --;
|
||||
this.poisonTimer.start();
|
||||
this.damage(5);
|
||||
this.damage(5 + (<PlayerController>this.player._ai).extraDotDmg + (<PlayerController>this.player._ai).CURRENT_ATK * .2);
|
||||
}
|
||||
if(this.bleedTimer.isStopped() && this.bleedCounter >0){
|
||||
this.bleedCounter --;
|
||||
this.bleedTimer.start();
|
||||
this.damage(5);
|
||||
this.damage(5 + (<PlayerController>this.player._ai).extraDotDmg + (<PlayerController>this.player._ai).CURRENT_ATK * .08);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,10 @@ export default class BattleManager {
|
|||
if(player.hasBurn){
|
||||
(<EnemyAI>enemy).burnCounter =5 ;
|
||||
}
|
||||
|
||||
|
||||
if(player.hasDoubleStrike){
|
||||
enemy.damage(weapon.type.damage * (<PlayerController>this.players[0]).CURRENT_ATK/200);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ export default class Weapon extends Item {
|
|||
/** The battle manager */
|
||||
battleManager: BattleManager;
|
||||
|
||||
cooldown : number = 0;
|
||||
/** The cooldown timer for this weapon's use */
|
||||
cooldownTimer: Timer;
|
||||
|
||||
|
@ -46,6 +47,8 @@ export default class Weapon extends Item {
|
|||
|
||||
// Create the cooldown timer
|
||||
this.cooldownTimer = new Timer(type.cooldown);
|
||||
this.cooldown = type.cooldown;
|
||||
|
||||
this.EXTRA_DAMAGE = 0;
|
||||
this.EXTRA_RANGE=0;
|
||||
}
|
||||
|
|
|
@ -127,6 +127,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
hasLifesteal : Boolean = false;
|
||||
lifestealratio : number = 0; //percent of damage to steal
|
||||
hasOneShot: Boolean = false;
|
||||
extraDotDmg : number =0;
|
||||
|
||||
//TODO - add new buffs here
|
||||
CURRENT_BUFFS: {
|
||||
|
@ -170,7 +171,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
|
||||
//to test the buffs
|
||||
//this.addBuff( {type:BuffType.HEALTH, value:1} );
|
||||
this.addBuff({type:BuffType.BLEED, value:1, category:BuffCategory.DOT});
|
||||
this.addBuff({type:BuffType.BURN, value:1, category:BuffCategory.DOT});
|
||||
|
||||
|
||||
}
|
||||
|
@ -260,16 +261,22 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
//console.log("hurt anim");
|
||||
(<AnimatedSprite>this.owner).animation.play("HURT" );
|
||||
this.CURRENT_HP -= damage;
|
||||
if(this.CURRENT_HP <= 0){
|
||||
(<AnimatedSprite>this.owner).animation.play("DYING");
|
||||
(<AnimatedSprite>this.owner).animation.queue("DEAD", true, Player_Events.PLAYER_KILLED);
|
||||
//if player has shield buff give them shield when damaged
|
||||
if(this.hasShield){
|
||||
this.CURRENT_SHIELD += damage * .5;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
//console.log("player is invincible");
|
||||
}
|
||||
|
||||
if(this.CURRENT_HP <= 0){
|
||||
(<AnimatedSprite>this.owner).animation.play("DYING");
|
||||
(<AnimatedSprite>this.owner).animation.queue("DEAD", true, Player_Events.PLAYER_KILLED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -280,6 +287,14 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
this.CURRENT_SHIELD = (this.CURRENT_SHIELD + shield) % this.MAX_SHIELD;
|
||||
}
|
||||
|
||||
/**
|
||||
* gives health to the player
|
||||
* @param health health to give player
|
||||
*/
|
||||
addHealth(health : number){
|
||||
this.CURRENT_HP = (this.CURRENT_HP + health) %this.MAX_HP + this.CURRENT_BUFFS.hp;
|
||||
}
|
||||
|
||||
/**
|
||||
* gives the player exp
|
||||
* @param exp amount of exp to give the player
|
||||
|
@ -314,23 +329,25 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
let attackBuffs : Buff[] = [
|
||||
{type:BuffType.RANGE, value:num, category: BuffCategory.ATTACK},
|
||||
{type:BuffType.ATKSPEED, value:num, category: BuffCategory.ATTACK},
|
||||
{type:BuffType.DOUBLESTRIKE, value:num, category: BuffCategory.ATTACK},
|
||||
];
|
||||
if(!this.hasDoubleStrike){
|
||||
attackBuffs.push({type:BuffType.DOUBLESTRIKE, value:num, category: BuffCategory.ATTACK, string:"your attacks are followed by a weaker strike"});
|
||||
}
|
||||
|
||||
let dotBuffs : Buff[] = [
|
||||
{type:BuffType.BLEED, value:num, category: BuffCategory.DOT},
|
||||
{type:BuffType.BURN, value:num, category: BuffCategory.DOT},
|
||||
{type:BuffType.POISON, value:num, category: BuffCategory.DOT},
|
||||
{type:BuffType.EXTRA_DOT, value:num, category: BuffCategory.DOT},
|
||||
{type:BuffType.BLEED, value:1, category: BuffCategory.DOT, string: "Your hits apply Bleed"},
|
||||
{type:BuffType.BURN, value:1, category: BuffCategory.DOT, string: "Your hits apply Burn"},
|
||||
{type:BuffType.POISON, value:1, category: BuffCategory.DOT, string: "Your hits apply poison"},
|
||||
{type:BuffType.EXTRA_DOT, value:num, category: BuffCategory.DOT, string: "increase your DOT damage"},
|
||||
|
||||
];
|
||||
|
||||
let shieldBuffs : Buff[] = [
|
||||
{type:BuffType.HEALTH, value:num, category: BuffCategory.SHIELD},
|
||||
{type:BuffType.HEALTH, value:1, category: BuffCategory.SHIELD},
|
||||
];
|
||||
//if player doesnt have shield buff, give them the option, otherwise give buff shield option
|
||||
if(!this.hasShield){
|
||||
shieldBuffs.push({type:BuffType.SHIELD, value:num, category: BuffCategory.SHIELD});
|
||||
shieldBuffs.push({type:BuffType.SHIELD, value:1, category: BuffCategory.SHIELD, string: "Gain Shield When Damaged"});
|
||||
}
|
||||
else{
|
||||
shieldBuffs.push({type:BuffType.SHIELD_DMG, value:num, category: BuffCategory.SHIELD});
|
||||
|
@ -341,20 +358,20 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
{type:BuffType.DEF, value:num, category: BuffCategory.HEALTH}
|
||||
];
|
||||
if(!this.hasLifesteal){
|
||||
shieldBuffs.push({type:BuffType.LIFESTEAL, value:num, category: BuffCategory.HEALTH});
|
||||
healthBuffs.push({type:BuffType.LIFESTEAL, value:1, category: BuffCategory.HEALTH, string:"Gain lifesteal"});
|
||||
}
|
||||
else{
|
||||
shieldBuffs.push({type:BuffType.LIFESTEALBUFF, value:num, category: BuffCategory.HEALTH});
|
||||
healthBuffs.push({type:BuffType.LIFESTEALBUFF, value:num, category: BuffCategory.HEALTH});
|
||||
}
|
||||
|
||||
|
||||
let extraBuffs : Buff[] = [
|
||||
{type:BuffType.EXTRALIFE, value:num, category: BuffCategory.EXTRA},
|
||||
{type:BuffType.EXTRALIFE, value:1, category: BuffCategory.EXTRA, string: "Gain an Extra Life"},
|
||||
{type:BuffType.SPEED, value:num, category: BuffCategory.EXTRA},
|
||||
{type:BuffType.ATK, value:num, category: BuffCategory.EXTRA}
|
||||
];
|
||||
if(!this.hasOneShot){
|
||||
extraBuffs.push({type:BuffType.ONESHOT, value:num, category: BuffCategory.EXTRA});
|
||||
extraBuffs.push({type:BuffType.ONESHOT, value:1, category: BuffCategory.EXTRA, string: "Your hits hurt 100x more but you die in one shot"});
|
||||
};
|
||||
|
||||
|
||||
|
@ -434,14 +451,18 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
case BuffType.POISON:
|
||||
this.hasPoison = true;
|
||||
break;
|
||||
case BuffType.EXTRA_DOT:
|
||||
this.extraDotDmg += buff.value;
|
||||
break;
|
||||
case BuffType.SHIELD:
|
||||
this.hasShield = true;
|
||||
break;
|
||||
|
||||
case BuffType.ATKSPEED:
|
||||
if (item) {
|
||||
//reduce cooldowntimer
|
||||
//(<Weapon>item).cooldownTimer
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BuffType.DOUBLESTRIKE:
|
||||
break;
|
||||
|
@ -455,6 +476,9 @@ export default class PlayerController extends StateMachineAI implements BattlerA
|
|||
this.hasLifesteal = true;
|
||||
break;
|
||||
case BuffType.ONESHOT:
|
||||
this.MAX_HP = 1;
|
||||
this.CURRENT_HP = 1;
|
||||
this.CURRENT_ATK *= 100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -246,7 +246,9 @@ export default class GameLevel extends Scene {
|
|||
this.enemies = this.enemies.filter(item => item !== event.data.get("ai"));
|
||||
this.battleManager.removeEnemy(event.data.get("ai"));
|
||||
//give the player the exp value of the enemy killed
|
||||
(<PlayerController>this.player._ai).giveExp(event.data.get("ai").exp_val);
|
||||
if(event.data.get("ai").exp_val !== undefined){
|
||||
(<PlayerController>this.player._ai).giveExp(event.data.get("ai").exp_val);
|
||||
}
|
||||
node.destroy(); //destroy enemy node
|
||||
//TODO - this is for testing, add some chance here later
|
||||
//this.emitter.fireEvent(Player_Events.GIVE_BUFF);
|
||||
|
@ -254,9 +256,26 @@ export default class GameLevel extends Scene {
|
|||
|
||||
case Player_Events.GIVE_BUFF:
|
||||
this.buffs = (<PlayerController>this.player._ai).generateBuffs();
|
||||
this.buffButton1.text = "Increase "+this.buffs[0].type.toString() + " by "+this.buffs[0].value;
|
||||
this.buffButton2.text = "Increase "+this.buffs[1].type + " by "+this.buffs[1].value;
|
||||
this.buffButton3.text = "Increase "+this.buffs[2].type + " by "+this.buffs[2].value;
|
||||
if(this.buffs[0].string !== undefined){
|
||||
this.buffButton1.text = this.buffs[0].string;
|
||||
}
|
||||
else{
|
||||
this.buffButton1.text = "Increase "+this.buffs[0].type + " by "+this.buffs[0].value;
|
||||
}
|
||||
|
||||
if(this.buffs[1].string !== undefined){
|
||||
this.buffButton2.text = this.buffs[1].string;
|
||||
}
|
||||
else{
|
||||
this.buffButton2.text = "Increase "+this.buffs[1].type + " by "+this.buffs[1].value;
|
||||
}
|
||||
|
||||
if(this.buffs[2].string !== undefined){
|
||||
this.buffButton3.text = this.buffs[2].string;
|
||||
}
|
||||
else{
|
||||
this.buffButton3.text = "Increase "+this.buffs[2].type + " by "+this.buffs[2].value;
|
||||
}
|
||||
|
||||
//pause game here
|
||||
this.setGameState(GameState.BUFF);
|
||||
|
|
Loading…
Reference in New Issue
Block a user