Added candybox

This commit is contained in:
dginovker 2020-11-29 20:55:42 -05:00
parent 55871d54e9
commit 2e56021b59
111 changed files with 12846 additions and 0 deletions

View File

@ -0,0 +1,60 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! chinese F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>常見問題</h1>
<b>嘿,你只能把糖果吃掉或是丟在地上,太鬼扯了!</b>
耐心的等一會吧!;)
<b>我拿到了5個字母的名字但是我不知道要怎麼讀取我的遊戲進度</b>
當你按下"Save"鈕時,旁邊將會出現一個連結。你可以直接點這個連結來讀取你儲存的遊戲,如果你想的話,你甚至可以把他加到你的最愛中!
如果你沒有記住那個連結但是你有5個字母的名字的話那麼就可以用這個網址
http://candies.aniwey.net/index.php?pass=XXXXX
(把 XXXXX 更換為那5個字母的名字你就能讀取然你儲存的遊戲了
<b>我的棒棒糖農場沒有生棒棒糖給我...上面寫著我應該有 X枝/每天 或 X枝/每小時,但我連半枝都沒拿到</b>
別急,你會拿到你的棒棒糖的,但是這裡的時間是現實世界的天或小時...你應該多種一些棒棒糖讓產出效率達到 X枝/每分鐘,這樣比較有效率!
<b>我找不到青蛙的問題的答案</b>
你可以請你的朋友幫忙!答案通常都很簡單,但是需要腦筋急轉彎一下。
<b>我可以去鐵匠鋪,但是我看到的只有"There's an anvil here",我該怎麼辦?</b>
你還沒有拿到適當的劍...你回答完青蛙所有的問題了嗎?;)
<b>在茅屋裡我不能買那個要價6萬枝棒棒糖的法術</b>
因為她是個女巫,所以只能對魔法劍施法。所以在買這個法術前你得先強化你的劍!
<b>我在物品欄中看得到一個大鍋,可是我卻不能用它?!</b>
這個bug常發生於以Chromium為核心的瀏覽器上如Google Chrome等
即使你沒有看到出現在頁面頂端的大鍋選項,你應該還是可以用鍵盤上的左右鍵來在各選項間切換。
<b>我發現了一個bug</b>
你可以寄信給我 aniwey@gmail.com 。我會很樂意嘗試去修正它!
<b>我有些問題,或有話想說</b>
你可以寄信給我 aniwey@gmail.com 。不要猶豫 ;)
Translated by Sam
</pre>
</body>
</html>

57
site/candybox/cn/faq.html Normal file
View File

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! chinese F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>常见问题</h1>
<b>嘿,你只能把糖果吃掉或扔在地上,太胡扯了!</b>
先耐心等待一会儿! ;)
<b>我拿到了 5 个字符的名字,但我不知道如何读取游戏进度!</b>
点击“保存”按钮后, 旁边会出现一个链接。你只需要点击这个链接就能载入保存的游戏。如果你愿意的话,也可以把这个链接保存到书签中!
如果你没有记住那个链接,但你有 5 个字符的名字,那么就使用这个地址:
http://candies.aniwey.net/index.php?pass=XXXXX
(把 XXXXX 更换为 5 个字符的名字,然后你就能使用已保存的进度继续游戏了)
<b>我的棒棒糖农场生产进度卡住了.. 上面写了我每天或每小时应该能得到X枝棒棒糖但我没有得到任何东西..</b>
别着急, 你会得到棒棒糖的,但这里的时间是现实世界的天或小时...如果你想达到每分钟X枝的棒棒糖产出效率, 你应该种植更多的棒棒糖.
<b>我找不到青蛙的某个问题的答案 :'(</b>
你可以请你的朋友帮忙!答案通常都很简单,但是需要脑筋急转弯一下。
<b>我可以去铁匠铺,但我只看得到“这里有一个铁砧”,我该怎么办?</b>
你还没有拿到适当的剑.. 你回答完青蛙的所有问题了吗? ;)
<b>在茅棚里我买不了那个要价6万枝棒棒糖的法术</b>
因为她是一个女巫,所以只能对魔法剑施法。所以在买这个法术之前你得先强化你的剑!
<b>我在物品栏中可以看到有一只大锅,可是用不了?!</b>
这个bug常常发生在以 Chromium 为核心的浏览器中 (比如 Chrome).
即使你看不到出现在页面顶部的 “大锅” 选项,你应该还是可以使用键盘上的左右箭头来在各选项间切换。
<b>我发现了一个 bug!</b>
你可以给我发电子邮件: aniwey@gmail.com。我会很乐意尝试去修正它
<b>我有些问题,或者有些话想说。</b>
你可以给我发电子邮件: aniwey@gmail.com。不要犹豫;)
</pre>
</body>
</html>

View File

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! Credits</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<h2>Development</h2>
<u>Main Developer</u> : aniwey &lt; aniwey@gmail.com &gt; <br/>
<u>Save/Load Functional</u> : Random Awesome Guy &lt; rand.awesome.guy@gmail.com &gt; <br/>
<u>Current Maintainer</u> : kvaps &lt; kvapss@gmail.com &gt; <br/>
<h2>Ascii art credit</h2>
<b>Quests :</b><br/><br/>
<u>The whale</u> : jgs ( <a href="http://www.retrojunkie.com/asciiart/animals/whales.htm">found here</a> )<br/>
<u>Castle's entrance</u> : part from -Sst- ( <a href="http://www.chris.com/ascii/index.php?art=objects%2Fcastles">found here</a> )<br/>
<u>The dragon</u> : b'ger ( <a href="http://www.chris.com/ascii/index.php?art=creatures%2Fdragons">found here</a> )<br/>
<u>Flowers</u> : jgs ( <a href="http://www.geocities.com/spunk1111/flowers.htm">found here</a> )<br/>
<u>Cactus</u> : jgs ( <a href="http://www.geocities.com/spunk1111/nature.htm">found here</a> )<br/>
<u>Boat</u> : unknown ( <a href="http://www.ascii-art.de/ascii/ab/boat.txt">found here</a> )<br/>
<u>Moat</u> : inspired by jgs ( <a href="http://www.geocities.com/spunk1111/nature.htm#mntanpm">found here</a> )<br/>
<br/>
<b>Cauldron :</b><br/><br/>
<u>Book</u> : boba@wwa.com ( <a href="http://www.chris.com/ascii/index.php?art=objects%2Fbooks">found here</a> )<br/>
<u>Cauldron</u> : jgs ( <a href="http://ascii.co.uk/art/cauldron">found here</a> )<br/>
<br/>
<b>Objects :</b><br/><br/>
<u>Key</u> : jgs ( <a href="http://www.retrojunkie.com/asciiart/building/keys.htm">found here</a> )<br/>
<u>Boots</u> : ajm97 ( <a href="http://www.chris.com/ascii/index.php?art=objects%2Ffootwear">found here</a> )<br/>
<u>Pink ring</u> : inspired by jgs ( <a href="http://www.geocities.com/spunk1111/wedding.htm">found here</a> )<br/>
<u>Strong armour</u> : part from jgs ( <a href="http://www.geocities.com/spunk1111/mythical2.htm">found here</a> )<br/>
<u>Cauldron</u> : part from jgs ( <a href="http://ascii.co.uk/art/cauldron">found here</a> )<br/>
<u>Horns</u> : inspired by rs ( <a href="http://www.ascii-art.de/ascii/uvw/unicorn.txt">found here</a> )<br/>
<u>Swords</u> : inspired by jgs ( <a href="http://www.retrojunkie.com/asciiart/weapons/swords.htm">found here</a> )<br/>
<br/>
<b>Other :</b><br/><br/>
<u>The candy merchant</u> : snd ( <a href="http://ascii.co.uk/art/drwho">found here</a> )<br/>
<u>The lollipops farm</u> : jgs ( <a href="http://www.geocities.com/spunk1111/farm.htm">found here</a> )<br/>
<u>Potions</u> : inspired by lbm &amp; ejm97 ( <a href="http://www.retrojunkie.com/asciiart/containr/bottles.htm">found here</a> )<br/>
<u>Scroll</u> : inspired by hjw ( <a href="http://ascii.co.uk/art/scroll">found here</a> )<br/>
</body>
</html>

56
site/candybox/cz/faq.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! french F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Frequently Asked Questions)</h1>
<b>Hej! Můžu tu jen jíst bonbóny nebo je házet na zem, ta hra je o ničem!</b>
Buď jen trochu trpělivý!
<b>Zapamatoval jsem si své jméno o pěti znacích ale teď nevím, jak hru načíst!</b>
Když klineš na tlačítko "Save", objeví se vedle něj odkaz. Na ten už stačí jenom kliknout a načte se i tvá uložená hra. Pokud chceš, můžeš si link uložit do záložek!
Pokud sis nezapamatoval link, ale své pětiznaké jméno, použij tuto adresu:
http://candies.aniwey.net/index.php?pass=xxxxx
(xxxxx nahraď svým jménem, které se objevilo, když jsi si hru uložil)
<b>Má produkce lízátek na farmě se zastavila... píše se, že bych měl dostávat x/day nebo x/hour, ale nepřibylo mi ani jedno...</b>
Neboj, svá lízátka dostaneš, ale produkce je uváděná v reálném čase... budeš si muset zasadit více lízátek, abys jich dostával několik za minutu!
<b>Nemohu přijít na hádanku, co jsem dostal od žáby :'(</b>
Požádej o pomoc svého kamaráda! Otázky jsou většinou jednoduché, jen trochu zvrácené.
<b>Když jdu do forge, ukážese mi jen "There's an anvil here.", co mám dělat?</b>
Nemáš ještě správný meč... uhádl jsi všechny žábiny otázky?
<b>Nemůžu si u čarodejnice koupit to kouzlo za 60k!</b>
Čarodejnice, ostatně proto, že je čarodejnice, může pracovat pouze s magickými meči. Proto si ho musíš nejdříve očarovat, než si budeš moci koupit tohle kouzlo!
<b>V inventáři mám kotlík, ale nemůžu se do něj dostat?!</b>
Tato chyba se vyskytuje v Chromium prohlížečích (jako například Chrome) a na některých počítačích.
I když nevidíš tlačítko Cauldron nahoře vedle ostatních, stále se do něj můžeš dostat pomocí šipky vpravo na klávesnici.
<b>Našel jsem chybu!!</b>
Můžeš mi napsat na aniwey@gmail.com, rád se ji pokusím opravit!
<b>Mám otázku, postřeh nebo cokoliv jiného.</b>
Můj email je aniwey@gmail.com, tak mi napiš. Nestyď se ;)
</pre>
</body>
</html>

57
site/candybox/da/faq.html Normal file
View File

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! french F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Ofte stillede spørgsmål til "Candy Box!")</h1>
<b>Øhm, du kan kun spise slikket eller smide det på jorden, det' lort?</b>
Vær tålmodig ! ;)
<b>Jeg har mit 5-tegns navn, men jeg ved ikke hvordan jeg henter mit spil !</b>
Når du klikker på "Gem"-knappen, dukker der et link frem ved siden af den. Du skal bare klikke her, så hentes dit gemte spil. Du kan endda gemme linket i dine bogmærker, hvis du vil !
Hvis du ikke har gemt linket men du har dit 5-tegns navn, kan du bruge denne adresse: http://candies.aniwey.net/index.php?pass=xxxxx
(du skal erstatte xxxxx med dit navn som du fik oplyst da du gemte)
<b>Min slikkepindeproduktion på gården er gået i stå… den skriver jeg skal få x/dag eller x/time men jeg får ingenting..</b>
Jamen, du får dine slikkepinde, men det er rigtige timer og dage… du burde plante flere slikkepinde for at opnå en x/min-produktion, det vil være mere effektivt !
<b>Jeg kan ikke finde svaret til et af frøens spørgsmål :'(</b>
Spørg en ven om hjælp ! Svarene er ofte simple, men lidt finurlige.
<b>Jeg kan gå hen til smedjen, men alt jeg kan se er armbolten "There is an anvil here.", hvad kan man her?</b>
Du har ikke det rette sværd endnu.. har du besvaret alle frøens spørgsmål ? ;)
<b>Jeg kan ikke købe 60k fortryllelsen til forbedring af mit sværd hos heksen i hytten !</b>
Heksen, idet hun er en heks, kan kun arbejde på forheksede sværd. Derfor er du nødt til at forhekse dit sværd førend du kan smide dine klejner her.
<b>Jeg kan se keddelen i min rygsæk, men jeg har ikke adgang til den ?!</b>
Denne fejl opstår typisk i Chromium-baserede browsere (fx Chrome).
Selv hvis ikke du kan se keddelfanen øverst på siden, burde du stadig kunne tilgå denne ved at trykke på højretasten på dit tastatur.
<b>Jeg har fundet en fejl !!</b>
Send mig en email på aniwey@gmail.com. Jeg glæder mig til at rette den !
<b>Jeg har et spørgsmål, ris/ros eller noget andet.</b>
Du kan sende mig en mail på aniwey@gmail.com. Bare fyr løs!
</pre>
</body>
</html>

View File

@ -0,0 +1,60 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! french F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Ofte Spurgte Spørgsmål)</h1>
<b>Man kan kun spise slikket, eller smide det på jorden. Det er for dårligt!</b>
Hav tålmodighed! ;)
<b>Jeg har mit 5-tegn kode, men jeg ved ikke hvordan man loader mit spil!</b>
Nåt du klikker på "Save" knappen, fremkommer der et link ved siden af. Du skal bare klikke på linket, og det vil automatisk loade dit spil. Du kan endda bookmarke(bogmærke) linket, hvis du har lyst!
Hvis du ikke gemte linket, men har dit 5-tegn kode, så tag brug af denne addresse:
http://candies.aniwey.net/index.php?pass=xxxxx
(du skal erstatte xxxxx med 5-tegns koden som du fik da du gemte)
<b>Min slikkepind produktion på gården sidder fast.. der står jeg skulle have x/dag eller x/timen men jeg får intet..</b>
Tjoh, du får skam dine slikkepinde, men det er virkelige timer og dage... du bør plante flere slikkepinde for at nå en x/min produktion, der vil være bedre!
<b>Jeg kan ikke finde ud af svaret som frøgen har spurgt mig om :'(</b>
Du kan spørge en ven om hjælp! Svarene er ofte simple, men en lille smule vredet.
<b>Jeg kan gå til "forge", men alt jeg ser er "There's an anvil here.", hvad gør jeg?</b>
Du har ikke det ordentlige sværd endnu.. har du scaret på alle frøgens spørgsmål? ;)
<b>Jeg kan ikke købe den 60k (60.000 slikkepinde) fortryllelse!</b>
Troldkvinden, siden hun er en troldkvinde, kan kun arbejde med magiske sværd. Det er derfor du skal fortrylle dit sværd (hint: med slik) før du kan købe fortryllelsen!
<b>"Jeg kan se gryden i min "Inventory", men jeg har ikke adgang til den?!</b>
Den her fejl ser ud til at forkomme ved Chromium-baserede browsere (Chrome, for eksempel), på nogle computere.
Selv om du ikke kan se "cauldron"-tabben på toppen af siden, skulle du stadig kunne få adgang til den ved at klikke på "højre piletast", på dit tastatur.
<b>Jeg fandt en fejl!!</b>
Du kan emaile mig på aniwey@gmail.com. Jeg skal nok se om jeg kan lave den!
<b>Jeg har et spørgsmål, en bemærkning, eller andet at sige.</b>
Du kan emaile mig på aniwey@gmail.com. Du skal ikke tøve ;)
</pre>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE HTML>
<html>
<head>
<title>German glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
Übersetzung der Brauanleitung:
0: Willkommen bei der Brauanleitung für Anfänger! (zweite Edition)
1: Die vorliegende Ableitung legt ihren Schwerpunkt auf Tränke die folgendes Material benötigen: 'Bonbons' 'Lutscher'
2: Die 3 Regeln des Trankbrauens --- 1. Der Effekt des Tranks hängt von den Zutaten aber auch von den Schritten der Herstellung ab.
3: 2. Du kannst mehre Tränke in einem Durchgang brauen. 3. Es ist möglich Rezepte zu mischen um unterschiedliche Tränke in einem Vorgang zu brauen.
4: Inhaltsverzeichnis --- Seiten 10 bis 20 (gute Tränke) --- 10-13 kleiner Heiltrank
5: 14-17 großer Heiltrank 18-20 Unverwundbarkeitstrank
6: Inhaltsverzeichnis --- Seiten 22 bis 41 (seltsame Tränke) --- 22-27 Schildkrötentrank
7: 28-33 Klon-Trank 34-37 G.M.O.O.H. Trank 38-41 Superman-Trank
8: Inhaltsverzeichnis --- Seiten 42 bis 50 --- Verschiedene magische Onjekte die du im Kessel brauen kannst
9: 42-45 magischer Samen 46-50 magischer Gallert
10: kleiner Heiltrank --- Der kleine Heiltrank ist für Anfänger am einfachsten zu brauen. Während einer Quest stellt er 50 Lebenspunkte wieder her.
11: Für einen Trank brauchst du 100 Bonbons. Tu sie in den Kessel und mixxe sie für etwa 15 Sekunden.
12: Du kannst sie etwas länger oder kürzer mixxen. Es spielt keine Rolle. Wenn du fertig bist fülle das Ergebnis in Flaschen.
13: Glückwunsch! Du hast deinen ersten kleinen Heiltrank hergestellt! Tipp: Nutze 200 Bonbons für 2 Tränke, 300 für 3, usw.
14: großer Heiltrank --- Der große Heiltrank ist ein wenig schwerer herzustellen. Aber er ist deutlich
15: effektiver: Wennd du ihn während einer Quest trinkst, bekommst du 100 Lebenspunkte zurück. Wie stelle ich einen großen Heiltrank her:
16: 1. Werfe 100 Lutscher in deinen Kessel. 2. Beginne kräftig zu rühren. 3. Während du rührst, füge 100 Bonbons hinzu.
17: 4. Rühre für genau 20 Sekunden. 5. Fülle das Ergebnis in Flaschen. 6. Du bist fertig!
18: Unverwundbarkeitstrank --- Dieser Trank ist einfach zu brauchen, benötigt aber eine Menge Bonbons.
19: Das Rezept ist einfach: Werfe 2000 Bonbons in deinen Kessel und rühre bis dir der Arm weh tut. Dieser Trank macht dich
20: für einige Zeit unverwundbar.
21:
22: Schildkrötentrank --- Eine Schildkröte! Eine Schildkröte! Willst du eine Schildkröte werden? Du hast die Möglichkeit mit diesem Trank eine zu werden!
23: Wenn du eine Schildkröte bist, widerstehst du deutlich mehr Schaden. Aber du bist auch langsamer.
24: Kommen wir zur Sache. Werfe 10.000 Lutscher in deinen Kessel. Füge keine Bonbons hinzu oder der Trank misslingt.
25: Nun erhitze alles bis es kocht. Wenn es kocht, stoppe das Erhitze und rühre etwas.
26: Füge nun die selbe Menge an Lutschern hinzu, die du zu Beginn hineingetan hast und bringe es erneut zum Kochen.
27: Stoppe das Erhitzen und fülle alles in Flaschen. Starte eine Quest, Trinke eine Flasche und du bist eine Schildkröte.
28: Klon-Trank --- Es steckt ein wenig Bonbon in jedem von uns. Dies ist bereits ein Naturgesetz.
29: Nun, Bonbon sind ein sehr formbares Material. Diese zwei Fakten bringen uns zum Klon-Trank.
30: Dieser Trank wird deine innere Struktur kopieren und einen Klon fast nur aus Bonbons erstellen. (Und eine wenig Wasser)
31: Schritte: Bringe das Wasser im Kessel zum Kochen. Dann während es koch, füge so viele Bonbons hinzu wie du kannst.
32: Es ist einfach: Je mehr Bonbons du hinzufügst, desto mehr Tränke bekommst to. (Werfe auf jedenfall eine Mindestanzahl hinein)
33:
34: G.M.O.O.H. Trank --- G.M.O.O.H. bedeutet bring mich hier raus. Dieser Trank sollte in kritischen Situationen benutzt werden.
35: er teleportiert dich zu einem anderen Ort. Vielleicht ist es dort sicherer, vielleicht nicht. Wer weiß? Richtig spannend, nicht?
36: Als erstes, werfe 10.000 Bonbons in deinen Kessel. Dann füge 500 Lutscher für jeden trank den du Brauen möchtest hinzu.
37: Ändere niemals die Basis von 10.000 Bonbons. Dann rühre ein wenig und fülle es in Flaschen. Genieße deine Zufallstränke.
38: Superman-Trank --- Dieser Trank verwandelt dich in Superman und stattet dich mit einem fantastischen Cape aus. Eine Leute sagen, dass wäre nutzlos.
39: Wir antworten ihnen: Aber es ist sooooooo cool! Wie auch immer, um einen herzustellen: Werfe 180 Bonbons
40: in deinen Kessel. Rühre sie. Denke an Superman. Danke nochmal nach. Fülle es in Flaschen.
41: Du hast es geschafft!
42: Samen --- Eine alte Legende sagt, das Bäume die Quelle der ganzen Welt sind.
43: Irgendwo im Universum würde ein gigantischer Baum existieren, welcher unbenannt bliebe. Dieser Baum würde seinem Entdecker einen unendlichen Nachschub an Bonbons geben.
44: Wie auch immer, wir haben ihn noch nicht gefunden. Aber es ist möglich eine magischen Samen herzustellen, so das ein resistenter Baum entsteht. Und dies kann sehr nützlich während einer Quest sein.
45: Erhitze das Wasser in deinem Kessel. Werfe 650 hinein, stoppe das Erhitzen und fülle alles in Flaschen. Nun pflanze einige Bäume!
46: Gallert --- Hast du je an eine Bombe gedacht die du während deiner Aufgaben benutzen könntest? Wenn dem so ist, sollte dieser Gallert dich erfreuen!
47: Es ist etwas schwer herzustellen, aber sehr mächtig. Dieser Gallert explodiert bei Kontakt und verursacht
48: hohen Schaden. Es gibt 3 Schritte welche sich auf die 3 Schichten des Gallerts beziehen. Erster Schritt:
49: Nehme 600 Bonbons, koche das Wasser, stoppe das Kochen. Zweiter Schritt: Füge 6.000 Lutscher hinzu, rühre, stoppe das rühren.
50: Dritter Schritt: Wiederhole den ersten Schritt. Beachte, dass du das Gallert nur hinter dir platzieren kannst. Viel Glück bei deinen Aufgaben!
51:
52: Ende --- Danke fürs Lesen! Wir hoffen, dass dieses Buch dir geholfen hat. Verteile es gerne weiter!
53: Co-Autoren: 'Die Hexe' 'Der Nekromant' 'Ein Schuhmacher' 'Ein Mathematiker' '???' Fröhliches Brauen!
</pre>
</body>
</html>

65
site/candybox/de/faq.html Normal file
View File

@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! german F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Häufig gestellte Fragen zu „Candy Box!“)</h1>
<b>Na toll, man kann die Bonbons entweder essen oder sie auf den Boden werfen was für ein dämliches Schrottspiel soll das denn sein?</b>
Hey, nur Geduld! Schon Konfuzius wusste: Mit der Zeit wird aus Gras Milch! ;)
<b>Hilfe! Ich habe auf „Save“ geklickt und ein fünfstelliges Passwort erhalten aber wie lade ich jetzt meinen Spielstand?</b>
Das Laden des Spielstands ist in der Tat etwas suboptimal gelöst der Autor hat für eine mögliche Fortsetzung bereits Besserung gelobt.
Mit folgender Anleitung ist das Speichern und Laden des Spielstands aber kinderleicht:
1. Grundsätzlich gilt wie bei vielen Spielen: Vor dem Beenden des Spiels das Speichern nicht vergessen. Wenn man auf „Save“ klickt, erscheint neben dem „Save“-Button folgender Satz: „You can load your save later here.“ Diesen Satz samt Hyperlink könnt ihr getrost ignorieren.
2. Nachdem ihr auf „Save“ geklickt habt, teilt euch „Candy Box!“ in einem kleinen Bestätigungsfenster einen fünfstelligen Code aus Zahlen und Buchstaben mit, der fortan fest mit eurem Spielstand verknüpft ist und sich auch bei allen künftigen Speichervorgängen nicht ändert. Diesen Code solltet ihr also unbedingt notieren am besten auf einem kleinen Zettel, den ihr fortan geheimnisvoll in eurem Portemonnaie aufbewahren könnt. :D
3. Zum „Laden“ die Seite http://candies.aniwey.net/index.php?pass=xxxxx aufrufen, das xxxxx durch euren persönlichen Code ersetzen und mit der Eingabetaste bestätigen. Die Seite aktualisiert sich und euer zuletzt gespeicherter Spielstand erscheint. Voila!
4. Wenn ihr „Candy Box!“ häufig am selben Computer spielt, könnt ihr nach dem ersten Speichervorgang ein Lesezeichen für die Seite anlegen dadurch erspart man sich das ständige Eintippen des Codes.
<b>Meine Lolli-Produktion auf der Farm ist ins Stocken geraten obwohl das Spiel mir anzeigt, dass ich Summe X an Lollies pro Tag bzw. Stunde erhalten müsste, kommen keine Neuen hinzu. Was mache ich falsch? </b>
Auch hier gilt wieder: Nur Geduld! Das Spiel berechnet sämtliche Erträge in Echtzeit. Tipp: Wer mehr Lollies anbaut, erntet auch mehr. So kann man schnell in Bereiche vorstoßen, in denen man viele Lollies pro Minute erntet.
<b>Hilfe! Der verrückte Frosch im Sumpf hat mir eine Frage gestellt, aber ich komme einfach nicht auf die richtige Antwort! :'(</b>
Bitte einen Freund um Hilfe! Bei manchen Fragen muss man ein wenig um die Ecke denken.
<b>Ich habe den Weg zur Schmiede (“Forge”) gefunden, in der ein Amboss („There's an anvil here.“) steht. Aber was muss ich hier machen?</b>
Anscheinend fehlt dir noch das richtige Schwert… hast Du schon alle Fragen vom verrückten Frosch beantwortet? ;)
<b>Potztausend! Ich habe die Hütte der alten Hexe („The Sorceress' Hut“) gefunden, kann mir aber den Schwertzauber („Sword, better sword!“) nicht kaufen. Warum?</b>
Die Hexe weil sie nun mal eine Hexe ist kann ihre Hexenkunst nur an magischen Schwertern anwenden. Du musst also zuerst einen Weg finden, dein Schwert zur magischen Waffe werden zu lassen. Erst dann kannst Du dein Schwert von der Hexe mit mehr Wirkmacht belegen lassen.
<b>Der Zauberkessel ist in meinem Inventar erschienen, kann aber nicht angewählt werden. Warum nur?</b>
Hierbei handelt es sich um einen Fehler, der bei Nutzer auftreten kann, die „Candy Box“ in einem „Chromium“-basierten Webbrowser wie z.B. „Chrome“ spielen: Normalerweise ist im oberen Bereich der Seite eine Dialogfläche zu sehen, über die man auf den Zauberkessel zugreifen kann ist diese in eurem Browser nicht zu sehen, könnt ihr den Zauberkessel dennoch über die rechte Pfeiltaste eurer Tastatur anwählen. :)
<b>Ich habe einen Bug gefunden was nun?</b>
Einfach eine kurze Mail an aniwey@gmail.com schreiben. Der Macher des Spiels wird versuchen, den Fehler umgehend zu beheben.
<b>Ich habe eine Frage / Anmerkung zu „Candy Box“ oder möchte den Macher des Spiels in meinem Testament erwähnen - was tun?</b>
Nicht zögern - eine kurze Mail an aniwey@gmail.com genügt! ;)
Translation: myzy (spielefloh@gmx.de)
</pre>
</body>
</html>

View File

@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<html>
<head>
<title>German glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Hier eine kleine Übersetzung für alle deutschen Spieler.<br/><br/>
<b>Die wichtigsten Begriffe:</b><br/><br/>
candies: Bonbons<br/>
lollipops: Lutscher<br/>
chocolate bar: Schokoladentafel<br/>
The candy merchant: Der Süssigkeitenhändler<br/>
The lollipop farm: Die Lutscherfarm<br/>
potion: Trank<br/>
scroll: Schriftrolle<br/><br/>
<b>Translation of the frog's questions</b> <a href="swamp.html">here</a><br/><br/>
<b>Translation of inventory's objects</b> <a href="objets.html">here</a><br/><br/>
<b>Translation of potions / scrolls / special objects</b> <a href="potions.html">here</a><br/><br/>
<b>Translation of cauldron's manual</b> <a href="chaudron.html">here</a><br/><br/><br/>
Übersetzt von Zero10
Hebelag also sent a translated glossary, just a little bit too late ! But thanks to him :)
</body>
</html>

View File

@ -0,0 +1,45 @@
<!DOCTYPE HTML>
<html>
<head>
<title>German glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Übersetzung der Objekte:</b><br/><br/>
<u>The lollipop farm's key</u>: Der Schlüssel zur Lutscherfarm<br/>
<u>The seven-league boots</u>: Die Schuhe der sieben Ligen<br/>
<u>The map to the Swampy Swamp</u>: Die Karte zum sumpfigen Sumpf<br/>
<u>The map to the sorceress' hut</u>: Die Karte zur Hexenhütte<br/>
<u>The map to the wishing well</u>: Die Karte zum Wunschbrunnen<br/>
<u>The magician's hat</u>: Der Magierhut<br/>
<u>The pink ring of calmness</u>: Der Ring der Ruhe<br/>
<u>The map to the forge</u>: Die Karte zur Schmiede<br/>
<u>The candies converter</u>: Der Bonbonumwandler<br/>
<u>A plate armour</u>: Eine Plattenrüstung<br/>
<u>A cauldron</u>: Ein Kessel<br/>
<u>A magical horn</u>: Ein magisches Horn<br/>
<u>The horn of plenty</u>: Das Horn des Überflusses<br/>
<u>An old amulet</u>: Ein altes Amulett<br/><br/>
<b>Übersetzung der Beschreibung der Objekte:</b><br/><br/>
<u>The lollipop farm's key</u>: Dieser Schlüssel bringt eine Lutscherfarm zu deiner 'Candy Box'.<br/>
<u>The seven-league boots</u>: Diese Stiefel erhöhen deine Geschwindigkeit in Quests.<br/>
<u>The map to the Swampy Swamp</u>: Der sumpfige Sumpf ist der sumpfigste Sumpf den du jemals gesehen hast.<br/>
<u>The map to the sorceress' hut</u>: In dieser Hütte lebt eine mächtige Hexe. Sie könnte dir helfen...aber nicht umsonst.<br/>
<u>The map to the wishing well</u>: Die Karte zum Wunschbrunnen<br/>
<u>The magician's hat</u>: Das Tragen des Hutes verbessert deine Magie.<br/>
<u>The pink ring of calmness</u>: Dieser pinke Ring hilft dir deine Atmung zu kontrollieren. Du erholst dich schneller nach einer Quest.<br/>
<u>The map to the forge</u>: Ein Amboss kann sehr nützlich sein, wenn du das entsprechende Schwert hast...<br/>
<u>The candies converter</u>: Wenn du ihn aktivierst wandelt er sehr schnell alle Bonbons in Lutscher um. Ein Bonbon gibt einen Lutscher!<br/>
<u>A plate armour</u>: Diese schwere Rüstung beschützt dich vor deinen Feinden. Du nimmst weniger Schaden.<br/>
<u>A cauldron</u>: Dieser Kessel erlaubt es dir, aus herkömmlichen Gegenständen wie Bonbons oder Lutscher, alle erdenklichen Tränke zu brauen.<br/>
<u>A magical horn</u>: Das Horn eines Einhorns. Der Träger regeneriert Lebenspunkte während der Quests.<br/>
<u>The horn of plenty</u>: Dieses Horn verdreifacht dein Lutscher-Einkommen.<br/>
<u>An old amulet</u>: Dieses Horn verdreifacht dein Bonbon-Einkommen.
</body>
</html>

View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>German glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Übersetzung der Tränke und Schriftrollen:</b><br/><br/>
<u>Seed</u>: Samen<br/>
<u>Jelly</u>: Gelee<br/><br/>
<u>Health potion</u>: Heiltrank<br/>
<u>Escape potion</u>: Fluchttrank<br/>
<u>Berserk potion</u>: Berserkertrank<br/><br/>
<u>Major health potion</u>: Großer Heiltrank<br/>
<u>Turtle potion</u>: Schildkrötentrank<br/>
<u>Invurnerability potion</u>: Unverwundbarkeitstrank<br/>
<u>Cloning potion</u>: Klon-Trank<br/>
<u>G.M.O.O.H. potion</u>: Get Me Out Of Here: 'Bring mich hier raus'-Trank<br/>
<u>Superman potion</u>: Superman-Trank<br/><br/>
<u>Fire scroll</u>: Schriftrolle des Feuers<br/>
<u>Acid rain scroll</u>: Schriftrolle des Säureregens<br/>
<u>Teleport scroll</u>: Schriftrolle des Teleports<br/>
<u>Imp invocation scroll</u>: Schriftrolle der Kobold-Beschwörung<br/>
<u>Earthquake scroll</u>: Schriftrolle des Erdbebens<br/><br/><br/>
<b>Übersetzung der Beschreibung der Tränke und Schriftrollen:</b><br/><br/>
<u>Seed</u>: Lässt einen großen Baum vor euch aus dem Boden schießen.<br/>
<u>Jelly</u>: Erzeugt einen Haufen Gelee hinter euch und macht dabei Schaden.<br/><br/>
<u>Health potion</u>: Benutze diesen Heiltrank während deiner Aufträge um eine Lebenspunkte zu regenerieren.<br/>
<u>Escape potion</u>: Dieser Trank erlaubt dir das Fliehen aus einer Quest ohne danach warten zu müssen.<br/>
<u>Berserk potion</u>: Dieser Trank lässt dich zum BERSERKER werden!<br/><br/>
<u>Major health potion</u>: Der große Heiltrank ist doppelt so stark wie der normale.<br/>
<u>Turtle potion</u>: Wenn du einen Schildkrötentrank trinkst wirst du eine Schildkröte. Nachteil: Du läufst langsamer. Vorteil: Du bekommst weniger Schaden.<br/>
<u>Invurnerability potion</u>: Dieser Unverwundbarkeitstrank macht dich für kurze Zeit unverwundbar. Aber du wirst lange Zeit keinen weiteren Trank mehr trinken können!<br/>
<u>Cloning potion</u>: Erstellt einen Klon von euch.<br/>
<u>G.M.O.O.H. potion</u>: Teleportiert euch zu einem zufälligen Ort. Gesammeltes geht dabei verloren.<br/>
<u>Superman potion</u>: Gibt dir eine Cape und lässt dich aussehen wir Superman.<br/><br/>
<u>Fire scroll</u>: Verbrennt einen Feind im Kampf.<br/>
<u>Acid rain scroll</u>: Schädigt jeden, auch dich selbst.<br/>
<u>Teleport scroll</u>: Bringt dich zum Anfang der Quest. Gut zum Erholen.<br/>
<u>Imp invocation scroll</u>: Beschwört einen Kobold vor dir, wenn dort genug Platz ist.<br/>
<u>Earthquake scroll</u>: Schädigt jeden stark, auch dich selbst.<br/><br/>
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>German glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Übersetzung der Frages des Frosches <b>(Die Antworten müssen auf Englisch gegeben werden!)</b>
<br/><br/><br/>
Frage 1: Liebst du Bonbons wirklich?
<br/><br/>
Frage 2: Wenn 'A' 'B' impliziert und 'B' 'C' impliziert, und 'D' impliziert 'A', und E impliziert D, was impliziert A? (a strange Question on german=
<br/><br/>
Frage 3: Man nehme 10 Tage. Wenn ich dir am ersten Tag 1 Bonbon gebe und and jedem darauffolgenden Tag doppelt so viele wie am Tag davor. Wie viele Bonbons bekommst du am 10. Tag?
<br/><br/>
Frage 4: Wenn du dir aussuchen könntest wer du bist, was du wärest, was würdest du gerne sein?
<br/><br/>
Frage 5: Hier ist eine Geschichte: Da sind ein Fuchs, ein Löwe und ein Wolf in einem Mondkrater. Der Fuchs ist kurz davor den Löwen zu beißen, welcher kurz davor ist den Wolf zu beißen, welcher kurz davor ist den Fuchs zu beißen. Es schneit und ein Busch beobachtet die Szene. Wer genießt die Geschichte?
<br/><br/>
Frage 6: Lies dir einfach die Frage genau durch ;)
</body>
</html>

155
site/candybox/design.css Normal file
View File

@ -0,0 +1,155 @@
body {
background-color: #FFFFFF;
overflow-y:scroll;
}
#tabs {
text-align: center;
margin: auto;
padding: 0px;
margin-top: 5px;
margin-bottom:6px;
}
#tabs li {
list-style: none;
display: inline;
}
#tabs li button {
color:#282e32;
padding:8px 14px 8px 14px;
text-decoration:none;
font-size:9px;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-weight:bold;
text-transform:uppercase;
border:1px solid #464c54;
}
#tabs li button.active {
background-color:#f8f2b1;
color:#282e32;
border:1px solid #464c54;
}
#tab_candy_box {
display:block;
}
#tab_candy_box, #tab_quest, #tab_inventory, #tab_cauldron {
border: 2px solid transparent;
}
#tab_quest, #tab_inventory, #tab_cauldron {
display:none;
}
#my_file {
display: none;
}
.clear {
clear:both;
}
button {
border:1px solid #464c54;
margin-bottom:2px;
padding:2px;
}
button:hover {
border:2px solid #464c54;
padding:1px;
}
table {
border-collapse:collapse;
}
table, th, td {
border: 1px solid black;
padding:3px;
}
.tooltip {
text-decoration:none;
}
.tooltip span {
display: none;
white-space: normal; /* To force breaklines in tooltips */
text-align: left;
}
.tooltip:hover {
border: 0;
position: relative;
z-index: 500;
text-decoration: none;
}
.tooltip:hover span {
font-style: normal;
display: block;
position: absolute;
padding: 5px;
margin: 5px;
color: #000;
border: 1px solid #000000;
background: #ffffff;
font-family: monospace;
}
span.tooltip:hover span {
left: 70px;
width: 150px;
}
button.tooltip:hover span {
width: 300px;
}
.toggle {
font-size: 9px;
font-family: monospace;
background-color: white;
position: absolute;
top:5px;
right:5px;
}
#tab_quest_left_panel {
margin-right:15px;
}
#restartButton {
margin-left: 30px;
}
.dark_mode {
background-color: #111;
color: #F1F1F1;
}
.dark_button {
background-color: #171717;
color: #9D9D9D !important;
}
.dark_button:disabled {
background-color: #404040;
}
.dark_link {
color: orange;
}
.dark_link:visited {
color: chocolate;
}
.dark_table {
border-color: #F1F1F1;
}

56
site/candybox/es/faq.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! spanish F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q (Dudas comunes)</h1>
<b>Oye, sólo se puede o comer caramelos o tirarlos al suelo, menuda basura!</b>
Sé paciente ! ;)
<b>Tengo mi nombre de 5 caracteres, pero no sé cómo cargar mi partida !</b>
Cuando haces click al botón "Save", aparece un enlace al lado. Sólo tienes que hacer click sobre ese enlace y cargarás tu partida guardada. Puedes incluso poner ese enlace en Favoritos, si quieres !
Si no guardaste el enlace pero tienes tu palabra de 5 caracteres, tan sólo usa esta dirección:
http://candies.aniwey.net/index.php?pass=xxxxx
(sólo tienes que sustituir xxxxx con la palabra de 5 caracteres que se te dió cuando guardaste partida)
<b>La producción de piruletas en la granja se ha estancado.. Está escrito que sólo puedo tener tantos por día o por hora pero no recibo ninguno..</b>
Bueno, tendrás tus piruletas, pero son horas y días reales... Deberías plantar más priuletas para poder llegar a una producción de tanto por minuto, será más eficiente !
<b>No puedo encontrar la respuesta a la pregunta de la rana </b>
Puedes pedir ayuda a un amigo ! Las respuestas suelen ser simples, pero con algo de doble sentido.
<b>Puedo ir a la forja, pero todo lo que veo es "There's an anvil here." (hay un yunque), qué puedo hacer ?</b>
Aún no tienes la espada apropiada.. Has contestado a todas las preguntas de la rana ?
<b>No puedo comprar el hechizo de 60k de la cabaña !</b>
La hechicera, desde que es hechicera, sólo puede trabajar con espadas mágicas. Por eso primero deberías encantar tu espada antes de poder comprar este hechizo!
<b>Puedo ver el caldero en mi inventorio, pero porque no puedo acceder a él ?!</b>
Este error suele pasas con navegadores basados en Chromium (Chrome, por ejemplo), en algunos ordenadores.
Aún así, aunque no veas la pestaña del caldero, aún puedes acceder a él mediante la flecha derecha de tu teclado.
<b>He encontrado un error !!</b>
Puedes enviármelo por correo a aniwey@gmail.com. Estaré encantado de solucionarlo ! (en inglés)
<b>Tengo una pregunta, crítica, u otra cosa.</b>
Puedes enviarme un correo a aniwey@gmail.com. No te cortes
</pre>
</body>
</html>

View File

@ -0,0 +1,28 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Spanish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Aquí tenéis un pequeño glosario, para nuestros amigos castellanoparlantes anglófobos :-)<br/><br/>
<b>Traducción de las principales palabras del juego:</b><br/><br/>
candies : caramelos<br/>
lollipops : piruletas<br/>
chocolate bar : barrita de chocolate<br/>
The candy merchant : El vendedor de caramelos<br/>
The lollipop farm : La granja de piruletas<br/>
potion : poción<br/>
scroll : pergamino<br/><br/>
<b>Traducción de las preguntas de la rana :</b> <a href="swamp.html">aquí</a><br/><br/>
<b>Traducción de los objetos del inventario :</b> <a href="objets.html">aquí</a> (posibles spoilers)<br/><br/>
<b>Traducción de las pociones / pergaminos / objetos especiales :</b> <a href="potions.html">aquí</a> (posibles spoilers)<br/><br/>
<!--<b>Traducción de las páginas del manual del caldero :</b> <a href="chaudron.html">aquí</a> (posibles spoilers)<br/><br/>-->
</body>
</html>

View File

@ -0,0 +1,46 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Glossaire français</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traducción del nombre de los objetos</b><br/><br/>
<u>The lollipop farm's key</u> : La llave de la granja de piruletas<br/>
<u>The seven-league boots</u> : Las botas de las siete leguas<br/>
<u>The map to the Swampy Swamp</u> : El mapa del pantano pantanoso<br/>
<u>The map to the sorceress' hut</u> : El mapa de la cabaña de la hechicera<br/>
<u>The map to the wishing well</u> : El mapa del pozo de los deseos<br/>
<u>The magician's hat</u> : El sombrero del mago<br/>
<u>The pink ring of calmness</u> : El anillo rosa de la calma<br/>
<u>The map to the forge</u> : El mapa de la forja<br/>
<u>The candies converter</u> : El convertidor de caramelos<br/>
<u>A plate armour</u> : Una armadura de placas<br/>
<u>A cauldron</u> : Un caldero<br/>
<u>A magical horn</u> : Un cuerno mágico<br/>
<u>The horn of plenty</u> : El cuerno de la abundancia<br/>
<u>An old amulet</u> : Un viejo amuleto<br/><br/>
<b>Traducción de las descripciones de los objetos</b><br/><br/>
<u>The lollipop farm's key</u> : Esta llave aporta una granja de piruletas a tu Candy Box<br/>
<u>The seven-league boots</u> : Estas botas aumentan tu velocidad durante las quests.<br/>
<u>The map to the Swampy Swamp</u> : El pantano pantanoso es el más pantanoso de los pantanos que jamás hayas visto.<br/>
<u>The map to the sorceress' hut</u> : En esta cabaña vive una poderosa hechicera ! Ella os podrá ayudar... pero no sin nada a cambio.<br/>
<u>The map to the wishing well</u> : Make a wish, make it so, you may shine, you may glow...<br/>
<u>The magician's hat</u> : Llevar este sombrero mejora tu magia.<br/>
<u>The pink ring of calmness</u> : Este anillo rosa te ayudará a recuperar el aliento. Te recuperarás más rápido después de una quest.<br/>
<u>The map to the forge</u> : Un yunque puede ser muy útil si se tiene la espada apropiada...<br/>
<u>The candies converter</u> : Cuando está activado en tu Candy Box, este extraño objeto convierte rápidamente todo a caramelos. Dale una dulce piruleta !<br/>
<u>A plate armour</u> : La resistencia de esta armadura te protegerá de tus enemigos. Perderás menos puntos de vida.<br/>
<u>A cauldron</u> : Este caldero te permite preparar una gran variedad de pociones, usando materiales en bruto y comunes como los caramelos y las piruletas.<br/>
<u>A magical horn</u> : Este cuerno mágico pertenecía a un unicornio. El que lo lleve recuperará puntos de vida continuamente durante las Quests !<br/>
<u>The horn of plenty</u> : El cuerno de la abundancia, robado a Pluto por el rey de las vacas, que pensaba que era un cuerno de verdad. Este objeto mítico triplicará la producción de la fábrica de piruletas !<br/>
<u>An old amulet</u> : Este antiguo amuleto se encontró en el cuerpo de un guerrero muerto y se conoce que trae la prosperidad a su portador. Triplicará tu producción de caramelos.
</body>
</html>

View File

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Spanish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traducción de los nombres</b><br/><br/>
<u>Seed</u> : semilla<br/>
<u>Jelly</u> : gelatina<br/><br/>
<u>Health potion</u> : poción de vida<br/>
<u>Escape potion</u> : poción de huida<br/>
<u>Berserk potion</u> : poción berserker<br/><br/>
<u>Major health potion</u> : poción de vida mayor<br/>
<u>Turtle potion</u> : poción tortuga<br/>
<u>Invulnerability potion</u> : poción de invulnerabilidad<br/>
<u>Cloning potion</u> : poción de clonar<br/>
<u>G.M.O.O.H. potion</u> : G.M.O.O.H = Get Me Out Of Here = Sácame de aquí<br/><br/>
<u>Fire scroll</u> : Pergamino de fuego<br/>
<u>Acid rain scroll</u> : pergamino de lluvia ácida<br/>
<u>Teleport scroll</u> : pergamino de teletransporte<br/>
<u>Imp invocation scroll</u> : pergamino de invocación de diablillo<br/>
<u>Earthquake scroll</u> : pergamino de terremoto<br/><br/>
<b>Traducción de las descripciones</b><br/><br/>
<u>Seed</u> : Esta semilla es capaz de hacer crecer un árbol-caramelo. El árbol caramelo está hecho de caramelos y cuesta de tumbar. Si usas esta semilla hará crecer un árbol-caramelo enfrente tuyo, siempre que haya espacio.<br/>
<u>Jelly</u> : Esta gelatina preparada por expertos explota en contacto con cualquier cosa que intente traspasarla, causando grandes daños. Si la usas se colocará a tus espaldas.<br/><br/>
<u>Health potion</u> : Usa esta poción durante los combates para recuperar una parte de tu vida !<br/>
<u>Escape potion</u> : Esta poción de escape te hará huir de una quest evitando el tiempo de penalización. Te hará correr muy rápido !<br/>
<u>Berserk potion</u> : Esta poción berserker te transforma en un.. BERSERKEEEER !<br/><br/>
<u>Major health potion</u> : Esta poción de vida mayor tiene el doble de eficacia que la poción de vida normal.<br/>
<u>Turtle potion</u> : Cuando consumas una poción tortuga, te transformarás en una tortuga. Inconveniente: Caminarás más lentamente. Ventaja: Serás mucho más resistente a los ataques enemigos.<br/>
<u>Invulnerability potion</u> : Esta poción te volverá immune al daño durante cierto periodo de tiempo. Pero cuidado, porque te llena el estómago y no podrás tomar ninguna otra poción en un largo periodo de tiempo.<br/>
<u>Cloning potion</u> : Esta poción de clonar, te, esto... clonará. El clon tendrá los mismos puntos de vida que tu al momento de ber la poción, pero no tendrá ni la armadura ni la espada. Luchará usando una "espada clonada", que inflige una cantidad aceptable de daño. Le clon se posicionará enfrente tuyo, si hay sitio.<br/>
<u>G.M.O.O.H. potion</u> : Esta poción "G.M.O.O.H" os teletransportará. La destinación no es siquiera previsible.<br/><br/>
<u>Fire scroll</u> : Este pergamino quemará a tus enemigos si lo usas durante el combate.<br/>
<u>Acid rain scroll</u> : Este pergamino de lluvia ácida causará daño a todo el mundo en la zona (incluido tú).<br/>
<u>Teleport scroll</u> : Este pergamino de teletransporta te devolverá al principio de una Quest. Útil para descansar un poco !<br/>
<u>Imp invocation scroll</u> : Este pergamino de invocación de diablillo invocará uno delante tuyo, si hay espacio, para que luche a tu lado.<br/>
<u>Earthquake scroll</u> : Este pergamino de terremeto infligirá una gran cantidad de daño a todo el mundo en un área.<br/><br/>
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Spanish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Traducción de las preguntas de la rana <b>(atención, aunque estén traducidas aquí al español, se deben responder en inglés !!)</b>
<br/><br/><br/>
Pregunta 1: Te gustan _de verdad_ los caramelos?
<br/><br/>
Pregunta 2 : Si A implica B y B implica C y D implica A y E implica D, entonces qué implica A ?
<br/><br/>
Pregunta 3 : Considera 10 días. Si te doy un caramelo el primer día, y cada día siguiente yo te doy el doble de caramelos que el día anterior, cuantos caramelos te voy a dar el décimo día?
<br/><br/>
Pregunta 4 : Si pudieras ser lo que quisieras, qué serias?
<br/><br/>
Pregunta 5 : Sea la historia : Hay un zorro, un león y un lobo en un cráter lunar. el zorro le muerde la cola al león, el león le muerde la cola al lobo, y el lobo le muerde la cola al zorro. Nieva y un arbusto observa la escena. ¿Quién se divierte en esta historia?
<br/><br/>
Pregunta 6 : sin traducir por razones oscuras.
</body>
</html>

View File

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<title>F.A.Q. (Preguntas frecuentes)</title>
</head>
<body>
<pre>
<h1>F.A.Q. (Preguntas Frecuentes)</h1>
<b>Hey, sólo puedo comer caramelos o arrojarlos al suelo. ¡Que porquería!</b>
Tan sólo ten paciencia. ;)
<b>Tengo mi nombre de 5 caracteres pero no se como cargar mi juego.</b>
Cuando clickeas el botón "Save" (Guardar), aparece un link al costado. Tan sólo debes hacer un clic en ese link para cargar tu partida guardada. Incluso puedes guardar el link en tus favoritos si lo deseas.
Si no has guardado el link pero recuerdas tu nombre de 5 caracteres puedes ingresar a esta dirección:
http://candies.aniwey.net/index.php?pass=xxxxx
(Simplemente reemplaza las xxxxx con tu nombre de 5 caracteres que te muestra la pantalla cuando guardas la partida)
<b>Mi producción de chupetines no avanza... dice que debería obtener x chupetines por día o por hora pero no recibo ninguno. </b>
Tendrás tus chupetines, pero ten en cuenta que son horas y días reales... intenta plantar más chupetines para elevar la producción a x chupetines por minuto. ¡De esa manera será mas eficiente!
<b>No puedo dar con la respuesta de una pregunta de la rana :'(</b>
Puedes pedirle ayuda a un amigo. Las respuestas suelen ser simples pero un poco engañosas.
<b>Puedo ir a la fragua (Forge) pero todo lo que veo es "hay un yunque aquí" (There's an anvil here) ¿Qué puedo hacer?</b>
Aun no tienes la espada apropiada... ¿Has contestado a todas las preguntas de la rana? ;)
<b>No puedo comprar el hechizo de 60h en la cabaña (hut).</b>
La hechicera, debido a si naturaleza, solo puede trabajar espadas mágicas. Por esto es que deberías encantar tu espada antes de poder comprar este hechizo.
<b>Puedo ver el caldero (cauldron) en mi inventario pero no puedo acceder a él.</b>
Esto parece ser una falla que ocurre en los navegadores basados en Chromium (Chrome, por ejemplo) en algunas computadoras.
Sin embargo, aunque no veas la pestaña del caldero en la parte de arriba de la página, puedes acceder a él utilizando la flecha derecha del teclado.
<b>Descubrí un error!</b>
Envíame un mail en Inglés a aniwey@gmail.com y estaré encantado de solucionarlo.
<b>Tengo una pregunta, un comentario o cualquier otra cosa.</b>
Puedes enviarme un mail a aniwey@gmail.com. ¡No lo dudes! ;)
</pre>
</body>
</html>

56
site/candybox/faq.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! F.A.Q.</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body>
<pre>
<h1>F.A.Q. (Frequently Asked Questions)</h1>
<b>Hey, you can only eat candies or throw them on the ground, that's bullshit !</b>
Just be patient ! ;)
<b>I have my 5 characters name, but I don't know how to load my game !</b>
When you click the "Save" button, a link appears next to it. You just have to click this link, and you will load your saved game. You can even put the link in your bookmarks, if you want !
If you didn't keep the link but you have your 5 characters name, then just use this address :
http://candies.aniwey.net/index.php?pass=xxxxx
(you have to replace xxxxx with the 5 characters name which was given to you when you saved)
<b>My lollipop production at the farm is stuck.. it's written I should have x/day or x/hour but I don't get anything..</b>
Well, you'll get your lollipops, but it's real hours and real days... you should plant more lollipops to reach an x/min production, it will be more efficient !
<b>I can't find the answer to a question of the frog :'(</b>
You can ask a friend for help ! Answers are often simple, but a little bit twisted.
<b>I can go to the forge, but all I see is "There's an anvil here.", when can I do ?</b>
You don't have the appropriate sword yet.. did you answer all the frog's questions ? ;)
<b>I can't buy the 60k spell at the hut !</b>
The sorceress, since she is a sorceress, can only work on magic swords. This is why you have to enchant your sword before being able to buy this spell !
<b>I can see the cauldron in my inventory, but I can't have access to it ?!</b>
This bug seems to happen on Chromium-based browsers (Chrome, for example), on some computers.
Even if you don't see the cauldron tab on top of the page, you should still be able to access it with the 'right' key of your keyboard.
<b>I found a bug !!</b>
You can email me at aniwey@gmail.com. I'll be pleased to try to correct it !
<b>I have a question, a remark, or anything else.</b>
You can email me at aniwey@gmail.com. Don't hesitate ;)
</pre>
</body>
</html>

BIN
site/candybox/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

56
site/candybox/fi/faq.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Usein Kysytyt Kysymykset)</h1>
<b>Voin vain syödä karkkeja tai heittää ne maahan, surkeata!</b>
Ole kärsivällinen! ;)
<b>Minä muistan tallennukseni 5-merkkisen nimen, mutten tiedä kuinka ladata peli uudestaan!</b>
Kun painat "Save"-painiketta, sen viereen ilmestyy linkki. Sinun pitää vain klikata tätä linkkiä ladataksesi pelisi uudestaan. Voit jopa pistää sen kirjanmerkkeihisi jos haluat!
Jos muistat 5-merkkisen tallennuksesi nimen, käytä tätä osoitetta:
http://candies.aniwey.net/index.php?pass=xxxxx
(sinun pitää korvata xxxxx sinun 5-merkkisellä tallenuksen nimellä, jonka sait kun tallensit pelisi)
<b>Minun tikkari farmini on jumittunut.. Sen mukaan minun pitäisi saada x/päivä tai x/tunti, mutta en saa mitään..</b>
No, sinä saat tikkarisi mutta ne ovat oikeita tunteja ja päiviä.. Sinun pitää istuttaa lisää tikkareita saavuttaaksesi x/min-tuotanto määrän, se on paljon tehokkaampaa!
<b>En keksi vastausta Sammakon kysymykseen :'(</b>
Voit kysyä kaveriltasi apua! Vastaukset ovat yleensä helppoja, mutta hieman kieroutuneita.
<b>Voin mennä takomoon, mutta kaikki mitä näen on "There's an anvil here.", milloin voin käyttää takomoa?</b>
Sinulla ei ole sopivaa miekkaa vielä... Vastasitko Sammakon kysymyksiin? ;)
<b>En voi ostaa 60 tonnin loitsua majasta.</b>
Velhotar, koska hän on velhotar, voi ainoastaan työstää taika-miekkoja. TÄmän takia sinun pitää lumota miekkasi ennen kuin voit ostaa tämän loitsun!
<b>Näen padan repussani, mutten voi käyttää sitä?!</b>
Tämä bugi näyttää tapahtuvan Chromium-pohjaisilla selaimilla (Esimerkiksi Chrome) joillain tietokoneilla.
Vaikka et näkisikään pataa sivun yläosassa, sinun pitäisi olla mahdollista käyttää sitä painamalla oikealle-nuolinäppäintä.
<b>Löysin bugin!!</b>
Voit lähettää minulle viestiä osoitteeseen aniwey@gmail.com. Yritän mielelläni korjata sen!
<b>Minulla on kysymys, kommentti, tai jotain muuta asiaa.</b>
Voit lähettää minulle viestiä osoitteeseen aniwey@gmail.com. Älä ujostele!
</pre>
</body>
</html>

View File

@ -0,0 +1,129 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Glossaire français</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
0: Bienvenue au manuel de préparation de potions pour débutants ! (seconde édition)
1: Ce manuel se concentrera sur des potions nécessitant des matériaux tels que : - candies - lollipops
2: Les trois règles de la préparation de potions 1. L'effet d'une potion dépend tant de son contenu que des étapes suivies pour la préparer
3: 2. Vous pouvez faire plusieurs potions d'un coup. 3. Il est possible de mixer les instructions pour préparer des potions de différents types d'un coup.
4: Sommaire Pages 10 à 20 (potions bénéfiques), 10-13 : potion de vie mineure
5: 14-17 : potion de vie majeure / 18-20 potion d'invulnérabilité
6: Sommaire Pages 22 à 41 (potions étranges), 22-27 : potion tortue
7: 28-33 : potions de clonage / 34-37 G.M.O.O.H. potion / 38-41 potion superman
8: Sommaire Pages 42 à 50 (objets magiques variés que vous pouvez préparer dans votre chaudron)
9: 42-45 : graine magique / 46-50 gelée magique
10: Potion de vie mineure. La potion de vie mineure est la plus simple à préparer pour les débutants. Utilisée durant une quête, elle vous fera récupérer
11: 50 points de vie. Pour une potion, il vous faudra 100 candies. Mettez-les dans le chaudron et mélangez pendant environ 15 seconds.
12: Vous pouvez mélanger un peu plus ou moins longtemps, ça n'a pas beaucoup d'importance. Quand vous avez terminé, mettez le résultat en bouteille.
13: Bravo ! Vous venez de réaliser votre première potion de vie mineure ! N.B. : utilisez 200 candies pour 2 potions, 300 pour 3, etc.
14: Potion de vie majeure. La potion de vie majeure est un peu plus dure à faire que la précédente. Mais elle est aussi bien plus
15: efficace : en la buvant pendant une quête, vous gagnerez 100 points de vie au lieu de 50. Comment faire une potion de vie majeure :
16: 1. Mettez 100 lollipops dans votre chaudron. 2. Commencez à mixer avec entrain. 3. Pendant que vous mixez, ajoutez 100 candies dans le
17: chaudron. 4. Arrêtez de mixer au bout de 20 secondes. 5. Mettez le résultat en bouteille. 6. C'est terminé !
18: Potion d'invulnérabilité. Cette potion, bien qu'étant assez facile à préparer, demande beaucoup de candies.
19: La recette est simple : mettez 2000 candies dans votre chaudron et mélangez-les jusqu'à ce que vos bras vous fassent mal. Cette potion vous rendra
20: invincible pendant un certain temps, durant lequel vous ne sentirez plus aucune douleur ni dommage physique.
21:
22: Potion tortue. Une tortue ! Une tortue ! Voulez-vous devenir une tortue ? Vous pourrez en devenir un grâce à cette fantastique
23: potion ! Quand vous serez une tortue, vous résisterez beaucoup plus aux dommages physiques. Mais vous serez plus lent, aussi.
24: Maintenant, mettons-nous au travail. Mettez 10000 lollipops dans votre chaudron. N'ajoutez aucun candy, ou la potion sera un échec.
25: Maintenant, faites chauffer le chaudron jusqu'à ce que la préparation bout. Quand elle bout, arrêtez de chauffer et mélangez un petit peu.
26: Ajoutez la même quantité de lollipops que ce que vous avez ajouté au début, et, une fois de plus, chauffez tout jusqu'à ce que ça bout.
27: Arrêtez de bouillir, mettez en bouteille, commencez une quête, buvez la potion, vous êtes une tortue !
28: Potion de clonage. Il y a un peu de candies en chacun de nous. C'est en fait une loi physique de notre univers.
29: Or, les candies sont un matériau très malléable. Ces deux faits nous ont mené à la réalisation de cette potion de clonage.
30: Cette potion copiera votre structure interne de fera un clone de vous presque entièrement fait de candies (il y a un peu d'eau aussi).
31: Étapes : Brûlez l'eau de votre chaudron. Ensuite, pendant que ça brûle, ajoutez autant de candies que vous le pouvez.
32: C'est simple : plus vous ajoutez de candies, plus vous obtiendrez de potions ! (soyez sûrs d'en mettre une quantitéminimale, quand même).
33: [Illustration] "Le cercle de la vie"
34: G.M.O.O.H. potion. G.M.O.O.H. signifie "sors moi de là". Cette potion est faite pour être utilisée dans les situations critiques.
35: Elle vous téléportera dans un autre endroit. Peut-être sera-t-il plus sûr, peut-être pas. Qui sait ? Excitant, n'est-ce-pas ?
36: D'abord, mettez dans votre chaudron une quantité de base de 10000 candies. Ensuite, ajoutez 500 lollipops pour chaque potion que vous voulez préparer.
37: Ne changez jamais la quantité de base de 10000 candies. Ensuite, mélangez un petit peu et mettez en bouteille. Appréciez vos potions random !
38: Superman potion. Cette potion vous transformera en Superman, vous dotant d'une fantastique cape. Certaines personnes disent que ce n'est pas
39: utile. Nous leur répondons que c'est juste trop cooool ! Quoi qu'il en soit, pour en faire une : mettez 180 candies
40: dans votre chaudron. Mélangez-les. Pensez à Superman. Pensez-y encore une fois. Mettez en bouteille.
41: C'est bon !
42: Graine (seed). Selon une ancienne légende, les arbres seraient la source de tous les candies du monde entier. Il existerait
43: quelque part dans l'univers un arbre géant, qui reste sans nom. Cet arbre doterait son découvreur d'un flux infini de candies.
44: Quoi qu'il en soit, nous ne l'avons pas encore trouvé, mais nous avons trouvé qu'il était possible de créer une graine magique capable de faire pousser un arbre résistant. Et ça peut être utile pendant une quête.
45: Faites chauffer l'eau dans votre chaudron. Ajoutez 650 candies, arrêtez de bouillir et mettez la graine en bouteille. Maintenant, plantez des abres !
46: Gelée. Avez-vous jamais pensez à une sorte de bombe que vous pourriez utiliser pendant une quête ? Si oui, cette gelée magique devrait
47: vous plaire ! Elle est un peu dure à préparer, mais plutôt puissante. Cette gelée explose au contacte et cause
48: des dommages importants. Il y a trois étapes de préparation qui correspondent aux trois couches de la gelée. Première étape :
49. Mettez 600 candies, faites bouillir l'eau, arrêtez de bouillir. Deuxième étape : Ajoutez 6000 lollipops, mélangez, arrêtez de mélanger.
50: Troisième étape : répétez la première étape. Notez que vous pouvez seulement placer la gelée derrière vous. Bonne chance pour vos quêtes !
51:
52: ~ Fin ~ Merci d'avoir lu ! Nous espérons que ce livre vous a aidé. Libre à vous de le redistribuer !
53: Co-auteurs :
- la sorcière
- la nécromancienne
- un cordonnier
- un mathématicien
- ???
Happy brewing ~
</pre>
</body>
</html>

57
site/candybox/fr/faq.html Normal file
View File

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! french F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Questions Fréquemment Posées)</h1>
<b>Hé, tout ce qu'on peut faire c'est manger des bonbons ou les jeter par terre, c'est nul !</b>
Soyez juste un peu patient ! ;)
<b>J'ai mon code de 5 caractères, mais je ne sais pas comment charger ma partie !</b>
Quand vous cliquez sur le bouton "Save", un lien apparait juste à côté. Il vous suffit de cliquer sur ce lien et vous chargerez votre partie. Vous pouvez même mettre le lien dans vos favoris, si vous voulez !
Si vous n'avez pas conservé le lien mais que vous avez votre code de 5 caractères, alors utilisez simplement cette adresse :
http://candies.aniwey.net/index.php?pass=xxxxx
(vous devez remplacer xxxxx par le code de 5 caractères qui vous a été donné quand vous avez sauvegardé)
<b>Ma production de sucettes à la ferme est bloquée.. c'est marqué que je devrais en avoir x/day ou x/hour mais je ne reçois rien..</b>
Vous recevrez vos sucettes, mais ce sont de vraies heures et de vrais jours... vous devriez planter plus de sucettes pour atteindre une production de x/min, ce sera plus efficace !
<b>Je n'arrive pas à trouver une réponse à une des questions de la grenouille :'(</b>
Vous pouvez demander de l'aide à un ami ! Les réponses sont souvent simples, mais un peu tordues.
<b>Je peux aller à la forge, mais tout ce que je vois c'est "There's an anvil here.", qu'est-ce que je peux faire ?</b>
Vous n'avez pas encore la bonne épée... avez-vous répondu à toutes les questions de la grenouille ? ;)
<b>Je ne peux pas acheter le sort à 60k à la hutte !</b>
La sorcière, étant une sorcière, peut uniquement travailler avec des épées magiques. C'est pourquoi vous devez enchanter votre épée avant de pouvoir utiliser ce sort !
<b>Je peux voir le chaudron dans mon inventaire, mais je n'y ai pas accès ?!</b>
Ce bug semble se produire sur les navigateurs basés sur Chromium (comme Chrome, par exemple), sur certains ordinateurs.
Même si vous ne voyez pas l'onglet du chaudron en haut de la page, vous devriez tout de même être capable d'y accéder avec la flèche droite de votre clavier.
<b>J'ai trouvé un bug !!</b>
Vous pouvez m'envoyer un mail à aniwey@gmail.com. Je serai ravi d'essayer de le corriger !
<b>J'ai une question, une remarque, ou quoi que ce soit d'autre.</b>
Vous pouvez m'envoyer un mail à aniwey@gmail.com. N'hésitez pas ;)
</pre>
</body>
</html>

View File

@ -0,0 +1,44 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Glossaire français</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traduction des noms des objets</b><br/><br/>
<u>The lollipop farm's key</u> : la clé de la ferme à sucettes<br/>
<u>The seven-league boots</u> : les bottes de sept lieues<br/>
<u>The map to the Swampy Swamp</u> : la carte vers le marais marécageux<br/>
<u>The map to the sorceress' hut</u> : la carte vers la hutte de la sorcière<br/>
<u>The map to the wishing well</u> : la carte vers le puits aux souhaits<br/>
<u>The magician's hat</u> : le chapeau du magicien<br/>
<u>The pink ring of calmness</u> : l'anneau rose du calme<br/>
<u>The map to the forge</u> : la carte vers la forge<br/>
<u>The candies converter</u> : le convertisseur de bonbons<br/>
<u>A plate armour</u> : une armure en plates<br/>
<u>A cauldron</u> : un chaudron<br/>
<u>A magical horn</u> : une corne magique<br/>
<u>The horn of plenty</u> : la corne d'abondance<br/>
<u>An old amulet</u> : une vieille amulette<br/><br/>
<b>Traduction des descriptions des objets</b><br/><br/>
<u>The lollipop farm's key</u> : Cette clé apporte une ferme à sucettes à votre candy box.<br/>
<u>The seven-league boots</u> : Ces bottes augmentent votre vitesse durant les quêtes.<br/>
<u>The map to the Swampy Swamp</u> : Le marais marécageux est le plus marécageux marais que vous ayez jamais vu.<br/>
<u>The map to the sorceress' hut</u> : Dans cette hutte vit une puissance sorcière ! Elle pourrait vous aider... mais pas sans contrepartie.<br/>
<u>The map to the wishing well</u> : Make a wish, make it so, you may shine, you may glow...<br/>
<u>The magician's hat</u> : Porter ce chapeau améliore votre magie.<br/>
<u>The pink ring of calmness</u> : Cet anneau rose vous aidera à contrôler votre souffle. Vous récupérerez plus vite après une quête.<br/>
<u>The map to the forge</u> : Une enclume peut être très utile, si vous avez l'épée appropriée...<br/>
<u>The candies converter</u> : Lorsqu'activé dans votre candy box, cet objet surprenant convertit rapidement tous vos bonbons en sucettes. Un bonbon donne une sucette !<br/>
<u>A plate armour</u> : Cette armure résistante vous protège de vos ennemis. Vous perdrez moins de points de vie.<br/>
<u>A cauldron</u> : Ce chaudron vous permet de préparer une grande variété de potions, en utilisant des matériaux bruts et communs comme les bonbons ou les sucettes.<br/>
<u>A magical horn</u> : Cette corne magique appartenait à une licorne. La transporter va vous faire regagner des points de vie en continu pendant les quêtes !<br/>
<u>The horn of plenty</u> : La corne d'abondance, volée à Ploutos par le roi des vaches, qui crut que c'était une vraie corne. Cet objet mythique va multiplier par trois la production de la ferme à sucettes !<br/>
<u>An old amulet</u> : Cette vieille amulette, trouvée sur le corps d'un guerrier mort, est connue pour apporter la prospérité à son possesseur. Elle va multiplier par trois votre production de bonbons.
</body>
</html>

View File

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Glossaire francophone</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traduction des noms</b><br/><br/>
<u>Seed</u> : graine<br/>
<u>Jelly</u> : gelée<br/><br/>
<u>Health potion</u> : potion de vie<br/>
<u>Escape potion</u> : potion de fuite<br/>
<u>Berserk potion</u> : potion du barbare<br/><br/>
<u>Major health potion</u> : potion de vie majeure<br/>
<u>Turtle potion</u> : potion de tortue<br/>
<u>Invulnerability potion</u> : potion d'invulnérabilité<br/>
<u>Cloning potion</u> : potion de clonage<br/>
<u>G.M.O.O.H. potion</u> : G.M.O.O.H = Get Me Out Of Here = sors moi de là<br/><br/>
<u>Fire scroll</u> : parchemin de feu<br/>
<u>Acid rain scroll</u> : parchemin de pluie acide<br/>
<u>Teleport scroll</u> : parchemin de téléportation<br/>
<u>Imp invocation scroll</u> : parchemin d'invocation de diablotin<br/>
<u>Earthquake scroll</u> : parchemin de tremblement de terre<br/><br/>
<b>Traduction des descriptions</b><br/><br/>
<u>Seed</u> : Cette graine est capable de faire pousser un arbre-bonbon. L'arbre-bonbon est fait en bonbons, et il est long à abattre. Utilisez la graine fera pousser un arbre devant vous, si il y a assez de place.<br/>
<u>Jelly</u> : Cette gelée savamment préparée explose au contact de n'importe quoi essayant de la traverser, infligeant de nombreux dommages. L'utiliser la placera derrière vous.<br/><br/>
<u>Health potion</u> : Utilisez cette potion de vie mineure pendant les combats pour regagner une partie de vos points de vie !<br/>
<u>Escape potion</u> : Cette potion de fuite permet de s'échapper d'une quête en évitant tout temps de pénalité. Elle vous faire courir vraiment vraiment vite !<br/>
<u>Berserk potion</u> : Cette berserk potion vous transforme en un.. BERSERKEEEER !<br/><br/>
<u>Major health potion</u> : Cette potion de vie majeure est deux fois plus efficace que la mineure.<br/>
<u>Turtle potion</u> : Quand vous buvez une potion de tortue, vous devenez une tortue. Inconvénient : vous marchez plus lentement. Avantage : vous êtes bien plus résistant face aux attaques de vos ennemis.<br/>
<u>Invulnerability potion</u> : Cette potion d'invulnérabilité vous rendra invincible pour un certain temps, mais elle remplit votre estomac : vous ne pourrez par boire d'autre potion longtemps après l'avoir utilsiée.<br/>
<u>Cloning potion</u> : Cette potion de clonage, va, eh bien... vous cloner. Votre clone aura les même points de vie que vous au moment où vous buvez la potion, mais n'aura ni votre armure ni votre épée. Il se battra en utilisant une "épée clonée", qui inflige une quantité acceptable de dommages. Le clone sera placé devant vous, si il y a assez de place.<br/>
<u>G.M.O.O.H. potion</u> : Cette "G.M.O.O.H" potion vous téléportera ailleurs. La destination n'est absolument pas prédictible.<br/><br/>
<u>Fire scroll</u> : Ce puissant parchemin de feu brûlera votre ennemi si vous l'utilisez durant un combat.<br/>
<u>Acid rain scroll</u> : Ce parchemin de pluie acide causera instantanément des dommages à tout le monde dans une zone (y compris vous).<br/>
<u>Teleport scroll</u> : Ce parchemin de téléportation vous fera revenir au début d'une quête. Utile pour se reposer un peu !<br/>
<u>Imp invocation scroll</u> : Ce parchemin d'invocation de diablotin va, si il y a assez d'espace, invoquer devant vous un diablotin qui se battra à vos côtés.<br/>
<u>Earthquake scroll</u> : Ce parchemin de tremblement de terre infligera une grande quantité de dommages à tout le monde dans une zone.<br/><br/>
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Glossaire français</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Traduction des questions de la grenouille <b>(attention meme si c'est traduit en francais ici il faut repondre en anglais !!)</b>
<br/><br/><br/>
Question 1 : aimez-vous _vraiment_ les bonbons?
<br/><br/>
Question 2 : Si A implique B et B implique C et D implique A et E implique D, alors A implique quoi ?
<br/><br/>
Question 3 : Considère 10 jours. Si je te donne 1 bonbon le premier jour, et que chaque autre jour je te donne deux fois plus de bonbons que le jour précédent, combien de bonbons vais-je te donner le 10ème jour ?
<br/><br/>
Question 4 : Si tu pouvais être ce que tu voulais, que serais tu ?
<br/><br/>
Question 5 : Voici une histoire : il y a un renard, un lion et un loup dans un cratère lunaire. Le renard s'apprête à mordre le lion, qui s'apprête à mordre le loup, qui s'apprête à mordre le renard. Il neige et un buisson observe la scène. Qui s'amuse de cette histoire ?
<br/><br/>
Question 6 : non traduite pour des raisons obscures.
</body>
</html>

47
site/candybox/hr/faq.html Normal file
View File

@ -0,0 +1,47 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! croatian F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>---FAQ---</h1>
<b>Hej, možeš ili pojesti slatkiše, ili ih baciti na pod, koje sranje!</b>
Strpite se malo!
<b>Dobio sam svoje ime od 5 znakova, ali ne znam kako učitati igru!</b>
Kada kliknete na "Save" ("spremi") pored gumba pojavi se link. Samo kliknite na taj link i Vaša spremljena igrica će se učitati. Link možete čak i spremiti u svoje oznake (Bookmarks)!
Ukoliko niste zadržali link ali znate svoje ime od 5 znakova, možete iskoristiti ovu adresu:
http://candies.aniwey.net/index.php?pass=xxxxx
(Morate zamijeniti 'xxxxx' s imenom od 5 znakova koje vam je bilo dano kad ste spremili igricu)
<b>Proizvodnja lizalica na farmi mi se zablokirala. Piše da bih trebao imati x broj lizalica po danu/satu (x/day ili x/hour), ali ništa ne dobivam.</b>
Dobit ćete lizalice, ali radi se o stvarnim satima i danima. Mogli biste posaditi još lizalica kako biste postigli proizvodnju po minuti (x/min), bit će mnogo efikasnije!
<b>Ne mogu pronaći odgovor na žablje pitanje</b>
Možete pitati prijatelja za pomoć! Pitanja su često vrlo jednostavna, ali imaju kvaku.
<b>Mogu otići u željezaru, ali sve što piše je "Ovdje je nakovanj." ("There is an anvil here."), kada ju mogu iskoristiti?</b>
Još nemate prikladan mač. Jeste li odgovorili na sva žablja pitanja?
<b>Ne mogu kupiti čaroliju od 60 000 u kolibi!</b>
Čarobnica, s obzirom na to da je čarobnica, može samo raditi na čarobnim mačevima. Zato morate začarobirati svoj mač prije nego što budete mogli kupiti ovu čaroliju!
<b>Mogu vidjeti kotao u svom inventaru, ali nemam pristup!</b>
Na nekim računalima se ova greška pojavljuje kada se koriste preglednici zasnivani na Chromiumu (npr. Chrome).
Čak i ako ne vidite tab za kotao na vrhu stranice, možete imati pristup ako stisnete desnu strelicu na tipkovnici!
<b>Našao sam grešku!</b>
Možete mi poslati mejl na aniwey@gmail.com. Bit će mi drago popraviti ju!
<b>Imam pitanje, komentar, ili bilo što drugo.</b>
Možete mi poslati mejl na aniwey@gmail.com. Ne morate oklijevati
</pre>
</body>
</html>

View File

@ -0,0 +1,24 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Croatian glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Imamo i pojmovnik za naše prijatelje anglofobe<br/><br/>
<b>Ključni pojmovi igre:</b><br/><br/>
Candies: slatkiši<br/>
Lollipops: lizalice<br/>
Chocolate bar: čokolada<br/>
The candy merchant: Trgovac slatkiša<br/>
The lollipop farm: Farma lizalica<br/>
Potion: čarobni napitak<br/>
Scroll: svitak
</body>
</html>

57
site/candybox/hu/faq.html Normal file
View File

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! hungarian F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>GY.I.K (Gyakran Ismételt Kérdések)</h1>
<b>Hékás, itt vagy csak cukorkát (candy) tudok enni, vagy le tudom őket dobni a földre, ez így hülyeség!</b>
Csak légy türelmes! ;)
<b>Megvan az 5 karakteres nevem, de nem tudom, hogy hogyan tölthetem vissza a játékomat!</b>
Mikor rányomsz a "Mentés" ("Save") gombra, egy link jelenik meg mellette. Rá kell kattintanod erre a linkre, és így töltheted be az elmentett játékodat. A linket akár a könyvjelzőid közé is berakhatod, ha akarod!
Ha nem tartottad meg a linket, de megvan az 5 karaktered, akkor csak használd ezt a címet:
http://candies.aniwey.net/index.php?pass=xxxxx
(Ki kell cserélned az xxxxx részt azzal az 5 karakterrel amit mentéskor kaptál)
<b>A nyalóka (lollipop) termelésem leállt a farmon... azt írja, hogy elméletileg x darabot kapok naponként vagy óránként (x/day vagy x/hour), de semmit se kapok...</b>
Nos, meg fogod kapni a nyalókáidat, de ezek igazi órákba és napokba telnek... Több nyalókát kellene ültetned, hogy elérd az x/perc (x/min) termelést, úgy sokkal hatékonyabb lesz!
<b>Nem tudom a béka egyik kérdésére a választ :'(</b>
Kérdezd meg az egyik barátodat, hogy segítsen! A válaszok általában egyszerűek, de egy kissé kacifántosak.
<b>El tudok menni a kohóhoz (forge), de csak annyit látok ott, hogy "Van itt egy üllő.", mikor használhatom ?</b>
Még nem rendelkezel a megfelelő karddal... helyesen válaszoltál a béka összes kérdésére? ;)
<b>Nem tudom megvenni a 60k-s varázslatot a kunyhónál!</b>
A boszorkány, mivel ő egy boszorkány, csak varázs kardokkal foglalkozik. Pont ezért kell elbűvölnöd a kardodat mielőtt meg tudnád vásárolni ezt a varázslatot!
<b>Látom az üstöt a tárgyaim között, de miért nem tudom használni?!</b>
Ez egy hiba, ami úgy tűnik, hogy Chromium-alapú böngészőkkel történik meg bizonyos gépeken (ilyen például a Chrome is).
Még akkor is ha nem látod az üst (cauldron) fület az oldal tetején, attól még elérheted úgy, hogy megnyomod a "jobbra" gombot a billentyűzeteden.
<b>Találtam egy hibát!!!</b>
Küldj egy e-mailt az aniwey@gmail.com címre. Örömmel próbálom majd kijavítani!
<b>Lenne egy kérdésem, megjegyzésem, vagy egyebem.</b>
Küldj egy e-mailt az aniwey@gmail.com címre. Ne tétovázz ;)
</pre>
</body>
</html>

55
site/candybox/id/faq.html Normal file
View File

@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! indonesian F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q (Bahasa Indonesia)</h1>
<b>Hei, kamu hanya bisa makan atau membuang permen ke lantai, omong kosong!</b>
Sabar saja ! ;)
<b>Saya mendapat nama 5 karakter saya, tapi saya tidak tahu bagaimana membukanya !</b>
Ketika kamu klik tombol "Save", sebuah link muncul di sebelahnya. Kamu cukup klik link ini, dan kamu akan membuka permainan yang disimpan tadi. Kamu bahkan dapat menaruh link tersebut ke dalam bookmark browser-mu kalau kamu mau !
http://candies.aniwey.net/index.php?pass=xxxxx
(kamu harus mengganti xxxxx dengan nama 5 karakter yang diberikan ketika kamu menyimpan)
<b>Produksi lolipop saya berhenti.. tertulis saya seharusnya punya x/hari atau x/jam tapi saya tidak mendapat apa-apa..</b>
Mmm, kamu akan dapat lolipop, tapi itu jam dan hari sungguhan... kamu harus menanam lebih banyak lolipop untuk mencapai produksi x/menit, akan lebih efisien !
<b>Saya tidak bisa menemukan jawaban dari satu pertanyaan dari sang kodok :'(</b>
Kamu bisa tanya teman untuk menolong ! Jawaban-jawabannya biasanya sederhana, tapi sedikit aneh.
<b>Saya bisa ke pandai besi (forge), tapi yang saya lihat cuma "Ada sebuah landasan besi (anvil) di sini.", apa yang bisa saya lakukan ?</b>
Kamu belum mendapatkan pedang yang cocok.. apakah kamu menjawab semua pertanyaan sang kodok ? ;)
<b>Saya tidak bisa membeli sihir 60k di pondok !</b>
Sang penyihir, karena dia seorang penyihir, hanya bisa bekerja pada pedang sihir. Oleh sebab itu kamu harus mengguna-gunai pedangmu sebelum dapat membeli sihir ini !
<b>Saya dapat melihat ketel (cauldron) di daftar barang saya, tapi saya tidak punya akses ke sana ?!</b>
Kesalahan ini sepertinya terjadi pada browser yang berbasiskan Chromium (Chrome, contohnya), pada beberapa komputer.
Bahkan jika kamu tidak melihat tab Cauldron di atas halaman, kamu seharusnya masih bisa mengaksesnya dengan tombol 'kanan' di keyboard-mu.
<b>Saya menemukan sebuah kesalahan !!</b>
Kamu dapat meng-email saya ke aniwey@gmail.com. Saya akan senang untuk mencoba memperbaikinya !
<b>Saya punya sebuah pertanyaan, komentar, atau sesuatu yang lain.</b>
Kamu dapat meng-email saya ke aniwey@gmail.com. Jangan ragu-ragu ;)
</pre>
</body>
</html>

551
site/candybox/index.html Normal file
View File

@ -0,0 +1,551 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
<head>
<link rel="icon" type="image/vnd.microsoft.icon" href="favicon.ico">
<link rel="SHORTCUT ICON" href="favicon.ico">
<link rel="apple-touch-icon" href="../../site/img/2009img/mobile.png">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="en,English">
<meta name="keywords" content="RSPS, Open Source, 2009scape, Osrs, Oldschool Runescape, Runescape, zezima">
<meta name="description"
content="2009scape - Bringing back the game from 2009 you love. Multiplayer and Free forever.">
<meta name="title" content="2009scape - Free Forever">
<title>2009scape - Free Forever</title>
<style type="text/css">
/*\*/
@import url(../../site/css/default/global-30.css);
/**/
</style>
<script type="text/javascript">
function h(o) { o.getElementsByTagName('span')[0].className = 'shimHover'; }
function u(o) { o.getElementsByTagName('span')[0].className = 'shim'; }
document.domain = '';
</script>
<link rel="alternate" type="application/rss+xml" title="RuneScape - Latest news" href="http://0.0.0.0:4000/rss.php">
<title>Candy box !</title>
<meta name="title" content="Candy Box">
<meta name="keywords"
content="Candy,Box,Candybox,Original,Legacy,1,Candybox 1,Candy Box 1,Candy Box,game,ascii,save">
<meta name="author" content="aniwey">
<meta name="description"
content="Candy Box is a role-playing browser video game featuring ASCII art. It was developed by indie game developer aniwey.">
<meta http-equiv="Cache-control" content="no-cache">
<link rel="shortcut icon" href="./favicon.ico" /> <!-- Favicon by HacksawUnit \o/ Thanks to him ! -->
<!-- Jquery and tab stuff -->
<script type="text/javascript" src="./libs/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="./scripts/tabs.js"></script>
<!-- Modifications to some base js libs -->
<script type="text/javascript" src="./scripts/base_js_additions.js"></script>
<!-- Some tools which won't need any other js file -->
<script type="text/javascript" src="./scripts/htmlInteraction.js"></script>
<script type="text/javascript" src="./scripts/random.js"></script>
<script type="text/javascript" src="./scripts/speech.js"></script>
<!-- Buttons -->
<script type="text/javascript" src="./scripts/buttons.js"></script>
<!-- Shop -->
<script type="text/javascript" src="./scripts/shop.js"></script>
<script type="text/javascript" src="./scripts/sword.js"></script>
<!-- Inventory -->
<script type="text/javascript" src="./scripts/inventory.js"></script>
<!-- Quest stuff -->
<script type="text/javascript" src="./scripts/damage.js"></script>
<script type="text/javascript" src="./scripts/drops.js"></script>
<script type="text/javascript" src="./scripts/land.js"></script>
<script type="text/javascript" src="./scripts/quest.js"></script>
<script type="text/javascript" src="./scripts/status.js"></script>
<script type="text/javascript" src="./scripts/potions.js"></script>
<!-- The lands -->
<script type="text/javascript" src="./scripts/peacefulForest.js"></script>
<script type="text/javascript" src="./scripts/mountGoblin.js"></script>
<script type="text/javascript" src="./scripts/underwaterCave.js"></script>
<script type="text/javascript" src="./scripts/castleEntrance.js"></script>
<script type="text/javascript" src="./scripts/castleStairs.js"></script>
<script type="text/javascript" src="./scripts/castleKeep.js"></script>
<script type="text/javascript" src="./scripts/cowLevel.js"></script>
<script type="text/javascript" src="./scripts/sea.js"></script>
<script type="text/javascript" src="./scripts/desert.js"></script>
<script type="text/javascript" src="./scripts/hell.js"></script>
<script type="text/javascript" src="./scripts/yourself.js"></script>
<script type="text/javascript" src="./scripts/chuckNorris.js"></script>
<script type="text/javascript" src="./scripts/developperGarden.js"></script>
<script type="text/javascript" src="./scripts/developperMoat.js"></script>
<script type="text/javascript" src="./scripts/developperComputer.js"></script>
<!-- Data stuff : candies, lollipops.. -->
<script type="text/javascript" src="./scripts/candies.js"></script>
<script type="text/javascript" src="./scripts/chocolateBars.js"></script>
<script type="text/javascript" src="./scripts/lollipops.js"></script>
<!-- Objects stuff -->
<!-- The objects.js file -->
<script type="text/javascript" src="./scripts/objects.js"></script>
<!-- Files used by objects -->
<script type="text/javascript" src="./scripts/spells.js"></script>
<!-- Objects themselves -->
<script type="text/javascript" src="./scripts/farm.js"></script>
<script type="text/javascript" src="./scripts/hut.js"></script>
<script type="text/javascript" src="./scripts/swamp.js"></script>
<script type="text/javascript" src="./scripts/wishingWell.js"></script>
<script type="text/javascript" src="./scripts/forge.js"></script>
<script type="text/javascript" src="./scripts/candiesConverter.js"></script>
<script type="text/javascript" src="./scripts/cauldron.js"></script>
<script type="text/javascript" src="./scripts/computer.js"></script>
<script type="text/javascript" src="./scripts/save.js"></script>
<!-- Additions for Save/Load Mod -->
<script type="text/javascript" src="./libs/modernizr.js"></script>
<script type="text/javascript" src="./scripts/load.js"></script>
<script type="text/javascript" src="./scripts/cookie.js"></script>
<!-- Additions for Dark Mode -->
<script type="text/javascript" src="./scripts/darkMode.js"></script>
<!-- The main js file which calls the other ones -->
<script type="text/javascript" src="./scripts/main.js"></script>
<!-- Design -->
<link rel="stylesheet" type="text/css" href="./design.css" />
</head>
<body id="navhome" class="bodyBackground">
<div id="scroll" style="text-align: left;">
<div id="head" style="text-align: center;">
<div id="headBg">
<div id="headOrangeTop"></div>
<img src="../../site/img/2009img/main/skins/default/head_image.jpg" alt="RuneScape" />
<div id="headImage"><a href="" id="logo_select"></a>
<div id="player_no">You're playing <a href="https://github.com/candybox2/candybox"
style="color: #bf8aba">Candybox</a> on 2009scape.org!</div>
</div>
<div id="menubox">
<ul id="menus">
<li class="top">
<a href="../index.html">Click here to return to 2009scape.org</a>
</li>
</ul>
<br class="clear" />
</div>
<div id="headOrangeBottom"></div>
</div>
</div>
<div id="content">
<button class="toggle" style="visibility:hidden"></button>
<!-- ******** -->
<!-- TAB LIST -->
<!-- ******** -->
<div id="tabBar" style="display:none">
<ul id="tabs">
<li><button class="tab-0" tab="tab_candy_box">Candy box</button></li>
<li><button class="tab-1" tab="tab_inventory">Inventory</button></li>
<li><button class="tab-2" tab="tab_quest">Quest</button></li>
<li><button class="tab-3" tab="tab_cauldron">Cauldron</button></li>
<li><button class="tab-4" tab="tab_computer">Computer</button></li>
</ul>
</div>
<!-- *************** -->
<!-- TAB : CANDY BOX -->
<!-- *************** -->
<div id="tab_candy_box">
<!-- *************************************** -->
<!-- Right panel : the farm and some objects -->
<div style="float:right">
<span>
<span id="farm" style="visibility:hidden">
<pre>
_.-^-._ .'''.
.-' _ '-. | <span id="farm_big_lollipop" onclick="farm.clickedOnTheBigLollipop();"> ~ </span> |
/ |_| \ '._.'
/ \ |
/| _____ |\ |
| |==|==| | |
|---|---|---| |--|--| | |
|---|---|---| |==|==| | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The lollipop farm
</pre>
<span id="lp_planted"></span><br />
<span id="lp_production"></span><br />
<span id="lp_buttons"></span><br /><br />
</span>
</span>
<br class="clear" />
</div>
<!-- ***************************************** -->
<!-- Left panel : some stats, and the merchant -->
<div>
<button class="home_button" id="saveButton" onclick="save();"
style="visibility:visible">Save</button><span id="save"></span>
<button class="home_button" id="loadButton" onclick="load();"
style="visibility:visible">Load</button><span id="load"></span>
<button class="home_button" id="restartButton" onclick="restart();"
style="visibility:visible">Restart Game</button><span id="restart">
<button class="home_button dark_mode_toggle" id="darkModeToggle" onclick="darkMode.toggle();"
style="visibility:hidden">Dark Mode:
OFF</button></span><br /><br />
<input type="file" style="display:none" id="my_file" name="file" enctype="multipart/form-data" />
<span id="candies"></span><br />
<pre id="candies_converter" style="display:none">
|
| <input type="checkbox" id="candies_converter_checkbox" onclick="candiesConverter.checkedValueChange();"/> Candies converter
V
</pre>
<span id="lollipops" style="visibility:hidden"></span><br />
<span id="chocolate_bars" style="visibility:hidden"></span><br /><br />
<span id="candies_eaten" style="visibility:hidden"></span><br />
<span id="candies_thrown" style="visibility:hidden"></span><br />
<br />
<button class="home_button" id="eat" onclick="candies.eat();" style="visibility:hidden">Eat all
the candies</button><br />
<button class="home_button" id="throw_10" onclick="candies.throw10Candies();"
style="visibility:hidden">Throw 10 candies on the ground</button><br />
<button class="home_button" id="encrust" onclick="sword.encrust();" style="visibility:hidden;">Use
101 candies to encrust your diamond sword and make it even
more powerful</button>
<button class="home_button" id="polish" onclick="sword.polish();"
style="visibility:hidden; display:none">Use 30 lollipops to make lollipop powder to polish
your candy sword and make it awesome (and more powerful)</button>
<button class="home_button" id="coat" onclick="sword.coat();"
style="visibility:hidden; display:none">Use 1 chocolate bar to coat your sword with melted
chocolate and make it incredibly powerful</button><br />
<pre id="shop" style="visibility:hidden; float:left;">
<span onclick="shop.clickedOnHat();">.---.</span>
<span onclick="shop.clickedOnHat();">| '.| __</span>
<span onclick="shop.clickedOnHat();">| ___.--' )</span>
_.-'_` _%%%_/
.-'%%% a: a %%%
%% L %%_
_%\'-' | /-.__
.-' / )--' #/ '\
/' / /---'( : \
/ | /( /|##| \ |
/ ||# | / | /| \ \
| ||##| I \/ | | _|
| ||: | o |#| | / |
| || / I |:/ / |/
| || | o / / /
| \| | I |. / /
\ /|##| o |.| /
\/ \::|/\_ / ---'|
The candy merchant
<span id="merchant_speech"></span>
</pre>
<div style="float:left;">
<pre id="lollipop" style="visibility:hidden">
_
(<span onclick="shop.clickedOnLollipop();">_</span>) <button class="home_button" id="buy_1_lollipop" onclick="lollipops.buy1();"></button>
| <span id="lollipops_stock_shortage" style="visibility:hidden">Stock shortage : we will be restocked soon.</span>
| <button class="home_button" id="buy_10_lollipops" onclick="lollipops.buy10();" style="visibility:hidden"></button>
|</pre>
<pre id="sword_with_button"></pre>
<pre id="products_after_swords" style="visibility:hidden; display:none">
{}
)( <button class="home_button" id="buy_health_potion" onclick="potions.buyPotion(potions.list.health, 600);">Buy a health potion (600 candies)</button>
(__)
()
|| <button class="home_button" id="buy_escape_potion" onclick="potions.buyPotion(potions.list.escape, 150);">Buy an escape potion (150 candies)</button>
(__)
,------.
(_\ \
| c |
| n | <button class="home_button" id="buy_scroll" onclick="potions.buyScroll(400);">Buy a scroll (400 candies)</button>
_| d |
(_/______/
</pre>
</div>
</div> <!-- Close the left panel -->
<br class="clear" />
</div> <!-- Close the candy box tab -->
<!-- *************** -->
<!-- TAB : INVENTORY -->
<!-- *************** -->
<div id="tab_inventory">
<div style="float:left">
<table style="margin-right:10px;">
<tr>
<td rowspan="4">
<pre id="sword_without_button"></pre>
</td>
<td><span class="tooltip" id="inventory_key"></span></td>
<td><span class="tooltip" id="inventory_plate_armour"></span></td>
<td><span class="tooltip" id="inventory_horn_of_plenty"></td>
<td><span class="tooltip" id="inventory_swamp_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_boots"></span></td>
<td><span class="tooltip" id="inventory_candies_converter"></span></td>
<td><span class="tooltip" id="inventory_old_amulet"></td>
<td><span class="tooltip" id="inventory_hut_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_magician_hat"></span></td>
<td><span class="tooltip" id="inventory_cauldron"></span></td>
<td><span class="tooltip" id="inventory_won1"></span></td>
<td><span class="tooltip" id="inventory_forge_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_pink_ring"></span></td>
<td><span class="tooltip" id="inventory_magical_horn"></span></td>
<td><span class="tooltip" id="inventory_won2"></span></td>
<td><span class="tooltip" id="inventory_well_map"></span></td>
</tr>
</table>
<span id="hardmode" style="visibility:hidden">If you want more challenge,<br />you can play the
hard mode <a
href="https://web.archive.org/web/20170610192852/http://candies-hardmode.aniwey.net/">here
!</a></span>
</div>
<div style="overflow:auto">
<span id="map_system">
<button class="home_button" id="go_to_swamp" onclick="swamp.enter();"
style="visibility:hidden; display:none">Go to the Swampy Swamp</button>
<button class="home_button" id="go_to_hut" onclick="hut.enter();"
style="visibility:hidden; display:none">Go to the sorceress' hut</button>
<button class="home_button" id="go_to_forge" onclick="forge.enter();"
style="visibility:hidden; display:none">Go to the forge</button>
<button class="home_button" id="go_to_well" onclick="wishingWell.enter();"
style="visibility:hidden; display:none">Go to the wishing well</button>
<pre id="map"></pre>
</span>
</div>
<br class="clear" />
</div> <!-- End of the inventory tab -->
<!-- *********** -->
<!-- TAB : QUEST -->
<!-- *********** -->
<div id="tab_quest">
<div id="tab_quest_left_panel" style="float:left">
<pre id="quest_potions"></pre>
<pre id="quest_potions_countdowns" style="visibility:hidden"></pre>
</div>
<div style="float:left">
<span id="sword"></span><br />
<span id="mood"></span><br />
<span id="quest_form">
<button class="home_button" id="quest_button" onclick="quest.begin(true);">Go for an epic
quest!</button> <!-- "Go for an epic quest !" -->
Destination : <select id="quest_destination"></select> <!-- Quest list -->
</span>
<pre id="quest" style="visibility:hidden;"></pre>
</div>
<br class="clear" />
</div> <!-- Close the quest tab -->
<!-- ************** -->
<!-- TAB : CAULDRON -->
<!-- ************** -->
<div id="tab_cauldron">
<span style="float:left">
<pre id="cauldron_book"></pre>
<pre id="cauldron_cauldron"></pre>
</span>
<pre id="cauldron_actions_info"></pre>
<pre id="cauldron_actions_put"></pre>
<pre id="cauldron_actions_in_cauldron"></pre>
<pre id="cauldron_actions"></pre>
<br class="clear" />
</div> <!-- End of the cauldron tab -->
<!-- ************** -->
<!-- TAB : COMPUTER -->
<!-- ************** -->
<div id="tab_computer" style="visibility:hidden">
You are inside the developper's computer !<br />
This computer is able to affect the game in the strangest ways...<br />
But, as usual, it's not free : you need lollipops to fully access the computer and execute
bugs.<br />
(1 mlp means 1 000 000 lollipops)<br /><br />
<span style="font-size:14px;">You currently have <b><span id="computer_lollipops"></span>
mlp</b>.</span><br /><br />
<button id="computer_bug_1" onclick="computer.bug1();" style="visibility:hidden">Make a level 1 bug
(1 mlp)</button> <span id="computer_comment_1"></span><br />
<button id="computer_bug_2" onclick="computer.bug2();" style="visibility:hidden">Make a level 2 bug
(10 mlp)</button> <span id="computer_comment_2"></span><br />
<button id="computer_bug_3" onclick="computer.bug3();" style="visibility:hidden">Make a level 3 bug
(100 mlp)</button> <span id="computer_comment_3"></span><br />
<button id="computer_bug_4" onclick="computer.bug4();" style="visibility:hidden">Make a level 4 bug
(1000 mlp)</button> <span id="computer_comment_4"></span><br />
<button id="computer_bug_5" onclick="computer.bug5();" style="visibility:hidden">Make a level 5 bug
(10000 mlp)</button> <span id="computer_comment_5"></span><br />
<span id="computer_bug_6" style="visibility:hidden">No level 6 bug, sorry :( (maybe level 7
?)</span><br />
<span id="computer_bug_7" style="visibility:hidden">Crap, no level 7 bug either :s Don't give up
!</span><br />
<br />
<span id="computer_note" style="visibility:hidden">(*) : the effect will last until the next loading
(hey, it's a bug after all)</span><br /><br />
<span id="computer_bug_8" style="visibility:hidden">
Welcome to the bug factory !<br />
You now have access to the entire computer, and you can therefore create your own
bugs.<br /><br />
Randomize...<br />
<button onclick="candies.setNbrOwned(random.pure());">candies</button>
<button onclick="candies.setNbrThrown(random.pure());">candies thrown</button>
<button onclick="candies.setNbrEaten(random.pure());">candies eaten</button>
<button onclick="candies.setCandiesPerSecond(random.pure());">candies per second</button><br />
<button onclick="lollipops.setNbrOwned(random.pure());">lollipops</button>
<button onclick="farm.setLollipopsPlanted(random.pure());">lollipops planted</button><br />
<button onclick="chocolateBars.setNbrOwned(random.pure());">chocolate bars</button><br />
<button
onclick="potions.setPotionNbrOwned(potions.list.impInvocationScroll, random.pure()); potions.setPotionNbrOwned(potions.list.earthquakeScroll, random.pure()); potions.setPotionNbrOwned(potions.list.teleportScroll, random.pure()); potions.setPotionNbrOwned(potions.list.fireScroll, random.pure()); potions.setPotionNbrOwned(potions.list.acidRainScroll, random.pure()); potions.updateOnPage();">scrolls</button>
<button
onclick="potions.setPotionNbrOwned(potions.list.gmooh, random.pure()); potions.setPotionNbrOwned(potions.list.superman, random.pure()); potions.setPotionNbrOwned(potions.list.cloning, random.pure()); potions.setPotionNbrOwned(potions.list.seed, random.pure()); potions.setPotionNbrOwned(potions.list.jelly, random.pure()); potions.setPotionNbrOwned(potions.list.turtle, random.pure()); potions.setPotionNbrOwned(potions.list.invulnerability, random.pure()); potions.setPotionNbrOwned(potions.list.majorHealth, random.pure()); potions.setPotionNbrOwned(potions.list.berserk, random.pure()); potions.setPotionNbrOwned(potions.list.escape, random.pure()); potions.setPotionNbrOwned(potions.list.health, random.pure()); potions.updateOnPage();">potions</button>
<button
onclick="sword.setName(random.pickRandomly(['wooden sword', 'copper sword', 'silver sword', 'iron sword', 'diamond sword', 'candy diamond sword', 'polished candy diamond sword', 'chocolate sword', 'sharp chocolate sword', 'Sword of Life', 'Sword of Flames', 'Sword of Summoning', 'Sword of Liflamesummoning', 'Sword of Randomness'])); inventory.updateOnPage();">sword</button>
<button onclick="sword.setSpecialPower(random.pure()); inventory.updateOnPage();">sword
power</button><br /><br />
Add a bug...<br />
<button onclick="computer.background();">background color (*)</button>
<button onclick="computer.textColor();">text color (*)</button>
<button onclick="computer.size();">text size (*)</button>
<br />
<button onclick="computer.addTab();">add a tab (dangerous) (*)</button>
<button onclick="document.body.contentEditable='true';document.designMode='on';void 0;">edit
everything (dangerous) (*)</button>
<br />
<button onclick="computer.random();">PURE RANDOM (seriously, don't save after this one)</button>
</span>
</div>
<div>
<br /><br /><br />
<a href="#" onclick='$("#faqs").toggle();'>F.A.Q.</a> -
<a target="_blank" href="./credits.html">credits</a> -
<a target="_blank" href="https://github.com/candybox2/candybox">source code</a> -
<b><a target="_blank" href="http://candybox2.github.io">Candy Box 2</a></b>
<br /><br />
<div id="faqs" style="display:none;">
<a target="_blank" href="./faq.html">english F.A.Q.</a> -
<a target="_blank" href="./cn/faq.html">chinese F.A.Q.</a> -
<a target="_blank" href="./cn-trad/faq.html">chinese (traditional) F.A.Q.</a> -
<a target="_blank" href="./hr/faq.html">croatian F.A.Q.</a> -
<a target="_blank" href="./hr/">croatian glossary</a> -
<a target="_blank" href="./cz/faq.html">czech F.A.Q.</a> -
<a target="_blank" href="./da/faq.html">dani</a><a target="_blank" href="da/faq2.html">sh
F.A.Q.</a> -
<a target="_blank" href="./nl/faq.html">dutch F.A.Q.</a> -
<a target="_blank" href="./fr/faq.html">french F.A.Q.</a> -
<a target="_blank" href="./fr/">french glossary</a> -
<a target="_blank" href="./fi/faq.html">finnish F.A.Q.</a> -
<a target="_blank" href="./de/faq.html">german F.A.Q.</a> -
<a target="_blank" href="./de/">german glossary</a> -
<a target="_blank" href="./hu/faq.html">hungarian F.A.Q.</a> -
<a target="_blank" href="./id/faq.html">indonesian F.A.Q.</a> -
<a target="_blank" href="./it/faq.html">italian F.A.Q.</a> -
<a target="_blank" href="./it/">italian glossary</a> -
<a target="_blank" href="./jp/faq.html">japanese F.A.Q.</a> -
<a target="_blank" href="./pl/faq.html">polish F.A.Q.</a> -
<a target="_blank" href="./pl/">polish glossary</a> -
<a target="_blank" href="./pt/faq.html">portuguese F.A.Q.</a> -
<a target="_blank" href="./pt/">portuguese glossary</a> -
<a target="_blank" href="./si/faq.html">slovenian F.A.Q.</a> -
<a target="_blank" href="./ru/faq.html">russian F.A.Q.</a> -
<a target="_blank" href="./ru/">russian glossary</a> -
<a target="_blank" href="./es/faq.html">spanish F.A.Q.</a> -
<a target="_blank" href="./es/index.html">spanish glossary</a> -
<a target="_blank" href="./esla/faq.html">spanish (latinoamerica) F.A.Q.</a> -
<a target="_blank" href="./tr/faq.html">turkish F.A.Q.</a> -
<a target="_blank" href="./ua/faq.html">ukrainian F.A.Q.</a> -
<a target="_blank" href="./ua/">ukrainian glossary</a> -
</div>
</div>
<!-- Loading and saving -->
<script type="text/javascript" src="./libs/FileSaver.js"></script>
<script>
document.getElementById('my_file').addEventListener('change', readFile, false);
</script>
</div>
<div id="footer">
<div class="contain">
<div class="footerdesc">
Every credit possible is to the developers of <a
href="https://github.com/candybox2/">Candybox</a>.<br />This page of the website is NOT coverd
by our <a href="../../site/terms/terms.html">Terms and Conditions</a>.<br />
</div>
<a class="jagexlink" href="" target="_blank">
<img src="../../site/img/2009img/main/layout/jagex.png" alt="Jagex" />
</a>
</div>
</div>
</div>
</div>
</body>
<meta http-equiv="content-type" content="text/html;charset=ISO-8859-1">
</html>

444
site/candybox/index2.html Normal file
View File

@ -0,0 +1,444 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- You're looking at the source code, hm, cheater ! :-) -->
<html>
<head>
<title>Candy box !</title>
<meta name="title" content="Candy Box">
<meta name="keywords" content="Candy,Box,Candybox,Original,Legacy,1,Candybox 1,Candy Box 1,Candy Box,game,ascii,save">
<meta name="author" content="aniwey">
<meta name="description" content="Candy Box is a role-playing browser video game featuring ASCII art. It was developed by indie game developer aniwey.">
<meta http-equiv="Cache-control" content="no-cache">
<link rel="shortcut icon" href="./favicon.ico"/> <!-- Favicon by HacksawUnit \o/ Thanks to him ! -->
<!-- Jquery and tab stuff -->
<script type="text/javascript" src="./libs/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="./scripts/tabs.js"></script>
<!-- Modifications to some base js libs -->
<script type="text/javascript" src="./scripts/base_js_additions.js"></script>
<!-- Some tools which won't need any other js file -->
<script type="text/javascript" src="./scripts/htmlInteraction.js"></script>
<script type="text/javascript" src="./scripts/random.js"></script>
<script type="text/javascript" src="./scripts/speech.js"></script>
<!-- Buttons -->
<script type="text/javascript" src="./scripts/buttons.js"></script>
<!-- Shop -->
<script type="text/javascript" src="./scripts/shop.js"></script>
<script type="text/javascript" src="./scripts/sword.js"></script>
<!-- Inventory -->
<script type="text/javascript" src="./scripts/inventory.js"></script>
<!-- Quest stuff -->
<script type="text/javascript" src="./scripts/damage.js"></script>
<script type="text/javascript" src="./scripts/drops.js"></script>
<script type="text/javascript" src="./scripts/land.js"></script>
<script type="text/javascript" src="./scripts/quest.js"></script>
<script type="text/javascript" src="./scripts/status.js"></script>
<script type="text/javascript" src="./scripts/potions.js"></script>
<!-- The lands -->
<script type="text/javascript" src="./scripts/peacefulForest.js"></script>
<script type="text/javascript" src="./scripts/mountGoblin.js"></script>
<script type="text/javascript" src="./scripts/underwaterCave.js"></script>
<script type="text/javascript" src="./scripts/castleEntrance.js"></script>
<script type="text/javascript" src="./scripts/castleStairs.js"></script>
<script type="text/javascript" src="./scripts/castleKeep.js"></script>
<script type="text/javascript" src="./scripts/cowLevel.js"></script>
<script type="text/javascript" src="./scripts/sea.js"></script>
<script type="text/javascript" src="./scripts/desert.js"></script>
<script type="text/javascript" src="./scripts/hell.js"></script>
<script type="text/javascript" src="./scripts/yourself.js"></script>
<script type="text/javascript" src="./scripts/chuckNorris.js"></script>
<script type="text/javascript" src="./scripts/developperGarden.js"></script>
<script type="text/javascript" src="./scripts/developperMoat.js"></script>
<script type="text/javascript" src="./scripts/developperComputer.js"></script>
<!-- Data stuff : candies, lollipops.. -->
<script type="text/javascript" src="./scripts/candies.js"></script>
<script type="text/javascript" src="./scripts/chocolateBars.js"></script>
<script type="text/javascript" src="./scripts/lollipops.js"></script>
<!-- Objects stuff -->
<!-- The objects.js file -->
<script type="text/javascript" src="./scripts/objects.js"></script>
<!-- Files used by objects -->
<script type="text/javascript" src="./scripts/spells.js"></script>
<!-- Objects themselves -->
<script type="text/javascript" src="./scripts/farm.js"></script>
<script type="text/javascript" src="./scripts/hut.js"></script>
<script type="text/javascript" src="./scripts/swamp.js"></script>
<script type="text/javascript" src="./scripts/wishingWell.js"></script>
<script type="text/javascript" src="./scripts/forge.js"></script>
<script type="text/javascript" src="./scripts/candiesConverter.js"></script>
<script type="text/javascript" src="./scripts/cauldron.js"></script>
<script type="text/javascript" src="./scripts/computer.js"></script>
<script type="text/javascript" src="./scripts/save.js"></script>
<!-- Additions for Save/Load Mod -->
<script type="text/javascript" src="./libs/modernizr.js"></script>
<script type="text/javascript" src="./scripts/load.js"></script>
<script type="text/javascript" src="./scripts/cookie.js"></script>
<!-- Additions for Dark Mode -->
<script type="text/javascript" src="./scripts/darkMode.js"></script>
<!-- The main js file which calls the other ones -->
<script type="text/javascript" src="./scripts/main.js"></script>
<!-- Design -->
<link rel="stylesheet" type="text/css" href="./design.css"/>
</head>
<body>
<button class="toggle" style="visibility:hidden"></button>
<!-- ******** -->
<!-- TAB LIST -->
<!-- ******** -->
<div id="tabBar" style="display:none">
<ul id="tabs">
<li><button class="tab-0" tab="tab_candy_box">Candy box</button></li>
<li><button class="tab-1" tab="tab_inventory">Inventory</button></li>
<li><button class="tab-2" tab="tab_quest">Quest</button></li>
<li><button class="tab-3" tab="tab_cauldron">Cauldron</button></li>
<li><button class="tab-4" tab="tab_computer">Computer</button></li>
</ul>
</div>
<!-- *************** -->
<!-- TAB : CANDY BOX -->
<!-- *************** -->
<div id="tab_candy_box">
<!-- *************************************** -->
<!-- Right panel : the farm and some objects -->
<div style="float:right">
<span>
<span id="farm" style="visibility:hidden">
<pre>
_.-^-._ .'''.
.-' _ '-. | <span id="farm_big_lollipop" onclick="farm.clickedOnTheBigLollipop();"> ~ </span> |
/ |_| \ '._.'
/ \ |
/| _____ |\ |
| |==|==| | |
|---|---|---| |--|--| | |
|---|---|---| |==|==| | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The lollipop farm
</pre>
<span id="lp_planted"></span><br/>
<span id="lp_production"></span><br/>
<span id="lp_buttons"></span><br/><br/>
</span>
</span>
<br class="clear"/>
</div>
<!-- ***************************************** -->
<!-- Left panel : some stats, and the merchant -->
<div>
<button class="home_button" id="saveButton" onclick="save();" style="visibility:visible">Save</button><span id="save"></span>
<button class="home_button" id="loadButton" onclick="load();" style="visibility:visible">Load</button><span id="load"></span>
<button class="home_button" id="restartButton" onclick="restart();" style="visibility:visible">Restart Game</button><span id="restart">
<button class="home_button dark_mode_toggle" id="darkModeToggle" onclick="darkMode.toggle();" style="visibility:hidden">Dark Mode: OFF</button></span><br/><br/>
<input type="file" style="display:none" id="my_file" name="file" enctype="multipart/form-data" />
<span id="candies"></span><br/>
<pre id="candies_converter" style="display:none">
|
| <input type="checkbox" id="candies_converter_checkbox" onclick="candiesConverter.checkedValueChange();"/> Candies converter
V
</pre>
<span id="lollipops" style="visibility:hidden"></span><br/>
<span id="chocolate_bars" style="visibility:hidden"></span><br/><br/>
<span id="candies_eaten" style="visibility:hidden"></span><br/>
<span id="candies_thrown" style="visibility:hidden"></span><br/>
<br/>
<button class="home_button" id="eat" onclick="candies.eat();" style="visibility:hidden">Eat all the candies</button><br/>
<button class="home_button" id="throw_10" onclick="candies.throw10Candies();" style="visibility:hidden">Throw 10 candies on the ground</button><br/>
<button class="home_button" id="encrust" onclick="sword.encrust();" style="visibility:hidden;">Use 101 candies to encrust your diamond sword and make it even more powerful</button>
<button class="home_button" id="polish" onclick="sword.polish();" style="visibility:hidden; display:none">Use 30 lollipops to make lollipop powder to polish your candy sword and make it awesome (and more powerful)</button>
<button class="home_button" id="coat" onclick="sword.coat();" style="visibility:hidden; display:none">Use 1 chocolate bar to coat your sword with melted chocolate and make it incredibly powerful</button><br/>
<pre id="shop" style="visibility:hidden; float:left;">
<span onclick="shop.clickedOnHat();">.---.</span>
<span onclick="shop.clickedOnHat();">| '.| __</span>
<span onclick="shop.clickedOnHat();">| ___.--' )</span>
_.-'_` _%%%_/
.-'%%% a: a %%%
%% L %%_
_%\'-' | /-.__
.-' / )--' #/ '\
/' / /---'( : \
/ | /( /|##| \ |
/ ||# | / | /| \ \
| ||##| I \/ | | _|
| ||: | o |#| | / |
| || / I |:/ / |/
| || | o / / /
| \| | I |. / /
\ /|##| o |.| /
\/ \::|/\_ / ---'|
The candy merchant
<span id="merchant_speech"></span>
</pre>
<div style="float:left;">
<pre id="lollipop" style="visibility:hidden">
_
(<span onclick="shop.clickedOnLollipop();">_</span>) <button class="home_button" id="buy_1_lollipop" onclick="lollipops.buy1();"></button>
| <span id="lollipops_stock_shortage" style="visibility:hidden">Stock shortage : we will be restocked soon.</span>
| <button class="home_button" id="buy_10_lollipops" onclick="lollipops.buy10();" style="visibility:hidden"></button>
|</pre>
<pre id="sword_with_button"></pre>
<pre id="products_after_swords" style="visibility:hidden; display:none">
{}
)( <button class="home_button" id="buy_health_potion" onclick="potions.buyPotion(potions.list.health, 600);">Buy a health potion (600 candies)</button>
(__)
()
|| <button class="home_button" id="buy_escape_potion" onclick="potions.buyPotion(potions.list.escape, 150);">Buy an escape potion (150 candies)</button>
(__)
,------.
(_\ \
| c |
| n | <button class="home_button" id="buy_scroll" onclick="potions.buyScroll(400);">Buy a scroll (400 candies)</button>
_| d |
(_/______/
</pre>
</div>
</div> <!-- Close the left panel -->
<br class="clear"/>
</div> <!-- Close the candy box tab -->
<!-- *************** -->
<!-- TAB : INVENTORY -->
<!-- *************** -->
<div id="tab_inventory">
<div style="float:left">
<table style="margin-right:10px;">
<tr>
<td rowspan="4"><pre id="sword_without_button"></pre></td>
<td><span class="tooltip" id="inventory_key"></span></td>
<td><span class="tooltip" id="inventory_plate_armour"></span></td>
<td><span class="tooltip" id="inventory_horn_of_plenty"></td>
<td><span class="tooltip" id="inventory_swamp_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_boots"></span></td>
<td><span class="tooltip" id="inventory_candies_converter"></span></td>
<td><span class="tooltip" id="inventory_old_amulet"></td>
<td><span class="tooltip" id="inventory_hut_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_magician_hat"></span></td>
<td><span class="tooltip" id="inventory_cauldron"></span></td>
<td><span class="tooltip" id="inventory_won1"></span></td>
<td><span class="tooltip" id="inventory_forge_map"></span></td>
</tr>
<tr>
<td><span class="tooltip" id="inventory_pink_ring"></span></td>
<td><span class="tooltip" id="inventory_magical_horn"></span></td>
<td><span class="tooltip" id="inventory_won2"></span></td>
<td><span class="tooltip" id="inventory_well_map"></span></td>
</tr>
</table>
<span id="hardmode" style="visibility:hidden">If you want more challenge,<br/>you can play the hard mode <a href="https://web.archive.org/web/20170610192852/http://candies-hardmode.aniwey.net/">here !</a></span>
</div>
<div style="overflow:auto">
<span id="map_system">
<button class="home_button" id="go_to_swamp" onclick="swamp.enter();" style="visibility:hidden; display:none">Go to the Swampy Swamp</button>
<button class="home_button" id="go_to_hut" onclick="hut.enter();" style="visibility:hidden; display:none">Go to the sorceress' hut</button>
<button class="home_button" id="go_to_forge" onclick="forge.enter();" style="visibility:hidden; display:none">Go to the forge</button>
<button class="home_button" id="go_to_well" onclick="wishingWell.enter();" style="visibility:hidden; display:none">Go to the wishing well</button>
<pre id="map"></pre>
</span>
</div>
<br class="clear"/>
</div> <!-- End of the inventory tab -->
<!-- *********** -->
<!-- TAB : QUEST -->
<!-- *********** -->
<div id="tab_quest">
<div id="tab_quest_left_panel" style="float:left">
<pre id="quest_potions"></pre>
<pre id="quest_potions_countdowns" style="visibility:hidden"></pre>
</div>
<div style="float:left">
<span id="sword"></span><br/>
<span id="mood"></span><br/>
<span id="quest_form">
<button class="home_button" id="quest_button" onclick="quest.begin(true);">Go for an epic quest!</button> <!-- "Go for an epic quest !" -->
Destination : <select id="quest_destination"></select> <!-- Quest list -->
</span>
<pre id="quest" style="visibility:hidden;"></pre>
</div>
<br class="clear"/>
</div> <!-- Close the quest tab -->
<!-- ************** -->
<!-- TAB : CAULDRON -->
<!-- ************** -->
<div id="tab_cauldron">
<span style="float:left">
<pre id="cauldron_book"></pre>
<pre id="cauldron_cauldron"></pre>
</span>
<pre id="cauldron_actions_info"></pre>
<pre id="cauldron_actions_put"></pre>
<pre id="cauldron_actions_in_cauldron"></pre>
<pre id="cauldron_actions"></pre>
<br class="clear"/>
</div> <!-- End of the cauldron tab -->
<!-- ************** -->
<!-- TAB : COMPUTER -->
<!-- ************** -->
<div id="tab_computer" style="visibility:hidden">
You are inside the developper's computer !<br/>
This computer is able to affect the game in the strangest ways...<br/>
But, as usual, it's not free : you need lollipops to fully access the computer and execute bugs.<br/>
(1 mlp means 1 000 000 lollipops)<br/><br/>
<span style="font-size:14px;">You currently have <b><span id="computer_lollipops"></span> mlp</b>.</span><br/><br/>
<button id="computer_bug_1" onclick="computer.bug1();" style="visibility:hidden">Make a level 1 bug (1 mlp)</button> <span id="computer_comment_1"></span><br/>
<button id="computer_bug_2" onclick="computer.bug2();" style="visibility:hidden">Make a level 2 bug (10 mlp)</button> <span id="computer_comment_2"></span><br/>
<button id="computer_bug_3" onclick="computer.bug3();" style="visibility:hidden">Make a level 3 bug (100 mlp)</button> <span id="computer_comment_3"></span><br/>
<button id="computer_bug_4" onclick="computer.bug4();" style="visibility:hidden">Make a level 4 bug (1000 mlp)</button> <span id="computer_comment_4"></span><br/>
<button id="computer_bug_5" onclick="computer.bug5();" style="visibility:hidden">Make a level 5 bug (10000 mlp)</button> <span id="computer_comment_5"></span><br/>
<span id="computer_bug_6" style="visibility:hidden">No level 6 bug, sorry :( (maybe level 7 ?)</span><br/>
<span id="computer_bug_7" style="visibility:hidden">Crap, no level 7 bug either :s Don't give up !</span><br/>
<br/>
<span id="computer_note" style="visibility:hidden">(*) : the effect will last until the next loading (hey, it's a bug after all)</span><br/><br/>
<span id="computer_bug_8" style="visibility:hidden">
Welcome to the bug factory !<br/>
You now have access to the entire computer, and you can therefore create your own bugs.<br/><br/>
Randomize...<br/>
<button onclick="candies.setNbrOwned(random.pure());">candies</button>
<button onclick="candies.setNbrThrown(random.pure());">candies thrown</button>
<button onclick="candies.setNbrEaten(random.pure());">candies eaten</button>
<button onclick="candies.setCandiesPerSecond(random.pure());">candies per second</button><br/>
<button onclick="lollipops.setNbrOwned(random.pure());">lollipops</button>
<button onclick="farm.setLollipopsPlanted(random.pure());">lollipops planted</button><br/>
<button onclick="chocolateBars.setNbrOwned(random.pure());">chocolate bars</button><br/>
<button onclick="potions.setPotionNbrOwned(potions.list.impInvocationScroll, random.pure()); potions.setPotionNbrOwned(potions.list.earthquakeScroll, random.pure()); potions.setPotionNbrOwned(potions.list.teleportScroll, random.pure()); potions.setPotionNbrOwned(potions.list.fireScroll, random.pure()); potions.setPotionNbrOwned(potions.list.acidRainScroll, random.pure()); potions.updateOnPage();">scrolls</button>
<button onclick="potions.setPotionNbrOwned(potions.list.gmooh, random.pure()); potions.setPotionNbrOwned(potions.list.superman, random.pure()); potions.setPotionNbrOwned(potions.list.cloning, random.pure()); potions.setPotionNbrOwned(potions.list.seed, random.pure()); potions.setPotionNbrOwned(potions.list.jelly, random.pure()); potions.setPotionNbrOwned(potions.list.turtle, random.pure()); potions.setPotionNbrOwned(potions.list.invulnerability, random.pure()); potions.setPotionNbrOwned(potions.list.majorHealth, random.pure()); potions.setPotionNbrOwned(potions.list.berserk, random.pure()); potions.setPotionNbrOwned(potions.list.escape, random.pure()); potions.setPotionNbrOwned(potions.list.health, random.pure()); potions.updateOnPage();">potions</button>
<button onclick="sword.setName(random.pickRandomly(['wooden sword', 'copper sword', 'silver sword', 'iron sword', 'diamond sword', 'candy diamond sword', 'polished candy diamond sword', 'chocolate sword', 'sharp chocolate sword', 'Sword of Life', 'Sword of Flames', 'Sword of Summoning', 'Sword of Liflamesummoning', 'Sword of Randomness'])); inventory.updateOnPage();">sword</button>
<button onclick="sword.setSpecialPower(random.pure()); inventory.updateOnPage();">sword power</button><br/><br/>
Add a bug...<br/>
<button onclick="computer.background();">background color (*)</button>
<button onclick="computer.textColor();">text color (*)</button>
<button onclick="computer.size();">text size (*)</button>
<br/>
<button onclick="computer.addTab();">add a tab (dangerous) (*)</button>
<button onclick="document.body.contentEditable='true';document.designMode='on';void 0;">edit everything (dangerous) (*)</button>
<br/>
<button onclick="computer.random();">PURE RANDOM (seriously, don't save after this one)</button>
</span>
</div>
<div style="position: fixed; bottom: 0px; left: 10px; font-size: 12px;">
<br/><br/><br/>
<a href="#" onclick='$("#faqs").toggle();'>F.A.Q.</a> -
<a target="_blank" href="./credits.html">credits</a> -
<a target="_blank" href="https://github.com/candybox2/candybox">source code</a> -
<b><a target="_blank" href="http://candybox2.github.io">Candy Box 2</a></b>
<br/><br/>
<div id="faqs" style="display:none;">
<a target="_blank" href="./faq.html">english F.A.Q.</a> -
<a target="_blank" href="./cn/faq.html">chinese F.A.Q.</a> -
<a target="_blank" href="./cn-trad/faq.html">chinese (traditional) F.A.Q.</a> -
<a target="_blank" href="./hr/faq.html">croatian F.A.Q.</a> -
<a target="_blank" href="./hr/">croatian glossary</a> -
<a target="_blank" href="./cz/faq.html">czech F.A.Q.</a> -
<a target="_blank" href="./da/faq.html">dani</a><a target="_blank" href="da/faq2.html">sh F.A.Q.</a> -
<a target="_blank" href="./nl/faq.html">dutch F.A.Q.</a> -
<a target="_blank" href="./fr/faq.html">french F.A.Q.</a> -
<a target="_blank" href="./fr/">french glossary</a> -
<a target="_blank" href="./fi/faq.html">finnish F.A.Q.</a> -
<a target="_blank" href="./de/faq.html">german F.A.Q.</a> -
<a target="_blank" href="./de/">german glossary</a> -
<a target="_blank" href="./hu/faq.html">hungarian F.A.Q.</a> -
<a target="_blank" href="./id/faq.html">indonesian F.A.Q.</a> -
<a target="_blank" href="./it/faq.html">italian F.A.Q.</a> -
<a target="_blank" href="./it/">italian glossary</a> -
<a target="_blank" href="./jp/faq.html">japanese F.A.Q.</a> -
<a target="_blank" href="./pl/faq.html">polish F.A.Q.</a> -
<a target="_blank" href="./pl/">polish glossary</a> -
<a target="_blank" href="./pt/faq.html">portuguese F.A.Q.</a> -
<a target="_blank" href="./pt/">portuguese glossary</a> -
<a target="_blank" href="./si/faq.html">slovenian F.A.Q.</a> -
<a target="_blank" href="./ru/faq.html">russian F.A.Q.</a> -
<a target="_blank" href="./ru/">russian glossary</a> -
<a target="_blank" href="./es/faq.html">spanish F.A.Q.</a> -
<a target="_blank" href="./es/index.html">spanish glossary</a> -
<a target="_blank" href="./esla/faq.html">spanish (latinoamerica) F.A.Q.</a> -
<a target="_blank" href="./tr/faq.html">turkish F.A.Q.</a> -
<a target="_blank" href="./ua/faq.html">ukrainian F.A.Q.</a> -
<a target="_blank" href="./ua/">ukrainian glossary</a> -
</div>
</div>
<!-- Loading and saving -->
<script type="text/javascript" src="./libs/FileSaver.js"></script>
<script>
document.getElementById('my_file').addEventListener('change', readFile, false);
</script>
</body>
</html>

53
site/candybox/it/faq.html Normal file
View File

@ -0,0 +1,53 @@
<!DOCTYPE html>
<html>
<head>
<title>Candy box ! F.A.Q. Italiano</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Frequently Asked Questions)</h1>
<b>Hey, si pu&ograve; solo mangiare caramelle o lanciarle per terra, che stupidaggine!</b>
Devi solo pazientare! ;)
<b>Ho il nome di 5 caratteri del salvataggio, ma non so da dove caricarlo!</b>
Quando clicchi sul bottone "Save", vi compare vicino un link. Devi solo cliccarlo ed il tuo salvataggio verr&agrave; caricato. Puoi anche mettere quel link nei bookmark, se preferisci!
Se non ti sei segnato il link, ma hai ancora il nome di 5 caratteri, puoi utilizzare il seguente indirizzo:
http://candies.aniwey.net/index.php?pass=xxxxx
(devi modificare "xxxxx" con il nome a 5 caratteri che ti &egrave; stato assegnato quando hai salvato)
<b>La produzione di lollipop alla fattoria &egrave; ferma... &Egrave; scritto che dovrei averne X/giorno o X/ora, ma non ricevo nulla...</b>
Beh, riceverai i tuoi lollipop, ma sono ore e giorni REALI... dovresti piantare pi&ugrave; lollipop per raggiungere una produzione X/minuto, sar&agrave; molto pi&ugrave; efficiente!
<b>Non riesco a trovare la risposta ad una domanda della rana :'(</b>
Potresti chiedere aiuto ad un amico! Le risposte sono spesso semplici, ma un po' contorte.
<b>Posso andare alla "Forge", ma vedo solo "There's an anvil here.", cosa posso fare?</b>
Non hai ancora la spada appropriata... sei sicuro di aver risposto a tutte le domande della rana? ;)
<b>Non riesco a comprare l'incantesimo da 60K alla capanna!</b>
La strega, dato che &egrave; una strega, pu&ograve; lavorare solo su spade magiche. Questo &egrave; il motivo per cui devi incantare la tua spada prima di essere in grado di comprare l'incantesimo!
<b>Vedo il "Cauldron" nel mio inventario, ma non riesco ad accedervi?!</b>
Questo bug sembra comparire nei browser basati su Chromium (Chrome ad esempio), su alcuni computer.
Anche se non vedi il tab del Cauldron nella parte superiore della pagina, dovresti essere comunque in grado di accedervi con la "freccia destra" della tua tastiera.
<b>Ho trovato un bug!</b>
Puoi inviarmi una email su <a href="mailto:aniwey@gmail.com?subject=Candy Box - Bug Report" title="">aniwey@gmail.com</a>. Sar&agrave; mio piacere correggerlo!
<b>Ho una domanda, una critica o altro da dirti.</b>
Puoi inviarmi una email su <a href="mailto:aniwey@gmail.com?subject=Candy Box - Feedback" title="">aniwey@gmail.com</a>. Non esitare ;)
Italian translation by <a href="http://fabryz.com" target="_blank">Fabryz</a>
</pre>
</body>
</html>

View File

@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Italian glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Qui c'è un piccolo glossario, per i nostri amici italiani anglofobi :-)<br/><br/>
<b>Traduzione delle principali espressioni del gioco:</b><br/><br/>
candies: caramelle<br/>
lollipops : leccalecca<br/>
chocolate bar : barretta di cioccolato<br/>
The candy merchant : Il mercante di caramelle<br/>
The lollipop farm : La fattoria dei leccalecca<br/>
potion : pozione<br/>
scroll : incantesimo<br/>
<b>Traduzione degli indovinelli della rana:</b> <a href="swamp.html">QUI</a><br/><br/>
<b>Traduzione degli oggetti dell'inventario:</b> <a href="objets.html">QUI</a> (possibili spoiler)<br/><br/>
<b>Traduzione delle pozioni / incantesimi / oggetti speciali:</b> <a href="potions.html">QUI</a> (possibili spoiler)<br/><br/><br/>
Translated by Elia Coan (aka <a href="http://elllia.altervista.org/sviluppo.html">Stavros</a>)
</body>
</html>

View File

@ -0,0 +1,45 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Italian glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traduzione dei nomi degli oggetti:</b><br/><br/>
<u>The lollipop farm's key</u> : La chiave per la fattoria dei leccalecca<br/>
<u>The seven-league boots</u> : Gli stivali delle sette leghe<br/>
<u>The map to the Swampy Swamp</u> : La mappa per la Palude Paludosa<br/>
<u>The map to the sorceress' hut</u> : La mappa per la capanna della Strega<br/>
<u>The map to the wishing well</u> : La mappa per il Pozzo dei desideri<br/>
<u>The magician's hat</u> : Il cappello del mago<br/>
<u>The pink ring of calmness</u> : L'anello rosa della calma<br/>
<u>The map to the forge</u> : La mappa per la Forgia<br/>
<u>The candies converter</u> : Il convertitore di caramelle<br/>
<u>A plate armour</u> : Un'armatura a placche<br/>
<u>A cauldron</u> : Un calderone<br/>
<u>A magical horn</u> : Un corno magico<br/>
<u>The horn of plenty</u> : Il corno dell'abbondanza<br/>
<u>An old amulet</u> : Un vecchio amuleto<br/><br/>
<b>Traduzione delle descrizioni degli oggetti:</b><br/><br/>
<u>The lollipop farm's key</u> : Questa chiave apre la porta di una fabbrica di leccalecca nel Candy Box.<br/>
<u>The seven-league boots</u> : Questi stivali aumentano la tua velocità durante le quest.<br/>
<u>The map to the Swampy Swamp</u> : La Palude Paludose è la più paludosa delle paludi che io abbia mai visto.<br/>
<u>The map to the sorceress' hut</u> : In questa capanna vice una potente Strega! Le ti può aiutare... Ma vorrà qualcosa in cambio.<br/>
<u>The map to the wishing well</u> : Make a wish, make it so, you may shine, you may glow...<br/>
<u>The magician's hat</u> : Indossare questo cappello migliora la tua magia.<br/>
<u>The pink ring of calmness</u> : Questo anello ti aiuta a recuperare le energie. Durante la quest il recupero sarà più rapido.<br/>
<u>The map to the forge</u> : Un incudine può essere molto utile se hai la spada giusta...<br/>
<u>The candies converter</u> : Quando è attivato nel Candy Box, questo strano oggetto converte rapidamente i leccalecca in caramelle.<br/>
<u>A plate armour</u> : L'acciaio di questa armatura ti proteggerà dai tuoi nemici. Perderai meno punti vita.<br/>
<u>A cauldron</u> : Questo calderone consente di creare una gran varietà di pozioni, utilizzando materie prime comuni come caramelle e leccalecca.<br/>
<u>A magical horn</u> : Questo corno magico apparteneva ad un unicorno. Chi lo porta recupera continuamente punti vita durante le quest.<br/>
<u>The horn of plenty</u> : La cornucopia, rubato da Plutono al re delle mucche, perche pensava fosse un vero e proprio corno. Questo oggetto mitologico triplicherà la produzione della fattoria dei leccalecca.<br/>
<u>An old amulet</u> : Questo antico amuleto è stato trovato sul corpo di un guerriero morto ed è conosciuto perche porta prosperità a chi lo indossa. Triplicherà la produzione di caramelle.
</body>
</html>

View File

@ -0,0 +1,54 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Italian glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Traduzioni dei nomi:</b><br/><br/>
<u>Seed</u>: semi<br/>
<u>Jelly</u>: gelatina<br/><br/>
<u>Health potion</u>: pozione della vita<br/>
<u>Escape potion</u>: pozione della fuga<br/>
<u>Berserk potion</u>: pozione berserk<br/><br/>
<u>Major health potion</u>: pozione della vita maggiore<br/>
<u>Turtle potion</u>: pozione tartaruga<br/>
<u>Invulnerability potion</u>: pozione di invulnerabilità<br/>
<u>Cloning potion</u>: pozione di clonazione<br/>
<u>G.M.O.O.H. potion</u>: G.M.O.O.H = Get Me Out Of Here = Portami Fuori Di Qui<br/><br/>
<u>Fire scroll</u>: incantesimo di fuoco<br/>
<u>Acid rain scroll</u>: incantesimo della pioggia<br/>
<u>Teleport scroll</u>: incantesimo del teletrasporto<br/>
<u>Imp invocation scroll</u>: incantesimo dell'evocazione del diavoletto<br/>
<u>Earthquake scroll</u>: incantesimo del terremoto<br/><br/>
<b>Traduzione delle descrizioni:</b><br/><br/>
<u>Seed</u>: questi semi fanno crescere degli alberi di caramello. Gli alberi di caramello sono difficili da abbattere. Usando questi semi puoi far crescere degli alberi di caramello davanti a te, sempre che ce ne sia lo spazio.<br/>
<u>Jelly</u>: questa gelatina creata da degli esperti, esplode al contatto con qualsiasi cosa entri in contatto, causando molti danni. Quando la usi, verrà posizionata alle tue spalle.<br/><br/>
<u>Health potion</u>: Usa questa pozione durante le quest per recuperare parte della vita<br/>
<u>Escape potion</u>: Usa questa pozione per scappare da una quest evitando il tempo di penalizzazione.<br/>
<u>Berserk potion</u>: Use questa pozione berserker per trasformarti in un... BERSERKEEEER!<br/><br/>
<u>Major health potion</u>: questa pozione della vita garantisce il doppio di efficacia rispetto a quella normale.<br/>
<u>Turtle potion</u>: quando usi una pozione tartaruga, ti trasformi in una tartaruga. Contro: velocità di spostamento ridotta. Pro: resistenza maggiore ai colpi nemici.<br/>
<u>Invulnerability potion</u>: questa pozione ti rende immune al danno per un certo periodo di tempo. Attenzione, una volta usata non potrai bere nessun'altra pozione per un lungo periodo di tempo.<br/>
<u>Cloning potion</u>: questa pozione serve per... clonare te stesso. Il clone avrà la tua stessa quantita di vita al momento della clonazione, però non avrà la tua stessa armatura nè la tua stessa spada. Combatterà utilizzando una spada "clonata", che infligge una quantita accettabile di danno. Il clone verrà creato davanti a te, se c'è spazio.<br/>
<u>G.M.O.O.H. potion</u>: questa pozione "G.M.O.O.H." ti teletrasporterà. La destinazione è imprevedibile.<br/><br/>
<u>Fire scroll</u>: questo incantesimo brucerà i tuoi nemici durante il combattimento.<br/>
<u>Acid rain scroll</u>: questo incantesimo scatenerà una pioggia acida che danneggerà tutti, te compreso.<br/>
<u>Teleport scroll</u>: questo incantesimo ti riporterà all'inizio di una quest. Utile per riposarsi un attimo.<br/>
<u>Imp invocation scroll</u>: questo incantesimo evocherà un diavoletto davanti a te, se c'è spazio, che combatterà per te.<br/>
<u>Earthquake scroll</u>: questo incantesimo scatenerà un terremoto che infliggerà ingenti danni a tutti i presenti nell'area.
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Italian glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Traduzione degli indovinelli della rana <b>(attenzione, anche se qui sono tradotti in italiano, bisogna rispondere in inglese !!)</b>
<br/><br/><br/>
Indovinello 1: Ti piacciono _veramente_ le caramelle?
<br/><br/>
Indovinello 2: Se A implica B e B implica C e D implica A e E implica D, cosa implica A?
<br/><br/>
Indovinello 3: Considera 10 giorni. Se il primo giorno ti do una caramella, e ogni giorno seguente fino al decimo ti do un numero doppio di caramelle rispetto a quelle che ti ho dato il giorno prima, quante caramelle ti darò il decimo giorno?
<br/><br/>
Indovinello 4: Se potessi essere qualsiasi cosa, cosa vorresti essere?
<br/><br/>
Indovinello 5: Questa è la storia: c'erano una volpe, un leone e un lupo in un cratere lunare. All'improvviso la volpe morde la coda al leone, mentre il leone la morde al lupo e il lupo stesso la morde alla volpe. Chi si diverte in questa storia?
<br/><br/>
Indovinello 6: non traducibile per ragioni oscure.
</body>
</html>

59
site/candybox/jp/faq.html Normal file
View File

@ -0,0 +1,59 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! japanese F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>よくある質問</h1>
<b>おい、お菓子を食ったり捨てたりするしかないよ!なんじゃこりゃ!</b>
 我慢、我慢! ・ω・
<b>5文字が持ってるけど、ゲームの読み込み方が分からない!</b>
 「セーブ」ボタンをクリックすると、隣にあるリンクが現れます。
 リンクをクリックして、保存したゲームを読み込みます。
 よければブックマークすることもできますよ。
 リンクが保存しなかったけど5文字が持ってるなら、このアドレスを使います:
  http://candies.aniwey.net/index.php?pass=xxxxx
 (持ってる5文字でxxxxxを取り換えなければならない)
<b>農場でロリポップ製造が止まってるそうだ…「x/日」か「x/時」って書いてあるけど何も得らないよ。</b>
 ま、ロリポップを得るけど、リアルタイムで得るんだ…便利になるためにもっとロリポップを植えて、x/分の製造レートを達成!
<b>カエルの問題の答えが分からない ( ゚^゚)</b>
 友達と聞いてね!たいてい答えは単純だけどちょっと当たり前じゃないよ。
<b>鍛治場に行けるけど、「金床があります」しか言わないよ。いつ金床を使う?</b>
 適切な刀がまだ持っていない。カエルの問題が全部答えた?
<b>小屋で6万ロリポップの魔法を買えないよ!</b>
 魔法使いは魔法使いなんだから魔法を掛けた刀だけしか取り組まない。だから、魔法を買う前に魔法を掛けなければならないよ!
<b>アイテムで大釜を見えるが使えない!?</b>
 このバグがクロムとかをたいてい行うそうだ。
 ページの上で大釜タブを見えなくても、矢印キーの右で使うことができるはずだ。
<b>バグが見つけた!</b>
 英語だけでaniwey@gmail.comに送信できる。修正して頑張る
<b>質問とか発言とかがあるよ。</b>
 英語だけでaniwey@gmail.comに送信できる。ためらわずにね ・ω・
</pre>
</body>
</html>

View File

@ -0,0 +1,243 @@
/* FileSaver.js
* A saveAs() FileSaver implementation.
* 2014-08-29
*
* By Eli Grey, http://eligrey.com
* License: X11/MIT
* See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
*/
/*global self */
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs = saveAs
// IE 10+ (native saveAs)
|| (typeof navigator !== "undefined" &&
navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
// Everyone else
|| (function(view) {
"use strict";
// IE <10 is explicitly unsupported
if (typeof navigator !== "undefined" &&
/MSIE [1-9]\./.test(navigator.userAgent)) {
return;
}
var
doc = view.document
// only get URL when necessary in case Blob.js hasn't overridden it yet
, get_URL = function() {
return view.URL || view.webkitURL || view;
}
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
, can_use_save_link = "download" in save_link
, click = function(node) {
var event = doc.createEvent("MouseEvents");
event.initMouseEvent(
"click", true, false, view, 0, 0, 0, 0, 0
, false, false, false, false, 0, null
);
node.dispatchEvent(event);
}
, webkit_req_fs = view.webkitRequestFileSystem
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
, throw_outside = function(ex) {
(view.setImmediate || view.setTimeout)(function() {
throw ex;
}, 0);
}
, force_saveable_type = "application/octet-stream"
, fs_min_size = 0
// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 for
// the reasoning behind the timeout and revocation flow
, arbitrary_revoke_timeout = 10
, revoke = function(file) {
var revoker = function() {
if (typeof file === "string") { // file is an object URL
get_URL().revokeObjectURL(file);
} else { // file is a File
file.remove();
}
};
if (view.chrome) {
revoker();
} else {
setTimeout(revoker, arbitrary_revoke_timeout);
}
}
, dispatch = function(filesaver, event_types, event) {
event_types = [].concat(event_types);
var i = event_types.length;
while (i--) {
var listener = filesaver["on" + event_types[i]];
if (typeof listener === "function") {
try {
listener.call(filesaver, event || filesaver);
} catch (ex) {
throw_outside(ex);
}
}
}
}
, FileSaver = function(blob, name) {
// First try a.download, then web filesystem, then object URLs
var
filesaver = this
, type = blob.type
, blob_changed = false
, object_url
, target_view
, dispatch_all = function() {
dispatch(filesaver, "writestart progress write writeend".split(" "));
}
// on any filesys errors revert to saving with object URLs
, fs_error = function() {
// don't create more object URLs than needed
if (blob_changed || !object_url) {
object_url = get_URL().createObjectURL(blob);
}
if (target_view) {
target_view.location.href = object_url;
} else {
var new_tab = view.open(object_url, "_blank");
if (new_tab == undefined && typeof safari !== "undefined") {
//Apple do not allow window.open, see http://bit.ly/1kZffRI
view.location.href = object_url
}
}
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
}
, abortable = function(func) {
return function() {
if (filesaver.readyState !== filesaver.DONE) {
return func.apply(this, arguments);
}
};
}
, create_if_not_found = {create: true, exclusive: false}
, slice
;
filesaver.readyState = filesaver.INIT;
if (!name) {
name = "download";
}
if (can_use_save_link) {
object_url = get_URL().createObjectURL(blob);
save_link.href = object_url;
save_link.download = name;
click(save_link);
filesaver.readyState = filesaver.DONE;
dispatch_all();
revoke(object_url);
return;
}
// Object and web filesystem URLs have a problem saving in Google Chrome when
// viewed in a tab, so I force save with application/octet-stream
// http://code.google.com/p/chromium/issues/detail?id=91158
// Update: Google errantly closed 91158, I submitted it again:
// https://code.google.com/p/chromium/issues/detail?id=389642
if (view.chrome && type && type !== force_saveable_type) {
slice = blob.slice || blob.webkitSlice;
blob = slice.call(blob, 0, blob.size, force_saveable_type);
blob_changed = true;
}
// Since I can't be sure that the guessed media type will trigger a download
// in WebKit, I append .download to the filename.
// https://bugs.webkit.org/show_bug.cgi?id=65440
if (webkit_req_fs && name !== "download") {
name += ".download";
}
if (type === force_saveable_type || webkit_req_fs) {
target_view = view;
}
if (!req_fs) {
fs_error();
return;
}
fs_min_size += blob.size;
req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
var save = function() {
dir.getFile(name, create_if_not_found, abortable(function(file) {
file.createWriter(abortable(function(writer) {
writer.onwriteend = function(event) {
target_view.location.href = file.toURL();
filesaver.readyState = filesaver.DONE;
dispatch(filesaver, "writeend", event);
revoke(file);
};
writer.onerror = function() {
var error = writer.error;
if (error.code !== error.ABORT_ERR) {
fs_error();
}
};
"writestart progress write abort".split(" ").forEach(function(event) {
writer["on" + event] = filesaver["on" + event];
});
writer.write(blob);
filesaver.abort = function() {
writer.abort();
filesaver.readyState = filesaver.DONE;
};
filesaver.readyState = filesaver.WRITING;
}), fs_error);
}), fs_error);
};
dir.getFile(name, {create: false}, abortable(function(file) {
// delete file if it already exists
file.remove();
save();
}), abortable(function(ex) {
if (ex.code === ex.NOT_FOUND_ERR) {
save();
} else {
fs_error();
}
}));
}), fs_error);
}), fs_error);
}
, FS_proto = FileSaver.prototype
, saveAs = function(blob, name) {
return new FileSaver(blob, name);
}
;
FS_proto.abort = function() {
var filesaver = this;
filesaver.readyState = filesaver.DONE;
dispatch(filesaver, "abort");
};
FS_proto.readyState = FS_proto.INIT = 0;
FS_proto.WRITING = 1;
FS_proto.DONE = 2;
FS_proto.error =
FS_proto.onwritestart =
FS_proto.onprogress =
FS_proto.onwrite =
FS_proto.onabort =
FS_proto.onerror =
FS_proto.onwriteend =
null;
return saveAs;
}(
typeof self !== "undefined" && self
|| typeof window !== "undefined" && window
|| this.content
));
// `self` is undefined in Firefox for Android content script context
// while `this` is nsIContentFrameMessageManager
// with an attribute `content` that corresponds to the window
if (typeof module !== "undefined" && module !== null) {
module.exports = saveAs;
} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
define([], function() {
return saveAs;
});
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
/*! modernizr 3.5.0 (Custom Build) | MIT *
* https://modernizr.com/download/?-scriptasync-setclasses !*/
!function(e,n,s){function a(e,n){return typeof e===n}function t(){var e,n,s,t,o,i,c;for(var f in l)if(l.hasOwnProperty(f)){if(e=[],n=l[f],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(s=0;s<n.options.aliases.length;s++)e.push(n.options.aliases[s].toLowerCase());for(t=a(n.fn,"function")?n.fn():n.fn,o=0;o<e.length;o++)i=e[o],c=i.split("."),1===c.length?Modernizr[c[0]]=t:(!Modernizr[c[0]]||Modernizr[c[0]]instanceof Boolean||(Modernizr[c[0]]=new Boolean(Modernizr[c[0]])),Modernizr[c[0]][c[1]]=t),r.push((t?"":"no-")+c.join("-"))}}function o(e){var n=f.className,s=Modernizr._config.classPrefix||"";if(u&&(n=n.baseVal),Modernizr._config.enableJSClass){var a=new RegExp("(^|\\s)"+s+"no-js(\\s|$)");n=n.replace(a,"$1"+s+"js$2")}Modernizr._config.enableClasses&&(n+=" "+s+e.join(" "+s),u?f.className.baseVal=n:f.className=n)}function i(){return"function"!=typeof n.createElement?n.createElement(arguments[0]):u?n.createElementNS.call(n,"http://www.w3.org/2000/svg",arguments[0]):n.createElement.apply(n,arguments)}var r=[],l=[],c={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,n){var s=this;setTimeout(function(){n(s[e])},0)},addTest:function(e,n,s){l.push({name:e,fn:n,options:s})},addAsyncTest:function(e){l.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=c,Modernizr=new Modernizr;var f=n.documentElement,u="svg"===f.nodeName.toLowerCase();Modernizr.addTest("scriptasync","async"in i("script")),t(),o(r),delete c.addTest,delete c.addAsyncTest;for(var p=0;p<Modernizr._q.length;p++)Modernizr._q[p]();e.Modernizr=Modernizr}(window,document);

56
site/candybox/nl/faq.html Normal file
View File

@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! nerderlandse F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>Nederlandse F.A.Q. (Vaak gestelde vragen)</h1>
<b>Hey, je kan alleen maar snoepjes eten of op de grond gooien, wat een onzin!</b>
Heb een klein beetje geduld! ;-)
<b>Ik heb de vijf tekens van mijn opgeslagen spel, maar ik weet niet hoe ik mijn spel moet laden!</b>
Wanneer je op de “save”-knop klikt, verschijnt de link ernaast. Je moet gewoon op deze link klikken en je opgeslagen spel wordt geladen. Je kunt de link zelfs in je favorieten opslaan als je wilt!
Als je de link niet hebt bewaard, maar je hebt wel de vijf tekens van je naam, gebruik dan dit adres:
http://candies.aniwey.net/index.php?pass=xxxxx
(Vervang xxxxx met de vijf tekens van de naam die je hebt gekregen toen je het spel opsloeg.)
<b>Mijn lolly productie op de boerderij is gestrand... Er staat dat ik x/per dag of x/per uur krijg, maar ik krijg niets.</b>
Je krijgt je lollys wel, maar het zijn echte uren en echte dagen... Je zou meer lollys moeten planten om een x/per minuut productie te krijgen. Dat zal efficiënter zijn.
<b>Ik kan het antwoord op een vraag van de kikker niet vinden :(</b>
Je kunt een vriend om hulp vragen! Antwoorden zijn vaak simpel, maar een beetje verdraaid.
<b>Ik kan naar de smederij gaan, maar het enige dat ik zie is “Theres an anvil here.”. Wat kan ik doen?</b>
Je hebt het geschikte zwaard niet. Heb je alle vragen van de kikker beantwoord? ;)
<b>Ik kan de 60K toverspreuk in de hut niet kopen!</b>
De tovenares, want ze is een tovenares, werkt alleen met magische zwaarden. Je moet eerst je zwaard betoveren voordat je deze spreuk kan kopen.
<b>Ik zie de ketel in mijn inventaris, maar ik er niet bij?!</b>
Deze fout komt voor bij Chrome-gebaseerde browsers op sommige computers.
Zelfs al zie je de ketel tab boven aan de pagina niet, dan zou je het toch nog steeds moeten kunnen bereiken met de 'rechter cursortoets' op het toetsenbord.
<b>Ik heb een fout gevonden!!</b>
Je mag mailen op aniwey@gmail.com. Ik zal mijn best doen het op te lossen !
<b>Ik heb een vraag, een opmerking of iets anders.</b>
Je kunt me mailen op aniwey@gmail.com. Je hoeft niet te aarzelen ;)
</pre>
</body>
</html>

View File

@ -0,0 +1,129 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Polish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
0: Witaj w instrukcji warzenia eliksirów dla początkujących ! (druga edycja)
1: Ta instrukcja skupi się na eliksirach tworzonych z substancji takich, jak : - cukierki - lizaki
2: Trzy reguły warzenia eliksirów 1. Efekt eliksiru zależy od jego zawartości, jak i również od poprawnej kolejności wykonania kolejnych kroków.
3: 2. Możesz wykonać kilka eliksirów naraz. 3. Jest możliwe mieszanie instrukcji w celu wykonania różnych typów mikstur naraz.
4: Spis treści Strony od 10 do 20 (Eliksiry pozytywne), 10-13 : Eliksir pomniejszonego leczenia
5: 14-17 : Eliksir powiększonego leczenia / 18-20 Eliksir nieśmiertelności
6: Spis treści Strony od 22 do 41 (Eliksiry nietypowe), 22-27 : Eliksir żółwi
7: 28-33 : Eliksir klonowania / 34-37 Eliksir WMS / 38-41 Eliksir Supermanowy
8: Spis treści Strony od 42 do 50 (Magiczne przedmioty możliwe do warzenia w kociołku)
9: 42-45 : Magiczne ziarno / 46-50 Magiczna galareta
10: Eliksir pomniejszonego leczenia. Eliksir pomniejszonego leczenia jest eliksirem najłatwiejszym do zwarzenia dla początkujących. Używany podczas misji odnowi ci
11: 50 punktów życia. Dla jednej mikstury będziesz potrzebować 100 cukierków. Wrzuć je do kotła i mieszaj przez około 15 sekund.
12: Możesz mieszać nieco dłużej lub krócej, nie zrobi to dużej różnicy. Kiedy skończysz, wlej eliksir do butelek.
13: Gratulacje! Właśnie stworzyłeś swój pierwszy eliksir pomniejszonego leczenia! N.B.: użyj 200 cukierków dla dwóch eliksirów, 300 dla trzech itd.
14: Eliksir powiększonego leczenia. Eliksir powiększonego leczenia jest nieco trudniejszy do zwarzenia niż poprzedni. Ale jest dużo
15: wydajniejszy: po wypiciu go podczas misji otrzymujemy 100 punktów życia zamiast 50. Jak wykonać miksturę powiększonego leczenia:
16: 1. Do kotła włóż 100 lizaków. 2. Zacznij zdecydowanie mieszać. 3. Podczas, gdy mieszasz, dodaj 100 cukierków do
17: kotła. 4. Przestań mieszać po 20 sekundach. 5. Eliksir wlej do butelek. 6. Gotowe!
18: Eliksir nieśmiertelności. Ten eliksir, wprawdzie łatwy do zwarzenia, wymaga dużej ilości cukierków.
19: Przepis jest prosty: Wsyp 2000 cukierków do kotła i mieszaj, aż zaczną cię boleć ręce. Ta mikstura sprawi, że będziesz
20: nieśmiertelny przez jakiś czas, podczas którego nie będziesz odczuwać żadnego bólu ani obrażeń fizycznych.
21:
22: Eliksir żółwi. Żółw! Żółw! Chciałeś kiedyś zostać żółwiem? Będziesz mógł dzięki temu fantastycznemu
23: eliksirowi! Kiedy będziesz żółwiem, będziesz bardziej odporny na obrażenia fizyczne. Ale również będziesz się wolniej poruszać.
24: Przejdźmy do rzeczy. Wsyp 10000 lizaków do kotła. Nie dodawaj żadnych cukierków, w przeciwnym razie eliksir będzie porażką.
25: Teraz podgrzej kocioł do momentu, gdy mikstura będzie wrzeć. Kiedy będzie wrzeć przestań podgrzewać i chwilę pomieszaj.
26: Dodaj taką samą ilość lizaków, jak na początku i, ponownie, podgrzej, aż zacznie wrzeć.
27: Przestań podgrzewać, wlej do butelek, zacznij misję, wypij eliksir, jesteś żółwiem! [ilustracja żółwia]
28: Eliksir klonowania. W każdym z nas jest trochę cukierków. To jest prawo, które rządzi wszechświatem.
29: Co więcej, cukierki są bardzo plastycznym materiałem. Te dwa fakty pozwalają nam zrozumieć działanie tego eliksiru.
30: Eliksir skopiuje twoją wewnętrzną strukturę i wytworzy klon ciebie prawie w całości wykonanego z cukierków (jest też trochę wody).
31: Kroki: Spal wodę w kotle. Do palącej się wody wsyp tyle cukierków, ile możesz.
32: To proste: im więcej cukierków, tym więcej eliksirów! (pamiętaj jednak, aby wsypać wymagane minimum)
33: [Ilustracja koła życia] "Koło życia"
34: Eliksir WMS. WMS oznacza "Wydostań Mnie Stąd". Ten eliksir służy do wybawiania się z krytycznych sytuacji.
35: Teleportuje cię on do innej lokacji. Może będzie bezpieczniejsza, może nie. Kto wie? Ekscytujące, nieprawdaż?
36: Najpierw wsyp do kotła bazową ilość 10000 cukierków. Następnie, dodaj po 500 lizaków dla każdego eliksiru, jaki chcesz zrobić.
37: Nigdy nie zmieniaj bazowej ilości 10000 cukierków. Następnie chwilę pomieszaj i wlej do butelek. Ciesz się nietypowymi eliksirami!
38: Eliksir Supermanowy. Ten eliksir zrobi z ciebie Supermana dając ci fantastyczną pelerynę.
39: Niektórzy mówią, że to jest bezużyteczne. My odpowiadamy, że to jest po prostu szpanerskie! W każdym razie, aby zrobić: wsyp 180 cukierków
40: do kotła. Pomieszaj. Pomyśl o Supermanie. Pomyśl jeszcze raz. Wlej do butelki.
41: Gotowe! [ilustracja loga Supermana]
42: Ziarno. Według starożytnej legendy, drzewa są żródłem wszystkich cukierków na całym świecie. Istnieje ponoć
43: gdzieś we wrzechświecie gigantyczne drzewo, które pozostaje nienazwane. Te drzewo daje swoim odkrywcom nieskończony napływ cukierków.
44: W każdym razie, nie odkryliśmy go jeszcze, ale odkryliśmy, że jest możliwe stworzenie magicznego ziarna, z którego wyrasta wytrzymałe drzewo. I może być ono przydatne podczas misji.
45: Podgrzej wodę w kotle. Dodaj 650 cukierków, przestań gotować i włóż nasiona w butelkę. Teraz, sadź drzewa!
46: Galareta. Myślałeś kiedyś o jakimś rodzaju bomby do użycia podczas misji? Jeśli tak, galareta jest
47: właśnie dla ciebie! Jest ona trudna do przygotowania, ale całkiem potężna. Ta galareta wybucha przy kontakcie i zadaje
48: duże obrażenia. Są trzy kroki potrzebne do wykonania galarety odpowiadające jej trzem warstwom. Krok pierwszy:
49. Wsyp 600 cukierków, zagotuj wodę na chwilę. Krok drugi: Dodaj 6000 lizaków, chwilę zamieszaj.
50: Krok trzeci: powtórz krok pierwszy. Zwróć uwagę, że galaretę możesz kłaść tylko za sobą. Powodzenia w misjach!
51:
52: ~ Koniec ~ Dziękujemy za przeczytanie! Mamy nadzieję, że ta książka ci pomogła. Nie krępuj się ją rozprowadzać!
53: Współautorzy :
- czarodziejka
- nekroman
- szewc
- matematyk
- ???
Szczęśliwego warzenia ~
</pre>
</body>
</html>

50
site/candybox/pl/faq.html Normal file
View File

@ -0,0 +1,50 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! polskie F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>Polskie F.A.Q</h1>
<b>Hej, można jeść tylko cukierki lub rzucać je na ziemię, to bzdura!</b>
Bądź cierpliwy ;)
<b>Mam nazwę do mojej postaci, ale nie wiem jak załadować swoją grę!</b>
Kiedy klikniesz "Save", odnośnik do Twojej postaci pojawi się obok, wystarczy kliknąć. Możesz zapisać link do swoich zakładek, jeżeli chcesz! Jeżeli nie zapisałeś sobie linku, ale pamiętasz/zapisałeś sobie nazwę, możesz skorzystać z tego adresu:
http://candies.aniwey.net/index.php?pass=xxxxx
(Musisz zmienić "xxxxx" na swoją nazwe postaci, która została podana podczas zapisywania.)
<b>Moja farma lizaków utknęła, jest napisane, że powinienem dostawać określoną liczbę lizaków, ale nie dostaje nic...</b>
Dobrze, dostaniesz swoje lizaki, ale to są prawdziwe godziny i prawdziwe dni.... Możesz zasadzić więcej lizaków, aby Twoja produkcja była bardziej efektywna.
<b>Nie mogę znaleźć odpowiedzi na pytanie żaby :"(</b>
Możesz poprosić przyjaciela o pomoc! Odpowiedzi są zwykle proste, ale trochę pokręcone.
<b>Mogę iść do kuźni, ale wszystko co widzę to "Tutaj jest kowadło.", kiedy mogę go użyć?</b>
Nie masz odpowiedniego miecza.
<b>Nie mogę kupić czaru!</b>
Czarodziejka, ponieważ jest ona czarodziejką, może działać tylko na miecze magiczne. Dlatego właśnie trzeba zaczarować swój miecz przed kupieniem czaru.
<b>Widzę kociołek w moim ekwipunku, ale nie widzę takiej zakładki, czemu?!</b>
Ten błąd zdarza się w niektórych przeglądarkach (Chrome, na przykład), na niektórych komputerach.
Nawet jeśli nie widzisz zakładki "Cauldron" na górze strony, powinieneś uzyskać do niego dostęp klikając prawą strzalkę na Twojej klawiaturze.
<b>Znalazłem buga!</b>
Możesz wysłać do mnie o tym maila na adres aniwey@gmail.com. Spróbuję to naprawić!
<b>Mam pytanie, uwagę, czy cokolwiek innego.</b>
Możesz wysłać do mnie maila o tym na aniwey@gmail.com. Nie wstydź się. ;)
Translated by HartOre
</pre>
</body>
</html>

View File

@ -0,0 +1,28 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Polish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Oto krótki słowniczek dla naszych polskich przyjaciół anglofobów :-)<br><br>
<b>Tłumaczenie słów kluczowych w grze :</b><br><br>
candies : cukierki<br>
lollipops : lizaki<br>
chocolate bar : tabliczka czekolady<br>
The candy merchant : handlarz cukierków<br>
The lollipop farm : farma lizaków<br>
potion : eliksir<br>
scroll : zwój<br><br>
<b>Tłumaczenie pytań żaby :</b> <a href="swamp.html">tutaj</a><br><br>
<b>Tłumaczenie przedmiotów :</b> <a href="objets.html">tutaj</a> (możliwe spoilery)<br><br>
<b>Tłumaczenie mikstur / zwojów / specjalnych przedmiotów :</b> <a href="potions.html">tutaj</a> (możliwe spoilery)<br><br>
<b>Tłumaczenie instrukcji warzenia eliksirów :</b> <a href="chaudron.html">tutaj</a> (możliwe spoilery)<br><br>
Tłumaczenie: Piotr Marczyński
</body>
</html>

View File

@ -0,0 +1,44 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Polish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Tłumaczenie nazw przedmiotów</b><br><br>
<u>The lollipop farm's key</u> : Klucz do farmy cukierków<br>
<u>The seven-league boots</u> : Siedmiomilowe buty<br>
<u>The map to the Swampy Swamp</u> : Mapa do Bagnistego Bagna<br>
<u>The map to the sorceress' hut</u> : Mapa do chaty wiedźmy<br>
<u>The map to the wishing well</u> : Mapa do studni życzeń<br>
<u>The magician's hat</u> : Czapka magika<br>
<u>The pink ring of calmness</u> : Różowy pierścień spokoju<br>
<u>The map to the forge</u> : Mapa do kuźni<br>
<u>The candies converter</u> : Konwerter cukierków<br>
<u>A plate armour</u> : Pancerz<br>
<u>A cauldron</u> : Kocioł<br>
<u>A magical horn</u> : Magiczny róg<br>
<u>The horn of plenty</u> : Róg urodzaju<br>
<u>An old amulet</u> : Stary amulet<br><br>
<b>Tłumaczenie opisów nazw przedmiotów</b><br><br>
<u>The lollipop farm's key</u> : Ten klucz przynosi farmę lizaków to twojego pudełka cukierków.<br>
<u>The seven-league boots</u> : Te buty zwiększają twoją prędkość podczas misji.<br>
<u>The map to the Swampy Swamp</u> : Bagniste Bagno jest najbagnistniejszym bagnem, jakie kiedykolwiek widziałeś.<br>
<u>The map to the sorceress' hut</u> : W tej chacie żyje potężna wiedźma! Moje ci pomóc... ale nie za darmo.<br>
<u>The map to the wishing well</u> : Miej życzenie, pomyśl je, każde może spełnić się...<br>
<u>The magician's hat</u> : Noszenie tej czapki zwiększa twoją magię.<br>
<u>The pink ring of calmness</u> : Ten różowy pierścień pomoże ci kontrolować swój oddech. Będziesz szybciej regenerował siły po misji.<br>
<u>The map to the forge</u> : Kowadło może być bardzo użyteczne, jeśli masz odpowiedni miecz...<br>
<u>The candies converter</u> : Kiedy włączony w pudełku cukierków, te zadziwiające urządzenie szybko przekonwertuje twoje cukierki na lizaki. Jeden do jednego!<br>
<u>A plate armour</u> : Ta silna zbroja chroni cię przed przeciwnikami. Tracisz mniej punktów zdrowia.<br>
<u>A cauldron</u> : Ten kocioł pozwala na ważenie różnego rodzaju eliksirów używając surowych, powszechnych materiałów, jak cukierki czy liazki.<br>
<u>A magical horn</u> : Ten magiczny róg należał do jednorożca. Noszenie go powoduje ciągłe odnawianie zdrowia podczas misji!<br>
<u>The horn of plenty</u> : Róg urodzaju, ukradziony od Ploutosa przez króla krów, który myślał, że to prawdziwy róg. Ten mityczny przedmiot potroi twoją produkcję lizaków.<br>
<u>An old amulet</u> : Ten stary amulet, znaleziony w zwłokach martwego wojownika jest znany z przynoszenia płodności jego właścicielowi. Potroi on twoją produkcję cukierków.
</body>
</html>

View File

@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Polish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Tłumaczenie nazw</b><br><br>
<u>Seed</u> : Ziarno<br>
<u>Jelly</u> : Galareta<br><br>
<u>Health potion</u> : Eliksir leczenia<br>
<u>Escape potion</u> : Eliksir ucieczki<br>
<u>Berserk potion</u> : Eliksir Berserkowy<br><br>
<u>Major health potion</u> : Eliksir powiększonego leczenia<br>
<u>Turtle potion</u> : Eliksir żółwi<br>
<u>Invulnerability potion</u> : Eliksir nieśmiertelności<br>
<u>Superman potion</u> : Eliksir Supermanowy<br>
<u>Cloning potion</u> : Eliksir klonowania<br>
<u>G.M.O.O.H. potion</u> : Eliksir WMS (Wydostań Mnie Stąd)<br><br>
<u>Fire scroll</u> : Zwój ognia<br>
<u>Acid rain scroll</u> : Zwój kwaśnego deszczu<br>
<u>Teleport scroll</u> : Zwój teleportacji<br>
<u>Imp invocation scroll</u> : Zwój przywołania chochlika<br>
<u>Earthquake scroll</u> : Zwój trzęsienia ziemi<br><br>
<b>Tłumaczenie opisów</b><br><br>
<u>Seed</u> : Z tego ziarna może wyrosnąć cukierkowe drzewo. Cukierkowe drzewo jest zrobione z cukierków i potrzebuje dużo czasu, aby je zciąć. Użycie tego ziarna postawi przed tobą drzewo, jeśli jest na nie miejsce.<br>
<u>Jelly</u> : Ta starannie przygotowana galareta wybuchnie w kontakcie z czymkolwiek próbującym ją dotknąć zadając duże obrażenia. Użycie go postawi galaretę za tobą.</br><br>
<u>Health potion</u> : Użyj tego eliksiru pomniejszonego leczenia w walce, aby przywrócić trochę punktów życia.<br>
<u>Escape potion</u> : Eliksir ucieczki pozwala na ucieczkę z misji unikając kary czasowej. Pozwoli ci uciec naprawdę szybko!<br>
<u>Berserk potion</u> : Eliksir berserkowy przemienia cię w... BERSERRRKAAAAAAAAA!<br><br>
<u>Major health potion</u> : Ten eliksir powiększonego leczenia jest dwukrotnie bardziej efektywny niż pomniejszony.<br>
<u>Turtle potion</u> : Kiedy wypijesz eliksir żółwi, stajesz się żółwiem. Chodzisz wolniej, ale jesteś odpornieszy na ataki przeciwników.<br>
<u>Invulnerability potion</u> : Dzięki eliksorowi nieśmiertelności stajesz się na jakiś czas nieśmiertelny, ale zapełnia twój żołądek: przez długi czas nie będziesz mógł wypić kolejnego eliksiru.<br>
<u>Superman potion</u> : Ten eliksir Supermanowy daje ci perukę i wyglądasz jak Superman do końca misji!<br>
<u>Cloning potion</u> : Elisir klonowania cię, cóż... sklonuje. Twój klon będzie miał tyle samo punktów życia, co ty w momencie wypicia eliksiru, ale nie będzie miał twojej zbroi ani miecza. Będzie walczył "sklonowanym mieczem", który zadaje odpowiednie obrażenia. Klon będzie postawiony przed tobą, jeśli będzie miejsce.<br>
<u>G.M.O.O.H. potion</u> : Ten eliksir "Wydostań Mnie Stąd" teleportuje cię gdzie indziej. Miejsce nie jest ani troche przewidywalne.<br><br>
<u>Fire scroll</u> : Ten potężny zwój ognia użyty podczas walki spali twojego przeciwnika.<br>
<u>Acid rain scroll</u> : Ten zwój kwaśnego deszczu natychmiast uszkodzi wszystkich w całej krainie (wliczając ciebie).<br>
<u>Teleport scroll</u> : Ten zwój teleportacji powróci cię na początek misji. Przydatne aby odpocząć!<br>
<u>Imp invocation scroll</u> : Ten zwój przywołania chochlika, jeśli jest wystarczająco miejsca, przywoła przed tobą chochlika, który będzie wraz z tobą walczył.<br>
<u>Earthquake scroll</u> : Ten zwój trzęsienia ziemi zada dużo obrażeń wszystkim w całej krainie.<br><br>
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Polish glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Tłumaczenie pytań żaby <b>(odpowiedzi muszą być po angielsku!)</b>
<br><br><br>
Pytanie 1 : Czy _naprawdę_ kochasz cukierki?
<br><br>
Pytanie 2 : Jeśli A jest przypisane B, B jest przypisane C, D jest przypisane A, a E jest przypisane C, do czego jest przypisane A?
<br><br>
Pytanie 3 : Jest 10 dni. Jeśli dam ci pierwszego dnia 1 cukierek, a każdego kolejnego dwa razy tyle cukierków, co dnia poprzedniego, to ile cukierków dostaniesz dnia 10?
<br><br>
Pytanie 4 : Gdybyś mógł być czymkolwiek chcesz, czym byś był?
<br><br>
Pytanie 5 : Oto historyjka: są lis, lew i wilk w kraterze księżycowym. Lis chce ugryźć lwa, lew wilka, a wilk lisa. Pada śnieg, a krzew się wszystkiemu przygląda. Komu podoba się ta historyjka?
<br><br>
Pytanie 6 : Teraz napisz odpowiedź na to pytanie, a ja ci dam specjalny prezent: co jest jedyną rzeczą wykraczającą poza limity wszechświata?
</body>
</html>

60
site/candybox/pt/faq.html Normal file
View File

@ -0,0 +1,60 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! portuguese F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>F.A.Q. (Perguntas Frequentes)</h1>
<b>Hey, eu só posso comer doces (eat candies) ou jogá-los no chão (Throw 10 candies on the ground), que bosta!</b>
Seja paciente ! ;)
<b>Eu sei meu nome de 5 dígitos, mas não sei como dar load no jogo!</b>
Quando você clica no botão "Save", aparece um link próximo ao botão. Se você clicar nesse link você terá dado load no seu jogo. Você pode inclusive favoritar esse link se quiser ! (Ctrl + D)
Se você não salvar esse link, mas tiver o seu nome (de 5 dígitos, que aparece quando você salva) use o seguinte endereço:
http://candies.aniwey.net/index.php?pass=xxxxx
(você precisa trocar xxxxx pelos 5 caracteres que o jogo te passou quando você salvou)
<b>Minha produção de pirulitos (lollipop) na fazenda está estagnada.. está escrito que eu vou receber x/dia (x/day) ou x/hora (x/hour) mas eu não estou recebendo nada..</b>
Você vai receber os seus pirulitos, mas esses prêmios vêm em tempo real... você deve plantar mais pirulitos para chegar a uma produção de x/min, que vai ser mais eficiente!
<b>Eu não consigo descobrir a charada do sapo (frog) :'(</b>
Você pode pedir ajuda a um amigo! As respsotas são simples, mas um bem sacadas.
<b>Eu já posso ir até a forja, mas tudo o que vejo é o recado 'There's an anvil here'. O que eu posso fazer?</b>
Você não deve ter a espada correta.. Você respondeu a todas as perguntas do sapo? ;)
<b>Não consigo comprar a magia de 60k na cabana!</b>
A bruxa, já que é uma bruxa, só consegue trabalhar com espadas mágicas. Por isso você precisa encantar a sua espada antes de comprar essa magia!
<b>Consigo ver o caldeirão no meu inventário, mas não consigo acessá-lo!</b>
Esse bug pode acontecer em navegadores baseados no Chrome, em alguns computadores.
Mesmo que você não consiga ver o botão do caldeirão no topo da sua página, você pode acessá-lo através do 'botão direito' do seu teclado (ao lado do ctrl direito em teclados ABNT2)
<b>Encontrei um erro!</b>
Você pode mandar um e-mail para o criador do jogo: aniwey@gmail.com . Ele ficará feliz em tentar corrigir o bug!
<b>Eu tenho uma pergunta, recado ou qualquer outra mensagem.</b>
Você pode mandar um e-mail para o criador do jogo: aniwey@gmail.com
Translated by Bruno Esteves
</pre>
</body>
</html>

View File

@ -0,0 +1,30 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Portuguese glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Glossário para todos aqueles que falam o português do Brasil :-)<br/><br/>
<b>Tradução dos principais termos do jogo :</b><br/><br/>
Candies - Doces<br/>
Lollipops - Pirulitos<br/>
Chocolate bar - Barra de chocolate<br/>
Candy merchant - Vendedor de doces<br/>
Lollipop farm - Fazenda de pirulitos<br/>
Potion - Poção<br/>
Scroll - Pergaminho<br/><br/>
<b>Tradução das perguntas do sapo</b> : <a href="swamp.html">clique aqui</a><br/>
<b>Tradução dos objetos do inventário</b> : <a href="objets.html">clique aqui</a> (possíveis spoilers)<br/>
<b>Tradução das poções, pergaminhos e objetos especiais</b> : <a href="potions.html">clique aqui</a> (possíveis spoilers)<br/><br/><br/>
Translated by TranslaCAT
</body>
</html>

View File

@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Portuguese glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Tradução dos objetos</b><br/><br/>
<u>The lollipop farm's key</u> - A chave da fazenda de pirulitos<br/>
<u>The seven-league boots</u> - As botas de sete léguas<br/>
<u>The map to the Swampy Swamp</u> - O mapa para o Pântano Pantanoso<br/>
<u>The map to the sorceress' hut</u> - O mapa para a cabana da feiticeira<br/>
<u>The map to the wishing well</u> - O mapa para o poço dos desejos<br/>
<u>The magician's hat</u> - O chapéu do mago<br/>
<u>The pink ring of calmness</u> - O anel rosa da calmaria<br/>
<u>The map to the forge</u> - O mapa para a forja<br/>
<u>The candies converter</u> - O conversor de doces<br/>
<u>A plate armour</u> - Uma armadura de placas<br/>
<u>A cauldron</u> - Um caldeirão<br/>
<u>A magical horn</u> - Um chifre mágico<br/>
<u>The horn of plenty</u> - O chifre da abundância<br/>
<u>An old amulet</u> - Um amuleto antigo<br/><br/>
<b>Tradução das descrições</b><br/><br/>
<u>The lollipop farm's key</u> - Esta chave permite que você acesse a fazenda de doces.<br/>
<u>The seven-league boots</u> - Estas botas aumentam a sua velocidade durante as missões<br/>
<u>The map to the Swampy Swamp</u> - O Pântano Pantanoso é o pântano mais pantanoso que você verá em vida.<br/>
<u>The map to the sorceress' hut</u> - Mora uma poderosa bruxa nessa cabana. Talvez ela ajude você... por um preço.<br/>
<u>The map to the wishing well</u> - Faça um pedido, faça-o agora, ganhe o que quiser e vá embora...<br/>
<u>The magician's hat</u> - Com este chapéu, seus feitiços ficam mais poderosos.<br/>
<u>The pink ring of calmness</u> - Este anel rosa melhora o controle da sua respiração. Você se recompõe mais rápido depois de cada missão.<br/>
<u>The map to the forge</u> - Uma bigorna pode lhe ser muito útil, caso tenha a espada adequada.<br/>
<u>The candies converter</u> - Quando ativado na caixa de doces, este incrível objeto converterá rapidamente todos os seus doces em pirulitos. A proporção é de um para um.<br/>
<u>A plate armour</u> - Esta forte armadura protege você dos seus inimigos. Reduz o dano recebido em batalhas.<br/>
<u>A cauldron</u> - Este caldeirão permite que você prepare diversas poções usando materiais simples, como doces e pirulitos.<br/>
<u>A magical horn</u> - Este chifre mágico pertencia a um unicórnio. Com ele, você recuperará sua saúde continuamente durante as missões!<br/>
<u>The horn of plenty</u> - O chifre da abundância, que foi roubado de Ploutos pelo Rei Vaca, achando que era um chifre de verdade. Esse objeto mítico triplicará a produção da sua fazenda de pirulitos!<br/>
<u>An old amulet</u> - Este antigo amuleto, encontrado no corpo de um guerreiro morto, traz prosperidade a quem o carregar. Ele triplicará a sua produção de doces.<br/>
<br/><br/>
Translated by TranslaCAT
</body>
</html>

View File

@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Portuguese glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<b>Tradução dos nomes</b><br/><br/>
<u>Seed</u> - Semente<br/>
<u>Jelly</u> - Gelatina<br/><br/>
<u>Health potion</u> - Poção de vida<br/>
<u>Escape potion</u> - Poção da fuga<br/>
<u>Berserk potion</u> - Poção de berserk<br/><br/>
<u>Major health potion</u> - Poção grande de vida<br/>
<u>Turtle potion</u> - Poção da tartaruga<br/>
<u>Invulnerability potion</u> - Poção da invulnerabilidade<br/>
<u>Cloning potion</u> - Poção de clonagem<br/>
<u>G.M.O.O.H. potion</u> - Poção Tirem-me Daqui<br/><br/>
<u>Fire scroll</u> - Pergaminho do fogo<br/>
<u>Acid rain scroll</u> - Pergaminho da chuva ácida<br/>
<u>Teleport scroll</u> - Pergaminho de teleporte<br/>
<u>Imp invocation scroll</u> - Pergaminho de evocação de diabrete<br/>
<u>Earthquake scroll</u> - Pergaminho de terremoto<br/><br/>
<b>Tradução das descrições</b><br/><br/>
<u>Seed</u> - Essa semente é capaz de fazer crescer uma árvore de doces. A árvore de doces é feita de doces e demora bastante para ser cortada. Ao se plantar a semente, uma árvore crescerá à sua frente, caso haja espaço suficiente.<br/>
<u>Jelly</u> - Essa gelatina preparada por especialistas explode quando em contato com qualquer coisa que tente ultrapassá-la, causando bastante dano. Quando usada, ela será aplicada em sua espada.<br/><br/>
<u>Health potion</u> - Use essa pequena poção durante combates para recuperar alguns pontos de vida.<br/>
<u>Escape potion</u> - A poção da fuga permite que você escape de uma missão sem sofrer penalidades de tempo. Você fugirá bem, bem rápido.<br/>
<u>Berserk potion</u> - A poção de berserk transformará você em um... BERSERKEEEER!<br/><br/>
<u>Major health potion</u> - Essa poção grande é duas vezes mais eficaz que a pequena.<br/>
<u>Turtle potion</u> - Ao usar essa poção, você se transformará em uma tartaruga. Efeito- você ficará mais resistente aos ataques inimigos. Efeito colateral- você andará mais lentamente.<br/>
<u>Invulnerability potion</u> - Essa poção o tornará invencível durante um tempo, mas entupirá seu estômago e você não poderá beber outra poção por um longo período.<br/>
<u>Superman potion</u> - Essa poção lhe dará uma capa para que você fique igual ao Super-Homem pelo resto da missão!<br/>
<u>Cloning potion</u> - Essa poção vai, hã... clonar você. Seu clone terá os mesmos pontos de vida que você tinha ao beber a poção, mas não terá sua armadura nem sua espada. Ele lutará usando uma "espada clonada", que causará uma certa quantidade de dano. O clone será posicionado à sua frente, caso haja espaço suficiente.<br/>
<u>G.M.O.O.H. potion</u> - Essa poção teleportará você para outro lugar. Não é possível prever qual será o destino.<br/><br/>
<u>Fire scroll</u> - Esse poderoso pergaminho queimará seu inimigo quando for usado em uma batalha.<br/>
<u>Acid rain scroll</u> - Esse pergaminho causará dano instantaneamente a tudo e a todos (você inclusive).<br/>
<u>Teleport scroll</u> - Esse pergaminho levará você de volta ao início da missão. Muito útil para descansar um pouquinho!<br/>
<u>Imp invocation scroll</u> - Esse pergaminho evocará (caso haja espaço suficiente) um diabrete à sua frente que lutará por você.<br/>
<u>Earthquake scroll</u> - Esse pergaminho causará muito dano a tudo e a todos.<br/>
<br/><br/>
Translated by TranslaCAT
</body>
</html>

View File

@ -0,0 +1,30 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Portuguese glossary</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Tradução das perguntas do sapo <b>(atenção, todas as perguntas ainda devem ser respondidas em inglês!!)</b>
<br><br><br>
Pergunta 1 - Você gosta *de verdade* de doces? 
<br><br>
Pergunta 2 - Se A implica em B, B implica em C, D implica em A, e E implica em D, então A implica em quê? 
<br><br>
Pergunta 3 - Considere 10 dias. Se eu lhe dou um doce no primeiro dia e, a cada dia seguinte, dou a você o dobro de doces do dia anterior, quantos doces você terá no décimo dia? 
<br><br>
Pergunta 4 - Se você pudesse ser o que quisesse, o que você escolheria? 
<br><br>
Pergunta 5 - Na história, Havia uma raposa, um leão e um lobo em uma cratera lunar. A raposa mordeu o rabo do leão, o leão mordeu o rabo do lobo, e o lobo mordeu o rabo da raposa. Está nevando e um arbusto observa tudo. Quem está se divertindo com a história?
<br><br>
Pergunta 6 - Sem tradução por razões desconhecidas.
<br/><br/><br/>
Translated by TranslaCAT
</body>
</html>

View File

@ -0,0 +1,60 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! russian F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<h1>Ча.Во. (Часто Задаваемые Вопросы)</h1><br/><br/>
<b>Эй, тут можно только есть конфеты или кидать их на землю, что за фигня?!</b><br/><br/>
Просто нужно немного терпения! ;)<br/><br/>
<b>У меня есть кодовое слово из 5 букв, но я не знаю, как загрузить игру.</b><br/><br/>
Когда вы нажимаете кнопку "Save", рядом с ней появляется ссылка. Нужно просто кликнуть по ней и ваша сохранённая игра загрузится. Вы можете добавить эту ссылку в закладки, если пожелаете!<br/><br/>
Если вы не сохранили ссылку, но кодовое слово у вас есть, просто используйте этот адрес:<br/>
http://candies.aniwey.net/index.php?pass=xxxxx<br/>
(нужно заменить xxxxx на ваше кодовое слово, которое выдалось при сохранении игры)<br/><br/>
<b>Моя леденцовая ферма не производит леденцы! Написано, что производится x/день или x/час но я не получаю их.</b><br/><br/>
Вы получите ваши леденцы, как только придёт время, ведь это настоящие дни и настоящие часы... Вы должны посадить больше леденцов, чтобы увеличить скорость производства до x/мин или выше!<br/><br/>
<b>Я не могу найти ответы на вопросы от лягушки :'(</b><br/><br/>
Вы можете попросить друга о помощи! Ответы зачастую просты, но неочевидны.<br/><br/>
<b>I Я могу пройти в кузницу, но я всё, что я вижу там - это "Здесь стоит наковальня." Когда я смогу ей пользоваться?</b><br/><br/>
У вас ещё нет подходящего меча. Вы точно ответили на все вопросы от лягушки? ;)<br/><br/>
<b>Я не могу купить заклинание за 60 тысяч в хижине!</b><br/><br/>
Волшебница, как можно понять из её имени, может работать только с волшебными мечами. Поэтому вам нужно сперва зачаровать свой меч для того, чтобы получить возможность покупать заклинания.<br/><br/>
<b>Я вижу котёл в своём инвентаре, но я не могу получить к нему доступ!</b><br/><br/>
Эта ошибка иногда случается в браузерах, основанных на движке Chromium (например, Google Chrome), на некоторых компьютерах.<br/>
Даже если вы не видите опцию котла вверху на странице, вы всё равно сможете туда попасть, используя клавишу "стрелка вправо" на клавиатуре.<br/><br/>
<b>Я нашёл ошибку/баг в игре!</b><br/><br/>
Вы можете писать мне на почту aniwey@gmail.com и я буду рад попытаться её исправить!<br/><br/>
<b>У меня есть вопрос, пожелание, совет или что-нибудь похожее.</b><br/><br/>
Вы можете писать все свои вопросы, пожелания, советы или что-нибудь похожее на них на адрес aniwey@gmail.com. Не стесняйтесь ;)<br/><br/>
Translated by Vlad Luchansky.
</body>
</html>

62
site/candybox/ru/faq.html Normal file
View File

@ -0,0 +1,62 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Candy box ! russian F.A.Q.</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
<pre>
<h1>Ча.Во. (Часто Задаваемые Вопросы)</h1>
<b>Эй, тут можно только есть конфеты или кидать их на землю, что за фигня?!</b>
Просто нужно немного терпения! ;)
<b>У меня есть кодовое слово из 5 букв, но я не знаю, как загрузить игру.</b>
Когда вы нажимаете кнопку "Save", рядом с ней появляется ссылка. Нужно просто кликнуть по ней и ваша сохранённая игра загрузится. Вы можете добавить эту ссылку в закладки, если пожелаете!
Если вы не сохранили ссылку, но кодовое слово у вас есть, просто используйте этот адрес:
http://candies.aniwey.net/index.php?pass=xxxxx
(нужно заменить xxxxx на ваше кодовое слово, которое выдалось при сохранении игры)
<b>Моя леденцовая ферма не производит леденцы! Написано, что производится x/день или x/час но я не получаю их.</b>
Вы получите ваши леденцы, как только придёт время, ведь это настоящие дни и настоящие часы... Вы должны посадить больше леденцов, чтобы увеличить скорость производства до x/мин или выше!
<b>Я не могу найти ответы на вопросы от лягушки :'(</b>
Вы можете попросить друга о помощи! Ответы зачастую просты, но неочевидны.
<b>I Я могу пройти в кузницу, но я всё, что я вижу там - это "Здесь стоит наковальня." Когда я смогу ей пользоваться?</b>
У вас ещё нет подходящего меча. Вы точно ответили на все вопросы от лягушки? ;)
<b>Я не могу купить заклинание за 60 тысяч в хижине!</b>
Волшебница, как можно понять из её имени, может работать только с волшебными мечами. Поэтому вам нужно сперва зачаровать свой меч для того, чтобы получить возможность покупать заклинания.
<b>Я вижу котёл в своём инвентаре, но я не могу получить к нему доступ!</b>
Эта ошибка иногда случается в браузерах, основанных на движке Chromium (например, Google Chrome), на некоторых компьютерах.
Даже если вы не видите опцию котла вверху на странице, вы всё равно сможете туда попасть, используя клавишу "стрелка вправо" на клавиатуре.
<b>Я нашёл ошибку/баг в игре!</b>
Вы можете писать мне на почту aniwey@gmail.com и я буду рад попытаться её исправить!
<b>У меня есть вопрос, пожелание, совет или что-нибудь похожее.</b>
Вы можете писать все свои вопросы, пожелания, советы или что-нибудь похожее на них на адрес aniwey@gmail.com. Не стесняйтесь ;)
Translated by Vlad Luchansky.
</pre>
<a href="faq-no-pre.html">alternate version without horizontal scrolling</a>
</body>
</html>

View File

@ -0,0 +1,26 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Русский словарик</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
</head>
<body>
Небольшой словарик для тех, кто не уверен в том, что написано в игре:<br/><br/>
<b>Основные термины:</b><br/><br/>
candies : конфеты<br/>
lollipops : леденцы<br/>
chocolate bar : плитка шоколада<br/>
The candy merchant : Конфетный торговец<br/>
The lollipop farm : Леденцовая ферма<br/>
potion : зелье<br/>
scroll : свиток<br/><br/><br/>
Translated by Vlad Luchansky.
</body>
</html>

View File

@ -0,0 +1,11 @@
String.prototype.replaceAt = function(index, text){
return this.substr(0, index) + text + this.substr(index + text.length);
}
String.prototype.addTagAt = function(index, tagBegin, tagEnd, size){
return this.substr(0, index) + tagBegin + this.substr(index, size) + tagEnd + this.substr(index + size);
}
String.prototype.replaceAt_with_size = function(index, text, size){
return this.substr(0, index) + text + this.substr(index + size);
}

View File

@ -0,0 +1,400 @@
var buttons = {
// Variables
homeButtonsDisabled : false, // Block any enabling home button process when true
// Functions
enableHomeButtons : function(){
if(this.homeButtonsDisabled == true){
this.homeButtonsDisabled = false;
htmlInteraction.enableButtonClass("home_button");
this.checkHomeEnabled();
}
},
enableButton : function(name){
// If the home buttons are enabled or our button isn't a home button
if(this.homeButtonsDisabled == false || htmlInteraction.getElement(name).className != "home_button"){
htmlInteraction.enableButton(name);
}
},
checkEatAndThrowButtons : function(){
// Show the eat button
if(candies.nbrOwned >= 1){
htmlInteraction.showButton("eat");
this.enableButton("eat");
}
else htmlInteraction.disableButton("eat");
// Show the throw button
if(candies.nbrOwned >= 10){
htmlInteraction.showButton("throw_10");
this.enableButton("throw_10");
}
else htmlInteraction.disableButton("throw_10");
},
checkHomeEnabled : function(){
this.checkEatAndThrowButtons();
this.checkQuestBuyingButtons();
this.checkEncrustSwordButton();
this.checkPolishSwordButton();
this.checkCoatSwordButton();
this.checkLollipopsStockShortage();
this.checkObjects();
this.checkLollipopsPlantingButtons();
this.checkQuestTiredTime();
},
checkCandies : function(){
this.checkEatAndThrowButtons();
this.checkQuestBuyingButtons();
this.checkEncrustSwordButton();
this.checkLollipopsStockShortage();
this.checkWishingWell();
},
checkSword : function(){
this.checkQuestBuyingButtons();
this.checkEncrustSwordButton();
this.checkPolishSwordButton();
this.checkCoatSwordButton();
this.checkTabPanel();
},
checkTabPanel : function(){
// If we have a sword
if(sword.name != "none"){
// We enable the tab bar
htmlInteraction.setElementDisplay("tabBar", "");
// And we enable some tabs
tabs.enable(0);
tabs.enable(1);
tabs.enable(2);
// And we show the switch tabs button
htmlInteraction.showButtonClass("toggle");
}
},
checkQuestBuyingButtons : function(){
// Enable/disable quest buying buttons (show/hide is handle by sword&shop algorithms)
// Swords
if(shop.currentSwordButtonId != "none"){ // If the merchant is selling a sword right now
if(candies.nbrOwned >= shop.currentSwordPrice) this.enableButton(shop.currentSwordButtonId);
else htmlInteraction.disableButton(shop.currentSwordButtonId);
}
// Potions & scrolls
if(candies.nbrOwned >= 600) this.enableButton("buy_health_potion");
else htmlInteraction.disableButton("buy_health_potion");
if(candies.nbrOwned >= 150) this.enableButton("buy_escape_potion");
else htmlInteraction.disableButton("buy_escape_potion");
if(candies.nbrOwned >= 400) this.enableButton("buy_scroll");
else htmlInteraction.disableButton("buy_scroll");
},
checkEncrustSwordButton : function(){
// Show the encrust the diamond sword button
if(candies.nbrOwned >= 101 && sword.name == "diamond sword"){
htmlInteraction.showButton("encrust");
this.enableButton("encrust");
htmlInteraction.setElementDisplay("encrust", "inline");
htmlInteraction.setElementDisplay("polish", "none");
htmlInteraction.setElementDisplay("coat", "none");
}
else htmlInteraction.disableButton("encrust");
},
checkPolishSwordButton : function(){
// Show the polish the diamond sword button
if(lollipops.nbrOwned >= 30 && sword.name == "candy diamond sword"){
htmlInteraction.showButton("polish");
this.enableButton("polish");
htmlInteraction.setElementDisplay("encrust", "none");
htmlInteraction.setElementDisplay("polish", "inline");
htmlInteraction.setElementDisplay("coat", "none");
}
else htmlInteraction.disableButton("polish");
},
checkLollipops : function(){
this.checkPolishSwordButton();
this.checkLollipopsPlantingButtons();
this.checkHut();
this.checkLollipopsStockShortage();
this.checkComputer();
},
checkComputer : function(){
if(lollipops.nbrOwned >= 1000000){
htmlInteraction.showButton("computer_bug_1");
htmlInteraction.showButton("computer_comment_1");
}
else{
htmlInteraction.hideButton("computer_bug_1");
}
if(lollipops.nbrOwned >= 10000000){
htmlInteraction.showButton("computer_bug_2");
htmlInteraction.showButton("computer_comment_2");
}
else{
htmlInteraction.hideButton("computer_bug_2");
}
if(lollipops.nbrOwned >= 100000000){
htmlInteraction.showButton("computer_bug_3");
htmlInteraction.showButton("computer_comment_3");
}
else{
htmlInteraction.hideButton("computer_bug_3");
}
if(lollipops.nbrOwned >= 1000000000){
htmlInteraction.showButton("computer_bug_4");
htmlInteraction.showButton("computer_comment_4");
}
else{
htmlInteraction.hideButton("computer_bug_4");
}
if(lollipops.nbrOwned >= 10000000000){
htmlInteraction.showButton("computer_bug_5");
htmlInteraction.showButton("computer_comment_5");
htmlInteraction.showButton("computer_note");
}
else{
htmlInteraction.hideButton("computer_bug_5");
}
if(lollipops.nbrOwned >= 100000000000) htmlInteraction.showButton("computer_bug_6");
else htmlInteraction.hideButton("computer_bug_6");
if(lollipops.nbrOwned >= 1000000000000) htmlInteraction.showButton("computer_bug_7");
else htmlInteraction.hideButton("computer_bug_7");
if(lollipops.nbrOwned >= 10000000000000) htmlInteraction.showButton("computer_bug_8");
else htmlInteraction.hideButton("computer_bug_8");
},
checkCoatSwordButton : function(){
// Show the coat the diamond blbl sword button
if(chocolateBars.nbrOwned >= 1 && sword.name == "polished candy diamond sword"){
htmlInteraction.showButton("coat");
this.enableButton("coat");
htmlInteraction.setElementDisplay("encrust", "none");
htmlInteraction.setElementDisplay("polish", "none");
htmlInteraction.setElementDisplay("coat", "inline");
}
else htmlInteraction.disableButton("coat");
},
checkChocolateBars : function(){
this.checkCoatSwordButton();
},
checkLollipopsStockShortage : function(){
// If the shop is shown
if(shop.shown){
// If there's a lollipops stock shortage
if(lollipops.stockShortage == true){
// We show the stock shortage and hide the buttons used to buy lollipops
htmlInteraction.setElementVisibility("lollipops_stock_shortage", true);
htmlInteraction.hideButton("buy_1_lollipop");
htmlInteraction.hideButton("buy_10_lollipops");
}
// Else, no lollipops stock shortage
else{
// We don't show the stock shortage
htmlInteraction.setElementVisibility("lollipops_stock_shortage", false);
// We show and maybe enable the button to buy one lollipop
htmlInteraction.showButton("buy_1_lollipop");
if(candies.nbrOwned >= shop.oneLollipopPrice) this.enableButton("buy_1_lollipop");
else htmlInteraction.disableButton("buy_1_lollipop");
// We maybe show and maybe enable the button to buy 500 lollipops
if(candies.nbrOwned >= shop.tenLollipopsPrice || shop.buy10LollipopsButtonShown){
shop.setBuy10LollipopsButtonShown(true);
if(htmlInteraction.isElementVisible("buy_10_lollipops") == false){ // If it wasn't shown yet
htmlInteraction.showButton("buy_10_lollipops");
shop.setMerchantSpeech("There's now a discount for 10 lollipops! Buy them please.. I need candiiiies!");
}
this.enableButton("buy_10_lollipops");
}
if(candies.nbrOwned < shop.tenLollipopsPrice) htmlInteraction.disableButton("buy_10_lollipops");
}
}
},
checkObjects : function(){
// Show the button to go to the swamp map
if(objects.list.swampMap.have){
htmlInteraction.setElementDisplay("go_to_swamp", "block");
htmlInteraction.showButton("go_to_swamp");
this.enableButton("go_to_swamp");
}
// Show the button to go to the hut
if(objects.list.hutMap.have){
htmlInteraction.setElementDisplay("go_to_hut", "block");
htmlInteraction.showButton("go_to_hut");
this.enableButton("go_to_hut");
}
// Show the button to go to the wishing well
if(objects.list.wellMap.have){
htmlInteraction.setElementDisplay("go_to_well", "block");
htmlInteraction.showButton("go_to_well");
this.enableButton("go_to_well");
}
// Show the button to go to the forge
if(objects.list.forgeMap.have){
htmlInteraction.setElementDisplay("go_to_forge", "block");
htmlInteraction.showButton("go_to_forge");
this.enableButton("go_to_forge");
}
// Check the farm visibility
farm.checkVisibility();
// Check some farm's buttons
this.checkLollipopsPlantingButtons();
// Check the candies converter visibility
candiesConverter.checkVisibility();
// Check the cauldron visibility
cauldron.checkVisibility();
},
checkLollipopsPlantingButtons : function(){
// If we have the key of the lollipop farm
if(objects.list.key.have){
// innerHtml of the lp_buttons span
// Plant 1000 button
if(lollipops.nbrOwned >= 1000 && farm.plantingButtonsStep < 4){
farm.setPlantingButtonsStep(4);
}
// Plant 100 button
else if(lollipops.nbrOwned >= 100 && farm.plantingButtonsStep < 3){
farm.setPlantingButtonsStep(3);
}
// Plant 10 button
else if(lollipops.nbrOwned >= 10 && farm.plantingButtonsStep < 2){
farm.setPlantingButtonsStep(2);
}
// Plant 1 button
else if(farm.plantingButtonsStep < 1){
farm.setPlantingButtonsStep(1);
}
// Buttons activation
// Plant 1000 button
if(farm.plantingButtonsStep >= 4){
htmlInteraction.showButton("plant_1000_lp");
if(lollipops.nbrOwned >= 1000){
this.enableButton("plant_1000_lp");
}
else htmlInteraction.disableButton("plant_1000_lp");
}
// Plant 100 button
if(farm.plantingButtonsStep >= 3){
htmlInteraction.showButton("plant_100_lp");
if(lollipops.nbrOwned >= 100){
this.enableButton("plant_100_lp");
}
else htmlInteraction.disableButton("plant_100_lp");
}
// Plant 10 button
if(farm.plantingButtonsStep >= 2){
htmlInteraction.showButton("plant_10_lp");
if(lollipops.nbrOwned >= 10){
this.enableButton("plant_10_lp");
}
else htmlInteraction.disableButton("plant_10_lp");
}
// Plant 1 button
if(farm.plantingButtonsStep >= 1){
htmlInteraction.showButton("plant_1_lp");
if(lollipops.nbrOwned >= 1){
this.enableButton("plant_1_lp");
}
else htmlInteraction.disableButton("plant_1_lp");
}
}
},
checkQuestTiredTime : function(){
// Buttons related to the quest tired time
if(quest.tiredTime == 0 && quest.weAreQuestingRightNow == false) this.enableButton("quest_button");
else htmlInteraction.disableButton("quest_button");
},
checkHut : function(){
if(hut.shown){
switch(hut.step){
case 0:
htmlInteraction.showButton("hut_throw_lollipops");
if(lollipops.nbrOwned >= 10){
this.enableButton("hut_throw_lollipops");
}
else htmlInteraction.disableButton("hut_throw_lollipops");
break;
case 2:
for(var i = 0; i < spells.list.length; i++){
if(hut.canThisSpellBeUsed(i)){
this.enableButton("hut_spell_" + i);
}
else htmlInteraction.disableButton("hut_spell_" + i);
}
// Special surpass button
if(quest.maxLandOrder == 7 && yourself.canSurpass == false){
if(lollipops.nbrOwned >= 1000000) this.enableButton("hut_surpass");
else htmlInteraction.disableButton("hut_surpass");
}
break;
}
}
},
checkWishingWell : function(){
if(wishingWell.shown){
switch(wishingWell.step){
case 0:
if(candies.nbrOwned >= 1){
this.enableButton("wishingWell_throw_candy");
}
else htmlInteraction.disableButton("wishingWell_throw_candy");
break;
}
}
},
checkForge : function(){
if(forge.shown && forge.step == 1){
// Health
if(potions.list.health.shown && potions.list.health.nbrOwned >= 1){
this.enableButton("enchant_health");
}
else htmlInteraction.disableButton("enchant_health");
// Fire
if(potions.list.fireScroll.shown && potions.list.fireScroll.nbrOwned >= 1){
this.enableButton("enchant_fire");
}
else htmlInteraction.disableButton("enchant_fire");
// Imp invocation
if(potions.list.impInvocationScroll.shown && potions.list.impInvocationScroll.nbrOwned >= 1){
this.enableButton("enchant_imp_invocation");
}
else htmlInteraction.disableButton("enchant_imp_invocation");
}
}
};

View File

@ -0,0 +1,78 @@
var candies = {
// Variables
nbrOwned : 0,
nbrEaten : 0,
nbrThrown : 0,
nbrTotal : 0, // The total number we earned in all times
candiesPerSecond : 1,
// Functions
onload : function(){
candies.setNbrOwned(0); // We first have 0 candies
},
eat : function(){
this.setNbrEaten(this.nbrEaten + this.nbrOwned);
this.setNbrOwned(0);
},
setNbrTotal : function(value){
this.nbrTotal = value;
},
setNbrOwned : function(value){
// If this is an increase, we increase nbr total too
if(value > this.nbrOwned){
this.setNbrTotal(this.nbrTotal + value - this.nbrOwned);
}
this.nbrOwned = value;
if(this.nbrOwned != 1) htmlInteraction.setInnerHtml("candies", "You have " + this.nbrOwned + " candies!");
else htmlInteraction.setInnerHtml("candies", "You have 1 candy!");
buttons.checkCandies();
shop.check();
cauldron.updateActionsInfoOnPage();
},
setNbrEaten : function(value){
this.nbrEaten = value;
if(this.nbrEaten != 1) htmlInteraction.setInnerHtml("candies_eaten", "You have eaten " + this.nbrEaten + " candies!");
else htmlInteraction.setInnerHtml("candies_eaten", "You have eaten 1 candy!");
htmlInteraction.setElementVisibility("candies_eaten", true);
},
setCandiesPerSecond : function(value){
this.candiesPerSecond = value;
},
setNbrThrown : function(value){
this.nbrThrown = value;
// We choose which smiley we want to add at the end of the sentence
if(this.nbrThrown <= 10) smiley = ".";
else if(this.nbrThrown <= 20) smiley = "...";
else if(this.nbrThrown <= 30) smiley = "...?";
else if(this.nbrThrown <= 40) smiley = "...? <tt>:|</tt>";
else if(this.nbrThrown <= 50) smiley = "...? <tt>:/</tt>";
else if(this.nbrThrown <= 60) smiley = "...? <tt>:(</tt>";
else if(this.nbrThrown <= 70) smiley = "...? <tt>:[</tt>";
else if(this.nbrThrown <= 80) smiley = "...? <tt>:{</tt>";
else if(this.nbrThrown <= 90) smiley = "...? <tt>:'(</tt>";
else smiley = "...? <tt>(;_;)</tt>";
darkMode.check();
if(this.nbrThrown != 1) htmlInteraction.setInnerHtml("candies_thrown", "You threw " + this.nbrThrown + " candies on the ground" + smiley);
else htmlInteraction.setInnerHtml("candies_thrown", "You threw 1 candy on the ground" + smiley);
htmlInteraction.setElementVisibility("candies_thrown", true);
},
throw10Candies : function(){
if(this.nbrOwned >= 10){ // If we have at least 10 candies
this.setNbrOwned(this.nbrOwned - 10);
this.setNbrThrown(this.nbrThrown + 10);
}
}
};

View File

@ -0,0 +1,56 @@
var candiesConverter = {
// Variables
activated : false, // If true, the candiesConverter is activated
speed : 1, // How many candies the converter can convert into lollipops each 1/10 seconds. The more the candies converted without stopping, the more the speed increase.
// Functions
checkVisibility : function(){
// If we have the candies conveter
if(objects.list.candiesConverter.have){
// We show it on the page
htmlInteraction.setElementDisplay("candies_converter", "inline");
}
},
checkedValueChange : function(){
if(htmlInteraction.getElement("candies_converter_checkbox").checked){
this.setActivated(true);
}
else{
this.setActivated(false);
}
},
convert : function(){
var howMany = 0;
// If we are activated and have candies to convert
if(this.activated && candies.nbrOwned > 0){
// We calculate how many candies we will convert
if(this.speed > candies.nbrOwned){
howMany = candies.nbrOwned;
}
else howMany = this.speed;
// We convert them
candies.setNbrOwned(candies.nbrOwned - howMany);
lollipops.setNbrOwned(lollipops.nbrOwned + howMany);
// We increment the speed
if(this.speed < 10000) this.speed += 1;
else this.speed *= 2;
}
// Else
else{
// We reset speed
this.speed = 1;
}
},
setActivated : function(value){
this.activated = value;
htmlInteraction.getElement("candies_converter_checkbox").checked = value;
}
};

View File

@ -0,0 +1,162 @@
var castleEntrance = {
// Variables
size : 30,
timeSpent : 0, // Time spent since the beginning of the quest
thereIsAMagicBall : false, // True if there's a magic ball right now
magicBallX : 0, // X position of the magic ball
magicBallY : 0, // Y position of the magic ball
// Functions
onload : function(){
land.addLand("Castle's entrance", this.size, 3, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
// Make enemies go toward the left
for(var i = 0; i < quest.things.length; i++){
if(quest.things[i].type == "mob" && quest.things[i-1].type == "none"){
quest.things[i-1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
// We add ennemies
if(this.timeSpent < 1000){ // We must stop adding ennemies after a while, else the player could be blocked in certain conditions
if(this.timeSpent % 16 == 5){
// If there's nothing here, we add a knight
if(quest.things[29].type == "none") quest.things[29] = this.makeKnight();
}
else if(this.timeSpent % 30 == 29){
// If there's nothing here, we add a guard
if(quest.things[29].type == "none") quest.things[29] = this.makeGuard();
}
}
// We handle the magic ball if we spent at least four movements
if(this.timeSpent > 4){
// If there is already a magic ball
if(this.thereIsAMagicBall){
var index = quest.getCharacterIndex();
// If the magic ball just hit the player !
if(Math.abs(this.magicBallX - (index*3 + 1)) <= 1 && this.magicBallY == 19){
// No more magic ball
this.thereIsAMagicBall = false;
// We teleport the player
quest.things[0] = quest.things[index];
quest.things[index] = quest.makeNoneThing();
}
// Else
else{
// If the magic ball is at the right of the player or is above the steps (it mustn't be above the steps)
if(this.magicBallX > index*3 + 1 || this.magicBallX > 77){
this.magicBallX -= 1;
}
// Else, if it's at the left
else if(this.magicBallX < index*3 + 1){
this.magicBallX += 1;
}
// If the magic ball isn't already just above the lawn and we're not too far from the play horizontally
if(this.magicBallY < 19 && Math.abs(this.magicBallX - index*3) < (19 - this.magicBallY)*3){
this.magicBallY += 1;
}
}
}
// If there is not already a magic ball
else{
this.thereIsAMagicBall = true;
this.magicBallX = 83;
this.magicBallY = 1;
}
}
// We increment the time spent
this.timeSpent += 1;
},
load : function(){
// We add some guards on the lawn to slow down the player
quest.things[10] = this.makeGuard();
quest.things[12] = this.makeGuard();
quest.things[15] = this.makeGuard();
quest.things[17] = this.makeGuard();
// We reset the time spent
this.timeSpent = 0;
},
makeGuard : function(){
return land.createMob("GUA", 25, 25, "spear", "One of the castle's guards.", [drops.createDrop("candies", random.getRandomIntUpTo(40))]);
},
makeKnight : function(){
return land.createMob("KNI", 70, 70, "sharp sword", "A knight with a huge armor.", [drops.createDrop("candies", 230 + random.getRandomIntUpTo(70)), drops.createDrop("object", "plateArmour", random.oneChanceOutOf(10))]);
},
getText : function(){
var lines = [];
lines = this.text.slice(0); // It will store the lines of the castle entrance
// We add things to the lines (we use size - 1 to avoid drawing the last position, which is inside the castle)
for(var i = 0; i < this.size - 1; i++){
// If there's a thing
if(quest.things[i].type != "none"){
// Before the first step
if(i < 26){
lines[20] = lines[20].replaceAt(i*3, quest.things[i].text);
}
// On the first step
else if(i == 26){
lines[19] = lines[19].replaceAt(i*3, quest.things[i].text);
}
// On the second step
else if(i <= 28){
lines[18] = lines[18].replaceAt(i*3, quest.things[i].text);
}
}
}
// We add the magic ball
if(this.thereIsAMagicBall){
lines[this.magicBallY] = lines[this.magicBallY].replaceAt(this.magicBallX, "*");
}
// We return the lines
return lines.join("");
},
// Variables
text : [
" __\n",
" <*/\n",
" (}\n",
" |\\\n",
" ||| || || || |\n",
" |`\' `\' `\' `\'.|\n",
" : .:;\n",
" \\-..____..:/ _ _\n",
" :--------:_,\' || |\n",
" |] .:| `\' `\n",
" | ,-. .[| _\n",
" | | | .:|\'--\' _\n",
" | |_| .:| \'--\'\n",
" | \'=\' .:|\n",
" | __ .:|\n",
" |\'--\' .:| _\n",
" | .:| \'-\'\n",
" | \'-| _\n",
" ______| _ .:| _ \'--\'\n",
" ___||||||| \'-\' .:| \'-\'\n",
" ___|||||||||;._____.::-------\n",
"\' \" \'\' \" \"\' \"\' \' \" \' \"\' \'\" \' \'\" \"\' \' \'\" \" \' \' \'\" \' \' \'\" \' \'\" \'\" \'\' \' \'\" \" \' \'\" \' \' \" \'\" \" \" \' \'\" \"\' \n",
" \"\' \' \" \' \" \' \" \' \" \' \' \" \' \' \" \' \" \' \' \" \" \" \' \' \" \"\' \'\n",
" \'\" \' \" \' \" \' \" \' \" \' \" \" \' \" \' \" \' \n",
" \' \" \' \' \" \" \' \' \' \" \"\n"
]
};

View File

@ -0,0 +1,351 @@
var castleKeep = {
// Variables
size : 30, // The size here must be higher than the size of the biggest room
realSize : 0, // This is the real size of the current room, in term of things
roomSize : 0, // Real size of the room in term of ascii
floorPosition : 0, // Where the floor is located in the current room
firstCharacterPosition : 0, // Where the character is located when he enters the room
lastCharacterPosition : 0, // Where the character can exit the room
text : [],
roomNumber : 0, // The current room number. Increase by one each room.
mobsAreMoving : false, // If true, in the current room, mobs should move toward the player
maxRoom : 6,
// Functions
onload : function(){
land.addLand("Castle's keep", this.size, 5, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
// We get the character's index
var index = quest.getCharacterIndex();
var characterThing = quest.things[index];
// If the mobs should move, we make them move
if(this.mobsAreMoving){
for(var i = 0; i < quest.things.length; i++){
if(quest.things[i].type == "mob" && quest.things[i-1].type == "none"){
quest.things[i-1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
}
// If the character is just after the exit of the room, we create a new room and put him in it
if(index == this.lastCharacterPosition - this.firstCharacterPosition + 1){
this.roomNumber += 1; // We increment the room number
// If we aren't yet arrived at the room x
if(this.roomNumber <= this.maxRoom){
quest.things = quest.fillWithNoneThings(); // Remove all the things
this.createNewRoom(); // Create a new room
quest.things[0] = characterThing; // Put the character at the beginning of the room
}
// Else, we end the quest
else{
quest.things[this.size-1] = quest.things[index];
quest.things[index] = quest.makeFakeCharacter();
}
}
// If we just killed the dragon
if(this.roomNumber == 6 && index == 16 && quest.things[17].type == "none"){
// We reload the room without the dragon
this.text = [];
this.createRoomStructure();
this.createDoorHere(this.firstCharacterPosition);
}
},
load : function(){
this.roomNumber = 0; // We reset the room number
this.createNewRoom();
},
getText : function(){
var lines = [];
lines = this.text.slice(0); // It will store the lines of the castle keep
// We add things
for(var i = 0; i < this.realSize; i++){
if(quest.things[i].type != "none"){
lines[this.floorPosition] = lines[this.floorPosition].replaceAt(1 + this.firstCharacterPosition*3 + i*3, quest.things[i].text);
}
}
// We return the lines around the player
return lines.join("");
},
createRoomStructure : function(){
var line;
// Create the roof
line = "__";
for(var i = 0; i < this.roomSize; i++){
line += "___";
}
line += "\n";
this.text.push(line);
// Create the inside
line = "|";
for(var i = 0; i < this.roomSize; i++){
line += " ";
}
line += "|\n";
for(var i = 0; i < this.floorPosition - 1; i++){
this.text.push(line);
}
// Create the floor
line = "|";
for(var i = 0; i < this.roomSize; i++){
line += "___";
}
line += "|\n";
this.text.push(line);
},
addDragonInRoom : function(){
var line = "";
// Add a line (to store the tail of the dragon)
for(var i = 0; i < this.roomSize; i++){
line += " ";
}
this.text.push(line);
for(var i = 0; i < this.asciiDragon.length; i++){
this.text[i + 1] = this.text[i + 1].replaceAt(54, this.asciiDragon[i]);
}
},
createNewRoom : function(){
this.text = [];
// If we're not yet at the boss room, we make a random-sized room
if(this.roomNumber < this.maxRoom){
// Set the size and stuff
this.realSize = 16 + random.getRandomIntUpTo(10);
this.firstCharacterPosition = random.getRandomIntUpTo(2);
this.lastCharacterPosition = this.firstCharacterPosition + this.realSize - 1;
this.floorPosition = 5 + random.getRandomIntUpTo(6);
this.roomSize = this.realSize + this.firstCharacterPosition + random.getRandomIntUpTo(2);
this.createRoomStructure();
// We add the doors at the character's first and last position
this.createDoorHere(this.firstCharacterPosition);
this.createDoorHere(this.lastCharacterPosition);
}
// Else, it's the boss room
else{
// Set the size and stuff
this.realSize = 26;
this.firstCharacterPosition = 1;
this.lastCharacterPosition = 21;
this.floorPosition = 16;
this.roomSize = this.realSize + this.firstCharacterPosition + 1;
this.createRoomStructure();
this.addDragonInRoom();
// We add the doors at the character's first and last position
this.createDoorHere(this.firstCharacterPosition);
}
// By default, mobs are not moving
this.mobsAreMoving = false;
// We add roomNumber specific stuff
switch(this.roomNumber){
// Room 0 : we put some guards
case 0:
for(var i = 2; i < this.realSize - 1; i+=3){
quest.things[i] = castleEntrance.makeGuard();
}
this.mobsAreMoving = true;
break;
// Rooms 1 to 4 : we put some random ennemies
case 1: case 2: case 3: case 4:
switch(random.getRandomIntUpTo(7)){
// Knights room
case 0:
for(var i = 2; i < this.realSize - 1; i++){
if(random.oneChanceOutOf(4)){
quest.things[i] = castleEntrance.makeKnight();
}
}
this.mobsAreMoving = true;
break;
// Animals room
case 1:
for(var i = 2; i < this.realSize - 1; i++){
if(random.oneChanceOutOf(4)){
switch(random.getRandomIntUpTo(6)){
case 0: quest.things[i] = castleKeep.makeKomodoDragon(); break;
case 1: quest.things[i] = castleKeep.makeRhinoceros(); break;
case 2: quest.things[i] = castleKeep.makeGaur(); break;
case 3: quest.things[i] = castleKeep.makeDromornisStirtoni(); break;
case 4: quest.things[i] = castleKeep.makeGorilla(); break;
case 5: quest.things[i] = castleKeep.makeCapybara(); break;
case 6: quest.things[i] = castleKeep.makeDoedicurus(); break;
}
}
}
break;
// Ghosts room
case 2:
for(var i = 4; i < this.realSize - 1; i++){
if(random.oneChanceOutOf(5)){
quest.things[i] = castleStairs.makeGhost();
}
}
this.mobsAreMoving = true;
break;
// Walled off zombie warrior room
case 3:
// We add the walls
for(var i = 1; i < this.floorPosition; i++){
this.text[i] = this.text[i].replaceAt(1 + this.firstCharacterPosition*3 + 7*3, "WAL");
this.text[i] = this.text[i].replaceAt(1 + this.firstCharacterPosition*3 + 9*3, "WAL");
}
// We add the mobs (walls and walled off zombie warrior)
quest.things[7] = this.makeStoneWall();
quest.things[9] = this.makeStoneWall();
quest.things[8] = this.makeWalledOffZombieWarrior();
break;
// Fireball room
case 4:
for(var i = this.realSize - 8; i < this.realSize - 1; i++){
if(random.flipACoin()){
quest.things[i] = this.makeFireball();
}
}
this.mobsAreMoving = true;
break;
// Fake door room
case 5:
this.createDoorHere(this.firstCharacterPosition + 8);
quest.things[8] = this.makeFakeDoorMonster();
break;
// Unicorn room
case 6:
quest.things[2 + random.getRandomIntUpTo(this.realSize - 4)] = this.makeCharlieTheUnicorn();
quest.things[2 + random.getRandomIntUpTo(this.realSize - 4)] = this.makeUnicorn();
quest.things[2 + random.getRandomIntUpTo(this.realSize - 4)] = this.makeUnicorn();
this.mobsAreMoving = true;
break;
// Troll room
case 7:
quest.things[6 + random.getRandomIntUpTo(this.realSize - 8)] = this.makeTroll();
this.mobsAreMoving = true;
break;
}
break;
// The chests room
case 5:
for(var i = 1; i < this.realSize - 1; i++){
if(random.oneChanceOutOf(3)){
quest.things[i] = quest.makeOpenChest();
}
}
this.mobsAreMoving = false;
break;
// Boss room
case 6:
quest.things[17] = this.makeDragon();
break;
}
},
createDoorHere : function(position){
this.text[this.floorPosition-2] = this.text[this.floorPosition-2].replaceAt(1 + position*3, " _ ");
this.text[this.floorPosition-1] = this.text[this.floorPosition-1].replaceAt(1 + position*3, "|.|");
this.text[this.floorPosition] = this.text[this.floorPosition].replaceAt(1 + position*3, "| |");
},
makeKomodoDragon : function(){
return land.createMob("KOM", 5, 5, "foots and tail", "A Komodo dragon. Did you heard about island gigantism ?", []);
},
makeRhinoceros : function(){
return land.createMob("RHI", 160, 160, "horn", "A " + random.pickRandomly(["white", "black", "indian", "javan", "sumatran"]) + " rhinoceros. Watch out for his horn !", []);
},
makeGaur : function(){
return land.createMob("GAU", 80, 80, "horns", "A Gaur. This large bovine looks like a bison.", []);
},
makeDromornisStirtoni : function(){
return land.createMob("DST", 70, 70, "giant beak", "A Dromornis Stirtoni ! A 400kg flightless bird !", []);
},
makeGorilla : function(){
return land.createMob("GOR", 50, 50, "its fists", "A Gorilla. Gorillas occasionally engage in homosexual interactions.", []);
},
makeCapybara : function(){
return land.createMob("CPY", 20, 20, "its teeth", "A capybara : the largest rodent in the world !", []);
},
makeDoedicurus : function(){
return land.createMob("DOE", 120, 120, "spiky tail", "A Doedicurus : your favorite glyptodont !", []);
},
makeStoneWall : function(){
return land.createMob("WAL", 300, 300, "stone", "A stone wall.", []);
},
makeWalledOffZombieWarrior : function(){
var hp = 150 + random.getRandomIntUpTo(10) * 10;
return land.createMob("WZW", hp, hp, "cursed sword", "A walled off zombie warrior. He probably did something bad to end up here.", [drops.createDrop("candies", random.getRandomIntUpTo(1) * 4000), drops.createDrop("object", "oldAmulet", true)]);
},
makeFireball : function(){
return land.createMob("FBL", 1, 1, "itself", "A fireball !! Watch out !", []);
},
makeFakeDoorMonster : function(){
return land.createMob("| |", 70, 70, "sharp teeth", "It's not a door ! It's a monster ! (an ugly one)", []);
},
makeUnicorn : function(){
return land.createMob("UNI", 100, 100, "magical horn", "A unicorn !! They exist !", []);
},
makeCharlieTheUnicorn : function(){
return land.createMob("UNI", 100, 100, "magical horn", "A unicorn !! It has no kidney.", [drops.createDrop("object", "magicalHorn", true)]);
},
makeTroll : function(){
return land.createMob("TRL", 250, 250, "enormous fist", "A troll. It is huge, but it lacks precision.", []);
},
makeDragon : function(){
return land.createMob(",((", 1000, 1000, "flames", "A dragon !! Kill him and the castle will be yours.", []);
},
asciiDragon :
[
" _///_,",
" / ` \' \'>",
" o\' __/_\'>",
" / _/ )_\\\'>",
"\"__/ /_/\\_>",
" ____/_/_/_/",
" /,---, _/ /",
"\"\" /_/_/_/",
" /_(_(_(_ \\",
" ( \\_\\_\\\\_ )\\",
" \\\'__\\_\\_\\_\\__ ).\\",
" //____|___\\__) )_/",
" | _ \\\'___\'_( /\'",
" \\_ (-\'\\\'___\'_\\ __,\'_\'",
" __) \\ \\\\___(_ __/.__,\'",
"_,((,-,__\\__\'\", __\\_/. __,\'",
" \'\"./_._._-\'"
]
};

View File

@ -0,0 +1,108 @@
var castleStairs = {
// Variables
size : 19,
timeSpent : 0,
// Functions
onload : function(){
land.addLand("Castle's stairs", this.size, 4, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
var index = quest.getCharacterIndex();
// Make enemies go toward the left
for(var i = 0; i < this.size-1; i++){
if(quest.things[i].type == "mob" && quest.things[i-1].type == "none" && quest.things[i].text != "POC"){
quest.things[i-1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
// Add ennemies, summoned by the necromancer !
if(this.timeSpent > 1){
// We get a random index where we'll try to add something
var i = index + 2 + random.getRandomIntUpTo(this.size - 1 - (index+2));
// If there's nothing here
if(i < this.size-1 && quest.things[i].type == "none"){
// One chance out of x we make a pile of corpses
if(random.oneChanceOutOf(8)){
quest.things[i] = this.makePileOfCorpses();
}
// Else we make a ghost
else{
quest.things[i] = this.makeGhost();
}
}
}
// We increase the time spent
this.timeSpent += 1;
},
load : function(){
quest.things[this.size - 1] = this.makeNecromancer();
// We reset the time spent
this.timeSpent = 0;
},
makeNecromancer : function(){
return land.createMob("NEC", 150, 150, "magic staff", "A necromancer. She summons ghosts and dead stuff.", [drops.createDrop("object", "candiesConverter", true), drops.createDrop("object", "cauldron", true)]);
},
makeGhost : function(){
return land.createMob("GHO", 5, 5, "spectral magic", "A Ghost. It halves the life of human beings.", []);
},
makePileOfCorpses : function(){
var life = 140;
life += random.getRandomIntUpTo(4) * 20;
return land.createMob("POC", life, life, "none", "A pile of corpses. It doesn't hurt you, but damn, it's hard to remove !", []);
},
getText : function(){
var lines = [];
lines = this.text.slice(0); // It will store the lines
// We add things to the lines
for(var i = 0; i < this.size; i++){
// If there's a thing
if(quest.things[i].type != "none"){
lines[this.size-1-i] = lines[this.size-1-i].replaceAt(i*3, quest.things[i].text);
}
}
// We return the lines around the player
return lines.join("");
},
// Variables
text : [
" ___\n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
" ___| \n",
"___| \n"
]
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
var chocolateBars = {
// Variables
nbrOwned : 0,
setNbrOwned : function(value){
this.nbrOwned = value;
if(this.nbrOwned == 0) htmlInteraction.setInnerHtml("chocolate_bars", "You have 0 chocolate bars :(");
else if(this.nbrOwned != 1) htmlInteraction.setInnerHtml("chocolate_bars", "You have " + this.nbrOwned + " chocolate bars \\o/ (a bug ? Oo)");
else htmlInteraction.setInnerHtml("chocolate_bars", "You have 1 chocolate bar \\o/");
htmlInteraction.setElementVisibility("chocolate_bars", true);
buttons.checkChocolateBars();
}
};

View File

@ -0,0 +1,134 @@
var chuckNorris = {
// Variables
size : 35,
currentFact : "",
factStep : 0,
firstContact : false,
timeSpent : 0,
nextPunch : 0,
// Functions
onload : function(){
land.addLand("Chuck Norris", this.size, 8, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
setNextPunch : function(){
this.nextPunch = 3 + random.getRandomIntUpTo(7);
},
move : function(){
// Get indexes
var index = quest.getCharacterIndex();
var norrisIndex = this.getChuckNorrisIndex();
// Increase the fact step
if(this.factStep > 15){
this.setCurrentFact();
}
else this.factStep += 1;
// Possibly make some special action
if(norrisIndex != -1){
if(this.firstContact == false && index >= 20){
if(quest.things[norrisIndex - 1].type == "none"){
quest.things[norrisIndex - 1] = quest.things[norrisIndex];
quest.things[norrisIndex] = quest.makeNoneThing();
}
else this.firstContact = true;
}
else if(this.firstContact == true){
// Punch
if(index > 0 && this.timeSpent % this.nextPunch == 0 && index == norrisIndex - 1 && quest.things[index - 1].type == "none"){
quest.things[index - 1] = quest.things[index];
quest.things[index] = quest.things[norrisIndex];
quest.things[norrisIndex] = quest.makeNoneThing();
this.setNextPunch();
}
}
}
// Increase the time spent
this.timeSpent += 1;
},
getChuckNorrisIndex : function(){
for(i = 0; i < quest.things.length; i++){
if(quest.things[i].text == "CHN") return i;
}
return -1;
},
setCurrentFact : function(){
this.currentFact = random.pickRandomly(this.facts);
this.factStep = 0;
},
load : function(){
this.setCurrentFact();
this.setNextPunch();
quest.things[30] = this.makeChuckNorris();
this.firstContact = false;
this.timeSpent = 0;
},
makeChuckNorris : function(){
return land.createMob("CHN", 1000, 1000, "Chuck Norris", "Chuck Norris. You just can't beat him.", []);
},
getText : function(){
// Create the text
var text = "";
text += this.getCurrentFactText();
text += "\n\n\n\n";
for(var i = 0; i < this.size; i++){
text += quest.things[i].text;
}
return text;
},
getCurrentFactText : function(){
var text = "";
var nbrSpaces = Math.floor((this.size*3 - this.currentFact.length)/2);
for(var i = 0; i < nbrSpaces; i++){
text += " ";
}
text += "\"" + this.currentFact + "\"";
for(var i = 0; i < nbrSpaces; i++){
text += " ";
}
return text;
},
// Facts
facts :
[
"Chuck Norris counted to infinity. Twice.",
"Chuck Norris' tears cure cancer. Too bad he has never cried.",
"Chuck Norris does not sleep. He waits.",
"Chuck Norris can squeeze orange juice out of a lemon.",
"Superman owns a pair of Chuck Norris pajamas.",
"Chuck Norris can kill two stones with one bird.",
"Chuck Norris doesn't read books. He stares them down until he gets the information he wants.",
"Chuck Norris doesn't have hair on his testicles, because hair does not grow on steel.",
"Chuck Norris can build a snowman out of rain.",
"Chuck Norris once punched a man in the soul.",
"Chuck Norris can drown a fish.",
"Leaving a criminal in the same room as Chuck Norris is cruel and unusual punishment.",
"Chuck Norris can pick oranges from an apple tree and make the best lemonade youve ever tasted.",
"Once a cobra bit Chuck Norris' leg. After five days of excruciating pain, the cobra died.",
"Chuck Norris doesn't play \"hide-and-seek.\" He plays \"hide-and-pray-I-don't-find-you.\"",
"Chuck Norris beat the sun in a staring contest.",
"Chuck Norris makes onions cry.",
"Chuck Norris can divide by zero.",
"Chuck Norris hears every tree that falls in the woods."
]
};

View File

@ -0,0 +1,234 @@
var computer = {
background : function(){
window.setTimeout(this.background.bind(this), 1000 + random.getRandomIntUpTo(4000)); // 5000 milliseconds delay
var index = Math.round(Math.random() * 9);
var ColorValue = "FFFFFF"; // default color - white (index = 0)
if(index == 1)
ColorValue = "FFCCCC"; //peach
if(index == 2)
ColorValue = "CCAFFF"; //violet
if(index == 3)
ColorValue = "A6BEFF"; //lt blue
if(index == 4)
ColorValue = "99FFFF"; //cyan
if(index == 5)
ColorValue = "D5CCBB"; //tan
if(index == 6)
ColorValue = "99FF99"; //lt green
if(index == 7)
ColorValue = "FFFF99"; //lt yellow
if(index == 8)
ColorValue = "FFCC99"; //lt orange
if(index == 9)
ColorValue = "CCCCCC"; //lt grey
document.getElementsByTagName("body")[0].style.backgroundColor = "#" + ColorValue;
},
size : function(){
window.setTimeout(this.size.bind(this), 1000 + random.getRandomIntUpTo(4000));
document.getElementsByTagName("body")[0].style.fontSize = "" + random.getRandomIntUpTo(72) + "px";
},
random : function(){
window.setTimeout(this.random.bind(this), 1000 + random.getRandomIntUpTo(4000));
candies.setNbrOwned(random.pure2());
candies.setNbrThrown(random.pure2());
candies.setNbrEaten(random.pure2());
candies.setCandiesPerSecond(random.pure2());
lollipops.setNbrOwned(random.pure2());
farm.setLollipopsPlanted(random.pure2());
chocolateBars.setNbrOwned(random.pure2());
potions.setPotionNbrOwned(potions.list.impInvocationScroll, random.pure2()); potions.setPotionNbrOwned(potions.list.earthquakeScroll, random.pure2()); potions.setPotionNbrOwned(potions.list.teleportScroll, random.pure2()); potions.setPotionNbrOwned(potions.list.fireScroll, random.pure2()); potions.setPotionNbrOwned(potions.list.acidRainScroll, random.pure2()); potions.updateOnPage();
potions.setPotionNbrOwned(potions.list.gmooh, random.pure2()); potions.setPotionNbrOwned(potions.list.superman, random.pure2()); potions.setPotionNbrOwned(potions.list.cloning, random.pure2()); potions.setPotionNbrOwned(potions.list.seed, random.pure2()); potions.setPotionNbrOwned(potions.list.jelly, random.pure2()); potions.setPotionNbrOwned(potions.list.turtle, random.pure2()); potions.setPotionNbrOwned(potions.list.invulnerability, random.pure2()); potions.setPotionNbrOwned(potions.list.majorHealth, random.pure2()); potions.setPotionNbrOwned(potions.list.berserk, random.pure2()); potions.setPotionNbrOwned(potions.list.escape, random.pure2()); potions.setPotionNbrOwned(potions.list.health, random.pure2()); potions.updateOnPage();
sword.setName(random.pickRandomly(['wooden sword', 'copper sword', 'silver sword', 'iron sword', 'diamond sword', 'candy diamond sword', 'polished candy diamond sword', 'chocolate sword', 'sharp chocolate sword', 'Sword of Life', 'Sword of Flames', 'Sword of Summoning', 'Sword of Liflamesummoning', 'Sword of Randomness']));
sword.setSpecialPower(random.pure2());
objects.setHaveObject("key", random.flipACoin());
objects.setHaveObject("boots", random.flipACoin());
objects.setHaveObject("swampMap", random.flipACoin());
objects.setHaveObject("hutMap", random.flipACoin());
objects.setHaveObject("wellMap", random.flipACoin());
objects.setHaveObject("magicianHat", random.flipACoin());
objects.setHaveObject("pinkRing", random.flipACoin());
objects.setHaveObject("forgeMap", random.flipACoin());
objects.setHaveObject("candiesConverter", random.flipACoin());
objects.setHaveObject("plateArmour", random.flipACoin());
objects.setHaveObject("cauldron", random.flipACoin());
objects.setHaveObject("magicalHorn", random.flipACoin());
objects.setHaveObject("hornOfPlenty", random.flipACoin());
objects.setHaveObject("oldAmulet", random.flipACoin());
developperComputer.setWon(random.flipACoin());
candiesConverter.setActivated(random.flipACoin());
cauldron.setBookPage(random.getRandomIntUpTo(26));
cauldron.setCandiesInTheCauldron(random.pure2());
cauldron.setLollipopsInTheCauldron(random.pure2());
switch(random.getRandomIntUpTo(4)){
case 0: cauldron.putInTheCauldron(); break;
case 1: cauldron.setWeAreMixing(true); break;
case 2: cauldron.setWeAreBoiling(true); break;
case 3: cauldron.stopActions(); break;
case 4: cauldron.putIntoBottles(); break;
}
shop.setClickingOnLollipopStep(random.getRandomIntUpTo(15));
if(random.flipACoin())
quest.setTiredTime(random.pure2());
else
quest.setTiredTime(0);
inventory.updateOnPage();
},
textColor : function(){
window.setTimeout(this.textColor.bind(this), 1000 + random.getRandomIntUpTo(4000));
document.getElementsByTagName("body")[0].style.color = this.randomColor();
},
randomColor : function(){
return '#' + ('00000' + (Math.random() * 16777216 << 0).toString(16)).substr(-6);
},
addTab : function(){
var text = "<li><button>" + random.pickRandomly(["tab", "i'm a tab", "hey look at me !", "i'm the best tab ever", "tabtab", "tab tab", "tabtabtab", "tab tab tab", "t", "a", "b", "taaaaab", "tabby tabby", "tabs are great", "pony", "mlp is great", "tabs will rule the world", "fake cauldron", "candy box", "did you found the 3 secrets on the candy box ?", "did you find the wooden pony ?", "c", "n", "d", "being a tab is all my life", "you're a tab", "i'm a tab", "thanks to Joufflu", "thanks to Cedric", "thanks to dixsept", "thank you", "no credits", "aniwey", "aniwey@gmail.com", "quit", "exit", "i wanna be a tab", "tab forever", "tab forevah", "a tab is like a box of chocolates", "chuck norTAB", "diablo", "usb key", "linux", "archlinux", "tab tab tab tab tab tab", "", "button", "don't click", "click me", "CLICKCK MEEE", "fake", "fake tab", "i'm not a tab", "you're the tab", "bat", "atb", "bta", "bat the tab", "supertab", "megatab", "metatab", "the whale was a fake", "the devil was a fake", "aniwey.net", "candies.aniwey.net", "1/(vicious circle)", "hp = 100+(candies_eaten^0.4) * 2.1", "candies per second <=> fibonacci", "dev = aniwey@gmail.com", "eat the dev", "kill the dev", "candy", "candies", "lollipops", "best tab ever", "i'm clickable ;)", "click a tab", "tabby mabby", "tab01", "tab02", "tab03", "tab04", "tab05", "tab06", "tab07", "tab08", "tab09", "tab10", "tab11", "tab12", "tab13", "tab14", "tab15", "tab16", "tab17", "i'm searching for tab04 ?!", "where's tab15 ??"]) + "</button></li>";
if(random.flipACoin())
htmlInteraction.getElement("tabs").innerHTML += text;
else
htmlInteraction.getElement("tabs").innerHTML = text + htmlInteraction.getElement("tabs").innerHTML;
},
bug1 : function(){
if(lollipops.nbrOwned >= 1000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 1000000);
switch(random.getRandomIntUpTo(3)){
case 0:
chocolateBars.setNbrOwned(chocolateBars.nbrOwned + 1);
htmlInteraction.setInnerHtml("computer_comment_1", "You found 1 chocolate bar !!");
break;
case 1:
chocolateBars.setNbrOwned(chocolateBars.nbrOwned + 2);
htmlInteraction.setInnerHtml("computer_comment_1", "You found 2 chocolate bars !!! \\o/");
break;
case 2:
chocolateBars.setNbrOwned(chocolateBars.nbrOwned + 3);
htmlInteraction.setInnerHtml("computer_comment_1", "You found 3 chocolate bars !!!!! \\o/ \\o/ \\o/ \\o/");
break;
case 3:
htmlInteraction.setInnerHtml("computer_comment_1", "There's a bug with the bug, it didn't work :/");
break;
}
}
},
bug2 : function(){
var rndrnd;
if(lollipops.nbrOwned >= 10000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 10000000);
switch(random.getRandomIntUpTo(2)){
case 0:
candies.setNbrOwned(candies.nbrOwned + candies.nbrThrown);
htmlInteraction.setInnerHtml("computer_comment_2", "You picked up all candies you have thrown on the floor. (" + candies.nbrThrown + ")");
candies.setNbrThrown(0);
break;
case 1:
rndrnd = 2 + random.getRandomIntUpTo(50000000);
candies.setNbrOwned(candies.nbrOwned + rndrnd);
htmlInteraction.setInnerHtml("computer_comment_2", "You met " + random.pickRandomly(["an architect", "a fireman", "a butcher", "an electrician", "a writer", "a student", "a farmer", "a shoemaker", "a monk", "a journalist", "a reporter", "a priest", "a translator", "a vet"]) + ". He gave you " + rndrnd + " candies !");
break;
case 2:
farm.setMaxLollipopsPerDay(864000000);
htmlInteraction.showButton("computer_note");
htmlInteraction.setInnerHtml("computer_comment_2", "The production limit of your lollipop farm has increased ! (*)");
break;
}
}
},
bug3 : function(){
if(lollipops.nbrOwned >= 100000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 100000000);
switch(random.getRandomIntUpTo(2)){
case 0:
if(sword.name != "Sword of Liflamesummoning" && sword.name != "Sword of Randomness"){
sword.setName("Sword of Liflamesummoning");
htmlInteraction.setInnerHtml("computer_comment_3", "You found a new sword : the Sword of Liflamesummoning !");
}
else{
htmlInteraction.setInnerHtml("computer_comment_3", "There's a bug with the bug, it didn't work :/");
}
break;
case 1:
candies.setNbrOwned(candies.nbrOwned * 3);
htmlInteraction.setInnerHtml("computer_comment_3", "Your candies were multiplied by 3 !");
break;
case 2:
if(sword.specialSword == true){
if(random.oneChanceOutOf(6)){
sword.setSpecialPower(sword.specialPower - 3);
htmlInteraction.setInnerHtml("computer_comment_3", "Your sword lost 3 levels.");
inventory.updateOnPage();
}
else{
sword.setSpecialPower(sword.specialPower + 1);
htmlInteraction.setInnerHtml("computer_comment_3", "The level of your sword increased by 1 !");
inventory.updateOnPage();
}
}
else{
htmlInteraction.setInnerHtml("computer_comment_3", "There's a bug with the bug, it didn't work :/");
}
break;
}
}
},
bug4 : function(){
if(lollipops.nbrOwned >= 1000000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 1000000000);
htmlInteraction.setInnerHtml("computer_comment_4", "Fake bug ! I guess you'll need 10000 mpl :)");
}
},
bug5: function(){
if(lollipops.nbrOwned >= 10000000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 10000000000);
switch(random.getRandomIntUpTo(1)){
case 0:
if(land.ponyTime == false){
land.ponyTime = true;
htmlInteraction.setInnerHtml("computer_comment_5", "It's pony time !! Everyone is a pony now ! (*)");
htmlInteraction.showButton("computer_note");
}
else{
htmlInteraction.setInnerHtml("computer_comment_5", "There's a bug with the bug, it didn't work :/");
}
break;
case 1:
if(sword.name != "Sword of Randomness"){
sword.setName("Sword of Randomness");
htmlInteraction.setInnerHtml("computer_comment_5", "You found a new sword : the Sword of Randomness !");
}
else{
htmlInteraction.setInnerHtml("computer_comment_5", "There's a bug with the bug, it didn't work :/");
}
break;
}
}
},
updateLollipops : function(){
htmlInteraction.setInnerHtml("computer_lollipops", Math.floor(lollipops.nbrOwned/100000)/10);
},
};

View File

@ -0,0 +1,297 @@
var cookie = {
cookieHandler : null,
createCookie : function(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires + "; path=/";
},
readCookie : function(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
},
eraseCookie : function(name) {
cookie.createCookie(name,"",-1);
},
autoSave : function() {
cookie.createCookie("CandyCookie", cookie.getData(), 365);
},
getData : function() {
return "" + ((code === undefined || code == null || code.length == "") ? 0 : code) +
":" + sword.name +
":" + getPhpStuff(sword.specialSword) +
":" + sword.specialPower +
":" + candies.nbrOwned +
":" + candies.nbrThrown +
":" + candies.nbrEaten +
":" + candies.nbrTotal +
":" + candies.candiesPerSecond +
":" + getPhpStuff(candiesConverter.activated) +
":" + cauldron.bookPage +
":" + cauldron.candiesInTheCauldron +
":" + cauldron.lollipopsInTheCauldron +
":" + chocolateBars.nbrOwned +
":" + farm.lollipopsPlanted +
":" + farm.currentFlagIndex +
":" + farm.plantingButtonsStep +
":" + forge.step +
":" + getPhpStuff(shop.buy10LollipopsButtonShown) +
":" + getPhpStuff(shop.shown) +
":" + shop.ticklingStep +
":" + shop.clickingOnLollipopStep +
":" + hut.step +
":" + hut.speech +
":" + inventory.magicianHatLetter +
":" + lollipops.nbrOwned +
":" + lollipops.nbrInStock +
":" + lollipops.nbrBought +
":" + main.nbrOfSecondsSinceLastMinInterval +
":" + main.nbrOfSecondsSinceLastHourInterval +
":" + main.nbrOfSecondsSinceLastDayInterval +
":" + mountGoblin.basicChestProbability +
":" + peacefulForest.basicChestProbability +
":" + peacefulForest.poniesEncountered +
":" + getPhpStuff(objects.list.key.have) +
":" + getPhpStuff(objects.list.hutMap.have) +
":" + getPhpStuff(objects.list.wellMap.have) +
":" + getPhpStuff(objects.list.swampMap.have) +
":" + getPhpStuff(objects.list.boots.have) +
":" + getPhpStuff(objects.list.magicianHat.have) +
":" + getPhpStuff(objects.list.pinkRing.have) +
":" + getPhpStuff(objects.list.forgeMap.have) +
":" + getPhpStuff(objects.list.candiesConverter.have) +
":" + getPhpStuff(objects.list.plateArmour.have) +
":" + getPhpStuff(objects.list.cauldron.have) +
":" + getPhpStuff(objects.list.magicalHorn.have) +
":" + getPhpStuff(objects.list.hornOfPlenty.have) +
":" + getPhpStuff(objects.list.oldAmulet.have) +
":" + getPhpStuff(potions.list.health.shown) +
":" + getPhpStuff(potions.list.escape.shown) +
":" + getPhpStuff(potions.list.berserk.shown) +
":" + getPhpStuff(potions.list.fireScroll.shown) +
":" + getPhpStuff(potions.list.acidRainScroll.shown) +
":" + getPhpStuff(potions.list.teleportScroll.shown) +
":" + getPhpStuff(potions.list.earthquakeScroll.shown) +
":" + getPhpStuff(potions.list.impInvocationScroll.shown) +
":" + getPhpStuff(potions.list.majorHealth.shown) +
":" + getPhpStuff(potions.list.invulnerability.shown) +
":" + getPhpStuff(potions.list.turtle.shown) +
":" + getPhpStuff(potions.list.jelly.shown) +
":" + getPhpStuff(potions.list.seed.shown) +
":" + getPhpStuff(potions.list.cloning.shown) +
":" + getPhpStuff(potions.list.superman.shown) +
":" + getPhpStuff(potions.list.gmooh.shown) +
":" + potions.list.health.nbrOwned +
":" + potions.list.escape.nbrOwned +
":" + potions.list.berserk.nbrOwned +
":" + potions.list.fireScroll.nbrOwned +
":" + potions.list.acidRainScroll.nbrOwned +
":" + potions.list.teleportScroll.nbrOwned +
":" + potions.list.earthquakeScroll.nbrOwned +
":" + potions.list.impInvocationScroll.nbrOwned +
":" + potions.list.majorHealth.nbrOwned +
":" + potions.list.invulnerability.nbrOwned +
":" + potions.list.turtle.nbrOwned +
":" + potions.list.jelly.nbrOwned +
":" + potions.list.seed.nbrOwned +
":" + potions.list.cloning.nbrOwned +
":" + potions.list.superman.nbrOwned +
":" + potions.list.gmooh.nbrOwned +
":" + quest.maxLandOrder +
":" + quest.tiredTime +
":" + spells.fasterCandiesFiboPrev +
":" + spells.fasterCandiesFiboCurr +
":" + swamp.step +
":" + tabs.animation +
":" + wishingWell.speech +
":" + wishingWell.step +
":" + getPhpStuff(yourself.canSurpass) +
":" + getPhpStuff(developperComputer.won);
},
setData : function() {
var var_list = []
var payload = cookie.readCookie("CandyCookie");
var_list = payload.split(":");
if(var_list.length != 90)
{
alert("ERROR: Corrupt Candycookie Length:" + var_list.length);
console.log("ERROR: Corrupt Candycookie Length:" + var_list.length);
return null;
}
cookie.updateData(var_list);
},
updateData : function(var_list) {
if(Number(var_list[0]) == 0)
{
code = "";
}
else
{
code = var_list[0];
}
if(var_list[1] != "none")
{
sword.setName(var_list[1]);
}
else
{
sword.name = var_list[1];
}
sword.setSpecialSword(setPhpStuff(Number(var_list[2])));
sword.setSpecialPower(Number(var_list[3]));
candies.setNbrOwned(Number(var_list[4]));
if(Number(var_list[5]) != 0)
{
candies.setNbrThrown(Number(var_list[5]));
}
else
{
candies.nbrThrown = Number(var_list[5]);
}
if(Number(var_list[6]) != 0)
{
candies.setNbrEaten(Number(var_list[6]));
}
else
{
candies.nbrEaten = Number(var_list[6]);
}
candies.setNbrTotal(Number(var_list[7]));
candies.setCandiesPerSecond(Number(var_list[8]));
candiesConverter.setActivated(setPhpStuff(Number(var_list[9])));
cauldron.setBookPage(Number(var_list[10]));
cauldron.setCandiesInTheCauldron(Number(var_list[11]));
cauldron.setLollipopsInTheCauldron(Number(var_list[12]));
if(Number(var_list[13]) != 0)
{
chocolateBars.setNbrOwned(Number(var_list[13]));
}
else
{
chocolateBars.nbrOwned = Number(var_list[13]);
}
farm.setLollipopsPlanted(Number(var_list[14]));
farm.setCurrentFlagIndex(Number(var_list[15]));
farm.setPlantingButtonsStep(Number(var_list[16]));
forge.setStep(Number(var_list[17]));
shop.setBuy10LollipopsButtonShown(setPhpStuff(Number(var_list[18])));
shop.setShown(setPhpStuff(Number(var_list[19])));
shop.setTicklingStep(Number(var_list[20]));
shop.setClickingOnLollipopStep(Number(var_list[21]));
hut.setStep(Number(var_list[22]));
hut.setSpeech(var_list[23]); //vermutlich string
inventory.setMagicianHatLetter(var_list[24]); //char
if(Number(var_list[25]) != 0)
{
lollipops.setNbrOwned(Number(var_list[25]));
}
else
{
lollipops.nbrOwned = Number(var_list[25]);
}
//
lollipops.setNbrInStock(Number(var_list[26]));
lollipops.setNbrBought(Number(var_list[27]));
main.setNbrOfSecondsSinceLastMinInterval(Number(var_list[28]));
main.setNbrOfSecondsSinceLastHourInterval(Number(var_list[29]));
main.setNbrOfSecondsSinceLastDayInterval(Number(var_list[30]));
mountGoblin.setBasicChestProbability(Number(var_list[31]));
peacefulForest.setBasicChestProbability(Number(var_list[32]));
peacefulForest.setPoniesEncountered(Number(var_list[33]));
//
objects.setHaveObject("key", setPhpStuff(Number(var_list[34])));
objects.setHaveObject("boots", setPhpStuff(Number(var_list[38])));
objects.setHaveObject("swampMap", setPhpStuff(Number(var_list[37])));
objects.setHaveObject("hutMap", setPhpStuff(Number(var_list[35])));
objects.setHaveObject("wellMap", setPhpStuff(Number(var_list[36])));
objects.setHaveObject("magicianHat", setPhpStuff(Number(var_list[39])));
objects.setHaveObject("pinkRing", setPhpStuff(Number(var_list[40])));
objects.setHaveObject("forgeMap", setPhpStuff(Number(var_list[41])));
objects.setHaveObject("candiesConverter", setPhpStuff(Number(var_list[42])));
objects.setHaveObject("plateArmour", setPhpStuff(Number(var_list[43])));
objects.setHaveObject("cauldron", setPhpStuff(Number(var_list[44])));
objects.setHaveObject("magicalHorn", setPhpStuff(Number(var_list[45])));
objects.setHaveObject("hornOfPlenty", setPhpStuff(Number(var_list[46])));
objects.setHaveObject("oldAmulet", setPhpStuff(Number(var_list[47])));
//
potions.setPotionShown(potions.list.impInvocationScroll, setPhpStuff(Number(var_list[55]))); potions.setPotionShown(potions.list.earthquakeScroll, setPhpStuff(Number(var_list[54]))); potions.setPotionShown(potions.list.teleportScroll, setPhpStuff(Number(var_list[53]))); potions.setPotionShown(potions.list.fireScroll, setPhpStuff(Number(var_list[51]))); potions.setPotionShown(potions.list.acidRainScroll, setPhpStuff(Number(var_list[52]))); potions.updateOnPage();
potions.setPotionShown(potions.list.gmooh, setPhpStuff(Number(var_list[63]))); potions.setPotionShown(potions.list.superman, setPhpStuff(Number(var_list[62]))); potions.setPotionShown(potions.list.cloning, setPhpStuff(Number(var_list[61]))); potions.setPotionShown(potions.list.seed, setPhpStuff(Number(var_list[60]))); potions.setPotionShown(potions.list.jelly, setPhpStuff(Number(var_list[59]))); potions.setPotionShown(potions.list.turtle, setPhpStuff(Number(var_list[58]))); potions.setPotionShown(potions.list.invulnerability, setPhpStuff(Number(var_list[57]))); potions.setPotionShown(potions.list.majorHealth, setPhpStuff(Number(var_list[56]))); potions.setPotionShown(potions.list.berserk, setPhpStuff(Number(var_list[50]))); potions.setPotionShown(potions.list.escape, setPhpStuff(Number(var_list[49]))); potions.setPotionShown(potions.list.health, setPhpStuff(Number(var_list[48]))); potions.updateOnPage();
//
potions.setPotionNbrOwned(potions.list.impInvocationScroll, Number(var_list[71])); potions.setPotionNbrOwned(potions.list.earthquakeScroll, Number(var_list[70])); potions.setPotionNbrOwned(potions.list.teleportScroll, Number(var_list[69])); potions.setPotionNbrOwned(potions.list.fireScroll, Number(var_list[67])); potions.setPotionNbrOwned(potions.list.acidRainScroll, Number(var_list[68])); potions.updateOnPage();
potions.setPotionNbrOwned(potions.list.gmooh, Number(var_list[79])); potions.setPotionNbrOwned(potions.list.superman, Number(var_list[78])); potions.setPotionNbrOwned(potions.list.cloning, Number(var_list[77])); potions.setPotionNbrOwned(potions.list.seed, Number(var_list[76])); potions.setPotionNbrOwned(potions.list.jelly, Number(var_list[75])); potions.setPotionNbrOwned(potions.list.turtle, Number(var_list[74])); potions.setPotionNbrOwned(potions.list.invulnerability, Number(var_list[73])); potions.setPotionNbrOwned(potions.list.majorHealth, Number(var_list[72])); potions.setPotionNbrOwned(potions.list.berserk, Number(var_list[66])); potions.setPotionNbrOwned(potions.list.escape, Number(var_list[65])); potions.setPotionNbrOwned(potions.list.health, Number(var_list[64])); potions.updateOnPage();
quest.setMaxLandOrder(Number(var_list[80]));
quest.setTiredTime(Number(var_list[81]));
//
spells.setFasterCandiesFibo(Number(var_list[82]), Number(var_list[83]));
swamp.setStep(Number(var_list[84]));
tabs.setAnimation(var_list[85]);
wishingWell.setSpeech(var_list[86]);
wishingWell.setStep(Number(var_list[87]));
yourself.setCanSurpass(Number(var_list[88]));
//
developperComputer.setWon(setPhpStuff(setPhpStuff(Number(var_list[89]))));
inventory.updateOnPage();
buttons.checkHomeEnabled();
}
};

View File

@ -0,0 +1,85 @@
var cowLevel = {
// Variables
size : 72,
// Functions
onload : function(){
land.addLand("cowLevel", this.size, -1, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
// Get the character index
var index = quest.getCharacterIndex();
// Iterate over all things
for(var i = 0; i < this.size; i++){
// If it's a cow
if(quest.things[i].text == "COW"){
// We make it move if possible (if it is too close from the player we force it moving to the left)
if(random.flipACoin() && Math.abs(index - i) > 5 && i < this.size - 1){
// If we can move it to the right
if(quest.things[i+1].type == "none"){
// We move it to the right
quest.things[i+1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
// We increase index to avoid iterating over the same thing again
i += 1;
}
}
else{
// If we can move it to the left
if(quest.things[i-1].type == "none"){
// We move it to the left
quest.things[i-1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
}
}
},
load : function(){
// Add the cow king
quest.things[5 + random.getRandomIntUpTo(this.size - 6)] = this.makeCowKing();
// Add cows
for(var i = 1; i < this.size - 1; i++){
if(quest.things[i].type == "none"){
if(random.flipACoin()){
quest.things[i] = this.makeCow();
}
}
}
},
getText : function(){
var text = " \"The cow level\"\n\n\n";
text += " ";
for(var i = 0; i < 18; i++){
text += quest.things[i].text;
}
text += "\n\n ";
for(var i = 18; i < 42; i++){
text += quest.things[i].text;
}
text += "\n\n";
for(var i = 42; i < this.size; i++){
text += quest.things[i].text;
}
return text;
},
makeCow : function(){
return land.createMob("COW", 12, 12, "horns", "A cow ! Mooooo !", [drops.createDrop("candies", 100)]);
},
makeCowKing : function(){
return land.createMob("COW", 180, 180, "horns", "The cow king ! It looks like a normal cow, but it isn't...", [drops.createDrop("candies", 1000), drops.createDrop("object", "hornOfPlenty", true)]);
}
};

View File

@ -0,0 +1,169 @@
var damage = {
getWeaponDamage : function(weapon){
switch(weapon){
// Us
case "none": return 0; break;
case "wooden sword": return 1; break;
case "copper sword": return 2; break;
case "iron sword": return 3; break;
case "silver sword": return 4; break;
case "diamond sword": return 5; break;
case "candy diamond sword": return 7; break;
case "polished candy diamond sword": return 10; break;
case "chocolate sword": return 12; break;
case "sharp chocolate sword": return 14; break;
case "Sword of Life": return 14; break;
case "Sword of Flames":
if(random.oneChanceOutOf(3)){
return 16 + Math.floor(sword.specialPower/2) + sword.specialPower*2;
}
else{
return 16 + Math.floor(sword.specialPower/2);
}
break;
case "Sword of Summoning": return 14; break;
case "Sword of Liflamesummoning": return 16 + sword.specialPower*5; break;
case "Sword of Randomness":
var index = quest.getCharacterIndex();
switch(random.getRandomIntUpTo(4)){
case 0: quest.things[index].text = " "; break;
case 1: quest.things[index].text = "___"; break;
case 2: quest.things[index].text = "r" + random.pickRandomly(["a", "p", "^", "'", "-", "+", "n", "m", "s", "o", ","]) + "r"; break;
case 3: quest.things[index].hp = Math.floor(quest.things[index].hp * random.getRandomFloat() * 2); break;
case 4: quest.things[index].hp = Math.floor(quest.things[index].max_hp * random.getRandomFloat() * 2); break;
}
return random.getRandomIntUpTo(sword.specialPower*114);
break;
// Traps
case "powerful explosion": return 100; break;
// Clone
case "cloned sword": return 12; break;
// Invocations
case "its whole body": return 5; break;
case "bludgeon": return 6; break;
case "various bones": return 7; break;
case "fangs": return 11; break;
case "rock": return 7; break;
case "fire": return 14; break;
case "exploding candies":
return 8 + Math.floor(sword.specialPower/2);
break;
// Peaceful forst
case "hooves": return 1; break;
// Mount Goblin
case "claws": return 1; break;
case "dagger": return 2; break;
// Underwater cave
case "fins": return 2; break;
case "tentacles": return 1 + random.getRandomIntUpTo(5); break;
case "giant tail": return 8; break;
case "electric tail": return 9 + random.getRandomIntUpTo(2); break;
// Castle's entrance
case "spear": return 7; break;
case "sharp sword": return 10; break;
// Castle's stairs
case "magic staff": return 6; break;
case "damaged sword": return 5; break;
// Castle's keep
case "horn": return 9; break;
case "horns": return 7; break;
case "foots and tail": return 7; break;
case "giant beak": return 7; break;
case "its fists": return 6; break;
case "its teeth": return 4; break;
case "spiky tail": return 10; break;
case "cursed sword": return 3 + random.getRandomIntUpTo(20); break;
case "itself": return 45; break;
case "sharp teeth": return 16; break;
case "magical horn": return 12; break;
case "enormous fist":
if(random.oneChanceOutOf(3)){
return 20;
}
return 0;
break;
case "flames": return 40; break;
// Cow level
case "horns": return 7; break;
// Desert
case "cactus thorns": return 4; break;
// Hell
case "religion": return 80; break;
case "demon claws": return 40; break;
case "spikes": return 15; break;
case "?": return 50; break;
// Chuck norris
case "Chuck Norris": return random.getRandomIntUpTo(chuckNorris.timeSpent*8); break;
// Developper's garden
case "ultra plasma gun": return 8; break;
// Developper's computer
case "bugs": return Math.floor(quest.getCharacterMaxHp()/4) + 5; break;
}
return 0;
},
makeTwoQuestThingsFighting : function(i, j){
var theFirstIsTheCharacter = false; // True if the first of the fighting things is the character
var howManyDamage = 0; // Used to calculate some stuff
// If the first thing is the character
if(quest.things[i].type == "character"){
theFirstIsTheCharacter = true;
}
// If the second thing is the character
else if(quest.things[j].type == "character"){
// Then it's the first one in fact :)
var temp = i;
i = j;
j = i;
theFirstIsTheCharacter = true;
}
// The second thing get hit by the first
quest.things[j].hp -= this.getWeaponDamage(quest.things[i].weapon);
// If the first isn't the character
if(theFirstIsTheCharacter == false){
quest.things[i].hp -= this.getWeaponDamage(quest.things[j].weapon); // The first thing get hit by the second one
}
// Else, the first is the character
else{
howManyDamage = this.getWeaponDamage(quest.things[j].weapon); // We store the damage the mob should do to us
// If we have a plate armour
if(objects.list.plateArmour.have){
howManyDamage -= 3; // We reduce the damage
}
// If we are a turtle
if(quest.turtle){
howManyDamage = Math.floor(howManyDamage/2);
}
// Spectral magic bonus (not influenced by the plate armour or the turtle state !)
if(quest.things[j].weapon == "spectral magic"){
howManyDamage = Math.ceil(quest.things[i].hp/2); // The damage is now half the life of the player
}
// If we are invincible
if(quest.invulnerability){
howManyDamage = 0; // No damage
}
if(howManyDamage > 0) quest.things[i].hp -= howManyDamage; // If we should still take damage, we take it
}
// Berserk bonuses : second hit
if(quest.berserk && theFirstIsTheCharacter) quest.things[j].hp -= this.getWeaponDamage(quest.things[i].weapon);
// We correct health points if they're < 0
if(quest.things[i].hp < 0) quest.things[i].hp = 0;
if(quest.things[j].hp < 0) quest.things[j].hp = 0;
// Yourself quest can surpass bonus
if(land.getLandIndexFromName("Yourself") == quest.currentLandIndex && yourself.canSurpass == true && theFirstIsTheCharacter == true){
if(quest.things[i].hp == 0){
quest.things[i].hp = 1;
yourself.end = true;
}
}
}
}

View File

@ -0,0 +1,48 @@
var darkMode = {
isOn: false,
check: function() {
if (candies.nbrThrown >= 100) {
this.show();
}
},
show: function() {
htmlInteraction.setElementVisibility("darkModeToggle", true);
},
update: function() {
if (this.isOn) {
this.activate();
} else {
this.deactivate();
}
},
toggle: function() {
if (this.isOn) {
this.activate();
this.isOn = false;
} else {
this.deactivate();
this.isOn = true;
}
},
activate: function() {
$(".dark_mode_toggle").html("Dark Mode: ON");
$("body").addClass("dark_mode");
$("button, select").addClass("dark_button");
$("a").addClass("dark_link");
$("td").addClass("dark_table");
},
deactivate: function() {
$(".dark_mode_toggle").html("Dark Mode: OFF");
$("body").removeClass("dark_mode");
$("button, select").removeClass("dark_button");
$("a").removeClass("dark_link");
$("td").removeClass("dark_table");
}
}

View File

@ -0,0 +1,56 @@
var desert = {
// Variables
size : 25,
// Functions
onload : function(){
land.addLand("desert", this.size, -1, this.load.bind(this), this.getText.bind(this));
},
load : function(){
},
getText : function(){
var lines = this.asciiDesert.slice(0);
for(var i = 0; i < this.size; i++){
if(quest.things[i].type == "character"){
if(i == 12) lines[12] = lines[12].replaceAt(i*3, quest.things[i].text[0]);
else if(i == 13) lines[12] = lines[12].replaceAt(i*3, quest.things[i].text[0]);
else if(i == 14) lines[12] = lines[12].replaceAt(i*3 + 1, quest.things[i].text[1]);
else if(i == 15) lines[12] = lines[12].replaceAt(i*3 + 1, quest.things[i].text[1] + quest.things[i].text[2]);
else if(i == 17) lines[12] = lines[12].replaceAt(i*3, quest.things[i].text[0] + quest.things[i].text[1]);
else if(i == 18 || i == 19) ;
else if(i == 20) lines[12] = lines[12].replaceAt(i*3 + 2, quest.things[i].text[2]);
else lines[12] = lines[12].replaceAt(i*3, quest.things[i].text);
}
}
return lines.join("");
},
// Ascii
asciiDesert :
[
" \"The desert\" \n",
" \n",
" \n",
" _ _ \n",
" / \\ _ / \\ _ \n",
" , | | , / \\ , | | , / \\ \n",
" ((_| |_)) , | | , ((_| |_)) , | | , \n",
" `--, ,--` ((_| |_)) `--, ,--` ((_| |_)) \n",
" | | `--, ,--` | | _ `--, ,--` \n",
" | | | | | | _ / \\ | | \n",
" `\"\"\"` | | `\"\"\"`/ \\ , | | , | | \n",
" `\"\"\"` , | | , ((_| |_)) `\"\"\"` \n",
" ((_| |_)) `--, ,--` \n",
" `--, ,--` | | \n",
" | | | | \n",
" | | `\"\"\"` \n",
" `\"\"\"` \n"
]
};

View File

@ -0,0 +1,102 @@
var developperComputer = {
// Variables
size : 22,
won : false,
letter : 0,
// Functions
onload : function(){
land.addLand("Developper's computer", this.size, 11, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
setWon : function(value){
this.won = value;
if(this.won == true){
tabs.enable(4);
htmlInteraction.showButton("tab_computer");
}
inventory.updateOnPage();
},
move : function(){
},
useLetter : function(){
var index = quest.getCharacterIndex();
if(quest.weAreQuestingRightNow && land.getLandIndexFromName("Developper's computer") == quest.currentLandIndex){
if(quest.things[this.size-1].text == "DEV" && index == this.size-2){
quest.things[this.size-1].hp = 0;
}
}
},
load : function(){
// Add the dev
quest.things[21] = this.makeDev();
// Add bugs
for(var i = 1; i <= 20; i++){
if(random.flipACoin()){
quest.things[i] = this.makeBug();
}
}
// Choose letter
this.letter = 65 + random.getRandomIntUpTo(25);
},
getText : function(){
var textBefore = "";
var lines = this.asciiComputer.slice(0);
var x = 0;
var y = 0;
var pos = 0;
var index = quest.getCharacterIndex();
if(index == this.size-2) textBefore = "<b>You must press a certain key to kill the developper.</b>\n\n";
for(var i = 0; i < 100; i++){
x = random.getRandomIntUpTo(65);
y = random.getRandomIntUpTo(9);
lines[y] = lines[y].replaceAt(x, random.pickRandomly(["$", "%", "*", ":", ";", ",", ".", "-", "+", "_", "-", "d", "n", "c"]));
}
// Add things
for(var i = 0; i < this.size; i++){
if(quest.things[i].type != "none"){
pos = random.getRandomIntUpTo(9);
lines[pos] = lines[pos].replaceAt(i*3, quest.things[i].text);
}
}
return textBefore + lines.join("");
},
makeBug : function(){
return land.createMob(random.pickRandomly(["B", "U", "G"]) + random.pickRandomly(["B", "U", "G"]) + random.pickRandomly(["B", "U", "G"]), 300 + random.getRandomIntUpTo(10000000), 300, random.pickRandomly(["itself", "religion", "flames", "sharp teeth", "cursed sword", "claws", "dagger", "fins", "hooves", "magic staff", "horn", "silver sword", "chocolate sword", "demon claws"]), "A bug !", [drops.createDrop("candies", 100000000)]);
},
makeDev : function(){
return land.createMob("DEV", 100000000000000, 100000000000000, "bugs", "The developper (hey, he made this game !)", [drops.createDrop("candies", 1000000)]);
},
// Ascii
asciiComputer :
[
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n"
]
};

View File

@ -0,0 +1,89 @@
var developperGarden = {
// Variables
size : 40,
// Functions
onload : function(){
land.addLand("Developper's garden", this.size, 9, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
var targetIndex = -1;
// We make the gnomes shooting
for(var i = 0; i < this.size; i++){
if(quest.things[i].text == "CGG"){
if(targetIndex != -1){ // If we have a target
quest.things[targetIndex].hp -= 30;
if(quest.things[targetIndex].hp <= 0){
if(quest.things[targetIndex].type != "character") quest.things[targetIndex] = quest.makeNoneThing();
else quest.things[targetIndex].hp = 1;
targetIndex = -1;
}
}
}
else if(quest.things[i].type != "none"){
targetIndex = i;
}
}
// Increase the time spent
this.timeSpent += 1;
},
load : function(){
// Add garden gnomes
quest.things[27] = this.makeCheatedGardenGnome();
quest.things[28] = this.makeCheatedGardenGnome();
if(random.flipACoin()) quest.things[29] = this.makeCheatedGardenGnome();
quest.things[30] = this.makeCheatedGardenGnome();
quest.things[31] = this.makeCheatedGardenGnome();
if(random.flipACoin()) quest.things[32] = this.makeCheatedGardenGnome();
quest.things[34] = this.makeCheatedGardenGnome();
quest.things[35] = this.makeCheatedGardenGnome();
quest.things[36] = this.makeCheatedGardenGnome();
quest.things[37] = this.makeCheatedGardenGnome();
quest.things[38] = this.makeCheatedGardenGnome();
if(random.flipACoin()) quest.things[39] = this.makeCheatedGardenGnome();
},
makeCheatedGardenGnome : function(){
return land.createMob("CGG", 70, 70, "ultra plasma gun", "A cheated garden gnome. Since when garden gnomes have guns like that ?", []);
},
getText : function(){
// Create the text
var lines = this.asciiGarden.slice(0);
// Add things
for(var i = 0; i < this.size; i++){
if(quest.things[i].type != "none"){
lines[13] = lines[13].replaceAt(i*3, quest.things[i].text);
}
}
return lines.join("");
},
// Ascii
asciiGarden :
[
" , \n",
" /\\^/`\\ \n",
" | \\/ | \n",
" | | | \n",
" _ _ \\ \\ / \n",
" _{ ' }_ '\\\\//' \n",
" _ { `.!.` } || \n",
" _(_)_ wWWWw ',_/Y\\_,' || \n",
" (_)@(_) (___) {_,_} || \n",
" (_)\\ Y | vVVVv |\\ || |\\ \n",
" |/ \\|/ (\\| (___) | | || | | \n",
" \\| |/ \\| /) Y | | || / / \n",
" | \\| |// (\\|/) \\ \\||/ / \n",
" \\\\\\|// \\\\|// |/ \\|/ `\\\\//` \n",
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
]
};

View File

@ -0,0 +1,74 @@
var developperMoat = {
// Variables
size : 22,
platformPosition : 0,
timeSpent : 0,
// Functions
onload : function(){
land.addLand("Developper's moat", this.size, 10, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
// Get the character's index
var index = quest.getCharacterIndex();
// If the character is above where the platform moves
if(index > 5 && index < 18){
// If the character isn't on the platform
if(index > 6 + this.platformPosition + 1 || index < 6 + this.platformPosition){
quest.escaping = true;
}
}
// Increase the platform position
if(this.timeSpent > 5){
if(this.platformPosition < 10) this.platformPosition = Math.floor((this.timeSpent - 5) / 3);
}
// Increase the time spent
this.timeSpent += 1;
},
load : function(){
this.platformPosition = 0;
this.timeSpent = 0;
},
getText : function(){
var lines = this.asciiMoat.slice(0);
// Add the platform
lines[3] = lines[3].replaceAt(18 + this.platformPosition*3, "______");
lines[4] = lines[4].replaceAt(18 + this.platformPosition*3, "\\|__|/");
// Add things
for(var i = 0; i < this.size; i++){
if(quest.things[i].type == "character"){
lines[3] = lines[3].replaceAt(i*3, quest.things[i].text);
}
}
return lines.join("");
},
// Ascii
asciiMoat :
[
" \n",
" \n",
" \n",
"__________________ ____________\n",
" \\, ._/ /\n",
" \\, / \\ \\\n",
" )_, (__ _\\\n",
" / _\\ / ./ /\n",
" \\, | | / /\n",
" / _/ \\ / (\n",
" _,| /_\n",
" \\ |"
]
};

View File

@ -0,0 +1,58 @@
var drops = {
createDrop : function(type, param1, param2){
return {type:type, param1:param1, param2:param2};
},
getText : function(){
var text = "";
// Candies found
if(quest.candiesFound != 1) text += "You found " + quest.candiesFound + " candies.";
else text += "You found 1 candy.";
// Objects found
for(obj in objects.list){
if(objects.list[obj].found){
text += "\n<b>You found " + objects.list[obj].text + ".</b>";
}
}
// Notice
text += "\n\nThings found will be yours only if you finish the quest without dying.";
return text;
},
gainDrops : function(){
// Gain the candies
candies.setNbrOwned(candies.nbrOwned + quest.candiesFound);
// Gain the objects
for(obj in objects.list){
if(objects.list[obj].found){ // If we found this object but didn't have it already
objects.setHaveObject(obj, true);
}
}
},
getAllDropsFromList : function(list){
for(var i = 0; i < list.length; i++){
switch(list[i].type){
case "candies":
quest.setCandiesFound(quest.candiesFound + list[i].param1);
break;
case "object":
if(list[i].param2 == true) this.foundObject(list[i].param1);
break;
}
}
},
foundObject : function(name){
// If we don't already have this object, then we just found it !
if(objects.list[name].have == false) objects.list[name].found = true;
}
};

View File

@ -0,0 +1,125 @@
var farm = {
// Variables
lollipopsPlanted : 0, // The number of lollipops planted in the farm
productionDelayType : "none", // On which delay does the farm product lollipops (day, hour, min, sec...)
lollipopsPerDay : 0, // How many lollipops the farm produce every day
lollipopsProduction : 0, // How many lollipops the farm produce every day, hour, min, sec.. depending on the production delay type
maxLollipopsPerDay : 8640000, // = 100/sec
flagsList : [" ~ ", " * ", "cnd", " ! ", " + ", " ? ", "/|\\"], // List of ascii flags which can appear on the farm
currentFlagIndex : 0, // Index in the list of the current flag shown
plantingButtonsStep : 0, // Step of the lollipops planting buttons : (= which buttons are shown, 1000, 100.. ?)
// Functions
calculateLollipopsPerDay : function(){
if(this.lollipopsPlanted <= 293){ // sqrt(86400) = 293
this.lollipopsPerDay = Math.pow(this.lollipopsPlanted, 2); // 293 will give 85849
}
else{ // When we're counting in lp/sec, this function is used instead of the other one. It will stabilize the curve.
var prod = (this.lollipopsPlanted - 122) * 500; // 194 will give 86000
if(prod < this.maxLollipopsPerDay) this.lollipopsPerDay = prod;
else this.lollipopsPerDay = this.maxLollipopsPerDay;
}
},
setPlantingButtonsStep : function(value){
// Set the value
this.plantingButtonsStep = value;
// Update on page
switch(this.plantingButtonsStep){
case 1:
htmlInteraction.setInnerHtml("lp_buttons", "<button class=\"home_button\" id=\"plant_1_lp\" onClick=\"farm.plantLollipops(1);\">Plant 1 lollipop</button>");
break;
case 2:
htmlInteraction.setInnerHtml("lp_buttons", "Plant <button class=\"home_button\" id=\"plant_1_lp\" onClick=\"farm.plantLollipops(1);\">1</button><button class=\"home_button\" id=\"plant_10_lp\" onClick=\"farm.plantLollipops(10);\" style=\"visibility:hidden\">10</button> lp");
break;
case 3:
htmlInteraction.setInnerHtml("lp_buttons", "Plant <button class=\"home_button\" id=\"plant_1_lp\" onClick=\"farm.plantLollipops(1);\">1</button><button class=\"home_button\" id=\"plant_10_lp\" onClick=\"farm.plantLollipops(10);\" style=\"visibility:hidden\">10</button><button class=\"home_button\" id=\"plant_100_lp\" onClick=\"farm.plantLollipops(100);\" style=\"visibility:hidden\">100</button> lp");
break;
case 4:
htmlInteraction.setInnerHtml("lp_buttons", "Plant <button class=\"home_button\" id=\"plant_1_lp\" onClick=\"farm.plantLollipops(1);\">1</button><button class=\"home_button\" id=\"plant_10_lp\" onClick=\"farm.plantLollipops(10);\" style=\"visibility:hidden\">10</button><button class=\"home_button\" id=\"plant_100_lp\" onClick=\"farm.plantLollipops(100);\" style=\"visibility:hidden\">100</button><button class=\"home_button\" id=\"plant_1000_lp\" onClick=\"farm.plantLollipops(1000);\" style=\"visibility:hidden\">1000</button> lp");
break;
}
// Check the buttons
buttons.checkLollipopsPlantingButtons();
},
clickedOnTheBigLollipop : function(){
// Increment the current flag index
this.setCurrentFlagIndex(this.currentFlagIndex + 1);
},
setCurrentFlagIndex : function(value){
// Set the new value and correct it if incorrect
this.currentFlagIndex = value;
if(this.currentFlagIndex >= this.flagsList.length || this.currentFlagIndex < 0) this.currentFlagIndex = 0;
// Update on the page
htmlInteraction.setInnerHtml("farm_big_lollipop", this.flagsList[this.currentFlagIndex]);
},
checkVisibility : function(){
if(objects.list.key.have){
htmlInteraction.setElementVisibility("farm", true);
}
},
plantLollipops : function(number){
if(lollipops.nbrOwned >= number){
lollipops.setNbrOwned(lollipops.nbrOwned - number);
this.setLollipopsPlanted(this.lollipopsPlanted + number);
}
},
setLollipopsPlanted : function(value){
// We change the value
this.lollipopsPlanted = value;
// We update on page
htmlInteraction.setInnerHtml("lp_planted", "Lp planted : " + this.lollipopsPlanted);
// We re calculate stuff
this.calculateLollipopsPerDay();
this.calculateLollipopsProductionFromLollipopsPerDay();
},
calculateLollipopsProductionFromLollipopsPerDay : function(){
if(this.lollipopsPerDay < 24){
this.setProductionDelayType("day");
this.setLollipopsProduction(Math.floor(this.lollipopsPerDay));
}
else if(this.lollipopsPerDay < 1440){
this.setProductionDelayType("hour");
this.setLollipopsProduction(Math.floor(this.lollipopsPerDay/24));
}
else if(this.lollipopsPerDay < 86400){
this.setProductionDelayType("min");
this.setLollipopsProduction(Math.floor(this.lollipopsPerDay/1440));
}
else{
this.setProductionDelayType("sec");
this.setLollipopsProduction(Math.floor(this.lollipopsPerDay/86400));
}
},
setProductionDelayType: function(value){
this.productionDelayType = value;
},
setLollipopsProduction : function(value){
this.lollipopsProduction = value;
htmlInteraction.setInnerHtml("lp_production", "Production : " + this.lollipopsProduction + " lp/" + this.productionDelayType);
},
setMaxLollipopsPerDay : function(value){
// We set the max lollipops per day
this.maxLollipopsPerDay = value;
// We re calculate stuff
this.calculateLollipopsPerDay();
this.calculateLollipopsProductionFromLollipopsPerDay();
}
};

View File

@ -0,0 +1,100 @@
var forge = {
// Variables
shown : false,
step : 0,
speech : "There's an anvil here.",
// Functions
updateOnPage : function(){
var text = "";
// The anvil
text += "\
.-------..___\n\
\'-._ :_.-\'\n\
.- ) _ ( --.\n\
: \'-\' \'-\' ;.\n\
/\'-.._____.-\' |\n\
| | \\ |\n\
\\ | / \\\n\
| \\ )_.-\'\n\
\'-._/__..-\'\n\n"
// The speech
text += speech.makeSpeechFromText(this.speech, 23, "");
text += "\n\n";
// Buttons
switch(this.step){
case 0:
if(sword.name == "chocolate sword"){
text += "<button onClick=\"sword.sharpen();\">Sharpen your sword using the anvil</button>\n";
}
break;
case 1:
if(potions.list.health.shown)
text += "<button id=\"enchant_health\" onClick=\"sword.enchantHealth();\">Enchant using a health potion</button>\n";
if(potions.list.fireScroll.shown)
text += "<button id=\"enchant_fire\" onClick=\"sword.enchantFire();\">Enchant using a fire scroll</button>\n";
if(potions.list.impInvocationScroll.shown)
text += "<button id=\"enchant_imp_invocation\" onClick=\"sword.enchantImpInvocation();\">Enchant using an imp invocation scroll</button>\n";
break;
}
// The leave button
text += "\n<button onClick=\"forge.leave();\">Leave the forge</button>";
htmlInteraction.setInnerHtml("map", text);
buttons.checkForge();
},
setStep : function(value){
// We change the value
this.step = value;
// We possibly change the speech depending on the new step
switch(this.step){
case 1:
this.speech = "You could enchant your sword using this anvil, but be careful : you can only enchant a sword once !";
break;
case 2:
// At this step, the speech is based on the sword name
switch(sword.name){
case "Sword of Flames":
this.speech = "You now have the Sword of Flames ! Your sword is covered by a permanent blaze, damaging your enemies more than ever.";
break;
case "Sword of Life":
this.speech = "You now have the Sword of Life ! This powerful charm will drain the life of your enemies to regain yours.";
break;
case "Sword of Summoning":
this.speech = "You now have the Sword of Summoning ! Your sword will sometimes spawn ally creatures in place of your dead enemies.";
break;
}
break;
}
// We update on page if the forge is shown
if(this.shown) this.updateOnPage();
},
enter : function(){
objects.leave();
this.shown = true;
this.updateOnPage();
},
leave : function(){
this.shown = false;
htmlInteraction.setInnerHtml("map", "");
//buttons.enableHomeButtons();
}
};

View File

@ -0,0 +1,414 @@
var hell = {
// Variables
size : 45,
lavaLakeStep : 0,
buffers : [[], [], [], [], [], [], []], // The three things buffers
bufferPosition : 1, // On which buffer is the character (at first in the middle buffer)
timeSpent : 0, // Increase each cycle
addRockStep : 0,
monstersGap : 7, // Gap between the devil and appearing monsters
step : 0,
// Functions
onload : function(){
land.addLand("Hell", this.size, 6, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
move : function(){
// We increase the lava lake step
this.lavaLakeStep += 1;
if(this.lavaLakeStep == 12){
this.lavaLakeStep = 0;
}
// We make things move
for(var i = 0; i < 7; i++){
if(i != this.bufferPosition){
if(this.buffers[i][0].type == "mob") this.buffers[i][0] = quest.makeNoneThing();
for(var j = 1; j < this.size - 1; j++){
if(this.buffers[i][j].type == "mob" && this.buffers[i][j-1].type == "none" && this.buffers[i][j].text != " * " && this.buffers[i][j].text != "|-|"){
this.buffers[i][j-1] = this.buffers[i][j];
this.buffers[i][j] = quest.makeNoneThing();
}
}
// Clone
for(var j = this.size-2; j >= 0; j--){
if(this.buffers[i][j].text == "\\o/" && this.buffers[i][j].type == "ally" && this.buffers[i][j+1].type == "none" && this.buffers[i][j].text != " * " && this.buffers[i][j].text != "|-|"){
this.buffers[i][j+1] = this.buffers[i][j];
this.buffers[i][j] = quest.makeNoneThing();
}
}
}
else{
if(quest.things[0].type == "mob") quest.things[0] = quest.makeNoneThing();
for(var j = 1; j < this.size - 1; j++){
if(quest.things[j].type == "mob" && quest.things[j-1].type == "none" && quest.things[j].text != " * " && quest.things[j].text != "|-|"){
quest.things[j-1] = quest.things[j];
quest.things[j] = quest.makeNoneThing();
}
}
}
}
// We check the steps
switch(this.step){
case 0: this.checkStep1(); break;
case 1: this.checkStep2(); break;
case 2: this.checkStep3(); break;
case 3: this.checkStep4(); break;
}
// We add ennemies in the middle buffers
for(var i = 2; i < 5; i++){
if(i != this.bufferPosition && this.buffers[i][this.size-this.monstersGap].type == "none"){
this.buffers[i][this.size-this.monstersGap] = this.makeMiddleCreature();
}
else if(i == this.bufferPosition && quest.things[this.size-this.monstersGap].type == "none"){
quest.things[this.size-this.monstersGap] = this.makeMiddleCreature();
}
}
// Idem in the side buffers
for(var i = 0; i < 2; i++){
if(i != this.bufferPosition && this.buffers[i][this.size-this.monstersGap].type == "none"){
this.buffers[i][this.size-this.monstersGap] = this.makeSideCreature();
}
else if(i == this.bufferPosition && quest.things[this.size-this.monstersGap].type == "none"){
quest.things[this.size-this.monstersGap] = this.makeSideCreature();
}
}
for(var i = 5; i < 7; i++){
if(i != this.bufferPosition && this.buffers[i][this.size-this.monstersGap].type == "none"){
this.buffers[i][this.size-this.monstersGap] = this.makeSideCreature();
}
else if(i == this.bufferPosition && quest.things[this.size-this.monstersGap].type == "none"){
quest.things[this.size-this.monstersGap] = this.makeSideCreature();
}
}
// We increase the time spent
this.timeSpent += 1;
},
load : function(){
// We set the first buffer position
this.bufferPosition = 3;
// We fill buffers
for(var i = 0; i < 7; i++){
if(i != this.bufferPosition){
this.buffers[i] = quest.fillWithNoneThings();
}
}
// We add the devil
quest.things[this.size - 1] = this.makeDevil();
// We add first doors
quest.things[this.size - 4] = this.makeDoor();
for(var i = 0; i < 7; i++){
if(i != 3) this.buffers[i][this.size - 4] = this.makeDoor();
}
// We add second doors
quest.things[this.size - 6] = this.makeSpikyDoor();
for(var i = 0; i < 7; i++){
if(i != 3 && i != 5) this.buffers[i][this.size - 6] = this.makeSpikyDoor();
}
this.buffers[5][this.size - 6] = this.makeDoor();
// We add teleporting gates
quest.things[this.size - 3] = this.makeTeleportingGate();
quest.things[this.size - 5] = this.makeTeleportingGate();
for(var i = 0; i < 7; i++){
if(i != 3){
this.buffers[i][this.size - 3] = this.makeTeleportingGate();
this.buffers[i][this.size - 5] = this.makeTeleportingGate();
}
}
// We set the steps
this.addRockStep = 0;
this.step = 0;
// We set the time spent
this.timeSpent = 0;
},
teleportCharacter : function(gatesIndex){
var index = quest.getCharacterIndex();
quest.things[0] = quest.things[index];
quest.things[index] = quest.makeNoneThing();
quest.things[gatesIndex] = quest.makeNoneThing();
for(var i = 0; i < 7; i++){
if(i != this.bufferPosition){
this.buffers[i][gatesIndex] = quest.makeNoneThing();
}
}
},
checkStep1 : function(){
var index = quest.getCharacterIndex();
if(index >= this.size - 7) this.step = 1;
},
checkStep2 : function(){
for(var i = 0; i < 7; i++){
if((i != this.bufferPosition && this.buffers[i][this.size-5].text != " * ") || (i == this.bufferPosition && quest.things[this.size-5].text != " * ")){
this.teleportCharacter(this.size-5);
this.step = 2;
break;
}
}
},
checkStep3 : function(){
var index = quest.getCharacterIndex();
if(index >= this.size - 5) this.step = 3;
},
checkStep4 : function(){
for(var i = 0; i < 7; i++){
if((i != this.bufferPosition && this.buffers[i][this.size-3].text != " * ") || (i == this.bufferPosition && quest.things[this.size-3].text != " * ")){
this.teleportCharacter(this.size-3);
this.step = 4;
this.timeSpent = 0;
break;
}
}
},
goDown : function(){
var pos = this.bufferPosition;
// If we're questing the hell
if(quest.weAreQuestingRightNow && land.getLandIndexFromName("Hell") == quest.currentLandIndex){
// If we're not already at the buffer 2
if(this.bufferPosition != 6){
// If we were able to swap, change the buffer position
if(this.swapBufferAndQuestThings(pos, pos + 1)){
this.bufferPosition += 1;
this.checkDevil();
quest.updateOnPage();
}
}
}
},
goUp : function(){
var pos = this.bufferPosition;
// If we're questing the hell
if(quest.weAreQuestingRightNow && land.getLandIndexFromName("Hell") == quest.currentLandIndex){
// If we're not already at the buffer 0
if(this.bufferPosition != 0){
// If we were able to swap, change the buffer position
if(this.swapBufferAndQuestThings(pos, pos - 1)){
this.bufferPosition -= 1;
this.checkDevil();
quest.updateOnPage();
}
}
}
},
swapBufferAndQuestThings : function(now, after){
var index = quest.getCharacterIndex();
var character = quest.things[index];
// If we will be able to move on the "after" buffer, we swap (if we have some hp, too)
if(this.buffers[after][index].type == "none" && character.hp > 0){
// We save the quest things in the old buffer
this.buffers[now] = quest.things.slice(0);
// We delete the character from the old buffer
this.buffers[now][index] = quest.makeNoneThing();
// We put the new buffer into the quest things
quest.things = this.buffers[after].slice(0);
// We add the character
quest.things[index] = character;
// We return true
return true;
}
// Else we return false
return false;
},
checkDevil : function(){
// If the devil isn't on the line of the character
if(quest.things[this.size-1].text != "DEV"){
// We move it
for(var i = 0; i < 7; i++){
if(i != this.bufferPosition && this.buffers[i][this.size-1].text == "DEV"){
quest.things[this.size-1] = this.buffers[i][this.size-1];
this.buffers[i][this.size-1] = quest.makeNoneThing();
break;
}
}
}
},
makeDevil : function(){
return land.createMob("DEV", 250, 250, "religion", "It's the devil itself !", [drops.createDrop("candies", 100000)]);
},
makeTeleportingGate : function(){
return land.createMob(" * ", 120, 120, "none", "A teleporting gate, made by the devil itself.", []);
},
makeMiddleCreature : function(){
switch(this.step){
case 0:
if(random.oneChanceOutOf(3)){
return this.makeDemon();
}
break;
case 2:
if(random.oneChanceOutOf(4)){
return this.makeBanshee();
}
break;
case 3:
if(random.oneChanceOutOf(3)){
return castleKeep.makeFireball();
}
break;
case 4:
if(this.timeSpent < 50 && this.timeSpent % 2 == 0){
return castleStairs.makeGhost();
}
else if(this.timeSpent < 70){
// nothing
}
else if(this.timeSpent < 90){
if(random.oneChanceOutOf(5)){
return castleKeep.makeFireball();
}
}
else if(this.timeSpent < 110){
if(random.oneChanceOutOf(4)){
return castleKeep.makeFireball();
}
}
else if(this.timeSpent < 130){
if(random.oneChanceOutOf(3)){
return castleKeep.makeFireball();
}
}
else if(this.timeSpent < 170){
if(random.oneChanceOutOf(2)){
return castleKeep.makeFireball();
}
}
else{
return castleKeep.makeFireball();
}
break;
}
return quest.makeNoneThing();
},
makeSideCreature : function(){
switch(this.step){
case 0:
return this.makeMiddleCreature();
break;
case 2:
if(random.oneChanceOutOf(5)){
return castleStairs.makeGhost();
}
break;
case 3:
if(random.oneChanceOutOf(4)){} // nothing
else{
return castleStairs.makeGhost();
}
break;
case 4:
return this.makeMiddleCreature();
break;
}
return quest.makeNoneThing();
},
makeDemon : function(){
return land.createMob("DEM", 90, 90, "demon claws", "A demon.", []);
},
makeBanshee : function(){
return land.createMob("BSH", 160, 160, "?", "A banshee, omen of death.", []);
},
makeDoor : function(){
return land.createMob("|-|", 300, 300, "none", "A strong door. Hard to break.", []);
},
makeSpikyDoor : function(){
return land.createMob("|-|", 300, 300, "spikes", "A strong door. Hard to break. There are spikes on it, it hurts !", []);
},
getText : function(){
// Create the text var
var text = "";
// Add the i & k instructions
text += "<span style=\"color:red;\"><b>Press i to go up and k to go down.</b></span> (if it doesn't work, click on the page to gain focus)";
text += "\n";
// Open the span
text += "<span style=\"font-size:10px;\">";
text += "\n";
// We add buffers
for(var i = 0; i < 7; i++){
if(i != this.bufferPosition){
for(var j = 0; j < this.size; j++){
if(this.buffers[i][j].type != "none"){
text += this.buffers[i][j].text;
}
else text += " ";
}
}
else{
for(var j = 0; j < this.size; j++){
if(quest.things[j].type != "none"){
text += quest.things[j].text;
}
else text += " ";
}
}
text += "\n";
}
// We make the lava lake
for(var i = 0; i < Math.floor(this.size/2); i++){
switch(this.lavaLakeStep){
case 0: case 1: text += "_.-'-."; break;
case 2: case 3: text += "._.-'-"; break;
case 4: case 5: text += "-._.-'"; break;
case 6: case 7: text += "'-._.-"; break;
case 8: case 9: text += "-'-._."; break;
case 10: case 11: text += ".-'-._"; break;
}
}
// Close the span
text += "</span>"
return text;
}
};

View File

@ -0,0 +1,77 @@
var htmlInteraction = {
setElementDisplay : function(id, display){
document.getElementById(id).style.display = display;
},
getElement : function(id){
return document.getElementById(id);
},
setElementVisibility : function(id, bool){
if(bool) document.getElementById(id).style.visibility = "visible";
else document.getElementById(id).style.visibility = "hidden";
},
isElementVisible : function(id){
if(document.getElementById(id).style.visibility == "hidden") return false;
return true;
},
setInnerHtml : function(id, value){
document.getElementById(id).innerHTML = value;
darkMode.update();
},
disableButton : function(id){
this.getElement(id).disabled = "disabled";
},
disableButtonClass : function(id){
var arr = document.getElementsByClassName(id);
for(var i = 0; i < arr.length; i++){
arr[i].disabled = "disabled";
}
},
enableButton : function(id){
this.getElement(id).disabled = "";
},
enableButtonClass : function(id){
var arr = document.getElementsByClassName(id);
for(var i = 0; i < arr.length; i++){
arr[i].disabled = "";
}
},
showButton : function(id){
htmlInteraction.setElementVisibility(id, true);
},
showButtonClass : function(id){
var arr = document.getElementsByClassName(id);
for(var i = 0; i < arr.length; i++){
arr[i].style.visibility = "visible";
}
},
hideButton : function(id){
htmlInteraction.setElementVisibility(id, false);
},
hideButtonClass : function(id){
var arr = document.getElementsByClassName(id);
for(var i = 0; i < arr.length; i++){
arr[i].style.visibility = "hidden";
}
},
setButtonOnclick : function(id, value){
this.getElement(id).onclick = value;
},
focusElement : function(id){
this.getElement(id).focus();
}
};

View File

@ -0,0 +1,155 @@
var hut = {
// Variables
shown : false,
speech : "",
step : 0,
// Functions
throwLollipops : function(){
if(lollipops.nbrOwned >= 10){
lollipops.setNbrOwned(lollipops.nbrOwned - 10);
this.setStep(1);
this.setSpeech("I see that you have lollipops... I could cast spells for you, in exchange of some sweets... I looove lollipops!");
this.updateOnPage();
}
},
acceptProposition : function(){
this.setStep(2);
this.setSpeech("See by yourself. My prices are high, but the spells are great! (1 klp means 1000 lollipops)");
this.updateOnPage();
},
setStep : function(value){
this.step = value;
},
setSpeech : function(value){
this.speech = value;
},
updateOnPage : function(){
var text = "";
// Hut drawing
switch(this.step){
case 0:
text += "\
/\\)\\))/\\(/|)\\))/((||\\/)\\)\\\n\
(/((\\///)))/(\\\\(/)\\\\\\\\\\)\\)\n\
.__/(|_/| |\\_|)/__.\n\
| |_/| |\\_| |\n\
| |_/| |\\_| |\n\
.__| |_/| |\\_| |__.\n\
|_/| |\\_|\n\
|_/| |\\_|\n\
._ |_/|________|\\_| _.\n\
'-.|_/ \\_|.-'\
"
text += "\n\n<button id=\"hut_throw_lollipops\" onClick=\"hut.throwLollipops();\">Throw 10 lollipops inside the hut</button>";
break;
default:
text += "\
/\\)\\))/\\(/|)\\))/((||\\/)\\)\\\n\
(/((\\///)))/(\\\\(/)\\\\\\\\\\)\\)\n\
.__/(|_/| _|\\_ |\\_|)/__.\n\
| |_/| (\"} |\\_| |\n\
| |_/|i_.-@-._|\\_| |\n\
.__| |_/|8--, .-|\\_| |__.\n\
|_/|I /==\\ |\\_|\n\
|_/|I | \\|\\_|\n\
._ |_/|I__/___\\|\\_| _.\n\
'-.|_/ \\_|.-'\n\n\
"
break;
}
// Speech & spells drawing
switch(this.step){
case 1:
text += speech.makeSpeechFromText(this.speech, 24, "");
text += "\n\n<button onClick=\"hut.acceptProposition();\">Well... that might be interesting</button>";
break;
case 2:
text += speech.makeSpeechFromText(this.speech, 24, "");
text += this.getSpellsButtons();
break;
}
text += "\n\n<button onClick=\"hut.leave();\">Leave the hut</button>";
htmlInteraction.setInnerHtml("map", text);
if(this.step == 0) buttons.checkHut();
if(this.step == 2) buttons.checkHut();
},
getSpellsButtons : function(){
var text = "\n";
for(var i = 0; i < spells.list.length; i++){
text += "\n<button id=\"hut_spell_" + i + "\" onClick=\"hut.useSpell(" + i + ");\">" + spells.list[i].name + " (" + spells.list[i].price()/1000 + " klp)</button>";
}
// We maybe add the surpass yourself button
if(quest.maxLandOrder == 7 && yourself.canSurpass == false){
text += "\n";
text += "\n<button id=\"hut_surpass\" onClick=\"hut.surpass();\">Surpass yourself (" + 1000 + " klp)</button>";
}
return text;
},
surpass : function(){
if(lollipops.nbrOwned >= 1000000){
lollipops.setNbrOwned(lollipops.nbrOwned - 1000000);
this.setSpeech("You are now able to surpass yourself. Congratulations !");
yourself.setCanSurpass(true);
this.updateOnPage();
}
},
canThisSpellBeUsed : function(id){
// Check the conditions, return false if some of the conditions are not met
for(var i = 0; i < spells.list[id].conditions.length; i++){
switch(spells.list[id].conditions[i]){
case "specialSword":
if(sword.specialSword == false) return false;
break;
}
}
// Check the price, return false if the price isn't met
if(spells.list[id].price() > lollipops.nbrOwned) return false;
return true;
},
enter : function(){
objects.leave();
this.shown = true;
this.updateOnPage();
},
leave : function(){
this.shown = false;
htmlInteraction.setInnerHtml("map", "");
//buttons.enableHomeButtons();
},
useSpell : function(id){
if(lollipops.nbrOwned >= spells.list[id].price()){
lollipops.setNbrOwned(lollipops.nbrOwned - spells.list[id].price());
this.setSpeech(spells.list[id].speech);
spells.list[id].effect();
this.updateOnPage();
inventory.updateOnPage();
}
}
};

View File

@ -0,0 +1,161 @@
var inventory = {
// Variables
magicianHatLetter : "",
// Functions
setMagicianHatLetter : function(value){
this.magicianHatLetter = value;
},
updateOnPage : function(){
// Check for the magician hat letter : if we have the magician hat but no letter is set yet
if(objects.list.magicianHat.have && this.magicianHatLetter == ""){
this.setMagicianHatLetter(" " + random.getRandomLetter());
}
// Sword
switch(sword.name){
case "wooden sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiWoodenSwordWithoutButton); break;
case "copper sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiCopperSwordWithoutButton); break;
case "iron sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiIronSwordWithoutButton); break;
case "silver sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSilverSwordWithoutButton); break;
case "diamond sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiDiamondSwordWithoutButton); break;
case "candy diamond sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiCandyDiamondSword); break;
case "polished candy diamond sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiPolishedCandyDiamondSword); break;
case "chocolate sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiChocolateSword); break;
case "sharp chocolate sword": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSharpChocolateSword); break;
case "Sword of Flames": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSwordOfFlames + "\n\nLevel : " + sword.specialPower); break;
case "Sword of Life": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSwordOfLife + "\n\nLevel : " + sword.specialPower); break;
case "Sword of Summoning": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSwordOfSummoning + "\n\nLevel : " + sword.specialPower); break;
case "Sword of Liflamesummoning": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSwordOfLiflamesummoning + "\n\nLevel : " + sword.specialPower); break;
case "Sword of Randomness": htmlInteraction.setInnerHtml("sword_without_button", sword.asciiSwordOfRandomness + "\n\nLevel : infinite + " + sword.specialPower); break;
}
// Objects
this.updateObjectOnPage("inventory_key", objects.list.key, this.asciiKey, this.asciiNoObject);
this.updateObjectOnPage("inventory_boots", objects.list.boots, this.asciiBoots, this.asciiNoObject);
this.updateObjectOnPage("inventory_magician_hat", objects.list.magicianHat, this.magicianHatLetter + "\n" + this.asciiMagicianHat, this.asciiNoObject);
this.updateObjectOnPage("inventory_pink_ring", objects.list.pinkRing, this.asciiPinkRing, this.asciiNoObject);
this.updateObjectOnPage("inventory_candies_converter", objects.list.candiesConverter, this.asciiCandiesConverter, this.asciiNoObject);
this.updateObjectOnPage("inventory_plate_armour", objects.list.plateArmour, this.asciiPlateArmour, this.asciiNoObject);
this.updateObjectOnPage("inventory_cauldron", objects.list.cauldron, this.asciiCauldron, this.asciiNoObject);
this.updateObjectOnPage("inventory_magical_horn", objects.list.magicalHorn, this.asciiMagicalHorn, this.asciiNoObject);
this.updateObjectOnPage("inventory_horn_of_plenty", objects.list.hornOfPlenty, this.asciiHornOfPlenty, this.asciiNoObject);
this.updateObjectOnPage("inventory_old_amulet", objects.list.oldAmulet, this.asciiOldAmulet, this.asciiNoObject);
if(developperComputer.won){
htmlInteraction.setInnerHtml("inventory_won1", "<pre>" + this.asciiWon1 + "</pre>");
htmlInteraction.setInnerHtml("inventory_won2", "<pre>" + this.asciiWon2 + "</pre>");
htmlInteraction.showButton("hardmode");
}
else{
htmlInteraction.setInnerHtml("inventory_won1", "<pre>" + this.asciiNoObject + "</pre>");
htmlInteraction.setInnerHtml("inventory_won2", "<pre>" + this.asciiNoObject + "</pre>");
htmlInteraction.hideButton("hardmode");
}
// Maps
this.updateObjectOnPage("inventory_swamp_map", objects.list.swampMap, this.asciiSwampMap, this.asciiNoObject);
this.updateObjectOnPage("inventory_hut_map", objects.list.hutMap, this.asciiHutMap, this.asciiNoObject);
this.updateObjectOnPage("inventory_forge_map", objects.list.forgeMap, this.asciiForgeMap, this.asciiNoObject);
this.updateObjectOnPage("inventory_well_map", objects.list.wellMap, this.asciiWellMap, this.asciiNoObject);
},
updateObjectOnPage : function(id, obj, ascii, asciiNoObject){
if(obj.have){
htmlInteraction.setInnerHtml(id, "<pre>" + ascii + "</pre><span><b>" + obj.name + "</b><br/>" + obj.description);
}
else{
htmlInteraction.setInnerHtml(id, "<pre>" + asciiNoObject + "</pre>");
}
},
// Ascii art
asciiKey : " __\n\
/o \\_____\n\
\\__/-=\"=\"`",
asciiBoots : " ____\n\
\\ _|__\n\
__)| /\n\
(___| (__\n\
(_-___)",
asciiMagicianHat : " / \\\n\
/ \\\n\
/ \\\n\
/_______\\",
asciiPinkRing : " .--.\n\
// \\\\\n\
\\\\__//\n\
\'--\'",
asciiSwampMap : " _________\n\
| |\n\
| SWAMP |\n\
| ---> |\n\
|.-._.-._.|",
asciiHutMap : " _________\n\
| __ |\n\
| /lp\\ -> |\n\
| |__| |\n\
|._.-._.__|",
asciiForgeMap : " _________\n\
/ anvil \\\n\
| this |\n\
| <-- way |\n\
\\_________/",
asciiWellMap : " .-~-~-~-.\n\
! ~ ~ !\n\
!~ ~ !\n\
! ~ ~ ~ !\n\
\'-~-~-~-\'",
asciiCandiesConverter : " ______\n\
/+| |+\\\n\
|=={==}==|\n\
\\_|__|_/",
asciiPlateArmour : "-;`\\..../`;-\n\
|...::...|\n\
/\'\'\'::\'\'\'\\\n\
/\\ :: /\\\n\
>._::_.<",
asciiCauldron : " ________\n\
(________)\n\
) (\n\
/ \\\n\
| |\n\
\\__________/",
asciiMagicalHorn : " \\.\n\
\\\'.\n\
\\ \'.\n\
\\,-\'",
asciiHornOfPlenty : " .\\\n\
\\\'.\n\
\\ \'.\n\
\\__)",
asciiOldAmulet : " / \\\n\
o o\n\
\\_/\n\
.^.\n\
\'cnd\'\n\
\'. .\'",
asciiWon1 : "Bravo !\nYou won\nthe game :)\nYou now have\nall the\ncandies in\nthe world.",
asciiWon2 : "(you can now\nask the dev\nfor a real\ncandy, if you\nfind him !)",
asciiNoObject : " \n \n "
};

View File

@ -0,0 +1,82 @@
var land = {
// Variables
list : [],
ponyTime : false,
// Functions
createMob : function(text, max_hp, hp, weapon, description, drops){
if(this.ponyTime == false)
return {type:"mob", text:text, max_hp:max_hp, hp:hp, weapon:weapon, description:description, drops:drops};
else return {type:"mob", text:"PON", max_hp:max_hp, hp:hp, weapon:weapon, description:"A pony", drops:drops};
},
createFakeCharacter : function(){
if(this.ponyTime == false)
return {type:"fake", text:"\\o/", max_hp:0, hp:0, weapon:"none", description:"", drops:[]};
else return {type:"fake", text:"PON", max_hp:0, hp:0, weapon:"none", description:"A pony", drops:[]};
},
createAlly : function(text, max_hp, hp, weapon, description, drops){
if(this.ponyTime == false)
return {type:"ally", text:text, max_hp:max_hp, hp:hp, weapon:weapon, description:description, drops:drops};
else return {type:"ally", text:"PON", max_hp:max_hp, hp:hp, weapon:weapon, description:"A pony", drops:drops};
},
createTrap : function(text, max_hp, hp, weapon, description, drops){
if(this.ponyTime == false)
return {type:"trap", text:text, max_hp:max_hp, hp:hp, weapon:weapon, description:description, drops:drops};
else return {type:"trap", text:"PON", max_hp:max_hp, hp:hp, weapon:weapon, description:"A pony", drops:drops};
},
addLand : function(name, size, order, loadFunction, getTextFunction, moveFunction){
this.list.push({name:name, size:size, order:order, unlocked:false, loadFunction:loadFunction, getTextFunction:getTextFunction, moveFunction:moveFunction});
},
getLandIndexFromOrder : function(order){
for(var i = 0; i < this.list.length; i++){
if(this.list[i].order == order){
return i;
}
}
return -1;
},
getLandIndexFromName : function(name){
for(var i = 0; i < this.list.length; i++){
if(this.list[i].name == name){
return i;
}
}
return -1;
},
updateListOnPage : function(maxOrder){
var index, list, option;
// We iterate over all order from 0 to maxOrder
for(var i = 0; i <= maxOrder; i++){
index = this.getLandIndexFromOrder(i); // We get the index of the land with the order i
// If the land of index "index" isn't already unlocked and is correct (!= -1)
if(index != -1 && this.list[index].unlocked == false){
list = htmlInteraction.getElement("quest_destination"); // We get the list
option = document.createElement("option"); // We create the new element to add to the list
option.text = this.list[index].name; // We set its text
// We add it to the list
try{ list.add(option, list.options[null]); }
catch(e){ list.add(option, null); }
// We set that it is unlocked now
this.list[index].unlocked = true;
}
}
},
getText : function(){
return this.list[quest.currentLandIndex].getTextFunction();
},
load : function(){
return this.list[quest.currentLandIndex].loadFunction();
}
};

View File

@ -0,0 +1,75 @@
var code = "";
function getPhpStuff(boolean){
if(boolean == true) return 1;
return 0;
}
function setPhpStuff(int){
if(int == 1) return true;
return false;
}
function load() {
document.getElementById('my_file').click();
}
function restart() {
clearInterval(cookie.cookiehandler);
cookie.eraseCookie("CandyCookie");
//location.reload();
window.location.reload(true);
}
function readFile (evt) {
var files = evt.target.files;
var file = files[0];
var reader = new FileReader();
reader.onload = function(event) {
var temp = event.target.result;
var var_list = []
var lines = temp.split("\n");
if(lines.length != 90)
{
alert("ERROR: Corrupt Candysave Lines: " + lines.length);
console.log("ERROR: Corrupt Candysave Lines: " + lines.length);
return null;
}
for (var i = 0; i < lines.length; i++) {
var split = lines[i].split(": ");
if(split.length != 2)
{
alert("ERROR: Corrupt Candysave @Line #" + (i+1));
console.log("ERROR: Corrupt Candysave @Line #" + (i+1));
return null;
}
console.log(split[1] + " | " + i);
var_list.push(split[1]);
}
//reset all
cookie.eraseCookie("CandyCookie");
main.onload();
cookie.updateData(var_list);
cookie.createCookie("CandyCookie", cookie.getData(), 365);
window.location.reload(true);
}
reader.readAsText(file)
}

View File

@ -0,0 +1,2 @@
<br />
<b>Notice</b>: Undefined index: pass in <b>/srv/http/candies/scripts/load.php</b> on line <b>14</b><br />

View File

@ -0,0 +1,105 @@
var lollipops = {
// Variables
nbrOwned : 0,
nbrBought : 0,
nbrInStock : 1000,
stockShortage : false,
// Functions
buy1 : function(){
if(candies.nbrOwned >= shop.oneLollipopPrice && this.nbrInStock >= 1){
candies.setNbrOwned(candies.nbrOwned - shop.oneLollipopPrice);
this.setNbrOwned(this.nbrOwned + 1);
this.setNbrBought(this.nbrBought + 1);
this.setNbrInStock(this.nbrInStock - 1);
shop.setMerchantSpeech("Thanks for buyin'! Here's your " + this.getFlavour() + " flavor lollipop.");
}
},
buy10 : function(){
if(candies.nbrOwned >= shop.tenLollipopsPrice && this.nbrInStock >= 10){
candies.setNbrOwned(candies.nbrOwned - shop.tenLollipopsPrice);
this.setNbrOwned(this.nbrOwned + 10);
this.setNbrBought(this.nbrBought + 10);
this.setNbrInStock(this.nbrInStock - 10);
shop.setMerchantSpeech("Thanks for buyin'! Here's your ten lollipops. Various flavours.");
}
else shop.setMerchantSpeech("I'm sorry, we don't have enough lollipops in stock to sell you ten of them. We currently have " + this.nbrInStock + " lollipops in stock.");
},
getFlavour : function(){
var fruits = ["apple", "strawberry", "grape", "blackberry", "orange", "watermelon", "banana", "pear", "cherry", "raspberry", "mandarin", "lime", "peach", "apricot", "blueberry", "kiwifruit", "lychee", "pineapple"];
var uncommon = ["chocolate", "cookie", "pancake", "water", "tomato", "kitten"];
var unrealistic = ["leprechaun", "korrigan", "lollipop", "snow", "storm", "door", "dracula"];
var abstract = ["gluttony", "desire", "love", "causality", "fatalism", "cuteness"];
var chances = [];
if(this.nbrBought < 10) chances = [1];
else if(this.nbrBought < 10) chances = [1];
else if(this.nbrBought < 15) chances = [0.9, 1];
else if(this.nbrBought < 20) chances = [0.8, 1];
else if(this.nbrBought < 25) chances = [0.7, 1];
else if(this.nbrBought < 30) chances = [0.5, 1];
else if(this.nbrBought < 35) chances = [0.4, 0.9, 1];
else if(this.nbrBought < 40) chances = [0.3, 0.8, 1];
else if(this.nbrBought < 45){
if(this.nbrBought == 42 && random.flipACoin()) return "space";
else chances = [0.2, 0.7, 1];
}
else if(this.nbrBought < 50) chances = [0.1, 0.6, 1];
else if(this.nbrBought < 55) chances = [0.1, 0.5, 1];
else if(this.nbrBought < 60) chances = [0.1, 0.4, 0.9];
else if(this.nbrBought < 65) chances = [0.1, 0.3, 0.8];
else if(this.nbrBought < 70) chances = [0.1, 0.2, 0.7];
else if(this.nbrBought < 75) chances = [0.1, 0.2, 0.6];
else if(this.nbrBought < 80) chances = [0.1, 0.2, 0.5];
else if(this.nbrBought < 85) chances = [0.1, 0.2, 0.4];
else if(this.nbrBought == 1337 && random.flipACoin()) return "leet";
else chances = [0.1, 0.2, 0.3];
var r = random.getRandomFloat()
if(r < chances[0]) return random.pickRandomly(fruits);
else if(r < chances[1]) return random.pickRandomly(uncommon);
else if(r < chances[2]) return random.pickRandomly(unrealistic);
else return random.pickRandomly(abstract);
},
delivery : function(){
this.setNbrInStock(this.nbrInStock + 15 + random.getRandomIntUpTo(10));
window.setTimeout(this.delivery.bind(this), 900000); // One delivery every 15 minutes
},
setNbrOwned : function(value){
this.nbrOwned = value;
if(this.nbrOwned != 1) htmlInteraction.setInnerHtml("lollipops", "You have " + this.nbrOwned + " lollipops!");
else htmlInteraction.setInnerHtml("lollipops", "You have 1 lollipop!");
htmlInteraction.setElementVisibility("lollipops", true);
buttons.checkLollipops();
cauldron.updateActionsInfoOnPage();
computer.updateLollipops();
},
setNbrBought : function(value){
this.nbrBought = value;
},
setNbrInStock : function(value){
// Set the value
this.nbrInStock = value;
// If > 100, decrease it
if(this.nbrInStock > 140) this.nbrInStock = 140;
// Handle lollipops stock shortage
if(this.stockShortage == false && this.nbrInStock == 0){
this.stockShortage = true;
buttons.checkLollipopsStockShortage();
}
else if(this.stockShortage == true && this.nbrInStock != 0){
this.stockShortage = false;
buttons.checkLollipopsStockShortage();
}
}
};

View File

@ -0,0 +1,143 @@
var main = {
// Variables
nbrOfSecondsSinceLastMinInterval : 0,
nbrOfSecondsSinceLastHourInterval : 0,
nbrOfSecondsSinceLastDayInterval : 0,
saveShown : false,
// Functions
onload : function(){
// Prevents some stupid refresh bugs of the browser
htmlInteraction.enableButtonClass("home_button");
// Various loads
peacefulForest.onload();
mountGoblin.onload();
underwaterCave.onload();
castleEntrance.onload();
castleStairs.onload();
castleKeep.onload();
cowLevel.onload();
sea.onload();
desert.onload();
hell.onload();
yourself.onload();
chuckNorris.onload();
developperGarden.onload();
developperMoat.onload();
developperComputer.onload();
shop.onload();
candies.onload();
spells.onload();
potions.onload();
sword.onload();
cauldron.onload();
tabs.onload();
// Loading after various loads
quest.onloadAfter(); // This must be call after other loads because it needs the different quests to be loaded
// Loading save from cookie
if(cookie.readCookie("CandyCookie") != null)
{
cookie.setData();
}
else
{
console.log("INFO: Couldn't find a Cookie.");
}
// First actions
window.setInterval(this.oneTenthSecInterval.bind(this), 100);
window.setInterval(this.secInterval.bind(this), 1000);
cookie.cookiehandler = window.setInterval(cookie.autoSave, 1000);
},
oneTenthSecInterval : function(){
// We try to convert candies into lollipops
candiesConverter.convert();
},
secInterval : function(){
// Candies
if(objects.list.oldAmulet.have == false) candies.setNbrOwned(candies.nbrOwned + candies.candiesPerSecond);
else candies.setNbrOwned(candies.nbrOwned + candies.candiesPerSecond*3);
// Quest tired time
if(objects.list.pinkRing.have == false) quest.setTiredTime(quest.tiredTime - 1);
else quest.setTiredTime(quest.tiredTime - 2);
// Lollipop farm
if(farm.productionDelayType == "sec"){
if(objects.list.hornOfPlenty.have == false) lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction);
else lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction*3);
}
// Cauldron
cauldron.moveSmoke();
cauldron.increaseActionTimer();
// We increase nbrOfSeconds variables
this.nbrOfSecondsSinceLastMinInterval += 1;
this.nbrOfSecondsSinceLastHourInterval += 1;
this.nbrOfSecondsSinceLastDayInterval += 1;
// We possibly trigger minInterval
if(this.nbrOfSecondsSinceLastMinInterval >= 60){
this.nbrOfSecondsSinceLastMinInterval = 0;
this.minInterval();
}
// We possibly trigger hourInterval
if(this.nbrOfSecondsSinceLastHourInterval >= 3600){
this.nbrOfSecondsSinceLastHourInterval = 0;
this.hourInterval();
}
// We possibily trigger dayInterval
if(this.nbrOfSecondsSinceLastDayInterval >= 86400){
this.nbrOfSecondsSinceLastDayInterval = 0;
this.dayInterval();
}
},
minInterval : function(){
// Lollipop farm
if(farm.productionDelayType == "min"){
if(objects.list.hornOfPlenty.have == false) lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction);
else lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction*3);
}
},
hourInterval : function(){
// Lollipop farm
if(farm.productionDelayType == "hour"){
if(objects.list.hornOfPlenty.have == false) lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction);
else lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction*3);
}
},
dayInterval : function(){
// Lollipop farm
if(farm.productionDelayType == "day"){
if(objects.list.hornOfPlenty.have == false) lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction);
else lollipops.setNbrOwned(lollipops.nbrOwned + farm.lollipopsProduction*3);
}
},
setNbrOfSecondsSinceLastMinInterval : function(value){
this.nbrOfSecondsSinceLastMinInterval = value;
},
setNbrOfSecondsSinceLastHourInterval : function(value){
this.nbrOfSecondsSinceLastHourInterval = value;
},
setNbrOfSecondsSinceLastDayInterval : function(value){
this.nbrOfSecondsSinceLastDayInterval = value;
}
};
window.onload = main.onload.bind(main);

View File

@ -0,0 +1,49 @@
var mountGoblin = {
// Variables
basicChestProbability : 50,
// Functions
onload : function(){
land.addLand("Mount Goblin", 28, 1, this.load.bind(this), this.getText.bind(this));
},
setBasicChestProbability : function(value){
this.basicChestProbability = value;
},
load : function(){
for(var i = 1; i < quest.things.length; i++){
if(random.flipACoin()){
// If we're not at the top of the mount
if(i < 12 || i > 15){
// 1 chance out of x we spawn a CHS (chest !!)
if(random.oneChanceOutOf(this.basicChestProbability)){
this.setBasicChestProbability(this.basicChestProbability + 50);
quest.things[i] = quest.makeBasicChest();
}
// 1 chance out of 7 we spaw a GSB
else if(random.oneChanceOutOf(7)) quest.things[i] = land.createMob("GSB", 20, 5 + random.getRandomIntUpTo(5), "claws", "A sick goblin. It smells.", [drops.createDrop("candies", 3 + random.getRandomIntUpTo(3))]);
// Else we spawn a GOB
else quest.things[i] = land.createMob("GOB", 20, 20, "claws", "A nasty goblin.", [drops.createDrop("candies", 3 + random.getRandomIntUpTo(3))]);
}
else{
quest.things[i] = land.createMob("GTB", 30, 30, "dagger", "A tenacious goblin. Oh, he has a dagger, too.", [drops.createDrop("candies", 9 + random.getRandomIntUpTo(9)), drops.createDrop("object", "key", random.oneChanceOutOf(2)), drops.createDrop("object", "boots", random.oneChanceOutOf(5)), drops.createDrop("object", "swampMap", random.oneChanceOutOf(5)), drops.createDrop("object", "hutMap", random.oneChanceOutOf(5))]);
}
}
}
},
getText : function(){
var text = "";
text += " "; for(var i = 12; i < 16; i++) text += quest.things[i].text; text += "\n";
text += " "; for(var i = 9; i < 12; i++) text += quest.things[i].text; text += "/ \\/ \\/ \\/ \\"; for(var i = 16; i < 19; i++) text += quest.things[i].text; text += "\n";
text += " "; for(var i = 6; i < 9; i++) text += quest.things[i].text; text += "/ \\/ \\/ \\ / \\ \\ / \\/ \\/ \\"; for(var i = 19; i < 22; i++) text += quest.things[i].text; text += "\n";
text += " "; for(var i = 3; i < 6; i++) text += quest.things[i].text; text += "/ \\/ \\/ \\ \\ / \\/ \\ \\/ / \\ / \\/ \\/ \\"; for(var i = 22; i < 25; i++) text += quest.things[i].text; text += "\n";
text += ""; for(var i = 0; i < 3; i++) text += quest.things[i].text; text += "/ \\/ \\/ \\ / / \\ / / \\ / / \\/ / \\ / \\/ \\/ \\"; for(var i = 25; i < 28; i++) text += quest.things[i].text;
return text;
}
};

View File

@ -0,0 +1,40 @@
var objects = {
// Variables
list : {
key : {have:false, found:false, text:"a key", name:"The lollipop farm's key.", description:"This key brings a lollipop farm to your candy box."},
boots : {have:false, found:false, text:"a pair of boots", name:"The seven-league boots.", description:"These boots increase your speed during quests."},
swampMap : {have:false, found:false, text:"a map", name:"The map to the Swampy Swamp.", description:"The Swampy Swamp is the swampiest swamp you've ever seen."},
hutMap : {have:false, found:false, text:"a map", name:"The map to the sorceress' hut.", description:"In this hut lives a powerful witch ! She might help you... but not for free."},
wellMap : {have:false, found:false, text:"a map", name:"The map to the wishing well.", description:"Make a wish, make it so, you may shine, you may glow..."},
magicianHat : {have:false, found:false, text:"a hat", name:"The magician's hat.", description:"Wearing this hat enhances your magic."},
pinkRing : {have:false, found:false, text:"a ring", name:"The pink ring of calmness.", description:"This pink ring will help you control your breath. You will recover faster after a quest."},
forgeMap : {have:false, found:false, text:"a map", name:"The map to the forge.", description:"An anvil can be really useful, if you have the appropriate sword.."},
candiesConverter : {have:false, found:false, text:"a strange object", name:"The candies converter.", description:"When activated in your candy box, this surprising object quickly converts all your candies into lollipops. One candy gives one lollipop !"},
plateArmour : {have:false, found:false, text:"a strong armour", name:"A plate armour.", description:"This strong armour protects you from your enemies. You will lose less health points."},
cauldron : {have:false, found:false, text:"a big container", name:"A cauldron.", description:"This cauldron allows you to brew a large variety of potions, using raw, common materials like candies or lollipops."},
magicalHorn : {have:false, found:false, text:"a horn", name:"A magical horn.", description:"This magical horn belonged to a unicorn. Carrying it will make you regain health points continuously during a quest !"},
hornOfPlenty : {have:false, found:false, text:"a horn", name:"The horn of plenty.", description:"The horn of plenty, stolen from Ploutos by the cow king, who thought it was a real horn. This mythical object will multiply by three your lollipop farm production."},
oldAmulet : {have:false, found:false, text:"an amulet", name:"An old amulet.", description:"This old amulet, found on the corpse of a dead warrior, is known to bring prosperity to its owner. It will multiply by three your candies production."}
},
leave : function(){
hut.leave();
wishingWell.leave();
swamp.leave();
forge.leave();
},
// Functions
setHaveObject : function(name, value){
// We set the new "have" value
this.list[name].have = value;
// We check the buttons related to objects, since they may have changed
buttons.checkObjects();
// We update the inventory
inventory.updateOnPage();
}
};

View File

@ -0,0 +1,85 @@
var peacefulForest = {
// Variables
basicChestProbability : 100,
poniesEncountered : 0,
// Functions
onload : function(){
land.addLand("The peaceful forest", 30, 0, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
},
setBasicChestProbability : function(value){
this.basicChestProbability = value;
},
move : function(){
// Iterate over all things
for(var i = 0; i < quest.things.length; i++){
// If it's a wood poney (wood poneeeey \o/)
if(quest.things[i].text == "WPY"){
// We make it move if possible
if(random.flipACoin()){
// If we can move it to the right
if(quest.things[i+1].type == "none"){
// We move it to the right
quest.things[i+1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
else{
// If we can move it to the left
if(quest.things[i-1].type == "none"){
// We move it to the left
quest.things[i-1] = quest.things[i];
quest.things[i] = quest.makeNoneThing();
}
}
}
}
},
load : function(){
var addedAPoney = false; // Will be true if we added a pony. Useful to avoid adding two ponies in the same quest
for(var i = 1; i < quest.things.length; i++){
if(random.flipACoin()){
// 1 chance out of x we spawn a wood poney !!!! (if we didn't already add one)
if(random.oneChanceOutOf(300) && addedAPoney == false){
addedAPoney = true;
quest.things[i] = this.makeWoodPoney();
}
// 1 chance out of x we spawn a CHS (chest !!)
else if(random.oneChanceOutOf(this.basicChestProbability)){
this.setBasicChestProbability(this.basicChestProbability + 50);
quest.things[i] = quest.makeBasicChest();
}
// Else we spawn a tree
else quest.things[i] = land.createMob("|||", 5, 5, "none", "A tree. It sometimes drops a candy.", [drops.createDrop("candies", random.getRandomIntUpTo(1)), drops.createDrop("object", "key", random.oneChanceOutOf(2))]);
}
}
if(addedAPoney){
this.setPoniesEncountered(this.poniesEncountered + 1);
}
},
setPoniesEncountered : function(value){
this.poniesEncountered = value;
},
getText : function(){
var text = "";
for(var i = 0; i < quest.things.length; i++){
text += quest.things[i].text;
}
return text;
},
makeWoodPoney : function(){
return land.createMob("WPY", 12, 12, "hooves", "A wood poney ! It's a poney ! It the woods !", [drops.createDrop("candies", 42)]);
}
};

View File

@ -0,0 +1,493 @@
var potions = {
// Variables
list : {},
// Functions
getCountdown : function(){
if(objects.list.magicianHat.have) return 12;
return 20;
},
onload : function(){
this.addPotion("health", "Health potion", "#ff0000", "potions.heal(50);", "Use this minor health potion during combats to regain some of your health points !", "potion");
this.addPotion("escape", "Escape potion", "#51c90f", "potions.escape();", "The escape potion allow escaping from a quest while avoiding any time penalty. It makes you flee really really fast !", "potion");
this.addPotion("berserk", "Berserk potion", "#000000", "potions.berserk();", "The berserk potions transforms you into a.. BERSERKEEEER !", "potion");
this.addPotion("fireScroll", "Fire scroll", "#dc3e00", "potions.fireScroll();", "This powerful fire scroll will burn your enemy if you use it during a fight.", "scroll");
this.addPotion("acidRainScroll", "Acid rain scroll", "#68980b", "potions.acidRainScroll();", "This acid rain scroll will instantly damage everyone in the whole land (including yourself).", "scroll");
this.addPotion("teleportScroll", "Teleport scroll", "#7ca0b5", "potions.teleportScroll();", "This teleport scroll will make you go back to the beginning of a quest. Useful to rest a little bit !", "scroll");
this.addPotion("earthquakeScroll", "Earthquake scroll", "#470b0b", "potions.earthquakeScroll();", "This earthquake scroll will inflict a lot of damage to everyone in the whole land.", "scroll");
this.addPotion("impInvocationScroll", "Imp invocation scroll", "#ff6600", "potions.impInvocationScroll();", "This imp invocation scroll will, if there's enough place, invoke in front of you an imp which will fight for you.", "scroll");
this.addPotion("majorHealth", "Major health potion", "#ff0000", "potions.heal(100);", "This major health potion is twice more efficient than the minor one.", "potion");
this.addPotion("invulnerability", "Invulnerability potion", "#ef893b", "potions.invulnerability();", "This invulnerability potion will make you invincible for some time, but it fills your stomach : you won't be able to drink another potion for a long time after using it.", "potion");
this.addPotion("turtle", "Turtle potion", "#008a13", "potions.turtle();", "When you drink a turtle potion, you become a turtle. Drawback : you walk slower. Benefit : you're way more resistant to your ennemies' attacks.", "potion");
this.addPotion("jelly", "Jelly", "#9500b5", "potions.jelly();", "This skillfully prepared jelly explodes on contact of anything trying to go through it, dealing high damage. Using it will place it behind you.", "special");
this.addPotion("seed", "Seed", "#3dab3a", "potions.seed();", "This seed is able to make grow a candy tree. The candy tree is made of candies, and it takes a lot of time to cut it down. Using the seed will grow a tree in front of you, if there's enough place.", "special");
this.addPotion("cloning", "Cloning potion", "#6d6d6d", "potions.cloning();", "This cloning potion will, well... clone you. Your clone will have the same health points as you when you drank the potion, but he won't have your armor nor your sword. He will fight using a \"cloned sword\", which deals a correct amount of damage. The clone will be placed in front of you, if there's enough place.", "potion");
this.addPotion("superman", "Superman potion", "#ddef17", "potions.superman();", "This superman potion will give you a cape and make you look like superman for the rest of the quest !", "potion");
this.addPotion("gmooh", "G.M.O.O.H. potion", "#ff00c0", "potions.gmooh();", "This \"Get Me Out Of Here\" potion will teleport you somewhere else. The destination isn't predictable at all.", "potion");
},
updateOnPage : function(){
htmlInteraction.setInnerHtml("quest_potions", this.getText());
if(quest.weAreQuestingRightNow) this.updateCountdownOnPage();
},
updateCountdownOnPage : function(){
htmlInteraction.setInnerHtml("quest_potions_countdowns", this.getCountdownText());
},
getCountdownText : function(){
var text = "";
// Potions
if(quest.berserk) text += "Berserk mode : " + quest.berserkCountdown + "\n";
if(quest.turtle) text += "You're a turtle : " + quest.turtleCountdown + "\n";
if(quest.invulnerability) text += "Invincible : " + quest.invulnerabilityCountdown + "\n";
if(this.list.health.shown || this.list.escape.shown || this.list.berserk.shown || this.list.majorHealth.shown || this.list.invulnerability.shown || this.list.turtle.shown || this.list.cloning.shown || this.list.superman.shown || this.list.gmooh.shown) text += "Potion countdown : " + quest.potionUseCountdown + "\n";
// Scrolls
if(this.list.fireScroll.shown || this.acidRainScroll.shown || this.teleportScroll.shown || this.earthquakeScroll.shown || this.impInvocationScroll.shown) text += "Scroll countdown : " + quest.scrollUseCountdown;
return text;
},
getText : function(){
var text = "";
// Special stuff
text += this.getPotionButtonText(this.list.seed);
text += this.getPotionButtonText(this.list.jelly);
text += "\n";
// Potions
text += this.getPotionButtonText(this.list.health);
text += this.getPotionButtonText(this.list.escape);
text += this.getPotionButtonText(this.list.berserk);
text += "\n";
// Potions bis !
text += this.getPotionButtonText(this.list.majorHealth);
text += this.getPotionButtonText(this.list.turtle);
text += this.getPotionButtonText(this.list.invulnerability);
text += this.getPotionButtonText(this.list.superman);
text += this.getPotionButtonText(this.list.cloning);
text += this.getPotionButtonText(this.list.gmooh);
text += "\n";
// Scrolls
text += this.getPotionButtonText(this.list.fireScroll);
text += this.getPotionButtonText(this.list.acidRainScroll);
text += this.getPotionButtonText(this.list.teleportScroll);
text += this.getPotionButtonText(this.list.impInvocationScroll);
text += this.getPotionButtonText(this.list.earthquakeScroll);
return text;
},
getPotions : function(potion, nbr){
this.setPotionShown(potion, true);
potion.nbrOwned += nbr;
this.updateOnPage();
},
setPotionShown : function(potion, value){
potion.shown = value;
},
setPotionNbrOwned : function(potion, value){
potion.nbrOwned = value;
},
buyPotion : function(potion, price){
this.getPotions(potion, 1);
candies.setNbrOwned(candies.nbrOwned - price);
shop.setMerchantSpeech(potion.merchantSpeech);
},
buyScroll : function(price){
var maxPower = 2;
if(objects.list.magicianHat.have) maxPower = 4;
switch(random.getRandomIntUpTo(maxPower)){
case 0:
this.buyPotion(this.list.fireScroll, price);
break;
case 1:
this.buyPotion(this.list.acidRainScroll, price);
break;
case 2:
this.buyPotion(this.list.teleportScroll, price);
break;
case 3:
this.buyPotion(this.list.impInvocationScroll, price);
break;
case 4:
this.buyPotion(this.list.earthquakeScroll, price);
break;
}
},
getPotionButtonText : function(potion){
if(potion.shown){
var disabled = "";
var tooltip = "";
if(quest.weAreQuestingRightNow == false || potion.nbrOwned <= 0 || ((potion.type == "potion" && quest.potionUseCountdown > 0) || (potion.type == "scroll" && quest.scrollUseCountdown > 0))) disabled = "disabled=disabled";
if(quest.weAreQuestingRightNow == false) tooltip = "<span>" + potion.merchantSpeech + "</span>";
return "<button class=\"tooltip\" style=\"border: 2px solid " + potion.buttonColor + "; padding: 2px 5px;\" " + disabled + " onclick=\"" + potion.action + "\">" + potion.buttonText + " (" + potion.nbrOwned + ")" + tooltip + "</button>\n";
}
return "";
},
addPotion : function(name, buttonText, buttonColor, action, merchantSpeech, type){
this.list[name] = {buttonText:buttonText, buttonColor:buttonColor, action:action, shown:false, nbrOwned:0, merchantSpeech:merchantSpeech, type:type};
},
makeJelly : function(){
return land.createTrap("JEL", 1, 1, "powerful explosion", "A jelly !! Go away !", []);
},
makeClone : function(hp, max_hp){
return land.createAlly("\\o/", max_hp, hp, "cloned sword", "A clone of you.", []);
},
makeCandyTree : function(){
var hp = 0;
// One chance out of 100 to spawn the Yggdrasil \o/
if(random.oneChanceOutOf(100)){
return land.createTrap("/Y\\", 10000, 10000, "none", "Yggdrasill is its name, a tall tree, showered with shining loam.", [drops.createDrop("candies", 10000)]);
}
else{
hp = 500 + 100 * random.getRandomIntUpTo(4); // 500 / 600 / 700 / 800 / 900
return land.createTrap("\\|/", hp, hp, "none", "A candy tree. I hope you're carrying a good axe.", []);
}
},
heal : function(howMuch){
// We get the character index
var id = quest.getCharacterIndex();
if(quest.things[id].hp > 0 && ((howMuch == 50 && this.list.health.nbrOwned > 0) || (howMuch == 100 && this.list.majorHealth.nbrOwned > 0))){
// We decrement nbrOwned
if(howMuch == 50)
this.list.health.nbrOwned -= 1;
else if(howMuch == 100)
this.list.majorHealth.nbrOwned -= 1;
// We increment hp
quest.things[id].hp += howMuch;
// We set hp = max_hp if hp > max_hp
if(quest.things[id].hp > quest.things[id].max_hp){
quest.things[id].hp = quest.things[id].max_hp;
}
// We set the countdown
quest.potionUseCountdown += this.getCountdown();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
escape : function(){
if(this.list.escape.nbrOwned > 0){
// We decrement nbrOwned
this.list.escape.nbrOwned -= 1;
// We tell the quest that we escape
quest.escaping = true;
// We delete all tired time
quest.setTiredTime(0);
quest.setTiredFound(0);
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
berserk : function(){
if(this.list.berserk.nbrOwned > 0){
// We decrement nbrOwned
this.list.berserk.nbrOwned -= 1;
// We set the countdown
quest.potionUseCountdown += this.getCountdown();
// We tell the quest that we are now in berserk mode
quest.beginBerserk();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
fireScroll : function(){
if(this.list.fireScroll.nbrOwned > 0){
// We decrement nbrOwned
this.list.fireScroll.nbrOwned -= 1;
// We set the countdown
quest.scrollUseCountdown += this.getCountdown();
// We burn the enemy !
var index = quest.getCharacterIndex();
index += 1; // We set the index to look just in front of the player
if(quest.things[index].type == "mob"){ // If it's a mob
quest.things[index].hp -= 25 + random.getRandomIntUpTo(10);
if(quest.things[index].hp < 0) quest.things[index] = quest.makeNoneThing();
}
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
acidRainScroll : function(){
if(yourself.end == false && this.list.acidRainScroll.nbrOwned > 0){
// We decrement nbrOwned
this.list.acidRainScroll.nbrOwned -= 1;
// We set the countdown
quest.scrollUseCountdown += this.getCountdown();
// We burn everyone
for(var i = 0; i < quest.things.length; i++){
if(quest.things[i].type == "mob" || quest.things[i].type == "character"){
quest.things[i].hp -= 6;
if(quest.things[i].type == "character" && quest.things[i].hp <= 0) quest.things[i].hp = 1;
if(quest.things[i].hp < 0) quest.things[i] = quest.makeNoneThing();
}
}
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
teleportScroll : function(){
// If we're not already at index 0
if(quest.things[0].type != "character" && this.list.teleportScroll.nbrOwned > 0){
// We decrement nbrOwned
this.list.teleportScroll.nbrOwned -= 1;
// We set the countdown
quest.scrollUseCountdown += this.getCountdown();
// We teleport !
var index = quest.getCharacterIndex();
quest.things[0] = quest.things[index];
quest.things[index] = quest.makeNoneThing();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
earthquakeScroll : function(){
if(yourself.end == false && this.list.earthquakeScroll.nbrOwned > 0){
// We decrement nbrOwned
this.list.earthquakeScroll.nbrOwned -= 1;
// We set the countdown
quest.scrollUseCountdown += this.getCountdown();
// We hit everyone
for(var i = 0; i < quest.things.length; i++){
if(quest.things[i].type == "mob" || quest.things[i].type == "character"){
quest.things[i].hp -= 12;
if(quest.things[i].type == "character" && quest.things[i].hp <= 0) quest.things[i].hp = 1;
if(quest.things[i].hp < 0) quest.things[i] = quest.makeNoneThing();
}
}
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
impInvocationScroll : function(){
var index = quest.getCharacterIndex();
// If the character isn't at the end of the land and there's nothing in front of him
if(index < quest.things.length-1 && quest.things[index+1].type == "none" && this.list.impInvocationScroll.nbrOwned > 0){
// We decrement nbrOwned
this.list.impInvocationScroll.nbrOwned -= 1;
// We set the countdown
quest.scrollUseCountdown += this.getCountdown();
// We invoke an int
quest.things[index+1] = quest.makeImp();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
invulnerability : function(){
if(this.list.invulnerability.nbrOwned > 0){
// We decrement nbrOwned
this.list.invulnerability.nbrOwned -= 1;
// We set the countdown (40 ! because this potion is too awesome)
quest.potionUseCountdown += 40;
// We tell the quest that we are now in berserk mode
quest.beginInvulnerability();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
turtle : function(){
if(this.list.turtle.nbrOwned > 0){
// We decrement nbrOwned
this.list.turtle.nbrOwned -= 1;
// We set the countdown
quest.potionUseCountdown += this.getCountdown();
// We tell the quest that we are now in berserk mode
quest.beginTurtle();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
jelly : function(){
// We get the character index
var index = quest.getCharacterIndex();
// If the character isn't at the beginning of the land and there's nothing behind the character
if(index != 0 && quest.things[index - 1].type == "none" && this.list.jelly.nbrOwned > 0){
// We decrement nbrOwned
this.list.jelly.nbrOwned -= 1;
// We place a jelly
quest.things[index-1] = this.makeJelly();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
seed : function(){
// We get the character index
var index = quest.getCharacterIndex();
// If the character isn't at the end of the land and there's nothing in front of the character
if(index < quest.things.length-1 && quest.things[index + 1].type == "none"){
// We decrement nbrOwned
this.list.seed.nbrOwned -= 1;
// We place a candy tree
quest.things[index+1] = this.makeCandyTree();
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
cloning : function(){
// We get the character index
var index = quest.getCharacterIndex();
// If the character isn't at the beginning of the land and there's nothing in front of the character
if(index != 0 && index < quest.things.length-1 && quest.things[index + 1].type == "none" && this.list.cloning.nbrOwned > 0){
// We decrement nbrOwned
this.list.cloning.nbrOwned -= 1;
// We set the countdown
quest.potionUseCountdown += 100;
// We place a clone
quest.things[index+1] = this.makeClone(quest.things[index].hp, quest.things[index].max_hp);
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
superman : function(){
if(this.list.superman.nbrOwned > 0){
// We get the character's index
var index = quest.getCharacterIndex();
// We decrement nbrOwned
this.list.superman.nbrOwned -= 1;
// We set the countdown
quest.potionUseCountdown += this.getCountdown();
// We change the character text
quest.things[index].text = "(o-";
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
gmooh : function(){
if(this.list.gmooh.nbrOwned > 0){
// We tell the quest that we're using a gmooh potion, then when quest.move will be executed, our gmoohEffect() function will be called
quest.gmooh = true;
// We delete all tired time
quest.setTiredTime(0);
quest.setTiredFound(0);
// We update the quest and the potions on page
quest.updateOnPage();
this.updateOnPage();
}
},
// When this function is called, quest.stop() was done just before, so we can launch a new quest if we want ;)
gmoohEffect : function(){
// We decrement nbrOwned
this.list.gmooh.nbrOwned -= 1;
quest.setTiredTime(0);
switch(random.getRandomIntUpTo(3)){
case 0:
quest.begin(false, land.getLandIndexFromName("The peaceful forest"));
break;
case 1:
quest.begin(false, land.getLandIndexFromName("cowLevel"));
break;
case 2:
quest.begin(false, land.getLandIndexFromName("sea"));
break;
case 3:
quest.begin(false, land.getLandIndexFromName("desert"));
break;
}
}
};

View File

@ -0,0 +1,476 @@
var quest = {
// Variables
currentLandIndex : 0, // Index of the current land in land.list
maxLandOrder : -1, // Max land order we achieved for the moment
candiesFound : 0, // Number of candies found during a quest
speed : 0, // Speed of the character during a quest
things : [], // Array containing all the things present in a quest
tiredTime : 0, // Number of seconds we need to spend before doing another quest
tiredFound : 0, // Number of seconds we will need to wait after finishing the current quest
potionUseCountdown : 0, // Number of movements we have to wait before using another potion
scrollUseCountdown : 0, // Same thing for scrolls
escaping : false, // If true, it means we are escaping from the quest
gmooh : false,
berserk : false, // If true, we're in berserk mode
berserkCountdown : 0, // Number of cycles we still have to stay in berserk mode
invulnerability : false, // If true, we're invincible
invulnerabilityCountdown : 0, // Number of cycles we still have to stay as invincible
turtle : false, // If true, we're a turtle
turtleCountdown : 0, // Number of cycles we still have to stay as a turtle
weAreQuestingRightNow : false, // True if we're making a quest right now
characterSpeed : 1, // Speed of the character : if = 2 for example, the character will take two cycles to move. This variable can be reduce by being a turtle
characterSpeedStep : 1, // Used to apply the characterSpeed var
onloadAfter : function(){
this.setMaxLandOrder(0);
},
setMaxLandOrder : function(value){
if(value > this.maxLandOrder){
this.maxLandOrder = value; // We change the value
land.updateListOnPage(quest.maxLandOrder); // And we try to update the quest list on the html page, in case a new quest was unlocked
}
},
begin : function(getLandFromList, landIndex){
// Disable button
htmlInteraction.disableButton("quest_button");
// First thing to do !
this.weAreQuestingRightNow = true;
// If we have to get the land index from the list on the html page
if(getLandFromList == true){
// We get the index in land.list of the current land selected in the html list
var landNameInHtmlList = htmlInteraction.getElement("quest_destination").options[htmlInteraction.getElement("quest_destination").selectedIndex].text;
this.currentLandIndex = land.getLandIndexFromName(landNameInHtmlList);
}
// Else, we use the index given in the parameters
else{
this.currentLandIndex = landIndex;
}
// We show the quest panel
htmlInteraction.setElementVisibility("quest", true);
htmlInteraction.setElementVisibility("quest_potions_countdowns", true);
// We empty the things array and put none things in it
this.things = this.fillWithNoneThings();
// We add the character
if(land.ponyTime == false)
this.things[0] = {type:"character", text:"\\o/", max_hp:this.getCharacterMaxHp(), hp:this.getCharacterMaxHp(), weapon:(sword.name), description:"You"};
else
this.things[0] = {type:"character", text:"PON", max_hp:this.getCharacterMaxHp(), hp:this.getCharacterMaxHp(), weapon:(sword.name), description:"You"};
// We set the speed
this.speed = this.getSpeed();
// We set the potion & scroll use countdown
this.potionUseCountdown = 0;
this.scrollUseCountdown = 0;
// Not escaping at first
this.escaping = false;
// Not using gmooh potion at first
this.gmooh = false;
// Not in berserk mode at first
this.berserk = false;
this.berserkCountdown = 0;
this.speed = this.getSpeed();
// Not invincible at first
this.invulnerability = false;
this.invulnerabilityCountdown = 0;
// Not turtle at first
this.turtle = false;
this.turtleCountdown = 0;
// Speed = 1 at first and the step = 1 too
this.characterSpeed = 1;
this.characterSpeedStep = 1;
// Load the current land
land.load();
// Update the quest and the potions on page
this.updateOnPage();
potions.updateOnPage();
// Set a timeout for the next quest movement
window.setTimeout(this.move.bind(this), this.speed);
},
updateOnPage : function(){
// Variables declaration
var text;
// Land
text = land.getText();
text += "\n";
// Status
text += status2.getText();
text += "\n";
// Drops
text += drops.getText();
// Draw text
htmlInteraction.setInnerHtml("quest", text);
},
getCharacterMaxHp : function(){
return 100 + Math.floor(Math.pow(candies.nbrEaten, 0.4)*2.1); // This function means ~ one day of candies eaten at 1cnd/s = +200 hp
},
getSpeed : function(){
if(objects.list.boots.have && this.berserk) return 125;
if(objects.list.boots.have || this.berserk) return 250;
return 500;
},
getCharacterIndex : function(){
for(i = 0; i < this.things.length; i++){
if(this.things[i].type == "character") return i;
}
},
move : function(){
// If we're not escaping, we don't stop the quest
if(this.escaping == false && this.gmooh == false){
for(var index = 0; index < this.things.length; index++){
if(this.things[index].type == "character" || this.things[index].type == "ally" || this.things[index].type == "trap"){
// If we are at the end of the quest
if(index + 1 == this.things.length){
// If we're the character
if(this.things[index].type == "character"){
// We set a timeout to the winning function and we return
window.setTimeout(this.won.bind(this), 3000);
return;
}
// Else, we're just an ally or a trap
else{
// We disappear
quest.things[index] = quest.makeNoneThing();
}
}
// Else, we move ourselves
else{
// If there's nothing in front of us and we're not a trap, we just move
if(this.things[index].type != "trap" && this.things[index + 1].type == "none"){
if(this.characterSpeedStep >= this.characterSpeed){
this.characterSpeedStep = 1; // We set the step back to 1
this.things[index + 1] = this.things[index];
this.things[index] = this.makeNoneThing();
index += 1; // We increment the index to avoid re evaluating the same thing just after
}
else{
this.characterSpeedStep += 1; // We increment the step
}
}
// Else, we try to fight
else{
// If the thing in front of us is a mob or a trap (and we're not one..), we fight
if(this.things[index + 1].type == "mob" || (this.things[index + 1].type == "trap" && this.things[index].type != "trap")){
if(this.fight(index, index + 1) == true) return;
}
}
}
}
}
// We set the timeout to move again
window.setTimeout(this.move.bind(this), this.speed);
// We decrement the potion use countdown
if(this.potionUseCountdown > 0){
this.potionUseCountdown -= 1;
if(this.potionUseCountdown == 0){
potions.updateOnPage();
}
else potions.updateCountdownOnPage();
}
// Same thing for the scroll use countdown
if(this.scrollUseCountdown > 0){
this.scrollUseCountdown -= 1;
if(this.scrollUseCountdown == 0){
potions.updateOnPage();
}
else potions.updateCountdownOnPage();
}
// We decrement the berserk mode countdown
if(this.berserkCountdown > 0){
this.berserkCountdown -= 1;
if(this.berserkCountdown == 0) this.stopBerserk();
potions.updateCountdownOnPage();
}
// We decrement the invulnerability mode countdown
if(this.invulnerabilityCountdown > 0){
this.invulnerabilityCountdown -= 1;
if(this.invulnerabilityCountdown == 0) this.stopInvulnerability();
potions.updateCountdownOnPage();
}
// We decrement the turtle mode countdown
if(this.turtleCountdown > 0){
this.turtleCountdown -= 1;
if(this.turtleCountdown == 0) this.stopTurtle();
potions.updateCountdownOnPage();
}
// We make the land move too
if(land.list[this.currentLandIndex].moveFunction != undefined){
land.list[this.currentLandIndex].moveFunction();
}
// Horn bonus
if(objects.list.magicalHorn.have){
this.applyMagicalHornBonus();
}
// We update on page
this.updateOnPage();
}
// Else we're escaping : we stop the quest
else if(this.escaping){
this.stop();
}
// Else if we're using a gmooh potion
else if(this.gmooh){
this.stop();
potions.gmoohEffect();
}
},
applyMagicalHornBonus : function(){
var index = this.getCharacterIndex();
// If we're not dead
if(this.things[index].hp > 0){
this.things[index].hp += 3;
if(this.things[index].hp > this.things[index].max_hp) this.things[index].hp = this.things[index].max_hp;
}
},
fight : function(index1, index2){
// We launch a fight between us and the mob if the mob still have some hp (he may lose its hp because of a scroll)
if(this.things[index2].hp > 0) damage.makeTwoQuestThingsFighting(index1, index2);
// Check for deads
if(this.checkIfDead(index1, index2) == true) return true;
if(this.checkIfDead(index2, index1) == true) return true;
return false;
},
checkIfDead : function(index, indexKiller){
// If we're dead
if(this.things[index].hp <= 0){
// If we're the character
if(this.things[index].type == "character"){
this.updateOnPage(); // We update on page
window.setTimeout(this.stop.bind(this), 5000); // We set the timeout to stop the quest
return true; // We quit
}
// Else, we're just an ally or a trap
else if(this.things[index].type == "ally" || this.things[index].type == "trap"){
// We disappear
if(this.things[index].drops != []) drops.getAllDropsFromList(this.things[index].drops); // We gain the drops of the defeated ally or trap
quest.things[index] = quest.makeNoneThing();
}
// Else, we're a mob
else if(this.things[index].type == "mob" && (this.things[index].text != "\\o/" || yourself.canSurpass == true)){
drops.getAllDropsFromList(this.things[index].drops); // We gain the drops of the defeated mob
this.things[index] = this.makeNoneThing(); // We remove the mob
// If we we were killed by the character
if(this.things[indexKiller].type == "character"){
// Sword of Summoning bonus : we may spawn something here
if(sword.name == "Sword of Summoning" || sword.name == "Sword of Liflamesummoning"){
sword.summonHere(index);
}
// Sword of Life : we gain life
if(sword.name == "Sword of Life" || sword.name == "Sword of Liflamesummoning"){
this.things[indexKiller].hp += sword.specialPower + 1;
if(this.things[indexKiller].hp > this.things[indexKiller].max_hp) this.things[indexKiller].hp = this.things[indexKiller].max_hp;
}
}
}
}
return false;
},
beginBerserk : function(){
this.berserk = true;
this.berserkCountdown = 25 + random.getRandomIntUpTo(10);
this.speed = this.getSpeed();
this.things[this.getCharacterIndex()].text = "O_O";
},
stopBerserk : function(){
this.berserk = false;
this.speed = this.getSpeed();
this.things[this.getCharacterIndex()].text = "\\o/";
},
beginInvulnerability : function(){
this.invulnerability = true;
this.invulnerabilityCountdown = 15;
this.things[this.getCharacterIndex()].text = "GOD";
},
stopInvulnerability : function(){
this.invulnerability = false;
this.things[this.getCharacterIndex()].text = "\\o/";
},
beginTurtle : function(){
this.turtle = true;
this.turtleCountdown = 30;
this.things[this.getCharacterIndex()].text = "TUR";
this.characterSpeed = 3; // We reduce the speed !
},
stopTurtle : function(){
this.turtle = false;
this.things[this.getCharacterIndex()].text = "\\o/";
this.characterSpeed = 1; // The speed goes back to its normal state !
},
won : function(){
// won ?
if(land.getLandIndexFromName("Developper's computer") == quest.currentLandIndex){
developperComputer.setWon(true);
inventory.updateOnPage();
}
// Drops
drops.gainDrops();
// We may enable a new destination, we store the drop-down list
var list = htmlInteraction.getElement("quest_destination");
// We change the max land order : it's the order of the just finnished quest + 1
this.setMaxLandOrder(land.list[this.currentLandIndex].order + 1);
// We stop the quest
this.stop();
},
stop : function(){
// Enable button
htmlInteraction.enableButton("quest_button");
// First thing to do !
this.weAreQuestingRightNow = false;
// Get the character index
var index = this.getCharacterIndex();
// No more quest panel or potions shown
htmlInteraction.setInnerHtml("quest", "");
htmlInteraction.setInnerHtml("quest_potions_countdowns", "");
// We re-enable home buttons
//buttons.enableHomeButtons();
// We update the potions on page
potions.updateOnPage();
// We're tired after this quest
if(this.things[index].hp < this.things[index].max_hp) this.setTiredFound(this.tiredFound + 200 * (1 - (this.things[index].hp / this.things[index].max_hp)));
if(this.escaping == false) this.setTiredTime(Math.floor(this.tiredFound));
// Nothing found anymore
this.setCandiesFound(0);
this.setTiredFound(0);
for(obj in objects.list) objects.list[obj].found = false;
},
defineMood : function(){
if(this.tiredTime == 0) htmlInteraction.setInnerHtml("mood", "You're in the pink! Ready for fighting!");
else htmlInteraction.setInnerHtml("mood", "You're tired. You have to wait before doing another quest. Waiting time : " + this.tiredTime);
htmlInteraction.setElementVisibility("mood", true);
},
setCandiesFound : function(value){
this.candiesFound = value;
},
setTiredTime : function(value){
if(value < 0) value = 0;
this.tiredTime = value;
this.defineMood();
buttons.checkQuestTiredTime();
},
setTiredFound : function(value){
this.tiredFound = value;
},
makeNoneThing : function(){
return {type:"none", text:"___"};
},
makeBasicChest : function(){
return land.createMob("CHS", 80, 80, "none", "A chest !! Very rare.", [drops.createDrop("candies", 300 + random.getRandomIntUpTo(500)), drops.createDrop("object", "key", true), drops.createDrop("object", "boots", random.oneChanceOutOf(3)), drops.createDrop("object", "swampMap", random.oneChanceOutOf(3)), drops.createDrop("object", "hutMap", random.oneChanceOutOf(3))]);
},
makeOpenChest : function(){
return land.createMob("CHS", 1, 1, "none", "An open chest, full of candies !", [drops.createDrop("candies", 6000 + random.getRandomIntUpTo(2000))]);
},
makeImp : function(){
var hp = 15 + random.getRandomIntUpTo(10);
return land.createAlly("IMP", hp, hp, "its whole body", "An imp.", []);
},
makeOrc : function(){
return land.createAlly("ORC", 30, 30, "bludgeon", "An orc. It looks stupid.", []);
},
makeDraugr : function(){
return land.createAlly("DRG", 35, 35, "various bones", "A draugr. It seems to be dead, but it's still moving..", []);
},
makeChupacabra : function(){
return land.createAlly("CBA", 30, 30, "fangs", "A chupacabra. A real goat sucker !", []);
},
makeGolem : function(){
return land.createAlly("GOL", 100, 100, "rock", "A golem. Solid, solid golem.", []);
},
makeChimera : function(){
var hp = 50 + random.getRandomIntUpTo(7);
return land.createAlly("CHI", hp, hp, "fire", "A chimera : lion, serpent and goat at the same time.", []);
},
makeCandyMonster : function(){
var hp = 80 + 5*sword.specialPower;
return land.createAlly("CND", hp, hp, "exploding candies", "A candy monster. He throws candies on his ennemies.", []);
},
makeFakeCharacter : function(){
return land.createFakeCharacter();
},
fillWithNoneThings : function(){
var things = [];
for(var i = 0; i < land.list[this.currentLandIndex].size; i++) things.push(this.makeNoneThing());
return things;
}
};

View File

@ -0,0 +1,43 @@
var random = {
flipACoin : function(){
if(Math.random() < 0.5) return true;
return false;
},
oneChanceOutOf : function(n){
if(this.getRandomIntUpTo(n - 1) == 0) return true;
else return false;
},
getRandomFloat : function(){
return Math.random();
},
pickRandomly : function(array){
return array[Math.floor(Math.random()*array.length)];
},
getRandomIntUpTo : function(n){
return Math.floor(Math.random()*(n+1));
},
getRandomLetter : function(){
var possible = "abcdefghijklmnopqrstuvwxyz";
return possible.charAt(Math.floor(this.getRandomFloat() * possible.length));
},
pure : function(){
return Math.floor(Math.pow(10, random.getRandomIntUpTo(100)) * random.getRandomFloat());
},
pure2 : function(){
switch(random.getRandomIntUpTo(2)){
case 0: return Math.floor(Math.pow(10, random.getRandomIntUpTo(100)) * random.getRandomFloat()); break;
case 1: return -Math.floor(Math.pow(10, random.getRandomIntUpTo(100)) * random.getRandomFloat()); break;
case 2: return "bug"; break;
}
},
};

View File

@ -0,0 +1,121 @@
var code = "";
function getPhpStuff(boolean){
if(boolean == true) return 1;
return 0;
}
function setPhpStuff(int){
if(int == 1) return true;
return false;
}
function save() {
var date = new Date();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var year = date.getFullYear() + "";
month = (month < 10 ? "0" : "") + month;
day = (day < 10 ? "0" : "") + day;
hour = (hour < 10 ? "0" : "") + hour;
min = (min < 10 ? "0" : "") + min;
var save_text = "code: " + ((code === undefined || code == null || code.length == "") ? 0 : code) + "\n" +
"swordName: " + sword.name + "\n" +
"swordSpecialSword: " + getPhpStuff(sword.specialSword) + "\n" +
"swordSpecialPower: " + sword.specialPower + "\n" +
"candiesNbrOwned: " + candies.nbrOwned + "\n" +
"candiesNbrThrown: " + candies.nbrThrown + "\n" +
"candiesNbrEaten: " + candies.nbrEaten + "\n" +
"candiesNbrTotal: " + candies.nbrTotal + "\n" +
"candiesCandiesPerSecond: " + candies.candiesPerSecond + "\n" +
"candiesConverterActivated: " + getPhpStuff(candiesConverter.activated) + "\n" +
"cauldronBookPage: " + cauldron.bookPage + "\n" +
"cauldronCandies: " + cauldron.candiesInTheCauldron + "\n" +
"cauldronLollipops: " + cauldron.lollipopsInTheCauldron + "\n" +
"chocolateBarsNbrOwned: " + chocolateBars.nbrOwned + "\n" +
"farmLollipopsPlanted: " + farm.lollipopsPlanted + "\n" +
"farmCurrentFlagIndex: " + farm.currentFlagIndex + "\n" +
"farmPlantingButtonsStep: " + farm.plantingButtonsStep + "\n" +
"forgeStep: " + forge.step + "\n" +
"shopLollipopsButtonsShown: " + getPhpStuff(shop.buy10LollipopsButtonShown) + "\n" +
"shopShown: " + getPhpStuff(shop.shown) + "\n" +
"shopTicklingStep: " + shop.ticklingStep + "\n" +
"shopClickingOnLollipopStep: " + shop.clickingOnLollipopStep + "\n" +
"hutStep: " + hut.step + "\n" +
"hutSpeech: " + hut.speech + "\n" +
"inventoryMagicianHatLetter: " + inventory.magicianHatLetter + "\n" +
"lollipopsNbrOwned: " + lollipops.nbrOwned + "\n" +
"lollipopsNbrInStock: " + lollipops.nbrInStock + "\n" +
"lollipopsNbrBought: " + lollipops.nbrBought + "\n" +
"mainNbrOfSecondsSinceLastMinInterval: " + main.nbrOfSecondsSinceLastMinInterval + "\n" +
"mainNbrOfSecondsSinceLastHourInterval: " + main.nbrOfSecondsSinceLastHourInterval + "\n" +
"mainNbrOfSecondsSinceLastDayInterval: " + main.nbrOfSecondsSinceLastDayInterval + "\n" +
"mountGoblinBasicChestProbability: " + mountGoblin.basicChestProbability + "\n" +
"peacefulForestBasicChestProbability: " + peacefulForest.basicChestProbability + "\n" +
"peacefulForestPoniesEncountered: " + peacefulForest.poniesEncountered + "\n" +
"objectsHaveObjectKey: " + getPhpStuff(objects.list.key.have) + "\n" +
"objectsHaveObjectHutMap: " + getPhpStuff(objects.list.hutMap.have) + "\n" +
"objectsHaveObjectWellMap: " + getPhpStuff(objects.list.wellMap.have) + "\n" +
"objectsHaveObjectSwampMap: " + getPhpStuff(objects.list.swampMap.have) + "\n" +
"objectsHaveObjectBoots: " + getPhpStuff(objects.list.boots.have) + "\n" +
"objectsHaveObjectMagicianHat: " + getPhpStuff(objects.list.magicianHat.have) + "\n" +
"objectsHaveObjectPinkRing: " + getPhpStuff(objects.list.pinkRing.have) + "\n" +
"objectsHaveObjectForgeMap: " + getPhpStuff(objects.list.forgeMap.have) + "\n" +
"objectsHaveObjectCandiesConverter: " + getPhpStuff(objects.list.candiesConverter.have) + "\n" +
"objectsHaveObjectPlateArmour: " + getPhpStuff(objects.list.plateArmour.have) + "\n" +
"objectsHaveObjectCauldron: " + getPhpStuff(objects.list.cauldron.have) + "\n" +
"objectsHaveObjectMagicalHorn: " + getPhpStuff(objects.list.magicalHorn.have) + "\n" +
"objectsHaveObjectHornOfPlenty: " + getPhpStuff(objects.list.hornOfPlenty.have) + "\n" +
"objectsHaveObjectOldAmulet: " + getPhpStuff(objects.list.oldAmulet.have) + "\n" +
"potionsShownHealth: " + getPhpStuff(potions.list.health.shown) + "\n" +
"potionsShownEscape: " + getPhpStuff(potions.list.escape.shown) + "\n" +
"potionsShownBerserk: " + getPhpStuff(potions.list.berserk.shown) + "\n" +
"potionsShownFireScroll: " + getPhpStuff(potions.list.fireScroll.shown) + "\n" +
"potionsShownAcidRainScroll: " + getPhpStuff(potions.list.acidRainScroll.shown) + "\n" +
"potionsShownTeleportScroll: " + getPhpStuff(potions.list.teleportScroll.shown) + "\n" +
"potionsShownEarthquakeScroll: " + getPhpStuff(potions.list.earthquakeScroll.shown) + "\n" +
"potionsShownImpInvocationScroll: " + getPhpStuff(potions.list.impInvocationScroll.shown) + "\n" +
"potionsShownMajorHealth: " + getPhpStuff(potions.list.majorHealth.shown) + "\n" +
"potionsShownInvulnerability: " + getPhpStuff(potions.list.invulnerability.shown) + "\n" +
"potionsShownTurtle: " + getPhpStuff(potions.list.turtle.shown) + "\n" +
"potionsShownJelly: " + getPhpStuff(potions.list.jelly.shown) + "\n" +
"potionsShownSeed: " + getPhpStuff(potions.list.seed.shown) + "\n" +
"potionsShownCloning: " + getPhpStuff(potions.list.cloning.shown) + "\n" +
"potionsShownSuperman: " + getPhpStuff(potions.list.superman.shown) + "\n" +
"potionsShownGmooh: " + getPhpStuff(potions.list.gmooh.shown) + "\n" +
"potionsNbrOwnedHealth: " + potions.list.health.nbrOwned + "\n" +
"potionsNbrOwnedEscape: " + potions.list.escape.nbrOwned + "\n" +
"potionsNbrOwnedBerserk: " + potions.list.berserk.nbrOwned + "\n" +
"potionsNbrOwnedFireScroll: " + potions.list.fireScroll.nbrOwned + "\n" +
"potionsNbrOwnedAcidRainScroll: " + potions.list.acidRainScroll.nbrOwned + "\n" +
"potionsNbrOwnedTeleportScroll: " + potions.list.teleportScroll.nbrOwned + "\n" +
"potionsNbrOwnedEarthquakeScroll: " + potions.list.earthquakeScroll.nbrOwned + "\n" +
"potionsNbrOwnedImpInvocationScroll: " + potions.list.impInvocationScroll.nbrOwned + "\n" +
"potionsNbrOwnedMajorHealth: " + potions.list.majorHealth.nbrOwned + "\n" +
"potionsNbrOwnedInvulnerability: " + potions.list.invulnerability.nbrOwned + "\n" +
"potionsNbrOwnedTurtle: " + potions.list.turtle.nbrOwned + "\n" +
"potionsNbrOwnedJelly: " + potions.list.jelly.nbrOwned + "\n" +
"potionsNbrOwnedSeed: " + potions.list.seed.nbrOwned + "\n" +
"potionsNbrOwnedCloning: " + potions.list.cloning.nbrOwned + "\n" +
"potionsNbrOwnedSuperman: " + potions.list.superman.nbrOwned + "\n" +
"potionsNbrOwnedGmooh: " + potions.list.gmooh.nbrOwned + "\n" +
"questMaxLandOrder: " + quest.maxLandOrder + "\n" +
"questTiredTime: " + quest.tiredTime + "\n" +
"spellsFasterCandiesFibo1: " + spells.fasterCandiesFiboPrev + "\n" +
"spellsFasterCandiesFibo2: " + spells.fasterCandiesFiboCurr + "\n" +
"swampStep: " + swamp.step + "\n" +
"tabsAnimation: " + tabs.animation + "\n" +
"wishingWellSpeech: " + wishingWell.speech + "\n" +
"wishingWellStep: " + wishingWell.step + "\n" +
"yourselfCanSurpass: " + getPhpStuff(yourself.canSurpass) + "\n" +
"developperComputerWon: " + getPhpStuff(developperComputer.won);
var filename = "candybox_" + year.substring(2, 4) + month + day + "_" + hour + "-" + min;
var blob = new Blob([save_text], {type: "text/plain;charset=utf-8"});
saveAs(blob, filename+".cs");
}

View File

@ -0,0 +1,68 @@
var sea = {
// Variables
size : 25,
// Functions
onload : function(){
land.addLand("sea", this.size, -1, this.load.bind(this), this.getText.bind(this));
},
load : function(){
},
getText : function(){
// Get the character position
var index = quest.getCharacterIndex();
// Create the text
var text = " \"The sea\"\n\n\n";
for(var i = 0; i < index; i++){
text += " ";
}
text += " _\n";
for(var i = 0; i < index; i++){
text += " ";
}
text += " /|\\\n";
for(var i = 0; i < index; i++){
text += " ";
}
text += " /_|_\\\n";
for(var i = 0; i < index; i++){
text += " ";
}
text += " ____|\\o/_\n";
for(var i = 0; i < index; i++){
text += " ";
}
text += " \\_______/\n";
for(var i = 0; i < this.size + 2; i++){
text += " ~ ";
}
text += "\n ";
for(var i = 0; i < this.size + 1; i++){
text += " ~ ";
}
return text;
}
/*
_
/|\
/_|_\
____|\o/_
\_______/
*/
};

View File

@ -0,0 +1,185 @@
var shop = {
// Variables
buy10LollipopsButtonShown : false, // True if the buy 10 lollipops button should be shown
shown : false, // True if the shop is currently shown
ticklingStep : 0, // Tickling step (increase when we click on the merchant's hat
clickingOnLollipopStep : 0, // Clicking on lollipop step (increase when we clicked on the top of the lollipop sold at the shop)
oneLollipopPrice : 0, // Price of one lollipop, calculated depending on the clicking on lollipop step
tenLollipopsPrice : 0, // Price of ten lollipops, calculated the same way as above
currentSwordButtonId : "none", // Contains the id of the current sword buying button
currentSwordPrice : 0, // Contains the price of the current sword being sold by the merchant
// Functions
onload : function(){
lollipops.delivery(); // The merchant must have some lollipops in stock at the beginning, so we make a delivery
this.setClickingOnLollipopStep(0); // This also set the lollipops price !
},
check : function(){
if(candies.nbrOwned >= this.oneLollipopPrice){
this.setShown(true);
}
if(candies.nbrOwned >= 150){
// If we don't have any sword and there's no sword to sell yet, we show the wooden sword
if(sword.name == "none" && this.currentSwordButtonId == "none"){
this.showProduct("wooden_sword");
}
}
},
setBuy10LollipopsButtonShown : function(value){
this.buy10LollipopsButtonShown = value;
},
clickedOnHat : function(){
switch(this.ticklingStep){
case 0:
this.setMerchantSpeech("Hey ! You touched my hat !");
break;
case 1:
this.setMerchantSpeech("Stop that, stop that ! You're tickling me !");
break;
case 2:
this.setMerchantSpeech("Hahahaha ! I'm so ticklish !");
break;
case 3:
this.setMerchantSpeech("Listen, listen : I give you 100 candies ! But stop that please !");
candies.setNbrOwned(candies.nbrOwned + 100);
break;
}
this.setTicklingStep(this.ticklingStep + 1);
},
setTicklingStep : function(value){
this.ticklingStep = value;
},
setClickingOnLollipopStep : function(value){
this.clickingOnLollipopStep = value;
// Set the buttons value if the step is 0 or the price is reducing or is reduced
if(this.clickingOnLollipopStep <= 4){
this.oneLollipopPrice = 60;
this.tenLollipopsPrice = 500;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (60 candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (500 candies)");
}
else if(this.clickingOnLollipopStep >= 5 && this.clickingOnLollipopStep < 15){
this.oneLollipopPrice = 60 - (this.clickingOnLollipopStep - 4);
this.tenLollipopsPrice = 500 - (this.clickingOnLollipopStep - 4) * 5;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (" + this.oneLollipopPrice + " candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (" + this.tenLollipopsPrice + " candies)");
}
else{
this.oneLollipopPrice = 60 - (14 - 4);
this.tenLollipopsPrice = 500 - (14 - 4) * 5;
htmlInteraction.setInnerHtml("buy_1_lollipop", "Buy a lollipop (" + this.oneLollipopPrice + " candies)");
htmlInteraction.setInnerHtml("buy_10_lollipops", "Buy 10 lollipop (" + this.tenLollipopsPrice + " candies)");
}
},
clickedOnLollipop : function(){
this.setClickingOnLollipopStep(this.clickingOnLollipopStep + 1);
// Possibly change the merchant speech
switch(this.clickingOnLollipopStep){
case 1:
this.setMerchantSpeech("Hey ! Don't touch the products !");
break;
case 2:
this.setMerchantSpeech("Seriously, don't touch this lollipop.");
break;
case 3:
this.setMerchantSpeech("Don't touch it ! Other customers may lick it after that, that's gross !");
break;
case 4:
this.setMerchantSpeech("Stop now or I'll be force to do something.");
break;
case 15:
this.setMerchantSpeech("I can't make a lower price... Please stop.");
break;
}
if(this.clickingOnLollipopStep >= 5 && this.clickingOnLollipopStep < 15){
this.setMerchantSpeech("Okay, okay, I lower the price, but stop touching it !");
}
},
showProduct : function(id){
switch(id){
// If it's a special product
case "wooden_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiWoodenSwordWithButton);
this.currentSwordButtonId = "buy_wooden_sword";
this.currentSwordPrice = 150;
break;
case "copper_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiCopperSwordWithButton);
this.currentSwordButtonId = "buy_copper_sword";
this.currentSwordPrice = 300;
break;
case "iron_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiIronSwordWithButton);
this.currentSwordButtonId = "buy_iron_sword";
this.currentSwordPrice = 500;
break;
case "silver_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiSilverSwordWithButton);
this.currentSwordButtonId = "buy_silver_sword";
this.currentSwordPrice = 1000;
break;
case "diamond_sword":
htmlInteraction.setInnerHtml("sword_with_button", sword.asciiDiamondSwordWithButton);
this.currentSwordButtonId = "buy_diamond_sword";
this.currentSwordPrice = 2000;
break;
// Else, we just show the html element corresponding to the received id
default:
htmlInteraction.setElementVisibility(id, true);
htmlInteraction.setElementDisplay(id, "block");
break;
}
},
show : function(){
// We show the shop
if(htmlInteraction.isElementVisible("shop") == false){ // If the shop isn't already visible
htmlInteraction.setElementVisibility("shop", true);
this.setMerchantSpeech("Hello, I'm the candy merchant. I would do anything for candies. My lollipops are delicious!");
}
// And the lollipop we can buy :)
this.showProduct("lollipop");
},
setShown : function(value){
// If the new value is true but it was false before, we show the shop
if(value == true && this.shown == false)
{
this.show();
}
// We change the value
this.shown = value;
},
hideProduct : function(id){
// If it's a special product
if(id == "sword"){
this.currentSwordButtonId = "none";
htmlInteraction.setInnerHtml("sword_with_button", "");
}
// Else
else{
htmlInteraction.setElementVisibility(id, false);
htmlInteraction.setElementDisplay(id, "none");
}
},
setMerchantSpeech : function(text){
htmlInteraction.setInnerHtml("merchant_speech", speech.makeSpeechFromText(text, 20, " "));
}
};

View File

@ -0,0 +1,47 @@
var speech = {
makeLineFromWords : function(words, size){
var line = words[0];
var length = words[0].length;
for(var i = 1; i < words.length; i++){
line += " " + words[i];
length += 1 + words[i].length;
}
var spaces = Math.floor((size - length)/2);
for(var i = 0; i < spaces; i++){
line = " " + line + " ";
length += 2;
}
if(length == (size-1)) line += " ";
return line;
},
makeSpeechFromText : function(text, size, spaces_add){
var words = text.split(" ");
var current_line_size = 0;
var current_line = [];
var final_text = "";
var a_line_has_been_added = false;
for(var i = 0; i < words.length; i++){
current_line_size += 1 + words[i].length;
if(current_line_size > size){ // If, with this word, the line is too big
if(a_line_has_been_added == true) final_text += spaces_add + " ";
final_text += this.makeLineFromWords(current_line, size) + "\n"; // We add the current line to the final text
a_line_has_been_added = true;
current_line_size = words[i].length;
current_line = [];
current_line.push(words[i]);
}
else{
current_line.push(words[i]);
}
}
if(current_line.length != 0){
if(a_line_has_been_added == true) final_text += spaces_add + " ";
final_text += this.makeLineFromWords(current_line, size);
}
return spaces_add + "\"" + final_text + "\"";
}
};

View File

@ -0,0 +1,97 @@
var spells = {
// Variables
list : [],
fasterCandiesFiboPrev : 1,
fasterCandiesFiboCurr : 2,
// Functions
onload : function(){
// We add the spells
this.addSpell("Candies, faster candies !", this.getFasterCandiesPrice.bind(this), this.fasterCandies.bind(this), "Congratulations ! You will now gain more candies each second !", []);
this.addSpell("Candies, more candies !", this.getMoreCandiesPrice.bind(this), this.moreCandies.bind(this), "///", []);
this.addSpell("Sword, better sword !", this.getBetterSwordPrice.bind(this), this.betterSword.bind(this), "///", ["specialSword"]);
// We sort the list
this.sortListDependingOnPrice();
},
sortListDependingOnPrice : function(){
this.list.sort(this.priceSortFunction);
},
priceSortFunction : function(spellA, spellB){
var priceA = spellA.price();
var priceB = spellB.price();
if(priceA < priceB) return -1;
else if(priceB < priceA) return 1;
return 0;
},
getBetterSwordPrice : function(){
return Math.floor(Math.pow(sword.specialPower+1, 2.6)) * 10000;
},
getFasterCandiesPrice : function(){
return Math.pow(this.fasterCandiesFiboCurr, 2) * 10000;
},
addSpell : function(name, price, effect, speech, conditions){
this.list.push({name:name, price:price, effect:effect, speech:speech, conditions:conditions});
},
getMoreCandiesPrice : function(){
return 300000;
},
betterSword : function(){
sword.setSpecialPower(sword.specialPower + 1);
this.sortListDependingOnPrice();
// And we change the hut's speech by ourselves
switch(sword.name){
case "Sword of Life":
hut.setSpeech("Your Sword of Life will now drain more energy from your enemies.");
break;
case "Sword of Flames":
hut.setSpeech("Your Sword of Flames is now more powerful.")
break;
case "Sword of Summoning":
hut.setSpeech("You can now summon " + sword.summonList[sword.getIndexOfBetterToSummon()].name + " !");
break;
}
},
moreCandies : function(){
var nbr = Math.floor(candies.nbrTotal/20);
// We can't gain more candies than the price we pay for the spell !
if(nbr > 300000) nbr = 300000;
candies.setNbrOwned(candies.nbrOwned + nbr);
hut.setSpeech("Here's " + nbr + " candies for you !");
},
nextFasterCandiesFiboStep : function(){
this.setFasterCandiesFibo(this.fasterCandiesFiboCurr, this.fasterCandiesFiboPrev + this.fasterCandiesFiboCurr);
},
setFasterCandiesFibo : function(prev, curr){
// Set the new values
this.fasterCandiesFiboPrev = prev;
this.fasterCandiesFiboCurr = curr;
// Sort the spells list depending on their price, since the price of the faster candies spell just changed
this.sortListDependingOnPrice();
},
fasterCandies : function(){
// We change candies per second
candies.setCandiesPerSecond(this.fasterCandiesFiboCurr);
// We continue fibo
this.nextFasterCandiesFiboStep();
}
};

View File

@ -0,0 +1,66 @@
var status2 = {
getText : function(){
var statusLines = [];
var character = this.getLinesFromThingIndex(quest.getCharacterIndex());
if(quest.getCharacterIndex() + 1 < quest.things.length && quest.things[quest.getCharacterIndex() + 1].type != "none"){
statusLines.push(this.formatLines(character));
if(quest.things[quest.getCharacterIndex() + 1].type == "mob") // If it's a mob
statusLines.push(this.formatLines(["", "VERSUS", "", ""]));
if(quest.things[quest.getCharacterIndex() + 1].type == "ally") // If it's an ally
statusLines.push(this.formatLines(["", " WITH ", "", ""]));
statusLines.push(this.getLinesFromThingIndex(quest.getCharacterIndex() + 1));
}
else{
statusLines.push(character);
}
return this.formatStatusLines(statusLines);
},
formatLines : function(lines){
var max_len = 0;
for(var i = 0; i < lines.length; i++){
if(lines[i].length > max_len) max_len = lines[i].length;
}
for(var i = 0; i < lines.length; i++){
if(lines[i].length < max_len){
for(var j = lines[i].length; j < max_len; j++){
lines[i] += " ";
}
}
lines[i] += " | ";
}
return lines;
},
formatStatusLines : function(lines){
var text = "";
var stop = false;
var i = 0;
while(stop == false){
stop = true;
text += "\n";
for(var j = 0; j < lines.length; j++){
if(lines[j].length > i){
text += lines[j][i];
stop = false; // While we have something to add, we continue
}
}
i++;
}
return text;
},
getLinesFromThingIndex : function(i){
var lines = [];
lines.push(" " + quest.things[i].text);
lines.push("HP : " + quest.things[i].hp + "/" + quest.things[i].max_hp);
lines.push("Weapon : " + quest.things[i].weapon);
lines.push("\"" + quest.things[i].description + "\"");
return lines;
}
};

Some files were not shown because too many files have changed in this diff Show More