diff --git a/client/src/components/game.construct.jsx b/client/src/components/game.construct.jsx
index f3980794..2fa74788 100644
--- a/client/src/components/game.construct.jsx
+++ b/client/src/components/game.construct.jsx
@@ -15,7 +15,7 @@ const addState = connect(
ws,
game,
- authenticated,
+ instance,
activeSkill,
animFocus,
resolution,
@@ -30,7 +30,7 @@ const addState = connect(
return {
game,
- authenticated,
+ instance,
activeSkill,
animFocus,
resolution,
@@ -54,7 +54,7 @@ class GameConstruct extends preact.Component {
render() {
const {
// Changing state variables
- authenticated,
+ instance,
game,
activeSkill,
animFocus,
@@ -81,7 +81,9 @@ class GameConstruct extends preact.Component {
const unfocus = animFocus && !animFocus.includes(construct.id) ? 'unfocus' : '';
const targeted = game.stack.find(c => c.target === construct.id);
- const highlight = !authenticated && !targeted && activeSkill ? 'highlight' : '';
+
+ const firstRoundTutorial = instance && instance.time_control === 'Practice' && !game.resolutions.length;
+ const highlight = firstRoundTutorial && !targeted && activeSkill ? 'highlight' : '';
const crypSkills = player
?
{range(0, 3).map(j => )}
diff --git a/client/src/components/game.ctrl.btns.jsx b/client/src/components/game.ctrl.btns.jsx
index a374ae80..24a7462c 100644
--- a/client/src/components/game.ctrl.btns.jsx
+++ b/client/src/components/game.ctrl.btns.jsx
@@ -10,6 +10,7 @@ const addState = connect(
game,
account,
authenticated,
+ instance,
chatShow,
animating,
} = state;
@@ -35,6 +36,7 @@ const addState = connect(
game,
account,
authenticated,
+ instance,
chatShow,
sendAbandon,
sendGameSkillClear,
@@ -68,6 +70,7 @@ function GameCtrlBtns(args) {
account,
chatShow,
authenticated,
+ instance,
getInstanceState,
sendGameSkillClear,
@@ -86,7 +89,8 @@ function GameCtrlBtns(args) {
quit();
}
- const noTargets = !authenticated && game.stack.length === 0;
+ const firstRoundTutorial = instance && instance.time_control === 'Practice' && !game.resolutions.length;
+ const noTargets = firstRoundTutorial && game.stack.length === 0;
const readyBtn = sendReady()}>Ready ;
const quitBtn = Back ;
diff --git a/client/src/components/instance.ctrl.btns.jsx b/client/src/components/instance.ctrl.btns.jsx
index b9b959f7..dbc3f476 100644
--- a/client/src/components/instance.ctrl.btns.jsx
+++ b/client/src/components/instance.ctrl.btns.jsx
@@ -50,7 +50,7 @@ function InstanceCtrlBtns(args) {
} = args;
const finished = instance && instance.phase === 'Finished';
- const tutorialDisable = instance.time_control === 'Practice' && tutorial;
+ const tutorialDisable = instance.time_control === 'Practice' && tutorial && tutorial < 8;
return (
setChatShow(!chatShow)}>Chat
diff --git a/client/src/components/targeting.arrows.jsx b/client/src/components/targeting.arrows.jsx
index 2d570121..fba1b064 100644
--- a/client/src/components/targeting.arrows.jsx
+++ b/client/src/components/targeting.arrows.jsx
@@ -44,15 +44,14 @@ class TargetSvg extends Component {
animating,
game,
gameEffectInfo,
- authenticated,
} = props;
const { width, height } = state;
if (!game) return false; // game will be null when battle ends
if (game.phase === 'Finished') return false; // Clear everything if its over (in case of abandon)
- // First time joining game phase
- if (!authenticated && game.stack.length === 0) {
+ // First round of a game
+ if (!game.resolutions.length && game.stack.length === 0) {
return (
Select a skill from each construct, click a target for that skill and then click READY .
diff --git a/client/src/components/welcome.jsx b/client/src/components/welcome.jsx
index d32c5997..db67b41c 100644
--- a/client/src/components/welcome.jsx
+++ b/client/src/components/welcome.jsx
@@ -14,7 +14,7 @@ const addState = connect(
} = state;
return {
- promptRegister: tutorial === 99, // see events
+ promptRegister: !tutorial,
};
},
);
diff --git a/client/src/events.jsx b/client/src/events.jsx
index 8f373897..4bff6434 100644
--- a/client/src/events.jsx
+++ b/client/src/events.jsx
@@ -180,7 +180,8 @@ function registerEvents(store) {
setPvp(false);
const player = v.players.find(p => p.id === account.id);
store.dispatch(actions.setPlayer(player));
- if (tutorial && v.time_control === 'Practice') tutorialVbox(player, store, tutorial);
+
+ if (tutorial && v.rounds.length === 1 && v.time_control === 'Practice') tutorialVbox(player, store, tutorial);
if (v.phase === 'Finished') {
ws.sendAccountInstances();
@@ -211,7 +212,7 @@ function registerEvents(store) {
}
function promptRegister() {
- store.dispatch(actions.setTutorial(99));
+ store.dispatch(actions.setTutorial(null));
store.dispatch(actions.setInstance(null));
}