-
Notifications
You must be signed in to change notification settings - Fork 1
/
hunt.cmd
1077 lines (857 loc) · 21.1 KB
/
hunt.cmd
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
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#
# hunt.cmd - version 2.0
# Requires Outlander 2.0.30 or higher
#
#debug 5
#
# User defined variables
#
var health_threshold 50
var fatigue_threshold 70
var should_loot_coins NO
var should_loot_gems NO
var should_loot_boxes NO
var loot_option loot
var arrange 5
var berserk_on_fatigue YES
var fatigue_berserk avalanche
var bard_scream havoc
var sling_ammo shard
var crossbow_ammo pulzone
var slingbow_ammo shard
var repating_crossbow_ammo_count 4
var bow_ammo arrow
var brawling_moves circle|elbow|claw|kick|punch
var diety Eluned
var pray_messaging You offer
var spellPrep With tense movements you|You begin chanting|With rigid movements|You raise your palms skyward|motes of sanguine light swirl briefly about your fingertips
#
# Script Variables
#
var kill_count 0
var use_offhand NO
var check_exp NO
var exp_threshold 15
var max_exp 34
var weapon
var attack_style attack
var is_thrown NO
var is_ranged NO
var sheath_style sheath
var should_stealth NO
var FULL_AIM NO
var ranged_hidden_attack poach
var ranged_action
var use_screams NO
var hide_if_locked NO
var arrange_action arrange
var tm_mode NO
var tm_spell
var tm_mana
var invoke_weapon NO
var should_pray NO
var last_prayer_timestamp 0
var should_hunt NO
var hunt_timer 75
var loot_timer 7
var drop_skins NO
var preserve NO
var dissect NO
var appraise NO
var debil NO
var debil_spell
var debil_mana
var spell_style prepare
var brawl NO
var brawling_move_count 0
eval brawling_moves_max countsplit("%brawling_moves", "|")
#
# Critter variables
#
var skinnablecritters rat|hog|goblin|spider|boar|eel|bobcat|cougar|reaver|wolf|rock troll|snowbeast|gargoyle|steed|togball|leucro|adder|skeleton|ape|tusky|wyvern|drake
#
# Actions
#
action put #beep;put #flash when ^(.+) (say|says|asks|exlaims|whispers)
action (info) var guild $1;put #var guild $1 when Guild:\s+(Barbarian|Bard|Cleric|Commoner|Empath|Moon Mage|Necromancer|Paladin|Ranger|Thief|Trader|Warrior Mage)$
action (info) var circle $1;put #var circle $1 when Circle:\s+(\d+)$
action (skill) var skill Polearms when .*polearm skills\.$|polearm skill\.$
action (skill) var skill Large_Blunt when .*heavy blunt skills\.$|heavy blunt skill\.$|large blunt skill\.$
action (skill) var skill Small_Blunt when .*small blunt skill\.$
action (skill) var skill Large_Edged when .*large edged skill\.$
action (skill) var skill Small_Edged when .*small edged skills\.$|small edged skill\.$
action (skill) var skill Twohanded_Edged when .*two-handed edged skill\.$
action (skill) var skill Twohanded_Blunt when .*two-handed blunt skill\.$
action (skill) var skill Staves when .*stave skill\.$
action (skill) var skill Bow;var is_ranged YES;var ranged_ammo %bow_ammo when .*bow skill\.$
action (skill) var skill Crossbow;var is_ranged YES;var ranged_ammo %crossbow_ammo when .*crossbow skill\.$
action (skill) var skill Slings;var is_ranged YES;var ranged_ammo %sling_ammo when .*sling skill\.$
action (spell) var fully_prepared YES when You feel fully prepared|Your formation of a targeting pattern
if_1 then goto start
else {
echo
echo *** You need to provide a weapon to use ***
echo *** .hunt spear
echo *** .hunt offhand nightstick
echo *** .hunt tm stra 2 sword
echo
echo
exit
}
start:
gosub checkinfo
start.loop:
if_2 then {
gosub %1
shift
goto start.loop
}
var weapon %1
gosub wield
goto begin
app:
appraise:
var appraise YES
return
brawl:
var brawl YES
return
throw:
var attack_style throw
var is_thrown YES
return
invoke:
var invoke_weapon YES
return
lob:
var attack_style lob
var is_thrown YES
return
hurl:
var attack_style hurl
var is_thrown YES
return
offhand:
echo
echo *** Offhand ***
echo
var use_offhand YES
return
exp:
echo
echo *** Checking EXP ***
echo
var check_exp YES
var exp_threshold 15
if matchre("%2", "^\d+$") then {
var exp_threshold %2
shift
}
if %exp_threshold > %max_exp then var exp_threshold %max_exp
return
ambush:
var should_stealth YES
return
backstab:
var should_stealth YES
var attack_style backstab
return
poach:
var should_stealth YES
var hide_if_locked YES
return
snipe:
var should_stealth YES
var ranged_hidden_attack snipe
var hide_if_locked YES
return
scream:
var use_screams YES
return
pray:
var should_pray YES
var last_prayer_timestamp 0
return
hunt:
var should_hunt YES
return
arrange:
if matchre("%2", "^\d+$") then {
var arrange %2
shift
}
if %arrange > 5 then var arrange 5
if "%2" == "all" then {
var arrange_action arrange all
shift
}
return
tm:
var tm_mode YES
shift
var tm_spell %1
shift
var tm_mana %1
return
deb:
debil:
spell:
var debil YES
shift
var debil_spell %1
shift
var debil_mana %1
echo
echo *** Casting spell %debil_spell with %debil_mana mana ***
echo
return
box:
boxes:
var should_loot_boxes YES
echo
echo *** Looting Boxes ***
echo
return
coin:
coins:
var should_loot_coins YES
echo
echo *** Looting Coins ***
echo
return
gem:
gems:
var should_loot_gems YES
echo
echo *** Looting Gems ***
echo
return
preserve:
var preserve YES
echo
echo *** Preserving Corpses ***
echo
return
dissect:
var dissect YES
echo
echo *** Dissecting Corpses ***
echo
return
wield:
if "%weapon" == "log" || "%weapon" == "rock" then goto appraise_weapon
matchre appraise_weapon You draw|You slip|already holding|You deftly|With fluid and stealthy movements you draw
matchre remove_weapon remove it first
matchre no_weapon Wield what?
matchre get_weapon as it is lying at your feet
send wield my %weapon
matchwait
get_weapon:
send get %weapon
goto wield
no_weapon:
echo
echo *** Could not find %weapon ***
echo
goto end
appraise_weapon:
if %use_offhand == YES {
var skill Offhand_Weapon
goto display_weapon
}
if %weapon == log {
var skill Heavy_Thrown
goto display_weapon
}
if %weapon == rock {
var skill Light_Thrown
goto display_weapon
}
if %is_thrown == YES {
action (skill) var skill Light_Thrown when light thrown|small edged|small blunt
action (skill) var skill Heavy_Thrown when heavy thrown|heavy blunt|large edged|two-handed|stave
}
if %brawl == YES {
var skill Brawling
goto display_weapon
}
send appraise my %weapon quick
waitfor Roundtime
pause 0.5
display_weapon:
action (skill) off
if matchre("$righthand", "slingbow") then var ranged_ammo %slingbow_ammo
if %use_offhand == YES && "$righthand" != "Empty" then send swap
echo
echo *** %skill ***
echo
return
remove_weapon:
send remove my %weapon
var sheath_style wear
goto appraise_weapon
checkinfo:
put info;enc
waitfor Encumbrance
action (info) off
return
#
# Start of Combat
#
begin:
if %is_ranged == YES then {
action (ranged) var FULL_AIM YES when You think you have your best shot possible
action (ranged) var FULL_AIM NO when stop concentrating on aiming
if %should_stealth != YES then { put .tmhelper }
goto ranged_combat
}
if %tm_mode == YES then {
put .tmhelper
goto tm_combat
}
if %brawl == YES then {
goto brawling_combat
}
goto attack
attack:
gosub clear
var last_combat attack
if %guild == Bard && %use_screams == YES then gosub bard
if %guild == Cleric && %should_pray == YES then gosub cleric
if "%debil" != "NO" {
if "%fully_prepared" == "YES" || $spelltime >= 25 then gosub spell_cast
if "$preparedspell" == "None" then gosub spell_prep %debil_spell %debil_mana
}
if %should_hunt == YES then gosub do_hunt
if $hidden == 0 && %should_stealth == YES then gosub stealth
matchre check_loot Roundtime
matchre wait_for_mobs There is nothing|close enough to attack|What are you trying to attack|It would help if you were closer|You must be closer
matchre do_get_thrown What are you trying to throw|What are you trying to lob|What are you trying to hurl|You must hold
if %use_offhand == YES then put %attack_style left
else put %attack_style
matchwait 2
goto attack
do_get_thrown:
gosub get_thrown
goto %last_combat
wait_for_mobs:
gosub clear
send advance
pause 5
goto %last_combat
#
# Ranged Combat
#
ranged_combat:
gosub clear
var last_combat ranged_combat
pause 0.5
if %guild == Bard && %use_screams == YES then gosub bard
if %guild == Cleric && %should_pray == YES then gosub cleric
if %guild == Ranger && %skill == Bow then var ranged_action arrows
if "%debil" != "NO" {
if "%fully_prepared" == "YES" || $spelltime >= 25 then gosub spell_cast
if "$preparedspell" == "None" then gosub spell_prep %debil_spell %debil_mana
}
gosub load
gosub aim
if %should_stealth == YES then gosub stealth
gosub aiming
gosub fire
gosub check_loot
goto ranged_combat
aiming:
if %FULL_AIM == YES then {
var FULL_AIM NO
return
}
action (ranged) off
waitforre best shot possible|You stop concentrating on aiming your weapon.
var FULL_AIM NO
action (ranged) on
return
aim:
matchre aim.after.load isn't loaded
matchre aim.fire already targetting that
matchre return best shot possible now|begin to target|You shift your
matchre wait_for_mobs ^There is nothing else to face!|^What are you trying to attack
put aim
matchwait 2
goto aim
aim.fire:
var FULL_AIM YES
return
aim.after.load:
gosub load
goto aim
fire:
matchre fire You can not poach|are not hidden
matchre return ^I could not find what you were|isn't loaded|Roundtime
if $hidden == 1 then send %ranged_hidden_attack
else send fire
matchwait 2
goto fire
load:
if matchre("$righthand", "riot|repeating") then goto Repeater.Load
matchre gather_ammo ^You don't have the proper ammunition
matchre gather_ammo ^You must|your hand jams|^You can not load
matchre Repeater.Load ammunition chamber|already loaded with as much ammunition as it can hold
matchre buff_stw Such a feat would be impossible without the winds to guide you
matchre change_ranged_action You don't have enough
matchre return Roundtime|is already
var FULL_AIM NO
put load %ranged_action
matchwait 2
goto load
change_ranged_action:
var ranged_action
goto load
buff_stw:
put .charge stw 20 40
waitforre ^BUFF DONE
goto load
Repeater.Load:
if "$lefthand" != "Empty" then put stow $lefthandnoun
matchre RETURN A rapid series of clicks emanate|already loaded with as much ammunition as it can hold|readying more than one bolt could
matchre Repeater.Load.Full exhausted the crossbow's ammunition store
var FULL_AIM NO
put push my $righthandnoun
matchwait 10
goto Repeater.Load
Repeater.Load.Full:
var load_count 0
gosub gather_ammo
Repeater.Load.Full.2:
if "%guild" != "Ranger" && "$lefthand" == "Empty" then put get my %ranged_ammo
math load_count add 1
if %load_count > %repating_crossbow_ammo_count then goto Repeater.Load
matchre gather_ammo ^You don't have the proper ammunition
matchre gather_ammo ^You must|your hand jams|^You can not load
matchre Repeater.Load already loaded with as much ammunition as it can hold
matchre Repeater.Load.Full.2 ammunition chamber
put load
matchwait 10
goto Repeater.Load.Full.2
gather_ammo:
ammo.loop:
matchre return ^Stow what|^You must unload|^You get some|^But that is already
matchre ammo.loop ^You pick up|^You put|^You stow|^You get
pause 0.5
put stow %ranged_ammo
matchwait
ranged_unload:
send unload my %weapon
pause 1
send stow my %ranged_ammo
return
#
# Hiding routine
#
stealth:
if %hide_if_locked == NO && $Stealth.LearningRate >= 34 then return
if %guild == Thief || %guild == Ranger then {
if %circle >= 50 then {
goto stalk
}
}
hide:
# if (%guild == Thief || %guild == Ranger) && %circle >= 50 then goto stalk
match hide ...
matchre hide Your attempt to hide fails|notices your|ruining your hiding place
matchre stalk You blend in with your surroundings|You melt into the background|already hidden
pause 0.5
put hide
matchwait
stalk:
match stalk ...
matchre hide You must be hidden first|try being out of sight|ruining your hiding place
matchre return You move into position to stalk|already|There is nothing else to face|Stalk what|Face what
pause 0.5
put stalk
matchwait
check_loot:
gosub clear
gosub get_thrown
gosub health
if $next_loot_timestamp > $gametime then goto after_loot
if matchre("$roomobjs", "((which|that) appears dead|\(dead\))") then
{
if "%preserve" != "NO" then
{
put .preserve preserve
waitforre ^PRESERVE DONE
}
else if $First_Aid.LearningRate < 34 && "%dissect" != "NO" then
{
put .preserve dissect
waitforre ^PRESERVE DONE
}
else {
if $Skinning.LearningRate >= 30 {
put .preserve dissect
waitforre ^PRESERVE DONE
}
else {
if matchre("$roomobjs", "(%skinnablecritters) ((which|that) appears dead|\(dead\))") then {
gosub skin
}
}
}
gosub do_loot
var temp $unixtime
math temp add %loot_timer
put #var next_loot_timestamp %temp
if %is_ranged == YES {
gosub gather_ammo
gosub check_exp
}
}
after_loot:
if %is_ranged != YES || "%ranged_ammo" == "shard" {
gosub check_exp
}
gosub fatigue
goto %last_combat
get_thrown:
pause 0.5
if %invoke_weapon == YES then {
goto get_invoke
}
if %is_thrown == YES then put get my %weapon;get %weapon
goto RETURN
get_invoke:
matchre RETURN suddenly leaps|any bonds to invoke
put invoke
matchwait 5
goto get_invoke
#
# TM Combat
#
tm_combat:
var skill Targeted_Magic
gosub clear
var last_combat tm_combat
pause 0.5
if %guild == Bard && %use_screams == YES then gosub bard
if %guild == Cleric && %should_pray == YES then gosub cleric
if %should_hunt == YES then gosub do_hunt
gosub tm_prep
gosub tm_aiming
gosub tm_cast
gosub check_loot
goto tm_combat
tm_wait:
put release spell
pause 5
goto tm_combat
tm_prep:
match RETURN You begin to weave
match tm_wait nothing else to face
matchre tm_quick_cast But you're already preparing a spell|You are already preparing|You have already
put target %tm_spell %tm_mana
matchwait 2
goto tm_prep
tm_aiming:
waitforre Your formation of a targeting pattern
pause 0.5
return
tm_cast:
put cast
pause 0.5
return
tm_quick_cast:
put cast
pause 0.5
goto tm_prep
#
# Brawling
#
brawling_combat:
gosub clear
var last_combat brawling_combat
pause 0.5
if %guild == Bard && %use_screams == YES then gosub bard
if %guild == Cleric && %should_pray == YES then gosub cleric
if "%debil" != "NO" {
if "%fully_prepared" == "YES" || $spelltime >= 25 then gosub spell_cast
if "$preparedspell" == "None" then gosub spell_prep %debil_spell %debil_mana
}
if %should_hunt == YES then gosub do_hunt
if $hidden == 0 && %should_stealth == YES then gosub stealth
gosub brawling_attack
gosub check_loot
goto brawling_combat
brawling_attack:
var attack_style %brawling_moves[%brawling_move_count]
matchre brawling_next_move Roundtime
matchre wait_for_mobs There is nothing|What are you trying to attack|It would help if you were closer|You must be closer
if "%use_offhand" == "YES" then put %attack_style left
else put %attack_style
matchwait 5
goto brawling_attack
brawling_next_move:
math brawling_move_count add 1
if %brawling_move_count >= %brawling_moves_max then var brawling_move_count 0
return
#
# spells
#
spell_prep:
var spell &1
var spell_mana &2
spell_repeat:
matchre RETURN %spellPrep
matchre spell_quick_cast But you're already preparing a spell|You are already preparing|You have already fully
put prepare %spell %spell_mana
matchwait 2
goto spell_repeat
spell_cast:
put cast
pause 0.5
var fully_prepared NO
return
spell_quick_cast:
put cast
pause 0.5
var fully_prepared NO
goto spell_repeat
#
# misc
#
check_exp:
if "%check_exp" == "YES" {
if $%skill.LearningRate >= %exp_threshold {
echo
echo *** %skill finished **
echo
goto end
}
}
return
stats:
gosub calc_stats
gosub show_stats
return
calc_stats:
math kill_count add 1
var g_kill_count $global_kill_count
math g_kill_count add 1
put #var global_kill_count %g_kill_count
return
show_stats:
echo
echo *** Kills this run: %kill_count
echo *** All-time kills: $global_kill_count
echo
return
skin:
gosub do_arrange
gosub do_skin
pause 1.5
# if $righthand != %weapon then send empty right
# if $lefthand != %weapon then send empty left
if "$righthand" != "Empty" && "$lefthand" != "Empty" then
{
debug 5
gosub bundle
}
return
do_skin:
pause 0.5
match wait_skin ...
matchre RETURN Roundtime|Skin what
put skin
matchwait 5
goto do_skin
wait_skin:
pause 1
goto do_skin
do_arrange:
var count 0
arrange.loop:
if %count < %arrange {
matchre RETURN You complete arranging|That has already been arranged as much as you can manage|Arrange what|You don't know how to do that
matchre arrange_add Roundtime
put %arrange_action
matchwait 2
goto arrange.loop
}
return
arrange_add:
math count add 1
goto arrange.loop
do_loot:
match wait_loot ...
match RETURN could not find what you were referring
matchre handle_loot You search
put %loot_option
matchwait 5
goto do_loot
wait_loot:
pause 1
goto do_loot
handle_loot:
gosub stats
if %should_loot_coins == YES then
{
gosub loot_coins
}
if %should_loot_gems == YES then
{
gosub loot_gems
}
if %should_loot_boxes == YES then
{
gosub loot_boxes
}
return
loot_coins:
matchre loot_coins You pick up
matchre RETURN I could not find|What were you referring
send get coin
matchwait 3
goto loot_coins
loot_gems:
matchre loot_gems You pick up
matchre RETURN I could not find|What were you referring|Stow what
send stow gem
matchwait 3
goto loot_gems
loot_boxes:
matchre loot_boxes You put
matchre RETURN I could not find|What were you referring|Stow what
send stow box
matchwait 3
goto loot_boxes
toggle_loot_boxes_off:
var should_loot_boxes NO
return
bard:
if $Bardic_Lore.LearningRate >= 34 then return
matchre toggle.scream looking somewhat like a fish
matchre return Roundtime|a few more seconds to use it again
put scream %bard_scream
matchwait 5
return
toggle.scream:
var use_screams NO
return
cleric:
if $Theurgy.LearningRate >= 34 then return
put pray %diety
waitfor %pray_messaging
return
do_hunt:
if ($Perception.LearningRate < 34 || "$guild" == "Ranger" && $Scouting.LearningRate < 34) && $last_hunt_timestamp < $gametime
{
put hunt
pause 2
var temp $gametime
math temp add %hunt_timer
put #var last_hunt_timestamp %temp
}
return
health:
if $health <= %health_threshold {
gosub clear
goto abort
}
return
bundle:
if "%drop_skins" == "YES" then
{
goto dropSkin
}
gosub sheath_weapon
put get my bundling rope
match bundle2 You get
match noRope What were you referring
matchwait 2
bundle2:
put bundle
put tie my bundle
put tie my bundle
waitfor you tie
put adjust my bundle
put wear my bundle
waitfor You sling
gosub wield
return
noRope:
var drop_skins YES
return
dropSkin:
if contains($righthand, %weapon) then put empty left
if contains($lefthand, %weapon) then put empty right
return
fatigue:
if $stamina <= %fatigue_threshold {
if $guild == Barbarian && %berserk_on_fatigue == YES {
echo
echo *** BERSERK %fatigue_berserk! ***
echo
send berserk %fatigue_berserk
}
echo
echo *** Recovering stamina ***
echo