diff --git a/src/assets/images/door_sheet.png b/src/assets/images/door_sheet.png index c3bb1bd..e519af7 100644 Binary files a/src/assets/images/door_sheet.png and b/src/assets/images/door_sheet.png differ diff --git a/src/assets/images/room_bridge.png b/src/assets/images/room_bridge.png index 2f94ae5..7dd816e 100644 Binary files a/src/assets/images/room_bridge.png and b/src/assets/images/room_bridge.png differ diff --git a/src/assets/images/room_engine.png b/src/assets/images/room_engine.png index 1cf0599..a9fcefe 100644 Binary files a/src/assets/images/room_engine.png and b/src/assets/images/room_engine.png differ diff --git a/src/assets/images/room_hydro.png b/src/assets/images/room_hydro.png index 63ae02b..5be9bd3 100644 Binary files a/src/assets/images/room_hydro.png and b/src/assets/images/room_hydro.png differ diff --git a/src/assets/images/room_lift.png b/src/assets/images/room_lift.png index ec2cbca..42a1c8c 100644 Binary files a/src/assets/images/room_lift.png and b/src/assets/images/room_lift.png differ diff --git a/src/assets/images/room_stasis.png b/src/assets/images/room_stasis.png index 420feb5..a03370f 100644 Binary files a/src/assets/images/room_stasis.png and b/src/assets/images/room_stasis.png differ diff --git a/src/assets/images/room_stasis_dark.png b/src/assets/images/room_stasis_dark.png index 709ea8d..cca8fc7 100644 Binary files a/src/assets/images/room_stasis_dark.png and b/src/assets/images/room_stasis_dark.png differ diff --git a/src/assets/images/stasis_lightSwitch.png b/src/assets/images/stasis_lightSwitch.png index fab4f61..b14c292 100644 Binary files a/src/assets/images/stasis_lightSwitch.png and b/src/assets/images/stasis_lightSwitch.png differ diff --git a/src/bubble.js b/src/bubble.js index 22b5f46..8286e87 100644 --- a/src/bubble.js +++ b/src/bubble.js @@ -16,7 +16,7 @@ var parts = text.split(' '); var showFragment = function() { if (parts.length === 0) { - delayTimer = setTimeout(resolve, 3000); + delayTimer = setTimeout(resolve, 1500); return; } dom.innerHTML += parts.shift() + ' '; diff --git a/src/entity.js b/src/entity.js index 10edd18..d0fb874 100644 --- a/src/entity.js +++ b/src/entity.js @@ -19,7 +19,8 @@ addCallback: function(callback) { this.callbacks.push(callback); return this; - } + }, + invisible: false }; allEntities.push(e); return e; @@ -44,7 +45,7 @@ entity.render = function() { allEntities.forEach(function(e) { - if (e.name.split('.')[0] === muri.currentRoom) + if (e.name.split('.')[0] === muri.currentRoom && !e.invisible) e.sprite.render(); }); }; diff --git a/src/muri.js b/src/muri.js index f1f66da..88c30d3 100644 --- a/src/muri.js +++ b/src/muri.js @@ -45,6 +45,10 @@ var muri = (function() { var muri = {}; + muri.ra = function(a) { + return a[Math.floor(Math.random()*a.length)]; + }; + muri.bg = function(room) { return kontra.sprite({ x: 0, y: 0, diff --git a/src/room_engine.js b/src/room_engine.js index 312c2df..3ebca23 100644 --- a/src/room_engine.js +++ b/src/room_engine.js @@ -5,6 +5,24 @@ var background, door = null; var roomState = { + firstVisit: true, + engineBroken: true + }; + + var randomSounds = function() { + var sound = muri.ra(['Brrz ...', 'EeeeKK!', 'Rrrrrm deng', 'Ponk, Ponk, Deng.', 'Uffz', 'Pok, Pok, Pok, ...']); + var position = [ + 30+Math.floor(Math.random()*50), + 12+Math.floor(Math.random()*20) + ]; + + muri.get('bubble') + .talk([sound], position) + .then(function() { + if (roomState.engineBroken && + muri.currentRoom === 'engine') + randomSounds(); + }); }; engine.init = function() { @@ -14,6 +32,18 @@ engine.onEnter = function() { door.sprite.playAnimation('close'); + if (roomState.firstVisit) { + roomState.firstVisit = false; + muri.get('bubble') + .talk([ + 'It smells like molted plastic and burned metal in here.', + 'Something is broken here for sure.', + 'I\'m afraid that I need to fix this mess somehow ...' + ]); + } + + if (roomState.engineBroken) + randomSounds(); }; engine.update = function() { diff --git a/src/room_lift.js b/src/room_lift.js index e4f3d10..e264ed1 100644 --- a/src/room_lift.js +++ b/src/room_lift.js @@ -6,12 +6,10 @@ var buttonSheet, background = null; var buttons = []; var roomState = { - position: 1 + bridgeAccessible: false, + hydroDoorBroken: true }; - var r = function(a) { - return a[Math.floor(Math.random()*a.length)]; - }; var createButtonEntity = function(i, room) { var e = muri.get('entity') @@ -20,8 +18,26 @@ animations: buttonSheet.animations})) .addCallback(function() { buttons.forEach(function(b) { b.sprite.playAnimation('off'); }); + + if (room === 'bridge' && !roomState.bridgeAccessible) { + muri.get('bubble') + .talk([ + 'The bridge is not accessible.', + 'You have no sufficient permission to do that.']); + return; + } + + if (room === 'hydro' && roomState.hydroDoorBroken) { + muri.get('bubble') + .talk([ + 'The hyperlift moved, but to door to the hydro deck does not open.', + 'You can\'t access this deck with a broken door.' + ]); + return; + } + muri.get('entity').get('lift.button'+i).sprite.playAnimation('on'); - var goMessage = r([ + var goMessage = muri.ra([ 'Sure, ' + room, 'Okay, straight to ' + room, 'Set ' + room + ' for destination', @@ -54,11 +70,11 @@ createButtonEntity(2, 'stasis'), // Stasis createButtonEntity(3, 'engine') // Engine room ]; - buttons[1].sprite.playAnimation('on'); + buttons[2].sprite.playAnimation('on'); }; lift.onEnter = function(fromRoom) { - var welcomeMessage = r([ + var welcomeMessage = muri.ra([ 'Welcome on board, where do you want?', 'Please specify your destination.', 'Insert desired deck on console.', diff --git a/src/room_stasis.js b/src/room_stasis.js index 9b8b9ae..ce11416 100644 --- a/src/room_stasis.js +++ b/src/room_stasis.js @@ -37,7 +37,7 @@ if (!roomState.isLightOn) { muri.get('bubble') .story([ - [['Beep', 'Bip, Bip'], [20, 15]], + [['Beep', 'Bip, Bip'], [17, 15]], [['Urgh ... ...', 'Where I am?', 'What happened?'], [40, 35]], [['I can\'t see a thing ...', '... need to turn on the light ...'], [40, 35]] ]) @@ -52,8 +52,22 @@ }; stasis.update = function() { - if (roomState.isLightOn && !door) + if (roomState.isLightOn && !door) { door = muri.door('stasis', [76, 11]); + muri.get('entity') + .create('stasis.capsule', + kontra.sprite({x: 21, y: 21, width: 32, height: 8})) + .addCallback(function() { + muri.get('bubble') + .talk([ + 'That\'s my stasis capsule.', + 'It looks like the capsule itself is intact but had a malfunction.', + 'I am not an engineer, so I have noe idea whats wrong here ...' + ]); + }) + .invisible = true; + + } }; stasis.render = function() {