locked archer direction, changed boss hitbox
This commit is contained in:
parent
384ca87f10
commit
4b8c7a0bf9
|
@ -3,7 +3,7 @@ import EnemyAI, { EnemyStates } from "./EnemyAI";
|
||||||
import BossAttack from "./EnemyStates/BossAttack";
|
import BossAttack from "./EnemyStates/BossAttack";
|
||||||
import Weapon from "../GameSystems/items/Weapon";
|
import Weapon from "../GameSystems/items/Weapon";
|
||||||
import Vec2 from "../../Wolfie2D/DataTypes/Vec2";
|
import Vec2 from "../../Wolfie2D/DataTypes/Vec2";
|
||||||
|
import { Player_Events } from "../sword_enums";
|
||||||
|
|
||||||
export default class BossAI extends EnemyAI {
|
export default class BossAI extends EnemyAI {
|
||||||
|
|
||||||
|
@ -19,4 +19,45 @@ export default class BossAI extends EnemyAI {
|
||||||
canAttack(position: Vec2): boolean {
|
canAttack(position: Vec2): boolean {
|
||||||
return this.attackTimer.isStopped() && this.owner.position.distanceTo(position)<=128;
|
return this.attackTimer.isStopped() && this.owner.position.distanceTo(position)<=128;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
damage(damage: number): void {
|
||||||
|
// enemy already dead, do not send new event
|
||||||
|
if (this.CURRENT_HP <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//console.log(damage +" damage taken, "+this.CURRENT_HP+" hp left");
|
||||||
|
this.CURRENT_HP -= damage;
|
||||||
|
//TODO -
|
||||||
|
if (!this.isAttacking && !this.isCharging) {
|
||||||
|
this.owner.animation.play("HURT",false);
|
||||||
|
}
|
||||||
|
|
||||||
|
//console.log(damage +" damage taken, "+this.CURRENT_HP+" hp left");
|
||||||
|
|
||||||
|
// If health goes below 0, disable AI and fire enemyDied event
|
||||||
|
if (this.CURRENT_HP <= 0) {
|
||||||
|
this.owner.setAIActive(false, {});
|
||||||
|
this.owner.isCollidable = false;
|
||||||
|
this.owner.visible = false;
|
||||||
|
if (this.healthBar) {
|
||||||
|
this.healthBar.destroy();
|
||||||
|
this.healthBar = undefined;
|
||||||
|
}
|
||||||
|
if (this.poisonStat) {
|
||||||
|
this.poisonStat.destroy();
|
||||||
|
this.poisonStat = undefined;
|
||||||
|
}
|
||||||
|
if (this.burnStat) {
|
||||||
|
this.burnStat.destroy();
|
||||||
|
this.burnStat = undefined;
|
||||||
|
}
|
||||||
|
if (this.bleedStat) {
|
||||||
|
this.bleedStat.destroy();
|
||||||
|
this.bleedStat = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.emitter.fireEvent("nextLevel", {owner: this.owner.id, ai:this});
|
||||||
|
}
|
||||||
|
this.damageTimer.start();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -4,23 +4,25 @@ import Attack from "./Attack";
|
||||||
import ArcherAI from "../ArcherAI";
|
import ArcherAI from "../ArcherAI";
|
||||||
import Sprite from "../../../Wolfie2D/Nodes/Sprites/Sprite";
|
import Sprite from "../../../Wolfie2D/Nodes/Sprites/Sprite";
|
||||||
import Timer from "../../../Wolfie2D/Timing/Timer";
|
import Timer from "../../../Wolfie2D/Timing/Timer";
|
||||||
|
import Vec2 from "../../../Wolfie2D/DataTypes/Vec2";
|
||||||
|
|
||||||
//TODO - unfinished
|
//TODO - unfinished
|
||||||
export default class ArcherAttack extends Attack {
|
export default class ArcherAttack extends Attack {
|
||||||
pauseTimer : Timer;
|
pauseTimer : Timer;
|
||||||
|
dir :Vec2;
|
||||||
onEnter(options: Record<string, any>): void {
|
onEnter(options: Record<string, any>): void {
|
||||||
super.onEnter(options);
|
super.onEnter(options);
|
||||||
this.pauseTimer = new Timer(1000);
|
this.pauseTimer = new Timer(1000);
|
||||||
this.pauseTimer.start();
|
this.pauseTimer.start();
|
||||||
|
this.dir = this.parent.getPlayerPosition().clone().sub(this.owner.position).normalize();
|
||||||
|
this.parent.direction = this.parent.getPlayerPosition().x - this.owner.position.x >= 0 ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
update(deltaT: number): void {
|
update(deltaT: number): void {
|
||||||
|
|
||||||
if(this.pauseTimer.isStopped()){
|
if(this.pauseTimer.isStopped()){
|
||||||
this.parent.direction = this.parent.getPlayerPosition().x - this.owner.position.x >= 0 ? 1 : -1;
|
|
||||||
let dir = this.parent.getPlayerPosition().clone().sub(this.owner.position).normalize();
|
|
||||||
|
|
||||||
(<ArcherAI>this.parent).weapon.use(this.owner, "enemy", dir.scale(1,0));
|
(<ArcherAI>this.parent).weapon.use(this.owner, "enemy", this.dir.scale(1,0));
|
||||||
(<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
|
(<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
|
||||||
this.finished(EnemyStates.ALERT);
|
this.finished(EnemyStates.ALERT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ export default class GameFinish extends Scene {
|
||||||
|
|
||||||
this.addUILayer("primary");
|
this.addUILayer("primary");
|
||||||
|
|
||||||
const congra = <Label>this.add.uiElement(UIElementType.LABEL, "primary", {position: new Vec2(center.x, center.y), text: "CONGRATULATION!"});
|
const congra = <Label>this.add.uiElement(UIElementType.LABEL, "primary", {position: new Vec2(center.x, center.y), text: "CONGRATULATIONS!"});
|
||||||
congra.textColor = Color.GREEN;
|
congra.textColor = Color.GREEN;
|
||||||
congra.fontSize = 100;
|
congra.fontSize = 100;
|
||||||
|
|
||||||
|
|
|
@ -983,8 +983,8 @@ export default class GameLevel extends Scene {
|
||||||
health: 1000,
|
health: 1000,
|
||||||
tilemap: "Main",
|
tilemap: "Main",
|
||||||
scale: 2,
|
scale: 2,
|
||||||
size: new Vec2(60,31),
|
size: new Vec2(60,50),
|
||||||
offset : new Vec2(0,50),
|
offset : new Vec2(0,30),
|
||||||
exp: 75,
|
exp: 75,
|
||||||
weapon: this.createWeapon("laserGun")
|
weapon: this.createWeapon("laserGun")
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user