/** * Events that can occur when the Outside module is active **/ Events.Outside = [ { /* Ruined traps */ title: _('A Ruined Trap'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.buildings["trap"]', true) > 0; }, scenes: { 'start': { text: [ _('some of the traps have been torn apart.'), _('large prints lead away, into the forest.') ], onLoad: function() { var numWrecked = Math.floor(Math.random() * $SM.get('game.buildings["trap"]', true)) + 1; $SM.add('game.buildings["trap"]', -numWrecked); Outside.updateVillage(); Outside.updateTrapButton(); }, notification: _('some traps have been destroyed'), blink: true, buttons: { 'track': { text: _('track them'), nextScene: {0.5: 'nothing', 1: 'catch'} }, 'ignore': { text: _('ignore them'), nextScene: 'end' } } }, 'nothing': { text: [ _('the tracks disappear after just a few minutes.'), _('the forest is silent.') ], buttons: { 'end': { text: _('go home'), nextScene: 'end' } } }, 'catch': { text: [ _('not far from the village lies a large beast, its fur matted with blood.'), _('it puts up little resistance before the knife.') ], reward: { fur: 100, meat: 100, teeth: 10 }, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } } } }, { title: _('Fire'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.buildings["hut"]', true) > 0 && $SM.get('game.population', true) > 5; }, scenes: { 'start': { text: [ _('a fire rampages through one of the huts, destroying it.'), _('all residents in the hut perished in the fire.') ], notification: _('a fire has started'), blink: true, onLoad: function() { var population = $SM.get('game.population', true); var huts = $SM.get('game.buildings["hut"]', true); $SM.set('game.buildings["hut"]', (huts - 1)); Outside.killVillagers(4); }, buttons: { 'mourn': { text: _('mourn'), notification: _('some villagers have died'), nextScene: 'end' } } } } }, { /* Sickness */ title: _('Sickness'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 10 && $SM.get('game.population', true) < 50 && $SM.get('stores.medicine', true) > 0; }, scenes: { 'start': { text: [ _('a sickness is spreading through the village.'), _('medicine is needed immediately.') ], blink: true, buttons: { 'heal': { text: _('1 medicine'), cost: { 'medicine' : 1 }, nextScene: {1: 'healed'} }, 'ignore': { text: _('ignore it'), nextScene: {1: 'death'} } } }, 'healed': { text: [ _('the sickness is cured in time.') ], buttons: { 'end': { text: _('go home'), nextScene: 'end' } } }, 'death': { text: [ _('the sickness spreads through the village.'), _('the days are spent with burials.'), _('the nights are rent with screams.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 20) + 1; Outside.killVillagers(numKilled); }, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } } } }, { /* Plague */ title: _('Plague'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 50 && $SM.get('stores.medicine', true) > 0; }, scenes: { 'start': { text: [ _('a terrible plague is fast spreading through the village.'), _('medicine is needed immediately.') ], blink: true, buttons: { /* Because there is a serious need for medicine, the price is raised. */ 'buyMedicine': { text: _('buy medicine'), cost: { 'scales': 70, 'teeth': 50 }, reward: { 'medicine': 1 } }, 'heal': { text: _('5 medicine'), cost: { 'medicine' : 5 }, nextScene: {1: 'healed'} }, 'ignore': { text: _('do nothing'), nextScene: {1: 'death'} } } }, 'healed': { text: [ _('the plague is kept from spreading.'), _('only a few die.'), _('the rest bury them.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 5) + 2; Outside.killVillagers(numKilled); }, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } }, 'death': { text: [ _('the plague rips through the village.'), _('the nights are rent with screams.'), _('the only hope is a quick death.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 80) + 10; Outside.killVillagers(numKilled); }, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } } } }, { /* Beast attack */ title: _('A Beast Attack'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 0; }, scenes: { 'start': { text: [ _('a pack of snarling beasts pours out of the trees.'), _('the fight is short and bloody, but the beasts are repelled.'), _('the villagers retreat to mourn the dead.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 10) + 1; Outside.killVillagers(numKilled); }, reward: { fur: 100, meat: 100, teeth: 10 }, blink: true, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } } } }, { /* Soldier attack */ title: _('A Military Raid'), isAvailable: function() { return Engine.activeModule == Outside && $SM.get('game.population', true) > 0 && $SM.get('game.cityCleared'); }, scenes: { 'start': { text: [ _('a gunshot rings through the trees.'), _('well armed men charge out of the forest, firing into the crowd.'), _('after a skirmish they are driven away, but not without losses.') ], onLoad: function() { var numKilled = Math.floor(Math.random() * 40) + 1; Outside.killVillagers(numKilled); }, reward: { bullets: 10, 'cured meat': 50 }, blink: true, buttons: { 'end': { text: _('go home'), nextScene: 'end' } } } } } ];