added stat reset to mainmenu, increased assassin pause time

This commit is contained in:
OfficialCHenry 2022-05-09 12:05:31 -04:00
parent 602d770810
commit b6fcfd1245
13 changed files with 273 additions and 108 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -15,14 +15,20 @@ export default class AssassinAttack extends Attack {
onEnter(options: Record<string, any>): void {
super.onEnter(options);
this.runTimer = new Timer(500);
this.pauseTimer = new Timer(1000);
this.pauseTimer = new Timer(1500);
this.owner.alpha = 1; //unstealth to attack
this.startPosition = this.owner.position;
//look around
(<Sprite>this.owner).invertX != (<Sprite>this.owner).invertX;
(<Sprite>this.owner).invertX != (<Sprite>this.owner).invertX;
(<Sprite>this.owner).invertX != (<Sprite>this.owner).invertX;
(<Sprite>this.owner).invertX != (<Sprite>this.owner).invertX;
if(this.parent.getPlayerPosition() !==null)
this.owner.position = this.parent.getPlayerPosition().clone().add(new Vec2( (<Sprite>this.parent.player).invertX ? 64 : -64 ,0));
this.owner.position = this.parent.getPlayerPosition().clone().add(new Vec2( (<Sprite>this.parent.player).invertX ? 32 : -32 ,0));
this.pauseTimer.start();
@ -55,8 +61,17 @@ export default class AssassinAttack extends Attack {
}
this.parent.velocity.x = this.parent.direction * 500;
(<Sprite>this.owner).invertX = this.parent.direction === 1 ? true : false ;
super.update(deltaT);
}
//no gravity for assassin
if (!this.parent.damageTimer.isStopped() && !this.parent.isAttacking && !this.parent.isCharging) {
this.parent.velocity.x = 0;
}
// Do gravity
if (this.owner.onGround) {
this.parent.velocity.y = 0;
}
this.owner.move(this.parent.velocity.scaled(deltaT));
}

View File

@ -24,12 +24,14 @@ export default class BossAttack extends Attack {
this.owner.alpha = 1; //unstealth to attack
switch( this.atknum){
case 0: //archer atk
console.log("archer atk");
this.pauseTimer = new Timer(1000);
this.pauseTimer.start();
break;
case 1: //assassin atk
console.log("assassin atk");
this.runTimer = new Timer(500);
this.pauseTimer = new Timer(1000);
this.pauseTimer = new Timer(1500);
this.startPosition = this.owner.position;
if(this.parent.getPlayerPosition() !==null)
this.owner.position = this.parent.getPlayerPosition().clone().add(new Vec2( (<Sprite>this.parent.player).invertX ? 64 : -64 ,0));
@ -37,12 +39,15 @@ export default class BossAttack extends Attack {
this.pauseTimer.start();
break;
case 2: //bull atk
console.log("bull atk");
this.runTimer = new Timer(2000);
break;
case 3: //tiger atk
console.log("tiger atk");
this.velocity = 0;
break;
case 4: //snake atk
console.log("snake atk");
break;
default:
break;

View File

@ -75,7 +75,7 @@ export default class Weapon extends Item {
// Reset the cooldown timer
this.cooldownTimer.start();
//TODO - may have to move elsewhere
this.emitter.fireEvent(GameEventType.PLAY_SOUND, {key: "sword", loop: false, holdReference: false});
//this.emitter.fireEvent(GameEventType.PLAY_SOUND, {key: "sword", loop: false, holdReference: false});
return true;
}

View File

@ -190,6 +190,12 @@ export default class PlayerController extends StateMachineAI implements BattlerA
}
static reset(){
this.appliedBuffs = new Array();
this.buffPool = new Array();
this.enemiesKilled = 0;
}
initializePlatformer(): void {
this.speed = 400;
@ -241,8 +247,8 @@ export default class PlayerController extends StateMachineAI implements BattlerA
this.lookDirection.x = (<Sprite>this.owner).invertX ? -1 : 1;
// If there is an item in the current slot, use it
if (item) {
item.use(this.owner, "player", this.lookDirection);
//this.emitter.fireEvent(GameEventType.PLAY_SOUND, {key: "sword", loop: false, holdReference: false});
if((<Weapon>item).use(this.owner, "player", this.lookDirection))
this.emitter.fireEvent(GameEventType.PLAY_SOUND, {key: "sword", loop: false, holdReference: false});
}
}

View File

@ -15,7 +15,7 @@ export default class Idle extends OnGround {
//("idle anim");
if (!PlayerState.dashTimer.isStopped()) {
console.log("Playing dash");
//console.log("Playing dash");
this.owner.animation.playIfNotAlready("DASH");
}
else {

View File

@ -23,6 +23,7 @@ import EnemyAI from "../AI/EnemyAI";
import SnakeAI from "../AI/SnakeAI";
import SlimeAI from "../AI/SlimeAI";
import TigerAI from "../AI/TigerAI";
import BullAI from "../AI/BullAI";
import ArcherAI from "../AI/ArcherAI";
import AssassinAI from "../AI/AssassinAI";
import BattlerAI from "../AI/BattlerAI";
@ -43,7 +44,7 @@ import GameOver from "./GameOver";
import GameFinish from "./GameFinish";
import MainMenu from "./MainMenu";
import MapTemplate from "../Tools/DataTypes/MapTemplate";
import BullAI from "../AI/BullAI";
import BossAI from "../AI/BossAI";
// TODO
/**
@ -878,18 +879,19 @@ export default class GameLevel extends Scene {
switch (enemy.type) {
/*
case "Archer":
this.addEnemy("Archer", enemy.position.scale(32), ArcherAI, {
case "Snake":
this.addEnemy("Snake", enemy.position.scale(32), BossAI, {
player: this.player,
health: 50,
tilemap: "Main",
size: new Vec2(14,10),
offset : new Vec2(0, 22),
exp: 50,
weapon: this.createWeapon("pistol");
weapon: this.createWeapon("laserGun")
})
break;
*/
case "Snake": //Snake enemies drop from sky("trees")? or could just be very abundant
this.addEnemy("Snake", enemy.position.scale(32), SnakeAI, {
player: this.player,
@ -900,7 +902,7 @@ export default class GameLevel extends Scene {
exp: 50,
})
break;
case "Tiger": //Tiger can be miniboss for now?
this.addEnemy("Tiger", enemy.position.scale(32), TigerAI, {
player: this.player,
@ -937,6 +939,42 @@ export default class GameLevel extends Scene {
weapon : this.createWeapon("knife"),
})
break;
case "Bull":
this.addEnemy("Bull", enemy.position.scale(32), BullAI, {
player: this.player,
health: 150,
tilemap: "Main",
//actions:actions,
scale: 1.5,
size: new Vec2(48,24),
offset : new Vec2(0,24),
exp: 75,
})
break;
case "Archer":
this.addEnemy("Archer", enemy.position.scale(32), ArcherAI, {
player: this.player,
health: 100,
tilemap: "Main",
scale: 1,
size: new Vec2(20,16),
offset : new Vec2(0,16),
exp: 75,
weapon: this.createWeapon("pistol")
})
break;
case "Assassin":
this.addEnemy("Assassin", enemy.position.scale(32), AssassinAI, {
player: this.player,
health: 100,
tilemap: "Main",
scale: 1,
size: new Vec2(20,16),
offset : new Vec2(0,16),
exp: 75,
})
break;
default:
break;
}

View File

@ -23,8 +23,13 @@ export default class Greatwall extends GameLevel {
this.load.tilemapFromObject("map", this.map);
//load enemies
this.load.spritesheet("Bull","shattered_sword_assets/spritesheets/Bull.json");
//can load enemy sprite here
//sprites obtained from cse380 sprite wesbite
this.load.spritesheet("black_pudding","shattered_sword_assets/spritesheets/black_pudding.json");
this.load.spritesheet("Bull","shattered_sword_assets/spritesheets/Bull.json");
//load music here
}
protected goToNextLevel(): void {
this.viewport.setZoomLevel(1);

View File

@ -16,6 +16,7 @@ import InputWrapper from "../Tools/InputWrapper";
import TextInput from "../../Wolfie2D/Nodes/UIElements/TextInput";
import Forest from "./Forest";
import Start from "./Start";
import PlayerController from "../Player/PlayerController";
export default class MainMenu extends Scene {
protected config: ConfigManager;
@ -39,6 +40,7 @@ export default class MainMenu extends Scene {
GameLevel.gameTimer = 0;
InputWrapper.randomSeed = undefined;
const center = this.viewport.getCenter();
PlayerController.reset();
// The main menu
this.mainMenu = this.addUILayer("mainMenu");

View File

@ -27,7 +27,7 @@ export default class Market extends GameLevel {
//can load enemy sprite here
//sprites obtained from cse380 sprite wesbite
// this.load.spritesheet("black_pudding","shattered_sword_assets/spritesheets/black_pudding.json");
this.load.spritesheet("Assassin","shattered_sword_assets/spritesheets/Assassin.json");
//load music here
}
protected goToNextLevel(): void {

View File

@ -26,8 +26,8 @@ export default class Snow extends GameLevel {
//can load enemy sprite here
//sprites obtained from cse380 sprite wesbite
// this.load.spritesheet("black_pudding","shattered_sword_assets/spritesheets/black_pudding.json");
this.load.spritesheet("black_pudding","shattered_sword_assets/spritesheets/black_pudding.json");
this.load.spritesheet("Archer","shattered_sword_assets/spritesheets/Archer.json");
//load music here
}