\nLa dernière chose dont je me souviens,\nc'est que j'étais dans la salle informatique.\n\nIl y avait ce fichier qu'il fallait que j'efface à tout prix.\nMais où le trouver ? il y avait des dossiers dans tous les sens.\n\nAu bout d'un moment, j'étais hors de moi.\n\nEt puis, brusquement tous les machines se sont éteintes.\nImpossible d'utiliser les ordinateurs.",prelude_tuto:"= Geek Fighter II =\nBattez le super ordinateur avec les flèches, Entrée ↵ et Tab ↹.\nTu peux aussi invoquer des sorts en les écrivant rapidement 'ls', 'cat', ou encore 'cd'.",prelude_tab:"Quel beau coup de pied! Tu appuies sur Tab ↹ formidablement bien.",prelude_enter:"Quel beau coup de poing! Tu appuies sur Entrée ↵ formidablement bien.",prelude_success_cmd:"Quel beau coup !",prelude_enemy_kill:"Cet ordi est foutu.",prelude_wrong_game:"Tu concentres ton énergie, tu lances ce sort puissant… Où te crois-tu ? Dans un dessin animé ?",you_learn:"'%s' appris !",you_unlock:"%s en vue !",you_learn_desc:"Tu peux maintenant utiliser la commande '%s'",you_unlock_desc:"Tu peux maintenant accéder à : '%s'",you_success:"Fini '%s' !",new_path:"Regarde avec 'ls', tu peux maintenant aller à cet endroit : '%s' !",congrat:"Félicitations ! Tu as résolu toutes les énigmes de %s !",press_enter:"Appuie sur la touche Entrée ↵",press_tab:"Appuie sur la touche Tab ↹",cookie:"Afin de conserver ton avancement dans le jeu, il faut manger un cookie.\nVeux-tu activer les cookies ?",cookie_yes:"oui (nouveau jeu)",cookie_yes_load:"oui (reprendre la partie en cours%s)",cookie_no:"non (pas de sauvegarde)",yes:"oui",no:"non",item_none:"Objet",item_none_text:"Cet objet n'a rien de particulier.",item_intro:"C'est un·e %s.",people_none:"Personne",people_none_text:"Cette personne ressemble plutôt à un robot.",cannot_cast:"Cette commande ne peut pas être utilisée ici.",cmd_exit:"Au revoir !",gameintro_text_initrd:"Chargement de initrd.img [
]",gameintro_text_domainname:"Configuration du nom de domaine []\n ",gameintro_text_fsck:"Vérification du système de fichiers []\n ",gameintro_ok:"OK",gameintro_pass:"passable",gameintro_text_terminus:" Bienvenue dans {{room.Terminus}}\n \n ","user_judged-0":"Pourquoi êtes vous silencieux tout d'un coup ?","user_judged-bad":"Alors là. Vous allez prendre cher !","user_judged-lovely":"Oh c'est mignon. Est-ce que vous essayé de me soudoyer ?","user_judged-1":"C'est tout ce que vous avez à dire ?","user_judged-2":"Quoi ? C'est quoi ces manières ?","user_judged-3":"Alors là franchement, on ne me l'avait jamais faite.","user_judged-4":"Vous êtes une personne très turbulente.","user_judged-5":"Vous êtes une personne très très turbulente.",username_prompt:"Donnez-moi votre nom :",useraddress_prompt:"Où habitez vous ?",gamestart_text:". . . . . .\n",cmd:"%s",room:"%s",room_unreachable:"La pièce %s est inatteignable.",room_unreadable:"Un brouillard dans la pièce empêche de voir son contenu.",people_shell:"Palourde",people_shell_text:"Pour te déplacer, écris '{{cmd.cd}}' suivi d'un chemin et pour voir aux alentours, écris '{{cmd.ls}}'.\nSe déplacer dans un chemin n'est possible que si tu connais le chemin.\nIl te faudra sûrement écrire '{{cmd.ls}}' partout où tu passes.",people_shell_text1:"Savais-tu que lorsque tu appuies sur Tab ↹ , des suggestions apparaissent sous ta ligne de commande ?\nLorsque il n'y a plus qu'un mot qui peut être suggéré, ta ligne de commande (en bas) se remplit toute seule.\nPour constater cela, il suffit de commencer à écrire un mot et de taper sur Tab ↹.",people_shell_text2:"Connais-tu la commande '{{cmd.pwd}}' ?\nSi tu écris cette commande (et que tu valides en appuyant sur la touche Entrée ↵), tu auras des informations sur l'endroit où tu te trouves.",people_shell_text3:"Savais-tu que lorsque tu appuies sur les flèches Haut et Bas, tu peux naviguer dans l'historique ? C'est-à-dire que tu peux réutiliser les commandes que tu viens d'entrer.",people_shell_text4:"Savais-tu que lorsque tu appuies sur les touches Ctrl et U, le texte avant le curseur dans la ligne de commande est effacé ? ",people_shell_text5:"Savais-tu que lorsque tu appuies sur les touches Ctrl et C, tu interromps l'action en cours ?",people_shell_text6:'Sais-tu ce qu\'est une expression régulière ? Non ? Par exemple "Bo*" est une expression régulière pour "Bonbon", mais aussi pour "Bobine" et tous les mots commençant par les lettres B o.\n Le caractère * (astérisque) signifie : n\'importe quel caractère, autant de fois que possible.',people_shell_text0:"Je n'ai ni yeux ni jambes.\nJe me déplace avec '{{cmd.cd}}'.\nJe vois les routes et obstacles avec '{{cmd.ls}}'.\nJ'examine le contenu avec '{{cmd.cat}}' ou parfois avec un éditeur.\nEt parfois, j'exécute…",msg_from:"Message de %s sur %s à %s :",very_first_try:". . .\n\nTu m'as l'air de ne pas y voir grand chose dans ce brouillard.\n\nAs-tu un lieu où aller ? \n\n Tu ne sais pas ?\n\nRappelle-toi ces bases si tu ne veux pas tomber dans l'oubli :\n1. En écrivant '{{cmd.cat}}' ( ? ), tu pourras examiner en détail ;\n2. En écrivant '{{cmd.ls}}' (LiSter), tu pourras voir ce qui croise ton chemin ;\n3. En écrivant '{{cmd.cd}}' (Changer de Destination), tu pourras aller ailleurs.",a_wish_to_understand_you:"what do you want to do ?",cmd_cat_aliases:"detrui\\w*, remov\\*, del\\w*, suppr\\w*",cmd_cat_first_try:"J'ai oublié de te dire que {{cmd.cat}} doit être suivi du nom d'une personne ou d'un objet.",cmd_cat_second_try:"Tiens ! Là ! Il y a une {{people_shell}}, on pourrait lui demander comment elle a fait pour venir jusqu'ici.\nVous vous connaissez peut-être.\n Tu n'as qu'à écrire '{{cmd.cat}} {{people_shell}}' pour engager cette passionnante discussion.",cmd_exit_html:"Terminus a été arrêté.
Au revoir !
",cmd_cd:"Tu entres dans %s. %s",cmd_cd_failed:"Il n'existe aucun chemin appelé %s. Retourne te coucher.",cmd_cd_no_args:"'{{cmd.cd}} ~' pour retourner au point de départ.",cmd_cd_no_args_pwd:"'{{cmd.pwd}}' pour savoir où tu es.",cmd_cd_flood:"À moins de te dédoubler, tu ne peux pas aller dans plusieurs endroits en même temps.",cmd_cd_home:"Tu es de retour à la maison !",cmd_cd_no_parent:"Tu ne peux plus rebrousser chemin.",cmd_cd_parent:"Tu es entré·e dans %s. %s",cmd_cp_copied:"%s vient d'être copié(e) dans %s.",cmd_cp_unknown:"Je ne vois aucun objet qui pourrait porter ce nom.",tgt_already_exists:"'%s' existe déjà.",item_not_exists:"L'objet '%s' n'existe pas.",cmd_help_begin:"Tu peux utiliser les commandes suivantes :",cmd_less_no_arg:"(Pour que ça fonctionne, {{cmd.cat}} doit être suivi d'un sujet à examiner : un objet ou une personne présente à l'endroit où tu te trouves)",cmd_less_missing:"%s n'a pas été trouvé(e).",cmd_man_no_query:"Il faut poser une question pour obtenir une réponse. C'est ce que dit le grand manuscrit.",cmd_man_not_found:"Il n'y a rien d'écrit dans le grand manuscrit.",cmd_not_found:"La commande '%s' est introuvable.",cmd_mv_aliases:"d[ée]pl\\w*, boug\\*, mov\\w*, met\\w*",cmd_mv_done:"%s a été déplacé(e) vers %s.",cmd_mv_name_done:"%s a été renommé(e) %s.",cmd_mv_overwrite_done:"%s a été renommé(e) en %s (qui a été écrasé(e)).",cmd_mv_flood:"Il est possible de déplacer un objet dans un emplacement en indiquant son chemin. \nPour cela, utilise 'mv OBJET CHEMIN'.",cmd_mv_invalid:"Il faut un objet et un emplacement de destination pour réaliser un déplacement.",cmd_mv_fixed:"Ceci ne peut être déplacé.",cmd_mv_dest_fixed:"Impossible de mettre ça dans cette pièce.",room_not_writable:"Impossible de mettre ça dans cette pièce.",permission_denied:"(Permission non accordée)",welcome_msg:"Salut '%s' ! Ça va ? \n Tu étais tombé·e dans les pommes. J'étais inquiet.",cmd_pwd_aliases:"perd\\w*, los\\*, où\\w*je, lieu",cmd_pwd:"Tu te trouves dans '%s'.",cmd_rm_aliases:"detrui\\w*, remov\\*, del\\w*, suppr\\w*",cmd_rm_done:"Tu viens de supprimer '%s'. Ses données disparaissent devant tes yeux.",cmd_rm_failed:"Voilà quelque chose que tu ne peux pas détruire.",cmd_rm_invalid:"Tu ne peux supprimer qu'un objet existant sans grande importance pour autrui.",cmd_rm_miss:"S'il s'agit d'une chose particulière que tu cherches à supprimer, cela ne suffira pas.",cmd_touch_created:"Tu viens de créer : '%s' !",cmd_touch_none:"Tu as tenté de créer quelque chose. Mais personne ne sait de quoi il s'agit. Vérifie ta syntaxe.",cmd_touch_nothing:"Tu dois indiquer ce que tu cherches à créer pour que cela marche.",cmd_unknown:"Tu n'as pas encore appris cette commande.",combo:"La combinaison est 'terminus' (sans les guillemets).",directions:"Là où tu peux aller (chemins) :\n%s ",incorrect_syntax:"La syntaxe est incorrecte. Pour en savoir plus : '{{cmd.man}} %s'",invalid_spell:"Cette commande n'existe pas",items:"Ici, tu peux interagir avec (objets):\n%s",peoples:"Ici, tu peux parler avec :\n%s",lock_added:"Tu viens d'ajouter le verrou %s",room_empty:"Cette pièce est vide. Il n'y a rien.",room_new_created:"Tu viens de créer un nouveau chemin : %s",room_wrong_password:"Le mot de passe est erroné. As-tu oublié ton mot de passe ? Non, je blague. Déguerpissez !",room_wrong_syntax:"La syntaxe n'est pas valide. Relisez les instructions.",room_none:"LieuBanal",room_none_text:"C'est un endroit très banal.",room_home:"Départ",room_home_text:"De retour au point de départ… ",room_western_forest:"BoisDesLutins",room_western_forest_text:'Tu es entré⋅e dans la forêt des Lutins. Le chemin semble mener à une école.\nUn panneau indique "Académie des Bots : Grande école de Sorcellerie du Grand Ordinateur. "',room_spell_casting_academy:"AcadémieDesBots",room_spell_casting_academy_text:"Le hall d'entrée est bondé. \nL'académie a un plafond très haut, qui rend l'entrée très impressionnante.",room_spell_casting_academy_success_title:"Succès 'Déménagement destructeur'",room_spell_casting_academy_success_text:"Les énigmes de l'{{room_spell_casting_academy}} sont résolues",room_spell_casting_academy_congrat_mesg:"L'{{room_spell_casting_academy}} va être fermée le temps des réparations ! Fais plus attention à l'avenir.",item_western_forest_academy_direction:"Panneau",item_western_forest_academy_direction_text:"Académie des Bots : Grande école de Sorcellerie du Grand Ordinateur.\nÀ ne pas manquer aujourd'hui : Leçon d'initiation aux commandes !",item_western_forest_back_direction:"RentreChezToi",item_western_forest_back_direction_text:"À tout moment, si tu veux revenir au point de départ, \nécris juste la commande '{{cmd.cd}} ~' ou '{{cmd.cd}}'. \nSi tu es perdu(e), écris '{{cmd.pwd}}'.",item_practice:"Pilier%d",item_practice_text:"Il s'agit d'un objet conçu pour l'entrainement",room_academy_practice:"SalleDEntrainement",room_academy_practice_text:"La pièce est remplie de noobs comme toi et d'élèves pratiquant leurs nouvelles commandes.",item_academy_practice:"Note",item_academy_practice_text:"Attention : ne pas déplacer les Piliers.",room_box:"Boîte",room_box_text:"Cette boîte est trop petite pour pouvoir entrer dedans.",room_meadow:"Prairie",room_meadow_text:"C'est une grande et belle prairie verte. Un majestueux {{people_poney}} s'y trouve. Il a l'air triste et solitaire.",people_poney:"Poney",people_poney_text:"Pour ne pas lui faire peur, tu restes à distance du poney.\nAprès quelques instants, vous arrivez à communiquer avec quelques hochements de tête.\nFinalement, le poney bascule sa tête vers les {{room_mountain}} à l'est comme s'il te suggérait d'aller dans cette direction.",people_poney_text1:". . .",people_poney_text2:"Pour ne pas lui faire peur, tu restes à distance du poney.\nTu hoches la tête vers les nuages.\nLe poney te répond par le même signe.",people_poney_text3:"Tu restes à distance du poney.\nTu hoches la tête vers le sol.\nLe poney fronce son gros visage.",people_poney_text4:"Tu restes à distance du poney.\nTu hoches la tête encore une fois, en dessinant des cercles avec ton nez.\nLe poney s'approche.",people_poney_text5:"Tu hoches encore la tête. Le poney accourt vers toi.\n« Eh ! » dit le poney.« C'est très gentil de te soucier de moi et j'aimerais bien m'amuser avec toi,\nmais je suis persuadé que tu as mieux à faire ».",people_poney_textmountain:"Tu hoches encore la tête. Le poney accourt vers toi.\n« Eh ! » dit le poney.« As-tu déjà visité les {{room_mountain}} ? ».",people_poney_texttab:"« Eh ! Savais-tu qu'en appuyant sur la touche 'tab', tu pouvais aller beaucoup plus vite ?»",people_poney_textmv:"« J'ai compris ! Tu es bloqué » dit le poney.« As-tu essayé de parler à un {{people_professor}} de l'{{room_spell_casting_academy}} ? » .",people_poney_texthelp:"« J'ai compris ! Tu es bloqué » dit le poney.« Désolé, je ne suis pas en mesure de t'aider.\nmais si tu as déjà lu le {{item_man}} tu dois pouvoir utiliser '{{cmd.help}}' » .",room_mountain:"Montagnes",room_mountain_text:"Tu parcours un sentier de montagne qui mène à une cave.\nSur ce sentier, tu croises un vieil homme.",people_man_sage:"VieilHomme",people_man_sage_text:"Tu parles avec le vieil homme.\nIl te salue chaleureusement comme si vous vous connaissiez déjà. \n« Salut toi ! \nTu as l'air jeune et intrépide.\nSi tu as le cœur assez brave, alors ton destin t'attend dans cette cave.\nTu y trouveras un portail qui te mènera au chapitre suivant. »\nLe vieil homme devine l'inquiétude qui trouble tes pensées\net te dit en souriant\n« Tiens, prends ce manuscrit qui t'enseignera comment utiliser tes pouvoirs.»\nLe vieil homme pose le {{item_man}} par terre et s'en va.\n« Au revoir ! Au fait si tu ne te sens pas de taille tape '{{cmd.exit}}'. »",item_man:"Manuscrit",item_man_text:'Si tu oublies des sorts,\ntape "help" et une liste des sorts utilisables apparaîtra .\nSi tu veux connaître les détails d\'utilisation d\'un sort,\ntape \'man\' suivi de la commande.\nPar exemple, si tu veux savoir comment utiliser "mv", alors tape : "man mv"',room_lessons:"Cours",room_lessons_text:'Tu entres dans la salle où sont dispensés les cours.\nC\'est beaucoup plus calme ici. Il semble que ça a déjà commencé et que ça parle du "Sort de déplacement."',people_professor:"Professeur",cmd_syntax_lesson:"Syntaxe générale des commandes : Les commandes élémentaires sont de la forme :> {{cmd.commande}} {{item.fichiers_ou_données}}La commande apparaissant en début de ligne est presque toujours le nom d'un programme. Ce programme peut être une commande du système d'exploitation, un logiciel écrit par un utilisateur (souvent en langage C) ou un shell. Quelques rares commandes comme la commande cd (changement de dossier / répertoire) ne peuvent pas être traitées correctement par un logiciel spécifique. Elles sont dans ce cas directement exécutées par l'interpréteur de commandes. Certaines de ces commandes peuvent s'exécuter en tapant au clavier seulement leur nom. Mais la plupart des commandes acceptent des options (un tiret suivi d'une ou plusieurs lettres) qui permettent d'utiliser la commande autrement que dans son mode de fonctionnement par défaut. Enfin, bon nombre de commandes sont suivies d'un ou plusieurs noms de fichier, répertoire ou autre, avec lesquels elles vont travailler. Toutes les informations séparées par des espaces à droite du nom de la commande sont appelées arguments de la ligne de commande.",
people_professor_text:"Le prof dit un tas de choses qui pour toi ressemblent à du charabia,\nmais tu as réussi à comprendre trois choses :\n1. '{{cmd.mv}}' sert à déplacer des objets \n2. il faut indiquer le nom de l'objet et de la destination ({{cmd.mv}} OBJET CHEMIN) \n3. Ce sort ne marche pas sur tous les objets, mais tu n'as pas réussi à bien comprendre lesquels n'étaient pas déplaçables.",people_professor_textquit:"« Oh oh ! C'est pas bon, tu devrais partir. Tout de suite ! Tu peux écrire '{{cmd.cd}} ~'» ",leave_academy:"La salle d’entraînement va s'écrouler : fuis !",room_cave:"Cave",room_cave_text:"Cet endroit est une cave typique : sombre et humide, avec une légère odeur de moisissure.",room_dark_corridor:"SombreCorridor",room_dark_corridor_text:"Tu traverses le sombre corridor et trouves au bout une petite pièce humide.",room_staircase:"Escalier",room_staircase_text:"L'escalier de pierre mène à un cul-de-sac confirmé par un panneau.",item_dead_end:"Panneau",item_dead_end_text:"Voie sans issue",room_dank:"Cellier",room_dank_text:"Cette pièce est encore plus sombre.",item_boulder:"Rocher",item_boulder_text:"Il s'agirait plutôt d'une grande pierre roulée.\nTu sens un léger courant d'air passé derrière ce rocher.",room_small_hole:"PetitRenfoncement",room_small_hole_text:"Il n'y a rien de très plaisant ici.\nC'est étroit, on y voit rien et le sol n'est manifestement pas entretenu.\nL'espace est à peine plus volumineux que le rocher.",room_small_hole_cd:"Pas très agréable comme endroit. \nJe veux sortir.",room_tunnel:"Tunnel",room_tunnel_text:"Pendant que tu traverse le tunnel, \ntu reçois des gouttes d'eau sur la tête.\nTu as remarqué une touffe de poil se déplaçant à ta droite.\nAu bout de tunnel, il y a une porte ouverte.",people_rat:"TouffeDePoils",people_rat_identified:"Rat",people_rat_text:"Tu inspectes avec tes mains la touffe de poils et tu remarques qu'il s'agit d'un rat… De la taille d'un petit chien. Il t'a mordu·e. \nCette expérience ne te fut guère agréable.",people_rat_identified_text:"(Oh, pardon, excusez-moi de ma maladresse !)",people_rat_identified_text1:"(On peut se tutoyer ?)",people_rat_identified_text2:"(Oh, pardon, excuse-moi de ma maladresse !)",people_rat_identified_text3:"(Je n'ai rien à t'apprendre et tu souhaites tout de même me parler ?)",people_rat_identified_text4:"(Es-tu venu sauver Terminus ?)",room_stone_chamber:"ChambreDePierre",room_stone_chamber_text:"La pièce entière rayonne d'une lueur verte.\nLa source de cette lumière est un portail magique placé en plein milieu de la pièce.\nC'est sûrement le portail dont parlait le vieil homme.",room_portal:"Portail",room_portal_text:"Tu as été transporté·e à travers les âges…",room_townsquare:"PlaceDuVillage",room_townsquare_text:"Tu te trouves sur une place du village, grande et ensoleillée.\nAu centre, il y a une fontaine ornée d'un lamantin en pierre qui souffle l'eau au dessus de son visage.\nL'architecture est très jolie, mais tout le monde semble nerveux.",people_citizen1:"Canard",people_citizen1_:"Jasper",people_citizen1_text:'Tu t\'adresses à un des villageois : "Excusez-moi,". Il se retourne, surpris.\n"Quoi ?!… Euh, bonjour ! Bienvenue à Terminus."',people_citizen1__text:"Hmmm. Des questions ? Vas-y.",people_citizen1__text1:"Hmmm. Si tu as besoin d'équipements, je te conseille la {{room_market}} et la {{room_artisanshop}}.",people_citizen1__text2:"Hmmm. Si tu as besoin d'informations, je te conseille la {{room_library}}.\\",people_citizen2:"VieilHomme",people_citizen2_text:'Ce villageois lit le journal quand il remarque que tu le regardes. \n"As-tu lu ça ?" s\'esclaffe-t-il, secouant la dernière édition du "Dernier Mot" devant ton visage.\n"{{people_darkwizard}} aurait pris le contrôle de l\'ouest. Balivernes !\n …savent plus quoi inventer pour éviter les sujets qui fâchent…" \nmarmonne-t-il, secouant sa tête et retournant à sa lecture.',people_citizen3:"VillageoiseEnPleurs",people_citizen3_text:'La villageoise pleure et tremble sans pouvoir s\'arrêter. \n"Mon bébé !" pleure t\'elle, \n"Ils ont enlevé mon bébé ! Je sais que le magicien en est le responsable."',people_citizen3_text1:"\"Mon bébé… Je vais '{{cmd.pkill}} -9 {{people_darkwizard}}'.\"",people_citizen3_text2:"(Tu ne sais pas quoi dire…)",people_citizen3_text3:"(Tu as beau réfléchir.\nLa seule chose qui soulagerait cette maman serait de retrouver son enfant.)",people_citizen3_text4:'"Je vais {{cmd.rm}} ces trolls."',people_citizen3_text5:'"Mais… qui a le pouvoir de faire ça ? Toi ?"',room_market:"PlaceDuMarché",room_market_text:"Les commerces sont alignés formant une longue ligne droite.",people_vendor:"Vendeur",people_vendor_text:'" Bonjour !", le vendeur te sourit de manière déplaisante.\n" Que souhaites-tu acheter ? "',people_vendor_sell_nothing:"(passer son chemin)",people_vendor_sell_rm:"le sort 'rm' qui coûte {{item_rm_cost}}",people_vendor_sell_mkdir:"le sort 'mkdir' qui coûte {{item_mkdir_cost}}",you_buy:"Tu as acheté %s",need_money:"Tu n'as pas de quoi acheter ce sort.",unzipped:"Dans le %s, tu as trouvé ces choses : %s",item_mkdir_cost:"5000",item_rm_cost:"10000",people_vendor_rm:'"Hé ! Ce sort ne marche pas sur tout, tu sais.\nJ\'aurais dû le mentionner avant de te le vendre…"',item_cmd_unknown:"Cela ne marche pas.",item_rm_spell:"rm",item_rm_spell_text:"\"Ah, oui, le sort 'rm',\" le vendeur songe.\n\"Dis juste 'rm' suivi du nom de l'objet ou de la personne\net cela causera sa disparition… pour toujours.\nAs-tu les tripes pour l'utiliser ?\"",help_rm:"Faire disparaître définitivement un objet ou une personne.",man_rm:'Utilise "rm" pour supprimer définitivement un objet.\nIl faut écrire :\nrm OBJET',item_backpack:"SacÀDos%s",item_backpack_text:"Il y a un sac à dos avec ouverture zippée super classe sur la table sans prix dessus. Sa toile est un peu effilochée mais il semble robuste.\nTu jettes un coup d'œil sur le vendeur mais son attention est ailleurs.\nUne inscription apparaît près de la languette du sac : 'unzip'. ",help_unzip:"Récupérer le contenu d'un sac zippé.",man_unzip:"Ouvrir un sac zippé et sortir ce qu'il contient.\nIl faut écrire :\nunzip SAC.zip",item_backpack_stolen:"Tu viens de voler le sac à dos.\nÉtant donné que tu es fauché, et que tu ne travailles pas pour une odieuse multinationale,\nRichard Stallman devrait être fier de toi.",item_mkdir_spell:"mkdir",item_mkdir_spell_text:"\"'mkdir' transforme les rêves en réalité. Invoque ce sort suivi du nom qui te convient créera un nouveau chemin.\"",help_mkdir:"Créer un nouveau chemin.",man_mkdir:'Créer un nouveau chemin.\nUtilise "mkdir" pour créer un nouveau chemin à partir du chemin où tu te trouves.\nIl faut écrire :\nmkdir CHEMIN',room_library:"Bibliothèque",room_library_text:"La bibliothèque est mal éclairée et sent la moisissure.\nPourtant, il y fait bon et la douceur de la moquette verte te met à l'aise.",item_itemspellbook:"ToutSurLesSorts",item_itemspellbook_text:"Un sort est incarné par un objet ayant des propriétés spéciales.\nTout sort placé dans un des lieux mentionné par le PATH pourra être lancé de n'importe où.\nPour les autres, on peut se placer devant l'objet (disons OBJ) et l'utiliser en tapant \"./OBJ\".",item_radspellbook:"SuperLivreDesSortilèges",item_radspellbook_text:"La légende parle d'un mot portant un grand pouvoir qui permet de faire toute action.",item_romancebook:"RomanceDePoche",item_romancebook_text:"Tu retournes le livre de poche et ouvres une page au hasard. \n\"Oh, Horace !\" s'écria Antonia, qui bombait sa poitrine tandis qu'Horace arrachait avec doigté son corset de son armature souple. Horace fit un grognement bestial et saisit avec ses mains puissantes les doigts de sa conquête…\n— tu fermes ce livre sans intérêt et tu le reposes sur l'étagère.",item_historybook:"HistoireDeTerminus",item_historybook_text:"Ce livre semble intéressant, mais il y a trop de pages et l'écriture est vraiment petite. Voici un extrait :\n \n{{people_darkwizard}} … une vielle légende parle d'un magicien qui divisera le pays…\n…seule une bâtisseuse peut arrêter le mal répandu par {{people_darkwizard}}…\n…seul le pouvoir du \"sudo\" permettra de lui résister…",item_nostalgicbook:"NostalgieDuPays",item_nostalgicbook_text:"Le livre dit : \"Si tu es nostalgique de ton petit nid douillet,\ninvoque juste 'cd ~' et tu y retourneras instantanément. \nMais rappelle-toi que ce sera plus compliqué de revenir.\"\n\n Plus loin, une histoire intitulée \"Solitude\" raconte qu'une magicienne avec un pull arc-en-ciel et des lunettes roses, pouvait revenir en un instant à son lieu d'origine, quel que soit l'endroit où elle se trouvait.\nAussi, elle pouvait téléporter des objets.\nLa page suivante semble expliquer comment, mais elle a été déchirée.",item_vimbook:"VIMproved",item_vimbook_text:"Tu ouvres ce livre et découvres une écriture étrange.\nUne intense lumière en jaillit et t'aveugle.\nC'est alors que le livre disparaît.",item_chat:"Discussions",item_chat_text:"Si tu reçois des messages d'autres personnes. C'est probablement parce que l'instruction '{{cmd.mesg y}}' est présente dans ton profil.\nTu peux vérifier cela avec '{{cmd.cat}} .profil'.\nNormalement, les personnes en question doivent avoir accès à la commande '{{cmd.talk}}' pour t'envoyer des messages.",item_lever:"IntrigantLevier",item_lever_text:"Ce levier est accolé au mur entre deux étagères.",item_lever_exec:"Par curiosité, tu pousses le levier. S'en suit la disparation du panneau qui cachait une {{room_backroom}}.",room_backroom:"PièceSecrète",room_backroom_text:"Derrière le panneau, tu trouves un bibliothécaire de moyenne taille avec un elfe de petite taille.\n(Les elfes sont habituellement plus grands que les bibliothécaires.)\nTu espères ne pas les déranger.",people_grep:"Grep",people_grep_text:'L\'elfe se tourne vers toi avec un regard aigri.\n"Greeeeeep," dit-il solennellement.\n"Mes parents m\'ont donner un nom stupide... Cependant, retiens-le : il te sera utile."\n"Pour chercher les occurrences d\'un terme dans un livre, écris simplement "{{cmd.grep}}" suivi du terme et de l\'objet en question.\nVa trouver un livre et tape "grep MOT LIVRE".',people_librarian:"Bibliothécaire",people_darkwizard:"Mandi",people_darkwizard_pre:"le mage funeste",people_librarian_text:'"(silence) ? Oh, bonjour. Désolé pour le désordre,\n mais je suis très occupé par mes recherches sur {{people_darkwizard_pre}} {{people_darkwizard}}.\nPeux-tu me faire une faveur ? Pourrais-tu me donner toutes les références à {{people_darkwizard}} dans le livre relatant "{{item_historybook}}". Mon assistant Grep peux t\'aider." \nGrep te regarde avec un air mécontent. "Greeepp."\n',room_rockypath:"CheminEnPierres",room_rockypath_text:"Le chemin mène vers des champs.",item_largeboulder:"ÉnormeRocher",item_largeboulder_text:"Un énorme rocher bloque le passage.\nIl est bien trop gros pour être déplacé.",item_largeboulder_rm:"Le rocher disparait dans un pop.",room_artisanshop:"BoutiqueArtisanale",room_artisanshop_success_title:"Succès 'Assistanat'",room_artisanshop_success_text:"Tu sais maintenant utiliser 'touch' et 'mv'.",room_artisanshop_text:"Les murs de la boutique sont couverts d'horloges dont les tic-tac sont légèrement désynchronisés.\nDevant le plan de travail, une femme avec une grosse paire de lunettes brandit un chalumeau avec un enthousiasme inquiétant.",item_strangetrinket:"BabiolleÉtrange",item_strangetrinket_text:"Ça ressemble à une roche de cristal.",item_strangetrinket_rm:"T'a-t-on déjà expliqué que certains objets ont une valeur plus grande pour une personne que pour une autre ?\nOn appelle cela la valeur sentimentale.",item_strangetrinket_mv:"Cette babiole a sûrement une grande valeur pour cette femme ! En a-t-elle pour toi ?",item_dragon:"Dragon",item_dragon_text:"Un dragon de la taille de 2 mètres de long parcours la pièce.\nTu aurais cru qu'il s'agissait d'un vrai dragon s'il n'avait pas une clef servant à remonter son mécanisme sur le dos.",item_dragon_rm:"Où est-ce que tu te crois ? Dans « Donjon et Dragons » ?",item_dragon_mv:"Cela a dû prendre de nombreuses semaines pour réaliser ce Dragon mécanique.\nN'as-tu donc pas de valeurs ?",people_artisan:"Artisane",people_artisan_text:'L\'Artisane lève ses lunettes et te regarde avec surprise.\n"Êtes-vous le nouvel assistant ? Vous êtes en retard !" …\n"Vous dites que vous n\'êtes pas mon assistant ? \nEh bien, cela ne signifie pas que vous ne pouvez pas vous rendre utile.\nJ\'ai besoin de rouages, vite ! \n... \nVous ne savez même pas comment fabriquer des rouages ?\nHum. Et vous prétendez être un assistant.\nDites simplement "{{cmd.touch}}" suivi du nom de la chose que vous voulez créer. Maintenant, faites-moi un {{item_gear}} ! Vous reviendrez me parler après."',item_gear:"rouage%s",item_gear_artisans_ok:"Ah ! Déjà fini ? J'ai l'impression que tu apprends vite. \nMerci pour ton aide.",item_gear_text:"Ceci est un {{item_gear}}",item_gear_touch:"Euh… à quoi tu t'attends avec seulement un {{item_gear}} ?\nTu devrais être capable de le copier pourtant…\n*pfffff* T'as vraiment besoin d'entraînement.\n Écris seulement “{{cmd,[\"cp\"]}} [OBJET] [CLONE_DE_OBJET]”.\n[OBJET] est le nom de ce que tu vas copier et [CLONE_DE_OBJET] est le nom de la nouvelle copie.\nCompris ? Alors prouve le moi ! Voici un {{item_gear}}. Il m'en faut 5 autres.\nAppelle-les {{item_gear,[1]}}, {{item_gear,[2]}}, {{item_gear,[3]}}, {{item_gear,[4]}}, et {{item_gear,[5]}}, s'il te plait.",room_farm:"Ferme",room_farm_text:"Il y avait une ferme ici,\nmais les cultures ont été ravagées.",item_earofcorn:"EpisDeMais",item_earofcorn_text:"Ce maïs a l'air fané et bien piteux.",item_earofcorn_rm:"Pourquoi voudrais-tu détruire la seule nourriture d'une personne affamée ?",item_another_earofcorn:"AutreEpisDeMais",item_another_earofcorn_text:"Ceci est un autre épi de maïs.",corn_farmer_ok:"C'est un miracle ! Merci mon ami. Que l'Admin te bénisse.",people_farmer:"Fermier",people_farmer_text:'"Ruiné ! Je suis ruiné ! Regarde ce champs de maïs… il n\'en reste presque plus rien !\nLes soldats du {{people_darkwizard}} sont passés ici la semaine dernière… Ils ont tout détruit.\nComment vais-je nourrir mes enfants avec seulement un épi de maïs ?\nAvec au moins un {{item_another_earofcorn}}, je pourrais peut être en garder quelques graines."',room_clearing:"Clairière",room_clearing_text:"C'est une clairière couverte d'herbe avec un homme assis sur un rocher, soupirant…\nDerrière lui, les ruines d'une maison.",room_clearing_text2:"C'est une clairière couverte d'herbe avec un homme assis sur un rocher, soupirant…\nDerrière lui, une belle {{room_house}} neuve.",room_clearing_cd:"Tu ne peux pas traverser le pont tant que tu n'as pas remplacé la {{item_plank}} manquante.",people_cryingman:"HommeEnPleurs",people_cryingman_text:"\"Vous ! Vous faites partie des mercenaires du {{people_darkwizard}} ? Je peux la sentir cette capacité étrange que vous avez.\nVous êtes venu·e finir le travail, n'est-ce pas ?\nAllez ! Qu'est-ce que vous attendez ? Faites votre sale boulot, il ne me reste plus rien à perdre.\nIls ont détruit ma {{room_house}} et enlevé mon pauvre enfant.\nMa femme est partie en ville pour trouver de l'aide, mais depuis, elle a disparu.",room_house:"Maison",room_house_success_title:"Succès 'Architecte hétérotopiste'",room_house_success_text:"Tu conçois des espaces à partir de rien pour y abriter nos imaginaires.",room_house_text:"Ça ! C'est une {{room_house}}.",room_house_cd:"Tu entres dans la {{room_house}} construite de tes mains.",room_house_ls:"C'est toi qui l'as faite cette {{room_house}}. Prends quelques instants pour apprécier ton œuvre !",room_clearing_less2:"Merci du fond du cœur pour m'avoir construit cette {{room_house}} ! J'en pleure de joie.\nY a t'il beaucoup d'autres personnes comme toi ?\nPeux tu libérer mon enfant ?\nJe les ai vu partir par ce {{room_ominouspath}}.\nDésolé, je t'en demande beaucoup trop, mais tu es mon seul espoir pour retrouver ma famille.",room_brokenbridge:"PontCassé",room_brokenbridge_text:"Un pont de bois grinçant permet de passer au dessus d'un gouffre.\nMais une {{item_plank}} manque, et le trou est trop grand pour être enjambé.",room_brokenbridge_text2:"Le pont de bois grince toujours, mais tu peux maintenant passer de l'autre côté en plaçant la {{item_plank}} sur la partie abimée.",item_plank:"Planche",item_plank_text:"C'est une {{item_plank}}.",room_ominouspath:"CheminInquiétant",room_ominouspath_text:"Ce chemin mène vers une cave très sombre. \nC'est un chemin pavé tout à fait ordinaire, et pourtant, passer par ici te fiche la trouille.",item_brambles:"RoncesTordues",item_brambles_text:"Ce tas de ronces est couvert d'épines ne t'inspirent vraiment pas confiance.\nAprès inspection détaillé, il s'agit en fait de fil barbelé astucieusement camouflé.\nÇa cache quelque chose.",item_brambles_mv:"Tu ne peux pas toucher les ronces à cause de ces maudites épines.",item_brambles_rm:"Lorsque tu invoques '{{cmd.rm}}' sur le tas de ronces,\nces dernières émettent une lueur d'un bleu très profond.\nEnsuite, ce sont des fumées toxiques s'échappent du tas de ronces.\nAu bout d'un moment, les ronces disparaissent avec le nuage de fumée.",room_slide:"Toboggan",room_slide_text:"Au bout du long toboggan, tu aperçois une autre pièce.",room_slide_cd:"{{people_troll1}} bloque l'accès au toboggan.",room_slide_cd2:"C'est juste un toboggan. Tu ne sais pas si tu pourras remonter mais tu sais que tu dois y aller.",room_kernel:"FichiersNoyau",room_kernel_text:"Les FichiersNoyau contiennent les secrets concernant le cœur du système.",ask_password:"Mot de passe :",item_certificate:"Certificat",item_certificate_alert:"Vous n'avez pas le droit de lire le Certificat.",item_certificate_text:"Vous tenez le certificat qui se met à vibrer, briller et étrangement à refroidir, vous gelant les mains.\nVous le lâcher et songer à boire une tisane.",room_paradise:"Paradis",room_paradise_text:" En entrant vous remarquez que le mur à été gravé de long en large, probablement avec les ongles...\nOn peut difficilement y lire les mots : \n \n Ca y est ! vous avez vraiment ouvert les portes du Paradis en découvrant le mot de passe sudo. \n Vous n'avez peut être pas encore assez d'expérience pour l'utiliser avec discernement, mais je suis sûre que vous apprendrez vite. \n \n Et puis, il y a toutes ces choses qui rendent l'inimaginable possible.\n Comme toute chose intéressante, cela demande du temps et de la persévérance. \n Je suis sûre que vous y arrivez sans difficulté avec l'aide des personnes bienveillantes qui peuplent déjà ce monde.\n \n Félicitations ! Merci pour votre curiosité et votre patience.",room_paradise_ls:"Il n'y a vraiment rien d'intéressant au Paradis. \nVous repensez à une boisson chaude ou au moins tiède \net à ce cookie que vous pouvez maintenant manger. \nMalgré l'odeur de transpiration, l'air est respirable et vous en voulez plus. \nVous songez à sortir, à marcher un peu puis à vous assoir confortablement. \nInspirez, pensez au portes que vous pouvez ouvrir, et expirer. \n(GAME OVER)\n",gameover:"Bon maintenant, je pense que tu vas t'en aller. C'était sympa de te suivre depuis ma grotte. J'espère qu'on pourra se recroiser.",gameover1:"Tu es encore là ? Le jeu est fini tu sais...",gameover2:"Ah ... d'accord...",gameover3:"Bon comme je t'ai déjà dis 'au revoir', je vais t'ignorer. M'en veux pas, hein.",item_sudo_teaser:"Prospectus",item_sudo_teaser_text:"Avez vous déjà entendu parler de {{cmd.sudo}} ?\n{{cmd.sudo}} permet de lancer un sort sur n'importe quel objet, même protégé.\nPour cela, tapez votre sort précédé de « sudo ». \nGrâce à {{cmd.sudo}}, vous pourrez faire valoir votre certificat.",item_instructions:"Instructions",item_instructions_text:"Il y a de nombreux objets entreposés dans la salle PlusDeFichiersNoyau.\nDans l'un d'eux, j'ai caché le mot de passe pour utiliser {{cmd.sudo}} précédé de « password= ».\nVous avez probablement appris à utiliser le sort {{cmd.grep}}. Si ce n'est pas encore le cas, rendez vous à la bibliothèque.\n",room_morekernel:"PlusDeFichiersNoyau",room_morekernel_text:"Il y a tant de fichiers dans cette salle !",item_bigfile:"%s.txt",grep_long:"Vous obtenez des centaines de lignes en réponse...",item_bigfile_text:"Alice, assise auprès de sa sœur sur le gazon, commençait à s’ennuyer \nde rester là à ne rien faire ; une ou deux fois elle avait jeté les yeux sur \nle livre que lisait sa sœur ; mais quoi ! pas d’images, pas de dialogues ! \n« La belle avance, » pensait Alice, « qu’un livre sans images, sans \ncauseries ! » \nCe texte contient des millions de mots.\nCela prendrait des heures de tout lire.",item_bigfileM_text:"Alice, assise auprès de sa sœur sur le gazon, commençait à s’ennuyer \nde rester là à ne rien faire ; une ou deux fois elle avait jeté les yeux sur \nle livre que lisait sa sœur ; mais quoi ! pas d’images, pas de dialogues ! \n« La belle avance, » pensait Alice, « qu’un livre sans images, sans \ncauseries ! » \nCe texte contient des millions de mots.\nCela prendrait des heures de tout lire.",item_bigfileQ_text:"Alice, assise auprès de sa sœur sur le gazon, commençait à s’ennuyer \nde rester là à ne rien faire ; une ou deux fois elle avait jeté les yeux sur \nle livre que lisait sa sœur ; mais quoi ! pas d’images, pas de dialogues ! \n« La belle avance, » pensait Alice, « qu’un livre sans images, sans \ncauseries ! » \nCe texte contient des millions de mots.\nCela prendrait des heures de tout lire.",item_bigfileS_text:"Alice, assise auprès de sa sœur sur le gazon, commençait à s’ennuyer \nde rester là à ne rien faire ; une ou deux fois elle avait jeté les yeux sur \nle livre que lisait sa sœur ; mais quoi ! pas d’images, pas de dialogues ! \n« La belle avance, » pensait Alice, « qu’un livre sans images, sans \ncauseries ! » \nCe texte contient des millions de mots.\nCela prendrait des heures de tout lire.",item_bigfileT_text:"Alice, assise auprès de sa sœur sur le gazon, commençait à s’ennuyer \nde rester là à ne rien faire ; une ou deux fois elle avait jeté les yeux sur \nle livre que lisait sa sœur ; mais quoi ! pas d’images, pas de dialogues ! \n« La belle avance, » pensait Alice, « qu’un livre sans images, sans \ncauseries ! » \nCe texte contient des millions de mots.\nCela prendrait des heures de tout lire.",room_trollcave:"CaveDesTrolls",room_trollcave_text:"La cave est sombre et elle sent… les pieds ?! Ah, d'accord, ce sont probablement les trolls. \nContre le mur du fond, il y a une cage avec un enfant enfermé dedans.",people_troll1:"TrollMoche",people_troll1_text:"Il a l'air fou, et vraiment très moche.",people_troll1_mv:"Le troll semble avoir été surpris, puis il s'en va.\nL'espace d'une demi seconde tu as cru voir un beau jeune homme à la place du troll.",people_troll1_rm:"Le troll semble avoir été surpris, puis disparaît.\nTu ignore ce qu'il était et tu n'as déjà comme souvenir de lui qu'un bruit désagréable signifiant le moment ou tu l'as fait disparaître.",people_troll1_cp:"Ils se multiplient !",people_troll2:"TrollPlusMoche",people_troll2_text:"Il a l'air fou et vraiment vraiment moche. \nMais il semble vouloir te dire quelque chose avec des grognements incompréhensibles.",people_supertroll:"TrollAbsolumentHideux",people_supertroll_text:"Tu ne veux sûrement pas regarder cet individu. Oups, trop tard.",people_supertroll_rm:"Le troll émet un rot spectaculaire. Il semble que ça n'ait eu aucun effet.",people_supertroll_mv:"Si tu le fais sortir de la grotte, il ira semer la terreur dans le pays.\nIl voudra aussi probablement te manger, lorsque tu lui tournera le dos.",room_cage:"Cage",room_cage_text:"Il y a un enfant terrifié dans cette cage.",room_cage_cd:"Tu ne peux pas te faufiler entre les barreaux de la cage. Et puis, ça va pas la tête ?\nPourquoi voudrais tu aller dans cette cage ?\nCe {{people_supertroll}} pourrait te dépecer comme une clémentine.",people_kidnapped:"EnfantKidnapé",people_kidnapped_text:"Tu sais que ce n'est pas le moment de penser à cela,\nmais cet enfant tire vraiment une drôle de tête.",people_kidnapped_mv:"L'enfant regarde autour de lui, confus, surpris de se trouver hors de la cage.\nTu lui souris et lui dis avec une voix douce : \n « Tu devrais rentrer chez toi p'tit gars. » \n\"Quoi ? Pourquoi il faut toujours être un garçon par défaut ? Je suis une fille avec des cheveux courts. En plus, t'as l'air d'une crapule toi.\", dit la petite fille juste avant de s'échapper.",man_cd:'(Choisis ta destination) Utilise "cd" pour explorer le monde. \nIl faut écrire : cd CHEMIN',help_cd:"Se déplacer dans un autre chemin.",man_mv:'(MouVement). \nUtilise "mv" pour déplacer un objet. \nIl faut écrire : mv OBJET LIEU_DE_DESTINATION',help_mv:"Déplacer un objet dans un autre chemin.",man_ls:'(Regarde autour de toi). \nUtilise "ls" pour voir ce qui se trouve dans un chemin donné. \nSoit tu observes là où tu es, soit tu observes un autre chemin.\nIl faut écrire : \n ls (pour voir autour de toi) \n-OU- \n ls CHEMIN (pour voir là où tu ne peux pas choisir ta destination "cd" )',help_ls:"Décrire un chemin.",man_less:'(Lire, Examiner ou parler).\nUtilise "less" pour connaître les secrets liés à un objet.\nIl faut écrire :\n less ITEM',help_less:"Utiliser ou lire un objet, ou bien parler à quelqu'un.",help_cat:"{{help_less}}",man_cat:"{{help_less}}",help_more:"{{help_less}}",man_man:"Le Grand Manuscrit contient le savoir indispensable aux sorciers.\nVoici les sorts que je pourrai t'enseigner : cd, ls, rm, mv, exit, help, man, touch, grep, pwd.",help_man:"En savoir plus sur un sort.",man_help:'Tape "help" pour avoir une liste des sorts utilisables.',help_help:"Lister les sorts utilisables.",man_exit:'(quitter) \nUtilise "exit" pour quitter le jeu.',help_exit:"Quitter le jeu.","man cp":'(CoPy)\nUtilise "{{cmd.cp}}" pour cloner un item. \nIl faut écrire :\n {{cmd.cp}} ITEM NEWNAME ',help_cp:"Copier un objet.",man_pwd:'(Te montre là où tu es) \nIl faut écrire : \n "{{cmd.pwd}}" ',help_pwd:"Dire où tu es.",man_grep:'(gReP : Récupère des parties) \nUtilise "{{cmd.grep}}" pour trouver les parties d\'un texte qui contiennent le mot magique.\nIl faut écrire : \n grep MOT_MAGIQUE LÀ_OU_TU_CHERCHE ',help_grep:"Chercher quelque chose dans un texte.",man_touch:'(Touche) En touchant un objet (même imaginaire), tu le fais (re)naître comme neuf.\nUtilise "{{cmd.touch}}" pour créer de nouveaux objets.\nIl faut écrire :\n touch OBJET',help_touch:"Toucher un objet.",game_loaded:"Partie restaurée",room_kernel_sudo:"room_kernel_sudo",Suggestions:"Suggestions",cmd_poe_revealed:"(Vous venez d'activer le mode d'édition des traductions.)",po_symbol_edit:"(édition - taper Ctrl + Entrée pour valider) ",po_symbol_unknown:"(message inconnu)"};!function(){"use strict";var e=function(){this.init()};e.prototype={init:function(){var e=this||t;return e._counter=1e3,e._codecs={},e._howls=[],e._muted=!1,e._volume=1,e._canPlayEvent="canplaythrough",e._navigator="undefined"!=typeof window&&window.navigator?window.navigator:null,e.masterGain=null,e.noAudio=!1,e.usingWebAudio=!0,e.autoSuspend=!0,e.ctx=null,e.mobileAutoEnable=!0,e._setup(),e},volume:function(e){var n=this||t;if(e=parseFloat(e),n.ctx||l(),"undefined"!=typeof e&&e>=0&&e<=1){if(n._volume=e,n._muted)return n;n.usingWebAudio&&(n.masterGain.gain.value=e);for(var r=0;r=0;n--)e._howls[n].unload();return e.usingWebAudio&&e.ctx&&"undefined"!=typeof e.ctx.close&&(e.ctx.close(),e.ctx=null,l()),e},codecs:function(e){return(this||t)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||t;if(e.state=e.ctx?e.ctx.state||"running":"running",e._autoSuspend(),!e.usingWebAudio)if("undefined"!=typeof Audio)try{var n=new Audio;"undefined"==typeof n.oncanplaythrough&&(e._canPlayEvent="canplay")}catch(r){e.noAudio=!0}else e.noAudio=!0;try{var n=new Audio;n.muted&&(e.noAudio=!0)}catch(r){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||t,n=null;try{n="undefined"!=typeof Audio?new Audio:null}catch(r){return e}if(!n||"function"!=typeof n.canPlayType)return e;var o=n.canPlayType("audio/mpeg;").replace(/^no$/,""),i=e._navigator&&e._navigator.userAgent.match(/OPR\/([0-6].)/g),s=i&&parseInt(i[0].split("/")[1],10)<33;return e._codecs={mp3:!(s||!o&&!n.canPlayType("audio/mp3;").replace(/^no$/,"")),mpeg:!!o,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!n.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),webm:!!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_enableMobileAudio:function(){var e=this||t,n=/iPhone|iPad|iPod|Android|BlackBerry|BB10|Silk|Mobi/i.test(e._navigator&&e._navigator.userAgent),r=!!("ontouchend"in window||e._navigator&&e._navigator.maxTouchPoints>0||e._navigator&&e._navigator.msMaxTouchPoints>0);if(!e._mobileEnabled&&e.ctx&&(n||r)){e._mobileEnabled=!1,e._mobileUnloaded||44100===e.ctx.sampleRate||(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var o=function(){t._autoResume();var n=e.ctx.createBufferSource();n.buffer=e._scratchBuffer,n.connect(e.ctx.destination),"undefined"==typeof n.start?n.noteOn(0):n.start(0),"function"==typeof e.ctx.resume&&e.ctx.resume(),n.onended=function(){n.disconnect(0),e._mobileEnabled=!0,e.mobileAutoEnable=!1,document.removeEventListener("touchend",o,!0)}};return document.addEventListener("touchend",o,!0),e}},_autoSuspend:function(){var e=this;if(e.autoSuspend&&e.ctx&&"undefined"!=typeof e.ctx.suspend&&t.usingWebAudio){for(var n=0;n0?a._seek:r._sprite[e][0]/1e3),d=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-l),c=1e3*d/Math.abs(a._rate);a._paused=!1,a._ended=!1,a._sprite=e,a._seek=l,a._start=r._sprite[e][0]/1e3,a._stop=(r._sprite[e][0]+r._sprite[e][1])/1e3,a._loop=!(!a._loop&&!r._sprite[e][2]);var m=a._node;if(r._webAudio){var _=function(){r._refreshBuffer(a);var e=a._muted||r._muted?0:a._volume;m.gain.setValueAtTime(e,t.ctx.currentTime),a._playStart=t.ctx.currentTime,"undefined"==typeof m.bufferSource.start?a._loop?m.bufferSource.noteGrainOn(0,l,86400):m.bufferSource.noteGrainOn(0,l,d):a._loop?m.bufferSource.start(0,l,86400):m.bufferSource.start(0,l,d),c!==1/0&&(r._endTimers[a._id]=setTimeout(r._ended.bind(r,a),c)),n||setTimeout(function(){r._emit("play",a._id)},0)};"running"===t.state?_():(r.once("resume",_),r._clearTimer(a._id))}else{var p=function(){m.currentTime=l,m.muted=a._muted||r._muted||t._muted||m.muted,m.volume=a._volume*t.volume(),m.playbackRate=a._rate;try{if(m.play(),m.paused)return void r._emit("playerror",a._id,"Playback was unable to start. This is most commonly an issue on mobile devices where playback was not within a user interaction.");c!==1/0&&(r._endTimers[a._id]=setTimeout(r._ended.bind(r,a),c)),n||r._emit("play",a._id)}catch(e){r._emit("playerror",a._id,e)}},f=window&&window.ejecta||!m.readyState&&t._navigator.isCocoonJS;if(4===m.readyState||f)p();else{var h=function(){p(),m.removeEventListener(t._canPlayEvent,h,!1)};m.addEventListener(t._canPlayEvent,h,!1),r._clearTimer(a._id)}}return a._id},pause:function(e){var t=this;if("loaded"!==t._state)return t._queue.push({event:"pause",action:function(){t.pause(e)}}),t;for(var n=t._getSoundIds(e),r=0;r=0?n=parseInt(o[0],10):e=parseFloat(o[0])}else o.length>=2&&(e=parseFloat(o[0]),n=parseInt(o[1],10));var a;if(!("undefined"!=typeof e&&e>=0&&e<=1))return a=n?r._soundById(n):r._sounds[0],a?a._volume:0;if("loaded"!==r._state)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,o)}}),r;"undefined"==typeof n&&(r._volume=e),n=r._getSoundIds(n);for(var u=0;un?"out":"in",a=Math.abs(t-n),u=a/.01,l=u>0?r/u:r;l<4&&(u=Math.ceil(u/(4/l)),l=4),e._interval=setInterval(function(){u>0&&(i+="in"===s?.01:-.01),i=Math.max(0,i),i=Math.min(1,i),i=Math.round(100*i)/100,o._webAudio?("undefined"==typeof id&&(o._volume=i),e._volume=i):o.volume(i,e._id,!0),(nt&&i>=n)&&(clearInterval(e._interval),e._interval=null,o.volume(n,e._id),o._emit("fade",e._id))},l)},_stopFade:function(e){var n=this,r=n._soundById(e);return r&&r._interval&&(n._webAudio&&r._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(r._interval),r._interval=null,n._emit("fade",e)),n},loop:function(){var e,t,n,r=this,o=arguments;if(0===o.length)return r._loop;if(1===o.length){if("boolean"!=typeof o[0])return n=r._soundById(parseInt(o[0],10)),!!n&&n._loop;e=o[0],r._loop=e}else 2===o.length&&(e=o[0],t=parseInt(o[1],10));for(var i=r._getSoundIds(t),s=0;s=0?n=parseInt(o[0],10):e=parseFloat(o[0])}else 2===o.length&&(e=parseFloat(o[0]),n=parseInt(o[1],10));var a;if("number"!=typeof e)return a=r._soundById(n),a?a._rate:r._rate;if("loaded"!==r._state)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,o)}}),r;"undefined"==typeof n&&(r._rate=e),n=r._getSoundIds(n);for(var u=0;u=0?n=parseInt(o[0],10):r._sounds.length&&(n=r._sounds[0]._id,e=parseFloat(o[0]))}else 2===o.length&&(e=parseFloat(o[0]),n=parseInt(o[1],10));if("undefined"==typeof n)return r;if("loaded"!==r._state)return r._queue.push({event:"seek",action:function(){r.seek.apply(r,o)}}),r;var a=r._soundById(n);if(a){if(!("number"==typeof e&&e>=0)){if(r._webAudio){var u=r.playing(n)?t.ctx.currentTime-a._playStart:0,l=a._rateSeek?a._rateSeek-a._seek:0;return a._seek+(l+u*Math.abs(a._rate))}return a._node.currentTime}var d=r.playing(n);d&&r.pause(n,!0),a._seek=e,a._ended=!1,r._clearTimer(n),d&&r.play(n,!0),!r._webAudio&&a._node&&(a._node.currentTime=e),r._emit("seek",n)}return r},playing:function(e){var t=this;if("number"==typeof e){var n=t._soundById(e);return!!n&&!n._paused}for(var r=0;r=0&&t._howls.splice(s,1)}var a=!0;for(r=0;r=0;i--)o[i].id&&o[i].id!==t&&"load"!==e||(setTimeout(function(e){e.call(this,t,n)}.bind(r,o[i].fn),0),o[i].once&&r.off(e,o[i].fn,o[i].id));return r},_loadQueue:function(){var e=this;if(e._queue.length>0){var t=e._queue[0];e.once(t.event,function(){e._queue.shift(),e._loadQueue()}),t.action()}return e},_ended:function(e){var n=this,r=e._sprite;if(!n._webAudio&&n._node&&!n._node.ended)return setTimeout(n._ended.bind(n,e),100),n;var o=!(!e._loop&&!n._sprite[r][2]);if(n._emit("end",e._id),!n._webAudio&&o&&n.stop(e._id,!0).play(e._id),n._webAudio&&o){n._emit("play",e._id),e._seek=e._start||0,e._rateSeek=0,e._playStart=t.ctx.currentTime;var i=1e3*(e._stop-e._start)/Math.abs(e._rate);n._endTimers[e._id]=setTimeout(n._ended.bind(n,e),i)}return n._webAudio&&!o&&(e._paused=!0,e._ended=!0,e._seek=e._start||0,e._rateSeek=0,n._clearTimer(e._id),n._cleanBuffer(e._node),t._autoSuspend()),n._webAudio||o||n.stop(e._id),n},_clearTimer:function(e){var t=this;return t._endTimers[e]&&(clearTimeout(t._endTimers[e]),delete t._endTimers[e]),t},_soundById:function(e){for(var t=this,n=0;n=0;r--){if(n<=t)return;e._sounds[r]._ended&&(e._webAudio&&e._sounds[r]._node&&e._sounds[r]._node.disconnect(0),e._sounds.splice(r,1),n--)}}},_getSoundIds:function(e){var t=this;if("undefined"==typeof e){for(var n=[],r=0;r0&&(o[n._src]=e,u(n,e))},function(){n._emit("loaderror",null,"Decoding audio data failed.")})},u=function(e,t){t&&!e._duration&&(e._duration=t.duration),0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]}),"loaded"!==e._state&&(e._state="loaded",e._emit("load"),e._loadQueue())},l=function(){try{"undefined"!=typeof AudioContext?t.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch(e){t.usingWebAudio=!1}var n=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),r=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),o=r?parseInt(r[1],10):null;if(n&&o&&o<9){var i=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());(t._navigator&&t._navigator.standalone&&!i||t._navigator&&!t._navigator.standalone&&!i)&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain="undefined"==typeof t.ctx.createGain?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.value=t._muted?0:1,t.masterGain.connect(t.ctx.destination)),t._setup()};"function"==typeof define&&define.amd&&define([],function(){return{Howler:t,Howl:n}}),"undefined"!=typeof exports&&(exports.Howler=t,exports.Howl=n),"undefined"!=typeof window?(window.HowlerGlobal=e,window.Howler=t,window.Howl=n,window.Sound=r):"undefined"!=typeof global&&(global.HowlerGlobal=e,global.Howler=t,global.Howl=n,global.Sound=r)}();var dom=document;dom.Id=dom.getElementById,dom.El=dom.createElement;var eui=0,function_queue=[];Seq.prototype={then:function(e){this.function_queue.push(e)},next:function(){var e=this;return fu=e.function_queue.shift(),!!fu&&(fu(function(){e.next()}),!0)}};var pogencnt=0;dialog||console.log("Before this script, you have to load the script defining the dialog table.");var POPREFIX_CMD="cmd_",POPREFIX_ROOM="room_",POPREFIX_ITEM="item_",POPREFIX_PEOPLE="people_",POSUFFIX_DESC="_text",POSUFFIX_EXEC_DESC="_exec",PO_NONE="none",PO_NONE_DESC=PO_NONE+POSUFFIX_DESC,PO_DEFAULT_ROOM=POPREFIX_ROOM+PO_NONE,PO_DEFAULT_ITEM=POPREFIX_ITEM+PO_NONE,PO_DEFAULT_PEOPLE=POPREFIX_PEOPLE+PO_NONE,PO_DEFAULT_ROOM_DESC=POPREFIX_ROOM+PO_NONE_DESC,PO_DEFAULT_ITEM_DESC=POPREFIX_ITEM+PO_NONE_DESC,PO_DEFAULT_PEOPLE_DESC=POPREFIX_PEOPLE+PO_NONE_DESC;String.prototype.printf=function(e){var t=-1;return this.replace(/\%[sd]/g,function(n,r){return t++,e[t]})};var type_decorations={people:'%s',item:'%s',room:'%s',cmd:'%s'},poe="function"==typeof pogen,var_regexp=/\{\{\w+(\.\w+|,\[([^,]*(,)?)\])?\}\}/g,var_vars_regexp=/\[([^,]*(,)?)\]/g,var_vars_regexpbis=/\.(\w+)/;Cookie.prototype={parse:function(e){for(var t=null,n=e.split(";"),r=0;r0&&t.waiting_fus.length>0?t.run_waiting():(e++,e>10&&clearInterval(t.waiting_interval))},500))},push_img:function(e,t){if(t=t||{},e){var n=d(t.index,-1);this.imgs[n]||(this.imgs[n]=[]),this.imgs[d(t.index,-1)].push(e)}return this},unset_img:function(){var e=this;e.imgs.length>0&&e.imgs.pop()},show_img:function(e){e=e||{};var t,n=this,r=d(e.index,-1),o=n.imgs[r];if(o&&o.length>0)for(var i=function(){n.scrl(1e3)},s=addEl(n.monitor,"div","img-container");t=o.shift();)t.render(s,i)},epic_img_enter:function(e,t,n,r){var o=this;o.scrl_lock=!0;var i=addEl(o.monitor,"div","img-container "+t);pic=new Pic(e),pic.render(i,function(){i.className+=" loaded",setTimeout(function(){o.scrl_lock=!1,o.scrl(),def(r)&&r(vt)},n)})},clear:function(){this.monitor.innerHTML=""},muteSound:function(){this.mute=!0},unmuteSound:function(){this.mute=!1},muteCommandResult:function(){this.cmdoutput=!1},unmuteCommandResult:function(){this.cmdoutput=!0},playSound:function(e){this.mute||this.soundbank.play(e)},get_line:function(){return this.input.value.replace(/\s+/," ")},set_line:function(e){this.input.value=e},get_cursor_pos:function(){return this.input.selectionStart},set_cursor_pos:function(e){this.input.selectionStart=e},scrl:function(e,t){var n=this,r=n.monitor;t=d(t,2);var o=r.parentNode.offsetTop+r.offsetTop+r.offsetHeight+n.inputdiv.offsetHeight-window.pageYOffset-window.innerHeight;if(o>0){if(!n.scrl_lock&&!def(e))return window.scrollBy(0,o),!0;e=d(e,100),t--,t>0&&setTimeout(function(){n.scrl(0,t)},e)}},disable_input:function(){var e=this;return!e.disabled.input&&(e.disabled.input=!0,e.btn_clear.setAttribute("disabled",""),e.btn_tab.setAttribute("disabled",""),e.inputdiv.removeChild(e.cmdline),!0)},enable_input:function(){var e=this;return!!e.disabled.input&&(e.disabled.input=!1,e.inputdiv.prepend(e.cmdline),e.btn_clear.removeAttribute("disabled"),e.btn_tab.removeAttribute("disabled"),e.enterKey=e.enter,e.input.focus(),!0)},show_previous_prompt:function(e){addEl(this.monitor,"p","input").innerText=e},_show_chars:function(e,t,n,r,o,i,s,a,u,d){l=n.shift();var c=this;if(c.busy=!0,def(l)){var m;if("<"==l){for(var _="<";def(l)&&">"!=l;)l=n.shift(),_+=l;var p=_.replace(/<([^ ]*).*>/,"$1");if("img"==p)t.innerHTML+=_,c.playSound("tag"),m=c.charfactor[l];else if("voice"==p)a=_.replace(/<([^ ]*)[ ]*([^ ]*)\/>/,"$2");else{var f="";for(l=n.shift();def(l)&&">"!=l;)f+=l,l=n.shift();t.innerHTML+=_+f}c.scrl()}else c.charfactor.hasOwnProperty(l)?(t.innerHTML+=c.charhtml[l]?c.charhtml[l]:l,c.playSound(l),m=c.charfactor[l],c.scrl()):(t.innerHTML+=l,c.charfactor["char"]>0&&u%3==1&&c.playSound(a),m=c.charfactor["char"]);r&&c.msg_idx!=e?((SAFE_BROKEN_TEXT||o)&&(t.innerHTML=s,c.scrl()),c.playSound("brokentext"),i&&i(),d.cb&&d.cb(),c.busy=!1):setTimeout(function(){c._show_chars(e,t,n,r,o,i,s,a,++u,d)},m*c.charduration)}else c.playSound("endoftext"),i&&i(),d.cb&&d.cb(),c.busy=!1},rmCurrentImg:function(e){var t=this;setTimeout(function(){var e,n=t.current_msg.getElementsByClassName("img-container");for(e=0;e<\/div>/,""),n&&n(),t.cb&&t.cb(),r.busy=!1):(txt=e.toString(),txt=txt.replace(/(#[^#]+#)/g,' $1 '),txttab=txt.split(""),r.msg_idx++,txt=txt.replace(/\t/g," ").replace(/\n/g,"
").replace(/ /g," "),r.ghostel.innerHTML=txt.replace(/<\/div>/,"").replace(/(
)/g,"< >
").replace(/[«»]/g,'"').replace(/(\.\.\.)/g,"
"),a?(r.current_msg.innerHTML=txt,n&&n(),t.cb&&t.cb(),r.busy=!1,r.scrl()):r._show_chars(r.msg_idx,r.current_msg,txttab,i,s,n,txt,"char",1,t))}return this},make_suggestions:function(e,t){function n(e,t){var n=new RegExp("^"+o.complete_opts.fuzzy(t),o.complete_opts["case"]);return o.complete_opts.fuzzy(e).match(n)}var r=!0,o=this;e=d(e,-1),t=d(t,!0),o.suggestions.innerHTML="";var i=o.get_line(),s=o.input.selectionStart,a=[];if(args=i.split(" "),o.suggestion_selected=null,args.length>0){var u,l=0;for(u=0;u
s));u++);var c=args[u],m=[];if(c&&u>0)m=_completeArgs(args,u,c,o.context,n);else if(args[0].length>0)if(_hasRightForCommand(args[0],user.groups))m=_completeArgs(args,u,c,o.context,n);else{var _=_getCommands(o.context);u=0;for(var p=0;p<_.length;p++){var f=new RegExp("^"+o.complete_opts.fuzzy(c),o.complete_opts["case"]);_[p].match(f)&&m.push(_[p])}}else c="",m=_getCommands(o.context).map(addspace);if(0===m.length)o.set_line(i+"?"),setTimeout(function(){o.set_line(i+"??")},100),setTimeout(function(){o.set_line(i)},200);else if(1==m.length)if(t){var h=c.split("/");h[h.length-1]=m[0],args.splice(u,1,h.join("/")),o.set_line(args.join(" ").replace("././","./"))}else m[0]==c&&o.set_line(i+" "),o.show_suggestions(m);else{var v=commonprefix(m);if(m.indexOf(v)>-1?o.set_line(i+" "):e>-1&&(e0&&t){var h=c.split("/");h[h.length-1]=v,args.splice(u,1,h.join("/")),o.set_line(args.join(" "))}o.show_suggestions(m,a)}}return r},show_suggestions:function(e,t){t=t||[],this.suggestions.innerHTML=''+_("Suggestions")+"
";for(var n=0;n $1 '),e,function(t){n.input.value+=e,n.argsValid(n.input.value.replace(/\s+$/,"").split(" "))?n.enter():n.make_suggestions(-1,!1)}),n.scrl()},hide_suggestions:function(){this.suggestions.innerHTML=""},argsValid:function(e){return _validArgs(e.shift(),e,this.context)},echo:function(e){var t=this;if(def(e))if(e.isReturnSequence){if(!e.length())return;for(var n=[],r=0;r0){var n=e.input,r=e.monitor;e.monitor=addEl(r,"div","screen"),e.histindex=0,e.show_previous_prompt(n.value),e.history.push(n.value);var o=t.split(" ");e.echo(_parse_exec(e,o)),e.set_line(""),e.hide_suggestions(),e.monitor=r}},enterKey:this.enter,behave:function(){this.global_behavior(),this.input_behavior()},global_behavior:function(){window.onbeforeunload=function(e){return"Quit the game ?"}},_cmdline_key:function(){},input_behavior:function(){var e=this,t=e.input;dom.body.onkeydown=function(n){if(n=n||window.event,def(e.battle_scene))e.battle_scene.onkeydown(n);else if(def(e.choose_input))n.preventDefault();else{var r=n.key;if("ArrowRight"===r||"ArrowLeft"===r||"ArrowUp"===r||"ArrowDown"===r)n.shiftKey&&n.preventDefault();else{var o=dom.activeElement;o&&o==t||(t.focus(),e.scrl()),t.onkeydown(n)}}},dom.body.onkeyup=function(n){if(n=n||window.event,def(e.battle_scene))e.battle_scene.onkeyup(n);else if(def(e.choose_input))e._choose_key(n.key,n);else{var r=n.key;if("ArrowRight"===r||"ArrowLeft"===r||"ArrowUp"===r||"ArrowDown"===r)n.shiftKey&&n.preventDefault();else{var o=dom.activeElement;o&&o==t||(t.focus(),e.scrl()),t.onkeyup(n)}}};var n=[null,0];t.onkeydown=function(e){var n=e.key;return"Tab"===n||"Enter"==n?overide(e):e.ctrlKey?"c"!==n&&"v"!==n&&"x"!==n&&"y"!==n&&"z"!==n||overide(e):"PageUp"!==n&&"PageDown"!==n||(window.focus(),t.blur()),"ArrowUp"!==n&&"ArrowDown"!==n||overide(e),!e.defaultPrevented},t.onkeyup=function(r){var o=r.key;if(vt.statkey[o]=(vt.statkey[o]||0)+1,n[0]==o?n[1]++:n[1]=0,n[0]=o,e.hide_suggestions(),"Enter"===o)overide(r),e.suggestion_selected?(e.input.value+=e.suggestion_selected,e.suggestion_selected=0,e.make_suggestions(),n[0]="Tab"):e.enter(),e.scrl();else if("Tab"!==o||r.ctrlKey||r.altKey){if(r.ctrlKey){if("c"===o)overide(r),e.show_previous_prompt(e.get_line()+"^C"),e.msg_idx++,e.set_line("");else if("u"===o)overide(r),e.set_line("");else if("v"===o||"x"===o){overide(r);var i=e.get_line();i=i.replace(/\/$/,"");var s=i.split(" "),a=s.pop().split("/");a.pop(),a.length>1&&a.push(""),s.push(a.join("/")),e.set_line(s.join(" "))}}else if("PageUp"===o||"PageDown"===o)window.focus(),t.blur();else if("ArrowDown"===o)e.histindex>0&&(e.histindex--,e.set_line(e.history[e.history.length-1-e.histindex]));else if("ArrowUp"===o&&e.histindex0&&l!==u&&e.history.push(l)}e.set_line(u),e.histindex++}}else overide(r),e.make_suggestions(n[1]-1)||(n[1]=0),
e.scrl();return!r.defaultPrevented}},badge:function(e,t){var n=this,r=addEl(n.notifications,"div","badge"),o=Date.now(),i=n.last_notify-o,s=0;i>0&&(s=i);var a=s+n.timeout.badge/2,u=s+n.timeout.badge;setTimeout(function(){n.notifications.removeChild(r)},u),setTimeout(function(){r.className+=" disappear"},a),setTimeout(function(){n.badge_pic.render(r),addEl(r,"span","badge-title").innerHTML=e,addEl(r,"p","badge-desc").innerText=t},s),n.last_notify=o+u},notification:function(e){var t=this,n=addEl(t.notifications,"div","notification"),r=Date.now(),o=t.last_notify-r,i=0;o>0&&(i=o);var s=i+t.timeout.notification/2,a=i+t.timeout.notification;setTimeout(function(){t.notifications.removeChild(n)},a),setTimeout(function(){n.className+=" disappear"},s),setTimeout(function(){addEl(n,"p").innerHTML=e},i),t.last_notify=r+a},ask_choose:function(e,t,n,r){var o=this,i=[],s=0;for(r=d(r,{}),disabled_choices=d(r.disabled_choices,[]),direct=d(r.direct,!1);disabled_choices.indexOf(s)>-1;)s++;var a=addEl(o.monitor,"div","choicebox");o.show_msg(e,{direct:direct,el:a,dependant:!1}),o.set_line(""),o.choose_input=addEl(a,"fieldset","choices");var u=o.disable_input(),l=function(e){var t=e.target.getAttribute("idx");return addAttrs(i[s],{checked:""}),addAttrs(i[t],{checked:"checked"}),s=t,o.enterKey()},c=function(e){o._choose_key(e.key,e)};o.enterKey=function(e){o.playSound("choiceselect"),o.choose_input.value=t[s],o.show_msg(t[s],{el:a,dependant:!1}),a.removeChild(o.choose_input),o.choose_input=void 0,u&&o.enable_input(),o.show_msg(n(o,s))},o._choose_key=function(e,n){if("ArrowDown"==e||"ArrowUp"==e||"Tab"==e){if(o.playSound("choicemove"),i[s].removeAttribute("checked"),"ArrowDown"==e||!n.shiftKey&&"Tab"==e)for(s=++s%i.length;disabled_choices.indexOf(s)>-1;)s=++s%i.length;else if("ArrowUp"==e||n.shiftKey&&"Tab"==e)for(s=--s>=0?s:i.length-1;disabled_choices.indexOf(s)>-1;)s=--s>=0?s:i.length-1;addAttrs(i[s],{checked:"checked"}),i[s].focus(),o.ghostel.innerHTML=t[s]}else"Enter"==e&&o.enterKey();n.preventDefault()};for(var m=0;m $1 ')):i.push(null);o.choose_input.onkeydown=c,addAttrs(o.choose_input,{value:t[s]}),addAttrs(i[s],{checked:"checked"}),o.scrl()},battlescene:function(e,t){var n=this;n.set_line("");var r=n.monitor,o=addEl(r,"div","battlescene-container");n.battle_scene=addEl(o,"div","battlescene"),n.disable_input();var i=function(){n.battle_scene.setAttribute("disabled",!0),r.removeChild(o),n.battle_scene=void 0,t&&t()};return n.enterKey=function(){console.log("Enter Pressed but Battle Mode")},e(vt,n.battle_scene,i)},ask:function(e,t,n){var r=this;r.set_line("");var o=n.wait||0,i=n.timeout||null,s=addEl(r.monitor,"div",n.cls||"choicebox");r.show_msg([e,function(){setTimeout(function(){var e=addEl(s,"div","input-wrapper");n.multiline?r.answer_input=addEl(e,"textarea",{cols:78}):r.answer_input=addEl(e,"input",{size:78});var t=addEl(s,"div","keys");addBtn(t,"key","↵","Enter",function(e){r.enterKey()}),n.value&&(r.answer_input.value=n.value),n.placeholder&&(r.answer_input.placeholder=n.placeholder),r.answer_input.focus(),r.answer_input.onkeyup=function(e){if("Enter"===e.key)if(e.ctrlKey||!n.multiline)r.enterKey(),e.preventDefault(),r.scrl();else{var t=r.answer_input.selectionStart,o=r.answer_input.value.substr(0,t),i=r.answer_input.value.substr(t);r.answer_input.value=o+"\n"+i,r.answer_input.selectionStart=t+1,r.answer_input.selectionEnd=t+1}}},o),i&&setTimeout(function(){r.playSound("choiceselect");var e=r.answer_input.value;e=t?t(e):e,l(),r.echo(e)},o+i)}],{el:s,dependant:!1});var a=!r.disabled.input,u=null;n.disappear&&(u=function(){s.outerHTML=""}),r.disable_input();var l=function(){r.answer_input.setAttribute("disabled",!0),r.answer_input=void 0,n.disappear&&n.disappear(u),a&&r.enable_input()};r.enterKey=function(){r.playSound("choiceselect");var e=r.answer_input.value;e=t?t(e):e,l(),r.echo(e)}},auto_shuffle_input_msg:function(e,t,n,r,o,i,s){var a=this,u=a.msg_idx;a.input_operation_interval&&clearInterval(a.input_operation_interval);var l=0,d=t,c=n>t?1:-1,m=n*c,_=(n-t)/r;a.input_operation_interval=setInterval(function(){a.msg_idx!=u?(clearInterval(a.input_operation_interval),a.set_line("")):(d*c0||!e.isRoot){for(tmpret="",n=0;n0&&(r+=_("peoples",["\t"+s.map(function(e){return span("color-people",e.toString())}).join("\n\t")])+"\t\n"),n=0;n0&&(r+=_("items",["\t"+i.map(function(e){return span("color-item"+(e.executable?" color-executable":""),e.toString())}).join("\n\t")])+"\t\n"),{txt:r,pics:o}}var r,o=t.getContext();if(e.length>0){var i=o.traversee(e[0]).room;return i?i.readable||o.sudo?(0===i.children.length&&0===i.items.length?prtls={pics:{},txt:_("room_empty")}:prtls=n(i),r=i.picture.copy(),r.addChildren(prtls.pics),r.setOneShotRenderClass("room"),t.push_img(r),cmd_done(t,[[i,0]],prtls.txt,"ls",e)):_("permission_denied")+" "+_("room_unreadable"):_("room_unreachable")}return prtls=n(o),r=o.picture.copy(),r.addChildren(prtls.pics),r.setOneShotRenderClass("room"),t.push_img(r),cmd_done(t,[[o,0]],prtls.txt,"ls",e)}),_setupCommand("cd","dir",[ARGT.dir],function(e,t){var n=t.getContext();if(e.length>1)return _("cmd_cd_flood");if("-"!==e[0]){if(0===e.length)return _("cmd_cd_no_args")+(_hasRightForCommand("pwd")?"\n"+_("cmd_cd_no_args_pwd"):"");if("~"===e[0])return $home.previous=n,enterRoom($home,t),_("cmd_cd_home");if(".."===e[0])return n.fire_event(t,"cd",e,0),n.parents.length>=1?(n.parents[0].previous=n,_("cmd_cd_parent",enterRoom(n.parents[0],t))):_("cmd_cd_no_parent");if("."===e[0])return t.push_img(img.room_none),_("cmd_cd",enterRoom(n,t));var r=n.traversee(e[0]),o=r.room;return o&&!r.item_name?o.executable?(o.previous=n,_("cmd_cd",enterRoom(o,t))):(n.fire_event(t,"cd",e,0,{unreachable_room:o}),o.cmd_text.cd):(n.fire_event(t,"cd",e,0,{unreachable_room:o}),_("cmd_cd_failed",e))}n.previous.previous=n,enterRoom(n.previous,t)}),_setupCommand("man","help",[ARGT.cmdname],function(e,t){return _(e.length<1?"cmd_man_no_query":"man_"+e[0]in dialog?"man_"+e[0]:"cmd_man_not_found")}),_setupCommand("help",null,[ARGT.cmdname],function(e,t){ret=_("cmd_help_begin")+"\n";for(var n=_getUserCommands(),r=0;r"+n[r]+"\t: "+_("help_"+n[r])+"\n";return ret}),_setupCommand("exit",null,[],function(e,t){return setTimeout(function(){dom.body.innerHTML=_("cmd_exit_html")},2e3),_("cmd_exit")}),_setupCommand("pwd",null,[],function(e,t){var n=t.getContext();return t.push_img(n.picture),_(POPREFIX_CMD+"pwd",[n.name]).concat("\n").concat(n.intro_text)}),_setupCommand("cp",null,[ARGT.file,ARGT.filenew],function(e,t){var n=t.getContext();if(2!=e.length)return _("incorrect_syntax");var r=n.traversee(e[0]),o=n.traversee(e[1]);if(r.item){if(o.item)return _("tgt_already_exists",[o.item_name]);if(o.room)return nut=r.item.copy(o.item_name),o.room.addItem(nut),nut.fire_event(t,"cp",e,1),r.item.fire_event(t,"cp",e,0),o.room.fire_event(t,"cp",e,1),cmd_done(t,[[r.item,0],[nut,1]],_("cmd_cp_copied",e),"cp",e)}return _("cmd_cp_unknown")}),_setupCommand("mv",null,[ARGT.strictfile,ARGT.file],function(e,t){var n,r=t.getContext(),o=[],i=r.traversee(e[e.length-1]);if(!(i.item_name&&e.length>2)){for(var s,a,u=[],l=0;l-1&&(n.room.writable?(a&&i.room.removeItemByIdx(i.item_idx),s&&(n.item.name=i.item_name),n.room.fire_event(t,"mv",[e[l],e[e.length-1]],0),n.room.uid!==i.room.uid?(i.room.addItem(n.item),n.room.removeItemByIdx(n.item_idx),n.item.fire_event(t,"mv_outside",[e[l],e[e.length-1]],0),"mv"in n.item.cmd_text?o.push(n.item.cmd_text.mv):o.push(_("cmd_mv_done",[e[l],e[e.length-1]]))):n.item.fire_event(t,"mv_local",[e[l],e[e.length-1]],0),n.item.fire_event(t,"mv",[e[l],e[e.length-1]],0),s&&(n.item.fire_event(t,"mv_name",e,0),"mv_name"in n.item.cmd_text?o.push(n.item.cmd_text.mv_name):a||o.push(_("cmd_mv_name_done",[e[l],e[e.length-1]]))),a&&o.push(_("cmd_mv_overwrite_done",[e[l],e[e.length-1]])),u.push([n.item,0])):"mv"in n.item.cmd_text?o.push(n.item.cmd_text.mv):o.push(_("permission_denied")+" "+_("cmd_mv_fixed"))):o.push(_("permission_denied")+" "+_("cmd_mv_dest_fixed"))):!n[2]:o.push(_("cmd_mv_no_file",[e[l]]));return cmd_done(t,u,o.join("\n"),"mv",e)}return o.push(_("cmd_mv_flood")),o.join("\n")}),_setupCommand("rm",null,[ARGT.file],function(e,t){var n=t.getContext();if(e.length<1)return _("cmd_rm_miss");for(var r,o,i="",s=0;s-1){if(!r.writable)return a.item.cmd_text.rm||_("cmd_rm_invalid");var u=r.removeItemByIdx(o);u?(r.fire_event(t,"rm",e,s),i+="rm"in u.cmd_text?u.cmd_text.rm+"\n":_("cmd_rm_done",[e[s]]),u.fire_event(t,"rm",e,s)):i+=_("cmd_rm_failed")}return i}}),_setupCommand("grep",null,[ARGT.pattern,ARGT.strictfile],function(e,t){for(var n=t.getContext(),r=e[0],o=e.slice(1),i=[],s=0;s2&&(r.split(" ").filter(function(e){m.length1&&e.indexOf(m)>=0&&m.length>e.length/2}),d.length>0&&(l=u.item.cmd_text.grep,c=!0)),u.item.cmd_text.grep_overflow&&!c&&m.length<6){i.push(u.item.cmd_text.grep_overflow);continue}}}else u.item.fire_event(t,"unreadable");d=l.split("\n");var p=d.filter(function(e){return e.indexOf(r)>=0});p.length>0&&i.push(p.join("\n"))}else i.push(_("item_not_exists",[u.toString()]))}return i.join("\n")}),_setupCommand("touch",null,[ARGT.filenew],function(e,t){var n=t.getContext();if(e.length<1)return _("cmd_touch_nothing");for(var r="",o=e.length-1;o>=0;o--){if(n.getItemFromName(e[o]))return _("tgt_already_exists",[e[o]]);e[o].length>0&&(n.addItem(new Item(e[o],_("item_intro",[e[o]]))),r+=e[o],n.fire_event(t,"touch",e,o))}return""===r?_("cmd_touch_none"):_("cmd_touch_created",[r])}),_setupCommand("mkdir",null,[ARGT.dirnew],function(e,t){var n=t.getContext();if(1===e.length){var r=n.traversee(e[0]);return r.room.writable?r.item?_("tgt_already_exists",[e[0]]):(r.room.addPath(new Room(r.item_name,(void 0),(void 0),{writable:!0})),n.fire_event(t,"mkdir",e,0),_("room_new_created",e)):_("permission_denied")+" "+_("room_not_writable")}return _("incorrect_syntax")}),_setupCommand("unzip",null,[ARGT.file.concat(["*.zip"])],function(e,t){var n=t.getContext();if(1===e.length){var r=n.traversee(e[0]);return r.item&&r.room.writable?(r.item.fire_event(t,"unzip",e,0),""):_("item_cmd_unknow","unzip")}return _("incorrect_syntax")}),PlatformGrid.prototype.check=function(e,t,n,r){var o=this,i=!1;if(e>=o.range[0][0]&&t>=o.range[1][0]&&e+n<=o.range[0][1]&&t+r<=o.range[1][1]){var s=Math.floor(t/o.y),a=Math.floor(e/o.x),u=Math.floor((t+r)/o.y),l=Math.floor((e+n)/o.x);if(s>=0&&a>=0&&su&&il},setPlatformGrid:function(e,t){this.offset_prop.grid=new PlatformGrid(e,t||this.offset_prop.range)},getPlatformGrid:function(e){return this.offset_prop.grid},fallTo:function(e,t,n,r){var o,i,s,a,u=this,l=(u.offset_prop,t[1]<0);if(!u.falling||0==t[1]){u.falling=!0;var d=function(){(t[0]||t[1])&&(o=u.offset[0]+t[0],i=u.offset[1]+t[1],nowall=u._setOffset(o,i),s=0!=t[0]&&Math.sign(t[0])*o-1},removeItem:function(e,t){return t=t||[],idx=this.idxItemFromName(_(POPREFIX_ITEM+e,t)),this.removeItemByIdx(idx)},hasPeople:function(e,t){return t=t||[],idx=this.idxItemFromName(_(POPREFIX_PEOPLE+e,t)),idx>-1},removePeople:function(e,t){return t=t||[],idx=this.idxItemFromName(_(POPREFIX_PEOPLE+e,t)),this.removeItemByIdx(idx)},idxItemFromName:function(e){return this.items.map(objToStr).indexOf(e)},idxChildFromName:function(e){return this.children.map(objToStr).indexOf(e)},getItemFromName:function(e){return idx=this.idxItemFromName(e),idx==-1?null:this.items[idx]},getItem:function(e){return this.getItemFromName(_("item_"+e))},getChildFromName:function(e){return idx=this.children.map(objToStr).indexOf(e),idx==-1?null:this.children[idx]},hasChild:function(e){return idx=this.children.map(objToStr).indexOf(e.name),idx==-1?null:this.children[idx]},addPath:function(e,t){return def(e)&&!this.hasChild(e)&&(this.children.push(e),d(t,!0)&&(e.parents.push(this),e.isRoot=!1)),this},doLeaveCallbackTo:function(e){if(t=this,t.uid===e.uid);else if(t.parents.length){var n=t.parents[0];"function"==typeof t.leave_callback&&t.leave_callback(),n&&n.doLeaveCallbackTo(e)}},hasParent:function(e,t){t=d(t,!1);for(var n=!1,r=this.parents,o=0;o<(t?r.length:r.length?1:0);o++)n=r[o].uid==e.uid||n||r[o].hasParent(e);return n},removeParentPath:function(e){rmIdxOf(this.parents,e)},removePath:function(e){rmIdxOf(this.children,e)&&rmIdxOf(e.parents,this)},setOutsideEvt:function(e,t){return global_spec[this.name][e]=t,this},unsetOutsideEvt:function(e){return delete global_spec[this.name][e],this},can_cd:function(e){if("~"===e)return $home;if(".."===e)return this.parents[0];if("."===e)return this;if(e&&e.indexOf("/")==-1)for(var t=this.children,n=0;n0?"/":"")+t[s]);return n&&(r=t[t.length-1],o=n.can_cd(r),o&&(n=o,i+=(s>0?"/":"")+r+"/",r=null)),[n,r,i]}});var state=new GameState,vt,snd=new SoundBank,music=new Music(snd);user.name="Anonymous",user.address="217",snd.set("choicemove","./snd/sfx_movement_ladder5a.",["wav"]),snd.set("choiceselect","./snd/sfx_movement_ladder2a.",["wav"]),snd.set("tag","./snd/sfx_movement_ladder2a.",["wav"]),snd.set("char","./snd/char.",["wav"]),snd.set("grl","./snd/grl.",["wav"]),snd.set("poney","./snd/sfx_menu_move3.",["wav"]),snd.set("portal","./snd/sfx_movement_portal6.",["wav"]),snd.set("learned","./snd/sfx_sounds_fanfare3.",["wav"]),snd.set("unlocked","./snd/sfx_sounds_fanfare3.",["wav"]),snd.set("success","./snd/snd_5000points.",["mp3"]),snd.set("broken","./snd/sfx_exp_cluster9.",["wav"]),snd.set("hit","./snd/sfx_menu_move3.",["wav"]),snd.set("poweron","./snd/snd_steel.",["mp3"]),music.set("chapter2","./music/place/slowdrum-cave.",["wav"]),music.set("academy","./music/mystic/caravan.",["ogg"]),music.set("battle","./music/danger/snd__bairustage_loop.",["mp3"]),music.set("warning","./music/danger/trolls-beatdown-05l.",["wav"]),music.set("story","./music/cave/Searching.",["ogg"]),music.set("forest","./music/nature/Forest_Ambience.",["mp3"]),music.set("yourduty","./music/Intro_Theme.",["mp3"]),music.set("title","./music/Intro_Theme.",["mp3"]),music.set("trl","./music/danger/trolls-beatdown-05l.",["wav"]);var loadel,game_version="0.1beta",cookie_version="terminus"+game_version;newRoom("home",void 0,{writable:!0}),state.setCurrentRoom($home),$home.setEnterCallback(function(){music.play("forest")}),$home.setCmdEvent("cmd_not_found","hnotf").setCmdEvent("less_no_arg","hnoarg").setCmdEvent("destination_unreachable","hnodest").addStates({hnotf:function(e){e||setTimeout(function(){vt.unmuteSound(),mesg(_("very_first_try"),e),vt.unmuteCommandResult(),$home.unsetCmdEvent("cmd_not_found"),setTimeout(function(){vt.show_img(),global_fire_done(),state.saveCookie()},1300)},1e3)},hnoarg:cat_first_try,hnodest:cat_second_try});var shell_txt_id=0;shelly=$home.newPeople("shell").setCmdEvent("less_done","chtxt").setCmdEvent("exec_done","chtxt").addStates({chtxt:shell_dial}),$home.addPath(newRoom("western_forest","loc_forest.gif").setEnterCallback(function(){music.play("forest")})),$western_forest.newItem("western_forest_academy_direction","item_sign.png");var pwddecl=$western_forest.newItem("western_forest_back_direction").setCmdEvent("less","pwdCmd").addStates({pwdCmd:function(e){$western_forest.unsetCmdEvent("less"),_hasGroup("pwd")||(_addGroup("pwd"),learn(vt,"pwd",e))}});$western_forest.addPath(newRoom("spell_casting_academy","loc_academy.gif").setEnterCallback(function(){music.play("academy")})),$spell_casting_academy.addPath(newRoom("lessons","loc_classroom.gif"));var prof=$lessons.newPeople("professor","item_professor.png").setCmdEvent("less","learn_mv").addState("learn_mv",function(e){prof.unsetCmdEvent("less"),_addGroup("mv"),learn(vt,"mv",e)});$spell_casting_academy.addPath(newRoom("academy_practice","loc_practiceroom.png",{writable:!0})),$academy_practice.newItem("academy_practice","item_manuscript.png"),$academy_practice.addPath(newRoom("box","item_box.png",{writable:!0}).setEnterCallback(function(e,t){enterRoom(e.parents[0],t)}));var mv_pr_sum=0;$academy_practice.newItemBatch("practice",[1,2,3],"item_test.png").map(function(e){e.setCmdEvent("mv").addState("mv",mv_sum)}),man_sage=newRoom("mountain","loc_mountains.gif").newPeople("man_sage","item_mysteryman.png"),man_sage.setCmdEvent("less","exitCmd").addStates({exitCmd:function(e){man_sage.unsetCmdEvent("less"),_addGroup("exit"),learn(vt,["exit"],e),man=$mountain.newItem("man","item_manuscript.png"),man.setCmdEvent("less","manCmd").addStates({manCmd:function(e){man.unsetCmdEvent("less"),_addGroup("help"),learn(vt,["man","help"],e)}}).setCmdEvent("less_done","trueStart").addStates({trueStart:function(e){man.unsetCmdEvent("less_done"),music.play("yourduty",{loop:!0})}})}}),man_sage.setCmdEvent("less_done","manLeave").addStates({manLeave:function(e){man_sage.disappear()}});var poney_txt_id=1;$home.addPath(newRoom("meadow","loc_meadow.gif"));var poney=$meadow.newPeople("poney","item_fatpony.png").setCmdEvent("less","add_mountain").setCmdEvent("less_done","uptxt").addStates({add_mountain:function(e){$meadow.addPath($mountain),mesg(_("new_path",[$mountain]),e,{timeout:600,ondone:!0}),unlock(vt,$mountain,e),poney.unsetCmdEvent("less")},uptxt:poney_dial,uptxthint:poney_dialhint});$mountain.addPath(newRoom("cave","loc_cave.gif").addPath(newRoom("dark_corridor","loc_corridor.gif"))),$dark_corridor.addPath(newRoom("dank","loc_darkroom.gif",{writable:!0}).addCommand("mv").addPath(newRoom("small_hole",void 0,{writable:!0}).setCmdText("cd",_("room_small_hole_cd"))));var boulder=$dank.newItem("boulder","item_boulder.png",{cls:"large"}).setCmdEvent("mv","mvBoulder").addStates({mvBoulder:function(e){$dank.hasChild($tunnel)||($dank.addPath($tunnel),unlock(vt,$tunnel,e),e&&$dank.getItem("boulder").moveTo($small_hole))}}),rat_txtidx=1;newRoom("tunnel","loc_tunnel.gif").addPath(newRoom("stone_chamber","loc_portalroom.gif").addPath(newRoom("portal","item_portal.png").setEnterCallback(function(){vt.playSound("portal"),music.play("chapter1")})));var rat=$tunnel.newPeople("rat","item_rat.png",{pic_shown_in_ls:!1}).setCmdEvent("less_done","idRat").addStates({idRat:function(e){rat.setCmdEvent("less_done","ratDial"),rat.setPoDelta("_identified")},ratDial:function(e){rat.setTextIdx(rat_txtidx++)}});$portal.addPath(newRoom("townsquare","loc_square.gif")),$townsquare.setEnterCallback(function(){music.play("chapter2",{loop:!0})});var mayor_txtidx=1,mayor=$townsquare.newPeople("citizen1","item_citizen1.png").setCmdEvent("less_done","id").addStates({id:function(e){mayor.setCmdEvent("less_done","talk"),mayor.setPoDelta("_")},talk:function(e){mayor.setTextIdx(mayor_txtidx++)}});$townsquare.newPeople("citizen2","item_citizen2.png");var lady_txtidx=1,lady=$townsquare.newPeople("citizen3","item_lady.png").setCmdEvent("less_done","talk").addStates({talk:function(e){lady.setTextIdx(lady_txtidx++)}}),disabled_sell_choices=[];$townsquare.addPath(newRoom("market","loc_market.gif",{writable:!0}).addCommand("touch")),vendor=$market.newPeople("vendor","item_merchant.png").setCmdText("less","").setCmdEvent("less_done",function(){vt.show_img(),vt.ask_choose(_("people_vendor_text"),[_("people_vendor_sell_mkdir"),_("people_vendor_sell_rm"),_("people_vendor_sell_nothing")],buy_to_vendor,{disabled_choices:disabled_sell_choices})});var backpack=$market.newItem("backpack","item_backpack.png").setCmdEvent("mv",function(e){vt.show_msg(_("item_backpack_stolen")),backpack.unsetCmdEvent("mv")}).setCmdEvent("less").addStates({less:function(e){_addGroup("unzip"),learn(vt,"unzip",e),backpack.unsetCmdEvent("less"),backpack.setPoDelta([".zip"]),backpack.setCmdEvent("unzip",function(e){unzipped=[],unzipped.push(e.room.newItem("rm_cost")),unzipped.push(e.room.newItem("mkdir_cost")),backpack.setPoDelta([]),backpack.unsetCmdEvent("unzip"),
vt.show_msg(_("unzipped",[_("item_backpack"),unzipped.join(", ")]),{dependant:!1})})}});$market.addStates({rmSold:function(e){_addGroup("rm"),learn(vt,"rm",e),$market.removeItem("rm_spell"),disabled_sell_choices.push(1),vendor.setCmdText("rm",_("people_vendor_rm")),global_fire_done()},mkdirSold:function(e){_addGroup("mkdir"),learn(vt,"mkdir",e),disabled_sell_choices.push(0),$market.removeItem("mkdir_spell"),global_fire_done()}}),$market.newItem("rm_spell","item_manuscript.png"),$market.newItem("mkdir_spell","item_manuscript.png"),$townsquare.addPath(newRoom("library","loc_library.gif").addCommand("grep")),lever=$library.newItem("lever","item_lever.png",{executable:!0}).setCmdEvent("exec","pullLever").addStates({pullLever:function(e){$library.addPath($backroom),e||vt.show_msg(_("item_lever_exec")),lever.disappear()}}),$library.newItem("historybook","item_historybook.png"),$library.newItem("nostalgicbook","item_historybook.png").setCmdEvent("less","pwdCmd").addStates({pwdCmd:function(e){$western_forest.fire_event("pwdCmd")}}),$library.newItem("romancebook","item_romancenovel.png"),$library.newItem("itemspellbook","item_radspellbook.png"),$library.newItem("radspellbook","item_radspellbook.png"),vimbook=$library.newItem("vimbook","item_vimbook.png").setCmdEvent("less","openVim").addState("openVim",function(e){e||(vt.flash(1600,1e3),vt.rmCurrentImg(2650)),vimbook.disappear()}),newRoom("backroom","loc_backroom.gif").addCommand("grep"),$backroom.newPeople("grep","grep.png").setCmdEvent("less","grep").addStates({grep:function(e){_addGroup("grep"),learn(vt,"grep",e)}}),$backroom.newPeople("librarian","item_librarian.png"),$townsquare.addPath(newRoom("rockypath","loc_rockypath.gif",{writable:!0})),$rockypath.newItem("largeboulder","item_boulder.png").setCmdText("rm",_("item_largeboulder_rm")).setCmdEvent("rm").addStates({rm:function(e){$rockypath.addPath($farm),e&&e&&$rockypath.removeItem("largeboulder")}}),$townsquare.addPath(newRoom("artisanshop","loc_artisanshop.gif").setCmdEvents({touch:function(e){if(e.arg===_("item_gear"))return"touchGear"},cp:function(e){var t=new RegExp(_("item_gear")+"\\d");if(t.test(e.arg)){for(var n=1;n<6;n++)if(!e.room.getItemFromName(_("item_gear",[n])))return"";return"FiveGearsCopied"}}},!0).addStates({touchGear:function(e){Artisan.setCmdText("less",_("item_gear_touch")),$artisanshop.addCommand("cp"),_addGroup("cp"),learn(vt,"cp",e),e?$artisanshop.newItem("gear","item_gear.png"):$artisanshop.getItem("gear").setPic("item_gear.png"),state.saveCookie()},FiveGearsCopied:function(e){Artisan.setCmdText("less",_("item_gear_artisans_ok")),$artisanshop.removeItem("gear"),e||($artisanshop.removeItem("gear",[1]),$artisanshop.removeItem("gear",[2]),$artisanshop.removeItem("gear",[3]),$artisanshop.removeItem("gear",[4]),$artisanshop.removeItem("gear",[5]),success(vt,"room_artisanshop",e)),state.saveCookie()}})),$artisanshop.newItem("strangetrinket","item_trinket.png").setCmdText("rm",_("item_strangetrinket_rm")).setCmdText("mv",_("item_strangetrinket_mv")),$artisanshop.newItem("dragon","item_clockdragon.png",{pic_shown_in_ls:!1}).setCmdText("rm",_("item_dragon_rm")).setCmdText("mv",_("item_dragon_mv"));var Artisan=$artisanshop.newPeople("artisan","item_artisan.png").setCmdEvent("less","touch").addStates({touch:function(e){_addGroup("touch"),learn(vt,"touch",e),Artisan.unsetCmdEvent("less"),state.saveCookie()}});newRoom("farm","loc_farm.gif").addCommand("cp").newItem("earofcorn","item_corn.png").setCmdText("rm",_("item_earofcorn_rm")).setCmdEvent("cp","CornCopied").addStates({CornCopied:function(e){Farmer.setCmdText("less",_("corn_farmer_ok")),e&&$farm.newItem("another_earofcorn")}});var Farmer=$farm.newPeople("farmer","item_farmer.png");$townsquare.addPath(newRoom("brokenbridge","loc_bridge.gif").setCmdEvent("touch",function(e){return e.arg===_("item_plank")?"touchPlank":""}).addCommand("touch").addStates({touchPlank:function(e){$clearing.addCommand("cd"),$clearing.unsetCmdText("cd"),$clearing.setExecutable(!0),$brokenbridge.unsetCmdText("cd"),$brokenbridge.setIntroText(_("room_brokenbridge_text2")),e?$brokenbridge.newItem("plank","item_plank.png"):($brokenbridge.getItem("plank").setPic("item_plank.png"),vt.echo(_("room_brokenbridge_text2")))}})),$brokenbridge.addPath(newRoom("clearing","loc_clearing.gif",{writable:!0,executable:!1}).setCmdEvent("mkdir",function(e){return e.arg==_("room_house")?"HouseMade":""}).setCmdText("cd",_("room_clearing_cd")).addCommand("mkdir").addStates({HouseMade:function(e){e&&$clearing.addPath(newRoom("house")),$clearing.getChildFromName(_("room_house")).setCmdText("cd",_("room_house_cd")).setCmdText("ls",_("room_house_ls")),success(vt,"room_house",e),$clearing.unsetCmdText("cd"),$clearing.setIntroText(_("room_clearing_text2")),CryingMan.setCmdText("less",_("room_clearing_less2"))}}));var CryingMan=$clearing.newPeople("cryingman","item_man.png");$clearing.addPath(newRoom("ominouspath","loc_path.gif",{writable:!0})),$ominouspath.newItem("brambles","item_brambles.png",{cls:"large"}).setCmdEvent("rm","rmBrambles").setCmdText("mv",_("item_brambles_mv")).setCmdText("rm",_("item_brambles_rm")).addStates({rmBrambles:function(e){$ominouspath.addPath($trollcave),e&&$ominouspath.removeItem("brambles")}});var troll_evt=function(e){return"UglyTroll"==e.arg?"openSlide":""};newRoom("trollcave","loc_cave.gif",{writable:!0}).setCmdEvent("mv",troll_evt).setCmdEvent("rm",troll_evt),$trollcave.newPeople("troll1","item_troll1.png").setCmdText("rm",_("people_troll1_rm")).setCmdText("mv",_("people_troll1_mv")).setCmdText("cp",_("people_troll1_cp")).setCmdEvent("mv","openSlide").setCmdEvent("rm","openSlide").addStates({openSlide:function(e){$slide.addCommand("cd"),$slide.setExecutable(!0),$slide.setCmdText("cd",_("room_slide_cd2")),e&&$trollcave.removePeople("troll1")}}),$trollcave.newPeople("troll2","item_troll2.png").setCmdText("rm",_("people_troll1_rm")),$trollcave.newPeople("supertroll","item_supertroll.png").setCmdText("rm",_("people_supertroll_rm")).setCmdText("mv",_("people_supertroll_mv")),$trollcave.addPath(newRoom("cage","item_cage.png",{cls:"covering",writable:!0,executable:!1,pic_shown_as_item:!0}).setCmdText("cd",_("room_cage_cd")));var Kid=$cage.newPeople("kidnapped","item_boy.png").setCmdText("mv",_("people_kidnapped_mv")).setCmdEvent("mv","freekid").addStates({freeKid:function(){Kid.moveTo($clearing)}});$trollcave.addPath(newRoom("slide",null,{executable:!1}).setCmdText("cd",_("room_slide_cd"))),$slide.addPath(newRoom("kernel").addCommand("sudo").addCommand("grep")),$kernel.newItem("certificate",void 0,{readable:!1}).setCmdEvent("unreadable",function(e){e.term.echo(_("item_certificate_alert"))}).setCmdEvent("less_done","sudoComplete").addStates({sudoComplete:function(e){$kernel.addPath($paradise),mesg(_("new_path",[$paradise]),e,{timeout:600,ondone:!0}),unlock(vt,$paradise,e)}}),$kernel.newItem("sudo_teaser").setCmdEvent("less","sudo").addStates({sudo:function(e){_addGroup("sudo"),learn(vt,"sudo",e)}}),$kernel.newItem("instructions"),$kernel.addPath(newRoom("morekernel").addCommand("grep"));var $bigfiles=$morekernel.newItemBatch("bigfile",["L","M","Q","R","S","T","U","V","W"]);$bigfiles.filter(function(e){e.setCmdText("grep_overflow",_("grep_long"))}),$bigfiles[Math.floor(9*Math.random())].setCmdText("grep","password = IHTFP"),newRoom("paradise","loc_theend.gif").setCmdText("ls",_("room_paradise_ls")).setCmdEvent("ls_done","gameover").addStates({gameover:function(e){e||vt.echo(_("room_paradise_ls")),mesg(_("gameover"),e,{timeout:3e4,ondone:!0}),mesg(_("gameover1"),e,{timeout:6e4,ondone:!0}),mesg(_("gameover2"),e,{timeout:18e4,ondone:!0}),mesg(_("gameover3"),e,{timeout:196e3,ondone:!0})}}),console.log("Game objects : init"),app_loaded();