mirror of
https://github.com/doublespeakgames/adarkroom.git
synced 2026-05-28 00:01:54 +08:00
8306f155f1
As said in #363, there are almost no notifications for outside events. I took a little liberty to suggest new sentences. Inspired by the game atmosphere and the double notification for Hut Fire, wrote lines for events and possible outcomes. they're associated to buttons where there are no outcome scenes.
294 lines
7.1 KiB
JavaScript
294 lines
7.1 KiB
JavaScript
/**
|
|
* 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.')
|
|
],
|
|
notification: _('nothing was found'),
|
|
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.')
|
|
],
|
|
notification: _('there was a beast. it\'s dead now'),
|
|
reward: {
|
|
fur: 100,
|
|
meat: 100,
|
|
teeth: 10
|
|
},
|
|
buttons: {
|
|
'end': {
|
|
text: _('go home'),
|
|
nextScene: 'end'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{ /* Hut fire */
|
|
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.')
|
|
],
|
|
notification: _('some villagers are ill'),
|
|
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.')
|
|
],
|
|
notification: _('sufferers are healed'),
|
|
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.')
|
|
],
|
|
notification: _('sufferers are left to die'),
|
|
onLoad: function() {
|
|
var numKilled = Math.floor(Math.random() * Math.floor($SM.get('game.population', true)/2)) + 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.')
|
|
],
|
|
notification: _('a plague afflicts the village'),
|
|
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.')
|
|
],
|
|
notification: _('epidemic is eradicated eventually'),
|
|
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.')
|
|
],
|
|
notification: _('population is almost exterminated'),
|
|
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.')
|
|
],
|
|
notification: _('wild beasts attack the villagers'),
|
|
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'),
|
|
notification: _('predators become prey. price is unfair'),
|
|
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.')
|
|
],
|
|
notification: _('troops storm the village'),
|
|
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'),
|
|
notification: _('warfare is bloodthirsty'),
|
|
nextScene: 'end'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
];
|