story-teller 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +623 -0
- data/README.md +188 -0
- data/Rakefile +58 -0
- data/config/database.yml +37 -0
- data/exe/inform.rb +6 -0
- data/game/config.yml +5 -0
- data/game/example.inf +90 -0
- data/game/example.rb +105 -0
- data/game/forms/example_form.rb +2 -0
- data/game/grammar/admin.inf.rb +185 -0
- data/game/grammar/builder.inf.rb +310 -0
- data/game/grammar/game_grammar.inf.rb +6 -0
- data/game/grammar/meta.inf.rb +41 -0
- data/game/languages/english.rb +571 -0
- data/game/models/example_model.rb +2 -0
- data/game/modules/example_module.rb +9 -0
- data/game/modules/parser_extensions.rb +264 -0
- data/game/rules/example_state.rb +2 -0
- data/game/scripts/example_script.rb +2 -0
- data/game/topics/example_topic.rb +2 -0
- data/game/verbs/game_verbs.rb +35 -0
- data/game/verbs/metaverbs.rb +2066 -0
- data/lib/story_teller/application.rb +82 -0
- data/lib/story_teller/cli.rb +35 -0
- data/lib/story_teller/color.rb +144 -0
- data/lib/story_teller/config.rb +61 -0
- data/lib/story_teller/curses_adapter.rb +30 -0
- data/lib/story_teller/database.rb +527 -0
- data/lib/story_teller/game/loader.rb +276 -0
- data/lib/story_teller/game.rb +22 -0
- data/lib/story_teller/inform/models.rb +42 -0
- data/lib/story_teller/inform/relational/link.rb +239 -0
- data/lib/story_teller/inform/relational/module.rb +203 -0
- data/lib/story_teller/inform/relational/object.rb +546 -0
- data/lib/story_teller/inform/relational/tag.rb +152 -0
- data/lib/story_teller/options.rb +151 -0
- data/lib/story_teller/persistence.rb +340 -0
- data/lib/story_teller/player_character.rb +99 -0
- data/lib/story_teller/privileges.rb +55 -0
- data/lib/story_teller/runtime.rb +381 -0
- data/lib/story_teller/snapshots.rb +412 -0
- data/lib/story_teller/terminal.rb +58 -0
- data/lib/story_teller/version.rb +24 -0
- data/lib/story_teller_cli.rb +34 -0
- metadata +158 -0
data/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Story Teller
|
|
2
|
+
|
|
3
|
+
[](license-gpl)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
**The Story Teller** for Ruby is a command-line interface software
|
|
8
|
+
runtime program for playing interactive-fiction games which use the
|
|
9
|
+
[Inform 6 Ruby Port].
|
|
10
|
+
|
|
11
|
+
The Story Teller is intended to be used to play a game specified by a
|
|
12
|
+
path to a directory or file. The game file or directory specifies the
|
|
13
|
+
source code for a game file written using the Inform 6 Ruby Port.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Install mise-en-place
|
|
17
|
+
|
|
18
|
+
The [mise] CLI tool used to manage multiple runtime versions.
|
|
19
|
+
|
|
20
|
+
See: https://mise.jdx.dev/getting-started.html
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
curl https://mise.run/zsh | sh
|
|
24
|
+
mise --version
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## Install required runtime software
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
mise install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Now install the `bundler` for managing project dependencies.
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
gem install bundler
|
|
38
|
+
gem update --system
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
Install the latest version of [PostgreSQL].
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
mise use postgres@latest
|
|
46
|
+
mise install
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## Setup
|
|
51
|
+
|
|
52
|
+
Install some gem dependencies.
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
bundle update --bundler
|
|
56
|
+
bundle install
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
## Run
|
|
61
|
+
|
|
62
|
+
Execute the `inform.rb` program. It will play the included example game.
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
bundle exec inform.rb
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Welcome to...
|
|
70
|
+
|
|
71
|
+
EXAMPLE
|
|
72
|
+
An Interactive Example
|
|
73
|
+
Copyright (c) 2025 by Nels N. Nelson.
|
|
74
|
+
Release 1 / Serial number 251006 / inform.rb v1.0.3 Library 6/11N
|
|
75
|
+
|
|
76
|
+
Field
|
|
77
|
+
You are standing in a field in front of a small 19th century house which stands just to the east of you. The house hardly stands up to the stiff wind rolling down from the north.
|
|
78
|
+
You can see a small toy top here.
|
|
79
|
+
|
|
80
|
+
>quit
|
|
81
|
+
Are you sure you want to quit? yes
|
|
82
|
+
[Hit enter to exit.]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## Linting
|
|
87
|
+
|
|
88
|
+
```sh
|
|
89
|
+
bundle exec rake lint
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Testing
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
bundle exec rake test
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
## Project file tree
|
|
101
|
+
|
|
102
|
+
Here is a bird's-eye view of the project layout.
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
# date && tree -A -I "game|logs|vendor|tmp|Gemfile.lock"
|
|
106
|
+
Sat Dec 13 22:05:24 CST 2025
|
|
107
|
+
.
|
|
108
|
+
├── config
|
|
109
|
+
│ └── database.yml
|
|
110
|
+
├── CONTRIBUTING.md
|
|
111
|
+
├── exe
|
|
112
|
+
│ └── inform.rb
|
|
113
|
+
├── Gemfile
|
|
114
|
+
├── inform-runtime.gemspec
|
|
115
|
+
├── lib
|
|
116
|
+
│ ├── runtime
|
|
117
|
+
│ │ ├── articles.rb
|
|
118
|
+
│ │ ├── builtins.rb
|
|
119
|
+
│ │ ├── color.rb
|
|
120
|
+
│ │ ├── command.rb
|
|
121
|
+
│ │ ├── config.rb
|
|
122
|
+
│ │ ├── context.rb
|
|
123
|
+
│ │ ├── daemon.rb
|
|
124
|
+
│ │ ├── database.rb
|
|
125
|
+
│ │ ├── events.rb
|
|
126
|
+
│ │ ├── experimental
|
|
127
|
+
│ │ │ └── handler_dsl.rb
|
|
128
|
+
│ │ ├── game_loader.rb
|
|
129
|
+
│ │ ├── game.rb
|
|
130
|
+
│ │ ├── grammar_parser.rb
|
|
131
|
+
│ │ ├── helpers.rb
|
|
132
|
+
│ │ ├── history.rb
|
|
133
|
+
│ │ ├── inflector.rb
|
|
134
|
+
│ │ ├── io.rb
|
|
135
|
+
│ │ ├── kernel.rb
|
|
136
|
+
│ │ ├── library_loader.rb
|
|
137
|
+
│ │ ├── library.rb
|
|
138
|
+
│ │ ├── link.rb
|
|
139
|
+
│ │ ├── logging.rb
|
|
140
|
+
│ │ ├── mixins.rb
|
|
141
|
+
│ │ ├── module.rb
|
|
142
|
+
│ │ ├── object.rb
|
|
143
|
+
│ │ ├── options.rb
|
|
144
|
+
│ │ ├── persistence.rb
|
|
145
|
+
│ │ ├── plurals.rb
|
|
146
|
+
│ │ ├── prototype.rb
|
|
147
|
+
│ │ ├── publication.rb
|
|
148
|
+
│ │ ├── runtime.rb
|
|
149
|
+
│ │ ├── session.rb
|
|
150
|
+
│ │ ├── snapshots.rb
|
|
151
|
+
│ │ ├── stdlib.rb
|
|
152
|
+
│ │ ├── subscription.rb
|
|
153
|
+
│ │ ├── tag.rb
|
|
154
|
+
│ │ ├── tree.rb
|
|
155
|
+
│ │ ├── version.rb
|
|
156
|
+
│ │ └── world_tree.rb
|
|
157
|
+
│ └── runtime.rb
|
|
158
|
+
├── LICENSE
|
|
159
|
+
├── Rakefile
|
|
160
|
+
├── README.md
|
|
161
|
+
├── roller2.jpg
|
|
162
|
+
├── scripts
|
|
163
|
+
│ ├── backup.rb
|
|
164
|
+
│ ├── clone.rb
|
|
165
|
+
│ ├── delete.rb
|
|
166
|
+
│ ├── init.rb
|
|
167
|
+
│ ├── rebuild.rb
|
|
168
|
+
│ └── restore.rb
|
|
169
|
+
└── spec
|
|
170
|
+
├── game_spec.rb
|
|
171
|
+
├── inform_spec.rb
|
|
172
|
+
├── inform_system_spec.rb
|
|
173
|
+
├── object_spec.rb
|
|
174
|
+
├── parser_spec.rb
|
|
175
|
+
├── spec_helper.rb
|
|
176
|
+
├── verblib_spec.rb
|
|
177
|
+
└── verify_gem_spec.rb
|
|
178
|
+
|
|
179
|
+
7 directories, 63 files
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Thanks!
|
|
183
|
+
|
|
184
|
+
[Inform 6 Ruby Port]: https://gitlab.com/nelsnelson/inform6lib-ruby
|
|
185
|
+
[license-gpl]: https://gitlab.com/nelsnelson/inform6/blob/master/LICENSE
|
|
186
|
+
[mise]: https://mise.jdx.dev/
|
|
187
|
+
[PostgreSQL]: https://postgresql.org/download
|
|
188
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# frozen_string_literal: false
|
|
3
|
+
|
|
4
|
+
# -*- mode: ruby -*-
|
|
5
|
+
# vi: set ft=ruby :
|
|
6
|
+
|
|
7
|
+
require 'fileutils'
|
|
8
|
+
require 'rake'
|
|
9
|
+
require 'rake/clean'
|
|
10
|
+
require 'shellwords'
|
|
11
|
+
|
|
12
|
+
unless defined?(StoryTeller::PROJECT)
|
|
13
|
+
# Ensure StoryTeller module constants
|
|
14
|
+
module StoryTeller
|
|
15
|
+
PROJECT = File.basename(File.expand_path(__dir__))
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
load "#{StoryTeller::PROJECT}.gemspec"
|
|
20
|
+
|
|
21
|
+
CLEAN.add File.join('tmp', '**', '*'), 'tmp'
|
|
22
|
+
CLOBBER.add '*.gem', 'pkg'
|
|
23
|
+
|
|
24
|
+
task default: %i[package]
|
|
25
|
+
|
|
26
|
+
desc 'Run the rubocop linter'
|
|
27
|
+
task :lint do
|
|
28
|
+
system('bundle', 'exec', 'rubocop') or abort
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
desc 'Run the spec tests'
|
|
32
|
+
task :test do
|
|
33
|
+
system('bundle', 'exec', 'rspec', '--format=documentation') or abort
|
|
34
|
+
end
|
|
35
|
+
task test: :lint
|
|
36
|
+
|
|
37
|
+
desc 'Package the gem'
|
|
38
|
+
task :package do
|
|
39
|
+
system('gem', 'build') or abort
|
|
40
|
+
end
|
|
41
|
+
task package: %i[clean clobber test]
|
|
42
|
+
|
|
43
|
+
desc 'Verify the gem'
|
|
44
|
+
task :verify do
|
|
45
|
+
system('bundle', 'exec', 'rspec', 'spec/verify_gem_spec.rb') or abort
|
|
46
|
+
system('bundle', 'exec', 'rake', 'clean')
|
|
47
|
+
end
|
|
48
|
+
task verify: :package
|
|
49
|
+
|
|
50
|
+
desc 'Publish the gem'
|
|
51
|
+
task :publish do
|
|
52
|
+
system('gem', 'push', latest_gem) or abort
|
|
53
|
+
end
|
|
54
|
+
task publish: :verify
|
|
55
|
+
|
|
56
|
+
def latest_gem
|
|
57
|
+
Dir["#{StoryTeller::PROJECT}*.gem"].max_by { |p| File.mtime(p) }
|
|
58
|
+
end
|
data/config/database.yml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
default:
|
|
3
|
+
adapter: postgres
|
|
4
|
+
database: postgres
|
|
5
|
+
username: postgres
|
|
6
|
+
host: localhost
|
|
7
|
+
pool: 5
|
|
8
|
+
|
|
9
|
+
development:
|
|
10
|
+
adapter: postgres
|
|
11
|
+
database: example
|
|
12
|
+
username: example
|
|
13
|
+
password: example
|
|
14
|
+
host: localhost
|
|
15
|
+
pool: 5
|
|
16
|
+
timeout: 5000
|
|
17
|
+
|
|
18
|
+
test:
|
|
19
|
+
adapter: sqlite
|
|
20
|
+
|
|
21
|
+
docker:
|
|
22
|
+
adapter: postgres
|
|
23
|
+
database: example
|
|
24
|
+
username: example
|
|
25
|
+
password: example
|
|
26
|
+
host: postgres
|
|
27
|
+
pool: 5
|
|
28
|
+
timeout: 5000
|
|
29
|
+
|
|
30
|
+
production:
|
|
31
|
+
adapter: postgres
|
|
32
|
+
database: example
|
|
33
|
+
username: example
|
|
34
|
+
password: example
|
|
35
|
+
host: localhost
|
|
36
|
+
pool: 5
|
|
37
|
+
timeout: 5000
|
data/exe/inform.rb
ADDED
data/game/config.yml
ADDED
data/game/example.inf
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
|
|
2
|
+
! ----------------------------------------------------------------------------
|
|
3
|
+
! Example
|
|
4
|
+
! ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
! DEBUG = true
|
|
7
|
+
Constant Story = "EXAMPLE";
|
|
8
|
+
Constant Headline = "^An Interactive Example^
|
|
9
|
+
Copyright (c) 2025 by Nels N. Nelson.^";
|
|
10
|
+
|
|
11
|
+
Replace DrawStatusLine;
|
|
12
|
+
|
|
13
|
+
Include "Parser";
|
|
14
|
+
Include "VerbLib";
|
|
15
|
+
|
|
16
|
+
Attribute male;
|
|
17
|
+
|
|
18
|
+
Object Field "Field"
|
|
19
|
+
with description
|
|
20
|
+
"You are standing in a field. A small 19th century house stands
|
|
21
|
+
to the east, hardly standing up to the stiff wind rolling down
|
|
22
|
+
from the north.",
|
|
23
|
+
e_to HouseFoyer,
|
|
24
|
+
w_to Shingle
|
|
25
|
+
has light;
|
|
26
|
+
|
|
27
|
+
Object -> "man wearing an old ragged military uniform"
|
|
28
|
+
with name 'uniformed' 'man'
|
|
29
|
+
description
|
|
30
|
+
"The man who stands before you is middle-aged, but somehow
|
|
31
|
+
older. His uniform is old, ragged, dingy and faded. It is not
|
|
32
|
+
clear which military he served in, but he almost certainly
|
|
33
|
+
does not belong to any regiment any longer.",
|
|
34
|
+
has animate male;
|
|
35
|
+
|
|
36
|
+
Object HouseFoyer "Foyer"
|
|
37
|
+
with description
|
|
38
|
+
"You stand in the foyer of this
|
|
39
|
+
ancient structure. A draft swirls through
|
|
40
|
+
the hallway to the east.",
|
|
41
|
+
out_to Field,
|
|
42
|
+
w_to Field
|
|
43
|
+
has light;
|
|
44
|
+
|
|
45
|
+
Property weight;
|
|
46
|
+
|
|
47
|
+
Object -> "small toy top"
|
|
48
|
+
with name 'small' 'toy' 'top',
|
|
49
|
+
before [;
|
|
50
|
+
Examine:
|
|
51
|
+
print "A totem, somehow familiar, made of brass";
|
|
52
|
+
if (self in player) {
|
|
53
|
+
print " and heavy in your hand";
|
|
54
|
+
}
|
|
55
|
+
".";
|
|
56
|
+
],
|
|
57
|
+
weight 15; ! grams
|
|
58
|
+
|
|
59
|
+
Object Shingle "Shingle"
|
|
60
|
+
with description
|
|
61
|
+
"You seem to be only a small child
|
|
62
|
+
playing on a sea-shore, and diverting yourself
|
|
63
|
+
in finding a smoother pebble or a prettier shell
|
|
64
|
+
than ordinary, whilst the great ocean of
|
|
65
|
+
truth lies all undiscovered before you.",
|
|
66
|
+
e_to Field
|
|
67
|
+
has light;
|
|
68
|
+
|
|
69
|
+
[ Initialise;
|
|
70
|
+
location = Field;
|
|
71
|
+
"^^^^^Welcome to...^";
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
[ DrawStatusLine;
|
|
75
|
+
@split_window 1; @set_window 1; @set_cursor 1 1; style reverse;
|
|
76
|
+
spaces (0->33)-1;
|
|
77
|
+
@set_cursor 1 2; PrintShortName(location);
|
|
78
|
+
@set_cursor 1 60; print "(as ";
|
|
79
|
+
@print_obj player;
|
|
80
|
+
print ")"; ! There ya are.
|
|
81
|
+
@set_cursor 1 1; style roman; @set_window 0;
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
Include "Grammar";
|
|
85
|
+
|
|
86
|
+
Verb meta 'example'
|
|
87
|
+
* -> Example;
|
|
88
|
+
Verb 'smile'
|
|
89
|
+
* -> Smile;
|
|
90
|
+
|
data/game/example.rb
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
|
|
2
|
+
# ----------------------------------------------------------------------------
|
|
3
|
+
# Example
|
|
4
|
+
# ----------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
# DEBUG = true
|
|
7
|
+
Story = "EXAMPLE"
|
|
8
|
+
Headline = "\nAn Interactive Example\n" \
|
|
9
|
+
"Copyright (c) 2025 by Nels N. Nelson.\n"
|
|
10
|
+
Release = 1
|
|
11
|
+
|
|
12
|
+
def DrawStatusLine; end
|
|
13
|
+
|
|
14
|
+
Include "Parser"
|
|
15
|
+
Include "VerbLib"
|
|
16
|
+
|
|
17
|
+
Field = Object("Field") {
|
|
18
|
+
with {
|
|
19
|
+
description "You are standing in a field in " \
|
|
20
|
+
"front of a small 19th century house which " \
|
|
21
|
+
"stands just to the east of you. The house " \
|
|
22
|
+
"hardly stands up to the stiff wind rolling " \
|
|
23
|
+
"down from the north."
|
|
24
|
+
e_to :HouseFoyer
|
|
25
|
+
w_to :Shingle
|
|
26
|
+
}
|
|
27
|
+
has :light
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Field > Object("man wearing an old ragged military uniform") {
|
|
31
|
+
description "The man who stands before you is " \
|
|
32
|
+
"middle-aged, but somehow older. His uniform " \
|
|
33
|
+
"is old, ragged, dingy and faded. It is not " \
|
|
34
|
+
"clear which military he served in, but he " \
|
|
35
|
+
"almost certainly does not belong to any " \
|
|
36
|
+
"regiment any longer."
|
|
37
|
+
has :animate, :male
|
|
38
|
+
mod 'Huggable'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
HouseFoyer = Object("Foyer") {
|
|
42
|
+
with {
|
|
43
|
+
description "You stand in the foyer of this " \
|
|
44
|
+
"ancient structure. A draft swirls through " \
|
|
45
|
+
"the hallway to the east."
|
|
46
|
+
out_to :Field; w_to :Field
|
|
47
|
+
}
|
|
48
|
+
has :light
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
Property :weight
|
|
52
|
+
|
|
53
|
+
# Note that the "with" directive here is vestigial and
|
|
54
|
+
# can be discarded altogether, but is supported for
|
|
55
|
+
# ease of transition/adoption.
|
|
56
|
+
#
|
|
57
|
+
# Field > Object("small toy top") {
|
|
58
|
+
# with {
|
|
59
|
+
# def before_examine
|
|
60
|
+
# "A totem, somehow familiar, made of brass" +
|
|
61
|
+
# (self.parent == player ? " and heavy in your hand" : '') + "."
|
|
62
|
+
# end
|
|
63
|
+
# weight 15 # grams
|
|
64
|
+
# }
|
|
65
|
+
# }
|
|
66
|
+
HouseFoyer > Object("small toy top") {
|
|
67
|
+
def before_examine
|
|
68
|
+
print "A totem, somehow familiar, made of brass"
|
|
69
|
+
print " and heavy in your hand" if self.parent == player
|
|
70
|
+
"."
|
|
71
|
+
end
|
|
72
|
+
weight 15 # grams
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
Shingle = Object("Shingle") {
|
|
76
|
+
with {
|
|
77
|
+
description "You seem to be only a small child " \
|
|
78
|
+
"playing on a sea-shore, and diverting yourself " \
|
|
79
|
+
"in finding a smoother pebble or a prettier shell " \
|
|
80
|
+
"than ordinary, whilst the great ocean of " \
|
|
81
|
+
"truth lies all undiscovered before you."
|
|
82
|
+
e_to :Field
|
|
83
|
+
}
|
|
84
|
+
has :light
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
class InformLibrary
|
|
88
|
+
def Initialise
|
|
89
|
+
@location = Field
|
|
90
|
+
"\n\n\n\n\nWelcome to...\n"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
Include "Grammar"
|
|
95
|
+
|
|
96
|
+
Inform::Grammar <<~EOT
|
|
97
|
+
Verb meta 'example'
|
|
98
|
+
* -> Example;
|
|
99
|
+
Verb 'smile'
|
|
100
|
+
* -> Smile;
|
|
101
|
+
Extend only 'hug' replace
|
|
102
|
+
* noun -> Hug;
|
|
103
|
+
EOT
|
|
104
|
+
|
|
105
|
+
# log.info "Finished loading example game file: #{__FILE__} #<#{self.class}:#{self.object_id}>"
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# game/grammar/admin.inf.rb
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
# frozen_string_literal: false
|
|
4
|
+
|
|
5
|
+
# vi: set ft=ruby :
|
|
6
|
+
# -*- mode: ruby -*-
|
|
7
|
+
|
|
8
|
+
# Copyright Nels Nelson 2008-2025 but freely usable (see license)
|
|
9
|
+
#
|
|
10
|
+
# This file is part of the StoryTeller.
|
|
11
|
+
#
|
|
12
|
+
# The StoryTeller is free software: you can redistribute it and/or
|
|
13
|
+
# modify it under the terms of the GNU General Public License as published
|
|
14
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
|
15
|
+
# (at your option) any later version.
|
|
16
|
+
#
|
|
17
|
+
# The StoryTeller is distributed in the hope that it will be useful,
|
|
18
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
20
|
+
# GNU General Public License for more details.
|
|
21
|
+
#
|
|
22
|
+
# You should have received a copy of the GNU General Public License
|
|
23
|
+
# along with the StoryTeller. If not, see <http://www.gnu.org/licenses/>.
|
|
24
|
+
|
|
25
|
+
Verb meta 'admin' 'admins'
|
|
26
|
+
* -> Admins;
|
|
27
|
+
Verb meta 'as'
|
|
28
|
+
* id text -> Action
|
|
29
|
+
* noun text -> Action;
|
|
30
|
+
Verb meta 'become'
|
|
31
|
+
* creature -> Become;
|
|
32
|
+
Verb meta 'bell'
|
|
33
|
+
* -> Bell;
|
|
34
|
+
Verb meta 'cache' 'cached'
|
|
35
|
+
* -> Cache;
|
|
36
|
+
Verb meta 'cat' 'concatenate'
|
|
37
|
+
* text -> Concatenate;
|
|
38
|
+
Verb meta 'characters'
|
|
39
|
+
* -> Characters
|
|
40
|
+
* text -> Characters;
|
|
41
|
+
Verb meta 'classes'
|
|
42
|
+
* -> Classes;
|
|
43
|
+
Verb meta 'active' 'activities' 'events'
|
|
44
|
+
* -> Active;
|
|
45
|
+
Verb meta 'objects'
|
|
46
|
+
* -> Objects
|
|
47
|
+
* 'as' special -> Objects;
|
|
48
|
+
Extend meta only 'clear' first
|
|
49
|
+
* -> Clear;
|
|
50
|
+
Verb meta 'color' 'colors'
|
|
51
|
+
* -> Color;
|
|
52
|
+
Verb meta 'convert'
|
|
53
|
+
* topic 'to' special -> Color;
|
|
54
|
+
Verb meta 'combat'
|
|
55
|
+
* -> DebugCombat;
|
|
56
|
+
Verb meta 'cpu'
|
|
57
|
+
* -> Cpu;
|
|
58
|
+
Verb meta 'create'
|
|
59
|
+
* 'account'/'user' text -> CreateUser;
|
|
60
|
+
Verb meta 'debug'
|
|
61
|
+
* -> Debug
|
|
62
|
+
* number -> Debug;
|
|
63
|
+
Verb meta 'export'
|
|
64
|
+
* id -> Export
|
|
65
|
+
* noun -> Export
|
|
66
|
+
* id 'as' special -> Export
|
|
67
|
+
* noun 'as' special -> Export;
|
|
68
|
+
Verb meta 'import'
|
|
69
|
+
* text -> Import;
|
|
70
|
+
Verb meta 'flush'
|
|
71
|
+
* -> Flush;
|
|
72
|
+
Verb meta 'frequency'
|
|
73
|
+
* -> Frequency
|
|
74
|
+
* number -> Frequency;
|
|
75
|
+
Verb meta 'grammars'
|
|
76
|
+
* -> Grammars;
|
|
77
|
+
Verb meta 'git'
|
|
78
|
+
* 'save' -> GitSave
|
|
79
|
+
* 'save' text -> GitSave
|
|
80
|
+
* 'pull' -> GitPull;
|
|
81
|
+
Verb meta 'heal'
|
|
82
|
+
* number creature -> RestoreHealth
|
|
83
|
+
* creature text -> RestoreHealth
|
|
84
|
+
* creature -> RestoreHealth
|
|
85
|
+
* noun=ABodyPart -> RestoreHealth;
|
|
86
|
+
Verb meta 'host'
|
|
87
|
+
* -> Host;
|
|
88
|
+
Verb meta 'htop'
|
|
89
|
+
* -> Htop;
|
|
90
|
+
Verb meta 'id' 'identify'
|
|
91
|
+
* noun -> Identify;
|
|
92
|
+
Verb meta 'identities'
|
|
93
|
+
* -> Identities;
|
|
94
|
+
Verb meta 'interrupt'
|
|
95
|
+
* -> Interrupt
|
|
96
|
+
* noun -> Interrupt;
|
|
97
|
+
Verb meta 'libraries'
|
|
98
|
+
* -> Libraries;
|
|
99
|
+
Verb meta 'library'
|
|
100
|
+
* 'methods' -> LibraryMethods;
|
|
101
|
+
Verb meta 'ls'
|
|
102
|
+
* -> ListStats
|
|
103
|
+
* text -> ListStats;
|
|
104
|
+
Verb meta 'list'
|
|
105
|
+
* 'stats' -> ListStats
|
|
106
|
+
* 'stats' text -> ListStats;
|
|
107
|
+
Verb meta 'locate'
|
|
108
|
+
* scope=PlayerScope -> Locate;
|
|
109
|
+
Verb meta 'logs'
|
|
110
|
+
* -> Logs
|
|
111
|
+
* number -> Logs;
|
|
112
|
+
Verb meta 'memobjs'
|
|
113
|
+
* -> EphemeralObjects;
|
|
114
|
+
Verb meta 'method'
|
|
115
|
+
* special -> Method
|
|
116
|
+
* noun special -> Method;
|
|
117
|
+
Verb meta 'os'
|
|
118
|
+
* -> Os;
|
|
119
|
+
Verb meta 'peace'
|
|
120
|
+
* -> Peace
|
|
121
|
+
* noun -> Peace;
|
|
122
|
+
Verb meta 'pid'
|
|
123
|
+
* -> Pid;
|
|
124
|
+
Extend meta 'random'
|
|
125
|
+
* number -> SpecificallyPredictable;
|
|
126
|
+
Verb meta 'prepositions'
|
|
127
|
+
* -> Prepositions;
|
|
128
|
+
Verb meta 'procs'
|
|
129
|
+
* -> Procs;
|
|
130
|
+
Verb meta 'profile'
|
|
131
|
+
* -> Profile
|
|
132
|
+
* special -> Profile;
|
|
133
|
+
Verb meta 'gc'
|
|
134
|
+
* -> GarbageCollection;
|
|
135
|
+
Verb meta 'reload'
|
|
136
|
+
* -> Reload;
|
|
137
|
+
Verb meta 'reset'
|
|
138
|
+
* id -> Reset
|
|
139
|
+
* noun -> Reset;
|
|
140
|
+
Extend meta 'restart' replace
|
|
141
|
+
* -> Restart
|
|
142
|
+
* 'at' time -> Restart
|
|
143
|
+
* 'in'/'after' duration -> Restart
|
|
144
|
+
* number -> Restart;
|
|
145
|
+
Verb meta 'resurrect'
|
|
146
|
+
* creature -> Resurrect
|
|
147
|
+
* noun=ACorpse -> Resurrect;
|
|
148
|
+
Verb 'res' = 'resurrect';
|
|
149
|
+
Verb meta 'sessions'
|
|
150
|
+
* -> Sessions;
|
|
151
|
+
Verb meta 'shutdown'
|
|
152
|
+
* -> Shutdown
|
|
153
|
+
* 'at' time -> Shutdown
|
|
154
|
+
* 'in'/'after' duration -> Shutdown
|
|
155
|
+
* number -> Shutdown;
|
|
156
|
+
Verb meta 'solve'
|
|
157
|
+
* 'for' special 'where' text -> Solve;
|
|
158
|
+
Verb meta 'spells'
|
|
159
|
+
* -> Spells;
|
|
160
|
+
Verb meta 'state'
|
|
161
|
+
* -> State
|
|
162
|
+
* scope=PlayerScope -> State
|
|
163
|
+
* scope=PlayerScope special -> State
|
|
164
|
+
* noun -> State
|
|
165
|
+
* noun special -> State
|
|
166
|
+
* id -> State
|
|
167
|
+
* id special -> State
|
|
168
|
+
* special -> State;
|
|
169
|
+
Verb meta 'stacktrace'
|
|
170
|
+
* -> StackTrace;
|
|
171
|
+
Verb meta 'system'
|
|
172
|
+
* -> SystemSpecs
|
|
173
|
+
* 'reset' -> ResetRuntime;
|
|
174
|
+
Verb meta 'qwerty'
|
|
175
|
+
* -> Test;
|
|
176
|
+
Verb meta 'test'
|
|
177
|
+
* -> Test
|
|
178
|
+
* special -> Test
|
|
179
|
+
* number special -> Test;
|
|
180
|
+
Verb meta 'thread'
|
|
181
|
+
* -> Thread;
|
|
182
|
+
Verb meta 'threads'
|
|
183
|
+
* -> Threads;
|
|
184
|
+
Verb meta 'vocabulary' 'dictionary' 'words'
|
|
185
|
+
* -> Vocabulary;
|