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;