mirror of
https://github.com/doublespeakgames/adarkroom.git
synced 2026-05-28 16:21:53 +08:00
Merge pull request #1 from doublespeakgames/master
Update fork to latest head
This commit is contained in:
@@ -2,3 +2,4 @@
|
||||
*.TODO
|
||||
*.mo
|
||||
*.swp
|
||||
.idea
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>A Dark Room</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
+3
-3
@@ -563,12 +563,12 @@ body.noMask #description {
|
||||
|
||||
#lootButtons {
|
||||
padding-bottom: 0px !important;
|
||||
margin: 20px 0 0 5px;
|
||||
margin: 20px 0 5px 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#lootButtons:before {
|
||||
content: "take:";
|
||||
content: attr(data-legend);
|
||||
position: absolute;
|
||||
top: -25px;
|
||||
left: 0px;
|
||||
@@ -586,7 +586,7 @@ body.noMask #description {
|
||||
}
|
||||
|
||||
#dropMenu:before {
|
||||
content: "drop:";
|
||||
content: attr(data-legend);
|
||||
border-bottom: 1px solid black;
|
||||
display: block;
|
||||
margin-bottom: 5px;
|
||||
|
||||
Binary file not shown.
+1
-1
File diff suppressed because one or more lines are too long
+50
-51
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2015-08-18 21:53+0200\n"
|
||||
"PO-Revision-Date: 2015-08-18 22:09+0200\n"
|
||||
"POT-Creation-Date: 2016-02-15 02:03+0100\n"
|
||||
"PO-Revision-Date: 2016-02-15 02:03+0100\n"
|
||||
"Last-Translator: Bernd Dorer <bdorer@mailbox.org>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 1.3\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 1.8.4\n"
|
||||
"X-Generator: Poedit 1.7.6\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-Basepath: ../..\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
@@ -35,7 +35,7 @@ msgid "connect"
|
||||
msgstr "verbinden"
|
||||
|
||||
#: script/dropbox.js:75 script/dropbox.js:107 script/dropbox.js:133
|
||||
#: script/dropbox.js:163 script/engine.js:285 script/engine.js:330
|
||||
#: script/dropbox.js:163 script/engine.js:285 script/engine.js:331
|
||||
msgid "cancel"
|
||||
msgstr "abbrechen"
|
||||
|
||||
@@ -100,7 +100,6 @@ msgid "punches do more damage"
|
||||
msgstr "faustschläge verursachen mehr schaden"
|
||||
|
||||
# more force
|
||||
#. TRANSLATORS : means with more force.
|
||||
#: script/engine.js:18
|
||||
msgid "learned to throw punches with purpose"
|
||||
msgstr "gelernt kraftvolle schläge auszuteilen"
|
||||
@@ -118,7 +117,6 @@ msgid "learned to fight quite effectively without weapons"
|
||||
msgstr "gelernt effizienter ohne Waffen zu kämpfen"
|
||||
|
||||
# unarmed master = master of unarmed combat.
|
||||
#. TRANSLATORS : master of unarmed combat
|
||||
#: script/engine.js:27
|
||||
msgid "unarmed master"
|
||||
msgstr "nahkampfmeister"
|
||||
@@ -228,34 +226,34 @@ msgstr "erlange mehr gesundheit durch nahrung"
|
||||
msgid "learned to make the most of food"
|
||||
msgstr "gelernt besser mit essen aus zu kommen"
|
||||
|
||||
#: script/engine.js:138 script/engine.js:483
|
||||
#: script/engine.js:138 script/space.js:450
|
||||
msgid "app store."
|
||||
msgstr "app store."
|
||||
|
||||
#: script/engine.js:144 script/engine.js:485
|
||||
msgid "lights off."
|
||||
msgstr "licht aus."
|
||||
|
||||
#: script/engine.js:144 script/engine.js:493
|
||||
#: script/engine.js:150 script/engine.js:521
|
||||
msgid "hyper."
|
||||
msgstr "hyper."
|
||||
|
||||
#: script/engine.js:150 script/space.js:442
|
||||
#: script/engine.js:156 script/space.js:442
|
||||
msgid "restart."
|
||||
msgstr "neu starten."
|
||||
|
||||
#: script/engine.js:156
|
||||
#: script/engine.js:162
|
||||
msgid "share."
|
||||
msgstr "teilen."
|
||||
|
||||
#: script/engine.js:162
|
||||
#: script/engine.js:168
|
||||
msgid "save."
|
||||
msgstr "speichern."
|
||||
|
||||
#: script/engine.js:171
|
||||
#: script/engine.js:177
|
||||
msgid "dropbox."
|
||||
msgstr "dropbox."
|
||||
|
||||
#: script/engine.js:178
|
||||
msgid "app store."
|
||||
msgstr "app store."
|
||||
|
||||
#: script/engine.js:184
|
||||
msgid "github."
|
||||
msgstr "github."
|
||||
@@ -276,7 +274,7 @@ msgstr "oder zum wechseln von computern"
|
||||
msgid "export"
|
||||
msgstr "export"
|
||||
|
||||
#: script/engine.js:281 script/engine.js:325
|
||||
#: script/engine.js:281 script/engine.js:326
|
||||
msgid "import"
|
||||
msgstr "import"
|
||||
|
||||
@@ -284,79 +282,88 @@ msgstr "import"
|
||||
msgid "save this."
|
||||
msgstr "speichere das."
|
||||
|
||||
#: script/engine.js:296
|
||||
#: script/engine.js:297
|
||||
msgid "got it"
|
||||
msgstr "habe verstanden"
|
||||
|
||||
#: script/engine.js:304
|
||||
#: script/engine.js:305
|
||||
msgid "are you sure?"
|
||||
msgstr "bist du sicher?"
|
||||
|
||||
#: script/engine.js:305
|
||||
#: script/engine.js:306
|
||||
msgid "if the code is invalid, all data will be lost."
|
||||
msgstr "wenn der code nicht stimmt, werden alle informationen verloren gehen."
|
||||
|
||||
#: script/engine.js:306
|
||||
#: script/engine.js:307
|
||||
msgid "this is irreversible."
|
||||
msgstr "dies ist nicht umkehrbar."
|
||||
|
||||
#: script/engine.js:310 script/engine.js:378
|
||||
#: script/engine.js:311 script/engine.js:380 script/engine.js:499
|
||||
msgid "yes"
|
||||
msgstr "ja"
|
||||
|
||||
#: script/engine.js:315 script/engine.js:383
|
||||
#: script/engine.js:316 script/engine.js:385 script/engine.js:504
|
||||
msgid "no"
|
||||
msgstr "nein"
|
||||
|
||||
#: script/engine.js:321
|
||||
#: script/engine.js:322
|
||||
msgid "put the save code here."
|
||||
msgstr "lege den speichercode hier ab."
|
||||
|
||||
#: script/engine.js:372
|
||||
#: script/engine.js:374
|
||||
msgid "Restart?"
|
||||
msgstr "neu starten?"
|
||||
|
||||
#: script/engine.js:375
|
||||
#: script/engine.js:377
|
||||
msgid "restart the game?"
|
||||
msgstr "das spiel neu starten?"
|
||||
|
||||
#: script/engine.js:406
|
||||
#: script/engine.js:408
|
||||
msgid "Share"
|
||||
msgstr "Teilen"
|
||||
|
||||
#: script/engine.js:409
|
||||
#: script/engine.js:411
|
||||
msgid "bring your friends."
|
||||
msgstr "bringe deine freunde mit."
|
||||
|
||||
#: script/engine.js:412
|
||||
#: script/engine.js:414
|
||||
msgid "facebook"
|
||||
msgstr "facebook"
|
||||
|
||||
#: script/engine.js:419
|
||||
#: script/engine.js:421
|
||||
msgid "google+"
|
||||
msgstr "google+"
|
||||
|
||||
#: script/engine.js:426
|
||||
#: script/engine.js:428
|
||||
msgid "twitter"
|
||||
msgstr "twitter"
|
||||
|
||||
#: script/engine.js:433
|
||||
#: script/engine.js:435
|
||||
msgid "reddit"
|
||||
msgstr "reddit"
|
||||
|
||||
#: script/engine.js:440
|
||||
#: script/engine.js:442
|
||||
msgid "close"
|
||||
msgstr "schließen"
|
||||
|
||||
#: script/engine.js:474 script/engine.js:478
|
||||
#: script/engine.js:476 script/engine.js:480
|
||||
msgid "lights on."
|
||||
msgstr "licht an."
|
||||
|
||||
#: script/engine.js:491
|
||||
#: script/engine.js:493
|
||||
msgid "Go Hyper?"
|
||||
msgstr ""
|
||||
|
||||
#: script/engine.js:496
|
||||
msgid ""
|
||||
"turning hyper mode speeds up the game to x2 speed. do you want to do that?"
|
||||
msgstr ""
|
||||
|
||||
#: script/engine.js:519
|
||||
msgid "classic."
|
||||
msgstr "Klassisch."
|
||||
|
||||
#: script/engine.js:592
|
||||
#: script/engine.js:620
|
||||
msgid "{0} per {1}s"
|
||||
msgstr "{0} per {1}s"
|
||||
|
||||
@@ -421,7 +428,6 @@ msgstr "Alle"
|
||||
msgid "take everything"
|
||||
msgstr "nimm alles"
|
||||
|
||||
#. TRANSLATORS : Mind the whitespaces at the beginning and end.
|
||||
#: script/events.js:653 script/outside.js:627
|
||||
msgid " and "
|
||||
msgstr " und "
|
||||
@@ -912,12 +918,13 @@ msgid "the old compass is dented and dusty, but it looks to work."
|
||||
msgstr ""
|
||||
"der alte kompass ist verbeult und rostig aber er scheint zu funktionieren."
|
||||
|
||||
#: script/events/room.js:45 script/events/room.js:227 script/events/room.js:240
|
||||
#: script/events/room.js:253 script/events/room.js:309
|
||||
#: script/events/room.js:332 script/events/room.js:388
|
||||
#: script/events/room.js:411 script/events/room.js:450
|
||||
#: script/events/room.js:568 script/events/room.js:584
|
||||
#: script/events/room.js:600 script/events/room.js:611
|
||||
#: script/events/room.js:45 script/events/room.js:227
|
||||
#: script/events/room.js:240 script/events/room.js:253
|
||||
#: script/events/room.js:309 script/events/room.js:332
|
||||
#: script/events/room.js:388 script/events/room.js:411
|
||||
#: script/events/room.js:450 script/events/room.js:568
|
||||
#: script/events/room.js:584 script/events/room.js:600
|
||||
#: script/events/room.js:611
|
||||
msgid "say goodbye"
|
||||
msgstr "verabschiede dich"
|
||||
|
||||
@@ -1372,7 +1379,6 @@ msgid "rot's been to work on it, and some of the pieces are missing."
|
||||
msgstr "verwesung hat eingesetzt. einige teile fehlen."
|
||||
|
||||
# 'it' is a wanderer corpse
|
||||
#. TRANSLATORS : 'it' is a rotting wanderer's body
|
||||
#: script/events/setpieces.js:202
|
||||
msgid "can't tell what left it here."
|
||||
msgstr "schwer zu sagen was ihn hier zurückgelassen hat."
|
||||
@@ -1771,7 +1777,6 @@ msgid "looks like a camp of sorts up ahead."
|
||||
msgstr "sieht dort vorn nach einer art lager aus."
|
||||
|
||||
# a chainlink fence
|
||||
#. TRANSLATORS : chainlink is a type of metal fence.
|
||||
#: script/events/setpieces.js:1677
|
||||
msgid "rusted chainlink is pulled across an alleyway."
|
||||
msgstr "rostiger drahtzaun liegt in der gasse."
|
||||
@@ -1797,7 +1802,6 @@ msgid "the street ahead glows with firelight."
|
||||
msgstr "die straßen glühen rot im feuer."
|
||||
|
||||
# define squatter
|
||||
#. TRANSLATORS : squatters occupy abandoned dwellings they don't own.
|
||||
#: script/events/setpieces.js:1729
|
||||
msgid "more squatters are crowding around now."
|
||||
msgstr "mehr hausbesetzer sammeln sich jetzt."
|
||||
@@ -1909,7 +1913,6 @@ msgid "scavengers must have gotten to this place already."
|
||||
msgstr "plünderer waren wohl schon hier."
|
||||
|
||||
# part of the subway?
|
||||
#. TRANSLATORS : a platform in the subway
|
||||
#: script/events/setpieces.js:2403
|
||||
msgid "the tunnel opens up at another platform."
|
||||
msgstr "der tunnel öffnet sich an einer anderen haltestelle."
|
||||
@@ -2029,7 +2032,6 @@ msgid "inside, the remains of its victims are everywhere."
|
||||
msgstr "innen liegen die überreste seiner opfer verstreut."
|
||||
|
||||
# extremly disfigured
|
||||
#. TRANSLATORS : warped means extremely disfigured.
|
||||
#: script/events/setpieces.js:2845
|
||||
msgid "the warped man lies dead."
|
||||
msgstr "der entstellte mann liegt tot am boden."
|
||||
@@ -2271,7 +2273,6 @@ msgid "charred bodies litter the ground."
|
||||
msgstr "verkohlte leichen bedecken den boden."
|
||||
|
||||
# afterburner: a engine
|
||||
#. TRANSLATORS : tang = strong metallic smell, wanderer afterburner = ship's engines
|
||||
#: script/events/setpieces.js:3532
|
||||
msgid "the metallic tang of wanderer afterburner hangs in the air."
|
||||
msgstr "der metallische geruch eines wanderer-nachbrenners hängt in der luft."
|
||||
@@ -2591,7 +2592,6 @@ msgid "the town's booming. word does get around."
|
||||
msgstr "die stadt wächst. gerüchte verbreiten sich doch."
|
||||
|
||||
# short for population.
|
||||
#. TRANSLATORS : pop is short for population.
|
||||
#: script/outside.js:452
|
||||
msgid "pop "
|
||||
msgstr "volk "
|
||||
@@ -2636,7 +2636,6 @@ msgstr "der himmel ist grau und der wind heult erbarmungslos"
|
||||
msgid "dry brush and dead branches litter the forest floor"
|
||||
msgstr "trockenes gestrüpp und herabgefallene äste bedecken den waldboden"
|
||||
|
||||
#. TRANSLATORS : Mind the whitespace at the end.
|
||||
#: script/outside.js:621
|
||||
msgid "the traps contain "
|
||||
msgstr "die fallen beinhalten "
|
||||
|
||||
+875
-790
File diff suppressed because it is too large
Load Diff
+1839
-1748
File diff suppressed because it is too large
Load Diff
+16
-1
@@ -1,3 +1,18 @@
|
||||
.button{width: 100px !important;}
|
||||
#outsidePanel .button{width: 115px !important;}
|
||||
.eventPanel .button {width: 122px !important;}
|
||||
.eventPanel .button {width: 122px !important;}
|
||||
#lootButtons:before {
|
||||
content: "prendre :" !important;
|
||||
}
|
||||
#dropMenu:before {
|
||||
content: "déposer :" !important;
|
||||
}
|
||||
#hullRow {
|
||||
width: 80px !important;
|
||||
}
|
||||
div#workers {
|
||||
width: 160px !important;
|
||||
}
|
||||
div.button div.tooltip {
|
||||
width: 120px !important;
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+2935
-1941
File diff suppressed because it is too large
Load Diff
+1
-1
File diff suppressed because one or more lines are too long
+875
-789
File diff suppressed because it is too large
Load Diff
+1
-1
File diff suppressed because one or more lines are too long
+863
-788
File diff suppressed because it is too large
Load Diff
+925
-807
File diff suppressed because it is too large
Load Diff
+15
-6
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2015-12-10 10:23+0900\n"
|
||||
"PO-Revision-Date: 2015-05-21 05:35+0900\n"
|
||||
"POT-Creation-Date: 2015-12-22 13:35-0600\n"
|
||||
"PO-Revision-Date: 2016-02-15 02:05+0100\n"
|
||||
"Last-Translator: Jeong YunWon <adarkroom@youknowone.org>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: ko\n"
|
||||
@@ -228,7 +228,7 @@ msgstr "앱 스토어."
|
||||
msgid "lights off."
|
||||
msgstr "어둡게."
|
||||
|
||||
#: script/engine.js:150 script/engine.js:495
|
||||
#: script/engine.js:150 script/engine.js:521
|
||||
msgid "hyper."
|
||||
msgstr "하이퍼."
|
||||
|
||||
@@ -292,11 +292,11 @@ msgstr "입력하신 코드가 정확하지 않으면, 모든 데이터가 사
|
||||
msgid "this is irreversible."
|
||||
msgstr "이것은 되돌릴 수 없습니다."
|
||||
|
||||
#: script/engine.js:311 script/engine.js:380
|
||||
#: script/engine.js:311 script/engine.js:380 script/engine.js:499
|
||||
msgid "yes"
|
||||
msgstr "네"
|
||||
|
||||
#: script/engine.js:316 script/engine.js:385
|
||||
#: script/engine.js:316 script/engine.js:385 script/engine.js:504
|
||||
msgid "no"
|
||||
msgstr "아니오"
|
||||
|
||||
@@ -345,10 +345,19 @@ msgid "lights on."
|
||||
msgstr "밝게."
|
||||
|
||||
#: script/engine.js:493
|
||||
msgid "Go Hyper?"
|
||||
msgstr ""
|
||||
|
||||
#: script/engine.js:496
|
||||
msgid ""
|
||||
"turning hyper mode speeds up the game to x2 speed. do you want to do that?"
|
||||
msgstr ""
|
||||
|
||||
#: script/engine.js:519
|
||||
msgid "classic."
|
||||
msgstr "클래식."
|
||||
|
||||
#: script/engine.js:594
|
||||
#: script/engine.js:620
|
||||
msgid "{0} per {1}s"
|
||||
msgstr "{1}초 당 {0}개"
|
||||
|
||||
|
||||
+926
-798
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
.button{width: 100px !important;}
|
||||
#outsidePanel .button{width: 115px !important;}
|
||||
.eventPanel .button {width: 122px !important;}
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1824
-1587
File diff suppressed because it is too large
Load Diff
+934
-798
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+1096
-1076
File diff suppressed because it is too large
Load Diff
+2871
-2493
File diff suppressed because it is too large
Load Diff
+2867
-1873
File diff suppressed because it is too large
Load Diff
+919
-967
File diff suppressed because it is too large
Load Diff
+2882
-1902
File diff suppressed because it is too large
Load Diff
+2872
-1857
File diff suppressed because it is too large
Load Diff
+925
-798
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
+2462
-1528
File diff suppressed because it is too large
Load Diff
+2829
-1857
File diff suppressed because it is too large
Load Diff
+44
-20
@@ -1,34 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>A Dark Room</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #000000;
|
||||
color: #FFFFFF;
|
||||
background-color: #000000;
|
||||
color: #FFFFFF;
|
||||
line-height: 1.5;
|
||||
font-size: 22px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
a {
|
||||
color: #FFFFFF;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
p {
|
||||
margin: 10px 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
width: 100%;
|
||||
}
|
||||
.store {
|
||||
width: 90%;
|
||||
}
|
||||
.storeLink {
|
||||
text-align: center;
|
||||
}
|
||||
div {
|
||||
width: 100%;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
div {
|
||||
width: 960px;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<img src="img/Logo1.jpg" />
|
||||
<div>
|
||||
<strong>
|
||||
A Dark Room isn't really mobile-friendly, and it requires arrow keys.<br/>
|
||||
Sorry about that!<br/>
|
||||
</strong><br/>
|
||||
Of course you can <a href='index.html?ignorebrowser=true'>play anyway</a>, but it probably won't work!<br/><br/>
|
||||
A Dark Room is now native on iOS! Get it on the <a href="https://itunes.apple.com/app/apple-store/id736683061?pt=2073437&ct=mobilesplash&mt=8">App Store</a>.
|
||||
</div>
|
||||
</center>
|
||||
<img class="logo" src="img/Logo1.jpg" />
|
||||
<p>
|
||||
A Dark Room isn't mobile-friendly, and it requires arrow keys.
|
||||
<br>
|
||||
Sorry about that!
|
||||
</p>
|
||||
<p>
|
||||
There are native apps, though! Get them now!
|
||||
</p>
|
||||
<a class="storeLink" href="https://itunes.apple.com/app/apple-store/id736683061?pt=2073437&ct=mobilesplash&mt=8">
|
||||
<img class="store" src="http://i.imgur.com/DMdnDYq.png" alt="App Store">
|
||||
</a>
|
||||
<a class="storeLink" href = "https://play.google.com/store/apps/details?id=com.yourcompany.adarkroom&hl=en">
|
||||
<img class="store" src="http://i.imgur.com/bLWWj4r.png" alt="Google Play">
|
||||
</a>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -70,6 +70,9 @@ var Button = {
|
||||
var cd = btn.data("cooldown");
|
||||
var id = 'cooldown.'+ btn.attr('id');
|
||||
if(cd > 0) {
|
||||
if(typeof option == 'number') {
|
||||
cd = option;
|
||||
}
|
||||
// param "start" takes value from cooldown time if not specified
|
||||
var start, left;
|
||||
switch(option){
|
||||
|
||||
+2
-4
@@ -577,10 +577,6 @@
|
||||
stores.animate({right: -(panelIndex * 700) + 'px'}, 300 * diff);
|
||||
}
|
||||
|
||||
Engine.activeModule = module;
|
||||
|
||||
module.onArrival(diff);
|
||||
|
||||
if(Engine.activeModule == Room || Engine.activeModule == Path) {
|
||||
// Don't fade out the weapons if we're switching to a module
|
||||
// where we're going to keep showing them anyway.
|
||||
@@ -593,6 +589,8 @@
|
||||
$('div#weapons').animate({opacity: 1}, 300);
|
||||
}
|
||||
|
||||
Engine.activeModule = module;
|
||||
module.onArrival(diff);
|
||||
Notifications.printQueue(module);
|
||||
|
||||
}
|
||||
|
||||
+209
-118
@@ -72,20 +72,36 @@ var Events = {
|
||||
|
||||
startCombat: function(scene) {
|
||||
Engine.event('game event', 'combat');
|
||||
Events.won = false;
|
||||
Events.fought = false;
|
||||
var desc = $('#description', Events.eventPanel());
|
||||
|
||||
$('<div>').text(scene.notification).appendTo(desc);
|
||||
|
||||
// Draw the wanderer
|
||||
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(desc);
|
||||
// Draw pause button
|
||||
/* Disable for now, because it doesn't work and looks weird
|
||||
var pauseBox = $('<div>').attr('id', 'pauseButton').appendTo(desc);
|
||||
var pause = new Button.Button({
|
||||
id: 'pause',
|
||||
text: '',
|
||||
cooldown: Events._PAUSE_COOLDOWN,
|
||||
click: Events.togglePause
|
||||
}).appendTo(pauseBox);
|
||||
$('<span>').addClass('text').insertBefore(pause.children('.cooldown'));
|
||||
$('<div>').addClass('clear').appendTo(pauseBox);
|
||||
Events.setPause(pause, 'set');
|
||||
Events.removePause(pause, 'set');
|
||||
*/
|
||||
|
||||
var fightBox = $('<div>').attr('id', 'fight').appendTo(desc);
|
||||
// Draw the wanderer
|
||||
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(fightBox);
|
||||
// Draw the enemy
|
||||
Events.createFighterDiv(scene.chara, scene.health, scene.health).attr('id', 'enemy').appendTo(desc);
|
||||
Events.createFighterDiv(scene.chara, scene.health, scene.health).attr('id', 'enemy').appendTo(fightBox);
|
||||
|
||||
// Draw the action buttons
|
||||
var btns = $('#buttons', Events.eventPanel());
|
||||
|
||||
var attackBtns = $('<div>').appendTo(btns).attr('id','attackButtons');
|
||||
var numWeapons = 0;
|
||||
for(var k in World.Weapons) {
|
||||
var weapon = World.Weapons[k];
|
||||
@@ -103,21 +119,105 @@ var Events = {
|
||||
}
|
||||
}
|
||||
numWeapons++;
|
||||
Events.createAttackButton(k).appendTo(btns);
|
||||
Events.createAttackButton(k).appendTo(attackBtns);
|
||||
}
|
||||
}
|
||||
if(numWeapons === 0) {
|
||||
// No weapons? You can punch stuff!
|
||||
Events.createAttackButton('fists').prependTo(btns);
|
||||
Events.createAttackButton('fists').prependTo(attackBtns);
|
||||
}
|
||||
$('<div>').addClass('clear').appendTo(attackBtns);
|
||||
|
||||
Events.createEatMeatButton().appendTo(btns);
|
||||
var healBtns = $('<div>').appendTo(btns).attr('id','healButtons');
|
||||
Events.createEatMeatButton().appendTo(healBtns);
|
||||
if((Path.outfit['medicine'] || 0) !== 0) {
|
||||
Events.createUseMedsButton().appendTo(btns);
|
||||
Events.createUseMedsButton().appendTo(healBtns);
|
||||
}
|
||||
$('<div>').addClass('clear').appendTo(healBtns);
|
||||
Events.setHeal(healBtns);
|
||||
|
||||
// Set up the enemy attack timer
|
||||
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
|
||||
Events._enemyAttackTimer = Engine.setInterval(Events.enemyAttack, scene.attackDelay * 1000);
|
||||
},
|
||||
|
||||
setPause: function(btn, state){
|
||||
if(!btn) {
|
||||
btn = $('#pause');
|
||||
}
|
||||
var event = btn.closest('#event');
|
||||
var string, log;
|
||||
if(state == 'set') {
|
||||
string = 'start.';
|
||||
log = 'loaded';
|
||||
} else {
|
||||
string = 'resume.';
|
||||
log = 'paused';
|
||||
}
|
||||
btn.children('.text').first().text( _(string) )
|
||||
Events.paused = (state == 'auto') ? 'auto' : true;
|
||||
event.addClass('paused');
|
||||
Button.clearCooldown(btn);
|
||||
$('#buttons').find('.button').each(function(i){
|
||||
if($(this).data('onCooldown')){
|
||||
$(this).children('.cooldown').stop(true,false);
|
||||
}
|
||||
});
|
||||
Engine.log('fight '+ log +'.');
|
||||
},
|
||||
|
||||
removePause: function(btn, state){
|
||||
if(!btn) {
|
||||
btn = $('#pause');
|
||||
}
|
||||
var event = btn.closest('#event');
|
||||
var log, time, target;
|
||||
if(state == 'auto' && Events.paused != 'auto') {
|
||||
return;
|
||||
}
|
||||
switch(state){
|
||||
case 'set':
|
||||
Button.cooldown(btn, Events._LEAVE_COOLDOWN);
|
||||
log = 'started';
|
||||
time = Events._LEAVE_COOLDOWN * 1000;
|
||||
target = $();
|
||||
break;
|
||||
case 'end':
|
||||
Button.setDisabled(btn, true);
|
||||
log = 'ended';
|
||||
time = Events._FIGHT_SPEED;
|
||||
target = $();
|
||||
break;
|
||||
case 'auto':
|
||||
Button.cooldown(btn);
|
||||
default:
|
||||
log = 'resumed';
|
||||
time = Events._PAUSE_COOLDOWN * 1000;
|
||||
target = $('#buttons').find('.button');
|
||||
break;
|
||||
}
|
||||
Engine.setTimeout(function(){
|
||||
btn.children('.text').first().text( _('pause.') );
|
||||
Events.paused = false;
|
||||
event.removeClass('paused');
|
||||
target.each(function(i){
|
||||
if($(this).data('onCooldown')){
|
||||
Button.cooldown($(this), 'pause');
|
||||
}
|
||||
});
|
||||
Engine.log('Event '+ log);
|
||||
}, time);
|
||||
},
|
||||
|
||||
togglePause: function(btn, auto){
|
||||
if(!btn) {
|
||||
btn = $('#pause');
|
||||
}
|
||||
if((auto) && (document.hasFocus() == !Events.paused)) {
|
||||
return;
|
||||
}
|
||||
var f = (Events.paused) ? Events.removePause : Events.setPause;
|
||||
var state = (auto) ? 'auto' : false;
|
||||
f(btn, state);
|
||||
},
|
||||
|
||||
createEatMeatButton: function(cooldown) {
|
||||
@@ -201,52 +301,48 @@ var Events = {
|
||||
});
|
||||
},
|
||||
|
||||
eatMeat: function() {
|
||||
if(Path.outfit['cured meat'] > 0) {
|
||||
Path.outfit['cured meat']--;
|
||||
setHeal: function(healBtns) {
|
||||
if(!healBtns){
|
||||
healBtns = $('#healButtons');
|
||||
}
|
||||
healBtns = healBtns.children('.button');
|
||||
var canHeal = (World.health < World.getMaxHealth());
|
||||
healBtns.each(function(i){
|
||||
Button.setDisabled($(this), !canHeal);
|
||||
});
|
||||
return canHeal;
|
||||
},
|
||||
|
||||
doHeal: function(healing, cured, btn) {
|
||||
if(Path.outfit[healing] > 0) {
|
||||
Path.outfit[healing]--;
|
||||
World.updateSupplies();
|
||||
if(Path.outfit['cured meat'] === 0) {
|
||||
Button.setDisabled($('#eat'), true);
|
||||
if(Path.outfit[healing] === 0) {
|
||||
Button.setDisabled(btn, true);
|
||||
}
|
||||
|
||||
var hp = World.health;
|
||||
hp += World.meatHeal();
|
||||
hp = hp > World.getMaxHealth() ? World.getMaxHealth() : hp;
|
||||
var hp = World.health + cured;
|
||||
hp = Math.min(World.getMaxHealth(),hp);
|
||||
World.setHp(hp);
|
||||
Events.setHeal();
|
||||
|
||||
if(Events.activeEvent()) {
|
||||
var w = $('#wanderer');
|
||||
w.data('hp', hp);
|
||||
Events.updateFighterDiv(w);
|
||||
Events.drawFloatText('+' + World.meatHeal(), '#wanderer .hp');
|
||||
Events.drawFloatText('+' + cured, '#wanderer .hp');
|
||||
var takeETbutton = Events.setTakeAll();
|
||||
Events.canLeave(takeETbutton);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
useMeds: function() {
|
||||
if(Path.outfit['medicine'] > 0) {
|
||||
Path.outfit['medicine']--;
|
||||
World.updateSupplies();
|
||||
if(Path.outfit['medicine'] === 0) {
|
||||
Button.setDisabled($('#meds'), true);
|
||||
}
|
||||
eatMeat: function(btn) {
|
||||
Events.doHeal('cured meat', World.meatHeal(), btn);
|
||||
},
|
||||
|
||||
var hp = World.health;
|
||||
hp += World.medsHeal();
|
||||
hp = hp > World.getMaxHealth() ? World.getMaxHealth() : hp;
|
||||
World.setHp(hp);
|
||||
|
||||
if(Events.activeEvent()) {
|
||||
var w = $('#wanderer');
|
||||
w.data('hp', hp);
|
||||
Events.updateFighterDiv(w);
|
||||
Events.drawFloatText('+' + World.medsHeal(), '#wanderer .hp');
|
||||
var takeETbutton = Events.setTakeAll();
|
||||
Events.canLeave(takeETbutton);
|
||||
}
|
||||
}
|
||||
useMeds: function(btn) {
|
||||
Events.doHeal('medicine', World.medsHeal(), btn);
|
||||
},
|
||||
|
||||
useWeapon: function(btn) {
|
||||
@@ -330,6 +426,33 @@ var Events = {
|
||||
}
|
||||
},
|
||||
|
||||
damage: function(fighter, enemy, dmg) {
|
||||
var enemyHp = enemy.data('hp');
|
||||
var msg = "";
|
||||
if(typeof dmg == 'number') {
|
||||
if(dmg < 0) {
|
||||
msg = _('miss');
|
||||
dmg = 0;
|
||||
} else {
|
||||
msg = '-' + dmg;
|
||||
enemyHp = ((enemyHp - dmg) < 0) ? 0 : (enemyHp - dmg);
|
||||
enemy.data('hp', enemyHp);
|
||||
if(fighter.attr('id') == 'enemy') {
|
||||
World.setHp(enemyHp);
|
||||
Events.setHeal();
|
||||
}
|
||||
Events.updateFighterDiv(enemy);
|
||||
}
|
||||
} else {
|
||||
if(dmg == 'stun') {
|
||||
msg = _('stunned');
|
||||
enemy.data('stunned', Events.STUN_DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
Events.drawFloatText(msg, $('.hp', enemy));
|
||||
},
|
||||
|
||||
animateMelee: function(fighter, dmg, callback) {
|
||||
var start, end, enemy;
|
||||
if(fighter.attr('id') == 'wanderer') {
|
||||
@@ -343,32 +466,8 @@ var Events = {
|
||||
}
|
||||
|
||||
fighter.stop(true, true).animate(start, Events._FIGHT_SPEED, function() {
|
||||
var enemyHp = enemy.data('hp');
|
||||
var msg = "";
|
||||
if(typeof dmg == 'number') {
|
||||
if(dmg < 0) {
|
||||
msg = _('miss');
|
||||
dmg = 0;
|
||||
} else {
|
||||
msg = '-' + dmg;
|
||||
enemyHp = ((enemyHp - dmg) < 0) ? 0 : (enemyHp - dmg);
|
||||
enemy.data('hp', enemyHp);
|
||||
if(fighter.attr('id') == 'enemy') {
|
||||
World.setHp(enemyHp);
|
||||
}
|
||||
Events.updateFighterDiv(enemy);
|
||||
}
|
||||
} else {
|
||||
if(dmg == 'stun') {
|
||||
msg = _('stunned');
|
||||
enemy.data('stunned', true);
|
||||
Engine.setTimeout(function() {
|
||||
enemy.data('stunned', false);
|
||||
}, Events.STUN_DURATION);
|
||||
}
|
||||
}
|
||||
|
||||
Events.drawFloatText(msg, $('.hp', enemy));
|
||||
Events.damage(fighter, enemy, dmg);
|
||||
|
||||
$(this).animate(end, Events._FIGHT_SPEED, callback);
|
||||
});
|
||||
@@ -387,33 +486,9 @@ var Events = {
|
||||
}
|
||||
|
||||
$('<div>').css(start).addClass('bullet').text('o').appendTo('#description')
|
||||
.animate(end, Events._FIGHT_SPEED * 2, 'linear', function() {
|
||||
var enemyHp = enemy.data('hp');
|
||||
var msg = "";
|
||||
if(typeof dmg == 'number') {
|
||||
if(dmg < 0) {
|
||||
msg = _('miss');
|
||||
dmg = 0;
|
||||
} else {
|
||||
msg = '-' + dmg;
|
||||
enemyHp = ((enemyHp - dmg) < 0) ? 0 : (enemyHp - dmg);
|
||||
enemy.data('hp', enemyHp);
|
||||
if(fighter.attr('id') == 'enemy') {
|
||||
World.setHp(enemyHp);
|
||||
}
|
||||
Events.updateFighterDiv(enemy);
|
||||
}
|
||||
} else {
|
||||
if(dmg == 'stun') {
|
||||
msg = _('stunned');
|
||||
enemy.data('stunned', true);
|
||||
Engine.setTimeout(function() {
|
||||
enemy.data('stunned', false);
|
||||
}, Events.STUN_DURATION);
|
||||
}
|
||||
}
|
||||
.animate(end, Events._FIGHT_SPEED * 2, 'linear', function() {
|
||||
|
||||
Events.drawFloatText(msg, $('.hp', enemy));
|
||||
Events.damage(fighter, enemy, dmg);
|
||||
|
||||
$(this).remove();
|
||||
if(typeof callback == 'function') {
|
||||
@@ -423,6 +498,7 @@ var Events = {
|
||||
},
|
||||
|
||||
enemyAttack: function() {
|
||||
// Events.togglePause($('#pause'),'auto');
|
||||
|
||||
var scene = Events.activeEvent().scenes[Events.activeScene];
|
||||
|
||||
@@ -445,16 +521,22 @@ var Events = {
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
|
||||
endFight: function() {
|
||||
Events.fought = true;
|
||||
clearTimeout(Events._enemyAttackTimer);
|
||||
Events.removePause($('#pause'), 'end');
|
||||
},
|
||||
|
||||
winFight: function() {
|
||||
Events.won = true;
|
||||
clearTimeout(Events._enemyAttackTimer);
|
||||
$('#enemy').animate({opacity: 0}, 300, 'linear', function() {
|
||||
Engine.setTimeout(function() {
|
||||
try {
|
||||
Engine.setTimeout(function() {
|
||||
if(Events.fought) {
|
||||
return;
|
||||
}
|
||||
Events.endFight();
|
||||
$('#enemy').animate({opacity: 0}, 300, 'linear', function() {
|
||||
Engine.setTimeout(function() {
|
||||
var scene = Events.activeEvent().scenes[Events.activeScene];
|
||||
var leaveBtn = false;
|
||||
var desc = $('#description', Events.eventPanel());
|
||||
@@ -465,6 +547,7 @@ var Events = {
|
||||
|
||||
var takeETbtn = Events.drawLoot(scene.loot);
|
||||
|
||||
var exitBtns = $('<div>').appendTo(btns).attr('id','exitButtons');
|
||||
if(scene.buttons) {
|
||||
// Draw the buttons
|
||||
leaveBtn = Events.drawButtons(scene);
|
||||
@@ -481,19 +564,28 @@ var Events = {
|
||||
},
|
||||
text: _('leave')
|
||||
});
|
||||
Button.cooldown(leaveBtn.appendTo(btns));
|
||||
Button.cooldown(leaveBtn.appendTo(exitBtns));
|
||||
|
||||
Events.createEatMeatButton(0).appendTo(btns);
|
||||
var healBtns = $('<div>').appendTo(btns).attr('id','healButtons');
|
||||
Events.createEatMeatButton(0).appendTo(healBtns);
|
||||
if((Path.outfit['medicine'] || 0) !== 0) {
|
||||
Events.createUseMedsButton(0).appendTo(btns);
|
||||
Events.createUseMedsButton(0).appendTo(healBtns);
|
||||
}
|
||||
$('<div>').addClass('clear').appendTo(healBtns);
|
||||
Events.setHeal(healBtns);
|
||||
}
|
||||
$('<div>').addClass('clear').appendTo(exitBtns);
|
||||
|
||||
Events.allowLeave(takeETbtn, leaveBtn);
|
||||
} catch(e) {
|
||||
// It is possible to die and win if the timing is perfect. Just let it fail.
|
||||
}
|
||||
}, 1000, true);
|
||||
});
|
||||
}, 1000, true);
|
||||
});
|
||||
}, Events._FIGHT_SPEED);
|
||||
},
|
||||
|
||||
loseFight: function(){
|
||||
Events.endFight();
|
||||
Events.endEvent();
|
||||
World.die();
|
||||
},
|
||||
|
||||
drawDrop:function(btn) {
|
||||
@@ -604,7 +696,9 @@ var Events = {
|
||||
},
|
||||
|
||||
setTakeAll: function(lootButtons){
|
||||
var lootButtons = lootButtons || $('#lootButtons');
|
||||
if(!lootButtons) {
|
||||
lootButtons = $('#lootButtons');
|
||||
}
|
||||
var canTakeSomething = false;
|
||||
var free = Path.getFreeSpace();
|
||||
var takeETbutton = lootButtons.find('#loot_takeEverything');
|
||||
@@ -628,11 +722,7 @@ var Events = {
|
||||
takeAll.children('span').first().text(_('all'));
|
||||
}
|
||||
});
|
||||
if(canTakeSomething){
|
||||
takeETbutton.removeClass('disabled');
|
||||
} else {
|
||||
takeETbutton.addClass('disabled');
|
||||
}
|
||||
Button.setDisabled(takeETbutton, !canTakeSomething);
|
||||
takeETbutton.data('canTakeEverything', (free >= 0) ? true : false);
|
||||
return takeETbutton;
|
||||
},
|
||||
@@ -647,18 +737,16 @@ var Events = {
|
||||
},
|
||||
|
||||
canLeave: function(btn){
|
||||
var basetext = _('take everything');
|
||||
var basetext = (btn.data('canTakeEverything')) ? _('take everything') : _('take all you can');
|
||||
var textbox = btn.children('span');
|
||||
var takeAndLeave = (btn.data('leaveBtn')) ? btn.data('canTakeEverything') : false;
|
||||
var text = _(basetext);
|
||||
if(takeAndLeave){
|
||||
var verb = btn.data('leaveBtn').text() || _('leave');
|
||||
textbox.text( basetext + _(' and ') + verb);
|
||||
btn.data('canLeave', true);
|
||||
Button.cooldown(btn);
|
||||
} else {
|
||||
textbox.text( basetext );
|
||||
btn.data('canLeave', false)
|
||||
text += _(' and ') + btn.data('leaveBtn').text();
|
||||
}
|
||||
textbox.text( text );
|
||||
btn.data('canLeave', takeAndLeave);
|
||||
},
|
||||
|
||||
dropStuff: function(e) {
|
||||
@@ -774,13 +862,16 @@ var Events = {
|
||||
}
|
||||
|
||||
// Draw the buttons
|
||||
var exitBtns = $('<div>').attr('id','exitButtons').appendTo($('#buttons', Events.eventPanel()));
|
||||
leaveBtn = Events.drawButtons(scene);
|
||||
$('<div>').addClass('clear').appendTo(exitBtns);
|
||||
|
||||
|
||||
Events.allowLeave(takeETbtn, leaveBtn);
|
||||
},
|
||||
|
||||
drawButtons: function(scene) {
|
||||
var btns = $('#buttons', Events.eventPanel());
|
||||
var btns = $('#exitButtons', Events.eventPanel());
|
||||
var btnsList = [];
|
||||
for(var id in scene.buttons) {
|
||||
var info = scene.buttons[id];
|
||||
|
||||
@@ -68,7 +68,7 @@ Events.Outside = [
|
||||
{ /* Hut fire */
|
||||
title: _('Fire'),
|
||||
isAvailable: function() {
|
||||
return Engine.activeModule == Outside && $SM.get('game.buildings["hut"]', true) > 0 && $SM.get('game.population', true) > 5;
|
||||
return Engine.activeModule == Outside && $SM.get('game.buildings["hut"]', true) > 0 && $SM.get('game.population', true) > 50;
|
||||
},
|
||||
scenes: {
|
||||
'start': {
|
||||
|
||||
@@ -433,6 +433,9 @@ Events.Room = [
|
||||
'buyMap': {
|
||||
text: _('buy map'),
|
||||
cost: { 'fur': 200, 'scales': 10 },
|
||||
available: function() {
|
||||
return !World.seenAll;
|
||||
},
|
||||
notification: _('the map uncovers a bit of the world'),
|
||||
onChoose: World.applyMap
|
||||
},
|
||||
|
||||
+39
-24
@@ -157,20 +157,19 @@ var Path = {
|
||||
$('.row_val', wRow).text(World.getMaxWater());
|
||||
}
|
||||
|
||||
|
||||
var space = Path.getFreeSpace();
|
||||
var total = 0;
|
||||
var currentBagCapacity = 0;
|
||||
// Add the non-craftables to the craftables
|
||||
var carryable = $.extend({
|
||||
'cured meat': { type: 'tool' },
|
||||
'bullets': { type: 'tool' },
|
||||
'cured meat': { type: 'tool', desc: 'restores '+ World.MEAT_HEAL + ' hp' },
|
||||
'bullets': { type: 'tool', desc: 'use with rifle' },
|
||||
'grenade': {type: 'weapon' },
|
||||
'bolas': {type: 'weapon' },
|
||||
'laser rifle': {type: 'weapon' },
|
||||
'energy cell': {type: 'tool' },
|
||||
'energy cell': {type: 'tool', desc: 'use with laser rifle' },
|
||||
'bayonet': {type: 'weapon' },
|
||||
'charm': {type: 'tool'},
|
||||
'medicine': {type: 'tool'}
|
||||
'medicine': {type: 'tool', desc: 'restores ' + World.MEDS_HEAL + ' hp' }
|
||||
}, Room.Craftables);
|
||||
|
||||
for(var k in carryable) {
|
||||
@@ -179,13 +178,16 @@ var Path = {
|
||||
var have = $SM.get('stores["'+k+'"]');
|
||||
var num = Path.outfit[k];
|
||||
num = typeof num == 'number' ? num : 0;
|
||||
if (have < num) { num = have; }
|
||||
var numAvailable = $SM.get('stores["'+k+'"]', true);
|
||||
if (have !== undefined) {
|
||||
if (have < num) { num = have; }
|
||||
$SM.set(k, num, true);
|
||||
}
|
||||
|
||||
var row = $('div#outfit_row_' + k.replace(' ', '-'), outfit);
|
||||
if((store.type == 'tool' || store.type == 'weapon') && have > 0) {
|
||||
total += num * Path.getWeight(k);
|
||||
currentBagCapacity += num * Path.getWeight(k);
|
||||
if(row.length === 0) {
|
||||
row = Path.createOutfittingRow(k, num, store.name);
|
||||
row = Path.createOutfittingRow(k, num, store, store.name);
|
||||
|
||||
var curPrev = null;
|
||||
outfit.children().each(function(i) {
|
||||
@@ -204,7 +206,7 @@ var Path = {
|
||||
}
|
||||
} else {
|
||||
$('div#' + row.attr('id') + ' > div.row_val > span', outfit).text(num);
|
||||
$('div#' + row.attr('id') + ' .tooltip .numAvailable', outfit).text(numAvailable - num);
|
||||
$('div#' + row.attr('id') + ' .tooltip .numAvailable', outfit).text(have - num);
|
||||
}
|
||||
if(num === 0) {
|
||||
$('.dnBtn', row).addClass('disabled');
|
||||
@@ -213,10 +215,10 @@ var Path = {
|
||||
$('.dnBtn', row).removeClass('disabled');
|
||||
$('.dnManyBtn', row).removeClass('disabled');
|
||||
}
|
||||
if(num >= numAvailable || space < Path.getWeight(k)) {
|
||||
if(num == have || space < Path.getWeight(k)) {
|
||||
$('.upBtn', row).addClass('disabled');
|
||||
$('.upManyBtn', row).addClass('disabled');
|
||||
} else if(space >= Path.getWeight(k)) {
|
||||
} else {
|
||||
$('.upBtn', row).removeClass('disabled');
|
||||
$('.upManyBtn', row).removeClass('disabled');
|
||||
}
|
||||
@@ -224,21 +226,27 @@ var Path = {
|
||||
row.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Path.updateBagSpace(currentBagCapacity);
|
||||
|
||||
},
|
||||
|
||||
updateBagSpace: function(currentBagCapacity) {
|
||||
// Update bagspace
|
||||
$('#bagspace').text(_('free {0}/{1}', Math.floor(Path.getCapacity() - total) , Path.getCapacity()));
|
||||
|
||||
$('#bagspace').text(_('free {0}/{1}', Math.floor(Path.getCapacity() - currentBagCapacity) , Path.getCapacity()));
|
||||
|
||||
if(Path.outfit['cured meat'] > 0) {
|
||||
Button.setDisabled($('#embarkButton'), false);
|
||||
} else {
|
||||
Button.setDisabled($('#embarkButton'), true);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
createOutfittingRow: function(key, num, name) {
|
||||
if(!name) name = _(key);
|
||||
createOutfittingRow: function(key, num, store) {
|
||||
if(!store.name) store.name = _(key);
|
||||
var row = $('<div>').attr('id', 'outfit_row_' + key.replace(' ', '-')).addClass('outfitRow').attr('key',key);
|
||||
$('<div>').addClass('row_key').text(name).appendTo(row);
|
||||
$('<div>').addClass('row_key').text(store.name).appendTo(row);
|
||||
var val = $('<div>').addClass('row_val').appendTo(row);
|
||||
|
||||
$('<span>').text(num).appendTo(val);
|
||||
@@ -250,6 +258,14 @@ var Path = {
|
||||
|
||||
var numAvailable = $SM.get('stores["'+key+'"]', true);
|
||||
var tt = $('<div>').addClass('tooltip bottom right').appendTo(row);
|
||||
|
||||
if(store.type == 'weapon') {
|
||||
$('<div>').addClass('row_key').text(_('damage')).appendTo(tt);
|
||||
$('<div>').addClass('row_val').text(World.getDamage(key)).appendTo(tt);
|
||||
} else if(store.type == 'tool' && store.desc != "undefined") {
|
||||
$('<div>').addClass('row_key').text(store.desc).appendTo(tt);
|
||||
}
|
||||
|
||||
$('<div>').addClass('row_key').text(_('weight')).appendTo(tt);
|
||||
$('<div>').addClass('row_val').text(Path.getWeight(key)).appendTo(tt);
|
||||
$('<div>').addClass('row_key').text(_('available')).appendTo(tt);
|
||||
@@ -266,8 +282,7 @@ var Path = {
|
||||
if(Path.getFreeSpace() >= Path.getWeight(supply) && cur < $SM.get('stores["'+supply+'"]', true)) {
|
||||
var maxExtraByWeight = Math.floor(Path.getFreeSpace() / Path.getWeight(supply));
|
||||
var maxExtraByStore = $SM.get('stores["'+supply+'"]', true) - cur;
|
||||
var maxExtraByBtn = btn.data;
|
||||
Path.outfit[supply] = cur + Math.min(maxExtraByBtn, Math.min(maxExtraByWeight, maxExtraByStore));
|
||||
Path.outfit[supply] = cur + Math.min(btn.data, maxExtraByWeight, maxExtraByStore);
|
||||
$SM.set('outfit['+supply+']', Path.outfit[supply]);
|
||||
Path.updateOutfitting();
|
||||
}
|
||||
@@ -289,7 +304,6 @@ var Path = {
|
||||
Path.setTitle();
|
||||
Path.updateOutfitting();
|
||||
Path.updatePerks(true);
|
||||
$SM.set('outfit', Path.outfit);
|
||||
|
||||
Engine.moveStoresView($('#perks'), transition_diff);
|
||||
},
|
||||
@@ -302,7 +316,6 @@ var Path = {
|
||||
for(var k in Path.outfit) {
|
||||
$SM.add('stores["'+k+'"]', -Path.outfit[k]);
|
||||
}
|
||||
$SM.remove('outfit');
|
||||
World.onArrival();
|
||||
$('#outerSlider').animate({left: '-700px'}, 300);
|
||||
Engine.activeModule = World;
|
||||
@@ -311,7 +324,9 @@ var Path = {
|
||||
handleStateUpdates: function(e){
|
||||
if(e.category == 'character' && e.stateName.indexOf('character.perks') === 0 && Engine.activeModule == Path){
|
||||
Path.updatePerks();
|
||||
};
|
||||
} else if(e.category == 'income' && Engine.activeModule == Path){
|
||||
Path.updateOutfitting();
|
||||
}
|
||||
},
|
||||
|
||||
scrollSidebar: function(direction, reset){
|
||||
|
||||
+12
-6
@@ -750,7 +750,7 @@ var Room = {
|
||||
|
||||
updateStoresView: function() {
|
||||
var stores = $('div#stores');
|
||||
var resources = $('div#resources');
|
||||
var resources = $('div#resources');
|
||||
var special = $('div#special');
|
||||
var weapons = $('div#weapons');
|
||||
var needsAppend = false, rNeedsAppend = false, sNeedsAppend = false, wNeedsAppend = false, newRow = false;
|
||||
@@ -796,6 +796,9 @@ var Room = {
|
||||
case 'upgrade':
|
||||
// Don't display upgrades on the Room screen
|
||||
continue;
|
||||
case 'building':
|
||||
// Don't display buildings either
|
||||
continue;
|
||||
case 'weapon':
|
||||
location = weapons;
|
||||
break;
|
||||
@@ -825,7 +828,7 @@ var Room = {
|
||||
$SM.startThieves();
|
||||
}
|
||||
|
||||
if(row.length === 0 && num > 0) {
|
||||
if(row.length === 0) {
|
||||
row = $('<div>').attr('id', id).addClass('storeRow');
|
||||
$('<div>').addClass('row_key').text(lk).appendTo(row);
|
||||
$('<div>').addClass('row_val').text(Math.floor(num)).appendTo(row);
|
||||
@@ -844,7 +847,7 @@ var Room = {
|
||||
row.insertAfter(location.find('#' + curPrev));
|
||||
}
|
||||
newRow = true;
|
||||
} else if(num>= 0){
|
||||
} else {
|
||||
$('div#' + row.attr('id') + ' > div.row_val', location).text(Math.floor(num));
|
||||
}
|
||||
}
|
||||
@@ -890,7 +893,8 @@ var Room = {
|
||||
$('div.storeRow', stores).each(function(index, el) {
|
||||
el = $(el);
|
||||
$('div.tooltip', el).remove();
|
||||
var tt = $('<div>').addClass('tooltip bottom right');
|
||||
var ttPos = index > 10 ? 'top right' : 'bottom right';
|
||||
var tt = $('<div>').addClass('tooltip ' + ttPos);
|
||||
var storeName = el.attr('id').substring(4).replace('-', ' ');
|
||||
for(var incomeSource in $SM.get('income')) {
|
||||
var income = $SM.get('income["'+incomeSource+'"]');
|
||||
@@ -1114,7 +1118,8 @@ var Room = {
|
||||
cost: good.cost(),
|
||||
text: _(k),
|
||||
click: Room.buy,
|
||||
width: '80px'
|
||||
width: '80px',
|
||||
ttPos: buySection.children().length > 10 ? 'top right' : 'bottom right'
|
||||
}).css('opacity', 0).attr('buildThing', k).appendTo(buySection).animate({opacity:1}, 300, 'linear');
|
||||
}
|
||||
} else {
|
||||
@@ -1149,7 +1154,8 @@ var Room = {
|
||||
},
|
||||
|
||||
compassTooltip: function(direction){
|
||||
var tt = $('<div>').addClass('tooltip bottom right');
|
||||
var ttPos = $('div#resources').children().length > 10 ? 'top right' : 'bottom right';
|
||||
var tt = $('<div>').addClass('tooltip ' + ttPos);
|
||||
$('<div>').addClass('row_key').text(_('the compass points '+ direction)).appendTo(tt);
|
||||
tt.appendTo($('#row_compass'));
|
||||
},
|
||||
|
||||
+20
-1
@@ -445,12 +445,31 @@ var Space = {
|
||||
.animate({opacity:1},1500);
|
||||
$('<br />')
|
||||
.appendTo('.centerCont');
|
||||
$('<br />')
|
||||
.appendTo('.centerCont');
|
||||
$('<span>')
|
||||
.addClass('endGame')
|
||||
.text(_('expanded story. alternate ending. behind the scenes commentary. get the app.'))
|
||||
.appendTo('.centerCont')
|
||||
.animate({opacity:1}, 1500);
|
||||
$('<br />')
|
||||
.appendTo('.centerCont');
|
||||
$('<br />')
|
||||
.appendTo('.centerCont');
|
||||
$('<span>')
|
||||
.addClass('endGame endGameOption')
|
||||
.text(_('app store.'))
|
||||
.text(_('iOS.'))
|
||||
.click(function() { window.open('https://itunes.apple.com/app/apple-store/id736683061?pt=2073437&ct=gameover&mt=8'); })
|
||||
.appendTo('.centerCont')
|
||||
.animate({opacity:1},1500);
|
||||
$('<br />')
|
||||
.appendTo('.centerCont');
|
||||
$('<span>')
|
||||
.addClass('endGame endGameOption')
|
||||
.text(_('android.'))
|
||||
.click(function() { window.open('https://play.google.com/store/apps/details?id=com.yourcompany.adarkroom'); })
|
||||
.appendTo('.centerCont')
|
||||
.animate({opacity:1},1500);
|
||||
Engine.options = {};
|
||||
Engine.deleteSave(true);
|
||||
}
|
||||
|
||||
+36
-3
@@ -162,6 +162,9 @@ var World = {
|
||||
// compass tooltip text
|
||||
Room.compassTooltip(World.dir);
|
||||
|
||||
// Check if everything has been seen
|
||||
World.testMap();
|
||||
|
||||
//subscribe to stateUpdates
|
||||
$.Dispatch('stateUpdate').subscribe(World.handleStateUpdates);
|
||||
},
|
||||
@@ -549,6 +552,10 @@ var World = {
|
||||
return World.state.map[World.curPos[0]][World.curPos[1]];
|
||||
},
|
||||
|
||||
getDamage: function(thing) {
|
||||
return World.Weapons[thing].damage;
|
||||
},
|
||||
|
||||
narrateMove: function(oldTile, newTile) {
|
||||
var msg = null;
|
||||
switch(oldTile) {
|
||||
@@ -617,10 +624,33 @@ var World = {
|
||||
}
|
||||
},
|
||||
|
||||
testMap: function() {
|
||||
if(!World.seenAll) {
|
||||
var dark;
|
||||
var mask = $SM.get('game.world.mask');
|
||||
loop:
|
||||
for(var i = 0; i < mask.length; i++) {
|
||||
for(var j = 0; j < mask[i].length; j++) {
|
||||
if(!mask[i][j]) {
|
||||
dark = true;
|
||||
break loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
World.seenAll = !dark;
|
||||
}
|
||||
},
|
||||
|
||||
applyMap: function() {
|
||||
var x = Math.floor(Math.random() * (World.RADIUS * 2) + 1);
|
||||
var y = Math.floor(Math.random() * (World.RADIUS * 2) + 1);
|
||||
World.uncoverMap(x, y, 5, $SM.get('game.world.mask'));
|
||||
if(!World.seenAll){
|
||||
var x,y,mask = $SM.get('game.world.mask');
|
||||
do {
|
||||
x = Math.floor(Math.random() * (World.RADIUS * 2) + 1);
|
||||
y = Math.floor(Math.random() * (World.RADIUS * 2) + 1);
|
||||
} while (mask[x][y]);
|
||||
World.uncoverMap(x, y, 5, mask);
|
||||
}
|
||||
World.testMap();
|
||||
},
|
||||
|
||||
generateMap: function() {
|
||||
@@ -851,6 +881,7 @@ var World = {
|
||||
Notifications.notify(World, _('the world fades'));
|
||||
World.state = null;
|
||||
Path.outfit = {};
|
||||
$SM.remove('outfit');
|
||||
$('#outerSlider').animate({opacity: '0'}, 600, 'linear', function() {
|
||||
$('#outerSlider').css('left', '0px');
|
||||
$('#locationSlider').css('left', '0px');
|
||||
@@ -872,6 +903,8 @@ var World = {
|
||||
goHome: function() {
|
||||
// Home safe! Commit the changes.
|
||||
$SM.setM('game.world', World.state);
|
||||
World.testMap();
|
||||
|
||||
if(World.state.sulphurmine && $SM.get('game.buildings["sulphur mine"]', true) === 0) {
|
||||
$SM.add('game.buildings["sulphur mine"]', 1);
|
||||
Engine.event('progress', 'sulphur mine');
|
||||
|
||||
Reference in New Issue
Block a user