From 62ce7b7ca09ef7b38491044ee980da21448e5a31 Mon Sep 17 00:00:00 2001
From: Tim Repke <timmothey@gmx.de>
Date: Sat, 26 Sep 2015 15:44:47 +0200
Subject: [PATCH] added quite a few achievements

---
 .../view/signups/game1/js/achievements.js     |  88 +++++++++++++++---
 .../view/signups/game1/js/story.js            |   2 +-
 .../view/signups/game1/maps/dorf.svg          | Bin 1806688 -> 1807707 bytes
 .../view/signups/game1/maps/map_landing.svg   | Bin 6745732 -> 6747793 bytes
 .../view/signups/game1/maps/shop.svg          | Bin 534911 -> 539038 bytes
 5 files changed, 76 insertions(+), 14 deletions(-)

diff --git a/registration-system/view/signups/game1/js/achievements.js b/registration-system/view/signups/game1/js/achievements.js
index 3341725..e2a6e3e 100644
--- a/registration-system/view/signups/game1/js/achievements.js
+++ b/registration-system/view/signups/game1/js/achievements.js
@@ -1,20 +1,79 @@
 function Achievements() {
+    var self = this;
     this.achievements = {
-        'started_game': 'Bestes Anmeldesystem gestartet',
+        // LANDING
         'first_step': 'Erster Schritt getan',
         'some_water': {
             message: 'An frischem Brunnenwasser gerochen',
-            condition: function(context) {
+            condition: function (context) {
                 return euclidianDistance(Game.char.translation[0], Game.char.translation[1], context.x, context.y) < 150;
             }
         },
-        'stroh': 'Warum liegt hier Stroh rum?',
         'saw_devs1': 'Wilde Informatiker auf Wiese gesehen',
+        'spotted_gorilla': 'Ein bekannter Gorilla im Wald',
+        'hydrant': {
+            message: 'Wasser aufgedreht',
+            condition: function (context) {
+                return euclidianDistance(Game.char.translation[0], Game.char.translation[1], context.x, context.y) < 150;
+            }
+        },
+        'randomwalk': 'Sinnlose Wegwahl',
+
+        // CASTLE ENTRANCE
         'moneyboy': 'Money Boy: Swag ist aufgedreht',
+
+        // DORF
         'speedrun': 'Haalt stop! Denkt doch mal an die Kinder!!1!',
         'woman': 'Mit einer Prinzessin gesprochen',
         'plumber': 'Berufung: Gas, Wasser, Scheiße',
         'princess': 'Prinzessin verärgert',
+        'stroh': 'Warum liegt hier Stroh rum?',
+        'maske': {
+            message: 'Warum hast du eine Maske auf?',
+            condition: function () {
+                return self.achievedAchievements.indexOf('stroh') >= 0
+            }
+        },
+        'gentzen': 'Bei diese Baustelle machen die sich den gentzen Aufwand umsonst.',
+        'kacke': 'Eine gefährliche Stuhl-Gang',
+
+        // SHOP
+        'antler': {
+            message: 'Geweih verschönert',
+            action: function () {
+                Game.char.svg.select('#antler_ball').style('display', 'block');
+            }
+        },
+        'flowers': {
+            message: 'Blumen umgestoßen',
+            action: function () {
+                Game.char.svg.select('#flowerpot').style('transform-origin', '50% 50%').style('transform', 'rotate(70deg)');
+            },
+            condition: function (context) {
+                return euclidianDistance(Game.char.translation[0], Game.char.translation[1], context.x, context.y) < 100;
+            }
+        },
+        'wine': {
+            message: 'Weinfass getrunken',
+            action: function () {
+                Game.char.svg.select('#wine_glass').style('display', 'none');
+            },
+            condition: function (context) {
+                return euclidianDistance(Game.char.translation[0], Game.char.translation[1], context.x, context.y) < 80;
+            }
+        },
+        'chair': {
+            message: 'Stuhl geklaut',
+            action: function () {
+                Game.char.svg.select('#stuhl').style('display', 'none');
+            },
+            condition: function (context) {
+                return euclidianDistance(Game.char.translation[0], Game.char.translation[1], context.x, context.y) < 80;
+            }
+        },
+
+        // META
+        'started_game': 'Bestes Anmeldesystem gestartet',
         'gameDone': 'Zeit verschwendet',
         'achievement42': 'You just found the answer to everything!'
     };
@@ -25,29 +84,29 @@ function Achievements() {
     this.triggerAchievement('started_game');
     Environment.sound.achievements = true;
 }
-Achievements.prototype.numTotalAchievements = function() {
+Achievements.prototype.numTotalAchievements = function () {
     return Object.keys(this.achievements).length;
 };
 
-Achievements.prototype.numCompletedAchievements = function() {
+Achievements.prototype.numCompletedAchievements = function () {
     return Object.keys(this.achievedAchievements).length;
 };
 
 Achievements.prototype.initDomElems = function () {
     this.domElems = {
-        'log':        document.getElementById('achievement-log'),
-        'statusBar':  document.getElementById('achievement-progress').getElementsByClassName('status-bar-bar')[0],
+        'log': document.getElementById('achievement-log'),
+        'statusBar': document.getElementById('achievement-progress').getElementsByClassName('status-bar-bar')[0],
         'statusText': document.getElementById('achievement-progress').getElementsByClassName('status-bar-text')[0]
     };
 };
 
 Achievements.prototype.getDomElem = function (elem) {
-    if(!this.domElems) this.initDomElems();
+    if (!this.domElems) this.initDomElems();
     return this.domElems[elem];
 };
 
 Achievements.prototype.updateStatusBar = function () {
-    var percent = Math.ceil((this.numCompletedAchievements() / this.numTotalAchievements())*100);
+    var percent = Math.ceil((this.numCompletedAchievements() / this.numTotalAchievements()) * 100);
     this.getDomElem('statusBar').style.width = percent + '%';
 };
 
@@ -65,7 +124,7 @@ Achievements.prototype.logMessage = function (message) {
     newElem.appendChild(newElemText);
 
     newElem.style.backgroundColor = '#474c46';
-    setTimeout(function(){
+    setTimeout(function () {
         newElem.style.background = 'transparent';
     }, 1000);
 
@@ -81,14 +140,14 @@ Achievements.prototype.getMessage = function (achievementId) {
 
 Achievements.prototype.isTriggerable = function (achievementId, context) {
     var achievement = this.achievements[achievementId];
-    if (typeof achievement === 'object' && 'condition' in achievement){
+    if (typeof achievement === 'object' && 'condition' in achievement) {
         return achievement.condition(context);
     }
     return true;
 };
 
 Achievements.prototype.triggerAchievement = function (achievementId, context) {
-    if (!this.achievements[achievementId]){
+    if (!this.achievements[achievementId]) {
         console.error("No such achievement: " + achievementId);
     }
     else if (this.achievedAchievements.indexOf(achievementId) < 0 && this.isTriggerable(achievementId, context)) {
@@ -96,8 +155,11 @@ Achievements.prototype.triggerAchievement = function (achievementId, context) {
         this.updateStatusBar();
         this.updateStatusText();
         this.logMessage(this.getMessage(achievementId));
+        if (typeof this.achievements[achievementId] === 'object' && 'action' in this.achievements[achievementId]) {
+            this.achievements[achievementId].action();
+        }
     }
     // else console.warn("Achievement already achieved: " + achievementId);
 
-    if (this.numCompletedAchievements() === 42 ) this.triggerAchievement('achievement42')
+    if (this.numCompletedAchievements() === 42) this.triggerAchievement('achievement42')
 };
diff --git a/registration-system/view/signups/game1/js/story.js b/registration-system/view/signups/game1/js/story.js
index b924425..6564c40 100644
--- a/registration-system/view/signups/game1/js/story.js
+++ b/registration-system/view/signups/game1/js/story.js
@@ -693,7 +693,7 @@ Story.actions = {
                             food.kaese.style('display', 'none');
                         }
                     }, {
-                        message: 'Neeee! Ich bin nicht auf Diät!',
+                        message: 'Neeee, ich bin nicht auf Diät!',
                         action: function () {
                         }
                     }]
diff --git a/registration-system/view/signups/game1/maps/dorf.svg b/registration-system/view/signups/game1/maps/dorf.svg
index 9057422f4612248e2a786f259159b6ec0c9f06a7..ce37243fa92244dfb5ef429e3c328a3fb9cbed32 100644
GIT binary patch
delta 847
zcmZ{iyKmD_6o+LKk~S?ZG$l|xV8Vv%+k4M_qXq^L3?Ly8LaJDZ(ln|f%)^vE1{Q=$
zR8*8m^iB*gvXBL3gb}eY1hKF%@h32Ij1W=-vGmE7kA3`|pU?N#$+tI2Z`;pV7T$ln
z>-TqkZ)fKm5CcYlhDtHaj+La9)@yegr|aw03ge0r%DMfgxKXWWB?x5<gll%Z3qG^%
zZO1#GW6DtXv*Vpu05$yD+Dfu?XD!Y;Tc9JV*cy9Y>v|QBZLM}a#7FiaIb=VQM+(Ro
zGL96H31kvEfJ`CN$U)=~GSgq}mIh~C?@Q_WRyrslv&dnjj2uCZB6Iz8a4dZnf;OB*
zv5<sIX=JE@NXnIsC=p;exO_W!>3YwDF?Vr2m~)@|rE&Mk__O`@?chbheKdaA^}gn(
z-J>VLjJxtIDC8(zUUsiOl#UlEu~JzE0IpW{FWodkXE_=jDJ2QDAY~XEL5wv5zi2@S
z6EaG`aKq7xp^Rnbx0L`T@fmKxhMRx##DBO{t=z7qt%kdLFJNw?9h`JOwu7l5+r5et
z?#9!gb&G2p66c3V8%xj#SQtx#Nr1sju!vqV#I-=5D3(AJ%`(CZEwhYb5QGC&W=N>n
zNFHo9lD|r){ukh0rO~NfUgU-mDm9C60f{mSAdIshm4OJeV_fPmW<+xx#kj;)3I(A6
gA}qx_6erVK4Jo#2_0gFXCKu+LXNn8+=|epI0%36ZIsgCw

delta 564
zcmZY3J4*vW5C?GX)cA_=alTK&l2R_q%<b;otq>Gnt%8kZBnA`27}O%#SXiit5d*T7
zjg?s0XugM*HhvW6lo-K<U-O@xKlAZa`FyB6U)lXK;))$0fP}LfyLn?<_4*QWiPA?A
zWcpbA%9Y*2!dA67SE%JO2qE$iwf;9e&SiW7T%im@lfSiAZ9g=Rx7KopR)N8WHIXb8
z%R8l`xJ2T2(nXCrFwn4E8>633dt0^gUiqZBoy)*^wP6vPbdXNcMG~Z&^pIZCNBT*U
z43HEVBtvAFj5Mna=Y8I+YrDt5tJ7)HFHYh#ig+L*p*)O$`&vcF3Jg5pp#&5x3tVa)
zkGY`0XIbQkO2~EqJV2$j2kjYcQKI#qq_qzo4S%}h>Xo>gI^%M|THU`vySp`_<o8=^
z?Zhm+I_dNLn?pv)7#SxMWRgrZ^Ka8nFARZB_p(ZIB_m(5P|zue!t*)!AkfTSxc6pc
Z!=5qwH8*7zuHBX9=B2yXZPxDG<QGqKoHYOd

diff --git a/registration-system/view/signups/game1/maps/map_landing.svg b/registration-system/view/signups/game1/maps/map_landing.svg
index 9b162a4ddb7feec165a92414ca46a89ed0f842bc..70ae65452ab58c7df5c7e030c7ac7de2852eabda 100644
GIT binary patch
delta 1040
zcmYk*Nlz3(90l+&Eh365C@2cWxJ!50|Jq9h_kCY+L2-0woydp*5`hC8G~s4qNa#c_
z#>6;B<7GVh1-xjC7d>+DARoc_T8*)jUpigYsebjk`|-Eu!P6hlgEzyud7jwNqlw(q
zM6L#M)rnm2>}5TX^*mNyq#dt<rh4lHC+)~ryI%$GbAfSjT2l!+YQ#(>XsH|R%99tr
zhnj20y7EG0v&{|V!f2^n8t*S+K7COMR!&V<0+<K2Fdyn*0o21nSOg8Q7?!|NSO&{s
z1vEkvWNWR0W@v%cum)OTEv$n!Xa@!zkcaiK0XD)W*bG}>D{O;K2q6Lv+aU%50TL8w
zFkr!fhaIpJc0m_(!*19Edto2!hXZgB4#8nK0!QH(9ETHd5>CNsI0I+l9Gr&>a1ky+
z4_t;Ta22jWFI<Nk&<8i60Jq>a6rsO5T}fsSrsc0mPx|CTvY@*5Qxeonl2D!-?_@|y
zNbWT`78%Q>_bw#vlw^_PN_Z7Y#be_<Bh97sGL*!PwuZTwYpZd$;>wX_+Ho0M6-J6X
zt2B#j%ws7n1{@aD#K!Xr*`K4agpXzT!QjY9f3fe*;81B`ppbTaOlH!#F9}auzZV-*
z_Ac4`J97HrbMkZ25!YU7#Is%^fwU|Vj>kfqP;jpd5^JtVtB|sULOF)BArq3}F*(gJ
zE=al1BaRS^95=D?VMN?YN6c~SeRk=&)l#_s@|KGAUHQ9X#i7Fekt}C#x^y;aO4~js
zZ(p~6O3){H?ACY+jW_5;C>F_>qhJ?C0{@sH7Ez2R8LP9rI?GD}dm<g8_?U!8B<Z*(
zA;Ji)%h(yk$l~=7dN+tCtVB$uHSSQ7JFk_=Vy^t#YgQ{V76;1@3j_E5HQJeu&Ls`M
E0KAH9kN^Mx

delta 551
zcmW;GNlO9&7{+m&$riPJ(ag%MY}Xkbbu?|aec$&oGnGIhBgtz)=T1W1f?$r_y!J)<
z2z`N0{q2Dt&wF{{dHH!0pT6J3&#YinRF}_wD@&3hJ?4bxoS=hH%n9P_yVLKJTxvj8
zybgoClyv4g8;{*2Lh*-)L-lxFiZ2-S6aydPmmmb?f=v@Grc@%GOx;BsvZTm`c1^VE
zq*9sn{K)G6S;%OjQ71j;H4$adqZ}2eL=_A$!h~wnpcZwgM*|wsgl4qB3=3LeMH_5r
zM+Z7#M;9FEMh|-7L?8MwfI$pl7$b1OjnZxz9(bX^2R{N(5kv^12qS_qjAH_mn8Gw>
z5XCI!FpmW+VhPJw!7A3Ujty*L3)|SiF7~jG103QA$2h?$&Tx(xE)d5h62-iB^&2&X
N-N`XS*qyzn{s6xw<u?ET

diff --git a/registration-system/view/signups/game1/maps/shop.svg b/registration-system/view/signups/game1/maps/shop.svg
index 9dc74f32bb5599580d671bce80c370744b788ab5..8c94d63c1f97b232b6b9aa19503bd90527628e28 100644
GIT binary patch
delta 3817
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
UdX%fp)&z~|=+KcvmDBL}8#cUb1ONa4

delta 1598
zcmb_cOK1~87-sY6PE%S?G_|d5w`qJe&17cZn?A%xB8U`v5=3d@8Z@Rh=_W=C6_Fl1
zc(8S)<3T(qc(jEcwjc@~1-*zBPi+tOpdd&sVo!B8tu~VMfw(a2&wSs^e0={m^XNOb
z@{XGvbySHelsE$;B%-PNj>x%VJXCpA<Q44maQ2rRNM-eSCK1-JcloeJVFB|}2{_c{
z<9QK^8dfB8SL_6%m}g@Vr-o&diPxIXV;+Zy?b1cJL3ZJ$OR!2SAA_d+@lOm{ZUptD
zZ^_+i{?zwRrSzwR<f9L$BMWoZ!W>hH$wbh}GAe1Ac1KCiva`ZEy2CNvLlzssK{GI4
zJ??e7tZ#je_a8`l+F9Y&WI+v*-p`Kc?Ha{Nhs&x_+`TUd_t4GS3rK8|aarb)d+eDN
zc~bEuV}70WRO{*fv=MGag^#?cWA9a_GjTnc8wz7`Mh1bVD{&*0Fv0`rfka0>nN6Ng
z_S<No>`#!pb!-cHEQ2=d>TWj2khgX0*gtPkyN69N|5sPQdR@=nDEQrC+hC3EWk-IH
zl}V@D#Unv0SY}PkFby6u+z9gI6$WuD*91D4sG>muDOhO_t_DTmf(R;frag!SC<+qd
zxgf?WR5U>o+t<=Wr=W;M-ew^TRco;s%s2~;WA&t=_a{8&+^m;egCNLsn1|<U3G#y+
zT8$vbWz!du89E9fr29fimLzp8ghep9<p<ujKWxK}EDsTu1wkog8$;xQAIQWJ0MVVB
z_Hl3@IL&N>mpTB3x8?<`JBPsWt$A&h5dhM5cqfCvYlj3BJ9r9%Dl!ehrJH4Kl#xW8
zktDg)7@b~C5i1bWXFx24ZChoCkfiaNRtBc4*I_QyO(GC9lvOt#0+-9H6BHh5RO0Vv
zsHn-dIss#-X;gig<Ec6k%7TnHXnHZcsk%G@sSP41DD)lVRlf9i@)7~B^j8Ge%_wPv
zQS22t0zq>bpR(mGqN#?GDxfkQvMrKi1=8ENfkWHX<f9IGYB;Vlbg|ph8OrAA?-wH}
B;E(_S

-- 
GitLab