60 lines
2.1 KiB
JavaScript
Executable File
60 lines
2.1 KiB
JavaScript
Executable File
const Phaser = require('phaser');
|
|
const { renderCryp } = require('./combat.cryps');
|
|
|
|
const randomSkill = () => {
|
|
const skills = ['wall', 'spit', 'gravBlast', 'gravBomb', 'chargeBall'];
|
|
return skills[Math.floor(Math.random() * 5)];
|
|
};
|
|
|
|
function animatePhase(scene, group, game, account, delay) {
|
|
const resolved = game.resolved[scene.resolvedIter];
|
|
const allyCryp = scene.cryps.filter(c => c.account === account.id).find(
|
|
c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id
|
|
);
|
|
const enemyCryp = scene.cryps.filter(c => c.account !== account.id).find(
|
|
c => c.id === resolved.source_cryp_id || c.id === resolved.target_cryp_id
|
|
);
|
|
const allySpawn = renderCryp(scene, group, allyCryp, game, 0, 1);
|
|
const enemySpawn = renderCryp(scene, group, enemyCryp, game, 1, 1);
|
|
|
|
const target = allyCryp.id === resolved.target_cryp_id ? allySpawn : enemySpawn;
|
|
const targetCrypData = allyCryp.id === resolved.target_cryp_id ? allyCryp : enemyCryp;
|
|
|
|
scene.time.delayedCall(delay, () => {
|
|
targetCrypData.hp.base -= 100; // Mutates stored cryp data
|
|
target.healthbar.takeDamage(100);
|
|
target.setTint(0xff0000);
|
|
});
|
|
}
|
|
|
|
|
|
function combatRender(scene, game) {
|
|
let delay = 0;
|
|
const skill = randomSkill();
|
|
const resolved = game.resolved[scene.resolvedIter];
|
|
const account = scene.registry.get('account');
|
|
const animatedGroup = new Phaser.GameObjects.Group(scene);
|
|
const target = resolved.source_team_id === account.id;
|
|
|
|
delay = scene.skills[skill](target);
|
|
// animatePhase(scene, animatedGroup, game, account, delay[0]);
|
|
|
|
if (scene.iterateLog(game)) {
|
|
scene.time.delayedCall(delay[1], () => {
|
|
scene.registry.set('resolve', false);
|
|
scene.skills.cleanup();
|
|
animatedGroup.destroy(true);
|
|
scene.renderLog(game);
|
|
});
|
|
} else {
|
|
scene.time.delayedCall(delay[1], () => {
|
|
scene.skills.cleanup();
|
|
animatedGroup.destroy(true);
|
|
combatRender(scene, game);
|
|
});
|
|
}
|
|
return true;
|
|
}
|
|
|
|
module.exports = combatRender;
|