Happy value
[wgj58.git] / wgj58.js
index f14b63701cb75c1c2a2d4ca52771e23f77edb6ac..a50e494c279fa916ccdf27dfa76f50cd8857c2ef 100644 (file)
--- a/wgj58.js
+++ b/wgj58.js
@@ -172,11 +172,13 @@ class GameNPC extends Phaser.Sprite {
                this.interaction_distance = interaction_distance;
                this.interactable = false;
                this.talkcount = 0;
+               this.happy = false;
        }
 
        kill() {
                super.kill();
                this.exists = false;
+               this.happy = false;                     // Dead people are not happy.
        }
 
        update() {
@@ -191,6 +193,11 @@ class GameNPC extends Phaser.Sprite {
                        logic.player.offerInteraction(null);
                        this.interactable = false;
                }
+               if ((this.teleport_instructions) && (game.physics.arcade.distanceBetween(this, logic.player) > (game.width + 200))) {
+                       this.position = this.teleport_instructions.newPosition;
+                       this.teleport_instructions.callback(this.teleport_instructions.callbackValue);
+                       this.teleport_instructions = null;
+               }
        }
 
        actionTalk() {
@@ -209,6 +216,16 @@ class GameNPC extends Phaser.Sprite {
        endTalk() {
                return true;
        }
+
+       makeHappy() {
+               this.happy = true;
+               console.log(this.shortname, "is happy!");
+       }
+
+       offscreenTeleportation(newPosition, callback, callbackValue) {
+               this.teleport_instructions = { newPosition: newPosition, callback: callback, callbackValue: callbackValue };
+               console.log("Offscreen teleport request registered:", this.teleport_instructions);
+       }
 }
 
 class NPC_Clara extends GameNPC {
@@ -430,16 +447,22 @@ class NPC_Saiki extends GameNPC {
                                                        { actor: this, text: "Hmm..." },
                                                        { actor: this, text: "I guess it didn't work." },
                                                        { actor: this, text: "So do you want to know what I think about this?" },
+                                                       { actor: this, text: "..." },
                                                        { actor: this, text: "IT'S BRILLIANT!!!" },
                                                        { actor: this, text: "You know, it really sparkled my artistic vision! Now I must draw a pig with its legs rooted into the ground!" },
                                                        { actor: logic.player, text: "That's gross. Poor pig." },
                                                        { actor: this, text: "Indeed. But this is the point. He's stuck in one place, cannot move. Like you in life. So you feel sympathy for him." },
                                                        { actor: logic.player, text: "You have a point." },
                                                        { actor: this, text: "I think I'll catch Carlos and talk to him. I always liked that guy but I didn't know he's such imaginative." } ] ));
-                                               //this.offscreenTeleportation(new Phaser.Point(logic.carlos.x + 128, logic.carlos.y), this.tpdone);
+                                               this.offscreenTeleportation(new Phaser.Point(logic.carlos.x, logic.carlos.y + 64), this.tpDone, this);
                                        }
                                        else {
-                                               logic.gameinterface.talk(new Dialogue( [ { actor: this, text: "I've found an orchestrated rendition of „Potential for Anything”. You'll have to check it out, it's breathtaking!" } ] ));
+                                               if (Phaser.Math.random() < 0.5) {
+                                                       logic.gameinterface.talk(new Dialogue( [ { actor: this, text: "I've found an orchestrated rendition of „Potential for Anything”. You'll have to check it out, it's breathtaking!" } ] ));
+                                               }
+                                               else {
+                                                       logic.gameinterface.talk(new Dialogue( [ { actor: this, text: "I don't like that our department is green. The blue one, where Carlos works, looks much better." } ] ));
+                                               }
                                        }
                        }
                }
@@ -468,7 +491,7 @@ class NPC_Saiki extends GameNPC {
                                                { actor: this, text: "..." } ] ));
                                        break;
                                default:
-                                       logic.gameinterface.talk(new Dialogue( [ { actor: this, text: "Don't you have anything better to do?" } ] ));
+                                       logic.gameinterface.talk(new Dialogue( [ { actor: this, text: "Don't you have anything better to do, Carlos?" } ] ));
                        }
                }
                super.actionTalk();
@@ -489,6 +512,12 @@ class NPC_Saiki extends GameNPC {
        endTalk() {
                return (logic.carlos.alive);
        }
+
+       tpDone(value) {
+               console.log("Woot-woot! Teleport complete:", value);
+               value.makeHappy();
+               logic.carlos.makeHappy();
+       }
 }
 
 
@@ -701,7 +730,7 @@ class GameLogic {
                                this.carlos = newChar;
                                break;
                        case 'saiki':
-                               newChar = new NPC_Saiki(object.x, object.y, 'saiki', "Saiki", "Saiki Ytpme", 200);
+                               newChar = new NPC_Saiki(object.x, object.y, 'saiki', "Saiki", "Saiki Ytpme", 150);
                                this.saiki = newChar;
                                break;
                        default: