const preact = require('preact'); const actions = require('./actions'); function tutorialConstructDisplay(player, instance, tutorial, i) { if (instance.time_control === 'Practice' && instance.rounds.length === 1 && tutorial && tutorial < 6) { if (tutorial <= 2 || (tutorial > 2 && i > 0)) { const classes = 'instance-construct'; return (
); } } return false; } function tutorialShouldDisableEquip(tutorial, iter, instance, construct) { return tutorial && tutorial === 6 && iter === 0 && construct.skills.length !== 0 && instance.time_control === 'Practice' && instance.rounds.length === 1; } function tutorialVbox(player, store, tutorial) { let stage = tutorial; const { vbox } = player; if (stage === 1) { if (vbox.bits < 29) { stage += 1; } else { for (let i = 2; i < 6; i += 1) { delete vbox.store.Colours[i]; } vbox.store.Skills = {}; vbox.store.Specs = {}; delete vbox.stash[0]; delete vbox.stash[1]; delete vbox.stash[2]; } } if (stage === 2) { if (!(vbox.stash[0] === 'Attack' && vbox.stash[1] === 'Attack' && vbox.stash[2] === 'Attack')) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; vbox.store.Specs = {}; delete vbox.stash[0]; delete vbox.stash[1]; } } if (stage === 3) { if (player.constructs[0].skills.length !== 0) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; vbox.store.Specs = {}; delete vbox.stash[0]; delete vbox.stash[1]; } } if (stage === 4) { if (!vbox.store.Specs[0] || vbox.bits < 24) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; delete vbox.store.Specs[1]; delete vbox.store.Specs[2]; delete vbox.stash[0]; delete vbox.stash[1]; } } if (stage === 5) { if (player.constructs[0].specs.length !== 0) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; vbox.store.Specs = {}; delete vbox.stash[0]; delete vbox.stash[1]; } } if (stage === 6) { if (player.constructs.every(c => c.skills.length !== 0)) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; vbox.store.Specs = {}; } } if (stage === 7) { if (vbox.bits < 25) { stage += 1; } else { vbox.store.Colours = {}; vbox.store.Skills = {}; vbox.store.Specs = {}; } } store.dispatch(actions.setTutorial(stage)); } function tutorialStage(tutorial, clearTutorial, instance) { if (!(instance.time_control === 'Practice' && instance.rounds.length === 1)) return false; const exit = () => clearTutorial(); const tutorialText = () => { if (tutorial === 1) { return (

Tutorial

Welcome to the vbox phase tutorial.

Colours are used to create powerful combinations with base items.

Buy the two colours from the store to continue.

); } if (tutorial === 2) { return (

Tutorial

You start the game with the base Attack skill item.

Highlight all three items then click combine.

); } if (tutorial === 3) { const constructOne = instance.players[0].constructs[0].name; return (

Tutorial

The first construct on your team is {constructOne}.

Skill items can be equipped to your constructs to be used in the combat phase.

Click your new skill from the stash.
Once selected click the flashing SKILL slot to equip the skill.

); } if (tutorial === 4) { return (

Tutorial

You can also buy specialisation items for your constructs.
Specialisation items increase stats including power, speed and life.

Buy the specialisation item from the store to continue.

); } if (tutorial === 5) { return (

Tutorial

Equipping specialisation items will increase the stats of your constructs.

These can also be combined with colours for further specialisation.

Click the specialisation item in the stash.
Once selected click the flashing SPEC slot to equip the specialisation.

); } if (tutorial === 6) { const constructTwo = instance.players[0].constructs[1].name; const constructThree = instance.players[0].constructs[2].name; return (

Tutorial

You have now created a construct with an upgraded skill and base spec.

The goal is to create three powerful constructs for combat.

Equip your other constructs {constructTwo} and {constructThree} with the Attack skill.
Ensure each construct has a single skill to continue.

); } if (tutorial === 7) { return (

Tutorial

Each round you start with 30 bits and a store full of different skills, specs and colours.

Bits are your currency for buying items.
You can refill the store by pressing the refill button for 2b.

Press the REFILL button to buy new items.

); } if (tutorial === 8) { if (window.innerWidth < 1000) { return exit(); } return (

Tutorial

That completes the VBOX Tutorial.

Press READY to progress to the GAME PHASE
You can continue creating new items to upgrade your constructs further.

); } return false; }; const classes = tutorial === 8 ? 'focus' : ''; const text = tutorial === 8 ? 'Continue' : 'Skip Tutorial' const exitTutorial = ; return (
{tutorialText()}
{exitTutorial}
); } module.exports = { tutorialConstructDisplay, tutorialVbox, tutorialStage, tutorialShouldDisableEquip, };