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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/html/core/engine.js +89 -0
  3. data/html/core/jquery.js +5 -0
  4. data/html/core/jquery.modal.css +44 -0
  5. data/html/core/jquery.modal.js +225 -0
  6. data/html/core/js.cookie.js +137 -0
  7. data/html/skins/hypertext/compass.png +0 -0
  8. data/html/skins/hypertext/index.html +151 -0
  9. data/html/skins/hypertext/style.css +74 -0
  10. data/html/skins/minimal/index.html.erb +22 -0
  11. data/html/skins/minimal/play.js +36 -0
  12. data/html/skins/minimal/style.css +8 -0
  13. data/html/skins/multimedia/close.png +0 -0
  14. data/html/skins/multimedia/index.html +179 -0
  15. data/html/skins/multimedia/mobile.css +10 -0
  16. data/html/skins/multimedia/spinner.gif +0 -0
  17. data/html/skins/multimedia/style.css +186 -0
  18. data/html/skins/standard/index.html.erb +23 -0
  19. data/html/skins/standard/play.js +68 -0
  20. data/html/skins/standard/style.css +70 -0
  21. data/lib/gamefic-sdk/version.rb +1 -1
  22. data/scripts/ansi.plot.rb +13 -0
  23. data/scripts/autosuggest.plot.rb +171 -0
  24. data/scripts/clothing.plot.rb +2 -0
  25. data/scripts/clothing/actions.plot.rb +4 -0
  26. data/scripts/clothing/actions/doff.plot.rb +12 -0
  27. data/scripts/clothing/actions/drop.plot.rb +8 -0
  28. data/scripts/clothing/actions/inventory.plot.rb +14 -0
  29. data/scripts/clothing/actions/wear.plot.rb +19 -0
  30. data/scripts/clothing/entities.plot.rb +7 -0
  31. data/scripts/clothing/entities/clothing.plot.rb +7 -0
  32. data/scripts/clothing/entities/coat.plot.rb +5 -0
  33. data/scripts/clothing/entities/gloves.plot.rb +5 -0
  34. data/scripts/clothing/entities/hat.plot.rb +5 -0
  35. data/scripts/clothing/entities/pants.plot.rb +5 -0
  36. data/scripts/clothing/entities/shirt.plot.rb +5 -0
  37. data/scripts/clothing/entities/shoes.plot.rb +5 -0
  38. data/scripts/cover.plot.rb +30 -0
  39. data/scripts/debug.plot.rb +0 -0
  40. data/scripts/edible.plot.rb +19 -0
  41. data/scripts/furniture.plot.rb +35 -0
  42. data/scripts/hints.plot.rb +31 -0
  43. data/scripts/hypertext.plot.rb +280 -0
  44. data/scripts/media.plot.rb +17 -0
  45. data/scripts/multimedia.plot.rb +41 -0
  46. data/scripts/questions.plot.rb +17 -0
  47. data/scripts/room-modes.plot.rb +48 -0
  48. data/scripts/rough-sizes.plot.rb +36 -0
  49. data/scripts/save-restore.plot.rb +21 -0
  50. data/scripts/snapshots.plot.rb +14 -0
  51. data/scripts/standard.plot.rb +12 -0
  52. data/scripts/standard/actions.plot.rb +23 -0
  53. data/scripts/standard/actions/close.plot.rb +16 -0
  54. data/scripts/standard/actions/drop.plot.rb +11 -0
  55. data/scripts/standard/actions/enter.plot.rb +31 -0
  56. data/scripts/standard/actions/give.plot.rb +26 -0
  57. data/scripts/standard/actions/go.plot.rb +81 -0
  58. data/scripts/standard/actions/insert.plot.rb +47 -0
  59. data/scripts/standard/actions/inventory.plot.rb +8 -0
  60. data/scripts/standard/actions/leave.plot.rb +41 -0
  61. data/scripts/standard/actions/lock.plot.rb +59 -0
  62. data/scripts/standard/actions/look-under.plot.rb +8 -0
  63. data/scripts/standard/actions/look.plot.rb +102 -0
  64. data/scripts/standard/actions/nil.plot.rb +35 -0
  65. data/scripts/standard/actions/open.plot.rb +34 -0
  66. data/scripts/standard/actions/place.plot.rb +36 -0
  67. data/scripts/standard/actions/quit.plot.rb +11 -0
  68. data/scripts/standard/actions/read.plot.rb +3 -0
  69. data/scripts/standard/actions/search.plot.rb +39 -0
  70. data/scripts/standard/actions/show.plot.rb +13 -0
  71. data/scripts/standard/actions/take.plot.rb +49 -0
  72. data/scripts/standard/actions/talk.plot.rb +31 -0
  73. data/scripts/standard/actions/unlock.plot.rb +77 -0
  74. data/scripts/standard/actions/use.plot.rb +25 -0
  75. data/scripts/standard/actions/wait.plot.rb +3 -0
  76. data/scripts/standard/entities.plot.rb +12 -0
  77. data/scripts/standard/entities/character.plot.rb +9 -0
  78. data/scripts/standard/entities/container.plot.rb +11 -0
  79. data/scripts/standard/entities/door.plot.rb +53 -0
  80. data/scripts/standard/entities/entity.plot.rb +13 -0
  81. data/scripts/standard/entities/exterior.plot.rb +5 -0
  82. data/scripts/standard/entities/fixture.plot.rb +3 -0
  83. data/scripts/standard/entities/item.plot.rb +5 -0
  84. data/scripts/standard/entities/portal.plot.rb +37 -0
  85. data/scripts/standard/entities/receptacle.plot.rb +4 -0
  86. data/scripts/standard/entities/room.plot.rb +47 -0
  87. data/scripts/standard/entities/rubble.plot.rb +11 -0
  88. data/scripts/standard/entities/scenery.plot.rb +5 -0
  89. data/scripts/standard/entities/supporter.plot.rb +10 -0
  90. data/scripts/standard/modules.plot.rb +11 -0
  91. data/scripts/standard/modules/attachable.plot.rb +11 -0
  92. data/scripts/standard/modules/auto_takes.plot.rb +50 -0
  93. data/scripts/standard/modules/darkenable.plot.rb +6 -0
  94. data/scripts/standard/modules/enterable.plot.rb +15 -0
  95. data/scripts/standard/modules/explicit_exits.plot.rb +15 -0
  96. data/scripts/standard/modules/itemizable.plot.rb +18 -0
  97. data/scripts/standard/modules/lockable.plot.rb +25 -0
  98. data/scripts/standard/modules/openable.plot.rb +9 -0
  99. data/scripts/standard/modules/parent-room.plot.rb +9 -0
  100. data/scripts/standard/modules/portable.plot.rb +6 -0
  101. data/scripts/standard/modules/transparent.plot.rb +6 -0
  102. data/scripts/standard/pathfinder.plot.rb +60 -0
  103. data/scripts/standard/plural.plot.rb +2 -0
  104. data/scripts/standard/plural/actions.plot.rb +4 -0
  105. data/scripts/standard/plural/actions/drop.plot.rb +126 -0
  106. data/scripts/standard/plural/actions/insert.plot.rb +68 -0
  107. data/scripts/standard/plural/actions/place.plot.rb +37 -0
  108. data/scripts/standard/plural/actions/take.plot.rb +175 -0
  109. data/scripts/standard/plural/queries.plot.rb +5 -0
  110. data/scripts/standard/plural/queries/ambiguous_visible.plot.rb +13 -0
  111. data/scripts/standard/plural/queries/any_expression.plot.rb +17 -0
  112. data/scripts/standard/plural/queries/many_visible.plot.rb +13 -0
  113. data/scripts/standard/plural/queries/not_expression.plot.rb +16 -0
  114. data/scripts/standard/plural/queries/plural_visible.plot.rb +22 -0
  115. data/scripts/standard/queries.plot.rb +4 -0
  116. data/scripts/standard/queries/from_expression.plot.rb +16 -0
  117. data/scripts/standard/queries/reachable.plot.rb +48 -0
  118. data/scripts/standard/queries/room.plot.rb +17 -0
  119. data/scripts/standard/queries/visible.plot.rb +45 -0
  120. data/scripts/standard/rules.plot.rb +1 -0
  121. data/scripts/standard/rules/has-enough-light.plot.rb +12 -0
  122. data/scripts/standard/test.plot.rb +8 -0
  123. data/scripts/standard/use.plot.rb +29 -0
  124. data/scripts/suggestible.plot.rb +42 -0
  125. data/scripts/undo.plot.rb +11 -0
  126. metadata +149 -25
@@ -0,0 +1,8 @@
1
+ respond :inventory do |actor|
2
+ if actor.children.length > 0
3
+ actor.tell "#{you.pronoun.Subj} #{you.verb.be} carrying #{actor.children.join_and}."
4
+ else
5
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.be + ' not'} carrying anything."
6
+ end
7
+ end
8
+ xlate "i", "inventory"
@@ -0,0 +1,41 @@
1
+ respond :leave, Use.parent(Container, :enterable?) do |actor, container|
2
+ if container.open?
3
+ actor.proceed
4
+ else
5
+ actor.tell "#{The container} is closed."
6
+ end
7
+ end
8
+
9
+ respond :leave, Use.parent do |actor, thing|
10
+ actor.tell "There's no way out of #{the thing}."
11
+ end
12
+
13
+ respond :leave, Use.parent(Enterable, :enterable?) do |actor, thing|
14
+ actor.tell "#{you.pronoun.Subj} #{you.verb[thing.leave_verb]} #{the thing}."
15
+ actor.parent = thing.parent
16
+ end
17
+
18
+ respond :leave, Query::Parent.new(Room) do |actor, room|
19
+ portals = room.children.that_are(Portal)
20
+ if portals.length == 0
21
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} see any obvious exits."
22
+ elsif portals.length == 1
23
+ actor.perform :go, portals[0]
24
+ else
25
+ actor.tell "I don't know which way you want to go: #{portals.join_or}."
26
+ end
27
+ end
28
+
29
+ respond :leave do |actor|
30
+ actor.perform :leave, actor.parent
31
+ end
32
+
33
+ xlate "exit", "leave"
34
+ xlate "exit :supporter", "leave :supporter"
35
+ xlate "get off :supporter", "leave :supporter"
36
+ xlate "get up from :supporter", "leave :supporter"
37
+ xlate "get up", "leave"
38
+ xlate "get off", "leave"
39
+ xlate "get out :container", "leave :container"
40
+ xlate "get out of :container", "leave :container"
41
+ #xlate "out", "leave"
@@ -0,0 +1,59 @@
1
+ respond :lock, Query::Text.new() do |actor, string|
2
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} see any \"#{string}\" here."
3
+ end
4
+
5
+ respond :lock, Query::Reachable.new() do |actor, thing|
6
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.can + ' not'} lock #{the thing}."
7
+ end
8
+
9
+ respond :lock, Query::Reachable.new(Lockable, :has_lock_key?) do |actor, container|
10
+ # Portable containers need to be picked up before they are locked.
11
+ if container.portable? and container.parent != actor
12
+ actor.perform :take, container
13
+ if container.parent != actor
14
+ break
15
+ end
16
+ end
17
+ if container.locked?
18
+ actor.tell "It's already locked."
19
+ else
20
+ #if container.is?(:auto_lockable)
21
+ key = nil
22
+ if container.lock_key.nil? == false
23
+ if container.lock_key.parent == actor
24
+ key = container.lock_key
25
+ end
26
+ end
27
+ if key.nil?
28
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} have any way to lock #{the container}."
29
+ else
30
+ actor.tell "#{you.pronoun.Subj} #{you.verb.lock} #{the container} with #{the key}."
31
+ container.locked = true
32
+ end
33
+ #else
34
+ # actor.tell "What do you want to lock #{the container} with?"
35
+ #end
36
+ end
37
+ end
38
+
39
+ respond :lock, Query::Reachable.new(Lockable, :has_lock_key?), Query::Children.new do |actor, container, key|
40
+ if container.locked == false
41
+ if container.lock_key == key
42
+ #if container.is?(:not_auto_lockable)
43
+ # container.is :auto_lockable
44
+ # actor.perform :lock, container
45
+ # container.is :not_auto_lockable
46
+ #else
47
+ # actor.perform :lock, container
48
+ #end
49
+ actor.tell "#{you.pronoun.Subj} #{you.verb.lock} #{the container} with #{the key}."
50
+ container.locked = true
51
+ else
52
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.can + ' not'} lock #{the container} with #{the key}."
53
+ end
54
+ else
55
+ actor.tell "It's already locked."
56
+ end
57
+ end
58
+
59
+ xlate "lock :container with :key", "lock :container :key"
@@ -0,0 +1,8 @@
1
+ script 'standard/actions/look'
2
+
3
+ respond :look_under, Query::Reachable.new() do |actor, thing|
4
+ actor.tell "There's nothing to see under #{the thing}."
5
+ end
6
+
7
+ interpret "look beneath :thing", "look under :thing"
8
+ interpret "look below :thing", "look under :thing"
@@ -0,0 +1,102 @@
1
+ respond :look, Use.parent(Supporter) do |actor, supporter|
2
+ actor.tell supporter.description
3
+ actor.tell "#{you.pronoun.Subj} are currently on #{the supporter}."
4
+ end
5
+
6
+ respond :look, Query::Self.new do |actor, _|
7
+ actor.tell actor.description
8
+ actor.perform :inventory
9
+ end
10
+
11
+ respond :look, Use.room do |actor, room|
12
+ actor.tell "<strong>#{room.name.cap_first}</strong>"
13
+ actor.tell room.description
14
+ with_locales = []
15
+ chars = room.children.that_are(Character).that_are(:itemized?) - [actor]
16
+ charsum = []
17
+ chars.each { |char|
18
+ if char.locale_description != ""
19
+ with_locales.push char
20
+ else
21
+ charsum.push char
22
+ end
23
+ }
24
+ if charsum.length > 0
25
+ actor.tell "#{charsum.join_and.cap_first} #{charsum.length == 1 ? 'is' : 'are'} here."
26
+ end
27
+ items = room.children.that_are(:itemized?) - [actor] - room.children.that_are(Character) - room.children.that_are(Portal)
28
+ itemsum = []
29
+ items.each { |item|
30
+ if item.locale_description != ""
31
+ with_locales.push item
32
+ else
33
+ itemsum.push item
34
+ end
35
+ }
36
+ if itemsum.length > 0
37
+ actor.tell "#{you.pronoun.Subj} #{you.verb.see} #{itemsum.join_and}."
38
+ end
39
+ with_locales.each { |entity|
40
+ actor.tell entity.locale_description
41
+ }
42
+ if room.explicit_exits?
43
+ portals = room.children.that_are(Portal).that_are(:itemized?)
44
+ if portals.length > 0
45
+ if portals.length == 1
46
+ actor.tell "There is an exit #{portals[0].direction}."
47
+ else
48
+ dirs = []
49
+ portals.each { |p|
50
+ dirs.push (p.direction || p.name)
51
+ }
52
+ actor.tell "There are exits #{dirs.join_and(', ')}."
53
+ end
54
+ end
55
+ end
56
+ if actor.parent.kind_of?(Supporter)
57
+ actor.tell "#{you.pronoun.Subj} #{you.verb.be} on #{the actor.parent}."
58
+ actor.parent.children.that_are_not(actor).each { |s|
59
+ actor.tell "#{A s} is on #{the actor.parent}."
60
+ }
61
+ end
62
+ end
63
+ xlate "look", "look around"
64
+ xlate "l", "look around"
65
+
66
+ respond :look, Query::Visible.new() do |actor, thing|
67
+ actor.tell thing.description
68
+ thing.children.that_are(:attached?).that_are(:itemized?).each { |item|
69
+ actor.tell "#{An item} is attached to #{the thing}."
70
+ }
71
+ end
72
+
73
+ respond :look, Use.text do |actor, string|
74
+ actor.tell "You don't see any \"#{string}\" here."
75
+ end
76
+
77
+ respond :look, Use.reachable(Receptacle) do |actor, receptacle|
78
+ if receptacle.has_description?
79
+ actor.tell receptacle.description
80
+ end
81
+ actor.perform :search, receptacle
82
+ end
83
+
84
+ respond :look, Query::Visible.new(Supporter) do |actor, supporter|
85
+ actor.proceed
86
+ supported = supporter.children.that_are_not(:attached?)
87
+ if supported.length > 0
88
+ actor.tell "You see #{supported.join_and} sitting there."
89
+ end
90
+ end
91
+
92
+ respond :look, Query::Reachable.new(Door) do |actor, door|
93
+ if door.has_description?
94
+ actor.proceed
95
+ end
96
+ actor.tell "#{The door} is " + (door.open? ? 'open' : 'closed') + '.'
97
+ end
98
+
99
+ interpret "look at :thing", "look :thing"
100
+ interpret "l :thing", "look :thing"
101
+ interpret "examine :thing", "look :thing"
102
+ interpret "x :thing", "look :thing"
@@ -0,0 +1,35 @@
1
+ meta nil, Query::Text.new() do |actor, string|
2
+ words = string.split_words
3
+ if commandwords.include?(words[0])
4
+ if words.length > 1
5
+ actor.tell "I recognize '#{words[0]}' as a verb but could not understand the rest of your sentence."
6
+ else
7
+ actor.tell "I recognize '#{words[0]}' as a verb but could not understand it in this context."
8
+ end
9
+ else
10
+ found = []
11
+ commandwords.each { |c|
12
+ next if c.include?('_')
13
+ if c.length > words[0].length and c.start_with?(words[0])
14
+ found.push c
15
+ end
16
+ }
17
+ if found.length == 1
18
+ words[0] = found[0]
19
+ actor.perform words.join(' ')
20
+ elsif found.length > 1 and words[0].length > 2
21
+ actor.tell "I'm not sure if #{words[0]} means #{found.join_and(', ', ' or ')}."
22
+ else
23
+ actor.tell "I don't recognize '#{words[0]}' as a verb."
24
+ end
25
+ end
26
+ end
27
+
28
+ meta nil, Query::Text.new("it") do |actor, string|
29
+ words = string.split_words
30
+ if commandwords.include?(words[0])
31
+ actor.tell "I'm not sure what you mean by \"it.\""
32
+ else
33
+ actor.proceed
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ respond :open, Use.text do |actor, string|
2
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} see any \"#{string}\" here."
3
+ end
4
+
5
+ respond :open, Use.reachable() do |actor, thing|
6
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.can + ' not')} open #{the thing}."
7
+ end
8
+
9
+ respond :open, Use.reachable(Openable) do |actor, container|
10
+ # Portable containers need to be picked up before they are opened.
11
+ if container.portable? and container.parent != actor
12
+ actor.perform :take, container
13
+ if container.parent != actor
14
+ break
15
+ end
16
+ end
17
+ if !container.open?
18
+ actor.tell "#{you.pronoun.Subj} #{you.verb.open} #{the container}."
19
+ container.open = true
20
+ if container.children.that_are_not(:attached?).length > 0
21
+ actor.perform :search, container
22
+ end
23
+ else
24
+ actor.tell "It's already open."
25
+ end
26
+ end
27
+
28
+ respond :open, Use.reachable(Openable, Lockable) do |actor, container|
29
+ if container.locked?
30
+ actor.tell "#{The container} is locked."
31
+ else
32
+ actor.proceed
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ respond :place, Use.children, Use.reachable do |actor, thing, supporter|
2
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.can + ' not')} put #{the thing} on #{the supporter}."
3
+ end
4
+
5
+ respond :place, Use.visible, Use.reachable(Supporter) do |actor, thing, supporter|
6
+ if thing.parent != actor
7
+ actor.perform :take, thing
8
+ end
9
+ if thing.parent == actor
10
+ actor.perform :place, thing
11
+ end
12
+ end
13
+
14
+ respond :place, Use.children, Use.reachable(Supporter) do |actor, thing, supporter|
15
+ thing.parent = supporter
16
+ actor.tell "#{you.pronoun.Subj} #{you.verb.put} #{the thing} on #{the supporter}."
17
+ end
18
+
19
+ respond :place, Use.visible, Use.text do |actor, thing, supporter|
20
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} see anything called \"#{supporter}\" here."
21
+ end
22
+
23
+ respond :place, Use.text, Use.visible do |actor, thing, supporter|
24
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} see anything called \"#{thing}\" here."
25
+ end
26
+
27
+ respond :place, Use.text, Use.text do |actor, thing, supporter|
28
+ actor.tell "I don't know what you mean by \"#{thing}\" or \"#{supporter}.\""
29
+ end
30
+
31
+ xlate "put :thing on :supporter", "place :thing :supporter"
32
+ xlate "put :thing down on :supporter", "place :thing :supporter"
33
+ xlate "set :thing on :supporter", "place :thing :supporter"
34
+ xlate "set :thing down on :supporter", "place :thing :supporter"
35
+ xlate "drop :thing on :supporter", "place :thing :supporter"
36
+ xlate "place :thing on :supporter", "place :thing :supporter"
@@ -0,0 +1,11 @@
1
+ yes_or_no :confirm_quit, "Are you sure you want to quit?" do |actor, input|
2
+ if input == "yes"
3
+ actor.cue :concluded
4
+ else
5
+ actor.cue :active
6
+ end
7
+ end
8
+
9
+ meta :quit do |actor|
10
+ actor.cue :confirm_quit
11
+ end
@@ -0,0 +1,3 @@
1
+ respond :read, Query::Visible.new do |actor, thing|
2
+ actor.perform :look, thing
3
+ end
@@ -0,0 +1,39 @@
1
+ respond :search, Use.reachable(Receptacle) do |actor, receptacle|
2
+ # TODO Show the contents of the receptacle
3
+ contents = receptacle.children.that_are_not(:attached?)
4
+ if contents.length > 0
5
+ actor.tell "Inside #{contents.length > 1 ? 'are' : 'is'} #{contents.join_and}."
6
+ else
7
+ actor.tell "#{The receptacle} #{receptacle.verb.be} empty."
8
+ end
9
+ end
10
+
11
+ respond :search, Use.reachable(Container) do |actor, container|
12
+ if container.open? or container.transparent?
13
+ actor.proceed
14
+ else
15
+ actor.tell "#{The container} #{container.verb.be} closed."
16
+ end
17
+ end
18
+
19
+ respond :search, Use.reachable do |actor, thing|
20
+ actor.perform :look, thing
21
+ end
22
+
23
+ respond :search, Use.room do |actor, room|
24
+ actor.perform :look, room
25
+ end
26
+
27
+ respond :search, Use.reachable do |actor, entity|
28
+ attached = entity.children.that_are(:attached?).that_are(Container)
29
+ if attached.length > 1
30
+ actor.tell "#{you.pronoun.Subj} #{you.verb.can} search #{attached.join_or}"
31
+ elsif attached.length == 1
32
+ actor.perform :search, attached[0]
33
+ else
34
+ actor.proceed
35
+ end
36
+ end
37
+
38
+ interpret "look in :thing", "search :thing"
39
+ interpret "look inside :thing", "search :thing"
@@ -0,0 +1,13 @@
1
+ respond :show, Use.reachable(Character), Use.children do |actor, character, thing|
2
+ actor.tell "#{The character} isn't interested in #{the thing}."
3
+ end
4
+
5
+ respond :show, Use.reachable, Use.children do |actor, witness, thing|
6
+ actor.tell "Nothing happens."
7
+ end
8
+
9
+ respond :show, Use.children, Use.text do |actor, thing, text|
10
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} see any \"#{text}\" here."
11
+ end
12
+
13
+ interpret "show :thing to :character", "show :character :thing"
@@ -0,0 +1,49 @@
1
+ respond :take, Use.reachable do |actor, thing|
2
+ actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.can + ' not'} take #{the thing}."
3
+ end
4
+
5
+ respond :take, Use.visible do |actor, thing|
6
+ if thing.parent == actor.parent
7
+ actor.proceed
8
+ elsif thing.parent.kind_of?(Container) and !thing.parent.open?
9
+ actor.tell "#{The thing} is inside #{the thing.parent}, which is closed."
10
+ end
11
+ end
12
+
13
+ respond :take, Use.visible do |actor, thing|
14
+ if actor.parent.kind_of?(Supporter) and actor.parent != thing.parent and actor.parent != thing.parent.parent
15
+ actor.tell "#{you.pronoun.Subj} can't reach it from #{the actor.parent}."
16
+ else
17
+ actor.proceed
18
+ end
19
+ end
20
+
21
+ respond :take, Use.reachable(:attached?) do |actor, thing|
22
+ actor.tell "#{The thing} is attached to #{the thing.parent}."
23
+ end
24
+
25
+ respond :take, Use.reachable(Entity, :portable?) do |actor, thing|
26
+ if thing.parent == actor
27
+ actor.tell "#{you.contract(you.pronoun.subj + ' are').cap_first} already carrying #{the thing}."
28
+ else
29
+ if actor.parent != thing.parent
30
+ actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{the thing} from #{the thing.parent}."
31
+ else
32
+ actor.tell "#{you.pronoun.Subj} #{you.verb.take} #{the thing}."
33
+ end
34
+ thing.parent = actor
35
+ end
36
+ end
37
+
38
+ respond :take, Use.reachable(Gamefic::Rubble) do |actor, rubble|
39
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} have any use for #{the rubble}."
40
+ end
41
+
42
+ respond :take, Use.text do |actor, text|
43
+ actor.tell "#{you.pronoun.Subj} #{you.contract(you.verb.do + ' not')} see any \"#{text}\" here."
44
+ end
45
+
46
+ interpret "get :thing", "take :thing"
47
+ interpret "pick up :thing", "take :thing"
48
+ interpret "pick :thing up", "take :thing"
49
+ interpret "carry :thing", "take :thing"