00:00:02 Unstable branch on CRAWL.XTAHUA.COM updated to: 0.20-a0-945-g3bf614a (34) 00:00:44 on a somewhat related note, is converting away from Lucy early supposed to be pretty much unavoidable death? 00:01:03 <|amethyst> it's supposed to be harsh 00:01:17 <|amethyst> !lm * recent god.abandon=lugonu / lg:won 00:01:18 No keyword 'lg:won' 00:01:21 <|amethyst> !lm * recent god.abandon=lugonu / won 00:01:24 30/572 milestones for * (recent god.abandon=lugonu): N=30/572 (5.24%) 00:01:46 <|amethyst> !lm * recent god.abandon / won s=-god 00:01:49 the banishes combined with the faster-than-you summons make it luck based with a really unlikely chance of getting through her entire wrath alive 00:01:54 <|amethyst> !lm * recent god.abandon / won s=-% 00:02:09 |amethyst, throw in an XL<10 00:02:14 <|amethyst> err 00:02:30 <|amethyst> yes, abandoning lugonu at xl < 10 is probably death 00:02:48 that doesnt seem fair 00:03:01 wrath should scale by xl and also by how much benefit you got from the god 00:03:02 <|amethyst> if you needed lugonu to get out of the abyss, it's supposed to be dangerous to abandon immediately after 00:03:16 90s limit exceeded: killed !lm * recent god.abandon / won s=-god 00:03:17 Unknown field: s 00:03:18 <|amethyst> that's why you'd be worshipping lugonu 00:03:29 !lm * recent s=xl god.abandon=lugonu / won 00:03:30 30/572 milestones for * (recent god.abandon=lugonu): 12/22x 27 [54.55%], 3/44x 12 [6.82%], 3/5x 24 [60.00%], 2/3x 25 [66.67%], 2/2x 23 [100.00%], 2/3x 26 [66.67%], 1/4x 20 [25.00%], 1/2x 22 [50.00%], 1/4x 19 [25.00%], 1/7x 14 [14.29%], 1/6x 18 [16.67%], 1/5x 15 [20.00%], 0/1x 16 [0.00%], 0/5x 11 [0.00%], 0/5x 13 [0.00%], 0/10x 10 [0.00%], 0/12x 9 [0.00%], 0/21x 8 [0.00%], 0/4x 17 [0.00%], 0/24x 6 ... 00:03:47 !lm * recent xl<10 god.abandon=lugonu / won 00:03:48 0/439 milestones for * (recent xl<10 god.abandon=lugonu): N=0/439 (0.00%) 00:03:52 <|amethyst> 3 people survived at level 12, that's impressive 00:04:26 |amethyst, its reasonable that i should have to survive a banish or two 00:04:36 50 wrath worth of banishes and summons no 00:04:41 ??lucy wrath 00:04:41 lugonu wrath[1/2]: ABANDONMENT: 50 penance. RETRIBUTION: 50% tloc miscast (and keep going), else 16% teleport, 8% blink. Even if a preceding effect occurred, continue to: create some abominations, thrashing horrors and ancient zymes, maybe a single tentacled starspawn, wretched star or starcursed mass. 00:04:54 like I never even got to 50 piety 00:08:37 there seems to be a flavor hint that indicates which gods have very dangerous wrath but I've never seen it explicitly stated 00:09:39 <|amethyst> >!! on an altar 00:09:50 oka, trog being violently wrathful makes sense. lugo, mak, kiku having intense wrath makes sense. are there any gods where their weak/strong wrath seems unusual? 00:09:53 <|amethyst> or ?/l?? 00:10:02 <|amethyst> err, ?/gl!! rather 00:10:18 Unstable branch on crawl.jorgrun.rocks updated to: 0.20-a0-945-g3bf614a (34) 00:10:56 well, fearful punishments on disloyal followers is boilerplate 00:11:17 the paragraph thereafter helps, vaguely 00:11:22 <|amethyst> it tells you that it sends you to the abyss and summons abyssal monsters 00:11:30 <|amethyst> I mean, it's not going to list numbers etc 00:11:33 I think dith is the only odd one... dith wrath sounds scary, but isn't. iirc 00:12:13 would it be so unreasonable to cap penance at 3*XL? 00:12:21 ??lucy wrath[2 00:12:22 lugonu wrath[2/2]: (9:42pm) timecircuits: I have a feeling I'm going to be in the abyss a lot this game (9:42pm) Henzell: tcircuits the Alchemist (L13 MfTm) is cast into the Abyss! (Lugonu's touch) (Orc:2) 00:12:30 took dith on a FE without thinking about it, abandoned, seemed to be fine 00:12:50 ??dith wrath 00:12:50 dithmenos wrath[1/1]: ABANDONMENT: 25 penance. RETRIBUTION: 25% shadows (may include shadow demons if xl>=9 or shadow fiends if xl>=18), 25% {shadow creatures}, 25% sleep, 25% {sentinel's mark} 00:12:50 <|amethyst> rast: penance on most gods does scale with XL 00:13:01 <|amethyst> not the amount necessarily, but the strength 00:13:02 you mean the strength or the duration? 00:13:03 right 00:14:05 <|amethyst> I mean, I could certainly see making it easier to change gods, and the scaling that's there was a step in that direction 00:14:41 <|amethyst> but for Lugonu specifically I think it's something to be careful about 00:15:01 <|amethyst> because of Lugonu's nature as an abyss exit with a cost 00:15:35 scaling duration is where that gets reasonable 00:16:24 <|amethyst> also, the cap wouldn't be a plain N*XL 00:16:26 and if you're xl < 10 abandoning lugo, you're probably an AK, so it makes sense for lugo to be pretty mad at her ex-champion 00:16:32 <|amethyst> it would probably scale with the god's max wrath 00:16:56 <|amethyst> rumflump: or you got banished early and lucked into an altar 00:17:26 <|amethyst> rumflump: in which case Lugonu just saved your life, so show a little gratitude 00:17:33 true 00:18:01 saw xom banish demise's xl 4 or so GhCK today 00:18:08 he didn't even look at lucy's lovely altar :( 00:18:37 super appropriate to abandon a dog that just banished you! 00:18:43 <|amethyst> well, if you're demise 00:18:43 s/dog/god 00:19:08 <|amethyst> you can probably survive the abyss at XL 4 00:19:31 I think there was a slight executioner problem actually 00:20:01 it was a pretty good yakety sax video all around, xom was very very xommy 00:20:10 <|amethyst> !learn add reserved_clan_names slight executioner problem (rumflump) 00:20:11 reserved clan names[28/28]: slight executioner problem (rumflump) 00:20:11 |amethyst, this game i abanonded at xl5 00:20:18 died at xl 7: 00:20:20 : starcursed mass + banish 00:20:20 : small abomination 00:20:20 : thrashing horror 00:20:20 : tentacled starspawn + banish 00:20:22 <|amethyst> oh no it was at 27 00:20:34 four wraths in two xl, two of them including a banish 00:20:50 second banish killed me in maybe 50 turns 00:21:37 <|amethyst> !learn del clan_names[11 00:21:38 clan_names has only 6 entries. 00:21:44 <|amethyst> !learn del reserved_clan_names[11 00:21:45 Deleted reserved clan names[11/28]: Obvious Poikilotherms 00:22:38 you almost vanished a real clan name forever 00:22:54 <|amethyst> not forever, since it gives you the text when you delete something 00:22:58 <|amethyst> so I'd have just re-added it 00:23:11 Bai Suzhen doesn't Turn into Dragon, Drops Scales Anyway 13https://crawl.develz.org/mantis/view.php?id=10994 by bcadren 00:23:11 !learn del reserved_clan_names[2 00:23:11 Deleted reserved clan names[2/27]: Beautiful Crash Blossom [wheals] 00:23:31 !learn del reserved_clan_names[3 00:23:32 Deleted reserved clan names[3/26]: Future Trapdoor Spider [gammafunk] 00:23:43 another Email From Our Grandmother On Mantis, how delightful 00:24:03 <|amethyst> gammafunk: if you delete them from back to front the arithmetic is easier :) 00:24:33 it is? 00:25:00 I use the power of up-arrow 00:25:12 <|amethyst> gammafunk: e.g. on the list I'm looking at those are 2 and 4 00:25:19 <|amethyst> so that 4 had to be turned into a 3 somehow 00:25:29 <|amethyst> or you're reloading the list I guess 00:25:41 I think I just hit up and adjust 00:25:48 problem is I want to read the older ones first 00:25:53 which are at the beginning 00:25:54 <|amethyst> ohh 00:26:16 <|amethyst> you're doing ??foo[N] in a /query 00:26:19 <|amethyst> duh 00:26:27 oh, yeah 00:26:31 <|amethyst> so reading them one at a time 00:27:23 <|amethyst> I was looking at CDO/learndb/ (because !readall doesn't print the numbers) 00:27:48 need !readall.iter 00:27:59 <|amethyst> !cmd readall 00:28:00 Command: !readall => .echo $(let (x (ldb-canonical-term $*)) (join " / " $(map (fn (n) $(entry $x $n)) $(range 1 $(entrylength $x))))) 00:32:59 <|amethyst> !cmd readall-l .echo $(let (x (ldb-canonical-term $*)) (join " / " $(map (fn (n) $(concat "[" $n "] " $(entry $x $n))) $(range 1 $(entrylength $x))))) 00:32:59 Defined command: !readall-l => .echo $(let (x (ldb-canonical-term $*)) (join " / " $(map (fn (n) $(concat "[" $n "] " $(entry $x $n))) $(range 1 $(entrylength $x))))) 00:33:07 <|amethyst> !readall-l reserved clan names 00:33:08 [1] Quiescent Sporulation [who do you think?] / [2] HashtagStupidRemove2016 [Lasty] / [3] Chaos Triplesword Zerked The Emperor Scorpion [PleasingFungus] / [4] Charms Reform Gestapo [gammafunk] / [5] Physical Recharging Gland (wheals) / [6] Ectoplasmic Revolution [PleasingFungus] / [7] Five Oh Tab Rhythm [PleasingFungus] / [8] Purple Drain by Prince Ribbit and The Evolution [gammafunk (WIP)] / [9] ... 00:35:55 <|amethyst> I guess -n probably would have been better 01:19:32 Unstable branch on crawl.develz.org updated to: 0.20-a0-945-g3bf614a (34) 01:33:14 New branch created: transporter (2 commits) 13https://github.com/crawl/crawl/tree/transporter 01:33:14 03gammafunk02 07[transporter] * 0.20-a0-946-ga84a3f0: Make some functions static 10(11 days ago, 1 file, 28+ 31-) 13https://github.com/crawl/crawl/commit/a84a3f098140 01:33:14 03gammafunk02 07[transporter] * 0.20-a0-947-g87943c1: Transporter implementation 10(10 days ago, 50 files, 763+ 266-) 13https://github.com/crawl/crawl/commit/87943c1a3a7f 01:34:23 I will be doing some more work on that but all the basic functionality is there and the vaults converted, so I can put up that WIP 01:36:38 oh, oops 01:38:09 03gammafunk02 07[transporter] * 0.20-a0-948-g76eb1d6: Add a missing transporter lua file 10(51 seconds ago, 1 file, 92+ 0-) 13https://github.com/crawl/crawl/commit/76eb1d653a6a 01:58:29 Windows builds of master branch on crawl.develz.org updated to: 0.20-a0-945-g3bf614a 02:21:18 The build has errored. (transporter - 87943c1 #8162 : gammafunk): https://travis-ci.org/crawl/crawl/builds/217450315 02:21:47 oh should have canceled that build 02:53:09 Monster database of master branch on crawl.develz.org updated to: 0.20-a0-945-g3bf614a 03:03:46 The build passed. (transporter - 76eb1d6 #8163 : gammafunk): https://travis-ci.org/crawl/crawl/builds/217450951 03:13:20 Unstable branch on crawl.beRotato.org updated to: 0.20-a0-945-g3bf614a (34) 03:41:22 -!- amalloy_ is now known as amalloy 04:41:28 -!- wHATEver is now known as Guest42697 04:59:48 -!- amalloy is now known as amalloy_ 09:05:42 blork the orc is a robin williams nod?! 09:52:06 rawlins is my hero 10:15:15 rip "Lehudib's Moon Base (on the moon)" 11:24:25 -!- amalloy_ is now known as amalloy 11:31:33 !source mutation.cc:1653 11:31:34 https://github.com/crawl/crawl/blob/master/crawl-ref/source/mutation.cc#L1653 11:31:52 !source mutation.cc:1659 11:31:53 https://github.com/crawl/crawl/blob/master/crawl-ref/source/mutation.cc#L1659 11:32:00 seriously, wth is going on in that for loop 11:32:28 if a player has only a temporary mutation with a low number this is likely to just spuriously fail? 11:32:50 granted the low numbers are mostly used by Ds muts 11:34:00 isn't it just to make it so it chooses one temp mut out of all your temp muts, with even chance? 11:34:41 right by say you have a single temporary mutation with identity 1 [this can't happen because it's a Ds mutation] 11:34:54 99 times out of 100 the loop will exit without finding anything 11:35:10 ah, Ds mutations actually take up more than 100 I think 11:35:19 so by the end of the Ds part of the enum, count will be over 100 11:35:30 no, because that's your only temp mutation so "you.temp_mutation[i] > 0" is false 11:35:47 oh I'm thinking of the one chance in thing backwards 11:36:34 yeah it's definitely confusing, i think i just recognised that particular loop syntax from other places where we do similar things 11:36:37 so odds go down 11:36:40 but isn't you.temp_mutation[i] > 0 true in that case? 11:39:03 if you have some temporary mutlevels in mut 1, then it's true yeah, so that mutation definitely gets selected (one chance in one, and you have no other temp muts later) 11:39:43 but by the end of the Ds muts count is pretty high 11:39:54 count only gets incremented if you had that temp mutation 11:40:03 oh 11:40:17 yes, that is what I was missing 11:40:53 aha 11:42:36 I hate side effects 11:43:12 thanks MarvinPA 11:44:42 heh, np 11:47:45 luckily I'm doing something that entails modifying that loop so I'm going to rewrite it to be clearer 12:12:15 <|amethyst> advil: The one_chance_in(++count) thing for doing random selection is endemic in our code 12:14:03 <|amethyst> I guess that's not quite the right word 12:14:14 now that I understand it I can see that it's a bit less heavy in c++ terms than collecting all the options into a vector and randomly choosing from the vector 12:14:21 <|amethyst> yeah 12:14:39 I think I'd rather at least unpack it into multiple ifs though 12:15:48 probably more experienced c programmers can spot that sort of side effect in complex boolean tests better than me 12:16:52 <|amethyst> hm 12:18:05 <|amethyst> our coding coventions recommend && instead of nested ifs, but I suppose short-circuited side effects have the potential for confusion 12:18:34 <|amethyst> it would be lengthening the code by at least 3 lines though 12:19:37 <|amethyst> probably five 12:20:25 https://bpaste.net/show/6a9c9da3d83d 12:20:53 it is bad millimarvins for sure 12:21:15 <|amethyst> advil: what's the 'force' thing about? 12:21:55 <|amethyst> in what situation would you prefer to remove numerically earlier mutations? 12:22:02 when you're removing them all 12:22:14 it's not a big deal but it struck me as silly to randomly choose in that case 12:22:45 <|amethyst> needs a better name at least 12:22:55 <|amethyst> also, you want to put braces on that for loop now 12:24:13 <|amethyst> for the first/force == true case, I would consider doing a simple find_if instead 12:25:15 <|amethyst> as far as splitting it out into more lines, I'm not sure 12:25:30 <|amethyst> on the one hand, it's probably easier to reason through for someone who hasn't seen it before 12:26:10 <|amethyst> on the other hand, it becomes too long for my pattern detection to say "oh, that's single-choice reservoir sampling" 12:26:43 I suppose it could be abstracted into a function, if it's being used in a lot of places 12:26:43 <|amethyst> maybe not too long, but it takes longer 12:27:52 <|amethyst> random_choose_if 12:27:57 <|amethyst> perhaps 12:28:24 <|amethyst> hm 12:29:18 <|amethyst> the problem is that it just as often (perhaps more often) uses an iterator rather than a loop 12:29:25 <|amethyst> err, rather than a numeric range 12:31:41 <|amethyst> which I guess could probably be abstracted out with a template, since it's the same for (i = something; i != something_else; i++) loop for a normal iterator... unfortunately we have all these weird iterators that cast to bool rather than having an explicit past-the-end element you can compare against 12:33:25 sounds tricky 12:39:29 <|amethyst> template It random_choose_if(It begin, It end, P pred) 12:41:02 <|amethyst> in this particular case you'd use something like auto chosen = random_choose_if(begin(you.temp_mutation), end(you.temp_mutation), [](uint8_t lvl)->bool { return lvl > 0; }); mutat = static_cast(chosen - begin(you.temp_mutations)) 12:41:11 <|amethyst> s/tions/tion/ 12:42:20 <|amethyst> hm 12:42:58 <|amethyst> I wonder if maybe it could be done with choose_random_weighted and std::transform (the latter to present all the weights as 0 or 1) 12:43:25 <|amethyst> I guess you'd still need a temporary array for that 12:48:26 <|amethyst> advil: hm, as far as 'force' goes, I think that's the wrong optimisation 12:48:59 how so? I mean, it's not really going to matter much 12:48:59 <|amethyst> advil: It would still be quadratic to remove all mutations, you'd just cut the number of iterations in half 12:49:44 <|amethyst> better would be to have _delete_single_temp_mutation(mutation_type t) and then have two callers 12:50:26 <|amethyst> delete_temp_mutation that does the selection as now and calls _d_s_t_m, and delete_all_temp_mutations that just loops through once and calls _d_s_t_m on each thing you hit 12:50:29 ah, yes, that would be better 12:50:41 delete_all_mutations works that way 12:50:53 I'm a little leery of messing too much with the save compat code there though 12:51:45 <|amethyst> the save compat code is really just "if you didn't find any, don't crash" 12:54:10 <|amethyst> probably that could live in _delete_single_temp_mutation though it might be clearer to repeat it in the two wrappers instead 12:54:55 I guess the corruption was that the total temp mut count differed from the count of mutations? 12:55:08 <|amethyst> yeah, ATTR_TEMP_MUTATIONS was wrong 12:55:27 (as a side note, that DsCK save crash I fixed appeared to have some independent stuff wrong with its innate mutation counts) 12:55:57 (my wip for today is writing testing code for mutations) 12:56:21 <|amethyst> Lua or C++? 12:56:27 lua 12:56:32 <|amethyst> nice 12:57:17 I got the basic mut testing code working and I'm a bit disappointed it didn't find any bugs, but maybe we just need more asserts 12:57:50 the ds code crashed immediately but I think I'm using you.init wrong 12:59:37 maybe it's not designed to be used in a test script right now 13:00:13 maybe something like that (that sets species) needs to be in a .rc? 13:00:28 <|amethyst> advil: if you're doing lua, you can use &r 13:01:13 <|amethyst> but yeah, probably 'species = demonspawn' in an rc file works better 13:01:21 <|amethyst> as in test/stress/abyss.rc for example 13:03:48 !source change_terrain 13:03:50 Can't find change_terrain. 13:03:50 ideally I want to try a bunch of different Ds 13:03:59 !source perm_change_terrain 13:04:00 Can't find perm_change_terrain. 13:04:10 !source permanent_change_terrain 13:04:12 Can't find permanent_change_terrain. 13:04:25 <|amethyst> advil: I don't remember if &r does that... at the very least you'd have to change to human and back 13:04:53 yeah, maybe I'll need to write some c++ for this 13:05:19 <|amethyst> ah, it does work 13:05:45 <|amethyst> you don't even need to go through human first 13:05:52 Unstable branch on crawl.akrasiac.org updated to: 0.20-a0-945-g3bf614a (34) 13:05:54 <|amethyst> just &rdemonspawn will change your mutation set 13:06:27 yeah, &r works perfectly 13:06:38 uh how do I do that in lua 13:06:58 <|amethyst> crawl.sendkeys from ready() 13:07:09 <|amethyst> see test/stress/abyss.rc again for an example 13:07:15 thanks 13:33:05 -!- amalloy is now known as amalloy_ 14:33:50 -!- Adeon_ is now known as Adeon 14:55:47 !kw byspeciesgroup s=regexp_replace(regexp_replace(regexp_replace(crace, "^(Hi|Mi|Me|Ga|Dr|Ha|Tr|Gh).*", "Simple"), "^(Hu|Ko|Demo|Ce|Sp|Te|Dee|Og).*", "Intermediate"), "^(Vi|Va|Demi|Fo|Na|Oc|Fe|Ba|Mu).*", "Advanced") 14:55:48 Defined keyword: byspeciesgroup => s=regexp_replace(regexp_replace(regexp_replace(crace, "^(Hi|Mi|Me|Ga|Dr|Ha|Tr|Gh).*", "Simple"), "^(Hu|Ko|Demo|Ce|Sp|Te|Dee|Og).*", "Intermediate"), "^(Vi|Va|Demi|Fo|Na|Oc|Fe|Ba|Mu).*", "Advanced") 14:55:57 !kw byracegroup byspeciesgroup 14:55:58 Defined keyword: byracegroup => byspeciesgroup 14:56:04 !kw byclassgroup byrolegroup 14:56:05 Defined keyword: byclassgroup => byrolegroup 14:56:11 !lg . won byspeciesgroup 14:56:12 72 games for gammafunk (won byspeciesgroup): 26x Intermediate, 25x Simple, 21x Advanced 14:56:22 !lg elliptic won byspeciesgroup 14:56:24 646 games for elliptic (won byspeciesgroup): 263x Intermediate, 211x Simple, 138x Advanced, 16x Sludge Elf, 15x Mountain Dwarf, 2x Lava Orc, Djinni 14:56:42 looks like we have to classify some more species! 14:59:56 <|amethyst> !lg * byspeciesgroup 15:00:14 lotta experimentals in there too 15:00:18 7018291 games for * (byspeciesgroup): 2727834x Intermediate, 2355631x Simple, 1676916x Advanced, 97275x Mountain Dwarf, 75223x Sludge Elf, 41674x Djinni, 28081x Lava Orc, 6046x Grey Elf, 3547x Gnome, 1213x Lacertilian, 1095x Elf, 897x Bearkin, 779x Cherufe, 592x Salamander, 589x Plutonian, 524x Imp, 373x Frog, 2x Yak 15:01:26 we kinda need a good kw for all experimental races 15:01:38 !lg * byrolegroup 15:01:40 <|amethyst> and for removed 15:01:52 7018291 games for * (byrolegroup): 2554311x Warrior, 1597604x Mage, 1142592x Zealot, 1003495x WarriorMage, 546422x Adventurer, 58993x Crusader, 50548x Stalker, 24251x Paladin, 19773x Reaver, 16990x Thief, 3312x Jester 15:02:00 yeah, removed would probably be better than putting !lo !dj on everything 15:02:04 well 15:02:07 that's different 15:02:31 <|amethyst> removed and unreleased 15:02:42 oh hey, a handy list of how much webtiles action each experimental race got on the servers 15:02:48 thanks for making that for me! :D 15:03:08 well that's not what that is 15:03:13 you want the experimental kw 15:03:49 <|amethyst> !lg * s=explbr 15:03:54 7018302 games for *: 6993099x, 3541x councilgod-PR, 3329x combo god, 2467x thorn god, 1862x smithgod rebased, 1645x iashol, 1343x faithful, 1238x chunkless, 938x basajaun, 922x bearkin, 870x evoker-god, 763x no backtracking god, 671x plutonians, 644x dpegs dynamic monsters, 634x salamander, 597x gods, 542x imp, 473x councilgod, 466x mulch ado about nothing, 428x frogs, 419x abyssrun, 416x weightle... 15:04:10 clearly mountain dwarves were a great expermient according to the byspeciesgroup list! 15:04:23 <|amethyst> ♥ "mulch ado about nothing" 15:04:35 I don't think shpingle understands what MD were 15:04:39 they were not experimental 15:04:40 !lg * explbr!= s=explbr 15:04:41 25203 games for * (explbr!=): 3541x councilgod-PR, 3329x combo god, 2467x thorn god, 1862x smithgod rebased, 1645x iashol, 1343x faithful, 1238x chunkless, 938x basajaun, 922x bearkin, 870x evoker-god, 763x no backtracking god, 671x plutonians, 644x dpegs dynamic monsters, 634x salamander, 597x gods, 542x imp, 473x councilgod, 466x mulch ado about nothing, 428x frogs, 419x abyssrun, 416x weightles... 15:04:55 !lg * explbr!= s=explbr o=-N 15:04:56 25203 games for * (explbr!=): 12x shoals-lite, 18x cards, 111x orcs and elves, 156x squarelos-0.17, 174x new nemelex, 247x evoker-god-rebase, 277x adrenaline rush, 416x weightless, 419x abyssrun, 428x frogs, 466x mulch ado about nothing, 473x councilgod, 542x imp, 597x gods, 634x salamander, 644x dpegs dynamic monsters, 671x plutonians, 763x no backtracking god, 870x evoker-god, 922x bearkin, 938x... 15:05:11 new nemelex 15:05:19 forgot it actually had a branch 15:06:06 <|amethyst> !lg * s=file 15:06:10 7018309 games for *: 807054x cszo/meta/git/logfile, 736625x cao/logfile-git, 533101x cwz/soup/trunk/logfile, 502607x cdo/allgames-svn.txt, 315953x cbro/crawl/meta/git/logfile, 226032x cue/crawl/meta/git/logfile, 196118x cao/logfile05, 176993x cdo/allgames-0.10.txt, 157503x cxc/crawl/meta/git/logfile, 152345x cao/logfile07, 142913x cao/logfile04, 139122x cao/allgames.txt, 133721x cdo/allgames-0.11.... 15:06:36 <|amethyst> !lg * !trunk s=file 15:06:36 I can probably just add Cr and Je to zealot 15:06:42 !lg * cr 1 15:06:43 3482599 games for * (!trunk): 196118x cao/logfile05, 176993x cdo/allgames-0.10.txt, 152345x cao/logfile07, 145224x cdo/allgames-svn.txt, 142913x cao/logfile04, 139122x cao/allgames.txt, 128523x cdo/allgames-0.11.txt, 119806x cao/logfile16, 110008x cao/logfile18, 108522x cao/logfile17, 105489x cao/logfile15, 88155x cao/logfile19, 80359x cao/logfile06, 79699x cbro/crawl/meta/0.18/logfile, 79137x csz... 15:06:44 1/58993. mr0t the Stabber (L1 HaCr), slain by a hobgoblin on D:1 on 2006-12-06 09:39:23, with 42 points after 189 turns and 0:02:00. 15:06:49 oh nm 15:06:50 <|amethyst> Cr was warrior-mage, not zealot 15:06:53 right 15:06:59 <|amethyst> also Pr 15:07:00 yeah, but I should update all those at some point 15:07:02 is it bad form to print to stderr in a crawl-style automated test? 15:07:04 ...really? 15:07:11 !lg * --pr 15:07:12 51927. glosham the Merry Centaur (L27 CePr of The Shining One), blasted by Gloorx Vloq (foul vapour) in Pandemonium (evilmike_gloorx_vloq_box) on 2017-04-01 12:31:28, with 1029309 points after 107230 turns and 1d+13:36:09. 15:07:13 !lg * --pr 1 15:07:14 1/51927. huberth the Believer (L1 HDPr of Zin), slain by a hound on D:1 on 2006-12-04 18:34:43, with 14 points after 33 turns and 0:00:21. 15:07:19 those are zealots 15:07:27 did they not start with a god at some point? 15:07:27 <|amethyst> oh, they're already counted 15:07:35 <|amethyst> !kw zealot 15:07:36 Keyword: zealot => Be|AK|CK|DK|Pr|--He 15:07:40 oh you mean add them to zealot, yeah they are 15:07:50 we're missing stalker, reaver, crusader, thief 15:07:53 maybe some other one 15:08:17 <|amethyst> paladin 15:08:24 !lg * pa 1 15:08:25 1/24251. mr0t the Slasher (L7 MDPa of The Shining One), slain by an orc warrior (an orcish glaive) on D:6 on 2006-12-10 23:46:18, with 1096 points after 5650 turns and 2:20:50. 15:08:31 ok, that's the zealot I was thinking of 15:09:15 <|amethyst> !kw zealot Be|AK|CK|DK|Pr|--He|Pa|Jr 15:09:16 Defined keyword: zealot => Be|AK|CK|DK|Pr|--He|Pa|Jr 15:09:23 <|amethyst> !kw warriormage 15:09:24 Keyword: warriormage => Sk|Tm|Wr|AM|En 15:10:48 I'd really love to assemble byrolegroup/byspeciesgroup directly from those Kw (and using combo instead of crace/cls) but I don't think it's possible 15:11:16 at least not in terms of storing it in a kw 15:11:56 well, or in terms of doing it at all, since you can't do anything to s= expression aside from use lg functions 15:13:28 <|amethyst> !kw WarriorMage --Sk|--Tm|--Wr|--AM|--En|--Re|--St|--Cr 15:13:30 Defined keyword: warriormage => --Sk|--Tm|--Wr|--AM|--En|--Re|--St|--Cr 15:13:39 <|amethyst> !kw warrior 15:13:39 Keyword: warrior => Fi|Gl|Mo|--Hu|As 15:14:10 <|amethyst> !kw Warrior --Fi|--Gl|--Mo|--Hu|--As|--Th 15:14:11 Defined keyword: warrior => --Fi|--Gl|--Mo|--Hu|--As|--Th 15:14:22 <|amethyst> hmm 15:16:26 <|amethyst> !kw zealot --Be|--AK|--CK|--DK|--Pr|--He|--Pa|--Jr 15:16:26 Defined keyword: zealot => --Be|--AK|--CK|--DK|--Pr|--He|--Pa|--Jr 15:16:44 <|amethyst> trying to think of a way to do it 15:16:52 <|amethyst> is it possible to filter by a function? 15:17:42 I don't think you can use anything other than lg-recognized functions 15:18:10 <|amethyst> if so you could make functions iszealot ismage etc, and do e.g. !kw zealot iszealot($crace)=0 15:18:21 <|amethyst> whatever the syntax for that would be 15:18:27 yeah, that would work through sequellese though 15:18:30 if you do 15:18:41 !kw test2 s=$(!echo crace) 15:18:42 Defined keyword: test2 => s=crace 15:18:55 <|amethyst> right, I know it works for s 15:19:06 <|amethyst> but can you do something similar to filter without grouping? 15:19:16 no I'm saying, how do you retain it as an expression? 15:19:28 when it defines the kw it evaluates the expression 15:19:38 <|amethyst> !kw test3 s=\$(!echo crace) 15:19:39 Defined keyword: test3 => s=$(!echo crace) 15:19:44 <|amethyst> !lg . test3 15:19:45 Type mismatch: echo in '!echo' 15:19:55 <|amethyst> hm 15:20:10 good attempt tho! I hadn't thought of that 15:21:02 <|amethyst> !kw test3 s=\$(echo crace) 15:21:02 one thing that would help would be if the two-letter race/class were a sequell field 15:21:03 Defined keyword: test3 => s=$(echo crace) 15:21:07 <|amethyst> !lg . test3 15:21:08 Type mismatch: echo in 'echo crace' 15:21:36 s/a sequell field/sequell fields/ 15:21:36 <|amethyst> I guess substring char is a pain 15:21:50 <|amethyst> and in some places probably can't be done 15:21:58 actually yeah I could just do a quick regexp replace to turn char into either 15:22:14 but the unsolveable part is assembling the filter dynamically 15:22:26 from the kw, I mean 15:22:43 although I could define it at least using that expression so I don't have to type it out myself 15:23:12 s/define/echo/ 15:24:07 |amethyst: another approach would be to have these groups as sequell data themselves 15:24:26 <|amethyst> what about old games? 15:24:28 maybe that's not so wise though 15:24:33 well, it'd be sequell-derived 15:24:42 so I imagine sequell can fill them in retroactively? 15:24:48 like how it does with other fields not in the logfile 15:25:11 but I suppose yeah it would have to pass back over those games, not sure how sequell does that if some new field is added 15:25:25 <|amethyst> usually they're just blank 15:25:28 right 15:25:35 <|amethyst> or missing rather 15:25:46 I'll update those byfoo kw later manually 15:26:33 <|amethyst> ah, these s= expression aren't sequellese 15:27:07 <|amethyst> which I should have noticed from the use of regexp_replace rather than re-replace 15:27:15 <|amethyst> the $() fooled me 15:28:22 oh, yeah 15:28:40 regexp_replace() is from postgres apparently 15:29:07 I think you can do "lg-ese" expressions though 15:29:17 !lg . won s=${ac + ev +sh} 15:29:18 72 games for gammafunk (won): 5x 0, 4x 57, 4x 67, 4x 59, 3x 55, 3x 65, 3x 63, 3x 56, 2x 66, 2x 78, 2x 64, 2x 76, 2x 75, 2x 58, 2x 74, 2x 84, 2x 71, 2x 70, 2x 86, 100, 95, 90, 89, 87, 85, 77, 73, 72, 69, 68, 62, 61, 53, 50, 48, 45, 44, 41, 40, 125 15:29:51 but those are again within lg, and I don't think you can call out to sequell 15:30:14 !lg . won x=${$(list 1 2 3)} 15:30:15 Unknown field: x 15:30:39 !lg . won x=${$(!echo ac)} 15:30:40 72. [ac=38] gammafunk the Sensei (L27 HuTm of Gozag), escaped with the Orb and 3 runes on 2017-03-03 03:03:16, with 1419225 points after 105481 turns and 11:52:33. 15:30:43 heh 15:30:54 so that expansion happens before lg sees it 15:32:54 <|amethyst> !lg . won x=${\$(!echo ac)} 15:32:55 Broken query near ')}' 15:34:06 !lg . won x='${ax}' 15:34:07 Unknown field: x 15:34:15 !lg . won x='${ac}' 15:34:16 Unknown field: x 15:34:23 !lg . won x="${ac}" 15:34:23 Unknown field: x 15:34:36 !lg . won x=${ac} 15:34:37 72. [ac=38] gammafunk the Sensei (L27 HuTm of Gozag), escaped with the Orb and 3 runes on 2017-03-03 03:03:16, with 1419225 points after 105481 turns and 11:52:33. 16:42:48 <|amethyst> hmm, never noticed this about hyperrogue before 16:43:00 <|amethyst> everything is a big mass of #include "foo.cpp" 16:43:25 hah 16:43:40 <|amethyst> when you make, there's one call to g++ to compile, one to gcc for a C file, and one more to g++ link 16:43:57 <|amethyst> oh, also a build of the language-data generation 16:44:13 <|amethyst> too 16:44:14 <|amethyst> l 16:45:12 <|amethyst> which makes language-data.cpp, which is included by language.cpp, which is included by init.cpp, which is included by hyper.cpp 16:46:26 <|amethyst> no #include guards either 16:47:27 beautiful 17:59:14 -!- amalloy_ is now known as amalloy 18:05:07 Unstable branch on underhound.eu updated to: 0.20-a0-945-g3bf614a (34) 19:16:53 -!- amalloy is now known as amalloy_ 19:25:08 -!- amalloy_ is now known as amalloy 19:31:02 03|amethyst02 07* 0.20-a0-946-gab879bf: Split up _compile_time_asserts(). 10(2 hours ago, 12 files, 33+ 46-) 13https://github.com/crawl/crawl/commit/ab879bfd872c 19:31:02 03|amethyst02 07* 0.20-a0-947-g2784f4f: Split off wizard.cc from main.cc. 10(84 minutes ago, 8 files, 548+ 496-) 13https://github.com/crawl/crawl/commit/2784f4f6bfe8 19:39:04 !kw removedrace 19:39:05 Keyword: removedrace => Dj--|El--|GE--|Gn--|HE--|LO--|MD--|SE-- 19:39:09 !kw experimentalrace 19:39:10 Keyword: experimentalrace => Basajaun|Be--|Ch--|Im--|Fr--|La--|Pl--|Sa-- 19:39:16 !lg * won byracegroup 19:39:17 51200 games for * (won byracegroup): 21939x Simple, 17854x Intermediate, 11407x Advanced 19:39:25 |amethyst: made those kw by the way 20:09:41 Unstable branch on crawl.jorgrun.rocks updated to: 0.20-a0-947-g2784f4f (34) 20:52:26 !lg * won byspeciesgroup 20:52:27 54178 games for * (won byspeciesgroup): 21941x Simple, 17855x Intermediate, 11407x Advanced, 2941x Removed, 34x Experimental 20:52:37 a discord user went and expanded it in a nice way 20:53:03 fr: add Removed species under that header to start screen, but make them unselectable 21:03:04 -!- amalloy is now known as amalloy_ 23:25:39 <|amethyst> !learn set millimarvin[1] 22.751 lines of code removed (as of 2017-04-01) 23:25:39 millimarvin[1/1]: 22.751 lines of code removed (as of 2017-04-01) 23:28:56 !lg * kmap~~minmay 23:28:58 72845. causticsoda the Carver (L9 HaWn), shot by a centaur warrior (arrow) (kmap: minmay_the_grid_2x2; minmay_the_grid_prize_shrinking_boxes) on D:7 on 2017-04-02 03:18:41, with 2370 points after 8991 turns and 1:27:09. 23:31:27 https://crawl.develz.org/tavern/viewtopic.php?p=310214#p310214 23:39:40 mprf(MSGCH_ERROR, "Error: you smelly wizard, how dare you enter " 23:39:43 "the same level (%s) twice! It will be trampled upon return.\n" 23:39:46 "The stack has: %s.", 23:41:34 that's very good bot synergy 23:50:24 -!- amalloy_ is now known as amalloy