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 (

Welcome to MNML

This is the VBOX Phase tutorial.

In the VBOX Phase you customise your constructs' skills and specialisations.

Colours are used to create powerful combinations with base items.

Buy the two colours from the store to continue.

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

Combining Items

You start the game with the base Attack skill item.

Highlight the Attack and the two colours then click combine

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

Equipping Items

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 or the construct img to equip the skill.

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

Specialisations

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 (

Specialisations

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.

PRO TIP: while selecting an item in the shop, click on your construct to buy and equip in one step.

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

Skills

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.

PRO TIP: Select a skill or spec on a construct and click another construct to swap it.

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

Economy

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 (

GLHF

That completes the VBOX Tutorial.

Press the green READY button in the bottom right to progress to the GAME PHASE
or continue creating new items to upgrade your constructs further.

); } return false; }; const exitTutorial = tutorial === 8 ? : null; return (
{tutorialText()}
{exitTutorial}
); } module.exports = { tutorialConstructDisplay, tutorialVbox, tutorialStage, tutorialShouldDisableEquip, };