gamefic-standard 3.1.0 → 3.2.1
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 +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/gamefic-standard/actions/help.rb +2 -2
- data/lib/gamefic-standard/actions/nil.rb +2 -0
- data/lib/gamefic-standard/actions/pronouns.rb +28 -0
- data/lib/gamefic-standard/actions.rb +1 -0
- data/lib/gamefic-standard/entities/portal.rb +4 -1
- data/lib/gamefic-standard/modules.rb +1 -4
- data/lib/gamefic-standard/version.rb +1 -1
- data/lib/gamefic-standard.rb +0 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b0c82ed182ca48a25af31d675e7a661d2956403c56ffbe74a1f88ded22ab667
|
|
4
|
+
data.tar.gz: 7f7a7c1d1ef4eb12d1f41fa8e004e2ca92833ba2b4583bf0bcd9ac6d9df63ae4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fc01bbb87e5631b207b152611eed41449279ee4f25f99e5897855aaf6ffd9e558bdbc056f68c7bd48f96ec8169b891480442f1b2f0e5a8115a4466efba9bdfc8
|
|
7
|
+
data.tar.gz: 3e090e4e91037020f9b3956f5d864be29ab0e97bebd8b813c684ca111f3234d24407c952ac324f801c1bedc79db56655018a9df905da5ab8ff5d46e9c18b0b92
|
data/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Gamefic
|
|
4
4
|
module Standard
|
|
5
5
|
script do
|
|
6
|
-
|
|
6
|
+
meta :verbs do |actor|
|
|
7
7
|
list = rulebook.synonyms.reject { |syn| syn.to_s.start_with?('_') }
|
|
8
8
|
.map { |syn| "<kbd>#{syn}</kbd>"}
|
|
9
9
|
.join_and
|
|
@@ -15,7 +15,7 @@ module Gamefic
|
|
|
15
15
|
interpret 'commands', 'verbs'
|
|
16
16
|
interpret 'help', 'verbs'
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
meta :help, plaintext do |actor, command|
|
|
19
19
|
if rulebook.synonyms.include?(command.to_sym) && !command.start_with?('_')
|
|
20
20
|
available = rulebook.syntaxes.select { |syntax| syntax.synonym == command.to_sym }
|
|
21
21
|
.uniq(&:signature)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Gamefic::Standard.script do
|
|
4
|
+
introduction do |actor|
|
|
5
|
+
actor[:standard_pronoun_targets] = []
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
after_action do |action|
|
|
9
|
+
next unless action.verb
|
|
10
|
+
|
|
11
|
+
action.actor[:standard_pronoun_targets].replace action.arguments.that_are(Thing)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
meta nil, plaintext do |actor, string|
|
|
15
|
+
keywords = string.keywords
|
|
16
|
+
list = actor.epic.synonyms
|
|
17
|
+
next actor.proceed unless list.include?(keywords.first&.to_sym)
|
|
18
|
+
|
|
19
|
+
xlation = keywords[1..].map do |word|
|
|
20
|
+
next word unless %w[him her it them].include?(word)
|
|
21
|
+
|
|
22
|
+
actor[:standard_pronoun_targets].find { |obj| Grammar::Pronoun.objective(obj) == word }
|
|
23
|
+
end
|
|
24
|
+
next actor.proceed if xlation.any?(&:nil?) || xlation.that_are(Thing).empty?
|
|
25
|
+
|
|
26
|
+
actor.perform "#{keywords[0].to_sym} #{xlation.join(' ')}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# An entity that provides access from one room to another.
|
|
4
|
+
#
|
|
3
5
|
class Portal < Thing
|
|
4
6
|
# @return [Gamefic::Entity]
|
|
5
7
|
attr_accessor :destination
|
|
@@ -19,6 +21,7 @@ class Portal < Thing
|
|
|
19
21
|
# @return [Room, nil]
|
|
20
22
|
def reverse
|
|
21
23
|
return nil if destination.nil?
|
|
24
|
+
|
|
22
25
|
destination.children.that_are(Portal).find do |portal|
|
|
23
26
|
portal.destination == parent
|
|
24
27
|
end
|
|
@@ -30,7 +33,7 @@ class Portal < Thing
|
|
|
30
33
|
end
|
|
31
34
|
|
|
32
35
|
def name
|
|
33
|
-
@name ||
|
|
36
|
+
@name || direction&.name || destination.name
|
|
34
37
|
end
|
|
35
38
|
|
|
36
39
|
def instruction
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
#
|
|
2
|
-
# for plots and subplots. Examples include the `connect` method for creating
|
|
3
|
-
# portals between rooms.
|
|
4
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
3
|
require 'gamefic-standard/modules/standardized'
|
|
7
4
|
require 'gamefic-standard/modules/enterable'
|
data/lib/gamefic-standard.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gamefic-standard
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1
|
|
4
|
+
version: 3.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Fred Snyder
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gamefic
|
|
@@ -133,6 +133,7 @@ files:
|
|
|
133
133
|
- lib/gamefic-standard/actions/nil.rb
|
|
134
134
|
- lib/gamefic-standard/actions/open.rb
|
|
135
135
|
- lib/gamefic-standard/actions/place.rb
|
|
136
|
+
- lib/gamefic-standard/actions/pronouns.rb
|
|
136
137
|
- lib/gamefic-standard/actions/quit.rb
|
|
137
138
|
- lib/gamefic-standard/actions/repeat.rb
|
|
138
139
|
- lib/gamefic-standard/actions/save-restore-undo.rb
|