added range and dmg buff

This commit is contained in:
OfficialCHenry 2022-04-10 21:51:45 -04:00
parent 4c390f8cd5
commit 66c698dd43
4 changed files with 23 additions and 8 deletions

View File

@ -17,8 +17,7 @@ export default class BattleManager {
if(this.enemies.length != 0){ if(this.enemies.length != 0){
for (let enemy of this.enemies) { for (let enemy of this.enemies) {
if (weapon.hits(enemy.owner)) { if (weapon.hits(enemy.owner)) {
enemy.damage(weapon.type.damage); enemy.damage(weapon.type.damage + weapon.EXTRA_DAMAGE);
//console.log("enemy took dmg"); //console.log("enemy took dmg");
} }
} }

View File

@ -25,6 +25,10 @@ export default class Weapon extends Item {
/** The cooldown timer for this weapon's use */ /** The cooldown timer for this weapon's use */
cooldownTimer: Timer; cooldownTimer: Timer;
EXTRA_DAMAGE : number; //flat extra damage value
EXTRA_RANGE: number ; //percentage value -> .1 = 10% extra range
constructor(sprite: Sprite, type: WeaponType, battleManager: BattleManager){ constructor(sprite: Sprite, type: WeaponType, battleManager: BattleManager){
super(sprite); super(sprite);
@ -42,6 +46,8 @@ export default class Weapon extends Item {
// Create the cooldown timer // Create the cooldown timer
this.cooldownTimer = new Timer(type.cooldown); this.cooldownTimer = new Timer(type.cooldown);
this.EXTRA_DAMAGE = 0;
this.EXTRA_RANGE=0;
} }
// @override // @override
@ -58,7 +64,7 @@ export default class Weapon extends Item {
this.assets = this.type.createRequiredAssets(this.sprite.getScene()); this.assets = this.type.createRequiredAssets(this.sprite.getScene());
// Do a type specific weapon animation // Do a type specific weapon animation
this.type.doAnimation(user, direction, ...this.assets); this.type.doAnimation(user, direction, this.EXTRA_RANGE, ...this.assets);
// Apply damage // Apply damage
this.battleManager.handleInteraction(userType, this); this.battleManager.handleInteraction(userType, this);

View File

@ -15,7 +15,12 @@ export default class Slice extends WeaponType {
this.useVolume = options.useVolume; this.useVolume = options.useVolume;
} }
doAnimation(attacker: GameNode, direction: Vec2, sliceSprite: AnimatedSprite): void { doAnimation(attacker: GameNode, direction: Vec2, extraRange:number,sliceSprite: AnimatedSprite): void {
//TODO-
//4 to scale up the default sprite - may be different later depending on atk anim
sliceSprite.scaleX = 4*(1+extraRange); //might have to add extra range to y as well
sliceSprite.scaleY = 4;
// Rotate this with the game node // Rotate this with the game node
// TODO - need to rotate the anim properly // TODO - need to rotate the anim properly
sliceSprite.rotation = attacker.rotation; sliceSprite.rotation = attacker.rotation;
@ -24,8 +29,7 @@ export default class Slice extends WeaponType {
//scale = num of pixels between center of sprite and atk anim //scale = num of pixels between center of sprite and atk anim
sliceSprite.position = attacker.position.clone().add(direction.scaled(65)); sliceSprite.position = attacker.position.clone().add(direction.scaled(65));
sliceSprite.scaleX = 4;
sliceSprite.scaleY = 4;
// Play the slice animation w/o loop, but queue the normal animation // Play the slice animation w/o loop, but queue the normal animation
sliceSprite.animation.play("SLICE"); sliceSprite.animation.play("SLICE");
sliceSprite.animation.queue("NORMAL", true); sliceSprite.animation.queue("NORMAL", true);

View File

@ -15,6 +15,7 @@ import InventoryManager from "../GameSystems/InventoryManager";
import Input from "../../Wolfie2D/Input/Input"; import Input from "../../Wolfie2D/Input/Input";
import BattlerAI from "../AI/BattlerAI"; import BattlerAI from "../AI/BattlerAI";
import MathUtils from "../../Wolfie2D/Utils/MathUtils"; import MathUtils from "../../Wolfie2D/Utils/MathUtils";
import Weapon from "../GameSystems/items/Weapon";
export enum PlayerType { export enum PlayerType {
@ -115,8 +116,11 @@ export default class PlayerController extends StateMachineAI implements BattlerA
this.CURRENT_HP += buff.value; this.CURRENT_HP += buff.value;
break; break;
case BuffType.ATK: case BuffType.ATK:
//TODO - may have to modify the weapon dmg value here instead //TODO - decide what to do with atk stat
this.CURRENT_BUFFS.atk += buff.value; this.CURRENT_BUFFS.atk += buff.value;
if (item) {
(<Weapon>item).EXTRA_DAMAGE += buff.value;
}
break; break;
case BuffType.SPEED: case BuffType.SPEED:
this.CURRENT_BUFFS.speed += buff.value; this.CURRENT_BUFFS.speed += buff.value;
@ -127,7 +131,7 @@ export default class PlayerController extends StateMachineAI implements BattlerA
case BuffType.RANGE: case BuffType.RANGE:
this.CURRENT_BUFFS.range += buff.value; this.CURRENT_BUFFS.range += buff.value;
if (item) { if (item) {
//item.sprite. (<Weapon>item).EXTRA_RANGE += buff.value;
} }
break; break;
} }
@ -149,7 +153,9 @@ export default class PlayerController extends StateMachineAI implements BattlerA
this.CURRENT_BUFFS = {hp:0, atk:0, def:0, speed:0, range:0}; this.CURRENT_BUFFS = {hp:0, atk:0, def:0, speed:0, range:0};
//to test the buffs
this.addBuff( {type:BuffType.HEALTH, value:1, bonus:false} ); this.addBuff( {type:BuffType.HEALTH, value:1, bonus:false} );
this.addBuff( {type:BuffType.RANGE, value:1, bonus:false} );
} }
initializePlatformer(): void { initializePlatformer(): void {