forked from rpherbig/dr-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
healer.lic
138 lines (119 loc) · 2.94 KB
/
healer.lic
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
=begin
Documentation: https://elanthipedia.play.net/Lich_script_development#healer
=end
no_pause_all
custom_require.call %w[common common-arcana common-healing common-items]
class Healer
include DRC
include DRCH
include DRCI
include DRCA
def empty_hands
echo 'Emptying hands' if debug?
@left = checkleft
echo "@left: #{@left}" if debug?
@right = checkright
echo "@right: #{@right}" if debug?
stow_hands
end
def stop_training
pause 1 until pause_all
end
def start_training
return if running?('healme')
fput("get my #{@right}") if @right
fput("get my #{@left}") if @left
@left = nil
@right = nil
unpause_all
end
def ready_for_patient
# return false if Script.running?('healme')
return false if @last_heal_check && Time.now - @last_heal_check < 10
health = check_health
@last_heal_check = Time.now
return false if health['diseased']
return false if health['poisoned']
return false if checkhealth < 70
return false unless health['wounds'].empty?
true
end
def heal_self
return if Script.running?('healme')
start_script('healme')
end
def heal_person
name = @queue.first
echo "Healing #{name}" if debug?
@patient = name
return if @touched && @touched >= Time.now
unless @touched
@touched = Time.now + 12
pause 1
waitrt?
fput("touch #{name}")
put("transfer #{name} vit quick")
put("transfer #{name} vit quick")
put("transfer #{name} vit quick")
pause
fput("transfer #{name} quick poison")
fput("transfer #{name} quick disease")
fput("transfer #{name} quick all")
heal_self
end
case bput("touch #{name}", 'no injuries to speak of', 'leech on \w+ (right|left)?\s*\w+', 'vitality', 'Touch what')
when /injuries/
@queue.shift
@touched = false
@patient = false
fput("whisper #{name} Done!")
heal_self
when /leech on \w+ ((right|left)?\s*\w+)/
fput("tend #{name} #{Regexp.last_match(1)}")
pause
when /touch what/i
@queue.shift
@touched = false
@patient = false
else
@touched = Time.now + 12
end
end
def debug?
UserVars.healer_debug
end
def initialize
@right = nil
echo "@right: #{@right}" if debug?
@left = nil
echo "@left: #{@left}" if debug?
@queue = []
end
def run(line)
fix_standing
unless line
pause 0.5
return
end
if @queue.first && ready_for_patient
heal_person
elsif @patient
heal_person
elsif (@patient || @queue.first) && !ready_for_patient
heal_self
elsif @queue.empty? && !Script.running?('healme')
start_training
end
return if line !~ /^(\w+) whispers, "heal"$/
if @temp == Regexp.last_match(1)
@queue << Regexp.last_match(1)
@temp = nil
else
@temp = Regexp.last_match(1)
end
end
end
healer = Healer.new
loop do
healer.run(script.gets?)
end