gamefic-sdk 1.0.0 → 1.0.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/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,31 @@
|
|
1
|
+
respond :talk do |actor|
|
2
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.talk} to #{you.pronoun.reflex}."
|
3
|
+
end
|
4
|
+
|
5
|
+
respond :talk, Query::Self.new do |actor, yourself|
|
6
|
+
actor.perform :talk
|
7
|
+
end
|
8
|
+
|
9
|
+
respond :talk, Query::Reachable.new do |actor, thing|
|
10
|
+
actor.tell "Nothing happens."
|
11
|
+
end
|
12
|
+
|
13
|
+
respond :talk, Query::Reachable.new(Character) do |actor, character|
|
14
|
+
if actor == character
|
15
|
+
actor.perform :talk
|
16
|
+
else
|
17
|
+
actor.tell "#{The character} has nothing to say."
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
respond :talk, Query::Reachable.new(Character), Query::Text.new do |actor, character, text|
|
22
|
+
actor.perform :talk, character
|
23
|
+
end
|
24
|
+
|
25
|
+
xlate "talk to :character", "talk :character"
|
26
|
+
xlate "talk to :character about :subject", "talk :character :subject"
|
27
|
+
xlate "ask :character :subject", "talk :character :subject"
|
28
|
+
xlate "ask :character about :subject", "talk :character :subject"
|
29
|
+
xlate "tell :character :subject", "talk :character :subject"
|
30
|
+
xlate "tell :character about :subject", "talk :character :subject"
|
31
|
+
xlate "ask :character for :subject", "talk :character :subject"
|
@@ -0,0 +1,77 @@
|
|
1
|
+
respond :unlock, 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 :unlock, Query::Reachable.new() do |actor, thing|
|
6
|
+
actor.tell "#{you.pronoun.Subj} can't unlock #{the thing}."
|
7
|
+
end
|
8
|
+
|
9
|
+
respond :unlock, Query::Reachable.new(Lockable) do |actor, container|
|
10
|
+
# Portable containers need to be picked up before they are unlocked.
|
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? == false
|
18
|
+
actor.tell "#{The container} isn't 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 unlock #{the container}."
|
29
|
+
else
|
30
|
+
actor.tell "#{you.pronoun.Subj} #{you.verb.unlock} #{the container} with #{the key}."
|
31
|
+
container.locked = false
|
32
|
+
end
|
33
|
+
#takeelse
|
34
|
+
# actor.tell "What do you want to unlock #{the container} with?"
|
35
|
+
#end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
respond :unlock, Query::Reachable.new(Lockable), Query::Text.new do |actor, container, thing|
|
40
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} have anything called '#{thing}.'"
|
41
|
+
end
|
42
|
+
|
43
|
+
respond :unlock, Query::Reachable.new(Lockable, :has_lock_key?), Query::Children.new do |actor, container, key|
|
44
|
+
if container.is?(:locked)
|
45
|
+
if container.key == key
|
46
|
+
#if container.is?(:not_auto_lockable)
|
47
|
+
# container.is :auto_lockable
|
48
|
+
# actor.perform :unlock, container
|
49
|
+
# container.is :not_auto_lockable
|
50
|
+
#else
|
51
|
+
actor.perform :unlock, container
|
52
|
+
#end
|
53
|
+
else
|
54
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.can + ' not'} unlock #{the container} with #{the key}."
|
55
|
+
end
|
56
|
+
else
|
57
|
+
actor.tell "#{The container} isn't locked."
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
respond :open, Query::Reachable.new(Lockable, :has_lock_key?), Query::Children.new do |actor, container, key|
|
62
|
+
if container.is?(:locked)
|
63
|
+
actor.perform :unlock, container, key
|
64
|
+
if !container.is?(:locked)
|
65
|
+
actor.perform :open, container
|
66
|
+
end
|
67
|
+
else
|
68
|
+
actor.perform :open, container
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
respond :use, Query::Children.new, Query::Reachable.new(Lockable, :has_lock_key?) do |actor, key, container|
|
73
|
+
actor.perform :unlock, container, key
|
74
|
+
end
|
75
|
+
|
76
|
+
xlate "unlock :container with :key", "unlock :container :key"
|
77
|
+
xlate "open :container with :key", "open :container :key"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
respond :use, Query::Reachable.new do |actor, tool|
|
2
|
+
actor.tell "I don't know how to use #{the tool}. (A more specific command might work.)"
|
3
|
+
end
|
4
|
+
|
5
|
+
respond :use, Gamefic::Query::Text.new do |actor, thing|
|
6
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} see any '#{thing}' #{you.pronoun.subj} can use here."
|
7
|
+
end
|
8
|
+
|
9
|
+
respond :use, Query::Reachable.new, Query::Reachable.new do |actor, tool, object|
|
10
|
+
actor.tell "#{you.contract you.pronoun.Subj + ' ' + you.verb.be} not carrying the #{tool}."
|
11
|
+
end
|
12
|
+
|
13
|
+
respond :use, Gamefic::Query::Children.new, Gamefic::Query::Text.new do |actor, tool, object|
|
14
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} see any '#{object}' here."
|
15
|
+
end
|
16
|
+
|
17
|
+
respond :use, Query::Text.new, Query::Reachable.new do |actor, tool, object|
|
18
|
+
actor.tell "#{you.pronoun.Subj} #{you.contract you.verb.do + ' not'} have anything called '#{tool}.'"
|
19
|
+
end
|
20
|
+
|
21
|
+
respond :use, Query::Children.new, Query::Reachable.new do |actor, tool, object|
|
22
|
+
actor.tell "I don't know how to use #{the tool} on #{the object}. (A more specific command might work.)"
|
23
|
+
end
|
24
|
+
|
25
|
+
xlate "use :tool on :object", "use :tool :object"
|
@@ -0,0 +1,12 @@
|
|
1
|
+
script 'standard/entities/entity'
|
2
|
+
script 'standard/entities/character'
|
3
|
+
script 'standard/entities/container'
|
4
|
+
script 'standard/entities/door'
|
5
|
+
script 'standard/entities/fixture'
|
6
|
+
script 'standard/entities/item'
|
7
|
+
script 'standard/entities/portal'
|
8
|
+
script 'standard/entities/receptacle'
|
9
|
+
script 'standard/entities/room'
|
10
|
+
script 'standard/entities/scenery'
|
11
|
+
script 'standard/entities/rubble'
|
12
|
+
script 'standard/entities/supporter'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
script 'standard/entities/portal'
|
2
|
+
|
3
|
+
class Gamefic::Door < Gamefic::Portal
|
4
|
+
include Openable
|
5
|
+
include Lockable
|
6
|
+
|
7
|
+
serialize :open?, :locked?, :lock_key, :automatic?
|
8
|
+
|
9
|
+
def post_initialize
|
10
|
+
super
|
11
|
+
if @name.nil? and !@direction.nil?
|
12
|
+
proper_named = false
|
13
|
+
rev = @direction.reverse
|
14
|
+
self.name = "the #{@direction.adjective} door"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
def open=(bool)
|
18
|
+
super
|
19
|
+
rev = find_reverse
|
20
|
+
if !rev.nil? and rev.open? != bool
|
21
|
+
rev.open = bool
|
22
|
+
end
|
23
|
+
end
|
24
|
+
def locked=(bool)
|
25
|
+
super
|
26
|
+
rev = find_reverse
|
27
|
+
if !rev.nil? and rev.locked? != bool
|
28
|
+
rev.locked = bool
|
29
|
+
end
|
30
|
+
end
|
31
|
+
def automatic=(bool)
|
32
|
+
@automatic = bool
|
33
|
+
rev = find_reverse
|
34
|
+
if !rev.nil? and rev.automatic? != bool
|
35
|
+
rev.automatic = bool
|
36
|
+
end
|
37
|
+
end
|
38
|
+
# HACK Even though Door includes Lockable, we need
|
39
|
+
# to add the lock_key definitions here for Opal.
|
40
|
+
def lock_key
|
41
|
+
@lock_key
|
42
|
+
end
|
43
|
+
def lock_key=(entity)
|
44
|
+
@lock_key = entity
|
45
|
+
rev = find_reverse
|
46
|
+
if !rev.nil? and rev.lock_key != entity
|
47
|
+
rev.lock_key = entity
|
48
|
+
end
|
49
|
+
end
|
50
|
+
def automatic?
|
51
|
+
@automatic ||= true
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class Gamefic::Entity
|
2
|
+
include Portable
|
3
|
+
include Itemizable
|
4
|
+
include ParentRoom
|
5
|
+
include Attachable
|
6
|
+
|
7
|
+
attr_writer :locale_description
|
8
|
+
serialize :locale_description, :portable?, :itemized?, :attached?
|
9
|
+
|
10
|
+
def locale_description
|
11
|
+
@locale_description ||= ""
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Gamefic::Portal < Gamefic::Entity
|
2
|
+
attr_accessor :destination, :direction
|
3
|
+
serialize :destination, :direction
|
4
|
+
|
5
|
+
# Find the portal in the destination that returns to this portal's parent
|
6
|
+
#
|
7
|
+
# @return [Room]
|
8
|
+
def find_reverse
|
9
|
+
return nil if destination.nil?
|
10
|
+
rev = direction.reverse
|
11
|
+
if rev != nil
|
12
|
+
destination.children.that_are(Portal).each { |c|
|
13
|
+
if c.direction == rev
|
14
|
+
return c
|
15
|
+
end
|
16
|
+
}
|
17
|
+
end
|
18
|
+
nil
|
19
|
+
end
|
20
|
+
|
21
|
+
# Get the ordinal direction of this Portal
|
22
|
+
# Portals have distinct direction and name properties so games can display a
|
23
|
+
# bare compass direction for exits, e.g., "south" vs. "the southern door."
|
24
|
+
#
|
25
|
+
# @return [Direction]
|
26
|
+
def direction
|
27
|
+
@direction
|
28
|
+
end
|
29
|
+
|
30
|
+
def name
|
31
|
+
@name || direction.name
|
32
|
+
end
|
33
|
+
|
34
|
+
def synonyms
|
35
|
+
"#{super} #{@direction} #{!direction.nil? ? direction.synonyms : ''}"
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class Gamefic::Room < Gamefic::Entity
|
2
|
+
include Darkenable
|
3
|
+
include ExplicitExits
|
4
|
+
|
5
|
+
serialize :dark?, :explicit_exits?
|
6
|
+
|
7
|
+
def connect(destination, direction = nil, type = Portal, two_way = true)
|
8
|
+
if direction.nil?
|
9
|
+
portal = type.new self.plot, :parent => self, :destination => destination, :name => destination.definitely
|
10
|
+
if two_way == true
|
11
|
+
portal2 = type.new self.plot, :parent => destination, :destination => self, :name => self.definitely
|
12
|
+
end
|
13
|
+
else
|
14
|
+
if direction.kind_of?(String)
|
15
|
+
direction = Direction.find(direction)
|
16
|
+
end
|
17
|
+
portal = type.new self.plot, :direction => direction, :parent => self, :destination => destination
|
18
|
+
portal.proper_named = true if type == Portal
|
19
|
+
if two_way == true
|
20
|
+
reverse = direction.reverse
|
21
|
+
if reverse == nil
|
22
|
+
raise "#{direction.name.cap_first} does not have an opposite direction"
|
23
|
+
end
|
24
|
+
portal2 = type.new(self.plot, {
|
25
|
+
:direction => reverse,
|
26
|
+
:parent => destination,
|
27
|
+
:destination => self
|
28
|
+
})
|
29
|
+
portal2.proper_named = true if type == Portal
|
30
|
+
end
|
31
|
+
end
|
32
|
+
portal
|
33
|
+
end
|
34
|
+
def synonyms
|
35
|
+
@synonyms.to_s + " around here room"
|
36
|
+
end
|
37
|
+
def tell(message)
|
38
|
+
children.each { |c|
|
39
|
+
c.tell message
|
40
|
+
}
|
41
|
+
end
|
42
|
+
def find_portal(direction)
|
43
|
+
d = direction.to_s
|
44
|
+
portals = children.that_are(Portal).delete_if { |p| p.direction.to_s != d }
|
45
|
+
portals[0]
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
script 'standard/entities/scenery'
|
2
|
+
|
3
|
+
# Rubble is Scenery with slightly modified action responses.
|
4
|
+
# Intended for things that might be portable but are useless.
|
5
|
+
# Rule of thumb: Scenery is something that can't be carried,
|
6
|
+
# like a table or the sky; and Rubble is something that might
|
7
|
+
# be portable but is otherwise useless, like trash or debris.
|
8
|
+
|
9
|
+
class Gamefic::Rubble < Gamefic::Scenery
|
10
|
+
|
11
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
script 'standard/modules/attachable'
|
2
|
+
script 'standard/modules/auto_takes'
|
3
|
+
script 'standard/modules/darkenable'
|
4
|
+
script 'standard/modules/enterable'
|
5
|
+
script 'standard/modules/explicit_exits'
|
6
|
+
script 'standard/modules/itemizable'
|
7
|
+
script 'standard/modules/lockable'
|
8
|
+
script 'standard/modules/openable'
|
9
|
+
script 'standard/modules/parent-room'
|
10
|
+
script 'standard/modules/portable'
|
11
|
+
script 'standard/modules/transparent'
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Gamefic::AutoTakes
|
2
|
+
def auto_takes?(entity)
|
3
|
+
return true if entity.parent == self
|
4
|
+
if AutoTakes.enabled?
|
5
|
+
if AutoTakes.taking_message.to_s != ""
|
6
|
+
self.tell (AutoTakes.taking_message % {:name => entity.definitely, :Name => entity.definitely.cap_first})
|
7
|
+
end
|
8
|
+
buff = self.quietly :take, entity
|
9
|
+
if entity.parent != self
|
10
|
+
self.tell buff
|
11
|
+
false
|
12
|
+
else
|
13
|
+
if AutoTakes.taken_message.to_s != ""
|
14
|
+
self.tell (AutoTakes.taken_message % {:name => entity.definitely, :Name => entity.definitely.cap_first})
|
15
|
+
end
|
16
|
+
true
|
17
|
+
end
|
18
|
+
else
|
19
|
+
self.tell (AutoTakes.untaken_message % {:name => entity.definitely, :Name => entity.definitely.cap_first})
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
23
|
+
def self.enabled?
|
24
|
+
if @enabled.nil?
|
25
|
+
@enabled = true
|
26
|
+
end
|
27
|
+
@enabled
|
28
|
+
end
|
29
|
+
def self.enabled=(bool)
|
30
|
+
@enabled = bool
|
31
|
+
end
|
32
|
+
def self.taking_message
|
33
|
+
@taking_message ||= ""
|
34
|
+
end
|
35
|
+
def self.taking_message=(text)
|
36
|
+
@taking_message = text
|
37
|
+
end
|
38
|
+
def self.taken_message
|
39
|
+
@taken_message ||= ""
|
40
|
+
end
|
41
|
+
def self.taken_message=(text)
|
42
|
+
@taken_message = text
|
43
|
+
end
|
44
|
+
def self.untaken_message
|
45
|
+
@untaken_message ||= "You don't have %{name}."
|
46
|
+
end
|
47
|
+
def self.untaken_message=(text)
|
48
|
+
@untaken_message = text
|
49
|
+
end
|
50
|
+
end
|