forked from elanthia-online/dr-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommon-theurgy.lic
More file actions
226 lines (188 loc) · 8.01 KB
/
Copy pathcommon-theurgy.lic
File metadata and controls
226 lines (188 loc) · 8.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
#quiet
=begin
Documentation: https://elanthipedia.play.net/Lich_script_development#common-arcana
=end
custom_require.call(%w[common common-items common-travel])
module DRCTH
module_function
CLERIC_ITEMS = [
'holy water', 'holy oil', 'wine', 'incense', 'flint', 'chamomile', 'sage', 'jalbreth balm'
] unless defined?(CLERIC_ITEMS)
COMMUNE_ERRORS = [
'You stop as you realize that you have attempted a commune',
'completed this commune too recently'
] unless defined?(COMMUNE_ERRORS)
DEVOTION_LEVELS = [
'You sense nothing special from your communing',
'You feel unclean and unworthy',
'You close your eyes and start to concentrate',
'You call out to your god, but there is no answer',
'After a moment, you sense that your god is barely aware of you',
'After a moment, you sense that your efforts have not gone unnoticed',
'After a moment, you sense a distinct link between you and your god',
'After a moment, you sense that your god is aware of your devotion',
'After a moment, you sense that your god knows your name',
'After a moment, you sense that your god is pleased with your devotion',
'After a moment, you see a vision of your god, though the visage is cloudy',
'After a moment, you sense a slight pressure on your shoulder',
'After a moment, you see a silent vision of your god',
'After a moment, you see a vision of your god who calls to you by name, "Come here, my child',
'After a moment, you see a vision of your god who calls to you by name, "My child, though you may',
'After a moment, you see a crystal-clear vision of your god who speaks slowly and deliberately',
'After a moment, you feel a clear presence like a warm blanket covering you'
] unless defined?(DEVOTION_LEVELS)
def has_holy_water?(theurgy_supply_container, water_holder)
DRCI.get_item?(water_holder, theurgy_supply_container)
has_water = DRCI.inside?('holy water', water_holder)
DRCI.put_away_item?(water_holder, theurgy_supply_container)
return has_water
end
def has_holy_oil?(theurgy_supply_container)
DRCI.have_item_by_look?('holy oil', theurgy_supply_container)
end
def has_incense?(theurgy_supply_container)
DRCI.have_item_by_look?('incense', theurgy_supply_container)
end
def has_jalbreth_balm?(theurgy_supply_container)
DRCI.have_item_by_look?('jalbreth balm', theurgy_supply_container)
end
def buying_cleric_item_requires_bless?(town, item_name)
town_theurgy_data = get_data('theurgy')[town]
return if town_theurgy_data.nil?
item_shop_data = town_theurgy_data["#{item_name}_shop"]
return if item_shop_data.nil?
return item_shop_data['needs_bless']
end
def buy_cleric_item?(town, item_name, stackable, num_to_buy, theurgy_supply_container)
town_theurgy_data = get_data('theurgy')[town]
return false if town_theurgy_data.nil?
item_shop_data = town_theurgy_data["#{item_name}_shop"]
return false if item_shop_data.nil?
DRCT.walk_to(item_shop_data['id'])
if stackable
num_to_buy.times do
buy_single_supply(item_name, item_shop_data)
if DRCI.get_item?(item_name, theurgy_supply_container)
DRC.bput("combine #{item_name} with #{item_name}", 'You combine', 'You can\'t combine', 'You must be holding')
end
# Put this back in the container each cycle so it doesn't interfere
# with bless of next purchase.
DRCI.put_away_item?(item_name, @theurgy_supply_container)
end
else
num_to_buy.times do
buy_single_supply(item_name, item_shop_data)
DRCI.put_away_item?(item_name, theurgy_supply_container)
end
end
return true
end
def buy_single_supply(item_name, shop_data)
if shop_data['method']
send(shop_data['method'])
else
DRCT.buy_item(shop_data['id'], item_name)
end
return unless shop_data['needs_bless'] && @known_spells.include?('Bless')
quick_bless_item(item[:name])
end
def quick_bless_item(item_name)
# use dummy settings object since this isn't complex enough for camb, etc.
DRCA.cast_spell({
'abbrev' => 'bless', 'mana' => 1, 'prep_time' => 2, 'cast' => "cast my #{item_name}"
}, {})
end
def empty_cleric_hands(theurgy_supply_container)
empty_cleric_right_hand(theurgy_supply_container)
empty_cleric_left_hand(theurgy_supply_container)
end
def empty_cleric_right_hand(theurgy_supply_container)
return if DRC.right_hand.nil?
container = CLERIC_ITEMS.any? { |item| DRC.right_hand =~ /#{item}/i } ? theurgy_supply_container : nil
DRCI.put_away_item?(DRC.right_hand, container)
end
def empty_cleric_left_hand(theurgy_supply_container)
return if DRC.left_hand.nil?
container = CLERIC_ITEMS.any? { |item| DRC.left_hand =~ /#{item}/i } ? theurgy_supply_container : nil
DRCI.put_away_item?(DRC.left_hand, container)
end
def sprinkle_holy_water(theurgy_supply_container, water_holder, target)
DRCI.get_item?(water_holder, theurgy_supply_container)
sprinkle?(water_holder, target)
DRCI.put_away_item?(water_holder, theurgy_supply_container)
end
def sprinkle_holy_oil(theurgy_supply_container, target)
DRCI.get_item?('holy oil', theurgy_supply_container)
sprinkle?('oil', target)
DRCI.put_away_item?('holy oil', theurgy_supply_container) if DRCI.in_hands?('oil')
end
def sprinkle?(item, target)
result = DRC.bput("sprinkle #{item} on #{target}", 'You sprinkle', 'Sprinkle what', 'What were you referring to')
result =~ /'You sprinkle'/
end
def apply_jalbreth_balm(theurgy_supply_container, target)
DRCI.get_item?('jalbreth balm', theurgy_supply_container)
DRC.bput("apply balm to #{target}", '.*')
DRCI.put_away_item?('jalbreth balm', theurgy_supply_container) if DRCI.in_hands?('balm')
end
def wave_incense?(theurgy_supply_container, flint_lighter, target)
empty_cleric_hands(theurgy_supply_container)
if !DRCI.get_item?(flint_lighter)
DRC.message("Can't find #{flint_lighter} to light incense")
return false
end
if !DRCI.get_item?('incense', theurgy_supply_container)
DRC.message("Can't find incense to light")
empty_cleric_hands(theurgy_supply_container)
return false
end
lighting_attempts = 0
while DRC.bput('light my incense with my flint', 'nothing happens', 'bursts into flames', 'much too dark in here to do that') == 'nothing happens'
waitrt?
lighting_attempts += 1
if (lighting_attempts >= 5)
DRC.message("Can't light your incense for some reason. Tried 5 times, giving up.")
empty_cleric_hands
return false
end
end
DRC.bput("wave my incense at #{target}", 'You wave')
DRC.bput('snuff my incense', 'You snuff out') if DRCI.in_hands?('incense')
DRCI.put_away_item?(flint_lighter)
empty_cleric_hands(theurgy_supply_container)
return true
end
def commune_sense
DRC.bput('commune sense', 'Roundtime:')
pause 0.5
commune_ready = true
active_communes = []
recent_communes = []
theurgy_lines = reget(50).map(&:strip)
theurgy_lines.each do |line|
case line
when /You will not be able to open another divine conduit yet/
commune_ready = false
when /Tamsine\'s benevolent eyes are upon you/, /The miracle of Tamsine has manifested about you/
active_communes << 'Tamsine'
when /You are under the auspices of Kertigen/
active_communes << 'Kertigen'
when /Meraud's influence is woven into the area/
active_communes << 'Meraud'
when /The waters of Eluned are still in your thoughts/
recent_communes << 'Eluned'
when /You have been recently enlightened by Tamsine/
recent_communes << 'Tamsine'
when /The sounds of Kertigen\'s forge still ring in your ears/
recent_communes << 'Kertigen'
when /You are still captivated by Truffenyi\'s favor/
recent_communes << 'Truffenyi'
end
end
return {
'active_communes' => active_communes,
'recent_communes' => recent_communes,
'commune_ready' => commune_ready
}
end
end