Previous thread: >>552866945Featured game by thumbnail: Tales of Mal Eyal 4>Are mystery dungeon games allowed in this thread?Generally yes, most mystery dungeon games(Shiren the Wanderer, Pokemon Mystery Dungeon, Etrian Mystery Dungeon, etc.) can be considered roguelikes>Is Elin/Elona allowed?Yes, they are roguelikes. Please do not post your Little Sister farms>Is Dwarf Fortress allowed?If it's adventure mode, yes. But adventure mode is boring. /tg/ has a general for fortress mode playthroughs but you can share here too!>FAQhttps://l.idrix.fr/J7sOv>What to Playhttps://l.idrix.fr/eYNOh>Individual Game Pastashttps://l.idrix.fr/wXd8t>Roguelike Archive (Collection of pretty much every free roguelike there is)https://archive.org/details/ArchiveRL.7z>/rlg/'s "most popular" Cataclysm: DDA forkhttps://github.com/cataclysmbnteam/Cataclysm-BN/releases>RogueBasin News15 Jan 2026 - Soulash 2 v0.9.16 "Walking Forest" Steam12 Jan 2026 - ZMAngband I.12 Itch12 Jan 2026 - Tomb of the giants v0.7 released8 Jan 2026 - Emerald Woods v0.4.6 released8 Jan 2026 - Shamogu v1.3.0 released Itch.io7 Jan 2026 - Tales of Kathay v0.9.0 Open Alpha Itch Steam5 Jan 2026 - ZMAngband 0.8G Itch2 Jan 2026 - ROGUE-FP v3.8.1 Steam gog1 Jan 2026 - Overworld v2.7 released>/rlg/'s shared DCSS online accountUser: rlgrobinPassword: ownfault (or "robin" on Xtahua)Roguelike Servershttps://angband.live/ (Angband and variants)
How did you guys die to gacha again
>>553985687We need roguelike porn
>>553985687o tabbed too furiously to goon
Damn it wasn't even that many titties in the catalog on the way over
>>553995041It is just timing. I've seen the thread not hit page 10 in 4hI feel the board has slowed down since they added the new captcha but when all the gacha threads simultaneously make a new thread then it's over
You gotta be fucking kidding me I'm 500 tiles from my home to the nearest refugee center? I haven't even cleared a quadrant of the megacity right above me what is this garbage lmfaoooo
>>553997358better get driving
I'm new to ToME4. Just cleared the Maze but it didn't update my quest. It feels like there's an inaccessible pocket at the bottom of the map but I can't mine the walls. Anyone have tips for this?
>>554008232This is likely the alternative layout with 4 floors (the default has 2), in which case you are locked out unless you get yourself a teleport rune (sold in shops) and just teleport randomly through walls
>>554008318Thanks, I'll try that if I don't die in Old Forest.
>>554008232Just get a pickaxe, they are relatively commong and you dont need to actually equip them to use the dig ability.
>>554008950You can't dig in the maze specifically
>>553985958erotic elements in a roguelike that is sexy and funny and not coomer garbage would be great
>>554009698>sexy and funny and not coomer garbageWhere do you draw the line?
>>553997358that's the new normal, but i just ignore the "main quest" and NPCS and everything. solo unless I find someone out there.>>554009994remember how in the 80s and through to the 00s there were lots of funny movies with nudity and sex jokes? sometimes it was even a little erotic? that stuff we don't get in movies anymore?stuff like that. or tasteful eroticism, though that's a tall order in an ASCII game. i have no idea what it would look like, but it would add a little zest to this nerd shit.
>>554009698elona/elin has prostitutes fighting town NPCs to the death because they ran out of currency in their inventory to pay, and the prostitute usually wins because sex inflicts insanity debuffsmost player-made sprite replacements wouldn't fall in your camp though
>>554011430that's pretty funny emergent gameplay, but i don't think that would make a good game. i am reminded of the first time i saw some complex NPC behavior play out in Postal 2. a guy allah ackbar'd me when i was standing near a cop and it aggroed the cop onto me and was generally chaotic and very funny.maybe if NPCs had some romance options. kevin being kevin ruled out integrating AI chatbots into NPC convo and obviously none of those guys have touched a woman so I have, shall we say, no hope of this happening. and there are other ways you could do it beyond gag porn mags.
>>554012279someone on reddit just announced/released some sort of branch of cdda with llm integration for the npcs. i havent looked at it, but i saw it just literally a few hours ago.anyways, my game crashes everytime i aim a weapon. anyone had that happen before. different saves and everything.
>>554014356https://github.com/josihosi/Cataclysm-AOL
>>554014356never mind, update fixed it
>>554015386Which update
>>554019836the latest update
Continuing from yesterday, xom has too many ambiguities given only the wiki information so, yeah, I'm code diving now. Everything else is dependent on "tension", so I've got to cover that first, for simplicity, you see.Tension is dependent on monster-tension, which is separate, and is divided by a factor related to exp level."exp_needed()" is dependent on a function called apt_to_factor()So, that's where I'm starting this journey.In skills.cc:>#define APT_DOUBLE 4>float apt_to_factor(int apt)>{> return 1 / exp(log(2) * apt / APT_DOUBLE);>}Exp is apparently e^(input), so that's 1/ e^(log(2) * apt/ 4).log(2), in c, seems to be ~.693, so it's ln(2). Seems about impossible to comprehend meaningfully.Thankfully, apt can only be 4 values, so we only have to contend with 4 output values.exp_needed() is in player.cc> exp_apt = species::get_exp_modifier(you.species);>return (unsigned int) ((level - 1) * apt_to_factor(exp_apt - 1));exp_apt is retrieved from your species file, in the species folder, which is in the dat folder, which is in the source folder.Demigod has -2 exp apt. 11 species have -1 exp apt. 12 have 0. Only kobold, formacid, and dijini have 1 as an aptitude.exp_needed() subtracts 1 from aptitude before sending it to apt_to_factor, meaning it receives -3,-2,-1, and 0 as inputs. For 0, it returns 1for -1, it returns 1.189207for -2, it returns 1.414214for -3, it returns 1.681793So that's that tiny function dealt with.
>>554010446>that's the new normalIs it really? I don't remember refugee centers from my previous runs suddenly spawning 500 tiles away from where I spawned that's for sure.>>553997902I have a default car and a 3x1 hit and run mobile, and I'm afraid only the latter can fit in relatively unscathed through all those mobs even if I drive perfectly and have the perfect driving conditions. This is so ass actually I'm only ever used to manually clearing things
just a thing i noticed in cdda. storing books on your phone, despite you gaining some knowledge and recipes from it, does NOT count as reading. ive stored 50 books, and only just now lost the conduct "self imposed illiteracy" by reading the trifex handling procedures. not that this really matters, just funny.i guess if your running an actual illterate character, you can sorta cheese it a bit by learning recipes/storing reicpes by just scanning books
It's very much over
>>554022786i dont know what hes talking about. i have done 3-4 deaths in the past 2-3 days and the center spawning no more then 150 tiles max. i think your just getting unlucky.
>>554020667exp_needed() is best represented in a table, which is probably why there's a commented out table which assumes exp aptitude zero. Rather, it assumes exp aptitude 1, because an aptitude of 1 is submitted to apt_to_factor as 0, which returns 1, and which is multiplied by the value submitted from the table. In other words, if aptitude is 1, then apt_to_factor does not modify the exp needed at each XL In other cases, it multiplies the total exp_needed.The variable "level", through a series of else-ifs and switches, has the following values at each xl prior to modification:1, 10, 30, 70, 140, 270, 520, 1010, 1980, 3910, 7760, 15450, 26895, 45585, 72745,108375, 152475, 205045, 266085, 335595, 413575, 500025, 594945, 698335, 81095, 930525, 1059325However, the function actually returns:> return (unsigned int) ((level - 1) * apt_to_factor(exp_apt - 1));Which means level 1 returns 0, level 2 returns 9 instead of 10, level 3 requires 29 instead of 30. Rather than matching with this table or the wiki at aptitude 0, almost all instances of exp_needed() return the given value -1, assuming aptitude 1. Congratulations, you have exactly 1 less base exp which you need to get.>tension, finallyIn "religion.cc":>int get_tension(god_type god)It's a long function. Contains:> // Divides by 1 at level 1, 200 at level 27.> const int exp_lev = you.get_experience_level();> const int exp_need = exp_needed(exp_lev);> const int factor = (int)ceil(sqrt(exp_need / 30.0));> const int div = 1 + factor;> tension /= div;So, tension is divided by a factor based on your current exp_needed(), based on XL and exp apt. This requires a near-unreadable and unfriendly text-based table.Tension is divided by:1+sqrt(exp_needed()/30), or1+sqrt( ( (EXPN-1) * (1 / exp( log(2)*(APT-1)/4 )) ) /30)where expn and apt are the variables
do it again
>>554025960bros less code talk and more feature talk if you want people to pay attention
>>554025960Correction: at XL 25, the value is 810195, not 81095column corresponds to apt 1, 0, -1, -2row corresponds to XLTension is divided by:1 1 1 12 2 2 22 3 3 33 3 3 34 4 4 44 5 5 56 6 6 77 8 8 910 10 11 1213 14 15 1618 19 21 2224 26 28 3131 34 37 4040 44 48 5251 55 60 6562 67 73 7973 79 86 9484 92 100 10996 104 113 124107 117 127 139119 130 141 154131 142 155 169142 155 169 184154 168 183 199166 181 197 215178 194 211 230189 206 225 245So, in the most extreme cases, tension is halved between xl 1 and 2, and tension at xl 3 is 1.5* higher if you have apt 1 compared to any lower apt.Other than comparatively, these numbers don't mean much until we know how much tension monster provide.> int get_monster_tension(const monster& mons, god_type god)This function is also in religion.cc.Dead monsters return zero. Monsters that can't hurt the player, good monsters, neutral monsters, and monsters that don't give exp all return zero and so don't contribute to tension, which means most summons don't count. Hostile god summons provide zero.Friendly units reduce tension, providing negative tension equal to the positive tension they would have provided. Friendly god gifts provide double tension reduction.Invisible monsters provide double tension. Monsters that can't see you provide half tension.Confused and "caught" onsters provide half tension.Slow monsters provide 66% tensionHaste monsters provide 1.5*might provides *1.25Breserk provides 1.5*A monster's tension contribution is multiplied by their % remaining hp, so at 50%hp they provide 50% tension.>int exper = exper_value(mons);Their base exp value is used here, so we need examples of that. function exper_value() is in mon-util.cc
>>554020667tension is horseshit, the best way to get a feel for it is to play Lava Orcs from the brief stint they existed in Trunk
Can someone explain what that anon is blathering about?
Or not I guess.
>D8>joseph, pikel, prince ribbit, and FUCKING GASTRONOK>not even half explored yetwhat on earth is this nonsense
>>554045263Those are all good uniques to have on D8. Gastronok is like half the speed of a player, by the way, and the rest are easy experience on D8.
>>554045263Just use some consumables, easy xp.
Is Sigil of Binding bad?
>>554049647On most characters, yes it's quite bad. It doesn't usually spawn where you want, and the effect is not that useful.For what it's worth, Sigil of Binding is most useful on a Barachi because you can hop over your own sigils and it helps you walk away from dangerous monsters with your slow movement.
You guys are terrible at this.
roguelikes with a magic crafting system a la Oblivion except way more detailed because it's a roguelike and we use our imagination
>page 9its so over
>>554063643Crafting is thoroughly unsatisfying in most rougelikes unless it's really straightforward like in Sil where it acts more like a periodic scroll of acquirement when you find forges rather than holding onto a billion useless components
And upgrades complete.An anon in the last thread mentioned that helicopters get more efficient as they get bigger, from what I can tell, blimps are the same.I haven't increased either the length or width of the vehicle but because I added more frames, panels etc, I was able to add more balloons and with them more solar panels, batteries and have more carry capacity.I think optimally you'd want to make the main part square and then have a single row of doubled up balloons on every side.Kind of makes me wonder how small you could make one and still be viable as a mobile base.
>>554039715He's reading the code of DCSS to figure out the mechanics of the god Xom. But delved too deep and autistic. I'm sure he's doing this on purpose. Regardless, DCSS's source code might not quite reach the level of spaghetti code, but it's almost as head-scratching, because it's more like spaghetti design. Everywhere has multiple layers of janky modifiers and coefficients inserted into what was probably a simple formula at one point.
>>554063643what is magic crafting in oblivion
>>554073864Trying to "figure out" Xom is kinda contradictory to the point of picking Xom. I know video gamers love to optimize everything, but the point of Xom is to insert lolrandumb into your runs, so don't overthink it so much.
>>554079458you can create spells with various effects or infuse staffs/wearables with a mix of those effects, it's really quite broad. want to make a spell that does damage, drains your opponents mana and makes you levitate? it's possible.it's too bad such a powerful system is trapped in such a dogshit game
>>554081810>it's too bad such a powerful system is trapped in such a dogshit gameIt's mostly just Morrowind's magic system with some nerfs and small changes, so you can easily play with it in a far better game
>>554083265>It's mostly just Morrowind's magic system with some nerfs and small changesGlad I never bothered with Oblivion or Skyrim.
>>554079591for you
>>554081810Main issue with it in a roguelike game is that you don't typically have excess amount of ingredients like in those gamesThat or you want another sandbox like CDDA
>>554079591Nah, there's no need to put Xom on a pedestal, he's a game mechanic just like every god, not a simp target.
>>554079591But he's not random, that's the point. If he had a different flavor, like "Xertic, god of courage and trials" then you wouldn't be saying that at all, even if the mechanics stayed exactly the same.
>>554094179>>554090287>weird people trying to read my mind and psychoanalyze meWhere did this shit come from? Look, I'm just saying that even if you figure out a way to hack Xom and get only his good aspects, you're just doing a bunch of boring shit outside the game to break the mechanics, and then it's not going to be satisfying to abuse if you succeed. I'm not knocking you for trying it, but it sounds to me like you're optimizing the fun out of the game if you take the random god and try to set up deterministic outcomes. This guy >>554083625 is the only dude who makes any sense in here.
>>554094749Do you consider searching for guides or looking up what an item/spell/monster does online to be boring shit outside the game? Plenty of people do that, and they still find satisfaction. The only difference is that the devs have told you this particular mechanic is lolsorandumb.
>>554095882It's obviously better if that information is in the game itself. Of course I use wikis when it makes sense but it's not exactly the highlight of my gaming experience when I alt tab and open my web browser.
>>554096759and all anon is doing is taking info from outside sources and using that to strategizethe blogposting is mildly annoying, but this is /rlg/
It feels like the Brogue late-game essentially boils down to whether or not you can avoid being lit on fire. Sometimes by enemies on the other side of the floor that you can't even see.
Are there any games more like Cogmind? Tired of DCSS level slop where devs just jam mechanics with zero consideration for overall design or balance. Preferably one where stealth builds aren't mega OP and combat is super difficult, that's my main gripe.
>failed 8 coinflips in a rowthe idea that dcss isn't fucking with your rolls in dangerous situations is laughable, I don't care how they've obfuscated it
This Martyr spell apparently juices Hep into the stratosphere by doubling the ancestor's EHP. I sit back at the edge of LoS and these two dudes kill everything. I started out melee, but there's nothing left for me to bash when this bitch runs out and two shots any enemy in the game.
>>554103098inb4 some faggot says "don't put urself in that situation in the first place, it was winnable if you played better" like every time someone complains about losing a 50/50 8 times in a row
>>5541103391/256you kill about 70 billion monsters in a run.Using 8 coinflips each to kill 256 monsters, on average, kills you if you don't keep a retreat available.Do you want to kill more than 256 monsters? Then you'll need to retreat 1 our of 256 times.That means you'll have to spend your last turn on a blink scroll, which means you only get 7 coinflips, which means you need a blink scroll for every 128 enemies you face this way, That's a good 40 or something blink scrolls per run, which you're not getting. In other words, a coin flip is insufficient in the first place, if it's all you've got.So no, I'll not be a massive asshole and tell you how you could win more.I'll tell you you fucking suck. Your shit's retarded. Petulant entitlement will not win you the game.
>>554031087>>554029083Feature talk can only happen once I understand the code enough to know what features it has.Pay attention when I get to the end of each section and summarize the results, if that's what you're interested in.>>554034495Seems to be, yep.>function for monster experience value> x_val = (16 + maxhp) * hd * hd / 10;This is the base exp value of a monster. You'll notice that it uses maxhp, which seemed interesting, and so I set out to figure out how an Apis aura works with this, which sent me for a trip where I eventually found that the relevant apis aura started in .33, but I have been diving in .31 because that's just what came up first. So, now I would have to verify that my statements are still correct, which is to say you should add another grain of salt to all my conclusions here, as they might be wrong due to conflicting version information.Also, in version .33, there's an extra line of code that accounts for the hp-doubling effect, meaning that I spent a whole lot of time looking for something that was already fixed.>ANYWAYFootnote, in .31, all information defining monsters was stored in a file called mon-data.h, but now it's been reformatted and I am again unsure where most of it is stored.All unspecified information from this point forward refers to version .33In mon-util.cc, exp_value()>else if (avg_hp > 0 && !zombified)>{> x_val = x_val * 4 + x_val * maxhp / avg_hp;> x_val /= 5;>}In .33, the formula seems massively different. For one, HD are no longer used anywhere in exp_value(). For another, maxhp now only scales a 5th of the value of exp_val, and only based on the variance among monsters of a particular type.So, if you saw a green dragon which, by chance, somehow, had double the base HP of a normal green dragon, it would only supply *1.2 exp. A dragon with 1 hp would supply *0.8 exp. In other words, who cares?> x_val = _mons_exp(mc);x_val is basically determined by _mons_exp(), at this stage.
It is kind of sad that DCSS ruined the Freezing Lajatang that Battlemage Hep gets, since now it doesn't deal the right damage type to kill the other two orb types in the nu Zot 5. It's cool that there's new content, but the game sort of had a hierarchy of resistances where rF and rPois were mandatory for the player, while cold damage was the best damage type to deal to kill fire enemies in Zot. That whole balance is thrown off when there are different orb types.I guess that's just one more consequence of the devs inserting their original content do not steal into a 20 year old game. I think the real smart move is just building a character that kills things at 7 range in the current gamestate, because you usually can't get all the resistances, get strong AC/EV/SH, and still deal good damage. Plus there is no resistance for doom so you might as well just put the harm scarf on and kill things faster. That's what the game really is about right now.
>>554116735>static int _mons_exp(monster_type mc)> return smc->exp;Didn't know what this meant. smc just subs out for get_monster_data()>monsterentry *get_monster_data(monster_type mc)> return &mondata[mon_entry[mc]];So the value this returns, from the array mondata, contains the exp value for a monster. This means mondata is an array containing the information on each kind of monster.This variable is not declared anywhere in this file, or any file.In "makefile": >mon-data.h: dat/mons/*.yaml util/mon-gen.py util/mon-gen/*.txt> $(QUIET_PYTHON)$(PYTHON) util/mon-gen.py dat/mons/ util/mon-gen/ mon-data.hDuring compilation, a file "mon-data.h" is created which defines the array mondata[]It does this using the files in "data/mons/*.yaml"This is to say, there's a simple fucking folder full of monster data right next to the folder full of player species data and I missed it because I was originally on version .31, where all monster data was in a single .h file.ball python: 1 base exp. Fucking 1.quokka: 2 base expendoplasm 2ork: 3adder: 13gnoll: 14 ork priest 42bullfrog 90ork warrior: 133black bear: 128acid dragon: 155small abomination: 163golden eye 190fire bat 196yak 204 insufficientblorkula 224raiju: 264ancient zyme 324cane toad 407apocalypse crab: 454, which is fucking abysmaldraconian: 530faun 538ork sorcerer: 559ork knight: 617orb spider: 708large abomination: 710goliath frog 749fire crab 764ork high priest: 795death yak 811bolder beetle 828alligator: 842entropy weaver 898fire dragon 910ettin 929Apis 1042colored draconians 1054All specialized draconians ~ 1200azure jell 1337ancient champion 1518executioner 1531frostbound tome: 1641golden dragon 2457bai suzhen 3094Orb of fire 4638 ancient lich 4693So, here's a list of somewhat representative enemies and their base exp values, before modification. I will be printing this list again, after modification.
>>554039715Xir is trying to optimize playing Xom. Let xir cook. I personally find it quite funny we got quite the clown in our midst
>still no real Qud update since releaseDidn't this game sell a bazillion copies? I know they want to milk it with paid DLC instead of free content updates, but they didn't even finish merging the digging claws update from 2 years ago.
>>554118058Found source/util/mon-gen.pyIt has the instructions which the game uses to turn a .yaml (text file) of a monster (yak.yaml) into data in the mondata[] array. There is a variable "exp_is_mult" which is a boolean. If it returns true, a completely different formula is used to determine the end exp of the monster. This value does not appear in yak.yaml. Instead, the python script, in cases where it is unspecified, generates the variable as false by default.pan lords, player ghosts, dancing weapons, ork apostles, mutant beast, and player illusions are the only characters which return true for this variable, thank god.For these enemies, vaguely:> x_val = _calc_exp_with_multiplier(mon, x_val);In _calc_exp_with_multiplier:>int hd_factor = hd * (25 + hd) / 25;means hd factor is ~1 at hd 1, 6 at 5, 14 at 10, 24 @15, 36@20, and 50@25diff is a difficulty modifier. It's value is clamped between 50 and 250.For every spell an enemy has, if the spell is difficulty 5 or higher, it adds the "frequency"/2 of that spell to difficulty. Frequency is stored in "slot.freq". I failed to determine where slot is defined and stored, but the default frequency of spells is stored in mon-spell.h. It is unclear if this default value is normalized at some point, in which case the default frequency is a "weight" and a single spell of frequency 1 would have effective frequency 100. Assuming that's not the case, spell frequency varies a bit, but tends to be around 11, with some at 50 or 100. So, a powerful spell tends to increase difficulty by 5, or maybe 50, depending on how it actually works.A melee bonus is added to difficulty for fast or normal speed enemies. For every physical attack they have with a max damage over 29, half that damage is added together. IF they are speed 10 (normal) then the damage is halved again.Diff is then multiplied by speed/10, so 1 for normal speed, or *2 for double speed.
>>554129213So, for a normal speed pan lord with a single spicy spell and a punch of 60 damage, that'sdif starts at 100+ like 5 or 50 for the spell.+15 for the punch*1 for the speed= diff of 120 or 165, which contributes *1.2 or *1.65 to the exp rating of the enemy.> return exp_mult * hd_factor * diff / 100;so, returns base exp * (like 24 or 36) * (between .5 and 2.5, but probably like 1.3)orbase exp * 30-ish for these special monsters.For all others, it's an average of x_val = monster default exp with some variance for max hp.This system, just a few versions ago, was far more interactive, with the ability to somewhat manipulate these numbers by, for instance, getting regeneration on your enemy, or making sure you never cause an enemy to drop their weapon. Now, the whole difficulty mechanic seems to be just for a select few. The hd effect makes me think I've misunderstood something. Potentially, the default exp for these enemies is very low, which could mean they have more "reasonable" exp amounts overall, despite this multiplier.exp is divided by the number of blob's in a large blob, or 12 for starcursed, which may imply that a starcursed mass can only divide into 12 blobs.There's a stepdown function which does not run anymore.And, finally, if you somehow get an exp value less than 1 at this point, the function returns 1.In short, the exp value of a monster is, simply, whateverinthehell it says in their monster file.It is horrendously un-interactive, but understandable.
>>554130268In .31, the "difficulty" modifier applied to everything, was different, was more interactive and perhaps gameable. It just wasn't particularly discoverable through gameplay, how one might force enemies to give *1.3 exp on average or something. That dream is dead.Forgot, also zombies give /4 exp.>next sectionin religion.cc, function get_monster_tension() :First, it checks mons_can_hurt_player() in nearby-danger.cc. This returns true if a monster can path to you, if a monster has a ranged attack/spell, or if the monster "blows up"this means, if a monster can't reach you with their ranged attack, but you can see them, then the monster can hurt you. If the monster has a path to you, but somehow can never actually reach you, then this would return true, but that depends on how has_path_to_player() actually works.As this function is also used for "travel interruption", you should be able to test this by clicking on the map and seeing if your character walks by the monster without stopping. For instance, a monster trapped behind glass will not stop autotravel. However, I don't know how autotravel would treat a monster which thinks it is trapped behind water, if that monster is incorrect.If a melee monster trapped on an island can provide tension, then you may be able to create a condition which keeps xom perpetually active using dispersal or glorbula, which would mean you can, at any time, retreat to dungeon and let xom reset his shitty attitude before you go handle zot. This assume the trapped creatures represent significant tension, which we're still trying to figure out.Just keep in mind that xom could try to kill your prey at any moment, unless we find a fix for that.>Anywayif monster can't hurt player, if monster is paralised/sleeping/stone, if monster is dead, then this returns zero tension contribution.living spells and the like contribute 50 monster_tension
>Two Headed, Two Hearted, and RegenerationFeels like I'm playing with training wheels. This is why I always go True Kin. Mutants are too easy if you actually take the good mutations.
>>554134860Others begin modifying their tension based on their exp> int exp = exp_value(mons);> if (att == ATT_HOSTILE || att == ATT_NEUTRAL)> exp = exp * (10 + (mons.hit_points * 10 / mons.max_hit_points)) / 30;> else> exp = exp * (10 + (mons.hit_points * 10 / mons.max_hit_points)) / 50;means that exp for enemies is multipled by between 1/3rd and 2/3rd, proportional to missing % hp.All others are between 1/5th and 2/5thsHostile god gifts do not contribute tension.Friendly units contribute negative tension.Friendly got gifts contribute double negative tension.Neutral enemies contribute half tension."good neutral" gives halve negative tension (*-.5)Sleeping and fleeing monsters give /20 tension.Invisible enemies give double tension.Enemies that can't see you give 66% tension.Haste gives *1.5Breserk/frenzie gives *1.5"armed" enchantment is *1.2"chaos lace" is 1.2might 1.2empower 1.2recall 1.2slow .66vex .66silened spellcaster/priests .66confused/caught .5fleeing .1sleep/paralysis .05That's a lot of little modifications. Notably, sleeping counts twice, as does fleeing. Seems like a mistake, but the bottom line is that paralyzed/sleeping/fleeing enemies contribute basically nothing.As exp is the basis for monster tension, I think that player-summoned units would not take away from tension, but that needs to be somehow tested, perhaps with sword of singing. I somewhat think that's the real job of that artifact..Anyway, after all those modifications, the value is returned, and that is the tension contribution of a single monster. It is initially reduced to 2/3rd. Haste and might give *1.8. Slow/silence/confuse/vex are useful, common, and deployable, but reduce tension. Anything that's asleep/paralyzed/fleeing is nearly meaningless. Friends negate some tension outright.
the dark side of roguelikestalking to yourself about C code
I planted some seed potatoes in cdda, how long do they take to grow? I dont have any fertilizer.
>>554142847Really fucking long time, I'm afraid.
I'll have you people know, I don't know python, or C.Anyway, >radius_iterator ri(you.pos(), LOS_NO_TRANS);> const monster* mon = monster_at(*ri);So, ri is being itorated and returning tiles, which monster_at turns into a monster. I could assume that this grabs each monster you can see, or each monster within rang to hypothetically see, However, this thing has a LOS variable, which could either set the range at which you can see, or could make this radius_itorator "ri" only return tiles within your character's "line of sight". If we could get a clear readout in game, this would be easy. I could just stick a monster behind another monster and see if the tension goes up when the monster steps around the other monster to get at me.Instead, I've got this:>radius_iterator::radius_iterator(const coord_def _center,> los_type _los,> bool _exclude_center)> : state(RI_START),> center(_center),> los(_los)>{> ASSERT(map_bounds(_center));> credit = get_los_radius();> is_square = true;> ++(*this);> if (_exclude_center)> ++(*this);>}A constructor for radius_iteratorI think the (_exclude_center) conditional pulls the first value out of the radius itorator, or increases the value of the pointer at *this by 1, and skips by the center tile. However, the for-loop in religion.cc, simply uses the radius_iterator as a boolean, while also incrementing it like an integer. It's slightly beyond me.HOWEVERlos-type.h is a n enumerator which is filled with commented out inforamtion. LOS-type refers to what tiles are meant to block vision for the purposes of your particular radius itorator, and that means it has nothing to do with your character's line of sight. Mystery solved.LOS_NO_TRANS means glass, walls, and 2 bushes/clouds in a row will block vision for the purposes of this calculation. An ettin behind glass does not contribute to tension. That's all.
>>554144124>LOS_NO_TRANSDespite the warning, they took over roguelikes anyway
>>554144124total = tension value of all monsters in los, excluding transparent vision.At least 1 monster must be able to attack, which is based on "attitude". Friendly, marionette, good-neutral and neutral return true and won't attack, but can still contribute to tension.In abyss, for some reason, tension counts even when there are no visable enemies who can increase tension, which means that you may be able to, in abyss, have high tension despite having no enemies, somehow. Due to the nature of the abyss, that's not particularly abusable, but it may be possible to have a certain kind of enemy follow you around the abyss, and so always provide at least some tension.Depending on % remaining hp, multiply total tension by1@ 100%, ~1.14@75%, 1.333@50%, 1.6@25%, 2@ 0%So, mostly nothing, like 1.1 normally, but 1.5 ish if you're already basically losing.divide by your space on the table up here >>554031087 which represents your current XL scaling. (that's the same in .33)Now, if on the orb run, tension is now raised to 3, if currently less.If in abyss or unable to act, tension is now raised to 2, if currently less.There are quite a few checks and related multipliers next:If you.cannot_act() *10If vexed *2hav orb *2caught *2under vainglory *1.666silenced *1.666if fungus, pig, tree *1.666abyss *1.5attractive potion *15-cast *1.5DUR_NO_MOMENTUM] > 0 *1.5Marked *1.5ruin *1.5slow *1.5bat, wisp *1.5-pot *1.333-scroll *1.333vitrified *1.333contricted *1.333petrifiying *1.3fear *1.2blind *1.2mesmerise *1.2DUR_WATER_HOLD] > 0 *1.2 (I think this is engulf)Standing on water *1.2pan *1.12510% mana or less *1.125haste * 2/3rd
>>554149325For confusion, if -pot and confused, *2.5if confused and you can drink, it's only tension * (9-xl/10)/4, so that's mult @ XL,2.225@1, 2.125@5, 2@10, 1.875 @15, 1.75@20 1.575@27. This seems to contracict the comment text, which indicates that the point of this is to make confusion more significant at higher xl, but oh well.Lastly, corrosion.> if (you.duration[DUR_CORROSION])> tension = tension * (10 + you.props[CORROSION_KEY].get_int() / 4) / 10;Dur_corrosion is an enum from duration-type.h, which means it's an int and that duration[] is an array of every possible thing a player can have a duration for. Any non-zero int returned by you.duration functions as a "true" boolean. you.props, as far as I can tell, is a catch-all for random nonsense which the program needs to keep track of. I cannot find the part of the code which takes you.props[CORROSION_KEY] and displays it in the upper right corner, so I do not know, for sure, that the value you see is exactly equal to the value stored here. However, I'll assume it is.> tension = tension * (10 + you.props[CORROSION_KEY].get_int() / 4) / 10;> tension = tension * (10 + X / 4) / 10;mul@Corr1.1@4, 1.2@8, 2@40, 4@120This is to say, if you get extremely corroded, your tension will be multiplied by a large amount. As I have mentioned, you can intentionally corrode yourself, but there is also a trap you can step on which will corrode you.You can also slow yourself.Remember, however, that you're worshiping a god who will drop a quakka on yo while you're at -120 ac and slow. He probably won't. He should be happy with you.
>>554151737from xom.cc>xom_saves_your_life()don't work if xom feels "nasy", which means penance or xom is "bored".Must be above 1hp and xl1.95%chance to fail>if (death_tension < random2(5) || !xom_is_nice(death_tension))> return false;fails if current tension < a random number. I'm not sure if random2(int) returns 0,1,2,3,4 or instead 1,2,3,4,5. Generally, it's 0-4, but this might also be a float instead of an int or something. The function is defined in random.cc, but calls .get_bounded_uint32(int) from pcg.cc, and I can't make heads or tails of that.> bool xom_is_nice(int tension)> const int tension_bonus = (tension == -1 ? 0 : min((MAX_PIETY - you.piety) / 2, random2(tension)));If tension = -1, you get no bonus. While tension is often 0, it is almost never -1.In effect, this means you can only get a peity bonus large enough to half the effective distance between your piety and 100% piety. at 50% piety, you can only receive 50 more effective piety on this roll. at 0% piety, you can receive 100 more piety from tension.>random2(tension)your attempted bonus is a 1d(tension), so you, in theory, want infinite tension for this nearly at all times.>const int effective_piety = you.piety + tension_bonus;> return x_chance_in_y(effective_piety, MAX_PIETY);so % effective piety = % chance of nice xom, during a niceness check. at 200 effective piety, you get 100% nice xomOddly, when at 95% piety, you can only make use of 10 bonus piety, which means you don't need that much tension. However, at 0% piety, you want the full 100 bonus piety, which means you want well over 100 tension so that you're likely to get around 100 on a 1d(tension) roll.
>>554154752>if (death_tension < random2(5) || !xom_is_nice(death_tension))Anyway, if you have 5 or more tension, the left half of this will never trigger. At zero tension, some should never save you.Xom "niceness" is % current piety witha bonus, which means it should average slightly above 50%, or 75% during infinite tension. You can, in general, just look and see when he's more ore less likely to save you.However, it's already a 1/20 chance to even get this far, so making that 1/40 isn't that much worse.Also, xom won't save you if you died from water, lava, draining, starvation, zotclock, rotting, or suicideHe gives you some hp back when he revives you.So, that's one near unusable xom mechanic confirmed to be a joke, but if you've ever got less than a 1/40 chance of winning, consider an option where suicide might help you win a fight.>void xom_tick()>{> // Xom now ticks every action, not every 20 turns.> if (one_chance_in(20))> {Very important difference. Before, you could know that xom will only act every 20 ticks, which means you get a little time before he might act, and you can time his next action so that it might benefit you.Now, that's gone in 0.33. > if (old_xom_favour != new_xom_favour)> {> // If we entered another favour state, take a big step into> // the new territory, to avoid oscillating favour announcements> // every few turns.> size += delta * 8;this means, every time your *piety changes, your actual piety changes by 8 instead of by 1. This massively decreases the amount of average time it takes for your piety to max/bottom out, though the drift is still very slow on average. from 100 to 200, that's a free 16 piety, hypothetically. however, it works both ways.This does mean that seeing your *piety change actually has a mildly significant effect on your %chance of nice xom actions, instead of being nearly irrelevant.
praise xom
>>553984225I got into CDDA TLG lately. Its pretty cool i got the hang of driving. I need some help with something though. I can't make the debug menu work for the life of me. I put hotkeys on the menus that had debug on them and used them but one gives text and the other just brings up info.
>>554156262As xom-tics are now random, and they also cause interest-decay now, xom's interest-decay is more random, meaning that you don't know for sure how many turns you earn with every point of interest. Supposedly, xom will warn you when you've got 1 point of interest remaining, meaning that you can instantly start spending resources or miscasting or using confusion on enemies, but it's still not as dependable as it was. Hypothetically, you could use up 200 interest in 200 turns, or you could use up your last interest 1 turn after xom warns you that he's getting bored.Assuming that xom as "tic-ed" this turn, > if (x_chance_in_y(2 + you.faith(), 6))Assuming faith is zero, there would be a 1/3rd chance of this function continuing, instead of ending here.I could not quite figure you.faith() out, though I did find the boolean fatih in player.cc. Assuming that's this is the same, the function only seems able to return a boolean, which means "true" or "1" is the highest value it can return. The wiki says that an amulet of faith incenses the rate of xom actions by 33%, but it seems here that it would increase the odds from 33% to 50%. Regardless, the amulet of faith increases the odds of xom acting on each xom tic.The variable "chance" is set to 1,2,3,4, or 5, at exactly 0, up to 5, up to 10, up to 20, and above 20.If xom is bored, then high chance makes xom less likely to act. That's%boredXomActs@ chance25%@1, 21%@2, 15%@3 9%@4 and 5%@5if xom is bored and fails to act, then xom has a chance to relent based on "chance"0%@1, 1..25%@2 2.5%@3, 3.75%@4, and 5%@5If you pass this check, you will get some interest.> const int interest = random2(chance * 15);Max 1d(75) @ 5 chanceAssuming xom doesn't act from boredom, the odds of a normal xom action areodds%@chance1%@1, 4%@2, 9%@3, 16%@4, and 25%@5
my fucking cars gone. i didnt die, didnt save scum, i just left it and took my bike instead and now its fucking gone. the little indicator on the map isnt there, i have no fucking clue where it went. what the fuck.can the game just forget me saving a cars location?
>>554162345oh christ okay i found it, it was waaaay farther away then i thought, but jesus fuck. psa: you CANNOT search on the map for the "remember this car" text. doesnt matter if when you hover over it it says "low-end cube van", searching van on the map will not find it. if your gonna do a big fucking massive 250 tile trek, fucking mark your car with a note.
>>554162676I guess this isn't a thing in that branch then?
>>554163134i mean when you use "/" to search the map. i can search "pond" and tab through all the ponds within 900 tiles of me, but not either of my vans, or my bike
Lol, wtf? They explode?>>554163471Yeah but original you said there wasn't an indicator there.
>>554165221no the indicator was there, it was just WAAAAAY farther away. in my desperation, i took a screenshot of the map, and highlighted the blue color of the vehicle i had, and went into an image editor and removed all other colors to see what was left. it was there, just not in the 500 odd tile square i had first searched in. i was just a dumbass. thats after i had the idea of "oh well its just called a cube van, search that on the map" and it didnt find it because its not a searchable note.
>>554165221hey if your playing on a 4k screen, why not use the sidebar that goes full autismo and shows ALL the stats? you could be seeing your body temp and the sun dial and all that
>>554165780I'm just used to this one.
>>554159992>I put hotkeys on the menus that had debug on themDoes that mean you added a hotkey for the debug menu, or something else? Because that should do it.You can get to the debug menu from the Esc menu, but unless the hotkey is set, you can't actually access most of the functions.
>>554167587It just displays info and lets me take screenshots. I moved to the free version and abandoned the character.
>>554167678>moved to the free version
>>554168634I didn't know that it was made deliberately more difficult. Thought it was just a branch with more content. I don't have an issue letting in my library but the game is difficult enough as is.
>>554167678>It just displays info and lets me take screenshots.Yeah, that's what it does when you haven't set the hotkey, which is why I'm asking if you did that.>I moved to the free versionI certainly hope, for your own sake, that you didn't actually buy a free open-source roguelike from Steam.
>>554169264No no no..i just downloaded it. I was ok with buying this version because it was cheap and i thought it can motivate me learn the game. Now that i can survive a bit i just moved to the github one.
>>554169264i don't understand why those games are on steam at all. aren't they released under a creative commons license or some shit? surely some random person cannot monetize these games, so often they are just abandonware...
>>554169398The license ensures that literally anyone can monetize them. It's not possible to restrict selling the game.
>>554169264Another valuable lesson i learned is that inside the car does not mean storage space, only trunk means storage space. All the shit i put in the hippie car i found just disappeared. Found an air strip. I presume there are no flying vehicles in the game...got a bit disappointed because i wanted to use the fuel and apparently the station has fuel for a vehicle that doesn't exist in game.
>>554169371>I was ok with buying this versionLmao.
>>554169627There are flying vehicles, but they're a bit finicky outside the BN fork. You need to pick the Helicopter Pilot trait at chargen, and the aircraft needs to be in mint condition. If it's damaged modified in any way, it no longer flies.
>>554169640he's only out $6. that's less than a happy meal these days.TLG is available for free though, by the same person, is that correct?. it's a bit of an odd situation.
>>554169971What does the BN fork have different that this one https://github.com/CleverRaven/Cataclysm-DDA
>>554170248>no pockets, your inventory space is just added together>no exodii, you can install bionics yourself by finding an autodoc>you can build your own aircraft>melee is easy>less content
>>554169984From what I understand, it was a different dev that monetised DDA.As for:>he's only out $6It could be 6cent and I'd still find it funny that he is giving money to some rando and not the project.Not that I give a shit about DDA but it's STILL funny to me.
>>554161393nig niggit-y give me a recipe for a cake made out of chalk and eggs to bump this sad shitshow of a thread
I didn't think to save a screenshot but I had 6 orbs of fire on my screen today. I died. Been a long time since I died in Zot 5, honestly.
Maybe it's just me but I kind of like the stupidly high dmg numbers you get for shooting flammable zombies with weapons that do fire dmg.
>>554117112>I think the real smart move is just building a character that kills things at 7 range in the current gamestateIs there anything like this except for a build that fills the screen with summons, or a build where you have to suffer until you finally reach manifold-assault storm-form ? I never had much luck with getting instant kills with blaster mages or archers.
>>554176363How did you get your sidebar like that? I want mine compact but I can't get the log to fully display, even if I hide other elements it just makes the pixel minimap bigger
>>554184330There are plenty of good builds that hit out at range and instakill the kind of monsters that suck just having on your screen. Throwing javelins with Okawaru will always take care of max range threats. Manifold is the premium max range solution if you can get it online. I've also had good luck with bows in the current patch, particularly Draconians and Barachis with bows for the extra durability.I'm not a blaster caster kind of player, but they are definitely in meta at the moment. With Vehumet you can get +1 extra range and guaranteed good spells.
Really good damage on this prestige class.
>>554116198How many of those enemies will need to be coinflipped within 8 turns, instead of beating a 95% chance 20 times in a row to kill you?Overly reductive and if you don't know it you should've realized it.
>>554103098Yeah dcss has some fucky bias going in the background, I swear now I fucking struggle to find a viable weapon of the type I started with everybsibgle fucking run, and the malevolent force is fucking retarded horseshit, I think I got the 3 level downward shaft more often than any other potential result. That shit was rare before, now its almost insured to hsppens once or twice per run.
>>554188360nta but there's absolutely more than 256 enemies (or packs of enemies) over the course of a run who can kill you within 8 turns if you're not properly prepared
>>554161393Reading this and comparing against the wiki I notice that the wiki implies Amusement and Interest are different things while being vague on how they differ, but this is just the result of the wiki writers unable to agree on a term for the same variable.
>>554186683
Finally finished outer dark for every prestige. Velite might be my favorite prestige, but frenzied one, dreamer and arsonist had some really memorable moments. Flameknight has such great single target damage it's amazing. Holy shit path of achra is amazing, how can one man be so fucking based?
>>554190673Yeah it's really fun once you've memorised the abilities & items and can feel your brain expanding thinking of all the possibilities. I do wish it was less luck based on higher cycles as some runs boils down to praying you're not forced to fight enemies who hard counters your build. There's also the fact that some prestige classes are really underwhelming and the best way to play them is to ignore the class gimmick and use a generic build.
>>554187007>Really good damage on this prestige class.*laughs in mesmer*
What is this, a healthy conversation between BN, DDA and TLG?I've been enjoying TLG a lot recently. Its much much harder than dda though so not beginner friendly. I'm surprrised my character is healthy considering he's consisting off 3 week old chocolate pretzels, clean water and multi vitamins. I should check my weight...
I really don't get this fascination with acting like other players couldn't possibly be acting reasonably. Like I would rather die than blink, like I didn't try nets or have (allegedly) higher success rate spells that ate my mana, like I haven't learned Leda's and Summon Forest and Malign Gateway and spammed Eringya'sLike all my other low-variance tools didn't fail before I tried, 8 times in a row, to win a 50/50 paralysis wand check against a faster enemy I can't manage to kill. Sometimes the backup-backup fails, man, you're a nigger if you're acting like the rest of us show up and try to o-tab through Zot with auto-train, 20 wand charges and terminal brain worms
>>554199503Just post the morgue file so we can laugh
>>554193749I wouldn't say that its luck based, it's based on whether he can see you at the start of the map or not. I guess inthat respect it is luck based. For example, I don't think I inuqqua is weak at all. You only lose freeze if you're unencumbered. The secret is to be encumbered and build your build around that.
>>554199503Not reasonablynot unreasonablyJustin a way that does not result in death.You did not do that, because you died.
>>554199761....Anon the last time I ownfaulted to 8 coinflips in a row was 255 games ago, back in November...Wait
>>554189539Wiki's fairly clear about the distinction, but isn't clear about what exactly tension is or does.Amusement is just piety.Interest is a countdown timer which you reset up to a new minimum based on taking a "funny" action, and its only effect is to cause "boredom" if it hits zero.Intensity is fucking bullshit and is, due to simplified exp, far more simple now then it has ever been. It increases the chances of good things happening. You'll note I can't define "good things" or how much of a difference it makes without being way more specific, so I can't blame the wiki for hitting the same limitation.I'll get around to it, eventually.
>>554208927I'm sorry anon. It's time.
>>554209939Time for page 10.
What screenshot should i post to show my CLG character progression? Stats? Equipment? House? Fridge status?
>>554161393Normal xom actions and bored xom actions use exactly the same formula:> xom_acts(abs(you.piety - HALF_MAX_PIETY), maybe_bool::maybe, tension);This is to say, when xom is mad at you, the normal xom act % formula is just as bad as the new reversed %action formula. Higher tension, and therefore chance, just means xom will be more likely to give you free tension, ending boredom.>xom_event_type xom_acts(int sever, maybe_bool nice, int tension, bool debug)>{> bool niceness = nice.to_bool(xom_is_nice(tension));The first thing the xom acts function does is call the niceness function, which we have already covered, in order to ask it if xom should beat you up. When bored, niceness returns false 100% of the time. Otherwise, it's % piety + a bonus based on 1d(tension), limited to half the missing pietyThis calls xom_choose_action(bool niceness, int sever, int tension)>if (niceness && tension == 0 && you_worship(GOD_XOM)> && !x_chance_in_y(you.piety, MAX_PIETY))When nice xom, no tension, and worshiping xom, you have an extra %piety chance to actually take the action, which is the same as missing%piety chance to fail the action and do nothing> else if (!niceness && !_xom_feels_nasty() && tension > random2(10)> && you_worship(GOD_XOM) && x_chance_in_y(you.piety, MAX_PIETY))When mean xom, and xom isn't nasty, and tension > 1d10, and worshiping xom, there is a %piety chance to skip the negative action, and do nothingThere is a small if-else nest which retrieves one of 4 sets of xom actions. The list retrieved is good with tension, good without tension, bad with tension, and bad without tension. It then tries actions from the list randomly, removing any action considered currently invalid after attempting to use it. Individual actions have particular weights. It will try every action until either all actions are used, or it gets a valid actionAn example action:> XOM_GOOD_POTION, 500, 0, [](int /*sv*/, int tn) {return tn > 0;}
i cant breathe
>>554226492>>554226492That's ID, weight-with-tension, weight-without-tension, and some bullshit that becomes a boolean.This means the category "good_potion" is selected or not selected at this stage. After this point, if somehow no potion is usable, xom would not be able to select a different category of action after the fact.> if (!action->valid(sever, tension))> return action, basicallyThe boolean "valid" does not check for targets, or tiles, or the ability to quaf potions. The boolean "valid", returns the value you see in the brackets at the end of the post above. If tn>0, potions are considered a valid category. Tn is just tension. Sv is severity, or distance from 100 (50%) piety. Other actions may have more complicated "valid" checks, but that's on an individual basis.>good actions>XOM_GOOD_POTION, >weighted 500 with tension, 0 with no tension>valid if tension > 0>Xom GOOD SPELL>450, 0>valid if tension >0 and _choose_random_spell(sv) returns at least one spell.choose_random_spell() bumps any 0 severity up to 1.It retreives _xom_random_spells, which is the following stack of crap: SPELL_SUMMON_SMALL_MAMMAL, SPELL_DAZZLING_FLASH, SPELL_FUGUE_OF_THE_FALLEN, SPELL_OLGREBS_TOXIC_RADIANCE, SPELL_BATTLESPHERE, SPELL_AWAKEN_ARMOUR, SPELL_MARTYRS_KNELL, SPELL_LEDAS_LIQUEFACTION, SPELL_FORGE_BLAZEHEART_GOLEM, SPELL_ANIMATE_DEAD, SPELL_INTOXICATE, SPELL_SUMMON_MANA_VIPER, SPELL_WALKING_ALEMBIC, SPELL_SUMMON_CACTUS, SPELL_DISPERSAL, SPELL_DEATH_CHANNEL, SPELL_SUMMON_HYDRA, SPELL_SPHINX_SISTERS, SPELL_DIAMOND_SAWBLADES, SPELL_MALIGN_GATEWAY, SPELL_DISCORD, SPELL_DISJUNCTION, SPELL_SUMMON_HORRIBLE_THINGS, SPELL_SUMMON_DRAGON, SPELL_FULSOME_FUSILLADE, SPELL_CHAIN_OF_CHAOSfor each of these, it runs>spell_is_useless(spell, true, true, true)
>>554233680f at least 1 of these has a use, then XOM_GOOD_SPELL is valid and can be selected as an action category with its full weight.is_uselsss runs:>string spell_uselessness_reason(spell_type spell, bool temp, bool prevent, bool skip_casting_checks)This is in spl-util.ccIf you're out of bounds or not "on_current_level", then this returns false, which implies it is possible to turn off all xom spells through some glitchy fuckery.Two other checks are skipped in our case, and then every indevidual spell has its own conditional logic. The logic is odd.For polar vortex, ledas, and dragon call, it checks your associated "duration" variable to see if that spell is already active. A lot work like this.For ozocubus, it does not check duration, and instead checks to see if you are wearing a specific artifact ringsome have fairly detailed conditions.Small mamals will simply always claim to work.And so, if I'm understanding this correctly, there is absolutely no point in doing this check for this purpose, other than letting the devs change xom later and have him still work.>XOM_GOOD_CONFUSION>440, 0Valid if at least one "nearby" monster is able to attack. However, note that actions with relevant weight 0 do not get added to the list for consideration, so it is not possable to get an action with weight zero, even if it would hypothetically be "valid">XOM_GOOD_ENCHANT_MONSTER>420, 0valid if at least 1 nearby monster is "enchantable">XOM_GOOD_SINGLE_ALLY>400, 60valid if you can have allies and either there is any tension or 75% of the level is currently unexploredreturn (tn > 0 || (_exploration_estimate(false) < 25)) && !you.allies_forbidden();}Wiki says you can only get an ally before 75% exploration, which is wrong.>XOM_GOOD_POLYMORPH>275, 0Valid if xom has a poly target. He has his own function just for this. I'm not checking it.
anon posts worst bump method, asked to leave thread.
>>554235584I'm okay with the ausitm, but still, kek
>>554209558>Amusement is just piety.Are you sure? Because in the wiki, piety and amusement are definitely different and it's amusement and interest which are ambiguous.http://crawl.chaosforge.org/Xom>Piety starts at 100 and changes by 1 point roughly every 20 turns (about 49% chance to move towards 100 and 51% chance to move away). >when you start worshiping Xom, its amusement is set to between 2 and 80. Every 20 turns, there's a 50% chance that Xom's amusement will be decreased by one, until it reaches 0.
>>554234904>XOM_GOOD_ALLIES>280, 0valid if above 4 tension and you can have allies. This is the first action which requires higher than minimum tension.>XOM_GOOD_FORCE_LANCE_FLEET>230, 0valid if above 4 tension and there are at least 6 non-solid spaces around you, at radius 2, I think, or radius 1. >radius_iterator ri(you.pos(), 2, C_SQUARE, LOS_NO_TRANS, true)>XOM_GOOD_CLEAVING>160, 0As this has a weight of zero during 0 tension, it's validity formula will always return true when it is actually prompted. As such, the tension > 0 check is meaningless. From here on, in such cases, I will simply say an action always returns valid.Always valid.>XOM_GOOD_FLORA_RING>130, 0returns valid if BOTHat least 3 spaces within 2 tiles that can have a plant but are currently not occupied AND>smiters < div_rand_round(you.experience_level, 6) - 1;div_rand_round divides #one by #two and then has a 100*decimal value% chance of rounding up. So, at XL 6, div_rand_round returns 1. AFter -1 that's zero, meaning that if there are more than zero smiters in view, you cannot receive flora_ring.At XL 9, div_rand returns 1 50% of the time and 2 50% of the time, meaning that there is a 50% that xom will place a floral ring with 1 smiter in sight.At XL 27, div_Rand returns and 4 50% of the time and 5 50% of the time, meaning xom will not add flora ring 50% of the time if there are 3 smiters in sight.>XOM_GOOD_DESTRUCTION>125, 0valid if you see at least 1 non-projectile non-tentacle monster who isn't touching you when either they will attack you or xom feels nasty.
>>554237965Yep seems you're right.Piety is just called piety by the wiki and amusement = interest. Having two words for it is a bit confusing, but they don't fuck up like I just did.>You'll get a warning when the amusement gets down to 1 (at least 20 turns before it reaches 0): "Xom is getting BORED". If your interest reaches zero, your title will always be "A BORING thing", regardless of your piety level. The first mention of interest happens when they describe that amusement is about to hit zero, and then say that interest does hit zero.It's internally consistent, is what I'm saying, even if it might be a bit not-user-friendly.
tome4, for the second part of Anorithil's Darkest Light: "Converting X% of the damage [enemies] deal between Light and Darkness"?How is the conversion handled? Does it select one or the other to fully convert the damage to or does it convert half to Light and half to Dark?
>>554243067iirc it's split half half
>>554243887Thank you
>>554238124>XOM_GOOD_DOOR_RING>110, 0Multiple checks.Within a 5 block radius, if there are at least 25 tiles 3 or more distance away from you which can be replaced with a doorANDif the number of ground tiles at distance 6,7 or 8 from you is greater than or equal to the number of monsters which will attack and which are 1 or 2 tiles from youBetter stated aspotential doors > 5 AND closeDIckheads <= distant spots>XOM_GOOD_MASS_CHARM>87, 0tension > 4 and at least 1 enchantable enemy>XOM_GOOD_HYPER_ENCHANT_MONSTER>70, 0 valid if there's an empty space in 2 tiles, orvalid if there's a "weak" monster according to _xom_find_weak_monsters(false)I'm just assuming this grabs a weak ally and I'm not checking what xom finds weak.>XOM_GOOD_FOG>65, 0Valid if you can have a cloud on you>XOM_GOOD_FAKE_DESTRUCTION>60, 0valid if there's an enchantable monster "nearby">XOM_GOOD_TELEPORT>40, 590Good teleport is given a very high weight if you arn't currently in combat, meaning it is unlikly to bail you out, but it can. Don't wait on this. It's the rarest action in combat so far, I think.Invalid if you're in abyss or can't teleport.valid if over 20% of the level is unexploredBetween 20% and 0% of the level remaining unexplored, has a % chance of being valid anyway. Chance is explored%/110% of being invalid.9.1%@100%18.2%@90%27.3%@80%odd of being valid regardless. However, 80% won't actually use this part of the formula, since it was already declared valid in the prior step.>XOM_GOOD_LIGHTNING>21, 0valid if at least 1 monster that will attack within 2 tiles of you, AND you are "in a dangerous place"player_in_a_dangerous_place is in nearby-danger.cc. It take log(you.experience) and compares that to a gen_threat and a hi_threat > _monster_threat_values(&gen_threat, &hi_threat, invis);> return gen_threat > logexp * 1.3 || hi_threat > logexp / 2;
>>554246882gen_threat adds the log(exp) of all nearby monsters together.hi becomes the log(exp) of the largest nearby monsterIf log(you.exp)/2 is less than log(biggest enemy.exp), you are in a dangerous place. Log seems to refer to the natural logarithm, or ln. exp values tend to be 200 (low) 600-800-1200(mid) and like 2000-4500 (high) which means enemies provide around 5.3@low, 6.3-7@mid or 8..4@high.The player, at differnt xl's, provides4.9@5 8.2@1011.2@1512.5@2013.3@2513.6@27So, even a single yak puts you "in danger" at level 12. 3 yaks will always put you in a dangerous place. A single specialized draconian puts you "in danger" no matter what.Only little popcorn basic orks and the like don't put you in danger, ever, as ln(1) = 0.So, during almost any reasonable combat after floor 1, good_lightning is valid.>XOM_GOOD_WAVE_OF_DESPAIR>15, 0if at least 1 enchantable monster, it's valid.>XOM_GOOD_SNAKES>405, 0Valid if there's a hostile snake, I think>XOM_GOOD_LIGHT_UP_WEBS>205, 0Invalid if you are on a web with less than 27-4*fireResistancePips hpOtherwise, valid if you can see a web.>XOM_GOOD_ANIMATE_MON_WPN>325, 0valid if tension above 4 and there's a valid target andyou can have allies>XOM_GOOD_DIVINATION>420, 500Under high tension (above 24), has a (unexplored% / 120%) chance of being valid.Under lower tension, valid if at least 20% has already been explored.Oddly, this means it works on mostly explored maps at low tension and it works on mostly unknown maps at high tension. This means you can maximize or minimize the odds of getting this action. It also means that it's unlikely to trigger twice during low tension, but very likely to trigger once on a new floor at low tension.> XOM_GOOD_SCENERY>120, 135Only valid at 4 or lower tension.otherwise, valid if _xom_scenery_candidates() returns anything, or else valid anyway 33% of the time.
>>554248675>XOM_GOOD_CLOUD_TRAIL>0, 375valid if any part of the floor has been explored and you don't already have a cloud trail>XOM_GOOD_BAZAAR_TRIP> 60, 280invalid if you're already in bazzar.invalid if you have less than 777+sv*(4+ tripsSoFar*2)This is the first use of severity, which ranges from 0 to 100. if piety = 100 and so severity = 0, you need > 777 gold to get this trip, always.if piety = 0 or 200, severity = 100you need1100@0 trips, 1300@1 trip, 1500@2 trips, and so on.Assuming you've got gold, this returns invalid between 66% and 83% of the time on floors you've explored at least 80% of. It's less likely to be valid on more explored floors.At this point, If tension is above 28, this action is valid. Otherwise, there is a 1/(7*trips) chance of this action being valid. zero returns valid here.>XOM_GOOD_MUTATION, 32, 400Valid if 3 conditions are all true.If you can mutate safelya 16 / you.how_mutated()% chance, which I think just grabs your current number of mutation levels.1d(tension) is less than 5. >XOM_GOOD_RANDOM_ITEM>33, 775Only valid if tension < 20> XOM_GOOD_ACQUIREMENT>21, 295Only valid if tension < 20And that's it for positive xom actions
heads up, if your cdda game saves during an autoloot/autosort, and you quit/exit, itll instantly crash when you go to load it
>>554253781heads up, dda sucks
>>554254420yeah its not for casuals
>>554255714>watching a green bar spin makes me hardcoreThanks, DDA fans, you always make me laugh
I liked CDDA a year ago, recently got The Last Generation and didn't like it at all.Whose idea was it to add random enemies with guns everywhere and reduce the amount of loot you get from a location at the same time?
>>554257631probably the guy above
>>554259061Nope, TLG is just DDA with extra autism, it sucks too. Bright Nights is the only Cataclysm fork that still retains any of the feeling of Whales' original game. Bright Nights kinda sucks in its own ways, but I like it best of all the forks I've tried.
>>554251890>XOM_BAD_NOISE>975, 415valid if not under xom penance. Otherwise, valid if any tension. >XOM_BAD_MISCAST_PSEUDO>825, 715valid if not under penance>XOM_BAD_ENCHANT_MONSTER>790, 0valid if 1 or more enchantable monsters>XOM_BAD_BLINK_MONSTERS>680, 0valid if any blinkable victim>XOM_BAD_CONFUSION>610, 0valid unles you've got clarity>XOM_BAD_CHAOS_UPGRADE>590, 0I think valid if any nearby monster can receive a chaos brand>XOM_BAD_SWAP_MONSTERS>540, 0valid if any _rearrangable_pieces(), I think.>XOM_BAD_TELEPORT>475, 1625invalid if in abyss while unable to teleport,If xom is nasty and you've explored more than 40% of the floor, this is invalid.If xom is nasty and tension is above 10, this is invalid.Otherwise, there's a % chance that this will be valid. at exlored% 100% this is invalid. So, assuming the othervalid%@ exloration%0%@99%50%@79%100%@59%Here's the logic tree for that> return ( ( !player_in_branch (BRANCH_ABYSS) || _teleportation_check() ) )> && ! ( (_xom_feels_nasty() && (explored >= 40 || tn > 10) )> || (explored >= 60 + random2(40) ) );>XOM_BAD_POLYMORPH>380, 0valid if any poly target available>XOM_BAD_SUMMON_HOSTILES>170, 670valid if less than 49 tension> XOM_BAD_TIME_CONTROL>133, 0valid if you don't have haste, slow, or paralysis>XOM_BAD_BRAIN_DRAIN>100, 0valid if more than 3 mana>XOM_BAD_FAKE_SHATTER>75, 0valid if more than 3 doors and diggable tiles in your vision>XOM_BAD_CHAOS_CLOUD>58, 0valid if there is not a cloud on you>XOM_BAD_GRANT_WORD_OF_RECALL>, 80, 0invalid if tension is above 24invalid if player XL is below 4invalid if player XL is below 6 while under penancevalid if 1 or more nearby monsters can be forced to use recall>XOM_BAD_SEND_IN_THE_CLONES>45, 0invalid if tension above 24valid if at least 3 spaces to put player illusions within 2 tiles
>>554270297>XOM_BAD_DOOR_RING>38, 0invalid if less than 4 tensioninvalid if less than 31 door-replaceable tiles at 3,4, or 5 distance from you.Adjacent space, I think, is equal to the floor tiles you can see which don't have a monster capable of attacking.adjacency_cap is 2+ XL/6, with rounding dependent on the decimal remainder. minimum 2 maximum 7.Adjacent monsters is all monsters you can see within 2 tiles distance.Moveable_hostiles is every other hostile you can seeinvalid if there are more monsters within 2 tiles than your adjacency cap.invalid if there are more hostiles visible at distance greater than 2 than there are visible floor tiles not currently occupied by a hostile monster.After that, valid if at least 2 adjacent monster, or at least 2 movable monsters. >XOM_BAD_TORMENT>6, 0valid if you don't resist torment. Wiki says "immune" to torment, but that might be what this means. Function is you.res_torment(). Check it or don't. Probably, just test it in game by existing with rN+. Very rare.XOM_BAD_MUTATION>210, 1010valid if tension under 9 and you can "safely" mutate.>XOM_BAD_DRAINING>6, 160Valid if not rN+++>xom_maybe_reverts_banishment(true, true)>2, 1Valid if you're not in abyss, or on the abyss "stack" (which I think means bazarrs or ziggs started in the abyss) and _allow_xom_banishment() returns true.allow-banish is mostly complicated for the joke.Under penance, he'll banish. If nasty, he rolls 5/XL% chance to disallow banishment.Xom checks if you're XL is over 6 if during penance or over 9 normally. If your level is not high enough, xom has a chance of allowing banishment, but it's a fake banishment so the odds don't matter.If your level is high enough, xom rolls 5/XL% chance to disallow banishment.
>>554270432>XOM_BAD_MOVING_STAIRS>215, 0valid if there's at least one _nearrby_stairs()>XOM_BAD_FIDDLE_WITH_DOORS>95, 5invalid if xom is nastyinvalid if there are no valid doorsvalid if either 96% of the map is explored or tension is above 4>XOM_BAD_CLIMB_STAIRS>55, 0invalid if no nearby stairsinvalid if you're standing on a shop... for some reasonvalid if you're currently on "stairs". In this case, the folloiwng are valid "stairs"portal_entrance branch_entrance portal_exit branch_exit altarDNGN_STONE_STAIRS_UP_I:DNGN_STONE_STAIRS_UP_II:DNGN_STONE_STAIRS_UP_III:DNGN_ESCAPE_HATCH_UP:DNGN_EXIT_HELL:DNGN_STONE_STAIRS_DOWN_I:DNGN_STONE_STAIRS_DOWN_II:DNGN_STONE_STAIRS_DOWN_III:DNGN_ESCAPE_HATCH_DOWN:DNGN_ENTER_ABYSS:DNGN_EXIT_THROUGH_ABYSS:DNGN_EXIT_ABYSS:DNGN_ABYSSAL_STAIR:DNGN_ENTER_PANDEMONIUM:DNGN_EXIT_PANDEMONIUM:DNGN_TRANSIT_PANDEMONIUM:DNGN_TRANSPORTER:DNGN_ENTER_SHOP:So, all of those allow this xom action, other than the shop. Shops are stairs.And that's the end of validating xom actions. Now, tims to see how each action actually gets implemented, where that matters.
oh cool ive never seen lava before. oh fuck im dead arnt i
>>554271745You've got a hazmat suit, just stay back from the heat and you'll be fine
>>554270584So, for selecting valid actions, the only use of severity is to make you require more money to reach a bazaar.>xom_take_action(action, sever);This does not receive tension at all, only severity, meaning that tension is not relevant past this point.If xom gives you a bad action while bored, there may be a message about it, based on an "option" which I think is a setting the player can change somehow.yet another function handles the actual action, so just assume some "did something" at this point.> _do_xom_event(action, sever);If xom was bored and took an action, xom will now give the player some interest, solving the boredom. New interest is 2d(badness*60)/2 basically, with a max of 255. So, on average, badness*30.If xom's action itself killed you when he isn't bored and you're not under penance, he should revive you. If worshiping xom, there's a 1/5 chance for xom to randomize your piety. 1d(200).If xom was previously bored, it updates your favor status.That's the end of a xom_take_action._do_xom_event() grabs a "map" which was built in some earlier part of the program which maps each action name to a specific function someplace, and runs that function with severity>XOM_GOOD_POTIONruns>_xom_do_potion(Attempts to drink potions from a weighted list, removing each failed potion.weight 10, CURING,10, HEAL_WOUNDS,10, MAGIC,10, HASTE,10, MIGHT,10, BRILLIANCE,10, INVISIBILITY,5, AMBROSIA,5, ATTRACTION,5, BERSERK_RAGE,1, EXPERIENCE);Having full hp, full mp, no curable status effect, -berserk and maybe clarity all raise your odds of getting invisibility, haste, or experience. Highest odds of exp pot are 1.96%. 1.6% without clarity or -berserkPotion power, whatever that is, is 40 for exp or 150 for everything else. Severity irrelevant.
>>554274006yeah, uh, i wasnt wearing one until i just found it in the room next door
>>554277097It's fine, it's not radioactive, just gives off massive amounts of heat, and I think some noxious gasses? Been a long time since I went up to one to grab some chunks of sulfur for fungicide
>AI generated pesudo codebabble bumps
>>554276480>XOM_GOOD_SPELL>_xom_random_spell()>spell = _choose_random_spell(sever);will cover that in a moment>power = sever + you.experience_level * 2 + get_tension() + you.runes.count() * 2;The spell xom casts has power based on your XL, the current tension, and your rune count.Assuming XL max and all runes, that's severity + tension + 84. Tension, I think, tends to be around 5 or 20 or something. We haven't concluded what to expect from tension during different branches. Severity is 50 on average, but you can see clearly when it's high or low.So these spells tend to have around 89 to 100 spellpower, which may function like normal spellpower. At endgame, that's 150 spell power or a slight bit more when it counts.>_choose_random_spell()To find your list of valid spells, start with the list of all xom spells in order, seen way above.Then, only take the first (severity) number of those spells. There are only 26 spells, so an intensity above 26 will grab every single spell. An intensity of 1, however, will only grab "summon small mammal"Then, remove all spells which are not valid by their own special definitions.Lastly, cast one of the remaining spells at random, with the spell power from earlier.>XOM_GOOD_CONFUSIONfor monsters in view which will attack, has a 95% chance of attempting to cast confuse>_confuse_monster(*mi, sever);> if (mons->add_ench(mon_enchant(ENCH_CONFUSION, 0,> &env.mons[ANON_FRIENDLY_MONSTER], random2(sever) * 10)))I believe this confuses the monster for 1d(severity)*10 duration, so up to 100 turns and proportional to severity%. Or, I'm wrong.>XOM_GOOD_ENCHANT_MONSTER>_xom_good_enchant_monster(Good enchant monster and bad enchant monster call the same function, which handles them in parallel.>_xom_enchant_monsterPaying attention only to the positive versioncap = 1 + div_rand_round(xl, 7);So, cap is 1, and 2 at xl 7, and 3 at xl 14, 4@21.Cap is then set to 1d(cap-1)+1
>play Armataur>entire race designed around charge ability>get forced into Beogh by smite RNG on Dungeon 2>this dumb follower constantly gets in the way of my charge so I can't get my regen stacksFuck it. I should have just taken my game over instead of going through this Beogh humiliation ritual.
>>554279920In the description for good-spell, I said intensity when I meant severity a few times.Also, good_enchant refers to the negative set of enchantments, which means I must outright redo that section.>retcon>XOM_GOOD_ENCHANT_MONSTER>_xom_good_enchant_monster(Good enchant monster and bad enchant monster call the same function, which handles them in parallel.>_xom_enchant_monsterPaying attention only to the GOOD versioncap = 1 + div_rand_round(xl, 5);Cap is eventually set to a random number from 1 to 1+(xl/5), so 1 to 7 at most.the 4 potential enchantments are weighted based on XL, so that's best represented in a table.enchantment, @XL0, @XL27petrifyi, 200, 308paralyz, 300, 165vitrified, 300, 165slowed, 200, 308That means xom's helpful enchants get somewhat worse as your XL goes up, though they are still almost as good, and are a death sentence half the time.Xom distributes (cap) number of enchantments to monsters.The duration of the enchantments is based on severity:for petrify and paraly:duration 30+ 1d(severity/10), so like 3 turns period.for vitrifi and slow:duration 200 + 1d(severity), so 20 to 30 turns, generally 25.>>554280503You can use t to force your follower to retreat in particular directions. That way, when combat starts, you can get your charge while he returns from the side.
Imagine having permanent flight and falling in a shaft anyway.
>>554220912Depends on what you got I guess. Cool bionics? Cool guns? Cool car?
>>554276480But what is badness?
>You can keep me safeLol.I do wonder how the formula actually works these out.
>>554293482That's... actually not to bad.No annoying things like mood swings or stuff like that, I've seen much worse and I've got an entire stack of CBMs to gathering dust I can install to make her even better.
>>554291939Badness is a variable present in the "map" object called xom_events. A single event in xom_events contains:1: action name, which corresponds to the action names used by the xom_chooos_action section I have described in detail above.2. function name, which links an action name to an actual function somewhere in xom.cc3 for "bad" actions, it contains an int which is "badness". Badness is, at most, 50.xom_event_badness() returns badness/10 for most negative events, and either 3 or 1 for BAD_Teleport.in other words, 2d(badness*60)/2 is, at most, 2d(5*60)/2, or 2d(300)/2, but you can't have more than 255 gift_timeout, which is also the same as xom's "interest" timer.I forgot to clarify that, so thanks.
Whats the point of having all of these fucking mods available if none of them work on the latest version. From 40-50 mods i installed with the launcher of CDDA i had to restart world creation 10 times just to go through the stuff that the game can't even generate. I'm glad that i am able to customize the plunger with which i can bash my head in but the conversion mods or whatever else just give an error because it requires a version of the game from 98. Fuck these lazy assholes. I had a better time troubleshooting my skyrim install and that one has over 1000 conflicting mods. Is it that hard to not make things conflict in an ASCII game?
fug
>>554307173How did you manage that?
>>554295306But what is baldness?
I think I am ready for a proper roguelike. Does Bright Nights work with Magiclysm?
>>554271745Lava is great to have around, it destroys any item you put there. Now that in CDDA a pile of ceramic shards instagib a road roller drum and you can't destroy items that way anymore, I always map edit a tile of lava somewhere.
>>554307173i dont play dda what is going on here
>>554321438Bright Nights has its own fork of it, but I think it's the same thing more or less.
>environmental storytelling
>>554332476What is the story
>>554339847That the people who lived at this farm ate people.
>>554339985Just creeps, though?https://www.youtube.com/watch?v=XFkzRNyygfk
>>554073435four tiles like a long motorcycle can just barely fly under its own power fyi>>554171073yeah but that's TLG, not DDA, you retard>>554186683have you tried having a 4k screen>>554253781autosave is very broken, yes
>>554261673none of them have the constant ambient spawning due to noise and needing to keep your noise level below 80 for vehicles, among other thingsstatic spawns were a mistake
>>554294667oh yeah, juice that girl full of cow or whatever and she'll be right
>>554345949>constant ambient spawning due to noiseI'm fine with that, zombies constantly teleporting down (and usually "behind u") from the Starship Zombieprise was janky and annoying.
>>554346268yeah but I'm acutely missing it right now for some insane reasonpresumably brain damage
>>554346384I think a good way to bring some of it back would be if zombies had a dormant mode, where they'd basically go into hibernation and wait. Maybe they'd want to crawl into or under things first. Then instead of hundreds of ambulatory eyes keeping you out of the city, you'd have a bunch of sleeping zeds you could creep past (making use of the underutilised stealth system) as long as you didn't make any noise, and as long as no NPCs or dogs or Mi-go came strolling by making noise and attacking everything. Maybe have an occasional watchmen zombie, either specific subtype or just a random pick, who stays on his feet like a lookout, so you have to avoid line-of-sight for him, but it's more doable because it's just one instead of thirty or more.
>>554349512Like, imagine slipping into a city to try to reach a garage and get a wrench, and there are dormant zombies and other blob monsters snoozing here or there, some of them hidden under cars or whatever. Don't prybar that door, the noise will wake the one nearby! Can't loot this building, the alarm will ensure everything within four map tiles will wake up and you'll be surrounded. A handful of zombies spot you? Can you break LoS and hide somewhere until they go dormant again in X number of hours? Could be fun.
rate/hate
>>554352921Four foot tall bird girl melee specialist with deft, night vision, and solid stats? Not much good at carrying your burdens, but otherwise a good choice for companion. B+, would give a katana to.
>>554352921she needs at least eight doses of bird serum, lead by a shot of purifier serumI've never seen a survivor that didn't make me want to kill myself before, that's incredible
>>554281216>XOM_GOOD_SINGLE_ALLY>_xom_send_one_ally"strength" = 1d(5*severity), so 0 to 500 xom_random_pal(strength) returns the type of monster you're getting.So, in xom_random_pal():Strength is either <= 130, <=300, or >300, and that's all that matters about it.Based on that and XL, you get a "variance" modifiire, which is between -4 and 3.Here is a table of "variance" at different "strength" and "XL"s:strength, Xl<10, Xl<19, Xl>=19<=130, -4, -4, -4 to -3<=300, -2 to -1, -2 to-1, -2 to 0<=500,-1 to 1, 0 to 2, 1 to 3There isn't really a reasonable English way to say that.Take a variance value from the above table. Add your XL. Potentially add a value from the following three cases+ 1 to 4 if spawning an ally+2 to 4 if xom bored+4 to 6 if xom penanceLastly, if variance is greater than 33, set variance = 33.> monster_type mon_type = xom_picker.pick(_xom_summons, variance, MONS_CRIMSON_IMP);This is yet another function that gives the monster type we're getting to the function which called it, so we're 3 functions deep at this point._xom_summons is a vector, which is basically an array, containing the following information: { -4, 26, 5, FLAT, MONS_BUTTERFLY }, { -4, -1, 5, FLAT, MONS_QUOKKA }, { -3, 6, 60, SEMI, MONS_CRIMSON_IMP }, { -1, 6, 40, SEMI, MONS_IRON_IMP }, { 2, 8, 40, SEMI, MONS_SHADOW_IMP }, { 3, 8, 50, SEMI, MONS_UFETUBUS }, { 3, 8, 40, SEMI, MONS_WHITE_IMP }, { 4, 8, 5, SEMI, MONS_MUMMY }, { 4, 10, 75, SEMI, MONS_PHANTOM }, { 5, 10, 10, SEMI, MONS_BOMBARDIER_BEETLE }, { 5, 12, 90, SEMI, MONS_SWAMP_DRAKE }, { 5, 12, 25, SEMI, MONS_WEEPING_SKULL }, { 7, 14, 50, SEMI, MONS_ORANGE_DEMON }, { 7, 15, 95, SEMI, MONS_SHAPESHIFTER }, { 8, 14, 40, SEMI, MONS_ICE_DEVIL }, { 8, 14, 40, SEMI, MONS_RED_DEVIL }, { 8, 15, 60, SEMI, MONS_BOGGART }, { 8, 20, 155, SEMI, MONS_CHAOS_SPAWN }, { 9, 14, 60, SEMI, MONS_HELLWING },
>>554356536 { 9, 14, 5, FLAT, MONS_TOENAIL_GOLEM }, { 9, 14, 30, SEMI, MONS_VAMPIRE }, { 9, 16, 50, SEMI, MONS_YNOXINUL }, { 10, 14, 40, SEMI, MONS_HELL_RAT }, { 10, 14, 30, SEMI, MONS_KOBOLD_DEMONOLOGIST }, { 10, 15, 90, SEMI, MONS_ABOMINATION_SMALL }, { 10, 16, 50, SEMI, MONS_UGLY_THING }, { 10, 17, 50, SEMI, MONS_SOUL_EATER }, { 10, 18, 85, SEMI, MONS_RUST_DEVIL }, { 11, 17, 50, SEMI, MONS_SMOKE_DEMON }, { 11, 17, 30, SEMI, MONS_DREAM_SHEEP }, { 11, 20, 80, SEMI, MONS_WORLDBINDER }, { 11, 22, 50, SEMI, MONS_NEQOXEC }, { 12, 16, 30, SEMI, MONS_OBSIDIAN_BAT }, { 12, 18, 30, SEMI, MONS_TARANTELLA }, { 12, 18, 15, SEMI, MONS_DEMONSPAWN }, { 13, 19, 75, SEMI, MONS_SUN_DEMON }, { 13, 20, 75, SEMI, MONS_SIXFIRHY }, { 13, 20, 15, SEMI, MONS_GREAT_ORB_OF_EYES }, { 13, 21, 105, SEMI, MONS_LAUGHING_SKULL }, { 14, 22, 90, SEMI, MONS_ABOMINATION_LARGE }, { 14, 22, 105, SEMI, MONS_GLOWING_SHAPESHIFTER }, { 15, 22, 50, SEMI, MONS_HELL_HOG }, { 15, 23, 1, FLAT, MONS_OBSIDIAN_STATUE }, { 16, 22, 10, SEMI, MONS_BUNYIP }, { 16, 23, 50, SEMI, MONS_RADROACH }, { 16, 25, 75, SEMI, MONS_VERY_UGLY_THING }, { 16, 24, 25, SEMI, MONS_SPHINX_MARAUDER }, { 17, 24, 35, SEMI, MONS_GLOWING_ORANGE_BRAIN }, { 17, 33, 35, SEMI, MONS_SHADOW_DEMON }, { 17, 33, 65, SEMI, MONS_SIN_BEAST }, { 17, 33, 15, SEMI, MONS_CACODEMON }, { 18, 25, 50, SEMI, MONS_GUARDIAN_SPHINX }, { 18, 33, 35, SEMI, MONS_REAPER }, { 18, 24, 30, SEMI, MONS_DANCING_WEAPON }, { 19, 26, 1, FLAT, MONS_ORANGE_STATUE }, { 20, 33, 30, SEMI, MONS_APOCALYPSE_CRAB }, { 21, 33, 30, SEMI, MONS_TENTACLED_MONSTROSITY }, { 22, 33, 1, FLAT, MONS_STARFLOWER }, { 23, 33, 30, SEMI, MONS_HELLEPHANT }, { 24, 33, 5, SEMI, MONS_MOTH_OF_WRATH }, { 25, 33, 5, SEMI, MONS_NEKOMATA },xom_picker is a monster_picker defined in mon-pick.h A monster_picker is a type of random_pickerrandom_picker is defined in random-pick.h
>>554311147>>554332047screwing around with debug. was checking some stuff out and needed to pass time, so set it as invincible, invisible, and set it to wait 24 hours. on the second 24 hours i guess the shadow showed up and started mass spawning amalgamations. theres already 400-500 dead ones there. strangely, it didnt slow down the passage of time. you know how if your near a refugee center and sleeping takes forever? this still passed at 10 seconds per every 4 seconds so my computer sounded like some horrifying gangbang with all the sound effects going on. BLURGH every 15 milliseconds basically. im guessing the shadow brought the necroboomer? because i was nowhere near anything with anything still alive
>>554332476the hunting lodge sometimes has a LOT of cooked long pig in it
>>554357251Regarding the values in the table above.The 5th value in each entry is just the name of the monster which will be returned if selected.The 4rth value, flat or semi, decides which of two functions is used to calculate the "rarity" of a particular monster given the supplied variance value.The 1rst value is the minimum variance value which is required in order for a monster to be considered in a "pick" calculation.The 2nd value is the maximum variance value which is allowed before a monster is no longer considered in a "pick" calculation.The 3rd value is a default "rarity" of an entry in a random picker.If a monster is "flat" and "variance" is equal to or between minimum and maximum, then the rarity of that creature for this calculation is just equal to their rarity value.So, if you submit a "variance" of -2, then the "quokka" would be considered valid and would have a rarity of 5.Rarity is a weight. The "quokka" in the above example would have a 5/totalRarity chance of being selected.If a monster is "semi" instead of "flat", then the rarity, for this calculation, is base_rarity * between 100% and 50% depending on the exact variance. Specifically, rarity * (the distance of variance from the midpoint between minimum and maximum)/(the distance between minimum and maximum)This is not the actual formula, but the result is equivalent. Keep in mind that variance can never be greater than max or smaller than min, and so can never be further from the midpoint than (max-min)/2.If you're unsatisfied with that, here you go>ln is 2* max-min, or 2 if it would be zero>rarity* len- abs(min+max-2*depth) /len> return rar * (len - abs(pop.minr + pop.maxr - 2 * depth))> / len;
>>554367741Anyway, an array is constructed which associates each valid monster with it's current rarity value and adds that value to "totalrar"We wet totalrar = 1d(totalrar)We subtract, in order, the rarity of each monster from total rar until totalrar <= 0, at which point we select that monster type.So, it's just a weighted random result.> monster_type mon_type = xom_picker.pick(_xom_summons, variance, MONS_CRIMSON_IMP);Returns the above weighted random result.Then, depending on branch, xom has a chance to just replace this monster type with a different monster type.In zot and zig, there's a 1/13rd chance of xom rolling:MONS_DEATH_COB @ weight 5MONS_KILLER_KLOWN, @ weight 4MONS_PROTEAN_PROGENITOR @ weight 3MONS_CURSE_TOE @ weight 2in pan or zig and the previous roll failed, there's a 1/13rd chance of xom rolling:60% MONS_DEMONSPAWN_BLOOD_SAINT40% MONS_DEMONSPAWN_CORRUPTERin zig, if the previous roll failed, there's a 25% chance of xom rolling:5/7ths MONS_PANDEMONIUM_LORD2/7ths MONS_PLAYER_GHOSTAnd that's what _xom_random_pal(strengthRoll, true); does, which will matter to other functions later.Finally, back in >_xom_send_one_ally(It seems the summon has a default duration of 6, however long that actually is.> mg.set_summoned(&you, MON_SUMM_AID, summ_dur(6));Xom adds 100 to 200 points to the summon timer, gives 1000 to the regeneration timer of that monster, and gives a "chaos upgrade" to the weapon of any reaper he may have just summoned.It's not hard to test, but your monster was just given summ_dur(6) and then +100 to 200 extra summon timer, which could mean 16 to 26 turns, or 10.6 to 20.6 turns, or something else. If this were a guide, I would go get a xom ally and count how long he lives for sanity checking. For now, I don't know this.
>>554369597
just noticed if you hit shift + b to butcher an zed, choose the zed, but then hit escape when it asks you what type of butchery option you want, it pulps the zed in 0 seconds and with zero effort. i GUESS you could exploit this, but good lord the autism required to do that every time
>>554369597>there's a 1/13rd>1/13rd>13rd>thirteen-erd
>>554280503I will never convert to Beogh at gunpoint, kill me first furfags
So, an example.AT XL10 with 50 severity, as is typicalstrength = 1d(5* sev) = 1d(250) = 125 on averageVariance from the table is initially -4. Add xl and it's 6. Add "ally" random value and it's 8, this time.Simplest way to calculate rarity is rarity*( ((varaince-min) + (max-min)/2 ) / (max-min) ). In English that's "distance from edge plus half the range divided by the range, times base rarity"If the number is closer to max than min, switch that part out for (max-variance) instead.Don't worry about decimal fuckery. The actual number is inflated to account for that.butterfly with 5 current rarityshadow imp 20ufetubus 25white imp 20mummy 2.5phantom 62.5bombardier beetle 9swamp drake 83.57~weeping skull 23.21~orange demon 32.14~shapeshift 31.25ice devil 20red devil 20boggart 30chaos spawn 77.5total rarity appears to be 461.67. As this isn't a range where "near the middle" has any particular meaning, I can't just say it's average 230.835. However, swamp drake, chaos spawn, and phantom are the most common results at this XL and severity. Everyone's odds are current rarity / total rarity, which is the mildly useful information.Assuming I'm in a zig, for some reason, there's a 7.69% chance that my summon is instead replaced using replacement table 1There's a 7.1% overall chance of replacement using replacement table 2There's a 21.3% chance of replacement using replacement table 3.The monster is summoned with sum_duration 6.It is enchanted with average 150 extra duration, which may not mean 156 total duration and may not mean 210 duration.It is enchanted with 1000 duration regeneration, which I suspect means "exactly 100 turns"And, finally, it is done, and it is confirmed that you now have the tools needed to, by hand, figure out what xom can summon given your XL, severity, and location.
>>554375982I really don't think he's a bad god, but the army playstyle is extremely dull. The redesign made it much more tolerable than old Beogh, but it's still not fun.
huh, this is new, never seent dis befoah. a (nearly) silent motorbike with a generator that converts all fuels into electricity? hell yeah im putting that shit into my pickup
>>554382715What version of cataclysm?
>>554383650completely vanilla
>>554384317DDA isn't vanilla, it's Kevin's special chocolate
>>554385482oh okay, i guess the most popular and played version of dda, then
>>554385665>the most popular and played version of dda, then
>>554385951yeah me either. anyways, its pretty useful. finally a reason to collect all this diesel
lmao and now wheelbarrows parked in parking spots? thats new
>cant wear the condomsfuck this game
>>554392056
I just realised CLG doesnt have any portal storms. Peace and quiet, ahhhh bliss.Here's my fridge, i am not eating well, its been cheese and malt milk balls. I barely have enough survival to make a butchery rack, then i'll find some poor beaver or something. Just crafted a stonebow, took 3 in game days but now i have a better weapon than a slingshot.
>>554393870Nvm i am sorted.There's been this cow loitering around my base, i tried to feed it straw but you cant do that. I had a can of corn though, made cattle fodder and now i have infinite milk.I also butchered a mutant frog and have been eating that, the toxins (25U) in the cooked meat cant be that bad can they?
>>554397131Toxins aren't too bad as long as you're not eating only that. It will build up over time and start to give you unpleasant effects, first minor, then nastier as the toxin level rises. It goes down over time, so you can totally supplement your food supply with a little mutant meat and be 100% fine, or eat a lot of it for a while when you lack other sources.
>>554377206>>554374494AK->>554377206>XOM_GOOD_POLYMORPH>_xom_good_polymorph(ends up at>_xom_polymorph_monster(*mon, helpful);which runs>_xom_mons_poly_target(to get a target and>_xom_polymorph_monster(*mon, helpful);to do the effect.In xom mons poly target, a "monster_near_iterator" is used to grab all the monsters "near you", and I have failed to understand this object, so I'm going to assume it grabs all visible monsters and move along. It's in act-iter.ccIt won't poly "firewood" which I guess means bushes.It won't poly monsters for which _choose_mutatable_monster(monster) returns fails, which I think excludes monsters which cannot, by default, be polymorphed.It won't poly monsters over water or lava if your XL is under 5It won't, I think, mutate plants unless your XLis over 8Note that "you can see" in these cases ignores monster invisibility. I just mean it's tile is on screen.Once it has a list of all valid targets in sight, it randomly picks one and returns it.Once xom_polymorph_monster(*mon, helpful) receives a monster, If the monster is not a "ghost_demon", is not a shapeshifter, is natural, and either you're above XL4 or xom is nasty, there is a 12.5% chance of xom adding a "shapeshifter" enchantment. Specifically, shapeshifter 66% of the time and glowing shapeshifter 33% of the time. I am not sure if this makes them an actual shapeshifter, which is instead a monter-type.Xom will attempt to polymorph while lowering XL if the monster will attack during good polymorph, or if the monster won't attack during bad polymorph.If not that, then Xom will instead attempt to polymorph while raising the XL when you're above XL 4 during bad polymorph.Otherwise, xom will attempt to polymorph while leaving the XL alone. During bad polymorph, if your XL is under 10, xom will malmutate the monster he just polymorphed.>mons.polymorph(PPT_val)calls this function
>Polymorph(PPT)It's in mon.cc. It receives a single value which is the same as an int and can only be MORE, SAME, or LESS.If the monster can't be polymorphed, it returns false.If the monster is an uglything, it just changes the color. This means that xom can't change what an ugly thing is.Polymorphing a monster with the shapeshifter enchantment returns it to its original shape.Slimes are special-cased to polymorph their parts separately."targ" is RANDOM_POLYMORPH_MONSTER if PPT_same was used, but otherwise is RANDOM_MONSTER> return monster_polymorph(this, targ, PPT);this function is in mon-poly.ccThis fails if target is using stairs.Fails with message if monster has "demon tier -1", which seems to mean pan and hell lordsFails on "pet slime" with message>targetc = _concretize_target(gets the target speciesIn concretize_target(It calls _poly_from_set(mons) if targ was Random_polymorph_monster earlier, which grabs a random entry from a list of monsters that is specific to every monster and so does not have to be explained here, because it can't be.If targ was RandomMonster earlier, because zom tried to increse or decrese HD, then _fill_poly_weights() is called instead.>_fill_poly_weights() and>_poly_weightFor every monster in the whole monster list, it disqualifies glitches, duplicates, and the monster type we are polymorphing away from.It disqualifies monsters which cannot live in all the same habitats as the original monster. That means target flying monsters are always allowed. Any non-flying monster is an invalid target if the original monster was a flyer. After flight, the list of all valid terrain for a target monster must contain every valid terrain for the original monster, regardless of what tile they are currently standing on. A creature which could live in lava, for instance, would have very few targets they could polymorph into. However, almost everything would be able to polymorph into a lava crab.
Then, it sets target HD to current HD -2 or +3, depending on if PPT was LESS or MORE. HD goal is capped at 1 or 27.It obtains the difference between target HD and new HD. If new HD is higher than target HD and PPT was LESS, it doubles the HD difference.It obtains the difference between current Demon Tier and new Demon Tier, and adds the HD difference to the Tier difference.If the total difference is greater than 8, the monster is disqualified. Otherwise, the monster is added to the weighted list. The weight of the monster is 2^(8-total difference). So, the highest weight occurs with zero difference and is 256. Each point of difference makes a monster half a likely to appear. At 8 difference, the weight is 1. Once it has a weighted list of every valid monster, it rolls one.Back up in monster_polymorph, the target monster is received and change_monster_type() is called.Jiva does something we don't care about..A lot happens in order to make this transformation while maintaining details about the monster, so only a few are of note.fearing and "beholding" are interrupted, so I think this cures mesmerize, maybe.Deletes associated tentacles.Dumps TRJ minions out.zombification is maintained.Godless new priests are given gods.Monster drops objects.Unknown shapeshifters are marked as shapeshifters.Constriction, both direction, is broken.Engulfing others is broken>mons->speed_increment = 67 + random2(6);Which I think means that a polymorph target doesn't move for 7 turns, which I don't think can be a correct interpretation.At the end of monster_polymorph(, a function xom_is_stimulated(int) is called. If a shapeshifter was targeted, it uses 12 for its value. If poly morph tried to weaken a monster, or the monster was friendly, it uses 25.If polymorph did not attempt to change the XL, it uses 50If polymorph attempted to strengthen a monster, it uses 100.
>>554404652>xom_is_stimulated()This function is the function which generally increases xom's current interest in the player. The first thing the function does is attempt to check what actor took an action. If it was xom, it does not change xom's interest level.However, only xom can specifically attempt to increse the XL of a polymorph target, as far as I can tell. This indicates that either part of this code is pointless, or else the game does not credit xom as the actor which is preforming his polymorphs. So, this method of detecting what actions xom caused is likely inconsistent, from the perspective of a player. For polymorph, this is somewhat testable, with difficulty and a lot of time.Also of note, the wiki does not mention that polymorphing gives xom interest, I think, and it does.Piety_scale is a function which vaguely multiplies a number by 1.25 when the user has a level of faith. It was used earlier for the normal drift of piety up and down by 1, which means that having an amulet of faith causes it to drift up/down by 2 25% of the time.In xom_is_stimulated:>int interestingness = random2(piety_scale(maxinterestingness))So, the interest-value of an action may be multiplied by 1.25 if you have faith, with random rounding. Then, interest is set = 1d(interest)This means the actual amount of interest which you get is random. This means you cannot, at all, in any way, assume that an amusing action will actually amuse xom. Those conclusions were wrong, and that's why this slow compilation of all xom's features doesn't belong on a wiki.Interestingness is capped at 200, so you can't actually roll 255 interest from use-IDing potions.
>>554404735If interestingness is less than 10, it does nothing.If interestingness is 10 or more, and interestigness is greater than Xom's current interest value, then Xom's interest is set equal to this interestingness.Every time this happens, when the interest goes up, xom will give you a message about it.So, the wiki says "Spell miscasts (the level)", meaning that a miscast has an interest value equal to the spell level. The highest level spell is 9. Miscasting a spell, then, can never amuse xom, because it cannot roll greater than 9 on a 1d(action's interest).However, with a level of faith, 9*1.25 = 11.25 and 8*1.25 = 10, meaning you have a small chance, when casting very high level spells and miscasting, to amuse xom. So, lets check to make sure it isn't as bad as the wiki indicates.In spl-miscasts.cc>miscast_effect()> if (target.is_player())> xom_is_stimulated( (level / 3) * 50);Level is an int. Level comes from spell_difficulty(spell). Spell_difficulty returns _seekspell(spell).level. Seekspell returns a spell_desc, which must have a "level" variable.spl-data.h contains the spells. spl-util.cc contains a "struct" which matches turns the information in spl-data into a set of spell-desc objects. The 4rth variable in the struct is called "level". The 4rth variable in each spell's definition in spl-data is the spell level which should be expected. For instance, "cause fear" is level 4 and the wiki says i is level 4, meaning this level is the same as waht we normally call levels.so, miscasts of level 1 and 2 don't give any interest because level is an integer. 3,4, and 5 all give 50 interestingness, which gets turned into interest if you're lucky. 6 7 8 give 100. LVL 9 miscasts give 150 interestingness, which is sizeable.Contamination is 2*(LVL^2*fail% +250), just like it says a bit ambiguously on the wiki. so, for a level 9 spell, you get under 5000 contamination for a miscast at 27% spell failure rate.
>>554408053It's 35%@lvl 8. 45%@lvl7. 62%@6, 89%@lvl5 and lower spells are always safe for at least one cast at zero contamination.Trusting this formula from the wiki, for now, damage incoming is (Spell Level)d(Spell Level + Raw Failure Rate) / 99d(9+99)/9 = max 108 damage, potentially elemental and resistible. Any late game character should be able to afford that every 1500 turns on average, if they are willing to spare the spell slots.
>>554382715and 0 noise when riding. kinda op really
>>554408419>XOM_GOOD_ALLIES>_xom_send_alliesUses the same strength roll and functions from one-ally above.Also gets a number of monsters to summon from _xom_pal_counting.Uses the same strength number for this:Strength, xl<4, xl<10, xl<19, xl>18<151, 2 to 3, 3 to 4, 3 to 5, 4 to 5<301, 1 to 2, 1 to 2, 2 to 3, 2 to 4300<, 1, 1, 1 to 2, 2 to 3Meaning higher tension, in this case, causes fewer monsters to appear.If you have 5 or more runes, add runes/5 monsters, with random rounding based on the decimal value.If xom is nasty and summoning enemies, *1.5 monsters.Since summon allies was already covered, that's all.Fuck that's nice. Polymorph was a lead brick.
>>554409310>XOM_GOOD_FORCE_LANCE_FLEET>_xom_force_lancesPushes things within 2 distance of you away "harmlessly" Attempts, again, to push away "adjacent" monsters.If xom is nasty, attempt to summon (2+ xl/6 + 1d(xl/15)) lancesThey would have xl/6 HD, at least 1.If xom is not nasty, attempt to summon (2+ xl/2 + runes/8 1d(XL/5 + rune/20) )They would have (XL+runes/4)/2 HD>XOM_GOOD_CLEAVING>_xom_cleavingAdds 10+ 1d(severity) cleaving duration, so maximum of 11 turns. Seems to low. Needs a test.>XOM_GOOD_FLORA_RING>_xom_harmless_floraIgnores severity. Random radius of ring tends to increase with XL.radius 2, weighted 54-XL 3, weighted 274, 13+XLHas 13+XL/54 chance of using demonic plants instead of toadstools, which might have different HP or something.50% chance that random 1/3rd of the plants in the innermost ring will be missing.Does not, I think, replace monsters or push them away or anything.>XOM_GOOD_DESTRUCTION>_xom_real_destructionFor each monster "near" you, if it isn't a projectile or a tentacle,2/3rds of the timewhen that monster isn't next to you, unless when xom feel's nasty in which case he'll do it anywayXom attempts to cast a spell."Dice" is a value = 2 + XL/13 with random rounding. Random rounding, by default, always means decimal-value*100% chance of rounding up.if you have more than 4 runes, add runes/3 with rand rounding to "dice"Beam is a "sticky fireball" and I don't know if it's resistable.Damage is dice_def(Dice, 4+severity)Beams explode with size 1, which I think means no splash damage but also no evasion.This dice_def() creates a dice with Dice d (4+severity) damage. At XL 26, that's 4d( avg 54) or an average 108 damage on 66% of visible monsters. At XL 1, that's an average of 54 damage, likely fire type.
>>554408672You can build your own diesel hybrid though>b-but muh fuel compatibility!Fuel isn't rare, and if you've adjusted the drop rates to make it rare, you probably shouldn't be counting on finding a specific unique motorbike.
>>554413646>XOM_GOOD_DOOR_RING>_xom_good_door_ring>_xom_door_ring(bool good)Xom attempts to move monsters away from you. First, he moves the monsters which are inside the central square of the door ring. Then, he attempts to move the monsters on the potential door tiles away.Xom places the door ring, radius 3, 4, and 5. Xom can't replace "critical" things. He can replace unruned doors, solid floor, or diggables.He apparently fails to replace living creatures still in his door-zone, though I'm not sure why.>XOM_GOOD_MASS_CHARM>_xom_mass_charmDuration is 500+1d(severity)The average HD of all nearby monstes is obtained. The first checked monster is always charmed, which means there's value in figuring out the order in which nearby_monsters will check tiles.Then, for every monster, a random 1,0,or-1 is added to their hit dice. If this value is <= their average HD, the monster is charmed. This stops when 50% of monsters are charmed, or when all monsters have been checked.>XOM_GOOD_HYPER_ENCHANT_MONSTER>_xom_hyper_enchant_monsterWill not buff a monster with haste, invis, might, or empowered spells. Will only buff friendly monsters. Will not buff "peripheral" monsters.Maximum HD is 3+ XL*7/20, so 12 at most. If more than 3 runes, add runes/3 randRound to HD, so 17 at most.For every nearby mosnter, add (-2 to 1) randomly to Maximum HD. If their HD is less than Max HD, add them to the list of monsters which may potentially receive buffs. If there is no available friendly monster, xom will summon one.Under xl 7, iguana25% or cerulean imp 75%Otherwise, if XL < 13, 14, or 15 randomly, black bear25% or hell rat 75%Otherwise, if XL < 20,21,22 randomly, 25% wyvern or 75% hell houndOtherwise, 33% elephant or 66% toenail golemsumon_dur(3) for this summon.Your list of valid monsters is randomized.If xom feels nasty, he will sort your list in ascending XL order, I think. Check if you want:
>>554425739> shuffle_array(targetable);> if (_xom_feels_nasty())> {> sort(targetable.begin(), targetable.end(),> [](const monster* a, const monster* b)> {return a->get_hit_dice() < b->get_hit_dice();});> }For only the first monster in this list, the game will attempt to apply each of might, haste, invis, empowered spells, repel missiles, resistance, regeneration, willpower, toxic radiance, double hp, mirror damage, and swiftness. >XOM_GOOD_FOGIt's fog. Nothing special. No XL or severity.>XOM_GOOD_FAKE_DESTRUCTION>_xom_fake_destruction>_xom_destruction(int sever, bool real)same function as real destruction, except it doesn't do anything. Might, maybe, show the location of an invisible enemy for 1 frame.>XOM_GOOD_TELEPORT>_xom_good_teleportWill standard-teleport you at least once.After every teleport, has a 10% chance to stop.After each teleport, if the 10% chance fails, there is another ((teleports - 6)*20)% chance to stop, so 100% chance at 12 teleports.Lastly, if the player is not in a "dangerous place", there is a 25% chance to stop teleporting.This seems extremely insufficient. While the good teleport makes an attempt at leaving you in a safe place, it simply fails. Xom gameplay should, in part, be designed around avoiding this effect. The bad version, through worse, isn't that much worse.>XOM_GOOD_LIGHTNING>_xom_throw_divine_lightningDoes 3d30 damage. Sends out a random number of bolts from 4 to (tension/5, minimum 5 and maximum 27) For every nearby monster, has a 33% chance to throw a bolt at them in particular.Will not throw more than the number of bolts described above. If any bolts remain after trying each monster, it will throw them at a random spot in a 13x13 tile area centered on the player.
>>554422637yeah but this lets you do it in a single tile, could make it foldable as well
What's the best real roguelike I can play if I want something mechanically (and content wise) simple and non-bloated, but still want all the crazy stuff with daisy chain reaction abilities and emergent gameplay possibilities?
>>554428635Path of Achra.
>>554428635Yeah Achra is basically all about making builds, 90% of characters will be doing the equivalent of O-tab or spamming wait.
>>554428635>What's the best real roguelikeDungeon Crawl Stone Soup
>>554428635Caves of Qud
She's looking much better now.I'm just worried that she'll be too stupid to turn the power armor on in combat.
I lived.
>>554445584Lotta bodies. Not including another horde off-screen to the left or the ones I converted directly into meat.
Can i somehow disable my items falling from the car in cdda?
>>554448015What do you mean? Falling how?
>>554448015>>554456521It can look like you're dropping items "into the car" but if it's not installed in a storage area (quarterpanel, door, trunk, trunk door, cargo space, seats even- I think aisles MIGHT work, but I can't recall for sure), mostly meaning bare frames, it'll fall through onto the ground.
>>554448015>>554457684Use the advanced inventory management menu instead of dropping stuff.
>>554446260Messy.
Is there a roguelike that ISN'T entirely reliant on rng for "difficulty"? Just lost 2 lives in tome4 to a fucking lvl 12 snake of all things because first time around, it put me to sleep and strike me 3 times without me waking up, then the second time around it struck me with crits on repeat eating all my shields, then 3rd time I won in 2 turn because I crit it twice.This is fucking retarded, tactical skills are fucking irrelevant when the rng can just decide to fuck you over on a dime. I dont even feel good about beating the little shit because it was purely luck, the dices decided I won and thats it. In my 350 hours of tome4 to date im pretty sure over 95% of my deaths were the result of bad rng, and im starting to genuinely feel fatigue over it and it hamper my enjoyment of the game. Its to the point I cant even be bothered to think of a new character or new build because I just know ill die to some dumb bullshit that I cannot use tactics to counter.Didnt think there would be a time where I think xcom is fair, and it isnt like I have better luck with rng in those games.
>>554477223If you have good knowledge in tome4 then even on Insane you should win like 80% of the runs. Probably 100% if you are very vigilant.Tome4 is the most deterministic of all roguelikes since it allows you to choose from a lot of areas and you don't have to clear much to win.Your mistake there sounds like you tried to reengage after knowing that it can kill you easily the first time it slept you. Could have just run away.
>>554428635Don't listen to these faggots anon. Path of Achra is a glorified puzzle game. Get Golden Krone Hotel, it's basically DCSS (and on a similar level of simple) except with all the autism removed and it actually plays and looks good.
What is the dark souls of roguelike?
>>554493254Unfortunately, I don't know any roguelikes with a dodge roll button. The dodging is usually just a stat check.
>>554493757My ragulike will have a dodge buttonIn fact it will have 8 dodge buttons
>>554425739fucikHYPER_ENCHANT_MONSTERDuration of buffs is randmo from 200 to (200 + sever * 2)so average 250.>XOM_GOOD_WAVE_OF_DESPAIR_xom_wave_of_despair(Makes dead skeletons around the player, I think on every empty tile within distance 2. Potential necromancy use?pow = 50 + random_range(sever / 2, sever), so 50 + (avg 50 to 25), so avg 87.5For every monster around, it gives 1 level of vulnerability for pow *BASELINE_DELAYin defines.h>BASELINE_DELAY = 10;So that's 87.5 turns of vuln.Gives lvl 2 draining for pow duration, so that's 9-ish turns, minimum 5."annoy"s monsters that won't attack.Gives you vulen for 87.5-ish turns.And lastly, you cast fear with pow*5 power, or 437.5 average power, max 750 min 250. I think a scroll of fear is 1000 power.In beam.cc:>mass_enchantment(enchant_type wh_enchant, int pow, bool fail)fail is false be default, from beam.hMult pow by 1.5, so that's 655 for us with rounding.> pow = min(pow, 200);Here, we have a line which caps power at 200. The smallest value xom's fear effect can submit is 250. This means that there is no effective variance in the power of xom's fear effect, and that it is always as strong as possible. If that is the case, why use a variable instead of just using 1000 like what the scroll of fear appears to do?Further, any mass enchantment with a power of 134 or higher is as strong as possible, in terms of chance to occur.This is absurd enough that, despite seeing no flaw in my reasoning, I must note it and warn that I may be incorrect about some part of how mass_enchantment( works or what function it calls. This was such an unacceptable conclusion that I have now compiled the game with a small printf() statement meant to trigger every time mass_enchantment is called. I have now compiled the game. When I use a scroll of fear, my command prompt reads 200. When xom uses wave-of-despair, the command prompt reads 200.It's legitimately this stupid. I am now a modder over this.
>>554498536I also pumped an int 12 tengu to xl27 and skills 27 and cast discord.. Discord had 69 out of 200 power. 69*1.5 = 103. When I cast discord, the console printed 103, so casting also uses this same function, but is much less likely to hit max effective power.Anyway, power = 200 at this stage."_monster_resists_mass_enchantment()" mostly just removes invalid targets and then calls mons->check_willpower(&you, pow)It might do something interesting with "mass anguish" not affecting friendly targets, which might mean scroll of torment maybe, but that's somebody else's problem to figure out.check_willpower() is in actor.cc.Will-immune are unaffected. Effective willpower is reduced by 1 pip if the player is in sphinxform and 2 pips if the player has "guile", so 3 at most with no further stacking.Willpower minimum is 0.Casting monsters with ATT_MARIONETTE reduce the effective willpower of their target by *.5 instead.Spell power is stepped-down. runs "stepdown(pow, 35)" which returns "step * log2(1 + value / step)". In our case, pow is value and step is 35.So, that's 35 * log2(1 + power / 35)new power@power96@20084@15068@10044@5027@250@0The monster's degree of resistance to this specific enchantment is 100 + effective willpower - newSpellpower - (0 to 99) - (0 to 100)If all numbers are maximum, that's 100 + 200 - 96 - 99 -100, which is 3, meaning that an enemy with perfect willpower cannot possibly be enchanted. That value, "res_margin", is used to create a message in game which tells you how much your target resisted you by. Any value above 0 means the enchantment was resisted. Any under 1 means the enchantment worked on that target.
Path of Achra is bretty fun. A little easy to break by just summoning a billion allies, but you can just not do that.I like that it can be fully controlled with a mouse. I have been spoiled by modern times ;_;
roguecels
>>554493254>>554493757Dwarf Fortress Adventure Mode has an active dodge. Also blocking and parrying. And bossfights that kill you instantly.
can you not drill/jackhammer through floors in cdda? its only walls?
>>554513281ah fuck is it really just "mine downstairs". i cant just bash through the floor or anything?
>Find 2 bear traps>Find pupating brute>Trap itHaha, yes, now taste my pebble crossbow!>Breaks free both in seconds and regenerates all healthVivec, give me the CHIM powers i need.
>>554514286Try high explosives, those work in BN
>>554498705>XOM_GOOD_SNAKES>_xom_snakes_to_sticksFor every "snake" in view, has a 50% chance of turning it into "missiles", otherwise turns it into "weapons" If it's missiles, it's javelin. Otherwise, you're getting a random "stickable" weapon.Table of stickable weapons, in order:rank, weapon, commonness aka rarity, 0, WPN_CLUB, 10,1, WPN_SPEAR, 8,2, WPN_TRIDENT, 6,3, WPN_HALBERD, 5,4, WPN_GLAIVE, 5,5, WPN_QUARTERSTAFF, 86, WPN_SHORTBOW, 87, WPN_ORCBOW, 88, WPN_LONGBOW, 29, WPN_GIANT_CLUB, 110, WPN_GIANT_SPIKED_CLUB, 1First, grab a random weapon with a rank lower than the snake's HD.Second, if 1d(HD)-1 is less than commonness, keep the weapon.Also, there's a ((hd-rank)/HD *100) % chance you keep the weapon.If you don't keep the weapon, return to "first" and reroll.Continue until you keep a weapon type.Item-level is snakeXL/3-1Using the compiled "mon-data.h", a table of all spawning snakes:Snake, XL, item levelgreenAdder, 2, -1, anacondas, 11, 2, Ball Python, 1, -1, Blck Mamba, 7, 1, Lava Snake, 3, 0, Mana Viper, 10, 2, Sea Snake, 10, 2, Shock Serp, 10, 2, wtMoccasins, 5, 0, I believe the genus of the monster is listed before the list of monsters in that genus, in monster-type.h, in the non-compiled files. I will not be confirming this.For javelins, item-level determines how likely silver javelins are. For item-level 0 or less, silver is impossible.For others, the weighted chance of silver is 90.The weighed chance of normal is 1d(2000-55*level) -1At best, that's 90/1980 = 4.5% chance of silver javalin, and it will only be 1 javalin.For weapons, a snake that supplies item_level -1 results in 25% chance of a brand from set_item_ego_type();Enchantment level is -1, -2, or -3, randomly.I have decided I do not care what actual brands this results in, for now.
>>554522087For a higher item level above -1, a different branding and enchantment method is used.~75% of the time, the weapon is neither enchanted nor branded.25% of the time, determine_weapon_brand(item, item_level) is run. It has a ~1/3rd chance of attempting to brand the weapon at all. "choose_weapon_brand(wpn_type)" only accepts the weapon type as an argument, not the item level, so the possible enchantments just depend on what kind if weapon it is.For enchantment level, item level is technically used, but is very low in this case.enchantment is increased by 1d(3)-1.There is an ~ 8.4% to increase it by 1d(3)-1 again, or stop trying.There is a second ~ 8.4% to increase it again, or stop trying.There is a last ~ 8.4% to increase it again, or stop trying.So, probably the weapon has an enchantment level of 1.If the weapon is unbranded and the enchantment level is under 3, the enchantment level is now zero.
>>554522193An example:A moccasin is XL 5. Xom's snake action has a weight of 430 during tension. The snake has a 50% chance of being turned into a weapon, and I say this snake becomes a weapon. It can roll glaive, halberd, trident, spear, or club, with equal odds. All 5 of those weapons have a rarity aka commonness under 5, which means 1d HD - 1 will always be less than commonness, which means you will always keep the first weapon type you roll. 75% of the time, that weapon will be unenchanted and unbranded. 25% of the time, the weapon will receive brand/enchantment. It has a 33% chance of receiving a brand determined by the weapon type. It can receive up to 8 levels of enchantment, but will almost certainly receive 1,2, or 3. Any unbranded weapon with 1, 2 or 3 enchantment will have zero enchantment.Another example, partially. Three snakes have xl 10. An xl 10 snake has an equal chance of rolling club, spear, trident, halberd, glaive, quarterstaff, shortbow, orkbow, longbow, or giant club, but never spiked club.1d(10)-1 is 0 to 9, so the odds of that number being under rarity are in the table below.rank, weapon, rarity, chance to keep method 1, chance to keep method 2, total % to keep0, WPN_CLUB, 10, 100%, 0%, 100%1, WPN_SPEAR, 8, 80%, 10%, 82%2, WPN_TRIDENT, 6, 60%, 20%, 68%3, WPN_HALBERD, 5, 50%, 30%, 65%4, WPN_GLAIVE, 5, 50%, 40%, 70%5, WPN_QUARTERSTAFF, 8, 80%, 50%, 90%6, WPN_SHORTBOW, 8, 80%, 60%, 92%7, WPN_ORCBOW, 8, 80%, 70%, 94%8, WPN_LONGBOW, 2, 20%, 80%, 84%9, WPN_GIANT_CLUB, 1, 10%, 90%, 91%While this is not exactly a table of your chances to actually get each weapon, it's still pretty indicative and it gives you enough information to finish the job without programming knowlage if you somehow care. A single test on a room full of sea snakes confirms that clubs are about as common as giant clubs in this case, and that's good enough for me.
>>554522298>XOM_GOOD_ANIMATE_MON_WPN>_xom_animate_monster_weaponIt's tukimas without an mr check on on target in view.dur is 2+ (1d(severity)-1)/ 5, so average 2 + 49/5 = 12, but with a maximum of 6. You hit dur 6 when severity rolls a 20, so you average max duration at severity 40.Duration is set by summ_dur(dur), which leads to the unacceptable conclusion that a weapon lasts for 2 to 6 turns.from mon-enchant.dd>int summ_dur(int degree)above 5 dur gives 1900 auts, 100 turns5 dur gives 900 auts4 gives 400 auts3 gives 300 auts2 gives 200 auts1 gives 100 autsHowever,> return fuzz_value(aut, 60, 40);in random.cc, and random.h:>int fuzz_value(int val, int lowfuzz, int highfuzz, int naverage)In our case, or whenever this is called by summ_dur(int), this returns> 40%aut + random2avg( 100%aut+1, 2)random2avg(x, y) returns (yd(x)-y)/y, meaning it takes the average of y random numbers of size x. The higher y is, the more the result tends towards the average and away from the extremes.With this, 1 dur gives 100 auts which becomes 40 + random2avg(101 aut, 2), meaning the average is ~90%.6 dur 1710 auts, meaning 171 turns.5 dur 810 4 dur 3603 dur 2702 dur 1801 dur 90With this, I have to revaluate any function I covered earlier which used summ_dur()Also, xot may attempt to act on every aut instead of every turn, which would mean he's 10 times as active as originally estimated and uses boredom up 10 times as fast. The earliest posts in this project must be rechecked based on this, if true, but that's not happening until I've finished evaluating each of these xom actions
most religious roguelike?
anyone played liberal crime squad. its that game no one remembers that the dwarf fortress guy made. you try to make the country convert from conservative to liberal by whatever means necessary, including prostitution and selling drugs.
>>554540120LCS is like DF - sounds much much better on paper and in fan stories.Plus it lost the "fun" statues in recent years after all the shit left pulled/roots for.
>>554532356In what way?
>>554441184in Bright Nights I tried controlling one of my companions for a bit and my original body was smart enough to activate his RM13, so yes I think NPCs can activate power armor
>>554457684aisles don't have any storage volume but floor trunks do>>554448015vehicle tiles have volume limits just like backpacks do, think of it like that
>>554540120>>554543480it stopped being fun after it became prophetic
>>554546661so why does it sometimes say "not enough space!" and puts it back into your inventory and sometimes it just drops the fucking thing through the floor and onto the ground. its REALLY annoying to drive off and then realize welp 1 of the 43 things you moved is on the ground!
>>554546812yeah pretty much
oh no didnt know we had poltards here
>>554547583eh just disappointing. just a shame they finally made their way over here. now it wont hit as hard when someone says "this is a pol website!" and i point out /vg/ literally gets more posts
>>554546903probably because whatever space you're trying to put your thing is fullyou can check by using 'x' or examining the vehicle and moving the cursor over the tile in question
>>554548129then why doesnt it say "destination is full" like it does half the time. if the destination is full, why would it sometimes NOT do the destination is full routine
>>554547982>finallyAnon, I...
>>554548174oh ive been here since the guild wars 2 bot but i wouldnt really expect an election tourist to know anything that far back. it was a thing.
>>554547982kill yourself nigger and never say I'm from /pol/ again>>554548174oh this one's new, what webcomic is this cutie from>>554548247fuck if I know, when I try to drop objects into vehicle tiles that are full it spits a debug error at me and then drops the item onto the ground, so be glad that you don't get debug error messages
>>554548460i dont think kids can adopt adults.anyways actually i was gonna make some comment about wishing how we could go back to when we got neo-nazis disbarred on 4chan, and looked it up to see when that happened, and wow. hal turner sued 4chan in 2007. so ive been here since atleast 2006. crazy.
>>554548424oof, you playing some really outdated fork or something? debug messages when dropping stuff in a car? owch.
>question shitlibs in any way>kvetching intensifiesTypical /rlg/
>>554552374must be one of the Caves of Qud players who ingested too many goyrays
>>554553306CoQ any good?I watched SSeth and i still have no idea whats this rouglike is about..
die
>>554559758It's pretty good. It's science fiction with psionics, mutants, and cybernetic implants. Openworld, but it's a story-driven roguelike, like A.D.O.M.To be more precise, it's "savage" science fiction, like Dark Sun or Gamma World.
>>554498536You've already uncovered multiple pointless/buggy functions which don't do anything, it's weird that this one in particular annoyed you so much.
>>554546903I've made it a habit to always check the nearest items with V before driving away, and to never park on items if I can avoid it so that it's easier to see if there's something under the car that should be inside it.
>>554540120Yeah, I played a lot of it at one point. It's fun.>>554546812It was always based on real life. The Symbionese Liberation Army was doing domestic terrorism and kidnappings back in the seventies. The current political happening in the US is honestly kind of mild compared to the kind of shit people used to pull.
>>554559758It's definitely great. It also has one hell of an OST.https://youtu.be/adKh3SGhhTIBasically, it's a world after several post-apocalypses, and almost everyone is some sort of mutated freak. Also, unlike some other roguelikes like Wasteland, the land isn't all sand and waste, and some of the game's most dangerous regions are verdant jungles and swamps. The creatures of that land will crush your skull like a grape if you underestimate them, even the more mundane ones like Snapjaws (gnolls) and baboons.
>>554574835 (me)Also, you can play as True Kin (non-mutated humans), who can grow even stronger than the denizens of Qud, thanks to mechanical implants and their ability to buddy up with robots.
>>554101678Cogmind is balanced so you don't just "unga bunga" your way through everything. You become too much of a nuisance, and 0b10 WILL turn you into blue scrap/paste.
>>554583684I'm aware of that. I'm asking for games that are similar, just skewed a bit more towards combat. The dev did a good job on making noncombat feel important, but I think he went a bit too far in that direction balancewise.
>>554585757If you want more combat just engage in more combat Pretty sure the dev himself play mostly combat builds
>>554589085but it hard :(
>>554591613roguelike
>>554591613You will learn eventually. Just keep in mind the damage resistances of enemies, and you'll be golden.True, Prototypes can be nasty, but as long as you take their weaknesses in mind, you'll tear them to bits eventually. If all else fails, a shit ton of explosives will deal with most of what MAIN.C throws at you.
Roguelikes with emergent gameplay?
>>554573132Unlike other issues, this challenged a baseline assumption which affects the game outside of xom.Either way, now I get to actually test my conclusions, where I find that there is enough confusion and enough significance to be worth the time.>>554526212>XOM_GOOD_DIVINATION_xom_divination(int severity)prints text based on newly revealed objects, according to it, but that doesn't matter.runs>magic_mapping(radius , proportion, false);It's in view.cc with default values in view.hFails on non-persistent maps. That's not Baily, or abyss, or pan, so it's probably old labyrinth which isn't in the game anymore.radius is 5 + 2*severity, so 105 average.proportion is 50 + random2avg(2*sever, 2), so 150 average.pfar = 70% radius, so 73 avgfar = 90% radius, so 94 avg> for (radius_iterator ri(in_bounds(origin) ? origin : you.pos(), map_radius, C_SQUARE);The center of the effect is position (-1,-1), unless that's "out of bounds", in which case the effect is centered on you're position. The radius of the radius-iterator is "radius", implying that the average size of the checked area is 211 tiles.For every checked positionPositions which can't be automapped are skippedThe grid distance from you to the postilion is obtained."Threshold" is set to a value based on your "grid distance" from a location. threshold = proportion/3 if distance > farthreshold = proportion/2 if distance > pfarthreshold = proportion otherwise
>>554610403Every possition is assigned a random difficulty from 0 to 99.If difficulty(position) <= threshold, reveal that tile.So, for tiles within grid-distance (5+2*severity)*70%, the tile is revealed if (50+ (2d(2*severity)-2)/2 ) > 1d(100)-2.For tiles within grid-distance (5+2*severity)*90%, the tile is revealed if (50+ (2d(2*severity)-2)/2 ) > 1d(149)-2, with rounding errors due to approximation.For tiles past - grid-distance (5+2*severity)*90%, the tile is revealed if (50+ (2d(2*severity)-2)/2 ) > 1d(297)-2.Unlike most functions so far, which scale maybe 1 time with severity and often in an insignificant manner, this scales twice. Base difficulty of a tile is not based on distance from you max severity. With a max roll for proportion, which gives 249 proportion, and a radius 205, you would reveal 100% of tiles within 143 tiles of you, 100% of tiles within 184 tiles of you, and ~ 5/6ths of tiles between 184 and 205 tiles of you.With average rolls and severity, radius = 105 proportion = 149. You reveal 100% of tiles within 94.5 tiles of you, and ~ 50% of tiles between 105 and 94 tiles of you.with 25% severity, but average rolls, radius = 55, proportion = 75. You reveal ~75% of tiles within 38 tiles, 50% of tiles within 49 tiles, and 25% of tiles up to 55 tiles from you.Note that, while the range is deterministic, the actual proportion (effectively the power) is random. While it can roll high, low rolls are more significant here, potentially casing tiles within 70% distance to not reveal themselves.Also, just to be clear, proportion is only rolled 1 time, but every tile has its own random value.
everytime i replay cdda i wonder why i stopped and then saves start to bloat and performance degrades
>>554612235what the hell. i play it on a 8 inch chink laptop that uses a mobile phone cpu and its just as fast as my i9 5080 desktop. the fuck sorta potato do you play it on
>>554610531>XOM_GOOD_SCENERY>xom_change_scenery(If he does not see a "candidate" tile, he will attempt to place "things".Otherwise, he will attempt to place "things 1/6ths of the time, anyway.66% of the time, if he places things, it's "decor()"33% of the time, if he places things, it's _xom_summon_butterflies()Once he's done potentially placing things, he polymorphs trees into trees, bloods up the fountains, and polymorphs food into food. So, unless a tree type is more transparent or intractable than another, this part is basically gameplay irrelevant.decor() places 1d(1d(16)-1)-1 features, but at least 2. So that's 2 to 14, with 2 and 3 being very likely.The weighted list of potential decor is10, DNGN_ALTAR_XOM,7, DNGN_TRAP_TELEPORT,2, DNGN_CACHE_OF_FRUIT,2, DNGN_CACHE_OF_MEAT,2, DNGN_CACHE_OF_BAKED_GOODS,1, DNGN_CLOSED_DOOR,1, DNGN_OPEN_DOOR,aby, DNGN_ENTER_ABYSSAby has 1 weight outside of abyss and zero weight inside of abyss. This means xom can give you an abyss entrance if you, somehow, don't have one and don't want to damage yourself with disjunction weapons, given that you've been worshiping him for a long time or get really lucky.An alter of xom is only really useful if you would like to leave xom and then return to xom for free penance, or to use another god for awhile when no xom alter generated, or to put an alter right next to the dungeon exit so that you get credit for doing a xom run without sticking with xom.Teleport traps are life savers if you fight near them.A door in the right place can be very useful, but it won't be in the right place.Xom butterflies is 10 to 20 butterflies. Summ_dur is 3, so that's 27 turns.These effects are mostly good. You don't get these effects as often if you can currently see "candidates". As such, you should avoid having "candidates" in sight. Candidates are "trees" "food" and "fountains" other than blood or "eyes" fountains. This means xom turns candidate fountains into non-candidates.
>>554612235do you not enable map compression or something. map save files are now compressed to 10/15 times smaller and its way faster. zstd was implemented like 3-4 months ago
Is slice and dice any good?
I thought the demo was alright but I never got around to playing the full came
>>554621102It's not a roguelike, but yeah, it's pretty fun. One of the very few StS-likes that managed to develop its own identity rather than just slapping a shitload of bloat onto a StS frame.
if you throw a grenade in an open area make sure you leave unless you want to get swarmed by 20 woodland wights who apparently will cross the universe to find the noise
grump
fucking hell how FAR does a grenade aggro
just playing some mindless minotab
quit my job today
>>554613280>XOM_GOOD_CLOUD_TRAIL>_xom_cloud_trail(duration of trail is 600 to 1200Possable cloud trails table: weight for cloud20, CLOUD_CHAOS,9, CLOUD_MAGIC_TRAIL,5, CLOUD_MIASMA,5, CLOUD_PETRIFY,5, CLOUD_MUTAGENIC,4, CLOUD_MISERY,1, CLOUD_SALT,1, CLOUD_BLASTMOTES);Salt and magic clouds have no effect.Good gods turn misama and misery into saltzin turns chaos and mutagenic into saltThat's only really relevant if you've abandoned xom, but you're likely to abandon xom for zin in order to avoid his malmutations and keep your shitload of positive mutations. In that case, your low chance of good cloud trails will result in more salt.Blastmotes, I think, have 25 spellpower and do 2d9 damage, but are rare.Knowing that this action has a minimum duration of 60 turns, it's actually a really powerful way to deal with large swarms of enemies or single powerful targets. It helps retreat from bad situations, even if it's just salt.>XOM_GOOD_BAZAAR_TRIP> _xom_bazaar_trip(seems to use lua, which I don't know, on source/dat/des/portals/bazaar.desSends you to a xom bazzar.Neutral monsters spawn, "shoppers".If you have "hated by all" mutation, or okawaru, fewer shoppers generate in the bazzar, or maybe none, not sure.Seems to generate with 8 hallways. Seems 3 of the hallways have a non-abandoned shop. The 3 shops are, I think always, 1 magic shop, 1 consumables shop, and 1 equipment shop.Magic shop contains 3 books with 2 spells each.Contains 2 talismans, at least 1 artifact.Contains 1 manual.Contains 2 wands.The manual is random from a list "hexes", "alchemy", "necromancy", "translocations", "summonings", "forgecraft", "evocations", "shapeshifting", "stealth", "stealth", "stealth", "stealth"Common stealth manuals is meant to be a joke due to xom making noise often, but it effectively makes a small amount of stealth more viable on xom for the passive benefits. Others are every non-blaster spell school, which means lots of utility.
>>554634814Wands are "poly" wands, "blast" wands or "hex" wands, with 12 to 18 charges. Books have 2 random spells from their associated random school.Valid schools/spells are:hexs with jinxbite, confusing_touch, tukima's_dance, yara's_violent_unravelling, discordalchs with mephitic, toxic_radiance, alistair's, irradiate, fusilladenecro with kiss_of_death, sublimation, fugue, cigotuvi's_putrefaction, death's_doortranslocation with maxwell's_portable_piledriver, volatile_blastmotes, gell's_gavotte, dispersal, malign_gatewaysummon with imp, martyr's_knell, summon_forest, summon_cactus_giant, horrible_thingsforge with iskenderun's_battlesphere, awaken_armour, blazeheart_golem, alistair's_walking_alembic, diamond_sawbladesconsumables shop has 7 to 11 random consumables and/or darts. Here is a table of possable consumablesweight, item, stack size3, atropa, 5 to 83, datura, 5 to 83, disjunction, 5 to 8unknown, attraction, 1 to 4unknown, lignification, 1 to 4unknown, mutation, 1 to 4unknown, poison, 1 to 4unknown, vulnerability, 1 to 4unknown, immolation, 1 to 45, torment, 1 to 412 breserk OR ambrosia OR silence but only one of them is in this list at a time, 2 to 3Each kind of consumable has the same amount per stack in that shop.For equipment shops, they have1 chaos branded randart with +3 to 4 enchant1 chaos branded randart with +2 to 5 enchant1 chaos branded "good item" with "3 to 2 enchant75% chance of an extra unrand. 2 jewelry2 defensive equipment.The extra unrand gains a chaotic brand 50% of the time.If chaotic, the unrand is grabbed from the list chaoticlist = { "spriggan's_knife", "captain's_cutlass", "gyre", "maxwell's_thermic_engine", "autumn_katana", "elemental_staff", "wrath_of_trog", "frostbite", "consecrated_labrys", "wyrmbane", "rift", "glaive_of_the_guard", "lochaber_axe", "eos", "spellbinder", "sceptre_of_torment", "punk", "storm_bow", "mule" }
tired of my knucklehead coworkers
>>554634893If not chaotic, the unrand is grabbed from the list baseunlist = { "plutonium_sword", "singing_sword", "obsidian_axe", "glaive_of_prune", "mace_of_variability", "firestarter", "majin-bo", "robe_of_folly", "robe_of_misfortune", "maxwell's_patent_armour", "orange_crystal_plate_armour", "shield_of_the_gong", tower_shield_of_ignorance", "hat_of_the_bear_spirit", "mad_mage's_maulers", "ratskin_cloak", "slick_slippers", "seven-league_boots", "skull_of_zonguldrok", "fungal_fisticloak", "crown_of_vainglory"}The jewlery can be two of 3 randart rings and 1 randart amulet. The amulet is always faith with regen+. The rings and the amulet always have either ^drain or ^contam, and also one of (-rF, -will, or -rC).The defensive equipments are either one of 4 orbs or a scarf of harm, all artifacts.scarf of harm comes with 3 to 5 slayingmayhem comes with 4 to 8 intwrath comes with 4 to 8 strguild comes with 4 to 8 dexlight comes with 3 to 4 stealthFor all unrands listed above, the listed buffs and debuffs are extra. They also come with the randomly generated set of buffs an unrand should have. Perhapse because you are seeing a lot of unrands, or perhaps for some other reason, this shop tends to have items with a lot of positive bonuses. If you run out of either category of unrand, the shop will generate a extra hat for you instead, or something. So, the things of note here are:1. a lot of artifacts, and so a higher chance of a really good one2. potential source of unrands, some of which get an extra chaos brand. May hand you a chaotic wyrmbane, rarely. or chaotic autmn katana.3. about a 50% chance of a potentially kickass amulet, hopefully with enough resistances to make up for one negative resistance.4. inexpensive special throwing needles, which are potentially great.5. mutation potions potentially6. good chance of a spell from a mildly narrow list. About 6 out of 36 spells per visit.And maybe some fresh corpses, if zombies can leave.
I swear this follower...
I spent 5 minutes arguing to one coworker, Ty, that radon was a radioactive gas, not a word that was shorthand for a combination of alpha/beta/gamma radiation. We had mandatory safety briefings every month about radiation exposure. I wondered why they hammered the same information so often, and apparently it was for employees like him. The irony is that he worked there for 4 years and those mandatory briefings never got through to him.
>>554637106If he worked there for 4 years he just sounds like a retard but some people like me can't process information through meetings. I need coworkers actively talking about things to understand them correctly.
>>554639634He might have been irradiatedPost nuclear apocalyptic roguelikes?
>>554644970roguelites?nuclear throne, wasted, fan tribute version of hotline miami 3 that will come out in 20 something yearsroguelikes? none iirc. Qud likes to pretend it's post apocalypse but it's not at all post apocalyptic if you actually play it, 99% of the in game planet has no structures, towns, or villages whatsoever. It's just 'ruins' structures in a few areas and sprawling underground sections with the same few randomly generated setpieces. If I made a roguelike myself it would take place in the post nuclear apocalypse but only out of convenience of being able to have all of the inventions of the modern world that I'm familiar with for problem solving but not needing to put a million pathfinding NPCs everywhere to avoid FPS death. Also convenient for making everyone irritable and hostile- because they are irradiated cancer-havers.
>>554613465isn't that a Bright Nights feature, not a DDA feature?
>>554634319roguelike time
been playing titan questroguelikes used to be this good huh
>>554635414>XOM_GOOD_MUTATION>_xom_give_good_mutations(> _xom_give_mutations(true)The "bad mutations()" just runs this with false.Fails if you can't "mutate safely", which means you're undead. This avoids the rotting effect.Makes 1d(4) attempts to mutate you.If under penance, and this is the first mutation attempt this action, and this is a bad mutation action, xom will hit you with a single RANDOM_BAD_MUTATIONAll subsequent attempts are RANDOM_XOM_MUTATIONIf this is a good mutation event, then every mutation attempt is RANDOM_GOOD_MUTATION.These attempts will only ever send one failure message at most.mutate() is a very big function in mutate.ccIf "afflictions" are disabled, bad_mutation fails. This might make a difference when attempting to test xom bad mutations under penance in wizard mode. Not sure.God mutations, like these, skip mutation resistance.Zin attempts to block any mutation, even if a god is the mutation source.For "RANDOM_XOM_MUTATION"s, there is a (numMutations/15) chance of deleting a mutation instead.When deleting a mutation, it selects a random mutation type from all mutations you have a level of with the RANDOM_XOM_MUTATIONS flag and then deletes it. This could mean that mutations that do not posses the RANDOM_XOM_MUTATIONS flag cannot be deleted this way. Unsure, particularly since it seems no mutations actually have that flag explicitly listed. If a mutation was removed, that is the end of this mutation attempt.
>>554651027If a mutation is not removed, continue.RANDOM_XOM_MUTATIONS become good %50 of the time and bad 50% of the time.Up to 100 times, the game will get a mutation with the "good"/"bad" flag appropriate. It will then check to see if you can currently accept that mutation. If it fails 100 times, it returns an empty mutation, and the attempt fails.The total list of mutations, and so all the good mutations and bad mutations, are in mutation-data.h. This is interesting because mutations weight is not represented on the wiki, despite some mutations clearly being more common than others.If it were not for the weights, there would be no point in listing the mutations here. I still won't.Due to xom only removing mutations during bad mutations, high tension blocking mutation events, piety beign visible at all times, and undeath blocking xom's mutations outright, it is possible to get such a massive number of mutations that the game is forced to give you the rare mutations, and then to abandon xom without letting him malmutate you at all. This may be viable very early, if you can find a way to survive with ten max hp when xom summons monsters on you. Note, vampire form does not block mutation.
Slightly less decent but still workable.I still think it's BS how hard these are to recruit. You need pretty decent skills and gear to even get access to them and then two persuade checks on top of that?
>>554658491the first persuade check is completely optional and just gives you a massive bonus to the second if you succeed
>>554659489Maybe I misread when I was picking an option but in some ways that just makes it worse, because I did pass the first check and still only got a 50% chance on the second, with 6 speaking and the bionic face thing.
>>554332476It's a Walking Dead reference. The fat zombie was named Brenda, the two other zombies were Andrew and Danny and the legless zombie was Mark. Brenda and her two sons are cannibals who trick survivors and eat them. Mark was with the protagonists until he got bit, Brenda ambushed him and cut his legs off to eat them. She gets bit by Mark after he becomes a zombie.
It's like watching a run fail in real time.
>>554658491It's weird, since I'm pretty sure you get worse odds on the special dialogue than the normal recruit check.
>>554672057The problem is that if you're watching it, then they're not going to fail. That's the annoying thing about watching roguelike videos on youtube, because you know they're not going to die in the first few levels because then it wouldn't be a video. It doesn't capture the real experience when you only watch a guy win.
>>554681650Sounds like we need a better class of roguelike video creator, because "watch me die a bunch of times" sounds like it could be fun
>>554682262I would love to watch more tightly edited videos with interesting premises instead of the crap that I find out there. Roguelike video creators really have not been innovating lately. There are basically two video types: Unedited livestreams where the only commentary is the streamer thanking their subscribers for giving them money, and "educational" videos where someone explains how to play a bog standard meta build for brand new players.
>>554688191Cataclysm: Tales from the Final Day was a great concept, I wish there was more like it
>>554688191You get reviews as well.
I tried to scale 2H weapon damage, but I didn't find the weapon I wanted (Pine Cleaver). I thought this run was doomed, but Agni Mantle with 52 strength is enough to kill the King of Many Colors on its own.
>>554696946>0 alliesNice. What cycle?
>>554698542Cycle 32, and I think allies make certain enemies really dangerous by giving them inflame stacks or zapping from the minion to me. The Mardok minion prayers are just divine interventions.
I wanna wish you a merry ChristmasFrom the bottom of my heart
>>554700040Interesting. I'm only on cycle 10, but the ol "just spam infinite undead/plant/snake/ant mobs while zapping enemies with the psy helmet" seemed really busted when I did it.
>>554712502Early Achra cycles are super easy, later ones are super busted though. I remember regularly getting one shot if I didn't build properly on max cycle.
>>554712502I think pure Summoners are typically the worst builds on C32, unfortunately. There are too many enemy types that counter them, including the final boss. The best thing to do with summons is activate "On summon" effects like Fulminant Cult or Astral Cult to stack buffs. Other than that you generally need a really good gimmick to make a summon build work. The Ice Familiar, for instance, is good because it can get extra attacks out of turn order. Most summons struggle because of low speed and low durability, so attacking out of turn order fixes the speed problem.
What's the preferred branch of Cataclysm these days?
>>554721748Preferred fork of most around here seems to be Bright Nights.
>>554712502>>554714692>>554717669what do you lads think of this?barely pulled through against the King. all 3 of those interventions were there
>>554727776>C8>barely pulled throughngmi
>>554727776Teleport builds can actually work quite well. I can't tell exactly how the sequence of events plays out in this build, but good job anyway.
>>554728398;-;>>554729097nothing crazyaxe gives some base armor and resistance to make me less squishymaster doom + stand ground gives poise and doom on stand still, chest armor gives poise and meditate when anyone teleportsi teleport ~5 times on standing still from astrohunting and racial bonusdoom gives armor to supplement poisebheith nocht gives more damage and more armorstarjumper honestly isn't doing much except ticking off the win box on the prestige screen, but does prevent stasis from preventing me from teleportingmight adds a little physical aoe on top of the astral and lightning from astrohuntingcursed flesh keeps me from dying to chip damage astrostoicism prevents me from getting gibbed by enemies that attack more than once in a turnbasically i spawn and press 5 until everything dies
>>554730474I'm just joshing, you'll be alright. Should start thinking about how to be more efficient though, later on you basically need to one shot everything or have crazy defenses/sustain.
bugged game
Should I assume that Jupiter Hell isn't getting any more updates since Jupiter Hell Classic came out now?
>>554747237I wouldnt expect any so yeah.
fucking hell light retrievals a pain in the ass, even with the rm13 armor i have to keep going back up and down to recharge. am i missing something, is there some sort of weak point i missed
>>554651147Penance is triggered and paid off when gaining xp, so the idea of surviving penance with 10%hp seems nonviable. However, pumping your mutation stack a bit might still work.xom_is_stimulated() when he mutates an item off of your body. artifact unequips give 200 interestingness and other unequips give 100 interstingnessGood mutiations give 6*(11-weight) base interstingness.Bad mutations give 24*(11-weight) interestingness. rC- and teleportitus are both weight 3, so that's 192 interestingness.rC+ is weight 4, so that's 42 interestingness.Poor constitution is weight 10, so that's an interestingness of only 24, but it makes teleportitus less likely.I think he finds his own actions funny in this case but am not sure.>XOM_GOOD_RANDOM_ITEM>_xom_random_item>_xom_make_item(OBJ_RANDOM, OBJ_RANDOM, sever * 3);Maximum severity here is 300. When this number is used in make(), to create item_level, it is almost immediately squished to 50. A severity of 17 gets max item_level.As the item class is random, a class is selected from a weighted list:10, OBJ_STAVES,25, OBJ_TALISMANS,45, OBJ_JEWELLERY,45, OBJ_BOOKS,70, OBJ_WANDS,212, OBJ_ARMOUR,212, OBJ_WEAPONS,176, OBJ_POTIONS,156, OBJ_MISSILES,270, OBJ_SCROLLS,440, OBJ_GOLD)i If item_level is above 7, there is a (11+ item_level)/9000 chance of switching item class to OBJ_MISCELLANY, which I think means rechargeables.If item_level is under 7, and the item is currently a wand, there is a (7-level)/7 chance of replacing it with a scroll(50%) or a potion (50%)There is a 1/275 chance of having a (35-item_level)/35 chance of replacing the item type with "bauble", which means that one consumable talisman.>baubleIf class baubles, set type to flux baubles and quantity to 2 or 3. >goldIf gold, it drops ~ 1d20+ 1d(item_level) - 1, so average total 34, assuming at least 17 severity.
>>554753893>miscIf miscellany, xom will drop one of the 7 rechargeable devices present in your run, but not the 3 which are unavailable to you. apply_item_props() in dungeon.cc calls this function with "exclude" false, and so can potentially generate the missing 3 devices, but that's not what I'm analyzing right now.>staffIf staff, it will roll a random staff type from the list of staffs (Fire cold alchemy energy death conjure enchantment summoning air earth channeling). 1% chance to try to make an unrand staff instead. If that fails, has a ~ 1/80 to 2.5/80 chance to make a randart staff. If randart staff, first "intrinsic" properties are added, such as rf+ on a staff of fire.runs make_item_randart()Number of negative traits to be added is 2 attempts to add 1 with 21% chance success, meaning average .42 max 2 minimum 0Number of positive traits to be added is 1 + negative traits + 6 attempts to add 1 with 21% chance success, meaning average 2.68, max 9, minimum 1Maximum property types is 4 + 5% chance of one extra + 0.25% chance of one extra. Any traits beyond that are enhancements instead. Maximum positive trait types is maxPropertyTypes - negative traits. So, a randart with 4 max properties, 2 negative, and 6 positive, ends up with 2 negative, 2 positive, and 4 enhancements. This does not count intrinsic properties.The game grabs a property type from a weighted list. If the enchantment is already positive or negative, and can have a level added to its enchantment, then it adds a level to that enchantment.If the enchantment type, on this weapon, can currently be negative or positive, then there is a 50% chance of it being negative or positive, unless all positive/negative enchantments have already been added for this randart.If the enchantment is positive, then any remaining enhancements for that enchantment which can be added are added. (rf+ becomes rf+++)
>>554753994There is no mechanism for making sure that all enhancements are used, but all positive and negative enchantments will be used. So, a randart with 4 max properties, 2 negative and 9 positive, can end up with -rF, -rC, blink, Sinv as the final set of enchantmentsIf applying a positive enchantment, and the enchantment is not maxed out, and there are no enhancements left, there is a chance of adding an extra level to that enchantment and then running this check again. The odds are (1/(1+oddsIncrement*number of enchantment levels applied at this stage))So, if a staff of fire with an inherent rF+ and no enhancements receives an rF+ enchantment, there is a 1/(1+4(the weight)) chance, so 20% chance, of rF++ becoming rF+++Given this, it's somewhat unlikely to end up with, for instance, rF++ and rC++. Enhancements tend to be used up on the first selected enchantment, and so rF+++ with rC+ or rC+++ with rF+ are more likely. Something with an inherent enchantment, like a staff of fire, make this more likely. They can receive some other enchantment first, and then a single level of the enchantment they started with.Also, a selected enchatnment is removed from the weighted table for this specific artifact generation, so you can't roll rF+ twice.Weighted table, removing any with weight zero:enchantment, weight, oddsIncrementSTR, 100, 1INT, 100, 1DEX, 100, 1rF, 60, 4rC, 60, 4rElec, 55, 0rPois, 55, 0rN, 55, 4will, 50, 4SInv, 30, 0+inv, 15, 0fly, 15, 0+blink, 15, 0*noise, 30, 0-tele, 25, 0*rage, 30, 0^contam, 20, 0slay, 30, 2stlth, 40, 0MP, 15, 0regen, 35, 0rCorr, 40, 0*corrode, 25, 0^drain, 25, 0*slow, 25, 0^fragile, 30, 0harm, 25, 0rampage, 25, 0archmagi, 40, 0conj, 20, 0hexes, 20, 0summ, 20, 0necro, 20, 0Tloc, 20, 0Fire, 20, 0Ice, 20, 0Air, 20, 0Earth, 20, 0Alch, 20, 0Forge, 20, 0*silence, 25, 0Basically any enchantment with 0 oddsIncrement can't be incremented past 1.
>>554754106I am unsure how to determine which positive enchantments can go on what base type of item. For negative enchantment, _artp_can_go_on_item() is used, and that is probably somehow called indirectly for positive enchantments as well. This aspect will simply not be covered. Know what enchantments are possible yourself.>weaponsThere is a 1/30 chance of having a (item_level+3)% chance of getting a random weapon type from this list: (LAJATANG, HAND_CANNON, TRIPLE_CROSSBOW, DEMON_WHIP, DEMON_BLADE, DEMON_TRIDENT, DOUBLE_SWORD, EVENINGSTAR, EXECUTIONERS_AXE, QUICK_BLADE, TRIPLE_SWORD)If not that, there is a (item_level+1)/27 chance of having a more random weapon. To select it, a weapon is randomly selected from all weapon types. There is a commonness*10% chance to keep that weapon, or else roll again and repeat.If not that, there is a (item_level + 1) / (item_level + 11) chance of getting a random weapon type from this list: (QUARTERSTAFF, FALCHION, LONG_SWORD, WAR_AXE, TRIDENT, FLAIL, RAPIER). For 50 item_level, that's 83%. Minimum 9%.If not that, random from this list: (SLING, SPEAR, HAND_AXE, MACE, DAGGER, DAGGER, CLUB, WHIP, SHORT_SWORD). The duplicate dagger is intentional.For item levels other than zero, (101 + item_level * 3 / 4000) chance of attempting to make a randart, so 6.25%.If attempting to make a randart, 5% chance to make an unrand instead. Selects from list of available unrands with the same weapon type. Unrands lost in abyss can be obtained in abyss.Enchantment level is 12 - biased_random2(10,2) -biased_random2(7,2) - biased_random2(7,2). Biased_random is in random.cc. It is the following odd loop.>int biased_random2(int max, int n)>{> for (int i = 0; i < max; i++)> if (x_chance_in_y(n, n + max - 1 - i))> return i;> return 0;>}
>>554754221The comments claim that this is meant to be about equivalent to rolling 2 1d(max)-1 and selecting the lower result.In the case of (10, 2), it's somewhat easy to estimate the intended % of getting each value back. for every number, there is a 10% chance that the first die rolls it. Then, there is a 10% chance of the second die rolling each number. So, 10% of the time you roll a 2, and then 10% of those times you roll a 1 on the second die. Therefore, the odds of getting a 2 and keeping it are 10% - 1%. = 9%. Meanwhile, for every number higher than two, they also have a 10% chance of rolling a 2 for their second number. Therefore, the odds of 2 being your lowest die between two dies is 10% - 1% + 8%, or 9+8%. This pattern holds for other numbers, so the odds of 3 are 10-2+7, or 8+7, or 15%.So, for max = 10, the potential results should be 0 to 9, and the odds of each result should be (19-2*(result))%. However, this is not quite the case, and the actual odds of each result vary by less than a percent while using the above function.Given this, for 7, the function should be:base odds = 100/7% which is just 1/7odds of rolling a 1 after rolling a 2 = (1/7)^2odds of getting a 2 as the lower of 2 rolls: 1/7-(1/7)^2+5(1/7)^2odds of getting a 1 as the lower of 2 rolls: 1/7-0*(1/7)^2+6(1/7)^2 = 1/7 + 6*(1/7)^2 = 1/7 + 6*(1/7 / 7) = 2/7 - 1/(7^2)Therefore, the odds of a particular result, given 2 as "n", should be 100*( 2/max - ((1+2*result)/(max^2)) ).For ten that's, 0 - 9:19%, 17%, 15%, 13%, 11%, 9%, 7%, 5%, 3%, 1%For seven, rounding down, that's26%, 22%, 18%, 14%, 10%, 6% 2%Anyway, code comments says that the "mean" enchantment level is 5. biased_random(10) gives an average of around -0*19%+ 1*17% + 2*15% + 3*13% + 4 * 11% + 5 * 9% + 6* 7% + 7* 5% + 8* 3% + 9* 1% = 2.85 average0 * 26% + 1 * 22% + 2* 18% + 3* 14% + 4* 10% + 5* 6% + 6* 2% = 1.82 avgThe average result should be 12-2.85 - 2*1.82 = 5.51 enchantment level.
>>554754336If the enchantment level is less than 1, 50% chance the enchantment level is 1 and 50% chance the enchantment level is now zero.Once enchantment level is determined, the same make_item_randart() function used by staffs is run, with one difference.If the weapon type is "mundane()", there is an 80% chance that the attempt to give it randart properties fails. Mundane objects are clubs, giant clubs, and animal skins.Assuming the weapon is not an artifact, then non-mundane items have a (50+item_level)/200 chance of being upgraded. Hand cannons and demonic weapons are always upgraded.Among upgraded non-artifacts, there is an (101+item_level) / 300 chance of attempting to get a brand. demonic weapons, and hand-cannons always get a brand attempt. The weighted list used to obtain a brand for the weapon is in item-prop.cc, and is often specific to the weapon type.After attempting to brand an uprgraded non-artifact, run the same function from snakes-to-sticks. enchantment is increased by 1d(3)-1. if (random2(425) > 35 + item_level), do not increase enchantment level further. at 50 item_level, that's 20% chance to roll again, and an 80% chance to stop.Increase it by 1d(3)-1 again. At best, 80% chance to stop increasing.Increase it by 1d(3)-1 a third time. At best, 80% chance to stop increasing.Increase it by 1d(3)-1 a forth time.12 max, normally around 2.48 enchantment level.If the weapon is unbranded and the enchantment level is under 3, the enchantment level is now zero. Xom attempts to set 50% of branded weapon he spawns to chaos, if they aren't already. This doesn't count unrands.
>>553985687They need to make a gatcha board or something because this is borderline unbearable
What do i do with deadweight 0 skills follower in CLG?I told her to only pickup from whitelist to pickup my expent archery ammo, but she went and picked up half my base supplies for no reason.
Has anyone actually played Ultima Regum and what is your opinion on itAlso I just realized that the new captcha is literally a procgen roguelikeRoguelikechads we are winningThis is our year
>>554754437>ARMOUR20% chacne to roll from weighted list: (12, ARM_BOOTS, 12, ARM_GLOVES, 9, ARM_CLOAK, 3, ARM_SCARF, 10, ARM_HELMET, 2, ARM_HAT, 2, ARM_KITE_SHIELD, 4, ARM_BUCKLER, 1, ARM_TOWER_SHIELD, 4, ARM_ORB)If not that, (11+item_level)/10000 chance to roll from list: (STEAM_DRAGON_ARMOUR, ACID_DRAGON_ARMOUR, STORM_DRAGON_ARMOUR, GOLDEN_DRAGON_ARMOUR, SWAMP_DRAGON_ARMOUR, PEARL_DRAGON_ARMOUR, SHADOW_DRAGON_ARMOUR, QUICKSILVER_DRAGON_ARMOUR). That's .61% to .11% at this step.If not that, (11+item_level)/8000 chacne to roll from (ARM_CRYSTAL_PLATE_ARMOUR, TROLL_LEATHER_ARMOUR, FIRE_DRAGON_ARMOUR, ICE_DRAGON_ARMOUR).If not that, (11+item_level)/60 chance to roll from list: (ROBE, LEATHER_ARMOUR, RING_MAIL, SCALE_MAIL, CHAIN_MAIL, PLATE_ARMOUR). That means item_values above 48 will always stop at this step if reached.if not that, (11+item_level)/35 chance to roll from list: (ROBE, LEATHER_ARMOUR, RING_MAIL, SCALE_MAIL, CHAIN_MAIL)If not that, rolls from list: (ROBE, LEATHER_ARMOUR, RING_MAIL)For item levels other than zero, (101 + item_level * 3 / 4000) chance of attempting to make a randart, so 6.25%.If attempting to make a randart, 5% chance to make an unrand instead. Selects from list of available unrands with the same weapon type. Unrands lost in abyss can be obtained in abyss.%5 artifact boots become bardings instead. 20% of enchantable artifacts are not enchanted.Enchantment level of armor is 1d(max enchant)20% chance to add 1d(max enchant + 5)/21/6 chance to subtract 1d(max enchant + 5)Oddly, this means enchantment level has an opportunity to be greater than the max value, so the value must be clamped in some other process.If body armor has enchant level is 0 or lower, set to 0 50% chance and set to 1 50% chance.For other armor, a random number -2 to 1 is made, and any value lower than that is raised to the random number.Runs make_item_randart(), same as the staff and the weapon, when making an artifact.
>>554747237There's a brand new class coming for Jupiter Hell - it's already in testing on the Discord. Dunno when it'll come out though.
I haven't been here in a while why is someone dumping dcss spoilers
>>554763668autismHe's going over the code for Xom because the wiki as-is is uninformative on the subject
>>554763668I actually have no idea. Like a week ago somebody said he was working on forking Rogue or Nethack and the big walls of texts have not stopped since. Somewhere along the way it turned into DCSS.
>>554761057If the armor did not become an artifact, 1/8 chance to turn boots into barding.If the armor is scarf or orb, it always gets an ego applied.If the item isn't a skin, and the item is either a hat or passes a (51+item_level)/250 chance, it receives upgrades.It gains 1d(3)-1 enchantment. If it is plate, chain, scale, ring, leather, or robe, it has a (21 + item_level) /300 chance to gain 1d(3)-1 enchantment. (31 + item_level)/ 350 chance to gain an ego. Ego is chosen from a weighed list specific to armor type. List is found in item-prop.cc, just like with the weapons.If it gets PONDEROUSNESS, gains 2+ 1d(7) enchantment.Excess enchantment level is reduced to the enchantment cap.Unenchantable armor is raised to zero enchant, if less than zero.Egos are removed from scales and hides.Armor with no ego and "low" enchant is set to enchant zero. The threshold for "low" enchant depends on the armor type. >book(21 + item_level) /4200 chance of getting a manual, 1.4% at best.manual skill points is 2000 to 3000.25% chance that you get a random manual of spells/spellschools/evok/invok75% of a random one of every other skillBook depends on severity. Not only is there a table of weights for every spellbook, there is a table with weights which change based on an input value, like the odds of xom summoning a particular monster. That's simply too much information. If that problem is ever reduced to a table of weights at given item_values, it will belong on a page by itself. It's not hard, it's just work. Simply know that xom doesn't seem to affect what spells you can get, I think, and that there are probably certain spells and books you can't get at item_level 50 or lower.
>>554764839>SCROLLSCan't get scrolls that aren't in this run. Probably would work like wands and rechargables, but I don't think this mechanic is used.Can't get TP and noise in sprint.xom specifically can't give you magic mapping or identify.Each valid scroll is added to a weighed list with a matching weight and then one is selectedVERY_COMMON: 200, COMMON: 100, UNCOMMON: 36, RARE: 15, VERY_RARE: 946/48 chance of size 1 stack, 1/48 chance of size 2 stack, 1/48 chance of size 3 stack.>potions1/18 chance of 1 extra potion1/25 chance of another extra potion, so 3 at most.All potions are put in a weighted list with weight based on rarity, and one is chosen.VERY_COMMON: 192, COMMON: 105, UNCOMMON: 67, RARE: 35, VERY_RARE: 2If item_level is less than 2, or the potion is berserk, monster pickup of the item is disabled. I'm not sure if this feature is used anymore.>MISSILESprojectile type selected from weighted list (40, MI_STONE; 10, MI_DART; 3, MI_BOOMERANG; 2, MI_JAVELIN; 1, MI_THROWING_NET; 1, MI_LARGE_ROCK)LARGE_ROCK gives 2+ (2d()-2)/2 STONE gives 2d(5)-1 Nets give 1 and 25% chance of an extra.Any other projectile gives 2 to 6 stacks and attempts to get an ego.Only darts and javalins can currently get egos.For darts, the odds of getting curare depend on item_level. item_level > 27 gives (1/6) chance of getting curare.item_level < 2 gives (1/15) chance of getting curare.Otherwise, you have (1 / ((364 - 7 * item_level) / 25)) chance of getting curare, which starts at ~ 1/14 and ends at ~1/7. The equation is linear.Assuming your darts don't become curare, one brand is selected from a weighted list:60, SPMSL_BLINDING,20, SPMSL_FRENZY,20, SPMSL_DISJUNCTION,pw, SPMSL_POISONED)"pw" is random2(2000 - 55 * item_level), which is -750 at max item_level. Not sure how negative weight works. I assume it just means zero.
has anyone come across this before. it really seems like these keep re-spawning
>>554766721If your item typs is javalin, the weighted list is 90 silvernw normalnw is another, different, random2(2000 - 55 * item_level)>WANDSWands have 2d(max charges)/2 charges.Wand type is selected from a weighted listweight, wand type, max charges14, WAND_FLAME, (16 if item_level >7, or else 32)14, blast_wand_type, (8 if item_level >7, or else 15)14, hex_wand_type, (8 if item_level >7, or else 15)9, beam_wand_type, (8 if item_level >7, or else 15)7, WAND_POLYMORPH, (8 if item_level >7, or else 15)7, WAND_MINDBURST, (12 if item_level >7, or else 24)5, WAND_DIGGING, 9"hex wand" is { CHARMING, PARALYSIS }"beam wand", { ACID, LIGHT, QUICKSILVER }"blast wand", { ICEBLAST, ROOTS, WARPING }so a typical xom wand will have 4 charges, but has more charges under very low severity. Peity 100% gives better wands, as well as no negative xom actions.
>>554753157Is that the ice lab one? Do you have thermal electric underwear? I think you can wear two, even with power armour.
>>554768525no the hub mission in the collapsed tower. you go through like the suits 5000 kj protecting from the poison gas by the time you explore a quarter of downstairs. i gave up and was going to come back later because i dont have any tool batteries larger then 256 or whatever and only a few so its taking fucking forever to recharge the suit
>>554769085I thought the RM13 used plutonium.But yeah, the cheap way would be to just use a gas mask instead.
>>554767461Yeah, that's the haunted cabin with the hidden horror basement.
>>554769592i put off the mission till i found better armor because the flesh things almost raped me to death and i barely made it back out. they must of buffed them or im just stupid. anyways i went and randomly found a basement lab im raiding now and was hoping to find a mech for the stupid light retrieval thing and....its the recon/sniper mech. great. and i found this minigun. the miniguns useless, isnt it>RM13 used plutoniumnope its rechargeable via ups now.i just found the phase immersion suit as well and have never used it, i guess ill try that once i find a faster way to charge, maybe thatll last long enough under the basement
>>554769690this map gen has been weird. EVERYTHING spawned pretty damn close to eachother, and all these rare events ive never seen are appearing right between them all
>>554769950>nope its rechargeable via ups now.Well that's fucking lame.The phase immersion suit at least still uses plutonium, right?
>>554770153nope
>>554767681>TALISMANS_talisman_level() gives talisman lvl.However, by default, it returns min(item_level, 35). If we get a talisman with zero severity, that's the same as a "bad" or "damaged" talisman. If we get severity 15, that's the same as a "gift" talisman. If we get 25, that's the same as a randart or good-item talisman. Max value, 35, should be quite common.The "talisman level" uses the same random_picker function as "allies" used, but the table is smaller and uses more formats than 2.minimum, maximum, base weight, format, resulting tier: { 0, 10, 65, FALL, 1 }, { 0, 35, 5, FLAT, 1 },{ -5, 20, 56, PEAK, 2 },{ 0, 35, 12, FLAT, 2 },{ 5, 22, 30, RISE, 3 },{ 21, 35, 30, FLAT, 3 },{ 0, 35, 5, FLAT, 3 },{ 12, 27, 24, RISE, 4 },{ 28, 35, 24, FLAT, 4 },{ 0, 35, 5, FLAT, 4 },{ 20, 27, 15, RISE, 5 },{ 28, 35, 15, FLAT, 5 },{ 0, 35, 5, FLAT, 5 },Fall means current weight is weight* (max-talismanLvl+1) / (max-min+1), or weight * % distance from min.Rise means current weight is weight * (talismanLvl - min+1) / (max-min+1), or weight * % distance from max.Peak is weight * ( (max - min + 2) - abs(min + max - 2 * LVL )) / (max-min+2). Or, it's 100% at the midpoint and near-zero at max and min. Specifically, it's weight *(2/(range+2)) at the edges.At 35, weight of tier is 5 for 1, 12 for 2, 35 for 3, 29 for 4, and 20 for 5. Without checking, tier 1 should be most common around severity 0. tier 2 around 17.5. 3 around 22. 4 around 27. 5 above 27. You would have to check to get more accurate numbers.Tiers are as follows:QUILL, INKWELL, 1RIMEHORN, SCARAB, MEDUSA, MAW, 2SERPENT, BLADE, FORTRESS, WEREWOLF, SPIDER, AQUA, 3STATUE, HIVE, DRAGON, VAMPIRE, SPHINX, 4STORM, DEATH, 5Pick a random talisman type from the selected tier.Chance of artifact talisman is (2.5*LVL - 15*tier +20)%, minimum 5%. for 35 LVL and tier 5, that's 32.5%Function for giving arifact properties is the same one for staffs, armor, and weapons
>>554769592RM13 uses plutonium in bright nights pretty sure, he must be on some gay fork
>>554772512>JEWELLERYWhen item_level is above 0, there is a 5% chance to have a ( (101 + item_level * 3) / 2000) chance to try to make it an unrand.I haven't mentioned it until now, but certain unrands have a preferred depth. Unrands have a weight of 10 normally. Unrands with a preferred depth have a weight of 1 after that depth and 100 normally.Other than that, all unrands seem equally rare.For other jewelry, there is 75% chance of a ring and 25% of an amulet.For rings, grabs a random ring from all non-retired ring types.Stat rings are given + 6. EV given +5. Other rings with bonus values are given + 4.For talismans, a random non-removed talisman type is rolled.In both cases, if more than 0 item_level, there is a (101 + item_level * 3) / 4000 chance of making it a randart.Adding randart properties is exactly the same as it is with staffs.>XOM_GOOD_ACQUIREMENT>_xom_acquirement(Equal chance of WEAPONS, ARMOUR, JEWELLERY, BOOKS, STAVES, WANDS, MISCELLANY, GOLD, MISSILES, or TALISMANSAll xom gifts have their item_level lowered to ISPEC_GIFT which is 350. Otherwise, they would be ISPEC_GOOD_ITEM which is 351. However, these values are often specifically checked for, rather than using the item_level system, so they are not the same.Problem is, I'm having great difficulty caring about the distinction between normal make_Item and acquirement's use of the same functions. And so that concludes all positive xom effects.
hmm
>>554772706It uses plutonium in the version of the game I'm using, I haven't updated since I started the run though.
>>554776413did somebody trample your grass or is it seasonal variation
>>554777670i "watched" it grow while crafting for 3 hours inside the vehicle. hadnt seen that before so i opened to door to look
I think that should do for now, time to let her spend sometime out of the autodoc room.Also, I didn't realise diamond cornea fixed eyesight problems, I thought that was just the telescopic eyes, not that I'm complaining.
Huh. while this will situationally never ever be useful except for me using it once, now, the mech combat suits are UPS's. if you have something in your inventory that recharges from ups and get into a mech, itll recharge from the mechs plutonium battery source
Training arc.>>554776413Is it raised dirt? I don't really know that tileset. You might have a giant worm nearby.
>>554785094its the tall grass you cant see through in the middle of fields
>one night later, still slimedBut you know what, it's fine because they both now have dodge 7.
You guys really suck at this.
>>554798367h-hey i won nethack once cmon
maybe the real wins are the friends we made along the way
>start getting into qud>beguile only let's you control one person at a timeLame
>>554760687I "played" it like 3 years ago after discovering it's still getting worked on That retard should just release the fucking source so someone turns it into an actual game
>>554798617Okay, you're legit, then