gamefic-sdk 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/html/core/engine.js +89 -0
- data/html/core/jquery.js +5 -0
- data/html/core/jquery.modal.css +44 -0
- data/html/core/jquery.modal.js +225 -0
- data/html/core/js.cookie.js +137 -0
- data/html/skins/hypertext/compass.png +0 -0
- data/html/skins/hypertext/index.html +151 -0
- data/html/skins/hypertext/style.css +74 -0
- data/html/skins/minimal/index.html.erb +22 -0
- data/html/skins/minimal/play.js +36 -0
- data/html/skins/minimal/style.css +8 -0
- data/html/skins/multimedia/close.png +0 -0
- data/html/skins/multimedia/index.html +179 -0
- data/html/skins/multimedia/mobile.css +10 -0
- data/html/skins/multimedia/spinner.gif +0 -0
- data/html/skins/multimedia/style.css +186 -0
- data/html/skins/standard/index.html.erb +23 -0
- data/html/skins/standard/play.js +68 -0
- data/html/skins/standard/style.css +70 -0
- data/lib/gamefic-sdk/version.rb +1 -1
- data/scripts/ansi.plot.rb +13 -0
- data/scripts/autosuggest.plot.rb +171 -0
- data/scripts/clothing.plot.rb +2 -0
- data/scripts/clothing/actions.plot.rb +4 -0
- data/scripts/clothing/actions/doff.plot.rb +12 -0
- data/scripts/clothing/actions/drop.plot.rb +8 -0
- data/scripts/clothing/actions/inventory.plot.rb +14 -0
- data/scripts/clothing/actions/wear.plot.rb +19 -0
- data/scripts/clothing/entities.plot.rb +7 -0
- data/scripts/clothing/entities/clothing.plot.rb +7 -0
- data/scripts/clothing/entities/coat.plot.rb +5 -0
- data/scripts/clothing/entities/gloves.plot.rb +5 -0
- data/scripts/clothing/entities/hat.plot.rb +5 -0
- data/scripts/clothing/entities/pants.plot.rb +5 -0
- data/scripts/clothing/entities/shirt.plot.rb +5 -0
- data/scripts/clothing/entities/shoes.plot.rb +5 -0
- data/scripts/cover.plot.rb +30 -0
- data/scripts/debug.plot.rb +0 -0
- data/scripts/edible.plot.rb +19 -0
- data/scripts/furniture.plot.rb +35 -0
- data/scripts/hints.plot.rb +31 -0
- data/scripts/hypertext.plot.rb +280 -0
- data/scripts/media.plot.rb +17 -0
- data/scripts/multimedia.plot.rb +41 -0
- data/scripts/questions.plot.rb +17 -0
- data/scripts/room-modes.plot.rb +48 -0
- data/scripts/rough-sizes.plot.rb +36 -0
- data/scripts/save-restore.plot.rb +21 -0
- data/scripts/snapshots.plot.rb +14 -0
- data/scripts/standard.plot.rb +12 -0
- data/scripts/standard/actions.plot.rb +23 -0
- data/scripts/standard/actions/close.plot.rb +16 -0
- data/scripts/standard/actions/drop.plot.rb +11 -0
- data/scripts/standard/actions/enter.plot.rb +31 -0
- data/scripts/standard/actions/give.plot.rb +26 -0
- data/scripts/standard/actions/go.plot.rb +81 -0
- data/scripts/standard/actions/insert.plot.rb +47 -0
- data/scripts/standard/actions/inventory.plot.rb +8 -0
- data/scripts/standard/actions/leave.plot.rb +41 -0
- data/scripts/standard/actions/lock.plot.rb +59 -0
- data/scripts/standard/actions/look-under.plot.rb +8 -0
- data/scripts/standard/actions/look.plot.rb +102 -0
- data/scripts/standard/actions/nil.plot.rb +35 -0
- data/scripts/standard/actions/open.plot.rb +34 -0
- data/scripts/standard/actions/place.plot.rb +36 -0
- data/scripts/standard/actions/quit.plot.rb +11 -0
- data/scripts/standard/actions/read.plot.rb +3 -0
- data/scripts/standard/actions/search.plot.rb +39 -0
- data/scripts/standard/actions/show.plot.rb +13 -0
- data/scripts/standard/actions/take.plot.rb +49 -0
- data/scripts/standard/actions/talk.plot.rb +31 -0
- data/scripts/standard/actions/unlock.plot.rb +77 -0
- data/scripts/standard/actions/use.plot.rb +25 -0
- data/scripts/standard/actions/wait.plot.rb +3 -0
- data/scripts/standard/entities.plot.rb +12 -0
- data/scripts/standard/entities/character.plot.rb +9 -0
- data/scripts/standard/entities/container.plot.rb +11 -0
- data/scripts/standard/entities/door.plot.rb +53 -0
- data/scripts/standard/entities/entity.plot.rb +13 -0
- data/scripts/standard/entities/exterior.plot.rb +5 -0
- data/scripts/standard/entities/fixture.plot.rb +3 -0
- data/scripts/standard/entities/item.plot.rb +5 -0
- data/scripts/standard/entities/portal.plot.rb +37 -0
- data/scripts/standard/entities/receptacle.plot.rb +4 -0
- data/scripts/standard/entities/room.plot.rb +47 -0
- data/scripts/standard/entities/rubble.plot.rb +11 -0
- data/scripts/standard/entities/scenery.plot.rb +5 -0
- data/scripts/standard/entities/supporter.plot.rb +10 -0
- data/scripts/standard/modules.plot.rb +11 -0
- data/scripts/standard/modules/attachable.plot.rb +11 -0
- data/scripts/standard/modules/auto_takes.plot.rb +50 -0
- data/scripts/standard/modules/darkenable.plot.rb +6 -0
- data/scripts/standard/modules/enterable.plot.rb +15 -0
- data/scripts/standard/modules/explicit_exits.plot.rb +15 -0
- data/scripts/standard/modules/itemizable.plot.rb +18 -0
- data/scripts/standard/modules/lockable.plot.rb +25 -0
- data/scripts/standard/modules/openable.plot.rb +9 -0
- data/scripts/standard/modules/parent-room.plot.rb +9 -0
- data/scripts/standard/modules/portable.plot.rb +6 -0
- data/scripts/standard/modules/transparent.plot.rb +6 -0
- data/scripts/standard/pathfinder.plot.rb +60 -0
- data/scripts/standard/plural.plot.rb +2 -0
- data/scripts/standard/plural/actions.plot.rb +4 -0
- data/scripts/standard/plural/actions/drop.plot.rb +126 -0
- data/scripts/standard/plural/actions/insert.plot.rb +68 -0
- data/scripts/standard/plural/actions/place.plot.rb +37 -0
- data/scripts/standard/plural/actions/take.plot.rb +175 -0
- data/scripts/standard/plural/queries.plot.rb +5 -0
- data/scripts/standard/plural/queries/ambiguous_visible.plot.rb +13 -0
- data/scripts/standard/plural/queries/any_expression.plot.rb +17 -0
- data/scripts/standard/plural/queries/many_visible.plot.rb +13 -0
- data/scripts/standard/plural/queries/not_expression.plot.rb +16 -0
- data/scripts/standard/plural/queries/plural_visible.plot.rb +22 -0
- data/scripts/standard/queries.plot.rb +4 -0
- data/scripts/standard/queries/from_expression.plot.rb +16 -0
- data/scripts/standard/queries/reachable.plot.rb +48 -0
- data/scripts/standard/queries/room.plot.rb +17 -0
- data/scripts/standard/queries/visible.plot.rb +45 -0
- data/scripts/standard/rules.plot.rb +1 -0
- data/scripts/standard/rules/has-enough-light.plot.rb +12 -0
- data/scripts/standard/test.plot.rb +8 -0
- data/scripts/standard/use.plot.rb +29 -0
- data/scripts/suggestible.plot.rb +42 -0
- data/scripts/undo.plot.rb +11 -0
- metadata +149 -25
@@ -0,0 +1,15 @@
|
|
1
|
+
module Gamefic::Enterable
|
2
|
+
attr_writer :enterable, :leave_verb, :enter_verb, :inside_verb
|
3
|
+
def enterable?
|
4
|
+
@enterable ||= false
|
5
|
+
end
|
6
|
+
def inside_verb
|
7
|
+
@inside_verb ||= "be in"
|
8
|
+
end
|
9
|
+
def enter_verb
|
10
|
+
@enter_verb ||= "enter"
|
11
|
+
end
|
12
|
+
def leave_verb
|
13
|
+
@leave_verb ||= "leave"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Gamefic::ExplicitExits
|
2
|
+
attr_writer :explicit_exits
|
3
|
+
def explicit_exits?
|
4
|
+
@explicit_exits ||= ExplicitExits.default
|
5
|
+
end
|
6
|
+
def self.default
|
7
|
+
if @default.nil?
|
8
|
+
@default = true
|
9
|
+
end
|
10
|
+
@default
|
11
|
+
end
|
12
|
+
def self.default=(bool)
|
13
|
+
@default = bool
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Gamefic::Itemizable
|
2
|
+
attr_writer :itemized
|
3
|
+
def itemized?
|
4
|
+
if @itemized.nil?
|
5
|
+
@itemized = Itemizable.default
|
6
|
+
end
|
7
|
+
@itemized
|
8
|
+
end
|
9
|
+
def self.default
|
10
|
+
if @default.nil?
|
11
|
+
@default = true
|
12
|
+
end
|
13
|
+
@default
|
14
|
+
end
|
15
|
+
def self.default=(bool)
|
16
|
+
@default = bool
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
script 'standard/modules/openable'
|
2
|
+
|
3
|
+
module Gamefic::Lockable
|
4
|
+
include Openable
|
5
|
+
attr_reader :lock_key
|
6
|
+
def locked=(bool)
|
7
|
+
@locked = bool
|
8
|
+
if @locked == true
|
9
|
+
self.open = false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
def open=(bool)
|
13
|
+
@open = bool
|
14
|
+
@locked = false if @open == true
|
15
|
+
end
|
16
|
+
def locked?
|
17
|
+
@locked ||= false
|
18
|
+
end
|
19
|
+
def has_lock_key?
|
20
|
+
!@lock_key.nil?
|
21
|
+
end
|
22
|
+
def lock_key=(entity)
|
23
|
+
@lock_key = entity
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Pathfinders provide the shortest route between two locations. The
|
2
|
+
# destination needs to be accessible from the origin through portals. Note
|
3
|
+
# that Pathfinders do not take into account portals that characters cannot
|
4
|
+
# traverse, such as locked doors.
|
5
|
+
#
|
6
|
+
class Gamefic::Pathfinder
|
7
|
+
# @return [Room]
|
8
|
+
attr_reader :origin
|
9
|
+
# @return [Room]
|
10
|
+
attr_reader :destination
|
11
|
+
|
12
|
+
def initialize origin, destination
|
13
|
+
@origin = origin
|
14
|
+
@destination = destination
|
15
|
+
@path = nil
|
16
|
+
@paths = [[@origin]]
|
17
|
+
@visited = []
|
18
|
+
if @origin == @destination
|
19
|
+
@path = []
|
20
|
+
else
|
21
|
+
while @path.nil? and @paths.length > 0
|
22
|
+
embark
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
# @return [Array<Room>]
|
27
|
+
def path
|
28
|
+
# @path is nil if the path is invalid, but #path should return an empty
|
29
|
+
# array instead.
|
30
|
+
@path || []
|
31
|
+
end
|
32
|
+
# @return [Boolean]
|
33
|
+
def valid?
|
34
|
+
path.length > 0 or origin == destination
|
35
|
+
end
|
36
|
+
private
|
37
|
+
def embark
|
38
|
+
new_paths = []
|
39
|
+
@paths.each { |path|
|
40
|
+
last = path.last
|
41
|
+
portals = last.children.that_are(Portal)
|
42
|
+
portals.each { |portal|
|
43
|
+
new_path = path.clone
|
44
|
+
if !@visited.include?(portal.destination)
|
45
|
+
new_path.push portal.destination
|
46
|
+
@visited.push portal.destination
|
47
|
+
if portal.destination == @destination
|
48
|
+
@path = new_path
|
49
|
+
@path.shift
|
50
|
+
break
|
51
|
+
end
|
52
|
+
new_paths.push new_path
|
53
|
+
end
|
54
|
+
}
|
55
|
+
path.push nil
|
56
|
+
}
|
57
|
+
@paths += new_paths
|
58
|
+
@paths.delete_if{|path| path.last.nil?}
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
respond :drop, Use.many_children do |actor, things|
|
2
|
+
dropped = []
|
3
|
+
things.each { |thing|
|
4
|
+
buffer = actor.quietly :drop, thing
|
5
|
+
if thing.parent == actor
|
6
|
+
actor.tell buffer
|
7
|
+
else
|
8
|
+
dropped.push thing
|
9
|
+
end
|
10
|
+
}
|
11
|
+
if dropped.length > 0
|
12
|
+
actor.tell "#{you.pronoun.Subj} drop #{dropped.join_and}."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
respond :drop, Use.text("all", "everything") do |actor, text|
|
17
|
+
children = actor.children.that_are_not(:attached?)
|
18
|
+
if children.length == 0
|
19
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} have anything to drop."
|
20
|
+
else
|
21
|
+
dropped = []
|
22
|
+
children.each { |child|
|
23
|
+
buffer = actor.quietly :drop, child
|
24
|
+
if child.parent != actor
|
25
|
+
dropped.push child
|
26
|
+
else
|
27
|
+
actor.tell buffer
|
28
|
+
end
|
29
|
+
}
|
30
|
+
if dropped.length > 0
|
31
|
+
actor.tell "#{you.pronoun.Subj} drop #{dropped.join_and}."
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
respond :drop, Use.text("all", "everything"), Use.text("but", "except"), Use.children do |actor, text1, text2, exception|
|
37
|
+
children = actor.children.that_are_not(:attached?)
|
38
|
+
if children.length == 0
|
39
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} have anything to drop."
|
40
|
+
else
|
41
|
+
dropped = []
|
42
|
+
children.each { |child|
|
43
|
+
next if exception == child
|
44
|
+
buffer = actor.quietly :drop, child
|
45
|
+
if child.parent != actor
|
46
|
+
dropped.push child
|
47
|
+
else
|
48
|
+
actor.tell buffer
|
49
|
+
end
|
50
|
+
}
|
51
|
+
if dropped.length > 0
|
52
|
+
actor.tell "#{you.pronoun.Subj} drop #{dropped.join_and}."
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
respond :drop, Use.text("all", "everything"), Use.text("but", "except"), Use.text do |actor, text1, text2, text3|
|
58
|
+
actor.tell "I understand you want to drop #{text1} but don't know what you're trying to exclude with \"#{text3}.\""
|
59
|
+
end
|
60
|
+
|
61
|
+
respond :drop, Use.text("all", "everything"), Use.text("but", "except"), Use.many_children do |actor, text1, text2, exceptions|
|
62
|
+
children = actor.children.that_are_not(:attached?)
|
63
|
+
if children.length == 0
|
64
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} have anything to drop."
|
65
|
+
else
|
66
|
+
dropped = []
|
67
|
+
children.each { |child|
|
68
|
+
next if exceptions.include?(child)
|
69
|
+
buffer = actor.quietly :drop, child
|
70
|
+
if child.parent != actor
|
71
|
+
dropped.push child
|
72
|
+
else
|
73
|
+
actor.tell buffer
|
74
|
+
end
|
75
|
+
}
|
76
|
+
if dropped.length > 0
|
77
|
+
actor.tell "#{you.pronoun.Subj} drop #{dropped.join_and}."
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
respond :drop, Use.text("all", "everything"), Use.text("but", "except"), Use.plural_children do |actor, text1, text2, exceptions|
|
83
|
+
children = actor.children.that_are_not(:attached?)
|
84
|
+
actor.perform :drop, children - exceptions
|
85
|
+
end
|
86
|
+
|
87
|
+
respond :drop, Use.text("all", "everything"), Use.text("but", "except"), Use.any_expression, Use.ambiguous_children do |actor, text1, text2, text3, exceptions|
|
88
|
+
children = actor.children.that_are_not(:attached?)
|
89
|
+
actor.perform :drop, children - exceptions
|
90
|
+
end
|
91
|
+
|
92
|
+
respond :drop, Use.any_expression, Use.ambiguous_children do |actor, text1, things|
|
93
|
+
filtered = things.clone
|
94
|
+
filtered.delete_if{|t| t.parent != actor}
|
95
|
+
if filtered.length == 0
|
96
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.be + ' not')} carrying anything that matches your terms."
|
97
|
+
else
|
98
|
+
dropped = []
|
99
|
+
things.each { |thing|
|
100
|
+
if thing.parent == actor
|
101
|
+
buffer = actor.quietly :drop, thing
|
102
|
+
if thing.parent == actor
|
103
|
+
actor.tell buffer
|
104
|
+
else
|
105
|
+
dropped.push thing
|
106
|
+
end
|
107
|
+
end
|
108
|
+
}
|
109
|
+
if dropped.length > 0
|
110
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.drop} #{dropped.join_and}."
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
respond :drop, Use.any_expression, Use.ambiguous_children, Use.text("except", "but"), Use.any_expression, Use.ambiguous_children do |actor, _, things, _, exceptions|
|
116
|
+
actor.perform :drop, things - exceptions
|
117
|
+
end
|
118
|
+
|
119
|
+
respond :drop, Use.not_expression, Use.ambiguous_children do |actor, _, exceptions|
|
120
|
+
children = actor.children
|
121
|
+
actor.perform :drop, children - exceptions
|
122
|
+
end
|
123
|
+
|
124
|
+
respond :drop, Use.plural_children do |actor, things|
|
125
|
+
actor.perform "drop #{things.join(' and ')}"
|
126
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
respond :insert, Use.text("all", "everything"), Use.reachable(Receptacle) do |actor, text, receptacle|
|
2
|
+
children = actor.children.that_are_not(:attached?)
|
3
|
+
if children.length == 0
|
4
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.be + ' not'} carrying anything to put in #{the receptacle}."
|
5
|
+
else
|
6
|
+
inserted = []
|
7
|
+
children.each { |child|
|
8
|
+
buffer = actor.quietly :insert, child, receptacle
|
9
|
+
if child.parent != receptacle
|
10
|
+
actor.tell buffer
|
11
|
+
else
|
12
|
+
inserted.push child
|
13
|
+
end
|
14
|
+
}
|
15
|
+
if inserted.length > 0
|
16
|
+
actor.tell "#{you.pronoun.Subj} put #{inserted.join_and} in #{the receptacle}."
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
respond :insert, Use.many_children, Use.reachable(Receptacle) do |actor, children, receptacle|
|
22
|
+
inserted = []
|
23
|
+
children.each { |child|
|
24
|
+
buffer = actor.quietly :insert, child, receptacle
|
25
|
+
if child.parent != receptacle
|
26
|
+
actor.tell buffer
|
27
|
+
else
|
28
|
+
inserted.push child
|
29
|
+
end
|
30
|
+
}
|
31
|
+
if inserted.length > 0
|
32
|
+
actor.tell "#{you.pronoun.Subj} put #{inserted.join_and} in #{the receptacle}."
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
respond :insert, Use.many_children, Use.reachable(Container) do |actor, children, container|
|
37
|
+
if container.open?
|
38
|
+
actor.proceed
|
39
|
+
else
|
40
|
+
actor.tell "#{The container} is closed."
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
respond :insert, Use.any_expression, Use.ambiguous_children, Use.reachable(Receptacle) do |actor, _, children, _, receptacle|
|
45
|
+
actor.perform :insert, children, receptacle
|
46
|
+
end
|
47
|
+
|
48
|
+
respond :insert, Use.any_expression, Use.ambiguous_children, Use.reachable(Receptacle) do |actor, _, children, _, receptacle|
|
49
|
+
actor.perform :insert, children, receptacle
|
50
|
+
end
|
51
|
+
|
52
|
+
respond :insert, Use.text("everything", "all"), Use.text("except", "but"), Use.ambiguous_children, Use.reachable(Receptacle) do |actor, _, _, exceptions, receptacle|
|
53
|
+
children = Use.children.context_from(actor).that_are_not(:attached?)
|
54
|
+
actor.perform :insert, children - exceptions, receptacle
|
55
|
+
end
|
56
|
+
|
57
|
+
respond :insert, Use.any_expression, Use.ambiguous_children, Use.reachable(Receptacle) do |actor, _, children, receptacle|
|
58
|
+
actor.perform :insert, children, receptacle
|
59
|
+
end
|
60
|
+
|
61
|
+
respond :insert, Use.not_expression, Use.ambiguous_children, Use.reachable(Receptacle) do |actor, _, exceptions, receptacle|
|
62
|
+
children = Use.children.context_from(actor).that_are_not(:attached?)
|
63
|
+
actor.perform :insert, children - exceptions, receptacle
|
64
|
+
end
|
65
|
+
|
66
|
+
respond :insert, Use.plural_children, Use.reachable(Receptacle) do |actor, children, receptacle|
|
67
|
+
actor.perform :insert, children, receptacle
|
68
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
respond :place, Use.many_children, Use.reachable(Supporter) do |actor, children, supporter|
|
2
|
+
placed = []
|
3
|
+
children.each { |child|
|
4
|
+
buffer = actor.quietly :place, child, supporter
|
5
|
+
if child.parent != supporter
|
6
|
+
actor.tell buffer
|
7
|
+
else
|
8
|
+
placed.push child
|
9
|
+
end
|
10
|
+
}
|
11
|
+
if placed.length > 0
|
12
|
+
actor.tell "You put #{placed.join_and} on #{the supporter}."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
respond :place, Use.any_expression, Use.ambiguous_children, Use.reachable(Supporter) do |actor, _, children, supporter|
|
17
|
+
actor.perform :place, children, supporter
|
18
|
+
end
|
19
|
+
|
20
|
+
respond :place, Use.text("all", "everything"), Use.reachable(Supporter) do |actor, _, supporter|
|
21
|
+
children = Use.children.context_from(actor).that_are_not(:attached?)
|
22
|
+
actor.perform :place, children, supporter
|
23
|
+
end
|
24
|
+
|
25
|
+
respond :place, Use.text("all", "everything"), Use.text("except", "but"), Use.ambiguous_children, Use.reachable(Supporter) do |actor, _, _, exceptions, supporter|
|
26
|
+
children = Use.children.context_from(actor).that_are_not(:attached?)
|
27
|
+
actor.perform :place, children - exceptions, supporter
|
28
|
+
end
|
29
|
+
|
30
|
+
respond :place, Use.not_expression, Use.ambiguous_children, Use.reachable(Supporter) do |actor, _, exceptions, supporter|
|
31
|
+
children = Use.children.context_from(actor).that_are_not(:attached?)
|
32
|
+
actor.perform :place, children - exceptions, supporter
|
33
|
+
end
|
34
|
+
|
35
|
+
respond :place, Use.plural_children, Use.reachable(Supporter) do |actor, children, supporter|
|
36
|
+
actor.perform :place, children, supporter
|
37
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
respond :take, Use.many_visible do |actor, things|
|
2
|
+
filtered = things.clone
|
3
|
+
filtered.delete_if{ |t| t.parent == actor }
|
4
|
+
if filtered.length == 0
|
5
|
+
output = "There's nothing to take that matches your terms." + (things.length > 0 ? "(You're already carrying #{things.join_and}.)" : '')
|
6
|
+
actor.tell output
|
7
|
+
else
|
8
|
+
taken = []
|
9
|
+
filtered.each { |thing|
|
10
|
+
buffer = actor.quietly :take, thing
|
11
|
+
if thing.parent != actor
|
12
|
+
actor.tell buffer
|
13
|
+
else
|
14
|
+
taken.push thing
|
15
|
+
end
|
16
|
+
}
|
17
|
+
if taken.length > 0
|
18
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{taken.join_and}."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
respond :take, Use.text("all", "everything") do |actor, text|
|
24
|
+
children = actor.parent.children.that_are_not(:attached?).that_are(:portable?)
|
25
|
+
if actor.parent != actor.room and actor.parent.kind_of?(Supporter)
|
26
|
+
children += actor.room.children.that_are_not(:attached?).that_are(:portable?)
|
27
|
+
end
|
28
|
+
if children.length == 0
|
29
|
+
actor.tell "There's nothing obvious to take."
|
30
|
+
else
|
31
|
+
taken = []
|
32
|
+
children.each { |child|
|
33
|
+
buffer = actor.quietly :take, child
|
34
|
+
if child.parent == actor
|
35
|
+
taken.push child
|
36
|
+
else
|
37
|
+
actor.tell buffer
|
38
|
+
end
|
39
|
+
}
|
40
|
+
if taken.length > 0
|
41
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{taken.join_and}."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
respond :take, Use.text("all", "everything"), Use.text do |actor, text1, text2|
|
47
|
+
actor.tell "I understand that you want to take #{text1} but did not understand \"#{text2}.\""
|
48
|
+
end
|
49
|
+
|
50
|
+
respond :take, Use.text("all", "everything"), Use.text("but", "except"), Use.visible do |actor, text1, text2, exception|
|
51
|
+
children = actor.parent.children.that_are_not(:attached?).that_are(:portable?)
|
52
|
+
if actor.parent != actor.room and actor.parent.kind_of?(Supporter)
|
53
|
+
children += actor.room.children.that_are_not(:attached?).that_are(:portable?)
|
54
|
+
end
|
55
|
+
if children.length == 0
|
56
|
+
actor.tell "There's nothing obvious to take."
|
57
|
+
else
|
58
|
+
taken = []
|
59
|
+
children.each { |child|
|
60
|
+
next if exception == child
|
61
|
+
buffer = actor.quietly :take, child
|
62
|
+
if child.parent == actor
|
63
|
+
taken.push child
|
64
|
+
else
|
65
|
+
actor.tell buffer
|
66
|
+
end
|
67
|
+
}
|
68
|
+
if taken.length > 0
|
69
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{taken.join_and}."
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
respond :take, Use.any_expression, Use.ambiguous_visible(:portable?) do |actor, text, things|
|
75
|
+
filtered = things.clone
|
76
|
+
filtered.delete_if{|t| t.parent == actor}
|
77
|
+
if filtered.length == 0
|
78
|
+
actor.tell "There's nothing to take that matches your terms. (#{you.contract you.pronoun.Subj + ' are'} already carrying #{things.join_and}.)"
|
79
|
+
#elsif filtered.length == 1
|
80
|
+
# actor.proceed
|
81
|
+
else
|
82
|
+
taken = []
|
83
|
+
filtered.each { |thing|
|
84
|
+
buffer = actor.quietly :take, thing
|
85
|
+
if thing.parent != actor
|
86
|
+
actor.tell buffer
|
87
|
+
else
|
88
|
+
taken.push thing
|
89
|
+
end
|
90
|
+
}
|
91
|
+
if taken.length > 0
|
92
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{taken.join_and}."
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
respond :take, Use.any_expression, Use.ambiguous_visible, Use.text("except", "but"), Use.any_expression, Use.ambiguous_visible do |actor, _, things, _, _, exceptions|
|
98
|
+
actor.perform :take, things - exceptions
|
99
|
+
end
|
100
|
+
|
101
|
+
respond :take, Use.text("all", "everything"), Use.text("but", "except"), Use.many_visible do |actor, text1, text2, exceptions|
|
102
|
+
visible = Use.many_visible.context_from(actor)
|
103
|
+
actor.perform :take, visible - exceptions
|
104
|
+
end
|
105
|
+
|
106
|
+
respond :take, Use.text("all", "everything"), Use.text("but", "except"), Use.any_expression, Use.ambiguous_visible do |actor, _, _, _, exceptions|
|
107
|
+
visible = Use.many_visible.context_from(actor)
|
108
|
+
actor.perform :take, visible - exceptions
|
109
|
+
end
|
110
|
+
|
111
|
+
respond :take, Use.text("all", "everything"), Use.text("but", "except"), Use.text do |actor, _, _, exceptions|
|
112
|
+
actor.tell "I don't understand what you're trying to exclude with \"#{exceptions}.\""
|
113
|
+
end
|
114
|
+
|
115
|
+
respond :take, Use.text("all", "everything"), Use.text("but", "except"), Use.plural_visible do |actor, _, _, exceptions|
|
116
|
+
visible = Use.visible.context_from(actor)
|
117
|
+
actor.perform :take, visible - exceptions
|
118
|
+
end
|
119
|
+
|
120
|
+
respond :take, Use.any_expression, Use.ambiguous_visible, Use.text("except", "but"), Use.visible do |actor, text1, things, text2, exception|
|
121
|
+
actor.perform :take, things - [exception]
|
122
|
+
end
|
123
|
+
|
124
|
+
respond :take, Use.any_expression, Use.ambiguous_visible, Use.text("except", "but"), Use.ambiguous_visible do |actor, text1, things, text2, exceptions|
|
125
|
+
actor.perform :take, things - exceptions
|
126
|
+
end
|
127
|
+
|
128
|
+
respond :take, Use.any_expression, Use.ambiguous_visible, Use.text("except", "but"), Use.plural_visible do |actor, text1, things, text2, exceptions|
|
129
|
+
actor.perform :take, things - exceptions
|
130
|
+
end
|
131
|
+
|
132
|
+
respond :take, Use.any_expression, Use.ambiguous_visible, Use.text("except", "but"), Use.any_expression, Use.ambiguous_visible do |actor, _, things, _, _, exceptions|
|
133
|
+
actor.perform :take, things - exceptions
|
134
|
+
end
|
135
|
+
|
136
|
+
respond :take, Use.ambiguous_visible, Use.text("things", "items", "stuff") do |actor, things, _|
|
137
|
+
actor.perform :take, things
|
138
|
+
end
|
139
|
+
|
140
|
+
respond :take, Use.plural_visible do |actor, things|
|
141
|
+
actor.perform :take, things
|
142
|
+
end
|
143
|
+
|
144
|
+
respond :take, Use.not_expression, Use.ambiguous_visible do |actor, _, exceptions|
|
145
|
+
visible = Use.visible.context_from(actor)
|
146
|
+
actor.perform :take, visible - exceptions
|
147
|
+
end
|
148
|
+
|
149
|
+
respond :take, Use.text("all", "everything"), Use.from_expression, Use.reachable(Receptacle) do |actor, _, _, receptacle|
|
150
|
+
children = receptacle.children.that_are_not(:attached?)
|
151
|
+
if children.length == 0
|
152
|
+
actor.tell "There's nothing inside #{the receptacle}."
|
153
|
+
else
|
154
|
+
taken = []
|
155
|
+
children.each { |child|
|
156
|
+
buffer = actor.quietly :take, child
|
157
|
+
if child.parent != actor
|
158
|
+
actor.tell buffer
|
159
|
+
else
|
160
|
+
taken.push child
|
161
|
+
end
|
162
|
+
}
|
163
|
+
if taken.length > 0
|
164
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{taken.join_and} from #{the receptacle}."
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
respond :take, Use.text("all","everything"), Use.reachable(Container) do |actor, text, container|
|
170
|
+
if container.open?
|
171
|
+
actor.proceed
|
172
|
+
else
|
173
|
+
actor.tell "#{The container} is closed."
|
174
|
+
end
|
175
|
+
end
|