muby 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +339 -0
- data/bin/muby +37 -0
- data/contrib/aardmud.org_4000/README.txt +39 -0
- data/contrib/aardmud.org_4000/aard-config.rb +234 -0
- data/contrib/aardmud.org_4000/aard-helpers.rb +464 -0
- data/contrib/aardmud.org_4000/aliases/aard-aliases.rb +205 -0
- data/contrib/aardmud.org_4000/gags/aard-gags.rb +182 -0
- data/contrib/aardmud.org_4000/misc/aard-affects.rb +252 -0
- data/contrib/aardmud.org_4000/misc/aard-know.rb +147 -0
- data/contrib/aardmud.org_4000/misc/aard-poznai_sebia.rb +191 -0
- data/contrib/aardmud.org_4000/misc/aard-prompts.rb +65 -0
- data/contrib/aardmud.org_4000/misc/aard-status_toggling.rb +156 -0
- data/contrib/aardmud.org_4000/misc/aard_consider_substitutions.rb +319 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-areas-hero.rb +86 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-areas-newbie.rb +98 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-areas-noble.rb +170 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-areas-vidblain.rb +88 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-areas.rb +850 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-clans.rb +43 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw-guilds.rb +13 -0
- data/contrib/aardmud.org_4000/speedwalks/aard-sw.rb +45 -0
- data/contrib/aardmud.org_4000/triggers/aard-triggers-items.rb +254 -0
- data/contrib/aardmud.org_4000/triggers/aard-triggers.rb +227 -0
- data/contrib/sy/cce.rb +120 -0
- data/lib/muby.rb +15 -0
- data/lib/muby/application.rb +66 -0
- data/lib/muby/completer.rb +62 -0
- data/lib/muby/configuration.rb +379 -0
- data/lib/muby/connection.rb +332 -0
- data/lib/muby/displayer.rb +60 -0
- data/lib/muby/help.rb +88 -0
- data/lib/muby/helper_methods.rb +46 -0
- data/lib/muby/inputwindow.rb +173 -0
- data/lib/muby/logger.rb +28 -0
- data/lib/muby/outputwindow.rb +189 -0
- data/lib/muby/style.rb +142 -0
- data/lib/muby/user_methods.rb +463 -0
- metadata +90 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Clan speedwalks
|
3
|
+
#
|
4
|
+
# FIXME: Did I miss any clans?
|
5
|
+
def _clantouchstone ; _aylor ; run "13s5en2w" end
|
6
|
+
def _clanamazon ; _aylor ; run "2sd" end
|
7
|
+
def _clanbard ; _aylor ; run "2s4e3sese;echo other stores -- run u2w or usws or us2w" end
|
8
|
+
def _clancrusader ; _aylor ; run "sw" end
|
9
|
+
def _clandominion ; _aylor ; run "n2w" end
|
10
|
+
def _clandaoine ; _aylor ; run "10s4esw2se5sd" end
|
11
|
+
def _clanlight ; _aylor ; run "22sd" end
|
12
|
+
def _clanpyre ; _aylor ; run "2s4e3s2ed" end
|
13
|
+
def _clansoulpyre ; _clanpyre end
|
14
|
+
def _clanromani ; _aylor ; run "13s5e2sen" end
|
15
|
+
def _clantanelorn ; _aylor ; run "8se" end
|
16
|
+
def _clanvanir ; _aylor ; run "ne" end
|
17
|
+
def _clanwatchmen ; _aylor ; run "6su" end
|
18
|
+
# _south ; run "nu"
|
19
|
+
def _clantao ; _south ; run "22su" end
|
20
|
+
def _tao ; _clantao end
|
21
|
+
def _clanperdition ; _aylor ; run "6sd" end
|
22
|
+
def _clanseekers ; _aylor ; run "8su" end
|
23
|
+
def _clanimperium ; _aylor ; run "se" end
|
24
|
+
def _clancabal ; _aylor ; run "2su" end
|
25
|
+
def _clandruid ; _aylor ; run "13s4e5s2u" end
|
26
|
+
def _clancrimson ; _aylor ; write "run 13s2w;open south;run 2s" end
|
27
|
+
def _clanemerald ; _aylor ; run "5swd" end
|
28
|
+
def _clanmasaki ; _aylor ; run "ne" end
|
29
|
+
def _clantwinlobe ; _aylor ; run "2neu" end
|
30
|
+
def _clanchaos ; _aylor ; run "su" end
|
31
|
+
def _clanimperium ; _aylor ; run "se" end
|
32
|
+
|
33
|
+
def _nopublichall ; pprint "No public hall is listed/known." end
|
34
|
+
|
35
|
+
def _clandragon ; _nopublichall end
|
36
|
+
def _clanbaal ; _nopublichall end
|
37
|
+
def _clanxunti ; _nopublichall end
|
38
|
+
def _clanrhabdo ; _nopublichall end
|
39
|
+
def _clanretri ; _nopublichall end
|
40
|
+
def _clanretribution ; _nopublichall end
|
41
|
+
def _clanshadokil ; _nopublichall end
|
42
|
+
def _clanshadowkill ; _nopublichall end
|
43
|
+
def _clanhook ; _nopublichall end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#
|
2
|
+
# Guild speedwalks
|
3
|
+
#
|
4
|
+
|
5
|
+
def _guildranger ; recall ; run "7s2wu" ; nil end
|
6
|
+
def _guildwarrior ; recall ; run "5s2wu" ; nil end
|
7
|
+
def _guildcleric ; recall ; run "5sebu" ; nil end
|
8
|
+
def _guildthief ; recall ; run "7swsu" ; nil end
|
9
|
+
def _guildpaladin ; recall ; run "5s2nu" ; nil end
|
10
|
+
def _guildpsionicist ; recall ; run "7s2eu" ; nil end
|
11
|
+
def _guildpsi ; _guildpsionicist ; nil end
|
12
|
+
def _guildmage ; recall ; run "7sesu" ; nil end
|
13
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Getting to the gates in Aylor:
|
2
|
+
# The Blessed Aylorian Highway
|
3
|
+
# def _north ; _aylor ; write "run 4ne;open north;run 2nw4n" end
|
4
|
+
def _north ; _aylor ; write "run 2s8enw" end
|
5
|
+
# Eastern High Road
|
6
|
+
def _east ; _aylor ; write "run 2s8e" end
|
7
|
+
# Western High Road
|
8
|
+
def _west ; _aylor ; write "run 2s8w" end
|
9
|
+
# Great Andolor Highway
|
10
|
+
# def _south ; _aylor ; write "run 23s" end
|
11
|
+
def _south ; _aylor ; write "run 2s8esw" end
|
12
|
+
|
13
|
+
|
14
|
+
def _id ; _aylor ; write "run 2s4e2n" end
|
15
|
+
|
16
|
+
def _unknown
|
17
|
+
write "echo this speedwalk is not yet known"
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
#
|
23
|
+
# Continents
|
24
|
+
#
|
25
|
+
# While running on the continents, running on roads will generally be faster than running over other land, unless of course you are flying then it makes no difference.
|
26
|
+
# Some areas have multiple entrances from the same continent room depending on which direction you enter them.
|
27
|
+
|
28
|
+
# Gelidus
|
29
|
+
def _gelidus ; write "run 4ne;op n;run 2nw3n21n" end
|
30
|
+
# Alagh
|
31
|
+
def _alagh ; write "run 2s17e2s6en15e" end
|
32
|
+
# Abend
|
33
|
+
def _abend ; write "run 2s10wn2wn4wn8wn14w" end
|
34
|
+
# Southern Ocean
|
35
|
+
def _southernocean ; write "run 22s" end
|
36
|
+
# Uncharted Ocean
|
37
|
+
def _unchartedocean ; write "run 33s31w10s" end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
# Near to Aylor:
|
42
|
+
def _angorbridge
|
43
|
+
_west
|
44
|
+
run "2wn2wn4wn8wn2w"
|
45
|
+
end
|
@@ -0,0 +1,254 @@
|
|
1
|
+
#
|
2
|
+
# Helpers for items:
|
3
|
+
# bid, rbid, lore, identify and appraise.
|
4
|
+
#
|
5
|
+
|
6
|
+
|
7
|
+
# FIXME: When I rbid on something, it outputs the last known variables. It's probably the alias doing it..
|
8
|
+
# weight check is getting weird numbers..
|
9
|
+
|
10
|
+
# TODO: Re-report the cost for the item. Compare the numbers and report the amount of QPs lost/won so far.
|
11
|
+
# Save the item into a hash with @item_number as its key, and the value as [@base, @tps]
|
12
|
+
# Remort Auction: Bid of (\d+) Qp on .* (Level \d+, Num (\d+)) going (once|twice)\.
|
13
|
+
# Remort Auction: .* (Level \d+, Num (\d+)) sold to \w+ for (\d+) Qp\.
|
14
|
+
|
15
|
+
# /receive "Remort Auction: SySy is selling a level 200 Aardwolf Aura of Sanctuary (Num 3).\n"
|
16
|
+
# Remort Auction: Starting bid is 100 Qp\. \(See 'help rbid'\)
|
17
|
+
# FIXME: This is busted!
|
18
|
+
conf.remote_triggers[/^DISABLED Remort Auction: \w+ is selling a level (\w+) (.*) \(Num (\d+)\)\.$/] = Proc.new do |inwin, outwin, match|
|
19
|
+
# FIXME: Bug with this not setting rbid off properly:
|
20
|
+
# weight has changed: 10 =>
|
21
|
+
# NoMethodError: undefined method `<' for nil:NilClass
|
22
|
+
|
23
|
+
# @level = match[1]
|
24
|
+
@item = match[2]
|
25
|
+
@item_number = match[3]
|
26
|
+
wasafk = 0
|
27
|
+
if $afk == 1 then wasafk == 1 ; afk 0 end
|
28
|
+
# Catch all the information:
|
29
|
+
id
|
30
|
+
# Hijack the next prompt (overwrites what 'id' does)
|
31
|
+
conf.remote_triggers[$prompt] = Proc.new do
|
32
|
+
rbid_tp_checker
|
33
|
+
pprint "A base of #{@base} + #{@tps} TPs = #{@base+(@tps*75)}"
|
34
|
+
id_teardown
|
35
|
+
end
|
36
|
+
# Trigger off the above:
|
37
|
+
# write "rbid #{@item_number}"
|
38
|
+
# Return me to my afk-ness:
|
39
|
+
if wasafk == 1 then afk 1 end
|
40
|
+
end
|
41
|
+
|
42
|
+
# TODO: Item flag changes..
|
43
|
+
# TODO: keepflag = 6TPs
|
44
|
+
# Catch the difference in hr/dr. Check the level, know the expected hr/dr. When higher, add 1TP cost per point difference.
|
45
|
+
# TODO: Work with my level, tiers and the keepflag wish. Note things that are out of my range.
|
46
|
+
def rbid_tp_checker
|
47
|
+
@tps = 0
|
48
|
+
case @item
|
49
|
+
when "Axe of Aardwolf" ; @base = 1000 ; original_weight = 20 ; original_type = "axe" ; base_damtype = "cleave" ; base_flag = "vorpal"
|
50
|
+
when "Dagger of Aardwolf" ; @base = 1000 ; original_weight = 10 ; original_type = "dagger" ; base_damtype = "pierce" ; base_flag = "sharp"
|
51
|
+
when "Flail of Aardwolf" ; @base = 1000 ; original_weight = 25 ; original_type = "flail" ; base_damtype = "beating" ; base_flag = "vampiric"
|
52
|
+
when "Halberd of Aardwolf" ; @base = 1000 ; original_weight = 25 ; original_type = "polearm" ; base_damtype = "drain" ; base_flag = "changing"
|
53
|
+
when "Mace of Aardwolf" ; @base = 1000 ; original_weight = 20 ; original_type = "mace" ; base_damtype = "pound" ; base_flag = "frost"
|
54
|
+
when "Staff of Aardwolf" ; @base = 1000 ; original_weight = 15 ; original_type = "spear" ; base_damtype = "thwack" ; base_flag = "shocking"
|
55
|
+
when "Sword of Aardwolf" ; @base = 1000 ; original_weight = 35 ; original_type = "sword" ; base_damtype = "slice" ; base_flag = "flaming"
|
56
|
+
when "Whip of Aardwolf" ; @base = 1000 ; original_weight = 15 ; original_type = "whip" ; base_damtype = "shocking bite" ; base_flag = "vampiric"
|
57
|
+
when "the Shield of Aardwolf" ; @base = 750 ; original_weight = 25 # I think..
|
58
|
+
when "Aardwolf Aura of Sanctuary" ; @base = 2500 ; original_weight = 1
|
59
|
+
when "the Amulet of Aardwolf" ; @base = 750 ; original_weight = 4
|
60
|
+
when "Aardwolf Bracers of Iron Grip" ; @base = 1750 ; original_weight = 0 # unknown
|
61
|
+
when "Aardwolf Gloves of Dexterity" ; @base = 2250 ; original_weight = 10
|
62
|
+
when "Aardwolf Boots of Speed" ; @base = 1300 ; original_weight = 2
|
63
|
+
when "Wings of Aardwolf" ; @base = 800 ; original_weight = 1
|
64
|
+
when "Aardwolf Ring of Invisibility" ; @base = 500 ; original_weight = 1
|
65
|
+
when "Aardwolf Ring of Regeneration" ; @base = 1000 ; original_weight = 1
|
66
|
+
when "Aardwolf Helm of True Sight" ; @base = 1100 ; original_weight = 5
|
67
|
+
when "Aardwolf Breastplate of magic resistance" ; @base = 2000 ; original_weight = 10
|
68
|
+
when "Decanter of Endless Water" ; @base = 550 ; original_weight = 0 # unknown
|
69
|
+
when "Bag of Aardwolf" ; @base = 1500 ; original_weight = 0 # depends on level.
|
70
|
+
end
|
71
|
+
|
72
|
+
def weight_check(original_weight, current_weight)
|
73
|
+
if original_weight != current_weight then pprint "weight has changed: #{original_weight} => #{current_weight}" end
|
74
|
+
|
75
|
+
# TODO: Make this much more universal.. loop through and figure out how many times I can divide by 2 or multiply by 2..
|
76
|
+
if current_weight < original_weight then
|
77
|
+
if current_weight <= (original_weight / 2) then pprint "half-weighted (1 time)" ; return 2 end
|
78
|
+
if current_weight <= (original_weight / 4) then pprint "half-weighted (2 times)" ; return 4 end
|
79
|
+
if current_weight <= (original_weight / 8) then pprint "half-weighted (3 times)" ; return 6 end
|
80
|
+
if current_weight <= (original_weight / 16) then pprint "half-weighted (4 times)" ; return 8 end
|
81
|
+
if current_weight <= (original_weight / 32) then pprint "half-weighted (5 times)" ; return 10 end
|
82
|
+
if current_weight <= (original_weight / 64) then pprint "half-weighted (6 times)" ; return 12 end
|
83
|
+
elsif current_weight > original_weight then
|
84
|
+
if current_weight >= (original_weight * 64) then pprint "double-weighted (6 times)" ; return 12 end
|
85
|
+
if current_weight >= (original_weight * 32) then pprint "double-weighted (5 times)" ; return 10 end
|
86
|
+
if current_weight >= (original_weight * 16) then pprint "double-weighted (4 times)" ; return 8 end
|
87
|
+
if current_weight >= (original_weight * 8) then pprint "double-weighted (3 times)" ; return 6 end
|
88
|
+
if current_weight >= (original_weight * 4) then pprint "double-weighted (2 times)" ; return 4 end
|
89
|
+
if current_weight >= (original_weight * 2) then pprint "double-weighted (1 time)" ; return 2 end
|
90
|
+
else return 0
|
91
|
+
end
|
92
|
+
pprint "ERROR: 'weight_check' can't deal with numbers like that.\n current_weight = '#{current_weight}' and original_weight = '#{original_weight}'"
|
93
|
+
end
|
94
|
+
|
95
|
+
# Items which were renamed will bypass the above switch. Catch the proper base value of these items.
|
96
|
+
# Check if the damage type, flag or weight has been changed from the default. NOTE: Items which have been renamed will slip through this net.
|
97
|
+
case @type
|
98
|
+
when "axe"
|
99
|
+
base = 1000
|
100
|
+
if original_type != "axe" then pprint "weapon type changed" ; @tps += 3 end
|
101
|
+
if base_flag != "vorpal" then pprint "weapon flag changed" ; @tps += 2 end
|
102
|
+
@tps += weight_check(original_weight, 20)
|
103
|
+
when "dagger"
|
104
|
+
base = 1000
|
105
|
+
if original_type != "dagger" then pprint "weapon type changed" ; @tps += 3 end
|
106
|
+
if base_flag != "sharp" then pprint "weapon flag changed" ; @tps += 2 end
|
107
|
+
@tps += weight_check(original_weight, 10)
|
108
|
+
when "flail"
|
109
|
+
base = 1000
|
110
|
+
if original_type != "flail" then pprint "weapon type changed" ; @tps += 3 end
|
111
|
+
if base_flag != "vampiric" then pprint "weapon flag changed" ; @tps += 2 end
|
112
|
+
@tps += weight_check(original_weight, 25)
|
113
|
+
when "polearm"
|
114
|
+
base = 1000
|
115
|
+
if original_type != "polearm" then pprint "weapon type changed" ; @tps += 3 end
|
116
|
+
if base_flag != "changing" then pprint "weapon flag changed" ; @tps += 2 end
|
117
|
+
@tps += weight_check(original_weight, 25)
|
118
|
+
when "mace"
|
119
|
+
base = 1000
|
120
|
+
if original_type != "mace" then pprint "weapon type changed" ; @tps += 3 end
|
121
|
+
if base_flag != "frost" then pprint "weapon flag changed" ; @tps += 2 end
|
122
|
+
@tps += weight_check(original_weight, 20)
|
123
|
+
when "spear"
|
124
|
+
base = 1000
|
125
|
+
if original_type != "spear" then pprint "weapon type changed" ; @tps += 3 end
|
126
|
+
if base_flag != "shocking" then pprint "weapon flag changed" ; @tps += 2 end
|
127
|
+
@tps += weight_check(original_weight, 15)
|
128
|
+
when "sword"
|
129
|
+
base = 1000
|
130
|
+
if original_type != "sword" then pprint "weapon type changed" ; @tps += 3 end
|
131
|
+
if base_flag != "flaming" then pprint "weapon flag changed" ; @tps += 2 end
|
132
|
+
@tps += weight_check(original_weight, 35)
|
133
|
+
when "whip"
|
134
|
+
base = 1000
|
135
|
+
if original_type != "whip" then pprint "weapon type changed" ; @tps += 3 end
|
136
|
+
if base_flag != "vampiric" then pprint "weapon flag changed" ; @tps += 2 end
|
137
|
+
@tps += weight_check(original_weight, 15)
|
138
|
+
else # non-Aard-weapons
|
139
|
+
@tps += weight_check(original_weight, @weight)
|
140
|
+
end # case @type
|
141
|
+
end # rbid_tp_checker
|
142
|
+
|
143
|
+
|
144
|
+
#
|
145
|
+
# Identifying equipment
|
146
|
+
#
|
147
|
+
|
148
|
+
def id
|
149
|
+
conf.remote_triggers[/^\| Names : (.+)\|$/] = Proc.new do |inwin, outwin, match| @names = match[1].rstrip end
|
150
|
+
conf.remote_triggers[/^\| Desc : (.+)\|$/] = Proc.new do |inwin, outwin, match| @desc = match[1].rstrip end
|
151
|
+
conf.remote_triggers[/^\| Type : (.+)Level :\s*(\d+)\s*\|$/] = Proc.new do |inwin, outwin, match| @type = match[1].rstrip ; @level = match[2] end
|
152
|
+
conf.remote_triggers[/^\| Worth :\s*(.+)\s*Weight :\s*(\d+)\s*\|$/] = Proc.new do |inwin, outwin, match|
|
153
|
+
@worth = match[1].gsub(",", "").rstrip.to_i
|
154
|
+
@weight = match[2].to_i
|
155
|
+
end
|
156
|
+
conf.remote_triggers[/^\| Wearable :\s*(.+)\|$/] = Proc.new do |inwin, outwin, match| @wearable = match[1].rstrip end
|
157
|
+
conf.remote_triggers[/^\| Flags :\s*(.+)\|$/] = Proc.new do |inwin, outwin, match| @flags = match[1].rstrip end
|
158
|
+
# FIXME: Work with additional rows of flags..
|
159
|
+
conf.remote_triggers[/^\| Armor : Pierce :\s*(\d+)\s*Bash :\s*(\d+)\s*\|$/] = Proc.new do |inwin, outwin, match| @pierce = match[1].rstrip ; @bash = match[2] end
|
160
|
+
conf.remote_triggers[/^\| Slash :\s*(\d+)\s*Magic :\s*(\d+)\s*\|$/] = Proc.new do |inwin, outwin, match| @slash = match[1].rstrip ; @magic = match[2] end
|
161
|
+
|
162
|
+
# Hijack the next prompt:
|
163
|
+
conf.remote_triggers[$prompt] = Proc.new do
|
164
|
+
id_teardown
|
165
|
+
end
|
166
|
+
# Also write out the string, if this method was called from a local trigger.
|
167
|
+
true
|
168
|
+
end
|
169
|
+
|
170
|
+
def id_teardown
|
171
|
+
# All of this should fire off on the bottom border. The bottom border is seen once, or twice, depending on the type of item:
|
172
|
+
# Not supported: Colour in @names
|
173
|
+
pprint @names
|
174
|
+
pprint @desc
|
175
|
+
pprint @type
|
176
|
+
pprint @level
|
177
|
+
pprint @worth
|
178
|
+
pprint @weight
|
179
|
+
pprint @wearable
|
180
|
+
pprint @flags
|
181
|
+
if @type == "Armor" then
|
182
|
+
pprint @pierce
|
183
|
+
pprint @bash
|
184
|
+
pprint @slash
|
185
|
+
pprint @magic
|
186
|
+
end
|
187
|
+
|
188
|
+
conf.remote_triggers.delete(/^\| Names : (.+)\|$/)
|
189
|
+
conf.remote_triggers.delete(/^\| Desc : (.+)\|$/)
|
190
|
+
conf.remote_triggers.delete(/^\| Type : (.+)Level :\s*(\d+)\s*\|$/)
|
191
|
+
conf.remote_triggers.delete(/^\| Worth :\s*(\d+)\s*Weight :\s*(\d+)\s*\|$/)
|
192
|
+
conf.remote_triggers.delete(/^\| Wearable :\s*(.+)\|$/)
|
193
|
+
conf.remote_triggers.delete(/^\| Flags :\s*(.+)\|$/)
|
194
|
+
# FIXME: Work with additional rows of flags..
|
195
|
+
conf.remote_triggers.delete(/^\| Armor : Pierce :\s*(\d+)\s*Bash :\s*(\d+)\s*\|$/)
|
196
|
+
conf.remote_triggers.delete(/^\| Slash :\s*(\d+)\s*Magic :\s*(\d+)\s*\|$/)
|
197
|
+
# Reset all of the prompts:
|
198
|
+
prompt_triggers_setup
|
199
|
+
end
|
200
|
+
|
201
|
+
|
202
|
+
# This should be user-customized:
|
203
|
+
# There doesn't appear to be a simple way to set this. Maybe I need to finger myself? But then I'd have to have a user setting for the name of the character.. so why even bother? I could just make the user set their tier manually..
|
204
|
+
$tier = 0
|
205
|
+
conf.local_triggers[/^getowned$/] = :getowned
|
206
|
+
# This won't work if an item doesn't have a "serial number" - a keyword between brackets.
|
207
|
+
def getowned
|
208
|
+
gag_all 1
|
209
|
+
# Janna's perfect white rose (151412) 1 SySy The Collective Mi
|
210
|
+
conf.remote_triggers[/^(.*)\((\w+)\)\s+(\*|)(\d+).*$/] = Proc.new do |inwin, outwin, match|
|
211
|
+
# Long names are chopped off by owned.
|
212
|
+
name = match[1].rstrip
|
213
|
+
# NOTE: This is not always a digit, as the item can be restrung to have an additional keyword in brackets.
|
214
|
+
serial_keyword = "(#{match[2]})"
|
215
|
+
item_level = match[4].to_i
|
216
|
+
# pprint name.inspect
|
217
|
+
# pprint serial_keyword.inspect
|
218
|
+
# pprint item_level.inspect
|
219
|
+
# Check to see if I'm a new remort.
|
220
|
+
# if I'm level 1, and the item's level makes it wearable
|
221
|
+
if $level == 1 && item_level <= ($level + ($tier * 10)) then
|
222
|
+
write "echo #{name} #{serial_keyword}"
|
223
|
+
getwear_keep(serial_keyword)
|
224
|
+
elsif item_level == (item_level + ($tier * 10)) then
|
225
|
+
# If I found something at my current level:
|
226
|
+
# Names to ignore:
|
227
|
+
case name
|
228
|
+
when "A Bag of Aardwolf" ; nil
|
229
|
+
when "Decanter of Endless Water" ; nil
|
230
|
+
else
|
231
|
+
write "echo #{name} #{serial_keyword}"
|
232
|
+
end
|
233
|
+
getowned_user_exceptions(serial_keyword)
|
234
|
+
end
|
235
|
+
# Clean up after the end of the owned list.
|
236
|
+
conf.remote_triggers[/\[ \d+ \] owned items found\.$/] = Proc.new do
|
237
|
+
conf.remote_triggers.delete(/^(.*)\((\w+)\)\s+(\*|)(\d+).*$/)
|
238
|
+
conf.remote_triggers.delete(/\[ \d+ \] owned items found\.$/)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
write "owned"
|
242
|
+
end
|
243
|
+
|
244
|
+
# Keywords which are exceptions, e.g. for dualing:
|
245
|
+
# TODO: Now the problem here is that it may try to dual the one item before it tries to wield the first.
|
246
|
+
def getowned_user_exceptions(serial_keyword)
|
247
|
+
case serial_keyword
|
248
|
+
when "(example)" ; getdual_keep(serial_keyword) ; pprint "special item exception.."
|
249
|
+
else
|
250
|
+
getwear_keep(serial_keyword)
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
__END__
|
@@ -0,0 +1,227 @@
|
|
1
|
+
#
|
2
|
+
# Void trigger. The character will never disconnect because of timeouts.
|
3
|
+
#
|
4
|
+
# NOTE: returning from the void causes your character to stand, and it does not influence your AFK status.
|
5
|
+
# However, voiding and coming back doesn't wake one up.
|
6
|
+
conf.remote_triggers[/^You disappear into the void\.$/] = Proc.new do |inwin, outwin, match|
|
7
|
+
# It's best to turn it off, to avoid unpleasantness.
|
8
|
+
afk 0
|
9
|
+
# NOTE: Cannot echo while afk.
|
10
|
+
if $asleep == 1 then wake end
|
11
|
+
write "echo keepalive -- #{Time.new}"
|
12
|
+
afk '@YF@Wear @YT@Whe @YV@Woid@Y.@w'
|
13
|
+
end
|
14
|
+
|
15
|
+
conf.remote_triggers[/^QUEST: You may now quest again.$/] = Proc.new do
|
16
|
+
p
|
17
|
+
# Play music?
|
18
|
+
end
|
19
|
+
conf.remote_triggers[/^You see no one here but yourself!$/] = Proc.new do write "map" end
|
20
|
+
|
21
|
+
# Do the obvious thing, when reading notes.
|
22
|
+
conf.remote_triggers[/^Changed to board .+ unread note(|s) for you on this board\.$/] = Proc.new do write "note" end
|
23
|
+
|
24
|
+
# 'this command', 'whatever', 'ftalk', etc... =/
|
25
|
+
conf.remote_triggers[/^\*\[AFK\]\* |^You are now in AFK mode\.$/] = Proc.new do $afk = 1 end
|
26
|
+
conf.remote_triggers[/You cannot .+ while (afk|AFK)\.$/] = Proc.new do $afk = 1 ; afk 0 ; repeat_history end
|
27
|
+
|
28
|
+
# When completed a note, get the prompt so that triggers and gags will resume.
|
29
|
+
# Note cancelled!
|
30
|
+
conf.remote_triggers[/You are back in the game\.$/] = :p
|
31
|
+
|
32
|
+
|
33
|
+
conf.remote_triggers[/^Better stand up first\.$/] = Proc.new do write "stand" ; repeat_history end
|
34
|
+
conf.remote_triggers[/^Nah\.\.\. You feel too relaxed\.\.\.$/] = Proc.new do write "stand" ; repeat_history end
|
35
|
+
# Push fails for no particular reason. Keep trying:
|
36
|
+
conf.remote_triggers[/^You don\'t quite feel up to pushing things around at the moment\.$/] = Proc.new do repeat_history end
|
37
|
+
|
38
|
+
# Commands while sleeping. Like 'snore' =/
|
39
|
+
conf.remote_triggers[/^In your dreams\, or what\?/] = Proc.new do $asleep = 1 ; wake ; repeat_history end
|
40
|
+
conf.remote_triggers[/^You dream about being able to/] = Proc.new do $asleep = 1 ; wake ; repeat_history end
|
41
|
+
|
42
|
+
|
43
|
+
# TODO: I don't know if the "intelligence" here actually works yet.
|
44
|
+
def repeat_history
|
45
|
+
# pprint Muby::InputWindow.get_instance.history[-1]
|
46
|
+
# pprint Muby::InputWindow.get_instance.history[-2]
|
47
|
+
# If the first character is a slash, then abort!
|
48
|
+
if Muby::InputWindow.get_instance.history[-1].split(' ')[0][0..0] == "/" then pprint "not doing #{Muby::InputWindow.get_instance.history[-1].split(' ')[0].inspect}\n" ; return nil end
|
49
|
+
# Avoid throwing out something which will send me to recall..
|
50
|
+
case Muby::InputWindow.get_instance.history[-1].split(' ')[0]
|
51
|
+
# Don't leak a "know" string to the mud!
|
52
|
+
when "know" then return nil
|
53
|
+
# Let me do /repeat_history manually:
|
54
|
+
when "/repeat_history" then
|
55
|
+
case Muby::InputWindow.get_instance.history[-2].split(' ')[0]
|
56
|
+
when "know" then return nil
|
57
|
+
else
|
58
|
+
write Muby::InputWindow.get_instance.history[-2]
|
59
|
+
end
|
60
|
+
else
|
61
|
+
write Muby::InputWindow.get_instance.history[-1]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Remember where I am:
|
66
|
+
conf.remote_triggers[/^You are in area : (.+)$/] = Proc.new do |inwin, outwin, match| $area = match[1].rstrip end
|
67
|
+
|
68
|
+
conf.remote_triggers[/^You have been KILLED!!$/] = Proc.new do write "stand" end
|
69
|
+
# Untested..
|
70
|
+
conf.remote_triggers[/^\*\* For \w+'s interference, you can take revenge on \w+ for \d+ \w+.$/] = Proc.new do write "pkstats" end
|
71
|
+
|
72
|
+
# Santuary elapse/dispelled -- you could also echo it locally, or just replace the elapse message with something more visible.
|
73
|
+
conf.remote_triggers[/^Your brilliant white aura of sanctuary shimmers and is gone\.$/] = Proc.new do write "gtalk @C**@W My sanctuary is gone! @C**@w" end
|
74
|
+
|
75
|
+
|
76
|
+
# Search through triggers.
|
77
|
+
def rt_search(s)
|
78
|
+
s = ensure_s(s)
|
79
|
+
conf.remote_triggers.each { |i|
|
80
|
+
if i.inspect =~ /#{s}/ then pprint i.inspect end
|
81
|
+
}
|
82
|
+
end
|
83
|
+
# Use with: /rt_search "string"
|
84
|
+
|
85
|
+
|
86
|
+
# If I try to dual something, then note the dual attempt.
|
87
|
+
# NOTE: Variables are not saved between sessions yet.
|
88
|
+
# TODO: Do something similar with holding an item.
|
89
|
+
conf.local_triggers[/^dual (.+)$/] = Proc.new do |inwin, outwin, match|
|
90
|
+
dual match[1]
|
91
|
+
false
|
92
|
+
end
|
93
|
+
def dual(s)
|
94
|
+
s = ensure_s(s)
|
95
|
+
$dual_attempt = s
|
96
|
+
write "dual '#{ensure_s(s)}'"
|
97
|
+
end
|
98
|
+
# If I successfully dual an item, then note the new dual item.
|
99
|
+
conf.remote_triggers[/^You wield .+ in your off-hand\.$/] = :_dual_success
|
100
|
+
def _dual_success
|
101
|
+
if $dual_attempt == "" then return nil end
|
102
|
+
# Intelligently Deal with #.keyword -- 2.axe 20.axe 200.axe etc =)
|
103
|
+
# NOTE: This does not deal with the problem of picking up another item with the same keyword, and the resulting stack issues. I miss being able to remove an item and have it be on the top of the inventory stack. =(
|
104
|
+
def dual_attempt(n)
|
105
|
+
n = ensure_n(n)
|
106
|
+
dual_attempt = $dual_attempt[(n+1)..-1]
|
107
|
+
# Put the item back on the top of the stack
|
108
|
+
write "remove #{dual_attempt}"
|
109
|
+
write "give #{$dual_attempt} self"
|
110
|
+
# Re-dual the item without the #.keyword:
|
111
|
+
dual dual_attempt
|
112
|
+
end
|
113
|
+
if $dual_attempt[1..1] == "." then dual_attempt(1) end
|
114
|
+
if $dual_attempt[2..2] == "." then dual_attempt(2) end
|
115
|
+
if $dual_attempt[3..3] == "." then dual_attempt(3) end
|
116
|
+
$dual = $dual_attempt.dup
|
117
|
+
$dual_attempt = ""
|
118
|
+
end
|
119
|
+
|
120
|
+
# TODO: Don't know how to use..
|
121
|
+
# TODO: Barely know how to use..
|
122
|
+
conf.remote_triggers[/^You are not carrying that!$|^That really wouldn\'t make a very effective weapon\.$|^You must be level .+ to use .+\.$/] = :_dual_fail
|
123
|
+
def _dual_fail
|
124
|
+
if $dual_attempt != "" then $dual_attempt = "" end
|
125
|
+
end
|
126
|
+
|
127
|
+
conf.remote_triggers[/^You raise a level!!$/] = :levelup
|
128
|
+
|
129
|
+
def levelup
|
130
|
+
$level += 1
|
131
|
+
write "wimpy"
|
132
|
+
# TODO: Make this more noticible.
|
133
|
+
pprint ">> level #{$level - ($tier * 10)} (#{$level})"
|
134
|
+
|
135
|
+
# pprint "level #{$level} / 5 = #{$level / 5.0}"
|
136
|
+
# pprint " #{$level / 5.0} => #{($level / 5.0) - $level / 5}"
|
137
|
+
# Every 5 levels, check my score. This is primarily to get the new $wis_now
|
138
|
+
if (($level / 5.0) - $level / 5) == 0.0 then score end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
__END__
|
143
|
+
|
144
|
+
[ 10 minutes of double exp started courtesy of Aardwolf supporters - see 'help donate' ]
|
145
|
+
|
146
|
+
|
147
|
+
--+
|
148
|
+
|
149
|
+
The Aardwolf gamedriver tells you 'ACK!!! I'm in a loop.
|
150
|
+
--- Pfile saved. Qtime reset. Emergency reboot coming up ---
|
151
|
+
|
152
|
+
--+
|
153
|
+
|
154
|
+
What be thy name, adventurer?
|
155
|
+
<login>
|
156
|
+
The game is currently available only to imms.
|
157
|
+
This means that either Aardwolf is about to reboot, or, the mud has a
|
158
|
+
problem that can only be solved without players online.
|
159
|
+
|
160
|
+
Please wait a few minutes and try again.
|
161
|
+
Thanks for your patience and see you soon! - Immortals of Aardwolf.
|
162
|
+
|
163
|
+
--+
|
164
|
+
|
165
|
+
Reboot imminent. Quest time reset and full heal given.
|
166
|
+
|
167
|
+
-----------------------------------------------------------------------------
|
168
|
+
We hope you have enjoyed playing Aardwolf and will return soon. Please check
|
169
|
+
out our web site at www.aardwolf.com and maybe even drop in a vote for us
|
170
|
+
while you're there.
|
171
|
+
-----------------------------------------------------------------------------
|
172
|
+
|
173
|
+
--+
|
174
|
+
|
175
|
+
Someone forces you to 'quit quit'.
|
176
|
+
Reboot imminent. Quest time reset and full heal given.
|
177
|
+
|
178
|
+
-----------------------------------------------------------------------------
|
179
|
+
We hope you have enjoyed playing Aardwolf and will return soon. Please check
|
180
|
+
out our web site at www.aardwolf.com and maybe even drop in a vote for us
|
181
|
+
while you're there.
|
182
|
+
-----------------------------------------------------------------------------
|
183
|
+
|
184
|
+
--+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
#
|
189
|
+
# Trigger group experimentation (fails)
|
190
|
+
#
|
191
|
+
|
192
|
+
--+ METHOD ONE:
|
193
|
+
|
194
|
+
groups = []
|
195
|
+
conf.remote_triggers[/^\| Names : (.+)\|$/] = Proc.new do |inwin,
|
196
|
+
outwin, match|
|
197
|
+
@names = match[1].rstrip
|
198
|
+
groups << match[0]
|
199
|
+
end
|
200
|
+
|
201
|
+
then I could delete it with:
|
202
|
+
group.each { |i|
|
203
|
+
conf.remote_triggers.delete(i)
|
204
|
+
}
|
205
|
+
|
206
|
+
However, match[0] is not what I want. Is there a way to easily refer
|
207
|
+
to the regex itself?
|
208
|
+
|
209
|
+
--+ METHOD TWO
|
210
|
+
|
211
|
+
$trigger_groups = {}
|
212
|
+
def group_remote_trigger(group, regex, actions)
|
213
|
+
conf.remote_triggers[regex] = Proc.new do |inwin, outwin, match| actions end
|
214
|
+
$trigger_groups.merge!({group => regex})
|
215
|
+
pprint $trigger_groups.inspect
|
216
|
+
end
|
217
|
+
|
218
|
+
def group_remote_trigger_delete_all(group)
|
219
|
+
$trigger_groups[group].each { |i|
|
220
|
+
pprint i.inspect
|
221
|
+
conf.remote_triggers.delete(i)
|
222
|
+
$trigger_groups.delete(group)
|
223
|
+
}
|
224
|
+
end
|
225
|
+
|
226
|
+
# /group_remote_trigger("test", '^test$', {pprint match[0]})
|
227
|
+
# /group_remote_trigger_delete_all("test")
|