diff --git a/game/entity.fnl b/game/entity.fnl index fcd5376..25d2204 100644 --- a/game/entity.fnl +++ b/game/entity.fnl @@ -142,14 +142,16 @@ 0 :next-digit :next-digit :next-digit :next-digit :swap :drop :cleartext) (vm:word :keypad ; ev code -- :>r - (vm:if-and [[ev.touch :=] [:is-jaye?]] - [(say-runon :pady "ENTER YOUR 4-DIGIT DOOR CODE!" "AND HAVE A SUPER DAY!") - :read-keypad :dup :. :rtop := (vm:if [ - (say :pady "THAT'S RIGHT! HOORAY!" "YOU GET A GOLD STAR!") - :drop ev.act - ] [ - (say :pady "OHHH, SORRY! THAT'S NOT IT." "BETTER LUCK NEXT TIME!") - ])]) + :dup ev.touch := (vm:when + :is-jaye? (vm:when + :responder-itile (itile :t-keyoff) := (vm:if + [(say-runon :pady "ENTER YOUR 4-DIGIT DOOR CODE!" "AND HAVE A SUPER DAY!") + :read-keypad :rtop := (vm:if + [(say :pady "THAT'S RIGHT! HOORAY!" "YOU GET A GOLD STAR!") + :drop ev.act] + [(say :pady "OHHH, SORRY! THAT'S NOT IT." "BETTER LUCK NEXT TIME!")])] + [(say :pady "OH HI AGAIN! I MISSED YOU TOO!")])) + :is-neut? (vm:when :move-to-responder)) :rdrop :dup (itile :t-keyoff) (itile :t-keyon) :handle-onoff (itile :t-keyon) :activate-link) diff --git a/game/level6.fnl b/game/level6.fnl index c34cdcd..e2e8902 100644 --- a/game/level6.fnl +++ b/game/level6.fnl @@ -8,9 +8,73 @@ (vm:word :linkloop ; e -- e (vm:until :link-arg :dup :entity-itile (itile :termon) :=)) -(vm:word :keypad1 0x1234 :keypad) -(vm:word :keypad2 0x2345 :keypad) -(vm:word :keypad3 0x3456 :keypad) -(vm:word :keypad4 0x4567 :keypad) +(vm:var :encountered-keypad vm.false) +(vm:word :first-keypad ; ev code -- + (vm:if-and [[:encountered-keypad :get :not] [:is-jaye?] [:over ev.touch :=]] + [vm.true :encountered-keypad :set + (say :pady "HELLO, STRANGER! I'M PADY," "THE FRIENDLY KEYPAD LOCK!") + (say :jaye "I NEED TO GET THROUGH THIS" "DOOR, PADY.") + (say :pady "YOU DIDN'T SAY THE MAGIC" "WORD, STRANGER!")]) + (vm:if-and [[:is-neut?] [:over ev.touch :=] [:responder-itile (itile :t-keyoff) :=]] + [(say :pady "OH HI THERE, SUSPICIOUS" "PROGRAM! WHAT CAN I DO" "YOU FOR?") + (say :neut "PEOPLE ARE IN DANGER" "PLEASE OPEN THE DOOR") + (say :pady "WELL THAT'S TERRIBLE!" "BUT I JUST CAN'T OPEN" "WITHOUT THE PROPER CODE.")]) + :keypad) + +(vm:word :keypad1 0x5197 :first-keypad) +(vm:word :keypad2 0x2757 :first-keypad) +(vm:word :keypad3 0xffff :first-keypad) +(vm:word :keypad4 0x7777 :first-keypad) + +(vm:word :term-message? :dup :term ev.touch := :is-jaye? :&) +(vm:word :c1 :term-message? (vm:when + (say :term ".:: WELCOME TO FARQUAAD ::." "OS: PRODOS 2.6" "RAM: 8 FREAKIN MEGABYTES D00D" "SYSADMIN: BILL") + (say :term "S3CR3T C0D3Z: GET OUT LAMER" "BOSS KEY: CTRL-B TO ACTIVATE" "OPEN POD BAY DOORS:" " I CAN'T DO THAT DAVE") + (say :term "GOOD RIDDANCE"))) +(vm:word :c2 :term-message? (vm:when + (say :term "SUBJECT: MISUSE OF REXX" "THANKS TO *SOME*ONE, WHO SHALL" "REMAIN NAMELESS, THAT DECIDED" "IT WOULD BE 'FUNNY' TO") + (say :term "TEACH THE CLEANING ROBOT TO" "PLAY FETCH WITH EXPENSIVE" "EQUIPMENT, ACCESS TO REXX" "BY DEVELOPERS WILL BE STRICTLY") + (say :term "CONTROLLED BY MANAGEMENT." "THE CODE HAS BEEN CHANGED." "DO NOT ATTEMPT TO HACK THE" "KEYPAD. THIS MEANS *YOU*, BILL."))) +(vm:word :c3 :term-message? (vm:when + (say :term "SUBJECT: SERVER'S DOWN" "HEY, I DON'T HAVE THE CODE TO" "ACCESS THE SERVER ROOM. CAN" "SOMEONE REBOOT IT FOR ME?") + (say :term "SUBJECT: RE: SERVER'S DOWN" "I DON'T HAVE *TIME* FOR THIS" "NONSENSE!!" "REBOOT IT YOURSELF.") + :lit :firewall :entity-itile (itile :termon) := (vm:if + [(say :term "THE PASSCODE IS" "[ BLOCKED BY FIREWALL ].")] + [(say :term "THE PASSCODE IS" "5197.")]) + (say :term "SUBJECT: RE: RE: SERVER'S DOWN" "UHHHH THE FIREWALL IS BLOCKING" "THE PASSCODE?") + (say :term "SUBJECT: RE: RE: SERVER'S DOWN" "AUGH FINE! I REBOOTED IT."))) +(vm:word :c4 :term-message? (vm:when + (say :term ".:: BILL'S WORKSTATION ::." "KEEP OUT DIPSHITS"))) +(vm:word :c5 :term-message? (vm:when + (say :gord "A WEIRD LOOKING SPREADSHEET...") + (say :gord "OH WAIT, I PRESSED A KEY AND" "IT DISAPPEARED. SOMEONE USING" "THE BOSS KEY TO HIDE" "THAT THEY'RE READING THE ENTIRE") + (say :gord "ARCHIVE OF USER FRIENDLY" "COMIC STRIPS."))) +(vm:word :c6 :term-message? (vm:when + (say :term "SUBJECT: CARD SCANNERS?" "LOOKS LIKE THE SCANNERS ARE" "ON THE FRITZ AGAIN..." "I SCANNED MY KEYCARD TO GET") + (say :term "INTO THE OFFICE AND THE DOOR" "WOULDN'T CLOSE!" "SOMEONE'S GOTTA FIX THAT ASAP," "IT'S A SERIOUS SECURITY PROBLEM!") + (say :term "SUBJECT: RE: CARD SCANNERS?" "I CAN TAKE A QUICK LOOK, I" "MIGHT HAVE AN IDEA AS TO" "WHAT'S GOING ON. -- BILL"))) +(vm:word :c7 + (vm:if-and [[:dup ev.touch :=] [:is-jaye?]] + [:responder-itile (itile :termon) := (vm:if + [(say :term "WORKSECURE (TM) V2.0" "AUTHORIZED PERSONNEL ONLY") + (say :term "ACTIVELY NEUTRALIZING:" "1 THREAT(S)")] + [(say :jaye "LOOKS LIKE THE POWER IS CUT.")]) + :drop ev.nop]) :term) +(vm:word :c8 :term-message? (vm:when + (say :term "SUBJECT: PASSWORD SECURITY" "A REMINDER TO ALL DEVELOPERS" "ABOUT SECURITY BEST PRACTICE:" "**DO NOT WRITE DOWN PASSWORDS!**") + (say :term "WE PAY SIGNIFICANT LICENSE FEES" "FOR ENCRYPTED PASSWORD" "MANAGERS FOR ALL EMPLOYEES!") + (say :term "USE IT TO GENERATE AND STORE" "SECURE PASSWORDS!") + (say :jaye "THERE'S A STICKY NOTE ATTACHED" "TO THE MONITOR THAT SAYS" "'7777'."))) +(vm:word :c9 :term-message? (vm:when + (say :term "SUBJECT: EXPERIMENT" "HEY FOLKS, CAN YOU ALL DO ME A" "HUGE FAVOUR?" "THERE WAS A SMALL BUG IN MY") + (say :term "CODE (YES, IT HAPPENS!) AND A" "PROGRAM I WAS WORKING ON" "MADE A FEW TOO MANY COPIES OF" "ITSELF. CAN EVERYONE CHECK TO") + (say :term "SEE IF YOU HAVE A PROCESS" "CALLED 'LIBB' RUNNING ON YOUR" "TERMINAL?") + (say :term "IF YOU DO, PLEASE KILL -9 IT" "AND SHOOT ME A QUICK EMAIL." "*DON'T INTERACT WITH IT.*") + (say :term "IT COULD SERIOUSLY MESS WITH" "YOUR SYSTEM." " -- BILL"))) +(vm:word :cx + (vm:if-and [[:dup ev.touch :=] [:is-jaye?] [:responder-itile (itile :termoff) :=]] + [(say :jaye "THIS IS THE SIGN-IN TERMINAL" "USED BY VISITORS.") + (say :jaye "IT'S NOT TURNING ON FOR SOME" "REASON.") + :drop ev.nop]) :term) level diff --git a/game/map6.json b/game/map6.json index 6aea406..edddc2b 100644 --- a/game/map6.json +++ b/game/map6.json @@ -1 +1 @@ -{"neut":{"y":1,"x":5},"map":"210261616161616161616161812261616161E1614161C2C081C0C0C0C0C0C0C0C0C0E0C081C0C0622161E04384C0C0C043C0C0C043C0C0C0848201612102616161C0C061610281026161C0C0616161612161C2C0C0C0C061E2C0C0C0A261C0C0C0C0E2612161E003C0C0C061C0C0C0C08261C0C0C003E06121026161C0C0C061E08282E2E061C0C0C06161612161C2C0C0C0C06103C0C0C02361C0C0C0C0C2614161E003C0C0C0616102C1026161C0C0C003E06121026184C0C0C0C043C043C063C0C0C0846161612161E081C0C0C0C0C0C0C0C0C0C0C0C081C083612161612261816161616161616161616161616161","tickword":"","jaye":{"y":2,"x":6},"gord-following":true,"moveword":"","objects":[{"x":3,"link":6,"func":"term","linkword":"linkloop","name":"","y":10},{"x":5,"link":3,"func":"keypad2","linkword":"","name":"","y":10},{"x":5,"func":"door","linkword":"","name":"","y":11},{"x":11,"func":"door","linkword":"","name":"","y":9},{"x":13,"link":17,"func":"term","linkword":"linkloop","name":"","y":6},{"x":9,"link":5,"func":"term","linkword":"linkloop","name":"","y":6},{"x":11,"func":"switch","linkword":"","name":"","y":4},{"x":3,"link":1,"func":"term","linkword":"linkloop","name":"","y":7},{"x":3,"link":8,"func":"term","linkword":"linkloop","name":"","y":4},{"x":3,"link":9,"func":"term","linkword":"linkloop","name":"","y":2},{"x":4,"func":"door","linkword":"","name":"","y":2},{"x":4,"link":11,"func":"keypad1","linkword":"","name":"","y":3},{"x":4,"link":4,"func":"scan","linkword":"","name":"","y":1},{"x":17,"func":"door","linkword":"","name":"","y":2},{"x":17,"link":14,"func":"keypad3","linkword":"","name":"","y":3},{"x":19,"func":"rexx","linkword":"","name":"","y":2},{"x":19,"link":18,"func":"term","linkword":"linkloop","name":"","y":4},{"x":19,"link":19,"func":"term","linkword":"linkloop","name":"","y":7},{"x":19,"link":23,"func":"term","linkword":"linkloop","name":"","y":10},{"x":19,"link":19,"func":"switch","linkword":"","name":"","y":12},{"x":17,"link":22,"func":"keypad4","linkword":"","name":"","y":10},{"x":17,"func":"door","linkword":"","name":"","y":11},{"x":15,"link":10,"func":"term","linkword":"linkloop","name":"","y":11},{"x":14,"link":25,"func":"scan","linkword":"","name":"","y":12},{"x":13,"func":"door","linkword":"","name":"","y":12}]} \ No newline at end of file +{"neut":{"y":1,"x":5},"map":"210261616161616161616161812261616161E1614161C2C081C0C0C0C0C0C0C0C0C0E0C081C0C0622161E04384C0C0C043C0C0C043C0C0C0848201612102616161C0C061610281026161C0C0616161612161C2C0C0C0C061E2C0C0C0A261C0C0C0C0E2612161E003C0C0C061C0C0C0C08261C0C0C003E06121026161C0C0C061E08282E2E061C0C0C06161612161C2C0C0C0C06103C0C0C02361C0C0C0C0C2614161E003C0C0C0616102C1026161C0C0C003E06121026184C0C0C0C043C043C063C0C0C0846161612161E081C0C0C0C0C0C0C0C0C0C0C0C081C083612161612261816161616161616161616161616161","tickword":"","jaye":{"y":2,"x":6},"gord-following":true,"moveword":"","objects":[{"link":6,"y":10,"func":"c4","name":"","linkword":"linkloop","x":3},{"link":3,"y":10,"func":"keypad2","name":"","linkword":"","x":5},{"x":5,"func":"door","y":11,"linkword":"","name":""},{"x":11,"func":"door","y":9,"linkword":"","name":""},{"link":17,"y":6,"func":"c9","name":"","linkword":"linkloop","x":13},{"link":5,"y":6,"func":"c8","name":"","linkword":"linkloop","x":9},{"x":11,"func":"switch","y":4,"linkword":"","name":""},{"link":1,"y":7,"func":"c3","name":"","linkword":"linkloop","x":3},{"link":8,"y":4,"func":"c2","name":"","linkword":"linkloop","x":3},{"link":23,"y":2,"func":"c1","name":"","linkword":"linkloop","x":3},{"x":4,"func":"door","y":2,"linkword":"","name":""},{"link":11,"y":3,"func":"keypad1","name":"","linkword":"","x":4},{"link":4,"y":1,"func":"scan","name":"","linkword":"","x":4},{"x":17,"func":"door","y":2,"linkword":"","name":""},{"link":14,"y":3,"func":"keypad3","name":"","linkword":"","x":17},{"x":19,"func":"rexx","y":2,"linkword":"","name":""},{"link":18,"y":4,"func":"c5","name":"","linkword":"linkloop","x":19},{"link":19,"y":7,"func":"c6","name":"","linkword":"linkloop","x":19},{"link":10,"y":10,"func":"c7","name":"firewall","linkword":"linkloop","x":19},{"link":19,"y":12,"func":"switch","name":"","linkword":"","x":19},{"link":22,"y":10,"func":"keypad4","name":"","linkword":"","x":17},{"x":17,"func":"door","y":11,"linkword":"","name":""},{"link":9,"y":11,"func":"cx","name":"","linkword":"linkloop","x":15},{"link":25,"y":12,"func":"scan","name":"","linkword":"","x":14},{"x":13,"func":"door","y":12,"linkword":"","name":""}]} \ No newline at end of file diff --git a/game/portraits.json b/game/portraits.json index fd97f00..376aca5 100644 --- a/game/portraits.json +++ b/game/portraits.json @@ -1 +1 @@ -[{"gfx":"8080808080E0E0F0F8FC2CBCACACACAC80809CFEFFFFFFD7D5D5555D4F5DD5D5BCB8B8B8F8F8F8F8FCFCFEFE86D0D0D495D5D5E5D5D5D5D7C797D7D0AAAAAAAA808086BFFFFFFFFAEAAA2A2E3C2EAAAA80808080808183878787058F8D8D8D8FAAAAAAA7AAAAEAEAE2E8EA8AD5D5D5D58F8F8787878F8F8F9F9FBFBE808A8AAA","label":"pjaye","flags":[]},{"gfx":"00002020000000004808080800202028004040011404450144010805445420352020000808084800000000202000000020544405080144014504140140400000000202012921220122011021222A052D00000405000001011211101100040415052A222110012201222129010202000004040011101112010100000504000000","label":"pneut","flags":[]},{"gfx":"80C090808484848484848484A8A8A8A8AA8080808080D4D4D5D5F59DFDD5D5D5A8A08080808080808080808080E0F8FC95D5D5D5F595D5D4D084D4D4D4D7FFFFD58080808080AAAAAAAABAE2FAAAAAA280828880A0A0A0A1A1A1A1A195959595A0AAAAAAAFA8AAAA8AA0AAAAAAEAFFFF95858181818181808080808080879FBF","label":"pgord","flags":[]},{"gfx":"808080808080C0C0C0C0C0C0C0C0C0C0808080808080AAAAFAFAFAAAAAAAAAAA8080808080C0D0D0D0D0D0D0D0D0D0D0A0A0A0A0A0AAAAAAA8A8A8A8A8A8A8A8808080808080D5D5DFDFDFD5D5D5D5D5808080808080828282828282828282828585858585D5D5D595959595959595958080808080828A8A8A8A8A8A8A8A8A8A","label":"prexx","flags":[]},{"gfx":"808080F8F8F8F8F8F8B8B8F8F8B8B8F8808080FFFFFFFFDFDFFDFDDFDFFDFDDFF8B8B8F8F8B8B8F8F8F8F8F8F8D0D080DFFDFDDFDFFDFDDFDFFFFFFFFFAAAA80808080FFFFFFFFFEFEAFAFFEFEAFAFFE8080808FAFAFAFAFAFAFAFAFAFAFAFAFFEAFAFFEFEAFAFFEFEFFFFFFFFD5D580AFAFAFAFAFAFAFAFAFAFAFAFAFAAAA80","label":"ppady","flags":[]}] \ No newline at end of file +[{"gfx":"8080808080E0E0F0F8FC2CBCACACACAC80809CFEFFFFFFD7D5D5555D4F5DD5D5BCB8B8B8F8F8F8F8FCFCFEFE86D0D0D495D5D5E5D5D5D5D7C797D7D0AAAAAAAA808086BFFFFFFFFAEAAA2A2E3C2EAAAA80808080808183878787058F8D8D8D8FAAAAAAA7AAAAEAEAE2E8EA8AD5D5D5D58F8F8787878F8F8F9F9FBFBE808A8AAA","label":"pjaye","flags":[]},{"gfx":"00002020000000004808080800202028004040011404450144010805445420352020000808084800000000202000000020544405080144014504140140400000000202012921220122011021222A052D00000405000001011211101100040415052A222110012201222129010202000004040011101112010100000504000000","label":"pneut","flags":[]},{"gfx":"80C090808484848484848484A8A8A8A8AA8080808080D4D4D5D5F59DFDD5D5D5A8A08080808080808080808080E0F8FC95D5D5D5F595D5D4D084D4D4D4D7FFFFD58080808080AAAAAAAABAE2FAAAAAA280828880A0A0A0A1A1A1A1A195959595A0AAAAAAAFA8AAAA8AA0AAAAAAEAFFFF95858181818181808080808080879FBF","label":"pgord","flags":[]},{"gfx":"808080808080C0C0C0C0C0C0C0C0C0C0808080808080AAAAFAFAFAAAAAAAAAAA8080808080C0D0D0D0D0D0D0D0D0D0D0A0A0A0A0A0AAAAAAA8A8A8A8A8A8A8A8808080808080D5D5DFDFDFD5D5D5D5D5808080808080828282828282828282828585858585D5D5D595959595959595958080808080828A8A8A8A8A8A8A8A8A8A","label":"prexx","flags":[]},{"gfx":"808080F8F8F8F8F8F8B8B8F8F8B8B8F8808080FFFFFFFFDFDFFDFDDFDFFDFDDFF8B8B8F8F8B8B8F8F8F8F8F8F8D0D080DFFDFDDFDFFDFDDFDFFFFFFFFFAAAA80808080FFFFFFFFFEFEAFAFFEFEAFAFFE8080808FAFAFAFAFAFAFAFAFAFAFAFAFFEAFAFFEFEAFAFFEFEFFFFFFFFD5D580AFAFAFAFAFAFAFAFAFAFAFAFAFAAAA80","label":"ppady","flags":[]},{"gfx":"0080C07070303030303030303030303000AAAA7F0045001400150051005400003030707000703018187C4C7E000000000000007F007F0000007F017F0000000000D5D57F400A0028000A002000080000008A8A8B8B8B8B8B8B8B8B8B8B8B8B8B0000407F007F6030301F187F000000008B8B8B03000F0C060603030100000000","label":"pterm","flags":[]}] \ No newline at end of file