From 0028120ac32e20d5c45ddafb37ba4e2ace2cffa9 Mon Sep 17 00:00:00 2001 From: ispyhumanfly Date: Sat, 4 Nov 2023 19:35:42 -0400 Subject: [PATCH] chore updates to eternity template. --- packages/core/src/index.ts | 15 +- packages/iniquity/src/commands/index.ts | 3 +- packages/iniquity/src/commands/update.ts | 164 ++++++++++++++++++ .../templates/src/eternity/assets/mailtop.ans | 89 ---------- .../src/eternity/assets/zv_iniq-132.ans | 156 +++++++++++++++++ packages/templates/src/eternity/iniquity.ts | 83 ++++++--- 6 files changed, 395 insertions(+), 115 deletions(-) create mode 100644 packages/iniquity/src/commands/update.ts delete mode 100644 packages/templates/src/eternity/assets/mailtop.ans create mode 100644 packages/templates/src/eternity/assets/zv_iniq-132.ans diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 0432d90..0e75c21 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -811,7 +811,7 @@ export class Network {} * User * @summary Some basic user utils. More to follow. */ -export class User extends Iniquity { +export class User { public name = "" public password = "" @@ -822,7 +822,6 @@ export class User extends Iniquity { * @param options */ constructor(options: IUserOptions) { - super() this.name = options.name this.password = options.password } @@ -830,13 +829,21 @@ export class User extends Iniquity { login() { const user = bbs.login(this.name, null, this.password) if (user) return user + else return undefined + } + + exists(): boolean { + + const user = bbs.login(this.name) + if (user) return true + else return false } new() { - const user = system.new_user(this.name) + // TODO check for all return properties of this sbbs system.new_user + const user = system.new_user(this.name) as { password: string } if (user) { say(JSON.stringify(user)).pause() - // @ts-expect-error user.password = this.password } diff --git a/packages/iniquity/src/commands/index.ts b/packages/iniquity/src/commands/index.ts index 64eb0c4..f93667f 100644 --- a/packages/iniquity/src/commands/index.ts +++ b/packages/iniquity/src/commands/index.ts @@ -1,5 +1,6 @@ import init from "./init" import term from "./term" import server from "./server" +import update from "./update" -export { init, term, server } +export { init, term, server, update } diff --git a/packages/iniquity/src/commands/update.ts b/packages/iniquity/src/commands/update.ts new file mode 100644 index 0000000..bc191e6 --- /dev/null +++ b/packages/iniquity/src/commands/update.ts @@ -0,0 +1,164 @@ +/** + * + * Iniquity Update + * @summary The super cool command line interface to Iniquity. + * @example Invoking via the shell + * ```shell + * iq update --help + * ``` + * @example Invoking via yargs programatically + * ```typescript + * import Update from "@iniquitybbs/iniquity/src/commands/update" + * const update: yargs.CommandModule = new Update() + * ``` + */ + +/* +-$a. ------------------ .a$ ---------------------------- %$!, ----------------% + `$¸ .%$$^¸$$aa. .¸$` . .a$a$$. `¸$% $a$. . +-.aaa$ $$$$'- $$$$$.- $aaa. -.a%$^"$$aa -- .$$$$$'- $$a. $aaa. `$,$ ----------% +;$$$$',a$a$ d$%$$$$$,'$$$$;$$$$$ $$$$$., $$%$$" d$a$$ '$$$$; $$$ .a%$ $$a +:$$$$;$$$$%; Z$$$$$$$$;$$$$:$$$$$. $$$$^$,;$$&$$ Z$$$$,;$$$$.a$$$a..$$$ $$$ +.$$$$ `$$$$. $$$%$$$' $$$$.`$$$$ $$%$$$$ `$$$$. $%$$$ $$$$""$$$" $$$$: a$$ + `$$$a.$$%$ $$$$$$';a$$$` `¸$$aa$$$$&$': `$$$$a. $$$$'a$$$`.$$'$ $$$$; $$$ +%-----.------ $$$$'--------------- $$%$$' -- `¸$$$$$%$¸' ---- $$¸$a. `"$&$$//$%$ +dz . .:'¸' . . $$$$' . . `¸$$$$y. `$$& +%--------- a`-----------.--------- $$¸' -----.------------.---------------- $$$ + . !a . . . . .:' . . . .:.a$$$¸ +. . '$a, . a` . 'a . . s` . . . + . ¸$Aa . !a a! . . .. %s .s + . ¸¸' . . '$$Aa.aA$$' . . `!$%a.a%//$ +============================================================================== + t h e i n i q u i t y b u l l e t i n b o a r d s y s t e m +============================================================================== +*/ + +import yargs from "yargs" +import * as path from "path" +import fs from "fs" +import { exec } from "child_process" + +import * as compose from "docker-compose" +import * as dotenv from "dotenv" +import copyfiles from "copyfiles" +dotenv.config() + +process.env["COMPOSE_PROJECT_NAME"] = "iniquity" +process.env["COMPOSE_HTTP_TIMEOUT"] = process.env["COMPOSE_HTTP_TIMEOUT"] || "120" +process.env["COMPOSE_INTERACTIVE_NO_CLI"] = "true" + +const composeOptions: compose.IDockerComposeOptions = { + composeOptions: ["-f", path.join(".iniquity/docker-compose.yml") || process.env["COMPOSE_FILE"] || ""], + log: true, + env: process.env +} + +/** + * Iniquity Update + * @summary The main entry into all iniquity cli commands that are available. + * @implements {yargs.CommandModule} + */ +export class Update implements yargs.CommandModule { + public command = "server [action]" + public describe = "Control your iniquity bbs server." + + public builder = (yargs: yargs.Argv) => { + return yargs + .options("install", { + type: "boolean", + default: false, + describe: "Install dependencies for the iniquity bbs app." + }) + .options("watch", { + type: "boolean", + default: false, + describe: "Watch for changes in the iniquity bbs app." + }) + .positional("start", { + type: "string", + description: "Starts the iniquity bbs app on this machine." + }) + .positional("stop", { + type: "string", + description: "Brings the iniquity bbs environment down." + }) + .positional("restart", { + type: "string", + description: "Restart your iniquity bbs environment." + }) + .pkgConf("iniquity", path.join(__dirname)) + } + public handler(argv: yargs.Arguments) { + if (argv.install || argv.watch) { + if (fs.existsSync(".iniquity")) { + process.chdir(".iniquity") + + if (argv.install) { + exec("npm install", (err, stdout, stderr) => { + if (err) { + console.error(err) + return + } + + console.log(stdout) + }) + } + + if (argv.watch) { + copyfiles([path.join(".", "./assets/*"), ".iniquity/dist/assets"], { up: true, all: true }, (err) => { + // console.error(err) + }) + + exec("npx rollup -cw", (err, stdout, stderr) => { + if (err) { + console.error(err) + return + } + + console.log(stdout) + }) + } + + process.chdir("../") + } + } + + switch (argv.action) { + case "start": + compose.upAll(composeOptions).then( + (response: compose.IDockerComposeResult) => { + if (response.out) console.log(response.out) + }, + (err) => { + console.error("something went wrong:", err) + } + ) + + break + case "stop": + compose.down(composeOptions).then( + (response: compose.IDockerComposeResult) => { + if (response.out) console.log(response.out) + }, + (err) => { + console.error("something went wrong:", err) + } + ) + + break + case "restart": + compose.restartOne("server", composeOptions).then( + (response: compose.IDockerComposeResult) => { + if (response.out) console.log(response.out) + }, + (err) => { + console.error("something went wrong:", err) + } + ) + + break + } + } +} + +export default new Update() diff --git a/packages/templates/src/eternity/assets/mailtop.ans b/packages/templates/src/eternity/assets/mailtop.ans deleted file mode 100644 index 89c48c8..0000000 --- a/packages/templates/src/eternity/assets/mailtop.ans +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - -pc.textmod.es | 520: Web server is returning an unknown error - - - - - - - - - - - - - -
-
-
-

-Error -520 -Ray ID: 3efbfce1213a7e39 • 2018-02-19 20:32:24 UTC -

-

Web server is returning an unknown error

-
-
-
-
-
-
- - -
-You -

Browser

-Working -
-
-
- - -
-Detroit -

Cloudflare

-Working -
-
-
- - -
-pc.textmod.es -

Host

-Error -
-
-
-
-
-
-
-

What happened?

-

There is an unknown connection issue between Cloudflare and the origin web server. As a result, the web page can not be displayed.

-
-
-

What can I do?

-
If you are a visitor of this website:
-

Please try again in a few minutes.

-
If you are the owner of this website:
-

There is an issue between Cloudflare's cache and your origin web server. Cloudflare monitors for these errors and automatically investigates the cause. To help support the investigation, you can pull the corresponding error log from your web server and submit it our support team. Please include the Ray ID (which is at the bottom of this error page). Additional troubleshooting resources.

-
-
-
- -
-
diff --git a/packages/templates/src/eternity/assets/zv_iniq-132.ans b/packages/templates/src/eternity/assets/zv_iniq-132.ans new file mode 100644 index 0000000..86b0812 --- /dev/null +++ b/packages/templates/src/eternity/assets/zv_iniq-132.ans @@ -0,0 +1,156 @@ + Û²±°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°±²ÛÛÛÛÛÛÛÛ²²±±±°°°°ÛÛÛÛÛÛÛÛÛÛÛÛ°°°ÛÛÛ°°ÛÛÛÛÛÛÛÛÛÛÛÛÛßÛÛÛ²ßÛÛ + ÛÛ²±°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°±²ÛÛÛÛÛÛÛÛÛ²²²±±±±°°°ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²°° Þ²°ÛÛÛ + ÛÛÛ²±°°ÛÛÛÛÛÛÛÛÛÛÛÛÛ°°±²ÛÛÛÛÛÛÛÛÛÛÛ²²²²±±±°°°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÞÛ²°ÛÛÛ°°ÛÛÛÛ + ÛÛÛÛ²±±°°ÛÛÛÛÛÛÛÛ²ÛÛÛ°°²²ÛÛÛÛÛÛÛÛÛÛÛßßßßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ²²°ÛÛÛ°ÛÛÛÛÞÛ + ÛÛÛÛÛ²±±±°°°ÛÛÛ°ÛÛ°ßÛÛßßß ÜÜßßß ÜÜ Ü²ßÜÜÜßßßÛÛÛÛÛÛÛÛÛ²ÛÛÛÛÛÛÛÛ±±ÛÛÛÛ°ÛÛÛÛÛÛÛ + ÛÛÛÛÛ²²²±±±°°°Û±ßß Ü ßß²Ü ßÜßß ß ° ß±ÜÜ ßÛÛÛÛÛÛ±ÛÛÛÛÛÛÛÛ°°ÛÛÛÛÛÛÛÛÛÛ²²Û + ßÛÛÛÛ±Û²ßßßß ÜÜÜÜÜÜÜß °ÞÝÞ±Ü ÜÜ Ü²ß ÜßÜÜ ßßß°ÛÛÛÛÛßÜÛÛ²ÛÛÛÛÛÛÛÛÛÛ±±ßÛ + ÛÜ ßÛß° ÜÜÛÛÛܲßßÛÛß ÜÜÜÜÛÝ ±±Üß ßÛ ßÜ °ÜÜÛÛÜßß²ÜÜÜÜ ßß ÞÛÛ°ÛÛÛÛÛÛÛÛÛß°°ÛÛ± + ÛÛÝ Üܱ°°ÜÜßß°ÛÛÜÜÜÜÜÛÛß ßÛÜÞ°Ý °ÞÝ Þ²²ßß ÛßßßßÜßÛÛßÛÜÜ ßÛÝÞÛÛÛÛÛÛßÜÛÛÛÛÛÛ° + Ûß ß²±ÜÛßÛÜÜÛÛßßßßÛÜÛÜ ß ²ß Þ°ÝÜÜßßÜÜß°ÜÜÛßÛܲÜÜ°ßÛ°ÛÞÛ²Û ÛÛÛÛß ÜÛÛÛÛÛÛÛ°± + ܲß Þ²ÛßÜÜÛÜÛÝÛÛß²ÛÛÝ ±Üß²ßßÜ°ÛßßßܱßÜÛÛÛÜÛÛß±ÛÛÛÛÛ±ÜÛÛ±ß ÞÛß°ÜÛÛÛÛÛÛÛÛ°±± + ° ÜßÛÜßܱ޲ßÜÛßÛܲ±±ÞÛÜß°Ü° ° Ý °°Þ±±Þ²ÛÛß± ÛÛ°Û۰ܲÜßÛÜÜß °²ßßÜÜÛÛÛÛ°±±² + Ü ßÛ²±±ÛÞÛÛÜÞÛÛÜÜßÛßÛÜܲÜßß ±Üß²²°Üß°ÛÜßÛ°ÜÜÜÛ°²ßÛÛÝ ß Ü ÜÛÛÛÛÛÛ°°±²²Û + ÜÛ°ÛÛß ßÜÛÛ°°Û±± ްܱÝßÜÞÞ ÜÛÛ°ßÛÜÛÛÛÜÛßÛß±²ÛÛÛß² ° ±ß ÞÛÛÛÛÛ°°±±²²ÛÛ + ß²ÜÜ ß ±ßܱ°ßÛÜÛ±ÝÛ²°Ü±±ÛÝÛ °޲ܲßÛÛÜÛßßÛÛßÛܱÜÛ°ßÛÝ °Þ² ° ßßßÛ°°±±²²ÛÛÛÛ + Ü ° ßßÜ Þ°ÜÜÛßßÛ°ÛÛܲ±±°ÛÜÛßܱ±ßßÛÛÛÞÛÜÛÛÛÛ°°°ß²ÛÝ ß ß ßÜ ß²²ÛÛÛÛÛÛ + Û ±ÜÛß ß ß°±ßÛܱÛÛÛܱ±°۲߱±Ü°Ý°ÜÛÜÛÛ²ÛÝÛÛß±°²±ÞÛ² ß ° ÞÝ ÞÛÛÛÛÛÛÛ + ÞÝ ° ßÜÜ Þ±ß°ÞÛÛÛÛÜÛß°Ûß±±°°ÛÞÛܲÛß°Û°ßÛÛÝ°ÞÝ°ÛÞÛ ßÜ ° ° ܱ Þ± ßÛÛÛÛÛÛ + ± Ü ßÜ°ßÜ ²ßÜÛÛß°ÞÛÛÜÛÛ°°°ÛÛÛÛß±ÛÛÛ²ÛÛ°ÛÜßÜßÛßÜÛ ܱ ܱ ß Üß ÜßÛÛÛÛ + ° ߲ܱ߱ßÜ ÛßÛÛ±ÜÛÛ²²ÛÛÛÛÛÛÛÛÛ°ÛÛÛÛ°ÛÛÛß²²ßÜÛß°ÜÜÛ²Üß² ± ²ÜÝ ßÛÛ + ² ßÜ Þ±ßÛÜß²²ÜÜÛÛßßÛÛß±±ÛÛÛÛÜÛÛÛÛÛÛß±±°ÛÛ۰ܲßßÛ²ßßß°Üß ܱ° °Ü ± ß±Ü ÞÛ + ß± °ÞÛܲ°° ßÜßÛ²ÛÜ°ß²ÜÛÛ°°ß ÜÛÛÛÛÛÛ±Üß Ü°Û±±Û°ÛÜܱ°ÜܲßÛܲß ÜÛÜÝ ° °ÝÜß + ܱßÛ±ÜÜÛßÜßßÛÜ߲ܰ߱ÛÛß±Û°ÛÜÛÜÛ²Û°Üܱܲ² ÜÛÛßÛ°±ßßÜ°ßß Þ°ß²Ý ÜÛ Þ²ß + ß Þ²Ü°ÛÜÛßÜßßÝ ÛÜßÛÜ ܲ²±ÜßßÛ²Û²ÛßÜÛÛßßßÜÜßÛܲß ß ÛÜ ß Ü°± ° ÜÛÛ°± ° ° + ±Ü ßÛ²ÜßßßÜÜ°Û²ÛÛÝ °ÛÛß°²ÝÞ ßß±ÛÛßÛÜÜܲßß Ü ßÜ ÞßÜ Ü ° ßÛ²ÛÛ°Ý ° + Ü °ßÜ ÜßÛß ßß°ßÜÜܲÛܲÛß°Ü ° ßßßßßß°Ü°ÜÜ Þ±Ü°Ûß ± ß± ° °²ÛßÜß + ßÛÜ ßÜ ±ß ° ßßßß°ÜܱÛÝ Ü Ý ÜÛ²ÝþÞ²ÜÜ ܲ ß± ° °ÛÜ °²ß Ü + ÜÛßß ° °Þ²Ýþ° Ü°ÜÜܲßÜÜ ßß ²ÛßÜ°ÜÜÜ° ° ° Üܱ±Ü Þ²ßÛ ÞÛ + ±Ü ÜÜßßÜÜÜ ß²ÜßÜÜ±ß Ü±Üß°ÜܲÜ ²²Ü ßÜܱßßÜܲ²Ü ÜÜßÜßßßß°ÛÝ Üß°°±² ²² + Ü ÞÞÝ °ÜÛÛßßÜÜÜ ßßßßß °Þ۲߰ܰ߰°ÛÛÛÛ²ÜÜßßßßßßßß ÜÛßßÜßßßßß Üß ÞÛ°±Ý ±± + ß ÛÛÛ ßÛÛßßßÛ ßß²ÜßÛ²ÜÜÜÜÜÜÜÜÛ²²ßß² ßßßßßßß±±ßÛßÜÜÜÛ°ß ßÜÜÛß ÜÛÛß ÞÛÛÛÜß ± + ÛÜßÛÜ ÜÜÜÜÜÜ ßßÜ ßßßßÜÜÜÜÜßß Ü°Ü °Ü ÜßÜßßÛÝ ±ß±±°±ßßßß ° ÛÛ²Ý ßÜß ° + ±ÜßÛßÜÛÛ ßßßß ° ÜÜßÜßß²ÜÜÜ°²ÜܱÜÛÞÛßÜÛÜß ÜÛßßܲÛß Ü±±ܱ߱ ²² + °ß°ÜßßÛÛÛ ßܱ± Þ±±ÝÞ°ÜßßÛ߲ޱݲ²Ý²Ý Û±± ß ÜÛÛÛÛ°ÜÛßÛ Þ° ° ±² + Þ±ÜÜ ÛÛÛ ° Þ²² ß°°Ý ±±ÝÞ²²ßßßß۰߱ݰ޲² ÞÛÜÛÛ±ÛÛÛÝ Û± ²² + ÜÜßÛÝÝÞÞÛ ° ±ÜÛßÜÛ ÞÝ Þ² ßÜ°ÜܱÜ ßßß± ÞÝ ßÞÛ²ÛÛÜß°ÜÛ ÞÛ² °° ²² + Þ۲߱۰۲ ±Ü ßÛÜÛ°Ý ÛÝ°°° Þ ²ß° ß± ° ßÛÜ ± °Ü Þ²ÛÛÛݲ۲²ÝÞÛÞ± ±± ² + ßÛ±°Û²Û±ÝÞ°Ý Þ °± ÞÞÝ ±±±Ü ° Ü Þ °Þ Þ Þ²ÛÜ Þ²ÛÝ° °ÛÛ²±Û²²°Ý ÛÛ°Ý ±± + ° ßÜß±°ÛÛ°Ý ±±  ±Ý Û° °ÞÝ޲߱ ± ÞÝ ÞÝÞÝ ± ß± ßÝÛ² ÞÛÛ°Û²°°°Ý ÛÛÞ² ÜÛ + ± ÞÝÞ±°ÜßÛ Þ± ÞÛ ÞÞ± ² ° ±Ý Þ²Þ°²°²ß±± ° Ü °ÞÞ°Û °ÛÛÛÛ²² ²± Û²Û±Ý ÛÛ + ÞÝ ß ²±°Û°Ý ÛÝ ß ÛÛÝ Û ° °Ý ß± ÜܲÜÜܱ²Ü ÞÛÜ °±°Ý°ÛÛÛÛ°± ß° Þ±Û°Ý Þ²Ý + ß ßÛܲ°²Û± ß ÛÞÞÝ ßÞÝ ÜÛÛܱ±ß±ß±ß²±ÛÝ ÛÛÝÞÞ±Ý ²°ÛÛ²°Üß² Þ°ß²Ý ° + ° ÞÛÛÛÛ±Û°²Ý ° ۲߱ ±Üß Ü±ßßܱ±Ü°°°°±°°ÜÜ Þ²ÝÞ±²² ²±Û²Û ±Ý° ÜÜ°Ü + ± Ü ßÛÛÛ²ÛÝÞÛ ±°Üß±Û° °²ß±ß ÜÛÜÜܱ²²²ÜܲÛÛÜÜ ° Þ²Û² °±Û°°Û ²Ý Þ±²ÛÜÝ + ²Ý ÜÛÛÛÝÛÛÜß²Ü ÜÜÜÛÝÞÛ°Û°°Ûܲ²ßܲß°°°°ßß²±ÜÜ °Þ²²°ÞÝ Ý ²²ÝÞ² Þ°ÛßßÝ ° + ß²Ü ÞÛÛÛ°ß°ÛÛ Û²ÛÜÛ ÛÝÞÛÝÞ²²°Û±ßÛÛÛÛÛÛÛÛ°°ßÛݱ۰°Ü² ß ÞÝ ± ß ±°ßÜÜ ± + ßÜÜß Þ²ß²Ü± Þݰ޲ݱßÜÛÛ°Þ°°²²ÛÛ²Û°ÛÛÛÛ°ÜÛÛÛ ²²Üß°°ÜÛ ß² ÜÜÜÜ ±°ÞÛÜ Þ² + Û ßßÜ ß ÛßÛ ±ÜÛ±± ÜÛÛÛ²±±ßÛ°°ßß°ß²²ÜÜܱßßß ÜÛÛßßÜÛÛ°Ýß±ÜܲßÛÛ°ÜÜÛß²Ý °Ý + ÛÝ ßÜ ÞÛÜ°ÜÜ۰ݱßß ßßßß°°°°°°° ßßßßß°°ÜÜܲ²²ÛßÛ°ÜßܱÞÛ²²ßÛ Û² + ÛÝ ° ßÛ²Û²ÛÛ ° ÜÜÜ°°°°²²²²²²²²²ÜÜ° °°°°²²²ßßßßßß °°ßÜß°°ß ÞÞÝ + ÞÛ ° ° ßß°ß ܲÛÛÛÛÛÛÛÛÛ°°°°°°°°ÛÛ² °°° ÜÜÛßßßßßßßß Ü ÞÛ² + ÞÛÝ Û °Þ² ßßÛÛÛ²²Û²ÛÛÛÛÛÛÛÛÛÛÛÛÜÛÝ ÜÜÛ²ßßß ÞÛ Û° + ÛÛ ÞÛ ÛÛ °ÜÛÛÛ±±ß °ÛÜÛÛÛÛÛÛÛÛÛÛÛÛÝ ÜÛßß ° ÛÝ ° Ûß + ÞÛÝ ÛÛ ß± °²²ÛÛ±°°ÛÜÛÛßßÛÛÛ°°²²²ÛÛß °ß Ü ±ß ÜÛ± ܲ + ÛÛ ÞÛ² Ü ßÛ²°°ÛÜ ÛÛÛÛÛÛÛÛÛ°ß²ß Üܲß ÜßÝ ÜÛÜßÝ °ÛÝ + ²² ß° ÜÜÜÜÝ ±ÜÜÜßßßßßÛÜÜÛÛ°°°²²²ÛÛßßß ÜÜßß°ß° ÜßÜßÛß Þ±ÛÝ + ±± ÜÜÜÛÛÛÛÝ ° ßßÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛÛÛßßÜÜßÜß± Üß Üß Üß±ß²ß ÞÜÜ + ÜÜ°ÜÛÛÛÜßß²Ý ° Ü ßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛßßßÜß±ÜßÜß Ü² ÜÜ±Ü°ß °° ÞÝÝ + ÜÛÛ²ܲßÛß²²Ý ±Û ± ßßÛÜÜÜ ÜÜÜÜÛÛßßÜß °Ü±± ° ° ßÛ°ß ܱ± Þ²ÛÝ + ÛÜ °°ßÛÝ ²Û±±°°ÛÝ ² ßßÜÜÜ ßßßÛÛÛßßßßßßßßßÛÜÜßß°ÜßÜ°Üܱ ܲßÜ ÜÛ²²² ±±² Ü + ÛÛÜÜ Þ² °Û°°²Ûßß Û ßßßßÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜßßÜß ÜÜß Ü±±ÛÝ ÛÛ°Ü²Ý Þ°ßÜÛÜÝ + ÛÛß²ÜÜÛ° °ßß ÜÜ ÞÝ Ü ßÜÜÜÜ ßßßßßßßßßß ÜÜÜß ÜÛß ßÛ°Ûß ÛÛ°²ÛÛ Üß ÞܲßÛ + ÛÜÛ°ÛÛßß ÜÜÛÛÛÛÛ² ² ²ÛÜÜ ßßßßÛÛÛÜÜÜÜÜÜÜÜÛÛÛÛÜÜÛßß Üß ÛÜ ß ßÛ²²ÛÛÜß ܱ Û°ÜÜ + ÛÛ²ß ÜÜÛÛÛÛÜßÛÜß²² ±Þ±ßÛÛ²²Ý ÜÜÜ ÜÜÛÝ ܱÛÝ Ü±ÜÜÜ°ßßßßßÛ²± Ûßß± + Û²° Ü°ÛÛÛÜß²ÛÝ ß²²°° °Þ°ÛßßÜÜ ÜÛÛßÛÛÛÛß²ÛÛ²ßß²Û²ÛßßßÛÝ ±ÛÛÛ Ü ßßß°ßßÜÜÜÜ °ßßÛ + ²° ÛÛÝÞÛÛÛÛ±ßÛܱ°°Üܲ ÛÜÛ²ÛßÝÞÛ²²Üß²ÛÜ°Û°°ßß°ß°ßßß±Û ±°Û° ÛÝ °Ü ßßßßßÛܲ²Ü + ° ÞÛßÜ Û²ßÛÛ±ÛÛ²²ÜÜÜÛ° ÛÛÛ±ßÛ±ÛÛ°°Ý°ßÞÛܲÝ ßßÜßß ÞÝÞ°Û° Þ°Ü ²ÜÜÜ°ÜÜÜ ßßßÜ ° + ±ÛÛ²ÝÞ±ßÛÜÜ°ÛßÛ²ÜÛ߲ܰÜßÛÛÜ ßß²ÜÜÜ°Û߱߱Ü Ü² ÛÝ° ܲ² ßßßß²²ÜÝÞ° Üܲ² + °Û±±ß ÜÛÛÜÛÝ ÛÛßßß ÜܱÛÜßÛßÛÜ ° ßß²Ü°Û°Ý ±ÜÛÛßÞ²Û ßÜß ±²²ÜÜÜßß ±Ý ÛÛ°Û + ßßܲÝÞÛÛßßß ÜÜÛßÛßßßÜÜ ßßÛßÜ ßÛÜÜÜ °ß ±±Ý ÜÜß± ÞÞÛßßßÛÜÝÞÝ ÛÛ²Ü + ß±°ß ÜÜÜÜÛÛÛÛßß ²ßܲÜÜ ßß ° Þ°Û Þ°°± ° Ûß²²²²²² ÜÝ ÛÝßÛ + ß ÜÜÜܲßÛßß ° Þ²°ßÜÜÜÜ ÞÛ ßܲß ± Þ°°°°°°°ÝÞÝÝ °ÞÛÜÛ + ÜÛܲß²ßß ÜÜÜÜ ±ÝÞ±ßßÜÛÜÛÛßܲ²ÜßÛÜÜ Ü ÛÝÜ±Ü Þ° ÞÛßÛ²ÜÜÛ ÛÝÝ ± ß²² + ßß°Ý° ÜÜÛÝÞÛÛßÜÛÜ ° ÛÝÞ±ÜÛÛÝÞÛ±ßß ß±ÝÞÜ ²ßÛÜßßÜÜ±Ý Ü ßßßÛÛ ²ÛÝÝÞ² + ß °ÜßÛÛÛ² ÛßÛ²ÛÜÛÜÜ ß ßÛÛÛ ßß°ÝÜ° Þ° ÛÛ° ÞÛÝ Û±± Þß²²²ÜÜÜÝÞ²ÛÝÛÜßÛÜÜ + ° ÜÜÛÛ° ÛÞ²ÛÛ°ÝÞÛÛ°ßßßÜÜÜÜÜÜ ÜÛ²ܱܱÜß ÞßÜ ß° ß°ßÜÜß°°ÛÛÛÝÞ±ÛÝÛ°ÛÜ±ß + °°ÜÛÛÛÛܲ²ÝÞÛ±ÛÛßß°ÛÜÜÛß±ÜÜ ßÜßÜ ±Ý°ßÜÜß Ûß² ²² °ßß Ü°ÛÛÝÛ Û°ÛÛÛ²ÜÛ°Û + °²²°ÛÛÜÛßß±ß ßÜÜܱÜÛ±±±°ÛÞ°²ÛÛÛÝÞÝ ÞÝ Üß ÛÝÞÛ ÞÛÛ ²²ÜÛÛÛÛÛÝÞÛÛÛÛÝÛß²ÜÛ + ²ÛßÛ ÛÛßßܲÛÝÞÛ²Û°ÜÛܲ±±°ß°°ßßßß²² ²Ûß °° Þ±²²Ý ÛÛÝ ÛÛÛÜÜßÛÛ°Û²ßÛÛÛÜÛÛ±± + ÛÝÛß° ÜÛÜÛÛÛÛ°ß°ÞÝß߲ܲ°ßßÜÜÜÜÜßÛܲ Þß ±± °ÜÛ Û±°² ÞÛÛ ßßÛÛÛßÜßß°°ßÛÛÛÛÜÛ° + ßÜÛÛÛÝÞßÞÛÛÛßß°ÛßßßÜÜÜÛ°Û ÜÛÛÛÛ²Üß±Ý °° ± ß ÛÛÝÞÝ ÛÛÛÜ Üßß ÜܲÛÜÛÛÝÛ + ÛÝÛÛÛ°±ÜÛÛßßßÜÜ ÛÞÝÛÜÛ±Ü Û߲߲۰ßÛ°Ý ° ²²ÛÜ ² ² ² Û°Üßß °°ÜÛÜÛß° ÛÛÛÛÛ + ÞÛÛÛܱßßÜÜÛÜÛ²ÜÝÞÛÛÛÜ°ßß² Û°Û±ßßÛÛß Ü± ÞÛÛÜßÝ° ÞÝ ° ÞÛ±±ÛÜÜܲÛÜÛ²ßÜÜÛÛÛÛÜÛ + ÛÝßßÜܲÛܲßß±ÛÛ ÛÞÛܲÛÛ°Û ÛÜÜÛÛßÜÜܱÝ ÛÛ²ÛÛÛ Ü ± ÛÞ²²ÜÜÛÛÛßß±²²ß ßßÛ + ÞßÜ°ÛÛÛ±Ûßß²°ÜÜÝÞ²ÛßßÜÜÛÛÛ ßßßßÛܲÜ° ° ÛÜ°ß²ÛÜ°Ý ° ²Ý ÛÛ±ÜÜÛÜ ßÛ°Û ±± ² + ßÛ²ÜÛÛÛ°ÛÜÜßßÛß°±Ü²±°ßßßÜÜÜ°Ü °ß°°Ý ܱ ÞÛÛÜÛ±Þ²ÜÜ ²Û Þ ßßÛÜÜÛÜ°Û°Ý °° ° + ßÛÛÜ°ÝÞÛßßÜÜÛÛ²ÛßÜÛßßÜ°Üß±ÛÛ²Ü ßÜÛß ÜÛ ßß°ÜÝÞßßß² Þ°Û ßÛÛßß ßÜܲ²ÜÜÜÜÜ + ° ßß²ß ÜÜÛÛÛÛÞÛ ÞÝ Ü ßß±ÜÜÜßßÜ ܲß ßßßß ÜÜÜ°² Û±ÛÜÜ ßßßÛßßßßßßßÛÛ² + ² ±Ü °° ßÛÜÜÜÛÛÜ ÛÜ°°ß Þ°ß Ü ±Ý °°° Ü ß Þ ß²ÜÝÞÞ²ÜÜ°ÛÛÜÜÜÜÜÜ°ÜÜÜ + Û² ÛÛÜܱ± °ßßßß± ßßÜÜÜÛß²Ü Ûß ßÜ ±ÜÜÜ ßßÛ² ÛßÛÛÛÛÛÜÜÜÜÜܲ²²ÜÜÜÜÛ + ÛÛ²Ý Ûßܲ²²²ÜÜÜ ° ܱܰްßß Ü ° ÛÝÜ ßÛÜ°Ü ßÜ ° ÛÛßÛÛ²ÛÛßßÜÜÛÛÛÛÛÛÛÛ + ÛÛÛß Ûß±±°±±°Ûßß ÜÜ Ü²ÛÝÞÛ²±±ÛÝ ÜܲÝ ° ÛÜÛÛ ÛÛ²ÜÛ°ÞÛ ² ÛÛÜÛÛ°ßßÛÛÛÛÛÛÛÛÛÛÛ + ÛÛ ÜÛ ÛÛܱ°Û²ÜÜÛÜÜßÝÞ°ßÛ ßݲÞß Þßßßܱ ÞÞÛÜÝ ÞÛßßÛ±Û °ÞÛ ÛÛßÛÛÜ ÛÛßßßßßÛÛÛÛ + ÛÝÞÛÛÝ ÛßÛ² ßßßÜÜÛÛÛ Ûß ° ÜßÜ°ÜÛ² ÞÛßÛ² ÛÜÜÛܲ ² °Û ßÛÛÛßß ÛÛÛÛßßß + Û°ÛÛßÜ ßÛ°ÛÜÛÛÛÛÜÛßß ÜÜß ÜÜ ÜÜܲÜÛÝ ° ÛßßÜÛ ßÛ²ßÜÝÞÝÞ²ÜÜÜ ÜÜÜÜÜÜÛÛÛ + Û²ÛÛÛÛÝ Ü Û±ÜÛÜÛ°ÛÜÛ ßÜÝÞÛßÛÛÜÛß²Ý ² ° ÞÛÞ±Û² ²°Û²ÝÞ± ÛßÛÛÜ ÜÛÛÜÛÛßÛÜÜßÛÜ + ÛÛÛÛÛÛÛ Þ± ÞÛ²ÛÛßßß°ÜÝÞÛ±ÞÛÛ ß²²Û°Ý ÜÛÝ ÞÝ ÛÛ°²±± °²ß°Û Û± ÛÛßÛÝÞÛÛÞÛܱ±ÛÛÛßß + ÛÛÛÛÛÛÛÝ Û± ßÛÜÜÜÛÜÛ²Ü ²ÜÜßÛÝÛ°ÛßÛ ÛÛÛÛ ÛÜ ÛßßßÜÜܱÛÛÝÞÜß± ßÛÛßÛÛÛÛ²Ûß°°Ûßß + ÛÛÛÛÛÛÛÝ ß± Üß°ÛßßÛßÛÝÞÛßÛßÛßÛÜܲ ÛÛÛÛÝÝ ÞÛÛÜ°ÛÜÜܱÛÜÜß ßß²ÜÜ ßßÛÛÛ°ßßß Ü + ÛÛÛÛÛÛÛÛ °° ÞÛ±°°ÜÛ ÞÛ ÛßßÜÜÛÜÛ² ² ÞÛ²²Û ÛÜÛܲ±ßÛ°ÛÛÝÝ Ü ßßßßÜÜ ÜÜÜÜܱ + ÛÛÛÛÛÛÛÛ °° Û²±±ßßßÜÜ° ÛÛÛÜÛ±±ÜÛÛÝÛß°°ßÛ ÞÞÛÛÛ²ÛÛÛÛ²Û ÛßÛÜÜÜÜÜÜÜÜÜÜÛ ÛÜÛÛßßÛß + ÛÛÛÛÛÛÛÛ Ü ÛÜÜÛÛÛÞ°²Û ÛÛÛßß°ÛÛßÛßßÜܲ°² ÛÛÛÛÛÛÛÛ²° ÛÛÜÜßßÛÛÛÛßßÛÛÝÞßß°ßß Ü + ÛÛÛÛÛÛÛÝ ° ÛܱÛÛÛÛÛÛÛÛÜ ÛÛÛÛßßßÜÜܲ²Û°±°² ÛÛÛÛÛÛßÛ ÛÛ²²ÝÜ ßßÛÛÛÛßß ß ÜÜÜÛÛ + ÛÛÛÛÛÛ²Ý ±Ü ßÛ²ÜÛÛÛÛßÛßß ÜÛÛÜ ßß°ÛÝ Þ²ÜÜÜÛÛßßÛßÜÛßßßßßß °ÜÜÜÛÛßßÛÛ + ÛÛÛßß ° ßÛÜ ßÛÛÜÛÜÜÜÜÜÜ ±ÜÜßßßßßß °°°ßßßßß ÜÜÜÜÛÜÜÛ²²ÜÜÜÜÜßÜÛÛÛßßßßß + ²ß ÜÛÛÜÛßßßÛÜÜ ßßÛßßÛÛ²² ÛÜßß²ÛÛÜ °° ܲÛÛÛßßÛÛßßßß²ÛÛßß Ü ÜÜ ÜÜÜ + °ÛßßÛßÜÜÜÜ ßÜÛÜÛÛÜÜ ßßßÛÛß±±² Þ²°°ßÞÛÝ ÞÛÛßÛܱß °ÜÜÜ ° ÜÜÜ ÞÜÛÝ ÜÜßßßÜÛÛ + ܱÛÜßÜ ßÛß²Ý ßßÜÜÛÜßÝÜÛÛÜ ßÛßßß± ßßßÛ±²² ÛÛÛÛßß ß²ÛÛÛÝ ÜßßßßÜÜ°ÛÜÜÜÜÜÜß Üß ÞÛÛ + Û²ÛÛÝÞÜܱ߲ ßÜ ßÛÝÛ °ßß ÜÛÜ ÜÛÛÜ ß±± ÜÜ ßß ÜÛÛÜÛÛß ÞÜÛÜßÜ ß²ßßßÛÛß ÜÛÝ ²ÜÛ + ÛßßßÜÛßÛÜÜ° Þ° ÞÛÝ ÜÛÛÜ ßÛ²ßÞÛÜÛÜÝ ° ßßÛß ÜÛÜßßßßÜÛÜ ßÛÜÝ ÛÜ ßÜÜ ÜßßÛÛÜ ßÛ + ÜÜÜÛÛÜÛÜßÛÜÜÜܲÝ ÛÜÛÛßßÜÛÜÛÛ°ÛÛÛßßß ÜÜÜÜÜÜÜÛÜß Üß Ü ßÜÛܱ²Û ÞÛ° Þ²ÛÜßÜÛßÛÛÛÜ + ÞÛß ßÛÛÜßÜ ßßßß ÞÛß ° ÛÜÜÜÛßßÜÜ ÜÜÜßß Ü ²Üß ÜÛÝ ÞÜÜ ßÛÛ°ß Û²Û Û²ÛÝ Ûß ßÛÝ + ßÜ ÞÛÛÛÜÛÝ ß ܱ ßßßÛÜßÜ ßÛÛÝ ÜÛß ÞÛ ÜÛßÜÜÜÜÛÜßÜÜÜÜ ÜÛÛÛ ÛÛß ÜÝ Üß + ÛÜ ÛÛßßßÜÜßÛÜÜÜÛß ÜÜ°ßÜ ß ÞÛÜ ² ÞÛÝ ß ÞßÜß ßÛßÜßÜÜÛßßßßÛß ß Ü ± + ß²ÛÜ °Û Ü ßßܲÛß  ÛÛ²ßÜßÜÜßÜÛ ß ßÛÜ ß Üß ÛÝÛ ßßßßß ÜÜßÜ ÜÛÛ ÜÛ + ßßÛÝ ²Û ÞÛ ±ÞÛ±Ý ÞÞÛÛ ßßßßß ÜÜßßÜÜßÜ ßÜÜÜܱ߲ °ÛÛ ܲß ÜÜßÜß ÜÛÛ²ß ÞÛß + ÛÞÝ°°²ÛÜÜß °ÞÛÛ° Û²Û Ü±ßÜ Ü±ßß Þ ÝßÜÛ ÞÞ± ßß° ±Û° ± ÜÛßÜßÜ ÞÛÛß°ÜÛß ÜÝÛ + ÛÞÛ °ÛÛÛÜ ßßÛ ÛÛ Û°Û ßß ÞÜÛÝ Ü ÜÛ ÞÝÝ ÞÞ°ßßß²°²Û± ÞÛÝÞÝß ÛÛÝ ÞÛÝ ÞÛÜ + ÛÞÛ ÛßßÜÜßß°ÛÛ ÛÛ ÛÞ²ÝßÜÛÛßÛÜßÜÜÜß²ÛÝÞÝÝ Þ ß °Û± ±Û² ßÛÜßÜÜÜÜÛ°ÛÜ ßÛÜ ßÛ + ÞÛÛß ÜÜÛ Üß ±ÛÛ ÛÜÜß°Ý Û°Ý ßßß Þ°ÛÝ ÛÜßÜÛß ²Û°°°ÛÛ ßßßßß ±ÛÛÜÜÜ ßßß Ü + ÜÜß Üß Ûßß Ü°°²ÛÛ ± ßÜÜÛÛ Û±Ý ±Ü ÜÜ Ü ßßß ÞÛÜÜÜßÛÛÝ ßÜÜ °°²ÛÛÛÛ ßÜ Þ² + Ü ÛÝ ²Ý ÞÛ °ÛÛ ß Ü ß²² Û²ÛÜ ß ÜÜÛßß ßÜ Üßß Ûß±Ý ßÜ ßÛÛÜ ±ÛÞÛ² ÞÛ ± +  ßÛÜ °ßÜ ß ÜÛÛÛßÜÛÝ °°ß Ü ÜÜÛßß ÛÜ ÜÜÜ  ÜÛ° ÞßÜ ßß °ÝßÛ° ÜÛÛÛÜ + ß ßÛÜÜ ßßßÜÜÜÜÛÛß ÞÝÞÞÛÝÝ Ü²ßÜ ÞÛ² ßß ÞÛÛ°Ûß ²ÛßÜÜÜÜÛßßßÜÜÛßÜÜß + °ßß ßßß Û²ß Ü ßÜ ÞßÜß²Û±Ü ß±± Þ²°Ý ßÜÜÜÛÛ°ß Ü°ßßÜÛÛßÛ ÜÜÜÜßß Ü + ÛÜÜ ßß Ü ±ß ß² ÞÛÜ ßÛß°ß° ßÜ Üß°ß ßßß ²ß ßÛÛÛß°ßß ÜÛß + Û²ÛßÜÜ ß ° ° ÞÛ²ÛÜ ßÛÜ ßßßÞÛßß ° ° ÛÛ±ß ÜÜÛß²ß + ±ßßÛßÛÜ° Þ Ý ÛÜ ÞÝ°ßÛÝ ÞÛÝ ÛÝ ÜÜÛÛÜÜÜÜܲ ÜÜ ÞÛÝ ÜÛßß Ûß° + ° ßÛÛÝ Þ  ÞÛß²ÜÜßÛßÛÛÝ ÜÛß ² Þ±ßßßßßÛßÜÛÜÛßßÛÛ ÛÝ ÞÛ Ûß + Ûß Üß ÜÛßßßßßß ²ß ß ° ²ß ßÛßÛßß ßßÝ ßÜ ßÜÝ + ²ß ° ° ßÜ ßÜ + ° + I N I Q U i T Y 3 . O o + + Enhanced: + ø JAM Support + ø internal sockets with fully integrated telnet server + ø redesigned string editor + ø new full screen message lister / reader + ø 24BIT ANSi with compatible client! + ø new wfc scheme/layout + ø fixed bugs + ø standalone 24bit telnet client: iqTerm + + Coming soon. (i hope) + + ÛßÛßßßßßÛÝÞ²ÜÛÛÛÛÛÜ + ² ÜÜ°±ÜÜÜÜÜÜÜÜÜ ÛÛÝ + ±Ü ß °Ý °Ü²ßß ÜÜÜ°Û + ° ݱ Þ±ÜßÛß Üßßß Ü± + ° Ý° ÜÞÝß°Ü°ßß °²Û² + Ûß Üßß °Üß²ß ßßß + Üß ÜÜ ß²±±ÛßßßßßÝß ß þ + ÜÜÜÜÜ°ÞÛß ÜÜÜÜÜÜÜÜÜ + zeroVision 2oo6 + You're one ugly motherfucker. diff --git a/packages/templates/src/eternity/iniquity.ts b/packages/templates/src/eternity/iniquity.ts index 2654b48..b051af7 100644 --- a/packages/templates/src/eternity/iniquity.ts +++ b/packages/templates/src/eternity/iniquity.ts @@ -3,7 +3,7 @@ * @file iniquity.ts */ -import { IQ, IQReactor, IQModuleACLS } from "./.iniquity/node_modules/@iniquitybbs/core/src" +import { IQ, IQReactor, IQModuleACLS, IQMenuLoopMessageResponse } from "./.iniquity/node_modules/@iniquitybbs/core/src" // import { setInterval, Promise } from "./.iniquity/node_modules/@iniquitybbs/core/src/pollyfills" import config from "./iniquity.json" @@ -24,6 +24,11 @@ export class Eternity extends IQ { * */ public start() { + if (this.terminfo.x < 132 || this.terminfo.y < 37) { + this.say("Your terminal is too small to call this bbs. Please set your terminal scale to 132x37. It's way cooler.").wait(3000) + this.disconnect() + } + this.data.observe("alert", () => { this.artwork().render({ filename: "as-ini.cp437.ans", mode: "reactive", clearScreenBefore: true }) @@ -63,9 +68,50 @@ export class Eternity extends IQ { * Welcome screen */ public welcome() { - this.data.model.alert = () => { - "Sometasdasdasda".color("background bright green").center() - } + "You just connected to an iniquity bbs. The artwork you are seeing above is called. It's still pretty new. Likely has bugs. Real talk, it's not even finished. But maybe you'll still think it's cool." + .newlines(2) + .color("background red") + + const menu = this.menu({ + name: "Iniquity answer menu.", + description: "Really I just get to rattle off more non-sense.", + commands: { + L: (description = "Sit cillum consequat qui quis dolore Lorem.") => { + this.say("Hey, don't touch that!").wait(3000) + }, + O: () => { + this.say("Nothing to see here, move along...").wait(3000) + }, + H: () => { + if (this.ask("Are you sure you want to hangup?")) this.disconnect() + }, + default: () => { + this.say("That command key doesn't do anything, try again.".gotoxy(1, 1)).wait(3000) + } + } + }) + + menu.render( + // eslint-disable-next-line @typescript-eslint/ban-types + (res: IQMenuLoopMessageResponse, cmdkey: Function) => { + this.artwork().render({ + clearScreenBefore: true, + filename: "we-iniq3.ans" + }) + + "Random optoin name 1".center() + "Random option asda as da sda ".center() + "asdasdasdasds 3".center() + "ggggwfwefwefwef wf wfewef wef wefw 1".center() + "Option 1".center() + + menu.prompt({ x: 20, y: 30, text: "Feed me: " }).command(cmdkey, () => { + this.say("You just pressed: " + JSON.stringify(res)).wait(3000) + }) + } + ) + + this.artwork().render({ filename: "zv_iniq-132.ans", clearScreenBefore: true, mode: "line", speed: 50 }).pause({ newlines: 2 }) this.artwork().render({ filename: "we-iniq3.ans", clearScreenBefore: true }) @@ -79,25 +125,21 @@ export class Eternity extends IQ { Login user screen */ public login() { - this.data.model.message = - "welcome to eternity bbs ... please read the following if you are calling long distance you will be automatically validated now otherwise..." + const handle = this.ask("Enter your handle".gotoxy(20, 18).color("reset")) || "" + const password = this.ask("Enter your password".gotoxy(20, 18).color("reset")) || "" - this.data.model.message = "please read the following if you are calling long distance you will be automatically validated now otherwise..." + if (!this.user({ name: handle, password: password }).login()) { + this.data.model.message = "invalid login" + this.data.model.message = "logging off..." - this.ask("Enter your handle".gotoxy(30, 15).color("reset"), (handle: string) => { - if (handle !== "") { - this.data.model.user = { handle: handle, password: "", access: IQModuleACLS.low } + // TODO add new user registration + this.disconnect() + } - this.data.model.message = `welcome ${handle}!` - this.wait(2000) - this.data.model.message = "you are now validated and ready to go!" - this.wait(2000) - this.data.model.message = "loading main menu..." - this.wait(2000) + this.data.model.message = "you are now validated and ready to go!" + this.data.model.message = "loading main menu..." - this.main() - } - }) + this.main() } public main() { @@ -113,8 +155,7 @@ export class Eternity extends IQ { public logoff() { this.artwork().render({ filename: "4d-iniq1.ans", clearScreenBefore: true }) - this.say(`Goodbye ${this.data.model.user.handle}, and thanks for calling!`.gotoxy(20, 20).color("reset")) - this.gotoxy(1, 1) + this.say(`Goodbye, ${this.data.model.user.handle}, and thanks for calling!`.gotoxy(20, 20).color("reset")).gotoxy(1, 1) } }