-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathgammafunk.rc
1000 lines (839 loc) · 27.9 KB
/
gammafunk.rc
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
# Crawl Init file
# See the README for further details:
# https://github.com/gammafunk/dcss-rc/blob/master/README.md
# NOTE: This RC has things enabled only for my username. If you're just
# including this RC file in your own with
#
# include = gammafunk.rc
#
# then you don't have to worry about these. However if you're copy all or parts
# of gammafunk.rc directly into your own RC file, look for any sections
# conditioned on my username and follow notes in the comments for removing or
# modifying them.
################
### RC files ###
################
# Only load RandomTiles.rc under my username. If copying this part of my RC
# directly into your own, remove this section including the beginning and
# ending lines with '{' and '}'. If you don't want RandomTiles, you don't need
# to replace it with anything. If you do want RandomTiles, replace this section
# with the line:
#
# include = RandomTiles.rc
#
# and see the comments in the ready() function section as well.
{
if you.name() == "gammafunk" then
-- Prevent gammaspeed.rc from trying to load this file twice.
gammafunk_rc_loaded = true
crawl.read_options("RandomTiles.rc")
end
}
###############
### Display ###
###############
view_delay = 300
hp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red
mp_colour = 100:green, 99:lightgray, 75:yellow, 50:lightred, 25:red
hp_warning = 50
monster_list_colour =
monster_list_colour += friendly:green,neutral:brown,good_neutral:brown
monster_list_colour += trivial:darkgrey,easy:lightgrey,tough:yellow
monster_list_colour += nasty:lightred
###############
### Console ###
###############
equip_bar = true
## For item_glyph, subsequent matches override previous ones.
item := item_glyph
## Reasonable defaults
item += potion:lightgrey
item += scroll:lightgrey
item += wand:lightgrey
item += dangerous_item:blue
item += useless_item:darkgrey
### Potions ###
item += potions? of.*curing:lightgrey
item += potions? of.*heal wounds:white
item += potions? of.*berserk:brown
item += potions? of.*might:yellow
item += potions? of.*(cancellation|enlightenment):cyan
item += potions? of.*mutation:lightcyan
item += potions? of.*(lignification|ambrosia|attraction):blue
item += potions? of.*experience:lightred
item += potions? of.*resistance:green
item += potions? of.*(haste|invisibility):lightgreen
item += potions? of.*brilliance:magenta
item += potions? of.*magic:lightmagenta
### Scrolls ###
: if you.race() == "Vampire" or you.race() == "Mummy"
: or you.race() == "Ghoul" then
item += scroll.*torment:brown
: else
item += scroll.*torment:darkgrey
: end
item += scroll.*acquirement:white
item += scroll.*summoning:yellow
item += scroll.*identify:cyan
item += scroll.*revelation:lightcyan
item += scroll.*(silence|vulnerability|immolation):blue
item += scroll.*(fog|butterflies|teleport):green
item += scroll.*(fear|blink):lightgreen
item += scroll.*enchant:magenta
item += scroll.*brand weapon:lightmagenta
### Wands ###
# Single target damage.
item += wand of.*flame:brown
item += wand of.*mindburst:yellow
# AOE damage.
item += wand of.*acid:cyan
item += wand of.*iceblast:lightcyan
item += wand of.*random effects:blue
# "Alchemy"
item += wand of.*polymorph:green
item += wand of.*digging:lightgreen
# Hexes
item += wand of.*paralysis:magenta
item += wand of.*charming:lightmagenta
### General Identification ###
item += (identified|known).*(jewellery|magical staff):brown
item += unidentified.*(potion|scroll|jewellery|wand|magical staff).*:lightblue
item += manual:lightcyan
### Jewellery ###
item += identified.*artefact.*(jewellery):white
item += unidentified.*artefact.*(jewellery).*:lightmagenta
item += (a )?stones?$:lightgray
# Want this to override anything above
item += useless:darkgrey
# Only mark these types when forbidden; for other types it looks odd.
item += forbidden.*(potion|scroll):red
mons := mon_glyph
# Monsters that can be easy to miss
mons ^= * : ✱
mons ^= dancing weapon : cyan {
mons ^= spectral weapon : lightcyan {
# Classed Demonspawn
mon += blood saint:9
mon += warmonger:9
mon += corrupter:9
mon += black sun:9
# Wall glyphs; requires a font and terminal that can render these.
feature += crystal wall {░}
feature += stone wall {▒}
feature += metal wall {▓}
feature += unnaturally hard rock wall {█}
feature += altar {⚑}
#############
### Tiles ###
#############
tile_full_screen = false
tile_map_pixels = 3
###################
### Menu Colors ###
###################
# These should match the item_glyph colours exactly when possible.
# For menu_colour, the first match ignores subsequent matches.
menu := menu_colour
menu =
# Many of the entries below come from dat/defaults/menu_colours.txt,
# which we have to duplicate here since we want only some of the
# entries from that file.
menu += notes:white:Reached XP level
### General Inventory###
# Items currently not affecting you.
menu += darkgrey:(melded)
# Items disliked by your god.
menu += red:forbidden
# Useless items, comes here to override artefacts etc.
menu += darkgrey:.*useless.*
# Handle cursed and equipped items early to override other colour settings.
menu += lightred:.*equipped.* cursed
menu += inventory:lightgreen:.*equipped.*
# Colouring of autoinscribed god gifts
menu += pickup:lightred:god gift
# Highlight (partly) selected items
menu += inventory:white:\w \+\s
menu += inventory:white:\w \#\s
### Potions ###
menu += lightgrey:potions? of.*curing
menu += white:potions? of.*heal wounds
menu += brown:potions? of.*berserk
menu += yellow:potions? of.*might
menu += cyan:potions? of.*(cancellation|enlightenment)
menu += lightcyan:potions? of.*mutation
menu += blue:potions? of.*(lignification|ambrosia|attraction)
menu += lightred:potions? of.*experience
menu += green:potions? of.*resistance
menu += lightgreen:potions? of.*(haste|invisibility)
menu += magenta:potions? of.*brilliance
menu += lightmagenta:potions? of.*magic
### Scrolls ###
: if you.race() == "Vampire" or you.race() == "Mummy"
: or you.race() == "Ghoul" then
menu += brown:scroll.*torment
: else
menu += darkgrey:scroll.*torment
: end
menu += yellow:scroll.*(summoning)
menu += white:scroll.*acquirement
menu += cyan:scroll.*identify
menu += lightcyan:scroll.*revelation
menu += blue:scroll.*(noise|silence|vulnerability|immolation)
menu += green:scroll.*(fog|butterflies|teleport)
menu += lightgreen:scroll.*(fear|blink)
menu += magenta:scroll.*enchant
menu += lightmagenta:scroll.*brand weapon
### Wands ###
# Single target damage.
menu += brown:wand of.*flame
menu += yellow:wand of.*mindburst
# AOE damage.
menu += cyan:wand of.*acid
menu += lightcyan:wand of.*iceblast
menu += blue:wand of.*random effects
# "Alchemy"
menu += green:wand of.*polymorph
menu += lightgreen:wand of.*digging
# Hexes
menu += magenta:wand of.*paralysis
menu += lightmagenta:wand of.*charming
### General identification ###
menu += lightcyan:manual
menu += lightmagenta:unidentified.*artefact.*
menu += white:.*artefact.*
menu += lightblue:unidentified .*(potion|scroll|wand|jewellery|spellbook|rod|magical staff)
menu += inventory:lightgray:.*(jewellery|magical staff)
# Ego items
menu += lightblue:unidentified.*weapon.*(runed|glowing|enchanted)
menu += lightblue:unidentified.*armour.*(runed|glowing|embroidered|shiny|dyed)
#################
### Interface ###
#################
default_manual_training = true
equip_unequip = true
sort_menus = true:equipped,identified,basename,art,ego,glowing,qualname,charged,slot
ability_menu = false
autofight_stop = 50
autofight_caught = true
autofight_wait = false
bindkey = [~] CMD_LUA_CONSOLE
############################
### Travel & Exploration ###
############################
rest_wait_both = true
travel_delay = -1
explore_delay = -1
rest_delay = -1
show_travel_trail = false
explore_stop += greedy_items
##################
### Autopickup ###
##################
# Add staves, misc; note you can't use += with this option.
autopickup = $?!:"/}|
ae := autopickup_exceptions
ae += <throwing net
# Exceptions
# I use immolation somewhat early on, and vulnerability is useful the entire
# game.
ae += <vulnerability|immolation
# Tend to not use these.
ae += >scrolls? of silence
# Don't ever need a second stave
ae += staff of .*
################
### Messages ###
################
channel.multiturn = mute
msc := message_colour
msc += mute:returns to your side
msc += mute:a demon appears
msc += mute:puff of smoke
msc += mute:carefully avoids
msc += mute:is recalled
msc += mute:dissolves? into (sparkling lights|shadows)
msc += mute:(crumbles|melts) away\.
msc += mute:(merges|forms) itself .* the air
msc += mute:you swap places
msc += mute:your.*(looks stronger|shudders|resists)
msc += mute:your.*(stumbles backwards|holds.*ground)
msc += mute:your.*(blinks|safely over)
msc += mute:(phases out.*|misses) (your|something).*
msc += mute:your.*(picks up|drops)
msc += mute:your.*basks in the mutagenic energy
msc += mute:your.*(struggles|tears|pulls away).*(web|net)
more := force_more_message
: if you.god() == "Ashenzari" then
more += You have a vision of.*gates?
: end
more += The mighty Pandemonium lord .* resides here
# Interrupts
more += You don't .* that spell
more += You fail to use your ability
more += You miscast.*(Blink|Borgnjor|Door|Invisibility)
more += You can't (read|drink|do)
more += You cannot .* while unable to breathe
more += You cannot .* in your current state
more += when .*silenced
more += too confused
more += There's something in the way
more += There's nothing to (close|open) nearby
more += not good enough to have a special ability
more += You are too berserk
more += no means to grasp
more += That item cannot be evoked
more += You are held in a net
more += You don't have any such object
more += You can't unwield
more += enough magic points
more += You don't have the energy to cast that spell
more += You are unable to access your magic
# Bad things
more += Your surroundings flicker
more += You cannot teleport right now
more += A sentinel's mark forms upon you
more += (blundered into a|invokes the power of) Zot
more += enter a teleport trap
more += Ouch! That really hurt!
more += dispelling energy hits you
more += You are blasted by holy energy!
more += You are (blasted|electrocuted)!
more += You are.*(confused|poisoned)
more += god:(sends|finds|silent|anger)
more += You feel a surge of divine spite
more += disloyal to dabble
more += lose consciousness
more += You are too injured to fight blindly
more += calcifying dust hits
more += Space warps.*around you
more += Space bends around you
more += watched by something
more += flickers and vanishes!
more += doesn't seem very happy
more += is no longer charmed
# Hell effects
more += hell_effect:
# Expiring effects
more += You feel yourself slow down
more += You are starting to lose your buoyancy
more += Your hearing returns
more += time is quickly running out
more += life is in your own hands
more += You start to feel a little slower
more += You feel less protected from missiles
# Others
more += You have reached level
more += You rejoin the land of the living
more += You have finished (your manual|forgetting about)
more += Your scales start
more += You feel monstrous
more += Jiyva alters your body
: if you.god() == "Xom" then
more += god:
: end
# Dangerous monsters we force_more when first seen.
# Things with ranged (or extremely fast), irresistable effects.
more += ((glass|shining) eye|dream sheep|death drake).*into view
more += (wretched star|apocalypse crab|death drake).*into view
more += (entropy weaver|torpor snail|spriggan druid).*into view
more += (vault (warden|sentinel)|merfolk (avatar|siren)).*into view
more += (guardian serpent|draconian shifter|convoker|death cob).*into view
more += (phantasmal warrior).*into view
# Paralysis/Petrify/Banish
more += (orc sorcerer|(?<!orc )wizard|ogre mage|great orb of eyes|sphinx).*into view
more += (vampire knight|basilisk|deep elf (sorcerer|demonologist)).*into view
# Torment/flay or hellfire
more += (flayed ghost|royal mummy|mummy priest|fiend|tzitzimitl).*into view
more += (tormentor|curse toe|curse skull|hell sentinel|hellion).*into view
more += (deep elf (sorcerer|high priest)|draconian scorcher).*into view
# Things that can hit for over 90+ damage in a turn that is either ranged or
# very fast.
more += ((deep elf|draconian) annihilator|tengu reaver).*into view
more += (lich|orb of fire|executioner|juggernaut|shrike).*into view
# Any uniques and any pan lords
more += (?-i:[A-Z]).* comes? into view
stop := runrest_stop_message
ignore := runrest_ignore_message
:if you.god() == "Xom" then
stop += god:
:else
ignore += god:
:end
# Bad things
stop += wrath finds you
# Expiring effects
stop += You feel yourself slow down
stop += You are starting to lose your buoyancy
stop += Your hearing returns
stop += time is quickly running out
stop += life is in your own hands
stop += is no longer charmed
# Annoyances
ignore += contamination has completely
ignore += your breath back
ignore += talk:
ignore += talk_visual:
ignore += friend_spell:
ignore += friend_enchant:
ignore += friend_action:
ignore += sound:
###########################
### Spell/Ability slots ###
###########################
ability_slot += Fly|flight:lF
ability_slot += Stop Flying:L
ability_slot += Breathe:t
ability_slot += Invisibility:iv
# Abilities prone to miskeys.
ability_slot += Blink:IB
ability_slot += Berserk:k
ability_slot += Corrupt:C
ability_slot += Enter the Abyss:E
# 4 letters from words of the spell name at (1) beginning, (2) end,
# of words in the spell, (3) anywhere from the spell name, or (4) from the
# names of the spell schools, in order of preference.
spell_slot += Alistair's intoxication:aisn
spell_slot += Animate Armour:aret
spell_slot += Apportation:anpt
spell_slot += Airstrike:ae
spell_slot += Anguish:ahgi
spell_slot += Animate dead:adet
spell_slot += Arcjolt:atjc
spell_slot += Blazeheart golem:bgtm
spell_slot += Blink:BKLN
spell_slot += Bombard:bdmb
spell_slot += Borgnjor's revivification:BRSN
spell_slot += Borgnjor's vile clutch:bvch
spell_slot += Brom's barelling boulder:bmgr
spell_slot += Call canine familiar:cflr
spell_slot += Call imp:cilp
spell_slot += Cause fear:cfre
spell_slot += Chain lightning:clng
spell_slot += Confusing touch:ctgh
spell_slot += Curse of agony:caye
spell_slot += Corpse rot:cret
spell_slot += Dazzling Flash:dfgh
spell_slot += Death channel:dtcl
# Upper-case to prevent miskeys.
spell_slot += Death's door:DROT
spell_slot += Dimensional bullseye:dble
spell_slot += Discord:DCSR
spell_slot += Disjunction:iuoe
spell_slot += Dispel undead:ndp
spell_slot += Dispersal:iea
spell_slot += Dragon's call:dcls
spell_slot += Enfeeble:efbl
spell_slot += Ensorcelled hibernation:ehnd
spell_slot += Eringya's Noxious Bog:enb
spell_slot += Fire storm:fsmt
spell_slot += Fireball:flbr
spell_slot += Flame wave:fwme
spell_slot += Foxfire:fxro
spell_slot += Freezing cloud:fcgd
spell_slot += Freeze:fezr
spell_slot += Frozen Ramparts:frnt
spell_slot += Fugue of the fallen:fenl
spell_slot += Fulminant prism:fpmt
spell_slot += Gell's Gravitas:glvt
spell_slot += Hailstorm:hmls
spell_slot += Haunt:htna
spell_slot += Ignition:ntg
spell_slot += Inner flame:frn
spell_slot += Irradiate:ierd
spell_slot += Iskenderun's battlesphere:ibne
spell_slot += Jinxbite:jxbe
spell_slot += Leda's Liquefaction:lanq
spell_slot += Lee's rapid deconstruction:ldr
spell_slot += Lesser Beckoning:lbg
spell_slot += Lehudib's crystal spear:lcsb
spell_slot += Magic dart:mdtc
spell_slot += Malign gateway:mgy
spell_slot += Manifold Assault:madt
spell_slot += Maxwell's Capacitive Coupling:mclp
spell_slot += Martyr's Knell:mkrl
spell_slot += Mephitic cloud:mcdp
spell_slot += Mercury vapours:mvs
spell_slot += Metabolic englaciation:mcn
spell_slot += Monstrous menagerie:mst
spell_slot += Necrotize:nzte
spell_slot += Olgreb's toxic radiance:oia
spell_slot += Orb of destruction:dbn
spell_slot += Ozocubu's armour:oau
spell_slot += Ozocubu's refrigeration:cbz
spell_slot += Pain:pnai
spell_slot += Passage of golubria:uoi
spell_slot += Passwall:aeu
spell_slot += Petrify:pyt
spell_slot += Portal projectile:oei
spell_slot += Sandblast:zst
spell_slot += Scorch:shcr
spell_slot += Sculpt simulacrum:stml
spell_slot += Searing ray:sry
# Upper-case to prevent miskeys.
spell_slot += Shatter:STH
spell_slot += Shock:zok
spell_slot += Sigil of binding:sblg
spell_slot += Silence:SLC
spell_slot += Slow:swlh
spell_slot += Spellforged servitor:spvt
spell_slot += Static discharge:tdc
spell_slot += Sticky flame:yfk
spell_slot += Sting:zptg
spell_slot += Stone arrow:wtn
spell_slot += Summon cactus giant:cgst
spell_slot += Summon forest:fsnt
spell_slot += Summon horrible things:hts
spell_slot += Summon hydra:hsy
spell_slot += Summon ice beast:bct
spell_slot += Summon lightning spire:lst
spell_slot += Summon mana viper:vms
spell_slot += Summon small mammal:zsm
spell_slot += Swiftness:ieao
spell_slot += Teleport other:tprh
spell_slot += Tornado:TDN
spell_slot += Tukima's Dance:dkc
spell_slot += Vampiric draining:vnd
spell_slot += Volatile Blastmotes:vbme
spell_slot += Yara's violent unraveling:yvut
# Default letters
spell_slot += .*:XYZ
##################
### Item slots ###
##################
## Rings, in order of letter used.
item_slot += ring of dexterity : Dd
item_slot += ring of evasion : Ee
item_slot += ring of .*fire : Ff
item_slot += ring of (ice|protection from cold) : Cc
item_slot += ring of intelligence : Ii
item_slot += ring of flight : L
item_slot += ring of magical power : Mm
item_slot += ring of positive energy : Nn
item_slot += ring of poison resistance : P
item_slot += ring of resist corrosion : R
item_slot += ring of strength : Ss
item_slot += ring of see invisible : v
item_slot += ring of willpower: Ww
# Need numeric match to not trigger for rF/rC rings
item_slot += \+[0-9]+ ring of protection : Tt
item_slot += ring of slaying : Yy
item_slot += ring of wizardry : Zz
########################
### Autoinscriptions ###
########################
show_god_gift = unident
ai := autoinscribe
ai += potions? of berserk rage:!q
ai += scrolls? of silence:!r
ai += of faith:!P
ai += manual of:!d
# Prevent melee with all staves; if we want to melee with one, it's safe to
# require removing the annotation.
ai += magical staff:!a
ai += (large rock|throwing net|curare|of dispersal):=f
# Convenient shortcuts
ai += curing:@q1
ai += potions? of heal wounds:@q2
ai += potions? of haste:@q3
ai += scrolls? of teleportation:@r2
ai += identify:@r1
##############
### Morgue ###
##############
note_hp_percent = 10
note_all_skill_levels = true
note_chat_messages = false
user_note_prefix = >>
note_items += experience,of resistance, Archmagi
note_items += crystal plate armour,pearl dragon scales
note_items += artefact
note_messages += You feel monstrous
note_messages += You pass through the gate
note_messages += cast .* Abyss
# Noteable monsters
# Undead
note_monsters += ancient lich,curse skull,curse toe,royal mummy
# Depths
note_monsters += caustic shrike
# Special hall_of_zot spawns
note_monsters += killer klown,electric golem,orb of fire
dump_message_count = 30
dump_order = header,hiscore,stats,misc,mutations,skills,spells,inventory
dump_order += overview,screenshot,monlist,messages,skill_gains,action_counts
dump_order += vaults,notes,kills,turns_by_place,xp_by_level
############
## Macros ##
############
# Only make these macros for my username. If copying this part of my RC
# directly into your own, remove these lines including the '{' and '}' if you
# don't want RandomTiles or save_with_message. If you want either of those,
# replace these lines with normal RC macro lines like:
#
# macros += M S ===save_with_message
# macros += M 8 ===new_random_tile
# ...
#
{
-- Must use crawl.setopt() for the name condition to work.
if you.name() == "gammafunk" then
crawl.setopt("macros += M 1 zz")
crawl.setopt("macros += M S ===save_with_message")
crawl.setopt("macros += M 8 ===new_random_tile")
crawl.setopt("macros += M 9 ===set_tile_by_name")
crawl.setopt("macros += M 0 ===toggle_tile_timer")
crawl.setopt("macros += M - ===toggle_random_tile")
end
}
###########
### Lua ###
###########
{
-- Equipment autopickup (by Medar and various others)
local function pickup_equipment(it, name)
if it.is_useless then return end
local class = it.class(true)
if class == "armour" then
local good_slots = {cloak="Cloak", helmet="Helmet",
gloves="Gloves", boots="Boots"}
st, _ = it.subtype()
-- Autopickup found aux armour if 1) we don't have any or 2) it's artefact,
-- or 3) if we don't have artefact or ego armour, and the found armour is
-- ego.
if good_slots[st] ~= nil then
if good_slots[st] == "Gloves" and you.has_claws() > 0 then return end
if it.artefact then return true end
local cur = items.equipped_at(good_slots[st])
if cur == nil then return true end
if cur.branded or cur.artefact then return end
if it.branded then return true end
-- Autopickup found body armour of the same kind we're wearing, according
-- to conditions (2) and (3) above used for aux slots.
elseif st == "body" then
local cur = items.equipped_at("armour")
if cur == nil then return end
if cur.name("qual") ~= it.name("qual") then return end
if it.artefact then return true end
if cur.branded or cur.artefact then return end
if it.branded then return true end
end
end
return
end
add_autopickup_func(pickup_equipment)
-- Spellcasting spam reduction by monqy
local function generic_cast_spell(cmd)
crawl.mpr('<cyan>Cast which spell?</cyan>')
crawl.flush_prev_message()
crawl.process_keys(cmd)
end
function cast_spell()
generic_cast_spell('z')
end
function force_cast_spell()
generic_cast_spell('Z')
end
}
# Note: My final RC file has code from lua files found at:
# https://github.com/gammafunk/dcss-rc/blob/master/README.md
# starting from the line below.
{
---------------------------
---- Begin force_mores ----
---------------------------
-- See README.md for documentation.
last_turn = you.turns()
-- Each entry must have a 'name' field with a descriptive name, a 'pattern'
-- field, a 'cond' field giving the condition type, and a 'cutoff' field giving
-- the max value for where the force_more will apply. Possible values for
-- 'cond' are xl and maxhp.
--
-- The 'pattern' field's value can be either a regexp string or array of regexp
-- strings matching the appropriate monster(s). Any values are joined by "|" to
-- make a new force_more of the form:
--
-- ((?!spectral )VALUE1|VALUE2|...)(?! (skeleton|zombie|simularcrum)).*into view".
--
-- To allow derived undead forms of a monster to match, include 'spectral ' at
-- the beginning of and/or ' (skeleton|zombie|simularcrum)' at the end of your
-- pattern for that monster.
fm_patterns = {
-- Fast, early game Dungeon problems for chars with low mhp.
{name = "30mhp", cond = "maxhp", cutoff = 30,
pattern = "adder|hound"},
-- Dungeon monsters that can damage you for close to 50% of your mhp with a
-- ranged attack.
{name = "40mhp", cond = "maxhp", cutoff = 40,
pattern = "orc priest|electric eel"},
{name = "60mhp", cond = "maxhp", cutoff = 60,
pattern = "acid dragon|steam dragon|manticore"},
{name = "70mhp", cond = "maxhp", cutoff = 70,
pattern = "centaur(?! warrior)|meliai|yaktaur(?! captain)"},
{name = "80mhp", cond = "maxhp", cutoff = 80,
pattern = "gargoyle|orc (warlord|knight)"},
{name = "90mhp", cond = "maxhp", cutoff = 90,
pattern = {"centaur warrior", "deep elf archer", "efreet",
"molten gargoyle", "tengu conjurer"} },
{name = "110mhp", cond = "maxhp", cutoff = 110,
pattern = {"centaur warrior", "deep elf (mage|knight)", "cyclops", "efreet",
"molten gargoyle", "tengu conjurer", "yaktaur captain",
"necromancer", "deep troll earth mage", "hell knight",
"stone giant"} },
{name = "160mhp", cond = "maxhp", cutoff = 160,
pattern = {"(fire|ice|quicksilver|shadow|storm) dragon",
"(fire|frost) giant", "war gargoyle",
"draconian (knight|stormcaller"} },
} -- end fm_patterns
active_fm = {}
-- Set to true to get a message when the fm change
notify_fm = false
-- Wrapper of crawl.mpr() that prints text in white by default.
if not mpr then
mpr = function (msg, color)
if not color then
color = "white"
end
crawl.mpr("<" .. color .. ">" .. msg .. "</" .. color .. ">")
end
end
function init_force_mores()
for i,v in ipairs(fm_patterns) do
active_fm[#active_fm + 1] = false
end
end
function update_force_mores()
local activated = {}
local deactivated = {}
local hp, maxhp = you.hp()
for i,v in ipairs(fm_patterns) do
local msg = nil
if type(v.pattern) == "table" then
for j, p in ipairs(v.pattern) do
if msg == nil then
msg = p
else
msg = msg .. "|" .. p
end
end
else
msg = v.pattern
end
msg = "(?<!spectral )(" .. msg .. ")(?! (skeleton|zombie|simulacrum)).*into view"
local action = nil
local fm_name = v.pattern
if v.name then
fm_name = v.name
end
if not v.cond and not active_fm[i] then
action = "+"
elseif v.cond == "xl" then
if active_fm[i] and you.xl() >= v.cutoff then
action = "-"
elseif not active_fm[i] and you.xl() < v.cutoff then
action = "+"
end
elseif v.cond == "maxhp" then
if active_fm[i] and maxhp >= v.cutoff then
action = "-"
elseif not active_fm[i] and maxhp < v.cutoff then
action = "+"
end
end
if action == "+" then
activated[#activated + 1] = fm_name
elseif action == "-" then
deactivated[#deactivated + 1] = fm_name
end
if action ~= nil then
local opt = "force_more_message " .. action .. "= " .. msg
crawl.setopt(opt)
active_fm[i] = not active_fm[i]
end
end
if #activated > 0 and notify_fm then
mpr("Activating force_mores: " .. table.concat(activated, ", "))
end
if #deactivated > 0 and notify_fm then
mpr("Deactivating force_mores: " .. table.concat(deactivated, ", "))
end
end
local last_turn = nil
function force_mores()
if last_turn ~= you.turns() then
update_force_mores()
last_turn = you.turns()
end
end
init_force_mores()
-------------------------
---- End force_mores ----
-------------------------
----------------------------
---- Begin load_message ----
----------------------------
-- See README.md for documentation.
message_color = "white"
-- Wrapper of crawl.mpr() that prints text in white by default.
if not mpr then
mpr = function (msg, color)
if not color then
color = "white"
end
crawl.mpr("<" .. color .. ">" .. msg .. "</" .. color .. ">")
end
end
function save_with_message()
if you.turns() == 0 then
crawl.sendkeys("S")
return
end
crawl.formatted_mpr("Save game and exit?", "prompt")
local res = crawl.getch()
if not (string.char(res) == "y" or string.char(res) == "Y") then
crawl.formatted_mpr("Okay, then.", "prompt")
return
end
crawl.formatted_mpr("Leave a message: ", "prompt")
local res = crawl.c_input_line()
c_persist.message = res
crawl.sendkeys(control("s"))
end
function load_message()
if c_persist.message and c_persist.message ~= "nil"
and c_persist.message ~= "" then
mpr("MESSAGE: " .. c_persist.message, message_color)
c_persist.message = nil
end
end
-----------------------------------
---- End leave message on save ----
-----------------------------------
}
# The ready() function is needed for code that has to process each turn or UI
# action.
{
function ready()
-- Open skill screen on turn 0.
if not skills_set and you.turns() == 0 then
crawl.sendkeys("m")
skills_set = true
end
-- force_mores.lua
force_mores()
-- Enable these only for my username. If copying this portion of my RC into
-- your own and you don't want these features, remove everything from the 'if
-- you.name() ...' line to the ' end' line corresponding to that 'if'
-- statement. If you do want those features, remove only the 'if' line and
-- its corresponding ' end' line so that they're not conditioned on my
-- username.
if you.name() == "gammafunk" then
-- load_message.lua
load_message()
-- RandomTiles
random_tile()
end
end
}
#############
### Debug ###
#############
fsim_rounds = 10000