gamefic 0.2.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gamefic/action.rb +87 -56
- data/lib/gamefic/ansi.rb +55 -0
- data/lib/gamefic/character.rb +130 -76
- data/lib/gamefic/command.rb +19 -0
- data/lib/gamefic/core_ext/array.rb +51 -40
- data/lib/gamefic/core_ext/string.rb +4 -0
- data/lib/gamefic/describable.rb +108 -46
- data/lib/gamefic/direction.rb +46 -0
- data/lib/gamefic/director/delegate.rb +91 -0
- data/lib/gamefic/director/order.rb +10 -0
- data/lib/gamefic/director/parser.rb +119 -0
- data/lib/gamefic/director.rb +16 -197
- data/lib/gamefic/engine/cgi.rb +221 -0
- data/lib/gamefic/engine/tty.rb +237 -0
- data/lib/gamefic/engine.rb +88 -67
- data/lib/gamefic/entity.rb +96 -69
- data/lib/gamefic/grammar/conjugator.rb +20 -0
- data/lib/gamefic/grammar/gender.rb +11 -0
- data/lib/gamefic/grammar/person.rb +10 -0
- data/lib/gamefic/grammar/plural.rb +13 -0
- data/lib/gamefic/grammar/pronouns.rb +60 -0
- data/lib/gamefic/grammar/tense.rb +6 -0
- data/lib/gamefic/grammar/verb_set.rb +43 -0
- data/lib/gamefic/grammar/verbs.rb +25 -0
- data/lib/gamefic/grammar/word_adapter.rb +36 -0
- data/lib/gamefic/grammar.rb +13 -0
- data/lib/gamefic/html.rb +53 -0
- data/lib/gamefic/keywords.rb +51 -33
- data/lib/gamefic/node.rb +65 -58
- data/lib/gamefic/plot/article_mount.rb +22 -0
- data/lib/gamefic/plot/command_mount.rb +88 -0
- data/lib/gamefic/plot/entity_mount.rb +45 -0
- data/lib/gamefic/plot/query_mount.rb +9 -0
- data/lib/gamefic/plot/scene_mount.rb +181 -0
- data/lib/gamefic/plot/you_mount.rb +22 -0
- data/lib/gamefic/plot.rb +296 -247
- data/lib/gamefic/query/ambiguous_children.rb +5 -0
- data/lib/gamefic/query/base.rb +265 -0
- data/lib/gamefic/query/children.rb +10 -0
- data/lib/gamefic/query/expression.rb +47 -0
- data/lib/gamefic/query/family.rb +10 -0
- data/lib/gamefic/query/many_children.rb +7 -0
- data/lib/gamefic/query/matches.rb +11 -0
- data/lib/gamefic/query/parent.rb +10 -0
- data/lib/gamefic/query/plural_children.rb +14 -0
- data/lib/gamefic/query/self.rb +10 -0
- data/lib/gamefic/query/siblings.rb +10 -0
- data/lib/gamefic/query/text.rb +43 -0
- data/lib/gamefic/query.rb +19 -203
- data/lib/gamefic/rule.rb +18 -0
- data/lib/gamefic/scene/active.rb +25 -0
- data/lib/gamefic/scene/concluded.rb +22 -0
- data/lib/gamefic/scene/multiplechoice.rb +74 -0
- data/lib/gamefic/scene/paused.rb +26 -0
- data/lib/gamefic/scene/yesorno.rb +43 -0
- data/lib/gamefic/scene.rb +125 -0
- data/lib/gamefic/script/base.rb +33 -0
- data/lib/gamefic/script/file.rb +14 -0
- data/lib/gamefic/script/text.rb +14 -0
- data/lib/gamefic/script.rb +9 -0
- data/lib/gamefic/serialized.rb +24 -0
- data/lib/gamefic/shell.rb +9 -247
- data/lib/gamefic/snapshots.rb +134 -0
- data/lib/gamefic/source/base.rb +12 -0
- data/lib/gamefic/source/file.rb +23 -0
- data/lib/gamefic/source/text.rb +16 -0
- data/lib/gamefic/source.rb +9 -0
- data/lib/gamefic/stage.rb +75 -0
- data/lib/gamefic/syntax.rb +106 -124
- data/lib/gamefic/tester.rb +20 -0
- data/lib/gamefic/version.rb +3 -0
- data/lib/gamefic.rb +18 -12
- metadata +102 -70
- data/lib/gamefic/base.rb +0 -10
- data/lib/gamefic/before.rb +0 -12
- data/lib/gamefic/import/basics/actions/close.rb +0 -16
- data/lib/gamefic/import/basics/actions/commands.rb +0 -3
- data/lib/gamefic/import/basics/actions/drop-in.rb +0 -17
- data/lib/gamefic/import/basics/actions/drop-on.rb +0 -16
- data/lib/gamefic/import/basics/actions/drop.rb +0 -30
- data/lib/gamefic/import/basics/actions/enter.rb +0 -16
- data/lib/gamefic/import/basics/actions/go.rb +0 -35
- data/lib/gamefic/import/basics/actions/inventory.rb +0 -8
- data/lib/gamefic/import/basics/actions/leave.rb +0 -29
- data/lib/gamefic/import/basics/actions/look-in-at.rb +0 -27
- data/lib/gamefic/import/basics/actions/look-under.rb +0 -3
- data/lib/gamefic/import/basics/actions/look.rb +0 -71
- data/lib/gamefic/import/basics/actions/nil.rb +0 -25
- data/lib/gamefic/import/basics/actions/open.rb +0 -23
- data/lib/gamefic/import/basics/actions/quit.rb +0 -3
- data/lib/gamefic/import/basics/actions/take.rb +0 -107
- data/lib/gamefic/import/basics/entities/container.rb +0 -8
- data/lib/gamefic/import/basics/entities/entity.rb +0 -11
- data/lib/gamefic/import/basics/entities/fixture.rb +0 -5
- data/lib/gamefic/import/basics/entities/item.rb +0 -5
- data/lib/gamefic/import/basics/entities/portal.rb +0 -40
- data/lib/gamefic/import/basics/entities/room.rb +0 -30
- data/lib/gamefic/import/basics/entities/scenery.rb +0 -5
- data/lib/gamefic/import/basics/entities/supporter.rb +0 -6
- data/lib/gamefic/import/basics/entities/thing.rb +0 -16
- data/lib/gamefic/import/basics/queries/reachable.rb +0 -38
- data/lib/gamefic/import/basics/queries/room.rb +0 -8
- data/lib/gamefic/import/basics/queries/visible.rb +0 -32
- data/lib/gamefic/import/basics/rules/has-enough-light.rb +0 -14
- data/lib/gamefic/import/basics.old/actions/container.rb +0 -112
- data/lib/gamefic/import/basics.old/actions/inventory.rb +0 -50
- data/lib/gamefic/import/basics.old/actions/look.rb +0 -53
- data/lib/gamefic/import/basics.old/actions/meta.rb +0 -6
- data/lib/gamefic/import/basics.old/actions/traversal.rb +0 -35
- data/lib/gamefic/import/basics.old/actions.rb +0 -1
- data/lib/gamefic/import/basics.old/entities/container.rb +0 -3
- data/lib/gamefic/import/basics.old/entities/fixture.rb +0 -3
- data/lib/gamefic/import/basics.old/entities/item.rb +0 -3
- data/lib/gamefic/import/basics.old/entities/portal.rb +0 -43
- data/lib/gamefic/import/basics.old/entities/room.rb +0 -27
- data/lib/gamefic/import/basics.old/entities/scenery.rb +0 -3
- data/lib/gamefic/import/basics.old/entities/supporter.rb +0 -3
- data/lib/gamefic/import/basics.old/entities.rb +0 -1
- data/lib/gamefic/import/basics.old/room_modes.rb +0 -48
- data/lib/gamefic/import/basics.rb +0 -6
- data/lib/gamefic/import/room_modes.rb +0 -48
- data/lib/gamefic/import/standard.rb +0 -1
- data/lib/gamefic/meta.rb +0 -12
- data/lib/gamefic/optionset.rb +0 -114
- data/lib/gamefic/requirement.rb +0 -14
- data/lib/gamefic/story.rb +0 -14
- data/lib/gamefic/thing.rb +0 -7
data/lib/gamefic/syntax.rb
CHANGED
@@ -1,134 +1,116 @@
|
|
1
|
+
require 'gamefic/command'
|
2
|
+
|
1
3
|
module Gamefic
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
class Syntax
|
6
|
+
attr_reader :token_count, :first_word, :verb, :template, :command
|
7
|
+
@@phrase = '([\w\W\s\S]*?)'
|
8
|
+
|
9
|
+
def initialize plot, template, *command
|
10
|
+
command = command.join(' ')
|
11
|
+
words = template.split_words
|
12
|
+
@token_count = words.length
|
13
|
+
command_words = command.split_words
|
14
|
+
@verb = nil
|
15
|
+
if words[0][0] == ':'
|
16
|
+
@token_count -= 1
|
17
|
+
@first_word = ''
|
14
18
|
else
|
15
|
-
@
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
@verb = command_words[0].to_sym if !command_words[0].nil?
|
20
|
+
@first_word = words[0].to_s
|
21
|
+
end
|
22
|
+
@command = command_words.join(' ')
|
23
|
+
@template = words.join(' ')
|
24
|
+
tokens = []
|
25
|
+
variable_tokens = []
|
26
|
+
last_token_is_reg = false
|
27
|
+
words.each { |w|
|
28
|
+
if w.match(/^:[a-z0-9_]+$/i)
|
29
|
+
variable_tokens.push w
|
30
|
+
if last_token_is_reg
|
31
|
+
next
|
20
32
|
else
|
21
|
-
|
33
|
+
tokens.push @@phrase
|
34
|
+
last_token_is_reg = true
|
22
35
|
end
|
23
|
-
}
|
24
|
-
#@template = arguments.shift
|
25
|
-
@command = arguments.shift
|
26
|
-
@arguments = arguments
|
27
|
-
if story == nil
|
28
|
-
#@@defaults.push self
|
29
|
-
raise "Default syntaxes are deprecated"
|
30
36
|
else
|
31
|
-
|
32
|
-
|
37
|
+
tokens.push w
|
38
|
+
last_token_is_reg = false
|
39
|
+
end
|
40
|
+
}
|
41
|
+
subs = []
|
42
|
+
index = 0
|
43
|
+
command_words.each { |t|
|
44
|
+
if t[0] == ':'
|
45
|
+
index = variable_tokens.index(t) + 1
|
46
|
+
subs.push "{$#{index}}"
|
47
|
+
else
|
48
|
+
subs.push t
|
33
49
|
end
|
50
|
+
}
|
51
|
+
@replace = subs.join(' ')
|
52
|
+
@regexp = Regexp.new("^#{tokens.join(' ')}$", Regexp::IGNORECASE)
|
53
|
+
if !plot.nil?
|
54
|
+
plot.send :add_syntax, self
|
34
55
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
end
|
95
|
-
else
|
96
|
-
if input_words[0].downcase == symbol.downcase
|
97
|
-
input_words.shift
|
98
|
-
else
|
99
|
-
break
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
if input_words.length == 0 and syntax_words.length == 0
|
104
|
-
arguments = Array.new
|
105
|
-
syntax.arguments.each { |a|
|
106
|
-
if a.kind_of?(Symbol)
|
107
|
-
if tokens[a] != nil and tokens[a] != ''
|
108
|
-
arguments.push(tokens[a])
|
109
|
-
end
|
110
|
-
else
|
111
|
-
if a != nil and a != ''
|
112
|
-
arguments.push(a)
|
113
|
-
end
|
114
|
-
end
|
115
|
-
}
|
116
|
-
if syntax.arguments.length == arguments.length
|
117
|
-
matches.push CommandHandler.new(syntax.command, arguments)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
}
|
121
|
-
matches.uniq! # TODO: Is this necessary?
|
122
|
-
return matches
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
class CommandHandler
|
127
|
-
attr_reader :command, :arguments
|
128
|
-
def initialize command, arguments
|
129
|
-
@command = command
|
130
|
-
@arguments = arguments
|
131
|
-
end
|
132
|
-
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Convert a String into a Command.
|
59
|
+
#
|
60
|
+
# @param text [String]
|
61
|
+
# @return [Command]
|
62
|
+
def tokenize text
|
63
|
+
m = text.match(@regexp)
|
64
|
+
return nil if m.nil?
|
65
|
+
arguments = []
|
66
|
+
@replace.to_s.split_words.each { |r|
|
67
|
+
if r.match(/^\{\$[0-9]+\}$/)
|
68
|
+
arguments.push m[r[2..-2].to_i]
|
69
|
+
else
|
70
|
+
arguments.push r
|
71
|
+
end
|
72
|
+
}
|
73
|
+
Command.new @verb, arguments
|
74
|
+
end
|
75
|
+
|
76
|
+
# Get a signature that identifies the form of the Syntax.
|
77
|
+
# Signatures are used to compare Syntaxes to each other.
|
78
|
+
#
|
79
|
+
def signature
|
80
|
+
[@regexp, @replace]
|
81
|
+
end
|
82
|
+
|
83
|
+
def ==(other)
|
84
|
+
signature == other.signature
|
85
|
+
end
|
86
|
+
|
87
|
+
# Tokenize an Array of Commands from the specified text.
|
88
|
+
#
|
89
|
+
# @param text [String] The text to tokenize.
|
90
|
+
# @param syntaxes [Array<Syntax>] The Syntaxes to use.
|
91
|
+
# @return [Array<Command>] The tokenized commands.
|
92
|
+
def self.tokenize text, syntaxes
|
93
|
+
matches = []
|
94
|
+
syntaxes.each { |syntax|
|
95
|
+
result = syntax.tokenize text
|
96
|
+
matches.push(result) if !result.nil?
|
97
|
+
}
|
98
|
+
# Sort matches having the most populated arguments first
|
99
|
+
matches.sort! { |a, b|
|
100
|
+
ca = 0
|
101
|
+
cb = 0
|
102
|
+
a.arguments.each { |t|
|
103
|
+
break if t.nil?
|
104
|
+
ca += 1
|
105
|
+
}
|
106
|
+
b.arguments.each { |t|
|
107
|
+
break if t.nil?
|
108
|
+
cb += 1
|
109
|
+
}
|
110
|
+
cb <=> ca
|
111
|
+
}
|
112
|
+
matches
|
113
|
+
end
|
114
|
+
end
|
133
115
|
|
134
116
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Gamefic
|
2
|
+
|
3
|
+
module Tester
|
4
|
+
def test_procs
|
5
|
+
@test_procs ||= Hash.new
|
6
|
+
end
|
7
|
+
def on_test name = :me, &block
|
8
|
+
test_procs[name] = block
|
9
|
+
end
|
10
|
+
def run_test name, actor
|
11
|
+
queue = []
|
12
|
+
actor.plot.stage actor, queue, &test_procs[name]
|
13
|
+
actor[:test_queue] = queue
|
14
|
+
actor[:test_queue_length] = queue.length
|
15
|
+
actor[:test_queue_scene] = actor.scene
|
16
|
+
actor[:testing] = true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/lib/gamefic.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
1
|
+
require 'gamefic/core_ext/array'
|
2
|
+
require 'gamefic/core_ext/string'
|
3
|
+
|
4
|
+
require 'gamefic/grammar'
|
5
|
+
require 'gamefic/keywords'
|
6
|
+
require 'gamefic/serialized'
|
7
|
+
require 'gamefic/entity'
|
8
|
+
require 'gamefic/character'
|
9
|
+
require "gamefic/scene"
|
10
|
+
require "gamefic/scene/active"
|
11
|
+
require "gamefic/scene/concluded"
|
12
|
+
require "gamefic/scene/paused"
|
13
|
+
require "gamefic/scene/multiplechoice"
|
14
|
+
require "gamefic/scene/yesorno"
|
15
|
+
require "gamefic/query"
|
8
16
|
require "gamefic/action"
|
9
|
-
require "gamefic/before"
|
10
|
-
require "gamefic/meta"
|
11
|
-
require "gamefic/requirement"
|
12
17
|
require "gamefic/syntax"
|
13
|
-
require "gamefic/
|
18
|
+
require "gamefic/rule"
|
14
19
|
require "gamefic/director"
|
15
20
|
require "gamefic/plot"
|
16
|
-
require "gamefic/story"
|
17
21
|
require "gamefic/engine"
|
22
|
+
require "gamefic/direction"
|
23
|
+
require "gamefic/snapshots"
|
metadata
CHANGED
@@ -1,16 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gamefic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2016-04-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubyzip
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: An adventure game and interactive fiction framework
|
14
42
|
email: fsnyder@gamefic.com
|
15
43
|
executables:
|
16
44
|
- gamefic
|
@@ -18,74 +46,77 @@ extensions: []
|
|
18
46
|
extra_rdoc_files: []
|
19
47
|
files:
|
20
48
|
- lib/gamefic.rb
|
21
|
-
- lib/gamefic/
|
22
|
-
- lib/gamefic/character.rb
|
23
|
-
- lib/gamefic/requirement.rb
|
24
|
-
- lib/gamefic/story.rb
|
25
|
-
- lib/gamefic/shell.rb
|
26
|
-
- lib/gamefic/optionset.rb
|
27
|
-
- lib/gamefic/thing.rb
|
28
|
-
- lib/gamefic/base.rb
|
29
|
-
- lib/gamefic/query.rb
|
49
|
+
- lib/gamefic/grammar.rb
|
30
50
|
- lib/gamefic/action.rb
|
51
|
+
- lib/gamefic/stage.rb
|
52
|
+
- lib/gamefic/core_ext/array.rb
|
53
|
+
- lib/gamefic/core_ext/string.rb
|
54
|
+
- lib/gamefic/engine/cgi.rb
|
55
|
+
- lib/gamefic/engine/tty.rb
|
56
|
+
- lib/gamefic/html.rb
|
57
|
+
- lib/gamefic/describable.rb
|
58
|
+
- lib/gamefic/command.rb
|
59
|
+
- lib/gamefic/script/base.rb
|
60
|
+
- lib/gamefic/script/file.rb
|
61
|
+
- lib/gamefic/script/text.rb
|
62
|
+
- lib/gamefic/query/children.rb
|
63
|
+
- lib/gamefic/query/family.rb
|
64
|
+
- lib/gamefic/query/matches.rb
|
65
|
+
- lib/gamefic/query/parent.rb
|
66
|
+
- lib/gamefic/query/self.rb
|
67
|
+
- lib/gamefic/query/siblings.rb
|
68
|
+
- lib/gamefic/query/many_children.rb
|
69
|
+
- lib/gamefic/query/ambiguous_children.rb
|
70
|
+
- lib/gamefic/query/base.rb
|
71
|
+
- lib/gamefic/query/expression.rb
|
72
|
+
- lib/gamefic/query/plural_children.rb
|
73
|
+
- lib/gamefic/query/text.rb
|
74
|
+
- lib/gamefic/rule.rb
|
75
|
+
- lib/gamefic/scene.rb
|
76
|
+
- lib/gamefic/scene/concluded.rb
|
77
|
+
- lib/gamefic/scene/multiplechoice.rb
|
78
|
+
- lib/gamefic/scene/paused.rb
|
79
|
+
- lib/gamefic/scene/yesorno.rb
|
80
|
+
- lib/gamefic/scene/active.rb
|
81
|
+
- lib/gamefic/shell.rb
|
82
|
+
- lib/gamefic/snapshots.rb
|
83
|
+
- lib/gamefic/tester.rb
|
84
|
+
- lib/gamefic/version.rb
|
31
85
|
- lib/gamefic/node.rb
|
32
|
-
- lib/gamefic/
|
86
|
+
- lib/gamefic/syntax.rb
|
87
|
+
- lib/gamefic/source.rb
|
88
|
+
- lib/gamefic/source/base.rb
|
89
|
+
- lib/gamefic/source/file.rb
|
90
|
+
- lib/gamefic/source/text.rb
|
91
|
+
- lib/gamefic/ansi.rb
|
92
|
+
- lib/gamefic/script.rb
|
93
|
+
- lib/gamefic/character.rb
|
94
|
+
- lib/gamefic/entity.rb
|
95
|
+
- lib/gamefic/query.rb
|
33
96
|
- lib/gamefic/engine.rb
|
34
|
-
- lib/gamefic/
|
97
|
+
- lib/gamefic/direction.rb
|
98
|
+
- lib/gamefic/director/order.rb
|
99
|
+
- lib/gamefic/director/delegate.rb
|
100
|
+
- lib/gamefic/director/parser.rb
|
101
|
+
- lib/gamefic/plot/query_mount.rb
|
102
|
+
- lib/gamefic/plot/article_mount.rb
|
103
|
+
- lib/gamefic/plot/you_mount.rb
|
104
|
+
- lib/gamefic/plot/command_mount.rb
|
105
|
+
- lib/gamefic/plot/entity_mount.rb
|
106
|
+
- lib/gamefic/plot/scene_mount.rb
|
107
|
+
- lib/gamefic/director.rb
|
108
|
+
- lib/gamefic/grammar/conjugator.rb
|
109
|
+
- lib/gamefic/grammar/person.rb
|
110
|
+
- lib/gamefic/grammar/plural.rb
|
111
|
+
- lib/gamefic/grammar/tense.rb
|
112
|
+
- lib/gamefic/grammar/verb_set.rb
|
113
|
+
- lib/gamefic/grammar/verbs.rb
|
114
|
+
- lib/gamefic/grammar/gender.rb
|
115
|
+
- lib/gamefic/grammar/pronouns.rb
|
116
|
+
- lib/gamefic/grammar/word_adapter.rb
|
117
|
+
- lib/gamefic/serialized.rb
|
35
118
|
- lib/gamefic/keywords.rb
|
36
|
-
- lib/gamefic/
|
37
|
-
- lib/gamefic/meta.rb
|
38
|
-
- lib/gamefic/syntax.rb
|
39
|
-
- lib/gamefic/describable.rb
|
40
|
-
- lib/gamefic/import/room_modes.rb
|
41
|
-
- lib/gamefic/import/basics/actions/leave.rb
|
42
|
-
- lib/gamefic/import/basics/actions/take.rb
|
43
|
-
- lib/gamefic/import/basics/actions/drop-in.rb
|
44
|
-
- lib/gamefic/import/basics/actions/drop-on.rb
|
45
|
-
- lib/gamefic/import/basics/actions/commands.rb
|
46
|
-
- lib/gamefic/import/basics/actions/look-under.rb
|
47
|
-
- lib/gamefic/import/basics/actions/open.rb
|
48
|
-
- lib/gamefic/import/basics/actions/look.rb
|
49
|
-
- lib/gamefic/import/basics/actions/quit.rb
|
50
|
-
- lib/gamefic/import/basics/actions/go.rb
|
51
|
-
- lib/gamefic/import/basics/actions/nil.rb
|
52
|
-
- lib/gamefic/import/basics/actions/look-in-at.rb
|
53
|
-
- lib/gamefic/import/basics/actions/drop.rb
|
54
|
-
- lib/gamefic/import/basics/actions/inventory.rb
|
55
|
-
- lib/gamefic/import/basics/actions/close.rb
|
56
|
-
- lib/gamefic/import/basics/actions/enter.rb
|
57
|
-
- lib/gamefic/import/basics/rules/has-enough-light.rb
|
58
|
-
- lib/gamefic/import/basics/queries/room.rb
|
59
|
-
- lib/gamefic/import/basics/queries/reachable.rb
|
60
|
-
- lib/gamefic/import/basics/queries/visible.rb
|
61
|
-
- lib/gamefic/import/basics/entities/entity.rb
|
62
|
-
- lib/gamefic/import/basics/entities/supporter.rb
|
63
|
-
- lib/gamefic/import/basics/entities/fixture.rb
|
64
|
-
- lib/gamefic/import/basics/entities/item.rb
|
65
|
-
- lib/gamefic/import/basics/entities/scenery.rb
|
66
|
-
- lib/gamefic/import/basics/entities/thing.rb
|
67
|
-
- lib/gamefic/import/basics/entities/room.rb
|
68
|
-
- lib/gamefic/import/basics/entities/portal.rb
|
69
|
-
- lib/gamefic/import/basics/entities/container.rb
|
70
|
-
- lib/gamefic/import/standard.rb
|
71
|
-
- lib/gamefic/import/basics.old/room_modes.rb
|
72
|
-
- lib/gamefic/import/basics.old/actions/look.rb
|
73
|
-
- lib/gamefic/import/basics.old/actions/inventory.rb
|
74
|
-
- lib/gamefic/import/basics.old/actions/container.rb
|
75
|
-
- lib/gamefic/import/basics.old/actions/meta.rb
|
76
|
-
- lib/gamefic/import/basics.old/actions/traversal.rb
|
77
|
-
- lib/gamefic/import/basics.old/actions.rb
|
78
|
-
- lib/gamefic/import/basics.old/entities/supporter.rb
|
79
|
-
- lib/gamefic/import/basics.old/entities/fixture.rb
|
80
|
-
- lib/gamefic/import/basics.old/entities/item.rb
|
81
|
-
- lib/gamefic/import/basics.old/entities/scenery.rb
|
82
|
-
- lib/gamefic/import/basics.old/entities/room.rb
|
83
|
-
- lib/gamefic/import/basics.old/entities/portal.rb
|
84
|
-
- lib/gamefic/import/basics.old/entities/container.rb
|
85
|
-
- lib/gamefic/import/basics.old/entities.rb
|
86
|
-
- lib/gamefic/import/basics.rb
|
87
|
-
- lib/gamefic/core_ext/string.rb
|
88
|
-
- lib/gamefic/core_ext/array.rb
|
119
|
+
- lib/gamefic/plot.rb
|
89
120
|
- bin/gamefic
|
90
121
|
homepage: http://gamefic.com
|
91
122
|
licenses:
|
@@ -99,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
130
|
requirements:
|
100
131
|
- - '>='
|
101
132
|
- !ruby/object:Gem::Version
|
102
|
-
version: 1.
|
133
|
+
version: 1.9.3
|
103
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
135
|
requirements:
|
105
136
|
- - '>='
|
@@ -107,8 +138,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
138
|
version: '0'
|
108
139
|
requirements: []
|
109
140
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.0.
|
141
|
+
rubygems_version: 2.0.14
|
111
142
|
signing_key:
|
112
143
|
specification_version: 4
|
113
144
|
summary: Gamefic
|
114
145
|
test_files: []
|
146
|
+
has_rdoc:
|
data/lib/gamefic/base.rb
DELETED
data/lib/gamefic/before.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# Before Actions are processed before Rules. Their primary use is to determine
|
2
|
-
# whether or not a particular Action (or thread of Actions) should be allowed
|
3
|
-
# to happen. A Before Action's proc can use the pass and deny methods to
|
4
|
-
# override the results of rule assertions.
|
5
|
-
|
6
|
-
module Gamefic
|
7
|
-
|
8
|
-
class Before < Action
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
respond :close, Query::Text.new() do |actor, string|
|
2
|
-
actor.tell "You don't see any \"#{string}\" here."
|
3
|
-
end
|
4
|
-
|
5
|
-
respond :close, Query::Reachable.new(Entity) do |actor, thing|
|
6
|
-
actor.tell "You can't close #{the thing}."
|
7
|
-
end
|
8
|
-
|
9
|
-
respond :close, Query::Reachable.new(Container, :openable) do |actor, container|
|
10
|
-
if container.is? :closed
|
11
|
-
actor.tell "It's already closed."
|
12
|
-
else
|
13
|
-
actor.tell "You close #{the container}."
|
14
|
-
container.is :closed
|
15
|
-
end
|
16
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
respond :drop_in, Query::Children.new(), Query::Reachable.new() do |actor, thing, target|
|
2
|
-
puts "You can't put #{the thing} inside #{the target}."
|
3
|
-
end
|
4
|
-
|
5
|
-
respond :drop_in, Query::Children.new(), Query::Reachable.new(Container) do |actor, thing, container|
|
6
|
-
if container.is? :closed
|
7
|
-
actor.tell "#{The container} is closed."
|
8
|
-
else
|
9
|
-
thing.parent = container
|
10
|
-
thing.is :contained
|
11
|
-
actor.tell "You put #{the thing} in #{the container}."
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
xlate "drop :item in :container", :drop_in, :item, :container
|
16
|
-
xlate "put :item in :container", :drop_in, :item, :container
|
17
|
-
xlate "place :item in :container", :drop_in, :item, :container
|
@@ -1,16 +0,0 @@
|
|
1
|
-
respond :drop_on, Query::Children.new(), Query::Reachable.new() do |actor, thing, supporter|
|
2
|
-
actor.tell "You can't put #{the thing} on #{the supporter}."
|
3
|
-
end
|
4
|
-
|
5
|
-
respond :drop_on, Query::Children.new(), Query::Reachable.new(Supporter) do |actor, thing, supporter|
|
6
|
-
thing.parent = supporter
|
7
|
-
thing.is :supported
|
8
|
-
actor.tell "You put #{the thing} on #{the supporter}."
|
9
|
-
end
|
10
|
-
|
11
|
-
xlate "put :thing on :supporter", :drop_on, :thing, :supporter
|
12
|
-
xlate "put :thing down on :supporter", :drop_on, :thing, :supporter
|
13
|
-
xlate "set :thing on :supporter", :drop_on, :thing, :supporter
|
14
|
-
xlate "set :thing down on :supporter", :drop_on, :thing, :supporter
|
15
|
-
xlate "drop :thing on :supporter", :drop_on, :thing, :supporter
|
16
|
-
xlate "place :thing on :supporter", :drop_on, :thing, :supporter
|
@@ -1,30 +0,0 @@
|
|
1
|
-
respond :drop, Query::Visible.new() do |actor, thing|
|
2
|
-
actor.tell "You're not carrying #{the thing}."
|
3
|
-
end
|
4
|
-
|
5
|
-
respond :drop, Query::Children.new() do |actor, thing|
|
6
|
-
thing.parent = actor.parent
|
7
|
-
actor.tell "You drop #{the thing}.", true
|
8
|
-
end
|
9
|
-
|
10
|
-
xlate "put down :thing", :drop, :thing
|
11
|
-
xlate "put :thing down", :drop, :thing
|
12
|
-
|
13
|
-
#respond :drop, Query::Family.new(Thing), Query::Reachable.new(Thing) do |actor, thing, supporter|
|
14
|
-
# actor.tell "You're not carrying #{thing}."
|
15
|
-
#end
|
16
|
-
#respond :drop, Query::Text.new(), Query::Text.new() do |actor, thing, supporter|
|
17
|
-
# actor.tell "You don't see anything called '#{thing}.'"
|
18
|
-
#end
|
19
|
-
#respond :drop, Query::Children.new(Thing), Query::Visible.new(Thing) do |actor, thing, target|
|
20
|
-
# if actor.parent != target.parent
|
21
|
-
# if actor.is?(:supported) or actor.is?(:container)
|
22
|
-
# actor.tell "You can't reach #{the target} from #{the actor.parent}."
|
23
|
-
# next
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
# passthru
|
27
|
-
#end
|
28
|
-
#respond :drop, Query::Children.new(Thing), Query::Text.new() do |actor, thing, supporter|
|
29
|
-
# actor.tell "You don't see anything called '#{supporter}.'"
|
30
|
-
#end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
respond :enter, Query::Siblings.new(Supporter, :enterable) do |actor, supporter|
|
2
|
-
actor.parent = supporter
|
3
|
-
actor.tell "You get on #{the supporter}."
|
4
|
-
end
|
5
|
-
respond :enter, Query::Siblings.new(Container, :enterable) do |actor, container|
|
6
|
-
actor.parent = container
|
7
|
-
actor.tell "You get in #{the container}."
|
8
|
-
end
|
9
|
-
respond :enter, Query::Siblings.new(Thing) do |actor, thing|
|
10
|
-
actor.tell "#{The thing} can't accommodate you."
|
11
|
-
end
|
12
|
-
xlate "sit :thing", :enter, :thing
|
13
|
-
xlate "sit on :thing", :enter, :thing
|
14
|
-
xlate "get on :thing", :enter, :thing
|
15
|
-
xlate "get in :thing", :enter, :thing
|
16
|
-
xlate "stand on :thing", :enter, :thing
|