gamefic-standard 3.0.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c2ec7dc0f67d10c0539b74d735051ea02a42971a758b73b86ed393cfa9208e1
4
- data.tar.gz: 8843dd046b42baac0c495a1da403bc4f5b6992f324360b4c66623aa2e3ae8e2a
3
+ metadata.gz: 93e0b9232ad79263ae86444d04d4c9a4fefa4f1b4502d2fcb8275263fc6a9401
4
+ data.tar.gz: 0fcd39f5dbdd99d94fd9525d188e29ada3d89d0545e6dc2455d695e5faf060ea
5
5
  SHA512:
6
- metadata.gz: 6a4e56f9898345fa40c7b0743b5231fb4b18266644765e6e222c3aff884dc15f4f18707ae2cb0826c6cd1b6f5056f1347649a41a9480ec8601cefcbd6f1114d2
7
- data.tar.gz: 3bfa5195316099738fe004bc29aec5f00782ccef7405324d452d0bcb644e2ea917866df37ef86a1879ec2fa68b8eae8c1ffeb0f181fe9aea1a648369232fcf73
6
+ metadata.gz: 8d500f2938e3475dea1e00c926b3dcec159ba76565c435f8590a317a316883b3c5ad2e7a8e01dc26eff1f9393680af8c925db42e26e57ba2d31aebcf2c5b3071
7
+ data.tar.gz: 34bb09d0c1a814c6e2f6febc04a1e8b959b78d8b0a1a17ffb42477ba110f4880ff24707f62255cc9c73c6602476d63abb79d496d79dafe394d3af3b6d4a36389
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 3.2.0
2
+ - Recognize pronouns in commands
3
+
4
+ ## 3.1.0 - April 8, 2024
5
+ - Minor response fixes
6
+ - Update gamefic dependency
7
+
1
8
  ## 3.0.0 - January 27, 2024
2
9
  - Updates for Gamefic 3.0
3
10
 
data/Gemfile CHANGED
@@ -2,5 +2,3 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in gamefic-standard.gemspec
4
4
  gemspec
5
-
6
- gem 'gamefic', git: 'https://github.com/castwide/gamefic.git', branch: 'v3'
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
 
38
38
  spec.required_ruby_version = '>= 2.7.0'
39
39
 
40
- spec.add_dependency 'gamefic', '~> 3.0'
40
+ spec.add_dependency 'gamefic', '~> 3.1'
41
41
 
42
42
  spec.add_development_dependency 'opal', '~> 1.7'
43
43
  spec.add_development_dependency 'opal-rspec', '~> 1.0'
@@ -1,7 +1,7 @@
1
1
  module Gamefic
2
2
  module Standard
3
3
  script do
4
- respond :look do |actor, _|
4
+ respond :look do |actor|
5
5
  actor.execute :look, actor.room
6
6
  end
7
7
 
@@ -2,7 +2,7 @@ Gamefic::Standard.script do
2
2
  meta nil, plaintext do |actor, string|
3
3
  words = string.keywords
4
4
  list = actor.epic.synonyms
5
- if list.include?(words[0].to_sym)
5
+ if list.include?(words[0]&.to_sym)
6
6
  if words.length > 1
7
7
  found = []
8
8
  avail = available(ambiguous: true)
@@ -18,7 +18,7 @@ Gamefic::Standard.script do
18
18
  elsif found.one?
19
19
  actor.tell %(I recognize "#{words[0]}" and "#{found.first.name}" but could not understand them together.)
20
20
  else
21
- actor.tell %(I recognize "#{words[0]} I'm not sure if "#{words[1..-1].join(' ')}" means #{found.map(&:definitely).join_or}.)
21
+ actor.tell %(I recognize "#{words[0]}" but I'm not sure if "#{words[1..-1].join(' ')}" means #{found.map(&:definitely).join_or}.)
22
22
  end
23
23
  else
24
24
  actor.tell %(I recognize "#{words[0]}" as a verb but could not understand it in this context.)
@@ -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,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Gamefic::Standard.script do
4
- respond :repeat do |actor|
4
+ meta :repeat do |actor|
5
5
  if actor.last_input && !actor.last_input.empty?
6
6
  actor.tell "Repeating <kbd>\"#{actor.last_input}\"</kbd>..."
7
7
  actor.queue.push actor.last_input
@@ -4,15 +4,15 @@ Gamefic::Standard.script do
4
4
  # Save, Restore, and Undo need to be handled by the game client. They have
5
5
  # default implementations here to make them available in help.
6
6
 
7
- respond :save do |actor|
7
+ meta :save do |actor|
8
8
  actor.tell "<kbd>Save</kbd> is not available."
9
9
  end
10
10
 
11
- respond :restore do |actor|
11
+ meta :restore do |actor|
12
12
  actor.tell "<kbd>Restore</kbd> is not available."
13
13
  end
14
14
 
15
- respond :undo do |actor|
15
+ meta :undo do |actor|
16
16
  actor.tell "<kbd>Undo</kbd> is not available."
17
17
  end
18
18
  end
@@ -21,3 +21,4 @@ require 'gamefic-standard/actions/wait'
21
21
  require 'gamefic-standard/actions/repeat'
22
22
  require 'gamefic-standard/actions/help'
23
23
  require 'gamefic-standard/actions/save-restore-undo'
24
+ require 'gamefic-standard/actions/pronouns'
@@ -1,7 +1,4 @@
1
- # The StandardMethods module provides a namespace to define additional methods
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'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Gamefic
4
4
  module Standard
5
- VERSION = '3.0.0'
5
+ VERSION = '3.2.0'
6
6
  end
7
7
  end
@@ -18,7 +18,6 @@ module Gamefic
18
18
  require 'gamefic-standard/entities'
19
19
  require 'gamefic-standard/actions'
20
20
  require 'gamefic-standard/introduction'
21
-
22
21
  require 'gamefic-standard/give'
23
22
 
24
23
  def connect(origin, destination, direction = nil, type: Portal, two_way: true)
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.0.0
4
+ version: 3.2.0
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-01-27 00:00:00.000000000 Z
11
+ date: 2024-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gamefic
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: opal
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -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