00:01:27 meme sheep 00:01:35 just gonna throw that one out there 00:06:11 !lg * ckiller~~sheep ktyp=beam s=kaux 00:06:14 220 games for * (ckiller~~sheep ktyp=beam): 220x exploding inner flame 00:06:28 !lg * ckiller~~sheep ktyp=beam s=kmap 00:06:31 220 games for * (ckiller~~sheep ktyp=beam): 209x, 3x minmay_lair_entry_grove, 3x grunt_livestock, 3x grunt_megastairs_2, kennysheep_town, hangedman_ranch 00:06:34 hm 00:07:46 It looks like kmap doesn't catch the sheep created by create_monster 00:07:57 !vault kb_xom_exploding_sheep 00:07:58 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/dat/des/altar/xom_sheep.des#L48 00:08:11 There's no way none of those 209 exploding sheep deaths are from this 00:08:31 !lg * ckiller~~sheep ktyp=beam s=map 00:08:34 220 games for * (ckiller~~sheep ktyp=beam): 186x kb_xom_exploding_sheep, 28x, 2x grunt_megastairs_2, minmay_slime_entry_jelly_boxes, kennysheep_town, grunt_livestock, hangedman_ranch 00:08:55 Unstable branch on CRAWL.XTAHUA.COM updated to: 0.20-a0-1006-ge6c5631 (34) 01:28:06 mrrr. just had pikel's slaves get freed while in Usk's injury bond; they're all now unhappy with me... 02:13:05 -!- Marvin is now known as Guest37534 02:45:07 that sounds like a bug 02:45:22 Lasty: < geekosaur> mrrr. just had pikel's slaves get freed while in Usk's injury bond; they're all now unhappy with me... 03:11:41 Lasty: < geekosaur> mrrr. 03:11:46 see, im not the only furry around here 03:12:27 australia is full of furries 03:12:46 are you actually "A Furry" or do you just say that to annoy people 03:12:54 yes 03:14:30 I was a furry when I was like, 11, but I've grown out of it, as far as I know 03:17:16 Unstable branch on crawl.beRotato.org updated to: 0.20-a0-1006-ge6c5631 (34) 03:17:40 now I'm a 100% normal, well-adjusted adult who dreams about falling in love with faeries 03:18:12 -!- amalloy_ is now known as amalloy 03:20:14 which reminds me. should pikel's slaves maybe not leave corpses 03:22:30 ??ustabi 03:22:30 I don't have a page labeled ustabi in my learndb. 03:22:34 ??tomb 03:22:35 tomb[1/7]: Accessed from the Crypt on the third level. Three levels deep, with a golden rune at the bottom. A grand place to die, lots of good company, and so very appropriate. Screw not with the sphinxes, for they will SLAY you. Gets a lot easier with practice, due to the low variety. 03:22:39 ??tomb [2] 03:22:39 tomb[2/7]: On rare occasions it might not be possible to finish the tomb without any means of preventing teleportation. One of the chokepoints that lead to the stairs down might be blocked by a teleport trap. Patience and a means of blinking can help here. 03:22:41 that solution is probably too incomplete considering the inconsistency it adds, i guess 03:22:43 ??tomb [3] 03:22:43 tomb[3/7]: Need to go down to go up to go down. You can avoid this by random teleporting around on Tomb:2 until you land in the correct region. 03:22:57 minmay: which enemy in tomb was the one with miasma breath 03:23:04 um 03:23:06 literally none of them 03:23:09 oh 03:23:13 I mean the draining cloud one then 03:23:16 @??ushabti 03:23:16 ushabti (078) | Spd: 8 | HD: 7 | HP: 38-52 | AC/EV: 9/6 | Dam: 30 | 11non-living, fighter, see invisible, unbreathing | Res: 13magic(immune), 05fire, 02cold, 10elec, 09poison+++, 12drown, 04rot+++, 13neg+++, 13torm | XP: 206 | Sp: death rattle (2d4) [06!sil], warning cry [11!AM, 08breath], dispel undead (3d14) [06!sil] | Sz: little | Int: human. 03:23:18 thanks 03:32:01 -!- Marvin is now known as Guest15045 03:37:44 so were you like, going to say something about them, or... 03:37:58 did uv4 get webs fixed back to the old way? 03:38:32 this is important for a discussion in another channel :D 03:38:38 ??web 03:38:38 web[1/1]: While in it, you are unable to attack or move, similarly to being netted. You can stab webbed monsters. You can be webbed by web traps, jumping spider melee, Arachne's ensnare spell, and very rarely chaos branded melee. {Sack of spiders} will also create webs around you. 03:50:53 i can confirm that australia is full of furries, based on my australian friends 04:03:37 -!- amalloy is now known as amalloy_ 07:47:49 -!- Marvin is now known as Guest42398 08:22:27 just because i like spiders does NOT make me a furry 08:33:24 You hear Xom's avuncular chuckle! The shock serpent falls off the wall! The wolf spider evaporates and reforms as a shock serpent!!! 08:33:25 ? 08:34:24 <|amethyst> Tux[Qyou]: message ordering 08:34:37 yes 08:34:40 it seems a bit broken 08:35:13 <|amethyst> a bit, yes 08:36:35 <|amethyst> the problem here is that the monster needs to fall off the wall in change_monster_type, or else we'd need to remember to call check_clinging every time we call that function 08:36:54 <|amethyst> but the poly messaging is done in monster_polymorph after change_monster_type returns 08:38:10 <|amethyst> can't do it earlier in monster_polymorph because we don't know (for example) whether the changed monster will be visible 08:38:56 <|amethyst> could move the monster_polymorph messaging into change_monster_type, but one doesn't want spriggan riders to "evaporate and reform" when their mounts are killed 08:39:56 <|amethyst> so c_m_t would at least need an extra flag parameter, and quite likely more than that 08:42:59 <|amethyst> I think a general solution to this kind of issue would be to have a way to suppress messaging temporarily, and then to gather the messages that were suppressed (so you can re-output them after other messages) 08:42:59 haha, in trying to figure it what's involved in changing spellpower stepdown to use its param power directly instead of power / 100, I discovered that every other user of this function already multiplies power by 100 08:45:26 <|amethyst> not the important one 08:45:59 <|amethyst> I mean, it could just divide by 100 08:45:59 -!- Marvin is now known as Guest49306 08:45:59 yeah...I'm actually not sure what these other calls are even doing 08:45:59 <|amethyst> (calc_spell_power) 08:46:22 |amethyst: do you have opinions on smooth vs non-smooth stepdown in this case? 08:46:38 it's not smooth right now 08:46:40 <|amethyst> do we have non-smooth stepdown? 08:47:05 <|amethyst> I mean, we have a floor and ceiling for stepping down 08:47:06 it's the old deprecated one that is linear below the step, and is still used in about half of the cases where there's a stepdown 08:47:23 <|amethyst> linear below the step is reasonable I think 08:47:28 <|amethyst> if you don't do that it's a step up 08:47:33 <|amethyst> rather than step down 08:48:01 !source stepdown_value 08:48:01 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/stepdown.cc#L48 08:48:33 !source stepdown 08:48:33 1/2. https://github.com/crawl/crawl/blob/master/crawl-ref/source/stepdown.cc#L22 08:48:57 the latter has no breakpoint 08:49:57 <|amethyst> right, I'm saying I think we should have a version of stepdown that is linear below the step value if we are going to replace stepdown_value 08:50:27 <|amethyst> or else we should rename it to log_transform or something like that 08:50:55 hmm 08:51:09 well, it is doing a log transform, but I guess the idea was to get rid of hard breakpoints 08:51:28 later I'm gonna add some docstrings to that code, it took me like an hour+ a conversation with elliptic to puzzle out all the history there 08:53:34 <|amethyst> hmm 08:53:52 <|amethyst> if that were ln instead of log2 the derivative would be continuous 08:54:01 heh 08:54:07 I wasn't entirely clear why it had to be log2 08:54:19 especially with "return log(n) / log(2); // :(" 08:54:32 <|amethyst> to fit the old formula where we were dividing by two 08:54:54 <|amethyst> s/formula/procedure/ 08:55:06 ah 08:55:18 <|amethyst> that's a :( because android doesn't have C99/posix log2() 08:55:23 ohh 08:55:40 yeah, that is in ifdefs isn't it 09:07:12 <|amethyst> hmm... I think it's weird that objstat_record_monster tracks fractions of a chunk 09:08:10 <|amethyst> oh, just half chunks, but 09:08:25 <|amethyst> that formula is wrong compared to turn corpse_into_chunks 09:08:40 <|amethyst> in the latter we apply random2() first then do the stepdown 09:08:59 <|amethyst> in objstat_record_monster we apply the stepdown and then divide by two 09:09:22 heh 09:10:17 <|amethyst> need to do some calculus instead 09:10:38 <|amethyst> or, actually roll it for each monster 09:11:52 ugh, I think for any of this stuff about spellpower to mean anything, calc_spell_power also needs to work in millis or something 09:12:26 well, it sort of already is internally, but then stepdown_spellpower undoes all that 09:12:52 <|amethyst> you mean you need the output to have more resolution? 09:12:56 yeah 09:12:59 <|amethyst> why? 09:13:20 <|amethyst> what's the effective difference between 24 and 24.001 spell power? 09:14:30 one goal was to have smoother changes in fail % with training, and this is too low resolution to get that 09:15:55 also, it's divided by 100 in calc_spell_power and then multiplied by 6 in raw_spell_fail 09:16:13 so that's some resolution that is just lost in a somewhat silly fashion 09:16:14 <|amethyst> yeah, I could see getting the result in sixths 09:16:24 <|amethyst> or, rather, passing in a 'scale' parameter 09:17:20 that's an idea 09:17:37 in particular, one that would involve *not* investigating every call to this function 09:19:00 <|amethyst> I think that's the only one that cares about changes of less than 1 09:21:44 6 is such an inconvenient integer 09:21:47 oh well 09:25:00 maybe I'll change stepdown_spellpower to use millis instead of centis 09:25:46 at least internally 09:26:27 <|amethyst> Using centis internally would be enough for your purposes I think 09:26:37 <|amethyst> since right now it uses actual spell power internally 09:26:47 <|amethyst> because of that /100 09:27:04 <|amethyst> but I think that too should take a scale parameter 09:27:07 right, yeah, it takes an argument in centis 09:27:31 <|amethyst> argument in centipowers and returns a power, such fun 09:27:31 I also switched it so that the division happens after the stepdown, since stepdown is using doubles internally anyways 09:27:45 <|amethyst> stepdown_value isn't, but I guess you changed that? 09:27:51 stepdown_value calls stepdown 09:28:00 <|amethyst> stepdown_value rounds to integers 09:28:06 <|amethyst> and takes integers 09:29:15 <|amethyst> hm 09:29:23 yeah, I guess it doesn't matter 09:29:24 <|amethyst> looks like it uses ROUND_DOWN though so you're good 09:29:33 stepdown casts to doubles, does its thing, and then converts back to integers 09:29:34 <|amethyst> assuming you multiplied all the parameters by 100 and not just the first one 09:29:39 yes 09:35:56 <|amethyst> advil: since you're looking for far-reaching changes that touch the whole code base... 09:36:04 lol 09:36:12 I never think they're going to be 09:36:12 <|amethyst> advil: we should just rescale spell power so centis are the real number 09:36:23 yeah, I was thinking about that 09:36:32 but I don't want to do it :-( 09:36:35 <|amethyst> heh 09:36:49 <|amethyst> actually, better 09:36:53 I prefer millis to centis, I guess 09:37:22 <|amethyst> we should borrow or implement a fixed-point arithmetic class 09:37:28 haha 09:37:32 nice 09:37:43 <|amethyst> we pass around number+scale all the time 09:37:56 <|amethyst> often in inconsistent ways 09:38:00 I can feel the pull of doing that but I still don't want to 09:38:09 0.21 arithmetic reform 09:38:13 <|amethyst> Implementing the class is the fun part 09:38:22 <|amethyst> making the rest of the code use it is the problem.... 09:39:57 indeed 09:58:57 seems like everyone rolls their own 10:02:26 here's one that is probably gpl compatible though https://github.com/johnmcfarlane/fixed_point 10:02:46 boost license 10:22:12 03advil02 07https://github.com/crawl/crawl/pull/513 * 0.20-a0-1002-g9828b3a: Add scale parameters, for better spell power resolution 10(4 minutes ago, 2 files, 33+ 8-) 13https://github.com/crawl/crawl/commit/9828b3a98898 10:22:13 03advil02 07[remove_chance_breaks] * 0.20-a0-1002-g9828b3a: Add scale parameters, for better spell power resolution 10(4 minutes ago, 2 files, 33+ 8-) 13https://github.com/crawl/crawl/commit/9828b3a98898 10:24:38 03advil02 07https://github.com/crawl/crawl/pull/513 * 0.20-a0-1002-g7582b03: Add scale parameters, for better spell power resolution 10(7 minutes ago, 2 files, 33+ 8-) 13https://github.com/crawl/crawl/commit/7582b0345d51 10:24:38 03advil02 07[remove_chance_breaks] * 0.20-a0-1002-g7582b03: Add scale parameters, for better spell power resolution 10(7 minutes ago, 2 files, 33+ 8-) 13https://github.com/crawl/crawl/commit/7582b0345d51 10:24:48 I guess that's the downside of having this in PRified form 10:34:15 -!- Marvin is now known as Guest15109 12:22:29 -!- Marvin is now known as Guest79770 13:09:49 -!- amalloy_ is now known as amalloy 13:10:15 Unstable branch on crawl.akrasiac.org updated to: 0.20-a0-1006-ge6c5631 (34) 13:16:37 -!- Marvin is now known as Guest38575 13:23:48 advil: I support this project. 13:49:42 -!- Bammboobies is now known as Bammboo 14:04:21 -!- Bammboobies is now known as Bammboo 14:09:42 -!- Bammboobies is now known as Bammboo 14:11:01 -!- Marvin is now known as Guest31506 15:16:54 -!- Tarara is now known as Taraiph 15:49:46 -!- Siluro is now known as Silurio 15:53:16 anyone here familiar enough with hellcrawl to tell me how to get out after getting the orb. do you have to go through hell? thanks :) 15:54:14 mibert: you can ask in ##crawl-forks 15:54:23 I think that's the name of the channel 15:54:47 cool, thanks, will do :) 16:07:16 -!- Shimatora__ is now known as Shimatora 16:07:44 -!- Silurio is now known as Shimatora__ 16:08:33 -!- Shimatora__ is now known as Boris 16:09:12 -!- Boris is now known as Silurio 16:09:43 hah! 16:09:51 I just found a neat little bug that probably no one ever noticed 16:10:08 related to the problem I had with transporters 16:10:44 where I had been setting a position marker at the transporter location to hold the destination, which seemed the most natural way to record that info 16:10:58 hatches use this, after all, to record their destination 16:11:18 but there turned out to be a problem precisely because hatches do this 16:12:02 since you can't have a one feature type (say a transporter) and an escape hatch at the same location, you'd think it'd be fine ot just record and look up a position marker at the location of either 16:12:40 except I already know crawlcode so wouldn't make such assumptions :p 16:13:38 but it turns out that, due to the way crawl loads only one level at a time, when choosing the hatch destination, which is always on a different level, the code remembers the coordinates of the hatch on the source level, and then on the destination level, records the position marker at those same coordinates 16:14:20 so the marker isn't recorded on the same level as the hatch, but the coordinates will be the same 16:14:37 so before transporters this wasn't a problem, since only hatches used position markers 16:15:23 but when I implemented transporters, that changed, and now if you had a transporter at the same coordinates as a hatch from a level above/below, you'd have them both trying to record their markers at the same spot 16:15:31 but then I realized that it's a problem even without transporters 16:15:37 since you can have up hatches and down hatches 16:16:02 so if a down hatch has the same location as an up hatch two levels down, they will both be forced to use the same destination 16:16:21 since they're trying to record their markers at the same location on the level between 16:16:31 but the odds of this happening are pretty small, and no one really noticed 16:17:27 I'm going to add a member to map_position_marker to indicate which feature type the marker corresponds to 16:17:47 the code allows recording multiple markers at a location just fine, since it's just a multimap 16:18:11 heh 16:18:19 long-terms I'd like to basically remove all marker types save for lua markers 16:18:30 and probably do what |amethyst suggested, and have a grid-based prop system 16:18:50 that could just store whatever data at a location with lookup by a key 16:48:58 -!- Adeon_ is now known as Adeon 18:21:54 -!- Silurio_ is now known as Silurio 18:30:50 -!- hittemvvhard is now known as hittemvvvhard 19:16:53 -!- Tarara is now known as Taraiph 19:50:40 -!- amalloy is now known as amalloy_ 19:52:57 minmay: https://cdn.discordapp.com/attachments/205316046230388737/302229642717167617/unknown.png 20:41:34 cool map 20:41:39 is that in the game? 20:41:46 yes 20:42:02 name? 20:42:35 I was worried about potential performance issues with the all-glass version but I tried it and it seemed fine in practice so *shrug* 20:42:39 !vault minmay_the_grid_ultimate 20:42:40 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/dat/des/variable/the_grid.des#L1500 20:43:48 awesome 20:43:57 i look forward to it 20:49:48 which is a better ring of Shaolin re-rename: the wraithring, the jester's ring, ring of displacement, the tumbler's ring, ring of foresight, ring of phasing? 20:52:04 Lasty: according to tavern, Ring of Lasty's Eternal Guilt 20:52:24 gammafunk: omg yes 20:52:32 maybe s/Lasty/The Dev Team's/ in this case 20:52:38 Why won't I apologize?? 20:52:51 I am genuinely sorry for felid jumping though 20:52:54 I'll go on record 20:53:17 For the sword of Jihad, and also for global warming. 20:53:18 Lasty: I think shoaling actually did get changed, didn't it? 20:53:29 gammafunk: yeah, but I don't like the new nane 20:53:30 *shaolin 20:53:33 sure 20:53:36 I think we can do better 20:53:43 we also need a thing for Krishna's bow 20:54:31 pikels slaves turn into corpses, not gold, when you worship gozag 20:54:52 yeah; re: the bow, I think either making up a legendary figure or invoking okawaru is probably fine 20:54:53 Lasty: 'tumblers rings' will turn into 'tumblr ring' meme given the context 20:54:56 sounds like they;re a general exception :) 20:55:13 i vote wrathring or phasing 20:55:15 alexjurkiewicz: heh, accidental reference? 20:55:32 The Brooch of 4chan 20:55:37 fun fact: if you use sniper or axe of woe with low enough crossbows/axes skill, Xom will be stimulated, because he sees your accuracy with the weapon is very poor 20:55:53 heh 20:56:05 someone chose the wrong god in meatsprint 20:56:46 anyone want to second ring of phasing or wraithring? 20:58:14 slow down, folks! One at a time! 20:59:32 phasing's a lot better since wraithring sounds like it's going to have speed drain or something actually related to wraiths 21:00:01 wraiths have worse ev than goblins and you wouldnt call it goblinring 21:00:02 fair! 21:00:46 I was thinking of the insubstantial aspect of some wraith lore, but I suppose that's not reflected on the actual monsters in crawl 21:05:06 I vote phasing because it also has the attachment to phase shift 21:06:34 I agree with phasing 21:07:25 it's sort of boring lore for an unrand is my only complaint 21:07:36 "ring of phase shift" "this ring makes you phase shift" 21:08:03 I was going to say "it would reference something removed", but I just realized that crawl generally doesn't do that sort of thing 21:08:08 at least, not anymore 21:08:24 (RIP Wiglaf) 21:08:48 rip dwarf mountain bats 21:09:12 I remember all those plans about the dwarven halls 21:09:26 and how slowly literally every part about them was removed or made not a dwarf 21:09:35 I think the very last vestige of those plans are death knights 21:10:45 I do like the idea of taking the opportunity to add lore 21:11:13 heck, we could lore in some famous warrior who used this ring and sharnga 21:12:50 do we already have any famous warriors in lore? 21:13:24 stolen from the moon troll!! 21:13:55 double down, it's Wiglaf's 21:13:59 Kryia is an option I guess 21:15:13 Lear of Lear's Hauberk too 21:15:33 Zhor, Kryia, Lear, Maxwell, Talos, Dyrovepreva 21:15:40 if you're going off of existing artifacts 21:16:13 <|amethyst> I doubt Maxwell is a warrior 21:16:27 <|amethyst> seems more like a mad scientist 21:16:37 any wizards into translocations/divinations? 21:16:44 Is skin of Zhor a skin worn by Zhor or the skin of something called Zhor? 21:16:46 or dodging? 21:16:49 <|amethyst> what's divinations? 21:17:12 <|amethyst> Lasty: no one knows 21:17:56 Talos got removed, didn't it? 21:18:50 Alistair, Borgnjor, Cigotuvi, Gell, Iskenderun, Leda, Lee, Olgreb, Ozocubu, Golubria, Tukima, Yara 21:18:53 for wizards in spells 21:19:06 Gell's ring 21:19:18 Golubria's ring 21:19:59 or reference an existing god, or make up another name to attach to it 21:20:57 I still like ring of Phasing the best though, since it fits the simple approach for artifacts with just a giant boost to a single stat, like Brooch of Shielding, Amulet of Vitality, Shield of Resistance, etc. 21:21:25 I'd be fine with adding ore flavor to that whole set 21:21:29 more even 21:21:44 the weirder names fit better when the artifact does something crazy, like a potential new name for Krishna's bow 21:22:46 because it's easier to associate a name to weird things, like maxwell is a mad scientist who made a coffin into armor and a cage into a mana generating helmet; he wouldn't be nearly as defined if he also made an amulet that just gave you more health 21:24:12 sometimes simple and distinct is good, and flavor can be added to the description instead 21:25:37 Well bow of krishna doesn't really do anything crazy, everything except its name and tile can generate as randart 21:25:44 ha 21:25:51 Distinctive 21:26:20 Skullcrusher is a club that crushes skulls, firestarter is a mace that starts fires 21:26:51 Sharnga is a bow that krishnas 21:26:51 the robe of misfortune is still a hideous joke 21:27:47 IMO: rename amulet of vitality to amulet of protection, rename ring of shaolin to ring of reflection, and rename brooch of shielding to brooch of evasion 21:27:56 to make the names consistent with a "ring of Robustness" that increases your AC 21:28:49 Floodkiller: "I've been playing Bu Spellcasters, They have some serious food issues due to the spellcasting cap." 21:29:02 nice joke, food doesn't matter 21:29:03 Floodkiller: every time I think I've heard the most ridiculous thing possible about a feature, bcadren raises the bar 21:29:41 fair point re: robustness 21:30:04 I think if Sharnga gets a rename, why not also visit the properties and give it something unique while there? 21:30:26 if it is considered a boring artifact 21:30:31 imo remove the speed ego but make it shoot 2 arrows at once 21:30:48 men in tights style 21:31:13 bow of Contra {spread} 21:31:49 I think scattershot has that angle pretty well covered, tbh, if you want it more prominent make it a spell spell instead of wand spell 21:33:50 I was going to say bow with AoE, but that's damnation and crossbows 21:35:07 Oh yeah, would now be a good time to complain about how damnation gives the message "The damnation bolt damns the stone giant" even though the bolt does regular physical damage 21:35:11 only the explosion is damnation damage 21:35:27 rename it to heckdamage 21:35:40 the heckdamage bolt hits you. the heckdamage bolt heckdamages you 21:42:55 Krishna rename suggestion: longbow "Rain" - A powerfully enchanted yew longbow that can be fired so quickly the arrows are said to fall like rain on the target. (rejected "rain" synonyms: rainstorm, because storm sounds a little lightningy; torrent, because bittorrent; waterfall and monsoon, because just doesn't sound good to me) 21:43:45 gammafunk: You had opinions re: Krishna renames -- what do you think re: ^ 21:44:54 Lasty1: hrm, it's not bad as a start, but described as such it doesn't have too much character 21:45:13 people will sort of expect ...wait 21:45:13 storm bow already exists, too similar imo 21:45:16 yes 21:45:21 Character as in an explanation for why it's so fast? 21:45:35 yeah, just the lore itself, I suppose 21:45:57 maybe sniper is also not terribly interesting when trying to describe its thing 21:46:06 a lot of our artefacts don't have too much lore IIRC 21:46:15 what do you think is a good example of the right amount of lore? 21:46:19 hrm 21:46:22 let me look at a couple 21:47:14 this one is maybe very pleasingfungus, but it's memorable 21:47:14 The sacred weapon of Toth-Mos, first apostle of the god Ashenzari. It grants 21:47:15 the wielder a fraction of Ashenzari's own vision, ensuring that every shot will 21:47:18 land true. 21:47:22 for sniper 21:47:40 for damnation: 21:47:41 An unholy crossbow, forged in the fires of Gehenna. It transforms the bolts it 21:47:45 fires with the raw power of its namesake, irresistible by any mortal armour. 21:47:45 !source _get_true_fail_rate 21:47:46 1/1. https://github.com/crawl/crawl/blob/master/crawl-ref/source/spl-cast.cc#L1919 21:48:10 gammafunk: gotcha 21:48:12 I don't think your angle of using rain is bad necessarilly though; it does add a bit of confusion with the storm bow 21:48:13 The longbow "sanic". A bow made of hedgehog quills. It is very fast. 21:48:23 solved 21:48:24 0/10, no reference to blast processing 21:48:58 The Cheibowdos: as you fire this bow, time slows down around you. 21:49:01 er 21:49:05 does that bow even still exist 21:49:07 ??storm bow 21:49:07 storm bow[1/1]: Unrandart +8 longbow of electrocution, sometimes creates rain clouds while wielded. 21:49:17 wouldn't chei ban the use of that weapon though 21:49:22 or does he not care about speed ego now 21:49:27 haha 21:49:29 ugh, I think some of the "skippiness" in training rates at higher skill levels is coming from resolution of the ints used in _get_true_fail_rate itself. 21:49:38 hellmonk: it's a relative speed ego! You slow everyone else down, not speed yourself up :p 21:49:42 Lasty1: for Piercer: An exceptionally large metal longbow. 21:49:50 -!- Lasty1 is now known as Lasty 21:49:54 such flavore! 21:49:57 *flavor 21:50:02 haha 21:50:06 inspired 21:50:09 if I give it 37 vs 38 as a raw fail rate it outputs basically 22 vs 24 (rounding better wouldn't help) 21:50:31 A longbow with the colour of dark rain clouds. 21:50:31 {{ 21:50:32 if you.can_smell() then 21:50:32 return "It smells like a storm just past, or one about to begin." 21:50:32 end 21:50:34 }} 21:50:36 0.228811 vs 0.247025 really 21:50:41 go all out with a lua-based description 21:50:58 gammafunk: I'll make the bow taste different to every race based on their ancestral diet! 21:51:03 ! 21:51:07 I think |amethyst is right that we need real fixed point math some day 21:51:16 i'd better set up a diet class . . . 21:51:31 a bow that also doubles as a melee weapon 21:51:39 Floodkiller: aka all crawl bows? 21:52:04 as in, it actually does better when you hit something with the bow as a melee weapon than shooting an arrow using it 21:52:30 you clumsily bash the ogre!! 21:56:12 <|amethyst> advil: but 21:56:35 <|amethyst> advil: _get_true_fail rate isn't actually used for telling whether a spell succeeded 21:56:46 <|amethyst> s/fail rate/fail_rate/ 21:57:35 ah 21:57:43 that shows you how much I understand about this code :D 21:57:46 I guess it is just simulating? 21:57:54 <|amethyst> yes, for the purposes of giving a number 21:58:04 <|amethyst> let me try to find the actual roll 21:58:09 what exactly is used for that? get_miscast_chance 21:58:10 ? 21:58:58 gammafunk: The river bow: This bow was woven from the air itself by Eiolaiphi the air mage as a gift for one of the children of Uskayaw. The bow can be pulled with incredible speed, and it launches swift and true. Happily, it is also nearly indestructable, as the original owner was ripped to pieces by jealous celebrants. 21:59:05 oops, forgot to switch the name 21:59:26 s/The river bow/the longbow "Zephyr"/ 21:59:43 <|amethyst> advil: int spfl = random2avg(100, 3); 21:59:58 <|amethyst> if (spfl < spfail_chance) 21:59:59 <|amethyst> fail = spfail_chance - spfl; 22:00:14 Lasty: I think it's basically a good description, the order of the last sentence is a bit confusing 22:00:36 You're trying to say (I think), that despite the owner getting ripped to pieces, the bow survived 22:00:41 <|amethyst> advil: fail there is an int but really used as a boolean (and was zero before this) 22:00:44 yeah, that's what I'm getting at 22:01:30 "The original owner was ripped to pieces by jealous celebrants; thankfully the bow itself is indestructable." 22:01:31 bow that gets faster at shooting as long as you only keep firing the bow and taking no other actions 22:01:34 something like that 22:01:52 maybe you could transition that sentence in a more interesting way 22:01:58 <|amethyst> advil: where spfail_chance is the raw_spell_fail 22:01:59 could just remove it as well 22:02:53 since it's sort of an anecdote about how Usk is, but the bow doesn't actually have anything mechanically linked to Usk 22:03:27 but yeah I think that's a pretty good basis; does Usk do anything to impart speed? 22:03:39 |amethyst: I see. but if _get_true_fail_rate is accurate (I honestly have no idea), then the underlying calc may be inherently skippy relative to raw fail rates 22:03:53 hrm, line dance, but maybe hard to relate to the bow (and you probably don't want to make the player think it has any interaction to that) 22:05:37 <|amethyst> advil: yeah, you'd need to roll bigger dice if you wanted more resolution than 1.0 in the raw rate 22:05:55 sorry, I'm not very useful; if you can edit it down to tell that story in a way that doesn't cause confusion and isn't too wordy, would certainly be reasonable lore 22:09:17 <|amethyst> advil: I think you could go up to 1000-sided dice there (so raw fail rate in decis) 22:10:05 <|amethyst> advil: past that, _get_true_fail_rate would have integer overflow, so you'd have to switch to using doubles 22:10:27 <|amethyst> advil: currently it is perfectly accurate up until the final double(foo) / outcomes 22:10:37 gammafunk: "It is also nearly indestructable, which is fortunate given that the original owner was ripped to pieces by jealous celebrants."? 22:11:04 gammafunk: yeah, it's not linked to Usk in any way 22:11:19 mechanically 22:11:28 Usk isn't even directly involved in the story 22:11:46 I just figure this would be an interesting bit of lore to flesh out the world a bit 22:12:11 yeah, that's a bit more clear to me 22:13:32 <|amethyst> advil: alternatively, you could replace that logic I quoted with something like if (random_real() < _get_true_...) 22:14:56 <|amethyst> advil: so those two pieces of code don't have to track each other 22:17:09 <|amethyst> advil: of course, once you go that far, maybe you can just compose the two formulas (the partition-counting formula from _get_true_fail_rate and the chance_breaks polynomial) 22:17:48 <|amethyst> that's not trivial and the exact formula would be ugly, but I bet you could find a decent approximation 22:19:32 <|amethyst> oh, but then you also have to change the miscast chance code too :/ 22:22:00 for anyone who's interested, I'm going to solve the "ambiguous position marker" issue by adding a dungeon_feature_type property to that marker class 22:22:18 with save compat to set it upon lookup for markers from old saves 22:22:56 which will both fix the issue with up/down hatch conflict and allow me to have transporters use a position marker as well 22:24:55 Lasty: re the lore, I don't like putting the person's name in the artefact name. just use it in the description 22:25:28 alexjurkiewicz: You mean re: "Zephyr"? That's the bow's name, not the person's 22:32:44 03Lasty02 07* 0.20-a0-1007-g47b2f4d: Re-rename ring of Avoidance to ring of Phasing 10(62 minutes ago, 4 files, 5+ 5-) 13https://github.com/crawl/crawl/commit/47b2f4dd30b4 22:32:44 03Lasty02 07* 0.20-a0-1008-g0de3dc5: Rename Krishna to Zephyr 10(23 minutes ago, 5 files, 10+ 18-) 13https://github.com/crawl/crawl/commit/0de3dc505504 22:33:59 er, I guess that should read rename Sharnga to Zephyr. 22:34:03 Whoops. :S 22:34:08 good job team, now let's rebase all branches to erase history of our previous lore mistakes 22:34:17 yeah I kept making that mistake as well 22:34:21 ??krishna 22:34:21 sharnga[1/1]: the +8 longbow of Krishna "Sharnga" {speed, Dex+3 SInv} 22:34:35 I'll edit that 22:34:35 gammafunk: but then how will I know how much I should apologize? 22:34:37 ty 22:34:42 ??avoidance 22:34:42 I don't have a page labeled avoidance in my learndb. 22:34:49 ??shaolin 22:34:50 ring of shaolin[1/1]: Unrand ring of +8 EV, counterpart to the ring of Robustness. 22:35:17 !learn mv ring_of_shaolin ring_of_phasing 22:35:18 ring_of_shaolin -> ring of phasing[1/1]: Unrand ring of +8 EV, counterpart to the ring of Robustness. 22:35:26 ??phasin 22:35:26 I don't have a page labeled phasin in my learndb. 22:35:28 ??phasing 22:35:29 I don't have a page labeled phasing in my learndb. 22:35:35 !learn mv shaolin phasing 22:35:35 shaolin -> phasing[1/1]: see {ring of shaolin} 22:35:44 !learn add zephyre The +8 longbow "Zephyr" {speed, Dex+3 SInv}. Called the longbow of Krishna "Sharnga" before 0.20. 22:35:44 zephyre[1/1]: The +8 longbow "Zephyr" {speed, Dex+3 SInv}. Called the longbow of Krishna "Sharnga" before 0.20. 22:35:47 !learn edit phasing s/shaolin/phasing/ 22:35:48 phasing[1/1]: see {ring of phasing} 22:35:52 !learn q krishna 22:35:52 krishna[1/1]: see {golden_bow} 22:36:08 !learn set golden_bow see {zephyre} 22:36:08 golden bow[1/1]: see {zephyre} 22:36:15 -e 22:36:19 dangit 22:36:21 !learn set golden_bow see {zephyr} 22:36:22 golden bow[1/1]: see {zephyr} 22:36:29 !learn set krishna see {zephyr} 22:36:30 krishna[1/1]: see {zephyr} 22:36:35 Lasty: oh cool, i didn't see the conclusion 22:36:35 !learn q sharnga 22:36:35 sharnga[1/1]: the +8 longbow of Krishna "Sharnga" {speed, Dex+3 SInv} 22:36:47 !learn set sharnga see {zephyr} 22:36:47 sharnga[1/1]: see {zephyr} 22:36:57 ??golden bow 22:36:57 golden bow[1/1]: see {zephyr} 22:37:05 is it still a "golden bow" btw? 22:37:17 doesn't really matter, still want the learndb reference I guess 22:37:18 Not in the description 22:37:23 the sprite is tho 22:37:28 ah, that was the old unided desc 22:37:35 ok, well that can stick around either way 22:37:41 ah right 22:38:06 awright, heading out. Please feel free to rename those 2-3 more times tonight. 22:38:14 ??ring of shaolin 22:38:14 I don't have a page labeled ring_of_shaolin in my learndb. 22:38:49 !learn q ring of shaolin 22:38:50 I don't have a page labeled ring_of_shaolin in my learndb. 22:38:53 ??ring of phasing 22:38:54 ring of phasing[1/1]: Unrand ring of +8 EV, counterpart to the ring of Robustness. 22:39:00 !learn q ring of phasing 22:39:00 ring of phasing[1/1]: Unrand ring of +8 EV, counterpart to the ring of Robustness. 22:39:12 !learn set ring_of_shaolin see {ring of phasing} 22:39:13 ring of shaolin[1/1]: see {ring of phasing} 22:39:44 !learn set ring_of_phasing Unrand ring of +8 EV, counterpart to the ring of Robustness. Called the ring of Shaolin before 0.20. 22:39:45 ring of phasing[1/1]: Unrand ring of +8 EV, counterpart to the ring of Robustness. Called the ring of Shaolin before 0.20. 22:40:23 good lore 22:40:27 re: zephyr 22:40:40 gammafunk: and counterpart to the brooch of shielding perhaps 22:41:05 man, why do wanderers always start with short blades 22:42:17 clustering illusion 22:43:11 new monster: clustering illusion 22:43:27 isn't that just a starcursed mass 22:43:36 spawns rarely in packs of 50 that disperse over the entire level 22:44:01 I was going to say rakshasas 22:45:10 isn't PF the one who loves seeing people suffer from clustering illusion 22:45:49 !tell pleasingfungus have you seen this super primo clustering illusion sufferer? https://www.reddit.com/r/brogueforum/comments/652653/could_someone_please_explain_the_item_frequency/ 22:45:49 rumflump: OK, I'll let pleasingfungus know. 22:49:11 The best part of that is that brogue DOES have a wacky "items generated depend on previous items generated" rule for (at least) food 22:49:25 and this person is still "noticing" the exact opposite 22:50:27 my favorite: "in my five years of rogueliking I've never once seen such a heavily influencial gameplay mechanic acknowledged" those fools, how is everyone around you so blind! 22:56:17 you could read the source, but what if the source is a lie 22:57:06 what if I told you the power of positive thinking let me find +23 cpa every game 23:00:52 fwiw, metered items are food, and permanent upgrades: str/life/enchant. but like enchant can still vary from like 9 to 20 in a game, but with a normal distribution or whatever you call it 23:01:52 is there a reason why some of the methods defined in spel-selfench.h default the bool for fail to false while others don't assign a default value? 23:02:38 spl_selfench.h* 23:09:29 Unstable branch on crawl.jorgrun.rocks updated to: 0.20-a0-1008-g0de3dc5 (34) 23:12:33 also, I'm not entirely ok with this business: "#define fail_check() if (fail) return SPRET_FAIL" 23:12:54 that's a classic 23:13:13 yes, I just traced back the blame 23:13:51 %git 17dfbce6f42ff75dfefd63ace016e51d9f493aa5 23:13:51 07galehar02 * 0.10-a0-14-g17dfbce: Don't miscast when the spell can still be aborted (#4281). 10(6 years ago, 25 files, 998+ 836-) 13https://github.com/crawl/crawl/commit/17dfbce6f42f 23:14:37 * geekosaur hiss at bad macro def 23:15:00 do {if (fail) return SPRET_FAIL;} while (0) 23:16:30 21:22:34 fail_check() still makes me want to cry 23:19:51 Floodkiller: actually the default fail arguments (and occasional lack thereof) all came from that same commit, so if there is reason to be found, it is in there somewhere 23:26:39 my best guess is that it implies that the spell can never return SPRET_FAIL from fail_check, even if the spell originally passed true for fail 23:27:01 none of the instances I checked are ever called without a fail argument 23:28:10 (an explicit argument will always override a default argument, sorry if that's just stating something obvious) 23:28:21 maybe at some point some were, in which case you'd want the default to be not failing, I guess 23:29:29 I can't seem to think of a good pattern for why, even within the small group of spells in spl_selfench 23:30:45 it might have been done to transition some into taking fail without changing every instance 23:31:09 it also might have been done in the middle of that big refactor for reasons that didn't survive, and never updated at the end 23:32:11 aha 23:32:29 !source god-wrath.cc:240 23:32:29 https://github.com/crawl/crawl/blob/master/crawl-ref/source/god-wrath.cc#L240 23:32:55 vs 23:33:08 !source spl-cast.cc:1806 23:33:08 https://github.com/crawl/crawl/blob/master/crawl-ref/source/spl-cast.cc#L1806 23:33:28 probably the ones without default arguments were never called outside of the big switch 23:34:36 what about cast_infusion or cast_song_of_slaying? 23:34:58 well, they aren't now, but this was 6 years ago 23:36:53 I see, most of it has been cleaned up then, but nobody cleaned up the ones that weren't needed anymore and there were still a few stragglers like cast_silence 23:38:13 yeah...it looks like there's more than a few stragglers actually 23:38:25 one common-ish case is where the cast_ spell is called from the monster version 23:56:37 03advil02 07* 0.20-a0-1009-gc986637: Clean up some unnecessary default arguments (Floodkiller) 10(70 seconds ago, 4 files, 9+ 9-) 13https://github.com/crawl/crawl/commit/c98663795003 23:57:09 having done that, I can now tell you why no one bothered before -- it's really annoying