-------------------------------------------------------------------------------- 97551ef | regret-index | 2024-09-18 05:41:52 -0230 Adjust blizzard demon flavour, messaging, substance (Lici, acrobat) With blizzard demons having had a formless (and angry) crackling cloud tile for over a dozen years (e970459), they can reasonably count as insubstantial. With c2ce1f5 having changed their shape out of a humanoid state, their Airstrike message has been screwed up (not that it's ever really clear they ever had conventional arms), so they now have a custom. arm / hand name string. With a deeply generic elemental description since their inception in caa05f8 (not a single other demon is even just described as "greater"), they can do with even the slightest bit of emotion-driven flavour in their description and cast messages. -------------------------------------------------------------------------------- 4c57dba | regret-index | 2024-09-18 00:13:34 -0230 Fix an include error 727ca9e forgot to include coord-def.h in mon-clone.h adding a new default argument for clone_mons. Weirdly enough, regular compiliation didn't complain at all about this, probably due to chain includes. -------------------------------------------------------------------------------- 8afca07 | regret-index | 2024-09-18 00:05:44 -0230 Fix the build Forgot to not cast players as monsters in 9f88647. -------------------------------------------------------------------------------- 80eda39 | Lexi Hattaway | 2024-09-17 22:30:39 -0230 Add arrival / ecumenical / ice cave entry vaults (#3984) [Committer's notes: Most of what I'd do here was sent as feedback to the PR and eventually handled by the submitter. The only things I'm doing here are tweaking one of the vaults' header line orders and squashing all of the commits into one. Merges #3984.] -------------------------------------------------------------------------------- 5656a03 | regret-index | 2024-09-17 22:30:39 -0230 Prevent more species dummy monsters from getting Crypt zombies Since the player isn't expected to fight plain deep dwarf, tengu, draconian, or vine stalker monsters in general, making their zombies in Crypt is deeply silly and weird. The former two at least have the reasoning that they were previously regular monsters and got removed from such a position, the plain draconians are weird (holdovers from shapeshifters turning into them)?, and vine stalker zombies raise general questions of "just how alive is their host body" that are difficult to answer. -------------------------------------------------------------------------------- 9f88647 | regret-index | 2024-09-17 22:30:39 -0230 Don't let chaos confuse boulders and bombs (#3654) Most mons_is_conjured spell components shouldn't be confusable in the first place, aside from the vortices already being redundantly pseudo-confused- they all have specific behaviours that don't work when confused or acknowledge being confused. Closes #3654. -------------------------------------------------------------------------------- 727ca9e | regret-index | 2024-09-17 22:30:39 -0230 New Pan demon: nekomata Pandemonium could always do with some more variety beyond the demons one sees shared between summoning from the rest of a 3-rune game, the demonic vaults before Lair branches + entry vaults Depths, and the demons shared with the Abyss and the Hells. Demonspawn enemies and Pan lords themselves reasonably help with this, but there's plenty of hypothetical space across multiple glyphs to fit in more monsters, especially in the danger tier that demonspawn try to fulfill between tier 2 and tier 1 demons. This new feline demon of trickery and disdain, a white "R" in console, is meant to try out a strange conjoining of archetypes- it is a ranged weapon threat _and_ a summoner, simultaneously. In the former aspect, it always comes with a branded ranged launcher (of flaming or draining, to reflect its arson and necromantic mythological capacities), plus Repel Missiles (as we never used in extended) and a demon blade (of either brand) as a fallback. In the latter aspect, it has a high chance to cast a new conjurations spell- "Phantom Blitz", a single-target projectile that deals damage and summons a copy of itself where the projectile stops. The summon cap for the spell is only 2, but each of the clones have their own summon cap for the spell, which should be memorably terrifying if let out of control. This thus has the unique, cruel property of being even stronger than previous monsters that summon-on-hit by instead summoning from a distance with a conjuration, and works as a new iteration on the illusion mechanics of other eastern demons used in Crawl already. In its placement, it joins Pan and ranged Zig floors, gets to appear as a mage in Lom Lobon's floor and in a few guaranteed demonic rune vaults, plus regular Pan floor monster set generation / orb run sightings. Very high level Xom worshippers may also see them rarely- a summoning demon that can get out of control feels entirely appropriate for Xom. Their tile is a modification of Sastreii's current rakshasa tile (with twin tails pulled off of Denzi's felid tiles). The current rakshasa tile is far too cat-like to be any mythologically accurate- a proper rakshasa may be somewhat beastial, but is hardly a full anthromorphic design, and also usually somewhat deformed. (Blame D&D for the tiger associations.) The previously-unused tile by meckryl still emphasizes ornate accessories while fitting a more fangsome and asymmetric appearance, and is now used for the rakshasa earlier in the game instead. The Phantom Blitz spell icon placeholder simply modifies ontoclasm and roctavian's Searing Ray icon. -------------------------------------------------------------------------------- 2b7a90c | DracoOmega | 2024-09-17 15:38:32 -0230 Remove a tiny bit of obsolete code It isn't actually possible to directly create skeletons of active monsters since the removal of Nectotise. -------------------------------------------------------------------------------- fe4f17d | DracoOmega | 2024-09-17 15:38:32 -0230 Update a comment Fountains haven't counted as water since b47861556a4dd18e -------------------------------------------------------------------------------- 4012fd3 | DracoOmega | 2024-09-17 15:38:32 -0230 Fix a rare crash with Dith shadow shot If the player made a ranged attack which killed its primary target, and also triggered a shadow shot while the player shadow was not already out *and* the player was both invisible and could not see invisible, the game would crash. If any of these things was not true, it worked properly. (The issue stemmed from fuzzing for beams near invisible players and how MID_PLAYER was used as the source of the tracer for determining what other target the shadow should shoot at, if it wasn't deployed yet. But MID_PLAYER_SHADOW_DUMMY was added for the specific purpose of simulating a player shadow that doesn't exist yet, so use it instead here. To be honest, I'm not sure why it wasn't already.) -------------------------------------------------------------------------------- fd2f4f1 | brandon s allbery kf8nh | 2024-09-16 21:27:03 -0500 don't crash if shadow can't be placed (ChongLi) If a player is surrounded by monsters to depth 3+, _get_shadow_spots produces an empty vector and the game crashes trying to dereference the first entry. Check for an empty vector first. (https://cbro.berotato.org/morgue/ChongLi/crash-ChongLi-20240908-132253.txt) -------------------------------------------------------------------------------- df7c40b | NormalPerson7 | 2024-09-16 21:00:13 -0500 Don't auto-hide currently unmemorisable spells when picking up books Previously, if you worshipped Okawaru (for example), spells which could not be memorised would be silently added to your library and also hidden in your library. Spells that can't be memorised do not appear on the spell library interface, so this had no actual effect as long as the spell could not be memorised. But, say, if you then abandoned Okawaru, you would find all their previously unmemorisable spells hidden in the library (so that, to unhide and memorise them, you would have to visit the "Show" screen). In practice, this meant many players would just assume the spell was lost forever. Resolves #3994. -------------------------------------------------------------------------------- 4126433 | DracoOmega | 2024-09-16 20:08:03 -0230 Don't boost !magic from Potion Petition by being an oni/Kyrias (Lici) Technically !ambrosia would also be bugged in this fashion, were it possible to actually get it via Potion Petition. -------------------------------------------------------------------------------- ad5dd90 | DracoOmega | 2024-09-16 20:08:03 -0230 Don't generate coglin gizmos with Rampage for Chei worshippers In the same spirit that acquirement respects items your god bans, don't let coglins of Chei invent gizmos with rampage (which therefore rules out an entire whole item, along with its guaranteed properties). -------------------------------------------------------------------------------- e7007fb | NormalPerson7 | 2024-09-16 20:07:53 -0230 Don't gain experience from killing allied apostles Previously it was possible to kill your apostles with e.g. scrolls of poison, not incur wrath, and gain experience from the kill. I can't really imagine players ever wanting to take advantage of this, but nonetheless it goes against the spirit of Beogh so let's prevent apostles from giving experience. -------------------------------------------------------------------------------- c4b1687 | NormalPerson7 | 2024-09-16 20:07:34 -0230 Preserve bribe enchantments for reviving bennu Previously, if a bennu was friendly-bribed in their first life, it would revive as a permanent friendly ally that could follow the player everywhere. If it was temporarily neutral-bribed, it would revive as a permanent neutral monster. Fix this issue by preserving friendly and neutral bribe enchantments upon revival. Sidenote: currently unbribed bennu get a second chance to become bribed upon revival - is this good behaviour? Resolves #4026. -------------------------------------------------------------------------------- 45882a5 | NormalPerson7 | 2024-09-16 13:57:27 -0500 Fix HP/MP not updating when (un)equipping the Charlatan's Orb Make the Charlatan's Orb explicitly update the player's HP and MP in its equip/unequip functions. Also add the Charlatan's Orb as a cause of increased skills on the skills screen to fix the previous text "Skills enhanced by are in green." -------------------------------------------------------------------------------- 55f019e | DracoOmega | 2024-09-16 16:08:21 -0230 Make exploding sheep properly flee from the player (Lici) The dream sheep spawned by kb_xom_exploding_sheep are generated permanently afraid, with the presumable intent that they run away from the player, however they aren't generated being *aware* of the player, which means that they usually have an internal target of (0, 0) and they try to run away from that instead of the player (ie: they just move south-east in general, regardless of where the player is). If any other monster shouted or the player otherwise got the sheep's attention somehow, they would start fleeing in the proper direction, but it could still sometimes be a rude surprise to a low XL player. So let's try to get them moving in the right direction to start with. -------------------------------------------------------------------------------- f9f973b | gammafunk | 2024-09-16 09:18:11 -0500 task: Remove the trunk 0.32 tournament reminder This reverts commit b3de7b944d009aaea3c3fea32e8150c556050f64. -------------------------------------------------------------------------------- bf3d107 | regret-index | 2024-09-15 23:41:53 -0230 Scale Zig sets a marginal amount harder Since the quadratic scaling introduced in 5942d1e seems to have gone on perfectly fine without much noticing for ziggurats in the last tournament, we clearly can do with a little bit more harsh scaling for more floors. Worthy of note: * Tar floors become almost entirely tzitzimimeh and silent spectres. * Dis floors become almost entirely hell sentinels. * Fire floors become almost entirely orbs of fire. * Holy floors become almost entirely seraphs. * Abyss, as a branch that can technically spawn silent spectres, now joins the fun of becoming a floor with explicit silent spectres and a swapping out of liches for daevas (who still smite under Silence). Also, with increasing chances up to a guarantee on the ninth completed ziggurat, Zot traps replace the floor of many (but not all) ziggurat pillar vaults after one has completed more than one ziggurat, so that pillar vaults are more noticeable amongst all the rest of the enemy spam. I do want to still come up with more unique scaling effects for ziggurats, later in this version, but they'll most likely wait until after more Pan and holy work is done. -------------------------------------------------------------------------------- 9310caa | David Lawrence Ramsey | 2024-09-15 20:39:18 -0500 Fix doubled foul flame melee attack damage. The previous doubling of damage was only supposed to apply to foul flame weapon attacks. This partially reverts 90a6e0420698cfe08bc0206b481ef80845585b54. Closes #4000. -------------------------------------------------------------------------------- 01db4b9 | regret-index | 2024-09-15 18:42:45 -0230 Make Ephemeral Shield only activate on invocations that cost anything (Ge0FF) Mostly to prevent instantly renaming one's ancestor from providing free SH over and over again. "Costs" as the mutation description now mentions include piety, HP, MP, cards, gold, max HP draining, Exhaustion, -Recite, and (begrudgingly) sacrifices to Ru. It's a weird list, but for the most part it should be fine for costing something or another preventing most invocations spam anyway- the only real cost here is losing Wu Jian wall-jumps, and Serpent's Lash is already an invocation that can highly value getting some shields afterwards. (I'm not greatly worried about this still counting allies recall, as I mentioned in 9303715. Wasting the turn for 7 SH is unlikely to be of much value versus either walking away from enemies or swapping behind one's allies, and the mp cost is not insignificant when the gods with Recall also have MP-costing abilities of much higher value between Smiting, Torchlight, and Idealize.) (There _might_ be some arguing about cards, Exhaustion, and Recite all counting. We'll see how this feels out over the long time it takes for non-Xom non-Jiyva characters to even see the mutations.) -------------------------------------------------------------------------------- 433eeba | regret-index | 2024-09-15 17:32:41 -0230 Let player berserk give immunity to fear (DracoOmega) Berserk monsters are immune to fear when berserked (as is obvious with early black bears), but players aren't (and a comment has been wondering about this discrepancy since c6d2f85). Cause Fear is a relatively rare effect only used on about four monsters, so it's not too significant a monster nerf / berserk buff (and those monsters all either meaningfully summon or debuff from a distance, so there's still some danger), but it adds a little more consistency in a relatively player-generous fashion. (Also of high importance: Crawl doesn't show the fear aura that well when one is also berserk, and it'd be a massive headache to try to make it do so. Happy dual solutions.) -------------------------------------------------------------------------------- b1b5fd0 | regret-index | 2024-09-15 17:32:41 -0230 Marginally nerf ball pythons After the major constriction rewrite of 9adf0d1, ball python have finally started to successfully tutorialize on the existence and power of constriction for D:1. This is good! It means there's a monster with a gimmick that'll take a fair ways longer to be seen again, that can allow experimenting with the gimmick much earlier, and which stands out amongst other D:1 and D:2 enemies in its support + damage role. However, they're also a noticeably increased threat on D:1, which doesn't really need the bump upwards- between the two tournaments, they moved from the 43rd killer to the 13th. A good promotion, but possibly a bit much for one. As such, I'm nudging down their non-constriction damage and their EV very slightly, which should make it easier to kill them when there's other enemies around, but which should also still let their newly finally threatening constriction be somewhat noticeable if they're not focused down on. -------------------------------------------------------------------------------- c2ce1f5 | regret-index | 2024-09-15 17:32:40 -0230 List which monsters can open doors There are a number of monster tile bodyplans that would seemingly preclude the ability for a monster to open doors, yet some of those monsters still can in practice. Sun demons, ugly things, tentacled monstrosities and starspawn, glowing orange brains, various weirdly-composed golems and wraiths (including putrid mouths), Gloorx Vloq, Lom Lobon, and orb guardians make up the most obvious candidates here. It would be a significant nerf to make many of these unable to use doors (and console has gone on by knowing e.g. most Xs and all tiered demons can use doors). Instead, this could be addressed by UI means somewhat directly. This comes with a variety of different attempts to address this: * Every monster that can wield equipment already has the ability to open doors. Doors descriptions (outside of runed and sealed doors) further emphasize this fact, as well as mentioning some monsters that don't use equipment but can open doors. * Monsters that could have equipment but haven't found any (crimson imps and iron imps being the obvious stand-outs), as well as monsters that only have MONUSE_OPEN_DOORS, now mention it amongst the other travel lines. To try to make the nonstandard-appearance door users stand out, monsters that lack a humanoid shape have a conspicuously different properties line than normal. * (Ufetubi are now MONS_SHAPE_BIRD (they're closest to penguins), sun demons are now MON_SHAPE_ORB (matching foxfires and orbs of fire), and blizzard demons and putrid mouths are now MON_SHAPE_MISC (matching worldbinders as hands in clouds). This should only affect messaging and not anything else.) * Jellies, Xtahua, and the Serpent of Hell also explicitly mention they can eat or crash through doors, as well. * To try to reduce the number of description lines here, don't bother listing off if a monster could survive in water or lava if it already flies- currently, there's no way to ground enemies without outright polymorphing them anyway. If there are sufficient complaints about excess monster information displayed here versus other more important bits, then some of this can be reverted. I'd like to keep the unusual door interactions and avoiding flying + water travel reductions, regardless. -------------------------------------------------------------------------------- 1d4d42d | regret-index | 2024-09-15 17:32:40 -0230 Prevent polymorph and shapeshifters from accessing base tengu Plain base tengu monsters were used for a while as regular monsters in making classed tengu into regular monsters, but were cut for being far more plain and weaker than comparative naga or merfolk. As such, they never got the M_NO_POLY_TO tag other base player-species monsters got, which I'm fixing up here- if it's not already a branch spawn, the only player species monster that's allowed to spawn normally (i.e. not as part of vault decor) are humans. -------------------------------------------------------------------------------- 7901554 | regret-index | 2024-09-15 17:32:40 -0230 New spell / unrand tiles by Sastreii, some unused tile reorganizing New great tiles for Permafrost Eruption, Magnavolt, Hellfire Mortar, Fulsome Fusillade, the hoarfrost cannon and hellfire mortar monsters, and the unrands Brilliance + the Sword of the Doom Knight. Most of the previous tiles were moved to the unused folder, and I've now now moved many old spell tiles from the unused/gui folder to their proper unused/spells folder while tweaking said tiles. -------------------------------------------------------------------------------- 9a799e1 | regret-index | 2024-09-15 17:32:40 -0230 New decoration: cache of baked goods A follow-up to 831329d in terms of providing more options for civilized and lived-in housing flavour, though with some different angles here. These try for species' culture flavours rather than cultivars of fruit or given animal meats, and they're creeping into spriggan / centaur / klown / V vaults more than caches of meat go towards carnivore species and caches of fruit go to various old fruiting plants / trees. As with the other food caches, Xom also can spawn or shuffle them around, and they use the same food_snacking_frequency option added in 9f76b2e. This also gets to mean the triumphant return of spriggan bakers. Their tiles are by ploomutoo, edited slightly from 1a665c4 to have more outlining as helps with lighter background tiles. -------------------------------------------------------------------------------- 5c82c18 | regret-index | 2024-09-15 17:32:40 -0230 A quick distribution of some new decorative tiles * The yak with flowers on it is now part of the Elyvilon peaceful quokka vault at further depths and one of the more grassy bazaars. * The bailies with orc warlords now get quick wall tiles dedicated to Beogh, using one of the Beogh wall banners. * A few vaults meant to be a nice, idyllic home or garden get the gardens with cobblestones around them. * A few Vaults and Zot vaults sample from the newer fountains. Ideally, I'd like to use different fountain tile bases per branch, but this would need more than just palette-adjusted drawing efforts for dry + eye fountains- probably would be good to ask other artists for such. TODO: Write up decorlines as was done for food and fountains for different types of flowers between each branch, add a variant recolour or two (and use the version without the cobblestone in Lair), then have gardens be a new kind of walk-on-for-commentary terrain type? -------------------------------------------------------------------------------- 76a730d | perci | 2024-09-15 17:32:39 -0230 Added a batch of 44 vault decor sprites (#3992) "including baked goods caches, flower pots, banners, fountains, and a mop" [Committer's notes: Pretty great tiles that'll help spruce up a large number of vaults and portals and branches. Squashed the three commits together, put the wall tiles into their own folder, made one additional variation of a flower garden tile going into UNUSED for future plans, and updated some comments + moved it to the right position in the text file. Following commits will make use of a number of the more straightforwardly usable tiles. Not entirely sure how to handle some of the others, but the overall set can be useful for other devs in the future. Closes #3992.] -------------------------------------------------------------------------------- fe9c01f | regret-index | 2024-09-15 17:32:39 -0230 Comprehensive updates to pitsprint This was a bit of an experiment to see how it'd feel to try and make one of the most flexible sprints (due to its game-wide monster tiering system) catch up to the modern day, after the decade since any sprints last got any serious work on them. It took far more than I expected, so I'm not in much of a rush to update much of the other's. * Half of Crawl's development's worth of enemy additions have been added to the Sprint's monster tier sets (that are mostly bound solely by power, not theme), which should heavily increase enemy variety. * Through the complete revising of the monster tier sets and the addition of one more monster tier, the power curve of the Sprint is more generous early on and more lethal later on- of particular note, the Storerooms, the Metal Vault, the path to the Armoury, and the Steel Vault have less spiky difficulty than prior, while the iron rune, golden rune, and Orb of Zot are all even more heavily guarded than they used to be. People like shrikes, right? * The Storerooms contain one randbook at the end (so spellcasters aren't forced to take a small number of gods to get any spells between their starting book and the Elf:3-styled Coven), and several lower-level talismans (so Shapeshifters aren't utterly hopeless). Each rune contains increasing amounts of scrolls of acquirement underneath them, also, for a splash of possibly-actually-worthwhile variety amongst the excess of later loot. * The labelled chambers between sections are now distinguished from other doors within the vaults and pits by being opaque runed doors. This should help make them stand out more for the sake of examining them to see the difficulty order one can take throughout the Sprint, and also help them stand out better in tiles. * The Crystal Vault is now the Titanium Vault, since it was never actually made of crystal walls in the first place and the Coven actually did in fact have Crystal walls surrounding it. -------------------------------------------------------------------------------- 1e7691d | regret-index | 2024-09-15 17:32:39 -0230 Add a dozen-plus mythological randart armour names The myth sources in question are mostly representing relatively sparsely-acknowledged continents and regions in fantasy- Africa, South East Asia, and further parts of South America. Maybe some day a game will directly feature rainbow-furred lightning anteaters or basket-headed hyenas, but for now, more references are always good to send some slim number of players off learning more for. -------------------------------------------------------------------------------- 626d331 | regret-index | 2024-09-15 17:32:39 -0230 Give runed translucent doors actual descriptions (CanofWorms) The commits adding clear runed doors and making them spawn regularly throughout the dungeon, 546a308 and b3145dc, both didn't actually give them descriptions, I'm just combining the regular translucent door and opaque runed door descriptions here, which should be functional enough. (On a tangential note: we probably just make regular translucent doors and translucent rock / stone walls actually made out of glass, rather than mentioning magic wood for the former and being so wordy for the latter. Glassblowing is thousands of years old, to the point of being older than iron smelting, and we already have trees for "things players could expect to destroy without much effort but instead have to use specified means to do so". This would probably have to come with making glass eyes not LRD for an extra large radius, though.) -------------------------------------------------------------------------------- c186b92 | regret-index | 2024-09-15 17:32:38 -0230 New holy monster: Fravashi Whether or not the full longterm plans of a holy rune and a shortened rest of extended follow through, there's still some reasonable value in adding and keeping around other holy monsters. For over a decade, we kept around a unique encompass vault in Pan that was supposed to test and showcase holy monsters, only for six out of twelve non-boss monsters to all have been cut for various strange mechanical experiments. It's hard to say, however, that Pan should lose the vault- with nine different runes dedicated to partially or fully demonic realms, there's a lot of obvious value to having a vastly different theme to varying games up with. As such, on occasion, more holy monster work will be followed through. Fravashi are Zoroastrian guardian spirits both for and from heroic mortal spirits, and here serve as the fourth simple humanoid(ish) 'A'ngel between angels, daevas, and cherubim. (Aside from fitting the martial angle TSO innately provides for humanoid holies in this game, they also continue to attempt to broaden the sources of holy monsters beyond Christianity, if somewhat ironically through using a faith angled to the opposite of daevas.) They lack angel speed or daeva tower shields and smiting spells, but as both embodiments and guides of moral champions, they represent a relatively straightforward, inverted component of holy worship in Crawl- they summon a single living warrior to their cause, which in this case is a deep elf blademaster or a spriggan defender always granted a holy short blade or two. Most non-unique summoners in Crawl try to be dangerous by hiding among multiple summons or plying on much later enemies than one might fight otherwise, but these should serve a unique purpose by doing meaningful damage from behind their summons with a two-handed holy or electrocution polearm. (There's a neat incidental theme across the weapon-wielding holies that they all have next to no randomization in their weapons and emphasize different weapons each, which this continues to invoke.) Much like pearl dragons in their prior high-damage state and ophans with their new extremely powerful support status, these are not meant to show up in almost any 3-rune game aside from the occasional vault already using angels and daevas out in the open. They thus are only set to appear in sparse late-game / extended / sprint uses of holies, and do not appear with TSO's summoning invocation. Their placeholder tile is a mix of the deep dwarf artificer tile made by Coolio, the phoenix tile made by Porkchop, and an old dwarven buckler tile by roctavian. Their Summon Mortal Champion spell icon combines CanofWorms's Okawaru weapon acquirement, the standard summoning circle, and a spriggan defender coloured slice of roctavian's deep elf blademaster tile. -------------------------------------------------------------------------------- c637f1b | regret-index | 2024-09-15 17:32:38 -0230 Adjust some portal monster population tables This mostly just affects scrolls of summoning, Kiku's wretches, and the rare Xom action, when inside these portals, unless somebody ends up using Shadow Creatures casters in any of them. Still, it's good to keep an eye on them ever-so-often whenever the portals themselves are changed. * Since a couple of Sewers have dart slugs as of e431911, they've been added to the list to reduce the chances of the high-roll crocodiles and take some weight off the not-very-thematically-appropriate quokka. * Ice caves haven't had non-summoned ice beasts in them since cc58b11, so their notably high weight in the list is weird. They have given most of their weight over to adding in wolves at a low weight, plus increasing the odds of the highly appropriate (and readily findable) polar bear. * Volcanoes only have one layout with toenail golems, so their high chance to place is relatively quite weird. Their weight has been reduced down slightly with obsidian bats and fire crabs, and given over to the iconically-present salamanders and fire elementals. -------------------------------------------------------------------------------- cc540e3 | regret-index | 2024-09-15 17:32:38 -0230 Unite jellies and water elementals under M_AMORPHOUS, tweak other checks There's been some consternation for a while that water elementals and elemental wellsprings, as entities composed of liquids, should have the same immunities that jellies get (constriction, webs, nets as of 4fe0c3d). There have been a few requests to make them insubstantial (c.f. PR #3032), but I would prefer to instead unite them with jellies in a new flag that can reduce the number of jelly genus checks, instead of granting the water-formed enemies immunity to petrification or implying that a monster which can entirely engulf a player also has no actual substance. This commit adds the M_AMORPHOUS flag, shared by both jellies and water elemental / wellsprings. This gives the latter web, net, constriction immunity, and Shatter resistance as the former does, and hopefully should feel a bit more logically consistent while cleaning up a weird check scattered across the code base. This commit additionally teaches the monster information bots to display insubstantial and amorphous flags, as is useful for offhandedly checking net and BVC immunity. (This commit also removes the barbs immunity from jellies. If they'd be immune to barbs because they can force the barbs out of themselves, then the same can be said of all sorts of other physical projectile states, like Frozen. The committer of dd4bd0d agrees with doing this.) FIXME: Borgjnor's Vile Clutch always listed the hit chance as 100% for insubstantial enemies, and continues to display it for amorphous enemies. It's a very silly targetter since it's always 100% or 0%, but it should show the latter for those immune to it. -------------------------------------------------------------------------------- 5cebcaf | regret-index | 2024-09-15 17:32:38 -0230 Yet more Xom and tension tweaks * Xom polymorph now cannot target monsters before XL 4 if they're over deep water or lava, as the attempt to prevent them from drowning can easily produce D:1 killer bees or ynoxinuls. Xom polymorphing hostile monsters up in HD before XL 10 now also comes with a consolation prize of a malmutate, to make it slightly less horrendous to handle very early. * Bazaars have been randomized some more to mildly weaken them; I had originally designed them anticipating it to be far more rare that what turns out in practice, and them appearing at all is already plenty of a buff to Xom enough they can take some downtweaks. * Manuals no longer extra bias to be evocations or shapeshifting, * Spellbooks have a fifth potential spell in each school but are now capped at two spells available per book, * Randart jewellery has a small chance to be randart amulets of both regeneration and faith with the same downsides, and no longer shares the exact same downside in each bazaar, * Xom bazaars contain only two of the three wands and only one of berserk potions, ambrosia potions, or silence scrolls, * Orbs and scarves have a new joke dud option, * and Xom bazaars past the first have been made yet further rarer, while somewhat more gold is recquired to access bazaars at all (which hopefully should also delay them until after seeing Orc.) (The talismans are untouched mostly in anticipation of the future version's development hopefully helping with shapeshifter variety needing more than it currently does in general. The reduction in chance to get a manual of shapeshifting probably reasonably nerfs this enough for now.) * Xom draining now is halved (draining 3.25% instead of 7.5% of max hp) if one is very low level or already any drained unless Xom is bored or wrathful, as there's some unfun death spirals to getting heavily drained repeatedly and it's a lot less unique than many of the other ways Xom can try to kill the player. * Since the demonic plant / toadstool ring is meant to be an relatively positive action, Xom now checks if there are monsters with smiting attacks that aren't at least two squares or closer to the player, and needs there to not be too many as long scaled versus one's XL. * Sleeping and feared monsters now count for an notably small fraction of their experience value for the sake of tension assessment (instead of counting as absolutely zero threat). Sleeping monsters in sight are unlikely to stay sleeping for long, and feared monsters can turn around for all sorts of accidental or terrain-based reasons. -------------------------------------------------------------------------------- 0f4f676 | regret-index | 2024-09-15 17:32:37 -0230 Further adjust Cheibriados wrath and haste response Cheibriados wrath uses tension very strangely with a both fine-grained yet randomized fashion. Since tension is useful only as an extremely loose assessment and awkward to ever calculate versus given threats, I'm going to heavily simplify the check, so it will hopefully reduce the need to keep an close eye on this wrath whenever adjusting tension in the future. The five different tiers of mixing together effects across Cheibriados's current wrath have been reworked and combined into three instead. * If there's almost any notable tension: * current hp >= 75% of your max hp: inflict sleep. * Otherwise: remove haste plus inflict slow. * Otherwise: drain stats plus make an extremely loud noise. This is still dynamic in its own straightforward fashion, hopefully: bringing in more enemies while exploring, threatening the player without just using direct damage while in combat in a fashion that can technically be survived, and statdraining the player heavily if they try to wait it out in a closet. To disincentivize the last of these, stat drain has been further pushed up in severity. (Cheibriados wrath has been repeatedly heavily changed, perhaps because the time theme is one of the loosest in available themes for malevolent effects- wrath once contained miscasts, other god wraths, random item curses, and so on and so forth. God wrath doesn't inherently need the most variety as long as it's actually reasonably threatening in a distinct fashion, though, as can be seen with Hep and Ash and Ru, so it should be reasonably fine in this very compressed state.) Also in this commit: Cheibriados now prevents potions of haste from ever actually affecting the player, rather than forgiving them only if they drink it unknown and throwing them into penance otherwise. This is mostly meant to makes matters more consistent with Chei's prevention of haste from chaos and berserk, as well as with Okawaru's prevention of using ally summoning scrolls. In the future, it also helps with probably just making all penance just involve removing god passive benefits and invocations as the good gods and Beogh do, as piety loss to a sufficient degree and said restrictions can be plenty enough downsides, and it'd make god penance fairly more straightforwardly parseable for all gods. -------------------------------------------------------------------------------- 0666555 | regret-index | 2024-09-15 17:32:37 -0230 Adjust and replace some unrand tiles * Implement ploomutoo's new replacement for the toga "Victory" floor tile, extracted seperately from PR #3992 since the rest of that PR is about a different topic entirely. Annotation for future reference: it's meant to represent a toga praetexta. * Brilliance and Punk now have actual acid brand and foul flame brand icons, the former mixing together snw-0's modifications of ontoclasm's electrocution and holy wrath brands, the latter mixing the same snw-0 and ontoclasm sourced exploding missile / immolation scroll icon with UltraViolent4's corroded status icon. (Previously, their brand icons generated by bleeding over into the old list of missile icons, marking foul flame as an electric weapon and acid as an exploding weapon.) -------------------------------------------------------------------------------- 8966e59 | regret-index | 2024-09-15 17:32:37 -0230 Fountain decor messages + new options to set their frequency Since the fruit and meat decoration messages have worked out reasonably well, we clearly could expand this notion to the other already-present breadth of entirely-decorative features: fountains. Since there's not nearly as many varieties of water that are of interest compared to different varieties of fruit and meat, these messages mostly take on an entirely different tact- they instead differ by one's worshipped god. The gods already serve quite directly in Crawl as some of the most prominent personality and flavour throughout the game, and they can lend some reasonable (and potentially mildly controversial) characterization to the otherwise featureless, faceless adventurer all characters serve as. Some of these gods surely have very obvious influences and focuses on their worshippers, after all- shouldn't a Makhleb worshipper care in some way about a fountain of blood? These messages come with yet further experimentation in flavour lines. Many messages are only provided when there are no hostile enemies in sight, and the chance differs based on said hostile presence: 10% if they're present, and 40% if they're not. (Much like as was done in 9f76b2e, this comes with a new option: "fountain_line_frequency".) This also comes with a brief flavour nod (but hopefully not much chance of confusion) back to sparkling fountains being differentiated by having miniscule magical effects. Not all god and fountain combinations come with unique lines, but there's enough cute little lines written up that it should be a good start. Thanks to Darby, staticshock, and nicolae for additional message ideas, and DracoOmega for both additional messages + proofreading. -------------------------------------------------------------------------------- ae9bbc2 | regret-index | 2024-09-15 17:32:37 -0230 New decorations: fountains of eyes Fountains have been heavily established for a decade as entirely decorative features, which is both beneficial (parses immediately as a sign of civilization or ruin, doesn't have to interrupt the hyperfocus Crawl has on combat) and detrimental (they usually immediately fade into the mental background). Since we've already got melodramatic features like fountains of blood established for many years, we might as well try out more weird materials that can be a little more memorable. Fountains of eyes recontextualize a never-used tile submission for great orbs by pubby in Mantis Issue 9606. They spawn solely in the Abyss (replacing fountains besides blood when the Abyss layouts choose levels one has been through before) and a few vaults elsewhere with explicit themes based on either flesh, organs, or shapeshifters. They should probably help Crawl continue to feel memorably weird. (As to why they're not just vault renames of fountains of blood, a follow-up commit will actively use the differences between the two on a lower scale.) Possibly in the future we may get further unique fountain options? -------------------------------------------------------------------------------- fe3b5c5 | regret-index | 2024-09-15 17:32:36 -0230 Partial transitional vault review A fair number of changes I noted down during feature freeze and the 0.32 tournament, to nerf and tweak a number of vaults. Worthy of note: * beargit_hepliaklqana_dungeon_heroes only uses wands of polymorph on D:3-4 and atropa darts on D:5-6 instead of wands of charming, as it's far too easy to get completely locked down if one doesn't have much luck with potions of curing early on due to monsters zapping wands very frequently due to spells (the brigand even has higher chances to confuse than Sigmund does). If wands of charming get a different player effect later on, then these can be returned. * Moved _guarded_unrand_wrath_of_trog to Elf instead of D:13-15. If the idea of guarded_unrand vaults is to use out-of-depths one can leave for later or reasonably run away from, then being able to autoexplore into three spriggan berserkers on D:13 breaks this rule. * serial_library no longer generates Sif Muna altars before D:8, in correspondence with other early non-Portal altars being heavily curtailed. * The old Forest end Depths vaults now no longer use any deep elves, to further distance itself from Elf and Vaults using deep elves. * One of the_grid vaults has been tweaked so it no longer places ancient liches on D:14, as we've mostly stopped doing without the use of runed doors. * Gauntlet monster sets have been repeatedly tweaked over, as they were never adjusted after the buffs to glowing orange brains. The highest non-Minotaur killers in the portal by a noticeable statistical margin have been somewhat nerfed (death scarabs and death drakes), while some of the least common killers have slightly more company (arcanists / occultists, tyrant leeches, shadowgasts, and chaos spawn). * shoals_end_grunt_garden now places slightly more plants and has fancier non-default wall and floor tiles, to hopefully make it fairly more obvious actual vaults are still being placed on the last Shoals floor. -------------------------------------------------------------------------------- 6ec11c1 | regret-index | 2024-09-15 17:32:36 -0230 New Xom action: hyperbuff a (low HD) ally This new effect has multiple different fronts of interest. It tries to experiment yet further with monster effects not easily available for players otherwise (e.g. invisible + radiating + mirror-damaging allies), it tries to have Xom do more obviously interesting things according to one's build (as summoners and necromancers may notice this more often), and it also just has the "Xom could do absolutely anything" wild factor expanding past the current status effect tricks to instead hone down onto over ten different buffs being thrown around at once. This very rare good Xom effect looks for rather low HD allied monsters present, scaling with one's experience levels and extended runes, and falling back onto creating some relatively mundane allies otherwise. Once there's at least something to target, Xom then gives it 20-40 turns of might, haste, invisibility, brilliance, repel missiles, resistance, regeneration, increased Will, toxic radiance, damage mirror, swiftness, and a full heal. The chosen ally is still reasonably likely to die, in all honesty, but what a glorious death it will be! (While the scaling is quite slow, it will at least usually care for some zombies and Xom-granted allies both across the length of the game. It's fairly less likely to happen for those not running around with allies, though.) -------------------------------------------------------------------------------- 0fe423d | regret-index | 2024-09-15 17:32:36 -0230 Various small extended / recently-changed monster adjustments * Arcanists have felt relatively weak in their uses relative to old wizards or the shoved-downwards occultists, despite the multiple spell revisions they've gotten, while occultists continue to be quite harmless in Depths. The former has one more HD, and both now have a bit more health and evasion, so they can live long enough to actually do any of their collective gimmicks. * Bennu have a very specific mechanical purpose (punish undead players who otherwise don't care about most other Tomb threats with a fast holy-branded monster that's difficult to kill) which they're not very impressive at executing in practice. To make them stand out more as a melee threat in the branch and to actually function as a threat undead characters worry over, their three attacks have been consolidated to two and the bulk of their damage is in the holy-branded first attack (which should then multiply to deal fairly more holy damage). * Iron golems now have slightly less health and defenses- while they still serve a reasonable role as extremely difficult to break in the middle of ambushes across Dis, they can have enough to be relevant without also being extremely slow to kite and kill once they're inevitably the last enemies alive. Since it's nice that Dis is one of the most dangerous places in the game, as compensation crystal echnidas are now speed 13 to try and actually be any relevant alongside the next change. * Crystal guardian crystallizing shot is rare to actually hit in practice compared to their prior rebounding fire / cold bolts, both dealing fairly less damage and being newly blockable. (While Vitrify is quite dangerous, they aren't guaranteed to actually live long enough to capitalize on it.) Since they're no longer late D out-of-depths, they can afford some direct buffs to try and approach their old threat levels. Crystallizing shots now are more accurate, more damaging, and more likely to apply Vitrify, while crystal guardians themselves hit mildly harder. -------------------------------------------------------------------------------- a98c639 | regret-index | 2024-09-15 17:32:36 -0230 New mutation: haste allies when injured Another mutation meant to be exciting in differing ways for differing builds yet balanced out by being rather build specific. This two-level mutation uses the Mark of the Celebrant rules (triggers at 50% health, comes back only the next time one reaches 100% health) as are reasonably reliable and straightforward enough to parse for something far less directly destructive- the spilling of one's time-warped blood instead hastes the highest HD allies in sight, two per level. This has obviously extremely strong consequences for summoners and necromancers, but also having allies in the first place means that whoever is damaging the player by a fair bit is also ignoring those allies to do so, which is dangerous enough that it will only somewhat help out the given situation at hand. The permanent-ally gods obviously reasonably benefit from it, though Yred gets a lot more than 2 or 4 allies and Hep's ancestors eventually will haste themselves anyway, while gods with big ally-summoning invocations like TSO, Nemelex, and Fedhas still see a little bit of unique interest compared to relatively plainer mutations. (This mutation is completely suppressed by Chei, in the same way Okawaru suppresses demonic guardian, of course.) The extremely placeholder mutation icon combines ontoclasm's Sublimation of Blood and hasted status icons. -------------------------------------------------------------------------------- 9303715 | regret-index | 2024-09-15 17:32:36 -0230 New mutation: spell / invocations shield Following up on the spirit of the previous commit trying to add positive mutations dependent per-build for the sake of adding more energy and excitement to the overall pool, this good mutation is a touch more complicated but should still be relatively straightforward. Casting spells gives the bearer +7 SH for a turn, and using invocations gives the bearer +7 SH for 2-4 turns (with the duration reset for each invocation). This is meant to parallel several other conditional defenses as we've built up over the years (acrobat's evasion when moving or standing still, protection brand and ParryRev's AC when attacking with one's weapons), while avoiding those established exact means of defense or condition. (It does share the same number and multiple-turns status of protection brand, though). It also shouldn't overlap too much with large bone plates (highly conditional for several builds, with piety and mp limits, yet the single level gives more than the first two levels of bone plates), and it no longer collides with TSO's divine shield. As a bonus, invocations aren't really a space explored with mutations outside of early Forlorn experiments, and this starts out exploring that space with a relatively safe mutation. (While there's some jankiness about using it for Recall abilities, this still costs MP and also lasts so little time one probably could have just tried to reposition around allies in most of those circumstances more than just repeatedly using the ability standing in place. Everything else costs at least something innately.) Hopefully this should be reasonably interestingly variable with differing characters without being too much to keep track of on a regular basis (at least, not any more than protection and acrobat themselves already need). The mutation icon uses Ontoclasm's Divine Shield icon with different magic and invocation colours. -------------------------------------------------------------------------------- 9235b1e | regret-index | 2024-09-15 17:32:35 -0230 New mutation: efficient magic Random mutations have had a rocky history across Crawl, with very uneven high rolls and low rolls now long past (like changing movement speed in either direction, much more minor AC and stat changes than currently, and various troubled experiments with a multitude of different potions all held back by there being too many minor mutations). The current state of positive mutations and singular potions of mutation at this point is at relatively stable if boring equillibrium- the proportions of meaningful defensive benefits and net positive benefits versus effects that can be easily ignored are pretty generous in the player's favour, though a variety bad mutations are far worse (and should be far worse) than even the best good mutations are any good. On and off during 0.33, I'd like to try and make this state of affairs more exciting with relatively simple build-specific mutations to add more spice to the overall mutation pool. Forcing people to engage with the mutation system via singular potions of mutation might as well have more exciting rare high-rolls involved, and Xom in midgame / lategame shouldn't mostly make characters overloaded with resists. Whether or not they'll survive the years, I don't know, but as long as they're all relatively conservative effects, at least some fraction of them should probably survive and already be restrained by the lack of control on the overall mutation system. This mutation at hand... is actually quite simple as new effects go. In the same vein as Coglin gizmo Spellmotor, it flatly reduces the cost of spells (but can't go below 1 MP) equal to one's mutation level (which has 2 ranks). Unlike Spellmotor, it doesn't come with free random melee swings or the potential to go even higher, but in exchange being untied to melee attack has obvious benefits for a variety of conjurer builds. Compared to adjusting mp capacity, the flatter effects are excitingly stronger earlier in the game (spells are lower level and one has less total mp) than later on (a lot more mp-efficient spells are open and it discounts proportionally less). Also, it doesn't help out invocations nor guardian spirit (as shared with wild and placid magic). It _is_ quite strong with other stacking mp saving effects, but beyond the limited count of brilliance potions, getting both in most games is decidedly unlikely anyway. (There might be more complicated ways to better approach this overall discount space, but it's probably fine to start simple here.) The mutation icon recolours ontoclasm's Channel Magic icon with Sastreii's head-slot mutation icons. -------------------------------------------------------------------------------- a31db6c | regret-index | 2024-09-15 17:32:35 -0230 Reflavour, retheme, rename - quicksilver oozes -> void oozes Expanding the mechanics and flavour of quicksilver beyond just a rare dragon and its draconian counterpart over the course of versions and years has gone onwards somewhat awkwardly. Quicksilver oozes were added in 0.27 (433ef79) and didn't use the exact dispelling effects mechanism when there was only one other quicksilver monster around, which would have been fine by itself. It became somewhat awkward, however, when quicksilver elementals were added in 0.28 (e42411b) and wands of quicksilver were added in 0.29 (5a96994), making there be a total of three explicitly quicksilver-themed items and monsters that dispelled plus one monster that didn't. While there's almost no quicksilver elementals in 3-rune games without the intervention of Xom these days, which helps avoid confusion between oozes and elementals, it's still a weird state overall. As such, after some previous bikeshedding on the topic, they are now named void oozes, and have a much more explicitly antimagic emphasis in their description. The new tile, new flavour, and new name all do not, however, actually change their stats or mechanics. I'm not sure what I make of their current weird position, where they're notable threats in early portals and rare vault uses but common fodder throughout their native home of Slime. It's probably fine for now. Potentially their new starry name and appearance flavour could also encourage more abyssal and ruins themes without relying so heavily on monsters meant to stay in the Abyss, which is also good for keeping monsters more reasonably bounded per-branch. Their new description is by DracoOmega, and their new tile is by pianoman523. -------------------------------------------------------------------------------- 8750c69 | regret-index | 2024-09-15 17:32:35 -0230 Make Xom's altar tiles a bit more colourful In console, Xom's altar cycles through every colour available. In the altar's description, it mentions it shimmering through every possible colour. In tiles... the altar has been an iconic greyscale face the entirety of its existence. I'm not really sure why there has never been any attempts at colour for it whatsoever. To make the most prominent chaos god in the game more chaotic, I'm tweaking the tile as a compromise- the base changes colours with every different frame, but the face remains grey. These colours, naturally, are based off of the chaos clouds' colours and mixing between them, though with mild desaturation. Hopefully it shouldn't be too eyesearing to rest alongside, any more than other older chromatic tiles like Nemelex's altar or the bigger frame-per-frame changes like Makhleb / Hepliaklqana / Sif's altars. If it _is_ and feedback asks something less conspicous, I can try a second approach of coloured sparkles akin to what Zin and Nemelex altars use instead. -------------------------------------------------------------------------------- 67b0905 | Kate | 2024-09-15 17:26:14 +0100 Mark milestones when buying runes (grothendieck) Buying items in shops always creates a note and then flags the item to avoid creating duplicate notes, but that flag then also caused milestone recording to be skipped. Historically this wasn't an issue because the only items that need milestones are runes/gems/the Orb but at least one of those is now purchasable in a rare case! -------------------------------------------------------------------------------- 460ee30 | regret-index | 2024-09-14 21:25:52 -0230 Don't spawn abyssal stairs on Abyss:7 (Shadow_Rider) No accessing Abyss:8 just yet, anyway. -------------------------------------------------------------------------------- ff00106 | regret-index | 2024-09-14 21:25:52 -0230 Put a spot for the Serpent of Hell in tar_mu (Lici, #4027) The encompass vault was missing an actual place for the Serpent of Hell's set-up function to look for and spawn the unique in question. Closes #4027. -------------------------------------------------------------------------------- 5574597 | gammafunk | 2024-09-13 16:47:33 -0500 feat: Add monster intelligence to clua Monster intelligence (e.g. "Human" or "Mindless") was missing from clua even though it's present in the UI. This is a minimal implementation that simply returns the standard description string of a monster's intelligence. This is technically a feature, which we wouldn't normally add to stable/tournament, but it's only related to UI and arguably a bug that it was missing. It's also very minimal and has been tested locally. (cherry picked from commit cc8dab42f0033f0eb96e1de10bcbeea62793514c) -------------------------------------------------------------------------------- 9043e79 | Samantha Tobias | 2024-09-08 04:35:42 -0230 fix: "Ran out of altars for temple" error (thirdmesn, Vajrapani) (#4005) A few temple vaults had a temple_altars_X tag where X was lower than the number of altars in the vault. This caused the "Ran out of altars for temple" error during the creation of a new character/dungeon. This commit fixes the issue by increasing the tag values to match the number of altars in the vault. This change results in temple vaults with 22 and 26 altars, instead of the previous max of 21. Note: Does not update temple vaults with a variable temple count due to substitution removing the superfluous altars in the vault. Resolves #2810 Resolves #3846 [Committer's note: actually tweaked the initialization temple function to allow the 22-altar temples to be picked. This _does_ slightly raise the average number of gods compared to 1659c76, but it's probably fine now that more gods are attractive to more characters in 0.32. Also, left a few more comments around. Closes #4005.] -------------------------------------------------------------------------------- 7029d37 | gammafunk | 2024-09-07 21:04:49 -0500 fix: Don't nest the clua monster spell table The implementation of the clua monster info spells() function was unconditionally putting the array of spells in another table, probably to handle the case when a monster doesn't have spells. This commit uses this (empty) table only in the case when a monster doesn't have spells. -------------------------------------------------------------------------------- e99af74 | DracoOmega | 2024-09-06 21:59:22 -0230 Add Alejandro Ramirez to CREDITS.txt -------------------------------------------------------------------------------- 1545d69 | DracoOmega | 2024-09-05 15:29:20 -0230 Fix gravitambourine being able to move orbs of destruction Since virtually nothing in the game can act upon these directly, I don't think this should be able to either. -------------------------------------------------------------------------------- fa4ca67 | DracoOmega | 2024-09-05 15:28:53 -0230 Fix octopode physiology (dilly, rypofalem, ge0FF) Their species_flags were split between two blocks and seemingly only the second was having any effect. -------------------------------------------------------------------------------- 321b5f0 | Alejandro Ramirez | 2024-09-05 15:13:46 -0230 Ensure only actual spells trigger SpellMotor (#4003) -------------------------------------------------------------------------------- 9fb28c6 | DracoOmega | 2024-09-05 15:12:09 -0230 Don't trigger chaotic artifact weapons against dead monsters This could happen if specifically the base *brand* of the weapon killed a monster, and even then didn't usually cause a visible problem. With chaotic Rift and Punk *specifically* (among all chaotic unrands that can currently appear in the Xom bazaar), this resulted in a crash. Unlike other sources of brand damage, Punk's acid and distortion banishment fully reset a monster when they happen, meaning the defender's type is MONS_NO_MONSTER by the time the secon apply_brand_damage() happens. And chaos brand specifically tries to look at a monster's resists to determine what brands it can roll. Against a normal dead monster, this happens normally (and then it elects not to apply the brand at all), but against a reset monster, this causes an assert when it looks for its resists. I think a more proper solution involves refactoring the chaos brand check, but I'd like to cherry-pick a bugfix in 0.32, so I'm going with the simpler solution with less possible side-effects for right now. -------------------------------------------------------------------------------- 92cb95d | regret-index | 2024-09-02 19:47:05 -0230 Fix a vault using Dungeon's gem in Depths (WizardIke) An unfortunately missed copy-paste from the D:$ configuration screwed up the Depths:$ configuration. For bonus points, it'd show up as shattered on the ground. -------------------------------------------------------------------------------- b3cc53a | DracoOmega | 2024-09-02 15:06:26 -0230 Give the Black Torch status some short_text (So that it can be queryable from lua, first and foremost.) -------------------------------------------------------------------------------- 75c2363 | DracoOmega | 2024-09-02 15:06:26 -0230 Hopefully fix crash when viewing the Form Properties menu (ge0FF) This crash doesn't occur on any architecture I personally have access to, but had been reported for local tiles on both Arch Linux and Fedora. Big thanks to ge0FF for hopefully tracking down the real culprit. I'm just going to have to take other people's word that this fixes things. -------------------------------------------------------------------------------- 41e258f8 | DracoOmega | 2024-09-02 15:06:26 -0230 Don't let Vanquished Vanguard summons sometimes drop items (cfcfcfcfcf) This only happened if they were killed directly (as opposed to timing out or the summoner being killed). -------------------------------------------------------------------------------- 4495e38 | DracoOmega | 2024-09-01 18:28:53 -0230 Fix all blockable beams being blocked 100% of the time (Lici) Broken since 2031b86 alarmingly.... -------------------------------------------------------------------------------- b3de7b9 | gammafunk | 2024-08-30 21:21:10 -0500 task: Add the trunk 0.32 tournament reminder -------------------------------------------------------------------------------- 6fe00ff | gammafunk | 2024-08-29 16:13:02 -0500 doc: Update the changelog for the 0.32 release (cherry picked from commit 2a3b71ecb9cd912fbbc65fd33e16365abcc6daa8) -------------------------------------------------------------------------------- f63b3e1 | gammafunk | 2024-08-29 15:56:07 -0500 task: Update the debian changelog for 0.32.0 (cherry picked from commit e9cc5b35c8837d80da24021ff7dc4a8983bbf222) -------------------------------------------------------------------------------- cf2570b | DracoOmega | 2024-08-28 18:20:19 -0230 Add Grave Claw to the list of monster smitey spells ...that is used to determine whether the caster will push past allies. As per the comment above the list, these probably should really be spell flags (or maybe a flag on the monster itself instead??) There are quite a few things which would theoretically qualify to be on this list, but I'm not filling it out right now as this would cause monster behavior changes that may or may not be positive and shouldn't be done so close to release. Will aim to do something with it in 0.33, though. -------------------------------------------------------------------------------- 30fde11 | DracoOmega | 2024-08-28 18:18:18 -0230 Significantly decrease monster Grave Claw damage While this isn't used on any normal monsters (yet?) and scary ghosts with it can mostly be avoided, wizard apostles (especially early ones) could be disproportionately deadly to fight with the numbers the spell currently has. (I'll probably take a closer look if anything else gets this in 0.33, but for now I feel a quick fix is warranted.) -------------------------------------------------------------------------------- df7718d | DracoOmega | 2024-08-28 18:14:02 -0230 Describe the pseudopod aux attack when examining the mutation -------------------------------------------------------------------------------- 516f9d4 | DracoOmega | 2024-08-27 23:03:11 -0230 Fix enhanced breath damage not displaying for red draconians (Undo) -------------------------------------------------------------------------------- 8f60099 | DracoOmega | 2024-08-27 21:58:25 -0230 Fix draconians not getting breath power boost in dragon form (Undo) This was always intended, but the refactoring done as part of 0.32's draconian breath revamp ened up accidentally removing the new breaths from the code which would give them increased power. At the same time, clean up a confusing remnant of that old code, which gave ABIL_BREATH_FIRE reduced power outside of dragon form (even though it was impossible to have it outside dragon form) and gave Naga who had mutated ABIL_BREATH_POISON increased power if they were in dragon form (???) (Dragon form breath weapon really should scale with Shapeshifting skill now instead of XL, but I plan to do that as part of a greater pass on forms in 0.33) -------------------------------------------------------------------------------- a5f74d5 | DracoOmega | 2024-08-27 16:52:28 -0230 Fix another spacing issue with player titles on % screen (NormalPerson7) -------------------------------------------------------------------------------- 01a4114 | DracoOmega | 2024-08-27 16:33:33 -0230 Fix an extraneous space in Dith max invo title in webtiles sidebar -------------------------------------------------------------------------------- ad26841 | DracoOmega | 2024-08-27 16:33:33 -0230 Add a placeholder description for armataur monsters These can be encountered in a few entrance vaults, so it's possible for players to examine them, and they were missing a description altogether. (It amuses me a little to write of yaktaurs as if they were common frames of reference for people from this world.) -------------------------------------------------------------------------------- 3f04b6f | DracoOmega | 2024-08-27 16:33:33 -0230 Adjust orc monster description The current one's flavor seemed a little incongruous with the 0.32 Beogh changes. -------------------------------------------------------------------------------- 0e1e677 | DracoOmega | 2024-08-27 16:33:33 -0230 Prevent a crash with a phantom mirrored Blorkula being killed Cleaning up enchantments on Blorkla before 'saving' them prior to bat split was also deleting the abjuration timer, causing them to die mid-split. Ideally, I'd like to let them just split into summoned bats, but there's no easy way at present to delete enchantments *other* than abjuration. So instead, just prevent summoned Blorklas from splitting. This makes me a little sad, but it's so niche a situation that I can't justifying the refactoring that might be involved post feature-freeze. Maybe some future time? -------------------------------------------------------------------------------- fefbaf9 | DracoOmega | 2024-08-27 16:33:33 -0230 Fix a possible crash with Xom fake shatter It tried to modify the quantity of the large rocks created *after* they were placed on terrain, but if the location selected to place them was lava, the rock would already be destroyed by the time the code attempted to modify it. It would be easy enough just to not try to place rocks in lava at all, but the sizzling splashes caused by them seems flavorfully appropriate enough to me. -------------------------------------------------------------------------------- df10614 | CipHuK | 2024-08-26 16:04:40 -0230 fix(trove): allow wand of digging for trove_misc_dual_throne_room (#3993) [Committer's note: Unnerfed the wand of digging charges count; the trove's already more niche than the other wands trove, trove_wands_scrolls. Closes #3993.] -------------------------------------------------------------------------------- d232e38 | DracoOmega | 2024-08-26 02:35:44 -0230 Don't crash when aiming Gavotte near the edges of an unseen map boundary -------------------------------------------------------------------------------- b05a317 | DracoOmega | 2024-08-25 16:57:30 -0230 Fix a crash when shock serpent reprisal kills a monster -------------------------------------------------------------------------------- 6d945e7 | DracoOmega | 2024-08-25 16:17:38 -0230 Use attack_strength_punctuation for shock serpent reprisal (cfcfcfcfcf) Surprising amount of code editing was needed to do this and still print the resist message in the proper place. -------------------------------------------------------------------------------- 89b4946 | DracoOmega | 2024-08-25 16:17:32 -0230 Make recruitable apostles disappear when you change floor Previously, if you were off-level when the recruit timer expired, the apostle would remain wandering on that floor forever. Instea, end the timer immediately if you leave the floor. I'm a *tiny* bit uncertain about whether this could catch a player off-guard by ending the window prematurely, but it's relatively consistent with other uses of good-neutral orcs and there's probably not many situations where a player needs to leave a floor immediately, and still plans to come back and recruit afterward. (And this is simpler to implement by far). -------------------------------------------------------------------------------- 4120489 | Medrano83 | 2024-08-25 16:35:14 +0200 Android fix. Declare the gategory of the app as a game Categories are used to cluster multiple apps together into meaningful groups, such as when summarizing battery, network, or disk usage. -------------------------------------------------------------------------------- 2325b17 | DracoOmega | 2024-08-25 02:17:57 -0230 Display Lightning Spire's damage in Summon Lightning Spire cast interface Following similar logic to Hoarfrost Cannonade doing so. -------------------------------------------------------------------------------- 1101131 | DracoOmega | 2024-08-25 01:59:56 -0230 Display which monster is engulfing the player (when examining them) In a similar fashion to when a monster is constricting you, indicate which monster is engulfing you when you are being engulfed (to help with ambiguities when there are several possible monsters nearby). This doesn't indicate the source of monster/monster engulfment, but that seems of much more marginal value. (It is much less straightforward to do this, since monsters themselves don't track who or even *if* they are currently engulfing anything) -------------------------------------------------------------------------------- 6b671fb | DracoOmega | 2024-08-25 01:55:05 -0230 Display Makhleb's Unleash Destruction hit-chance when targeting -------------------------------------------------------------------------------- 2c1f918 | DracoOmega | 2024-08-25 00:35:43 -0230 Remove some old runrest_ignores The reasoning no longer applies to current Yred (and only one of these message even happens anymore). -------------------------------------------------------------------------------- 3094c0c | DracoOmega | 2024-08-25 00:35:07 -0230 Stop auto-explore rest over deep water with expiring temp flight If the player had temporary flight and was over deep water or lava, pressed autoexplore, and was injured enough for autoexplore to rest first, the game would skip past the expiring flight warning instantly and activate emergency flight (potentially draining the player quite a bit for no good reason). It feels like autoexplore rest probably just shouldn't ignore force_mores at all (this was already a default force_more), but for the moment adding the message to runrest_stop_message fixes the immediate problem. -------------------------------------------------------------------------------- 5a265af | DracoOmega | 2024-08-24 23:24:10 -0230 Don't let cosmetic clouds block catoplepas breath (among other things) We've established reasonably clear rules about cloud overwriting by now, and cosmetic (ie: harmless, non-opaque) clouds are supposed to be overwritable by everything. This is true in perhaps the majority of cases, but bolt::affect_place_clouds() (used mainly for placing clouds *along* a beam path) still has a check that ends prematurely if there is *any* cloud already at a given space. This didn't even always just prevent clouds being placed in *that* space. Noxious Breath and March of Sorrows used this function to place clouds in tiles *adjacent* to the beam path and those would also be skipped if there was a cloud present. So, for instance, using Vhi's to engage Boris could give several turns of immunity to misery clouds being placed anywhere near you. This affected at least: catoblepas breath, player green and yellow draconian breath, March of Sorrows, Mourning Wail, ushabti Death Rattle, and creating cold/steam clouds over water with cold/fire beams. It nominally affected many other monster cloud breaths, but those placed most of their clouds outside of this function, so in practice it likely only blocked cloud placement near the monster when the monster itself was breathing far away from itself (ie: you couldn't use Vhi's or similar for any practical protection.) -------------------------------------------------------------------------------- e892263 | DracoOmega | 2024-08-24 21:34:00 -0230 Don't leak the presence of monsters in the Refrigeration targeter The color-coding used to indicate how many allied monsters are adjacent to each monster (affecting Refrigeration's damage) leaked information on the presence of both invisible monsters and those out of the player's line of sight entirely. -------------------------------------------------------------------------------- 9311ea8 | DracoOmega | 2024-08-24 21:22:35 -0230 Fix a niche crash with displaying future XL-based mutations If the player already recieved a non-innate version of a mutation they were slated to receive at a later XL, the mutation preview would display an incorrect mutation level (ie: expecting that they would gain an additional level of that mutation, instead of making the level they had already gained innate.) If that level was higher than the actual max, this would cause a crash when opening the mutation menu. (A realistic example is a felid mutating a level of fur at random, resulting in the mutation preview thinking they will gain Fur 4 at XL 12) -------------------------------------------------------------------------------- c0fac64 | DracoOmega | 2024-08-24 21:13:50 -0230 Allow casting BBB on deep water (Dilly) The boulder can already travel through deep water, so there's no reason to prevent the player from casting it on a deep water tile. (This was a leftover from when it wasn't large enough to cross deep water). Also slightly tweak failure messages. -------------------------------------------------------------------------------- 8ec6a56 | DracoOmega | 2024-08-24 21:07:52 -0230 Fix Shadowslip having a misleading duration when used repeatedly (Acrobat) Using Shadowslip while it was already active would *set* the duration of the misdirection effect on all enemies to a rolled duration, while the visual change to your shadow was *added* to the duration of its curent transformation. This meant that if you used it again before it wore off, the effect would expire long before it 'looked' like your shadow had returned to normal. Now the shadow visual transformation should better match the duration of the mechanical effect. -------------------------------------------------------------------------------- afe045b | DracoOmega | 2024-08-24 20:53:33 -0230 Fix canine familiars being left alive on past floors I am not sure what this function call was doing in the old coded that it was copied from in this refactor, but at the very least it seems superfluous now (it will be called by monster_die() below anyway). -------------------------------------------------------------------------------- be95063 | DracoOmega | 2024-08-24 20:32:22 -0230 Fix a crash when trying to use quivvered Shadowslip with no shadow Even if the ability was unusable because of no active shadow, the codepath for using it via quiver would still construct a targeter first, and this targeter (used to show what monsters will be distracted) assumed that it could not be called without an active shadow. This turns out to not be the case. (The targeter is never shown to the player, either way.) -------------------------------------------------------------------------------- 5a015b8 | Medrano83 | 2024-08-24 22:51:02 +0200 Fix Android mouse detection The code inherited from SDL compares Event.getSource with InputDevice.SOURCE_MOUSE. This doesn't work on modern devices. The right way to identify a mouse event is: - Event.isFromSource(InputDevice.SOURCE_MOUSE) This also improves commit e7e1c0f, because SOURCE_CLASS_POINTER is too generic. I'm also removing some unused variables. -------------------------------------------------------------------------------- 4b97a1a | Medrano83 | 2024-08-24 22:50:49 +0200 Fix Android touchpad scrolling Chromebooks use buttonless ACTION_MOVE events to represent touchpad scrolling. Normal cursor movement uses a different action: ACTION_HOVER_MOVE. -------------------------------------------------------------------------------- fa02dad2 | gammafunk | 2024-08-23 18:01:28 -0500 fix: Don't mark certain spells as self enchantment A number spells are marked as self enchantments despite not setting any kind of duration or enchantment on the caster itself. These are mostly demon-related summon spells, a few conjurations that create monsters (e.g. Marshlight and Conjure Ball Lightning), as well as Phantom Mirror and Spawn Tentacles. For the non-summoning spells, having this flag leads to them not being considered as ranged spells. For Spawn Tentacles, there's even an explicit check to override this! This commit removes the self enchantment spell flag on the aforementioned spells. It also removes checks in the monster casting code for some of these spells that were only needed because of this flag. One subtle aspect affected by this commit is a monster's second spell cast attempt. If a monster rolls a targeted spell for its action and is unable to find a target, a second casting attempt is made, and 50% of the time this second check only considers self enchantment spells. So this change effectively reduces the frequency monsters would cast these spells if they also have a spell that can somehow fail to target. However this frequency reduction is very small in practice for the monsters affected by this change. For example, I have tested orc sorcerers who are in LOS but unable to target the player with bolt of drain/paralyze, and they still readily cast Summon Demon. Monsters that don't have targeted spells in addition to these spells will see no change at all. Not including summons nor spells that make conjured monsters as ranged attacks doesn't make a lot of sense and should be revisited in a future commit. In terms of player safety, many monster summoners create summons with "proper" ranged attacks or superior terrain traversal compared to the summoner. And conjured monsters certainly pose an acute threat to the player at range. I want to make extra sure I understand all the implications of designating summon spells as ranged attacks for monsters, although I'm fairly sure there are no issues. For now, the only change in this regard is removing an explicit exclusion for Conjure Ball Lightning as a ranged spell. Lom Lobon is the only monster with this spell and has Glaciate, another ranged spell, so this has no in-game effect. Finally, Repel Missiles and Berserker Rage are clearly self enchantments and so are given the self enchantment flag by this commit. For Berserker Rage, this means that bear monsters will no longer be flagged as ranged monsters. -------------------------------------------------------------------------------- b2e620d | Nicholas Feinberg | 2024-08-22 16:29:25 -0700 Fix: don't stairs into the abyss (CarefulOdds) Malign Gateway's terrain feature isn't stairs, so don't colour it on the minimap as if it were stairs. Display it as a wall. -------------------------------------------------------------------------------- 34d56c8 | Nikolai Lavsky | 2024-08-23 00:16:07 +0300 text: mention that Soul Splinter inflicts weakness (MIC132) -------------------------------------------------------------------------------- e7e1c0f | Medrano83 | 2024-08-22 20:43:27 +0200 Fix Android mousewheel scrolling The code used to detect mouse scroll events in the SDLActivity doesn't work in modern devices because the event's source is different from SOURCE_MOUSE. Reference: https://developer.android.com/games/playgames/ input-mouse#handle_mousewheel_scrolling -------------------------------------------------------------------------------- fc2bf62 | David Lawrence Ramsey | 2024-08-21 19:17:44 -0500 Don't give gladiators default kite shield tiles. They haven't had shields in their starting equipment for ages. -------------------------------------------------------------------------------- 8817171 | Medrano83 | 2024-08-21 21:52:02 +0200 Android: Add a full screen option to the launcher I got this message from an Android user: > can't enable full screen mode by setting "tile_full_screen = true", > still shows a black bar on top with device status. I agree a full screen option for Android can improve the user experience. Mostly when playing on landscape mode with modern devices. You can read this in the docs: > Where you set the UI flags makes a difference. If you hide the system > bars in your activity's onCreate() method and the user presses Home, > the system bars will reappear. When the user reopens the activity, > onCreate() won't get called, so the system bars will remain visible. > If you want system UI changes to persist as the user navigates in and > out of your activity, set UI flags in onResume() or > onWindowFocusChanged(). Tried both options and the behaviour when using onWindowsFocusChanged is more consistent. When using onResume, full screen is lost whenever you open the top menu. -------------------------------------------------------------------------------- ae761ad | David Lawrence Ramsey | 2024-08-21 10:57:38 -0500 Adjust kraken tentacle msgs to not mention water. Since a soul-bound kraken flies and so is not in water. -------------------------------------------------------------------------------- 589741c | gammafunk | 2024-08-20 21:09:48 -0500 fix: Add some missing KMASK to a vault (dilly) Set these unreachable areas to have no level generated monsters nor items. Also, we can't actually make a gnoll bouda skeleton, just gnoll skeletons, so simplify the skeleton placement. -------------------------------------------------------------------------------- 0996707 | David Lawrence Ramsey | 2024-08-20 18:18:40 -0500 Fix Xom glove slot msgs for certain randarts. The Mad Mage's Maulers and Delatra's gloves don't start with "pair of ", but make Xom glove slot messages put that at the beginning of their names anyway, so that all glove names come out as singular and the message grammar fits. There should be a better way to handle this, but this will work for now. -------------------------------------------------------------------------------- 72c75df | David Lawrence Ramsey | 2024-08-20 16:55:14 -0500 Fix indentation. -------------------------------------------------------------------------------- eb33c5b | Medrano83 | 2024-08-20 23:50:43 +0200 Android fix: Swipe gestures produce undesired click events I had the chance to play the game on a tablet and tried to use touch events only. It was a painful experience, but this will help. -------------------------------------------------------------------------------- 5cf48a8 | David Lawrence Ramsey | 2024-08-20 12:12:41 -0500 Add missing commas to some monster speech. -------------------------------------------------------------------------------- aee97d7 | DracoOmega | 2024-08-20 14:10:45 -0230 Properly make Oni double potion heal affect !magic (Acrobat/dilly) It was always intended to, and the mutation description even mentions such, but apparently it never worked properly. This also affects Kyrias, which is intended to have the same set of functionality. -------------------------------------------------------------------------------- f212be2 | Nikolai Lavsky | 2024-08-20 14:55:01 +0300 fix: remove evocable flight, again Having a barding or boots of flying in the inventory enables training of Evocations, even though such items no longer require an activation. This commit fixes that. -------------------------------------------------------------------------------- 24a3017 | Nikolai Lavsky | 2024-08-20 13:39:55 +0300 docs: mention the removal of permanent bazaars in the changelog They were removed in e446cd8f. -------------------------------------------------------------------------------- f2d5535 | Nikolai Lavsky | 2024-08-20 13:25:09 +0300 docs: update `dump_order` in the options guide Document the new `apostles` field, which was added in d887a3bc. Also, convert some stray tabs to spaces. -------------------------------------------------------------------------------- dab2e85 | David Lawrence Ramsey | 2024-08-20 00:53:11 -0500 Fix Xom ring msgs for macabre finger necklace. Since the ring there isn't worn on a hand. -------------------------------------------------------------------------------- a8b5e4c | David Lawrence Ramsey | 2024-08-19 20:34:12 -0500 Move Beogh resurrection invo icon to UNUSED. -------------------------------------------------------------------------------- fda3adb | DracoOmega | 2024-08-19 20:09:57 -0230 Allow no_tele_into tags (and some others) to actually work for subvaults Map tags which applied fprops (such as no_tele_into, no_tide, no_jiyva) did nothing at all when attached to a subvault. Most of these were not used this way, as far as I can tell, but no_tele_into *was* used several times - notably in the S-branch preview chambers for grunt_ashenzari_visionary - meaning that it was possible for the player to teleport (or take a hatch) into a place from which there was no escape and also many wildly out of depth monsters. Now, the same set of fprop tags that work with parent vaults should also be respected by subvaults. (It's worth nothing that kprops applied to subvaulted glyphs by the parent vault are *also* ignored when a subvault is merged, so there was really no good way to do this sort of thing prior to this commit, despite what one might expect.) This fixes #3979 -------------------------------------------------------------------------------- 8f3c08a | DracoOmega | 2024-08-19 20:09:57 -0230 Show some fprops in the local tiles tile tooltip It wasn't easily possible to see what tiles were marked no_tele_into in game, and this is helpful for diagnostics sometimes. (I didn't bother showing fprops here which are easy to verify visually, such as Sanctuary. It would be easy enough to expand this list in future, though, if there's any need.) -------------------------------------------------------------------------------- 1eb867f | DracoOmega | 2024-08-19 20:09:57 -0230 Hopefully finally make player ghosts stop trying to cast Gell's Gravitas The spell was removed from existing monsters in unmarshallMonster() (as is done for many other spells) but player ghosts apparently don't go through that function when they are loaded, allowing it to cast a spell that didn't exist for monsters anymore. -------------------------------------------------------------------------------- 3d2af94 | DracoOmega | 2024-08-19 20:09:57 -0230 Update removed_spells list And add version tags around a few spells that were effectively removed, but never got them. I wonder if, instead of using the AXED_SPELL macro in spell-data.h, dummy data should automatically be provided for any spell in the removed_spell list? Since currently there are effectively multiple places to say that the spell was removed, with different consequences for not being listed there. -------------------------------------------------------------------------------- 751def6 | Medrano83 | 2024-08-20 00:19:32 +0200 Fix Android build on armeabi-v7a There's an error when building the game with NDK 26 for armeabi-v7a. This passed unnoticed on previous tests because the other architectures supported by Android are not affected. It can be fixed with another function casting on sdl2-mixer. -------------------------------------------------------------------------------- cf733dc | DracoOmega | 2024-08-19 15:22:12 -0230 Fix swoop/flank attacks missing some of the proper checks (Ogregutan) It was possible for a monster to perform one of these attacks while afraid, pacified, in a sanctuary, or possibly even against an ally (though I'm not 100% sure that the circumstances that would set up this last case were possible in practice). -------------------------------------------------------------------------------- e547df2 | Sean Dewar | 2024-08-19 09:52:17 -0700 Fix stash search prefixes for golden dragon scales Presumably broke since the rename from gold -> golden. -------------------------------------------------------------------------------- 8ac6e39 | DracoOmega | 2024-08-18 18:24:36 -0230 Display what aspiring flesh will turn into when you examine them The game already announces this in the message log, but it can be easy to overlook and more fiddly than necessary to go find it again if you want to double-check. Now it is displayed on the same line with other status effects when you look at them. -------------------------------------------------------------------------------- 1836586 | regret-index | 2024-08-18 17:53:36 -0230 Add tekkud to the credits Missed back in 84d97b0 and ea827eb. -------------------------------------------------------------------------------- 4ec9ae5 | regret-index | 2024-08-18 17:53:36 -0230 Mildly adjust the changelog Remove a duplicate soul scholar entry, mildly allude to the conditions Xom bazaars happen in, and list off a fair number of tile additions not listed in other changelog updates. -------------------------------------------------------------------------------- 1d4c9e7 | DracoOmega | 2024-08-18 17:31:10 -0230 Don't (confusingly) leak invisible monsters with Piledriver (Acrobat) While Piledriver already could never target and move a monster the player could not see, it was possible for an invisible monster to be in the way of moving something the player *could* see, which resulted in a confusing message about the spell being unusable in situations where it looked like it should be. Now the targeter will display paths based on what the player can see, but if an invisible monster is in the way of the selected path, the spell will fizzle without effect when cast instead. This is a little unfortunate, but also we can't really move something that has nowhere to move. (If *a* viable path remains unblocked, the spell will take that one instead) -------------------------------------------------------------------------------- e868d85 | gammafunk | 2024-08-18 13:54:57 -0500 doc: Changelog update -------------------------------------------------------------------------------- fdaad25 | David Lawrence Ramsey | 2024-08-18 10:04:14 -0500 Fix wrong changelog commit hash (gammafunk). -------------------------------------------------------------------------------- 8529b04 | DracoOmega | 2024-08-17 21:40:06 -0230 Stop Coglins from destroying cursed items without a prompt in local tiles Clicking on a weapon in the inventory panel in local tiles attempts to wield that weapon. For coglins in particular, it bypasses the normal prompt for 'which hand do you want to put that weapon in?' - with left click going into the main hand and ctrl+left click going into the offhand. However, the logic in can_wield() regarding curses only checked that the player had *a* hand free to wield a given weapon - not necessarily the hand they were about to put something in! So if a player had one cursed weapon and their other hand was free, using click-to-equip for the hand with the cursed weapon would see that it was possible to equip a new weapon, and then immediately unwield and destroy the cursed item to replace it with the one just clicked on. Now there is specific logic to check for the corresponding weapon being cursed first. -------------------------------------------------------------------------------- 193dd4b | DracoOmega | 2024-08-17 21:07:55 -0230 Fix ally-cast foxfires from counting as the player's own kills I'm not sure this matters for a whole lot outside of messaging, mind you. -------------------------------------------------------------------------------- f4a7df6 | DracoOmega | 2024-08-17 21:06:41 -0230 Fix an issue with Mark of the Celebrant and Reflection Since Celebrant's cooldown was set *after* the volley of blood arrows fired, if the player took damage as a result of it, this damage could trigger another barrage. (Possibly this could also happen with Pain Mirror) But while this is a bug in its own right, the crash mentioned in #3972 doesn't seem to me like it could be directly caused by getting multiple bloodrites. I think reusing the beam structure may have resulted in improper values being set if the beam was reflected in the process. So instead, copy the beam structure anew with each shot to avoid this. This should fix #3972 -------------------------------------------------------------------------------- 470f6e4 | DracoOmega | 2024-08-17 20:11:45 -0230 Some Gavotte targeter improvements If a monster that will get wall slammed overlaps with the player's transit path, it will still be hilighted to indicate it will take damage. The targeter now accounts for seen terrain and monsters that are outside the player's current line of sight, instead of effectivey treating everything the player cannot currently see as empty floor. This allows more intuitive and accurate hilighting of which monsters will take damage from a given movement (since it otherwise may not be obvious why a given monster isn't hilighted when the *player* knows there's a wall in the way already.) This does mean the tracer will sometimes claim a monster will take damage when it won't (ie: because something dug a wall out of line of sight or destroyed a plant it was expected to hit) but this should be much, much more rare than the previous situation of ignoring map memory of unseen walls entirely. -------------------------------------------------------------------------------- 6911597 | DracoOmega | 2024-08-17 20:11:45 -0230 Expire boulders and ballisto spores when changing floors At some point in the not-so-distant future I will actually unify 'temporary monster' checks that don't depend specifically on abjurability. But in the meantime, don't let the player drag boulders between floors with them. (Amusingly, spores would effectively only follow you only if there was a hostile monster in sight when you took the stairs, and otherwise stay on their original floor.) -------------------------------------------------------------------------------- d9894b7 | DracoOmega | 2024-08-17 20:11:45 -0230 Note in Upheaval's description that it cannot harm the player (Or elementals summoned via Elemental Force) -------------------------------------------------------------------------------- e2c4daa | DracoOmega | 2024-08-17 20:11:45 -0230 Prevent spawning a Crucible exit on the other side of deep water Since the only deep water possible in this map is on the very edges of the arena, forcing the exit to only place on the floor (which makes more sense anyway) should prevent any possible softlocks. -------------------------------------------------------------------------------- 718b86c | DracoOmega | 2024-08-17 20:11:45 -0230 Don't let Rimeblight explosions hit good neutrals This mostly only matters for Beogh worshippers, but could unduely cause penance at random mid-battle. If it can ignore friendlies, it can ignore neutral orcs, too. -------------------------------------------------------------------------------- 959a7d1 | DracoOmega | 2024-08-17 20:11:45 -0230 Fix AF_SPIDER and AF_HELL_HUNT printing messages when triggered out of LoS -------------------------------------------------------------------------------- e09b82a | DracoOmega | 2024-08-17 20:11:45 -0230 Fix initial explosion from Rimeblight ignoring LoS check (CarefulOdds) -------------------------------------------------------------------------------- 9405a8f | DracoOmega | 2024-08-17 20:11:45 -0230 Remove Oni gaining extra benefit from mutation potions An oversight left over from when the original armataur double potion mutation applied to all potions. Oni are only intended to double healing potions. -------------------------------------------------------------------------------- 62c44d5 | DracoOmega | 2024-08-17 20:11:45 -0230 Add a confirmation prompt for accepting Infernal Marks (various) This is a high-impact choice made once per run. A confirmation prompt seems reasonable here. -------------------------------------------------------------------------------- c9fbf6c | DracoOmega | 2024-08-17 20:11:45 -0230 Remove an orphaned comment The code it was commenting *on* has been already removed anyway (it was in regard to spell enhancers not applying to spells cast via rods). -------------------------------------------------------------------------------- 1502f1d | DracoOmega | 2024-08-17 20:11:45 -0230 Remove code for handling zapping wands with 0 charges. This isn't possible to do anymore, anyway. -------------------------------------------------------------------------------- 0ad0e9b | DracoOmega | 2024-08-17 20:11:45 -0230 Don't let !/@ work when aiming smite-targeted spells These keys allow force-casting a spell not just beyond its range, but at places where the spell's targeter:::valid_aim() returns false - essentially ignoring any target validity checks that are done there. While this serves some purpose for beam spells, by allowing the player to select beam paths that are not possible within the spell's range, (and the beam's range and physical properties will be respected, regardless), I don't think it serves any purpose for spells which target a specific location. Forcing a spell to be cast on a location the game itself says is not valid is just asking for undefined behavior. And boy, there's quite a bit of it at the moment. This may not be comprehensive, but at the moment at the very least: -Grave Claw, Mercury Vapours, Momentum Strike, Cigotuvi's Putrefaction, and Sculpt Simulacrum can all be cast at full LoS range. -Magnavolt and Putrefaction can trigger a crash-on-demand by aiming at a tile without a monster. -Putrefaction can be functionally used on uninjured monsters and non-living monsters. Many older spells in the game do not exhibit the same range bugs because each spell's own code checks manually that the target they have been given is valid and in range - with even the most straightforward of range checks being essentially duplicated countless times in different places. Some of these spells predate the targeting API existing at all, and some were bandaided later on, but I'm inclined to think that where a spell defines a hitfunction for validity, that this function should be authoritative and the spell should not have to duplicate its checks (this sort of problem has come up many times in past and been fixed in a one-off manner on many of this times.) Doing so would allow cutting out a bunch of now-redundant code from many spells, though I am going to pass on doing so during feature freeze, since it seems at risk of introducing new bugs. I'd like to make it a 0.33 thing, though. -------------------------------------------------------------------------------- 2805000 | DracoOmega | 2024-08-17 20:11:45 -0230 Display the health buff that shadows get from Shadowslip in xv (Acrobat) -------------------------------------------------------------------------------- fccc697 | DracoOmega | 2024-08-17 20:11:45 -0230 Don't mislead firewood with Shadowslip "The fungus turns its attention towards your shadow x24" -------------------------------------------------------------------------------- 098aa68 | DracoOmega | 2024-08-17 20:11:45 -0230 Fix enemies being mislead by Shadowslip after being charmed (Monkooky) If an enemy was distracted by your shadow, they would continue to fixate on it even after being charmed. On the one hand, this makes a certain sense. They think your shadow *is* you, so why should they listen to orders from that othere chump over there? And it *is* pretty funny. But probably it should just break the mislead effect, so now it does. This fixes #3970 -------------------------------------------------------------------------------- 2c87f10 | Kate | 2024-08-17 22:05:56 +0100 Adjust a description for consistency "Magic" rather than "mana". -------------------------------------------------------------------------------- 2cd2782 | gammafunk | 2024-08-17 15:07:03 -0500 doc: Some clua api doc tidying -------------------------------------------------------------------------------- 8b4f558 | gammafunk | 2024-08-17 15:02:40 -0500 fix: A check for monsters having ranged spells The function mons_has_ranged_spell() didn't considered spells marked as ranged by _ms_ranged_spell() to actually be ranged unless their range was greater than 1. The problem with this is that many LOS-affecting spells have an undefined range, which gets resolved to a range of -1. Hence a monster like a curse toe with e.g. Symbol of Torment and only summons as its other spells was incorrectly not flagged as ranged. This commit only excludes attack spells if their range is exactly 1. I've looked over all calls to mons_has_ranged_spell() and there's nothing that should break if we expand the list of monster ranged spells in this way. It might be good to actually designate a LOS range for all the various smite targeted attack spells for clarity in the monster info UI. Smiting itself already has such a range, for example. I'm not changing any spell definitions for now, since I've not checked if those changes could somehow have other side effects. Monster AI is notorious for having subtle bugs. (cherry picked from commit 585c54f536188b0a9123da2be5ea99197ebdd732) -------------------------------------------------------------------------------- f3f7718 | Implojin | 2024-08-17 14:48:55 -0500 fix: clua api ldoc generation This has apparently been broken since 60c0b14602 (mid-0.31), as mentioned in previous commits on this ldoc remains pretty fragile. To regenerate these, run `make api`. -------------------------------------------------------------------------------- a3a3e7c | Implojin | 2024-08-17 11:36:33 -0500 Add Lexi Hattaway to the credits -------------------------------------------------------------------------------- 28ae855 | David Lawrence Ramsey | 2024-08-16 22:30:14 -0500 Fix enum name for magnetised dust clouds. So it consistently uses 'magnetised', instead of 'magnetized' in some places and 'magnetised' in others. -------------------------------------------------------------------------------- 9333e8e | patrick | 2024-08-16 23:23:25 -0400 Tone down the greed value of a Shoals shop 100 is the same value as Gozag's Platinum Reserve, which is intended to be a ridiculously high overcharge. The proprietor of the mermall isn't supposed to be quite that greedy. Now it's 20. -------------------------------------------------------------------------------- 191c959 | David Lawrence Ramsey | 2024-08-16 22:06:45 -0500 Tweak food_snacking_frequency documentation. Since 40% is not one third of the time. -------------------------------------------------------------------------------- cc75f2f | Lexi Hattaway | 2024-08-16 23:04:53 -0400 added my first vault (pentagon) after testing -------------------------------------------------------------------------------- 88fe4fe | David Lawrence Ramsey | 2024-08-16 21:36:48 -0500 Use @objective@ properly in Nergalle's dialogue. -------------------------------------------------------------------------------- 385508d | regret-index | 2024-08-16 01:59:21 -0230 Add Darby to the credits Accidentally left out after f582fa6, despite d06570b and 3ec762b. -------------------------------------------------------------------------------- 8f138ea | David Lawrence Ramsey | 2024-08-15 16:17:24 -0500 Add Michael Hunter to CREDITS. -------------------------------------------------------------------------------- 6728d54 | David Lawrence Ramsey | 2024-08-15 10:43:37 -0500 Add Christopher Partin to CREDITS. -------------------------------------------------------------------------------- 122fbd9 | DracoOmega | 2024-08-15 05:54:48 -0230 Make uniques a little more chatty There's been a bunch of effort in recent years to characterize uniques better, and give them more personality in their dialogue. It seems fair that they get to chat a little more than other monsters as a consequence, so that players have a better chance to see it before killing them. (Donald and Yuif had greatly increased odds to talk compared to other uniques, and I have lowered their bonus to keep their net rate of conversation about the same as it was before now.) -------------------------------------------------------------------------------- 0be9698 | DracoOmega | 2024-08-15 05:54:48 -0230 Nudge Mark of Haemoclasm's numbers up again just a small bit After the previous buffs of 4c67e76a8e2a7885a haemoclasm feels a lot closer to the right place, but could possibly stand to be just a *bit* more frequent, so this increases its trigger chance from adjacent enemies a small bit more and also nudges its base damage a tiny bit higher. -------------------------------------------------------------------------------- 38b740f | DracoOmega | 2024-08-15 05:54:48 -0230 Fix Unleash Destruction being completely silent Not sure *exactly* how much noise to give it, but 'more than none'. In theory, I could see it argued that lightning-based destruction should be louder than other types, and this wouldn't actually be hard to implement, but I'm unconvinced that it's meaningfully better to sometimes be much louder than other times at random. -------------------------------------------------------------------------------- 562a9a4 | DracoOmega | 2024-08-15 05:54:47 -0230 Don't let player shadows stab loudly (Midn8) Player stabs are deliberately silent, but when your shadow joined in to eviscerate some poor elf in their sleep as well, it would make enough noise to potentially wake up all the others. I could just block shadow melee noise on stabs, but shadow *spells* are already all completely silent, so it seems fine to make their melee universally silent as well. -------------------------------------------------------------------------------- 907ac08 | DracoOmega | 2024-08-15 05:54:47 -0230 Allow divine heal-on-kill to work on monsters which are 'objects' It already seperately excluded summons and things which don't grant the player XP, but for some reason it *additionally* vetoed monsters which were objects. Monsters that counted as objects but also gave XP *mostly* meant 'dancing weapons', but it was still strange that Makh/Veh/TSO healing didn't count them. This bit of code seems ancient, and if there was ever a good reason for it, I doubt there is anymore. -------------------------------------------------------------------------------- 0c44f4d | DracoOmega | 2024-08-15 05:54:47 -0230 Slightly rescale chance of good god lifesaving to cap at 6* In keeping with a general policy of not giving god benefits that scale beyond the 6 piety stars the player is able to see, piety above 160 no longer increases the chance of good gods randomly saving your life (Ely's guaranteed lifesaving already hit max chance at 6*) The old chance was ~28% at 200 piety and ~24.4% at 160 piety. The new chance maxes at 26% at 160 piety (using a very slightly simpler formula). -------------------------------------------------------------------------------- a6fa64c | DracoOmega | 2024-08-15 05:54:47 -0230 Slightly tweak Magnavolt spell description To try and make it somewhat clearer that it fires one beam individually at each marked target. -------------------------------------------------------------------------------- b7f7cf1 | DracoOmega | 2024-08-15 05:54:47 -0230 Fix a possible Crucible of Flesh crash When new victims are spawned, they are placed with 30-80% of their max hp, but for enemies with very little max hp, it was sometimes possible for this to round down to 0, placing a seemingly-normal-looking enemy that the game nonetheless thought was 'dead' when you tried to hit it, causing an assert. -------------------------------------------------------------------------------- 3e06661 | DracoOmega | 2024-08-15 05:54:47 -0230 Buff / un-nerf Drain Life While 9e354a60c6874087a purported to only make Ramparts and Refrigeration check AC (and gave them additional damage in compensation), it also did this to Drain Life and *without* giving it any additional damage at the same time. With the low damage that Drain Life puts out from monsters, this was a very significant accidental nerf. Since the game is already pretty consistent about life-draining style effects ignoring AC, I've opted to return this property to Drain Life instead of just buff its damage. But since Soul Eaters were never known to be *that* scary, I've also adjusted its damage slightly upward as well (from 1d21 to 2d13). Unavoidable damage that ignores AC is pretty strong, but Drain Life is extremely resistable, so I think it's fair for its raw numbers to feel relevant. (I've also removed a bit of unnecessary code/comments now that Drain Life isn't player accessible in any fashion.) -------------------------------------------------------------------------------- d20efa1 | DracoOmega | 2024-08-15 05:54:47 -0230 Make a few more spells work with Aphotic Marionette This implements Marionette casting of Battlesphere, OTR, Polar Vortex, and Malign Gateway (mostly through calling the player versions of these spells via overrides). It also fixes Berserker Rage being inconsistent about when it could be used this way, as well as Invisibility not producing a message when gained this way. -------------------------------------------------------------------------------- 6655e30 | DracoOmega | 2024-08-15 05:54:47 -0230 Give RevMPSaver an additional effect, rename to SpellMotor In theory, flat spell cost reduction is a powerful effect, but capitalizing on this gizmo property is difficult. To benefit from it, you need to engage in weapon combat first, but many of the spells which gain the most from being able to repeatedly cast with cost reduction tend to be attack spells you'd preferred to have cast from a distance. Its design seems to want a character who is strong enough to comfortably sit in melee, but who has relevant blasty spells they want to cast a lot *after* that point, which is a hard sell on a species whose biggest strength comes from leaning into their ability to do enormous weapon damage while sacrificing defense. Moreover, the cost reduction is also short-lived, since Rev will wear off while the player is casting. In the hope of moderately addressing both of these awkwardnesses, I am adding a second effect to RevMPSaver and renaming it to SpellMotor. In addition to its current effect, it also causes the player to launch a melee attack at a random enemy in range whenever they cast a spell. This gives a direct boost to the hybrid blaster archetype, but also helps the player *sustain* the cost reduction by maintaining Rev if there are nearby enemies to hit while casting. It also allows the player to *build* Rev by spellcasting (but only while directly engaging in combat with those spells). If your weapon attack would somehow have a delay *longer* than it takes to cast a spell, there is a proportional chance to perform no attack (so no being cheeky with giant heavy weapons). While this arguably makes this gizmo property more powerful than its peers, I think the archetype it directly supports is also weaker and less straightforwardly popular on coglins such that I think this is okay. (And it would be nice if all gizmo properties felt reasonably worth taking; I think RevMPSaver is currently a bit of a dud.) -------------------------------------------------------------------------------- 2cfdfcf | DracoOmega | 2024-08-15 05:54:47 -0230 Adjust Dazzling Flash tracer for monsters, increase duration vs. player Monsters previously considered already-blind enemies as useful targets for this spell. And while the duration *can* stack, it's generally not very useful to keep extending blindness on an already blind player (and, in fact, the moon troll's cast rate was high enough that they would spend fully 25% of their turns casting it, regardless of it accomplishing anything). In some mild compensation, increase the baseline duration when applied to the player. This does affect some other methods of blinding the player, but in general it is a weaker effect on players and a longer duration makes sense to me. (This also doesn't matter a lot given the rarity of blind effects in the game that will hit the player. This is slated to be changed somewhat in 0.33 and duration will be reviewed again at that time.) -------------------------------------------------------------------------------- 04ba9e8 | DracoOmega | 2024-08-15 05:54:47 -0230 Change Dazzling Flash schools (Conj/Hexes -> Hexes/Fire) A remnant of back when Dazzling Spray actually *was* a damaging spell, conjurations has been an extremely weird fit on the completely non-damaging Dazzling Flash spell for a while. It also meant that Vehumet could gift it to players, despite it not being appropriate to the god at all. The choice of Fire as the new secondary school is somewhat arbitrary, but it felt like the closest thematic fit for 'makes a lot of light, very abruptly'. (I don't think it will affect players much, as one never really trained conjurations as a hexer, nor picked up flash as a conjurer.) -------------------------------------------------------------------------------- cb27354 | David Lawrence Ramsey | 2024-08-14 22:16:14 -0500 Add another Xom ring slot message. -------------------------------------------------------------------------------- 34a0b8a | David Lawrence Ramsey | 2024-08-14 20:45:31 -0500 Fix typo. -------------------------------------------------------------------------------- 414de44 | regret-index | 2024-08-14 23:12:42 -0230 Update some ancient documentation links After adding quite a bit more to the Art Requests wiki page, I realized I should check what is recommended for people reading the documents, and found incredibly ancient references. Some of these tile requests stretch as far back as 14 years ago, and should at least be directed more towards present day contexts. -------------------------------------------------------------------------------- ac85ce3 | regret-index | 2024-08-14 16:24:29 -0230 Add a force_more to sighting the_gamble (Riverfiend) While autoexplore does stop for the immediate sightings of both an altar and a transporter, it is relatively plausible to completely miss that it is a limited time offer amongst the messages of sighting the enemies and rewards in either side. Since this has completely different behaviour than normal transporter vaults in being temporary (and is thus better off for it), it might as well get a force_more the way temporary portals do. -------------------------------------------------------------------------------- e0650be | regret-index | 2024-08-14 05:15:14 -0230 Make some food documentation more consistent Indecisiveness bleeds through, sometimes. -------------------------------------------------------------------------------- 5a795d2 | CipHuK | 2024-08-14 05:03:55 -0230 Trove: Fix trove_misc_dual_throne_room veto (#3976) "The trove contains two misc which are useful even for low Evocations. There are four talismans which do not depend on the no-device mutation, plus evocation + shapeshifting manuals." "Also, there's no wands in the 'prices' table." [Committer's notes: squashed the two commits together and adjusted the logic syntax to be a bit more easily readable. Closes #3976.] -------------------------------------------------------------------------------- 9f76b2e | regret-index | 2024-08-14 03:38:11 -0230 New option: food_snacking_frequency (default 40%) A relatively quick and simple setting for caches of fruit and meat, which allows setting the percent chance of displaying their corresponding flavour message. Should be relatively harmless, but also reduce the current awkwardness of people who want to see the messages dancing back and forth on top of the piles (as long as they read the options guide, alas). On that same note, since people seem to be relatively receptive of the flavour messages in the first place, the odds have been increased (from ~33.3% to 40%). -------------------------------------------------------------------------------- 6bd198a | regret-index | 2024-08-14 01:28:58 -0230 Brief quick vault passover Some living trees replaced with dead ones, a late D glowing orange brain placement nerf, and some decorative altar adjustments + fix-ups. The last of these adds a small chance for the tiny altar square used in a large amount of games to get a highly variable floor tiling arrangement around it, to add a little more interest to the open-altar squares being used constantly throughout such a large part of the game. It also comes with a few tweaks to _pick_an_altar() for a few branches to catch up to some later flavour options; as long as we've got such a minor flavour function already around, we might as well continue to update it. -------------------------------------------------------------------------------- a9c2434 | regret-index | 2024-08-13 21:55:46 -0230 Tweak some Xom messages The Xom pseudo-miscasts that entail "Something invisible lands on the floor beside you!" and the like unfortunately collide with the warning colours in the default messages.txt for invisible monsters using something as broad as "Something .* you". This commit replaces those messages with new ones that won't collide with such and are still appropriately confusing for Xom. -------------------------------------------------------------------------------- 3ec762b | regret-index | 2024-08-13 20:57:20 -0230 Further loose tile edits and additions * New tiered talons mutation icon by Darby. * New vampire bat tiles and the held Charlatan's orb by pianoman523, both with edits (the former brightened up in a few shades to contrast better against dark floors, the latter desaturated to match the item on the ground). * A less inaccurate rakshasa tile by meckryl has been added to the unused monster tile folder in anticipation of finding a proper home later for the current tiger-demon rakshasa tile. * The new claws mutation icon has been edited to show three levels through darkening and brightening individual different claws, as was suggested by Ge0FF. * Mystic cages have been edited to hopefully read more as a feature and less as an item, through chopping off the top to fit on a plinth. * Coolio's edit of Denzi's dwarf tile has been edited further to remove the axe always in its hands, since cosmetic weapons on monsters inteferes with showing actual weapons on the same monsters. * Wiglaf's duplicate tile in the /player directory has been cut, since there's already one in the /unique directory. * Additional mutation icons: no potions (ontoclasm's potions), no armour (Bloax's troll hide armour), no grasping (ontoclasm's statue tiles), stabbing paws (aidanholm's generic monster spell icon), multilived (Denzi's felid tiles), shaggy fur (Sastreii and CanOfWorms's death yak tile), gelatinous body (CanOfWorms's slime creatures), camouflage (white_noise's D walls and snw-0's pebble walls), beak (outlining from a Creative Commons Zero bird vector by Lexatchison), and torment resistance (CanOfWorm's resistance icons + roctavian's tormentor). -------------------------------------------------------------------------------- 86e73b9 | DracoOmega | 2024-08-13 17:55:46 -0230 Properly add dummy data for removed electroferric vorticies This fixes #3977 -------------------------------------------------------------------------------- d22c551 | gammafunk | 2024-08-13 09:13:25 -0500 fix: DES syntax in a serial vault (ASCIIPhilia) The serial_demonic vault had a malformed KMONS for depths 9 and 10. -------------------------------------------------------------------------------- b660852 | Nikolai Lavsky | 2024-08-12 13:19:45 +0300 docs: adjust a couple of help texts Fix a colour tag and realign table columns. -------------------------------------------------------------------------------- d7452cd | DracoOmega | 2024-08-12 01:51:23 -0230 Nudge Hellfire Motar damage down slightly This spell is slated to become 3 school in 0.33, and will likely get this damage back again afterward, but for the moment it may be a *touch* too strong when also considering its utility and excellent MP-efficiency. -------------------------------------------------------------------------------- c677a86 | DracoOmega | 2024-08-12 01:51:23 -0230 Slightly relax Eringya's Toxic Bog's placement restrictions By allowing bog to be created on tiles with a maximum of *2* adjacent walls instead of just one. Bog is a spell with a lot of limitations, and while I think some of those limitations are interesting, it could probably stand to be just a *bit* more permissive. Let's give it a try. -------------------------------------------------------------------------------- cc760f6 | DracoOmega | 2024-08-12 01:51:23 -0230 Properly make orc wizard apostles Cautious Astoundingly, despite this flag having been implemented *for* them in the first place, it appears to have never actually been implemented in trunk at any point. I am really not sure how this came to happen. Hopefully this makes this feel a little less suicidal to have as allies, as it was originally intended to. -------------------------------------------------------------------------------- d7b6f66 | DracoOmega | 2024-08-12 01:51:23 -0230 Increase Cigotuvi's Putrefaction draining cost The latest iteration on corpse rot seems to have been well-received, but is probably a bit strong for where it is. I considered moving it to level 5, but the original intent of "Strong for a level 4 spell, but with a meaningful draining cost" is something I want to try leaning a bit more into first, and the current iteration virtually removes the cost if spellpower is high enough. New draining cost is 75->35 at max power (versus 55->5 before this commit) -------------------------------------------------------------------------------- ce3698e | DracoOmega | 2024-08-12 01:51:19 -0230 Revamp Brom's Barrelling Boulder a little When first added to the game, there were significant concerns that BBB's obvious upsides of providing blockers and crowd-controlling lines of enemies while also damaging them would be too strong. In practice, the spell's many limitations and low damage made it almost universally considered to be bad instead. While sometimes one hit the perfect storm of juggling a scary monster repeatedly out of sight until it died, there were simply too many ways for the spell to fail to provide value. It was useless against adjacent enemies, usually useless against enemies at range 1 (who would destroy the boulder before it did anything), extremely unreliable against enemies at a distance (due to veering off course at random), easily sidestepped by groups of enemies on open terrain, aimable only in compass directions, and after all that did much less damage than stone arrow. For comparison, IMB (also a level 4 starter book spell) knocks back enemies in *all* directions, is usable against things already on top of you, *and* does more damage, without being considered overpowered. So I think it's time to revisit boulder. Boulder now moves one tile immediately upon being cast (so that it can no longer be destroyed before even moving). Its HP increases with spellpower (and will generally be higher). It no longer causes a fragmentation explosion upon hitting a wall (this did almost no damage anyway) nor takes passive damage from running into enemies. Instead, it simply is destroyed upon hitting a wall or moving into an enemy that cannot be moved (whether because it's against a wall or otherwise stationary) - though it will do additional damage in the latter case. It no longer applies a ministun to pushed enemies (previously done automatically via actor::knockback). It also no longer veers off course. This was likely intended as a way to keep it from being too reliable an obstruction in corridors, but it also made it too unreliable in the open as well (and the aiming restrictions *already* made it require specific positioning to be useful). Instead, corridor protection comes in the form of the boulder taking abrasion damage from solid terrain it passes alongside. Each time it moves, it takes (randomized) damage proportional to how many adjacent solid features there are. This means that it takes no damage rolling in the open, but will disintegrate after only a short distance in a full corridor. The targeter has even been updated to indicate the distance at which a boulder (with HP based on your current spellpower) may disintegrate before reaching. Finally, boulder damage has been increased. The hope is that this iteration on boulder feels more rewarding to use, and is appropriately powerful for a level 4 dual-school spell. -------------------------------------------------------------------------------- 322ac23 | DracoOmega | 2024-08-12 01:51:19 -0230 Remove some seemingly-redundant rendering code While investigating the issue that is hopefully resolved in the prevous commit, I noticed that monster status icons are seemingly rendered twice in local tiles. The code I am removing appears to be effectively repeated by the call to pack_foreground() in DungeonCellBuffer::add -------------------------------------------------------------------------------- 0f7a2da | DracoOmega | 2024-08-12 01:51:19 -0230 Properly render clouds on top of items in local tiles The comments suggest this was always intended, but didn't actually work due to how items are packed in a different buffer than monsters (and one which appears to always be rendered after clouds). Now it applies a similar technique used when items are to be drawn submerged in water, and moves cloud-engulfed items to a lower buffer. (Webtiles uses different rendering code and did not have this bug.) -------------------------------------------------------------------------------- 1803d01 | DracoOmega | 2024-08-12 01:51:19 -0230 Tweak Magnavolt behavior a little and buff Electroferric vorticies were always a bit of a kludge to fix how otherwise the spell (designed to ramp up in power over multiple casts) got a lot worse when it actually killed the magnetised enemies quickly. But I never really liked how they were big and space-filling and sometimes oddly good as obstacles; it felt out of theme for how the spell was supposed to function. So here's another take on solving the same problem: Instead of magnetised enemies making an always-magnetised vortex monster upon death, they leave behind a cloud of magnetised fragments instead. This cloud has no effect on its own, but will function as an attractor for Magnavolt, just like a magnetised enemy would. It lasts a short time and then dissipates (without any of the 'extended duration by rezapping' behavior electroferric vorticies had). I have also increased the base damage of the spell by a moderate amount, given feedback over its current power level. Finally, the magnetised dust status reveals invisible enemies - mostly to ensure that enemies which go invisible *after* marking them will not result in the beam tracer either leaking information *or* misleading the player about whether or not the beam paths that will result from casting the spell are safe. -------------------------------------------------------------------------------- 2a9263f | regret-index | 2024-08-11 19:24:16 -0230 Various requested tiles (pianoman523) + Jiyva altar adjustments Tin of tremorstones active and inert versions, claw and hoof mutation icons, and Hellfire Mortar's spell icon. * The hooves and claws icons don't have three variations like most mutations, but getting away from the generic mutation icons (especially for mutations given player species will have innately, who probably) shouldn't show helix strands) is the more important goal for UI consistency than having the full count of gradations. * Hellfire Mortar's icon is in a weird spot because the actual mortar monster itself is using an old recolour of a granite statue rather than having a proper mortar-like tile, but "mortar shaped like a dragon" will probably still be retained eventually anyway. * The Jiyva altar tweaks in this fixes the light-direction to be consistent with each part, brings the palettes of each part closer, and adjusts the outlining of the slimeball against the the wobbling altar it's on top of. Hopefully it'll read better now? -------------------------------------------------------------------------------- aa93178 | regret-index | 2024-08-11 02:27:19 -0230 Yet further adjustments to Xom effects * Xom bazaars hold one less talisman (since they frequently get repeats and the randart is more enticing), plus potentially one more potion (since most of the consumables presented are relatively undervalued). * Xom hostiles have been further tweaked downwards at earlier levels, with there being plenty of new effects covering the "Xom tries to directly kill the player" front without needing the precise nature of "Xom directly just summons something you can't fight in a corridor ambush situation". While it was always possible to get early tier-4 and tier-3 demons, they were much less likely than the revised state was for XLs 6 and 7, which has thus been tweaked upwards. Also, the first few XLs get even less hostiles, so there's a decent chance to at least fight or get something before dealing with 4 crimson imps on D:1 or D:2. -------------------------------------------------------------------------------- 3bae827 | regret-index | 2024-08-11 01:42:44 -0230 Last big vault review for 0.32 This, of course, continues to include tweaks to the most dangerous and least threatening portals and branch ends for many places. Worthy of note: * To help make early portals be somewhat easier to find, two of the Sewer entries that only placed in far corners of levels now have experimental severe wall padding away from the furthest corners, and the Bailey entry that has no monsters or terrain differences has been cut. * cheibrodos_frozen_isle has no_tele_into (to reduce getting wrecked by teleport) _and_ a hatch in it now, dealing with issue #3927. * Crypt entry vaults now use Crypt walls to sell a little more flavour for the ever-struggling Vaults branch, and have specified monster types to reduce overlap with other Vaults enemies / Depths enemies and also cut the small chance to see non-Crypt curse skulls. * Pan entries now use Pan floor (but not Pan wall) so there's less spoilers about which of a dozen fixed boxes in each game have demons in them in each Depths. * pleasuredromes is updated to better suit Depths again. (Why did we have commits screwing with Depths encompass vaults, but none to reduce all of the unthemed deep elf use?) * wizlab_doroklohe now has pretty different monster sets to try and reduce its overlap with other demonic and undead wizlabs, either pairing those more directly or swerving over into earth and construct themes alongside some sparse use of undead. * (Base gargoyle monster tiles and war gargoyle tiles have been adjusted to actually more obviously split from one another, since this will make for the second wizlab pairing the two.) -------------------------------------------------------------------------------- dd5112e | David Lawrence Ramsey | 2024-08-10 19:41:37 -0500 Add another gizmo noun. -------------------------------------------------------------------------------- fe854bf | David Lawrence Ramsey | 2024-08-10 11:18:58 -0500 Remove now-inaccurate comment bit (ge0FF). -------------------------------------------------------------------------------- b3f2be6 | Nicholas Feinberg | 2024-08-10 08:37:18 -0700 Remove an antique bit of monster AI (Monkooky) Doesn't seem helpful to make low HP monsters avoid targeting the player. This logic dates back to pre-Stone Soup days. -------------------------------------------------------------------------------- 7c87569 | David Lawrence Ramsey | 2024-08-10 10:18:02 -0500 Make Blorkula's bat form unconstrict him. Closes #3971. -------------------------------------------------------------------------------- c9a0f24 | David Lawrence Ramsey | 2024-08-10 01:34:58 -0500 Fix indentation and spacing. -------------------------------------------------------------------------------- 49d6eb2 | DracoOmega | 2024-08-10 00:51:32 -0230 Fix console build -------------------------------------------------------------------------------- c18c819 | DracoOmega | 2024-08-10 00:15:32 -0230 Make it more obvious where the Crucible exit is Properly update the minimap when the portal opens (I thought this happened already, but apparently not) and also make a ring around it change to a different type of floor. Possibly a higher-visibility floor could be chosen or (ideally) a fancier exit tile made at some future point, but this should still improve visibility a little, at least. -------------------------------------------------------------------------------- 6f226b4 | DracoOmega | 2024-08-10 00:15:32 -0230 Make poison status icon overlap a little less with other things -------------------------------------------------------------------------------- 7ec8f00 | DracoOmega | 2024-08-10 00:15:32 -0230 Show some status icons above the player (and add customizable options) Certain negative statuses are very important, but can be easy for a player to overlook when they are applied randomly or unexpectedly (eg: Slow from *Slow triggering, or from draconian cold-bloodedness). We already have standard icons for many of these things, so it seems possible to indicate them directly above the player, where it may be a lot more obvious than the sidebar. I have added support for displaying a number of statuses there (and it is now straightforward to add more). Since there are many statuses that *could* be indicated but which are often not important to do so (either because they're low impact, beneficial, or already have their own default force_more), I've added a new option: tile_player_status_icons. This allows a player to decide which of the implemented statuses they want to show this way (if any). Currently there is support for displaying slow, fragile, sentinel's mark, will/2, haste, weak, corrosion, might, brilliance, -move, constriction and petrifying. By default, it only displays slow, fragile, constricted, and 1/2 will. This is somewhat arbitrary and I am open to input for different defaults. I tried to make the string used in the options to enable a status be the same as it appears on the sidebar (though it bothers me a bit that it's harder than I'd expect to efficiently query this directly - duration-data.h currently cannot be included anywhere without manually including a bunch of things before it, which is awkward....) -Potion and -Scroll are other statuses that immediately jump out to me as worth showing in this manner (since they can be critical, and also easy to miss activating) but no icons exist for them yet. (Also, poison is still handled by an older method and cannot be edited with this option yet.) -------------------------------------------------------------------------------- 39fa310 | DracoOmega | 2024-08-10 00:15:32 -0230 Give Animated Armour the resists of their base type (ie: animated fire dragon scales having rF++ rC-, etc.) It seems like this was always intended, but because animated armour wasn't flagged as using equipment, the resists on their gear was also ignored (though the AC on their gear was *not*, oddly enough...) -------------------------------------------------------------------------------- e9c885f | regret-index | 2024-08-09 19:05:27 -0230 Further dog summon icon improvements (pianoman523) It's a little fancy for something relatively mechanically straightforward, but hey, people love their (magical) dogs, so we might as well lean into it. -------------------------------------------------------------------------------- 1fec1db | David Lawrence Ramsey | 2024-08-09 09:12:26 -0500 Add another new Makhleb line for Donald. -------------------------------------------------------------------------------- 78ccd73 | DracoOmega | 2024-08-09 04:17:47 -0230 Fix broken Mark of Execution activation chance (Acrobat) I forgot to remove the 100% chance to activate that I'd be using in testing and I additionally forgot to check that what you were killing was actually hostile, so that the player couldn't activate it by killing cheap friendly summons. Oops. -------------------------------------------------------------------------------- e9ac164 | DracoOmega | 2024-08-08 23:12:25 -0230 Prevent using Passwall to move through temp terrain (rypofalem) It was *also* possible to use Oozemancy to Passwall through metal or similar walls. Now it isn't. -------------------------------------------------------------------------------- 19bd505 | DracoOmega | 2024-08-08 23:12:25 -0230 Mention that Dissolution/Xak'krixis can dig in xv -------------------------------------------------------------------------------- 0dac2c7 | DracoOmega | 2024-08-08 23:12:25 -0230 Fix multiple broken things with monster digging/burrowing For some reason, burrowing monsters could only burrow through exactly rock wall and clear rock wall and *no other* diggable features. Yes, this meant that Dissolution, whose name has been in the section header comment of the digging section forever, and who has special messages unique to them alone, *couldn't dig through any wall type that actually exists in the zone they appeared in*. Wow. Also, monsters that could cast the Digging spell could only dig through exactly rock wall, clear rock wall, and grates - none of the other types of diggable terrain would prompt them to cast the spell, even though it would work if they did. This commit refactors that entire section slightly, and makes burrowing and digging directly check for feature diggability instead of this ancient narrow list. I've banned burrowing monsters outside of Dissolution (which is currently just Xak'krixis) from burrowing through slime walls, largely for parity with the reasoning given to player formicids. Take proper care of those mandibles! -------------------------------------------------------------------------------- 8a5fa98 | DracoOmega | 2024-08-08 23:12:25 -0230 Fix Polar Vortex not properly putting water under destroyed mangroves It was bypassing the normal wall destruction function entirely, and it's not clear to me that there was any good reason for this. -------------------------------------------------------------------------------- 851616c | DracoOmega | 2024-08-08 23:12:24 -0230 Remove a digging exploit with formicids of Jiyva While wands of digging would simply not work on temporary terrain prior to the previous commit, formicid digging *did* work. And it was possible to use Oozemancy to make metal walls slimy and then simply walk through them. While it would be, in theory, possible to apply the same policy as the previous commit - let the player walk through walls whose underlying feature could also be dug - it has awkwardness with how the player moves in the process. We can't just revert to metal and keep you in the same place; the player may have forgotten which walls were metal and which weren't! After a little discussion, it seems fine to dodge the question by just not letting you dig through acidic slime with your mandibles at all. Technically a small nerf to formicids in Slime, but I doubt it ever really mattered there anyway. (I am normally adverse to one-off exceptions like this, but people seem to think this one is intuitive enough and it neatly solves the issue.) -------------------------------------------------------------------------------- 7cfa934 | DracoOmega | 2024-08-08 23:12:24 -0230 Allow summoned trees to burn (and oozified walls to be dug) For some years now, temporary terrain has been immune to numerous effects that might destroy it, such as wands of digging. This is a sensible precaution to prevent the player from temporarily transforming metal or other undiggable terrain into rock so that they can dig straight through it. Summon Forest can transform metal walls into trees as part of its effect, but it also places numerous trees on empty terrain, and it's always felt a shame to me that it's impossible to burn those down too. Messy conflagrations can be fun from time to time, and it also makes the trees feel more tree-like instead of inexplicably fireproof. So this is an attempt to make temporary terrain behave more like that type of terrain normally does while *still* preventing the player from using it to cheese their way through terrain that they should not. Essentially: digging and burning works on temporary terrain like it would on normal terrain, but if the underlying feature could *not* be affected by that effect, it simply causes the terrain to revert to that instead. Zapping digging at a metal wall that has been oozified will return it to metal, as will burning a wall that has been turned into a tree. But oozified rock will dig as normal, and trees made in open areas can spawn fires propery. (As a bonus, burning down a rock-tree still makes some fire cloud nearby - like what would happen if it *could* put a spreading fire in the wall's place). Currently, all other sources of terrain destruction are unchanged. Forest fires can't spread *into* temporary trees, they are unaffected by Polar Vortex, and Shatter still completely erases rather than reverts terrain (even though trees are easier to shatter than metal walls). -------------------------------------------------------------------------------- 1c43b72 | DracoOmega | 2024-08-08 23:12:24 -0230 Make dryads cautious Summon Forest is already a strong spell, but the degree to which the dryad (key to the spell actually doing anything at all) will suicidally rush enemies for no benefit can sometimes be fiddly or dissatisfying. Having to protect them with your own body can be interesting, but the open layout often makes that impossible when they're so insistant on moving past you to hit stuff for irrelevant damage, and it feels wrong that it's helpful to order them *not* to attack stuff, which you can only do if you're not using other allies at the same time. Now they should be a little less overeager to close in on enemies. -------------------------------------------------------------------------------- af40330 | DracoOmega | 2024-08-08 23:12:24 -0230 Don't print message for breathing your draconian breath when it fails -------------------------------------------------------------------------------- acb7b81 | regret-index | 2024-08-08 20:48:58 -0230 A spree of placeholder innate trait / mutation / weirdness icons Even if it'll take quite a long while to properly really fill out this space, it'll look less and less awkward the more non-generic icons there are available to correspond to each individual trait. This commit continues to remix old tiles to provide new ones. (FIXME: I'd _really_ prefer if the handful of mutations that are innate to some species but possible to mutate on other species didn't share the "generic" mutation icons in both circumstances. After this commit, that list is limited to Beak, Talons, Claws, and Gelatinous Body.) Credits: Mutations: * Berserk: aidanholm's Malmutate icon and snw-0's rage ego icon. * Deterioriation: The Malmutate icon and roctavian's flayed ghost tile. * Persistent drain: The Malmutate icon and Denzi's Tartarus stone walls. * Teleportitis: ontoclasm's Teleport scroll icon and Bloax's Corona icon. * Strong-willed: CanOfWorms's resistance icons and ontoclasm's magic resistance / willpower item ego. * High mp + low mp: Sastreii's robust, thin skeletal structure, and antimagic status icons, plus CanOfWorms's mana mutations. Innate traits * Forlorn (demigod godlessness), faith (as innate to mummies): snw-0's faith item ego. * Demonspawn Hurl Damnation: ontoclasm's Hurl Damnation ability icon. * Demonspawn Demonic Will: roctavian's red devil plus the strong will pieces. * Draconian cold-blood: aidanholm's adjustment of ontoclasm's Freeze icon, paired with ontoclasm's Sublimation of Blood icon. * Yellow draconian acid res, pale draconian steam resistance, gargoyle petrification res: CanOfWorms's poison resistance icon, snw-0's petrified status icon, and Denzi's steam breath ability icon. * Kobold nightstalker: CanOfWorms's shadow item ego icon. * Naga spit poison: Ontoclasm's spit poison icons. * Tengu acrobatics: Sastreii's edit of Lasty's acrobat item ego icon, and ontoclasm's statue tiles. * Vine Stalker antimagic bite: Sastreii's fangs tile plus CanOfWorms's mana mutations. Gods: * Jiyva-gifted / yellow draconian acidic bite: Bloax's acid blob tile plus jpeg and coolio's old mimic teeth. * Jiyva-gifted eyeballs: Denzi's great orb of eyes tile. * Jiyva-gifted engulfing: ontoclasm's water elemental tile. * Jiyva-gifted item detection: ontoclasm's detected item plus CanofWorms's slime creature tile. * Ru's skill sacrifices: snw-0's skill-training icons, one of Denzi's old skill-training icons, and ontoclasm's sacrificial Ru dagger. * Sacrifice resistances / temperature sensitivity: CanOfWorms's fire vuln and cold vuln mutation icons. * Sacrifice essence -> weak-willed: CanOfWorms's vulnerability icon and ontoclasm's MR / Willpower item ego. -------------------------------------------------------------------------------- bb65b56 | DracoOmega | 2024-08-08 15:33:04 -0230 Fix Shadow Tempest sometimes failing to hit anything Due to a missing break statement, the chosen casting position was being ignored and a completely random one used instead (which might frequently not have LoS to any valid enemy). -------------------------------------------------------------------------------- f6b258d | DracoOmega | 2024-08-08 15:33:04 -0230 Fix Yred zombies persisting after leaving the floor (Undo) -------------------------------------------------------------------------------- 4f2d792 | michaelhunter27 | 2024-08-08 07:46:42 -0500 Add doll editor info to docs/tiles_help.txt Adds a 'character appearance' section in tiles_help.txt that gives an overview of the Doll Editor. Resolves #2815 -------------------------------------------------------------------------------- 700f80e | DracoOmega | 2024-08-08 05:00:10 -0230 Fix a test suite error (unhappily) It was being used to perform mutation tests without a core part of mutation data being initialized, and only appeared to work up to this point due to what I consider essentially a coincidence. It made mutation-related functions effectively consider *all* mutations to have the data of the first mutation listed in mutation-data.h, which until 02fa12cfa58bf5b15c769780ce23e0ab14f10ce6 was Tough Skin (which happened to have 3 levels - the only reason that a test didn't fail before now). The test harness here is skipping a massive amount of standard initialization code for Crawl, seemingly deliberatetly. I understand the desire for more isolated tests, but this strikes me as deeply concerning, as it's not at all clear when necessary parts in this complex system may or may not be initialized in ways that cause the test to produce incorrect values. This time, a test failed that should have succeeded, but it seems entirely possible to me that it could also cause tests to succeed that ought to fail. Basically: I don't really like this, or my equally ad hoc fix here. This will silence build failures for the moment, but it feels like a bad long-term solution to any of this. -------------------------------------------------------------------------------- 96dd062 | David Lawrence Ramsey | 2024-08-08 00:34:33 -0500 Fix missing period. -------------------------------------------------------------------------------- 52cfe79 | David Lawrence Ramsey | 2024-08-08 00:26:28 -0500 Fix indentation. -------------------------------------------------------------------------------- c4951ef | David Lawrence Ramsey | 2024-08-08 00:25:02 -0500 Fix typos. -------------------------------------------------------------------------------- 17f805d | David Lawrence Ramsey | 2024-08-08 00:24:22 -0500 Fix doubled word. -------------------------------------------------------------------------------- f1bee58 | DracoOmega | 2024-08-08 02:30:38 -0230 Adjust flavour descriptions of draconian scales a little Yellow draconian scales were described as 'golden yellow' and in fact their dragon talisman transformation described them as turning into 'golden dragons', despite mechanically and flavor-wise having almost nothing in common with these. I assume it dates back to before acid dragons actually existed and was just an attempt to get *some* dragon that was similar to yellow draconians. Well, now we have a very clear analogue, so let's use that. Flavor descriptions tweaked accordingly. (Also moving the 'iron' descriptor out of grey's scales, since that should now be covered by their XL 14 mutation.) -------------------------------------------------------------------------------- 02fa12c | DracoOmega | 2024-08-08 02:30:37 -0230 Adjust player draconian color balance a little Draconians have long been considered a strong species, but after the breath rework of 926e5b6e4c1ff7608bc4a4bdb60678fc7a80099a , multiple players thought they had become even stronger. This wasn't my intention and I had considered nerfing their aptitudes in weapon/magic skills a little in compensation, but after further investigation into player data, it appears like draconians may benefit from being played by experienced players to a noticably greater degree than most other species do - in other words, they are only an outlier in species strength when including experienced players and seem closer to middle-of-the-pack otherwise. I am theorizing that this is because benefiting from the new breath mechanics involves active resource management moreso than most species' strengths do. At any rate, I am reluctant to broadly nerf a species that may be 'fine' for the larger chunk of Crawl's playerbase, especially since one of the ways in which they are strong is varied, interactive, and unique. However, balance *between* colors could use some adjustment. To this end, I am making the following changes: -Grey draconians get their +5 AC bonus at XL 14 instead of XL 7 -Red draconian breath damage is significantly increased and can no longer miss. -Black draconian breath damage is slightly reduced. -Yellow draconian breath range is increased by 1. (A tweak to acid bite may also be coming in a future commit) -Purple draconians no longer have increased willpower scaling with XL, but get the Strong Will mutation at XL 7 and at XL 14 gain 'Inviolate Magic' which prevents their magical effects from being unravelled and reduces hostile MP drain by 2/3rd. More detailed reasoning: -Grey draconians are clearly ahead of the pack at the moment. 5 AC may be debatably weaker than a key resist in lategame, but 5 AC is a lot when you get it all at once at XL 7. To that end, move their +5 AC to XL 14 instead. (It may be tradition for all draconians to get some resist at XL 7, so let's just say they're getting rFumblingInWater which is already more impactful than rSteam) -Red draconians are clearly worst and I think the numbers on their breath are a large part of it. It was balanced with the assumption of being able to hit a single target with multiple explosions, which I think is more awkward in practice than I'd expected. -Purple getting a better willpower modifier than other draconians is rather opaque if you're not familiar with the game and barely indicated anywhere. Making this an explicit mutation is a lot more transparent *and* has the helpful side-effect of making them stronger from XL7-14, since they were also underperforming. Since this nonetheless results in them having 1 less pip of willpower by the end of the game, I've given them a different minor thematically congruent benefit at XL 14 (credit for the suggestion to Undo) -------------------------------------------------------------------------------- 0b084fa | DracoOmega | 2024-08-08 02:30:37 -0230 Slightly refactor/simplify _dispellable_player_buffs It hasn't needed to keep track of both durations and attributes for years now, so remove the remaining references to dispellable attributes. (Even ATTR_DELAYED_FIREBALL was removed automatically on load, so it was impossible for the removed save compat code to even do anything). -------------------------------------------------------------------------------- a427651 | DracoOmega | 2024-08-08 02:30:37 -0230 Slightly increase chance of Mark of Execution activating Also remove the clause about it not triggering off of summons. This never actually worked, due to being incorrectly checked after the monster was already dead, but on reflection I think it might be fine to activate on kills of summons; I don't see any obvious cheese potential attached. -------------------------------------------------------------------------------- 4c67e76 | DracoOmega | 2024-08-08 02:30:37 -0230 Buff Mark of Haemoclasm The most underperforming of the Marks, haemoclasm is popular and conceptually fun, but frequently failed to help the player very much - and could in fact make things worse for them! The explosion chance was far too low to rely on doing anything useful (and would commonly hit nothing even when enemies did explode) but still generated normal explosion noise, attracting more enemies to the player's position without even much compensation. This commit greatly reduces explosion noise (down to 5), lowers the chance of enemies exploding with nothing nearby to hit, and greatly increases the chance of enemies exploding when they *do* have something adjacent to hit - rising moderately with how many things are nearby. I'm not 100% certain that this is better than just a flatly higher chance at all times, but the idea is to reduce purely-negative noise generation from blasts that cannot be productive, while somewhat encouraging the player to wade into dense piles of enemies to maximize explosion chance (and the possibility of chain-reactions!) in crowds. I've also slightly increased the blast damage caused by higher HP enemies. We'll see how this feels and further adjustments will be made if called for. -------------------------------------------------------------------------------- 7d931e3 | DracoOmega | 2024-08-08 02:30:37 -0230 Tweak Crucible of Flesh danger level slightly It's still a little hard to tell exactly where to balance this. On the one hand, several players have repeatedly stated is was surprisingly easy to handle. On the other, nearly 20% of players who have taken this mark have ultimately died to the Crucible itself. Maybe this is slightly inflated by how the same characters *without* Vessel of Slaughter may have died in whatever situation caused them to use it instead. At any rate, this is intended to be a fairly minor adjustment. The easiest levels players can plausible enter the Crucible will have slightly weaker demons, while at higher levels the Crucible has a slightly higher cap on the number of demons it can produce at once (and how many will be there when the player first arrives). -------------------------------------------------------------------------------- 1005255 | DracoOmega | 2024-08-08 02:30:37 -0230 Nerf Mark of the Celebrant damage Celebrant has been a popular mark, and is widely agreed to be the most powerful at present. It seems fun, which is good! It also seems like it might be a little *too* good, so let's try reducing its numbers somewhat. (This is about a ~22% reduction in damage output) -------------------------------------------------------------------------------- 55b383c | DracoOmega | 2024-08-08 02:30:36 -0230 Improve Mark of the Legion's description, slightly improve demon quality The mark description failed to mention that demons summoned by Infernal Legion will never be hostile (unlike regular servants!) and may have undersold its power by referring to the summons as 'weaker demons'. While it's true that their tier will be lower than those produced by the baseline Infernal Servant, their quantity is intended to *more* than make up for that. (It's been the least-chosen mark in testing and I haven't gotten much direct feedback on it yet. Will this help? Perhaps slightly.) -------------------------------------------------------------------------------- 51068f2 | DracoOmega | 2024-08-08 02:30:36 -0230 Increase Globe of Annihilation damage Giving up your ability to summon servants can feel like a significant sacrifice for a Mahkleb worshipper to make. Let's make what you get in exchange feel a little more exciting by increasing the payoff a bit. -------------------------------------------------------------------------------- f8e23a7 | DracoOmega | 2024-08-08 02:30:36 -0230 Slightly reduce Mark of Atrocity scaling cost, make finale auto-hit Using ramping destruction with Mark of Atrocity is a heavy commitment that costs a large amount of HP, and while I do like the risk/reward aspect of this, it can feel unsatisfying if your big payoff misses. While I don't think it was terribly likely to do so, let's try just making it not. -------------------------------------------------------------------------------- 2eb4e9b | DracoOmega | 2024-08-08 02:30:36 -0230 Adjust Dith shadow HP calculation, improve durability during Shadowslip Instead of Invocations directly increasing Dith shadow HP, scale it with player XL only. This should largely be in line with line with the present values at moderate amounts of Invo (though less if invo was raised high). Instead, make using Shadowslip directly increase your shadow's HP based on your invocations skill. While Invocations already increased the duration of Shadowslip's decoy effect, this additional duration could be hard to benefit from due to the decoy dying too quickly. This should help a little with that, while also making it possible to explain Invocations' effect directly in the ability description, without it having any other hidden effects. (Also make the shadow mimic linger just slightly longer after appearing, to widen the window where Shadowslip is possible to use.) -------------------------------------------------------------------------------- 0cffd93 | DracoOmega | 2024-08-08 02:30:36 -0230 Tweak Dith weapon damage Remove the damage reduction given to ranged weapons versus melee ones. I was a little concerned originally that archer of Dith would be overly strong compared to other options, but this seems to not be the case (and many launchers are already slower than melee weapons, so they were additonally disfavored). Give quick blades a 25% reduction in shadow base damage compared to other weapons. They should still be the weapon that benefits the most from shadow mimic melee, but to a somewhat more moderate degree. -------------------------------------------------------------------------------- 2995cb5 | DracoOmega | 2024-08-08 02:30:36 -0230 Tweak Dithmenos shadow spell numbers Shadow Prism does less damage, Shadow Ball and Creeping Shadow do slightly less damage at low power, all shadow spells which can miss (Shard, Ray, Tempest) are a little more accurate at higher power. Shadow Torpor's formula is changed and it slows for much longer than before (it was excessively weak in its current incarnation). Shadow Puppet has a little less HP in general, lower damage earlygame and increased damage very lategame. -------------------------------------------------------------------------------- 878f319 | DracoOmega | 2024-08-08 02:30:36 -0230 Reduce Dith piety gain slightly, tweak ability costs Marionette is now a little cheaper and Nightfall is slighty more expensive. -------------------------------------------------------------------------------- b1c0d4f | DracoOmega | 2024-08-08 02:30:36 -0230 Fix a possible crash with Shadow Tempest If it killed an enemy that caused other enemies already selected as valid targets to die (ie: summons vanishing because their summoner died), it could still try to zap one of these now-dead monsters (now located at (0, 0)), causing an assert. -------------------------------------------------------------------------------- da2ddc2 | DracoOmega | 2024-08-08 02:30:36 -0230 Don't cause self-used Cleansing Flame to engulf the caster Since all users of this were already immune to its effects, this just produced needless (and possbly confusing) messages about resisting something. Instead, just have it affect tiles in range that are *not* the source, as most caster-centered AoE effects already do. -------------------------------------------------------------------------------- 11afe5f | DracoOmega | 2024-08-08 02:30:36 -0230 Pay HP/MP costs at the start of using an ability instead of afterward Spells pay their costs before the code of a given spell executes, which allows (for example) Vehumet/TSO's mp-on-kills passive to cover the cost of the spell itself. But abilities only paid their costs *after* their code was finished executing, meaning this was not possible. It also resulted in oddness with Mark of Atrocity's scaling HP cost, where the player would be charged the cost of the *next* level of atrocity while only checking that they could afford to pay for the current level of atrocity. (Fortunately it was not actually possible to die this way.) I have rearranged code so that the payment happens before the ability is used and is silently refunded if the ability fails or is cancelled (just like spells currently do). Unfortunately, piety costs are much more complicted, since gaining/losing piety can trigger messages and other mechanical effects. So piety is solely paid after the ability code is complete. I think this has much less of a noticable gameplay effect than with HP/MP costs, however. Finally, this also fixes a bug where the check for triggering Celebrant after casting a spell with an HP cost happened at the wrong moment, and could be triggered at instant speed merely by aiming a spell that *would* result in the caster falling below 50% HP if they cast it - whether or not they actually did so. -------------------------------------------------------------------------------- 96598cd | DracoOmega | 2024-08-08 02:30:35 -0230 Map Makhleb's Accept Mark abilities to capital letters by default -------------------------------------------------------------------------------- 25aef92 | DracoOmega | 2024-08-08 02:30:35 -0230 Prevent casting Rimeblight on yourself (Midn8) -------------------------------------------------------------------------------- 64bea3c | David Lawrence Ramsey | 2024-08-07 13:46:36 -0500 Add a few more Xom drained brain messages. Which use the other random body part options. -------------------------------------------------------------------------------- 0111239 | Implojin | 2024-08-07 13:24:48 -0500 fix: Don't reject bones muts in tempforms (acrobat, Ge0ff) 23c4013377 introduced a bug where demonspawn could miss a horns levelup mut (with a blank demonic ancestry message) by gaining an XL while in treeform, stormform, wispform, etc. We really don't want to be rejecting mutations based on temporary forms here. -------------------------------------------------------------------------------- d06ab9c | David Lawrence Ramsey | 2024-08-07 12:31:05 -0500 Tweak Xom more-stealth message. Feeling more catlike makes little sense if the player's a felid, and it doesn't match the initial stealth message. -------------------------------------------------------------------------------- d3e3170 | David Lawrence Ramsey | 2024-08-07 12:23:02 -0500 Fix indentation. -------------------------------------------------------------------------------- 9c17b79 | David Lawrence Ramsey | 2024-08-07 12:16:29 -0500 Fix Xom drained brain msgs. They don't go through god_speaks(), so they need the substitutions and substring handling to be done manually. Maybe random body parts should be handled in the database instead of the code, but that would require adding Lua hooks for all the functions indicating which body parts the player does and doesn't have. For now, this is simpler. Closes #3966. -------------------------------------------------------------------------------- 8f36e4d | Nikolai Lavsky | 2024-08-07 16:11:02 +0300 fix: pluralise Xom-summoned illusions correctly -------------------------------------------------------------------------------- 89ee397 | regret-index | 2024-08-07 02:36:33 -0230 Throw together another Makhleb overflow altar A lot of Makhleb's overflow altars rely on fighting tier-5 demons (which are barely seen from Makhleb outside of potential future Crucible wrath), or demons behind glass (an old cliche we don't need that much more of). This vault playing around with negative space should help out those vaults without too much extra burden, deliberately drawing off of a new flavour Makhleb has in marks, by carving / splattering one onto the floor rather than into one's flesh. -------------------------------------------------------------------------------- 634013a | David Lawrence Ramsey | 2024-08-07 02:36:33 -0230 Add rare fire-themed temple to Ignis and Makhleb. "It contains a fire pit and bloody fountains on both sides (more Makhleb's preference than Ignis', but the former has many nore worshippers, after all)." [Committer's notes: Due to containing a non-Temple god, I decided to make this a rare Makhleb overflow altar with an Ignis altar rather than the other way around. Also took out some unecessary randomization covered inherently with vault rotation and mirroring default functions, moved around the header lines to fit house style, and opted for a dry fountain for Ignis instead. Closes #3791.] -------------------------------------------------------------------------------- 51d8626 | regret-index | 2024-08-07 02:36:33 -0230 Quick small icon adjustments Hide some error question-marks in the spell list, give the Word of Chaos mutation a non-default icon using its own ability icon, fixed a weird visual issue with the cold / fire resistance level 3 mutations, and properly give reduced potion healing the same icon as other mutations one can mutate without innately having it (by being Vine Stalker). (It'd be nice in that last case if we had a certain dynamic icon adjustment for splitting up innate versus changeable mutations, but there's still an absolutely immense amount of new mutation icons needed before that can really be done anyway, alas.) -------------------------------------------------------------------------------- 156bdd1 | David Lawrence Ramsey | 2024-08-06 17:26:53 -0500 Fix wording regarding death cobs. Since they're described as cobs of maize. -------------------------------------------------------------------------------- cc84cd3 | David Lawrence Ramsey | 2024-08-06 14:28:21 -0500 Add another Xom gizmo slot message. -------------------------------------------------------------------------------- 8252d5b | David Lawrence Ramsey | 2024-08-06 14:00:41 -0500 Add another gizmo noun. -------------------------------------------------------------------------------- 56fa223 | David Lawrence Ramsey | 2024-08-06 13:47:19 -0500 Revert "Make maximum skill checks account for Ru." Since it only affects maximum XP level, not maximum skill level. This reverts commit 79a3620ce472ee7c03ea3699a0e18aa6aacdea37. -------------------------------------------------------------------------------- 452ae66 | David Lawrence Ramsey | 2024-08-06 12:26:51 -0500 Make XP docking account for Ru's Sacrifice Exp. Since your maximum XL is no longer 27. -------------------------------------------------------------------------------- 79a3620 | David Lawrence Ramsey | 2024-08-06 12:16:59 -0500 Make maximum skill checks account for Ru. If you've sacrificed experience, you maximum level is no longer 27. Also, make gaining the inexperienced mutation lower your training targets so that they're in range. -------------------------------------------------------------------------------- a8328fd | elliottbernstein | 2024-08-06 11:35:09 -0500 block entry of > 27 skill target -------------------------------------------------------------------------------- d85c740 | Isaac Clancy | 2024-08-06 09:07:14 -0500 Fix incorrect dependencies in the Makefile -------------------------------------------------------------------------------- 0644d94 | Implojin | 2024-08-05 21:44:17 -0500 Increase visibility of malevolence messaging (sdynet) Here we force_more for malevolence messages and highlight them in the log, to hopefully reduce the incidence of players not realizing they've been hit with malevolence (especially when going down stairs). -------------------------------------------------------------------------------- c0d1bbe | regret-index | 2024-08-05 21:03:50 -0230 Don't try to use the Bazaar wrapper outside of Bazaars (Cheibrodos) The default-depth line for the entries was still applying to the bazaar wrapper vault (for Xom versus not-Xom vault bazaars), which meant there was a small chance for a bazaar-entry floor to try to place the wrapper itself (and then fail due to the bazaar layouts all being only valid within bazaars). Moving the default-depth line above it fixes this. -------------------------------------------------------------------------------- e579cb0 | Nikolai Lavsky | 2024-08-05 23:16:29 +0300 feat: add an indicator for banished apostles Sometimes an alive apostle doesn't show up at work, doesn't answer work emails, and ignores Recall Apostles. This can happen if the apostle has been banished, but there was no indication for that on the Extra religion screen previously. This commit fixes that. -------------------------------------------------------------------------------- 909ce11 | David Lawrence Ramsey | 2024-08-05 12:13:28 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 90a6e04 | David Lawrence Ramsey | 2024-08-05 02:28:16 -0500 Fix foul flame damage (hjklyubn, DracoOmega). The formula was only doing half the damage it was supposed to be doing. -------------------------------------------------------------------------------- f8a32a3 | regret-index | 2024-08-05 03:43:32 -0230 Use a min and not a max Whoops. -------------------------------------------------------------------------------- 0c02579 | David Lawrence Ramsey | 2024-08-05 00:06:44 -0500 Add another mythical creature to artefacts. -------------------------------------------------------------------------------- 0ccf3f1 | regret-index | 2024-08-05 02:15:52 -0230 Summon only two, not three illusions from Xom wrath + Oka (particleface) The action normally gives one a friendly illusion to offset the two hostile ones, but with sacrificing love or worshipping Oka the friendly one would be hostile instead. This now only places two illusions period if allies are forbidden, so it's not made _extra_ worse. -------------------------------------------------------------------------------- 8b305a4 | regret-index | 2024-08-04 22:04:14 -0230 More adjustments to Xom and tension Worthy of note: * Xom's bazaars are now a lot less likely while autotravelling between floors, and with decreasing odds past the first if one's not in noticeable trouble. While they're a reasonable success, getting seven per 3-rune game after hitting the rough basic gold minimums is far too many per game. * Xom's divination is once more less likely on already-explored or already-revealed floors- the creature detection isn't super reliable due to not updating compared to Ash or antennae, so it shouldn't eat up a variety of Xom actions. * Xom's door opening-and-closing is now solely a bad act with minimum rather than maximum tension, due to the number of ways things can go badly with it (like ghost vaults), and it is now no longer nearly so likely in high tension scenarios. A small amount of other scenery screwery has also been added (food and tree warping), to still keep a little more variety when Xom's in a good mood. * Xom's hostile shadow creatures count scales even further to XL now, since it got a lot from guaranteeing a chaos-list creature amongst them. * Xom's actions have been juggled around a bit more to make stat drain and torment less likely plus showcase the newer effects instead. Hopefully 0.33 will contain a massive rewrite of the overall action choices.... * The monster current percent of health to tension threat ratio is no longer a 1-to-1 ratio (and instead scales to 33% of their total threat if they're hostile or neutral, and to 20% otherwise). As everybody knows, "almost dead" means "still entirely capable of killing you". * Monsters chanting Word of Recall count more for tension, and monsters that can't see an invisible player no longer count as much less. Neutral and good neutral monsters now count for half rather than 0 tension, also (so frenzying a monster doesn't completely throw out its capacity to also spin around and hurt you, and so that random friends aren't completely ignored for the distractions they may be). Silence is now tracked for the player always (invocations and scrolls are just as relevant as spells are), and for monsters only if they care about such. * Tension is now always slightly higher in Pan (where there's no easy escape and still regular monster summoning) and much higher on the Orb run (for obvious reasons). -------------------------------------------------------------------------------- c317361 | DracoOmega | 2024-08-04 18:43:43 -0230 Fix off-by-one error in Dismiss Apostle descriptions (Mattlistener) Accidentally broken by 258319946a6387f947fb8e9a2748ec4143870134 It was printing the stat block for the incorrect apostle (including, more confusingly to players, the last apostle that was available to be recruited, whether they had actually taken them or not!) -------------------------------------------------------------------------------- f9ad053 | David Lawrence Ramsey | 2024-08-04 14:12:47 -0500 Don't refer to undead krakens as dead (Aliscans). Simplify the message to not mention dead ones (as is done with starspawn) and to be more accurate regarding tentacles in a way that should cover all cases (e.g. a soul-bound kraken from Yred's power flies, and so is not in water). -------------------------------------------------------------------------------- f563a0e | David Lawrence Ramsey | 2024-08-04 14:04:39 -0500 Remove obsolete comment. -------------------------------------------------------------------------------- faebb85 | David Lawrence Ramsey | 2024-08-04 12:23:32 -0500 Document BiA Sprint change. -------------------------------------------------------------------------------- d9b9d3c | David Lawrence Ramsey | 2024-08-04 12:11:00 -0500 Rename the Xom number key. Since it's only used locally. -------------------------------------------------------------------------------- 579b58d | David Lawrence Ramsey | 2024-08-04 12:00:28 -0500 Put back an eye reference in a Pan lord desc. This partially reverts commit e099dce725e5513535340ebb5d52ce9d2ed2cbab. -------------------------------------------------------------------------------- 3326928 | David Lawrence Ramsey | 2024-08-04 10:08:47 -0500 Improve Charlatan's Orb changelog entry (ge0FF). -------------------------------------------------------------------------------- 48756ab | David Lawrence Ramsey | 2024-08-04 09:27:17 -0500 Revert "Replace eyebrow references with hair references." Now that all species have eyes again, we can assume again that if they have hair, they have eyebrows. This reverts commit 61b81b70c18568995e0eea3fec7c10c91e6aba5e. -------------------------------------------------------------------------------- 132a332 | Monkooky | 2024-08-04 09:21:14 -0500 Remove undocumented 'wait here' command The behaviour of the undocumented 'wait here' shout is clearly similar to 'guard this area'; but the different parameter for _set_friendly_foes obfuscates that they are identical. This makes the code harder to parse with no real gain to gameplay. -------------------------------------------------------------------------------- 33c2599 | David Lawrence Ramsey | 2024-08-04 09:21:09 -0500 Update changelog for Charlatan's Orb changes. -------------------------------------------------------------------------------- ad2143b | Monkooky | 2024-08-04 09:21:09 -0500 Update Charlatan's Orb The Charlatan's Orb can currently break the 27 skill limit for evocations, and this does not behave correctly for some misc evokers. The orb was already probably an incorrect choice for a significant majority of characters, and simply capping the boost at 27 would have made this worse. Instead, we give the orb a more unusual effect of directly boosting skills based on unmodified evocations. -------------------------------------------------------------------------------- e91ea31 | Implojin | 2024-08-04 05:25:11 -0500 Remove an obsolete fake lang line We haven't passed out from exhaustion since 0ac0241410, and I'm removing this because it came up in an unrelated grep. Possibly more of these are obsolete, but I haven't the heart to brutally trim them. -------------------------------------------------------------------------------- 4b24945 | Implojin | 2024-08-04 02:49:32 -0500 Remove a 2010 sprint piety cost hack Prior to this commit, this hack only affected BiA, increasing its piety cost (and no other god abilities) by 2.5x in sprint. Very dubious that this approach was ever a good idea. Sprint could certainly use a balance pass, but this isn't it. This reverts commit 8636e5810e06c6195528b92d0df079439bb1c6f5. -------------------------------------------------------------------------------- 9bdd919 | orjb1 | 2024-08-03 21:37:44 -0230 Propose unrand guarded vault for Rift "So the flavour I'm going for here is [...] not abyss/leakage themed, [and I] did not want a portal (in my headcannon the acolyte got stuck here experimenting). My idea was that the acolyte has been busy 'forging/blessing/animating' demon tridents repeatedly eventually created 'Rift'. Elf/Vaults seemed reasonable?" [Committer's notes: Squashed commits, fixed another descriptions issue according to dolorous's comments in the PR, moderately nerfed the other dancing demon tridents, added new tile decoration, and heavily adjusted the header to fit Crawl house styles- see my comment in the PR for further elaboration there. Closes #3711.] -------------------------------------------------------------------------------- 85f748f | yrdzrfxndfvh | 2024-08-03 20:23:44 -0230 add silly lair vault "oh no... the lair of the legendary eight-headed giant serpent Orochi has been infested with cockroaches!" [Committer's notes: Removed float orientation (why are people so ready to take up the big vault slot with small vaults?), moved it to the right file, handled some teleport closets, and added a makeshift kusanagi reward. Closes #3848.] -------------------------------------------------------------------------------- a3d2664 | yrdzrfxndfvh | 2024-08-03 19:28:13 -0230 2 monster additions to ziggurats "adds protean progenitors to giants because they are giants and undying armories to orc because it sounds fitting (they get the same scaling as moths of wrath)" [Committer's notes: Both notions are appreciated, but are both restrained in being being added here for differing reasons. I somewhat lowered the chances on Orc floors for both moths of wrath and undying armouries, to try and not outweigh their prevalence already in Spider / Vaults / Lair Branches / Earth floors, and also because they can't actually affect one another that well. It, of course, should still be meanfully harder off with the undying armouries regardless. Protean progenitors also are somewhat lowered in weight from other stronger giants because they're rather mechanically different from other giants and because it'd take away from the juggernaut + titan focus otherwise when protean progenitors also already have Chaos floors. Still should both be good for a little more spice in the already too-weak floors. Closes #3920.] -------------------------------------------------------------------------------- 28c56dd | gammafunk | 2024-08-03 11:44:42 -0500 fix: Correct a Bazaar item name (Oneirical) -------------------------------------------------------------------------------- f6a9f58 | David Lawrence Ramsey | 2024-08-03 11:02:19 -0500 Tweak Zin angel message. Refer to gambling as lawless, not evil; it's a chaotic, but not evil, act. -------------------------------------------------------------------------------- 300cd29 | David Lawrence Ramsey | 2024-08-03 09:14:30 -0500 Rename default djinni/naga tiles w/colours. So that all the pairs are next to each other in alphabetical order. -------------------------------------------------------------------------------- 41edf89 | David Lawrence Ramsey | 2024-08-03 08:31:18 -0500 Fix XL typo. Coglins get gizmos at XL 14, not 13. -------------------------------------------------------------------------------- 4a25f21 | David Lawrence Ramsey | 2024-08-03 07:48:03 -0500 Fix typo and capitalisation. -------------------------------------------------------------------------------- 20d766a | DracoOmega | 2024-08-03 04:36:59 -0230 Update changelog -------------------------------------------------------------------------------- 19b87b1 | David Lawrence Ramsey | 2024-08-02 22:21:21 -0500 Fix spacing. -------------------------------------------------------------------------------- 6abdf12 | regret-index | 2024-08-02 23:04:40 -0230 New Xom action: force speaking a slow Word of Recall The easiest way to interact with players in a game about killing monsters is to introduce more monsters, and while Xom's list of actions is very full of summons already, there are yet still further contexts and twists one can reasonably experiment with. This very rare bad Xom action, with controls on minimum XL and maximum tension, should reasonably stand out on a few fronts: it can be interrupted (and takes between 2x and 3x as long as a normal word of recall to do so, so there's lots of space to react), and it's pulling out actual monsters from the level and its vaults as opposed to generating yet more monsters one could flee and wait out timers for. Probably it's fine under Xom's continued flexibly unreliable nature? Definitely not any worse than when a Zot trap randomly does it. (Also, it allows lines like "The rat is forced to slowly start squeaking a word of recall!", which is a great notion in and of itself.) -------------------------------------------------------------------------------- c468895 | regret-index | 2024-08-02 22:54:56 -0230 Let Xom add an extra chaos brand to unrands (DracoOmega) "This implements an item flag that lets unrand weapons be described as 'chaotic' and gives them the chaos brand (on top of whatever brand or on-hit effects the unrand weapon might already have). This is intended solely as a Xom perk for Xom's bazaars. Regular rebranding can't work on unrands, and it felt like there could be some fun to be had with Xom breaking the rules and giving you a touch more chaos on some of the most interesting and exciting weapons." [Committer's notes: This gives a 37.5% chance of seeing a chaotic-touched normal unrand weapon distributed amongst the weapon types in a Xom bazaar, and a 37.5% chance of seeing a regular unrand that was already risky or chaotic enough without extra effects. Since chaos brand is actually a relatively poor fit on weapons besides ranged or short blades or top-end two-handers on a god that provides zero reliable emergency escape options, the power already baked into unrands should help cover for it. For the record, just to reiterate: absolutely do not provide this in any contexts besides Sprints or Xom's bazaars. This is solely meant as a rare treat for Xom worshippers in the base game.] -------------------------------------------------------------------------------- c472126 | regret-index | 2024-08-02 22:54:56 -0230 New Xom action: special bazaar banishment The most exciting part of Xom by a decent margin are the strategic benefits for worshipping them, since this lasts far longer than any given moment of Xom's whims passing by to make a situation worse or better. While direct gifts and mutations are relatively fine starting points, there's a decent space more to do something unique, especially with only one other god interacting with shops solely through direct player's choices of semi-permanent dungeon fixtures. This rare Xom action directly warps a character over to a unique Bazaar, as long as they have a sufficient amount of gold. (For technical reasons involving losing previous bazaar floors, this can't happen while in you're in a Bazaar or the Abyss. Whenever you exit, you'll arrive wherever you just were previously.) This Xom-exclusive bazaar itself contains all three of the following heavily customized shops: * "Party Supplies": Potions and scrolls with some risk to the user (e.g. immolation, silence, ambrosia), and a small amount of debuff darts, both for cheap and with extra-high quantities. * "Affordable Mysteries": Spellbooks leaning on effects Xom directly or indirectly uses across the non-conjurations non-elemental schools, some wands, some talismans with one randart, plus a manual that supports one of those prior books / wands / talismans. * "Avant-Garde Galleria": Chaos randart weapons, small chances for innately risky or chaotic unrand weapons and armour, two randart rings with a negative resist plus either ^Contam or ^Drain, and two randart orbs of mayhem / wrath / guile with a chance of a randart scarf of harm instead. This being done through a bazaar's shops rather than god gifting reasonably differentiates it from other god gift upgrades (including Xom's own untouched regular gifts), but it should hopefully feel quite distinct and memorable and exciting when one gets the opportunity, and it should also encourage people to try out more of riskier consumables, equipment egos, and negative artefact properties. -------------------------------------------------------------------------------- b3ecabc | David Lawrence Ramsey | 2024-08-02 16:56:14 -0500 Improve player blindness check. Use is_lifeless_undead() for consistency with everywhere else. -------------------------------------------------------------------------------- f771970 | David Lawrence Ramsey | 2024-08-02 16:47:16 -0500 Remove stray blank line/semicolon. -------------------------------------------------------------------------------- 3c87236 | David Lawrence Ramsey | 2024-08-02 16:27:52 -0500 Add a few more eye messages for Xom. -------------------------------------------------------------------------------- 1698bd0 | David Lawrence Ramsey | 2024-08-02 16:18:51 -0500 Reorder Xom body part checks a bit. Put eyes after ears, as is done in random_body_part_name(). -------------------------------------------------------------------------------- 9069b2d | David Lawrence Ramsey | 2024-08-02 16:16:06 -0500 Remove lack of eyes from players/monsters. Every player species/form is now assumed to have eyes. Only undead players (not counting living vampires) are unblindable and undazzleable. Monster vine stalkers also lose the unblindable flag. Eyes are still available as a random body part in Xom messages. -------------------------------------------------------------------------------- 9a6a6ae | David Lawrence Ramsey | 2024-08-02 14:54:43 -0500 Consistently add commas to definitions. -------------------------------------------------------------------------------- 857e39b | David Lawrence Ramsey | 2024-08-02 14:41:50 -0500 Properly ban eye sacrifices for eyeless players. It was done in the wrong place; Ru's sacrifice mutations are handled differently. -------------------------------------------------------------------------------- d77ae7e | DracoOmega | 2024-08-02 15:55:11 -0230 Fix ranged auto-fight behaviour with Soul Splinter (CarefulOdds) It wouldn't properly realize you couldn't usefully cast it on a monster that was presently soul-splintered. -------------------------------------------------------------------------------- 996240b | David Lawrence Ramsey | 2024-08-02 13:15:11 -0500 Fix comment wording. -------------------------------------------------------------------------------- 3fab5b5 | David Lawrence Ramsey | 2024-08-02 12:50:56 -0500 Fix comment typo. -------------------------------------------------------------------------------- 61fea11 | David Lawrence Ramsey | 2024-08-02 12:00:25 -0500 Add a few lines to Zin angels/goblin sharpers. Taken from an image in this Reddit thread (u/kuniqsX): https://www.reddit.com/r/dcss/comments/1ei6m5l/5_hand_blackjack_deal/ -------------------------------------------------------------------------------- 666e40f | David Lawrence Ramsey | 2024-08-02 11:54:20 -0500 Fix punctuation. -------------------------------------------------------------------------------- ec6e65a | David Lawrence Ramsey | 2024-08-02 11:03:18 -0500 Add another book magic entry to artefacts. -------------------------------------------------------------------------------- 9dd0097 | Monkooky | 2024-08-02 00:24:10 -0500 remove auto-hit flag this flag is entirely redundant; it is true exactly when aimed_at_feet is and checked exactly when aimed_at_feet is -------------------------------------------------------------------------------- c4cf240 | DracoOmega | 2024-08-02 02:29:43 -0230 Allow Mark of the Celebrant to trigger when djinn pay HP for spells (If such payment lowers them below 50%) -------------------------------------------------------------------------------- 5a228cc | DracoOmega | 2024-08-02 02:29:18 -0230 Make Permafrost Eruption actually unable to miss Since it was intended to be, and the description implies it is (as opposed to merely being very accurate). -------------------------------------------------------------------------------- 0da81c8 | DracoOmega | 2024-08-01 02:54:10 -0230 Fix typo in god description -------------------------------------------------------------------------------- 2a28826 | DracoOmega | 2024-08-01 02:54:10 -0230 Fix a future mutation indicator still showing on 'A' when it shouldn't -------------------------------------------------------------------------------- f732623 | regret-index | 2024-08-01 00:43:27 -0230 Vaults vaults batch (with extras) Part of the problem of the Vaults branch is that with its level generation focus on themeless minivaults making up the majority of every floor, there's not very much space to actually focus on the strength of vaults as something different from regular floor generation to notice as it stands out. The heavy work done on differentiating V from Depths has somewhat helped this, but for the most part, if there's no significant out-of-depth spam it can be difficult to actually distinguish floors as floors and not just opportunities for ironbound gimmicks to roll high and mean. This vaults batch, aside from one themed vault and a few vaults that try to place themselves throughout most of the game, is meant to somewhat address this with a few relatively simple themes and a depth-scaling lua function to help emphasize monsters the branch consistently already uses as instead part of given themed chambers- cold storage ice boxes, parks and zoos, charnelhouses, and intersection checkpoints for mages or ranged monsters. They're a little more likely to place monsters than other vaults because the depth scaling somewhat warps the capability to normally rely on normal monster band placements, but overall few should stand out versus what one could get already, while varying up the terrain and each game just that little bit more. (Also, this commit comes with a minor additional case to prevent weaponless training dummies from interrupting rest, and also consolidating the two "preserve_wall" and "no_wall_fixup" tags into one rather than splitting their vault usage between the two.) -------------------------------------------------------------------------------- 4455a2a | regret-index | 2024-08-01 00:43:26 -0230 Green tiles (pianoman523) The volley of thorns spell icon and a new extra-fancy altar for Jiyva, both with heavy edits. -------------------------------------------------------------------------------- 1ee3b3f | David Lawrence Ramsey | 2024-07-31 21:06:30 -0500 Mark serpent form as having a tail. And make sure it only works for constriction, not tail-slaps. -------------------------------------------------------------------------------- 75b3d6c | DracoOmega | 2024-07-31 23:14:36 -0230 Fix inverted logic in refactor aux attack checks. Players could use every aux they *didn't* have, instead of ones they did... -------------------------------------------------------------------------------- dcd205b | DracoOmega | 2024-07-31 21:44:54 -0230 Make Blindness actually reduce player aux accuracy (One of the pitfalls of it using an entirely different to-hit function...) -------------------------------------------------------------------------------- 31a074b | DracoOmega | 2024-07-31 21:44:54 -0230 Reword the names of a few aux attacks to look better in xv Avoiding such lines as "You have 80% to hit with your claws and 75% to hit with your claw." (This doesn't affect hit verbs, though will also affect miss messages.) -------------------------------------------------------------------------------- ee1fe2b | DracoOmega | 2024-07-31 21:44:54 -0230 Change how aux attack accuracy is displayed Previously, the small description of aux attack mutations would list trigger chance, accuracy, and base damage in one block, which misleadingly made it look like the accuracy was in some way a property of that specific aux attack. But in fact, all aux attacks have the same accuracy and this was just reporting the player's current to-hit with aux attacks in *general* (a fact that was misunderstood by literally everyone involved in a recent discussion about them) and additionally doing so using a scale of plusses that no one had any confidence about the meaning of. We already report player melee to-hit in monster descriptions in a human-readable way, so I am adding a description for aux attack accuracy there as well (if the current character has any) and removing the line from aux mutation descriptions. I tried to be careful that the math here was correct (there are multiple subtle differences between how the to-hit value is used by auxes versus normal melee attacks) but am still not 100% confident. -------------------------------------------------------------------------------- e50eda5 | DracoOmega | 2024-07-31 21:44:54 -0230 Refactor aux attack usability Instead of a switch statement in _extra_aux_attack(), add a is_usable() method to AuxAttackType (so that it is possible to direct query whether the player possesses a given aux attack type outside of trying to perform them. -------------------------------------------------------------------------------- 2b9147a | Implojin | 2024-07-31 18:39:45 -0500 fix: Disallow zigfig use on the orb dais (Lightli) Previously, it was possible to use a zigfig while standing on the orb dais, resulting in the zigfig being used without a zig entrance appearing. Here we mark the dais as "critical", hopefully preventing this and other issues in the future. -------------------------------------------------------------------------------- b43e308 | Implojin | 2024-07-31 17:49:59 -0500 fix: tweak colours of evokers in item stacks Following from 3b7b6a97b3 and 50297eb6a4, here we give evokers the same treatment as the previous commit. -------------------------------------------------------------------------------- 3b7b6a9 | Nikolai Lavsky | 2024-08-01 01:30:45 +0300 fix: tweak colours of artefacts in item stacks It's hard to notice artefact magical staves and artefact talismans in big item stacks, because their glyphs are coloured in darkgrey as if they were mundane items. This commit fixes that, and also gives unrandarts lightcyan colour as a followup to cf64465. -------------------------------------------------------------------------------- 5e7d71e | DracoOmega | 2024-07-31 06:13:40 -0230 Let orc wizard apostles know Soul Splinter and Grave Claw. -------------------------------------------------------------------------------- cbb5823 | DracoOmega | 2024-07-31 06:13:40 -0230 Let monsters cast Grave Claw Also mostly for ghosts and illusions. (Most of the code was already in place for this to work earlier; I just hadn't done the last bits.) Monsters, of course, are flagrant cheaters and don't have to care about ammunition for this spell. Ghosts, at least, are probably as full of the malice of the recently dead as they can hold. (This means the spell description could be a little misleading with the latter paragraph; in future I will try to find a way to fix that.) -------------------------------------------------------------------------------- bc9fe51 | DracoOmega | 2024-07-31 06:13:40 -0230 Let monsters cast Soul Splinter Mostly for ghosts/illusions at the moment, though who knows if another use will present itself in future. -------------------------------------------------------------------------------- d9bca62 | DracoOmega | 2024-07-31 06:13:40 -0230 Gently nerf Gravitambourine Make it require slightly more evocations to get a radius upgrade and decrease its Bind duration at less than ~11 evocations. -------------------------------------------------------------------------------- e2a70cf | DracoOmega | 2024-07-31 06:13:40 -0230 Prevent Injury Bond from being cast on firewood (regret-index) -------------------------------------------------------------------------------- afbbcc1 | DracoOmega | 2024-07-31 06:13:40 -0230 Make Blazeheart Golem explosion *actually* scale with spellpower. This has been bugged since the spell was first implemented and would always cause a 3d20 explosion regardless of spellpower (oh, the irony....). After so long seeming to not be wildly overpowered at this level, I was a little hesitant to nerf it to the originally-intended values, so I have moved those upward a little. It will now reach 3d20 at 80 spellpower instead of 100 (capping at 3d22 at 100 power). I expect it will still feel like it packs a sufficient punch (but it really was intended to care about spellpower.) -------------------------------------------------------------------------------- 87d6e9d | DracoOmega | 2024-07-31 06:13:40 -0230 Make recasting Canine Familiar give a minor duration boost at low duration It was possible if a familiar was already nearly expired when the player recast it (to heal/buff them) for it to poof before even making use of the instant attack you gave it. Now, ensure this doesn't happen by giving a few extra turns of duration if they were almost out. (This isn't enough to make it viable to keep them along with you at all times, but should ensure that if you spend MP in their direction that they will remain long enough to immediately make use of it.) -------------------------------------------------------------------------------- df025e5 | DracoOmega | 2024-07-31 06:13:40 -0230 Fix random rounding in Rimeblight spell description (Acrobat) -------------------------------------------------------------------------------- c1ca0b8 | DracoOmega | 2024-07-31 06:13:40 -0230 Display hoarfrost cannon damage in Hoarfrost Cannonade description To make it a little easier to tell how gear changes will affect your summons' bullets without having to actually cast the spell. -------------------------------------------------------------------------------- cde8aef | DracoOmega | 2024-07-31 06:13:40 -0230 Rename a couple confusing zap_types ZAP_FLASH_FREEZE wasn't actually used by Flash Freeze, which instead used ZAP_ICY_FLASH_FREEZE (while the former was used only by Creeping Frost). Rename these to actually correspond to the spell that uses them. -------------------------------------------------------------------------------- 480633a | DracoOmega | 2024-07-31 06:13:39 -0230 Clear the pursuers list after uncontrolled blinks/teleports This mostly addresses the rare case of a teleport going off (or dispersal trap being triggered) on a turn where the player had stepped away from some monster and this translocation moving them into range of the monster when they otherwise would not have been. (ie: it is possible to recieve an attack of opportunity if you step away from a monster, teleport, and then land 2 tiles away from their present location - even if you were nowhere near the monster when you moved). (Technically this makes the player immune to attacks of opportunity even in cases where they were already in range and shifted only a single tile, but that seems harmless.) -------------------------------------------------------------------------------- b985506 | David Lawrence Ramsey | 2024-07-30 22:38:28 -0500 Tweak a few Xom pseudo-miscast messages. -------------------------------------------------------------------------------- 9527bbf | David Lawrence Ramsey | 2024-07-30 22:35:04 -0500 Reorder Makhleb mut checks. Put them in the same order that's used elsewhere. -------------------------------------------------------------------------------- 46e0fb5 | David Lawrence Ramsey | 2024-07-30 21:22:27 -0500 Add a few more time names to artefacts. -------------------------------------------------------------------------------- 39ff337 | David Lawrence Ramsey | 2024-07-30 21:14:10 -0500 Add second placeholder for Globe of Annihilation. If the player had no Makhleb hell-mutation, it would mention drawing power from "the Hells themselves", but have no description for the energies produced; it now uses "hellish energy" as a placeholder there. -------------------------------------------------------------------------------- 79739bf | DracoOmega | 2024-07-30 22:25:53 -0230 Make Call Down Lightning a bit more visible when cast Without a beam trail, the default animation was very brief. Let it linger just a tiny bit longer. -------------------------------------------------------------------------------- 1adbacb | DracoOmega | 2024-07-30 22:24:22 -0230 Make cerulean imps more likely to speak after summoning them I actually went in to find out why the line to make them speak was 'broken' and couldn't actually trigger, but evidently they just had a ~96% chance to opt to say nothing when asked. These lines feel cute enough that I think they should be a little more common. -------------------------------------------------------------------------------- db1a49a | DracoOmega | 2024-07-30 22:20:13 -0230 Fix 'future XL mutations' key showing up all the time on 'A' (PJRamaglia) -------------------------------------------------------------------------------- bd53a00 | DracoOmega | 2024-07-30 21:14:37 -0230 Fix incorrect labels for local tiles paperdoll editor (inflori) Off-by-one since Coglins added an off-hand weapon slot. -------------------------------------------------------------------------------- ebd1993 | DracoOmega | 2024-07-30 21:13:38 -0230 Display Makhleb's 4* Destruction upgrade on the god power screen (cfcfcfcf) Not really happy with how hacky this code is, but it otherwise seems hard to insert the power at the appropriate point it is gained. -------------------------------------------------------------------------------- f4909a7 | DracoOmega | 2024-07-30 21:11:17 -0230 Slightly clarify a point in Mark of the Legion's description (Acrobat) -------------------------------------------------------------------------------- b563570 | DracoOmega | 2024-07-30 21:10:42 -0230 Let ?summoning work in the Crucible (Lici) It's not really easy to scale the results of this scroll with how dangerous the Crucible itself has scaled at any given time, but that's probably fine. (I've included all of the non-Tyrant Makhleb servant set in the list that the scroll can produce.) -------------------------------------------------------------------------------- b690a71 | DracoOmega | 2024-07-30 21:07:39 -0230 Prevent aiming Unleash Destruction at yourself (cfcfcfcfcf) The player couldn't be hurt by the beam itself, but would still pay the cost for the ability and waste time. -------------------------------------------------------------------------------- 73a98bb | DracoOmega | 2024-07-30 19:17:56 -0230 Display future XL-based mutations on the 'A' screen (elliptic) This commit will make the 'A' screen display mutations that will be gained predictably at a future XL (ie: *not* for demonspawn or base draconians, but for all other species-based mutations). I have attempted to word these to make it somewhat more clear that the player does not have the mutation in question *yet* (ie: turning 'you can' into 'you will be able to' and so forth.) Simple automatic string replacements cannot reliably shift the tense of everything, so a custom message to describe a future mutation can also be specified in mutation-data.h (and this is done for a few of them, including ones that are especially long or would be really confusing, like claiming that vampires will 'become afflicted by vampirism' by XL 3 because bat form is technically an uprade to the vampirism mutation... I'm not entirely happy with the implementation, but it should still be a mild status quo improvement. -------------------------------------------------------------------------------- a117348 | David Lawrence Ramsey | 2024-07-30 14:35:30 -0500 Fix punctuation. -------------------------------------------------------------------------------- 263b1d4 | David Lawrence Ramsey | 2024-07-30 14:22:50 -0500 Add demonspawn soul scholar quote. -------------------------------------------------------------------------------- cabdb54 | David Lawrence Ramsey | 2024-07-30 13:57:30 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 0340e30 | David Lawrence Ramsey | 2024-07-30 13:56:59 -0500 Tweak a hell message. We don't know if the player can taste things, and while there is a can_smell() function, there's no can_taste() function, and the sense of taste is mostly the sense of smell anyway if real-life rules apply here. As for the player's not having blood, the blood definitely isn't theirs in that case, so the message still works for them. -------------------------------------------------------------------------------- cddd9a8 | David Lawrence Ramsey | 2024-07-30 13:39:32 -0500 Add "mouth" to Xom's list of body parts. Also add a few messages for it. (Also, regarding the previous commit message, all players are guaranteed to have two arms, if not two hands [due to Ru sacrifices], so they're all have singular and plural external body part options.) -------------------------------------------------------------------------------- cc40c1e | David Lawrence Ramsey | 2024-07-30 12:34:31 -0500 Add "muscles" to the list of internal body parts. So an octopode (with no bones) in death-form (with no blood) has one singular internal body part (the soul) and one plural internal body part (the muscles), so that internal body parts always have a possible option. External body parts are covered in singular by the head, and in plural by the hands, so they always have a possible option already. -------------------------------------------------------------------------------- 8c2505f | David Lawrence Ramsey | 2024-07-30 11:58:18 -0500 Add another gizmo modifier. -------------------------------------------------------------------------------- cc2d2dd | David Lawrence Ramsey | 2024-07-30 11:44:11 -0500 Replace redundant gizmo entry (oops). -------------------------------------------------------------------------------- f42772b | David Lawrence Ramsey | 2024-07-30 11:11:58 -0500 Update Xom message to account for all body parts. -------------------------------------------------------------------------------- accad25 | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Add Xom messages for internal body parts. -------------------------------------------------------------------------------- 903400a | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Add "soul" to the list of internal body parts. -------------------------------------------------------------------------------- 7a905b2 | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Rework random body part handling. Properly separate internal and external body parts via a flag defined in mon-util.h, and actually include mon-util.h in mon-util.cc and xom.cc so that it's properly defined. -------------------------------------------------------------------------------- f36d2cf | David Lawrence Ramsey | 2024-07-30 11:08:13 -0500 Add another gizmo entry. -------------------------------------------------------------------------------- 8415c40 | patrick | 2024-07-30 11:26:26 -0400 Add more gizmo terminology -------------------------------------------------------------------------------- b2e4c65 | DracoOmega | 2024-07-29 19:09:05 -0230 Remove a very tiny chance to fail to place a Duel opponent monster::find_home_anywhere() (used as the default placement method for transiting monsters) isn't guaranteed to actually work. It tries 600 times to place a monster (choosing a random cell anywhere on the floor, which may be well outside the bounds of a portal vault) and afterward just gives up. This may be acceptable behavior for shafted monsters (though I am a little dubious even here), but in the case of Duel it results in the Duel immediately ending and the *next* time the player duels, that monster can appear alongside the new one. I'm not 100% sure this is the underlying cause of a recent bug, but it I can't see any other obvious cause, and this definitely is *possible* (if fantastically rare). Anyway, just place the duel target next to the player on arrival (like with stairs), which is more certain to work. (It will be relocated after that time anyway.) (Side note: monster::find_home_anywhere() doesn't appear to respect no-tele-into either, meaning it is probably possible to shaft monsters into display case vaults. Fixing this is somewhat non-trivial, though, since I think the most obvious implementation would also prevent monsters from taking stairs or hatches into no-tele-into areas as well, and I think at least some vaults make use of this at present?) -------------------------------------------------------------------------------- f184c26 | DracoOmega | 2024-07-29 19:02:41 -0230 Place duel opponents properly if you have LoS range < 3 (inflori) Duel tries to place your opponent a random 3-5 tiles away from the player, in a spot that the player still can see. But it is possible for kobold with scarf of shadows and Robe of Night to have LoS 2, making those two conditions mutually exclusive. This resulted in the monster placing 'anywhere' instead, which could include in the spectator stands where it was impossible to reach them.... Now the min placement distance will be capped by you.current_vision -------------------------------------------------------------------------------- cea2b13 | gammafunk | 2024-07-29 12:05:42 -0500 fix: Remove a teleport closet (Natris,nicolae) For nemelex_altar_shiori, some glyphs that became floor were not flagged with `no_tele_into`. Some glyphs inside unreachablehk -------------------------------------------------------------------------------- 38ce937 | Christopher Partin | 2024-07-28 21:13:21 -0500 Update README.md Added a link right below # How to Play to help navigate users to the installation help documentation. This documentation is nested under several folders. For new users or those who aren't technically-savvy, having these installation instructions directly in the README, under How to Play, makes sense. That way they don't have to go searching if they run into any confusion, which will cause frustration. [Committer's note: Removed unneeded initial slash from link, and reformatted commit message.] -------------------------------------------------------------------------------- 1bdf802 | regret-index | 2024-07-28 23:05:04 -0230 Idiosyncratic earthworks (pianoman523) New barreling boulder tiles, a more convincing Charlatan's Orb, and something heavily repurposed into providing unique stone walls for the Abyss. Abyss as a result has one of three different tile colours of stone each game, which is a little weird but looks unique enough that I'm willing to take the chance on this experiment. -------------------------------------------------------------------------------- 4efc981 | David Lawrence Ramsey | 2024-07-28 19:08:27 -0500 Put Makhleb's mut desc checks in the same order. In case someone uses wizard mode to grant themselves multiple ones, the description will be as accurate as the code is. Also, remove a duplicate "the" from a fallback message. -------------------------------------------------------------------------------- 3abf8ce | David Lawrence Ramsey | 2024-07-28 18:43:01 -0500 Remove unneeded line breaks. -------------------------------------------------------------------------------- 19d7f82 | David Lawrence Ramsey | 2024-07-28 18:36:37 -0500 Also mention piercing in Hell-upgraded UD. -------------------------------------------------------------------------------- 9376fc3 | David Lawrence Ramsey | 2024-07-28 18:21:46 -0500 Mention how your associated Hell changes UD. Closes #3938. -------------------------------------------------------------------------------- a9c1aa2 | DracoOmega | 2024-07-28 14:47:06 -0230 Fix weird typo with Infernal Servent power boost from hostiles (ge0FF) -------------------------------------------------------------------------------- 7aa91e7 | regret-index | 2024-07-28 06:22:01 -0230 Improve calcifying dust visibility (pisaster) While the older calcifying dust tiles were troubled ones on an aesthetic level, they admittedly were all quite difficult to miss- fully opaque and mostly a colour not densely provided in most capacities. For visibility's sake, I'm making the new tiles somewhat more filled in, brighter, more saturated, and fully solid. This still isn't perfect, but I'd honestly prefer more changes on other system levels for this sort of matter anyway for other clouds, as many other cloud tiles are much harder to see and mostly rely on not being nearly as prominent, in much higher quantities, or both. Some sort of not-standing-in-a-harmless-Cloud status, maybe? (Also, I adjusted the default danger highlighting for calcifying dust in general- its phrasing doesn't seem to account for it doing less than one exclamation mark's worth of damage, which is very silly in its inconsistency.) -------------------------------------------------------------------------------- f9c04a0 | regret-index | 2024-07-28 06:22:01 -0230 Fruit tiles (meckryl) and spider tile (pianoman523) The cache of fruit and culicivora tiles, specifically. Both nice improvements on accuracy and colour. -------------------------------------------------------------------------------- 03e56d1 | DracoOmega | 2024-07-28 03:07:22 -0230 Don't display Charms/Transmutations skills in Djinn dumps (inflori) When manually enabling spell skill training on a djinn (either for a character type that started with it off, or toggling it off and on again on some other character), it would enable *all* magic skills, including those which had been removed. I don't think had much effect, since it wouldn't train them or display them in the skill menu, but they WOULD show up in chardumps after that point. -------------------------------------------------------------------------------- c00c2e1 | DracoOmega | 2024-07-28 02:10:23 -0230 Checkwhite -------------------------------------------------------------------------------- 6854c70 | DracoOmega | 2024-07-28 01:54:55 -0230 Fix another lua test assert Apparently fsim.lua was turning the player into a minotaur, which caused them to have horns by the time mutation.lua rolled around, which prevented them from gaining antennae (and had previously only been stopped by mut_species.lua turning them into something else first). Instead, change into something with no *physiological* mutations to conflict with tests, during this test itself. (I do still wonder if an explicit test species makes sense...) -------------------------------------------------------------------------------- 6b3df5f | DracoOmega | 2024-07-28 01:54:55 -0230 Improve Mark of the Tyrant's hostile summon behaviour (Lightli) Getting a hostile demon from Infernal Servant also raises the quality of the friendly demon you get, but with 25+ invo and Mark of the Tyrant, this made demon qualify fall off the top of the chart and summon the default demon (a red devil) instead. Additionally, being able to get actual hostile fiends at the highest levels of invo with this mark could feel overly punishing for the player's investment, so let's cap hostiles to the same level that they would be at high invo without having this mark. -------------------------------------------------------------------------------- a89054e | DracoOmega | 2024-07-28 01:54:55 -0230 Raise Formicid translocation aptitude to +2 After felid and spriggan's massive +4 translocations apt, virtually no other species in the game has better than 0 (aside from +1 for Deep Elf and Barachi, who have positive apts with virtually every magic). I find the idea of a species who cannot translocation *themselves* being otherwise one of the most adept at using it to be amusingly paradoxical, and there are multiple high level spells now that a formicid would be very happy to cast (even while still lacking access to the low-level bread and butter of the school, which I think could create some interesting tension.) Let's see how it feels. -------------------------------------------------------------------------------- 3a655b3 | DracoOmega | 2024-07-28 01:54:54 -0230 Fix a crash with killing an enemy with the 1st of 2 retaliation attacks More specifically, with killing one via minotaur retaliatory headbutt when the executioner blade aux from Mark of Execution was active. It would try to retaliate a second time, after the monster was dead. -------------------------------------------------------------------------------- fafa182 | DracoOmega | 2024-07-28 01:54:54 -0230 Tweak some mutation lua tests There are now no species in Crawl without any innate mutations at all, so it is not possible for the lua tests to rely on any playable species not having any. In fact, it turns out that mutation.lua *already* silently relied on you being a species with no innate mutations, even though that had stopped being true by default since humans were changed, and it was only due to 'cleanup' at the end of a previous test in the default ordering that it didn't assert. (ie: it would already assert if you ran the test on its own) I've changed mut_species.lua to restore the player to the species they were at the start of the test rather than to any specific species (this feels closer to the idea of 'cleanup' to me and is what is currently done with the player's position.) As for mutation.lua, I changed the asserts to only ensure that NON-innate mutations are cleaned up (this was only done during random mutation tests anyway, and not ones that cared about mutation conflicts). If we really want to ensure a blank slate of innates for the purposes of tests, I think we would be better off either creating a method specifically for this pupose or a vanilla species specifically to be used for tests only (and thus not depending on vagueries of design changes over the years). -------------------------------------------------------------------------------- 766c39c | DracoOmega | 2024-07-28 01:54:54 -0230 Give Deep Elves innate increased MP regen Deep Elves are the last remaining species without anything unique about them besides numbers - even humans have a neat special gimmick now! And while they are a fairly popular and extremely iconic species for pure casters, many skilled players consider them to be on the weak side even within their own domain - their skills at magic simply not outweighing their fragility. While winrate should not be a primary concern with species design (cf. mummies!), I think this is a case where it's possible to make them a little stronger and also a little more fun without fundamentally affecting how they play to anyone who enjoys their current incarnation - something minimally intrusive that will make them better at specifically the thing they are already chiefly associated with doing. And I firmly believe everyone likes having a little something they can point at about a species they like and say "This is a thing they can do that no other species can!" Let's try giving Deep Elves one of those things! (And given the positive reaction that was voice dabout a previous changelog update that falsely claimed this change had already been made, I suspect many people will be happy to see it.) -------------------------------------------------------------------------------- f17e09b | DracoOmega | 2024-07-28 01:54:54 -0230 Make tides look a little better around some pseudo-walls (regret-index) While trees and statues are 'solid', they don't actually visually occupy all of their tile, and having the tide in Shoals make a hard cut off around them looked kind of bad. This generally looks much nicer. -------------------------------------------------------------------------------- dce7167 | DracoOmega | 2024-07-28 01:54:54 -0230 Don't let Vessel of Slaughter be dispelled It would even immediately throw the player into the Crucible if an enemy did this! -------------------------------------------------------------------------------- b58bf77 | DracoOmega | 2024-07-28 01:54:54 -0230 Don't crash on using Vessel of Slaughter in Sprint This one *does* potentially allow 'stalling' in Meatsprint specifically, but Djinn warpers having Vhi's is probably more balance-affecting than this is (and what *is* Meatsprint balance, anyway?) I don't expect it should be problematic in other ones). -------------------------------------------------------------------------------- cfb98ad | DracoOmega | 2024-07-28 01:54:54 -0230 Re-enable Duel in Sprint There were some past concerns about it affecting the balance of certain sprints by letting the player duck out of situations that were never intended to allow a breather, but the current version of Duel mostly doesn't allow using it to stall. It seems like it should be fine to me. -------------------------------------------------------------------------------- 3ada536 | DracoOmega | 2024-07-28 01:54:54 -0230 Mildly reduce Soul Splinter's power This has been a well-liked and effective spell, but might be a little bit TOO effective. This lowers its health by ~30% and decreases its damage a little when extracted from enemies with more than 2 HD. -------------------------------------------------------------------------------- d8249b9 | DracoOmega | 2024-07-28 01:54:54 -0230 Prevent recasting Soul Splinter on a monster with a wisp already out Or at the very least, say that they're not susceptible and prevent it from working (being beam-targeted makes it a little hard to outright prevent it from being cast in the direction of an ineligable monster). This prevents the current wierdness of it making weakness wear off the target when you recast it (as well as strange message ordering). Additionally give better messages when the wisp doesn't form due to a lack of adjacent space (and likewise don't auto-target an enemy in such a position). -------------------------------------------------------------------------------- c485ba4 | DracoOmega | 2024-07-28 01:54:54 -0230 Refactor and simplify how monsters follow the player across stairs The code that handled determining which monsters would follow with the player when they took stairs or transporters had some opaque and complicated behavior which may have once served an important purpose, but enough of the game has changed around it that I think a simpler and more intuitive method could be better. Namely: friendly monsters could follow the player from up to 5 tiles away from the staircase, but only so long as they were connected in a contiguous chain, and *only* if there was not a single non-friendly monster adjacent to the player at the same time (at which point the max distance allies could be pulled from was 1). Note that 'non-friendly monster' in this case included PLANTS. So merely being near a plant would cause you to leave allies behind which you'd normally expect to follow you. Note also that this chain didn't care about line of sight, so you could pull along things around multiple corners, just so long as they were all touching each other. There was additional behavior of flagging monsters as MF_TAKING_STAIRS even when we knew they *couldn't* take stairs, just so they could count as links in that chain to allow access to stair-taking allies who might be behind them, and needing to juggle separate return values for whether that flag *really* meant they were taking the stairs or not. (Also, if one of them broke the chain during transit, the rest of your allies wouldn't arrive...) The original stated purpose of this code was to prevent zombies and summons from blocking perma-allies behind them from travelling with the player, but in the time since it was written, interlevel-recall was added and most perma-allies removed from the game. There just isn't a compelling need for this additional complexity anymore, in my opinion. The new logic is: stair-using allies can follow from 3 tiles away (so long as the player can see them) and adjacencies don't matter. MF_TAKING_STAIRS should now only be used for monsters who are *actually* taking the stairs, and determining followers can be done via a simple radius_iterator instead of a sort of breadth-first search. This does allow you to pull allies that are clearly not adjacent to the you through transporters, which are instant, but it's not like the previous logic ever pretended the monsters were walking multiple tiles into the gate under their own power in a single turn anyway. I think it should be fine. (I have also fixed a few other minor bugs at the same time, such as it being possible to seperate Dowan and Duvessa if one of them gets confused after you start taking the stairs but before you finish.) Finally, since we no longer need to keep non-stair-using allies alive during the entire transit process merely to determine which monsters WILL transit, I have moved the code to kill such summons before it, which can help with certain bookkeeping. -------------------------------------------------------------------------------- f8c9cd6 | DracoOmega | 2024-07-28 01:54:54 -0230 Fix being unable to fire Unleash Destruction through plants This was because Unleash Destruction lacks piercing before 4* and the zap type used for the tracer in this case wasn't actually defined (and the logic was backwards anyway...) This fixes #3941 -------------------------------------------------------------------------------- c1c50dc | DracoOmega | 2024-07-28 01:54:54 -0230 Don't claim that battlespheres and boulders are 'summoned allies' When you leave them behind by taking the stairs. Battlesphere already has its own messages and I doubt anyone would expect a tumbling boulder to follow them down the stairs at any rate. -------------------------------------------------------------------------------- f1d1f66 | DracoOmega | 2024-07-28 01:54:54 -0230 Expire friendly summons upon leaving a level instead of returning to it This makes bookkeeping for a number of things easier (since summoners can be notified that their summons expired while they're still on the same floor as each other instead of possibly never) and I think it more intuitively fits what the player would expect to happen anyway. I have slightly simplified the relevant code after moving it to remove cases I don't think matter anymore (ie: there are no more Yred perma-allies that *aren't* bound souls). One trivial behavioral change is that if you leave summons behind and then immediately return to the floor you just left, you won't see any clouds of translocational energy left behind where they were standing. I don't think this really matters. -------------------------------------------------------------------------------- a12b9cf | David Lawrence Ramsey | 2024-07-27 20:01:54 -0500 Remove soul-ripe check for Yred lit torch kills. Killing a ripe soul apparently bypasses the lit torch kill routine entirely when it becomes a bound soul. -------------------------------------------------------------------------------- 3445740 | David Lawrence Ramsey | 2024-07-27 19:47:19 -0500 Use the possessive for Yred souls/Beogh donors. Also ensure that unseen kills with the black torch unlit use "a" instead of "the", as is done for such kills with the black torch lit. -------------------------------------------------------------------------------- a15a517 | DracoOmega | 2024-07-27 14:26:07 -0230 Fix the Crucible of Flesh's branch description not displaying properly. -------------------------------------------------------------------------------- 83ca460 | DracoOmega | 2024-07-27 14:24:19 -0230 Fix Makhleb (and Veh/TSO...) heal-on-kill chance (Acrobat) Due to an issue with bracketing in 6009e8ebb8f3537a9b757f7d46b1154c4f9f549e the heal chance didn't smoothly scale between 1* and 6*, but rather remained at 30% at 1* until jumping suddenly to 80% at 6*. This should fix that. -------------------------------------------------------------------------------- d116fae | DracoOmega | 2024-07-27 14:06:51 -0230 Slightly clarify some code regarding kills by Dith shadow mimic Since the revamp, shadow mimic no longer tries to pretend it has the player's MID, so I'm pretty sure it's not necessary to seperate this logic (and the comment is outdated at any rate). -------------------------------------------------------------------------------- 1ab59e1 | DracoOmega | 2024-07-27 14:06:51 -0230 Make Dimensional Bullseye default targeter prefer the most distant enemy Instead of defaulting to the closest (which is often pointless). The hope is this is a very minor improvement to QoL when using this spell frequently. -------------------------------------------------------------------------------- 75a34a4 | DracoOmega | 2024-07-27 14:06:51 -0230 Have Beogh-pacified Orc drop their equipment upon leaving level (Acrobat) Automatically pacifying orcs who were wearing equipment the player wanted could be a sometimes-frustrating experience for Beogh worshippers. The heavy penance Beogh exacts for attacking neutral orcs was intended to discourage the deeply unflavorful act of murdering your converts to steal their stuff, but in practice it was still sometimes possible to body-block their exit from the level and find something else to kill them for you. I'm not sure exactly how often this was practical, or how commonly players actually did this, but at the same time I don't know that 'randomly lose access to a monster's items from time to time' is an especially interesting thing to try and preserve. So now pacified orcs will simply drop all their items when they leave the level. I've tried to flavor this in the most sensible way I could think of (since one assumes they're not completely giving up the sword to live in the woods and still have a use for those items themselves!). But you *are* the possible messiah after all... -------------------------------------------------------------------------------- 5b40a6c | DracoOmega | 2024-07-27 14:06:50 -0230 Make Arachne's band actually place Due to this oversight, Arachne's band had *never* placed after she was moved outside of Spider, and somehow this never got reported despite her description and dialogue repeatedly mentioned this presence. >.> The multiple buffs she recieved were done under the assumption that her band had been spawning properly all along, but let's see how she performs now that they have finally been reunited. -------------------------------------------------------------------------------- 1bfce13 | David Lawrence Ramsey | 2024-07-27 10:59:45 -0500 Adjust Crucible of Flesh branch naming. The short name shouldn't have an initial "The" (so the Place: entry doesn't display "a The Crucible"), and the full name shouldn't have its initial "The" capitalised (so artefacts named after it don't have a capitalised "The", as artefacts named after other branches don't). -------------------------------------------------------------------------------- 8575986 | David Lawrence Ramsey | 2024-07-27 09:46:08 -0500 Fix punctuation. -------------------------------------------------------------------------------- 26e7247 | David Lawrence Ramsey | 2024-07-27 09:24:02 -0500 Don't display Makhleb abilities w/o descriptions. Only brand 1 has an associated god ability description. Attempting to display brand 2 or 3 will erroneously add a "None." to the the end of Makhleb's god abilities list, so skip doing that. Closes #3937. -------------------------------------------------------------------------------- 59ecee1 | David Lawrence Ramsey | 2024-07-27 08:47:33 -0500 Remove redundant code. Dith's behaviour in describe_god_powers() is the same as the default. -------------------------------------------------------------------------------- 139e194 | regret-index | 2024-07-27 00:48:33 -0230 Some experimental projectile & cloud effect tile placeholders These new tiles are mostly meant to try and reduce Crawl's use of the exact same single cyan blast for effects themed after translocations, metal, lightning, and necromantic effects, alongside a few others. These new effects are for: * Metal Splinters (using roctavian's Sandblast) * Splinterspray and Volley of Thorns (also using that Sandblast) * Force Lance (using snw-0's spell icon for Force Lance) * Harpoon Shot (using roctavian's Stone Arrow and Iron Shot effects) * Ghostly Fireball (using unused Warp Weapon, Guardian Statue, and Kitsune tiles by Denzi, jpeg, and amcnicky) * Calcifying Dust (using snw-0's seething chaos clouds) (The Ghostly Fireball looks a little weird for a fireball but fine for a negative energy effect, and that spell already probably should be joined back to other negative energy themes if it's not going to have the healing effect- even will-o-the-wisps didn't end up becoming undead. This still leaves out Flashing Balestra and Momentum Strike in terms of keeping the blast mostly for lightning effects, but I don't know what to use for the former and the latter is part of a couple different effects that should be adjusted to actually draw the beam at all times instead of only when it misses.) -------------------------------------------------------------------------------- 51ccf8c | gammafunk | 2024-07-26 22:12:33 -0500 feat: Extend and clean up a clua debug function For `crawl.stack()`, allow passing a coroutine as an argument, so that we can examine its stack instead of the current clua one. This is necessary for debugging something like qw, which wraps its main execution in a coroutine. I use standard lua functions for checking when an argument is a lua "thread" (lua's terminology for coroutines) and converting a coroutine into a lua state. The approach used in this commit is modeled on what the `debug` library `stacktrace()` function does to examine coroutines, as seen here: https://github.com/crawl/crawl-lua/blob/master/src/ldblib.c#L99 I've tested this with qw, and it works as expected. This commit also removes the request in the call `lua_getinfo()` for the number of upvalues, since this isn't used. It also fixes up and completes the lua documentation of `crawl.stack()`. Resolves #2677. -------------------------------------------------------------------------------- 3a32abd | mgdelmonte | 2024-07-26 22:03:11 -0500 Add `crawl.stack` function to return the current Lua stack. Committer's Note: Squashed a subsequent bugfix commit that used snprintf since we use a fixed-length buffer. There were concerns expressed in the #crawl-dev channel about allowing introspection from clua, but after looking over this implementation I think it's fine. The `debug` lua library supplied by lua itself does far more than what this simple stack printing function is doing, and probably needs to remain unavailable from clua. The debug information gathered by `crawl.stack` is as minimal as possible, it can only ever look at clua state, and it only ever obtains basic strings about each function's activation record as supplied by the `lua_Debug` struct. -------------------------------------------------------------------------------- c489626 | David Lawrence Ramsey | 2024-07-26 11:19:32 -0500 Add another Donald line for new Makhleb. -------------------------------------------------------------------------------- 35137ae | DracoOmega | 2024-07-26 12:40:34 -0230 Add a default force_more for Makhleb offering Marks (ge0FF) -------------------------------------------------------------------------------- 7459a59 | DracoOmega | 2024-07-26 12:23:52 -0230 Fix indentation -------------------------------------------------------------------------------- 3eb0283 | DracoOmega | 2024-07-26 12:23:51 -0230 Don't let the player use Vessel of Slaughter while a vessel of slaughter While the instant damnation blast makes this potentially useful, and it doesn't even extend duration (thus delaying the Crucible), it's not the most intuitive thing and was never intentional. (Also properly mark the ability as disabled inside the Crucible, rather than merely have it abort on using.) -------------------------------------------------------------------------------- 1eedee0 | DracoOmega | 2024-07-26 12:23:51 -0230 Fix %s falsely claiming Vessel of Slaughter gives 'half damage' (ge0FF) A remnant from an earlier iteration. -------------------------------------------------------------------------------- b0f3c17 | Nikolai Lavsky | 2024-07-26 17:46:44 +0300 fix: don't brand self with a buggy note description Also, remove an unnecessary space and full stop for consistency with other `perma_mutate()` and `temp_mutate()` calls. -------------------------------------------------------------------------------- a2252a6 | David Lawrence Ramsey | 2024-07-26 08:36:09 -0500 Add more comma fixes (ge0ff). -------------------------------------------------------------------------------- 796cbfd | David Lawrence Ramsey | 2024-07-26 08:28:35 -0500 Fix wrapping. -------------------------------------------------------------------------------- 309b93d | David Lawrence Ramsey | 2024-07-26 08:28:35 -0500 Fix wording. -------------------------------------------------------------------------------- a62e944 | David Lawrence Ramsey | 2024-07-26 02:23:56 -0500 Fix typo. -------------------------------------------------------------------------------- 5e83875 | David Lawrence Ramsey | 2024-07-25 23:57:48 -0500 Fix incorrect comma in inexperienced mutation. -------------------------------------------------------------------------------- f333cd2 | David Lawrence Ramsey | 2024-07-25 23:57:04 -0500 Revert one more incorrectly added comma (DracoOmega). This partially reverts commit d8dc43ca6bb7975a14134bd797f78f8a4c8ebf60. -------------------------------------------------------------------------------- fff831d | DracoOmega | 2024-07-26 02:18:20 -0230 Fix a crash upon using Vessel of Slaughter (Lightli) This one is sort of amusing, since it didn't crash for me locally. But apparently if you try to call zappy to fill out a beam struct for a zap with no player defined hit/damage values, and are in wizmode, it will *silently* replace those empty values with the monster equivalent zap. But outside of wizmode, it will not (and then promptly assert due to not having any values). And of *course* I do my testing and development in wizmode... >.> -------------------------------------------------------------------------------- e40bc53 | David Lawrence Ramsey | 2024-07-25 23:46:29 -0500 Revert some incorrectly added commas (DracoOmega). This partially reverts commit d8dc43ca6bb7975a14134bd797f78f8a4c8ebf60. -------------------------------------------------------------------------------- cde6273 | DracoOmega | 2024-07-26 02:00:49 -0230 Fix missing Vessel of Slaughter ability (Lightli) -------------------------------------------------------------------------------- dde1e95 | David Lawrence Ramsey | 2024-07-25 23:22:30 -0500 Add another ghost line for new Makhleb. -------------------------------------------------------------------------------- faf5e19 | DracoOmega | 2024-07-26 01:33:07 -0230 Flag Brand Self abilities as hurting the player This may not be a sufficiently emphatic warning for how much they hurt, but it's at least better than claiming they cost nothing. (And is about the same as what Kiku's Brand Weapon With Pain ability says.) -------------------------------------------------------------------------------- 4064a0e | David Lawrence Ramsey | 2024-07-25 23:01:36 -0500 Update a few Donald lines for new Makhleb. -------------------------------------------------------------------------------- 7e27316 | David Lawrence Ramsey | 2024-07-25 22:48:55 -0500 Add another Makhleb executioner line. -------------------------------------------------------------------------------- e8675a7 | David Lawrence Ramsey | 2024-07-25 22:42:42 -0500 Rewrap Fugue status description. -------------------------------------------------------------------------------- 0802471 | David Lawrence Ramsey | 2024-07-25 22:42:04 -0500 Add comment regarding now-unused ability flag. So it can be more easily reused. -------------------------------------------------------------------------------- d8dc43c | David Lawrence Ramsey | 2024-07-25 22:39:05 -0500 Fix typos/spelling/wording/punctuation. -------------------------------------------------------------------------------- fd94369 | DracoOmega | 2024-07-25 23:22:04 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- fed0f14 | DracoOmega | 2024-07-25 22:56:49 -0230 Update Makhleb powers description a little -------------------------------------------------------------------------------- 54559aa | DracoOmega | 2024-07-25 22:56:49 -0230 Save compat code for existing Makhleb worshippers Will set up the selection of Marks, as well as confer a random destruction flavour if they're already at 4* or above. -------------------------------------------------------------------------------- 718c1bd | DracoOmega | 2024-07-25 22:56:49 -0230 Nudge up Unleash Destruction's cost and damage -------------------------------------------------------------------------------- c225357 | DracoOmega | 2024-07-25 22:56:48 -0230 Add a note and milestone for accepting Marks from Makhleb -------------------------------------------------------------------------------- 30a9add | DracoOmega | 2024-07-25 22:56:48 -0230 Add icons for Makhleb Mark mutations/abilities (regret-index) -------------------------------------------------------------------------------- 2c43a06 | DracoOmega | 2024-07-25 22:56:48 -0230 Rename destruction flavour mutation enums -------------------------------------------------------------------------------- 07fbe39 | DracoOmega | 2024-07-25 22:56:48 -0230 Makhleb capstone: Mark of the Fanatic The most flashy and complex mark by far, this grants the player the Vessel of Slaughter ability - a high piety-cost ability that transforms them into a demonic avatar of Makhleb and unleashes a large blast of damnation around themselves as they do so. While in this form, the player has demonic resistances (including torment immunity), will invulnerability, takes 1/3rd less damage from all sources, recieves doubled healing from kills, and has a bonus to all outgoing damage proportional to how low health they were when they activated the ability (with the expected healing from damnation kills encouraging the player to 'push their luck' a little). But in exchange, once the transformation wears off, the player will be dragged into the Crucible of Flesh and made to suffer and slay in payment. The Crucible is a medium-size portal arena that continually spawns waves of hostile demons (scaled to the player's level and also how many runes they have collected beyond 3) and paralyzed mortal victims. The player must earn their exit by finding and slaughtering enough of these victims (killing demons also counts for half as much, but the faster the player can manage it by taking out 'helpless' targets, the less bad things will be for them.) Killing a mortal victim will immediately spawn another somewhere else on the map, while demons instead arrive at semi-regular intervals (up to a cap). Kills in the Crucible grant no xp or items, but still count for Makhleb's heal-on-kills passive, to help allow the player to sustain themselves (since resting will often be difficult here). There are also a small number of single-use teleport traps scattered around which the player can use for short-term escapes. In some ways, the gameplay of the Crucible is reminiscent of being banished, but should still be sufficient different as to be distinct - the map is pre-revealed and stable, it has walls instead of being endless, the monster set is more controlled, ?teleport works the same as usual, etc. A fundamental flavor aspect of Mahkleb's Marks is about accepting hellish bargains at the cost of oneself, and I felt like at least one of them should lean as hard as possible into classical 'deal with the devil' flavour: tremendous power at a cost one may come to regret later. And Vessel of Slaughter's power is undeniable, and its cost unique. I hope people find it fun! (I am sure various numerical knobs will need tweaking, since this is a complex double-edged effect and it should both feel worth it AND dangerous). (I also plan to replace Makhleb wrath with use of the Crucible so that we can fully eliminate all the unsatisfying direct-damage wrath effects that tend to either do nothing or kill the player with little counterplay). Massive credit to regret-index for designing the portal vault (with heavy subvaulting randomization), as well as the Crucible wall tiles and tiles for slaughter form. Couldn't have done this without her. -------------------------------------------------------------------------------- 182a3b3 | DracoOmega | 2024-07-25 22:56:48 -0230 Mahkleb capstone: Mark of Atrocity This Mark increases both the power and cost of the player's Unleash Destruction ability each time it is used consecutively (ie: without doing anything else inbetween). Upon using it a 4th time, it will also unleash 4 additional empowered bolts of destruction at random distant targets and reset this buff. Some of the additional cost is in flat HP, making this slightly better in relative terms on high HP species. -------------------------------------------------------------------------------- a31ef7c | DracoOmega | 2024-07-25 22:56:47 -0230 Mahkleb capstone: Mark of Execution Allows a fragment of an executioner to rest dormant inside oneself. Whenever you kill an XP-granting enemy in melee, there is a 1-in-8 chance for it to awaken and manifest their iconic whirl of blades around the player. For the duration, the player gains rampaging and a very good aux attack (whose base damage scales with XL) which also triggers upon the player dodging (like minotaur retaliatory headbutts). The duration of this status effect is very brief, but it does not expire for actions that the player spent attacking (allowing one to keep it up indefinitely as long as they keep swinging). -------------------------------------------------------------------------------- 21b3c34 | DracoOmega | 2024-07-25 22:56:26 -0230 Refactor melee aux attack handling slightly This is to allow performing an individual specific aux attack without needing to perform all the rest of the attack round at the same time. There should be no functional change caused by this commit. -------------------------------------------------------------------------------- 6638cf3 | DracoOmega | 2024-07-25 22:56:24 -0230 Makhleb capstone: Mark of the Celebrant Whenever a player with this mark is reduced to 50% or less HP, they unleash a flurry of blood arrows aimed randomly at nearby enemies (at least one per enemy, though if there are fewer than 8, it may shoot at the same enemy up to twice, with the remaining shots scattered randomly). Rather than a time-based cooldown, the passive recharges immediately when the player returns to full HP again - which in some situations might even happen due to Makhleb's healing in a protracted battle. To help this slightly, kills made with these blood arrows will always trigger Makhleb's healing passive. Given that it is effectively 'easier' to trigger and recharge with less max HP, and provides an immediately response to help stabilize after spike damage, it is expected this will be relatively more appealing to lower HP / EV-based characters than Marks which rely on paying flat HP instead. -------------------------------------------------------------------------------- 33c4ccf | DracoOmega | 2024-07-25 22:32:52 -0230 Remove a couple outdated comments (and some irrelevant code) Exploding spores haven't made monsters beneath themselves in a long time, and likely won't again (certainly not in this manner, at any rate.) -------------------------------------------------------------------------------- 06b347f | DracoOmega | 2024-07-25 22:32:52 -0230 Makhleb capstone: Mark of Haemoclasm This mark gives a passive 10% chance whenever the player kills a monster themselves for it to explode in a violent rain of gore, damaging enemies in a 3x3 area. The damage the explosion does is proportional to the max hp of the thing killed (and cannot harm the player or their allies). If an enemy dies to this explosion, they instead have a 100% chance to explode, allowing for occasional dramatic chain explosions (especially if the player has been using AoE damage sources up to this point, which likely gives it additional synergy with axes and conjurations). -------------------------------------------------------------------------------- ecea4f0 | DracoOmega | 2024-07-25 22:32:52 -0230 Different tiles for each flavor of Destruction (regret-index) -------------------------------------------------------------------------------- 9c19790 | DracoOmega | 2024-07-25 22:32:52 -0230 Mahkleb capstone: Mark of Annihilation Replaces Infernal Servant with Globe of Annihilation, which launches an iood-like projectile that explodes in a large blast of the player's signature destruction. It moves at speed 15 (so about half the speed of an iood), and the size of the explosion increases with the distance travelled: no explosion (and only 1/2 damage) at point-blank range, radius 1 at 1 tile travelled, 2 at 2-3 tiles travelled, and finally 3 at 4+ tiles travelled. Part of the logic of this replacing servant is that while this is a destruction-flavored ability, I didn't want it to completely eat up having a 'free' conjurations button of flexible elements with something much more expensive and less flexible. And it wouldn't play very well with servants anyway, so the loss might not be that meaningful. (I considered it simply being a 3rd ability, but at the moment am saving that for something a bit flashier; I could be convinced otherwise, with testing.) -------------------------------------------------------------------------------- 07ef810 | DracoOmega | 2024-07-25 22:32:51 -0230 Makhleb capstone: Mark of the Legion This mark replaces the player's Infernal Servant ability with Infernal Legion, which gives a status that summons many short-lived demons near the player over time instead. These demons are weaker (equivalent to using Infernal Servant with approximately 1/2 of your Invocations skill), and the ability itself is much more expensive. They will only be summoned while at least one enemy is nearby. This mark also allows you to fire Destruction through your allies without harming them (since they now have a much greater tendency to get in the way at all times), which has some additional synergy with other player builds as well. -------------------------------------------------------------------------------- d15373d | DracoOmega | 2024-07-25 22:32:51 -0230 Mahkleb capstone: Mark of Carnage This mark changes how the player's Infernal Servant operates. Instead of summoning a demon near the player, it instead summons that demon adjacent to a random visible enemy and causes a 5x5 burst of destruction where it appears. This burst uses only the 'characteristic' types of the player's Unleash Destruction ability (ie: fire/lava if you have Geh, acid/metal splinters if you have Dis) and cannot inflict damage on either the player or your other allies. -------------------------------------------------------------------------------- f17db96 | DracoOmega | 2024-07-25 22:32:51 -0230 Makhleb capstone: Mark of the Tyrant This mark improves the player's Infernal Servant ability, especially at very high invocations. Summoned servants have duration 6 instead of 4, and at 19+ invocations it starts to become possible to summon the other tier 1 demons (with hell sentinels needing ~26) at an additional piety cost. Whenever the player kills an enemy on their own, a random active servant will be buffed with one of: haste, might, brilliance (if they have spells), or regeneration. -------------------------------------------------------------------------------- 2583199 | DracoOmega | 2024-07-25 22:32:51 -0230 Add code framework for gaining Infernal Marks This adds the basic backend for gaining Makhleb's new capstone gift - one of a selection of Makhleb-specific mutations that grant powerful passive effects and/or change how your Makhleb invocations work. At 6*, the player will be offered a choice of 3 different Marks (out of however many exist - currently planned at 9). Selecting one of these will permanently brand the player with it (injuring them greatly in the process...) and give them its effect for as long as they worship Makhleb. The mark will persist as a mutation, even if they abandon the god, but will not actually function unless they start worshipping them again (this prevents any possibility of abandoning to reroll your mutation possibilities, and it's also good flavour that you have to live with the consequences of your actions here.) Forms which normally suppress mutations will not suppress these. (They also cause silver vulnerability - despite otherwise being perma-mutations, they are clearly demonic in origin and ought to count.) None of the marks included in this commit *do* anything yet; that will come in future commits. -------------------------------------------------------------------------------- 2cd86a2 | DracoOmega | 2024-07-25 22:32:51 -0230 Merge Lesser/Greater Servant abilities into Infernal Servant As part of the Mahkleb revamp, both demon summoning abilities are being merged together. Infernal Servant is still obtained at 3*, is priced between the two previous abilities, and the quality of demon summoned is now strongly influenced by invocations (and sorted roughly in order of strength, so that it requires more invocations to get executioners and balrugs than other 2s, for instance.) The variety of demons it can summon is expanded to include red devils, ice devils, rust devils, soul eaters, sun demons, and sixfirhy, while losing neqoxecs (which were very weak as allies and unpleasant as enemies). Hostile demons are no longer produced by failing to use this ability, but instead there is a flat 1-in-6 chance that any use of it will produce a durably summoned hostile demon *alongside* your friendly one - along with a small increase in quality of the friendly demon summoned at those times. The hope is this preserves some of the 'deal with a devil' flavor of the ability while making it less correct to 'use at the start of battle and then ?tele if you get a bad roll'. -------------------------------------------------------------------------------- ac1edcb | DracoOmega | 2024-07-25 22:32:51 -0230 Greatly simplify demon summoning from Obsidian Axe With Mahkleb servant summoning changed, the last remaining code using cast_summon_demon() and _summon_demon_wrapper was the Obsidian Axe. This code still retained support for summoning hostile and temporarily-friendly demons (the latter not used since player Summon Greater Demon's removal by f16e6d0322db59044e3995c94cea1b2b62393fd3 ) and imps, almost all of which was unused. The Obsidian Axe doesn't need most of that, so I folded a simpler version directly into the artefact function itself. It should work largely the same as before this commit, with only a very minorly different chance of summoning a 3 vs. 4, and always at duration 6 instead of something like a ~90% of being duration 6. -------------------------------------------------------------------------------- 02c4a77 | DracoOmega | 2024-07-25 22:32:50 -0230 Merge Minor/Major Destruction into Unleash Destruction Mahkleb was the last god remaining who had a minor/major split among abilities doing largely the same thing (and where the lesser of those eventually becomes almost entirely obsolete as the game goes on.) It makes some sense to merge them to create more room for other exciting toys at higher piety levels. But even though Major Destruction had the lowest piety cost among all abilities in the game that cost piety, Minor Destruction literally cost 0 and there can be a powerful psychological difference between 'free' and 'only almost free'. Some players liked having an ability they could use without long-term cost! But the same time, having something 'freely spammable for limited effect' has some design awkwardnesses, so let's try leaning into the HP cost even more (which is flavorful for Makhleb, and can counterbalance the ability being free in the short-term while still having no *strategic* cost). At the same time, let's introduce a little more chaotic diversity from run to run by having 4 different 'flavours' of Unleash Destruction (themed after each of the Hells) and granting the player a random one of these when they first hit 4* with Makhleb (ie: the same threshold that previously granted Major Destruction.) Unleash Destruction now costs more HP (which scales with the player's max HP) and no longer relies on existing unrelated zap types (which caused periodic issues when one of those was changed, and also made it difficult to even tell what Destruction's average damage was). In its base form, it selects between Fire, Cold, Electricity, and Negative Energy (all dealing the same damage) and is non-piercing. All 4 of the upgrade mutations give it piercing, replace one of these elements with a different thematically- appropriate one, and add an additional property to a base element. In full: Gehenna Destruction: -Fire (which inflicts rF-), Lava, Lightning, Negative Energy Cocytus Destruction: -Cold (which inflicts Frozen), Ice, Lightning, Negative Energy Tartarus Destruction: -Fire, Cold, Negative Energy (with bonus damage!), Devastation Dis Destruction: -Fire, Cold, Lightning, Acid, Metal Splinters (It gets a 5th, since the Negative Energy that gets swapped out is the most frequently useless of the base types and Acid is arguably best) Hopefully this revamped Destruction feels suitably relevant both early and later, a least a little distinct from other blasty invocations such as Qazlal's by being piety-free but self-destructive, and gives a touch more variety between runs. (The player character now also produces blood around themselves whenever they use this or any other Makhleb invocation, as another touch of flavour.) -------------------------------------------------------------------------------- 0afb396 | Nikolai Lavsky | 2024-07-26 00:15:17 +0300 fix: treat artefacts with Reflection as unusual items The `unusual_monster_items` option is case-sensitive, so the default "reflect" value matched only non-artefacts. -------------------------------------------------------------------------------- 0624b5b | advil | 2024-07-25 14:48:33 -0400 fix: correctly call job-gen.py in Makefile The #! line in this script is the best option, but it's still not going to solve every configuration. In build scripts, it's best to rely on the Makefile's configuration, not the #! value. -------------------------------------------------------------------------------- 342958b | David Lawrence Ramsey | 2024-07-25 13:24:26 -0500 Decouple being a draconian and lacking hair. All draconians are now explicitly flagged as lacking hair. -------------------------------------------------------------------------------- 2eaa09f | David Lawrence Ramsey | 2024-07-25 12:59:30 -0500 Use species::skin_name() for flesh peoperly. Check for pluralisation as the species::skin_name() comments suggest. -------------------------------------------------------------------------------- 3489c03 | Implojin | 2024-07-25 12:31:48 -0500 fix: Draw ghost backgrounds in webtiles This was left out of 767fb09e7d. Thanks again to index for her tiles work here, this seems like a nice improvement! We're missing an unusual background tile for ghosts, but there should be no way for ghosts to have unusual items with the current code anyway: I've defaulted unusual ghosts to have the regular unusual highlight just to let this codepath work properly in the future. -------------------------------------------------------------------------------- 7865272 | David Lawrence Ramsey | 2024-07-25 12:18:39 -0500 Describe flesh as "skin" by default. To match species::skin_name() when possible. -------------------------------------------------------------------------------- c59282b | David Lawrence Ramsey | 2024-07-25 12:14:42 -0500 Actually describe gargoyles' skin as stone. At the species level. This matches statue form as well. -------------------------------------------------------------------------------- db40d75 | David Lawrence Ramsey | 2024-07-25 12:00:47 -0500 Properly describe gargoyle "flesh" as stone. -------------------------------------------------------------------------------- 47babdb | David Lawrence Ramsey | 2024-07-25 11:58:33 -0500 Fix comment typo. -------------------------------------------------------------------------------- a6c389b | David Lawrence Ramsey | 2024-07-25 11:43:05 -0500 Fix flesh name handling. species::skin_name() is not guaranteed to be either singular or plural, so take a cue from expiring petrification and use "flesh". Use "stone" if we're actually petrified. -------------------------------------------------------------------------------- f0725ce | David Lawrence Ramsey | 2024-07-25 11:14:48 -0500 Properly account for form wrt bandages. Currently only mummies have bandages, and can't be transformed into something without them, but check just in case. -------------------------------------------------------------------------------- 93245fa | David Lawrence Ramsey | 2024-07-25 11:07:55 -0500 Add flesh to random body parts. -------------------------------------------------------------------------------- cb7f57b | David Lawrence Ramsey | 2024-07-25 10:10:34 -0500 Properly separate singular/plural body part msgs. -------------------------------------------------------------------------------- f64ed19 | David Lawrence Ramsey | 2024-07-25 09:59:49 -0500 Add another Xom tail message. -------------------------------------------------------------------------------- b0289f2 | David Lawrence Ramsey | 2024-07-25 09:57:41 -0500 Adjust a Xom tail message. -------------------------------------------------------------------------------- b315743 | David Lawrence Ramsey | 2024-07-25 09:54:47 -0500 Add Xom random body part pseudo-miscasts. -------------------------------------------------------------------------------- a3dc3e8 | David Lawrence Ramsey | 2024-07-25 09:45:56 -0500 Split out body part msgs into their own function. Also separate them into singular and plural options. -------------------------------------------------------------------------------- 2c1b039 | David Lawrence Ramsey | 2024-07-25 07:38:54 -0500 Shorten -Gavotte status description. -------------------------------------------------------------------------------- 5617537 | David Lawrence Ramsey | 2024-07-25 00:47:53 -0500 Remove obsolete Stiff status description. -------------------------------------------------------------------------------- f366dc3 | David Lawrence Ramsey | 2024-07-25 00:47:53 -0500 Add missing -Gavotte status description. -------------------------------------------------------------------------------- 767fb09 | regret-index | 2024-07-25 02:36:53 -0230 More adjustments to ghost visibility While adjusting the opacity of ghosts is somewhat reasonable, it also heavily diminishes them actually being ghosts, due to their tile otherwise relying heavily on player paper doll tiles, so I'd like to try a bit of a different approach that also addresses one of the core awkwardnesses of ghosts varying heavily versus players over time. Regardless of one's threat display settings, all ghosts now have an wavering gradient overlay aura matching their threat level. This should also help with ghost visibility, while additionally emphasizing them a bit more dramatically than just being a player doll tile but harder to see. (This has the weird side-effect of such an aura wavering if one levels up mid-fight, but clearly they're just being intimidated by the player's power.) -------------------------------------------------------------------------------- a15e480 | David Lawrence Ramsey | 2024-07-24 21:24:51 -0500 Give felids tails (only cosmetic). Such tails don't do tail-slapping, and can't grow stingers either. Since the felid tiles all show tails, and there's nothing indicating they're e.g. Manx types. -------------------------------------------------------------------------------- c0dcec2 | David Lawrence Ramsey | 2024-07-24 21:12:46 -0500 Use booleans instead of numbers in has_tail(). -------------------------------------------------------------------------------- 3df9983 | David Lawrence Ramsey | 2024-07-24 21:02:09 -0500 Account for player tails in Xom/body part msgs. -------------------------------------------------------------------------------- 353f8a7 | David Lawrence Ramsey | 2024-07-24 20:45:01 -0500 Remember that players generally have heads. Add "head" to the list of random body parts, since we assume in other messages elsewhere that all players have heads. -------------------------------------------------------------------------------- 55c3cb5 | David Lawrence Ramsey | 2024-07-24 20:27:11 -0500 Add another acrobatic move to Xom dances. -------------------------------------------------------------------------------- 3ba2811 | David Lawrence Ramsey | 2024-07-24 20:17:54 -0500 Add @random_body_part_external@. This is the same as @random_body_part@, except that it leaves out blood and bones. (If a species with external blood and/or bones is added, it will obviously need to be adjusted for them.) Make Xom use it in clone drop messages, so that mirrors don't get smashed over parts of the player that should not be on the outside. -------------------------------------------------------------------------------- 6575a43 | David Lawrence Ramsey | 2024-07-24 20:07:42 -0500 Account for missing a hand in random body parts. -------------------------------------------------------------------------------- 8bde0a3 | DevJac | 2024-07-24 19:44:33 -0500 Distinguish explore mode deaths from Felid deaths By adding a note for the former. [Committer's note: Adjusted commit message.] -------------------------------------------------------------------------------- 5e739b3 | David Lawrence Ramsey | 2024-07-24 18:35:15 -0500 Add another mythical creature to artefacts. -------------------------------------------------------------------------------- 081d225 | Aliscans | 2024-07-24 18:22:55 -0500 Improve wrapping for monster_item_view_coordinates. The "monsters in view" display wraps long lines. It ignored monster_item_view_coordinates when calculating this (except with local tiles), so missed the ends of some lines. It no longer does. -------------------------------------------------------------------------------- d8bda1b | Implojin | 2024-07-24 15:46:09 -0500 Slightly improve ghost visibility Player ghosts were kind of difficult to see in tiles and webtiles, especially Op ghosts, which tended to easily blend with their vault backgrounds. This commit slightly increases the alpha of ghost tiles: r-i had mentioned possibly adding an aura to these to improve visibility as well. More to come in a future commit? -------------------------------------------------------------------------------- 6bbb805 | David Lawrence Ramsey | 2024-07-24 10:39:50 -0500 Keep the petrified from bleeding (Implojin). If they're petrified, they don't have blood. -------------------------------------------------------------------------------- ab7c848 | David Lawrence Ramsey | 2024-07-24 10:20:55 -0500 Fix merfolk fishtail checks wrt feet (Implojin). The fishtail should override mutations, and is independent of form, so it needs to go before the mutation check and the usual form check. -------------------------------------------------------------------------------- 4a3ce62 | David Lawrence Ramsey | 2024-07-24 10:16:28 -0500 Disallow gaining blood w/form changes (ge0ff). So gargoyles/djinn will still be bloodless regardless. This means that no form uses FC_ENABLE for has_blood anymore. (Unless we eventually add a hypothetical blood elemental or the like, which would need it by definition.) -------------------------------------------------------------------------------- 3eefd6c | David Lawrence Ramsey | 2024-07-24 09:50:37 -0500 Fix body part checks for forms (#3935). Don't erroneously fall through and use the species body part if the current form doesn't have it. Also, actually use form_has_feet() instead of only checking for the merfolk fishtail. Closes #3935. -------------------------------------------------------------------------------- 1d91366 | David Lawrence Ramsey | 2024-07-24 07:47:53 -0500 Fix spelling (sulfur -> sulphur) (Graveyardigan). -------------------------------------------------------------------------------- 0c0b035 | David Lawrence Ramsey | 2024-07-23 18:08:41 -0500 Fix spelling. -------------------------------------------------------------------------------- d06570b | regret-index | 2024-07-23 20:26:15 -0230 New Alchemist starting-screen icon (Darby) Venom Mage's spider was better than the encircled half-box Transmuters used by being more material, but something a little more specifically alchemical like this nice potion is fairly better for it. Now if only it didn't take until L8 Conjurations / Alchemy to get a potion-themed spell. (There's always next version....) -------------------------------------------------------------------------------- 6311a48 | regret-index | 2024-07-23 19:04:02 -0230 New Xom action: wave of despair Xom already copies a variety of potions as one of the most common effects granted to the player, so why not also some of the more tactically interesting scrolls? In particular, one of the tension spells is using a much weaker version of a consumable, so it's a good idea to make it a little more recognizably distinct. This new rare beneficial action is meant to be dramatic in a different sense than prior debuffs or destruction by combining a few effects together at once. After Xom tells a spooky story, inanimate skeletons pop out, and the ensuing wave of horror halves will, then drains, then fears everything else in sight. The Will/2 state lasts fairly longer than the fear, making it so stabbers can use other hexes if possible once they start chasing the player again, and also applies to the player, so there's still some risk around the right monsters as Xom should always readily wield. (To help make this a bit more visible, I added a quick Will/2 status icon derived from the current scroll of vulnerability icon.) Consequentially, Cause Fear has been replaced in the Xom tension spells list with Dazzling Flash (which is weak, but not much weaker than Small Mammals already is) and Summon Blazeheart Golem (which has a cute "suddenly handed a bomb" mechanical capacity). -------------------------------------------------------------------------------- 7af4bb0 | regret-index | 2024-07-23 17:33:16 -0230 New Xom action: friendly + hostile clone drop Another hostile Xom effect meant to naturally inherently scale and vary across games in a relatively straightforward fashion while providing further variety, this rare Xom effect differs from other hostile summons by giving you a free ally! Unfortunately, it's outnumbered- this effect summons brief two hostile illusions and one friendly illusion, with the single real player balancing these teams. While ghost-illusion code continues to lag behind on ranged characters and early spellcasters for more important uses of it- Nemelex's Illusion card, player ghost vaults, and Mara each- Xom cloning the player imperfectly in this notably rare action should feel reasonably fine with Xom's chaotic malevolence anyway. (Having both friendly and hostile copies should make it feel reasonably different than any of those circumstances, also). Part of its rarity includes 1: being only done with other monsters around, so there's any incentive to fight with the free ally if possible, and 2: actually having a maximum tension cap, so that the illusions don't get overshadowed by other ways one might be dying anyway. -------------------------------------------------------------------------------- b48ef88 | David Lawrence Ramsey | 2024-07-23 14:52:07 -0500 Fix typo. -------------------------------------------------------------------------------- 1cace68 | DracoOmega | 2024-07-23 17:21:15 -0230 Give the orb dais a proper feature type name (ge0FF) -------------------------------------------------------------------------------- b95f673 | David Lawrence Ramsey | 2024-07-23 14:47:54 -0500 Unbrace -------------------------------------------------------------------------------- a363cd5 | DracoOmega | 2024-07-23 17:12:41 -0230 Don't ever claim the orb dais is '(summoned)' (ge0FF) Using a terrain change effect on top of the dais wouldn't change it, but would still place a map_terrain_change_marker there, resulting in Crawl confusingly claiming that the pre-existing feature had been 'summoned'. Now just don't place a marker there at all. -------------------------------------------------------------------------------- 5f6dd93 | DracoOmega | 2024-07-23 17:12:41 -0230 Remove an unnecessary use of item_def::is_critical() I believe this was once to prevent Xom from making you drop critical items from your inventory, but all that would do now is print a harmless flavour message about the item (and since runes and the orb were goldified, I don't think it even does this anymore!) -------------------------------------------------------------------------------- 83d8b1f | DracoOmega | 2024-07-23 17:12:41 -0230 Mark gems as critical items (ge0FF) A little light future-proofing against them potentially being destroyed by terrain changes. -------------------------------------------------------------------------------- 44e0ba9 | Implojin | 2024-07-23 14:28:17 -0500 fix: don't hide the orb in console The orb dais feature was preventing the orb from being drawn in console. Easy enough to fix! -------------------------------------------------------------------------------- f20c09c | DracoOmega | 2024-07-23 15:16:09 -0230 Remove a now-unused include -------------------------------------------------------------------------------- dfbe08a | DracoOmega | 2024-07-23 15:04:19 -0230 Place the Orb of Zot on an untransformable dais When b22d4219adc6 was done to address Hellfire Mortar cheese, I didn't fully consider all the different effects that might cause the orb to be displaced without the player anticipating this. While it's arguable that Xom starting the orb run without warning is just Xom being Xom, it also seemed likely that casting Summon Forest near the orb could randomly do so, as well as Imprisoning a monster adjacent to the orb, and likely other things. Starting the orb run unexpectedly is a nasty surprise, so instead of doing that whenever the orb is displaced by (possibly unintentional) terrain changes, let's just veto all terrain changes beneath the orb's original location entirely (by giving it a special pedestal feature that is immune to such things). -------------------------------------------------------------------------------- 16c7f17 | DracoOmega | 2024-07-23 14:55:57 -0230 Don't be content with shifting items into closed doors When trying to relocate an item because the terrain beneath it changed, any 'traversable' square that doesn't destroy automatically destroy items (ie: lava) was considered an adequate place to put them. But closed doors are considered traversable only because they *can* be opened, not because they aren't solid right now. -------------------------------------------------------------------------------- a91aa3b | DracoOmega | 2024-07-23 14:54:09 -0230 Don't let Xom door rings destroy items It was only intended that the door push items out of the way, rather than destroy them altogether. This fixes #3932 -------------------------------------------------------------------------------- 4f39dfd | David Lawrence Ramsey | 2024-07-23 08:19:09 -0500 Add another noisy hell message. -------------------------------------------------------------------------------- d1fa21d | Neil Moore | 2024-07-22 21:45:15 -0400 Fix extra percents. -------------------------------------------------------------------------------- 81e4515 | Neil Moore | 2024-07-22 21:41:30 -0400 Re-arrange artefact weapon animal names. -------------------------------------------------------------------------------- 922ebfb | Neil Moore | 2024-07-22 21:29:11 -0400 Add more insects and other crustaceans as artefact names. [skip ci] -------------------------------------------------------------------------------- 262b726 | Neil Moore | 2024-07-22 19:32:53 -0400 Add amphibians to randart names. The section supposedly half-devoted to them didn't have a single one. [skip ci] -------------------------------------------------------------------------------- 0219e33 | Neil Moore | 2024-07-22 19:05:25 -0400 Add some arachnids and reptiles as artefact names. [skip ci] -------------------------------------------------------------------------------- ebc898e | David Lawrence Ramsey | 2024-07-22 17:55:20 -0500 Add another bird name to artefacts. -------------------------------------------------------------------------------- 3dcc868 | Neil Moore | 2024-07-22 18:51:07 -0400 Add more ratites. Especially emus, who famously managed to defeat a military expedition. [skip ci] -------------------------------------------------------------------------------- c53ba14 | Neil Moore | 2024-07-22 18:43:55 -0400 Add more birds to artefact names. A few of which, but not most, are native to Australia. Also, move "Fulmar" to be in correct alphabetical order. [skip ci] -------------------------------------------------------------------------------- f39ece7 | regret-index | 2024-07-21 19:12:25 -0230 * All three of Xom's divinations are now crunched together into one effect. Each individual component frozen in time doesn't really provide much for useful strategizing, and this also helps those with less spoilers tell where vaults are by adding creatures to the magic mapping. (Also, detect creatures using only creature genera is kinda funny anyway.) In exchange, these divinations are slightly less likely to occur, swapping positions with the already-enticingly-variable and scaling tension spells. * Xom's sticky ignition, divine lightning, force lance fleet, tension spells, and friendly / hostile monster summons all now softly scale with runes 5 through 15 so Xom is more noticeable throughout extended. * Xom's ally and hostile summoning now also gets rare bunyips and always-chaos-branded reapers, since the top end needs a bit more variety overall and the latter combines the undead + demon options reasonably nicely. Hostile summoning in general has also been tweaked again: more distance if you're in wrath with less monsters (as the new upgrades have been a bit aggressive sometimes), and less distance without wrath (as it's a little too easy to run away otherwise). * Xom's decor list now includes one-use teleport traps, since it coincides with other translocation Xom effects and it provides a bit of interesting upside to have a few to fall back upon, without ever interrupting full level connectivity in a troublesome fashion. * Xom's fake shatter now drops some sparse large rocks for decorative purposes and other Xom vault correspondence, as well as a consolation prize for Oni and Trolls. * A variety of Xom's rarer good actions are now slightly more likely to happen, period, to compensate for the list of new actions making it less likely Xom will give strategic benefits like items or good mutations. Ideally nearly all of _xom_chooses_good_action and severity alike would be completely revised for a regular random weighting function, while strategic effects would be collected up and timed entirely seperately of Xom's random tension-tracking actions (incidentally also dealing with xomscumming at the same time), but for now, Xom acting slightly more often is fine since over a third of Xom actions have been freshened up and made more variable at this point. -------------------------------------------------------------------------------- 1273c59 | dependabot[bot] | 2024-07-21 20:30:08 +0200 Bump zipp in /crawl-ref/source/webserver/requirements Bumps [zipp](https://github.com/jaraco/zipp) from 3.18.1 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.18.1...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: direct:development ... Signed-off-by: dependabot[bot] -------------------------------------------------------------------------------- abeaff3 | Medrano83 | 2024-07-21 18:48:40 +0200 Update Android SDK - API level 34 Starting August 31, new apps and app updates must target Android 14 (API level 34) to be submitted to Google Play. https://support.google.com/googleplay/android-developer/answer/11926878 -------------------------------------------------------------------------------- bf73d41 | Implojin | 2024-07-21 09:42:24 -0500 Fix a teleport closet in water_maze_lemuel Looks like this was a minor oversight in d77652238, we were trying to place a hatch and some teleport scrolls here without a corresponding glyph. -------------------------------------------------------------------------------- 1906822 | David Lawrence Ramsey | 2024-07-20 13:42:52 -0500 Add another gizmo entry. -------------------------------------------------------------------------------- 91f3fef | David Lawrence Ramsey | 2024-07-20 13:41:32 -0500 Fix spelling. -------------------------------------------------------------------------------- ca01da3 | patrick | 2024-07-20 14:17:32 -0400 Increase Coglin gizmo-related vocabulary After consulting with a consortium of Coglin engineers, we have learned a great deal about their technology, and accordingly we have been able to expand the technical language used in Crawl to describe their magnificent gizmos. In other words, I added a few entries to gizmo.txt, including both real-world technical jargon and technobabble memes. Just a few. Some of the names thus generated may seem redundnant -- it's possible to get, say, an "autoautomatic autolator" -- but remember that Coglin technology is very advanced, and their terminology must be very precise to include all the nuances of meaning, which sometimes appears as redundancy to lesser minds. Thank you for understanding. -------------------------------------------------------------------------------- 2a440f7 | regret-index | 2024-07-19 21:08:43 -0230 Ever-continuous widespread vault review Of note: * A few undying armouries have been snuck into a few Crypt ends, as they're 1: undead, 2: a bridge between the various constructs old Crypt ends used before Crypt had more undead and the undead in Crypt, and 3: work well with vampires as several Crypt end sets try to make work despite the vampire presence in Depths. They're only in a few of these vaults, so they'll still mostly stay highlights of V:$ and Cerebov's level, regardless. * _qazlal_generations has become another rare D:$ depths entrance vault. * sewer_co_15_rooms now actually provides a potion of enlightenment to enter its center room, and grunt_spider_rune_island no longer can roll a chance to need flight or digging to acquire its rune. * volcano_pools has been adjusted to make it so no starting positions can see the main center eruption point, so people quickly diving into a volcano and then resting up won't be engulfed in flames. * Troves that focused on jewellery now also provide a pair of random talismans with increased randart weighting the lower tier they are, to help out shapeshifters without excessively increasing the value of troves for most other characters otherwise. This matches up with talismans being sold in jewellery shops. * One evocations trove designed before evokables became singular items also now also provides talismans and higher overall wand quality, and a trove that focused on providing four weapons each of four different brand now uses Lua to place much higher quality equipment than before (but still has no guarantees it matches up with one's own weapon skills). For the record, we should avoid using "any weapon" in troves without either heavy Lua or as a weighing down of "acquire weapon", because "any weapon" loves constantly going for D:1 kobold and goblin gear. * Two nearly-or-literally identical Ziggurat entries were crunched together, and a quick new one was added for variety's sake. -------------------------------------------------------------------------------- 20967ce | Nikolai Lavsky | 2024-07-19 16:56:54 +0300 fix: time out a few more statuses when returning to a level Continuing from 116ff8c4a, make a few more monster enchantments time out while the player is off-level. Affects most noticeably the Snake Pit and Elven Halls, where the player could return to a previously visited floor and find that buffs of nearby monsters didn't expire after hundreds of turns. -------------------------------------------------------------------------------- 3cb1da7 | David Lawrence Ramsey | 2024-07-18 22:18:35 -0500 Add missing -GClaw status description. -------------------------------------------------------------------------------- b744d03 | David Lawrence Ramsey | 2024-07-18 15:51:31 -0500 Add another Xom flora message. -------------------------------------------------------------------------------- 41f0f79 | David Lawrence Ramsey | 2024-07-18 13:15:48 -0500 Document holy/unholy brand wielding changes. -------------------------------------------------------------------------------- 3d9f9bc | David Lawrence Ramsey | 2024-07-18 10:11:50 -0500 Add another substance name to artefacts. -------------------------------------------------------------------------------- 74a7a61 | David Lawrence Ramsey | 2024-07-18 10:06:54 -0500 Drop "THE_" from the Enchantress' enums. Since the other monsters with "the" names don't include it. -------------------------------------------------------------------------------- 2231033 | David Lawrence Ramsey | 2024-07-18 09:48:14 -0500 Make unique_name() handle the Enchantress. -------------------------------------------------------------------------------- c619bd7 | David Lawrence Ramsey | 2024-07-18 09:48:14 -0500 Fix indentation. -------------------------------------------------------------------------------- ea9f75d | David Lawrence Ramsey | 2024-07-18 01:40:29 -0500 Add another colour to the database. -------------------------------------------------------------------------------- bcf935f | patrick | 2024-07-17 23:42:44 -0400 Add a quote for Magic Dart -------------------------------------------------------------------------------- 071218b | regret-index | 2024-07-17 23:24:07 -0230 Make tension track more statuses from both players and monsters For the most part, the tension formula hasn't been adjusted since e11a346 fourteen(!) years ago. It's an extremely imprecise formula in a multitude of ways- it doesn't know the actual attack or spell ranges of any given monsters, anything about monster support capacities, the path and presence of spell components like clouds or ramparts or prisms, the players' and the monsters' resistances, and so on and so forth. It somewhat works as a very simple way to track the density of hostile monsters present versus one's own health, but would be quite burdensome to make be actually reasonably good at guessing much more than that. As a result, we've tried to use it for less and less actually meaningful roles over time. Currently it's most prominent for reasonably informing Xom of when to act, whether or not to forbid Beogh's apostle challenges, and if a vault warden should close a given door or not, all of which are reasonably relevant enough that they should reasonably work regardless of how little we'd want to use tension elsewhere. While I'm not pushing for making tension actually become more unweighty and lengthy, it's currently already supporting a number of enchantments on players and monsters, and an update for all of the particularly dramatic new effects added over the past 14 years should be reasonable to quickly work into what already exists. (For reference's sake, slow counts for x1.5 tension, being netted or webbed is x2 tension, and of course none of this matters if there's nothing hostile in sight.) * Players with corrosion get a scaling multiplier for each point of corrosion they have on them. * Players at 10% or lower mp adds a x1.125 multiplier. * Player mesmerization and fear adds a x1.2 multiplier. * Players that are fragile, have the -Potion status, or the -Scroll status get a x1.33 multiplier. * Players that are marked, attractive, unable to cast due to Sap Magic, in bat form, or in wisp form get a x1.5 multiplier. * Players in fungus, pig, or tree form get a x1.66 multiplier. * Monsters that have brilliance or are armed by an undying armoury get a x1.25 multiplier. (The only particularly controversial point here is most likely MP, but most gods use MP for invocations even on non-spellcasters, tension is fuzzy anyway, and most reliable mp drainers should have some reasonable threat to them also, so it's probably fine. There's a long list of absent bits here- sticky flame and poison are the most conspicuously absen-, but this probably shouldn't go for much else not added here, since most of the above are player-option-limiting in some obvious dramatic fashion or another.) Since most of what relies on tension is both invisible and randomized for most players, this shouldn't be too concerningly gameable or complex. Zapping one's self with polymorph, drinking attraction, and drinking lignification are all now technically options for grabbing Xom's attention or delaying an apostle challenge, but this is quite unlikely to make things net better than if one did not in fact do any of these things. The player also could have just hurt themselves instead to get the same rough circumstances change. What this does mean, however, is that Xom should feel fairly more proactive in a wider number of scenarios and Beogh will send challengers in less awful situations, which is plenty enough gain for both gods to probably be worth a page's worth of easily-adjustable and easily-removable checks. (Others may quibble about these exact values. Future commits may change any of these multipliers' strength.) -------------------------------------------------------------------------------- a06d8ee | regret-index | 2024-07-17 20:36:29 -0230 Adjust each Serpent of Hell The Serpent of Hell hasn't changed much since 06872b5, which lets even an extended-only unique of four manifestations provide reasonable statistical data for assessment It also means the context of the Hells has changed around them a fair bit around them, and while we don't need to make every Hell be competively close to one another, it does highlight a few strange bits. In particular, the Tartarus Serpent uses corrosion despite the fact Dis directly uses such multiple times, and the Gehenna Serpent lagging behind the others is more pressing now that Gehenna fell behind the other hells with the 0.28 hells overhaul. This commit adjusts most of the Serpents' potential breaths: * Tar: Bolt of Draining 🡲 Ghostly Fireball, Corrosive Bolt 🡲 Poison Arrow This frees up Corrosive Bolt for Dis, while leaning a little on the poison attacks of putrid mouths plus the extra miasma in the branch since the 0.28 overhaul. In exchange, since Bolt of Draining directly out of the Serpent's mouth hasn't killed anybody in 15 versions, that's swapped out with Ghostly Fireball to let it at least skip EV. * Dis: Metal Splinters 🡲 Corrosive Bolt, Crystal Spear 🡲 Iron Shot The hell that automatically corrodes those who enter should be the hell with the Serpent that breathes corrosion. Caustic shrikes already made it valuable to keep rCorr on anyway, so it shouldn't be too worriesome to upgrade. Crystal Spear has been swapped out for Iron Shot to deal flatly less damage, with the range difference not matter too much due to each serpent being speed 14. * Geh: Flaming Cloud 🡲 Bolt of Magma Flaming clouds don't scale at all with the rest of the game, so the breath attack barely matters in the Hell one is most likely to have fire resistance in. Magma at least is partially irresistable, without being quite as devastating as Damnation is. Also, the Cocytus and Gehenna Serpents now get equal health with the other two Serpents (from ~280 HP to ~323 HP), since those are the two worse performing Serpents and they're already more than differentiated enough on most other levels. The Dis Serpent, meanwhile, loses a little AC and EV, mostly to help subdue Dis that little bit more and compensate for the Metal Splinters replacement. (This does mean the Cocytus one keeps the strangely low-power Freezing Cloud breath, but it's getting a health buff here and its Flash Freeze was buffed by both a0a6642 and f3e26c5, so its broader term stats should probably equal out over more time.) -------------------------------------------------------------------------------- b72f624 | regret-index | 2024-07-17 18:16:46 -0230 Give ?/b a tile for Arena Just Okawaru's altar, which is kind of silly but fairly less silly than showing off a question mark for a place that uniquely doesn't have a normal regular entrance feature for it. -------------------------------------------------------------------------------- 0268064 | regret-index | 2024-07-17 17:47:06 -0230 Add "any hex wand" shorthand This lets vaults and wizmode use the seed's hex wands slot with "any hex wand" like "any beam wand" and "any blast wand" do, which seems to have been accidentally left behind when c28e0ee left out what 376ae5a and a4b73df did. -------------------------------------------------------------------------------- ad30c92 | David Lawrence Ramsey | 2024-07-16 16:53:09 -0500 Tweak "Brilliance"'s deescription again. Specifically mention the dark energy instead of saying "it"; "it" could erroneously refer to the weapon instead. -------------------------------------------------------------------------------- a504a9f | David Lawrence Ramsey | 2024-07-15 23:08:22 -0500 Fix typo. -------------------------------------------------------------------------------- b736c3c | David Lawrence Ramsey | 2024-07-15 22:38:57 -0500 Fix the message naming unique simulacra (#3887). Use the species name for uniques in such messages. If you make simulacra out of the Enchantress, you get Enchantress-shaped blocks of ice that turn into spriggan simulacra; make the message reflect this. This also avoids problems with naming simulacra after uniques with names starting with "the". Closes #3887. -------------------------------------------------------------------------------- 7c789da | David Lawrence Ramsey | 2024-07-15 22:19:24 -0500 Fix some Enchantress naming issues (#3887). As a monster with a name starting with "the", she was only handled properly in name_zombie(). She wasn't handled properly in either monster naming or polymorphed monster naming; Although there has to be a better way than hardcoding it for all those cases. -------------------------------------------------------------------------------- 30ed0ad | David Lawrence Ramsey | 2024-07-14 16:20:27 -0500 Simplify Xom pseudo-miscast feature checks. Use feat_is_statuelike() and feat_is_tree() for the cases where they apply. Accordingly, rename the Xom message key "Xom feature statue" to "Xom feature statuelike". -------------------------------------------------------------------------------- 86621e3 | David Lawrence Ramsey | 2024-07-14 16:15:07 -0500 Fix comment typo. -------------------------------------------------------------------------------- e9b8def | David Lawrence Ramsey | 2024-07-14 13:10:25 -0500 Vary the number of times Xom makes you do stuff. Always using three is boring. Vary from two to six instead. Also use this for the number of extra fingers Xom makes gloves grow. -------------------------------------------------------------------------------- 5bdad0b | David Lawrence Ramsey | 2024-07-14 12:46:45 -0500 Add more dance moves to Xom messages. Accordingly, handle hand and foot substitutions in such messages. Hand(or whatever)stands may get a bit odd for certain types of @hand@, but... it's Xom. -------------------------------------------------------------------------------- 665319e | David Lawrence Ramsey | 2024-07-14 12:25:06 -0500 Rename Xom message key from "two eyes" to "eyes". To make it match the other pairs-of-body-parts tags. -------------------------------------------------------------------------------- 1bc7ac4 | David Lawrence Ramsey | 2024-07-14 11:45:18 -0500 Add purple vine stalker player base tiles. For a little more variety. These are just palette-tweaked versions of the red ones. -------------------------------------------------------------------------------- 3abdcd5 | David Lawrence Ramsey | 2024-07-14 09:28:54 -0500 Add Xom pseudo-miscast messages for trees. -------------------------------------------------------------------------------- 41815e7 | David Lawrence Ramsey | 2024-07-14 09:09:07 -0500 Simplify atropa blindness checks. We only need to check for blindness resistance once, whether player or monster. -------------------------------------------------------------------------------- 815c665 | David Lawrence Ramsey | 2024-07-14 08:59:32 -0500 Fix blinding-related crash (NormalPerson7). Don't treat the player as a monster if they can't be blinded. -------------------------------------------------------------------------------- 0dbcb5d | David Lawrence Ramsey | 2024-07-13 20:28:44 -0500 Add a few more types of evil to artefacts. -------------------------------------------------------------------------------- 1e61e2b | David Lawrence Ramsey | 2024-07-12 23:21:10 -0500 Add a few acrobatic moves to Xom's dances. -------------------------------------------------------------------------------- c1d8bbe | David Lawrence Ramsey | 2024-07-12 23:07:28 -0500 Add another microorganism name to artefacts. -------------------------------------------------------------------------------- 2721c5b | elliptic | 2024-07-12 13:36:13 -0400 Allow randart launchers to have chaos or holy brands (rarely) It wasn't clear to me why these were forbidden - chaos is a possible result from brand weapon scrolls on launchers and TSO can holy brand launchers, so there's no implementation concern at least. The weight here has been taken from speed (now 75% as common as it used to be) and antimagic (now 50% as common as it used to be). The remaining forbidden brands on randart launchers are venom, protection, pain, spectral, and distortion. For reference, here are some brief arguments for why each of those should probably remain forbidden: - venom: would encourage a lot of kiting, since venom weapons max out monster poison quickly - protection: defenses are less relevant/interesting when at range - pain: ranged is awkward with necromantic allies since can't shoot through them - spectral: positioning is less interesting than with melee, and the spectral weapon is less likely to take damage from monsters - distortion: currently even Lugonu is forbidden from disto-branding a launcher - would turn one of distortion's major downsides, blinking monsters away, into an advantage -------------------------------------------------------------------------------- 99b34a3 | patrick | 2024-07-11 20:05:13 -0400 Update Big Baal Hell's to use artprops Specifying armour randarts with egos gives display bugs; the ego property gets listed twice. Fix that by using the artprops feature for what it was meant for: generating randarts with a specific property (that randarts are supposed to have). While I'm here, make all the gear into randarts, not merely good_item, and touch things up in a few other places. -------------------------------------------------------------------------------- 17eea93 | patrick | 2024-07-09 22:23:11 -0400 Clear out the Clear Minds Boutique There were two shops using the gimmick of having randarts with properties that can't normally generate: Clear Minds Boutique and One-of-a-Kind Rings. This is a bit much for a gimmick that's already on the edge of what these people let me get away with. Clear Minds was made entirely as a proof-of-concept while gammafunk was implementing artprop specification syntax, while One-of-a-Kind Rings already existed before then and has a stronger theme. Also, by only generating one such randart, One-of-a-Kind Rings is a little less egregious with its gimmickry. Accordingly, Clear Minds is getting cut. While I'm rummaging around in shops.des, One-of-a-Kind Rings is also getting an inventory tweak: the HP and MP artprops get their higher ends toned down somewhat. -------------------------------------------------------------------------------- 162e8f4 | Nicholas Feinberg | 2024-07-09 16:22:41 -0700 Set up a nine-month-long gag (ploomutoo) It's like April Fools in July! -------------------------------------------------------------------------------- df7db63 | David Lawrence Ramsey | 2024-07-09 00:19:24 -0500 Remove another reference to ears. -------------------------------------------------------------------------------- 3855256 | DracoOmega | 2024-07-08 21:38:50 -0230 Fix an obscure crash with tgw_kikubaaqudgha This vault used lua to place a miasma cloud, killing a caged human and 'raising' them as a zombie. A script called upon the human dying deleted the cloud they were standing in, but due to a change introduced in c0b93f29f480c8b389dd038c0c571e0ef521d79d it was now possible for them to die before _actor_apply_cloud was finished looking at that very cloud which it still maintained a reference to, resulting in undefined behavior. Despite what the lua comment says, the presence of the cloud does not actually prevent placing a zombie there (perhaps it did when the comment was written 13 years ago), so let's just not delete it. -------------------------------------------------------------------------------- 281234c | David Lawrence Ramsey | 2024-07-07 11:44:43 -0500 Properly check for unsigned char range (oops). Instead of casting and comparing (which will fail if the casted value coincidentally ends up in range), use UCHAR_MAX. -------------------------------------------------------------------------------- 484b3ae | David Lawrence Ramsey | 2024-07-07 11:34:39 -0500 Remove duplicate word in comment. -------------------------------------------------------------------------------- 64a9791 | David Lawrence Ramsey | 2024-07-07 11:31:02 -0500 Avoid crashing at Yes/No/All prompts. If the key is out of range, act as though we hit Escape, as we do with other non-alpha keys there, instead of causing undefined behaviour in isalpha(). Closes #3505. -------------------------------------------------------------------------------- 582db3b | David Lawrence Ramsey | 2024-07-07 10:37:07 -0500 Consistently use python3 in scripts (Aliscans). -------------------------------------------------------------------------------- da96e87 | David Lawrence Ramsey | 2024-07-07 09:10:25 -0500 Fix spacing. -------------------------------------------------------------------------------- bbbd308 | David Lawrence Ramsey | 2024-07-07 09:03:45 -0500 Add a quote for the Malign Gateway portal. -------------------------------------------------------------------------------- 1c079de | David Lawrence Ramsey | 2024-07-07 08:34:12 -0500 Fix fire crab quote. -------------------------------------------------------------------------------- 888de62 | David Lawrence Ramsey | 2024-07-07 08:22:22 -0500 Fix more unused variable warnings. -------------------------------------------------------------------------------- 677be53 | David Lawrence Ramsey | 2024-07-07 08:15:17 -0500 Remove unused variable (geekosaur). Closes #3911. -------------------------------------------------------------------------------- 9e1b529 | elliptic | 2024-07-07 08:04:55 -0400 Fix HW's Conj starting skill being accidentally changed to 1 (acrobat) (This was accidentally changed by 17d8ae0d.) -------------------------------------------------------------------------------- 51ab8bf | David Lawrence Ramsey | 2024-07-06 01:38:20 -0500 Remove Terence quote. Since he's been reflavoured from a murderer to a veteran, a quote about a murderer no longer fits. -------------------------------------------------------------------------------- 494059c | regret-index | 2024-07-06 03:41:49 -0230 Quick generic mutation icon placeholders To help some filter out mutations more easily on the A menu, this adds generic icons each for good mutations, bad mutations, Jiyva mutations, and Demonspawn mutations. The categories should provide a bit more immediate usefulness compared to the generic pawprint monster spells frequently rely upon, at least. This mostly tries to avoid innate species mutations (since it's not great to confuse them for other temporary mutations one has), and also Ru's sacrifices (since I didn't have much for ideas that didn't involve basically making the entire set). I might eventually get ideas for following up further on either. Tile used: CanOfWorms' mutation resistance icons, aidanholm's Malmutate icon, snw-0's Summon Demon icon, and Denzi's edible royal jelly tile. -------------------------------------------------------------------------------- 52db497 | regret-index | 2024-07-06 03:29:03 -0230 New Xom action: fake Shatter An rather rare action meant to provide more uniquely Dungeon-altering material as Xom alone can abuse, in the veins of c695c3f and f441f4b. This action has a few changes from Shatter: it has much worse odds to destroy most features beisdes doors or diggable objects (enough to make it much more likely Xom will malmutate, banish, or teleport people hoping Xom will cut through a vault for them), it leaves behind piles of debris in the rock or stone features it destroys, and most importantly, it doesn't actually do any damage- but it still makes one of the loudest noises in the game. The singular nature of the random destruction is somewhat neutral, really- thinner corridors become wider, opener areas may produce new corridor veins out of them, rooms may break open, and it's slow for all but the last of these to matter much in one combat due to the slowly withering nature of debris- but the extreme of a proper (fake) shatter still marks it as a net bad effects. It's a reasonable joke, at any rate, for Xom to do something unique. -------------------------------------------------------------------------------- 1167860 | David Lawrence Ramsey | 2024-07-05 15:47:16 -0500 Show aux hoof/talon base damage (CrawlOdds). Whether or not it's blocked by wearing boots. Closes #3779. -------------------------------------------------------------------------------- 39ae1f0 | David Lawrence Ramsey | 2024-07-05 08:37:18 -0500 Prevent casting BVC on oneself (CrawlOdds). Closes #3901. -------------------------------------------------------------------------------- c50a736 | David Lawrence Ramsey | 2024-07-05 08:13:59 -0500 Properly represent coglins in one more place. All player species were represented in a few vaults where they're caged up, but not in this one. -------------------------------------------------------------------------------- 83a2a37 | David Lawrence Ramsey | 2024-07-05 08:02:41 -0500 Remove plant holiness from Maurice (ge0ff). Added accidentally. -------------------------------------------------------------------------------- 89fc517 | DracoOmega | 2024-07-05 04:25:40 -0230 Fix Grave Claw no longer recharging after dying as a felid (Doctor Sulfur) -------------------------------------------------------------------------------- 4f90109 | David Lawrence Ramsey | 2024-07-05 00:23:17 -0500 Update docs for new species flags. -------------------------------------------------------------------------------- 7c36963 | NormalPerson7 | 2024-07-04 23:54:13 -0500 Use plaintext for more things in species and background YAML files Change the background YAML files to use plaintext for the recommended species and skills fields, and the species YAML files to use plaintext for the recommended jobs, flags, undead, and recommended_weapons fields (for consistency). The only enum values remaining are the species' corresponding monsters and the backgrounds' starting spells, which probably ought to remain enum values as they don't always correspond to their in-game names. Hardcode job-gen.py to allow writing simply 'draconian' in the yaml recommended species field instead of 'base draconian', where the enum value is SP_BASE_DRACONIAN. -------------------------------------------------------------------------------- 9c0ddd4 | NormalPerson7 | 2024-07-04 23:24:20 -0500 Move some common functions out of job-gen and species-gen This commit moves common validation and other helper functions that would be useful for any yaml-to-header generation file out of job-gen.py and species-gen.py, and into a new file genutil.py, and lets the two scripts import gen_util.py. Note the name of the utility module is genutil.py without a hyphen, because importing file names containing the hyphen character is impractical in Python. -------------------------------------------------------------------------------- 6ad58ca | NormalPerson7 | 2024-07-04 23:24:11 -0500 Convert weapon_choice to an enum class and abstract the yaml field This commit changes enum weapon_choice into an enum class. This allows a neat pattern format in job-data-jobs.txt of weapon_choice::{weapon_choice}, and consequently permits changing the enum values in the job yaml files into simple strings. Hence, the weapon_choice yaml field now has the three possible values "none", "plain", and "good", as opposed to the old enum values "WCHOICE_NONE", ..., "WCHOICE_GOOD". Update background_creation.md to reflect this. Note that previously, the type weapon_choice was defined twice, once as an enum type, and once as a pair in newgame.cc. Changing the enum to an enum class prohibits the second definition, so this commit renames the type defined in newgame.cc to weap_choice. -------------------------------------------------------------------------------- f6c074b | NormalPerson7 | 2024-07-04 23:23:52 -0500 Move weapon_choice and job_def definitions out of job-data.h After this commit, the enum weapon_choice and struct job_def are located in a new file, job-def.h, instead of being generated in job-data.h by job-data-header.txt. The header of job-data.h now contains a description of the struct. -------------------------------------------------------------------------------- 0b8ad47 | NormalPerson7 | 2024-07-04 23:23:24 -0500 Add documentation for background creation using yaml files This commit converts background_creation.txt to use the format of species_creation.md to document the yaml format for backgrounds. Also add a one-line README to dat/jobs/. -------------------------------------------------------------------------------- 6925c6b | NormalPerson7 | 2024-07-04 23:20:24 -0500 Generate job groups on the character selection screen from yaml files This commit adds the following new, automatically generated file: - job-groups.h generated by job-gen.py, using almost identical code to that for the species groups generated by species-gen.py. -------------------------------------------------------------------------------- 17d8ae0 | NormalPerson7 | 2024-07-04 23:20:10 -0500 Generate job data from yaml files This commit converts the following files from hand-written to automatically generated: - job-data.h - job-type.h These files are generated from yaml files in the same way as species, using the Python script job-gen.py, which is a modified version of alexjurkiewicz's original species-gen.py. -------------------------------------------------------------------------------- 2401335 | David Lawrence Ramsey | 2024-07-04 23:09:13 -0500 Fix typo. -------------------------------------------------------------------------------- 4d2d54d | David Lawrence Ramsey | 2024-07-04 23:09:10 -0500 Remove unneeded space. -------------------------------------------------------------------------------- d92453a | regret-index | 2024-07-05 01:30:46 -0230 Fix the Xom test -------------------------------------------------------------------------------- 0f6896e | regret-index | 2024-07-05 00:37:21 -0230 New Xom action: mass(?) charm Another unique and removed god ability reasonably shareable with the maximalist god of random effects: the Crusade card. There's some further design space between and beyond replicating single target hex wands and the invocation buff with weird intelligence checks, after all. Swapping around multiple allegiances in the midst of battle is good chaotic fun, but since it can be much stronger to convert multiple monsters present compared to other effects (even in just telling a charmed monster to run offscreen and get itself killed), it's been seperated from the other Xom effects. This good Xom action will always charm one random monster, fail to charm another random monster, and then rolls to mostly find the lower-HD half of present monsters to charm afterwards. Going for the "weaker" proportion of matters is, of course, reasonably balanced by that half having the player to try and balance out present monsters with, and still gets quite involved in the warring afterwards. Let's try it out. -------------------------------------------------------------------------------- a0d1426 | regret-index | 2024-07-05 00:37:21 -0230 More broad Xom action adjustments * As long as Xom's not bored or wrathful, Xom's torment now also hits every other living being in sight as well as the player. With Kiku having lost the effect for Sign of Ruin, there's design space for the mixed-benefits effect, and it can tempt people into still pushing forward on a fight after being tormented, while all still functioning under a mostly negative effect due to being uncontrolled. * Xom summoned chaotic allies and enemies once more are nerfed to be slightly weaker versus XL again, most notably to reduce the odds and pressure of the highest quantity lowest level spawns producing hellwings alongside other tier-4 demons immediately next to players in early Lair, as well as to cover for their new threat levels past Lair branches. Hostile non-brain-drain summons are also fuzzed in placement to not be immediately surrounding the player, to provide more varied tactics to handle them as opposed to being directly in cleaving / IMB range and to reduce the habits of making most Xom worshippers only rest in niches and hallways. * Since bazaars are entirely harmless and thus uninteresting to Xom otherwise, Xom now replaces the flavour customers of bazaars with... very different sights. * Xom now cannot polymorph most monsters into higher HD monsters before xl 4, to prevent D:1 deaths to killer bees and bullfrogs and so on and so forth. (This unfortunately doesn't currently work for bats, as the polymorph fixed-list key per monster needs to prevent shapeshifters from drowning themselves over liquids, and thus any other flying options a bat could be polymorphed into is five or more floors deeper a threat. Passing through a lot more code to allow Xom to not care about instantly drowning given enemies would be ideal, eventually.) Polymorphs are also explicitly described as hostile or not in one's notes. * Xom's good and bad monster enchanting now both can enchant increasing numbers of visible enemies on screen, with a range capped by XL. This also comes with swapping out the charm and invisibility effects for vitrify and regeneration- mass charm is slated for its own seperate effect to actually have resistability attached, and mass invisibility (while very funny) is far too annoying to have be a common thing in Xom games. There might be some space for Xom to do more things in this space (like throw on a dozen debuffs that all don't overlap with paralysis or confusion onto a single target), but this should help for now with the continued goal of the past Xom commits for 0.32 both making Xom's danger scale more throughout more of the game and making Xom's upsides feel more variably tangible than just "skip random fights and get random mutation benefits". -------------------------------------------------------------------------------- f441f4b | regret-index | 2024-07-05 00:37:20 -0230 New Xom action(s): glass door enclosure Why imprison something in silver walls if those walls will inevitably collapse? Might as well at least try something flashier. Vitrification was removed from Xom's list of effects back in 1be608a due to interrupting rest, travel, and exploration with monsters who possibly could yet in practice obviously do not actually have any chance to reach the player. While this is quite understandable, it was nice to have Xom materially effect the dungeon itself in more permanent fashions beyond the extremely rare moving of stairs or a mechnically-irrelevnt smattering of random decor. There are ways to approach this, in particular, that shouldn't really impare the rest / travel / exploration space by too much. This rare Xom action has two different versions depending on Xom's mood. In either form, Xom surrounds the player in a ring of disconnected clear doors at distances 3 through 5, digging through diggable walls and replacing decorative non-altar features as is needed. When Xom is feeling merciful, this also comes with blinking hostile monsters inside or on top of the ring outside the box. When Xom is feeling cruel, this comes with not blinking out adjascent enemies if you're already surrounded, as well as blinking in more visible enemies into the box (scaling randomly to xl). Either way, it should still be nicely dramatic and also still reasonably parseable for Crawl to let one rest behind the transparent doors if monsters on the other side can't, in fact, open them. (Aside from trying to vary up effects here to be seperate of the recent new Xom flora ring, the radius size and disconnected doors here are deliberately evoking reverse_door_vault. While this is somewhat of a very narrow in-joke meme, it also serves interestingly enough from a tactical perspective to excuse such.) -------------------------------------------------------------------------------- 18e1206 | Implojin | 2024-07-04 19:48:51 -0500 Remove an unneeded rampage terrain prompt (CarefulOdds) Since a0b39eb048, rampage has been issuing a check_moveto terrain prompt if the player does a rampage double-move across a tile that pings check_moveto, even if that move would end on a "safe" tile. (E.g. rampaging through a poison cloud into an open tile.) This seems unnecessary as long as we're checking the player's final position, which we are. -------------------------------------------------------------------------------- acc7b80 | David Lawrence Ramsey | 2024-07-04 13:48:45 -0500 Fix typo. -------------------------------------------------------------------------------- 0126419 | David Lawrence Ramsey | 2024-07-04 13:24:30 -0500 Tweak player dazzling/blinding logic. Dazzling immunity requires blinding immunity, and blinding immunity requires not having eyes. This is closer to the monster version where the former is true alredy, and produces the same results as before. -------------------------------------------------------------------------------- 7058c45 | David Lawrence Ramsey | 2024-07-04 11:36:37 -0500 Flag vine stalkers/Maurice as unblindable. Like players, they don't have plant holiness, and giving it to them might introduce bugs. So match the player side of things (no dazzling/blinding) the easiest way. -------------------------------------------------------------------------------- b54987c | David Lawrence Ramsey | 2024-07-04 10:55:30 -0500 Add another Xom ear message. -------------------------------------------------------------------------------- 534115a | David Lawrence Ramsey | 2024-07-04 10:50:11 -0500 Remove a few references to ears. -------------------------------------------------------------------------------- e137b16 | David Lawrence Ramsey | 2024-07-04 10:46:53 -0500 Replace another eye reference. -------------------------------------------------------------------------------- 503b74b | David Lawrence Ramsey | 2024-07-04 10:43:07 -0500 Tweak see invis description to mention vision. This matches the in-game text in mutation-data.h. -------------------------------------------------------------------------------- 61b81b7 | David Lawrence Ramsey | 2024-07-04 10:36:41 -0500 Replace eyebrow references with hair references. Checking for hair for only the eye messages that reference eyebrows in Xom pseudo-miscasts is overly complex. -------------------------------------------------------------------------------- 98fe185 | David Lawrence Ramsey | 2024-07-04 10:31:29 -0500 Rename gold dragon scales to golden dragon scales. -------------------------------------------------------------------------------- 0ec4f85 | David Lawrence Ramsey | 2024-07-04 07:54:29 -0500 Make Vine Stalkers not have ears. Since they're symbiotes, it could go either way, but the tiles seem to not show visible ears, and plants don't have external ears in the usual sense anyway. -------------------------------------------------------------------------------- 9b862b9 | David Lawrence Ramsey | 2024-07-04 00:00:26 -0500 Put random body part msg code in the right place. It was in Xom's pseudo-miscasts so I could test it more easily, but it should have been in do_mon_str_replacements() so that it could be used generally, e.g. in god_speaks(). -------------------------------------------------------------------------------- 971c8ff | David Lawrence Ramsey | 2024-07-03 23:48:12 -0500 Make Xom make your ears wiggle instead of glow. Glowing a random colour is interesting, but movement is more interesting. -------------------------------------------------------------------------------- a66dc38 | David Lawrence Ramsey | 2024-07-03 23:45:07 -0500 Replace a Xom ear pseudo-miscast msg. We don't know if your species already has pointed ears or not, so just make them glow some other colour. -------------------------------------------------------------------------------- d626460 | David Lawrence Ramsey | 2024-07-03 23:40:26 -0500 Add msg for Xom's ripping magic out of you. Using a random body part the player has. Suggested by regret-index. -------------------------------------------------------------------------------- 5d92986 | David Lawrence Ramsey | 2024-07-03 23:31:39 -0500 Add Xom pseudo-miscasts for ears. -------------------------------------------------------------------------------- 6afc23f | David Lawrence Ramsey | 2024-07-03 23:27:28 -0500 Indicate whether species/forms have ears. In species, make a new species flag for it. The player species and forms that don't have external ears are now flagged as having no ears. Nothing is done with the functions to detect player ears yet; this will be remedied. -------------------------------------------------------------------------------- d25bf87 | David Lawrence Ramsey | 2024-07-03 22:08:28 -0500 Tweak Xom's eyes pseudo-miscasts again. Drop references to right and left, and just say one of your eyes. This allows the message to work regardless of which eyes it's talking about. -------------------------------------------------------------------------------- 2d43d07 | David Lawrence Ramsey | 2024-07-03 21:55:49 -0500 Document the fix for Xom's eyes pseudo-miscast. -------------------------------------------------------------------------------- de14e3e | David Lawrence Ramsey | 2024-07-03 21:48:53 -0500 Fix Xom's eyes pseudo-miscasts. Count the ones from your current form, but not the ones form Jiyva's mutation, since the latter are not the usual left/right eyes that the messages are made for. -------------------------------------------------------------------------------- a0bb186 | David Lawrence Ramsey | 2024-07-03 21:05:37 -0500 Fix override warnings? -------------------------------------------------------------------------------- e099dce | David Lawrence Ramsey | 2024-07-03 20:46:51 -0500 Handle players with no eyes. Fix a few references that assume eyes (the see invisible mutation's long description, plus a Pan lord description). Also account for no eyes in Ru's eye sacrifices and Xom's eye-related pseudo-miscasts. -------------------------------------------------------------------------------- 3a50e4b | David Lawrence Ramsey | 2024-07-03 20:46:46 -0500 Indicate whether species/forms have eyes. In species, make a new species flag for it. The player species and forms that are immune to dazzling/blinding (vine stalkers, trees, and fungi) are now flagged as having no eyes, and that quality is now what gives them such immunity. The code assumes elsewhere that all species have eyes; this will be adjusted. -------------------------------------------------------------------------------- 2ac8d13 | David Lawrence Ramsey | 2024-07-03 20:46:36 -0500 Try to clean up dazzling/blindness checks. Move them to actor, and apply them consistently to both player and monster as much as possible: dazzling checks everywhere, except for atropa darts, which explicitly do blinding checks. On the player side, resistance to being dazzled is the same as resistance to being blinded, to keep dazzling/blinding as available to players as possible. This means that vine stalker players, as well as players in tree or fungus form, can no longer be dazzled/blinded, but all other players can. -------------------------------------------------------------------------------- c8384d3 | elliptic | 2024-07-03 20:34:53 -0400 Fix the wrong gem being placed in a D:15 vault (sosloow) -------------------------------------------------------------------------------- 195b16c | David Lawrence Ramsey | 2024-07-03 18:45:13 -0500 Add a few blank lines. To make the form_has_ functions stand out better. -------------------------------------------------------------------------------- d6cd30c | DracoOmega | 2024-07-03 20:39:55 -0230 Let Divine Shield block ioods and refactor a little -------------------------------------------------------------------------------- eaf127b | David Lawrence Ramsey | 2024-07-03 17:54:11 -0500 Fix death-form's never having bones (oops). It now has bones only if the original species does. Also, consistently refer to it as fossilised instead of bony, for those species without bones. -------------------------------------------------------------------------------- 483be50 | elliptic | 2024-07-03 18:03:53 -0400 Save compat to remove negative Divine Shield charges -------------------------------------------------------------------------------- a96e11e | elliptic | 2024-07-03 17:46:12 -0400 Fix characters getting a negative amount of divine shield charges (They got them even without worshipping TSO!) -------------------------------------------------------------------------------- e965ef1 | David Lawrence Ramsey | 2024-07-03 16:38:46 -0500 Fix bugs/inconsistencies for plant players. Since they don't actually get plant holiness, the player::can_be_dazzled() checks for such did nothing. Check for the species and forms directly instead. Also, make fungus form immune to torment, since it's supposed to have plant holiness, and tree form makes you immune to torment for the same reason. -------------------------------------------------------------------------------- 9bc2200 | Nikolai Lavsky | 2024-07-04 00:03:53 +0300 fix: remove duplicate "the" from RevPerry messages Fixes messages like "You knock the the +0 club out of the goblin's grip!" -------------------------------------------------------------------------------- b22d421 | DracoOmega | 2024-07-03 16:42:47 -0230 Make the Orb complain if any method moves it (ge0FF) It was possible to use hellfire mortar's temp lava to slowly shift the Orb of Zot all the way to the stairs before picking it up (by creating lava under it, causing it to be displaced by one tile). Other less practical methods of moving it include Tomb cards and Summon Forest. Since the Orb complains about apportation, it probably ought to complain about this as well. Now any terrain change that triggers a shift which moves the orb will have a similar effect as apportation being cast upon it. -------------------------------------------------------------------------------- b890d63 | DracoOmega | 2024-07-03 16:39:38 -0230 Actually print a message when Sign of Ruin blinds a monster (elliptic) -------------------------------------------------------------------------------- 0a67a26 | DracoOmega | 2024-07-03 16:39:27 -0230 Apply Sign of Ruin effect on either melee *or* brand damage (elliptic) Sign of Ruin had a mild lack of synergy with Kiku's pain brand gift (in that Pain weapons function even on 0 damage hits, but those hits still could not trigger Sign of Ruin). Now it triggers if either the main hit *or* brand does damage on a given attack. -------------------------------------------------------------------------------- 2031b86 | DracoOmega | 2024-07-03 16:31:43 -0230 Make Divine Shield actually block beams (elliptic) Not sure how I overlooked this.... -------------------------------------------------------------------------------- 329bce5 | DracoOmega | 2024-07-03 16:31:07 -0230 Don't expire Divine Shield with time (elliptic) When reworking this ability, I'd kept a small duration on top of the limited block charges with the aim to keep the scope of the ability to a single combat. But it's been pointed out that this makes it possible to end a fight with blocks remaining, walk over to a second, and have the effect expire right as you're about to get hit. Since there's a non-trivial piety cost to the ability, we shouldn't need to worry about pre-buffing, so now your block charges simply stay around indefinitely until used. (This converts DUR_DIVINE_SHIELD to now be the number of remaining block charges rather than aut, and removes the use of ATTR_DIVINE_SHIELD entirely) -------------------------------------------------------------------------------- 23c2863 | David Lawrence Ramsey | 2024-07-03 01:08:16 -0500 Avoid spurious blinding msgs from TSO's shield. Try to blind them first, and display the "struck blind" message only if it succeeds and they weren't blinded before. Since unblindable monsters can't be blinded, this will properly stop the "struck blind" message from displaying for them. -------------------------------------------------------------------------------- 54083d6 | David Lawrence Ramsey | 2024-07-02 22:31:13 -0500 Fix incorrect possessive in merfolk siren msg. (Why isn't there a warning for a non-boolean erroneously used as a boolean parameter?) -------------------------------------------------------------------------------- f62c45d | elliptic | 2024-07-02 13:53:14 -0400 Tweak Hedge Wizard start (acrobat) Hedge Wizard had one of the least reliable XL 1 starts in the game since their starting spell, Magic Dart, had extremely low damage at their 1 Conjurations skill spell power. power. So let's raise that to 2 starting Conj skill. In addition, let's give them 1 Necromancy skill for symmetry with Summoning and Translocations now that they have a L2 Necromancy spell in their starting book. This commit also removes Slow from their starting book - it wasn't very appealing to raise Hexes just for Slow spell power given how many other schools they might want to train, and it isn't a very good spell at very low power. This means that Slow now isn't in any starting spellbooks, so it seems reasonable to cut it as a player spell altogether - it isn't very fun gameplay anyway. I'll wait a bit on doing that though. -------------------------------------------------------------------------------- b4b85c6 | David Lawrence Ramsey | 2024-07-02 10:20:12 -0500 Move player_has_bones() into actor. Map the monster version to mons_skeleton(), which is the closest equivalent on that side. It's currently not used directly anywhere, but it might be useful at some point for an eventual spell that only affects living monsters with bones. Whether monsters have hair and/or feet doesn't seem to affect much on that side, so those functions are still player-specific. (Unless there are eventual spells to e.g. strangle monsters with their own hair, or knock their feet out from under them.) -------------------------------------------------------------------------------- 38ac799 | David Lawrence Ramsey | 2024-07-02 09:50:24 -0500 Update comment. Now that has_blood() exists, Xom could rip your magic out through it, too. -------------------------------------------------------------------------------- 4f4802e | David Lawrence Ramsey | 2024-07-02 09:44:19 -0500 Indicate whether species/forms have blood. In forms, move the quality from can_bleed to has_blood. Elsewhere, rename the function. In species, make a new species flag for it. Note that having certain holinesses no longer automatically implies not having blood. Species with no blood are explicitly flagged as having no blood instead. (The one exception to this is the check for is_lifeless_undead()'s being false, which is needed to account for the one odd case of not-currently-alive vampires.) -------------------------------------------------------------------------------- 611ce37 | David Lawrence Ramsey | 2024-07-01 18:26:45 -0500 Indicate whether species/forms have feet. And make player_has_feet() use it properly. Note that having certain intrinsic mutations no longer automatically implies not having feet. Species with such mutations are explicitly flagged as having no feet instead. -------------------------------------------------------------------------------- 23c4013 | David Lawrence Ramsey | 2024-07-01 17:28:34 -0500 Indicate whether forms have bones. And make the various bones checks use it properly. -------------------------------------------------------------------------------- ab78b9c | David Lawrence Ramsey | 2024-07-01 17:07:26 -0500 Rename function to match associated variable. Use form_changes_physiology() instead of form_changed_physiology(). -------------------------------------------------------------------------------- 61c9020 | David Lawrence Ramsey | 2024-07-01 17:02:53 -0500 Indicate whether forms have hair. And make player_has_hair() use it properly. -------------------------------------------------------------------------------- 5f993c3 | David Lawrence Ramsey | 2024-07-01 13:17:33 -0500 Fix desc of death-form arms for boneless species. Use "fossilised" instead of "bony" for them. Maybe there's a better option, but it's all I could think of at the moment. -------------------------------------------------------------------------------- c0d58c9 | David Lawrence Ramsey | 2024-07-01 09:59:29 -0500 Properly check if the player has hair. Account for forms as well as species (as best we can), and have Xom's hair-related pseudo-miscasts use this check. -------------------------------------------------------------------------------- cffdeba | DracoOmega | 2024-07-01 02:31:44 -0230 Buff Arachne yet more Even after the last buff, she's still been lagging behind; venom bolt and poison arrow just don't scale that aggressively compared to other uniques she shares her depth range with now. This gives her some more HD for extra spell damage, nudges up her conjuration cast rate just a smidge, and replaces Blink with Blink Range. -------------------------------------------------------------------------------- 3df90f6 | DracoOmega | 2024-07-01 01:52:01 -0230 Make the number of Elemental Force summons a little more consistent It used to summon between 1 and 'Invocations - 1' elementals, resulting in an extremely wide variance, especially at higher invocations. It's already generally outshone by direct damage options at high invo, so it probably doesn't also need a chance to roll just a single elemental. -------------------------------------------------------------------------------- 3e911be | DracoOmega | 2024-07-01 01:30:41 -0230 Slightly clarify message for trying to invent a gizmo with full inventory At least some players didn't seem to understand that this was referring to their inventory, as opposed to some other problem. -------------------------------------------------------------------------------- e3ac9d4 | DracoOmega | 2024-07-01 01:30:09 -0230 Make Planerend summons last a bit longer. Abjuration degree 1 is just a very short length of time for hostile summons to last. (Forceful Invitation can stay at 1, due to the context in which it is usually encountered.) -------------------------------------------------------------------------------- 6d7365d | DracoOmega | 2024-07-01 01:28:40 -0230 Don't let Orb of Mayhem's effect target the thing that just died. This produced a very confusing series of messages (and also wasted the effect on a monster who was in the process of dying at the time.) I kind of think that monster_near_iterator by default just shouldn't include the monster whose perspective it is from, as the vast majority of time this specific check is then added manually (or forgotten!). -------------------------------------------------------------------------------- 17a6108 | DracoOmega | 2024-07-01 00:37:55 -0230 Tweak message for trying to use draconian breath that is exhausted This was written for an old draft that restored charges when you entered new floors, but apparently was never changed when it became xp-based instead. -------------------------------------------------------------------------------- 712046f | DracoOmega | 2024-07-01 00:37:07 -0230 Fix a visual bug with green draconian breath tracer At XL too low to have the breath spread beyond the central line, it was nonetheless showing that it might affect an area adjacent to any monsters hit by the central line (due to shared code with Combustion Breath). -------------------------------------------------------------------------------- 80f043c | DracoOmega | 2024-07-01 00:35:44 -0230 Prompt and warn if green draconian breath could leave a cloud on an ally -------------------------------------------------------------------------------- 8640a3f | DracoOmega | 2024-06-30 22:02:30 -0230 Hopefully fix some webtiles flash alpha problems more properly screen_cell_t.flash_alpha and cell_t.flash_colour weren't initialized upon construction. While draw_cell() would set these to appropriate defaults before using them for most purposes, TilesFramework::_send_cell specifically only wrote these values to json if they differed from the previous frame. This allowed a brief window upon loading a screen (and maybe other times?) where it was possible the uninitialized number would equal the 'real' number we wanted to write there, and because there was 'no change', it would not get written to webtiles json at all. At the same time, this means that a flash_alpha of 0 should never cause a json write under most circumstances, even though this is used as a 'default alpha' for active flashes (often actually 100). So notice when they're trying to use an undefined alpha value javascript-side and assume it is zero instead. I'm not 100% convinced this will properly fix all of the bugs bandaged over by 6d3ed6f0afcef2dff2510c721f16ae45721817a5 but it seems like a good attempt. -------------------------------------------------------------------------------- d7d0690 | DracoOmega | 2024-06-30 22:02:30 -0230 Don't assert when aiming a lightning rod at LoS 0 It's not clear to me that this assert is needed in the first place (and regular beam targeters don't have a similar one). -------------------------------------------------------------------------------- b41b973 | DracoOmega | 2024-06-30 22:02:30 -0230 Don't let faint miasma linger indefinitely if the player stands on it -------------------------------------------------------------------------------- ddb5797 | DracoOmega | 2024-06-30 22:02:30 -0230 Preview EV/SH changes from wielding randart staves (pisaster) They should now display the same info block that randart weapons do, in this regard. -------------------------------------------------------------------------------- a2a0cb1 | DracoOmega | 2024-06-30 22:02:30 -0230 Fix Marionette targeter not counting draconian breaths (not_that_greg) In the demoninator, at least. This turns out to actually have been an issue with get_unique_spells(), which would ignore breaths if no spell filtering flags were set. This doesn't seem to have had wider consequences as other uses of this function specify at least one filter. (Though I think this function was accessible to client lua, so it may have also affected someone else at some point in time, somehow.) -------------------------------------------------------------------------------- 14bc459 | DracoOmega | 2024-06-30 22:02:30 -0230 Flag Fulsome Fusillade as chaotic The chance is low, but it *can* malmutate enemies caught in an unstable reaction, so this would be consistent with other mutating spells. Sorry, Zin worshippers. -------------------------------------------------------------------------------- bb5b619 | DracoOmega | 2024-06-30 22:02:30 -0230 Show Grave Claw charges in quiver line, while it's quivered (CarefulOdds) Seems like a small UI nicety. -------------------------------------------------------------------------------- 0bbe9e1 | David Lawrence Ramsey | 2024-06-30 14:46:07 -0500 Fix typo. -------------------------------------------------------------------------------- e1784ef | DracoOmega | 2024-06-30 17:02:21 -0230 Improve Step From Time's functionality Step From Time is a conceptually cool ability - let the level run for a few hundred turns without the player and see how much that improves your situation - but its reliability is deeply troubled in practice. It is very common for it to make no meaningful improvement in your situation - and worse, enemies get an immediate action so sometimes the player can even get blasted by monsters that weren't in sight before they used it! A fundamental problem with the ability working the way it does is that monster wandering behavior in Crawl - when there is no player to track nor noise to pursue - is very, very dumb. A monster can literally spend thousands of turns in a medium-sized room without figuring out how to exit it - a problem that gets even worse the more other monsters are in the room for it to bump into, as each time its movement is blocked, it will start moving in a different random direction instead, making it near-impossible for a cluster of monsters to exit a corridor. I spent a while investigating how this basic wandering behavior might be improved, but it's unclear that any changes which do not require a massive-scale refactoring of monster behavior code (which is a good idea in general, but very daunting) would actually be beneficial. The incidental property of 'monsters tend to stay inside enclosed major vaults unless the player is fighting nearby' is arguably good, more intelligent behavior could be much more computationally expensive, and what monsters do when the player is extremely far away from them mostly just isn't that important. Except for Step From Time. So instead, let's cheat. Rather than merely causing a large amount of time to pass and hoping the results incidentally make a good button to press, let's move some things behind the scenes to ensure that they do - while still staying true to some of the flavor and 'unpredictability' of the ability - but to a more acceptable degree. Step From Time now passes only 100 turns in the old way (enough to introduce some general randomness, and cause timed effects to wear off, summons expire, poison to kill things, etc.). And then it grabs a random 50-85% of nearby awake monsters and manually moves them some distance away from the player to simulate them wandering (if wandering actually worked any good at all). They will always end up somewhere out of the player's LoS that they could have walked under their own power (so it's definitively *not* a teleport). Then we roll an independent power-based chance to put awake creatures anywhere in the level to sleep. (A property Step From Time effectively had in the old days, and one that seems thematically appropriate without being too easy to exploit.) Finally, we steal just enough energy from monsters which remain in the player's LoS to ensure that they do not act before the player has seen them. In total, using this ability is a lot more likely to improve the player's situation (but is not guaranteed, still has a large degree of randomization, and still functions poorly in places the player could *expect* it to function poorly, like enclosed spaces with no exit.) I've nudged the piety cost up slightly at the same time, but it should feel like a much better button to push, regardless. -------------------------------------------------------------------------------- fadd82b | DracoOmega | 2024-06-30 17:02:21 -0230 Don't crash when shadow-throwing a large rock The game wasn't considering them throwable by player shadows, which led to other issues with code that assumed they could. Fixes #3899 -------------------------------------------------------------------------------- 0d330ff | David Lawrence Ramsey | 2024-06-30 00:05:21 -0500 Update Kiku powers description (jlwoodwa). Since torment has been replaced with the sign of ruin. Closes #3898. -------------------------------------------------------------------------------- 9325eb9 | David Lawrence Ramsey | 2024-06-29 21:33:42 -0500 Tweak a Xom divine lightning message. Since the effect produces multiple blasts now, instead of just one. -------------------------------------------------------------------------------- 79019f5 | David Lawrence Ramsey | 2024-06-29 20:51:52 -0500 Fix spacing. -------------------------------------------------------------------------------- 069b42e | David Lawrence Ramsey | 2024-06-29 20:42:38 -0500 Fix spelling. -------------------------------------------------------------------------------- bdf0b8b | regret-index | 2024-06-29 22:43:51 -0230 Scattered Xom buffs to both worship and wrath As mentioned back in a3c6b23, the various changes between dropping miscasts and adding heavy XL scaling have reduced the chances Xom will directly kill the player, which is good for making people actually stay with and appreciate Xom, but also lets chaos knights who abandon Xom early live more often. The latter is unideal- it goes against the spirit of chaos knight in the first place!- and so several bits of wrath are now a bit harsher, to invoke the prior state of tier-3 demons on D:2. * Xom's wrathful actions no longer can include harmless miscast messages or random noise, as these don't actually do anything much to a given sinner. * Hostile summons counts are doubled under boredom and tripled under wrath (alongside an upgraded increase in effective level). * Xom banishes deeper and earlier while wrathful. * Xom's bad mutation effect is guaranteed to have at least one bad mutation if you're under wrath. * Xom enemy buffs no longer include BEAM_AGILITY- it's just not much of a decent joke unless it's actually made to do something, anyway. As a bit more of a carrot to go with the stick, to reward those who stay with Xom, more positive actions are a bit more noticeable and less malevolent to the player, also: * Xom polymorph-to-shapeshifter effects now require being at least xl 5, unless under Xom wrath or boredom. * Xom's single-ally summons last an average of 320 aut (up from 170) before vanishing and now get a free regeneration buff, so one can actually keep them around for a reasonable while on their floor without making one's own resting awkward. * Xom's random spells-through-the-player cast list swaps out Summon Ice Beast (boring, old, starter book spell) with Martyr's Knell (exciting, new, unique in support capacities), and Metabolic Englaciation (redundant with several other haste and slow effects) with Animate Dead (since Death Channel is already present and useful). Tension now also contributes to spellpower alongside Xom interest and player XL. * Xom's divine lightning blast now also comes with several random lightning bolts occasionally aimed somewhat towards enemies, since some seem to miss the random firing of old black draconian breath and disc of storms. * Xom's Ignition-predecessor Mass Fireball now also sticky flames on hit. Since Xom won't catch worshippers in the fireball barrage, there's now a bit more of interest and agency in charging towards whatever one wants to keep alight, and it's also a bit closer to Xom's tones by highlightning status effects too. -------------------------------------------------------------------------------- 5538e63 | regret-index | 2024-06-29 22:37:57 -0230 New Xom action: living Force Lance fleet Divine foxfire swarms are clearly too weak to interest Xom. Xom's direct destruction effects (outside of the incredibly rare Fusilade and Chain of Chaos calls) are currently rather dull for a contemporary divine context- either blasting the worshipper directly with a lightning AOE or tossing around a few fireballs that might incidentally be fake. There's ripe space for additional effects and revisions that can at least look fancy and also let the god remotely catch up to the newer effects from Nemelex, Qazlal, Ru, and Ignis, as long as they're unaimed as always. This new effect only activates if there's more than one enemy visible. If it does, it first does non-damaging knockback in a small radius around the player, akin to the scroll of butterflies, and then fills the space around the player with living spells that cast Force Lance. Force Lance in particular is chosen for its capacity to wildly push enemies around if they aren't immediately killed (and even repeatedly knock enemies out of sight only for them to walk back in and get pushed out again), which provides a more positive contrast to the position-swapping Xom action that's already been around for a while. The effect itself scales both spawns and damage heavily to the player's XL and is reasonably weaker during Xom wrath. It tends to mostly wound but not directly kill from full health random bands appropriate for their XL while rapidly crushing uniques without bands or summons, which is fine since Xom's random irresistable debuffs will already do the same anyway. -------------------------------------------------------------------------------- 9b0b472 | regret-index | 2024-06-29 22:37:57 -0230 New Xom action: brain drain Other new joke directions: doing the active opposite of divine abilities. In this case, Channel Magic and Draw Out Power. Since Xom's already covering statdrain, active draining, and torment, we might as well complete the number of ways Xom can affect the player's stats and points with something a bit more dramatic. (They did always find Brain Feed amusing, for whatever reason.) This Xom bad action drains 3/4ths of a worshipper's current mp (if and only if they have any) and transforms such into hostile (rarely neutral with severity) brain worms, mana vipers, and / or quicksilver elementals, scaling heavily to that worshipper's level. If Xom's bored or wrathful, this instead drains all mp, has no neutrality chance, and scales one's XL up further. It's a bit more violent of a prank than usual for Xom, but is that really that much different than their old predilection for explosions? -------------------------------------------------------------------------------- beb539b | David Lawrence Ramsey | 2024-06-29 18:57:12 -0500 Tweak Xom gizmo pseudo-miscast msg. To make it overlap less with the dragon armour pseudo-miscast msg. -------------------------------------------------------------------------------- c6c5c12 | David Lawrence Ramsey | 2024-06-29 18:25:00 -0500 Add Xom pseudo-miscasts for gloves/boots slots. There are grammar oddities for a few unrands with plural names (e.g. the Mad Mage's Maulers, which are not described as a pair of maulers), but they have the same oddities when in the player's inventory. -------------------------------------------------------------------------------- f4a1136 | David Lawrence Ramsey | 2024-06-29 17:50:37 -0500 Clarify comment. Gods can change unrands, as shown by Yred and "Brilliance". Xom could change unrands for chaos branding, but doesn't. -------------------------------------------------------------------------------- 6f9366b | David Lawrence Ramsey | 2024-06-29 17:48:19 -0500 Improve display of Xom ring slot miscasts. The ring names should start with "your" even if they're artefacts, like the other slot miscast messages. -------------------------------------------------------------------------------- f6d08cc | David Lawrence Ramsey | 2024-06-29 17:41:54 -0500 Add a Xom pseudo-miscast for ring slots. -------------------------------------------------------------------------------- 1c16d33 | David Lawrence Ramsey | 2024-06-29 16:13:55 -0500 Add a Xom pseudo-miscast for the gizmo slot. -------------------------------------------------------------------------------- 6061a74 | David Lawrence Ramsey | 2024-06-29 13:37:09 -0500 Add another pattern to the colour database. -------------------------------------------------------------------------------- f4827b8 | David Lawrence Ramsey | 2024-06-28 21:23:18 -0500 Add a few more Kiku Donald/player ghost lines. To reflect the flavour change from pain and torment to ruin and despair. The player ghost line referencing pain and torment is still there, but the way it's worded, it could apply to the ghost instead of the player, and who knows how Kiku punishes worshippers who fail them by dying? -------------------------------------------------------------------------------- a8b34eb | DracoOmega | 2024-06-28 18:27:35 -0230 Fix a possible Xom mass-paralysis crash -------------------------------------------------------------------------------- eaafe8a | David Lawrence Ramsey | 2024-06-28 15:18:34 -0500 Fix spelling. -------------------------------------------------------------------------------- b744659 | David Lawrence Ramsey | 2024-06-28 15:17:20 -0500 Update Necromancer background desc (jlwoodwa). Since the Necrotise spell has been replaced with Soul Splinter. -------------------------------------------------------------------------------- 7b7531d | David Lawrence Ramsey | 2024-06-28 14:27:08 -0500 Add another Xom dry fountain message. -------------------------------------------------------------------------------- 798c8b9 | gammafunk | 2024-06-28 10:23:09 -0500 fix: Use the correct number of altars in a temple (nicolae,Namsan) For mainiacjoe_temple_bowtie_tessellation, this map actually has 19 altars, so tag it correctly as such. -------------------------------------------------------------------------------- 3f2e493 | DracoOmega | 2024-06-28 12:11:06 -0230 Change/improve how Aphotic Marionette works somewhat. Targeting this ability now calculates how many spells each visible monster could cast *at the present moment*. This accounts for whether other enemies are in range of their conjurations (and not immune to them), whether the player is able to be buffed by any buffs they may have (accounting for stasis or already having these buffs), and several other things. This should make the ability feel more reliable, as it should always be able to cast as many spells as it claims it can. The ability also no longer requires an audience if the monster has spells that would function without one (ie: you can have a monster Haste you without needing some random bystander in sight.) This also means that since Marionette should *always* do something, it no longer needs the weird piety cost system where most of the cost was deducted only *after* a monster did a thing (but would be partially-refunded otherwise.) I remain concerned at how wildly effective this version is against certain enemies, like Zenata. Requiring another enemy around diluted her Sheza's Dance casts with Resonance Strikes (and often meant she had her own weapons for distractions against your weapons). I am not currently sure how to dilute the strength of Marionette in its best cases without making it too unappealing in more average ones (nor how to cost it based on how much it *did* via any sane formula.) However, players were regularly confused by facets of the old method and this should be a lot clearer by default, so let's go with this for now. -------------------------------------------------------------------------------- 1ec7147 | DracoOmega | 2024-06-28 12:11:06 -0230 Make summons gained via Marionette appear around the player Instead of around their nominal summoner. This is intended in part to make it less trivial to immediately kill a summoner with their own summons (though I am unsure how much it helps, since the player could be near them in the first place.) -------------------------------------------------------------------------------- a5e027c | DracoOmega | 2024-06-28 12:11:06 -0230 Fix Marionettes not appearing to have the right alignment to some spells mons_aligned() worked properly, but wont_attack() did not. Spells are entirely inconsistent as to which they use, so some spells would not consider the marionette to be on the proper team. -------------------------------------------------------------------------------- a5c9273 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix spells cast by Marionettes caring about their own health (ie: they would be reluctant to cast attack spells in ways that could also hurt them, when they were explicitly intended to be indifferent to this fact.) -------------------------------------------------------------------------------- f1b019f | DracoOmega | 2024-06-28 12:11:06 -0230 Fix monster Eruption cast message always claiming it's aimed at the player -------------------------------------------------------------------------------- a3775c4 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix being able to aim Grave Claw at yourself (Which would immediately crash) -------------------------------------------------------------------------------- 8e808ea | DracoOmega | 2024-06-28 12:11:06 -0230 Fix capitalisation in Grave Claw spell description -------------------------------------------------------------------------------- 94106ed | DracoOmega | 2024-06-28 12:11:06 -0230 Fix missing break statements (Waxwing) Was requiring Grave Claw to be recharged for Starburst to be castable. -------------------------------------------------------------------------------- a9aa173 | regret-index | 2024-06-27 22:43:35 -0230 Silently clear player tile clouds when Xom stops time Since there's not much counterplay to Xom's mass-paralysis otherwise, and also since there's not too many other ways to actually take much damage when everything on screen's paralyzed. (Aside from lethal poison? Well, when worshipping Xom, one probably should have been a little more cautious enough to cure such quickly when other possible actions like divine lightning or hostile summons could have been called instead.) -------------------------------------------------------------------------------- ca161ac | regret-index | 2024-06-27 22:43:35 -0230 Loose odds and ends vault review Not too much of note, but still noted down amongst other tweaks: * Fixed up evilmike_haunted_forest having living tree tiles amongst the the dead trees. * No longer make the serial_ice vaults place inexplicably harmless enemies in D:12-15 or Vaults:1-4. * Marginally increased the weight of non-encompass Depths entry vaults that are themed vaults with Depths entry configurations; we should embrace more of D:15 being notable with more vaults in the same sort of arrangement, honestly. -------------------------------------------------------------------------------- 0121280 | regret-index | 2024-06-27 22:43:34 -0230 Fiery and icy Swamp end vault fusion I've never been much of a proponent of leaning on threats not based on a branch for branch ends when said branch ends are supposed to be the dramatic finishing point of the branch in question. It dilutes the branch identity and threats already present in a branch to swerve over into a different direction with only the loosest of collective theme justifications, and frequently doesn't even try to connect them back to the monsters present. If we need more branch end variety, plenty can be done while still trying to connect to what's present and with new layouts. Sometimes this guests-work has been retroactively made to make more sense (like pharoah ants in Spider for the death scarab end), but I'd like to continue to keep a stern eye on such spaces regardless. One of the most obvious manifestations of this is in Swamp, which despite getting notable enemy updates in 0.14 and 0.26, has had a historical obvious emphasis on looking elsewhere for more threats (due to design patterns built up from a decade and a half ago prior to either update). I've pared this back down a little over time for other concerns, and will continue it here by merging two other troublesome vaults- swamp_fiery and swamp_icy. These two have had issues for a while- the former's unrestrained clouds fry most of what's inside before being fought (and for a long while was at the bottom of threat level due to using, like, steam dragons and fire crabs for a rune vault), while the latter relies heavily on slow melee monsters and has extremely little connection to Swamp itself beyond modified hydras. This merger emphasizes a few different points: * Having both themes provides enough variety to still work with both the old iconic monsters and regular Swamp spawn. The half of present monsters that aren't hydra simulacra are instead branch spawns that still work with simulacra, like swamp dragons and will-o-the-wisps. * The clouds and walls have been reworked to make the former more organized and the latter thicker, enough to reduce the likelihood monsters will wake up and wander into damaging internal flaming clouds before actually approaching the vault. It also makes the external freezing clouds mildly easier to move past, to focus more on other internal threats. * In an experimental difference from other swamp layouts, combining both layouts is meant to emphasize several large open chambers rather than dense singular cave-boxes or a long corridor of spawns. Let's see how such revisions work out. The old two vault layouts might get used eventually for more elemental game-long vaults later on, but the vault's sort of combining the two shapes together, so it's fine for now. -------------------------------------------------------------------------------- 88ce094 | David Lawrence Ramsey | 2024-06-27 20:10:26 -0500 Actually remove Pakellas altars for version > 34. Formerly, it was moved upward for that case, but not removed as it was everywhere else. -------------------------------------------------------------------------------- ef57fef | DracoOmega | 2024-06-27 19:38:18 -0230 Don't allow casting Soul Splinter with Oka (elliptic) Just an oversight. -------------------------------------------------------------------------------- 1c6beb5 | DracoOmega | 2024-06-27 19:38:18 -0230 Change how Grave Claw recharges There were numerous concerns raised that the original recharge behavior of Grave Claw (a single use which was restored after 2-3 kills) was troubled. It could place too much emphasis on the order that fights were encoutered or prompt retreating from threatening fights to go recharge a shot elsewhere first. I don't want the spell to feel tedious, but I *do* want to emphasize the 'harvesting death' flavor of it while presenting a unique consumable-ish mechanical identity. After some discussion, it was decided to try this instead: The player can now stockpile up to 3 charges of Grave Claw at once. Each of these charges takes a random 4-6 living deaths to recharge. To avoid showing a status light at all times for the state of a spell the player will eventually stop caring about, the number of remaining charges is listed in other ways: -When you are aiming the spell, the targeter line says how many charges are remaining. -When the spell is examined, it will say how many charges remain. -When the player is out of charges completely, there is still a -GClaw status light. -When the player expends their last charge upon casting it, there is a message printed. Hopefully these are comprehensive enough while being inobtrusive. When the player first memorises the spell, they gain one charge of it immediately (to prevent starting necromancers from learning a spell and then being unable to use it at all for several battles). Save files being upgraded from an older version will also gain one charge if they already had the spell. Let's see how this feels. -------------------------------------------------------------------------------- 25ed1c7 | Nicholas Feinberg | 2024-06-27 15:04:47 -0700 Fix another bug -------------------------------------------------------------------------------- 29f3d31 | Nicholas Feinberg | 2024-06-27 15:02:52 -0700 Silence a warning -------------------------------------------------------------------------------- e2cddfa | Nicholas Feinberg | 2024-06-27 15:00:58 -0700 Fix: not every attack should eviscerate (Epsilon) C++ is a good language. -------------------------------------------------------------------------------- 76dddd7 | David Lawrence Ramsey | 2024-06-27 12:10:28 -0500 Add a few more glowing_adj entries to colours. -------------------------------------------------------------------------------- fdff619 | DracoOmega | 2024-06-27 03:06:29 -0230 Don't let your shadow cast Shadow Puppet out of combat (Acrobat) Being the only shadow spell that didn't require a target, it was possible to repeatedly cast summon spells outside of combat to fish for shadow puppets - especially since low level summon spells could still produce strong allies this way if the player's xl was reasonably high. Worse, because the shadow triggers <25% of the time, you could be encouraged to keep rerolling until you got lucky enough to get several in a row before running out of MP. Let's curtail this possibility by only allowing the spell to be cast in combat (like other shadow spells effectively already were). -------------------------------------------------------------------------------- f798c56 | DracoOmega | 2024-06-27 03:03:04 -0230 Give Dithmenos melee shadows better sleep stabs A common situation with Dithmenos stabbers is that their opening attack kills a sleeping monster and their shadow immediately attacks another sleeping monster which the player *could* have dispatched the following turn, and merely wakes it up without much damage done. This feels bad. But forbidding shadows from attacking sleeping outright enemies would feel bad in so many other situations. Instead, let's try to make this feel less bad by letting the shadow just stab the sleeping monster themselves. Monsters already get a large damage multiplier when attacking a sleeping target, but they can always roll low. Good player stabbing weapons get some guaranteed damage, so let's give that to shadows also: if and only if they are attacking with a short blade or felid claws. (I am unsure whether to include the Hood of the Assassin in this condition. Shadows normally don't care about anything the player is wearing beyond their weapon, so it would be inconsistent with that. But not doing so may cause a similar feelsbad situation - just a rarer one. I could be pursued otherwise.) -------------------------------------------------------------------------------- 8a0c661 | DracoOmega | 2024-06-27 02:54:02 -0230 Make slept monsters unable to wake before the player's next turn There have been recurring bugs over the years of various methods of putting monsters to sleep being immediately broken (ie: a monster being woken up by the very thing that put them to sleep), and sometimes-brittle code trying to patch over specific instances of this. This is an attempt at a more general solution. Monsters which are put to sleep via (hopefully) any method are now immune to being woken up by (hopefully) any means until the player's next turn. This automatically addresses special cases added to handle Creeping Shadow procs from Ensorcelled Hibernation, should fix chaos weapons waking up monsters that they just put to sleep, and possibly other things. This does have the effect where player allies can attack a sleeping enemy for bonus damage without waking it up - theoretically multiple times in a row. In practice, I doubt this will be a real problem. Most enchanter types are not using allies to any real effect at the same time they are sleeping things (and would have just one-shot the sleeping enemy with their next attack anyway). It may come up a little more often with chaos weapons and Dithmenos, but that seems fine if it does. (It also has the positive side-effect of removing feelsbad situations where a monster that the player put to sleep is woken up by some immediate incidental damage they did not anticipate.) One may note the 'hopefully's up there. Monster behavior code is a tangled beast and I am not at all fully confident there isn't some way to accidentally wake a monster up despite this. We shall see. -------------------------------------------------------------------------------- f7cbc37 | DracoOmega | 2024-06-27 01:03:34 -0230 Allow Vehumet's range bonus to apply to the player's Spellforged Servitor The servitor is explicitly casting the player's own spells (and is the one summon that Vehumet explicitly supports), so it seems fair to me that it shares the player's own range with them as well. -------------------------------------------------------------------------------- 1ed0126 | DracoOmega | 2024-06-27 01:03:34 -0230 Allow Vehumet range bonus to affect a few more spells IMB, Flame Wave, and some other player-centered AoE already benefited from an effective radius extension via Vehumet. This expands that to include Hailstorm, Frozen Ramparts, and Eringya's Toxic Bog, which had previously been excluded. This seems fairly harmless, arguably more consistent, and importantly probably more fun. -------------------------------------------------------------------------------- 602a2ca | DracoOmega | 2024-06-27 01:03:34 -0230 Make Vehumet's 2nd gift be level 2-3 instead of 1-2 (elliptic) There's already a fair bit of randomness in when the player can be offered Veh gifts (compounded by randomness in when one finds Veh altars in the first place), and getting a level 1 spell for your second gift is almost universally sad - even if worshipped fairly early. Let's be a little more generous. -------------------------------------------------------------------------------- 6009e8e | DracoOmega | 2024-06-27 01:03:34 -0230 Greatly boost the effectiveness of heal-from-kills at low piety While the ability to heal HP/MP from suitable kills was nominally given at 1* for worshippers of Mahkleb, Vehumet, and TSO, the chance of it actually happening on a suitable kill at that point was less than 1%. It basically didn't *really* exist until a decent bit more piety was gained. Since the amount of healing itself was already based on the HD of what was killed (making it naturally weaker in the earlygame anyway), it doesn't need to be practically useless at first. At the same time, it meaningfully scaled at piety values above 6* and there's been some efforts over the years to make piety-based things actually max at the highest level the player can see. This commit rescales the trigger chance to be 30% at 1*, maxing at 80% at 6*. This is slightly below the old theoretical max (85% at 200 piety), but a combination of piety decay and diminishing returns on piety gain and actually *spending* piety on things meant that one wasn't likely to ever stay at 200, and so this is hopefully - at most - a tiny reduction in practice. (This may be slightly less true for Vehumet, who doesn't have any way to spend piety, but I still doubt it's significant. If so, these can be decoupled from each other.) -------------------------------------------------------------------------------- 3d6ac61 | David Lawrence Ramsey | 2024-06-26 18:16:25 -0500 Reorder spells in Trismegistus Codex. This fixes a test failure caused by Cigotuvi's Putrefaction's now being level 4. -------------------------------------------------------------------------------- 3c34056 | David Lawrence Ramsey | 2024-06-26 18:08:48 -0500 Fix spelling. -------------------------------------------------------------------------------- 3947c7c | David Lawrence Ramsey | 2024-06-26 18:08:20 -0500 Fix punctuation. -------------------------------------------------------------------------------- cefdf76 | David Lawrence Ramsey | 2024-06-26 18:08:16 -0500 Fix naming of #ifdef'ed-out enum. -------------------------------------------------------------------------------- b2846a8 | DracoOmega | 2024-06-26 20:35:50 -0230 Fix Bestow Arms animation being visible out of LoS (regret-index) -------------------------------------------------------------------------------- d6a4db0 | DracoOmega | 2024-06-26 20:35:50 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- 69d1a47 | regret-index | 2024-06-26 20:26:31 -0230 New Xom action: haste / slow / para _everything_, including you Other gods Xom can reasonably easily make jokes about: Chei. This categorized-as-a-bad action has Xom give the same duration (give or take time slices and base delay) of haste, slow, or paralysis to both the player and everything else in sight. Because of this symmetry, it's less terrible than it seems, yet still serves a seperate purpose from just affecting the player / individual monsters: it changes the usefulness of subsequent summoning or necromancy from either side, it lets other monsters wandering in be more or less noteworthy, and it lets damage-over-time effects still tick down on the paralyzed. Should be fine as another simple Xom action, and gets to bring up the divine dramatics of e.g. bending time into knots. (This does occasionally screw over formicids with mass haste, but they also get the benefits of mass slow and mass paralysis. Xom's summon and banishment rescaling already made formicid chaos knights far less troubled, anyway.) Note: I opted not to absolutely flood the message log with every single last enemy in sight being affected. If other devs feel like this should be done for consistency's sake or to make it be more obvious in the message log, they may go ahead and change this. -------------------------------------------------------------------------------- afaae9a | regret-index | 2024-06-26 20:16:48 -0230 Add Ambrosia to Xom's potion list Xom loves confusion and provides both healing and magic potions, so it seems entirely appropriate. It gets half weight to match with the other double-sided potions like attraction and berserk, though it'll probably be less bad than those nonetheless. -------------------------------------------------------------------------------- c695c3f | regret-index | 2024-06-26 20:16:47 -0230 Let Xom decorate with more than just altars While Xom being vain is good for characterization and jokes alike, we've got a variety of other options at this point that reasonably allow for some other jokes. Xom can now rarely randomly place caches of fruit, caches of meat, open or closed doors, and entrances to the Abyss, on open floor in the same fashion they place altars to Xom. The caches are entirely decorative, the doors provide a weird occasional LOS manipulation tactical benefit but are rarely relevant for cutting off monsters so they instead get to look nicely absurd, and the entrances to the Abyss probably won't matter too much versus Xom being able to banish directly or getting to the normal Depths entrance but does allow for a little bit of a dramatic yet entirely harmless effect on the nearby environs. With there being more terrain changes besides altars, this also lowers the chance of Xom summoning friendly butterflies a bit to show those off, since the other summon effects can now also include butterflies. -------------------------------------------------------------------------------- a3c6b23 | regret-index | 2024-06-26 20:16:47 -0230 New Xom action: surround with toadstools / demonic plants Xom hasn't gotten new effects in eight years, and has in fact mostly lost effects due to the miscast simplification in 3e08ee0. With Xom being a little less likely to directly kill the player earlier on after db1107a and b92a340, there's a fair bit more space to try and actually introduce more upsides and more downsides to effects compared to prior. It's a bit difficult to make too many jokes that don't feel too meta, but angling for some of what many other gods have, since they've changed a lot more than Xom has in the past eight years, is a reasonably easy angle to work with. This new effect makes a ring of toadstools or demonic plants with a radius between two to four, biasing towards the plants and radius 4 with XL. We've still kept around toadstools around despite not using them much (maybe they should go in more Sewers?), but they serve fine enough as uniquely frail firewood, and demonic plants are entirely in the spirit of Xom's still-somewhat-demonic focus. Mechanically, this effect may block off player retreats, or it might prevent large groups of enemies from properly surrounding the player as they fight / try to teleport away. Reasonable enough for one of many upcoming bits of spice, and allows a few lines riffing off of Fedhas (alongside some other silly joke lines). -------------------------------------------------------------------------------- 5113bae | regret-index | 2024-06-26 20:16:47 -0230 Give Sif Muna's Channel Energy back its success message This was lost in 942ac9c, and I feel like it's better for consistency's sake to make gaining all buffs actually provide a message in the message log; by the time one can make it much reliable, it's only one message across five or six turns of spellcasting anyway. -------------------------------------------------------------------------------- 6dbd6f5 | DracoOmega | 2024-06-26 20:15:36 -0230 Fixup a renamed enum that got missed when squashing -------------------------------------------------------------------------------- c9b6202 | DracoOmega | 2024-06-26 20:04:41 -0230 Fix rings of wizardry and amulets of regenMP having a stash tag of {buggy} -------------------------------------------------------------------------------- 2c54b8f | DracoOmega | 2024-06-26 20:04:41 -0230 Cigotuvi's Dreadful Rot -> Cigotuvi's Putrefaction (level 4 Necro/Air) Cigotuvi's Dreadful Rot was a spell in an awkward place. It could be used to open up small gaps against enemies in corridors in the earlygame, but it was found only on the background which already had Call Imp and Blink, both of which can do this more flexibly (and actually be a primary kill tool, in the case of Call Imp). You could sometimes use Mephitic Cloud to confuse enemies into it, but it was unclear how much help you needed against an enemy that was already confuse-locked. So let's try a different and higher-level take on making miasma clouds. Cigotuvi's Putrefaction is a smite-targeted level 4 Necromancy/Air spell which must be cast on a living monster that is at least 'heavily wounded'. Repurposing the old cloud spreader code (last used about 10 years ago, but never removed) it causes miasma clouds to billow out from this monster over the next several turns. These clouds start as harmless 'faint miasma' that exists to give the player a better idea of the area of effect before turning into proper miasma the next turn. Faint miasma will never turn harmful so long as the player themselves is standing there (so no matter what terrain you create the clouds on, they won't hurt you - though it's still possible to surround yourself!) The spell has a fairly significant draining cost, but this cost itself is heavily reduced by spellpower. (Increasing number of clouds and cloud duration via spellpower felt like it ran the risk of sometimes making the spell harder to use instead of strictly better.) Let's see if Corpse Rot the Fifth (Sixth?) feels in a better place. -------------------------------------------------------------------------------- bfa4c90 | DracoOmega | 2024-06-26 20:04:41 -0230 Don't absolutely forbid monsters from stepping into miasma Unlike essentially every other harmful cloud in the game, no monster that could be affected by miasma would *ever* step into it. Even mindless monsters who explicitly will walk into any other type of cloud, no matter how injured they are, would stop dead in their tracks in front of miasma. This made using some miasma-related effects as a player somewhat awkward. Either it was too hard to convince anything to stand in it or it could be used as a weirdly reliable obstacle even to endgame monsters that would barely be harmed by it. Let's try just making the logic use the same hp-based check it does for other damaging clouds in general. -------------------------------------------------------------------------------- c0b93f2 | DracoOmega | 2024-06-26 20:04:41 -0230 Buff / unbreak miasma cloud effects versus monsters Due to a seemingly innocent change in 3abaafb9f6336d86ed529b034a35b75a16c8f4ec that tweaked the formula for slow duration from BEAM_SLOW versus monsters, miasma clouds went from slowing monsters for ~10+ turns to exactly 1 turn. (This is because the fake beam miasma used to apply slow had an ench_power of 0, which previously gave a slow duration of 0 and now gives a slow duration of 1. Except 0 is special-cased to use the 'default' duration of an enchantment as specified in mon-ench.cc, which was actually something like 10 times longer...) This gives miasma slowing an explicit duration again (bypassing any beam nonsense), as well as applying additional impact damage to monsters. (Unlike against players, miasma clouds applied identical poison and nearly identical base damage to monsters as regular poison clouds. Since monster poison stacking is weird, rather than try to poison them harder (which would barely matter) apply additional impact damage if they fail their rPois check as a proxy for how much scarier they are supposed to be than poison clouds). -------------------------------------------------------------------------------- 3d5deab | DracoOmega | 2024-06-26 20:04:41 -0230 Make necromancers start with a dagger Now that their level 1 spell will often involve them also meleeing the target before killing it. -------------------------------------------------------------------------------- 2685a3d | DracoOmega | 2024-06-26 20:04:41 -0230 Add Grave Claw (level 2 Necromancy spell) This is partially intended to make Vampiric Draining no longer the singular damage tool a necromancer relies on before Animate Dead comes online, and also as a relevant replacement for Cigotuvi's Dreadful Rot in the Hedge Wizard book, where I think it may also play interestingly. Grave Claw is a smite-targeted direct damage spell that does physical damage and inflicts a very short-term Bind effect on a monster. It can be fired while on the other side of your allies (allowing it to play well with Soul Wisp - and sometimes help it get an extra hit on a monster if the wisp spawns on the other side of it), can damage rN-immune targets, and even does more upfront damage than Vampiric Draining (though checks AC). With one important stipulation: it cannot be recast until you have killed 2-3 living/zombifiable monsters. This makes it a situational tool that can help equalize otherwise difficult fights, but can never be the main way you deal with anything. I think a spell directly relating to harvesting deaths is good flavor for early necromancers to have, especially now that their level 1 spell no longer does this. It helps with hostile undead (while not preventing them from being an overall bad matchup) and I think it presents some interesting decisions. It does overlap with Vampiric Draining in several ways, but I think there are enough distinctions that this will improve the gamefeel of their kit as a whole. (Hedge Wizards can also benefit from a more impactful spell in their necromancy slot, and they too have an ally to synergize with it.) -------------------------------------------------------------------------------- c2cd7fe | DracoOmega | 2024-06-26 20:04:41 -0230 Replace Necrotise with Soul Splinter Necrotise is a perfectly functional damage spell for early floors, but the skeleton often feels like an afterthought; there's frequently nothing around for it to hit and it will usually be gone by the start of any subsequent battle. By the time this is less true, its damage is already starting to fall off. (Also: neither it nor Vampiric Draining can do anything to rN+ monsters, some of which are quite threatening to a background that is already considered a weaker mage start). There has been some desire for necromancer to have a more reliable 'ally' spell before reaching Animate Dead, but one that still clearly falls off past earlygame. Derived undead have some issues in that regard, with how they naturally scale with the monsters they are made from, so this is an attempt at accomplishing this goal with a new fixed ally. Soul Splinter is a will-resisted enchantment that breaks off a tiny fragment of a monster's soul into a Soul Wisp: a short-lived ally that will fixate on the monster it was extracted from (much like Haunt summons do at higher levels) though can stick around a short while afterward. A wisp can be created from any spectralisable monster and will spawn adjacent to it, also inflicting weakness on the monster for more or less as long as a part of its soul is out of it. Higher HD monsters will produce wisps with somewhat stronger attacks, but its health is always low. The beam-based targeting and unique monster placement should make it feel distinct from existing level 1-2 summons while remaining necromantic. It notably helps necromancer's bad matchup against ufetubi. The fact that it can spawn on the opposite side of a monster in a corridor to let the necromancer team up on someone is also relevant. Let's give it a try! -------------------------------------------------------------------------------- 4561910 | David Lawrence Ramsey | 2024-06-26 17:30:03 -0500 Use && instead of and. The latter is valid, but is harder to search for. -------------------------------------------------------------------------------- 6b5e21a | Nicholas Feinberg | 2024-06-26 15:13:30 -0700 Fix missing space (SallyRoses) Minor oversight in 325916669285695f42df15ebe3e2019d2ac322ea. -------------------------------------------------------------------------------- 811786a | David Lawrence Ramsey | 2024-06-26 08:00:33 -0500 Add a few more glowing colour messages for Xom. One matches the one already used for singular items, and the other uses the newly revived glowing_adj. -------------------------------------------------------------------------------- 97836dd | David Lawrence Ramsey | 2024-06-25 23:17:07 -0500 Tweak orc priests' description of Beogh. New Beogh seems to have enough mercy to balance out their cruelty. -------------------------------------------------------------------------------- ec53afd | David Lawrence Ramsey | 2024-06-25 22:10:56 -0500 Fix typo. -------------------------------------------------------------------------------- dcf5b86 | David Lawrence Ramsey | 2024-06-25 21:30:03 -0500 Use @the_monster_possessive@ in one more place. -------------------------------------------------------------------------------- b399a4f | David Lawrence Ramsey | 2024-06-25 21:20:29 -0500 Add another glowing_adj to the colour database. -------------------------------------------------------------------------------- f9429a1 | David Lawrence Ramsey | 2024-06-25 21:17:44 -0500 Fix comment typo. -------------------------------------------------------------------------------- 4b1f165 | David Lawrence Ramsey | 2024-06-25 21:15:44 -0500 Add another monster alchemy miscast message. Based on the similar unseen alchemy miscast. -------------------------------------------------------------------------------- 57f3d0c | David Lawrence Ramsey | 2024-06-25 21:13:03 -0500 Simplify glowing dust miscast messages. -------------------------------------------------------------------------------- 2796a0d | David Lawrence Ramsey | 2024-06-25 21:09:50 -0500 Fix incorrect weight in monster miscast message. -------------------------------------------------------------------------------- 6d36d06 | David Lawrence Ramsey | 2024-06-25 21:03:47 -0500 Use @the_monster_possessive@ in more places. I missed these in the last update. -------------------------------------------------------------------------------- 0e839f5 | David Lawrence Ramsey | 2024-06-25 21:00:25 -0500 Add glowing colours to the color database. Pulled from the old scrolls of random uselessness. This partially reverts commit 00efbec225e6347ddd28a58c3dd2184177f46084. -------------------------------------------------------------------------------- 13f425c | DracoOmega | 2024-06-25 22:47:19 -0230 Fix a weird infinite loop with ally retreat orders (robotcentaur) Due to an oversight, after ally retreat behavior was refactored by 6316ba047ae8947d194a466133b87ee628c4d497 it didn't actually properly end once they'd reached their destination. Their behavior and patrol points would be set properly to end it, and then handle_behavior would silently reset their behavior back. I am frankly astounded that no one else reported this problem before now. But even worse: because it would set their patrol point to (0, 0) WITHOUT actually changing their behavior to not seek it out, anything that reached the end of where it was going would immediately attempt to travel to (0, 0). And apparently if you were on a level where the ally in question could get near to the level boundary (eg: Shoals), this would cause an infinite loop. I am not sure the specific cause of this, since it went away when the first bug was fixed; I assume it was because handle_behavior kept getting called to give the monster somewhere valid to move and it kept on insisting it should move to (0, 0). Anyway, it seems to work properly now. -------------------------------------------------------------------------------- bc0a3b0 | David Lawrence Ramsey | 2024-06-25 14:39:34 -0500 Add another Donald Dithmenos line. -------------------------------------------------------------------------------- be422a7 | David Lawrence Ramsey | 2024-06-25 12:51:01 -0500 Don't apostrophise grunting crab melee attacks. The monster name isn't used in those messages at that point, and getting the apostrophisation in that case is complex enough that it currently isn't worth the effort, and likely will be wrong because it involves fake language support anyway. -------------------------------------------------------------------------------- 3259166 | David Lawrence Ramsey | 2024-06-25 12:32:15 -0500 Make simple god and monster msgs apostrophise. By adding an extra parameter to the functions, so that "'s" isn't hardcoded everywhere the possessive is needed. The only instances of a hardcoded "'s" left are ones in string replacements that will likely break if changed (or if apostrophise()'s current logic is changed); the vast majority are now properly passed through apostrophise(). -------------------------------------------------------------------------------- e3f4e31 | David Lawrence Ramsey | 2024-06-25 09:29:39 -0500 Reflavour Terence. He's now a veteran of a war with the armataurs. Much of his dialogue has been rewritten to reflect this. -------------------------------------------------------------------------------- 5e8508d | RypoFalem | 2024-06-25 09:21:52 -0500 Update search help text for shops (PJRamaglia) ! is used to toggle between travel and view in the search window. ? seems to do nothing. -------------------------------------------------------------------------------- 4ceacca | DracoOmega | 2024-06-25 04:17:50 -0230 Fix a possible crash with Sign of Ruin (Dhd) -------------------------------------------------------------------------------- b4869f8 | David Lawrence Ramsey | 2024-06-24 01:27:40 -0500 Fix spacing. -------------------------------------------------------------------------------- 5c60499 | Nicholas Feinberg | 2024-06-23 22:39:25 -0700 Fix azure jelly xv display (Flugkiller) Any monster with two or more identical melee attacks *followed* by more melee attacks of a different type would fail to display the latter attacks. Oops. -------------------------------------------------------------------------------- 0fb811b | regret-index | 2024-06-24 02:21:51 -0230 Bump up Xom chaos upgrades and Xom-through-player spells * Make chaos branding a monster's weapon give a stronger range: +2 to +4, instead of +0 to +4. This should make it a bit more tempting to use chaos brands as Xom indirectly offers by consistently offering more enchantment on the weapons dropped afterwards, which continues to be in the proper spirit of Xom. * Give Xom Fulsome Fusillade at the near-top end of player spells they can cast through the player. While the presented list is mostly trying to avoid direct damage higher than OTR, it's also a random elements spell that inflicts random debuffs in random areas, which is extremely chaotic in a nice dramatic fashion similar to Chain of Chaos staying just above it. While there's a bit of jank in it running out immediately if one has next to no MP, that also works well as a joke Xom can pull on the player, and it takes so long to get to the point one can get enough tension to see the spell even non-spellcasters should have enough MP to work with anyway. * Give Xom's spells-cast-through-the-player a small amount of flat additional spellpower scaling to one's XL. Currently, such effects use a weird spellpower range based on how far one is away from the centre of piety, which makes Chain of Chaos and the various hexes options regularly fail to do almost anything against enemies for a later chunk of the game; the player's XL contributing to this should help with Xom feeling more noticeable later on as they currently struggle with. Since Xom is rarely a reliable god at the best of times and all of the spells are scaled directly to tension anyway, this shouldn't much worrisome a buff. -------------------------------------------------------------------------------- db1107a | regret-index | 2024-06-24 01:40:30 -0230 Scale Xom's summons to XL, introduce a lot more options For a god of chaos that has little restraint in choice or power, Xom is kind of dull in their choice of servants. Demons tiers 3 through 5 and some random shadow creatures both binds singularly demons too heavily to chaos and leaves out a variety of more fun and weirder options than what one will see plenty of in Orc or the branch they're already within. Alongside the old demon summons (and a few more demon summons at higher tiers), this adds a fairly large amount of various living and undead monsters themed around various themes Xom already focuses upon: relocation, confusion, mutation, variable summoners, chaotic natures, and so on and so forth. There's also a sparse amount of additional demons meant to preserve and extend the old demonic flavour, mostly aimed at demons not more obviously used by Makhleb or Nemelex. To help make it more plausible to parse such, there's also a decent chance to make given choices appear in pairs. Also, shadow creatures calls themselves will always get one of these manifold chaos options (and are slightly less common), to both make it a little less plain and because it's a little funny to see a given demon look lost in a swarm of Vaults humans and troll / taurs. This also adjusts the scaling of monsters chosen and placed: it is now impossible to meet any tier-3s on D:1 without Xom being bored or abandoned, while one will stop seeing tier-3s past lair branches. There is also a lot less of a chance to see over 6 or so monsters, outside of a couple of banding-designated monsters such as laughing skulls or dream sheep, since the overall pool is a lot more dangerous / strong later on than it used to be. This should mostly make it so Xom is much less likely to directly kill on the first few floors, but is always providing some degree of potential threat later on instead of hitting a tier-3 wall or solely relying on shadow creatures. While summoned allies are also scaled to be notably strong later on, getting more than one comes with quite a short duration by default, so it's just a per-fight uncontrollable perk. TODO: This is still somewhat rather limited in decent options for lategame and extended characters, in trying to not overlap too hard with Lugonu, Makhleb, Jiyva, or using holies. Maybe Xom briefly summoning a distorted bound soul of a slain unique as an ally could pass as a joke at Yred's expense? Maybe we just need a few more Depths, Zot, and Pan enemies. -------------------------------------------------------------------------------- 73ecd75 | Nicholas Feinberg | 2024-06-23 17:52:59 -0700 Remove unused god passive messages These were added in 5f1ddaaadb3 (2015) and last seriously touched in fc596c4910b (2017). They are a grand and noble project which no one has taken up, and which has caused a great deal of dev confusion as a result. (E.g. people changing these messages, which do nothing, instead of the real ones.) They're also a bit rotten, I suspect. Let's cut them for now. We can re-add them whenever someone has the steam to take this on again. -------------------------------------------------------------------------------- 6d26cd8 | Nicholas Feinberg | 2024-06-23 17:46:48 -0700 Fix thresholds for kill god passives Match messaging in religion.cc, etc. -------------------------------------------------------------------------------- bf6a2ca | Nicholas Feinberg | 2024-06-23 17:45:35 -0700 Revert "Make Veh MP restore better at low piety (DracoOmega)" We're going to make a better version of this change later. This reverts commit c39d94d1f1a73ce59934977991b5215bdd183d79. -------------------------------------------------------------------------------- c39d94d | Nicholas Feinberg | 2024-06-23 17:34:18 -0700 Make Veh MP restore better at low piety (DracoOmega) There's some feeling that this is too unimpactful early on. -------------------------------------------------------------------------------- 950dbd3 | Nicholas Feinberg | 2024-06-23 10:15:01 -0700 Maybe fix gem mimic bugs Don't let gem mimics block real gems from breaking. Also, always show shattering messages for *on-map* gems, even if more_gem_info is false. That setting is only supposed to hide it when gems shatter *while in your inventory*. -------------------------------------------------------------------------------- 6ea4a1c | regret-index | 2024-06-23 00:45:33 -0230 Further additional monster spell icons With over 60 monster spell tiles done for 0.32, we're roughly at about 27 monster spells lacking distinct icons. Ideally, that latter number would be 0, but it's taken plenty enough to get to this point. Sources: * Chain of Chaos: Sastreii's Manifold Assault and snw-0's Mass Confusion. * Chaos Breath: snw-0's Freezing Cloud's icon. * Conjure Living Spells: snw-0's Recite icon and hellmonk's recolouring of ontoclasm's living spell icon. * Doom Howl: snw-0's summoning ring and roctavian's Shadow Fiend tile. * Flaming Cloud: snw-0's standard cloud icon. * Flay: Denzi's flayed ghosts. * Funeral Dirge: snw-0's Might icon, Ultraviolent4's Swiftness icon, CanofWorms's Fugue of the Fallen icon, and flodiebold's adjustment of the degeneration potion icon. * Harpoon Shot: roctavian's Stone Arrow and PleasingFungus's Lesser Beckoning. * Holy Flames: roctavian's Ring of Flames and snw-0's Swiftness. * Spit Lava: Denzi's Spit Poison and roctavian's Stone Arrow. Also, mirrored the various dragon / draconian breath / spit tiles to face right rather than left, to more closely match the direction the majority of other conjuration icons are oriented. -------------------------------------------------------------------------------- 6d3ed6f | DracoOmega | 2024-06-22 04:53:11 -0230 Quick stopgap measure to fix webtiles flashes sometimes being fully opaque For unclear reasons that I have been completely unable to reproduce, flashes for some players in webtiles sometimes become completely opaque instead of transparent. Even worse, since this applies to the constant screen effect from berserk, it can make the player completely unable to see the battlefield for the entire duration of the effect. This behavior is inconsistent, and seems to sometimes go away on reloading, but given that we can't expect players to know or do this, I've attempted to disable the only place I can see that allows for variable alpha transparency in flashes (ie: any value other than hard-coded 100/150). This will result in the screen effect for blind being a bit overly loud, but hopefully this is just a short-term measure until someone can figure out what the real problem is. (I mean, hopefully it even works - it's hard to test a fix to a problem I cannot reproduce...) -------------------------------------------------------------------------------- b5a8b84 | Aliscans | 2024-06-22 01:44:54 -0230 Mark transporter destinations as known on entering a fully_mapped level This lets the player use travel commands to reach an altar in hellmonk_temple_divided_pantheon (where there are transporters between the stairs and most of the altars) without first visiting the transporters manually. brflag::fully_map now also prevents transporters from appearing in the level overview. On other levels this happens until the transporter is used. -------------------------------------------------------------------------------- c13c8a0 | NormalPerson7 | 2024-06-22 01:16:36 -0230 Use redefinable yellow for poison in hp-bar (mumra) This brings poison in line with all other HP/MP-bar colours. -------------------------------------------------------------------------------- 2bc2bbe | NormalPerson7 | 2024-06-22 01:16:36 -0230 Allow using black as a menu_colour for Webtiles inventory UI Previously, using black as a menu_colour option was never useful, because black text is always invisible on the black game background. However, we can now redefine the colour black, as of d719f66, opening up a 16th possible text colour to use with menu_colour. Upon trying to do exactly this myself, I discovered the Webtiles inventory UI implicitly, and apparently unintentionally, replaces black text with lightgray, regardless of what black may have been rebound to. Let's fix this, so we really can have a 16th colour. -------------------------------------------------------------------------------- d165621 | DracoOmega | 2024-06-22 00:51:52 -0230 Fix another invisible monster leak with Gavotte (Don't leak whether a visible monster will take damage only because it *hits* an invisible one.) -------------------------------------------------------------------------------- 9ce1d27 | NormalPerson7 | 2024-06-22 00:51:52 -0230 Don't leak invisible monsters when casting Gell's Gavotte (#3836) Fix the targeter revealing the locations of invisible monsters in line of sight when they would be hurt by the spell. Resolves #3836 -------------------------------------------------------------------------------- a7e19f9 | DracoOmega | 2024-06-21 17:50:32 -0230 Cut an extremely niche and mostly-pointless monster behavior If holies walked over a good god altar, or branch natives of orc, elf, or spider (but no other branches!) walked over the entrance/exit to their branch (only the entrance, in Spider's case) while wandering, they had a chance to set that location to their patrol point and stick near it. Did you know that? Of course you didn't. (Realistically, this mattered slightly more when monsters could spawn on top of stairs over time, and this could cause these monsters to cluster up around the place they came out of. But that behavior is itself long gone, so this can join it.) -------------------------------------------------------------------------------- 02cc6ff | DracoOmega | 2024-06-21 17:46:31 -0230 Remove a couple vestiges of armataur curl status -------------------------------------------------------------------------------- 2ec1b19 | DracoOmega | 2024-06-21 17:45:57 -0230 Fix all statuses coloring SH blue in webtiles After removing Divine Shield's effect on SH, this left SH-boosters with an empty string (even when there is no defined "sh" member at all...) which matches all other strings and made all statuses color your SH. I could reorder checks so that it never looks for "sh" here, but then it might surprise someone in future that tries to put another in and it doesn't work. This is still dumb, though. -------------------------------------------------------------------------------- cb7df17 | DracoOmega | 2024-06-21 16:52:48 -0230 Don't crash on reusing a shadow mimic with a non-ranged weapon If a player created a shadow mimic while wielding a non-launcher, then switched to a launcher and triggered a shadow shot, the code would assume it could reuse the existing shadow mimic and attempt to fire from whatever it was wielding (which crashed). Now we simply don't reuse a shadow mimic for shadow shoot unless it's wielding a launcher. -------------------------------------------------------------------------------- 8499d7e | DracoOmega | 2024-06-21 16:51:15 -0230 Prevent casting Starburst with LoS 0 (elliptic) Due to how the beams are handled, this would try to fire all 8 of them directly at the player instead (though at least it prompted you not to). It already was incapable of firing *beyond* your LoS. -------------------------------------------------------------------------------- 2ed6c15 | DracoOmega | 2024-06-21 16:50:25 -0230 Prevent Polar Vortex from affecting things beyond the player's sight range The fact that Polar Vortex could damage enemies beyond sight range was most obvious in combination with Primordial Nightfall, but was already attainable just by being a kobold (and especially one who also had a scarf of shadows). Now we simply cap the max vortex radius each turn by your current vision range. -------------------------------------------------------------------------------- 9a3e478 | DracoOmega | 2024-06-21 13:24:02 -0230 (Maybe) fix LoS range being semi-permanently reduced by Nightfall Or rather, it seemed like it may have been possible for Nightfall to end while the player's LoS was still less than normal, and then nothing would trigger a LoS range update to reset it properly. (It's not altogether clear to me how, but might involve low invo and high delay actions.) Now, simply call update_vision_range whenever Nightfall wears off, which should fix any similar problem. -------------------------------------------------------------------------------- b304cf6 | David Lawrence Ramsey | 2024-06-21 10:47:46 -0500 Tweak wording of Ruin status description. -------------------------------------------------------------------------------- 0ea0d47 | DracoOmega | 2024-06-21 13:02:35 -0230 Fix Dazzling Flash player tracer not working properly (dilly) Looking at the code I edited here, I wonder if mons_aligned should just be renamed to actors_aligned or something, to make it more obvious that it works just fine for players, too. -------------------------------------------------------------------------------- de231d1 | DracoOmega | 2024-06-21 13:00:48 -0230 Don't crash when dropping items into lava -------------------------------------------------------------------------------- 21e9c0a | DracoOmega | 2024-06-21 13:00:33 -0230 Add missing status description for Sign of Ruin -------------------------------------------------------------------------------- 6630b05 | DracoOmega | 2024-06-21 01:22:50 -0230 Remove some unused arguments -------------------------------------------------------------------------------- afa2d2b | DracoOmega | 2024-06-21 01:22:17 -0230 Fix a possible crash -------------------------------------------------------------------------------- 99379c9 | DracoOmega | 2024-06-21 00:28:40 -0230 Don't block Deathly Blight from slowing stationary monsters -------------------------------------------------------------------------------- 1438d3d | DracoOmega | 2024-06-21 00:28:40 -0230 Replace Kiku's Torment power with Sign of Ruin Kiku's Torment ability was widely considered a very niche aspect of their kit. While its effect could be situationally powerful, it was unpredictably dangerous to the player *and* duplicated a scroll effect. There were often already enough scrolls of torment in a game for the number of times one really wanted to use torment (unless the player was undead) resulting in it just not being a button people were very excited to have. So let's experiment with something else. The revamped Sign of Ruin was done with this possibility in mind; Soul Scholars were always Kiku worshippers, after all. By debuffing a group of enemies with something that scales directly off receiving melee attacks (and has no friendly-fire), it plays well with having lots of minions in play, but importantly does not actually *require* them. (An earlier draft used the old ally-buff version of Black Mark, but if Kiku hadn't deigned to give you actual ally creation spells you could use with Wretches, it was very sad). Kiku has the highest abandonment rate of any god besides Ignis (part of why their wrath was buffed significantly a short while ago). Maybe a little carrot to go with that stick? (The numbers are still pretty fuzzy, but I'll adjust them based on feedback if the net effect of having this ability feels good.) -------------------------------------------------------------------------------- 65f7e67 | DracoOmega | 2024-06-21 00:28:40 -0230 Split Black Mark (the spell) away from Black Mark (the mutation) Black Mark was the signature spell of the now Demonspawn Soul Scholars, but was usually unimpactful in practice and symmetry with the player demonspawn mutation of the same name limited its ability to be buffed without confusing people (and had historically resulted in its most significant effect being outright removed). An always-on player passive and a signature short-term status used only in extended have such different balance considerations that I think it better if they just be two entirely different effects. The DS mutation remains named Black Mark (and is unchanged). The Soul Scholar spell has been renamed to Sign of Ruin and its functionality changed (though with the same core mechanical thrust). The spell now places a debuff on a 5x5 area of enemies that will trigger each time those enemies are hit with a melee attack, applying heavy draining and then one of either slow, weak, or blind. This is basically an inverted (and more powerful) version of their old effect, with the antimagic removed (Warmongers in the same zone already have the anti-magic end of things as a focus). As a debuff, it can follow the player through an extended battle, but there are additional lines of counterplay if things get rough enough (ie: !cancellation works on it). It also works better with the subject of the immediately following commit. -------------------------------------------------------------------------------- c06f563 | DracoOmega | 2024-06-21 00:28:40 -0230 Make Divine Shield (hopefully!) more interesting TSO's Divine Shield ability was reasonably useful, but extremely plain. It gave you some more SH for a little while and... that was it. (It also arguably suffered a bit with the change to max-blocks-per-turn, where even tacking on a large SH number to a buckler still only let you block once per turn). Let's try something that might feel a little more exciting. Instead of giving you SH over a medium period of time, Divine Shield now causes you to have a 100% block chance for the next X attacks (for relatively small values of X without lots of invo). Ranged attacks will be reflected and melee attackers have a 50% chance to be briefly blinded. (The fun thing is that since TSO prevents stabbing entirely, blindness is actually purely defensive for once, instead of also offensive.) Guaranteed [block X times] has some potentially interesting ramifications in that it's much worse against rapid numbers of small hits and much better against slow singular attackers. (It's worth noting that shield blocks always happen *before* the player rolls to dodge, so many of those blocks might get eaten up by attacks that would have missed you anyway, making the raw number look potentially stronger than it actually is.) The blindness gives a potentially longer-term benefit even if the blocks get eaten immediately, but it does matter where you are standing when you activate it. In any event, the hope is that this makes earlier TSO a little more exciting and feels fun to use. -------------------------------------------------------------------------------- c1a0a21 | DracoOmega | 2024-06-21 00:28:40 -0230 Don't let TSO halos make allies easier to hit TSO offers some obvious support to a general summoner: halo makes summons more accurate and TSO's blessings will heal and extend the duration of summons. It feels slightly awkward in this context that it will *also* make all of your non-divine summons more likely to *be* hit. Let's lean a little more into generalist summoner support by making this not be the case. -------------------------------------------------------------------------------- 24f1105 | DracoOmega | 2024-06-21 00:28:40 -0230 Player blindness tweaks Move the min and max duration rolls from chaos/light beam blindness closer together, add a status description for webtiles, and let wizmode super healing remove blindness. -------------------------------------------------------------------------------- 7051e9d | DracoOmega | 2024-06-21 00:27:21 -0230 Simplify player Blindness formula, bugfix Increase of directly interacting with to-hit rolls relative to a target's EV (which make the status itself doubly ineffective against non-evasive targets and was more complex to describe), being Blind now causes the player to have a flat chance to miss with any attack or dodgeable spell - multiplicative with your baseline accuracy. At distance 1, this is a 30% miss chance, increasing by 15% with each tile of distance and capping at 90%. 90% is very high, of course, but for a temporary status effect that already has several forms of counterplay, it *should* feel tactically dubious to just punch through it at its worst. (This also fixes a bug with the previous implementation where *all* beams aimed at monsters would suffer blindness penalties relative to the player's location while the player was blinded - even if the player was not the one firing them!) -------------------------------------------------------------------------------- 33b0d0b | mumra | 2024-06-21 00:27:21 -0230 Revised formula for player blindness The old formula produced weird cliffs where chance dropped rapdily to 2% at an arbitrary distance, because we were scaling to_hit to *below* the target's ev where it is no longer possible to hit them. The new formula treats target ev as a "minimum" to-hit and scales to near that point instead, using a simple inverse formula to produce a curve. This provides a much smoother and more predictable change over distance while still meeting the basic requirements of "noticable in melee, but extreme at LOS range". The malus is move to pre_roll rather than post_roll as this adjustment *has* to be made before the roll when we still know the margin. Another surprise: it escaped my attention before that ev is applied wildly different in beam accuracy vs regular combat; for beams, the ev is randomised so the effective useful to-hit is 0 instead of the targets ev. So the old formula was already behaving quite reasonably for beams, but the new formula didn't: so now beams pretend that ev is 0 for the purpose of the blindness malus. Other minor changes: - Tweaked language to be less ambiguous - Removed blindness preventing you read scrolls - Don't specifically wake player up on blinding (the cause of the blinding will probably wake them anyway) - Slightly shuffle messaging and other side effects so they don't trigger if blindness didn't increase - Cleaned up an unused key and some unneccessary consts - Fixed some Lua interface comments - Split out the description function from the calculation so the same rendering can be used for beam targetting -------------------------------------------------------------------------------- 8b871bd | mumra | 2024-06-21 00:27:21 -0230 Blindness visual: fix missing function call -------------------------------------------------------------------------------- 624a869 | mumra | 2024-06-21 00:27:21 -0230 Monster version of Dazzling Flash Now we can blind the player in an interesting way, dazzling flash can be unlocked for player ghosts. The resist mechanism (chance depending on player XL vs spell power) is perhaps not great and should be reviewed. I gave the spell to Moon Trolls slightly arbitrarily as I was testing with them and it felt thematic so I left it in (it's a very rare encounter anyway). -------------------------------------------------------------------------------- 21430ed | mumra | 2024-06-21 00:27:21 -0230 Gozag wrath can distract players We now have an effect quite close to disraction, we can blind the player when they see the glint of gold. -------------------------------------------------------------------------------- 99f3dc8 | mumra | 2024-06-21 00:27:20 -0230 Use blindness for Zin wrath Zin recite can blind monsters so it seems reasonable to do the same to the player. -------------------------------------------------------------------------------- f578f06 | mumra | 2024-06-21 00:27:20 -0230 Add blinding to klown pie effects -------------------------------------------------------------------------------- 224f11b | mumra | 2024-06-21 00:27:20 -0230 Add blinding to possible chaos effects -------------------------------------------------------------------------------- f154754 | mumra | 2024-06-21 00:27:19 -0230 Add visual effect for blindness A flash overlay with opacity increasing with distance from player -------------------------------------------------------------------------------- 748e439 | mumra | 2024-06-21 00:27:19 -0230 Add an alpha channel to screen flashes Makes it possibly to specify a custom alpha level per tile for a screen flash. Not actually used anywhere in this commit, it's for blindness effect in forthcoming commit. -------------------------------------------------------------------------------- 99b0e4a | mumra | 2024-06-21 00:27:19 -0230 Make flashes consistent in webtiles Webtiles only had a full-screen flash but in desktop it was per-tile (with an optional hitfunc). The colour was already available on screen_cell_t so it was easy to just send this value in the cell json only if it changed, and this even saves redraws as we don't need to invalidate the entire map on a flash, only the changed tiles. And it's much easier on the eyes to boot. -------------------------------------------------------------------------------- 369c5d7 | mumra | 2024-06-21 00:27:19 -0230 Blindness: player accuracy debuff Monster blindness has been available in various forms for some time, but there was no equivalent player effect and obvious sources of blindness just Confused the player if anything. The new Blind status can be inflicted on the player with a wand of light and with atropa darts. While affected, your accuracy is reduced; by more the further away the target is. Mechanically your "to hit" roll is reduced by 10% for every tile distance (starting at your own tile) so maximum 80% for a normal race or 90% for Barachi. It affects melee and ranged, and also those spells that care about accuracy, so this has most effect on ranged combat. -------------------------------------------------------------------------------- be225da | mumra | 2024-06-21 00:27:18 -0230 Make "to-hit" display more accurate and consistent A number of improvements to the % displayed while targetting and also on monster information screens. The existing state of things was not ideal, and not made clearer by a lot of duplication of logic. In some places "to hit" was shown while in other places "to evade", meaning the player has to invert their mental arithmetic arbitrarily. This was supposedly intended to convey that some calculations did not take shield blocking into account but others did; however even this logic was not always applied and some cases of "to hit" were still pre-shield, and regardless there was no way for the average player to understand this distinction. (It also doesn't help that in code language, "to hit" is always the roll *before* accuracy penalties and shields take place). The calculations were also not done at all for thrown projectiles, and I uncovered a bug where due to a double negative, Umbra was actually *increasing* accuracy (but the % display got used the *correct* formula so nobody ever noticed). And different paths implemented different logic for displaying the % (melee vs throwing vs ranged vs spells). This commit fixes all of that; shields are now taken into account in all estimations, the language is changed to consistently "to hit", all forms of to-hit display are calling the same logic, and Umbra is actually penalising accuracy as intended. -------------------------------------------------------------------------------- a50e958 | DracoOmega | 2024-06-21 00:27:04 -0230 Finally give Bind a proper status icon (regret-index) Reusing the constrict icon was misleading since not only could monsters not escape from it under their own power, but it didn't inflict any damage or EV reduction. I don't know how it took me this long. -------------------------------------------------------------------------------- f8b37b1 | DracoOmega | 2024-06-21 00:27:04 -0230 Place monster non-adjacent to player at start of Duel (elliptic) It could be extremely advantageous to melee characters to always start in melee range of the target they picked (while simultaneously being worse for ranged characters, which Okawaru also explicitly supports). Now instead the duel target will be placed in a random spot in the arena, 3-5 tiles away from the player. The smallest arena wasn't actually large enough to do this if the player started at its centre, so we now randomize your arrival location to one of the corners there instead. I added a small bit of similar randomization to the second-smallest. The larger arenas remain unchanged. -------------------------------------------------------------------------------- d717340 | DracoOmega | 2024-06-21 00:27:03 -0230 Don't give the player an extra turn in a Duel if the target kills itself -------------------------------------------------------------------------------- 1b3ecf1 | regret-index | 2024-06-20 22:24:11 -0230 Adjust Kiku titles and the corresponding Ds enemy There's not been much adjustment of piety rank titles in the past decade unless the gods in question were adjusted, which has some silly and rather strange overlaps in contrast with one another as more and more titles are racked up between them. Kiku's is one of the strangest; we've got a 1* "Scholar of Death" as a stepping stone to greater power in contrast to Sif's 4* "Scholar", a 2* "Merchant of Misery" who has no connection to Gozag or any selling in Crawl, a 3* "Artisan of Death" who doubles up on the word death just in case one missed the theme of the god, a 4* "Dealer of Despair" unrelated to Nemelex, and a 6* "Lord of Darkness" unrelated to Dith. Most jarring is the occult symbol title at 5* that even beyond its unfortunate modern associations breaks the naming schema in nearly every way: neither "X of Y" nor a pairing of concrete job and suffering. This adjusts some (if not all) of Kiku's piety titles to focus a little harder on a particularly academic angle of necromancy (helping further distinguish from Yred's more ferverent faith angle), as well as deal with a variety of the prior mentioned matters. This naturally also comes with renaming (and retiling) the Demonspawn enemy that explicitly invokes Kiku and mirrors one of the available titles. These new demonspawn soul scholars are a little less dramatic in their new names, but add a bit more texture to all the intimidation and bluster attached to other unholy matters throughout Crawl (see also Nergalle and Xak'krixis)- it's also no more bland than the current corrupters. They could honestly do with a pretty significant buff on their signature spell anyway (which struggles immensely against extended player defenses), which would coincide well with this rename. -------------------------------------------------------------------------------- dbccd66 | DracoOmega | 2024-06-18 19:46:52 -0230 Fix Dith shadow mimic and Yred reaping chance not maxing at 6* The former seems to have been uncapped entirely, while the latter falsely believe piety_breakpoint(6) was 6* and not... 255 piety?? (I swear, I am just going to make that mistake in perpetuity) -------------------------------------------------------------------------------- ca6d56b | DracoOmega | 2024-06-18 19:46:11 -0230 Fix/adjust Blorkula the Orcula Being able to kill all of Blorkula's bats before he could reform was probably just a little bit too unlikely, and success was overly binary: if you couldn't kill all of them, there was no benefit to killing *any* of them. Instead, Blorkula will reform with HP missing for each bat lost below 4 (since he splits randomly into 4 or 5) - recovering with only 2/7th HP if only one bat remains. At the same time, the fact that Blorkula had a long cooldown before being able to split into bats a second time was a bit too opaque, and even some players who had killed him repeatedly did not realize. I have added it to the description and now also utilise the 'catching his breath' status to display the cooldown in the status line. I hope this makes it more intuitive. Since it should be a fair bit easier to kill Blorkula in a single fight now, I've minorly nudged up the stats of the bats themselves. (I expect he's still less dangerous overall.) Finally, this fixes a pair of bugs that could sometimes clone Blorkula. Due to erroneous bracketing, if Blorkula 'died' while out of the player's line of sight (or while invisible), bats would be created without removing the humanoid Blorkula (or even injuring it from the deathblow). The bats would eventually form into another Blorkula, resulting in two alive at once. This was exacerbated by timeout_enchantments causing Blorkula to blink randomly at the moment of death, if he was confused when he died (thus increasing the chance of dying out of the player's LoS). This should hopefully be working properly now. -------------------------------------------------------------------------------- f261964 | DracoOmega | 2024-06-18 19:34:16 -0230 Fix a crash with generating wizard apostles at very low power Their secondary spell could have power so low there was no valid spell to go in that slot, resulting in an infinite loop of rerolling. -------------------------------------------------------------------------------- f429392 | David Lawrence Ramsey | 2024-06-18 14:26:54 -0500 Add another ancestor name. -------------------------------------------------------------------------------- 9260dd1 | Isaac Clancy | 2024-06-18 10:56:04 -0500 Improve picking up part of a stack with the mouse -------------------------------------------------------------------------------- 8a41b72 | advil | 2024-06-18 08:41:50 -0400 fix: quiet some clang warnings clang now gives warnings on set-but-unused variables (including incremented ones that are never accessed). This commit addresses the ones it found. -------------------------------------------------------------------------------- 023c873 | David Lawrence Ramsey | 2024-06-18 02:16:18 -0500 Re-separate priestly god overrides (oops). So they don't fall through to non-priestly monsters. -------------------------------------------------------------------------------- e2b7767 | David Lawrence Ramsey | 2024-06-18 02:12:02 -0500 Simplify god override logic a bit. -------------------------------------------------------------------------------- 523ca51 | NormalPerson7 | 2024-06-17 21:32:16 -0500 Rebalance wanderer good staves skill, remove decent staves skill For a while now, staves skill has been completely unbalanced for wanderers, as the wanderer background treated a +0 quarterstaff as if it was equivalent to a +0 falchion/hand axe/mace/short sword, when it is considerably better. This commit makes a +0 quarterstaff the good quality reward for staves skill (instead of a +2 quarterstaff). I have spent some time considering a suitable replacement for decent staves skill, including a random magical staff, a magical staff matching possible magic skills, or simply a -2 quarterstaff. But magical staves are probably a little too niche, and I consider that it might feel bad to start with a -2 unbranded weapon, even if in reality it's okay. So I've just decided to remove decent staves skill as a possibility. After all, there is no staves option for the backgrounds that get a choice of a decent weapon (Mo/Be/CA/CK/Wr/Re), so why should there be for wanderer? [Some data: from a sample of 1,000,000 HuWns, good staves skill occurs about 4.2% of the time, and decent staves skill occurred before this commit about 4.8% of the time. After this commit, other decent weapon and magic skills are each picked about 5.1% of the time.] -------------------------------------------------------------------------------- 0b7e420 | NormalPerson7 | 2024-06-17 21:32:16 -0500 Slightly improve wanderer stat assignment This is all very theoretical, and wanderer stat assignment is ultimately overwhelmingly random. Make polearms and staves always give an increased chance for strength (instead of coinflip str/dex) and make evocations give an increased chance for a random stat (because all three stats are entirely irrelevant to evocations). This leaves all weapon skills benefitting their damage-increasing stat except throwing and UC (which I feel thematically have much better claims at being random str/dex). Fighting and shapeshifting appropriately give random str/dex. From a sample of 1,000,000 both before and after this commit, this changes the average str/int/dex assigned by the background for HuWn from 3.55/3.75/4.69 to 3.75/3.89/4.35. The objective is very much not to reach 4/4/4 as species tend to give more str and backgrounds tend to give more dex on average. But this seems acceptable to me. -------------------------------------------------------------------------------- 4b47c47 | NormalPerson7 | 2024-06-17 21:32:16 -0500 Force wanderers to get three unique skills, reorder skill adjustments Put the adjustments to wanderer's skills earlier in the wanderer process, so that skills are rerolled instead of being assigned to SK_NONE whenever incompatible (shield + 2-h weapon) or duplicate skills are chosen. This allows wanderer stat assignment to use the reassigned skills, and it forces wanderer to actually choose three unique skills, instead of just abandoning one of them if a duplicate was picked and replacing it with random skill levels and a decent consumable. I have retained the behaviour that you can't get two pieces of armour, and that the second skill out of armour, dodging and decent stealth gives a decent consumable instead, but now assign the skill levels normally instead of ditching the decent skill altogether. -------------------------------------------------------------------------------- 47c2c9e | David Lawrence Ramsey | 2024-06-17 20:28:14 -0500 Update documentation for monster god YAML. -------------------------------------------------------------------------------- c5d1add | David Lawrence Ramsey | 2024-06-17 12:09:03 -0500 Set monster gods in YAML. _place_monster_set_god() is now place_monster_maybe_override_god(). It can override the YAML-set god (orc Beogh-worshippers and unbelievers, Xom-adopted holies in the Abyss), and gives any priestly monsters with no god set the nameless god, just like the old code, except without the explicit genus checks. The explicit genus checks were redundant anyway, since they all fell through to the default case. The old code included a comment that all (non-priestly) angels and daevas worship TSO, except for Mennas. However, the actual code made all (non-priestly) holies worship TSO except for Mennas and apises (Elyvilon worshippers); seraphim were explicitly set as TSO worshippers. I've made the new code give angels and daevas who normally worship TSO a chance to worship Xom in the Abyss; doing that for all holy beings who worship TSO would override seraphim. Also, make orc apostles explicitly worship Beogh, instead of leaving it as a 6-out-of-7 chance for the non-priestly ones. It doesn't make sense for the latter to be unbelievers. -------------------------------------------------------------------------------- be31ae4 | David Lawrence Ramsey | 2024-06-17 11:22:21 -0500 Fix comment typo. -------------------------------------------------------------------------------- 7f99e5b | David Lawrence Ramsey | 2024-06-17 08:29:50 -0500 Set the god wrath avatar's god properly. It should have the god whose wrath it represents. -------------------------------------------------------------------------------- 753a682 | David Lawrence Ramsey | 2024-06-16 08:42:51 -0500 Change apostrophe usage back in one case (wheals) Since "lotus" is not a proper name. (Although its apostrophe usage could technically go either way; the rules are not consistent.) -------------------------------------------------------------------------------- bbce87d | David Lawrence Ramsey | 2024-06-16 08:31:24 -0500 Fix spacing. -------------------------------------------------------------------------------- abf264a | David Lawrence Ramsey | 2024-06-15 16:44:51 -0500 Add another fruit name to artefacts. -------------------------------------------------------------------------------- 748c535 | David Lawrence Ramsey | 2024-06-15 16:27:28 -0500 Add another Xom lava message. -------------------------------------------------------------------------------- 12c7e32 | David Lawrence Ramsey | 2024-06-15 16:09:28 -0500 Fix more apostrophe usage. -------------------------------------------------------------------------------- 2324582 | David Lawrence Ramsey | 2024-06-15 15:24:54 -0500 Construct proper possessive monster names. Apostrophise them properly, and use e.g. "@The_monster_possessive@" and @The_something_possessive@ instead of "@The_monster@'s" and "@The_something@'s". -------------------------------------------------------------------------------- a62346c | David Lawrence Ramsey | 2024-06-15 15:21:51 -0500 Construct proper possessive player names. Apostrophise them properly, and use "@player_name_possessive@" instead of "@player_name@'s". -------------------------------------------------------------------------------- 1b1507a | David Lawrence Ramsey | 2024-06-15 15:21:47 -0500 Construct proper possessive god names. Apostrophise them properly, and use "@god_name_possessive@" instead of "@god_name@'s". -------------------------------------------------------------------------------- 3d6a2ce | David Lawrence Ramsey | 2024-06-15 15:18:26 -0500 Use @Subjective@ in Zenata speech. Accordingly, make subjective and objective pronouns get capitalised properly dependent on the case of the tag, so that they aren't always lowercase when in the middle of a line, as in Zenata's dialogue. -------------------------------------------------------------------------------- d5ad798 | David Lawrence Ramsey | 2024-06-15 14:31:53 -0500 Fix typo. -------------------------------------------------------------------------------- d2a126e | David Lawrence Ramsey | 2024-06-15 13:54:26 -0500 Replace duplicate word in Crazy Yiuf speech. Use "knee" instead of "hand" a second time. -------------------------------------------------------------------------------- b736c20 | David Lawrence Ramsey | 2024-06-15 13:46:59 -0500 Fix capitalisation. -------------------------------------------------------------------------------- e40d03d | David Lawrence Ramsey | 2024-06-15 12:47:26 -0500 Fix apostrophe usage. -------------------------------------------------------------------------------- 823a3ec | David Lawrence Ramsey | 2024-06-15 12:42:15 -0500 Fix punctuation. -------------------------------------------------------------------------------- 088a3bc | DracoOmega | 2024-06-14 14:34:20 -0230 Fix a crash with xv-ing Nessos -------------------------------------------------------------------------------- 4b4f0a9 | NormalPerson7 | 2024-06-14 14:34:20 -0230 Add x-v row showing primary melee damage/flavour for ranged monsters Except for Nessos, monsters never apply an attack flavour to their ranged attacks. Previously, x-v would pretend that monsters' ranged weapon attacks additionally applied their primary melee attack's flavour - this most notably applied to salamanders. Fix this. So that the player can always see the attack flavour of a monster's primary melee attack, add an additional row to the attacks table for monsters that wield a ranged weapon to show the base melee damage and flavour of the monster's primary melee attack. Ideally, we would show the damage of the monster's alternate weapon (if they have one) if and only if the player has already seen them wield it. However, this information is currently not tracked by the game, and would require a disproportionate amount of work to implement for what is a very minor improvement. [Note: while I believe a monster cannot dual-wield or dual-fire ranged weapons at present, the code does not assume this, in case it becomes possible in the future.] -------------------------------------------------------------------------------- 2c2fcc1 | NormalPerson7 | 2024-06-14 14:34:20 -0230 Split up and clean up _monster_attacks_description _monster_attacks_description was becoming a monster, and, without this commit, the changes in the following commit would have grown it even further. Split it up into several helper functions, and tidy up some unnecessary code (e.g. we don't need to check weapons for ARTP_SLAYING). -------------------------------------------------------------------------------- 02f1baf | NormalPerson7 | 2024-06-14 14:34:20 -0230 Treat ghost/pan lord brands like other brands on x-v There seems to me to be no reason to treat these differently now that normal weapons have their maximum brand damage shown together with their normal damage numbers. Ghosts will now have their attacks shown as "Hit: weapon of " and pan lords as "Hit: touch". I admit that this is ultimately a loss of information on the x-v screen, but it also makes x-v more universally consistent. Also, properly include might/berserk/weak effects for the calculation of max brand damage. Perhaps we could add weapon brands to ?/ at some point to improve the transparency of what each brand actually does. -------------------------------------------------------------------------------- c23e653 | NormalPerson7 | 2024-06-14 14:34:20 -0230 Don't imply melee-only buffs affect ranged weapon damage on x-v Applies to might, berserk, idealised (not that there's currently any way to get a ranged ancestor anyway) and weak. -------------------------------------------------------------------------------- e41de2b | dependabot[bot] | 2024-06-14 14:10:25 -0230 Bump tornado from 6.4 to 6.4.1 in /crawl-ref/source/webserver/requirements (#3857) Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4 to 6.4.1.
Changelog

Sourced from torna do's changelog.

Release notes

.. toctree:: :maxdepth: 2

releases/v6.4.1 releases/v6.4.0 releases/v6.3.3 releases/v6.3.2 releases/v6.3.1 releases/v6.3.0 releases/v6.2.0 releases/v6.1.0 releases/v6.0.4 releases/v6.0.3 releases/v6.0.2 releases/v6.0.1 releases/v6.0.0 releases/v5.1.1 releases/v5.1.0 releases/v5.0.2 releases/v5.0.1 releases/v5.0.0 releases/v4.5.3 releases/v4.5.2 releases/v4.5.1 releases/v4.5.0 releases/v4.4.3 releases/v4.4.2 releases/v4.4.1 releases/v4.4.0 releases/v4.3.0 releases/v4.2.1 releases/v4.2.0 releases/v4.1.0 releases/v4.0.2 releases/v4.0.1 releases/v4.0.0 releases/v3.2.2 releases/v3.2.1 releases/v3.2.0 releases/v3.1.1 releases/v3.1.0 releases/v3.0.2 releases/v3.0.1 releases/v3.0.0 releases/v2.4.1 releases/v2.4.0 releases/v2.3.0

... (truncated)

Commits
  • 2a0e1d1 Merge pull request #3388 from bdarnell/release-641
  • b7af4e8 Release notes and version bump for version 6.4.1
  • d65f6e7 Merge pull request #3387 from bdarnell/chunked-parsing
  • 8d721a8 httputil: Only strip tabs and spaces from header values
  • 7786f09 Merge pull request #3386 from bdarnell/curl-crlf
  • fb119c7 http1connection: Stricter handling of transfer-encoding
  • b0ffc58 curl_httpclient,http1connection: Prohibit CR and LF in headers
  • 0efa9a4 Merge pull request #3385 from bdarnell/update-black
  • 2757c6e Merge pull request #3384 from tornadoweb/dependabot/pip/requests-2.32.2
  • 291d1b6 *: Update black
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?depend ency-name=tornado&package-manager=pip&previous-version=6.4&new-version=6.4.1)](h ttps://docs.github.com/en/github/managing-security-vulnerabilities/about-dependa bot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/crawl/crawl/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -------------------------------------------------------------------------------- e0739fc | DracoOmega | 2024-06-14 14:04:49 -0230 Improve stumbling into unknown walls with LoS 0 (elliptic) Instead of printing no message at all, instead print a message about feeling something solid and map the tile the player bumped into so they can remember this. -------------------------------------------------------------------------------- 9aaa1af | DracoOmega | 2024-06-14 14:03:39 -0230 Don't warn that Permafrost Eruption might hit cold-immune allies Since it will never be aimed at them directly, the only collatoral damage it can ever do is cold. Closes #3863 -------------------------------------------------------------------------------- eb6dff9 | DracoOmega | 2024-06-14 03:16:15 -0230 Fix Charming breaking immediately (Undo) Broken by e42ff28ed44e11e251d firing ME_ANNOY after the enchantment effect instead of before. I opted to solve this by just not considering BEAM_CHARM to be nasty to a monster you're aligned with, which seems to work well enough. -------------------------------------------------------------------------------- a2480ef | David Lawrence Ramsey | 2024-06-13 23:19:19 -0500 Update mut_species.lua test for current species. The species list in it now includes all current species except for demonspawn, whose mutations are tested separately from the others. -------------------------------------------------------------------------------- 23b81e5 | DracoOmega | 2024-06-14 01:31:36 -0230 Fix a possible crash -------------------------------------------------------------------------------- 6e0f240 | DracoOmega | 2024-06-14 00:35:14 -0230 Let ranged bump attack work with sight range 0 (elliptic) Currently, if the player has a sight range of 0 (ie: during the first turns of Primordial Nightfall), trying to move into a monster will say "You can't see that place." and consume your turn without doing anything. For more consistency with melee attacks, this aims to let you try to shoot whatever you bump into in this case. Since ranged attacks use beams to create their ranged_attack (and beams can't be aimed out of your LoS like this), this short-circuits that part if your vision radius is 0 and makes the ranged_attack directly. I am not really happy with this implementation and would like to come up with something a little nicer (though I'm not sure how plausible this is), but it seems to produce the desired functionality at present. -------------------------------------------------------------------------------- cabffc2 | DracoOmega | 2024-06-14 00:35:14 -0230 Remove beam code left over from lamps of fire -------------------------------------------------------------------------------- 5079886 | DracoOmega | 2024-06-14 00:35:14 -0230 Make coglin shadow mimics wield weapons in random hands Compared to players, this *almost* never matters, since monsters can't stab and their weapons are always unbranded. But technically if a player was wielding an axe and a non-cleaving weapon, it would be optimal to have the axe in the main hand so the shadow could always cleave even if the main target died. -------------------------------------------------------------------------------- ec5035c | DracoOmega | 2024-06-14 00:35:14 -0230 Give Coglin ranged mimics a shot with their offhand weapon -------------------------------------------------------------------------------- 74f68ee | DracoOmega | 2024-06-14 00:35:14 -0230 Let coglin melee shadows attack with both weapons Shadow mimics of coglin players get a second attack, wielding a shadow copy of their offhand weapon (if they have one). This probably doesn't play nice with shadow positioning if the player is wielding a polearm and a non-reaching weapon at the same time, but hopefully that is a niche enough situation not to worry about it for now. -------------------------------------------------------------------------------- e42ff28 | DracoOmega | 2024-06-14 00:35:13 -0230 Alert monsters hit by enchantments *after* the enchantment effect This is aimed primarily to avoid the relatively-common situation of casting Ensorcelled Hibernation on a wandering monster that is unaware of you, and this causing it to shout and wake up other monsters immediately, even when the spell successfully puts it to sleep. Now (like non-enchantment beams), the monster is alerted only *after* the effect happens - and being asleep will stop them from shouting. This technically buffs a similar situation with paralysis wands and maybe a few others, but that seems fine. I am slightly concerned this might have unforseen consequences (since it's not obvious if there was a *reason* behavior events were fired early in this function), but I guess we'll see them if we see them. -------------------------------------------------------------------------------- a58bd73 | DracoOmega | 2024-06-14 00:35:13 -0230 Change Piledriver damage formula Piledriver asks some unique positioning questions of the player and can do very solid damage for a low-level spell when the player lines up a max distance shot with it. However, because it was tied to the default collision damage formula, distance could only scale the dice *size*, meaning that even a high power Piledriver would often wiff. This is not unusual for spells in Crawl, but for Piledriver it was especially bad. Lining up a good shot often takes multiple turns of setup and cannot simply be repeated immediately (or perhaps at all), *and* often asked the player to lunge into a more dangerous position in the process. Especially as a starting spell of a weaker background, the payoff needs to feel more reliable for people to invest the necessary skill points (and also do what the spell asks of them). To that end, instead of 2d(X-Y) damage, Piledriver now does (3-9)dX damage. (Average damage should remain similar, and the ratio between min and max distance shots also remains similar (4 tiles was ~3x as strong as 1 tile). High rolls may be a little less common, but making it far less likely not to get *a* relevant amount of damage may hopefully make it feel better to use. -------------------------------------------------------------------------------- 8603136 | DracoOmega | 2024-06-14 00:35:13 -0230 Refactor collision damage and adjust several things about it. Previously, all knockbacks/collisions which could inflict damage did so via a fixed formula contained in actor::collide (though the power supplied to this formula varied greatly based on source). This made it slightly inflexible for things which wanted to do more specific things with how they applied collision damage (ie: Gavotte or Piledriver caring about the distance a monster has travelled before the collision). actor:collide now instead takes a pre-AC damage number that it will apply to the colliding actors, if applicable. This is in anticipation of a future adjustment to Piledriver's damage, but is more flexible in general. This commit also makes several other changes in the process: -Primal Wave and Mud Breath no longer inflict collision damage. This happened fairly rarely for Primal Wave, due to low knockback distance and being most common in very open areas, but could inflict up to 2d25 additional damage when it happened (which wasn't indicated by xv!). I nudged the spell damage up slightly in exchange for no longer causing nasty surprises if the beam angle lines up just so. (Mud Breath, due to way in which collison damage was calculated, only did 2d3 by XL 27...) -Force Lance knockback distance and chance no longer scale with spellpower (all current casters are pretty similar anyway) -Wind Blast and Force Lance collision damage should be indicated by xv -Brom's Barrelling Boulder inflicts no collision damage when it cannot displace an actor (it was only ever 2d2 anyway) -Force Lance (the weapon) has a higher minimum collision damage it can inflict (now that such things are easy to add) and overall does more collision damage in general. (It's one of the fun points about the weapon that nudges you to use it differently, and I've never heard anyone say it was especially strong) Unless stated otherwise, damage from other effects should not have changed. -------------------------------------------------------------------------------- e112003 | DracoOmega | 2024-06-14 00:35:13 -0230 Let Harpoon Shot pull monsters This seems to have never functioned, even though the code for it clearly assumed things other than the player *could* be pulled (eg: there was code to check if the player could see the actor being pulled). There doesn't seem to be any particular reason to prevent monsters from being pulled by this (and in fact, warrior apostles can come with Harpoon Shot because I assumed it could do something!). -------------------------------------------------------------------------------- d50b3fb | David Lawrence Ramsey | 2024-06-12 21:12:43 -0500 Checkwhite -------------------------------------------------------------------------------- 65f5bb9 | David Lawrence Ramsey | 2024-06-12 21:11:42 -0500 Fix spelling and tweak wording. -------------------------------------------------------------------------------- a602a13 | regret-index | 2024-06-12 23:35:48 -0230 Changelog updates to be6e7be4eb9 Mostly just describing the new Dithmenos overhaul. -------------------------------------------------------------------------------- d8fb119 | regret-index | 2024-06-12 23:35:48 -0230 Vault review + Snake decor odds increasing Of note: * Took the no_tele_into out of some Zot and Vaults entry vaults. There's not really any obvious reason to avoid dangerous teleports in specific entry vaults but not most others. * Since we've got about 27x2 decorative vaults exclusive to Snake after 181dc37 and a couple of decorative features options in particular that help them stand out relative to other branches, I've given Snake:3-4 the same 33% extra chance to place decorative vaults that Zot:1-4 got in f5be29c. The branch has difficulties with standing out versus other Lair branches each brandishing obvious terrain feature differences, so this should help it out a little more on its identity front versus D itself. In exchange, a couple of luniq_ and uniq_ tags were thrown around in and out of snake.des to not completely submerge Snake levels in water, lava, or coloured glass. -------------------------------------------------------------------------------- bced643 | David Lawrence Ramsey | 2024-06-12 15:58:02 -0500 Remove obsolete glowing mutation description. -------------------------------------------------------------------------------- b53bcb1 | DracoOmega | 2024-06-12 17:36:05 -0230 Fix misnamed shadow spell (Necromancer22) (This also meant its description was missing) -------------------------------------------------------------------------------- 882d200 | Nicholas Feinberg | 2024-06-12 16:31:55 -0230 Probably fix webtiles offhand weapon display -------------------------------------------------------------------------------- 3a74b83 | DracoOmega | 2024-06-12 16:16:52 -0230 *Actually* remove the Noise Suppression mutation from the game I dummied it out, but missed setting the weight to zero, so it could still be gotten by players (but would do nothing). (Also remove a stray description) -------------------------------------------------------------------------------- 34fece2 | DracoOmega | 2024-06-12 16:16:52 -0230 Don't shift players arriving on stairs with no_tele_into (grumposus) I'd thought this logic was a fallback only used if the position the player was arriving on was unsafe, but in fact it was call every time regardless. This meant we would shift the player merely because they were in a no_tele_into zone, even if where they were standing was perfectly safe. Now we should probably only care about no_tele_into if we have to move the player at all. -------------------------------------------------------------------------------- 9b860b2 | David Lawrence Ramsey | 2024-06-12 13:01:34 -0500 Add desc for unrand scarf of invisibility. Since there's one for the unrand amulet. -------------------------------------------------------------------------------- 9407733 | David Lawrence Ramsey | 2024-06-12 11:37:53 -0500 Add quote aliases for acrobat/reflection amulets. These are all sorted, except for the amulet of nothing at the end. -------------------------------------------------------------------------------- 98076e6 | David Lawrence Ramsey | 2024-06-12 11:27:32 -0500 Properly rename ring of willpower tile. It's now i-willpower.png instead of i-r-magic.png, since the term magic resistance is no longer used. -------------------------------------------------------------------------------- c9bec69 | David Lawrence Ramsey | 2024-06-12 11:24:08 -0500 Rings of life protection enum -> positive energy. This matches the in-game naming of the item, and makes the ring quotes actually sorted. Rename the associated tile accordingly. -------------------------------------------------------------------------------- ea9a0ae | David Lawrence Ramsey | 2024-06-12 11:12:03 -0500 Add quote alias for ring of stealth. -------------------------------------------------------------------------------- 7c37e35 | David Lawrence Ramsey | 2024-06-12 11:11:11 -0500 Sort quotes for rings. These are now in alphabetical order (mostly). -------------------------------------------------------------------------------- 5c610d4 | David Lawrence Ramsey | 2024-06-12 11:01:28 -0500 Move wand of mindburst's quote alias. It's now in alphabetical order like the other wands, instead of in the same position it was in when it was called the wand of disintegration. -------------------------------------------------------------------------------- 6cc9baf | David Lawrence Ramsey | 2024-06-12 11:00:49 -0500 Add missing quote aliases for other wands. All of them should be covered now. -------------------------------------------------------------------------------- d6a05a1 | David Lawrence Ramsey | 2024-06-11 23:13:32 -0500 Add quote alias for wand of warping. -------------------------------------------------------------------------------- 4bbee2e | David Lawrence Ramsey | 2024-06-11 23:04:24 -0500 Fix punctuation in quote citations. -------------------------------------------------------------------------------- d4d5bcc | DracoOmega | 2024-06-11 21:33:53 -0230 Allow Cloak of the Thief to stack with Dith 1* power It may not have been obvious that it did not, and it seems like an unrand probably shouldn't just do nothing for Dith worshippers like this. -------------------------------------------------------------------------------- e82873c | DracoOmega | 2024-06-11 21:20:49 -0230 Don't return from the Abyss into inaccessible areas If a character with temporary flight was banished over lava or deep water, upon departing the Abyss, they would be placed on the nearest safe tile they could occupy - but this displacement did not respect no_tele_into and could sometimes result in them landing in places the player was never supposed to be able to enter (and possibly trapping them there). This does mean we will sometimes push the player further than necessary (if they got banished in this way from a ghost vault somehow), but that seems more harmless than the behavior it's replacing. (This scenario also applies to Duel, by the way) -------------------------------------------------------------------------------- d887a3b | DracoOmega | 2024-06-11 21:15:58 -0230 Include apostle short descriptions in Beoghite character dumps Since one's apostles are really a significant part of a Beogh worshipper's power and worth recording/listing. (This uses the same format of description as seen on the Extra religion screen) -------------------------------------------------------------------------------- cafd96f | DracoOmega | 2024-06-11 18:55:08 -0230 Rework Okawaru's Duel ability somewhat Duel was an ability with great flavor that, in practice, was usually best used in ways that went against that flavor - by duelling relatively harmless enemies so that the player could stall to heal up. Using it against genuinely scary enemies often meant trapping the player in a fight against them with no escape options and limited reward for doing so. This aims to improve that situation by tweaking a few things about how Duel works. When you start a duel, the player will now instantly heal for half of their missing health. But when the duel ends, your hp/mp will be reset to whatever they were when the duel *started*. This means simultaneously that there is no benefit to stalling to heal (you'll just lose that health when the duel ends), but also that you sometimes stand to benefit greatly from taking a risk (getting a large heal when at low hp, or undoing any battle damage from one scary monster before you fight others) Duels also now end instantly once the main target is dead. All items on the floor are automatically gathered up and deposited at the player's feet, where they exit. (In the rare case of the player standing over deep water or lava, an Okawaru altar will be made at their feet to ensure the items are not lost.) Finally, the piety of cost of duel is also significantly reduced, such that it is equivalent to Finesse. -------------------------------------------------------------------------------- c8ab930 | advil | 2024-06-11 15:07:37 -0400 fix: handle some webtiles race conditions Most of this was found while debugging cao behavior when out of disk space. A number of extremely strange race conditions could happen when game startup fails in unusual ways, as well as in a subsequent attempt to shutdown the server. This commit tries to handle these a bit better. Unfortunately, the best solution I found for the big one (a race condition after fork, but before execvpe overwrites python) is simply to delay so that execvpe takes hold; fork + asyncio is not well behaved. See: https://github.com/python/cpython/issues/66197 As far as I can tell, the promised solutions of safely closing the event loop in a child never materialized. -------------------------------------------------------------------------------- 01dcfa0 | DracoOmega | 2024-06-11 13:57:22 -0230 Fix Beogh ally-heal-on-damage not being active until 4* When the UI claims 3*. (I never seem to remember that piety_breakpoint(3) is actually 4* because why the heck would it be? >.>) (Note: it didn't even check your piety level at all until a couple days ago, but it seemed better to have it match up with the UI's claims. It wasn't really a balance adjustment, since it shows up as soon as you can get apostles in the first place.) -------------------------------------------------------------------------------- 18c097c | DracoOmega | 2024-06-11 13:05:51 -0230 Fix an obvious typo (ge0FF) -------------------------------------------------------------------------------- 14a633c | DracoOmega | 2024-06-11 13:00:03 -0230 Fix marionette spell markers being visible outside monster lookup (ge0FF) They were still showing up next to spells in books the player was examining. -------------------------------------------------------------------------------- 9bcd2ff | David Lawrence Ramsey | 2024-06-11 00:21:15 -0500 Remove doubled word in Primordial Nightfall desc. -------------------------------------------------------------------------------- 2b8cd2b | David Lawrence Ramsey | 2024-06-10 17:26:53 -0500 Fix spelling. -------------------------------------------------------------------------------- fa1790a | David Lawrence Ramsey | 2024-06-10 16:39:57 -0500 Add another Screaming Sword line. -------------------------------------------------------------------------------- 77ad410 | DracoOmega | 2024-06-10 16:54:01 -0230 Fix * next to some spell names for non-Dith worshippers (ge0FF) This was meant to indicate an interaction with Aphotic Marionette. The full description of what the * was indicating was properly hidden for non-Dith worshippers, but a logic error meant that the asterisk itself was still visible for everyone (confusingly). -------------------------------------------------------------------------------- aeb9cdf | DracoOmega | 2024-06-10 15:05:04 -0230 Remove some restrictions on where apostle challenges can happen (various) A variety of concerns have been expressed about the gameplay dynamics of blocking apostle challenges on rune floors, and their hidden nature. I still have some significant reservations of my own about changing it (particularly as concerns V:$), but with the HP threshold for challenges being a small bit more generous, we can give it a try to removing these for now. (I left Zot:5 vetoed for now, but the rest of Zot has also become eligible.) -------------------------------------------------------------------------------- 2d49874 | DracoOmega | 2024-06-10 14:47:00 -0230 Change Nightfall stealth bonus (elliptic) While the bonus was fairly sizeable, it still didn't do enough to counter the major penalties from heavy armour characters (thus defeating one of the purposes of the bonus - making Nightfall feel more consistent). Instead of giving you 100 stealth, it now caps your minimum stealth at 100. This might technically be a nerf to very stealthy characters using it, but I doubt it's one they could even notice. -------------------------------------------------------------------------------- 1b2b8ba | DracoOmega | 2024-06-10 14:39:37 -0230 Add 'Nightshade' as a Dithmenos title for Vine Stalkers (Flugkiller) -------------------------------------------------------------------------------- 9f789a9 | DracoOmega | 2024-06-09 21:49:05 -0230 Tweak Dithmenos wrath Instead of summoning demons and undead to harass the player, Dithmenos can now summon multiple shadow puppets (whose damage scales with the player's level) with a chance to slow the player at the same time, or animate the player's shadow against them as an active hostile monster. The hostile player shadow can know a single shadow spell drawn at random from the schools of spells the player knows. A handful of these don't really work when cast by an independent shadow and so are excluded for the moment. I'd still like to do something with the Dith wrath option that puts you to sleep, but this at least excises the 'arbitrarily evil' part of the wrath. -------------------------------------------------------------------------------- 443a00b | DracoOmega | 2024-06-09 21:49:05 -0230 Add a targeter to indicate which enemies will be misled by Shadowslip I've seen a little uncertainty sometimes why some monsters were or were not affected by this effect (possibly because the monsters weren't targeting the player at the time), so now it hilights all such monsters before cast. I'm a bit concerned now that it might be misleading in a different way for hilighting something different than 'where the player will move' but I hope at least that part is unambiguous enough with experience to not require it? -------------------------------------------------------------------------------- c9175b0 | DracoOmega | 2024-06-09 21:49:05 -0230 Fix a few breaks in mons_cast that should be returns Breaks in the giant switch statement led to a default behavior of firing the beam which is always passed into this function, after whatever the spell's own effect was. In almost all cases, there should be a return statement after the spell's code block instead (although at least two cases do this break intentionally...) Mostly, the effect of this seems to be invisible, though it caused Marionette to crash when casting Summon Scorpions due to firing a beam with no source position specified. I'm actually not sure why normal casting of this spell *doesn't* crash, since setup_mons_cast() doesn't fill that info in for the spell either (since it's not supposed to be *using* that beam), but I will just assume something somewhere else along the way of the normal cast path superfluously fills in this information. f -------------------------------------------------------------------------------- 58e5f1b | DracoOmega | 2024-06-09 21:49:05 -0230 Don't let monsters perform reach attack from out of sight When using Primordial Nightfall -------------------------------------------------------------------------------- 82c5906 | DracoOmega | 2024-06-09 21:49:05 -0230 Make Primordial Nightfall give a stealth bonus while active The ability could sometimes be less effective than expected if the player's base stealth was very low (with a few corner cases where that could even be exploited, such as attacking orbs of fire with LoS 0 and 0 Stealth and having them refuse to wander away) This should hopefully make cheese less practical while making it feel a little better in other cases. -------------------------------------------------------------------------------- 38f5e13 | DracoOmega | 2024-06-09 21:49:05 -0230 Make shadow mimic play less poorly with Ensorcelled Hibernation Due to its schools, casting EH can trigger either Shadow Torpor or Creeping Shadow, both of which are capable of immediately waking up what you just put to sleep, which is extremely bad playfeel for Enchanters - an archetype Dith specifically wants to support. Shadow Torpor now in general doesn't wake sleeping monsters (it seems harmless to slow a sleeping monster). I think it would be more problematic if Creeping Shadow *also* didn't wake sleeping monsters in general (or we might get people spamming Ozo's Armour at the end of LoS to take out sleeping bands...) but the current gameplay is so bad that I'm making it 'cheat' a little and not wake up sleeping monsters that have specifically been put to sleep via Hibernation. -------------------------------------------------------------------------------- 7207012 | DracoOmega | 2024-06-09 21:49:05 -0230 Adjust Dithmenos flavor They are no longer an evil god who focuses on corruption-via-darkness, but rather a neutral god of night and of things half-seen in the dark. In keeping with this, Dithmenos now operates on exploration piety instead of kills - they want you to venture into the dark hidden places of the dungeon, as one might wander the night, and discover what lurks there. Since Dith's entire ability context is already changing, upending piety rate ought to be doable without any greater concern than the god rework as a whole has. This commit also replaces all existing titles. One reference umbra (which Dith no longer uses), another referenced 'Endless' night (when you now have a Nightfall ability that explicitly ends and whose description talks about how night always gives way to day), and more references a hatred of fire that is also long-gone. So it felt like a chance to do them over from scratch. -------------------------------------------------------------------------------- 393c3b8 | DracoOmega | 2024-06-09 21:49:05 -0230 Aphotic Marionette (new Dithmenos 4* ability) An activated ability that allows the player to grab hold of an enemy through their shadow and force them to unleash a barrage of spells as if it were the player casting them. In a single action, the enemy will run through their known spells (in random order), attempting to cast each on random targets hostile to the player, and repeating spells only once all valid spells have been cast once. Creatures they summon this way will belong to the player and many beneficial effects that they would apply to themselves will be applied to you instead (such as Might or Invisibility). You are also fully protected from any damage they would cause (ie: if you force Nikola to repeatedly cast Chain Lightning). A handful of spells are not eligible to be cast this way (either because they would be useless, harmful, or are currently broken in some fashion), but these are all clearly indicated with an ‘!’ when examining an enemy. Can only ever be used successfully on given enemy a single time, period. (In some cases, such as an enemy having a single spell that is theoretically valid but which no enemy is in range of, using Marionette may have no useful effect. In those situations, most of the piety cost is refunded and you will able to try again another turn). By default, attempts to cast 3 spells by the targeted enemy, though at very high levels of invocations, this number can be raised as high as 6. ---- The implementation of this is fairly complicated, but I have mostly tried to avoid doing anything *inside* the code of existing spells (with just a couple small exceptions). However, wonky as it is in some ways, I think the net effect feels really cool and meaningfully different than charming, and rounds out Dith's kit as abilities that never directly damage or summon anything but manipulate existing monsters and their ability to act against you through trickery. (I do plan to do a little more refactoring to this later, but it should largely function as-is. Somewhat unclear about what the piety cost should be, since it varies from fairly disappointing to extremely powerful depending on what is around to use it on, but that's some of what experimental branches are for) -------------------------------------------------------------------------------- d9fb448 | DracoOmega | 2024-06-09 21:49:04 -0230 Implement new Dithmenos spell shadow mimic Old spell mimic was a very fickle thing, working properly with fewer and fewer spells over the years as more of them stopped being simple targeted effects (and even those which were often needed special-case logic to prevent, say, immediately cancelling Teleport Other on a monster or immediately destroying your own boulder with a shadow shard). However, the idea of god passive that works differently based on what magic the player themselves is using is a good one, so I have attempted to make a consistent version of this. Whenever you cast any spell, there is a chance for your shadow to cast a 'shadow spell' corresponding to the school of the spell you cast (chosen at random for multi-school spells). These spells mimic something of the *style* of that school of magic, but not the substance - doing non-elemental damage or otherwise being irresistable. The shadow spell list is: Fire: Shadowball (like Fireball, but irresistible.) Ice: Creeping Shadow (like Creeping Frost, except irresistible and with a somewhat smaller range.) Earth: Shadow Shard (single target, high damage projectile.) Air: Shadow Tempest (smite-targeted (but dodgeable) damage that strikes between 30-50% of all visible enemies + 1) Alchemy: Shadow Prism (make a shadow prism that works like a fulminant prism, but is somewhat harder to hit and deals no damage to allies) Conjurations: Shadow Beam (a penetrating damaging beam) Necromancy: Shadow Draining (3x3 damaging burst centered on the shadow which ignores enemy AC.) Summoning: Shadow Puppet (minor ally with swoop/flank/constricting attacks whose base damage scales with spellpower. Summon cap of 3.) Hexes: Shadow Torpor (penetrating beam that applies low-duration Slow to enemies. Ignores Will and always succeeds, though the duration is reduced by enemy HD versus spellpower.) Translocations: Shadow Bind (short-duration Bind (ie: no movement) effect to a random number of enemies in LoS. Spellpower make it affect more enemies at once.) The spellpower of your shadow is based on a function of your XL and the level of the spell which triggered it. (Each spell level is worth 4 Xls) All shadow spells are silent and inflict no damage to the player or their allies. This resist-ignoring boost provides a different vector of supporting spellcasters than current spellcasting gods. You aren't given new spells or the ability to cast them any better, but you *do* get built-in versatility and bonus damage in a way that should feel different depending on what sort of caster you're playing) (Credit to regret-index for the shadow puppet tile and most of the spell icons) -------------------------------------------------------------------------------- 357ea48 | DracoOmega | 2024-06-09 21:49:04 -0230 Refactor Creeping Frost Simplifies some of the code a little, while also allowing future effects to perform the same 'burst from walls' effect with a smaller radius and different beam properties. There should (hopefully) be no meaningful functional change to the spell. -------------------------------------------------------------------------------- db99905 | DracoOmega | 2024-06-09 21:49:04 -0230 Add a special mid to simulate being a player shadow For tracers where the shadow does not yet exist, but where we wish to trace from the perspective of a potential one. -------------------------------------------------------------------------------- 5a209e1 | DracoOmega | 2024-06-09 21:49:04 -0230 Allow beam tracers to work without an agent This is specifically for shadow mimic spell tracers here, where the shadow monster may not yet exist (yet we need to trace from the shadow's perspective to account for being able to shoot through the player). -------------------------------------------------------------------------------- ff88027 | DracoOmega | 2024-06-09 21:49:04 -0230 Force summons created by player shadows to count the player as summoner Instead of the shadow itself, which often will not even last a turn, causing the summons to immediately poof. -------------------------------------------------------------------------------- 7a8788e | DracoOmega | 2024-06-09 21:49:04 -0230 New Dith 5* ability: Primordial Nightfall Immediately reduces the player's sight radius to 0 and then slowly restores it to normal over the duration of the effect. Cannot be reapplied until it has fully worn off (so the player cannot spam it to remain nearly-invulnerable). Fills a little of the role of Shadow Form being a defensive panic button, without nearly so many different properties and up/downsides baked into it, and hopefully feels reasonably unique as well. One quirk that might not be immediately apparent is that enemies can still attack you when your sight radius is 0 because 'moving into a space' always counts as an attack if something is there. You do get the invisibility bonus to avoid their attacks because they still can't 'see' you, however. -------------------------------------------------------------------------------- d377fa9 | DracoOmega | 2024-06-09 21:49:04 -0230 Remove unused Dith ability descriptions from translations -------------------------------------------------------------------------------- 57e9c22 | DracoOmega | 2024-06-09 21:48:59 -0230 Add noise dampening as Dith 1* ability Intended to fill some of the same role as umbra once did, but in a way that has more potentially interesting ramifications for blasters as well. -------------------------------------------------------------------------------- 63ec5cf | DracoOmega | 2024-06-09 21:41:40 -0230 Remove the Noise Suppression mutation (In preparation for it being baked in as Dithmenos's first passive) -------------------------------------------------------------------------------- 848d387 | DracoOmega | 2024-06-09 21:41:40 -0230 Slightly improve spacing in god-passive.h for clarity Grouping each god's abilities together, as is done in several other files. -------------------------------------------------------------------------------- ebaddcd | DracoOmega | 2024-06-09 21:41:40 -0230 Replace Shadow Step with Shadowslip (new Dith 3* ability) Usable only while your shadow is out, Shadowslip swaps your position with it at instant speed and then misleads all visible enemies into thinking that your shadow *is* you. Enemies mislead this way will focus their attention solely on your shadow for several turns (or until the shadow dies), allowing you to slip away or stab them in the back. It costs a relatively modest amount of piety, but also some HP (as Shadow Step itself did). -------------------------------------------------------------------------------- df2a5d8 | DracoOmega | 2024-06-09 21:41:39 -0230 Overhaul Dithmenos shadow mimic (for attacks) Instead of briefly placing an invisible monster at the player's location (which tries very hard to convince the code in several places that it really *is* the player - a source of multiple bugs in past), player shadows are now proper monsters that show up on a nearby tile when they trigger. (They do not act independently, so they can be somewhat compared to a spectral weapon that lingers around for a few turns after activating to potentially distract monsters, and will interact with a future ability.) Melee attacks that trigger mimic will attempt to place it on the opposite side of the creature you're attacking and then swing at it, where this is possible, but can place on any tile up to 3 tiles away, and select any valid enemy in this range if it is not. (ie: they will always try to hit something, if they can). Ranged mimics will simply place somewhere nearby, but otherwise follow similar rules. The player and their shadow can freely fire through each other. As before, your shadow wields an unbranded +0 copy of your weapon's base type, though its own base damage now scales with your XL so that it should have more impact and remain more useful across the length of the game. (The logic for spell mimic will be added in a future commit) -------------------------------------------------------------------------------- f6379e1 | DracoOmega | 2024-06-09 21:41:39 -0230 Remove Dith's passive umbra, simplify umbra stealth bonus With umbra having become a core Yred mechanic, Dith is going to be swapping it out for a different method of making the player harder to notice (see d5141423a9 ) Also, rather than handling divine umbras and item umbras differently (which I think was not obvious to almost anyone), just standardize them at +50% stealth regardless of piety. -------------------------------------------------------------------------------- a7885c0 | DracoOmega | 2024-06-09 21:41:39 -0230 Rename shadows (the undead monster) to shadowghasts To reduce some confusion/ambiguity between player shadows (which are non-living) and the common monster (which is undead) - especially now that player shadows are a visible thing a Dith worshipper can see (and will likely be eventually used in wrath effects) -------------------------------------------------------------------------------- 8171723 | DracoOmega | 2024-06-09 21:41:39 -0230 Separate the dummy monster used for god wrath from player shadows This has caused bugs in past, and now that player shadows themselves are also no longer going to be weird hidden monsters standing on the player's tile, let's properly give wrath avatars their own monster type. There should be no functional change from this commit. -------------------------------------------------------------------------------- fa19ac7 | DracoOmega | 2024-06-09 21:41:39 -0230 Remove Dithmenos's Shadow Form ability and associated form Shadow Form was a moderately useful defensive tool, but it came with an extremely long list of assorted bonuses and penalties (several of which were highly specific). As part of the pending revamp, it is slated to be replaced with a different ability that aims to achieve a similar function of 'powerful defensive cooldown that makes you supernaturally hard to be seen' in a more streamlined manner. (See 7444593a7a ) -------------------------------------------------------------------------------- 0d7b496 | DracoOmega | 2024-06-09 21:34:15 -0230 Remove Dith's bleed smoke passive This rarely triggered until high piety, and even then was widely thought to be more of a drawback than it was an upside (due to blocking ?blinking at random and interfering with targeting.) Dith's revamp will be doing other things instead. -------------------------------------------------------------------------------- 45bd999 | DracoOmega | 2024-06-09 16:16:57 -0230 Remove default argument from SpellLibraryMenu When I wrote this, I'd intended for the default argument to be memorise (and then typoed it). But since this is only constructed in 3 places, and each one uses a different argument now anyway, might as well remove this. -------------------------------------------------------------------------------- af954ef | DracoOmega | 2024-06-09 16:16:57 -0230 Make apostle challenges a little more generous about the player's HP Instead of merely needing the player to be over 50% hp to issue a challenge (which is often still dangerously low early on), use a sliding scale based on the player's xl. (>80% at xl 0 to >50% by xl 27) -------------------------------------------------------------------------------- fdec4ed | DracoOmega | 2024-06-09 16:16:57 -0230 Fix pathfinding issues with apostle challenges / Blood for Blood Pathfinding without a proper monster agent always considered closed doors (and deep water and lava) to be untraversible, resulting in the code for apostle challenges and BfB considering areas behind closed doors unreachable. This could happen very frequently in Vaults. Since apostle challenges that cannot be issued are merely delayed, and the player will open doors as they explore the level, this may not have been immediately obvious to most players, but it nonetheless shouldn't be possible to avoid a challenge just by sitting in a room with the door closed. BfB had a similar issue due to how it places continuous reinforcements just out of sight and has them move towards the player. It now should no longer be flummoxed by doors. (Friendly monsters normally cannot actually open doors, but I have made an exception in this case, since it feels appropriate for the gameplay that BfB creates.) -------------------------------------------------------------------------------- e5cf5f0 | DracoOmega | 2024-06-09 16:16:57 -0230 Make Erica always spawn with a ring instead of sometimes an amulet This was always the intention anyway, as I understand it. -------------------------------------------------------------------------------- 5a71cb2 | DracoOmega | 2024-06-09 16:16:57 -0230 Don't let wizard apostles learn the same secondary spell twice This did actually double their cast rate of it, but confused people by showing up twice in the apostle info blub (and was rather opaque anyway). -------------------------------------------------------------------------------- 1a24481 | DracoOmega | 2024-06-09 16:16:57 -0230 Add Permafrost Eruption and Hellfire Mortar to the wizard apostle list -------------------------------------------------------------------------------- e83a209 | DracoOmega | 2024-06-09 16:16:57 -0230 Make Beogh ally healing via damage stronger (and tweak wording) I think the pseudo ally-vampirism effect Beogh granted was already decently relevant, but seemed to have gone overlooked by a bunch of people. Since Beogh doesn't seem in danger of being *too* good (and anything which requires the player to put themselves in harm's way is already the 'less strong' side of Beogh anyway), let's try buffing the effect a noticable amount and see if people notice it more. -------------------------------------------------------------------------------- f893faa | DracoOmega | 2024-06-09 16:16:56 -0230 Prevent apostle challenges before D:6 Early apostle challenges can be enormously dangerous, and this made early faded Beogh altars and/or monks often more bad than good. This attempts to address the worst cases by simply banning all apostle challenges before D:6. That is still fairly early, but ideally a more manageable level of early. (Progress towards the next challenge will still accumulate even before this point, so the early piety bonus will still result in more rapidly getting a full roster, but hopefully not before the player has a reasonable chance of managing it.) -------------------------------------------------------------------------------- e97a2a3 | DracoOmega | 2024-06-09 16:16:56 -0230 Fix Regenerate Other being usable on self, add Mass Regeneration Despite the name, priest apostles could use Regenerate Other on themselves. Now it really does require they cast it on someone else, but a high-level version that applies regeneration to *all* allies has been added as a rarer priest spell, in partial compensation. -------------------------------------------------------------------------------- 1335958 | DracoOmega | 2024-06-09 16:16:56 -0230 Improve Noxious Breath targeting behavior Targeting will no longer default to aiming at the player, even when susceptible enemies are in range. Also, it will properly display the chance for the noxious clouds to confuse enemies instead of a misleading 'hit chance' (it can't miss in the first place) This fixes #3831 -------------------------------------------------------------------------------- ea5a38d | elliptic | 2024-06-09 14:03:25 -0400 Mark the god.worship milestone only after setting initial piety Previously if you had Invocations as your top skill it recorded the penance title for your new god. -------------------------------------------------------------------------------- 0555720 | elliptic | 2024-06-09 02:06:19 -0400 Fix not being able to memorize spells not currently castable (johngfound) Piledriver and Sublimation were two examples of spells that had issues. -------------------------------------------------------------------------------- dcd31b5 | DracoOmega | 2024-06-08 22:54:03 -0230 Mention in spell descriptions whether they are servitorable (elliptic) If the player knows Spellforged Servitor, there will be a line appended to full spell descriptions letting the player know whether this is a spell that servitor could cast. -------------------------------------------------------------------------------- 790598c | David Lawrence Ramsey | 2024-06-08 18:55:49 -0500 Fix typo. -------------------------------------------------------------------------------- 4a138bd | DracoOmega | 2024-06-08 20:34:37 -0230 Let players choose which spell their Spellforged Servitor casts (elliptic) Spellforged Servitor is a fun and popular spell, but it relies on a hidden priority list of spells it can cast which isn't documented anywhere in game. This is somewhat opaque to inexperienced players, and even for experienced ones, can lead to unfortunate situations of wanting to avoid memorizing a spell that the player would like to use, but which they would rather their servitor not. In an attempt to improve this situation a little, the player now has an Imbue Servitor ability while Spellforged Servitor is known, which will allow them to specify which eligable spell the player would like them to cast. This ability dismisses the servitor and takes 5 turns to complete, so is not intended as a quick swap in combat. If the player never uses it, the servitor defaults to its current behavior (to prevent people who forget or do not realize from having a bad time). If the imbued spell somehow becomes ineligable (either due to ?amnesia or the player no longer being able to cast it well enough), the servitor will also fall back to the old default behavior. (It was suggested that it might be nice if the UI would also list spells in the player's library which *could* be eligable if the player memorized them or trained more, but that seems significantly more complicated to implement. I wouldn't object if someone else tried, though.) -------------------------------------------------------------------------------- b41d2f8 | DracoOmega | 2024-06-08 20:34:37 -0230 Remove -MP from Cloak of the Thief (elliptic) The cloak having a downside at all, after its effect was changed, was partially for historical reasons, and it seems plausible it doesn't need one at all (it's already +0). Since -MP seems to still be stopping some of the characters it could be interesting on from using it, let's try getting rid of it entirely. -------------------------------------------------------------------------------- 8bd0f57 | David Lawrence Ramsey | 2024-06-08 16:43:18 -0500 Clarify changelog entry for DS foul shadow. -------------------------------------------------------------------------------- d719f66 | DracoOmega | 2024-06-08 15:12:09 -0230 Add option to redefine colours in Tiles/Webtiles custom_text_colours lets you change the RGB value of any of the 16 basic terminal colours used by Crawl and much of its interface. These are specified as arbitrary pairs of colour name and hex code (eg: lightmagenta:#fd59fa ) and can be remapped individually. Thanks a ton to mumra for outlining how to get any of this kind of functionality working in Webtiles. I've never touched options code or webtiles rendering before (or web code in general...), so I am still a *little* nervous I've done something wrong, but it seems to work properly in testing. -------------------------------------------------------------------------------- 1404227 | David Lawrence Ramsey | 2024-06-08 09:21:31 -0500 Tweak goblin sharper dialogue. Separate the list of cards from the deck of oddities and the list of cards from non-Nemelex decks, so that the latter can be adjusted more easily. -------------------------------------------------------------------------------- 6e78a6c | elliptic | 2024-06-07 22:04:37 -0400 Fix changelog error -------------------------------------------------------------------------------- 7c0229b | DracoOmega | 2024-06-07 23:23:57 -0230 Make blocks of ice (and hoarfrost cannons) amphibious The former in particular had some awkward interactions with being unable to sculpt simulacra of merfolk while over deep water. The merfolk simulacra would be able to swim, but the blocks of ice could not. Since blocks of ice are pretty well known for floating in the ocean in reality, I don't think it would be too weird if they did so here. And let's let hoarfrost cannons do it too while we're at it, because why not? -------------------------------------------------------------------------------- ecdbb5f | DracoOmega | 2024-06-07 23:09:50 -0230 Tweak AF_VAMPIRIC message (Namsan) Instead of saying they draw 'strength' from your injuries (which might be confused for them gaining Might or some other form of power boost, say they draw 'vitality' instead. -------------------------------------------------------------------------------- 7842008 | DracoOmega | 2024-06-07 23:07:07 -0230 Don't claim hellfire mortars 'flop about on dry land' (elliptic) While I found it very hard to cause this in testing, it appears to relate to being constricted in place for long enough that the lava path disappears beneath it. The main answer to this is to make the mortar too large to constrict, but in the rare situation where it may be otherwise possible to replace the lava beneath it with some other terrain, I have also suppressed the message in general. -------------------------------------------------------------------------------- e1e3299 | DracoOmega | 2024-06-07 23:05:09 -0230 Remove hellfire mortars upon leaving a level -------------------------------------------------------------------------------- 9f51f14 | DracoOmega | 2024-06-07 23:04:18 -0230 Let hoarfrost cannons be affected by LRD Since they're clearly made of ice. -------------------------------------------------------------------------------- a2d40b9 | DracoOmega | 2024-06-07 23:03:52 -0230 Buff Undying Armouries a little They have an interesting set of abilities, but feel perhaps a little undertuned for a rarer lategame enemy. Make the dancing weapon created by Flashing Balestra spawn with Might and increase the duration of Bestow Arms (and make ranged weapons a little more likely to be given by it). Also increase their spawn weight in the Vaults OOD table by a modest amount (since it's the only place in the game they naturally spawn), trimming a sliver of weight from storm and shadow dragons in the process. -------------------------------------------------------------------------------- 49f9abe | DracoOmega | 2024-06-07 21:11:29 -0230 Preserve the auras of bound souls At the moment, that basically just means torpor snails and glowing orange brains, neither of which are ideal bound souls in the first place, but it seems harmless and maybe ocassionally useful. -------------------------------------------------------------------------------- eb34fb9 | DracoOmega | 2024-06-07 21:10:13 -0230 Fix being unable to use Bind Soul on monsters without attacks The logic was inverted since %bf13549d7c2a334ff38fb0051bddd08410055114 letting you make spectrals with no attacks via Death Channel, but preventing you from using Bind Soul on such monsters, even if they knew spells. -------------------------------------------------------------------------------- 1cf930e | DracoOmega | 2024-06-07 21:08:32 -0230 Fix Yred always saying they were 'Noncommittal' no matter your piety The logic didn't get updated after Yred returned to a normal piety system. -------------------------------------------------------------------------------- b780b6b | David Lawrence Ramsey | 2024-06-07 13:52:01 -0500 Unbrace -------------------------------------------------------------------------------- fe1d291 | elliptic | 2024-06-07 14:41:24 -0400 Simplify weapon acquirement The goals here are similar to that of armour acquirement simplification - remove weird bits of logic that could be exploited by a spoiled player (e.g. raising Necromancy skill from 0 to 2 made non-artefact weapon gifts twice as likely to be pain) and make the code simpler in general, while still trying to give the player useful or interesting items. The way in which weapon acquirement chose a weapon skill to use (via a weighted random choice with weights based on the player's skill levels) is unchanged by this commit. There are two main changes beyond that though: First, weapon subtype (war axe vs broad axe vs battleaxe, etc) was previously chosen with weights determined in a very complicated way that took the player's highest weapon skill (even if not the one being gifted) and their shield skill into account (and had breakpoints when comparing them) and also (for non-Trog acq) looked at the cube of the weapon's base damage divided by the weapon's base delay. This was all on top of acquire_weight numbers in item-prop.cc. That has been drastically simplified - now we mainly just use the acquire_weight numbers. They are modified slightly based on Shields skill (to prefer 1-handers with higher Shields skill) and also unseen subtypes have 5 times the weight (unchanged from before). When coming up with the new acquire_weight numbers, I didn't try to work out what all the effective weights with the old system were (again, they took weapon stats into account in a complicated way) but instead aimed for consistency across weapon skills. For each weapon skill, I aimed for about 50% of the weight to be split among "top-tier" weapons (anything not very clearly worse than other weapons for endgame characters, so e.g. for axes these are broad axe and executioner's axe) and also gave 0 weight to weapons in the set of weaker starting weapon. I also tried to keep things roughly evenly divided between 1-handers and 2-handers at base (though raising Shields skill will make 1-handers somewhat more common). The second major change was to rework brand weighting for non-artefact weapon acquirement. Instead of weights ranging from 1 to 6 for different brands with no apparent logic, I've changed it so there is a single list of "boring" brands that are rerolled 2/3 of the time (effectively meaning their weights in the brand tables in item-prop.cc are divided by 3): flaming, freezing, draining, heavy, venom, protection, and electrocution. It seems reasonable to try to make non-artefact weapon acquirements somewhat more exotic like this. In addition, scroll acquirements no longer generate artefact weapons with negative enchantment (non-Xom god gifts already had this protection). In general I'm unsure how big these changes will be in practice (probably some weapon types are impacted more than others), though things looked fairly reasonable in my testing. It should be much easier to tweak things in the future though. -------------------------------------------------------------------------------- f6fde8a | elliptic | 2024-06-07 14:41:24 -0400 Fix items in starting inventory not being marked as seen This meant that if a fighter starting with a war axe found acquirement before finding a second war axe (or dropping their starting one), they would have the unseen bonus increasing the chance of getting offered another war axe from acquirement. -------------------------------------------------------------------------------- 181dc37 | patrick | 2024-06-07 11:42:09 -0400 Add some sinuous, squamous decor vaults to the Snake Pit Also use some more decorative conduits in places, mostly just copying the code that regret-index put in elsewhere in Snake, for thematic consistency. -------------------------------------------------------------------------------- ac80d7c | elliptic | 2024-06-07 11:25:35 -0400 Fix typo in tower shield acq weight -------------------------------------------------------------------------------- 5039c03 | elliptic | 2024-06-07 10:58:27 -0400 Simplify armour acquirement These changes had two goals: to make armour acquirement logic relatively unmanipulable by the player while still being likely to provide useful or interesting items, and to simplify armour acquirement logic. After this commit, the player's skills only affect armour acquirement in two ways: higher Shields skill makes tower shield more likely and bucklers and orbs less likely, and higher Armour skill makes higher AC body armour more likely and lower AC body armour less likely. Both of these effects are relatively weak and don't have any special breakpoints. In particular, body armour acq no longer depends in strange and complicated ways on Dodging and Spellcasting skill. In general it should be much easier to tweak body armour acq in the future, since the weights used are just the acq_weights defined in item-prop.cc (which I have changed to focus more on better/more interesting types) modified by a simple function of Armour skill and AC of the armour. In addition, the logic for making artefacts and items in "unseen" slots more common has been drastically simplified, though hopefully things are still fairly similar. In general it should be fairly hard to notice these changes in practice - probably the biggest changes are to body armour, which I suspect is better in practice on most characters now, and which I've also made somewhat more common. -------------------------------------------------------------------------------- 5c500c4 | elliptic | 2024-06-07 10:09:22 -0400 Make demons summoned by obsidian axe always friendly (Ge0ff) Removing the ~4% chance of hostiles - it wasn't documented and wasn't very impactful aside from giving a very tiny chance of getting mutated by a hostile neqoxec before killing it with the axe. This is even consistent with Makhleb Lesser Servant having 0 hostiles after ~8 invo skill. Obsidian axe has a much more dangerous and interesting drawback already. -------------------------------------------------------------------------------- 925b980 | DracoOmega | 2024-06-07 01:13:29 -0230 Give Wiglaf's hat a proper tile (regret-index) So now you can look properly stylish (instead of it mostly looking like a wizard hat). (I was sorely tempted to name the file hat_stupid.png, just so everyone's aware, but elected for clarity instead.) -------------------------------------------------------------------------------- 95f95fa | DracoOmega | 2024-06-07 00:39:03 -0230 Tweak how piety costs are described in ability descriptions Due to how rounding was performed, and the fact that '1% of your maximum piety' was the lowest piety cost ability descriptions could display, the game claimed Makhleb's Major Destruction and Lesser Servant cost the same amount of piety, when in fact Major Destruction costs 1/6th what Lesser Servant does. (It would be quite a bad ability if it actually did cost just as much!) Piety costs now round up instead, meaning that Lesser Servant will say it costs 2%, while Major Destruction says 'less than 1%', which is a lot closer to accurate. (It's possible this rounding change makes something slightly less accurate somewhere else, but I'm not aware of two abilities belonging to the same god where it was nearly so misleading.) -------------------------------------------------------------------------------- 2b8f59d | DracoOmega | 2024-06-07 00:25:14 -0230 Fix monster Bind Soul tracer including the caster as an eligible target (Even though it never works on the caster). This could cause monsters to cast the spell to no effect. -------------------------------------------------------------------------------- d392c7b | DracoOmega | 2024-06-07 00:25:06 -0230 Fix a couple monster spells using 'true' attitudes instead of current ones Because of using mons_atts_aligned instead of mons_aligned, a charmed monster would still consider their 'real' allies to be allies and not cast these spells against them. (In fact, they might actually use these effects against 'allies' of the same alignment they had been charmed to be. -------------------------------------------------------------------------------- 088aa39 | DracoOmega | 2024-06-07 00:24:59 -0230 Rescale Drain status light colors The thresholds currently used seem to have been derived directly from the numbers used when drain affected skill levels instead of HP and are oddly spaced (changing severity at >0%/5%/10%/25%/50% max HP lost), as well as (in my opinion) giving a false impression of the severity of the effect at low levels of draining. (At least I was surprised that red 'heavily drained' starts at only 10% hp loss, which doesn't seem alarming enough to warrant that label). This commit respaces that to >0%/10%/20%/30%/50%. I'm interested in a few more adjustments to draining formulas, but for now this allows a better visible threshold for when Midnight Pantomime turns off. -------------------------------------------------------------------------------- 38bec8a | DracoOmega | 2024-06-07 00:24:51 -0230 Don't show a warning for moving while confused near ancestors ...and other allies you couldn't hurt even if you stumbled into them. -------------------------------------------------------------------------------- 995e409 | DracoOmega | 2024-06-07 00:24:39 -0230 Adjust some Webtiles text colors Magenta text in webtiles was conspicuously dark, making multiple status indicators unnecessarily difficult to read against the game's black background. (Lightmagenta was also extremely desaturated, and neither looked particularly like their equivalents in local tiles). This commit adjusts these to improve contrast and readability, and also does this to a lesser degree to blues and dark red. (Side note: not a great fan of how many things in this css seem to want to reference a common color specifically, but only do so by copy-pasting it with a name in comments. I've done my best to be careful and keep everything in sync.) -------------------------------------------------------------------------------- 58043dd | DracoOmega | 2024-06-07 00:24:31 -0230 Differentiate Magenta and Lightmagenta a little better in local tiles These two colors were so similar that in practice one couldn't really tell them apart. I've made Magenta slightly darker to help with this (though hopefully not by so much that it impacts readability.) -------------------------------------------------------------------------------- be264ac | elliptic | 2024-06-06 12:43:12 -0400 Let Vehumet support Rimeblight It makes damaging explosions. -------------------------------------------------------------------------------- a65b6e8 | elliptic | 2024-06-06 12:40:57 -0400 Fix fluxform glow description on A screen It doesn't make the player easier to hit. -------------------------------------------------------------------------------- bc65bc1 | NormalPerson7 | 2024-06-05 11:00:46 -0700 Fix ^ screen for Jiyva and Ignis (#3851) Apparently Webtiles uses regular expressions to parse the ^ screen, and it really doesn't like the use of parentheses in strings describing god powers. There is a way around this, but it puts the resistance in the cost column on Webtiles (in the same way as Cheibriados' stat boost), which is unacceptable. Also change "injuring" to "harming" when referring to jellies, for better flavour. -------------------------------------------------------------------------------- c82b5af | David Lawrence Ramsey | 2024-06-04 13:18:34 -0500 Improve speech regarding random classes of gods. A chaotic, evil, and/or good god can now be randomly chosen via the @random_god_chaotic@, @random_god_evil@, and @random_god_good@ entries. The Zin angel's speeches are now updated to use these; for the last, they now preach about the goodness of random good gods. This way, the lists of chaotic/evil/whatever gods no longer have to be manually updated in the monster speech database when a god's class changes in the code (e.g. Nemelex Xobeh's becoming chaotic). As a side effect, if Jiyva is dead, the Zin angel will now no longer preach about "the lawlessness of Jiyva." -------------------------------------------------------------------------------- b2d4fd1 | David Lawrence Ramsey | 2024-06-04 10:59:54 -0500 Fix Grunn speech typo (DevastatorOne). Closes #3854. -------------------------------------------------------------------------------- 795e84f | mumra | 2024-06-04 01:19:13 +0100 Add some Xom dance moves -------------------------------------------------------------------------------- eaf9e87 | David Lawrence Ramsey | 2024-06-03 11:55:21 -0500 Add Xom translucent wall/empty hands messages. -------------------------------------------------------------------------------- 5e68aa8 | NormalPerson7 | 2024-06-02 14:16:02 -0500 Make various small improvements to ability summary on ^ screen - Beogh: add lines for Beogh sending challenges as you gain piety, and explain that they can be recruited if you defeat them; improve various other inconsistencies around ^ for new Beogh - Ignis: explain that Rising Flame is one-use-only - Lugonu: show passive banishment on other gods' wrath - Yredelemnul: explain that light the torch gives allies at 1* - Jiyva: show jellies being peaceful, eating items, and being protected from player damage, and show the Slime Pits unlock at 6* Also move a number of passive abilities with hardcoded descriptions describe-god.cc to the table of god powers in religion.cc. The only abilities left in describe-god.cc are those that have unusual criteria (e.g. Hep frailty), or those whose text changes as you gain piety (e.g. lifesaving, umbra). There remain several minor passives (e.g. Trog's ally protection and berserk extension, Elyvilon's ally lifesaving) which are too minor to appear on ^. [Committer's notes: Squashed. Fixed spacing. Fixed reversed logic that wrongly coloured the convert_orc passive. Fixed piety breakpoint for colouring orc apostle recruitment: it's not 3*, but 0*. Also put all logic that colours passives in the same order.] -------------------------------------------------------------------------------- 251a44d | DracoOmega | 2024-06-02 09:34:41 -0230 Don't give XP for killing hellfire mortars -------------------------------------------------------------------------------- c7fbda7 | DracoOmega | 2024-06-02 09:34:27 -0230 Try to avoid an infinite handle_monsters loop with Hellfire Mortar In some circumstances, it was possible for the mortar to be unable to move, yet not die either, in which case it never consumed energy on its turn and would cause an infinite handle_monsters() loop. While some of the individual causes of this warrant being addressed directly, for now put in general protection so that these should not crash (but simply have the mortar pass its turn harmlessly and expire at the end of the lava effect at the latest). -------------------------------------------------------------------------------- 432df90 | NormalPerson7 | 2024-06-01 13:44:33 -0500 Tweak wanderer good-throwing/good-weapon items Previously, the good set of throwing items for wanderer was 1-4 curare-tipped darts and a +2 dagger. Neither of these scale well with throwing skill, which is likely to be your highest skill. This could also be extremely disappointing if you got 1 curare dart and it mulched immediately. To encourage actually training throwing skill, replace the enchanted dagger with large rocks/javelins/boomerangs (depending on size), up to a total of 7 pieces of ammunition. (Note: this uses the same code as the gladiator background, so small species will get double the number of boomerangs.) Also, the good set of weapon items for all weapon skills had a 4/5 chance of giving a +2 enchantment to a decent-quality weapon (falchion, mace, etc), and a 1/5 chance of upgrading to a good-quality weapon (long sword, flail, etc). In practice this upgrade was rather rare, and starting with a +2 decent weapon is a little too frequent. So let's bump the upgrade chance to 1/3, for the sake of variety. [Committer's notes: Edited commit message.] -------------------------------------------------------------------------------- 78dad2f | David Lawrence Ramsey | 2024-06-01 11:46:13 -0500 Fix spelling. -------------------------------------------------------------------------------- cc7ef84 | David Lawrence Ramsey | 2024-06-01 11:38:06 -0500 Clarify Yred's Black Torch changelog entry. It only summons allies starting at 1*, even though you first get it at 0*. -------------------------------------------------------------------------------- 632b080 | David Lawrence Ramsey | 2024-05-31 16:02:10 -0500 Add a few more chaos manes to artefacts. -------------------------------------------------------------------------------- 426ccd8 | regret-index | 2024-05-31 02:22:46 -0230 Quick vault review Of note: * Replace shrikes in two heavily-themed Elf vaults with walking frostbound and earthen tomes each. They're strong thematic placements, don't get to fire too horribly-dangerously in the high-monster-density narrow corridors arrangements Elf uses, and there's reasonable enough chances to survive long enough to teleport if one's doing Elf earlier compared to those shrikes. * Add a slight pinch of additional variety to profane_halls. * Slightly more insults via newer items and artprops to tgw_lugonu_bribe. -------------------------------------------------------------------------------- bd61dd8 | David Lawrence Ramsey | 2024-05-29 13:37:02 -0500 Add a few more colour names to the database. -------------------------------------------------------------------------------- b82444e | David Lawrence Ramsey | 2024-05-28 19:04:07 -0500 Set proper console colours for conduits. So that all alchemical conduits are poison-coloured, all arcane conduits are Vehumet-coloured, all dimensional conduits are warp-coloured, all earthen conduits are earth-coloured, all fiery conduits are fire-coloured, all icy conduits are ice-coloured, all misfortune conduits are shimmer blue-coloured, all soul conduits are smoke-coloured, and all storm conduits are electricity-coloured. -------------------------------------------------------------------------------- 0e98aa1 | David Lawrence Ramsey | 2024-05-28 16:31:35 -0500 Set proper console colours for statues. So that all scintillating statues are mountain-coloured, all golden statues are yellow-coloured, and all silver statues are silver-coloured. -------------------------------------------------------------------------------- dbcf8a7 | David Lawrence Ramsey | 2024-05-28 00:30:49 -0500 Replace duplicate virtue name in artefacts. -------------------------------------------------------------------------------- d0d00ac | David Lawrence Ramsey | 2024-05-27 17:05:26 -0500 Add a few more Xom staircase messages. Also tweak the code to replace @staircase@. It's in more than one message now, so the optimisation for it is overkill. -------------------------------------------------------------------------------- e9e123d | David Lawrence Ramsey | 2024-05-27 11:24:50 -0500 Add fruit/meat lines for gargoyles/statues. -------------------------------------------------------------------------------- 2b70ce2 | David Lawrence Ramsey | 2024-05-27 09:24:57 -0500 Add another bird name to artefacts. -------------------------------------------------------------------------------- 198796a | David Lawrence Ramsey | 2024-05-26 17:30:21 -0500 Attribute death-spread rimeblight correctly. Closes #3833. -------------------------------------------------------------------------------- 275cc6b | David Lawrence Ramsey | 2024-05-25 19:22:58 -0500 Reenable Xom miscast substrings. Do them efficiently by only doing substring replacements on the message we end up displaying. Also, add substrings back into Xom eye messages. -------------------------------------------------------------------------------- 3085f02 | regret-index | 2024-05-25 21:35:38 -0230 A little more (placeholder?...) spell tile work, new(?) spells edition * Hoarfrost Cannon/ade now uses an extremely modified version of the kobold blastminer's cannon, rather than the diamond obelisk. Eventually, it'd be good to have a semi-crystalline appearance for the cannon, but this should also help with the prior Forceful Dismissal tile not being confused with its current Maxwell's Capacitive Coupling tile. * Bestow Arms uses the rough same icon base as Sheza's Dance, but without the musical notes or many noticeable chips in the main blade. * As future-proofing for other plans, and to help Alchemy's thematic cohesion a little bit more, the Fulminant Prism tile is now themed and coloured as soft fulminating gold, a material well known to western alchemy as both synthesize-able but also mostly highly explosive. (Of course, one can't make prisms of gold, but that's what magic is for.) While I've emphasized that it's 1: magic and 2: soft for it to not count as brittle for LRD purposes, I cannot stop other devs from possibly making it work with LRD anyway in the future if they so desire it. It's a severe tactical error to almost ever do such, considering the spread of different schools involved as well as doing more damage for less MP to just actually place multiple Prisms, so I'd personally prefer to prevent players from even trying to aim for false synergies. * Rename Prayer of Brilliance's tile to its new non-aura name. * Alphabetized the dc-spells.txt file a bit more. Possibly we should be organizing these by spell level and some documentation or UI's order for the spell schools? Not in a rush to figure that out, anyway. -------------------------------------------------------------------------------- 86927b1 | David Lawrence Ramsey | 2024-05-25 14:55:20 -0500 Fix Xom impromptu dance check. Properly use player_has_feet() instead of making assumptions regarding the ability to wear boots. -------------------------------------------------------------------------------- c506da6 | David Lawrence Ramsey | 2024-05-25 10:06:44 -0500 Tweak Xom substitutions. Do the lowercase ones first, as in do_mon_str_replacements(). -------------------------------------------------------------------------------- c2b7583 | David Lawrence Ramsey | 2024-05-25 10:04:45 -0500 Simplify Xom database strings a bit. Only check for empty ones if there's a chance of they're being empty (the feature and body armour ones, if nothing Xom can play with is available). Also, drop substring usage, so we aren't calling maybe_pick_random_substring() a bunch of times; the substitutions are enough. -------------------------------------------------------------------------------- 99e0a4b | Aliscans | 2024-05-25 09:16:04 -0500 mprf("string")/mprf("%s", string) -> mpr(string) Also wrap some long lines. [Committer's notes: Edited commit message.] -------------------------------------------------------------------------------- d3ef473 | David Lawrence Ramsey | 2024-05-24 21:39:11 -0500 Expand Xom hair messages beyond eyebrows. Now you can spontaneously grow facial hair, too. -------------------------------------------------------------------------------- 0fe9cc0 | David Lawrence Ramsey | 2024-05-24 12:52:03 -0500 Only do Xom dances if you can wear boots. It's simpler than the naga species/fishtail check, and the heel-clicking message only makes sense if you have heels to click; assume anyone who can wear boots has heels. -------------------------------------------------------------------------------- cf91537 | DracoOmega | 2024-05-24 14:02:02 -0230 Revert "Prevent enemies from summoning in Okawaru's Arena" There was more opposition to this change than I was expecting from previous discussions. It still feels like Duel could use a little something, but perhaps something else. This reverts commit 28453e28303c8ec3fca004e8f8115febf7e91e70. -------------------------------------------------------------------------------- ae95028 | DracoOmega | 2024-05-24 13:59:21 -0230 Revert "Make living spells count as 'conjured'" Not only did this make living spells remain after the tome they'd come out of was dead, but it caused them to ignore their summon cap. (Further evidence that the functionality of some of these flags could use consolidation and cleanup) This reverts commit 2d6ab54fa9add43c1c3fbb67585905fc1f3aa11b. -------------------------------------------------------------------------------- 157a173 | David Lawrence Ramsey | 2024-05-24 10:41:54 -0500 Add another dance name to Xom messages. -------------------------------------------------------------------------------- 45592c0 | David Lawrence Ramsey | 2024-05-24 10:29:39 -0500 Move Xom's divine lightning msgs to the database. And add two more messages to the original one. -------------------------------------------------------------------------------- c984cbb | David Lawrence Ramsey | 2024-05-24 10:20:37 -0500 Add another Xom shallow water option. It can already briefly boil; let it briefly freeze, too. -------------------------------------------------------------------------------- a78d4ba | David Lawrence Ramsey | 2024-05-23 22:22:12 -0500 Add a few more pattern names. -------------------------------------------------------------------------------- 9654fa5 | David Lawrence Ramsey | 2024-05-23 21:46:31 -0500 Add another Xom metal wall message. -------------------------------------------------------------------------------- a73736a | David Lawrence Ramsey | 2024-05-23 21:36:20 -0500 Expand Xom eye messages beyond monocles. Now Xom can give you eyepatches, too. -------------------------------------------------------------------------------- fdf316e | David Lawrence Ramsey | 2024-05-23 20:36:07 -0500 Simplify high degree corrode chances (mumra). -------------------------------------------------------------------------------- b7e3594 | Monkooky | 2024-05-23 20:34:53 -0500 fix corrosion chances for high degree likely broken in 7d2b172 not likely relevant since only ever applies to wu jian wrath -------------------------------------------------------------------------------- ad1f891 | Aliscans | 2024-05-23 20:26:18 -0500 Don't rest if you're dying in a sanctuary. Refuse to rest if suffering from fatal poison, sticky flames or emergency flight, even in a Zin sanctuary. Before, the game paused for a turn to let these cause damage before stopping. Also remove the word "standing" from "You're standing in..." (you may not have any feet) and split some long lines. -------------------------------------------------------------------------------- a704933 | David Lawrence Ramsey | 2024-05-23 19:43:29 -0500 Move Xom's armour messages to the database. Simplify things by no longer pluralising the message for a robe; it's the only message that uses pluralisation, and adding it for only the one case would be a lot of effort for little gain. -------------------------------------------------------------------------------- 3fb591a | David Lawrence Ramsey | 2024-05-23 15:48:48 -0500 Adjust Xom statue message. Make a statue spin in place instead of doing an impromptu dance, since we don't know what kind of statue it might be (or if it's been redefined). -------------------------------------------------------------------------------- 18e651e | David Lawrence Ramsey | 2024-05-23 15:26:10 -0500 Move Xom's heel-clicking message to the database. Simplify things by not having it require boots anymore, and adding it in the impromptu dance messages, since it could be seen as a dance move. One side effect of this is that you can't do it while airborne anymore, but otherwise it has all the same restrictions as Xom's impromptu dances. -------------------------------------------------------------------------------- 33a4c11 | David Lawrence Ramsey | 2024-05-23 15:11:48 -0500 Fix capitalisation of Xom slot messages. They should only be capitalised if they're at the beginning of the message. Just because all the current messages put them at the beginning doesn't mean that will always be the case. -------------------------------------------------------------------------------- cab03da | David Lawrence Ramsey | 2024-05-23 15:07:05 -0500 Add Xom offhand slot messages to the database. -------------------------------------------------------------------------------- 6b41a1c | David Lawrence Ramsey | 2024-05-23 14:59:18 -0500 Fix basenames for helmet and cloak messages. Using "your" and the basename, as was done before, makes the message shorter, and keeps the "your" part for artefacts. -------------------------------------------------------------------------------- 5f1ab2f | David Lawrence Ramsey | 2024-05-23 14:54:52 -0500 Fix check for having one hand available. Account not for just missing hands, but the offhand slot. -------------------------------------------------------------------------------- 5e7fbf1 | David Lawrence Ramsey | 2024-05-23 14:48:07 -0500 Add Xom helmet slot messages to the database. -------------------------------------------------------------------------------- e64a787 | David Lawrence Ramsey | 2024-05-23 14:41:07 -0500 Move Xom cloak slot messages to the database. To simplify things, use the billowing and head-wrapping messages for both; scarves can billow, and cloaks can wrap themselves around your head if twisted the right way. -------------------------------------------------------------------------------- d3dd8e2 | David Lawrence Ramsey | 2024-05-23 14:27:35 -0500 Move Xom unarmed messages to the database. Add a message referencing both hands for two-handed players. -------------------------------------------------------------------------------- 7f32bf6 | David Lawrence Ramsey | 2024-05-23 12:05:51 -0500 Add Xom's bandage messages to the database. -------------------------------------------------------------------------------- 7bd33a5 | David Lawrence Ramsey | 2024-05-23 11:55:28 -0500 Add proper empty string checks for Xom speech. For the entries that don't have it, just in case speech lookup fails. -------------------------------------------------------------------------------- 1594a75 | David Lawrence Ramsey | 2024-05-23 11:53:47 -0500 Add Xom monocle messages to the database. -------------------------------------------------------------------------------- d359847 | David Lawrence Ramsey | 2024-05-23 11:36:10 -0500 Add Xom eyebrow messages to the database. And do proper substring substitutions on both them and the impromptu dance messages, even though the latter currently has no substrings. -------------------------------------------------------------------------------- 0cf2ae4 | David Lawrence Ramsey | 2024-05-23 11:27:03 -0500 Add Xom impromptu dances to the database. Also add another dance option: the cha-cha. -------------------------------------------------------------------------------- d6ea513 | David Lawrence Ramsey | 2024-05-23 10:43:09 -0500 Add general underfoot messages for Xom. -------------------------------------------------------------------------------- 2164ef0 | David Lawrence Ramsey | 2024-05-23 10:40:29 -0500 Use a ternary operator in another place. -------------------------------------------------------------------------------- 6776932 | David Lawrence Ramsey | 2024-05-23 09:58:48 -0500 Use push_back() in some Xom messages. Instead of emplace_back(), for when we're pushing back a variable. -------------------------------------------------------------------------------- c2c3137 | David Lawrence Ramsey | 2024-05-23 09:32:39 -0500 Disallow Xom tapdances for players who can't act. Since the same restriction applies to players who click the heels of their boots together. -------------------------------------------------------------------------------- b12cf6e | David Lawrence Ramsey | 2024-05-23 09:14:14 -0500 Simplify naming of Xom inventory-related keys. -------------------------------------------------------------------------------- 4c70718 | David Lawrence Ramsey | 2024-05-23 09:09:43 -0500 Fix typo in Xom key (oops). -------------------------------------------------------------------------------- 64b13a4 | David Lawrence Ramsey | 2024-05-23 09:01:54 -0500 Adjust Xom monocle message for one-eyed players. If you've sacrificed an eye, it no longer specifies which eye gets the monocle. -------------------------------------------------------------------------------- 3bc4ff6 | David Lawrence Ramsey | 2024-05-23 08:28:29 -0500 Consolidate Xom inventory item messages. The ones that occur only if there's solid ground under the player and the ones that occur regardless now use the same lines when applicable, and the latter are now in the database. Also, inventory items can now glow random colours as well as flash or vibrate. -------------------------------------------------------------------------------- ddd6be7 | Nicholas Feinberg | 2024-05-22 20:48:40 -0700 Make Zin's altar twinkle I'm making this animation for my own purposes, and wanted to give it back to the source. -------------------------------------------------------------------------------- f31e860 | David Lawrence Ramsey | 2024-05-22 20:15:38 -0500 Move more Xom messages to the database. The item(s) jumping out of your backpack and then back in are now handled. -------------------------------------------------------------------------------- d686d43 | David Lawrence Ramsey | 2024-05-22 19:39:19 -0500 Consolidate two Xom messages. -------------------------------------------------------------------------------- de576c1 | David Lawrence Ramsey | 2024-05-22 19:31:27 -0500 Move more of Xom's messages to the database. This is now done for the messages regarding dungeon features underneath the player. -------------------------------------------------------------------------------- bb75d02 | David Lawrence Ramsey | 2024-05-22 15:17:25 -0500 Wrap overly-long line. -------------------------------------------------------------------------------- 4c66c2f | David Lawrence Ramsey | 2024-05-22 15:13:48 -0500 Tweak for loop condition. -------------------------------------------------------------------------------- d5c3120 | David Lawrence Ramsey | 2024-05-22 15:06:31 -0500 Move Xom's feature messages to the database. Note that this is currently only done for the messages regarding dungeon features surrounding the player. -------------------------------------------------------------------------------- e8832af | David Lawrence Ramsey | 2024-05-22 14:33:08 -0500 Rearrange Xom message checks a bit. -------------------------------------------------------------------------------- 98074d0 | David Lawrence Ramsey | 2024-05-22 14:06:38 -0500 Remove duplicate Xom blood fountain logic (oops). -------------------------------------------------------------------------------- d7423c1 | David Lawrence Ramsey | 2024-05-22 12:59:18 -0500 Add another Xom stone arch message. -------------------------------------------------------------------------------- 4e5cd39 | David Lawrence Ramsey | 2024-05-22 12:42:18 -0500 Add a few more Xom statue messages. Statues can now tapdance the same way the player can. (If the statue is of something with no feet... let's say that Xom finds a way.) -------------------------------------------------------------------------------- 4e96f1f | David Lawrence Ramsey | 2024-05-22 12:39:39 -0500 Fix indentation. -------------------------------------------------------------------------------- 29bc1f9 | David Lawrence Ramsey | 2024-05-22 12:20:00 -0500 Remove unneeded blank lines. -------------------------------------------------------------------------------- 60ba5cd | David Lawrence Ramsey | 2024-05-22 11:59:50 -0500 Make Xom messages account for redefined features. Also, consolidate a few messages. There are still a few oddities, such as "The gravestone turns to stare at you.", but the features are at least named correctly. Closes #3826. -------------------------------------------------------------------------------- a9ead07 | David Lawrence Ramsey | 2024-05-22 11:31:45 -0500 Add another dry fountain message for Xom. -------------------------------------------------------------------------------- f7e3935 | David Lawrence Ramsey | 2024-05-22 10:33:46 -0500 Fix punctuation. -------------------------------------------------------------------------------- 5cf9a61 | mumra | 2024-05-22 03:48:17 +0100 Remind monsters how to open doors A fairly old bug seemingly introduced in 323ad4e. Monsters would open doors under the simplest circumstances (standing right next to them, and/or with an otherwise unobstructed view to the player) but as soon as waypoint pathfinding kicked in, the is_habitable check was happening too early and they never got to check if they were able to traverse the door. Closed doors are not considered habitable (probably since 323ad4e). These checks were introduced to solve an issue with clinging but were not purged in 53d2a09 when clinging was removed. Both checks were duplicated in mons_can_traverse but in the correct sequence to also account for doors. -------------------------------------------------------------------------------- 87cd461 | David Lawrence Ramsey | 2024-05-21 17:31:47 -0500 Add Xom message for metal statues. And consolidate it with the one for granite statues, since they both do the same thing now. -------------------------------------------------------------------------------- 5ce18b4 | David Lawrence Ramsey | 2024-05-21 10:04:28 -0500 Add another pattern name. -------------------------------------------------------------------------------- 5f74a55 | David Lawrence Ramsey | 2024-05-20 23:46:59 -0500 Add another pattern name. -------------------------------------------------------------------------------- 5069440 | David Lawrence Ramsey | 2024-05-20 23:40:33 -0500 Add another Xom message with colour patterns. -------------------------------------------------------------------------------- ce46c55 | DracoOmega | 2024-05-20 21:08:52 -0230 Don't cover stairs with dead hoarfrost cannons (particleface) The puddles from them melting was intended primarily as a minor flavor thing and not something that should be so mechanically impactful as to block off a player's escape from a floor. They now use logic similar to primal wave and replace only plain floor. -------------------------------------------------------------------------------- 16219f1 | David Lawrence Ramsey | 2024-05-20 18:09:25 -0500 Fix typo in alchemy miscast message. -------------------------------------------------------------------------------- 30aeb72 | NormalPerson7 | 2024-05-20 20:18:56 -0230 Fix Hellfire Mortar power cap (#3820) (#3824) Spells implicitly take the lesser of their defined power cap and their corresponding zap's defined power cap when deciding what their real power cap should be. Since Hellfire Mortar is linked to ZAP_HELLFIRE_MORTAR_DIG, which had a cap of 100, Hellfire Mortar erroneously also had a cap of 100. Since it doesn't appear that power actually does anything for this zap, just raise the zap's cap to 200. -------------------------------------------------------------------------------- 08d867e | gammafunk | 2024-05-20 16:49:52 -0500 feat: Unarmed attack ego description for clua Via `you.unarmed_ego()`, which returns a string containing a description of the ego, if any. Takes an optional boolean argument to return a terse ego description, which defaults to false. -------------------------------------------------------------------------------- c81a1b2 | David Lawrence Ramsey | 2024-05-20 16:03:57 -0500 Add a few Xom messages referencing colour patterns. -------------------------------------------------------------------------------- c7163d4 | David Lawrence Ramsey | 2024-05-20 15:56:13 -0500 Tweak wording of necromancy miscast message. -------------------------------------------------------------------------------- 50be89a | David Lawrence Ramsey | 2024-05-20 15:56:13 -0500 Adjust unseen alchemy miscast messages. -------------------------------------------------------------------------------- 48138d7 | David Lawrence Ramsey | 2024-05-20 15:55:39 -0500 Fix spacing of a pattern name. -------------------------------------------------------------------------------- 2ab4ef4 | mumra | 2024-05-20 15:38:21 -0500 Some tweaks and additions to miscast messages * Added some colourful pattern names, which player and monster skin can turn into on alchemy miscasts * Removed some duplication in miscast messages by combining with [one|two] syntax (and removing an outright duplicate) * Change "sparks" message to "cinders" in Fire miscasts as it was already used in Conj * Necromany "shivers with cold" message sounded too much like an ice miscast, so I modified it to "walking over your grave" message * You feel off-balance for a moment: sounded more like translocation so I moved it there * A number of messages were repeated across several miscast types: - Strange energies run through your body: also used in death curses, almost the same as the malmutate message, and also rather similar to magic contamination "wild energies", so I just removed it to avoid being mistaken - Strange surge of energy: removed from Conjurations since it's also used in hexes alongside "magic surges out" - Air crackles with energy: sounds rather more like an electricity effect, but air *wasn't* a school that used it, so I moved it there instead * Added a few minor variations to things here and there -------------------------------------------------------------------------------- 9b32533 | mumra | 2024-05-20 15:37:21 -0500 Txt-ify miscast messages Moving these to their own txt file was reasonably straightforward and makes it now possible to translate them - as well as making it easier to make additional substitutions such as colour names or further randomisations (without having to invoke these lookups unneccesarily for cases that are not using them). This commit replicates the exact messages as they were without further modification. -------------------------------------------------------------------------------- d283c3b | gammafunk | 2024-05-20 11:51:31 -0500 feat: Add unarmed combat damage to clua Via `you.unarmed_damage_rating()`, which returns two values: the damage rating as a number, and the damage rating description as a string. Also add line breaks to l-you.cc to make reading easier. -------------------------------------------------------------------------------- ac1fde5 | David Lawrence Ramsey | 2024-05-20 00:32:13 -0500 Fix typos, spelling, and wording. -------------------------------------------------------------------------------- b66479f | David Lawrence Ramsey | 2024-05-19 22:32:26 -0500 Mention Fedhas' protecting friendly plants. -------------------------------------------------------------------------------- b12068d | David Lawrence Ramsey | 2024-05-19 21:53:01 -0500 Add correct 0.32 up-through version (oops). -------------------------------------------------------------------------------- 3a8b7b0 | David Lawrence Ramsey | 2024-05-19 20:48:56 -0500 Add sometimes-pasta-adjacent food to artefacts. -------------------------------------------------------------------------------- 14f4ba1 | David Lawrence Ramsey | 2024-05-19 20:07:56 -0500 Add 0.32 up-through version to changelog. -------------------------------------------------------------------------------- 1eea0c6 | David Lawrence Ramsey | 2024-05-19 19:58:49 -0500 Fix spelling: bedeviled -> bedevilled. -------------------------------------------------------------------------------- f56e53c | David Lawrence Ramsey | 2024-05-19 19:55:44 -0500 Colourise drag and swarm in monster bot. -------------------------------------------------------------------------------- 2ebb5e6 | David Lawrence Ramsey | 2024-05-19 19:55:32 -0500 Update monster bot for AF_SWARM. -------------------------------------------------------------------------------- d8addd5 | David Lawrence Ramsey | 2024-05-19 19:41:57 -0500 Fix description of DS foul flame mutation. -------------------------------------------------------------------------------- 48eddae | David Lawrence Ramsey | 2024-05-19 19:24:32 -0500 Clarify new Ijyb's description. -------------------------------------------------------------------------------- 2cd1f3e | David Lawrence Ramsey | 2024-05-19 19:23:42 -0500 Fix typos and spelling. -------------------------------------------------------------------------------- 8efb30d | regret-index | 2024-05-19 21:46:11 -0230 Fiddle with the changelog's future (various) Deep Elves getting an innate faster mp regen mutation has been discussed multiple times over 0.32's development, but hasn't actually been implemented yet. Sorry for the confusion. -------------------------------------------------------------------------------- d1fd033 | regret-index | 2024-05-19 21:21:30 -0230 Nudge around some listings and documentation Move Arachne and Wiglaf's sections in uniques.des to the right alphabetical and section positions, mention how we finally have a lava spell and a little more clarity for Air Magic's restrictions in spells.txt. -------------------------------------------------------------------------------- 9412f0f | regret-index | 2024-05-19 21:21:30 -0230 Changelog for 0.32 (up to 78dc6a7) Notes: * I'm probably 33% wordier than others who have written up the changelog before. Some of these overhauls or new spells are pretty complicated, so I think it's fine, but others can abbreviate and alter the changelog as they desire. * I've seen people also lament the loss of Hill Orcs from a flavour perspeective, so I ended up emphasizing "all species can become orcs" in the mentions of Mountain Dwarves thus replacing them multiple times. * We've been a little inconsistent across versions in using Artefact, Item, and Unrand headers. I'm opting for the first two, since that's the most recent changelog's approach. -------------------------------------------------------------------------------- f720f7f | patrick | 2024-05-19 19:38:24 -0400 Decor vaults for Crypt Special request from r-i, ages ago. Contains some that have good loot just lying around, to increase the loot in Crypt, to lure more hapless adventurers to their deaths. Not you, though. You'll be fine. Go in the Crypt. Go in there. Go in the Crypt. Go. Do it. It's fine. -------------------------------------------------------------------------------- 78dc6a7 | patrick | 2024-05-19 16:54:01 -0400 Fix up some shop vaults and add some more 1) Redo the inventory of the elemental shop, since the original theme is long-obsolete now that evokers are unique and in item sets. 2) Touch up the changing room inventory. 3) Tweak the rings in the One Of A Kind Rings now that the MP values for regular randarts have been tweaked upwards. Current values may be ridiculous, I will find out when I get yelled at about it-- 4) Added a generically magic-themed shop with some of the new magic-themed decoration features. 5) Added a multi-shop vault featuring antiques out the wazoo. -------------------------------------------------------------------------------- 91856e7 | DracoOmega | 2024-05-19 15:30:58 -0230 Buff / Fix Rimeblight After 799ce95f6cd29deaeda1c58a8f94fcd328702e82 is was intended that Rimeblight spread to adjacent creatures whenever an infected creature died, but in actuality, this only happened if they died due to the instakill threshold effect and left behind a pillar of rime. As it is extremely common for a monster to go from >20% hp to dead directly, the buff wasn't actually working as intended. I have fixed that now. I suspect this change alone does a very substantial amount to make the spell feel stronger, but in response to feedback, I have also let Rimeblight affect nonliving/undead monsters (with the caveat that they *don't* get the instakill pillar effect, as they have no lifeforce to empower the plague on the verge of their death), and nudged up the low end of its duration and DoT damage by a tiny smidge. Let's see if this finally feels appropriately strong in the proper situations. -------------------------------------------------------------------------------- bb3f4b5 | David Lawrence Ramsey | 2024-05-19 10:25:06 -0500 Checkwhite -------------------------------------------------------------------------------- ab2d129 | David Lawrence Ramsey | 2024-05-19 10:18:31 -0500 Add a message for when the player finds all gems. Use only the miscellaneous colours in it, to avoid duplicate colours as much as possible. Suggested by regret-index. -------------------------------------------------------------------------------- 540c3cb | David Lawrence Ramsey | 2024-05-19 10:02:34 -0500 Fix obsolete orb ego: channelling -> energy. -------------------------------------------------------------------------------- 6251899 | David Lawrence Ramsey | 2024-05-19 09:59:51 -0500 Fix spelling. -------------------------------------------------------------------------------- db9be81 | David Lawrence Ramsey | 2024-05-19 09:48:05 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 69e7503 | David Lawrence Ramsey | 2024-05-19 08:42:10 -0500 Don't use mprf() when mpr() will do. -------------------------------------------------------------------------------- 5cb1961 | David Lawrence Ramsey | 2024-05-19 08:10:34 -0500 Add more minor alchemy miscast messages. -------------------------------------------------------------------------------- 732af37 | Nicholas Feinberg | 2024-05-18 23:17:30 -0700 Fix missing mons spell info (DeathSushi) The legend that explains how to read monster spell descriptions was missing. Probably broken since at least df0a5da549d686d (2022). -------------------------------------------------------------------------------- 101ff30 | David Lawrence Ramsey | 2024-05-19 00:25:43 -0500 Tweak wording of new alchemy miscast msgs. -------------------------------------------------------------------------------- 7eaa27f | David Lawrence Ramsey | 2024-05-19 00:04:40 -0500 Add alchemy miscast msgs w/new colours (mumra). Do colour name substitutions on miscast messages so that this works. -------------------------------------------------------------------------------- 5768f22 | David Lawrence Ramsey | 2024-05-18 21:53:39 -0500 Add a few Xom messages for blood fountains. Since there are Xom messages for all the other fountain types. -------------------------------------------------------------------------------- 5aad360 | David Lawrence Ramsey | 2024-05-18 21:37:56 -0500 Add a Xom resurrection line referencing colours. Everything turns monochromatic before Xom saves you. -------------------------------------------------------------------------------- 72dcce5 | David Lawrence Ramsey | 2024-05-18 21:14:19 -0500 Add a few Xom mutation lines referencing colours. Good mutations mention gouts of light, while random mutations mention flashes of light; neither use the monochromatic colours. -------------------------------------------------------------------------------- 3cc3825 | David Lawrence Ramsey | 2024-05-18 20:52:35 -0500 Add a few more Xom messages referencing colours. Water and water in fountains can now briefly flash colours. -------------------------------------------------------------------------------- ecc208a | David Lawrence Ramsey | 2024-05-18 19:33:59 -0500 Make a Xom message use the new colour database. In Xom's list of pseudo-miscasts, instead of making your offhand item flash a lurid colour, make it flash a lurid "randomly chosen colour". As suggested by regret-index. -------------------------------------------------------------------------------- 0db79e9 | David Lawrence Ramsey | 2024-05-18 18:54:38 -0500 Remove unneeded extra "%%%%". -------------------------------------------------------------------------------- f9f58d7 | David Lawrence Ramsey | 2024-05-18 17:49:03 -0500 Add another sky colour name to artefacts. -------------------------------------------------------------------------------- 64db273 | David Lawrence Ramsey | 2024-05-18 17:22:38 -0500 Move colour names into their own database entry. They're now in colourname.txt, and accessible to the speech database in general instead of just Blorkula's dialogue. "rainbow_colour" has the rainbow colours, "misc_colour" has the miscellaneous non-monochrome colours, "mono_colour" has the monochrome colours black, white, and grey, and "any_colour" has a mix of them all. Note that "mono_colour" and "any_colour" aren't used anywhere yet, although they work in perfunctory testing. -------------------------------------------------------------------------------- 31401ee | David Lawrence Ramsey | 2024-05-18 14:48:46 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 7932608 | mumra | 2024-05-18 02:53:47 +0100 Apply defender AC for electrolunge damage Incorrectly the attacker's was being applied instead. -------------------------------------------------------------------------------- 13c1908 | David Lawrence Ramsey | 2024-05-17 11:05:00 -0500 Add yet more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 75f53f5 | David Lawrence Ramsey | 2024-05-17 11:03:02 -0500 Fix missorted colour entry. -------------------------------------------------------------------------------- a64f6ba | David Lawrence Ramsey | 2024-05-17 11:02:39 -0500 Add still more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 39d9cdb | David Lawrence Ramsey | 2024-05-17 10:31:16 -0500 Add another fruit name to artefacts. -------------------------------------------------------------------------------- 0f580fe | David Lawrence Ramsey | 2024-05-17 09:12:15 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- c771b14 | David Lawrence Ramsey | 2024-05-17 08:37:39 -0500 Add another Qazlal Donald line. -------------------------------------------------------------------------------- f3498c8 | David Lawrence Ramsey | 2024-05-17 08:32:57 -0500 Add another thing name to artefacts. -------------------------------------------------------------------------------- f786d49 | David Lawrence Ramsey | 2024-05-17 08:32:26 -0500 Rock melon -> rockmelon (oops). -------------------------------------------------------------------------------- 249f236 | David Lawrence Ramsey | 2024-05-17 08:24:36 -0500 Cantaloupe -> rock melon (jejorda2). Since the latter is the Australian name for the fruit (and associated colour). -------------------------------------------------------------------------------- f657128 | David Lawrence Ramsey | 2024-05-16 21:57:55 -0500 Add a few more fruit names to artefacts. -------------------------------------------------------------------------------- 904c1d6 | David Lawrence Ramsey | 2024-05-16 07:46:29 -0500 Fix truncated ghost brand descs (NormalPerson7) -------------------------------------------------------------------------------- e648739 | DracoOmega | 2024-05-16 05:08:37 -0230 Fix Wiz being listed twice on randart rings of wizardry Was just a visual bug. It still only provided one level of wizardry. -------------------------------------------------------------------------------- e5b5818 | David Lawrence Ramsey | 2024-05-15 21:00:23 -0500 Add yet more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- b41659d | Kyle Rawlins | 2024-05-15 21:33:33 -0400 Revert "Add a minimum maximum message size" PF committed this without realizing that the code added by 2d7b844e09c6 is recent. That change already adds a default of 1000, and when the option is explicitly set to None or 0, chat is disabled altogether (chat commands still work). This reverts commit 5fb32589bcaf44ddd6ffcb06a6a8ae016db6489c. -------------------------------------------------------------------------------- 37f40e5 | David Lawrence Ramsey | 2024-05-15 19:57:06 -0500 Add still more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 4d50775 | David Lawrence Ramsey | 2024-05-15 19:26:11 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 91d48be | DracoOmega | 2024-05-15 21:29:36 -0230 Boost Coglin base Will, replace Will+ gizmo property (Lici) Coglins have often been mentioned as a species that struggles with Will checks, due to their more restricted access to Will+ items while only having baseline Will. I'd been mostly okay with this being a weakpoint of the species, but after some discussion about how this may bias gizmo selection unduely towards whichever ends up with Will+ on it, I've decided to experiment with removing it. There's a fairly limited list of possible bonuses that could replace Will+ in the minor gizmo slot (I feel See Invisible and Flight are too weak to feel compelling, even paired as a minor bonus, and I'd been deliberately avoiding AC/EV and stat upgrades), and what I've settled on for now is Wizardry+4MP. It's possible this doesn't appeals to enough coglins to open up the decision space between gizmos in the way this commit was generally intended, but wizardry on an otherwise-appealing gizmo might specifically incentivize a little hybridization that a player wouldn't have otherwise done, and that feels worthy trying. -------------------------------------------------------------------------------- 8d0d2ce | DracoOmega | 2024-05-15 21:29:36 -0230 Make MP property on randarts not always be exactly +/-9 For variety's sake, more than anything else. The exact range of possible values is now 4-12, though weighted more towards the middle of that range. (The new median is ~7.2, I believe) (Technically this would also affect how much HP randarts could give you if that prop could ever actually appear on them) -------------------------------------------------------------------------------- 5fb3258 | Nicholas Feinberg | 2024-05-15 14:48:41 -0700 Add a minimum maximum message size For chatty cathys. -------------------------------------------------------------------------------- f2d3ae6 | David Lawrence Ramsey | 2024-05-15 13:14:03 -0500 Add yet more colours to Blorkula's dialogue. -------------------------------------------------------------------------------- 2d7b844 | Kyle Rawlins | 2024-05-15 13:55:41 -0400 feat: configurable chat message length limits for webtiles This adds a length cap to chat messages, for one variety of flood control. The initial default is a bit arbitrary. This option will also allow a server admin to disable ordinary chat altogether (doing this leaves chat commands still available). This commit will need a webtiles server restart to take effect. -------------------------------------------------------------------------------- f824865 | David Lawrence Ramsey | 2024-05-15 09:16:49 -0500 Add still more colours for Blorkula's dialogue. -------------------------------------------------------------------------------- ca21d12 | David Lawrence Ramsey | 2024-05-14 16:49:28 -0500 Add more colours for Blorkula's dialogue. -------------------------------------------------------------------------------- 75c6d27 | DracoOmega | 2024-05-14 18:30:41 -0230 Fix Arachne's Greater Ensnare making net traps instead of webs When I was busy testing to see if multiple different trap types functioned with the new temporary trap code, I apparently forget to change this back before pushing... -------------------------------------------------------------------------------- 9761ffe | DracoOmega | 2024-05-14 18:24:02 -0230 Don't block autoexploring through the player's own Toxic Bog Fixes #3813 -------------------------------------------------------------------------------- 144c9d6 | DracoOmega | 2024-05-14 18:13:48 -0230 Give boulders a less insectoid tile This isn't the best-looking rolling boulder, but at least it no longer looks literally identical to a boulder beetle. -------------------------------------------------------------------------------- a792d77 | DracoOmega | 2024-05-14 18:12:25 -0230 Fix a buggy interaction between boulders and nets Since boulders bypass much of normal monster movement code, they happily continued to move while netted. But alas, net status works by assuming there is a net item on the ground of tile the netted monster is located in, which causes various wierdness when they move. Fixes #3763 -------------------------------------------------------------------------------- 3c570bd | DracoOmega | 2024-05-14 16:54:22 -0230 Fix unique kills with Hurl Torchlight not granting extra torch charges Fixes #3733 -------------------------------------------------------------------------------- d3407ee | DracoOmega | 2024-05-14 16:46:07 -0230 Allow evoking the Staff of Olgreb when held in the off-hand (ragingrage) -------------------------------------------------------------------------------- df85cb4 | DracoOmega | 2024-05-14 16:43:02 -0230 Fix MP+/- properties on artifact talismans not updating MP on removal unequip_artefact_effect requires the talisman to actually not be in the active talisman swap before calling it, otherwise calc_mp() will still see the talisman in question and not calculate mp properly. Fixes #3810 -------------------------------------------------------------------------------- f15d36b | DracoOmega | 2024-05-14 16:11:19 -0230 Don't make Blorkula split into bats to avoid going up the stairs After being pacified (whether by Beogh or Ely). Fixes #3815 -------------------------------------------------------------------------------- b1f4dc6 | DracoOmega | 2024-05-14 16:11:19 -0230 *Actually* fix a crash with reflected Flashing Balestra 3f0eabb45ed531f516199376e383c2a5aa0d3e97 was still checking the wrong agent. -------------------------------------------------------------------------------- bb83fb5 | David Lawrence Ramsey | 2024-05-14 00:15:13 -0500 Remove unneeded space. -------------------------------------------------------------------------------- dbf92fe | DracoOmega | 2024-05-14 01:43:58 -0230 Replace RevMP gizmo property with RevMPSaver RevMP's effect was widely considered undertuned, but I'd like *some* effect based on Rev that supports a blaster playstyle, so this is a second attempt. RevMPSaver gives a flat cost reduction to the player's spells based on how revved they are (-1/2/3 MP per rev tier). This effect cannot reduce a spell below 1 cost. This has some related dynamics to the old effect, but notably encourages the player to unload spells *after* melee, which is usually the inverse of what you'd like to do when blasting. If the power of the effect is strong enough, I think that could be a distinctive quirk. Wind up a bit to rapid-fire mid-level conjurations with a hefty discount, or to squeeze the most value out of the last few MP you have in a prolonged battle. Let's see how this iteration feels. -------------------------------------------------------------------------------- a4d4a84 | DracoOmega | 2024-05-14 00:22:12 -0230 Experiment with making bands a little harder to separate Monsters in bands that have a natural leader try to stay within a moderate distance of this leader while wandering about, so that if the leader is chasing after the player, the rest of the band tends to follow (whether they've yet noticed the player themselves or not). But no such protections between band followers and each other exist, which sometimes results in it being straightforward to pick off the members of a band individually without alerting most of them - often without much deliberate effort, if they're already awake. In past, there have been some issues with the functionality of bands that rely on each other for synergy, so I'm curious to try making them a little bit stickier. This commit makes it so that when a band leader would pick a new wander target, if one of their followers is out of sight and seeking a target, they will wander in the direction of that band member instead of randomly. And since band followers already vaguely follow the leader, the band as a whole will tend to move in that direction. There is still a bit of lag time here. The leader still finishes moving wherever they were wandering first, and gets no special awareness of the player (or whatever else their follower was chasing). But it increases the *tendancy* for the rest of a band to follow on a slight delay from the player engaging any part of it. I'm not certain if this change will be impactful enough to be clear to players, or that it will be a mechanical improvement if it is, but things of this nature are hard to know without playtesting, so let's playtest! (This commit also independently fixes a bug introduced by 672eff3212572a203b58ffd4f1e2474d8a40fcfc which made band leader unable to push past their own followers) -------------------------------------------------------------------------------- 92b31c1 | DracoOmega | 2024-05-14 00:07:06 -0230 Remove some seemingly unneeded companion code You can't get orc uniques as companions anymore, after all. -------------------------------------------------------------------------------- bcb4e34 | DracoOmega | 2024-05-14 00:03:01 -0230 Fix a crash-prone way of getting more than 3 apostles at once If you dismissed an apostle who was in a disconnected branch (eg: a portal vault or the Abyss) that the player was not currently in, it would delete their apostle data, but *wouldn't* properly remove them from the interlevel recall list. Officially, they weren't your apostle anymore, but you could still recall them. And if you did, from there on out, whenever they died, the game would crash (as it attempted to update their apostle status to dead, when they no longer had stored apostle data at all). This should fix that problem. -------------------------------------------------------------------------------- 066ad49 | DracoOmega | 2024-05-13 17:02:06 -0230 Give Beogh recruit/dismiss abilities at 0* instead of 3* This is to avoid the unfortunate situation of a player winning an apostle challenge, only to realize they've fallen below 3* and can't actually recruit said apostle. Since these abilities already do not announce to the player that you have them while they're unusable (ie: because you have no one to dismiss or recruit), it should be safe for Beogh worshippers to simply always have them. Apostles still don't show up unless you're at 3*. -------------------------------------------------------------------------------- 2d6ab54 | DracoOmega | 2024-05-13 17:02:06 -0230 Make living spells count as 'conjured' -------------------------------------------------------------------------------- 28453e2 | DracoOmega | 2024-05-13 17:02:06 -0230 Prevent enemies from summoning in Okawaru's Arena Functionally a minor buff, but also flavorfully appropriate: monsters brought to the arena by Okawaru's Duel ability can no longer summon allies and are forced to fight one-on-one, whether they want to or not. This (ideally) blocks abjurable summons, while still allowing marshlights, battlespheres, etc. - just as Oka works for the player. Though given how many different ad hoc ways Crawl has of creating or summoning monsters, I'm not completely confident there aren't false positives/negatives here. But they can be stamped out over time. -------------------------------------------------------------------------------- ea327e7 | DracoOmega | 2024-05-13 17:02:06 -0230 Buff Arachne Perhaps unsurprising in retrospect, but exiling Arachne from Spider resulted in placing her deeper than before, and she just doesn't seem to have been able to keep up. This commit gives her some more AC, a little more HD, raises the cast rate of venom bolt and poison arrow moderately, and also replaces her Ensnare spell with 'Greater Ensnare', which additionally places webs on a random number of tiles adjacent to the target point, whether it misses you or not. The idea is to essentially just make her 'more' of what she already is. (These other webs go away in a handful of turns, so you can't use her to make a huge mess of a level and trap other things afterward) -------------------------------------------------------------------------------- a0239f6 | DracoOmega | 2024-05-13 17:02:06 -0230 Allow placing traps via temporary terrain changes So that things like webs can also be added transiently. (This doesn't work properly for golubria portals, since the ammo property of that 'trap' functions as its duration, resulting in it immediately closing. But it seems to work otherwise) -------------------------------------------------------------------------------- 93184b1 | David Lawrence Ramsey | 2024-05-13 12:44:49 -0500 Actually display equipped scarf of invis (oops). -------------------------------------------------------------------------------- 5d753f0 | David Lawrence Ramsey | 2024-05-13 12:26:34 -0500 Give Coglins invisibility in Fedhas' Mad Dash. Instead of a non-draining amulet of invisibility, which they can't wear, give them a non-draining scarf of invisibility instead. (Adapt code from meatsprint to accomplish this.) The item tile is a recolour of item/armour/scarf1.png, using the palette of item/amulet/artefact/urand_amulet_invisibility.png, and the worn tile is a recolour of player/cloak/scarf_magenta.png. Closes #3773. -------------------------------------------------------------------------------- 6203b1e | DracoOmega | 2024-05-13 11:44:30 -0230 Mention glowing orange brains' brilliance aura in description (namsan) An oversight when I was adding it. -------------------------------------------------------------------------------- bc14699 | DracoOmega | 2024-05-13 11:44:22 -0230 Don't crash when monsters aim hellfire mortar near level boundaries -------------------------------------------------------------------------------- 7caecd6 | DracoOmega | 2024-05-12 04:25:55 -0230 Fix a crash with monsters aiming Hellfire Mortar near the level border The heuristic to decide where to aim it would try aiming at out of bounds squares, causing an assert in beam code. -------------------------------------------------------------------------------- 5152ae1 | DracoOmega | 2024-05-12 03:13:58 -0230 Prevent a crash from casting Hellfire Mortar on level boundary (acrobat) -------------------------------------------------------------------------------- 8b4cc81 | DracoOmega | 2024-05-12 02:10:03 -0230 Don't crash on forcibly displacing the player from a wall (acrobat) This was plausible to achieve by casting Hellfire Mortar several times in a row, progressively deeper into a wall, so that the path from the first cast had closed up by the time the second was closing up. -------------------------------------------------------------------------------- 44bfc33 | David Lawrence Ramsey | 2024-05-11 19:43:24 -0500 Add another chaos name to artefacts. -------------------------------------------------------------------------------- e769ff8 | regret-index | 2024-05-11 21:30:34 -0230 Actually make monster yellow drac bite damage weaker than green stingers Whoops. -------------------------------------------------------------------------------- 87abc83 | DracoOmega | 2024-05-11 20:55:19 -0230 Buff Draconian Stormcallers (and white draconians in general) a little White draconians as a base type have been at the bottom of the pecking order for some time, with a resistable breath type whose damage was lower and had no secondary effects. Also, the HD hack used to make their breath damage lower than ice dragons of the same HD wasn't reflect in xv, causing the game to say they did 3d28 damage when they only did 3d18 (a pretty massive difference!) This commit raises their breath damage to 3d22 and makes xv display it properly. Stormcallers additionally pick up the same trick that Qazlal player worshippers did this patch - being safe from their own Upheaval. They will also be slightly more willing to hurt their allies with it (since summoning even a single wind drake was enough to fully preventing casting it against even an xl 27 player). This should mostly only matter in corridor situations, so still only a modest change. Finally, raise their Upheaval cast rate - it's the spell they're most likely to be unable to cast, so they can get a higher liklihood to use in situations where they can. Their kit is still a bit anti-synergistic with itself, but it's flavourful so this may be a completely adequate improvement. -------------------------------------------------------------------------------- 7bd66db | regret-index | 2024-05-11 20:54:59 -0230 Give monster yellow draconians the players' acid bite aux This adds a bit more consistency to how green draconians have a poison sting aux on both players and monsters. More pressingly, it also gives draconian annihilators a bit more differentiation from deep elf annihilators beyond a trading of high Will for a little more HP and some AC, through letting them have marginally more melee damage and applying a bit more corrosion than prior, as well as between draconian annihilators and the other conjurations-focused classes in the same avenue. (Yellow base draconians are already third in kill statistics, though they're not particularly high compared to red or green base draconians, while black and purple base draconians are noticeably higher. The rough same positioning in the middle of the pack also applies to annihilators. As such, this shouldn't be too dramatic an overall Zot buff.) The damage is slightly lower than the green draconian sting aux, since corrosion is harder to deal with than poison. -------------------------------------------------------------------------------- 6a5d697 | Nicholas Feinberg | 2024-05-11 07:39:47 -0700 Give serpent form rDrown (acrobat) Since they can swim, and for consistency with Mf etc. -------------------------------------------------------------------------------- 12f0f65 | Nicholas Feinberg | 2024-05-11 07:39:47 -0700 Remove unused function in header -------------------------------------------------------------------------------- 2afa0c4 | David Lawrence Ramsey | 2024-05-11 09:15:38 -0500 Fix outdated Dvorak keybind (christakahashi). Closes #3491. -------------------------------------------------------------------------------- df15be1 | David Lawrence Ramsey | 2024-05-11 08:38:17 -0500 Make the chaos spawn temple transparent. -------------------------------------------------------------------------------- 12fa8b1 | DracoOmega | 2024-05-10 21:33:29 -0230 Add a proper targeter for Slouch, display damage per monster Instead of just hilighting all of LoS when aiming the ability, it will now actually show which monsters will be affected by Slouch (ie: indicating that it cannot affect sleeping or stationary monsters) as well as indicate how much damage an individual monster is expected to take, based on its speed. (This should help give players a better understanding of how much speed affects the damage Slouch actually does) Also make the ability's damage description more explicit that this is damage against normal-speed monsters. Unlike spell damage, this is never listed in a format where we only have a few characters to work with, so we're free to be a little more verbose. -------------------------------------------------------------------------------- 8bf067f | NormalPerson7 | 2024-05-10 21:31:15 -0230 Add damage to ability descriptions For the following abilities: - all breath weapons - storm form: blinkbolt - demonspawn: hurl damnation - orb of Dispater: evoke damnation - Beogh: smiting - Cheibriados: slouch (damage against a normal-speed monster) - Ignis: foxfire swarm - Jiyva: oozemancy - Qazlal: upheaval, disaster area - Ru: power leap, apocalypse - Uskayaw: stomp, grand finale - Yredelemnul: hurl torchlight - the Shining One: cleansing flame Makhleb's minor destruction and major destruction are too random to describe in a simple formula in any meaningful way, except potentially we could make it state the average damage in the future. The same applies to Nemelex' cards. In many cases, abstract the power and damage formulae for these abilities to ensure the output damage is the same as listed. This often involves listing the rounded-down damage formula, where abilities use div_rand_round on skill/XL. There are many more abilities that it would be nice to quantify in their descriptions based on the player's current skill but don't fit neatly into the damage category. It would also be nice to list ability noise, and damage at max skill, but since abilities often don't have a clearly defined power-cap and noise is often dealt with elsewhere, this is challenging. Nonetheless, this will hopefully be useful in allowing players to see how their skill/XL affects damage output. Players should remember that there are usually no actual breakpoints and that the damage listed has usually been rounded down. -------------------------------------------------------------------------------- cb1f725 | DracoOmega | 2024-05-10 19:17:02 -0230 Reroll misery clouds from Condenser Vane Instead of simply producing no cloud on that spot at all (and then printing a god message explaining why you got scammed). -------------------------------------------------------------------------------- 0981f75 | DracoOmega | 2024-05-10 19:17:02 -0230 Suppress bad clouds from Xom's cloud trail while worshipping good gods It was possible to get a cloud trail from Xom wrath, while worshipping a good god, and get a cloud type hated by your god, resulting in potentially a huge loss of piety. Now inappropriate cloud types will be suppressed by your current god and turned into salt instead. All good gods suppress miasma and misery, and Zin additionally blocks chaos and mutagenic clouds. -------------------------------------------------------------------------------- cadf65b | DracoOmega | 2024-05-10 19:17:02 -0230 Make Blorkula un-zombifyiable (since he's a vampire now) As hilarious as "Blorkula the Orcula the orc zombie" is. -------------------------------------------------------------------------------- d489c1e | DracoOmega | 2024-05-10 19:17:02 -0230 Don't perform a deathbed conversion on an already-converted orc I'm not sure that this deal with #3808 entirely, since I wasn't able to reproduce the unlinked items part, but in the process of testing, I noticed that an orc could surrender multiple times if you 'killed' them again after they'd already converted. This shouldn't happen, regardless, and *maybe* could be related? -------------------------------------------------------------------------------- 0349025 | DracoOmega | 2024-05-10 19:17:02 -0230 Improve sticky flame messaging while rF- Now it says that it 'burns you terribly' if you have rF-, like other sources of fire damage. Fixes #3789 -------------------------------------------------------------------------------- 3f0eabb | DracoOmega | 2024-05-10 19:17:02 -0230 Don't crash on a Flashing Balestra that kills its own caster (ge0FF) eg: as caused by Ru or presumably amulets of Reflection as well. -------------------------------------------------------------------------------- f13bc15 | DracoOmega | 2024-05-10 19:17:01 -0230 Make Magnavolt beams non-bouncy In most circumstances, this doesn't matter, since the beams are always aimed at a monster and stop at that monster. But if one of the magnetised targets ends up on the other side of a granite statue, you can still see them, but the beam cannot properly reach them, and will rebound off the statue without a warning. Rather than deal with all the targeter issues of properly displaying and prompting the player for these situations (since that would only make the spell feel cludgier), let's just make the beams stop if they can't reach their target. Fixes #3809 -------------------------------------------------------------------------------- f9b02fe | David Lawrence Ramsey | 2024-05-10 15:32:10 -0500 Unbrace -------------------------------------------------------------------------------- 271a355 | David Lawrence Ramsey | 2024-05-10 15:20:41 -0500 Refactor handling of bardings (#3788). Rename player::wear_barding() to player::can_wear_barding(), and make it account for form changes. Also, remove _cant_wear_barding_reason(), and fold its old logic into can_wear_armour(). With this done, bardings can now be properly shown as unavailable when the player could normally wear them, but is in a form that prevents wearing them. -------------------------------------------------------------------------------- 34ef5f1 | gammafunk | 2024-05-10 12:16:58 -0500 feat: Improve lua monster speed descriptions Speed descriptions were made more detailed in e72b690d, but lua was still using the old adjective system. This commit moves the description logic directly into `monster_info` so that it's use for both lua and in-game descriptions. -------------------------------------------------------------------------------- 4ba1219 | David Lawrence Ramsey | 2024-05-10 09:53:36 -0500 Fix inaccurate Lear's hauberk armataur message. They can't wear it, but it's not blocked by their tails as with nagas; it's blocked by their (four) feet. -------------------------------------------------------------------------------- 2fe6b24 | David Lawrence Ramsey | 2024-05-10 09:07:52 -0500 Shuffle and reweight some goblin sharper lines. Bias them somewhat in favour of card deck lines; and less so for deck of punishment lines, dropped card messages, and misplaced card messages. -------------------------------------------------------------------------------- 6b3bedf | David Lawrence Ramsey | 2024-05-10 07:38:13 -0500 Reorganise priestly Makhleb worshippers a bit. Put Asterion at the end of the list, since he's a unique, and simplify the nearby comment. -------------------------------------------------------------------------------- 1dda8f8 | regret-index | 2024-05-10 03:52:16 -0230 Mildly bump up obsidian bat difficulty Cross-referencing objstat's average bat count versus the Orcish Mines death statistics since they're added, they're rather middle-of-the-pack in terms of lethality, despite being rare spawns mostly unique to the branch with a rare gimmick. New monsters don't have to be hyper lethal to justify their continued existence, but it helps a branch with low variety to have a given rare spawn be any much noticeable, so they can do with a little bit more teeth. Obsidian bats get a summon cap of 4 rather than 3, and slightly better damage and defenses all around. They also move from speed 25 to speed 30; there's next to no slow earth monsters any more, so a stone bat being slower than other bats doesn't really fit anyway. -------------------------------------------------------------------------------- c27ebab | mainiacjoe | 2024-05-10 03:52:16 -0230 Add a hat* shop (#3646) "This hats-only shop places two of see invisible, willpower, and intelligence hats, a good_item hat, a randart hat, and either a single unrand hat or a second randart hat. Uses hat tiles that are rarely encountered elsewhere. Since it only places good items, have it show up fairly deep." [Committer's notes: Cleaned up a bit of logic code checking. Since the nostalgia has overflowed so far that the dwarf came back entirely, name the shop after the granny his dialogue mentions as making his hat instead. Also, remove the shop from most Lair branches- Wiglaf didn't show up in water branches and we don't put shops in Spider in general. Snake is fine, though. Vault weight is lower due to showing off previously rather rare tiles and containing all these randarts and unrands, too. In exchange for such increased rarity, it now also gets a coinflip chance to contain a book solely containing Wiglaf's new signature spell. This might be a little too silly, it might be fine. We'll see how this lasts the years. Closes #3646.] -------------------------------------------------------------------------------- c2f12fc | regret-index | 2024-05-10 03:52:16 -0230 Make the orc priest apostles a little more fancy (#3628) To differentiate orc priest apotles more from just being recoloured orc wizards holding the orc priest tablet, give them a bit of shiny trim like high priests have, but with silvery-metal colours and skipping the collar to reduce the chance of it being confused with said high priests (who have gold trim and trim on the collar). Ideally in the future we could get fancier and slightly varying tiles on this front, but this should help for now. Closes #3628. -------------------------------------------------------------------------------- a9bbc2f | David Lawrence Ramsey | 2024-05-10 00:14:28 -0500 Make hell knights properly worship Makhleb. They're priests, but weren't getting the proper god in the priest section of _place_monster_set_god(). -------------------------------------------------------------------------------- 58216f8 | DracoOmega | 2024-05-09 23:11:27 -0230 Fix Hellfire Mortar incorrectly saying no targets were in range (Tavran) It was falsely interpreting "Will not be harmed by lava being created underneath it" with "Will not be harmed by this spell." -------------------------------------------------------------------------------- dfafe49 | DracoOmega | 2024-05-09 22:45:08 -0230 Fix missing break statements in spell usability logic (RelicWraith) Due to an oversight that was then repeatedly several times in a row, a number spells were checking the usability of both themselves *and* every spell implemented after that. I'm impressed this didn't come up sooner, but I guess a lot of these spells are unlikely to be used at the same time by the same character. -------------------------------------------------------------------------------- c2fb2e3 | Nicholas Feinberg | 2024-05-09 11:40:30 -0700 Tweak some spellbooks Make the Tri-Codex thematic again. -------------------------------------------------------------------------------- 635abf7 | David Lawrence Ramsey | 2024-05-09 07:20:31 -0500 Fix wording in formicid no-shafting message. -------------------------------------------------------------------------------- 81c5165 | Nicholas Feinberg | 2024-05-08 18:31:16 -0700 Pluralize Djinn correctly The initial uppercase threw off our pluralise function. -------------------------------------------------------------------------------- f737d81 | Nicholas Feinberg | 2024-05-08 18:28:19 -0700 Partially dedent -------------------------------------------------------------------------------- 0c6998e | Nicholas Feinberg | 2024-05-08 18:18:39 -0700 Partially fix a Xal'krixis line Fix one of two. -------------------------------------------------------------------------------- 5559f47 | DracoOmega | 2024-05-08 21:23:08 -0230 Add a comment to clarify that a function is for UI purposes only -------------------------------------------------------------------------------- b5dd1e8 | DracoOmega | 2024-05-08 21:23:08 -0230 Reorder invalid target messages for Bind Soul So that it will complain about something being an ally before it complains about them being a summon. -------------------------------------------------------------------------------- 598e6e7 | RypoFalem | 2024-05-08 21:23:07 -0230 fix: Bind Soul targeter revealing the true Mara Yredelemnul's Bind Soul ability checks if the monster was summoned and in the case of Mara Summon, this allowed the targeter to show which Mara was not an illusion. Ditto for rashaka's phantom mirror spell. Fix this by ignoring if the monster is summoned for interface purposes when the monster has the phantom mirror enchant (currently the targeter and the displayed potential hp of the bound soul). Also blacklist player illusions from this effect since this new corner case, as far as I know, is the only monster with the phantom mirror effect that is a trivially deducible summon. Is there a better way to do this? [Committer's note: slightly edited a comment for clarity] -------------------------------------------------------------------------------- 5393115 | RypoFalem | 2024-05-08 21:23:07 -0230 fix: blink revealing invisible monsters (Ge0ff) The targeter excluded tiles with invisible monsters. Make it so the targeter only excludes the tile if the player knows there's a monster there. -------------------------------------------------------------------------------- 44e7262 | NormalPerson7 | 2024-05-08 21:22:51 -0230 Improve the A screen for forms For the longest time (likely forever), forms' innate resistances have not been displayed on the A screen with the rest of the form properties, except for poison immunity and torment resistance (which are weirdly specific exceptions). This commit changes that. Resistances will only be displayed where the player doesn't have a (non-suppressed) mutation superseding them. Add the blinkbolt and siphon essence abilities, clarify shadow form's spellcasting penalty and resists, add descriptions of bad forms' offensive and defensive stats, clarify wisp form's "highly resistant" fakemut and add insubstantial, add serpent form's cold-bloodedness, split statue form's slowness and melee bonus, display blade hands' body armour AC penalty, align bat/pig form fast with the mutation. Also, tone down the wording on alive Vp's regen ("accelerated" sounds faster than "unusually fast" to me, even though the effect is 1/4 of "unusually fast"). Add a new `badmuts` field to form-data.h, so that all of the red- coloured "bad" fakemuts can be displayed on A together, and to remove hacky and inconsistent tags in form-data.h. Reclassify some existing fakemuts as bad (e.g. tree stationary, statue slow). Fix bugs with amphibiousness not displaying in permanent forms and poison immunity displaying as an innate fakemut instead of a form fakemut for some forms, which were caused by the addition of permanent forms in 0.31. Fix fungus form having rN+++ even though plants and wandering mushrooms no longer have this. -------------------------------------------------------------------------------- 31df86b | NormalPerson7 | 2024-05-08 21:22:33 -0230 Add Permafrost Eruption as a monster spell for servitors/ghosts Modelled off the code for Plasma Beam, as Permafrost Eruption is similar (lvl 6, two blasts, automatic targeting). I have set the damage to be about 70% of that of monster Plasma Beam, accounting for the fact Permafrost Eruption doesn't miss, and noting that a similar ratio exists for the player spells. We can always tweak this later. Servitors will cast this spell, with priority set just below Plasma Beam and just above Fireball (I figure it should be a bit stronger than monster fireball, but the close targeting restriction will make it slightly more awkward for servitors to have than Plasma Beam). Player ghosts will also have it; perhaps at some point a unique will get it too. [Committer's note: fixed a minor oversight in the tracer using a player instead of monster zap, and nudged monster permafrost damage up a small amount] -------------------------------------------------------------------------------- 2c08040 | caryoscelus | 2024-05-08 21:21:18 -0230 Fix formicids able to shaft while in non-mutaion-preserving forms Previously, if formicid character was in a form that disables mutations, ability menu would remove both Dig and Shaft self, but the latter was still possible by using ability quiver. Now this workaround is removed. fixes #3776 -------------------------------------------------------------------------------- 2164d10 | DracoOmega | 2024-05-08 18:11:29 -0230 Tiny formatting change to recent xv improvements List damage for quivered throwing items AFTER normal attacks instead of before. (It seemed better to have 'attacks which are always there' come predictably first to me). Also insert a line break above the attacks table for a slight improvement in visual clarity. -------------------------------------------------------------------------------- 080bef2 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Show monster staff damage in x-v; let them use staves of conjuration Magical staff damage works differently to weapon brands, and it was previously extremely obscure how much bonus damage a monster could deal with its magical staff. I imagine complaints about this were limited by the fact that only Arachne, Fannar, Josephina, and Jorgrun have high chances to actually come with a magical staff. Add the max bonus damage from a magical staff to the x-v screen, where the brand information is provided for weapons. I have attempted to provide a suitable descriptor for the type of damage in each case, though "earth" and "conj" I admit are quite weak. Unlike all the other magic skills used by magical staves, monsters were not previously allocated any conjurations skill, so they would never get any bonus damage from staves of conjuration. I imagine this is due to staves of conjuration only gaining a melee effect in 695e311. Give them conjurations skill equal to the other elemental schools. -------------------------------------------------------------------------------- ce9c828 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Remove separate quiver line in x-v Missiles are now shown in the Throw line of the attack table, and for special darts and throwing nets, they are also described in the unusual item description. Thus, the line "It is quivering javelins." or similar is now redundant. -------------------------------------------------------------------------------- 9a59075 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Completely fold monster throwing/ranged into the x-v attack table When a monster wields a ranged weapon, the x-v attack table previously implied the monster could hit you with that weapon. Now explicitly show this as "shooting" the weapon, and include archer bonus damage in the Max Damage column of the table. Also special-case Nessos so that his extra venom brand is displayed in the Bonus column. When a monster quivers a throwing weapon, add an extra line to the top of the attack table describing the monster's throwing attack, which takes into account brand effects, slaying and archer bonus damage. Silver will display its extra damage against the player in their current mutated state. This permits the removal of the extra text for the archer flag and Nessos, which was always very easy to miss anyway. Example: yaktaur captain, +0 arbalest, silver javelins Immediately before this commit: Attack Max Damage Hit: +0 arbalest 45 It can deal up to 18 extra damage when attacking with ranged weaponry. Now: Attacks Max Damage Throw: silver javelins 57 + 19 (silver) Shoot: +0 arbalest 63 -------------------------------------------------------------------------------- c2b490d | NormalPerson7 | 2024-05-08 16:59:46 -0230 Include slaying equipment in monster damage on x-v The real calculation (attack::calc_damage) is able to access monster::scan_artefacts, but for some reason the x-v descriptions use a monster_info object instead, which isn't able to access this method. Thus this requires a new function to duplicate monster::scan_artefacts for monster_info. -------------------------------------------------------------------------------- d582849 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Improve x-v for AF_PURE_FIRE, AF_DRAIN; fix damage being off-by-one AF_PURE_FIRE was previously very unclear about the fact that the Max Damage number is actually all fire damage and that there is no bonus fire damage. Fix this by removing the "bonus" column from AF_PURE_FIRE and listing the damage in the Max Damage column as fire. AF_DRAIN previously did not list its max damage, even though it did extra damage. [Sidenote: draining effects are weirdly inconsistent: for monsters, AF_DRAIN deals up to damage/2 half the time, draining weapons do this all the time, whereas for players, draining weapons do 2-4 + damage/2 but only half the time.] Most importantly, the formula for melee damage dealt by monsters is damage = 1 + random2(monster attack damage) + random2(weapon base damage) + enchantment/slaying roll when monsters have a weapon, which has a max of max = monster attack damage + weapon base damage + ench/slay - 1 but the -1 was not being reflected in x-v. Fix this. Future commits will incorporate slaying into x-v damage numbers, and improve the display of ranged and throwing weapon damage on x-v by folding it into the attack table. -------------------------------------------------------------------------------- 983892f | NormalPerson7 | 2024-05-08 16:59:45 -0230 Add monster weapons and brand damage to x-v In 3dd9dd1, monster attacks were put into a table after many descriptions got too long. However, in the process we lost most monster weapon brands from being shown on x-v at all. The result was that the "max damage" number shown on x-v was often a lie, and there were only two ways to check monster weapon brands: (a) reread the message from when a monster enters LOS for the first time (but note, this currently doesn't display when entering a new floor sometimes due to a bug), or (b) use x to examine the monster, but this only works when in LOS. Let's take advantage of the new table setup in two ways: firstly, rather than "(w/weapon)" being shown for every monster weapon attack, list a monster's weapon's terse description in the Attacks column after "Hit", and secondly, add the max damage from the monster's weapon brand to the Max Damage column. To make this all fit on the 80-character wide description UI, make the column widths adjust themselves to the width of the text in the columns. Where this still isn't good enough, truncate the weapon description, as this is the least important part of the table. Example: Norris, wielding a +2 demon trident of draining. Previously: Attack Max Damage Bonus Hit 48 Cause confusion Now: Attack Max Damage Bonus Hit: +2 demon trident (drain) 48 + 24 (drain) Cause confusion -------------------------------------------------------------------------------- a94dba6 | DracoOmega | 2024-05-08 16:33:12 -0230 Properly attribute blame to Blorkula for their bats -------------------------------------------------------------------------------- af1361e | DracoOmega | 2024-05-08 16:33:00 -0230 Remove status effects from Blorkula when they turn into bats While some things like haste could arguably make sense, it feels rather silly to have Blorkula split while petrifying and then reassemble themselves 20 turns later while still petrifying. -------------------------------------------------------------------------------- c66c6fa | DracoOmega | 2024-05-08 16:30:58 -0230 Fix a Hellfire Mortar crash It is possible that the target of the second bolt of magma in a turn will be dead by the time it comes to fire on it (probably because it was also in line of the first bolt, even if not its primary target). Instead of assuming each target we picked is alive, double-check and then skip to the next candidate, if the original is dead and one exists. That way the mortar won't sometimes appear to mysteriously only fire once, even when a viable second shot clearly exists. -------------------------------------------------------------------------------- d4bb481 | David Lawrence Ramsey | 2024-05-08 11:24:59 -0500 Adjust Donald Vehumet message. Now that the Hellfire Mortar spell exists. -------------------------------------------------------------------------------- d162682 | David Lawrence Ramsey | 2024-05-07 18:33:09 -0500 Fix spelling. -------------------------------------------------------------------------------- b87f078 | David Lawrence Ramsey | 2024-05-07 18:24:59 -0500 Fix old comment references to Blork. -------------------------------------------------------------------------------- 4931952 | David Lawrence Ramsey | 2024-05-07 18:24:06 -0500 Fix old speech references to Blork. -------------------------------------------------------------------------------- ce087b8 | David Lawrence Ramsey | 2024-05-07 18:18:19 -0500 Remove leftover Blorkula aliases. He's undead now, and can't be polymorphed, so he doesn't need them anymore. -------------------------------------------------------------------------------- df7bd89 | David Lawrence Ramsey | 2024-05-07 18:10:51 -0500 Fix punctuation. -------------------------------------------------------------------------------- 6663129 | David Lawrence Ramsey | 2024-05-07 18:10:25 -0500 Fix spelling. -------------------------------------------------------------------------------- 169130f | DracoOmega | 2024-05-07 20:20:27 -0230 Give polterguardians an actual melee attack Believe it or not, it wasn't intentional that they didn't have one. It should still be fairly tame, but there's few monsters in Crawl that can't hit you at all from melee. -------------------------------------------------------------------------------- 6fc613a | DracoOmega | 2024-05-07 20:20:27 -0230 Give glowing orange brains an *actual* aura of brilliance Using the new easy aura framework, brains provide the empowered spells buff to nearby allies so long as they are alive. Unlike Prayer of Brilliance, this affects any monster that is antimagic-vulnerable (ie: it also works on demons and other natural spellcasters, like eyes). This gives them an interesting support function and also makes their summoning feel a little more different than other Shadow Creatures users. Additionally, they get the 'cautious' flag. Despite a synergistic spellset that sounds scary in theory, brains often would spend most of their turns simply walking up to let the player punch them (and they don't even have a melee attack!). This makes the combination of summons/disruption/fear a little more likely that the player has to consider how to answer. -------------------------------------------------------------------------------- 7553c99 | DracoOmega | 2024-05-07 20:20:27 -0230 Tweak Cloak of the Thief While noise suppression is a powerful effect, many players felt uncomfortable using this item now that it had an even greater slaying penalty than the old version. But it occurred to me that Quiet is already less useful on the sorts of characters most affected by -slay, so let's try making it give a moderate MP reduction instead (since Quiet is strongest on casters). -------------------------------------------------------------------------------- 408b925 | DracoOmega | 2024-05-07 20:20:26 -0230 Fix Marrowcudas having 1 will An oversight from being initially copied from skeleton's stat block. 10 will is still deliberately very low, but 1 felt silly. -------------------------------------------------------------------------------- 03a3b74 | DracoOmega | 2024-05-07 20:20:26 -0230 Remind Xak'krixis to dress themselves (Mostly by accident, they weren't given a robe or any other body armour. I don't expect changing this has much practical effect.) -------------------------------------------------------------------------------- eae4683 | DracoOmega | 2024-05-07 20:20:26 -0230 Replace Deep Elf Elementalist Freezing Cloud with Hoarfrost Cannonade Freezing cloud wasn't a very functional spell on these enemies. Because of the unpredictable splash of monster cloud spells, the elementalist would often refuse to cast it at all (even in an open room with no one else around!) for fear of hitting themselves. And then when they did, it was often more dangerous to the elementalist (or other elves) than it was to the player. Let's try replacing it with a different ice spell that has neither of these problems. I am letting monsters 'cheat' and create the cannons centered around their foe, rather than themselves (both so that they can do something with it when there's a pileup of other elves in the way, and so it's less trivial for the player to just stay out of range of them). -------------------------------------------------------------------------------- 033698f | DracoOmega | 2024-05-07 20:20:26 -0230 Make Hoarfrost Cannonade monster-castable To keep monster from wasting their cannon charge-up, they will only recast the spell if no existing cannon of theirs is in sight of their foe. (Getting the cannons to disappear on the death of their creator involved some fairly ugly hacks, since the main method of doing this explicitly only works on things which are abjurable. In the future, it would be nice to unify the various non-abjurable things that go away on creator death (ie: tentacles, battlespheres, vines, spectral weapons, and now this) instead of each one being handled essentially in its own one-off way. This commit modifies monster::is_summoned to retrieve the summon type of a creature regardless of whether they're abjurable or not (since many non-abjurable things set this!). It was unclear to me why it would only do this for abjurable things. Since the return value of the method is unaffected, I don't THINK this changes the semantics of anything currently using it. -------------------------------------------------------------------------------- 95e6ca3 | DracoOmega | 2024-05-07 20:20:26 -0230 Wiglaf has returned for his hat (and brought a very big gun) Along with the return of playable mountain dwarves, it seemed like a good joke to bring back an iconic mountain dwarf unique at the same time, just so long as there was something interesting for Wiglaf to *do* and I think I may have found that. Wiglaf can now cast Hellfire Mortar, a thematically appropriate (and hopefully fun) spell. They've lapsed a little in their worship of Okawaru, losing Haste to keep them from overlapping with modern Donald too much (but still know Might). They always spawn with a good randart hat and since, well, everyone knows Joseph *took* that hat, they alternate with him as a unique pair. A tiny bit of their dialogue was restored from the old days, but after trimming out the cliche drunkenness and vague racism, the vast majority of it is new. I did my best to manage scottish eye dialect in a similar style; not sure if I have gone overboard or not. Implementation note: it's impossible in a conventional way for a monster to have a hat and a shield at the same time, even using the 'usual' hack used for Nikola's gloves. So I have shoved Wiglaf's hat into his jewelry slot, which I dislike rather a lot. But I'm reasonably sure that it works properly. -------------------------------------------------------------------------------- 8d931bd | DracoOmega | 2024-05-07 20:20:26 -0230 Implement monster-castable Hellfire Mortar (and fix some more bugs) This uses a 'probably smart enough' heuristic for determining where to launch the thing (since it can't simply shoot it directly at its target). In testing, it seemed to do a pretty decent job of it. Also fixed: -Cast messages for the morter firing at things sometimes being wrong -Being able to turn the level boundary into lava with it (This was less disasterous than you'd expect, since the morter still wouldn't enter it, but it could give you extra turns of it firing in place while it tried and failed) -Not actually generating the giant noise that the spell implied was happening -------------------------------------------------------------------------------- a698059 | DracoOmega | 2024-05-07 20:20:26 -0230 Don't trap monsters in walls via Hellfire Morter (ge0ff) To my surprise, while terrain changes expiring were happy to place the player in a wall, it simply doesn't revert at all if it would put a monster in a wall (and thus would remain lava forever). Instead, use the same approach to try to push the monster out of the new wall with increasing levels of force that was done by 706e7c35db215fc7c8d9ae1040d2b281f451c2de (now generalized to use the same code) -------------------------------------------------------------------------------- 10a0961 | DracoOmega | 2024-05-07 20:20:25 -0230 Properly ascribe blame for deaths due to exploding monsters This was broken since 3dd439832fe0f5fe295caad1a2fe3e479a757cda which caused all ikiller information for deaths caused by exploders (ie: ball lightning or fulminant prisms) to be lost. This isn't conceptually trivial to fix, as now the monster responsible for the explosion will already be cleaned up by the time the explosion happens (and the entire blame chain was stored inside that monster). The fix I've settled on is to maintain a very transient cache for copies of monsters that are about to explode. If a scorefile_entry tries to look up a monster by mid and fails, it will look at this cache instead so that it can find the dead monster's info as it was when the final_effect was first scheduled. (This cache is cleared as soon as fineffs are done processing, so there shouldn't be any need to worry about its state.) It's possible there is some other class of fineff that could benefit from using it, for similar reasons, but this wasn't immediately obvious to me. However, this should once again let us see whose fault these deaths are. (Fun fact: I'd thought that Xak'krixis was wildly underperforming, but apparently a full 90% of their kills weren't being attributed to them. Poor Lom also lost out on ~30% or so of their kills since the original commit). -------------------------------------------------------------------------------- 7e7c522 | DracoOmega | 2024-05-07 20:20:25 -0230 Actually attribute banishment kills to their source In practice, this doesn't actually change very much that I can see (unlike what the deleted comment implies, you don't appear to double-dip on xp even with a non-anonymous source.) but does allow a few monster-specific death effects to check if the player was the one doing the banishing. -------------------------------------------------------------------------------- 76af017 | DracoOmega | 2024-05-07 20:20:25 -0230 Blork the Orc -> Blorkula the Orcula As part of the Beogh overhaul, it seems like a good idea to demonstrate that some orcs other than just the player have non-orcish heritage, and this was one of the funnier options. Blorkula also gets a new gimmick to go with being a vampire: when he would otherwise die, he instead splits into multiple (randomly colored!) vampire bats. The player has a modest length of time to kill these bats before they pull themselves back together into a healthy Blorkula once more. (There is a lengthly cooldown so that he cannot do it again immediately, but will regain that ability if the player is forced to flee). He also gains a modest vampire bite aux and adds Sting, Sandblast, and Shock to his spell repertoir (specifically in keeping with the recent greater emphasis on his 'obsessed with different colors' theming). This definitely makes Blork more dangerous than before, but he is currently the statistically least dangerous unique of his depth range, so there is probably a fair bit of headroom to buff him without concern. I have still nudged him down a floor, out of caution. We'll see if this works out appropriately enough. (I also edited a handful of dialogue lines, both to mention the Beogh conversion history and to cut out the specific implication that his suspenders are somehow magically empowering him - he's got enough other theming going on now.) -------------------------------------------------------------------------------- 7ff33ff | DracoOmega | 2024-05-07 20:20:24 -0230 Add methods to follower class to simplify storing in a prop It's easy to store both monsters and items in props, but because of how Crawl handles monster inventories, very tricky to store a monster that is *carrying* items in a prop. Follower wraps some of this process, but cannot be stored directly. This should help a little. -------------------------------------------------------------------------------- bb4d5d8 | David Lawrence Ramsey | 2024-05-07 13:19:36 -0500 Add bird name to artefacts. -------------------------------------------------------------------------------- 60eeae6 | gammafunk | 2024-05-07 11:05:29 -0500 feat: Buff evocable invisibility Items like the scarf of invisibility and +Inv in general have been seen by many players as not competitive with other items/properties for a while now. Invis on demand is very strong and I believe still underrated for combat situations by even experienced players. However +Inv requires high evocations investment just to receive a passable fail rate has a significant drain cost on top. We do want +Inv to require evocations investment, and drain is still the best option to limit spamming the ability without care, but better balance can be had. This commit reduces the fail rate's dependency on evocations by 1/3, the same fail rate as +Blink, and reduces the drain cost by 1/3. Hence with 4/8/12 evocations skill, we get 14%/6%/1% fail rates. Complaints about the drain cost are less prominent than complaints about the ability fail rate, but hopefully cumulatively these buffs make players consider using +Inv a bit more. -------------------------------------------------------------------------------- 4fd57f6 | David Lawrence Ramsey | 2024-05-04 21:17:34 -0500 Use @the_monster@ instead of the @monster@. -------------------------------------------------------------------------------- d771f2e | David Lawrence Ramsey | 2024-05-04 21:01:03 -0500 Add missing comments to goblin sharper dialogue. In order to indicate all deck types. -------------------------------------------------------------------------------- d2cf461 | Aliscans | 2024-05-04 17:20:23 -0500 Fix a message for items giving magic regeneration. Before, the game referred to "your injured body" if you tried to wear an amulet of magic regeneration when your health and magic were both below their maxima. The message for that item no longer mentions your physical injuries. -------------------------------------------------------------------------------- b508db4 | David Lawrence Ramsey | 2024-05-04 17:07:51 -0500 Port over fix for god speech substitution syntax. Originally from e6c31236d680a93faaff0604426160384db98a5a. -------------------------------------------------------------------------------- 39e6045 | Nicholas Feinberg | 2024-05-04 15:03:36 -0700 Revert "Identify un-ID'd randbooks when read" (Aliscans) Obsoleted by events. This reverts commit c751ee2058a0c833a17201e2928c0dc67b7c4c61. -------------------------------------------------------------------------------- c4a1ec1 | DracoOmega | 2024-05-04 19:26:44 -0230 Fix Repel Missiles expiring off of monsters (ge0ff) The repel missiles status was recently made to decay with time (as part of the aura rework and polterguardians). I had assumed as the time that the permanent repel missile status used by Deep Elf Archers and co was already set to INFINITE_DURATION, but it was not, and now unintentionally expired with time. -------------------------------------------------------------------------------- 5b11573 | DracoOmega | 2024-05-04 19:26:44 -0230 Fix a possible crash when casting Hellfire Mortar I hadn't noticed this was before the general null check (but it has to be above the normal BEAM_DIGGING check too, since it only ignores SOME monsters) -------------------------------------------------------------------------------- 94f45d3 | Nicholas Feinberg | 2024-05-04 13:25:16 -0700 Remove Haste Plants (Ge0ff) Again. -------------------------------------------------------------------------------- 029dca9 | gammafunk | 2024-05-04 09:30:25 -0500 feat: Add monster door usage info to clua The `can_use_doors()` method indicates whether the given monster can ever use doors. -------------------------------------------------------------------------------- 04caa86 | David Lawrence Ramsey | 2024-05-03 20:24:18 -0500 Fix comment typo. -------------------------------------------------------------------------------- e7eec5b | David Lawrence Ramsey | 2024-05-03 18:44:46 -0500 Fix some Rimeblight messaging for named monsters. So we no longer get e.g. "Shards of ice erupt from the Erolcha's body!" -------------------------------------------------------------------------------- a27d981 | David Lawrence Ramsey | 2024-05-03 18:33:23 -0500 Fix wording and punctuation. -------------------------------------------------------------------------------- a89ee85 | David Lawrence Ramsey | 2024-05-03 18:26:06 -0500 Use @reflexive@ more in monster spells/speech. -------------------------------------------------------------------------------- b4e814a | DracoOmega | 2024-05-03 20:45:30 -0230 Fix some typos (Namsam) The most delayed typo fix ever, sorry. -------------------------------------------------------------------------------- f843a72 | DracoOmega | 2024-05-03 20:45:30 -0230 Fix Rimeblight and Bestow Arms icons not displaying in webtiles -------------------------------------------------------------------------------- 799ce95 | DracoOmega | 2024-05-03 20:45:30 -0230 Tweak Rimeblight a little more heavily Increased the infection chance from rimeblight explosion from 1/2 to 2/3. Monsters that die to rimeblight now also have the same chance of spreading the disease to adjacent creatures (without accompanying damage) to avoid the awkward situation of you otherwise wanting to keep weak things alive long enough for them to become contagious (without adding death explosions that risk making it feel too adjacent to inner flame). You can no longer aim the spell through some of your allies (this was always an oversight). More significantly: explosions and disease spread no longer happen out of line of sight. Previously, the most powerful use of this spell was to unleash it on a group and then get the heck away so that they would slow die to each other while the player was safely away. While we do allow some high level spells to have this capability, it feels like there's a lot more risk baked into, eg: Discord, to counterbalance this. I'm a bit uncomfortable with this being the primary use-case for Rimeblight, and want it to feel sufficiently attractive to use while standing around for a fight. (The internal ice damage still occurs while out of sight, in the same way that poison still works out of sight) I also increase explosion damage somewhat (though note that the increased rate of spread is fairly significant). We'll see how this updated version feels to use. -------------------------------------------------------------------------------- a603194 | DracoOmega | 2024-05-03 20:45:30 -0230 Lightly tweak Fulsome Fusillade Make the first volley not cost an additional 2 mp beyond the casting cost (this was always unintentional), end the effect immediately the first time the caster lacks the mp to sustain it (instead of remaining 'on standby' for a while while their mp regenerates) and nudge up its damage a tiny bit. -------------------------------------------------------------------------------- d6975a0 | DracoOmega | 2024-05-03 20:45:30 -0230 Tweak Curse of Agony description for clarity Some people found it ambiguous whether you needed to hit the monster twice to make it trigger once. Hopefully this makes it more obvious that you get two separate triggers per cast. -------------------------------------------------------------------------------- e8f8732 | DracoOmega | 2024-05-03 20:45:30 -0230 Remove an unused bolt member Since it stopped being necessary to warn the player about whether a beam could destroy a tree. -------------------------------------------------------------------------------- 706e7c3 | DracoOmega | 2024-05-03 20:45:30 -0230 Improve behavior if player ends up in a wall due to terrain changes Instead of instantly randomly teleporting the player, try to simply shove them out of the way of the wall first (and, failing that, try to move them somewhere in los range first). There were probably other situations this could previously happen, but it's easier to do deliberately now because of Hellfire Mortar. Now the player should almost always be gracefully pushed backwards instead of being able to trigger an instant teleport this way. -------------------------------------------------------------------------------- f64a43d | DracoOmega | 2024-05-03 20:45:30 -0230 Hellfire Mortar (level 7 Fire/Earth spell) A replacement for seismic cannonade from the other direction. This spell creates a line of temporary lava in a chosen direction (even through walls in that direction) and spawns a mortar that moves along that line of lava, firing autonomously at nearby targets while it does so. The mortar fires bolts of magma at up to 2 different random enemy targets each turn, then moves 1 tile further along the path that was carved out for it. When it reaches the end of this path (or a monster blocks its attempt to move), it will disappear. Given that it acts entirely autonomously over a short duration, I have decided that it is closer to a foxfire or battlesphere than it is to a lightning spire in terms of whether Okawaru forbids it or Vehumet supports it. I could see arguments in the other direction, though. Also: enough years have passed since Hellfire was renamed Damnation that it is safe to use for something else again, right? (And this time, it really *is* doing fire damage...) -------------------------------------------------------------------------------- 7561cb4 | DracoOmega | 2024-05-03 20:45:30 -0230 Fix a couple missing message recolorings And remove code that was no longer called. -------------------------------------------------------------------------------- 66f656e | DracoOmega | 2024-05-03 20:45:30 -0230 Seismic Cannonade -> Hoarfrost Cannonade (lv 5 Ice/Alchemy) Seismic Cannonade was generally poorly received. There was some lack of clarity about needing to charge 1 cannon versus all cannons, perception that its damage was inadequate because so much of it was back-loaded, and I personally felt like the possibility of 'missing' your shockwave attack due to the cannons timing out unless you cast it immediately upon reaching full charge was unfortunate. I don't think the idea was unsalvageable (and simply raising damage and charge rate might have done a lot for it), but I've decided instead to shift element and try using this to address another gap in Crawl's spell library instead. (High level earth will get another new spell shortly instead). Until the recent Permafrost Eruption, there was literally only a single offensive Ice spell between Frozen Ramparts and Ozocubu's Refrigeration. That did a bit to help Ice's midgame being so incredible centered around Freezing Cloud, but an additional option at 5 should help midgame diversity. Hoarfrost Cannonade summons 2 hoarfrost cannons which shoot long-range shards that inflict the Frozen status on enemies. It inherits a greatly simplified form of charge-up mechanic compared to Seismic Cannonade: the cannons start at full health, but each shot the cannon fires consumes a chunk of this health. If it survives to fire a 5th and final shard, that shard will explode for greater 3x3 AoE damage. No manual recast or tracking needed, but the player is still incentivized to protect the cannons to let them get their biggest hit off. (The explosion does no damage to friendlies since its automatic nature would otherwise make it likely to either whiff or hurt you). (Also: more for flavor reasons than anything else, when the cannons fade away, they briefly leave a small puddle of water behind.) This generally fits the tone of Ice doing 'damage over time', while still being very different than Freezing Cloud. Let's see how this one goes over. -------------------------------------------------------------------------------- f3e26c5 | DracoOmega | 2024-05-03 20:45:30 -0230 Increase the effectiveness of the Frozen status Frozen was applied as a side-effect of Flash Freeze and Creeping Frost, but didn't have very much impact. It lasted 2-4 turns and increased move delay by 3 aut, meaning that even if you moved every one of those turns you were penalized, you'd lose less than 1 turn on average. In most situations, I think it barely affected how the player should conduct themselves. If a debuff is going to exist, I think it should be easier to notice that it did something, so let's try ramping it up slightly. Frozen now lasts 3-5 turns instead, and increases move delay by 50% (identical to being slowed). This is fairly conservative, but it's a nice round number with existing precedent. Frosthearts are already fairly scary as-is, so I've nudged their HD down by 1. This may not turn out to be necessary. As for monsters, Frozen was even more sad. Mostly this didn't matter, as circumstances where it was applied to monsters was few (and Upheaval is likely to simply kill them rather than have you worry about how slow they move now). But the combination of 'Almost always lasts 2 turns' and 'Increases move delay by 4 aut' meant that it was nearly mathematically impossible for a normal-speed enemy to visibly lose even a single turn from it. (It being a flat +4 to move cost also had the strange effect where enemies with fast movement but normal overall speed suffered a greater penalty than enemies with equivalently high speed for all actions.) Since debuffs like this tend to need a *larger* impact to notice on monsters than on players, let's try making it double their move delay instead (and last slightly longer). This will be relevant for the very next commit. -------------------------------------------------------------------------------- a0a6642 | DracoOmega | 2024-05-03 20:45:30 -0230 Let Flash Freeze damage targets that already have Frozen status It's a somewhat odd and very specific exception (that does not apply to any other effect that applies Frozen, either) that Flash Freeze cannot deal any damage to a player/monster that already has frozen. Rime Drakes' breath cooldown already made them unlikely to be able to attack the player any more often than this and marginal buffs to other users seem low impact. Admittedly, this makes it possible that a player facing *multiple* rime drakes at once can get breathed on a lot more often, but it was honestly kind of weird that they couldn't. -------------------------------------------------------------------------------- d495c7a | mumra | 2024-05-02 23:00:25 +0100 Break system packages (fix MacOS build) To fix an error running new version of pip3 in virtualised environments. > You may restore the old behavior of pip by passing > the '--break-system-packages' flag to pip, or by adding > 'break-system-packages = true' to your pip.conf file. The latter > will permanently disable this error. > If you disable this error, we STRONGLY recommend that you additionally > pass the '--user' flag to pip, or set 'user = true' in your pip.conf > file. Failure to do this can result in a broken Homebrew installation. https://peps.python.org/pep-0668/ -------------------------------------------------------------------------------- 1bd1766 | David Lawrence Ramsey | 2024-05-02 16:20:33 -0500 Reorder a few goblin sharper lines. So that the deck-related lines are last. -------------------------------------------------------------------------------- 293f381 | David Lawrence Ramsey | 2024-05-02 16:19:54 -0500 Reorganise goblin sharper's card lines. They're properly divided into sections by deck now. -------------------------------------------------------------------------------- 9e7e224 | David Lawrence Ramsey | 2024-05-02 16:07:01 -0500 Add deck of punishment lines for goblin sharper. -------------------------------------------------------------------------------- 8129f21 | David Lawrence Ramsey | 2024-05-02 13:25:12 -0500 Move Nem's oddities cards into their own entry. Also, make them more likely to show up than the other misplaced cards. -------------------------------------------------------------------------------- 348a825 | David Lawrence Ramsey | 2024-05-02 13:02:34 -0500 Remove low weight from misplaced card message. The goblins sharper has enough dialogue now that it won't come up often anyway. -------------------------------------------------------------------------------- eb237df | David Lawrence Ramsey | 2024-05-02 12:50:23 -0500 Add other oddities cards to goblin sharper lines. -------------------------------------------------------------------------------- e50fcab | David Lawrence Ramsey | 2024-05-02 11:34:48 -0500 Fix spelling. -------------------------------------------------------------------------------- 0624dd8 | David Lawrence Ramsey | 2024-05-02 11:25:54 -0500 Adjust a goblin sharper line. Orbs of destruction don't always blow up their targets. -------------------------------------------------------------------------------- 55e9565 | David Lawrence Ramsey | 2024-05-02 08:37:09 -0500 Add goblin sharper lines for renaining Nem cards. -------------------------------------------------------------------------------- e526281 | David Lawrence Ramsey | 2024-05-01 20:51:20 -0500 Fix spelling. -------------------------------------------------------------------------------- a127011 | David Lawrence Ramsey | 2024-04-30 09:53:05 -0500 Add another adjective to artefacts. (Impassible is not the same as impassable, but the former is still a word in its own right.) -------------------------------------------------------------------------------- 490276c | David Lawrence Ramsey | 2024-04-30 09:43:56 -0500 Fix typo. -------------------------------------------------------------------------------- a794c8f | David Lawrence Ramsey | 2024-04-30 01:29:35 -0500 Fix spelling. -------------------------------------------------------------------------------- 53ce97c | David Lawrence Ramsey | 2024-04-30 01:29:19 -0500 Fix typo. -------------------------------------------------------------------------------- caa3975 | regret-index | 2024-04-30 01:54:02 -0230 Put proper opacity masks in a new overflow altar vault Monsters behind glass in vaults tagged as transparent need "opaque" KMASKs to tell the builder those spaces aren't actually breaking connectivity (since the monsters can't be freed without freeing up connectivity). -------------------------------------------------------------------------------- 08be3ee | David Lawrence Ramsey | 2024-04-29 07:51:18 -0500 Make the temple's chaos spawn generate awake. So that its messages consistently show up. -------------------------------------------------------------------------------- 98c967e | brandon s allbery kf8nh | 2024-04-29 07:35:50 -0500 add mon-aura.cc to Android project …hopefully -------------------------------------------------------------------------------- f039ace | David Lawrence Ramsey | 2024-04-29 07:35:23 -0500 Add Zin vs. Nemelex temple overflow vault. To help integrate Nemelex vault-wise as a chaotic god, since there are Zin/Xom vaults and Zin/Makhleb vaults. This has (cosmetic) pink crystal walls, a talking Zin angel, and a talking goblin sharper worshipping Nemelex (only dialogue, no abilities). Note that the latter's dialogue provides minor spoilers as to what some cards do. -------------------------------------------------------------------------------- 7194ef5 | David Lawrence Ramsey | 2024-04-27 16:34:26 -0500 Add fish name to artefacts. -------------------------------------------------------------------------------- 232a111 | DracoOmega | 2024-04-27 19:00:44 -0230 Fix a rare Gozag crash When an enemy is killed in a way that causes their corpse to explode (eg: mindburst or iood) while worshipping Gozag, multiple piles of gold are scattered around the general area. The amount of gold in each pile is determined by randomly rounding 'total gold' / 'number of piles'. For medium-sized creatures specifically, if the player rolled the lowest possible amount of gold and the highest possible amount of chunks, it was possible for this to round down to 0 gold in a pile. Which was already specifically guarded against! Piles of 0 gold will not be placed by _explode_corpse. ...but _explode_corpse operates using a reference to the 'original' corpse and while place_monster_corpse attempts to destroy the corpse item after an explosion, destroy_item() specifically doesn't do anything to an item with a quantity of 0, so the original corpse (now gold) would remain with a quantity of 0. Mostly this was invisible, but upon leaving the current floor, attempting to save the present floor would trigger an assert for the 0-gold pile being invalid, causing this crash. Now just make sure that none of the piles ever has less than 0 gold in it. -------------------------------------------------------------------------------- f613fa2 | DracoOmega | 2024-04-26 21:57:17 -0230 Fix a crash with casting Metabolic Englaciation against the player Only player ghosts can do this presently, I believe? -------------------------------------------------------------------------------- 15cee8b | regret-index | 2024-04-26 20:35:11 -0230 Vault review, mostly for new monster / revisions * Abominations earlier than post-Lair have been tweaked down slightly, due to large abominations being capable of rolling demonic crawler levels of regeneration and small abominations being harder to escape from. Aside from a few vaults, this noticeably reduces the highest rolls of small abominations in gauntlets and slightly lowers large abominations in Gauntlets overall, while reducing their count a bit in the Abyssal Lair end. A few other uses of abominations are mildly tweaked otherwise. * Undying armouries get another few uses in extended. One or two now place in most of Cerebov's vaults, finally emphasizing the steel part of their Fire and Steel title beyond iron shots and red devil tridents by using the armoury weapon granting gimmick on balrugs. (Since Cerebov's already plenty scary, these sparing placements are decently far away from Cerebov themself when possible.) They also get a use in earth zigs (which helps them further differentiate from Dis floors by arming gargoyles and giants), plus a grated ziggurat pillar. * Spider rune vaults at the outliers of kill rates have been slightly tweaked up or down accordingly, and the _arachne_lair vault previously at an acceptable middle-of-the-pack position has been nudged upwards in jorogumo count to the moving out Arachne from Spider. * Ossuary killrate top and bottom ends have been also nudged correspondingly towards the center, and two of the current weakest ones (silent_tomb and city_of_the_dead) both get the fresh new marrowcuda option. -------------------------------------------------------------------------------- 2369512 | David Lawrence Ramsey | 2024-04-26 15:11:27 -0500 Add another pasta type to unrands. Also remove unneeded blank lines. -------------------------------------------------------------------------------- eaffa77 | DracoOmega | 2024-04-26 17:35:39 -0230 Don't let AF_SWARM trigger from attacking firewood (riverfiend) As much as a swarm of angry fish ghosts savaging a lone plant is hilarious to imagine, it's a little much to subject the player to in many circumstances. -------------------------------------------------------------------------------- e4ad002 | DracoOmega | 2024-04-26 16:43:43 -0230 Don't Bestow Arms to monsters wielding unrandarts regret-index plans to use them on Cerebov's level and it would be deeply silly to replace Cerebov's trademark sword with something else. But even in general, unrandarts are noteworthy enough not to overwrite with this effect. -------------------------------------------------------------------------------- 9cce121 | David Lawrence Ramsey | 2024-04-26 14:02:01 -0500 Fix capitalisation. -------------------------------------------------------------------------------- 0e4aabf | David Lawrence Ramsey | 2024-04-26 14:01:28 -0500 Fix spelling. -------------------------------------------------------------------------------- 52f7614 | DracoOmega | 2024-04-26 16:11:43 -0230 Make Cigotuvi's Monster's constriction less absurd This may have always been bizarrely high, but was a lot less visible before the recent-ish constriction changes that are more explicit about the damage it does - which is evidently a whopping 25-50 unavoidable damage *per turn*. Mutant beasts (which this is) use the same number as damage for all of their aux attacks, but the scale of damage done by a constriction attack really isn't on the same scale, so let's divide it a bit. (10-20 is still a decent bit) -------------------------------------------------------------------------------- 9de2d02 | David Lawrence Ramsey | 2024-04-26 08:20:58 -0500 Fix punctuation. -------------------------------------------------------------------------------- 55a6d9f | David Lawrence Ramsey | 2024-04-26 08:20:43 -0500 Fix typos. -------------------------------------------------------------------------------- b024fe6 | DracoOmega | 2024-04-26 02:58:12 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- cb48baa | DracoOmega | 2024-04-26 02:47:58 -0230 Fix accidentally using a removed ranged brand for Bestow Arms Oddly enough, this actually visually worked convincingly enough in testing that I didn't even notice >.> -------------------------------------------------------------------------------- 44a4d61 | DracoOmega | 2024-04-26 02:15:39 -0230 Fold Lorocyprocas into Hell Beasts and rename/tweak (regret-index) As per the previous commit, this removes loros and gives their antimagic attack to hell beasts, which are additionally renamed to 'sin beast' (it was always a little weird that something which commonly spawns in Pan but NOT in Hell was named 'hell beast') They have the same base damage as before, with antimagic on their bite attack. Their HD was raised from 7->12 (as this directly affects their antimagic strength) which is still a bit lower than loros, but they're much faster. Out of some concern that Geryon might be a little too oppressive for characters that aren't meaning to tackle the rest of Hell (since horn troves are fun and should be encouraged!), I reduced the summon cap on sin beasts from 8->5, and reduced their duration and his cast rate a little bit. A pure buff to evoking the Horn of Geryon itself also seems unlikely to be too good? We'll see how much any of that feels like a problem. -------------------------------------------------------------------------------- 5e5f045 | regret-index | 2024-04-26 02:15:38 -0230 Remove lorocyprocas from vaults and level generation Perma-invisible enemies need to be more threatening to work properly, and there's a surplus of tier-2 demons that have needed a little more power and interest for the indefinite lengths of Pan. This is in advance of their antimagic and palette both being merged into hell beasts, which will be elaborated upon in a later commit. Most uses looking for generic demons slightly re-weigh their demons depending on how many demons they're spawning, with larger counts getting a little bias away from tormentors and hellions in their tier but Pan, Abyss, and ghost vaults with large numbers of monsters rather late not bothering for such. (Pan and Abyss floor generation itself mostly leans on tier 2s in general, including future hell beasts.) Vaults looking for antimagic or invisibility themes have been adjusted to either use hell beasts (as they'll get antimagic later) or different adjascent themes entirely for the latter. -------------------------------------------------------------------------------- 27c0888 | DracoOmega | 2024-04-26 02:15:38 -0230 Exile Arachne from Spider, replace with a new formicid unique Since the introduction of jorogumos to Spider, Arachne's main gimmick has felt a little crowded out. They're perfectly good monsters, but she's more or less just a larger one that blinks, and it feels like she'd be more noteworthy if she was simply somewhere else, so let's move her. Arachne now comes with 2-3 orb spiders and can spawn in Vaults:1-4, Elf, and Depths:1 *only in games where Spider was not generated*. You either get joros or her, but not both. (Orb spider backup in open terrain also tends to make her ensnare gimmick more sharply threatening, which is sort of neat) Replacing her in Spider is a long-awaited formicid unique. Xak'krixis is an alchemist on expedition from an isolated formicid kingdom, studying the fauna of Spider. They cast venom bolt, ignite poison, and an improved version of fulminant prism which places two at once *and* has no friendly fire. A straight adaptation of the player spell wouldn't play very well, but multiple 'safe' bombs can make it less trivial for the player to simply ignore, while also not endangering the many bands in Spider. (The noise of them is even a danger of its own down there). Xak comes with a venom-branded two-hander and a shield (why have a formicid if they aren't going to use a shield with a two-hander, right?) and can also dig while moving - but *not* while wandering (to avoid some of the old boring beetle problem of loudly digging out a level whenever they'd gotten woken up). Mostly this means they'll only do it while actively pursuing the player, but also while running away (and possibly in some other situations). -------------------------------------------------------------------------------- c072c2f | DracoOmega | 2024-04-26 02:15:38 -0230 Remove a couple unused function definitions -------------------------------------------------------------------------------- 9a1d0e6 | DracoOmega | 2024-04-26 02:15:37 -0230 Add Undying Armouries, a Vaults out-of-depth monster (regret-index) These replace tentacled monstrosities from the Vaults spawn list entirely, reducing the number of different zones they appear in, while offering a new sort of threat that is a strong thematic fit with Vaults itself. Undying Armouries are a vortex of weapons, animated by a poltergeist formed from the souls of numerous smiths and weaponmasters. They have decent melee and two unique spells: Flashing Balestra is a mini iron shot, usable only from range, that spawns a short-lived dancing weapon near its target - as one of the souls in the maelstrom leaps out to duel with you. Bestow Arms temporarily grants copies of a random summoned weapon to 5-7 nearby allies. These tend to be top-tier items, with good brands and plusses, with a slight bias towards polearms, but also including launchers! This is a unique vector of enemy buff that still ties into existing game systems (and giving an entire band, say, speed longbows or vampiric glaives ought to be felt!) The implementation of this was tricky, and while I think I have caught and fixed most situations where this could devour their real weapon permanently, I'll be keeping my eye on it for other weirdness. -------------------------------------------------------------------------------- 5f1a5ef | DracoOmega | 2024-04-26 02:15:37 -0230 Replace Arcanist Force Lance with Searing Ray Since it was given a monster implementation, I thought this could be a fun spell to fight against sometimes. Force lance is used widely (and something else in Vaults uses them now, too!), and this feels like a natural fit, so let's try it. -------------------------------------------------------------------------------- 7b5b3b7 | DracoOmega | 2024-04-26 02:15:37 -0230 Slightly tweak early 5s Ufetubi were moved a bit deeper after they gained flanking, but have continued to be pretty harmless. Give them the tiniest damage buff and move them shallower again. Nudge shadow imps a bit shallower by the same amount. -------------------------------------------------------------------------------- 8286d04 | DracoOmega | 2024-04-26 02:15:37 -0230 Make xv less misleading about enemies with a regeneration buff This never got updated when Regeneration was buffed. (It's still SLIGHTLY misleading, due to fuzzed monster hp and non-random rounding, but should be a lot less so) -------------------------------------------------------------------------------- bf5259e | DracoOmega | 2024-04-26 02:15:36 -0230 Make abomination randomization more interesting and obvious (regret-index) Abominations' randomized stats were a sort of hidden detail that has increasingly not mattered (especially since their speed was made flat). But the concept of them being randomized amalamations of who-knows-what is solid flavor (and more interesting than them being vanilla melee monsters), so let's try to hilight their randomization in a more obvious way. Abominations now start with a single random buff out of: might, haste, or regeneration. This makes it very obvious to the player how a particular abomination is different from any other, while still keeping them fairly simple. Their AC/EV has been set to the average of their old values and their damage reduced slightly (haste/might versions will still hit harder than the old abominations did, but not by quite so much). I also took away no_regen from them while I was at it; not sure there's any good reason they still have it. Some early value uses of abominations will possibly need adjustment. -------------------------------------------------------------------------------- 3c4af0e | DracoOmega | 2024-04-26 02:15:36 -0230 Don't let !cancellation attempt to dispel aura effects It could technically remove torpor snail slow, but then it would immediately be reapplied, which is more or less doing nothing. To avoid this being unclear to players, don't let it be drunk to remove effects that will immediately be reapplied. -------------------------------------------------------------------------------- 6ba1bb0 | DracoOmega | 2024-04-26 02:15:36 -0230 Make Ophans Mark the player as long as they remain in LoS (regret-index) I'm not exactly certain what monster balance for many holies is even supposed to be at this point in the game, but ophans currently don't do very much that effectively threatens the player, and this perhaps might (as well as being somewhat interesting and thematically appropriate). -------------------------------------------------------------------------------- 0aa0afc | DracoOmega | 2024-04-26 02:15:35 -0230 Add marrowcudas to pre-Lair D These were intended as low-level Yred fodder (who is still using necrophages for early Black Torch summons, despite those not even spawning anywhere anymore) as well as an earlygame introduction to a mechanic used on a much latergame monster, though *that* monster isn't implemented yet and it's possible its design will end up changing before it is. Nevertheless, this is a tiny bit of additional variety, another monster that could be used as a boss in a Sewer or Ossuary, and provides an earlygame summoner (of which there are very few which aren't uniques) and very strongly hilights the 'kill the summoner first' approach. They are a fast, relatively low-damage, flying skeletal enemy with AF_SWARM, which summons an additional copy of *itself* whenever it deals damage to a target. (And then those copies can summon other copies, and so forth, up to a cap of 8). It can block off retreat in corridors and quickly create overwhelming numbers if ignored, but dies fairly easily when focused directly. They spawn (relatively rarely) at a slightly shallower depth than Wights, as well as sometimes in the early water table (instead of 100% electric eels all the time.) I'm still uncertain if their placement is too close to wights and would be better at some other depth, with other stats. I'll reassess this after some playtesting. -------------------------------------------------------------------------------- 9bf8402 | DracoOmega | 2024-04-26 02:15:35 -0230 Don't make stationary monsters immune to Slowing There's no particularly obvious reason why being unable to move should make one immune to their ACTIONS being slowed. This doesn't affect terribly many things, since most stationary enemies are already will-immune and/or have rC+, but does let chaos brand slow work on statues and metabolic englaciation hit oklobs, among a couple other things. -------------------------------------------------------------------------------- 096cba5 | DracoOmega | 2024-04-26 02:15:34 -0230 Add Polterguardians These are support allies, intended for Vaults, which give passive repel missiles to all nearby allies (and also cast force lance so that they're not utterly useless on their own). They have a modest chance to appear in Vault Warden or Preserver bands, and can sometimes spawn with 1-2 random single enemies (much like Rakshasa can). I'm not 100% happy with their solo spellset, outside of the aura effect, but while metal splinters is the most thematic attack spell for them to have, it also does the least against charactes who are already the least likely to care about the repel missile effect, which seems undesireable. -------------------------------------------------------------------------------- d62b0c6 | DracoOmega | 2024-04-26 02:15:34 -0230 Don't let tracers think Might Other benefits monsters without attacks The buff beam wouldn't actually *apply* Might, but monsters would still think that they could, resulting in them casting a spell with no visible effect. -------------------------------------------------------------------------------- b277726 | DracoOmega | 2024-04-26 02:15:34 -0230 Make Aura of Brilliance no longer an aura In theory, this spell was supposed to continuously grant brilliance to allies near the caster, aura-style. In practice, it was kind of broken. The code looks like it was *attempting* to renew the brilliance duration each turn, but did not actually do so (reapplying full duration only after it completely wore off of someone). Also, each application of brilliance lasted approximately equally long (give or take randomization) as the entire aura itself. So it was very common for the 'aura' to run out before the first application of a buff did, and never extend its duration at all. And then sometimes, it would last *just* long enough for the buff to wear out and reapply it, effectively doubling the duration. To make matters more confusing, the aura would immediately turn off if ever a single turn passed without a buffable ally being in LoS of the caster. (And there was no icon indicating an aura was even active...) It would be possible to make it function more like an aura, but I'm not sure there's a great mechanical benefit to doing it in this case. So instead, just make it a one-time AoE buff (with about 75% longer duration than it has at present) and remove the other supporting code. -------------------------------------------------------------------------------- 183d00d | DracoOmega | 2024-04-26 02:15:34 -0230 Refactor / unify how monster passive enchantment auras work Currently this combines torpor snail slow aura and martyred shade injury bond aura into a single new system (which will make it very simple to add similar effects with less duplicated code). Functional changes: -Torpor snails now (deliberately) work through grates/statues. At least one vault already assumed that they did, and it doesn't feel like there's a good thematic or mechanical reason for them not to -Martyed shade's injury bond now wears off if they spend more than a couple turns out of LoS of what they're protecting (previously, LoS only mattered to apply, and it would otherwise never wear off). -Shades now apply injury bond each turn without needing a visible foe nearby. (The old behavior could sometimes lead to confusing situations where they wouldn't bond an ally for no obvious reason) It is *possible* there are some minor changes with timings of when effects are applied or removed, but I think those should be the main effects. -------------------------------------------------------------------------------- fa1cc04 | David Lawrence Ramsey | 2024-04-23 19:21:40 -0500 Fix punctuation. -------------------------------------------------------------------------------- 15e7c00 | David Lawrence Ramsey | 2024-04-23 14:25:24 -0500 Fix the build? -------------------------------------------------------------------------------- cfd66e3 | David Lawrence Ramsey | 2024-04-23 13:52:50 -0500 Make class-specific orc names work with apostles. Orc apostles now have their own name keys based on class. So priestly apostles can now be named Judas, just as friendly orc priests used to be. Accordingly, add names for warrior and wizard apostles. -------------------------------------------------------------------------------- b3226c2 | David Lawrence Ramsey | 2024-04-22 16:21:49 -0500 Make god protection work with cleaving/reaching. So that you can no longer attack Fedhas and Jiyva allies via those methods. -------------------------------------------------------------------------------- b4a5920 | David Lawrence Ramsey | 2024-04-21 18:10:10 -0500 Fix Hurl Torchlight description. It damages holy beings, not unholy beings. -------------------------------------------------------------------------------- abb26cb | David Lawrence Ramsey | 2024-04-21 14:53:08 -0500 Fix spelling. -------------------------------------------------------------------------------- 5bea24b | Nicholas Feinberg | 2024-04-21 12:48:42 -0700 Don't allow rain to create deep water anywhere Pretty silly and almost impossible to trigger in practice. I like silly, but there's no sense keeping code for something no one will ever see. -------------------------------------------------------------------------------- a3b3661 | Nicholas Feinberg | 2024-04-21 12:39:00 -0700 Allow rain to create deep water in sprint Now that it's temporary. Reverts 57db23c628d709e5e6e635634631c1f7cdf624bc. -------------------------------------------------------------------------------- 7117bd9 | Nicholas Feinberg | 2024-04-21 10:35:06 -0700 Fix a silly use of mon_is_object -------------------------------------------------------------------------------- 1f0809d | David Lawrence Ramsey | 2024-04-21 12:18:39 -0500 Fix now-inaccurate comment. Since Lugonu hasn't had Bend Space for awhile. -------------------------------------------------------------------------------- d272cc4 | David Lawrence Ramsey | 2024-04-21 12:17:21 -0500 Fix corpse naming of the mad acolyte of Lugonu. So that it leaves a "human corpse", instead of a "human corpse of mad acolyte of Lugonu". -------------------------------------------------------------------------------- d927fbf | David Lawrence Ramsey | 2024-04-21 09:25:37 -0500 Add another colour for Blork's dialogue. -------------------------------------------------------------------------------- d922fe9 | David Lawrence Ramsey | 2024-04-21 08:14:46 -0500 Properly apostrophise rimeblight message. -------------------------------------------------------------------------------- a09f62f | DracoOmega | 2024-04-21 01:44:16 -0230 Fix missing Recall Apostle description (due to typo) -------------------------------------------------------------------------------- 35e66b3 | David Lawrence Ramsey | 2024-04-20 19:38:06 -0500 Move old box of beasts tile to UNUSED. -------------------------------------------------------------------------------- b8cfe57 | DracoOmega | 2024-04-20 18:04:12 -0230 New tiles for gravitambourine / box of beasts by meckryl -------------------------------------------------------------------------------- e909cc9 | NormalPerson7 | 2024-04-20 11:11:53 -0500 Fix a few things about wanderer - Troll, oni and spriggan wanderers now actually get armour when they roll armour skill (acid dragon scales for good quality, otherwise an aux slot) as originally intended. They'll also get armour skill if they start with acid dragon scales. - Ghoul wanderers can now get potions of attraction like every other species - Formicid wanderers can now start with a quarterstaff or a ranged weapon and a shield - Starting wands of warping now get 2-4 charges like iceblast/roots instead of getting 15 Also, to incentivise using starting unarmed combat skill when wanderers get it, make wanderers that start with unarmed skill not get the default club/dagger if they weren't assigned another weapon. -------------------------------------------------------------------------------- 1b2d3e2 | Kyle Rawlins | 2024-04-20 12:10:51 -0400 fix some lua docstrings (FBV) (Sadly, I still don't have the ability to actually rebuild the docs) -------------------------------------------------------------------------------- 384da2c | David Lawrence Ramsey | 2024-04-20 00:42:06 -0500 Fix typo. -------------------------------------------------------------------------------- f09306a | advil | 2024-04-19 20:11:23 -0400 fix: typo -------------------------------------------------------------------------------- 345e16b | advil | 2024-04-19 20:10:04 -0400 fix: comment an obscure number (hellmonk) -------------------------------------------------------------------------------- b208e08 | David Lawrence Ramsey | 2024-04-19 17:57:27 -0500 Mark the faith mutation as good instead of bad. Since it gives no penalties, and is exclusive to mummies anyway. -------------------------------------------------------------------------------- ee455d8 | David Lawrence Ramsey | 2024-04-19 17:50:40 -0500 Fix spelling. -------------------------------------------------------------------------------- 7161d33 | David Lawrence Ramsey | 2024-04-19 09:28:38 -0500 Add Rimeblight to Kiku gift list (NormalPerson7). -------------------------------------------------------------------------------- 85d4e5b | David Lawrence Ramsey | 2024-04-17 18:57:12 -0500 Add a time name to artefacts. -------------------------------------------------------------------------------- 881aff7 | David Lawrence Ramsey | 2024-04-17 18:48:09 -0500 Set killer properly for Ely wrath heals (oops). -------------------------------------------------------------------------------- 4cb0429 | David Lawrence Ramsey | 2024-04-17 18:42:09 -0500 Alert stabbed monsters Ely wrath heals (#3759). Instead of letting them possibly stay unaware. Closes #3759. -------------------------------------------------------------------------------- c73bb6f | DracoOmega | 2024-04-17 20:39:36 -0230 Let Gavotte ignore -move when moving the player again Tragically, I forgot that you could simply cast Momentum Strike to reliably cause the status to yourself. Letting formicids or !lig work differently is one thing, but I think that too easily gives Gavotte modality of 'Do you want to move yourself or not?' which I don't want to introduce to the spell. (On reflection, the monster equivalent of -move didn't stop them from being flung around anyway.) -------------------------------------------------------------------------------- b20137a | DracoOmega | 2024-04-17 20:11:32 -0230 Don't double-miscast when miscasting Seismic Shockwave (NormalPerson7) This was a consequence of how the second spell was embedded inside the cast code of the first. Instead, directly switch which spell is being cast inside your_spells, depending on the cannon's mode. This feels a little ugly, but is at least clear in what it's doing and seems to solve the original problem without creating new ones. -------------------------------------------------------------------------------- 80a8511 | DracoOmega | 2024-04-17 20:11:32 -0230 Make -move and stasis block the self-move portion of Gavotte You already can't move stationary enemies this way, so it feels like it should work the same way for players. But unlike many transloctions that move the player, you're clearly affecting the *general area* and not specifically yourself, so it seems intuitive that you can still hurl enemies around even if you remain in the same place. This does mean that formicids can do things with it that other species cannot, but it's not clear to me that the advantage of 'can toss enemies out of your LoS sometimes' outweighs the downside of 'can't ever use it to rapidly reposition yourself', and formicids aren't exactly a concerningly powerful species at present. We'll see if that holds up in practice. (Deliberately miscasting translocation spells to get this property on other species seems almost certainly worse to attempt than doing something else with your time, and if someone wants to use !lig to take advantage of this, then they can be my guest) -------------------------------------------------------------------------------- 95e3b1b | DracoOmega | 2024-04-17 20:11:32 -0230 Don't poof summons when you Gavotte without hurting them (Drazool) -------------------------------------------------------------------------------- 61e5eb5 | David Lawrence Ramsey | 2024-04-17 16:48:02 -0500 Adjust Donald's Yred dialogue. Add one new line, and adjust another one to account for spectral things. -------------------------------------------------------------------------------- b2c533c | David Lawrence Ramsey | 2024-04-17 16:38:02 -0500 Fix spelling. Ensure "cerulean" is spelled consistently, betwen the imp and the Blork colour, and resort accordingly. -------------------------------------------------------------------------------- 1450d63 | DracoOmega | 2024-04-17 17:42:28 -0230 Don't let allies reduce damage enemies take from Ozocubu's Refrigeration It always felt both a flavor mismatch *and* unfortunate mechanics that simulaca (which are immune to Refrigeration) still had anti-synergy with it by reducing the damage enemies would take from it. Rather than specifically exclude icy monsters from this calculation (and invite confusion/debate about what is sufficiently un-warm), only give the huddle bonus from monsters *allied* with the target taking damage. So massed enemies take the same reduced damage as now, but your summons will no longer deign to give them a friendly cuddle for warmth. This effectively buffs both spells a little, but Refridgeration doesn't seem so strong these days that it can't handle that, and it feels like a cute and intuitive synergy. -------------------------------------------------------------------------------- 23bc409 | DracoOmega | 2024-04-17 17:42:28 -0230 Tweak Fulsome Fusillade animation Explosions will generally come out faster now. Hopefully will still be adequately readable. Also properly respect the no-animation setting. -------------------------------------------------------------------------------- 222fab4 | DracoOmega | 2024-04-17 17:42:28 -0230 Fix Fusillade maintaince cost not working properly for djinn (ragingrage) The status light would be dimmed (like they could not afford to pay) at all times, but it didn't actually cost them any hp to maintain at all. -------------------------------------------------------------------------------- 999f1de | DracoOmega | 2024-04-17 17:42:28 -0230 Fix Fusillade usability tracer caring about line-of-fire (ragingrage) The spell itself did not, but you had to force-cast it if anything was in the way. -------------------------------------------------------------------------------- 9044fd6 | DracoOmega | 2024-04-17 17:42:28 -0230 Don't let the player cast Seismic Cannonade while worshipping Okawaru Even if you lose out on such wonderful messages like "The seismic cannon feels only hate for you! x3" -------------------------------------------------------------------------------- d60f5e5 | Nicholas Feinberg | 2024-04-17 09:05:20 -0700 Fix rimeblight double-kills (Ge0ff) Stop killing dead monsters! Hopefully. (Untested.) -------------------------------------------------------------------------------- 3814254 | David Lawrence Ramsey | 2024-04-16 16:36:48 -0500 Add two nouns and one modifier to gizmos. -------------------------------------------------------------------------------- f626242 | mumra | 2024-04-16 21:22:36 +0100 Fix more rare caps issues in speech Snorg, Thermic Dynamos, Norris, and cornered monsters. -------------------------------------------------------------------------------- 2842808 | DracoOmega | 2024-04-16 16:26:32 -0230 Improve seismic cannon shot damage at higher spellpower a little Earlier versions of this spell did too much upfront damage, and while I was repeatedly dialing this back, I left it so that spellpower did very little to actually improve them. This should raise their damage at higher power, but not affect it very much at lower power. (Damage may still warrant adjustment in *general*, but I'll wait on more playtesting feedback for that) -------------------------------------------------------------------------------- 1362d29 | DracoOmega | 2024-04-16 16:26:32 -0230 Don't turn seismic cannons hostile when you hit them (ge0ff) They're mindless objects it seems like they should obey the same rules as spellforged servitor here. (This had the additional negative effect that the other cannons could charge themselves up by firing at the now-hostile cannon...) -------------------------------------------------------------------------------- 0afd68c | David Lawrence Ramsey | 2024-04-16 12:33:11 -0500 Fix typo. -------------------------------------------------------------------------------- 871480c | David Lawrence Ramsey | 2024-04-16 10:21:03 -0500 Fix capitalisation in monster message (Ge0ff). -------------------------------------------------------------------------------- d68e888 | David Lawrence Ramsey | 2024-04-16 09:43:03 -0500 Count foul stench as a retaliatory DS mutation. So the player can't get it along with spiny or foul shadow. -------------------------------------------------------------------------------- 5080204 | David Lawrence Ramsey | 2024-04-16 00:17:45 -0500 Add abandoned chaos spawn temple overflow vault. This features altars to all three chaotic gods (now that Nemelex is considered chaotic), a walled-off chaos spawn (cf. the walled-off angel in a Zin overflow vault), a damaged chaos weapon for flavour, and chaotic decor such as (cosmetic) orange crystal walls. -------------------------------------------------------------------------------- 002fc65 | DracoOmega | 2024-04-15 23:16:14 -0230 Don't let Fusillade hit targets through glass (mumra) Oops. -------------------------------------------------------------------------------- fd48ac3 | David Lawrence Ramsey | 2024-04-15 20:31:21 -0500 Make Dissolution/tormentor rare speech be rare. -------------------------------------------------------------------------------- 82205d5 | mumra | 2024-04-15 20:30:22 -0500 Make Killer Klown rare speech actually rare -------------------------------------------------------------------------------- 6b026da | David Lawrence Ramsey | 2024-04-15 17:59:22 -0500 Fix spellbook name typo. -------------------------------------------------------------------------------- a1d19d5 | David Lawrence Ramsey | 2024-04-15 17:52:14 -0500 Fix missorted Blork colour entry. -------------------------------------------------------------------------------- 1366db7 | David Lawrence Ramsey | 2024-04-15 17:41:39 -0500 Fix typos, wording, and spelling. -------------------------------------------------------------------------------- b27d4a0 | DracoOmega | 2024-04-15 19:52:02 -0230 Shuffle new spells into spellbooks, add 3 new books in the process -------------------------------------------------------------------------------- 4722b9c | DracoOmega | 2024-04-15 19:52:02 -0230 Some tweaks to auto-aiming to make Magnavolt work sanely with autofight This repurposes the still-implemented but currently unused prefer_farthest member of direction_chooser and adds spflag::prefer_farthest to let spells use this (currently just Magnavolt). It also fixes some bugs I discovered with its implementation in the process, like how it choose the 'farthest' target by starting with the default closest target and then cycling backwards once so that it would 'wrap around' to the farthest. Which didn't actually work properly in many cases where the default target *wasn't* the closest to start with. Additionally, this adds a preferred_aim member to targeter (which normally defaults to returning valid_aim) for situations where it is clear that a certain valid target would not be what the player would *actually* want to aim at in the vast majority of cases. Default target selection is now done in two passes - looking for a preferred_aim first, and then picking a valid_aim second if no preferred_aim is found. This isn't intended to use any complex heuristics to guide the player, but for simple situations where 'closest valid target' doesn't actually represent good default behaviour. There may be other spells for which it makes sense to use this, but for now it's also just used by Magnavolt (otherwise, ranged autofight uses the spell so badly that you essentially could only ever manually cast it) For the record: the deep guts of direction_chooser are scary and deeply unpleasant to work with. I am not 100% confident that what I have done here won't have some undesired side-effect, though in basic testing other things seem to still work properly. Fingers crossed. (I also wasn't thilled to add a member to targeter for just one spell here, but wasn't sure of a cleaner way to accomplish the goal with what I was working with.) -------------------------------------------------------------------------------- a627dd3 | DracoOmega | 2024-04-15 19:50:45 -0230 Magnavolt (level 7 Air/Earth spell) An attempt to fill out more cross-over spells, since I think those can present interesting skilling decisions, as well as continuing to add more options for high-level casters in general. Magnavolt is a smite-targeted spell that coats a target with a thin layer of magnetised metal and then fires a bolt of electricity at every visible enemy that is magnetised in this way. (Meaning that the first time you cast it, it will fire one bolt, but repeatedly casting it will fire 2, 3, 4, and so forth). The magnetised status is short-lived, reduces the target's EV to 0, and also causes them to leave behind an electroferric vortex for a brief while after death (which is stationary, but perma-magnetised, so that it can continue to serve as an anchor for the spell if the initial target immediately dies, which helps to keep the ramp-up more predictable in situations where the caster is actually successfully killing things). By blending the two opposing schools together, this spell offers Air more controllable (and less unsafe) long-range damage at this level range, while giving earth better AoE (in exchange for it being more resistable) with a simple unique twist. Ideally this tempts some people to pivot in ways that previously weren't as rewarding, while offering a new simple damage option for high level mages. -------------------------------------------------------------------------------- 2429629 | DracoOmega | 2024-04-15 19:50:45 -0230 Seismic Cannonade (level 7 Alchemy/Earth) Another attempt to fill in some high-level alchemy options of a very different style than Fulsome Fusillade, this spell consturcts 3 seismic cannons near the caster which are stationary turrets that fire medium-range projectiles each turn and have a built in 'super' they can charge up for. The cannons are initially created with 1/2 of their max hp, but heal a small amount with each shot they fire (as they dig up and incorporate more material from the earth into their frames). Once they reach full hp, the caster can recast the spell to unleash a seismic shockwave that does significant area damage to a targeted location and also destroys the remaining cannons in the process. This is intended to lean into alchemy's thematics of 'creation' (as Fusillade leaned into 'chemical reactions'), while providing a high-level ally spell that feels distinct from, say, a Spellforged Servitor using bombard or crystal spear (which Earth could already access at this level with a splash of a secondary school). By contrast, cannonade is noisier, less flexible with positioning, and requires some defending, but can switch between wide-scale AoE and single-target damage on the fly. (It was also an attempt to make another 'modal' ally spell after the positive response to revamped Call Canine Familiar). As usual, all of the various numbers involved in this are still provisional and may need adjusting. (Also: the cannon tile is very sad; I apologise.) -------------------------------------------------------------------------------- 7e35013 | DracoOmega | 2024-04-15 19:50:45 -0230 Rimeblight: New Level 7 Ice/Necromancy spell A beam-targeted irresistable enchantment that inflicts Rimeblight upon a living/holy/demonic creature. The creature will take AC-ignoring cold damage over several turns as ice devours them from the inside out, and also periodically explode in a flurry of ice shards that damages nearby hostiles (but not the player or their allies!) and can spread the disease to succeptible creatures it hits. Creatures with rimeblight on them that drop below 20% hp (ie: the 'almost dead' threshold) will instantly die and be replaced with a short-lived pillar of rime. (Purely decorative, but the flavor is too good to pass up here, in my opinion) Beyond the neat flavour and unusual spreading mechanics, this provides a high level offensive necromancy option that isn't ally-based (and also a little more variety in high-level ice magic in general). -------------------------------------------------------------------------------- 697f7be | DracoOmega | 2024-04-15 19:50:45 -0230 Fulsome Fusillade: level 8 Conjurations/Alchemy An attempt at giving alchemy a high-level blasty spell that feels sufficiently distinct from those which already exist, while also feeling appropriate to the thematic spirit of the school. Fulsome Fusillade gives the player a status which causes beakers of random reagents to rain on nearby targets for each of the next 5 turns, causing 3x3 explosion of either fire, cold, electricity, or poison arrow aimed on top of 3 random enemies. But importantly, if any of those explosions *overlap*, the area of overlap is instead hit by a volatile alchemical reaction that deals a larger amount of non-elemental damage and has a chance to apply a random debuff. In effect, one can consider it somewhere between Polar Vortex and Ignition; it does mp-efficient damage over time but benefits greatly from targets being adjacent to each other. It can work in corridors and hit enemies from a far range, but becomes far less useful against either single targets OR a very large number of targets - being ideal against a single clustered group that will focus the random hits into a small area. Many aspects of this spell are still tentative and subject to further adjustment as playtesting happens. -------------------------------------------------------------------------------- 8c197d9 | David Lawrence Ramsey | 2024-04-15 16:10:05 -0500 Add one more colour for Blork's dialogue. Technically, "sorcerer's violet" is another name for the periwinkle flower, and not the name of a colour, but I'm using it as the latter, at PleasingFungus' suggestion. -------------------------------------------------------------------------------- f7567ba | David Lawrence Ramsey | 2024-04-15 15:56:25 -0500 Add more misc colours for Blork dialogue. -------------------------------------------------------------------------------- 40ac7a0 | David Lawrence Ramsey | 2024-04-14 13:37:02 -0500 Clarify foul flame brand description. Like holy wrath, it has to get through armour to do extra damage. -------------------------------------------------------------------------------- d7206a2 | David Lawrence Ramsey | 2024-04-14 11:44:53 -0500 Fix wording. -------------------------------------------------------------------------------- ade3313 | David Lawrence Ramsey | 2024-04-14 09:50:15 -0500 Remove remnants of stationary boulders. Since 03d5c24, decorative piles of debris are used for decoration instead of stationary boulders, so boulders should no longer block travel or count as firewood. This reverts commit aa138b54abb418331c72e2e0836ebba38158137b. This partially reverts d9500d9d985ea3c7500565b73bca617f04e8edfb. -------------------------------------------------------------------------------- 6cb2a80 | David Lawrence Ramsey | 2024-04-14 08:50:38 -0500 Allow wanderers with shapeshifting skill. These start with either a beast or a flux talisman. Note that, unlike shapeshifters, they don't start in shapeshifted form. They won't have the skill for flux talismans, and starting in beast form only for beast talismans seems odd, given that their other equipment could include things melded under beast form. (Assume the difference is because they didn't go to Official Shapeshifter School.) -------------------------------------------------------------------------------- 5a1759d | NormalPerson7 | 2024-04-14 08:50:23 -0500 Fix wanderer evoker starts from allowing duplicate evokers Previously, if your wanderer rolled a misc evoker, you could still get the same misc evoker generate in your game. Since they're meant to essentially be unrands, fix this. [Sidenote: misc evokers are generally pretty unbalanced for starting equipment. The lightning rod in particular is insanely strong, with 4 charges of (2+)d15 unavoidable lightning damage. Some rebalancing may be desirable in future.] -------------------------------------------------------------------------------- a8fa363 | David Lawrence Ramsey | 2024-04-13 22:31:19 -0500 Fix wording. -------------------------------------------------------------------------------- 5467873 | Nicholas Feinberg | 2024-04-13 11:26:30 -0700 Fix: destroy the power of imagination (CuriousUB) Avoid taking the square root of a negative number when calculating GDR. The results could be dangerously complex. -------------------------------------------------------------------------------- 5a2cda0 | David Lawrence Ramsey | 2024-04-12 11:48:31 -0500 Add blank line. -------------------------------------------------------------------------------- 3b45f6b | David Lawrence Ramsey | 2024-04-12 11:48:10 -0500 Add another Xom esteem entry to artefacts. -------------------------------------------------------------------------------- 5c35ed9 | David Lawrence Ramsey | 2024-04-12 09:21:25 -0500 Add another unlikely hybrid to artefacts. -------------------------------------------------------------------------------- 1cae6b7 | David Lawrence Ramsey | 2024-04-12 00:10:08 -0500 Fix spelling. -------------------------------------------------------------------------------- 1d8594b | David Lawrence Ramsey | 2024-04-11 22:11:21 -0500 Fix spacing. -------------------------------------------------------------------------------- b82d5c5 | David Lawrence Ramsey | 2024-04-11 22:11:01 -0500 Add more modern mythical animals to artefacts. -------------------------------------------------------------------------------- 8b09de8 | David Lawrence Ramsey | 2024-04-11 21:59:01 -0500 Fix typo. -------------------------------------------------------------------------------- f9495cf | Nicholas Feinberg | 2024-04-11 18:24:04 -0700 Add meckryl to the CREDITS Note that they have assented to use DCSS's CC0 license for their art. (That is, for the tile in the preceding commit, Yred's Recall icon.) -------------------------------------------------------------------------------- f54f9d2 | Nicholas Feinberg | 2024-04-11 18:16:44 -0700 New Yred Recall tile (meckryl) A truly gripping portrayal... -------------------------------------------------------------------------------- a7055e1 | Nicholas Feinberg | 2024-04-11 18:16:44 -0700 Don't let broodmothers abjure (hellmonk) Copy-paste error. Possible that 'summon spiders not abjuring' should be a property of the monster, not of the spell? Probably we'd want a hypothetical intelligent summon spider caster to abjure? -------------------------------------------------------------------------------- 04a7ad8 | DracoOmega | 2024-04-11 01:44:34 -0230 Fix various bad interactions between Gavotte and allies (RBrandon) Gavotte would count as attacking an ally (for penance purposes) even if that ally didn't actually hit anything. Moreover, there was no proper warning for casting Gavotte in ways that WOULD result in hurting allies. (And lastly, the message ordering for penance via Gavotte was mildly bad, with the player feeling guilty before anything actually hit anything else.) These should hopefully now all be fixed. -------------------------------------------------------------------------------- eafeab6 | David Lawrence Ramsey | 2024-04-10 19:28:01 -0500 Give unrand amulet of invisibility its own tile. It now uses a palette-adjusted version of the amulet of Cekugob tile, instead of the actual amulet of Cekugob tile. -------------------------------------------------------------------------------- cc1024d | David Lawrence Ramsey | 2024-04-10 17:08:00 -0500 Fix misspelled amulet type in tiles. -------------------------------------------------------------------------------- 0f22ef8 | David Lawrence Ramsey | 2024-04-09 10:49:03 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- ff2ca24 | David Lawrence Ramsey | 2024-04-09 10:48:44 -0500 Revert "Musical instruments shouldn't work silenced" This reverts commit 7506e133619c5ed742734399c36a65b1e3989442. -------------------------------------------------------------------------------- 093061d | David Lawrence Ramsey | 2024-04-09 09:37:41 -0500 Remove unneeded space. -------------------------------------------------------------------------------- 7506e13 | mumra | 2024-04-09 09:37:17 -0500 Musical instruments shouldn't work silenced While it could possibly be argued that it has some translocational way to make noise even in a silence field, it seems more logical that a silenced musical instrument should actually stop functioning. -------------------------------------------------------------------------------- 9e1d0c6 | mumra | 2024-04-09 09:37:17 -0500 Instruments shouldn't jingle when silenced Also removed a couple of errant references to Gravitas. -------------------------------------------------------------------------------- 739538a | David Lawrence Ramsey | 2024-04-06 21:35:00 -0500 Fix comment. -------------------------------------------------------------------------------- 30c33eb | David Lawrence Ramsey | 2024-04-06 21:34:04 -0500 Add a gizmo adjective and noun. -------------------------------------------------------------------------------- 4a80058 | Medrano83 | 2024-04-06 20:45:19 -0500 Fix the description of walls with unseen changes (take two) Temporary terrain changes produced by the summon forest spell can affect dungeon features outside of the player's LOS. Those features lose the flavour when described or if the dungeon view is reloaded. The description is also wrong for the summoned trees after the spell finished. The first version of the patch had to be reverted because it crashed on some vaults with loot on top of custom floor. -------------------------------------------------------------------------------- d49a5c6 | Nicholas Feinberg | 2024-04-06 16:22:20 -0700 Fix a confusing message (Silurio) -------------------------------------------------------------------------------- c671339 | David Lawrence Ramsey | 2024-04-05 17:09:37 -0500 Fix info leak w/unID'd shop artefacts (#3756). In antique shops, artefact weapons and armour wouldn't be identified, but would still hint at their enchantments through their descriptions if you were a Mountain Dwarf. Fix this by describing such artefacts just as "ancient artefacts" if you don't know their enchantments. Closes #3756. -------------------------------------------------------------------------------- 8e5f33b | Kyle Rawlins | 2024-04-05 16:46:38 -0400 fix: sanitize sanity check -------------------------------------------------------------------------------- 8f8f606 | Kyle Rawlins | 2024-04-05 16:44:39 -0400 fix: further tweaks to webtiles lazy image loading In testing, the first attempt didn't look very good on a live server, because the image load was very visible. This commit changes the approach to randomly select and ensure loading for an image every time a logged-in player enters the lobby. Like the prior attempt, it forces loading by removing the lazy attribute; as the comment notes, I'm not sure the standards require a browser to react to this, but they do seem to in practice. -------------------------------------------------------------------------------- ab96632 | David Lawrence Ramsey | 2024-04-05 14:02:07 -0500 Fix foul flame colour in monster info bot. It was changed from yellow to lightmagenta in one place, but not the other. -------------------------------------------------------------------------------- 2ec9e35 | David Lawrence Ramsey | 2024-04-05 13:44:59 -0500 Fix underline. -------------------------------------------------------------------------------- d9e1bd7 | David Lawrence Ramsey | 2024-04-05 09:54:16 -0500 Adjust a comment. -------------------------------------------------------------------------------- 36d3288 | Monkooky | 2024-04-05 09:53:43 -0500 Remove unused areaprops -------------------------------------------------------------------------------- b4fc452 | Kyle Rawlins | 2024-04-05 09:10:11 -0400 fix: lazy load webtiles title images (mumra, ge0ff) Over time we've accumulated more and more of these, and since they are loaded from html, this has built up initial webtiles load time. There's really no need to frontload them, the way they are used. This commit uses a relatively modern but nowadays widely available lazy loading attribute to defer loading. In order to actually sequence the image load of a non-cached image before the tilesheets, I did need to manually remove the attribute still. Tested on firefox/chrome mac. -------------------------------------------------------------------------------- 99e313a | Kyle Rawlins | 2024-04-05 09:10:10 -0400 fix: disable requirejs timeout altogether (mumra, ge0ff) The default value for this timeout is 7s. Since tilesheets are sequenced before js modules in client loading (because they are loading from html), on a slow connection this timeout can be hit for non-cached tilesheets. I didn't find a reasonable version-independent way to defer tilesheet loading without a lot of refactoring, so instead, just disable the requirejs timeout. It would be possible to set this to a large value, but from the user's perspective, since we already have a loading screen, there's no real difference. It's just a matter of whether the errors show up in the developer console or not, but the hang-on-load behavior is the same either way. I also couldn't see any value in making a user-facing timeout error on the load screen. So, this commit takes by far the simplest approach and just disables the timeout. For reference, in 3G throttling I was seeing 40-70s load times, and in 4G throttling this can go up to 30. I'm not sure we are trying to accommodate 3G, but 4G might be reflective of bad connections we would want to try to accommodate. -------------------------------------------------------------------------------- 30fb1b0 | DracoOmega | 2024-04-04 22:34:18 -0230 Don't let Coglins equip jewellery when polymorphed (ragingrage) -------------------------------------------------------------------------------- eb5ba95 | Kyle Rawlins | 2024-04-04 08:32:47 -0400 build: fix macos ci This commit attempts to make the macos CI workaround robust for all scenarios I have seen, and clearly document how it works. -------------------------------------------------------------------------------- 7811c86 | DracoOmega | 2024-04-03 18:55:00 -0230 Don't let bound or constricted monsters follow the player through stairs The constriction interaction was even more weirdly buggy, as they could remain constricted on the other side of the stairs, even if the constrictor themselves was left behind on the previous floor. (Note: things the player is physically constricting will still follow you, as the very act of taking the stairs first releases them) -------------------------------------------------------------------------------- 90b412c | DracoOmega | 2024-04-03 18:55:00 -0230 Prompt the player before Piledriving into an ally (Monkooky) You already couldn't use a friendly as the main target, but it was possible to slam an enemy *into* a friendly without warning. Now the player is warned properly. -------------------------------------------------------------------------------- 686ce31 | DracoOmega | 2024-04-03 18:55:00 -0230 Make Gell's Gravitambourine a little noisier (ge0ff) Given that it's intrinsically music-based, possible this feels a little better than it being marked as 'quiet' if you examine it? (The exact amount of noise here is basically arbitrary) -------------------------------------------------------------------------------- c89641f | NormalPerson7 | 2024-04-03 23:53:14 +0300 Don't show MPRegen line on % screen for djinn -------------------------------------------------------------------------------- e5cd51f | wheals | 2024-04-03 23:51:52 +0300 Fix red draconians in dragon form having two breath abilities (#3750) Fixes #3750 -------------------------------------------------------------------------------- f85d74f | David Lawrence Ramsey | 2024-04-02 20:00:54 -0500 Ban Zin's artefacts from having the chaos brand. -------------------------------------------------------------------------------- 40b700c | David Lawrence Ramsey | 2024-04-02 19:41:42 -0500 Limit Ignis' artefact weapons to flaming brand. -------------------------------------------------------------------------------- c41d803 | David Lawrence Ramsey | 2024-04-02 15:50:36 -0500 Rename gui/spells/poison to gui/spells/alchemy. -------------------------------------------------------------------------------- 59293ed | Nicholas Feinberg | 2024-04-02 13:47:36 -0700 Fix: catch a few more strays (Ge0ff) -------------------------------------------------------------------------------- 7cf571d | David Lawrence Ramsey | 2024-04-02 15:04:32 -0500 Add misc colours as an option for Blork dialogue. These are taken from the colour list used for the scrolls of random effects before they were removed in 00efbec, but with the rainbow colours removed; black, white, and grey removed; and alizarin crimson, saffron, and vermilion added. -------------------------------------------------------------------------------- 8ce7b1e | Nicholas Feinberg | 2024-04-02 12:51:14 -0700 Fix: bring stray lajatangs back to the fold (Ge0ff) Remove stray pixels. -------------------------------------------------------------------------------- 7c90f28 | yrdzrfxndfvh | 2024-04-02 12:44:28 -0500 add cardinal to rand_wpn -------------------------------------------------------------------------------- 41c5271 | DracoOmega | 2024-04-01 18:07:37 -0230 Make Teleport Other try to teleport the affected monster out of LoS I don't expect this raises the spell's power overly much, but avoids the unfortunate scenario of spending all your MP to overcome a monster's will only to have it land 2 spaces to your left and not improve your situation at all. Now it is at least guaranteed to land out of LoS (though nothing is stopping it from being immediately around the corner and walking back in, of course) -------------------------------------------------------------------------------- 90097df | DracoOmega | 2024-04-01 18:07:37 -0230 Nudge Thunderhulk Blink Ranged cast rate down slightly In partial compensation for it being less likely to move them closer now instead. They're already quite dangerous, and being inside of their effective range is important counterplay. -------------------------------------------------------------------------------- 3c71851 | DracoOmega | 2024-04-01 18:07:37 -0230 Replace a couple uses of Blink Away with Blink Ranged Blink Away will happily move the monster out of sight of their target (which is usually the player) while Blink Ranged attempts to create distance while still being able to see the target. It seems better behaviour in the majority of cases if enemies don't leave the range at which they can threaten the player altogether. I left Blink Away alone for summoners (who often benefit actively from leaving their summons to hit you, even if they can't see you themselves) and boulder beetles (because they can be so dangerous early on and them sometimes disappearing is a more of a mercy to the player than a nuissance) -------------------------------------------------------------------------------- 00f4254 | DracoOmega | 2024-04-01 18:07:37 -0230 Prevent the player from self-targeting ranged weapons There was virtually no reasonable use-case for doing so (and it even required stepping through multiple different confirmation prompts!). Dispersal darts were approximately the only case where this could bring the player any benefit but: a) That's kind of dumb b) You were very likely to miss anyway, so it would almost never be *actually* good to try to blink this way, anyway. -------------------------------------------------------------------------------- 55d883d | DracoOmega | 2024-04-01 18:07:37 -0230 Make Dispersal Darts better at blinking things away from the thrower Technically they already tried to prefer blinking things away, but were so bad at it that I'm not sure anyone even noticed. (They simply picked TWO random valid destinations and would move the victim to the further of these two). This repurposes some existing blink_ranged code and in the process improves some jankiness with it to prevent this making the *worst* case for dispersal darts worse (even as the average case improves). Now the code will ignore possible destinations that are closer than where the blinker already is. (Yes, it was very possible for a monster to cast Blink Away and actually blink towards instead...) This is effectively a minor buff to monsters with Blink Away (and also Disjunction), but those spots were always downweighted so I don't think it's a significant balance change, so much as polishing off odd behaviour. Mostly, this is intended to buff Warper earlygame a small bit by making one of their trademark consumables better at its job. -------------------------------------------------------------------------------- 6619738 | DracoOmega | 2024-04-01 18:07:37 -0230 Don't let prefer_ranged enemies rarely swap to melee weapons in melee Enemies with the PREFER_RANGED flag have a 10% chance not to shoot on any given turn where they have line of fire, and if they rolled this chance while adjacent to their target, were likely to try to melee attack them instead, which looked very silly (Master Archers don't even generate with melee weapons, so they'd just try to punch you!) -------------------------------------------------------------------------------- 6f7e3dd | DracoOmega | 2024-04-01 18:07:37 -0230 Don't apply Gell's Gavotte to the other side of glass -------------------------------------------------------------------------------- a013996 | DracoOmega | 2024-04-01 18:07:37 -0230 Try harder not to give ghosts Gell's Gravitas -------------------------------------------------------------------------------- 4be4bdc | DracoOmega | 2024-04-01 18:07:37 -0230 Remove Piledriver -move, rescale damage, lower to level 3 Initial balancing of this spell was far too conservative. Players were wary of using it because of the -move after cast and the damage payoff was generally not good enough to make it enticing. I could adjust those things, but -move isn't very popular in general, so let's see if the unique aiming restrictions keep it from being too powerful even without any cooldown or downside attached. I have rescaled the damage-by-distance formula so that close range piledrivers are less effective than before (though max range ones can be somewhat *more* effective than before, depending on power) and lowered it to level 3. The hope is that this better addresses some of Warper's weak earlygame and entices more translocations investment. It may also benefit from being further away from the more flexible Vhi's. We'll see how this version fares. -------------------------------------------------------------------------------- 730d122 | David Lawrence Ramsey | 2024-04-01 13:06:03 -0500 Add another flower name to artefacts. -------------------------------------------------------------------------------- cfddb08 | David Lawrence Ramsey | 2024-03-30 20:07:42 -0500 Fix reference to Margery in Maggie's speech. -------------------------------------------------------------------------------- 23b751d | SentientSupper | 2024-03-30 16:42:58 -0500 Refactored randart staves tile fix (Ge0ff) -------------------------------------------------------------------------------- d694a16 | SentientSupper | 2024-03-30 16:42:58 -0500 Fix an issue with randart staves in local tiles When an item that has a randomized appearance (potions, staves) on the floor is rendered, the item's main tile is actually the "brand". The randomized tile gets added on later by calling add_main_tile which calls tileidx_known_base_item on the main tile when. This is a hack, but it lets you see the brands of identified items on the ground. However with randart staves, the main tile gets put in the special tile slot instead. Normally this won't cause any issues, but the local tiles inventory renders items as if they were on the ground. It calls add_main_tile on the special slot which then renders the randomized staff appearance on top of the randart staff tile. Fixed by not doing this for special tile slots. -------------------------------------------------------------------------------- 3df4fa4 | David Lawrence Ramsey | 2024-03-30 16:27:07 -0500 Fix typo. -------------------------------------------------------------------------------- 59262bd | Nicholas Feinberg | 2024-03-29 13:45:54 -0700 Cut Permafrost Eruption damage by 20% The initial numbers for this spell were intended to err on the side of 'too powerful'. And they were! Now that playtesting confirms the spell is strong, let's pull back on its damage a bit. The goal is for it to still be strong, just a bit less so. -------------------------------------------------------------------------------- e202e49 | David Lawrence Ramsey | 2024-03-29 00:12:13 -0500 Rename obsolete tile refs to Poisonous Vapours. It was renamed Mercury Vapours awhile ago. Also add a placeholder tile for Mercury Vapours: a palette-shifted version of the Poisonous Cloud tile instead of a straight copy of it. -------------------------------------------------------------------------------- 877066f | David Lawrence Ramsey | 2024-03-28 16:15:19 -0500 Add foul flame to _chaos_beam_flavour(). To match the chaos_types flavour list in attack::random_chaos_brand(). -------------------------------------------------------------------------------- f73ac73 | DracoOmega | 2024-03-28 16:24:06 -0230 Remove Gell's Gravitas from players/monsters It was fun enough to let players who had it from old versions play around with infinite tambourines for a bit, but if it's causing actual crashes from ghosts which still possess the spell, I really ought to just remove it. Fun fact: while old Gravitas was technically implemented as a monster spell, due to a non-functional tracer, monsters would never actually think it would damage anything, and thus never cast it (even though casting it could have worked). This may have always been broken, for all I know. -------------------------------------------------------------------------------- 153ae1a | DracoOmega | 2024-03-28 01:05:11 -0230 Don't crash on gavotting a dead monster The pushing order is sorted so that this shouldn't happen from Gavotte itself, but some scenarios (such as lost souls sacrificing themselves to save something else that was just pushed into a wall) can result in monsters dying prematurely, resulting in a crash. This fixes #3739 -------------------------------------------------------------------------------- 107c310 | SentientSupper | 2024-03-27 23:22:41 -0230 Fix pressing f twice to aim quivered Dr breath Previously pressing f with a quivered breath would not let you start aiming your breath until you pressed it again. -------------------------------------------------------------------------------- 0cd9e5b | Wizard Ike | 2024-03-27 22:59:06 -0230 Fix jinxbite doing extra attacks -------------------------------------------------------------------------------- b5af3dc | yrdzrfxndfvh | 2024-03-27 20:25:49 -0500 add Charlatan's Orb to shop of orbs -------------------------------------------------------------------------------- c35c0dd | DracoOmega | 2024-03-27 21:38:50 -0230 Rename a couple things for improved clarity Also don't display 'it is liquified' when moving the cursor over tiles of mud, only Leda's proper. -------------------------------------------------------------------------------- 1478e51 | Monkooky | 2024-03-27 21:38:50 -0230 Fix grey drac breath display Removes a from the display that was appearing as-is. Also, don't display leda's text for mud and make mud show liquiefied description. [Committer's note: squashed and edited typoes] -------------------------------------------------------------------------------- a0577c0 | Monkooky | 2024-03-27 21:38:49 -0230 Simplify liquefaction Leda's Liquefaction would set a 'liquid' flag for all tiles in range; then for non-water empty tiles would set the mechanically relevant 'liquid_actual' flag. The only read of either flag is through the 'liquefied' function, which would disregard water tiles and non-empty tiles. Line 694 would never return true, a line 688 would pre-empt it and return false. -------------------------------------------------------------------------------- 165e151 | wheals | 2024-03-28 00:29:54 +0200 fix: crash on loading a coglin with ring of flight (#3728) Fixes #3728 -------------------------------------------------------------------------------- e9ae430 | David Lawrence Ramsey | 2024-03-27 11:33:36 -0500 Allow memorising Piledriver v/no targets (#3737). -------------------------------------------------------------------------------- b0a091d | David Lawrence Ramsey | 2024-03-27 00:16:01 -0500 Fix spelling. -------------------------------------------------------------------------------- 2009358 | David Lawrence Ramsey | 2024-03-27 00:02:06 -0500 Fix wording. -------------------------------------------------------------------------------- 58459ad | David Lawrence Ramsey | 2024-03-26 23:42:36 -0500 Fix indentation. -------------------------------------------------------------------------------- 05aacc5 | DracoOmega | 2024-03-27 00:57:51 -0230 Fix typo (ragingrage) -------------------------------------------------------------------------------- adc223d | David Lawrence Ramsey | 2024-03-26 22:18:46 -0500 Fix spelling. -------------------------------------------------------------------------------- 4c6cd3f | David Lawrence Ramsey | 2024-03-26 22:17:12 -0500 Tweak wording. Referring to both "the caster" and "you" as the same entity in the same sentence is awkward. -------------------------------------------------------------------------------- e0dfd15 | DracoOmega | 2024-03-27 00:13:16 -0230 Shuffle new spells into books (And swap out Warper Manifold Assault for Piledriver) -------------------------------------------------------------------------------- b106c4a | DracoOmega | 2024-03-27 00:13:16 -0230 Make Piledriver display damage in a more maintainable way -------------------------------------------------------------------------------- 24355c9 | DracoOmega | 2024-03-27 00:13:15 -0230 Improve IMB collision damage description The previous method was too long to fit into the main spell list and would get cut off in the middle. Instead, just show the main damage there and show a more verbose description (including collision damage) in the full spell description. -------------------------------------------------------------------------------- e52afbe | DracoOmega | 2024-03-27 00:13:15 -0230 Gell's Gravitas -> Gell's Gavitambourine Gell's Gravitas has been in an awkward place for many years. It's conceptually cute, but generally agreed to be one of the weakest spells in the game, and there are implementation issues with making how it works transparent to players (eg: beam paths often mean that monsters the player expects to get pulled do not, and even if they do, they may move immediately afterward, making it *appear* as though they did not). I tried rewriting it in various ways, but it always felt like it was stepping on the toes of another spell in the same school that did that things better. IMB and Dispersal are both much better at getting things away from the player, Piledriver is (hopefully!) a more direct and intuitive way to slam monsters into walls for value, and Gavotte can do that at a larger scale. However, by turning it into an evocable effect, we may be able to lean into the 'gather monsters into one place' facet more effectively than one could from a repeatable effect, as well as improving direct damage without concerns that it's in the wrong school for that. Hence, the tambourine! (Because I also cannot resist a silly portmanteau) The tambourine is smite-targeted in a large radius (that scales with evo) and tries to pull every monster in that radius into as small an area as possible, then holds non-friendly ones in place there for several turns, as well as dealing some immediate (non-collision-based) damage to them. It currently alternates with phial of floods as a 'control' evoker, though once the pool of evokers expands just a little bit more (which I'm still hoping to do in 0.32), I'd like to remove these '1 of 2' pools from evokers and just pull 5 at random from the entire list. I think it's better for run variety and I don't see the need to guarantee an even distribution of evoker roles (or even power) from run to run in the same way that it makes sense for wands (since those are a bread-and-butter early toolset). (I also realize we've never had proper names in evokers before, but at this point they're *basically* unrands - coloring and all - so it's probably fine, right?) The tile is... very placeholdery, but I tried my best. >.> -------------------------------------------------------------------------------- 90288d3 | DracoOmega | 2024-03-27 00:13:15 -0230 Gell's Gavotte (new level 6 Translocations spell) A different take on gravity manipulation, intended to provide a fun and novel tool between level 4 and the new climb to level 7 Manifold Assault. This spell lets the caster temporarily reorient gravity in a cardinal direction of their choices, moving *everything* that isn't tied down 4 tiles in that direction, potentially falling into walls and each other. 'Everything' includes the caster, so it can be used for repositioning in some situations, but keep in mind that enemies will usually follow in lockstep with you unless you cast it from a position where they will bump into walls instead of being able to follow you. Enemies only take collision damage if they move at least one space from this effect (so no bashing things against the sides of a 1-tile hallway) and there is a several cooldown after casting it to prevent using it repeatedly to leap across long distances. Nevertheless, it's a tool that is multipurpose - repositioning yourself, doing damage, lining up enemies together for other spells. And one that does so via unique mechanisms that will hopefully be fun to play with. (The targeter helpfully hilights which monsters will take collision damage when the spell is aimed in a given direction, rather than asking the player to count distances themselves) -------------------------------------------------------------------------------- d8d9835 | DracoOmega | 2024-03-27 00:13:15 -0230 Move Manifold Assault to level 7, attempt to buff accordingly Manifold Assault is a fun and popular spell, and having spells that interact directly with weapon combat is good, but the combination of how well it scales in lategame and how little investment is needed for many characters to pick it up by that point is somewhat flattening - it's an easy and powerful tool for a lot of characters to splash and there's little reason for those characters ever not to (especially since spellpower mattered very little for it, in practice) This commit makes Manifold Assault a lot more of a commitment to get online, but ideally leaves the spell still feeling powerful and rewarding when one does so. Compared to its previous incarnation, it now hits twice as many targets per cast (and scales to hit even more at >100 power), and can never miss. If this leaves it insuficiently exciting at its new level, additional buffs will be considered. (I have retained the 'unarmed attacks hit 1/2 as many things' for now, though I'm not sure whether or not that's necessary at level 7?). (Autumn Katana still only hits 4 things at once with its proc, though those hits will now never miss) -------------------------------------------------------------------------------- 8d86919 | DracoOmega | 2024-03-27 00:13:15 -0230 Maxwell's Portable Piledriver (new level 4 Translocations) Intended as a replacement for Manifold Assault as a lower level combat oriented translocations spell (that scales less well, but needs less combat skill to function). It automatically grabs an enemy in melee range, and propels both it and the caster in that direction until hitting another monster or a wall (or reaching max range). It does damage via collision only, but that damage is increased based on how far you've travelled. Targeting is automatic, and it will pick the enemy who has the longest unobstructed path to another enemy or wall (to prevent it being far too commonly unusable with multiple adjacent enemies, where most available targets are unproductive). The caster gets -move after using it, proportional to the distance travelled, and it cannot be recast while you have -move. This is to make it primarily useful for offensive purposes and short-term repositioning without being a good way to run away from things (it should always be a net reduction in long-distance movement speed). I realize this is similar to Vhi's in several ways, but rather than being redundant with it, I think they actively complement each other. Piledriver can target only enemies which Vhi's cannot, moves enemies when Vhi's only moves the player, and they combo well together - being able to Vhi's into an enemy to then piledrive it into a wall, or using Vhi's to escape after doing so (since it bypasses -move) -------------------------------------------------------------------------------- e6577ed | DracoOmega | 2024-03-27 00:12:53 -0230 Refactor a couple spell animations A number of spells that flashd an individual tile as part of their animation (eg: scorch) were using mostly-duplicated code to do so. This pulls that out into a separate function so that it's easier to reuse. (There are a couple other places that could *maybe* make use of this, too, but these were the most simple and obvious) -------------------------------------------------------------------------------- 583ece5 | DracoOmega | 2024-03-27 00:12:53 -0230 Slightly refactor ENCH_BOUND handling Fathomless shackles bind is directly marked instead of assuming that all non-sigil binding is from Shackles. (So that -move can be used in other context without side-effects) -------------------------------------------------------------------------------- 9d3c0f8 | SentientSupper | 2024-03-27 00:12:52 -0230 Describe spellpower effects on IMB and Gell's -------------------------------------------------------------------------------- 4c2c1c8 | SentientSupper | 2024-03-27 00:12:52 -0230 Describe collision damage for spells This includes gravitas and IMB. -------------------------------------------------------------------------------- bbb8fdb | Monkooky | 2024-03-26 09:35:26 -0700 remove some meat meat_and_reaction needed a quantifier preceeding it, unlike fruit_and_reaction. This was confusing and caused repeated errors, so we're changing it. Also sneaking in a haggisification of death yak sausage -------------------------------------------------------------------------------- 4648e6c | David Lawrence Ramsey | 2024-03-25 19:57:53 -0500 Fix spelling. -------------------------------------------------------------------------------- 1216c0e | David Lawrence Ramsey | 2024-03-25 19:56:40 -0500 Fix typo. -------------------------------------------------------------------------------- 4d5e64a | Monkooky | 2024-03-25 22:01:34 -0230 Make forms adjust hunger (#3720) [Adds support for form-specific food messages, and messages for some forms. Makes messages fall back to species-based eating for forms that lack specific messages. Also, a minor fix to spriggan fruit sampling, and a new message for draconians.] [Committer's notes: Squashed the commits together. Added a shared template position for shared lines (carnivore, shortness, inediate), for more cleanliness and further additions in the future, redid spacing, and alphabetized both entries. Commented a little further, added a line for storm form, and adjusted blade form's meat eating message a little further. Merges #3720.] -------------------------------------------------------------------------------- f1ef24b | Monkooky | 2024-03-25 22:01:34 -0230 Update orp_of_zott (#3729) Use the Charlatan's orb instead of a random randart orb, as it fits the joke of the vault better. [Committer's notes: Squashed commits together, fixed a missing FTILE assignment, scattered items a bit further away from the stair / "orb" placements, and cleaned out some unused glyph lines while I'm here. Merges #3729.] -------------------------------------------------------------------------------- 8d3e27d | David Lawrence Ramsey | 2024-03-25 16:25:24 -0500 Make Ctrl-\ wizard command work on local tiles. And add explanatory comment about the non-letter control sequences that work on console. -------------------------------------------------------------------------------- 410066a | David Lawrence Ramsey | 2024-03-25 08:04:39 -0500 Remove Jiyva's conversion penance check. Since there's no way to get penance under Jiyva anymore. -------------------------------------------------------------------------------- 5ca9e1a | David Lawrence Ramsey | 2024-03-25 07:58:52 -0500 Don't let Jiyva convert shapeshifters. Since they aren't guaranteed to stay in jelly form. Closes #3730. -------------------------------------------------------------------------------- eaf45d8 | SentientSupper | 2024-03-24 21:29:40 -0700 Describe mindburst and pain damage In monster spell description. [Committer's note: refactored.] Closes #3709. -------------------------------------------------------------------------------- 4b62edc | Nicholas Feinberg | 2024-03-24 21:21:26 -0700 Fix: remove fired missiles From the docs. (Since ranged weapons no longer use ammo.) -------------------------------------------------------------------------------- 0a3110e | Nicholas Feinberg | 2024-03-24 21:20:31 -0700 Update drop_disables_autopickup docs -------------------------------------------------------------------------------- ac1af34 | SentientSupper | 2024-03-24 21:19:35 -0700 Improve drop_disables_autopickup behavior Don't disable autopickup when dropping missiles because missiles with different brands share the same base type. -------------------------------------------------------------------------------- 984978c | SentientSupper | 2024-03-24 21:18:36 -0700 Add zot.cc to vcxproj -------------------------------------------------------------------------------- 65f7d67 | NormalPerson7 | 2024-03-24 21:17:47 -0700 Show coglins' offhand weapon in the WebTiles interface Add a second weapon line for coglins to the WebTiles interface, just below the normal weapon line and above the quiver, which is hidden in all cases where you don't have an offhand weapon equipped. This works differently from console/offline tiles, but I personally think this is how those formats should work too. (Currently, they have both weapons listed on the same line, which gives each weapon awfully little space for its properties, or in the case of artefacts, even just the name can be too long.) -------------------------------------------------------------------------------- aba3a3c | RypoFalem | 2024-03-24 20:42:31 -0700 fix: Solve the Mara Hall problem (DracoOmega named this the "Mara Hall problem" and I love that so I'm using it here.) Before this commit, when Mara summoned two illusions of himself, he would have a 1/2 chance of swapping positions with each illusion consecutively. This led to a spoilery outcome where you had better odds of attacking the real Mara if you attacked one of the Maras at the new positions as demonstrated below: Call Mara's original position 'a', the position of the first illusion 'b', and the position of the second illusion 'c'. 1st action 2nd action Result position swap(1/2) swap(1/2) c(1/4) dont(1/2) swap(1/2) c(1/4) swap(1/2) dont(1/2) b(1/4) dont(1/2) dont(1/2) a(1/4) You can see here that the probabilities of the true Mara being at position a and b are both 1/4 while the sum of the probabilities of Mara being at position c are 1/2. I don't know of any way position c and b can be distinguished, but you can usually distinguish position a because that's where Mara starts. Knowing this, you know that you have equal or greater odds of attacking the true Mara if you switch from attacking the Mara at the original position to one of the ones at the new positions. Like with the Monty Hall problem, you should always switch! This commit keeps the 1/2 swap chance for the first illusion but uses 1/3 chance for the next potential swap. (and 1/4, 1/5, 1/6, etc for subsequent swaps but Mara only makes two clones so that never happens in practice) This evens out the odds as demonstrated by the new table: 1st action 2nd action Result position swap(1/2) swap(1/3) c(1/6) dont(1/2) swap(1/3) c(1/6) swap(1/2) dont(2/3) b(1/3) dont(1/2) dont(2/3) a(1/3) Now the two c's sum to 1/3 and all three positions have an equal chance of containing the true Mara! [Committer's note: refactored.] Closes #3722. -------------------------------------------------------------------------------- 29eef42 | David Lawrence Ramsey | 2024-03-24 22:12:33 -0500 Add placeholder tile: equipped Charlatan's Orb. It's player/hand2/orb2.png with the palette adjusted to better resemble item/armour/artefact/urand_charlatan.png. -------------------------------------------------------------------------------- 4cabd76 | Edgar A. Bering IV | 2024-03-24 17:27:28 -0700 move putrid mouths to lightred in console Having spectral things and putrid mouths on the same glyph caused a variety of legibility problems. Lightred W is free currently and has a rough alignment with the tile, so let's go with that. -------------------------------------------------------------------------------- 0e82a10 | regret-index | 2024-03-24 18:47:53 -0230 Add sticky flame to Hints Mode (PleasingFungus) While moving around or moving into water is already mentioned in the earliest user's description, the status's descriptions, and all of the player and monster spells' descriptions, we clearly haven't emphasized it enough for many people to have noticed the change. While it'd be quite intrusive to mention it whenever one's lit on fire (since it'd bleed across multiple console lines), people in hints mode are already getting a large amount explanation attached to various matters, and bombardier beetles are quite early, so, it's probably a good idea to make sure at least those newcomers get told about this very directly. -------------------------------------------------------------------------------- 6c632cb | regret-index | 2024-03-24 18:30:23 -0230 A few more monster-based skill titles (yrdzrfxndfvh), some tidying With some minor adjustments, this takes some of the titles that weren't weaker monsters, overly jokey in tone, or weird implications of changing physiologies on non-Draconians, from #3712. * 27 Fighting Humans of Makhleb - the Hell Knight * 27 Unarmed Octopodes - the Crusher * 27 Armour Trolls - the Iron Troll * 27 Shields Spriggans - the Defender * 27 Fire Magic Gargoyles - the Molten * 27 Invocations Draconians of TSO / Ely / Zin - the Pearl Dragon These should be relatively straightforwardly understandable each. "Crusher" is a little silly still as a reference to a removed monster, but it's probably fine in the same way all the Felid unarmed titles shift away from the regular unarmed titles also. (While I'm here, I also sorted skills.cc's list of special titles to follow the in-game display order of skills and the historical / enum order of when species were added, rather than the orders of whenever people added these.) -------------------------------------------------------------------------------- 74a9d55 | regret-index | 2024-03-24 17:23:13 -0230 Mildly brighten up the obsidian bat tile Various people have complained the tile doesn't contrast enough against the relatively dark floors of the Orcish Mines. While obsidian bats are kind of inherently a dark material with a near-black other use of it currently present, a little bit of lightening this up should help without losing much of the flavour. -------------------------------------------------------------------------------- d708a3a | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Add Charlatan's Orb status description. -------------------------------------------------------------------------------- 456b196 | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Add inscription for Charlatan's Evocations boost. And order the descriptions of the orb's capabilities properly. -------------------------------------------------------------------------------- f510db4 | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Make the Charlatan's Orb actually glow. -------------------------------------------------------------------------------- 240068c | Monkooky | 2024-03-24 14:12:44 -0500 Add unrand Charlatan's Orb Adds a new unrand which boosts evocations, but delays teleports and reduces stealth in the same way as the Orb of Zot. This unrand serves two purposes besides thematic appeal; firstly it provides a preview of the less obvious effects of the Orb status, and secondly provides an equipment based means of boosting evocables. [Committer's notes: Fixed punctuation and formatting, and did checkwhite.] -------------------------------------------------------------------------------- b728d02 | David Lawrence Ramsey | 2024-03-22 22:57:31 -0500 Fix capitalisation. -------------------------------------------------------------------------------- 74ea0c1 | David Lawrence Ramsey | 2024-03-22 22:38:21 -0500 Fix comment typo. -------------------------------------------------------------------------------- 4c8b870 | David Lawrence Ramsey | 2024-03-22 19:16:16 -0500 Remove obsolete reference in Orb status. The Orb of Zot hasn't interfered with Passage of Golubria since 1899a4c4. -------------------------------------------------------------------------------- 315f82d | David Lawrence Ramsey | 2024-03-22 06:32:58 -0500 Fix punctuation. -------------------------------------------------------------------------------- 0968bab | Kyle Rawlins | 2024-03-21 12:57:48 -0400 fix: further webtiles startup sequencing issues In particular, webtiles.pid has to be written after shed_privileges. I'm fairly confused because I thought I'd duplicated the order exactly with this part, but I guess not. -------------------------------------------------------------------------------- 41daaf4 | Kyle Rawlins | 2024-03-21 12:40:57 -0400 fix: missing `self.` -------------------------------------------------------------------------------- c80f89d | Kyle Rawlins | 2024-03-21 12:37:09 -0400 fix: server startup sequencing issues The previous code was accidentally deleting pidfile before the startup step.... -------------------------------------------------------------------------------- 06071df | Kyle Rawlins | 2024-03-21 12:37:09 -0400 Revert "fix: move `shed_privileges` later in webtiles setup" The cert problem I was worried about isn't fixed by this, and moreover, shedding privileges so late on a new install results in a bunch of files owned by root that shouldn't be. This reverts commit b001dabdc76911c4204983db9db46ef477979ecf. -------------------------------------------------------------------------------- 7a0cf5b | Kyle Rawlins | 2024-03-21 12:37:09 -0400 fix: improve logging message -------------------------------------------------------------------------------- 68839bf | David Lawrence Ramsey | 2024-03-21 11:14:47 -0500 Reword Ash cursed item desc. Cursed items normally can't be enchanted, since they become artefacts, but now we have Mountain Dwarves, who can enchant artefacts. -------------------------------------------------------------------------------- 8da92d5 | David Lawrence Ramsey | 2024-03-21 09:16:09 -0500 Remove now-unused now_is_morning() function. -------------------------------------------------------------------------------- 23d0647 | David Lawrence Ramsey | 2024-03-21 08:56:28 -0500 Remove now-unneeded #include (yrdzrfxndfvh). skills.cc only needed misc.h for now_is_morning(), which was only used for some Meteoran titles, and now Meteorans are gone. Note that now_is_morning() is currently unused by anything. -------------------------------------------------------------------------------- 524b7c7 | Kyle Rawlins | 2024-03-21 09:24:50 -0400 fix: quiet a dgl-build-specific warning -------------------------------------------------------------------------------- 766f10f | SentientSupper | 2024-03-21 08:18:37 -0500 Clear dimensional bullseye when apostle yields Include ENCH_BULLSEYE_TARGET in timeout_enchantments. -------------------------------------------------------------------------------- 4d9a32f | SentientSupper | 2024-03-21 08:08:40 -0500 Make allies avoid pressure plate traps Consider pressure plates to be bad for the player because they spawn / uncage monsters that attack the player so that allies avoid stepping on them. -------------------------------------------------------------------------------- 303fdf7 | David Lawrence Ramsey | 2024-03-21 07:55:35 -0500 Adjust Blork the orc description/dialogue. His rainbow-coloured suspenders were a magical cast-off from a wizard, and they transferred power to him beyond that of an ordinary orc. But they also made him a little mad, and colour-obsessed. -------------------------------------------------------------------------------- b0e0dd9 | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Remove Jiyva's no-hurting-jellies conduct. -------------------------------------------------------------------------------- 93c155c | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Remove Fedhas' no-hurting-friends conduct. Since they protect plants from harm, and the only friends you have under Fedhas, that they care about, are plants. -------------------------------------------------------------------------------- a5f95a5 | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Make god protection work even with manual swings. This affects Fedhas worshippers with plants, Hep worshippers with ancestors, and Jiyva worshippers with slimes. -------------------------------------------------------------------------------- 95e1662 | David Lawrence Ramsey | 2024-03-20 19:44:27 -0500 Fix punctuation. -------------------------------------------------------------------------------- fa783ce | David Lawrence Ramsey | 2024-03-20 14:11:40 -0500 Fix monster info bot compilation (Ge0ff) -------------------------------------------------------------------------------- ee37984 | David Lawrence Ramsey | 2024-03-20 12:13:11 -0500 Remove prototype of nonexistent function. -------------------------------------------------------------------------------- 5c25360 | David Lawrence Ramsey | 2024-03-20 11:51:25 -0500 Fix spacing. -------------------------------------------------------------------------------- 7cbadc2 | David Lawrence Ramsey | 2024-03-20 11:45:53 -0500 Fix reversed resists/damage message order. For cloak of flames, passive freeze, and foul flame melee attacks. -------------------------------------------------------------------------------- b59af49 | David Lawrence Ramsey | 2024-03-20 11:41:03 -0500 Constify variable. -------------------------------------------------------------------------------- f47b1a0 | Kyle Rawlins | 2024-03-20 09:39:50 -0400 docs: fix an obsolete comment in config.py (To be honest, I'm not entirely sure if this parameter would *ever* have an effect on webtiles, from reading tornado code.) -------------------------------------------------------------------------------- 3d70bf0 | David Lawrence Ramsey | 2024-03-20 07:33:52 -0500 Print apostle damage numbers properly (Ge0ff) When they're bad, print them before resetting them to zero. -------------------------------------------------------------------------------- fc315c9 | wheals | 2024-03-19 22:46:22 +0200 fix: the build -------------------------------------------------------------------------------- 60f1b21 | wheals | 2024-03-19 22:43:35 +0200 Try to really fix apostle damage tracking (Ge0ff) I still have no idea how this slipped past the code that was supposed to be fixing it up, but once it did the tag minor version check is worthless. -------------------------------------------------------------------------------- c76ea14 | Kyle Rawlins | 2024-03-19 15:53:42 -0400 fix: don't ignore `max_lobby_idle_time` setting The accidental comparison caused this value to get set to 1, so lobby timeouts were just always using `connection_timeout`. -------------------------------------------------------------------------------- 9ed4220 | Kyle Rawlins | 2024-03-19 15:29:06 -0400 feat: webtiles-internal https redirect option This option lets you e.g. redirect http://server:8080 to https://server:8443. There's various external ways of doing this, but it's convenient when running webtiles on custom ports to simply be able to set the redirect in webtiles options. Note: after spending a bunch of time on this, I've concluded it's essentially completely impossible within tornado to redirect a http to https connection on the same port (or vice versa). It's a bit unfortunate, as this would help with a bunch of scenarios that browsers auto-manage when using 80/443, but it is what it is. See https://github.com/tornadoweb/tornado/issues/523 for more info. Also, tornado just hangs when you send a https connection to a http port, apparently before the Application code gets access; I have no idea why this is. But probably official servers will soon no longer use http ports at all, so maybe not a worry. -------------------------------------------------------------------------------- 50abb8a | Kyle Rawlins | 2024-03-19 14:44:33 -0400 fix: missing tuple wrapper Also, slightly tweak default config -------------------------------------------------------------------------------- 3ef9c6c | David Lawrence Ramsey | 2024-03-19 11:12:09 -0500 Fix punctuation. -------------------------------------------------------------------------------- 234660e | David Lawrence Ramsey | 2024-03-19 11:11:19 -0500 Fix wording. -------------------------------------------------------------------------------- 5d9b134 | David Lawrence Ramsey | 2024-03-19 09:58:22 -0500 Make effect/iron_shot_7.png 32x32. Since it's supposed to be a horizontal flip of iron_shot_1.png. -------------------------------------------------------------------------------- 829d17d | Kyle Rawlins | 2024-03-19 10:32:09 -0400 feat: webtiles cli support for an ssl port This is primarily to facilitate --live-debug tests. By its nature, I haven't been able to test this commit locally beyond ensuring that it doesn't break normal startup. -------------------------------------------------------------------------------- b001dab | Kyle Rawlins | 2024-03-19 10:16:20 -0400 fix: move `shed_privileges` later in webtiles setup SSL cert keys may be conventionally stored in a way that needs privileges to access by default; don't force server admins to tweak permissions on this file when copying into chroot. -------------------------------------------------------------------------------- d9b930b | Kyle Rawlins | 2024-03-19 10:14:53 -0400 fix: missing comma -------------------------------------------------------------------------------- dd6cb82 | Aliscans | 2024-03-19 08:43:42 -0500 Change the spelling of some words to Australian English. Change a few places where a word used a spelling which is not spelt correctly according to https://www.australian-dictionary.com.au/wordcheck/. This only changes things in places where the spellings may be displayed to the user. I include the documentation in this. I haven't changed the changelog or doc/develop, or any of the contrib stuff. This changes: channeling -> channelling dueling -> duelling offense -> offence defense -> defence skillfull/skillfully -> skilful/skilfully willful -> wilful -------------------------------------------------------------------------------- 362cfca | Edgar A. Bering IV | 2024-03-18 21:53:14 -0700 docs: clarify the prohibition against wishes (Alkali Man) This sentence in the manual aims to explain why acquirement does not offer wishes, but the wording is confusing for people not coming to crawl from nethack. Re-write it to make it in the positive framing about the randomization of acquirement instead. -------------------------------------------------------------------------------- a6a9c15 | orjb1 | 2024-03-18 23:54:01 -0230 Add guarded unrand Arga vault (#3702) [Committer's note: Recoloured the metal in tiles, didn't do much else. Quicksilvers are a good fit together with Arga (fast, non-elemental, Will+ on the axe and scales both), so a straightforward vault's plenty fine. Closes #3702.] -------------------------------------------------------------------------------- ec90db9 | regret-index | 2024-03-18 23:54:01 -0230 Throw together a placeholder Permafrost Explosion tile. Mixes together the original RLTiles icon for Shatter, roctavian's icons for Bolt of Cold and Ozocubu's Refridgeration, and ontoclasm's icon for Hailstorm. Should at least emphasize it's an earth spell alongside ice. -------------------------------------------------------------------------------- 03d5c24 | regret-index | 2024-03-18 23:54:01 -0230 Decorative boulders -> decorative piles of debris There's been some consternation around the use of unmoving decorative boulders in d9500d9. They list a speed if they actually moved (the speed of BBB's use of the boulder) but don't move in and of themselves, and they also show up in the monster list (because for some reason this isn't innate to firewood). Outside of lingering implementation issues, they're awkwardly not quite as difficult to destroy as bushes but still require manual effort compared to the withering away of plants. They also collected a fairly large amount of confusion and paranoia about them being made to roll in some trap function or another, and while I'd like all of Crawl's unique vault traps to rely on pressure plates eventually (c.f. e446cd8), players will always have some confusion attached to such a re-use. As such, I am replacing most of their uses with an entirely different decorative feature altogether, to fulfill and further extend some of the same spirit of earthen decor beyond different wall and statue tiles or yet more and more piles of large rocks items and stone items around. Piles of debris are meant to fulfill a immotile non-living rubble and ruin position, akin to the expanded uses of pillars of salt. They behaves mostly like plants (in that they will die several turns after being first hit), with some minor tweaks. They have 40% of plant HP but light omniresistance and non-zero AC, which makes it somewhat more plausible for them to be destroyed advance of such collapsing if one can work around those defenses. They count as amphibious, so they can be placed in deep water in vaults for e.g. Shoals and Swamp. Finally, they also collapse into dust (sidestepping the inquiries about it dropping stones or large rocks), which also means a brief cloud of sparse dust when it's destroyed akin to chaos spawn and simulacra. Hopefully, adding what is essentially another type of rare firewood that more specifically implies wrecked ruins rather than overgrown ones shouldn't raise the same issues re-using spell boulders did. Their name and description are ironically enough somewhat up in the air: I'm somewhat dissatisfied with both, and other devs may find-replace a better name as long as the intent of "half-broken stonework" survives. The tiles use a mix of the RLTiles earth magic spell icons (Sandblast, Passwall, LRD, Shatter) and PleasingFungus's original placeholder tile for rockslimes. Possibly some recolours would be reasonable for making them fit into Slime or Desolation too, though I'm a little cautious about spreading firewood a little too far in the broader scope of things. -------------------------------------------------------------------------------- 9ccf164 | regret-index | 2024-03-18 23:54:01 -0230 New Mines enemy: obsidian bat Obsidian bats in both name and form are meant to further emphasize the cave parts of the Orcish Mines, as well as emphasis the varied demonic threat attached to both orc high priests and orc sorcerers. Aside from these fits, they're also meant to punish how it's regularly easy (and slow) to flee across the Orc:$ level away from the endvault unless a summoner rolls the faster demons, a sorcerer rolls on paralysis, or the player's actually weak enough to care much about (even post-buff) wargs post-Lair. They're non-living faceless bats with rF++ that have a derivative of the broodmother special- a AF_HELL_HUNT that summons either hell hounds or hell rats on hit 66% of the time, capped at 3 out at once. They're quite a ways weaker than broodmothers otherwise- in stats and damage somewhere between unseen horrors and wargs, or possibly a blink frog band with heavy resists if the player has no EV. Still, by being batty, they regularly step away from the player to let their summons get in the way, a distinguishing feature for a summoner that will probably also rather vex players. Their defenses are probably their most notable feature- with passable AC and EV on top of resists- but by the time one enters Orc a god or floor drops should allow even alchemists to have some other option when facing them. These spawn alone by themselves, taking a small chunk out of wargs as we currently can't adjust due to CCF and ogres as people see plenty of much earlier than Orc. (Possibly we should consider lowering Orc's monster count the same way Lair does to handle the two new Orc enemies being a little stronger than the average normal spawn.) A couple of thematically appropriate demonic and lava orc vaults and ends place them, one of the Volcano sets uses them on rare occasion, and they take yet another (much smaller) slice out of Abyss abominations. Since we've got a lot of demons already, I'd prefer these to stay relatively early and fire-centered rather than used freely in most other vaults otherwise- anything that escaped out of Hell from which pours out Hell itself should be a little special. Their tile is by Sastreii. -------------------------------------------------------------------------------- a2165e0 | regret-index | 2024-03-18 23:54:00 -0230 Recentish tile / decor adjustments * Porkolator: A border fix plus hex sparkles so it's not just A Pig. * Fathomless Shackles: Chain tweaks to emphasize their size in contrast to the smaller chains of Bind Soul. * Canine Familiar: A quick recolour to use the inugami's palette. * Coglin Gizmos: Chroma adjustments to help move the purple-pink-red options away from one another. * Scintillating statues: Animate them far less often, and tweak a placement, since they're evidently very distracting as entirely decorative features. -------------------------------------------------------------------------------- 281c769 | regret-index | 2024-03-18 23:54:00 -0230 Another small vault batch Really should clean out more of my drafts files at some later point. * Two Abyss entries, with thematically appropriate and Depths appropriate spawns, meant to vary up Abyss entries since mostly don't have enemies attached to them compared to the Pan and Hells entries. * A decorative Snake vault, trying to help reach the higher Snake decor count needed to make them always appear on Snake:$ to help vary up those floors more tangibly. * A couple more removed vault layouts revamped for other uses. A volcano layout used for a game-wide fire and earth vault, a dwarf vault used for another misc_elf_vault, and a Zotdef layout used for a Zot stairs vault. Would be nice to convert another two layouts of Zotdef into stair vaults with the same monster set set-up, eventually. -------------------------------------------------------------------------------- 33df237 | Kyle Rawlins | 2024-03-18 18:04:48 -0400 fix: various issues with webtiles idle timers Since sometime around 2a3aa404fa2d, the play idle timer has been broken. The issue is essentially race conditions in checking whether a game has actually started/stopped, where the idle timer was reset during game startup but before it had fully started. This commit should make both timers work in a way that is more robust to this issue. The other problem is that 2a3aa404fa2d seems to have assumed that the connection life check was only happening during play, which was incorrect. This lets it work in the lobby, while spectating, and during play again. The overall implementation is still somewhat painful, because no time is really tracked in the lobby; possibly it should be. I also changed the semantics of `max_lobby_idle_time` to match `max_idle_time` a little better. -------------------------------------------------------------------------------- 4004213 | Kyle Rawlins | 2024-03-18 14:58:34 -0400 fix: remove debug code -------------------------------------------------------------------------------- ce68871 | Kyle Rawlins | 2024-03-18 14:48:17 -0400 refactor: modernize/fix webtiles signal handling The Tornado 6.4 release notes say: "`IOLoop.add_callback_from_signal` is suspected to have been broken since Tornado 5.0 and will be removed in version 7.0. Use `asyncio.loop.add_signal_handler` instead." This commit is a direct reaction to that; we've certainly had some pretty flaky shutdown behavior with the existing approaches. To update the signal handlers with this suggestion, a bunch of other changes were necessary: * Move all callback setup into an async function, start the ioloop with an asyncio call. This is Tornado's current recommended approach, so really this is a long-needed modernization. * separate socket binding (non-async) from tornado server startup (async) * it's no longer safe to directly call IOLoop.current().stop(); the means of triggering shutdown is therefore converted to (i) an Event that waits for sockets to close (fixing some other issues with the previous approach), and then (ii) code that cancels remaining tasks if this takes too long. * a bunch of old back-compat is removed. This patch is relatively conservative, but does definitely assume asyncio. This patch is still really far from any sort of asyncio conversion; nothing except the main server start function is async. -------------------------------------------------------------------------------- 1b414cb | Kyle Rawlins | 2024-03-18 14:01:07 -0400 refactor: update stale lock code This modernizes this code a little bit for python 3, and also checks for the existence of the process first before prompting the user about "stale processes". When a server is force-shudown via kill -9, lockfiles aren't cleared, and the previous version wouldn't actually check if the pid was real until the 10s prompt had elapsed. -------------------------------------------------------------------------------- 0f6f1dd | SentientSupper | 2024-03-17 21:25:21 -0700 Fix cursed item background not being red In local tiles. Should be fine for ISFLAG_CURSED to be included in get_item_known_info now that the only source of curses is ash. Closes #3683 -------------------------------------------------------------------------------- b0416c4 | SentientSupper | 2024-03-17 21:18:08 -0700 Display chance for wand of warping to blink When targeting. -------------------------------------------------------------------------------- 00dc814 | David Lawrence Ramsey | 2024-03-17 20:26:36 -0500 Fix spelling. -------------------------------------------------------------------------------- fba4d74 | Nicholas Feinberg | 2024-03-17 15:38:37 -0700 Update CREDITS for bjo* Per request: https://github.com/crawl/crawl/pull/3688#issuecomment-2002327035. -------------------------------------------------------------------------------- 77bb6d3 | SentientSupper | 2024-03-17 15:36:58 -0700 Show undead players as immune to polymorph -------------------------------------------------------------------------------- 5810ea1 | SentientSupper | 2024-03-17 15:36:58 -0700 Show player as immune to charming with clarity -------------------------------------------------------------------------------- 903ea0f | Aliscans | 2024-03-17 15:36:02 -0700 Correct how the display_char option handles gems and gold. DCHAR_ITEM_GOLD and DCHAR_ITEM_GEM were in a different order in dchar_names[] (used by the "display_char" option) to the one in dungeon_char_type, meaning that the option had unexpected effects. Fix this, and add item_gem to the docs for this option. -------------------------------------------------------------------------------- 2cddf73 | DracoOmega | 2024-03-17 20:04:31 -0230 Fix a crash with ending constriction after level transit If the constricted actor no longer existed, it would try to dereference a null pointer. There's already checks deeper down to prevent the mid of an nonexistant actor from doing things. -------------------------------------------------------------------------------- 6b6a0ea | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Refactor Upheaval/Disaster Area's target skips. Both will now properly skip over all targets they're harmless to. (Before this, aiming Upheaval directly at a target it shouldn't damage would damage it regardless, whether yourself or an elemental force.) -------------------------------------------------------------------------------- 1cb27b7 | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Disable prompt when self-aiming Upheaval. Since it's supposed to be harmless to you. -------------------------------------------------------------------------------- 8d7d3c4 | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Constify variable. -------------------------------------------------------------------------------- c677e9a | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Readd the Disaster Area radius limitation. So it doesn't always blast everything in LOS. -------------------------------------------------------------------------------- e6bea51 | Monkooky | 2024-03-17 15:05:24 -0500 Remove Upheaval friendly fire Makes Upheaval (and consequently Disaster area) do no damage to Elemental Forces. Other allies are still affected, for thematic and consistency reasons. -------------------------------------------------------------------------------- 6ff4911 | Kyle Rawlins | 2024-03-17 12:35:50 -0400 fix: remove 3.12 from ci webserver testing Unfortunately, pinned versions fro 3.8 are broken in 3.12 because of package deprecation. I don't think our current version management for these tests is a very good approach, but I don't have a fix right now. So, temporarily disable 3.12 altogether. These tests currently don't do much so it shouldn't be a big deal. -------------------------------------------------------------------------------- 14b72cc | Kyle Rawlins | 2024-03-17 12:33:09 -0400 fix: further update webtiles tests It seems that these tests weren't updated when webtiles code was refactored into a subdirectory. It sort of doesn't matter, because essentially all of our source code is excluded in tox.ini anyways. (What is the point of having these tests when everything is excluded? I have wondered this myself.) -------------------------------------------------------------------------------- 424f3ba | Kyle Rawlins | 2024-03-17 11:52:09 -0400 fix: update requirements files for webserver tests This is for py38, we'll see if it works for other CI targets. -------------------------------------------------------------------------------- bdd6c9c | Kyle Rawlins | 2024-03-17 11:39:15 -0400 fix: convert CI macos pyyaml dep to homebrew I have some reservations about this, but once any python stuff at all is installed via homebrew, it becomes hard to go back. -------------------------------------------------------------------------------- 66263cc | Kyle Rawlins | 2024-03-17 11:34:22 -0400 fix: update some CI python versions Python 3.6 no longer works here. I believe we've gotten all servers past eol python versions at this point, so it's safe to only test current versions. Also, I (conservatively) updated the python 3.7 installs for catch2 tests to 3.8. This could probably go further? -------------------------------------------------------------------------------- 93cc127 | Kyle Rawlins | 2024-03-17 11:21:16 -0400 fix: possibly unbreak macos CI pip3 call This will probably fix this immediate call, but it's unclear to me whether the fixed version will install pyyaml in the right place. -------------------------------------------------------------------------------- f73a246 | Kyle Rawlins | 2024-03-17 10:48:11 -0400 fix: reorder some CI steps Homebrew and system installed python have an unfortunate interaction from time to time. Most recent github statement on this: https://github.com/actions/runner-images/issues/9471#issuecomment-1984202712 We already had a workaround in place from c6129fcb3f40, but it is not working for the current round of the bug. I think reordering should be the fix. Previously this CI issue must have triggered later in our build process (currently unclear to me how; maybe the brew calls in the prior step only recently triggered a dependency upgrade; right now the culprit is libpng). This commit should ensure it is always triggered before any brew calls. -------------------------------------------------------------------------------- a50f332 | Kyle Rawlins | 2024-03-17 10:21:08 -0400 fix: convert some string `+`s to `make_stringf` Crawl string templating is all over the place, but imo using + for templating is the worst of the available options. -------------------------------------------------------------------------------- c8563f6 | Nicholas Feinberg | 2024-03-16 22:24:38 -0700 Fix multiple spell list lettering (SentientSupper) Spell lists with three or more sections (e.g. natural + magical + wand spells) would be lettered incorrectly, as would various other cases. Fix this by simplifying lettering. -------------------------------------------------------------------------------- 1ee7915 | SentientSupper | 2024-03-16 19:53:22 -0700 Display PE center targets with more opacity Display permafrost center targets with more opacity. This includes a nonstandard use of AFF_YES but I don't think any players would complain. -------------------------------------------------------------------------------- 6635892 | bjiorn | 2024-03-16 19:52:23 -0700 Fix max HP value in description of your ancestor Previously the value was not up-to-date after gaining a level until your ancestor died and respawned. -------------------------------------------------------------------------------- 54de21a | Nicholas Feinberg | 2024-03-16 19:49:42 -0700 Don't crash on \ Broken in 95338c156ce86d7b4b3cb89f98aa10beac2d877e etc. -------------------------------------------------------------------------------- a9a889f | Nicholas Feinberg | 2024-03-16 19:37:57 -0700 Remove buggy handling for un-ID'd wands This logic would hide *all* spells for monsters with un-ID'd wands. Players should no longer ever see monsters with un-ID'd wands, so add an assert instead. -------------------------------------------------------------------------------- fbd0129 | Nicholas Feinberg | 2024-03-16 19:37:01 -0700 Fix momentarily un-ID'd monster wands (SentientSupper) We had old monster info cached for a turn, meaning that you could see ijyb come into view with 'a wand of flame', xv them immediately, and see them holding 'a forked gold wand' instead. -------------------------------------------------------------------------------- c23bbe5 | Nicholas Feinberg | 2024-03-16 19:14:02 -0700 Wand description refactoring Following 0bf9c4c012e350145fa2752b77bbbcd8f03b9586. -------------------------------------------------------------------------------- 7987339 | Nicholas Feinberg | 2024-03-16 19:02:23 -0700 Further revise wand spell descriptions There's no good way to explain why players are affected differently by some spells than monsters are, but we can try to be a little less blunt than 0bf9c4c012e350145fa2752b77bbbcd8f03b9586. Also, fix Fastroot's name. It's a pun! -------------------------------------------------------------------------------- 95338c1 | Nicholas Feinberg | 2024-03-16 18:57:41 -0700 Fix randart stave names (various) Partially reverts 55136d7. Closes #3685. -------------------------------------------------------------------------------- 1a05c61 | wheals | 2024-03-16 22:53:23 +0200 Fix a crash after banishing a challenging apostle (Memoria, Ge0ff) -------------------------------------------------------------------------------- 63684f6 | wheals | 2024-03-16 22:38:54 +0200 Update Beogh vengeance accounting when cloning (#3588). Fixes #3588. -------------------------------------------------------------------------------- 65a1bb7 | David Lawrence Ramsey | 2024-03-16 12:55:44 -0500 Fix comment typo. -------------------------------------------------------------------------------- ad06451 | NormalPerson7 | 2024-03-16 09:34:59 -0500 Add SH preview and standardise AC/EV/SH previews in descriptions Previously, the AC change shown in item descriptions included temporary effects such as Qazlal's AC+3 status or Ignis' fiery armour, but the EV change did not include temporary changes. This commit changes the AC preview to match that of EV in not including temporary effects, and adds an SH preview, which also does not include temporary effects. I figure that this is the most consistent strategy, but if it is too confusing, we can always go the other way. The most important thing is that it is consistent between AC/EV/SH. Additionally, with AC/EV/SH now allowed to take fractional values, all items that affect AC/EV/SH will show the change in their descriptions, except for non-artefact rings of protection/evasion and amulets of reflection. E.g. shields of protection will now also show the AC change, for completeness, and artefact rings of protection/ evasion and amulets of reflection will show their messages (because strength and dex changes can affect flat bonuses on these items). I have merged the old method of computing the AC change into the more recent approach of fake-equipping the item, to simplify some code. -------------------------------------------------------------------------------- 0bf9c4c | SentientSupper | 2024-03-16 09:19:38 -0500 Show wand spells in monster description Add placeholder tile for bolt of light and some new descriptions. Tweak some wand spell descriptions. Charming and bolt of light will now mention their effects on the player. Roots no longer mention an increase in damage over time since that was removed in the constriction rework. Add placeholder warp space tile from dolorous, based on an edited UNUSED/gui/lugonu_bend_space.png with the palette of item/wand/i-disruption.png. [Committer's note: Squashed, and consolidated and edited commit message.] -------------------------------------------------------------------------------- 1953ddb | SentientSupper | 2024-03-16 08:00:32 -0500 Don't leak magic if antimagic rolls 0 duration Antimagic frequently rolls a duration of 0 on hits but will still print the "magic leaks into the air" message which doesn't seem right to me. -------------------------------------------------------------------------------- a344392 | Wizard Ike | 2024-03-15 22:31:33 -0700 Fix summoned protean progenitors' spawns Make their spawns summoned too. [Committer's note: fixed comments and refactored slightly.] Closes #3599. Closes #3622. -------------------------------------------------------------------------------- 9e65270 | SentientSupper | 2024-03-15 22:10:56 -0700 Add option to remove dropped items from autopickup Adds a new option: drop_disables_autopickup which removes all dropped items from autopickup automatically. A QoL thing that allows you to drop items (especially from local tiles inventory panel) without needing additional keypresses to enter the autopickup menu and disable autopickup manually. Defaults to off. -------------------------------------------------------------------------------- f7ae706 | David Lawrence Ramsey | 2024-03-16 00:01:11 -0500 Fix comment typo. -------------------------------------------------------------------------------- bc5cafa | SentientSupper | 2024-03-15 21:57:59 -0700 New tile for slug shots Based on the iron shot tile but with less outline, and colors taken from enchanted boomerangs. Feels weird for the hand cannon description to say it shoots metal slugs while the actual tiles look like sling stones. Closes #3641. -------------------------------------------------------------------------------- 49a1623 | SentientSupper | 2024-03-15 21:52:08 -0700 Revert "Reduce the rarity of rings of slaying" This reverts commit a5b73f788d0da6e87d89aed2e0f0753b06fca47e. -------------------------------------------------------------------------------- 0bc3202 | SentientSupper | 2024-03-15 21:52:08 -0700 Reduce the rarity of rings of slaying They're roughly 3x as rare as other rings for some reason and I don't think they're good enough to be receiving such special treatment. -------------------------------------------------------------------------------- 05749c3 | SentientSupper | 2024-03-15 21:52:08 -0700 Lower the price of slaying rings Rings of slaying are more than twice as expensive than other variable strength rings despite being arguably not that much better. Tone down its price to match other rings so it isn't often more expensive than good randart rings that generate in stores. -------------------------------------------------------------------------------- d24e960 | SentientSupper | 2024-03-15 21:48:49 -0700 Buff Norris cast rates Even after his previous buffs, Norris's killratio remains below 1%. In an actual game, he shows up at a time when you're already steamrolling most enemies, and then gets steamrolled. Raise his draining gaze frequency dramatically so it can actually outdrain your mp regen and also increase primal wave's cast frequency slightly. -------------------------------------------------------------------------------- 55bdc6a | SentientSupper | 2024-03-15 21:45:53 -0700 Don't leak invisible monster location with PE Fixes #3661 -------------------------------------------------------------------------------- c18e4ce | Nicholas Feinberg | 2024-03-15 21:44:30 -0700 Fix bound krakens (Talandazar) Let them fly freely, not flop foolishly. Closes #3461. Closes #3674. -------------------------------------------------------------------------------- 7cc139b | SentientSupper | 2024-03-15 21:23:30 -0700 Fix makh major destruction firing acid globs Fixes an issue introduced by 926e5b6 Closes #3678 -------------------------------------------------------------------------------- 4b9ed32 | David Lawrence Ramsey | 2024-03-15 19:49:14 -0500 Fix typo. -------------------------------------------------------------------------------- 1d96ad0 | Nicholas Feinberg | 2024-03-15 15:34:52 -0700 Fix a shocking typo (Monkooky) -------------------------------------------------------------------------------- 4c84035 | Nicholas Feinberg | 2024-03-15 15:33:15 -0700 Make the Elemental Staff check AC too For consistency with other staves. -------------------------------------------------------------------------------- d9da9a6 | Nicholas Feinberg | 2024-03-15 15:27:14 -0700 Make staff damage closer to other elemental damage Most elemental damage checks AC - see 9e354a60c687 for a fuller explanation of why, and why it's good to be consistent. Make elemental staff damage do the same. Staves of fire, cold, death, and poison all now check AC normally, and all do +25% damage from their old values. Staves of air check half AC (like other electric damage). Staves of conjurations and earth already checked AC and are unchanged. This is not intended to be a nerf or a buff to staff damage, just an attempt to make AC's effects more intuitive. Numbers are subject to change. -------------------------------------------------------------------------------- 84b946f | Nicholas Feinberg | 2024-03-15 15:16:41 -0700 Refactor staff damage -------------------------------------------------------------------------------- 55136d7 | Nicholas Feinberg | 2024-03-15 13:43:28 -0700 Begin data-ifying staves -------------------------------------------------------------------------------- ee0ae1b | SentientSupper | 2024-03-15 12:42:56 -0500 Don't let krakens into toxic bogs Closes #3456 -------------------------------------------------------------------------------- 7df3b15 | SentientSupper | 2024-03-15 11:38:26 -0500 Don't evolve while undead Closes #3535 [Committer's note: Dropped player::can_safely_mutate()'s temp parameter's being explicitly set to true, since it defaults to true anyway.] -------------------------------------------------------------------------------- b3796b0 | SentientSupper | 2024-03-15 07:47:55 -0500 Remove a random useless semicolon -------------------------------------------------------------------------------- 515539a | David Lawrence Ramsey | 2024-03-15 01:33:18 -0500 Add placeholder tile: Yred's lighting the torch. This is an edited and palette-tweaked version of UNUSED/gui/conjure_flame.png. -------------------------------------------------------------------------------- 016ad74 | Nicholas Feinberg | 2024-03-14 17:20:15 -0700 Don't crash on fog (rypofalem) -------------------------------------------------------------------------------- 77e4170 | David Lawrence Ramsey | 2024-03-14 17:47:03 -0500 Rename a god conduct to be more accurate. -------------------------------------------------------------------------------- 6768db4 | David Lawrence Ramsey | 2024-03-14 17:37:00 -0500 Remove unused "Desecrate Orcish Remains" conduct. -------------------------------------------------------------------------------- 9ec0c11 | Nicholas Feinberg | 2024-03-14 11:41:02 -0700 Somewhat refactor god_protects Add a reference-based implementation for common use cases. -------------------------------------------------------------------------------- 8cd13bf | SentientSupper | 2024-03-14 11:18:32 -0700 Make Jiyva protect jellies from harm Jiyva's mpregen and mp/wild magic/int mutations support casters well, but the random jelly spawns are especially annoying for casters. You can't firestorm when a jelly decides to hug your target. You can't shatter if there are jellies on the floor because there's a chance you damage a jelly behind a rock wall and incur penance. You can't even immolate at any time because a jelly could spawn and throw itself into the flames. This is no fun and I'm changing that. Jiyva now protects slimes from harm similarly to Fedhas with the difference that you can't fire through slimes and they'll absorb projectiles if you try to do so. Jiyva also prevents immolation scrolls from affecting jellies because using jellies as bombs is not cool (at least from Jiyva's perspective). Additionally, all god protection will protect from torment. Previously this wouldn't have had an effect because plants and ancestors already resist torment. Based on 75f1ca80bcda43d3fbc33714f3299d0209dd9cc1 with changes. [Committer's note: Did some refactoring and fixed some small issues. We should remove J's no-hurting-jellies conduct next.] Closes #3653. -------------------------------------------------------------------------------- 0fd22b6 | Nicholas Feinberg | 2024-03-14 09:24:07 -0700 Remove an unused variable (SentientSupper) Obsoleted in 3d1ca0d2d81d10d4c5f25e9f2ea6d83abcc60257. -------------------------------------------------------------------------------- 60f2335 | David Lawrence Ramsey | 2024-03-13 23:46:13 -0500 Make foul shadow mut give a stealth bonus. Like all other sources of umbra. -------------------------------------------------------------------------------- 0ab5258 | elliptic | 2024-03-13 19:59:14 -0400 Remove steel elves (ge0ff) -------------------------------------------------------------------------------- 0a1840c | David Lawrence Ramsey | 2024-03-13 18:06:08 -0500 Restore separate umbra radii for Yred and Dith. -------------------------------------------------------------------------------- c29ba85 | David Lawrence Ramsey | 2024-03-13 17:37:53 -0500 Add better placeholder tiles for foul shadow mut. These are derived from a combination of the foul stench 1 mutation tile and the inner flame spell tile, with a few minor adjustments and the palettes tweaked. -------------------------------------------------------------------------------- 6677626 | elliptic | 2024-03-13 14:50:05 -0400 Fix display of monster chance of hitting a player with positive SH -------------------------------------------------------------------------------- 9bfe03f | elliptic | 2024-03-13 11:27:07 -0400 Decrease precision in display of AC/EV changes on gear swaps From two decimal places to one decimal place, since nobody actually needs that much precision. Currently the difference is computed with two decimal places before being truncated, which means that it will say things like "AC would increase by 2.2 (7.9 -> 10.2)" - I think this is better than the alternative of making the displayed increase fluctuate between 2.2 and 2.3 as you equip/unequip unrelated armour. -------------------------------------------------------------------------------- 1ee5eff | elliptic | 2024-03-12 23:55:33 -0400 Smooth out draconian AC growth (rypofalem) Previously draconians gained 1 AC on every third level while nagas gained 1/3 AC every level (relevant in combination with armour skill etc), even though they had identical messages etc. It's unclear to me that this was ever really intentional (could just be careless parenthesation), but it mostly didn't matter prior to 5fa0bccb since draconians had very few available sources of non-integer AC without Armour skill (mainly Ozocubu's Armour). But now that it matters, let's be consistent. (Gargoyles also have fractional AC gain already.) This is effectively a 0.33 AC buff on average, but 5fa0bccb was a small EV nerf to players who previously trained to dodging breakpoints, so this seems okay. -------------------------------------------------------------------------------- fc9fac7 | SentientSupper | 2024-03-12 19:55:09 -0500 Unbug throwing nets Once upon a time there lived two bugs in a cottage. The first bug caused a third throwing net that nets a target that's been netted and then netted again with a second net to get stuck on the target without increasing the net duration but remain stuck after the target breaks free, leaving behind a net that catches nobody but yet cannot be picked up. The second bug caused netting a target that's standing on top of a net to merge the nets together, breaking both nets once the target breaks free. Now the cottage is on fire and both bugs are dead. Throwing nets that hit a netted target will not net the target and nets that successfully net a target will not merge with any nets on the floor. -------------------------------------------------------------------------------- 5386afd | SentientSupper | 2024-03-12 19:31:27 -0500 Make abyss exit spawning interrupt travel At least in local tiles, an abyss exit spawning does not interrupt autoexplore so you could press o and immediately find yourself 50 steps away from an exit that just spawned even with a force more for the message. This commit makes it that having an abyss exit or downstairs spawn interrupts autoexplore. -------------------------------------------------------------------------------- 5fa0bcc | elliptic | 2024-03-12 17:46:24 -0400 Remove AC, EV, SH breakpoints Previously raising Armour, Dodging, or Shields skill purely for the defensive benefits (as opposed to decreasing penalties of armour/shields) did nothing except at discrete points where it suddenly gave you one extra point of AC (or EV etc). With most skills we try to avoid this sort of breakpoint so that players gain less benefit from micromanaging skill levels. Although AC, EV, SH were all already computed to high precision, an internal value of 8.37 AC was rounded to 8 AC before being used for anything. This commit changes that - now a value of 8.37 AC means that 8 AC will be used 63% of the time and 9 AC will be used 37% of the time. This type of random rounding is already used to smooth out the effects of skills in various other points, including the effect of weapon skill on weapon delay. The precise internal value of 8.37 AC is currently only visible to the player when examining an equipment item and seeing how swapping it in will change their AC. Previously the game might have said "Your AC would decrease by 1 (8 -> 7)" whereas now it might say "Your AC would decrease by 0.61 (8.37 -> 7.76)". The display of player AC/EV/SH everywhere else is rounded down to an integer, similar to how weapon delay is displayed rounded down to a multiple of 0.1. I think there's a decent argument that both weapon delay and AC/EV/SH (after this commit) should be displayed with one extra digit of precision "normally", but that can be a separate discussion. A note on balance: in general I expect this to only have very minor effects. Previously AC was rounded down to an integer, EV was rounded up, and SH was rounded to the nearest integer. This means that for a "random" character not paying attention to the breakpoints, on average this commit will increase their AC by 0.5 and decrease their EV by 0.5, while leaving SH unchanged. For a player paying close attention to both AC and EV breakpoints, this commit will decrease their EV by 1 when they are at both breakpoints, but help their AC and EV relative to that when they are training between breakpoints. If there are any concerns about this being a (minor) player nerf I'd suggest increasing EV by 0.25 or something like that. -------------------------------------------------------------------------------- 7accb7e | gammafunk | 2024-03-12 14:15:22 -0500 fix: Remove an ORIENT line from a vault (dolorous) The vault wander_guarded_unrand_ratskin is in mini_monsters.des yet has a float orient. It's perfectly fine as a minivault, since it's small and has no weird issues with vault connectors, so remove that orient. -------------------------------------------------------------------------------- 5251a91 | David Lawrence Ramsey | 2024-03-12 11:53:59 -0500 Put S.o.t.D.K. back in a Crypt vault. This reverts commit 783e625e56036b44a4caa56aa6156ba30ca523d2. -------------------------------------------------------------------------------- 6270fc1 | David Lawrence Ramsey | 2024-03-12 11:53:59 -0500 Revive grunt's old S.o.t.D.K. vault, adjusted. It's renamed from grant_unrand_guarded_doom_knight to grant_guarded_unrand_doom_knight, to match the naming of all the other guarded unrand vaults in variable/mini_monsters.des. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- f5658d7 | SentientSupper | 2024-03-12 11:53:59 -0500 checkwhite -------------------------------------------------------------------------------- 957ebe1 | SentientSupper | 2024-03-12 11:53:59 -0500 Update doom knight melee effect message To account for the player being the victim. -------------------------------------------------------------------------------- 3634fed | SentientSupper | 2024-03-12 11:53:59 -0500 Rework and bring back sword of the doom knight Replace pain brand with the doom brand which causes it to inflict up to 10% of its victim's maximum health on hit. This does the opposite of the sword of power, dealing more damage the tougher the foe you face and avoids making you train necromancy for bonus damage when the weapon has -cast. Give it ^Drain to discourage swapping it in and out to use spells because of -cast or only when you face a tough enemy like a unique panlord. Also make it evil because doom sounds evil and it was used by a yred worshipper. [Committer's notes: This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8.] -------------------------------------------------------------------------------- 0418803 | David Lawrence Ramsey | 2024-03-12 11:11:31 -0500 Add placeholder tile: wielded Scythe of Curses. So that the item in question no longer erroneously uses the tile for the wielded Finisher when it's not Finisher (although the tile is a palette-tweaked and minorly adjusted version of the wielded Finisher tile). -------------------------------------------------------------------------------- 316d904 | David Lawrence Ramsey | 2024-03-12 10:50:58 -0500 Don't redundantly flag some unrands as evil. The Sceptre of Torment has the pain brand, the Sword of Zonguldrok has the reaping brand, and the obsidian axe has the draining brand. These three unrands are already evil by virtue of their brands, so they don't need to be flagged as evil. -------------------------------------------------------------------------------- 804251a | SentientSupper | 2024-03-12 09:54:38 -0500 Add punctuation to collisions, remove from misses It's unclear to me why misses call attack_strength_punctuation when the damage is always 0, so always use a period instead. Make punctuation marks in collision messages vary with amount of damage dealt. This is averaged for collisions between creatures. Collisions can sometimes deal surprising amounts of damage and this better conveys that!! -------------------------------------------------------------------------------- c880bc2 | David Lawrence Ramsey | 2024-03-12 08:41:40 -0500 Add "Brilliance" to a Crypt vault. Since it's now tied to Yredelemnul lore-wise. -------------------------------------------------------------------------------- 93135e8 | David Lawrence Ramsey | 2024-03-11 23:41:12 -0500 Rename a vault. wheals_unrand_guarded_autumn_katana is now wheals_guarded_unrand_autumn_katana, to match the naming of all the other guarded unrand vaults in variable/mini_monsters.des. -------------------------------------------------------------------------------- 7bd404c | Nicholas Feinberg | 2024-03-11 18:10:16 -0700 Nerf Cigotuvi's Embrace (elliptic) Since skeletons no longer rot, don't encourage hoarding them for Embrace AC. I'm skeptical that anyone would do this, but let's just be safe. -------------------------------------------------------------------------------- e26c5db | David Lawrence Ramsey | 2024-03-11 14:49:28 -0500 Fix comment typo. -------------------------------------------------------------------------------- 73ff4a9 | Nicholas Feinberg | 2024-03-11 12:42:08 -0700 Add two new books To get us closer to the desired three-spells-per-book average, add a Book of Movement and Book of Wicked Creation to depopulate some of the more densely-packed books. -------------------------------------------------------------------------------- 75126f5 | Nicholas Feinberg | 2024-03-11 12:11:47 -0700 New spell: Permafrost Eruption (L6 Ice/Earth) It seems like it'd be fun to have an ice/earth spell. This one plays with a targeting idea I've wanted to use for a while, an explosion that automatically targets the largest clump of enemies onscreen. (It'll never target anything adjacent to the player, which is a weakness.) The spell does one physical hit to the whichever enemy is in the centre of the blast, and another cold (AC-ignoring!) hit to that enemy and everything adjacent to it. It's intended to encourage players to go into an unusual school pairing by compensating for their school's weaknesses: Ice's difficulty dealing with single targets, and Earth's issues with enemies that have both EV and AC. Damage numbers are first drafts, and Servitor support plus a proper tile are TODOs. -------------------------------------------------------------------------------- 49d7e34 | Nicholas Feinberg | 2024-03-11 12:10:45 -0700 Add more files to the Xcode project This is dubious and might break things. Apologies if so. -------------------------------------------------------------------------------- c4f3efa | David Lawrence Ramsey | 2024-03-11 13:49:00 -0500 Improve fallback brand handling for "Brilliance". It's supposed to have a unique brand, and fallback brand handling is supposed to be done in the unrand definition. It's now replaced with a randart eveningstar of pain if it's already been generated. Accordingly, remove its fallback brand handling from minmay_guarded_unrand_brilliance. -------------------------------------------------------------------------------- 7bcfc0a | David Lawrence Ramsey | 2024-03-11 13:23:13 -0500 Fix spelling. -------------------------------------------------------------------------------- 100c63a | David Lawrence Ramsey | 2024-03-11 12:58:49 -0500 Fix build (why did this compile?) (WizardIke). -------------------------------------------------------------------------------- cb3c702 | patrick | 2024-03-11 10:33:27 -0400 Fix an error I made in the shops definition syntax I made a recent update without fully testing all the possibilities. I apologize to all those who have been harmed by my negligence. -------------------------------------------------------------------------------- dc239d6 | David Lawrence Ramsey | 2024-03-10 17:06:06 -0500 Fix song/spoken word citations. They use quotes, not underlines like book citations. -------------------------------------------------------------------------------- a07e523 | Implojin | 2024-03-10 16:57:02 -0500 Add a brand inscription to the dragonskin cloak (ragingrage) -------------------------------------------------------------------------------- 3729bd5 | David Lawrence Ramsey | 2024-03-09 21:27:35 -0600 Add a quote for the sacrificial altar of Ru. -------------------------------------------------------------------------------- ff75c0d | David Lawrence Ramsey | 2024-03-09 16:18:21 -0600 Mark monsters w/foul flame melee attacks as evil. -------------------------------------------------------------------------------- 53a61d2 | David Lawrence Ramsey | 2024-03-09 15:53:58 -0600 Fix capitalisation. -------------------------------------------------------------------------------- 46848ad | David Lawrence Ramsey | 2024-03-09 15:24:09 -0600 Reformat a few lines of mutation data. -------------------------------------------------------------------------------- 09a3371 | Implojin | 2024-03-09 10:27:56 -0600 Fix rollpage mutation descriptions These were missed in 0ebe13f60c. -------------------------------------------------------------------------------- 66fdcfd | SentientSupper | 2024-03-09 08:09:09 -0600 Let armataurs with bardings and talons kick foes Closes #3636 -------------------------------------------------------------------------------- 0ebe13f | SentientSupper | 2024-03-09 08:07:37 -0600 Change short desc of rollpage mutation Having two mutations MUT_ROLL AND MUT_ROLLPAGE share the same short_desc means you can only interact with one of them in wizmode. -------------------------------------------------------------------------------- e8a8869 | gammafunk | 2024-03-09 00:25:17 -0600 fix: WebTiles Health and MP spacing (particleface) The changes in 8f7e8e6e inadvertantly removed the whitespace that comes after the "HP:" and "MP:" stat labels in the HUD. This was a result of incorrectly joining the span tags for these labels to the logical lines of the span tags containing the numeric values portion of the display for these stats. This commit adds the new logical lines where necessary. It also removes some newlines added in 8f7e8e6e that were inserted within the `` tag elements to allow for use of newlines without making new logical lines. It's not that hard to work a few overly long lines, and having a newline inserted after e.g. `` looks extremely dubious. -------------------------------------------------------------------------------- 3d30ec2 | Nicholas Feinberg | 2024-03-08 19:28:08 -0800 Add banana bread (hellmonk) -------------------------------------------------------------------------------- f59354a | David Lawrence Ramsey | 2024-03-08 19:00:11 -0600 Fix spelling. -------------------------------------------------------------------------------- add1f40 | David Lawrence Ramsey | 2024-03-08 18:46:01 -0600 Adjust Book of the Earth description. Since mountain dwarves are back, but hill dwarves are not. -------------------------------------------------------------------------------- a018e7e | Nicholas Feinberg | 2024-03-08 16:10:52 -0800 Remove protean progenitor sInv Not at all clear to me why they had it, and not conducive to player intuitions about which monsters do and don't see invisible. -------------------------------------------------------------------------------- c4e8710 | David Lawrence Ramsey | 2024-03-08 17:00:38 -0600 Adjust "Brilliance" description a bit. To make it clearer that its old wielders are the ones being repulsed, not its shadow. -------------------------------------------------------------------------------- 97ce250 | David Lawrence Ramsey | 2024-03-08 13:26:27 -0600 Add a quote for the tower shield of Ignorance. -------------------------------------------------------------------------------- 2e395d4 | David Lawrence Ramsey | 2024-03-08 11:07:38 -0600 Colour foul flame melee attacks properly. Since they're now a super-umbra instead of an evil halo. -------------------------------------------------------------------------------- 9eff4c5 | patrick | 2024-03-08 11:27:27 -0500 Expand the inventory of the One-of-a-Kind Rings shop We here at the One-of-a-Kind Rings corporate offices would like to thank you all for your continued support of our franchise. We strive every day to provide dungeon-goers with the finest of unique rings, and with the recent advances in artefact-specification technology, we're pleased to present an all-new addition to our inventories. One-of-a-Kind Rings franchises will now generate one guaranteed randart ring with a property that's usually unavailable on randarts. These properties are: Repel Missiles, Clarity, rMut, SH+5, HP+X, and MP+X (where X for HP and MP can vary from +10 to +15; for MP, this is higher than the usual fixed value of MP+9). Once again, thank you for your continued patronage. -------------------------------------------------------------------------------- cc61e46 | patrick | 2024-03-08 11:01:26 -0500 Make an extremely important update to the shop def documentation No doubt that thousands, perhaps millions, of lives will be saved from this. No need to thank me. -------------------------------------------------------------------------------- 3542139 | David Lawrence Ramsey | 2024-03-07 23:11:23 -0600 Fix comment typo. -------------------------------------------------------------------------------- 01338f7 | Alex Jurkiewicz | 2024-03-07 21:04:18 -0800 Ignore non-.yaml files in games.d/ Use case: I disable forks by renaming them to `bcrawl.yaml.disabled`. -------------------------------------------------------------------------------- 3af422c | Quinten Konyn | 2024-03-07 21:02:33 -0800 Check for flight item removal safety on swap When removing an item, `_safe_to_remove_or_wear` checked for the safety of removing the item if it provided flight and the player was above lava or deep water. However when swapping two items, `remove` is false and the removal of the old item is implicit. The function to check the safety of flight removal `safe_to_remove` is not called in this case. This commit adds a flight removal safety check in the branch of `_safe_to_remove_or_wear` that has determined that we're swapping out an old item, echoing the check that was already happening for non-swap removal. I added comments to both `safe_to_remove` checks, because it is not immediately clear that only flight removal safety is checked by that funciton. `_safe_to_remove_or_wear` has a comment stating that it checks for stat zero and does not mention flight, so I wanted to make sure the code doing something other than what that comment says was clearly signalled. Resolves #3502. -------------------------------------------------------------------------------- ee4d739 | David Lawrence Ramsey | 2024-03-07 21:13:22 -0600 Add a few more ancestor names. -------------------------------------------------------------------------------- 5f7579b | David Lawrence Ramsey | 2024-03-07 19:47:23 -0600 Adjust foul flame melee attack description. Since it does extra damage to everything, mostly to holies and good god worshippers, but that needs to be conveyed in limited space. -------------------------------------------------------------------------------- 8f7e8e6 | Alex Jurkiewicz | 2024-03-07 17:42:26 -0800 fix: Update game.html tags There were a number of `
` and `` tags that were self-closed (eg `
`). Trailing slashes in opening tags are ignored by HTML parsers and by convention only used for "void" tags (those that don't support closing tags). This led to HTML parsers in some cases misparsing the document, where eg `
` would be interpreted as `
` instead of the intended `
`. Read more: https://developer.mozilla.org/en-US/docs/Glossary/Void_element#self-closing_tags Convert all `
` and `` to standards compliance. Also, make the following (mostly cosmetic) changes with Prettier: * Consistent 2-space indentation * Add a trailing slash to all `` tags * Don't use HTML comments to keep sequential ``s on the same line * Clean up inline style strings * Consistent JS quoting Closes #3497. -------------------------------------------------------------------------------- 31c6501 | yrdzrfxndfvh | 2024-03-07 17:38:46 -0800 Remove redundant 'unblindable' flags Obsoleted by b856850. Closes #3587. -------------------------------------------------------------------------------- d0e5102 | elliptic | 2024-03-07 18:07:47 -0500 Remove a magic breakpoint in book acquirement A character with no magic skills has a 0% chance of getting a spellbook instead of a manual from acquirement. Previously the chance of getting a spellbook increased up to 40% as the proportion of a character's skills that were magic increased up to 25%, and then suddenly the chance jumped all the way to 100%. This commit removes the breakpoint, so magic-oriented characters who previously had a 100% chance of getting a spellbook will now get a mix of spellbooks and manuals. -------------------------------------------------------------------------------- 007c218 | elliptic | 2024-03-07 18:07:47 -0500 Tweak weighting in talisman acquirement Most talismans aren't randarts and thus are useless if they are duplicates, so increase the weight scaling factor for not-already-seen talismans. Also, if you have the skill for a talisman of a given tier, that probably means you already have at least one talisman of that tier and are most interested in a talisman of tier one higher, not a second talisman of the same tier (and a talisman of lower tier is even less likely to be interesting). -------------------------------------------------------------------------------- d6aa9b3 | elliptic | 2024-03-07 18:07:47 -0500 Tweak acquirement option frequencies Previously staff acquirement stopped happening once the player found all staff types (even though it can still produce artefact staves). This meant that other acquirement types became more common once all staff types had been found, meaning that acquiring a useless staff instead of gold could be a good idea just to improve quality of future acquirements. Also, the just-implemented talisman acquirement had a higher chance of being offered to players with more Shapeshifting skill, which meant that once a player found all the talismans they wanted raising Shapeshifting skill actually made their acquirement scrolls worse. Replace these conditions with flat probabilities - put staff and talisman in the pool of possible acq options (from which 3 non-gold options are selected) only 2/3 and 1/3 of the time respectively. -------------------------------------------------------------------------------- 91cf321 | Nicholas Feinberg | 2024-03-07 14:58:17 -0800 Refactor Gozag shop acq And ban book shops for Djinni - mostly, though not entirely, useless. -------------------------------------------------------------------------------- 7ecb952 | Chuck Sellick | 2024-03-07 14:58:17 -0800 Gozag shouldn't offer jewellery shops to Coglin Jewellery shops have a 10% chance per item of generating a talisman, but it's highly unlikely you'd buy one for that reason when general stores can include them anyway. Closes #3633. -------------------------------------------------------------------------------- e89081b | David Lawrence Ramsey | 2024-03-07 10:37:29 -0600 Add talisman acquirement. Modeled after staff acquirement, in that it's accessible via the scroll, but only commonly so with enough shapeshifting skill. It's biased in favour of talismans you haven't seen, and more biased in favour of shapeshifting skill. However, no talismans are entirely ruled out; it's still possible, although rare, to acquire a talisman with no shapeshifting skill. Accordingly, start keeping track of what talismans we've seen, as is already done with misc items. Xom can also give talismans as gifts now, chosen entirely randomly. -------------------------------------------------------------------------------- a006e77 | Nicholas Feinberg | 2024-03-06 22:13:24 -0800 Use more references -------------------------------------------------------------------------------- 40f72ca | Nicholas Feinberg | 2024-03-06 22:11:02 -0800 Improve valid_blink_destination's type signature -------------------------------------------------------------------------------- 1a6acf8 | Nicholas Feinberg | 2024-03-06 22:06:27 -0800 Fix: leaky hop targeter (acrobat) Don't reveal unseen invisible monsters with the frog hop targeter. -------------------------------------------------------------------------------- c5db3fc | elliptic | 2024-03-06 21:52:37 -0500 Make the delay display in @ round down instead of up (pisaster) To match the delay display when you examine a weapon. I don't have a preference for round up vs round down, but we should be consistent. -------------------------------------------------------------------------------- 2954f76 | David Lawrence Ramsey | 2024-03-06 20:44:50 -0600 No jewellery acquirement if useless, redux. _find_acquirement_subtype() now accounts for the no-jewellery mutation, and won't generate jewellery with it. -------------------------------------------------------------------------------- 83232ee | David Lawrence Ramsey | 2024-03-06 17:21:53 -0600 Fix crash while generating wizmode acquirement stats. Skip over the gizmo and ring preview slots, since we can't acquire for them. -------------------------------------------------------------------------------- d7a9830 | David Lawrence Ramsey | 2024-03-06 17:07:36 -0600 Fix possible wizmode floating point exceptions. If you run wizard mode acquirement or randart property stats for fewer than 10 iterations, don't display the calculation of the completed percentage, because the formula for it will divide by zero. -------------------------------------------------------------------------------- 4925a30 | David Lawrence Ramsey | 2024-03-06 16:25:52 -0600 Revert "Destroy unchosen misc items in acquirement." Since the logic would only be used for scroll acquirement, which isn't done for misc items. This reverts commit 817ac4a56f2a2e6c12e8715ccea3086e342bd4d4. -------------------------------------------------------------------------------- 817ac4a | David Lawrence Ramsey | 2024-03-06 15:41:59 -0600 Destroy unchosen misc items in acquirement. Since we can acquire them, just not via scrolls. -------------------------------------------------------------------------------- 923888f | David Lawrence Ramsey | 2024-03-06 15:34:00 -0600 Fix enum spelling. TAG_MINOR_COGLIN_NO_JEWELRY -> TAG_MINOR_COGLIN_NO_JEWELLERY. -------------------------------------------------------------------------------- 5379399 | David Lawrence Ramsey | 2024-03-06 11:50:16 -0600 No jewellery acquirement if we can't wear any. Specifically, leave it out of the acquirement classes, as is done for weapons if you can't wield any, and armour if you can't wear any. -------------------------------------------------------------------------------- 41e9cca | David Lawrence Ramsey | 2024-03-06 11:06:30 -0600 Fix message spacing. -------------------------------------------------------------------------------- 619fc34 | Nicholas Feinberg | 2024-03-06 08:22:49 -0800 Fix hand cannon description (Qwer) -------------------------------------------------------------------------------- 46d191b | elliptic | 2024-03-06 00:46:34 -0500 Fix coglins not getting full Ashenzari piety -------------------------------------------------------------------------------- 87aaac5 | David Lawrence Ramsey | 2024-03-05 16:50:52 -0600 Adjust orcbow description. Since hill orcs are no longer a thing, but the exodus of orcs into the dungeon is. -------------------------------------------------------------------------------- cf8ae8b | Nicholas Feinberg | 2024-03-05 13:07:42 -0800 Ignore more Xcode stuff -------------------------------------------------------------------------------- 41a94f2 | Nicholas Feinberg | 2024-03-05 13:07:42 -0800 Turn hand cannons into slug throwers People feel like cannons should shoot bullets. Very well! -------------------------------------------------------------------------------- 9e401d1 | wheals | 2024-03-05 22:11:10 +0200 Fix prompt when attacking monsters with proper names (#3626) -------------------------------------------------------------------------------- d155132 | wheals | 2024-03-05 22:11:10 +0200 vault: Fix a silver statue (#3598) Fixes #3598 -------------------------------------------------------------------------------- 02cdc05 | Nicholas Feinberg | 2024-03-05 10:49:35 -0800 Fix: don't quiver 'invent gizmo' -------------------------------------------------------------------------------- c93699c | wheals | 2024-03-05 17:47:05 +0200 Coglins: fix the autumn katana giving free attacks with the other weapon (#3603) Fixes #3603 No Fun Allowed -------------------------------------------------------------------------------- 070d9c1 | wheals | 2024-03-05 17:31:05 +0200 Coglins: only rev up once per cast of Manifold assault -------------------------------------------------------------------------------- fbf9df6 | wheals | 2024-03-05 17:05:33 +0200 Show all skills if the only trainable ones would be hidden (#3501) Fixes #3501 -------------------------------------------------------------------------------- 8620646 | wheals | 2024-03-05 16:44:26 +0200 Treat reflected phials of floods correctly (#3600) If the player fired them, make a full-sized splash and do waterlogging. Fixes #3600 -------------------------------------------------------------------------------- 0454c09 | wheals | 2024-03-05 16:08:32 +0200 Print a message when trying to autoexplore while confused (#3553) Fixes #3553 -------------------------------------------------------------------------------- 8c5b87d | wheals | 2024-03-05 15:32:03 +0200 docs: Update options guide for dump_order (#3495) Oudated since 9c56bcba7, though the option to use Lua has existed, apparently undocumented, since version 0.1.4. -------------------------------------------------------------------------------- aed7c0c | wheals | 2024-03-05 14:43:32 +0200 fix: don't sometimes choose invalid random combos (#3546) This could most easily be reproduced by choosing Shapeshifter and a random species. If the coinflip led to the species being resolved first, then it could choose Mummy or Ghoul, since it hadn't copied Shapeshifter from ng_choice into ng. Fixes #3546 -------------------------------------------------------------------------------- 9348d45 | David Lawrence Ramsey | 2024-03-05 00:59:31 -0600 Clarify foul flame weapon brand description. Good god worshippers can't use foul flame-branded weapons, just as holy beings can't. -------------------------------------------------------------------------------- 36a8ca9 | David Lawrence Ramsey | 2024-03-05 00:45:08 -0600 Add red vine stalker player base tiles. Since Maurice is a red vine stalker. These are just palette-tweaked versions of the green ones, which are now renamed to indicate their colour. -------------------------------------------------------------------------------- d166fa8 | David Lawrence Ramsey | 2024-03-04 18:25:55 -0600 Deathbed conversion clears vengeance (#3576). For ordinary orcs, as is done for defeated orc apostles (except that sneak attacks also work on ordinary orcs). Note that this is the only type of conversion that works on orcs marked for vengeance now. Add conversion types for vengeance and follower vengeance, and a few vengeance speech lines. -------------------------------------------------------------------------------- 40f424e | wheals | 2024-03-04 12:16:57 +0200 Credit Wizard Ike -------------------------------------------------------------------------------- 1c984fe | Nicholas Feinberg | 2024-03-03 21:11:28 -0800 Revert "fix double portal messages (descent) (real)" Broke many more important things, like 'slime walls opening' and 'portals not being unlimited use'. We will do a real fix for this one day. Reverts b8176ab9f12de3214a609a7000c4832df59a3880. -------------------------------------------------------------------------------- 8a157a6 | elliptic | 2024-03-03 23:59:15 -0500 Don't let players trigger spiders_nest_spider_trap as many times as they want 831329d5 placed a second copy of the same basket of spiders trap in this vault, which ended up meaning that when you stepped on one of the two traps, the other trap would become unremovable and you could just repeatedly trigger it to kill as many (experience and piety-giving) redbacks as you wanted. This commit makes it so that only one of the traps actually places; there are presumably ways to make the vault work with multiple copies but this seemed like the easiest fix for now. -------------------------------------------------------------------------------- 1f4d303 | David Lawrence Ramsey | 2024-03-03 18:08:39 -0600 Fix breath fire desc (NormalPerson7) (#3621). Closes #3621. -------------------------------------------------------------------------------- 145b2e8 | Nicholas Feinberg | 2024-03-03 15:54:41 -0800 Fix off-hand wielding non-weapons (Memoria) Hopefully! -------------------------------------------------------------------------------- fe4e56b | David Lawrence Ramsey | 2024-03-03 17:21:05 -0600 Fix an incorrect key for orc follower speech. -------------------------------------------------------------------------------- 64ea0e4 | David Lawrence Ramsey | 2024-03-02 23:24:12 -0600 Revert "Adjustments for Spellforged form" This reverts commit 82787085d03d1af1fc06f7f07c22e844af5fe98f. -------------------------------------------------------------------------------- e499677 | David Lawrence Ramsey | 2024-03-02 23:23:44 -0600 Revert "Add Spellforged Talisman" This reverts commit 11ff892dbcd30c8fda559df780a7a5bea4325432. -------------------------------------------------------------------------------- e1e0f86 | David Lawrence Ramsey | 2024-03-02 23:14:20 -0600 Add a few ancestor names. -------------------------------------------------------------------------------- c4c496a | Monkooky | 2024-03-02 20:33:11 -0600 remove base UC from Spellforged Form Somewhat pointless addition to the design -------------------------------------------------------------------------------- 9b0da38 | Monkooky | 2024-03-02 20:33:11 -0600 Adjust Spellforged Infuse, AC Should feel a little better to use for high int casters. Infuse might be too strong now. -------------------------------------------------------------------------------- cc62650 | Monkooky | 2024-03-02 20:33:11 -0600 Tweak Spellforged Form Make the description more informative, and raise the AC granted (without raising the cap) This likely still needs tweaks. -------------------------------------------------------------------------------- 8278708 | Monkooky | 2024-03-02 20:33:11 -0600 Adjustments for Spellforged form Make intelligence changes properly update AC display Make spellforged form not benefit from int for spell fail rates Make spellforged form account for int drain -------------------------------------------------------------------------------- 11ff892 | Monkooky | 2024-03-02 20:33:11 -0600 Add Spellforged Talisman Adds a new T2 talisman with +1 AC/2 intelligence over 10 -8 EV, scaling down to 0 at max skill Innate infusion, with normal power at minimum skill and quintuple power at max skill Still needs description work, AC updates without reforming -------------------------------------------------------------------------------- ba8f9cf | David Lawrence Ramsey | 2024-03-02 09:52:10 -0600 Prevent disarming orc apostles (#3604). Since we already can't take their weapons via Tukima's. This also avoids a crash on the ^ menu, caused by assuming all orc apostles have weapons and trying to calculate the damage from those weapons. Closes #3604. -------------------------------------------------------------------------------- 2ff3c99 | David Lawrence Ramsey | 2024-03-02 09:16:47 -0600 Assert on getting a name from an unnamed weapon. It's clearer than a straight crash. -------------------------------------------------------------------------------- 8e3e136 | David Lawrence Ramsey | 2024-03-02 08:39:16 -0600 Don't call is_artefact() twice naming weapons. -------------------------------------------------------------------------------- 69a5a37 | DracoOmega | 2024-03-02 03:57:42 -0330 Properly label gizmos on the " screen They did actually show up there, but the slot was labelled 'Unknown'. -------------------------------------------------------------------------------- c481c65 | David Lawrence Ramsey | 2024-03-02 01:23:02 -0600 Add clarifying comment. -------------------------------------------------------------------------------- f897c97 | DracoOmega | 2024-03-02 03:47:08 -0330 Don't crash on various things related to the ring preview slot At the very least, from viewing the " screen, but probably others as well. -------------------------------------------------------------------------------- 85ff8e3 | David Lawrence Ramsey | 2024-03-02 01:06:29 -0600 Don't call name_weapon() on artefacts. -------------------------------------------------------------------------------- 97116cf | David Lawrence Ramsey | 2024-03-02 00:48:03 -0600 Use maybe_name_weapon() when changing species. In the new silent mode. This also deduplicates code. -------------------------------------------------------------------------------- 684d82a | David Lawrence Ramsey | 2024-03-02 00:47:58 -0600 Allow disabling maybe_name_weapon() messages. So we can use it to silently name a weapon. -------------------------------------------------------------------------------- a1b6460 | David Lawrence Ramsey | 2024-03-02 00:47:12 -0600 Refactor weapon naming a bit. Getting the name of a weapon is now in its own function, get_weapon_name(), and is less entangled with maybe_name_weapon() and say_farewell_to_weapon(). -------------------------------------------------------------------------------- 2d1f746 | David Lawrence Ramsey | 2024-03-01 23:39:14 -0600 Don't erroneously skip over slots w/artefacts. And remove unused variable. This code needs to be deduplicated from that of maybe_name_weapon(). -------------------------------------------------------------------------------- 896cc94 | David Lawrence Ramsey | 2024-03-01 23:32:58 -0600 Don't name artefacts when changing to coglin. -------------------------------------------------------------------------------- b28a26c | David Lawrence Ramsey | 2024-03-01 21:37:01 -0600 Name wielded weapons when changing to coglin. Via the wizmode "change species" command. This avoids a crash when trying to unwield an unnamed weapon, which can happen if you changed species from non-coglin to coglin while wielding a non-offhand weapon. Accordingly, move the WEAPON_NAME_KEY definition from items.cc to items.h, so we can use it in change_species_to(). -------------------------------------------------------------------------------- d5c3ca0 | David Lawrence Ramsey | 2024-03-01 18:39:30 -0600 Make '!' and '?' work in wizard menus (Aliscans). Do this by overriding skip_process_command(), as is done in a few other places. Closes #3610. -------------------------------------------------------------------------------- ef4fe23 | elliptic | 2024-03-01 16:29:23 -0500 Tweak recommended backgrounds on Co -------------------------------------------------------------------------------- 21d2723 | DracoOmega | 2024-03-01 17:22:42 -0330 Minor additional mmov-related cleanup I'd really like to be able to just use a 'new_pos' value in _monster_move instead of constantly going 'mons->pos() + delta' but a couple places at the end specifically reset delta and even vaguely rely on it being reset to function as they do (such as the chance for a confused monster to additionally hit itself after attacking another monster >.>) A couple of them seem probably like they can be handled another way, but as that is a functional change (however minor), I am not doing that here. -------------------------------------------------------------------------------- aa1d24b | Monkooky | 2024-03-01 17:22:42 -0330 refactor handle_monster_move handle_monster_move uses a global variable 'mmov' which is manipulated by several functions. This obfuscates how mmov is set, and makes it difficult to be confident about the current state of mmov at any given time. This refactor makes several functions return a new value for 'mmov' instead of directly manipulating it, and renames such functions to better document their function. Other functions are directly passed a reference to mmov with minimal change to functionality. -------------------------------------------------------------------------------- 64bcc31 | DracoOmega | 2024-03-01 16:21:05 -0330 Improve EV preview for more item types Item descriptions will now list EV changes caused by shield penalties and stat changes on any type of equipment (ie: artefact weapons, jewellery) -Shields will list EV changes from equipping them even if you have a 2-handed weapon equipped. (Looking the weapon itself will show the change from removing it). This feels better than automatically folding in removing such a weapon into the shield's description. -Rings will always list their stats as if you had room to equip one more ring (and not say 'switch' in their description) since it's impossible to guess where the player would want to put it Internally, ring previews are handled by making an additional internal equipment slot that is used only for these previews (so that it can list them unaffected by however many rings the player has on at the time). EV change will only be listed at all for weapons/jewellery that modify this (since the vast majority will not). I considered not showing it on aux armour by default as well, but there was some concern that this might be more confusing than leaving it there all the time? -------------------------------------------------------------------------------- 05d3356 | DracoOmega | 2024-03-01 16:21:05 -0330 Allow querying equip/unequip verbs for given items -------------------------------------------------------------------------------- fff9401 | SentientSupper | 2024-03-01 16:21:05 -0330 Newline ac and ev preview in armor description It's easier on the eyes. -------------------------------------------------------------------------------- a5ee4a5 | regret-index | 2024-03-01 16:01:46 -0330 Prevent Coglins from getting jewellery-focused troves (Flugkiller) After the species' restriction of rings in 54e5184 and amulets in ae3e191, there is no rewards for said species to be found in the troves that solely place jewellery, so those troves can be restricted for Coglins. Strictly speaking, nicolae_trove_octotrove places non-jewellery equipment alongside the amulets and rings. However, shields are also extremely discouraged for Coglins, which leaves the trove a source of three hats. It thus has also thus been restricted. -------------------------------------------------------------------------------- b37f330 | David Lawrence Ramsey | 2024-03-01 09:31:39 -0600 Make mad acolytes of Lugonu worship Lugonu. -------------------------------------------------------------------------------- 918cac0 | David Lawrence Ramsey | 2024-03-01 08:42:17 -0600 Fix wizmode item creation crash (#3595). If prompt_menu = false in your rc file. Closes #3595. -------------------------------------------------------------------------------- 706899e | DracoOmega | 2024-03-01 00:16:40 -0330 Don't crash when autodazzler triggers while you're invisible (And lacking see invis) The code here somewhat reasonably seems to assume that if there's an agent with a non-player ktype that they're a monster. But I currently can't seem to have the dazzler tracer both count friendlies properly *and* not prompt the player without using the player as its source and using a non-player ktype. This feels wrong, and like the real solution lies elsewhere, but for now let's at least double-check that the agent is a monster instead of crashing. -------------------------------------------------------------------------------- afe9d2b | gammafunk | 2024-02-29 20:30:19 -0600 doc: The c_choose_coglin_gizmo hook -------------------------------------------------------------------------------- 9f707a9 | DracoOmega | 2024-02-29 22:12:47 -0330 Make ManaRev and ParryRev scale smoothly instead of on/off (elliptic) Per the discussed suggestion, ParryRev give 2/4/5 AC based on visible Rev status tier (with disarm happening only when fully Revved). ManaRev likewise gives 20/40/80 mp regen based on Rev tier (steeper scaling, but there's no additional capstone benefit here). It's plausible this is still on the weak side, but I'd like to see it in practice a little before I staple some additional MP to it. (I also refactored some code slightly so that the status light and these gizmo properties reference the same concept of tier) -------------------------------------------------------------------------------- 7b30705 | DracoOmega | 2024-02-29 21:35:43 -0330 Fix RegenMP being listed twice on randart amulets of magic regen This was only a visual bug. It still only applied a single time. -------------------------------------------------------------------------------- 3e1049b | David Lawrence Ramsey | 2024-02-29 15:43:35 -0600 Fix punctuation. -------------------------------------------------------------------------------- ec57dfc | gammafunk | 2024-02-29 14:24:20 -0600 feat: Coglin gizmo acquirement support for clua Add the hook `c_choose_coglin_gizmo` for clua users to choose their coglin gizmo, also adding a new value to use with the clua `items.acquirement_items()` function to check the offered gizmos. -------------------------------------------------------------------------------- c871cf9 | gammafunk | 2024-02-29 14:24:20 -0600 refactor: Move some defines to a different header The define keys related to regular acquirement as well as oka weapon gifting were in religion-enum.h, when none of them are enums and only some of them are even related to relgion. Move these to acquire.h, adding a couple includes in some cc files and removing some includes of religion-enum.h in a couple other header files. Overall this should reduce header dependency, since one of the headers with a removed include is player.h -------------------------------------------------------------------------------- 667c705 | David Lawrence Ramsey | 2024-02-29 11:59:53 -0600 Display msg for MD and max-ench artefacts (#3605). Closes #3605. -------------------------------------------------------------------------------- dfd1246 | Nicholas Feinberg | 2024-02-29 09:22:35 -0800 Tweak hunter starting slings (elliptic) Make the off-hand worse than the primary, as with hexslinger and melee starts. -------------------------------------------------------------------------------- 5dfea8e | Nicholas Feinberg | 2024-02-29 09:17:53 -0800 Deduplicate a magic rev number -------------------------------------------------------------------------------- 403443e | Nicholas Feinberg | 2024-02-29 09:12:03 -0800 Start Coglins with dual weapons (elliptic) Remove a tiny bit of scrounging for daggers. Any start which has a one-handed melee weapon now gets a bonus +0 dagger. Hexslinger gets a bonus -2 sling, and hunter gets two +1 slings instead of the bow. -------------------------------------------------------------------------------- f2dc5a0 | DracoOmega | 2024-02-29 13:08:47 -0330 Prevent a crash when unequipping Faith after Coglin save upgrade It was calling god_speaks before the level was fully loaded, and for some ancient reason god_speaks uses a fake monster at the player's location, which was trying to perform unused string replacements involving the feature description of the tile the player was standing before the level they were on was fully loaded.... I think some more of this ought to be refactored in future, but this seems to fix the immediate crash for now. -------------------------------------------------------------------------------- 4f87150 | Monkooky | 2024-02-29 09:27:20 -0600 make regen/regenMP gizmos attune previously, if tinkered up while not at full hp/mp, would never attune. -------------------------------------------------------------------------------- 0c985b5 | David Lawrence Ramsey | 2024-02-29 09:14:10 -0600 Deduplicate code in _handle_regen_item_equip(). By using the now non-static item regen-checking functions. Partially suggested by matta. -------------------------------------------------------------------------------- 1203c30 | David Lawrence Ramsey | 2024-02-29 09:03:59 -0600 Move item regen-checking funcs to item-prop.cc. Since they can't be static anymore. -------------------------------------------------------------------------------- 9e01900 | David Lawrence Ramsey | 2024-02-29 08:53:26 -0600 Fix spelling of "no jewellery" mutation/ -------------------------------------------------------------------------------- 4c7f439 | elliptic | 2024-02-29 09:29:08 -0500 Fix a crash on equip (Monkooky) -------------------------------------------------------------------------------- 3570a56 | David Lawrence Ramsey | 2024-02-29 08:03:41 -0600 Add a few gizmo adjectives/nouns. -------------------------------------------------------------------------------- 233958a | DracoOmega | 2024-02-29 01:25:28 -0330 Improve % screen for Coglins Properly say that rings are both unavailable, and list their gizmo there as well. -------------------------------------------------------------------------------- 68838b5 | David Lawrence Ramsey | 2024-02-28 22:45:13 -0600 Fix spelling. -------------------------------------------------------------------------------- e087637 | David Lawrence Ramsey | 2024-02-28 22:31:44 -0600 Fix punctuation. -------------------------------------------------------------------------------- dcaf52a | David Lawrence Ramsey | 2024-02-28 22:31:40 -0600 Fix typo. -------------------------------------------------------------------------------- 62a8415 | DracoOmega | 2024-02-29 00:51:17 -0330 Continue to shuffle gizmo tile locations That just broke REGULAR builds instead... oops. -------------------------------------------------------------------------------- 5854fa9 | DracoOmega | 2024-02-29 00:37:46 -0330 Maybe fix tag upgrade builds I didn't even notice there was major version tagging inside of tile definition files.... -------------------------------------------------------------------------------- c347e58 | DracoOmega | 2024-02-29 00:31:44 -0330 Fix being able to use Invent Gizmo from xl 1 Not sure how that statement ended up getting deleted. -------------------------------------------------------------------------------- 4936369 | DracoOmega | 2024-02-28 23:58:40 -0330 Change Cloak of the Thief's effect It seems widely agreed these days that Cloak of the Thief's fog effect is not only double-edged but perhaps actively bad. Sometimes it saves you, but many other times it reduces your ability to use ?blinking without actually benefitting you at all. Many experienced players think it may be worse than a plain cloak and that feels like a sad place for an unrand to be. So let's try something else entirely! Instead of any fog effect, Cloak of the Thief now provides noise suppression while wearing it (equivalent to, and not stacking with, the mutation). Since this is a very powerful effect, I have also reduced the enchantment to +0 (and increased the slaying penalty to -3). The hope is that this is more exciting than the cloak used to be without being unreasonable. (If I've overshot the numbers, they can always be changed) -------------------------------------------------------------------------------- 2a815d3 | DracoOmega | 2024-02-28 23:58:40 -0330 New unrand: Gloves of the Gadgeteer Using the same (non-stacking) boost as Gadgeteer gizmos (ie: +30% faster evocable recharge and 30% chance not to consume a wand charge), they additionally boost wand power by 30%, but are fragile. Gloves that do something very different than other artifact gloves (and are hopefully fun and different about it without being unreasonable) -------------------------------------------------------------------------------- 1a98434 | DracoOmega | 2024-02-28 23:58:39 -0330 Make Coglin off-hand weapons fall off when switching species Instead of being stuck there entirely until you switch back. -------------------------------------------------------------------------------- a046ce8 | DracoOmega | 2024-02-28 23:58:39 -0330 Correct constriction status description (ge0ff) -------------------------------------------------------------------------------- 481bfe3 | DracoOmega | 2024-02-28 23:58:39 -0330 Prevent allies from displacing you with Electrolunge (lici) Even if your allies were just trying to be helpful, randomly blinking the player if you got in their way had the chance of being needlessly endangering. So now allies won't cast it if they would steal the player's spot. (But also add a message if the player somehow gets displaced by the spell anyway, which is currently narrowly possible (ghosts) and may be more possible in the future.) -------------------------------------------------------------------------------- ae3e191 | DracoOmega | 2024-02-28 23:58:39 -0330 Coglin Gizmos! While the latest incarnation of the coglin downside (no rings, but rF+/rC+ at xl 13) may be at a reasonable power level, there's been much interest expressed in making this system a little more involved, randomized, and 'exciting'. So here is an attempt at this which tries to capture some very fun coglin flavour in the process: Coglins no longer gain fixed resists at xl 13, and in addition to being unable to wear rings, also cannot wear amulets. But in exchange, they get a one-time choice of 3 random 'gizmos' at xl 14 - randomized equipment designed to fill part of the role of the jewelry they replace. The intent is that these gizmos are still overall a net downside compared to normal jewelry slots (with the earlier power, flexibility, and lategame artifact possibilities those hold), but that they preserve some of the choice and excitement of finding new items and deciding between them - and not always knowing what you're going to end up using at the start of the game. A downside that *feels* like an upside. After all, being fun should be one of the foremost criteria for a new species, right? These gizmos are generated as follows: Each gizmo has exactly 1 'rare property' and 2 'common properties'. There are 6 total common properties (rF+, rC+, rPois+rCorr, rElec, Will+, Slay+3) and the player is gauranteed to see all 6 of them each game - just in randomized combinations. There are currently 7 different 'rare properties', of which the player will be offered a random 3 each game - so that you *can't* know in advance which you will be offered (nor rely on getting a specific one each game). Several of these draw from existing equipment properties and several are entirely new. I feel strongly that it helps the player fun-factor of the system a lot if some of what you get from gizmos doesn't just feel like "Jewelry, but less of it" but rather contains some *new* choices instead of old ones (even if they're overall less powerful). The list of current rare properties is: 1) Regen + RegenMP 2) Repel Missiles + Clarity 3) Rampage + Acrobat 4) Gadgeteer: 30% faster evocable recharge rate and 30% chance not to consume a wand charge on firing 5) ManaRev: RegenMP++ but *only* while fully Revved 6) ParryRev: AC+5 while fully Revved, along with a small chance to disarm an enemy upon hitting them. (This does not do any damage, unlike Captain's Cutlass's extremely significant damage, to be clear) 7) AutoDazzle Small chance to fire a non-damaging beam of blinding light at an enemy whose attacks you dodge - even at range. The idea is that different modifiers should appeal to different sorts of characters, and also that several of them actively lean into the main gimmick of coglins by synergizing directly with Rev and attacking. Obviously the balance of all of these is provisional, but I think given player response to various previous downsides, it's important to try and sell the *fun* of this foremost. Numbers can be adjusted down as-needed afterward. I hope people enjoy them! (Credit to regret-index for the tilework, and multiple other devs for design discussion and suggestions) -------------------------------------------------------------------------------- 4e4bab2 | DracoOmega | 2024-02-28 23:46:10 -0330 Add ARTP_MANA_REGENERATION Functions the same as the amulet. Amulet of Vitality is now a plain amulet with 2 levels of ARTP_MANA_REGENERATION instead of being a RegenMP amulet that was special-cased to count twice. Amulets of regeneration and magic regeneration used entirely different methods to track whether the player was attuned to them or not, and this unifies them, as well as refactoring a whole lot of code related to this. (This also improves messaging a couple of cases, such as Amulet of Vitality implying it doesn't work for Djinn at all when you first wear it). I also reduced some needless scanning of inventory artifact props whenever the player's regen ticks while they are already at full hp/mp. There is one functional change here, which is that items which grant both hp and mp regeneration (currently ONLY the Amulet of Vitality) will no longer provide either until BOTH of the player's hp and mp are full simultaneously. This irks me a little, but it seems minor enough that all of the extra infrastructure required to avoid it (while still allowing more than a single source of RegenMP to ever function at once) seems unnecessary. -------------------------------------------------------------------------------- a5e47cd | DracoOmega | 2024-02-28 23:46:09 -0330 Add ARTP_ACROBAT For future use in gizmos. -------------------------------------------------------------------------------- efe9712 | David Lawrence Ramsey | 2024-02-28 16:48:59 -0600 Put gnoll bouda desc in alphabetical order. -------------------------------------------------------------------------------- fdd2188 | David Lawrence Ramsey | 2024-02-28 16:18:01 -0600 Fix inconsistent capitalisation of willpower. -------------------------------------------------------------------------------- aa138b5 | Nicholas Feinberg | 2024-02-28 07:26:18 -0800 Fix travel boulder issues (jagoly) This is a hack! We should be using a different, stationary monster type for decoration. -------------------------------------------------------------------------------- 866d131 | regret-index | 2024-02-28 01:07:42 -0330 Fix a cast message fallthrough (CarefulOdds) Accidentally broken with reorganization in c02482b. -------------------------------------------------------------------------------- 1309dff | DracoOmega | 2024-02-28 00:55:53 -0330 Fix misleading messages saying that a beam was 'repelled' without RMsl Still not sure this is correct, but it's *more* correct than it was before. -------------------------------------------------------------------------------- 991db66 | regret-index | 2024-02-28 00:49:45 -0330 Fix a few recent vaults, tweak a recent monster's description Two vaults screwing up the silver statue naming, one vault using the wrong name for poison gas, and a rewriting attempt to make thermic dynamos focus more on being an insubstantial vortex with energy cells attached rather than a physical engine that could be rapidly deconstructed. -------------------------------------------------------------------------------- fb31f23 | Nicholas Feinberg | 2024-02-27 20:11:15 -0800 Fix offhand Wyrmbane again (jagoly, elliptic) Cont'd from a146dc8f6d50fe5756997a64e09b11ed8337dac3. -------------------------------------------------------------------------------- e1f55a6 | David Lawrence Ramsey | 2024-02-27 17:42:49 -0600 Move halo/umbra gear handling to equip/unequip. So that a monster wielding an item from off the floor will be handled properly. The check is now done in monster::pickup() (which might as well be monster::pickup_and_equip()) and monster::unequip(). -------------------------------------------------------------------------------- 25767b4 | David Lawrence Ramsey | 2024-02-27 17:05:51 -0600 Properly handle monster halo/umbra from gear. If a monster's wielding an item changes its halo and/or umbra radius, invalidate the agrid so that the halo/umbra is drawn properly on monster placement instead of after monster movement turn afterward (so that e.g. if Frederick gets an orb of light, it'll work from the beginning). It's crude, but the functions that accomplish this on the player side are all completely player-specific. -------------------------------------------------------------------------------- a61f84b | David Lawrence Ramsey | 2024-02-27 16:01:25 -0600 Fix comment typo. -------------------------------------------------------------------------------- 0d0dddb | David Lawrence Ramsey | 2024-02-27 15:59:21 -0600 extract_manticore_spikes() -> extract_barbs(). Since barbs aren't exclusive to manticores. -------------------------------------------------------------------------------- 8156e94 | Nicholas Feinberg | 2024-02-27 11:47:15 -0800 Fix: blaze trees 🥬 (CarefulOdds) Make blazeheart core explosions light trees on fire, as with other big explosions. This logic remains silly :) -------------------------------------------------------------------------------- b0876be | Nicholas Feinberg | 2024-02-27 11:13:16 -0800 Fix double sling overshoots (ragingrage) When wielding two ranged weapons as a Coglin, if there's an ally past the target, make sure that both shots automatically stop at the target, not just the first shot. -------------------------------------------------------------------------------- b6d6f0d | David Lawrence Ramsey | 2024-02-27 10:16:11 -0600 Remove message for maximum player barbs, as it never seems to come up due to player turns. -------------------------------------------------------------------------------- 953deb8 | David Lawrence Ramsey | 2024-02-27 10:07:15 -0600 Ensure barb_player() can't go over max dur/pow. -------------------------------------------------------------------------------- 2fc6374 | David Lawrence Ramsey | 2024-02-27 10:05:07 -0600 Allow specifying barb power in barb_player(). -------------------------------------------------------------------------------- 240abd3 | David Lawrence Ramsey | 2024-02-27 10:00:06 -0600 Readd lost message for extra player barbing. -------------------------------------------------------------------------------- 7be0c91 | David Lawrence Ramsey | 2024-02-27 09:41:08 -0600 Add sanity checks to barb_player(). Assert we're not in the arena, and handle invalid turn values. -------------------------------------------------------------------------------- 0378562 | David Lawrence Ramsey | 2024-02-27 09:36:40 -0600 Add message for maximum player barbs. -------------------------------------------------------------------------------- 60b85d4 | David Lawrence Ramsey | 2024-02-27 08:52:34 -0600 Actually use turns when initially barbing. -------------------------------------------------------------------------------- 0f40c14 | David Lawrence Ramsey | 2024-02-27 08:49:27 -0600 Move player barbing into its own function. This deduplicates the code for manticore spikes, steelbarb worm spikes, and Wu Jian barbed spike wrath. There's now a message for when you get barbed while already being barbed; and the message for initially getting barbed drops the initial "the", so it can be reused. -------------------------------------------------------------------------------- 3863d58 | DracoOmega | 2024-02-27 03:47:14 -0330 Actually put that fix in a place where it'll work I may be slightly panicking -------------------------------------------------------------------------------- d25475e | DracoOmega | 2024-02-27 03:43:55 -0330 Fixup yellow dracs created with Caustic Breath For those unlucky enough to still have them in their saves. -------------------------------------------------------------------------------- 344ed53 | DracoOmega | 2024-02-27 03:00:33 -0330 Fix monster yellow draconians doing ludicrous breath damage (jagoly) For some reason, despite having the same exact damage as every other monster that spits acid at you, they still used the player spell internally and when it was recently changed, I didn't notice this fact. -------------------------------------------------------------------------------- 08f29ac | DracoOmega | 2024-02-27 00:18:06 -0330 Fix almost all explosions becoming Nullifying Breath (jagoly) >.> -------------------------------------------------------------------------------- f581d88 | Nicholas Feinberg | 2024-02-26 18:36:00 -0800 Make boulders unthreatening (regret-index) -------------------------------------------------------------------------------- f716714 | David Lawrence Ramsey | 2024-02-26 20:21:48 -0600 Typo fix. -------------------------------------------------------------------------------- 94ed278 | DracoOmega | 2024-02-26 18:49:39 -0330 Cap Sticky Flame's duration on players much lower The cap of 100 turns was leftover from the older incarnation of sticky flame and not adjusted after 0.31's changes to it. 100 turns is really a silly high number, and not something one could realistically encounter in most scenarios, but now that it can do actual relevant damage, it seems needless to have it be able to stack so high. I've set the duration at 35 which works out to exactly 5 movements from the player and is approximately the average duration of being hit by it twice. -------------------------------------------------------------------------------- 9efa865 | DracoOmega | 2024-02-26 18:49:39 -0330 Cap max number of things pulled by Blink Allies Encircling This used to have a power-based cap on how many allies it could blink at once. Some of the code even remained to do this, but was rendered non-functional by fb65b577b5ec8cf810b0ab130fba421e077fe631 Something being accidentally broken in the past is certainly no reason to return to it, but while this is a great spell that creates great problems, the possibility of being *completely* surrounded by enemies the instant a guardian serpent comes into view can sometimes feel a bit excessive. I'm especially concerned that constriction changes may independently make this deadlier, so let's try reducing the numbers a little and see how this feels. (It now blinks 3-6 units around the player, rather than 'as many as will fit') -------------------------------------------------------------------------------- 926e5b6 | DracoOmega | 2024-02-26 18:49:39 -0330 Revamp Draconian breath weapons There's been some desire to revamp how draconian breath weapons work for a while now, so this is a serious attempt at doing so. The general idea is to make pressing the button less common (ie: avoid it being 'correct' to breathe at the start of every latergame fight, even when the breath does very little) while also making the breath effects flashier and more impactful when you do. All breath weapons can now store up to 3 charges, and are on an XP-based recharge system. (You get 2 charges immediately upon hitting level 7 and upgraded saves above xl 7 will be given 3). All breaths have been adjusted somewhat - with some being overhauled more significantly - both to be more distinctive from each other and to scale better throughout the length of the game. Red Draconians: Combustion Breath Borrowing functionality from old Explosive Bolt, Combusion Breath causes a fireball to strike every target in a line. It does less single target damage than most breaths, but can do significant AoE damage if you line up a good shot. (The user is immune to damage from these explosions). Green Draconians: Noxious Breath Very similar to their old breath, but the clouds last longer (especially at higher power) and it has a power-based chance to spawn additional clouds along the sides of the main beam as you rise in xl. Pale Draconians: Steam Breath Again, very similar to their old breath, but the initial hit now does relevant damage, and the density/duration of the steam clouds improves with xl. (Keep in mind, using it is now much less free than it used to be.) Yellow Draconians: Caustic Breath Fires a penetrating acid bolt that leaves acidic fog clouds on all unoccupied spaces it passes over. These are rarely seen clouds (which yellow draconians are conveniently immune to!). Early on, these can serve as obstructions to enemies, and later on a reliable damage source that few things are immune to. Black Draconians: Galvanic Breath Fires a projectile that does electricity damage to all targets connected to what it hits - think of it as firing an arcjolt at a single (possibly distant!) cluster of enemies. (This also refactors arcjolt code somewhat and improves its animation by no longer interrupting it wheneve the message log fills up) White Draconians: Glacial Breath Fires a penetrating beam of cold which does the highest individual damage of any draconian breath and also turns anything it kills into durable blocks of ice for a little while. Good as both a direct damage solution and also to create blockers in corridors or other chokepoints. Purple Draconians: Nullifying Breath Fires a non-penetrating projectile that expands into a radius-2 explosion. It dispels magical effects on targets hit (like before) and also inflicts significant amounts of antimagic - but its damage is quite poor compared to other damaging breaths. (The user is immune to their own breath.) Grey Draconians: Mud Breath Fires a non-pentrating ball of mud which has knockback and leaves puddles of temporary mud around its destination. (Similar to Primal Wave, but muddier). Grey draconians are now unaffected by mud. Having long been the only draconian distinguished by having no breath at all, it felt a bit sad to leave them out of the fun. Breath weapon charges available are indicated by a status light (as well as in the ability menu, but after playtesting I felt it better if one didn't feel the need to bring up the ability list repeatedly to check). As draconian breath no longer has a breath cooldown (the limited charges accomplishes more than enough to prevent it from being spammed, and being able to burst some of the damaging breaths from time to time is a good thing, imo) there should be no risk of getting it confused with the old 'Breath' status light (which is additionally renamed '-Breath') All sorts of numbers here may need nudging in one direction or another, (recharge speed especially needs playfeel testing in both early and lategame) but I think this is a decent set of useful distinct effects to start from. -------------------------------------------------------------------------------- 55cc24d | DracoOmega | 2024-02-26 18:49:39 -0330 Very slightly adjust monster stats after constriction changes Lower naga warrior base damage (since it's likely the changes make them more dangerous), slightly weaken tmons constriction damage, restore starspawn tentacle's long-lost accuracy. -------------------------------------------------------------------------------- 93f0341 | DracoOmega | 2024-02-26 18:49:39 -0330 Allow previewing EV change for armour in item descriptions This is a much more complicated question than displaying AC changes was, since EV depends on a complicated formula that hinges not only on the change in ER between the two armour being compared, but also differences in str/dex from properties on the two items. Rather than try to duplicate the complex logic of _player_evasion() or parameterize every single aspect of it (which would be brittle and error-prone if any aspect of gear properties ever changed), I have opted to 'simulate' the correct answer by internally equipping the item just long enough to calculate player EV while wearing it. As this is done by directly manipulating equipment links, it should be invisible and have no side-effects rewarding wielding/unwielding. One complication is that Crawl's item system makes it literally impossible for the player to equip (even internally) an item that isn't in their inventory. And since inventory is capped at a fixed size and might be full (and the player might be examining an item for a slot which is currently empty!), there is no normal way to gaurantee we have anywhere to put this item, even temporarily. So I have 'cheated' by adding an extra slot to you.inv beyond MAXPACK (the normal cap). This should be invisible basically everywhere, and is not marshalled (since it's only temp working space). This still makes me slightly nervous, but I have looked through as much code that directly manipulates this array as I can without seeing a problem this will cause (other than one fixed by this commit itself), and I also see no other reasonable way to do this without overhauling item links entirely. Which, while theoretically nice, is wildly out of scope here. As this process is still somewhat sketchy, I've tried to document the gotchas quite explicitly, where they exist. But I think the QoL improvement to players is well worth the hack. -------------------------------------------------------------------------------- f30d4d0 | DracoOmega | 2024-02-26 18:49:38 -0330 Remove some never-used virutal methods We don't have any concept of armour penalties for monsters, we never did, and I doubt we ever will. And if that somehow changes, someone can always put them back in then. -------------------------------------------------------------------------------- e1c152a | DracoOmega | 2024-02-26 18:49:38 -0330 Reorganize how player EV is calculated, improve clarity and display Penalties and bonuses to player EV were split among several nested functions, often with no clear separation of why something was in one place and not another (ie: modifiers for vertigo, being constricted, and having Agility were all in different functions, despite all being temporary and flat) This sometimes had subtle (or not so subtle!) strange effects such as vertigo affecting the merfolk swiming bonus, but nets and constriction not doing so. In fact, nets/webs (which supposedly reduce EV to 1/2) could have a much greater or larger effect than this (a character that had sac'd EV to Ru twice could go from 10->0 EV when netted, while a high level character in Storm Form might only go from 49->43 EV, neither of which is very like 'half') Being paralysed could even RAISE player EV, if their normal EV was low enough! I have reorganized how bonuses are applied, mostly with an aim at improving clarity and consistency, while reducing weird effects such as the above. Now multipliers to the players EV (eg: nets/webs/petrifying/merfolk swim) happen after all 'permanent' modifiers to EV are accounted for (eg: equipment, mutations), but before all 'temporary' modifiers (eg: acrobat/agility/constriction) are tallied. Effects like paralysis or clumsy now cap the player's EV at a small amount, rather than setting it to that amount (so that it will never raise it). This also improves the logic for displaying EV on the UI, which will now display any temporary modifiers that lower EV in red and ones which raise it in blue. (Only a few penalties were previously indicated in red, and a bug meant that nets' effect on EV was never shown at all!) -------------------------------------------------------------------------------- 359da3a | DracoOmega | 2024-02-26 18:49:38 -0330 Change how the Repel Missiles effect works This is both a simplification and a rebalancing. Current, repel missiles works by reducing the to-hit roll of a missile by a random amount from 0-100% of its current value (or 0-50% of its value if it's a penetrating beam). In effect, this acts a little like a multiplier of the defender's EV - it does almost nothing at low EV and its effectiveness directly rises with EV - but with different math. This has several arguably bad effects: -The buff has little effect on enemies with mediocre EV (and there's been a desire to make an rMsl aura enemy, who would currently accomplish little when supporting many types of enemy) -The effect of the buff is *enormously* counteracted by EV reductions like wand of roots (which used to grant something like a +2800% chance to hit versus The Enchantress, as an extreme example). If enemies have rMsl, I think you should *feel* it in the same way that you feel enemy rF when you're attacking with fire -Scarves of repulsion were close to useless on many characters, but a lot of players did not realize this and assumed they were still providing meaningful bonuses to characters with no EV. This new system should make that a lot clearer to explain, as well as make some itemization choices viable that previously were not. This changes rMsl to be a flat +EV versus missile attacks instead, and operates even if the target is incapacitated (the magic is still pushing arrows away, even if the caster is asleep!) The old behaviour of being only half as efffect against penetrating beams is removed also (SH already offers a means of attack avoidance that specifically is worse against penetrating beams). In enemy hands, it should have a stronger effect on most enemies, and be much less negated by constriction (though constriction still helps a bunch in most cases!). In player hands, this is a buff if the player is below ~18 EV and a nerf if the player is above that (which I think should make scarfs of repulsion more appealing to more characters and maybe make itemization decisions a little more diverse) Numbers can, of course, be adjusted (and the player/enemy bonus separated), but I think it's fair that rMsl feel impactful against the type of thing it resists in a similar way that a pip of resistance would be against its. -------------------------------------------------------------------------------- 1d82c4a | DracoOmega | 2024-02-26 18:49:38 -0330 New blast wand: Wand of Warping Alternates with Iceblast and Roots. This implements one of the discussed proposals for an alternate AoE attack wand to make /roots a little less common. It does a similar fireball-sized blast and has a chance to blinks everything caught in the blast radius (including you!) It does slightly less damage than iceblast (though is irresistable), but while blinking enemies has strong utility potential, in practice the scattering of them can be as much of a drawback as it is an advantage. Sometimes you can use it to juggle something away from you, other times it will bring them closer or reduce your ability to hit multiple targets. Being able to deliberately hit yourself with it as a way to escape some situations (at the cost of damage/charges) also feels like a reasonable part of this package. Sometimes more unwieldy than other wands, sometimes more useful, and definitely distinct. The blinking chance starts at 50% and scales to 90% by ~15 evocations. Make /warping not 100% -------------------------------------------------------------------------------- 9adf0d1 | DracoOmega | 2024-02-26 18:49:37 -0330 Simplify and rebalance many things about Constriction This commit significantly affects formulas for nearly every aspect of constriction, both for and against both players and monsters. It includes bugfixes, simplifications, and deliberate rebalancing. Notable changes: 1) Constriction damage no longer scales over time. This had already been unknowingly broken for monster-applied constriction for a long time, and now is removed for players as well. This simplifies some internals, as well as making duration increases for player effects like /roots not scale so non-linearly 2) Constriction escape chance for players has been radically simplified. The old formula was very hard to intuit odds from, but when I ran the math, the player was overwhelmingly favored to escape most things by the second attempt, and still most likely to escape on a first attempt. Tentacled monstrosities were the notable exception, who were something like 2.5 times as likely to hold onto you as the next-best constrictor. Player escape is now independent of the constrictor's HD and is a flat 40%, 75%, 100% chance depending on attempts. (Despite being overwhelming likely to escape most things by 2 attempts, there was still a long tail that made it theoretically possible to fail many times in a row, and I am not convinced this is worth preserving) Monster escape chance still scales with constriction power (eg: evo for /roots or spellpower for BVC) and now includes the monster's HD in this formula - intended so that /roots can be stronger earlier game than it currently is, while weakening the hold effect lategame without any investment. (This also fixes a bug where /root hold power was based on the player's xl....) 3) Blinking and related effects now ALWAYS escape constriction, rather than merely making a 'better' attempt at escape. (It was claimed that they previously counted as '2 escape attempts', but even this was not really correct - they were a single attempt that counted as if you'd already made one.) In practice, ?blinking was extremely likely to work against anything that wasn't a tmons, to the point that I think it felt unsatisfying that sometimes it did not. Since constriction will be more dangerous in various ways now, it feels fairer to allow this to be reliable. (It also simplifies the code somewhat.) Guaranteed escapes now get different messaging to hopefully make it clearer that they work this way. 4) Changed the EV penalty for constriction. Rather than a heavy size-based multiplier for monsters and an ignorable -3 EV for players, it applies a flat -10 EV to both. This should make that penalty actually matter for players and reduce some of the most lopsided uses of the EV reduction against enemies, while also simplifying. (Monsters being constricted and monsters held in webs/nets previously shared the same complex penalty. Now constriction applies before these, but can stack. Webs are simplified to ignore monster size now also) 5) Rebalanced damage/duration of most source of constriction in the game. Enemy melee constriction damage is now randomized (it didn't used to be) and somewhat higher. (Also displays on xv!). Grasping Roots has a higher minimum duration but a lower maximum (previously only the maximum scaled with power, resulting in duration ranges like 2-21 turns). Damage is decreased (in compensation with being harder to escape and penalizing EV more). If this results in defanging Shambling Mangroves, they can be adjusted. -While enemy BVC isn't used much yet, I am intending to leave it actively into being a short-duration, higher-damage effect while roots is a high-duration, lower-damage effect. Player melee constriction is no longer based directly on player str (25 str characters used to do 5x the damage of 5 str characters!), but purely a function of XL. Damage of all player sources increased somewhat, to compensate for no longer scaling over time. Wand of roots lasts longer and does more damage at low power. (the old non-linear damage scaling from duration left it pretty mediocre at low power) 6) Because I expect melee constriction against the player to feel stronger from most sources, I have reduced the chance to apply it on hit from 100% to 66%. This may or may not turn out to be necessary, but in general I favour more impactful effects applied less often than mild ones applied all the time. 7) Better messages to differentiate roots/bvc wearing off versus being escaped from. As this affects balance of many things across many parts of the game, some time to observe how it plays out will be needed, and I imagine other numerical tweaks will happen subsequently. But I hope this is a better baseline from which to work. -------------------------------------------------------------------------------- 4120381 | David Lawrence Ramsey | 2024-02-26 15:11:21 -0600 Remove Beogh follower blessing from wizmode. Since Beogh no longer blesses followers. The only god that does that now is TSO. -------------------------------------------------------------------------------- 623d607 | Medrano83 | 2024-02-26 14:04:10 -0600 Better numeric keypad support in Linux * Fixes #3174 * Fixes the insert, delete and clear keys * Fixes the control variations * Fixes some /+ and *+ combinations * Reduces duplicate code, unixcurses_get_vi_keys is not more -------------------------------------------------------------------------------- 327783c | wheals | 2024-02-26 21:00:16 +0200 Fix Duvessa shaking her weapon @at_foe@ (#2985) Fixes #2985 -------------------------------------------------------------------------------- bf54915 | wheals | 2024-02-26 20:26:26 +0200 Properly render formatted strings in webtiles status tooltips (#3487) Fixes #3487 -------------------------------------------------------------------------------- b60d49a | David Lawrence Ramsey | 2024-02-26 11:50:50 -0600 Reenable creating talismans in wizard mode. By putting '%' back in as an item class option in wizard_create_spec_object(). -------------------------------------------------------------------------------- 8322af0 | David Lawrence Ramsey | 2024-02-26 11:19:31 -0600 Check innate monster umbra first, before gear. As it's done in player umbra. This also means we don't have to run max() on the innate umbra value, since monsters don't have a god-passive umbra to handle first as players do. -------------------------------------------------------------------------------- 0d5b953 | David Lawrence Ramsey | 2024-02-26 11:06:00 -0600 Unbrace -------------------------------------------------------------------------------- 7272be1 | David Lawrence Ramsey | 2024-02-26 11:01:28 -0600 Handle monster halo/umbra dual-wielding. Check for halo/umbra sources in the alt weapon slot, and handle them properly. -------------------------------------------------------------------------------- 9fcb8cb | David Lawrence Ramsey | 2024-02-26 10:59:09 -0600 Handle monster h/u of radiuses other than 3. Use whichever radius is biggest, like the player versions. Currently no item-based halo or umbra has a radius bigger than 3, but the cases should work. -------------------------------------------------------------------------------- 854a88b | David Lawrence Ramsey | 2024-02-26 10:52:36 -0600 Handle monster umbras accurately, like halos. A monster with an innate umbra and wielding umbra-inducing gear will now properly have whichever umbra radius is bigger. No monsters currently have both at the same time, but the case should work. -------------------------------------------------------------------------------- 8f43bd2 | David Lawrence Ramsey | 2024-02-26 10:52:36 -0600 Rename a variable in monster::halo_radius(). And move its initialisation down a bit. -------------------------------------------------------------------------------- 926718a | wheals | 2024-02-26 18:40:35 +0200 Checkwhite and fix tag upgrade. -------------------------------------------------------------------------------- 6800aa8 | Wizard Ike | 2024-02-26 18:34:04 +0200 Remove an unnecessary check -------------------------------------------------------------------------------- bc85f96 | Wizard Ike | 2024-02-26 18:34:04 +0200 Don't reactivate autopickup when shafting a friendly invisible monster -------------------------------------------------------------------------------- 1188cb5 | Wizard Ike | 2024-02-26 18:34:04 +0200 Reactivate autopickup when polymorphing an invisible monster makes it friendly -------------------------------------------------------------------------------- ce2fa97 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup not deactivating when charming wears off invisible monsters -------------------------------------------------------------------------------- f82703d | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix toggling of autopickup when polymorphing monsters -------------------------------------------------------------------------------- c630c63 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup sometimes not reactivating when invisibility ends on a monster -------------------------------------------------------------------------------- 85cd9b6 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup not being reactivated when shafting monsters -------------------------------------------------------------------------------- aad2c9e | Aliscans | 2024-02-26 18:11:57 +0200 Change debug_make_trap and debug_make_shop to use PromptMenu. This reduces the amount of typing and memory needed to use these, which seems like an improvement to me. Neither command has many valid options, which helps. -------------------------------------------------------------------------------- ce8dbf9 | Aliscans | 2024-02-26 18:11:54 +0200 Use a PromptMenu for various selections in wizard mode. Various wizmode functions functions printed a menu in the message window, but didn't check if it would fit, and thereby hid some of the options. Make some use PromptMenu instead. This displays the menu in a separate popup if it's larger than the message window, so doesn't share this issue. -------------------------------------------------------------------------------- 70f7560 | elliptic | 2024-02-26 01:16:10 -0500 Fix Coglin delay-averaging rounding Previously if you dual-wielded a 0.6 delay weapon and a 0.7 delay weapon (for instance) all your attacks would be delay 0.6, instead of half being 0.6 and half being 0.7. -------------------------------------------------------------------------------- 2eb335d | David Lawrence Ramsey | 2024-02-25 19:13:51 -0600 Add talisman references to Zin's Recite speech. Since using them will make Zin excommunicate you. -------------------------------------------------------------------------------- 694b92f | David Lawrence Ramsey | 2024-02-25 18:41:41 -0600 Improve Wu Jian wrath wrtr barbs/slowness. For barbs, increase the duration of barbs rather than setting it, capping it at 12 turns, and set the barbs' power to a maximum of 6, depending on what it already was set to. These limits are modeled after those of manticore barbs. For slowness, use slow_player() to make the player slow for a certain duration, since that function will handle things properly if the player is already slowed. These changes handle the cases where the player already has barbs in them, and/or is already slowed, when Wu Jian wrath kicks in. -------------------------------------------------------------------------------- d9500d9 | regret-index | 2024-02-25 20:41:51 -0330 New decorations: (unmoving) boulders We should be very sparing on spreading almost any of various monsters used to make various spells work. Several of them are very weak as threats (fire vortices, ball lightnings), and several of them are essentially adding new monsters that have to go over rigorous design criteria entirely seperate of their functionality for a spell- for example, we're almost certainly not going to make dryads or cactus giants anything besides glassed monsters in a gimmick portal if every. That said, Brom's Barrelling Boulder makes an extremely physical object that, when made to not move as the default placement works, can reasonably fit in any number of vaults already placing stones, large rocks, crumbled columns, shafts, and so on looking for earthen decoration. The boulder has a different tile when it's not rolling, and uses "dbname:still_boulder" for a description when not moving. Do note that they should not be used for any meaningful walls, however, since we've already got normal plants covering most of that design space already. The placeholder tile is an extreme edit of canofworms's Brom's spell icon. By the way, new rule: no sokoban vaults. -------------------------------------------------------------------------------- 9ce6b88 | David Lawrence Ramsey | 2024-02-25 14:39:26 -0600 Rename obsolete tile references to /disint. It was renamed to WAND_MINDBURST ages ago in non-tiles code, even if its actual enum value hasn't changed. So rename it WAND_MINDBURST in tiles code as well, and rename item/wand/i-disintegration.png to item/wand/i-mindburst.png accordingly. -------------------------------------------------------------------------------- 6480867 | David Lawrence Ramsey | 2024-02-25 12:26:34 -0600 Make DS foul flame activate a bit more often. Instead of 10% chance at mut level 1, 25% chance at mut level 2, and 40% chance at mut level 3, make it 15% chance at mut level 1, 30% chance at mut level 2, and 45% chance at mut level 3. -------------------------------------------------------------------------------- ec4258e | David Lawrence Ramsey | 2024-02-25 11:34:36 -0600 Add desc for Trog's Regen and Will++ combo. This is mostly so mouseovers of the status on webtiles will display both of its effects, instead of just the regen part. -------------------------------------------------------------------------------- a82d83f | David Lawrence Ramsey | 2024-02-25 11:05:48 -0600 Make autotravel account for binding sigil immunity. -------------------------------------------------------------------------------- bc26b63 | David Lawrence Ramsey | 2024-02-25 08:26:31 -0600 Increase gold value of foul flame brand. Since it's artefact-only. It also shouldn't match holy wrath here, because it does more damage. -------------------------------------------------------------------------------- c36836c | David Lawrence Ramsey | 2024-02-25 07:20:38 -0600 Fix typo. -------------------------------------------------------------------------------- 46bb8dd | regret-index | 2024-02-25 04:43:45 -0330 New(?) monster: thermic dynamos, for Elf and vaults elsewhere These new monsters are meant to provide another notable nonliving monster to Elf beyond the dancing weapons, as well as pick up the fire and ice theme for former crystal bolts much more directly by being bejewelled mobile elemental turbines. They're meant to be a weaker glass cannon compared to crystal guardians- swapping their notable AC, rElec+++, and a bit of spellpower for passable evasion, fast movement speed, and two-individually weaker hits of AF_FIRE + AF_COLD. Arguably they're also a little reminscient of zephyrmancers, as low-AC bolt-bouncers in Elf: on that front, they're much harder to kill in exchange for a far easier resistance and respecting more of AC. In exchange for their overall weaker or comparable state they're a bit more common in Elf and various vaults than crystal guardians were in V, occasionally banding in duos, and also replace the latter's use in late D. To help clarify their particular mechanics and to distance further from the old crystal theme, Crystal Bolt spell's dual-element possibilities have also been split into two seperate spells of Rebounding Blaze and Rebounding Chill, which are slightly-rescaled copies of Bolt of Fire and Bolt of Cold aside from the wall bounce. I don't know if future uses might be found for these spells or these monsters, but they give a little more variety past Lair branches in conjunction with the change to V's crystal guardians. Their placeholder tile is a mix of DD's old Enter the Abyss tile and canofworms's old tile for the Staff of Battle (before that got orbified). The spell icon tiles, like Crystal Bolt before them, mix together roctavian's Bolt of Fire, Bolt of Ice, and stone wall tiles. -------------------------------------------------------------------------------- 88e274e | regret-index | 2024-02-25 04:31:54 -0330 C. guardians / echidnas: Crystal Bolt 🡲 Crystalizing Shot (PleasingFungus) While "notably-resistant melee enemy with a ranged attack" as an archetype for monsters has a variety of reasonable manifestations as this point, crystal guardians are a bit weird. The earthen theme they might brandish as a monster made entirely of crystal instead focuses elsewhere, over to the connection crystal walls have with bolts of cold and bolts of fire. That particular mechanic's prominence has been mildly reduced over time, since wands lost both and spells lost the former, and there's been a little reduction of it versus other forms of it even on monsters (no more deep elf conjurers, removed off of necromancers and ancient liches). While it lets them fire through some other earthen and icy monsters, it's a bit off compared to more direct earth themes of raw damage with a side bit of corrosion at most. Since Vitrify seems to have worked out relatively well as a dangerous hex to throw around, I'm making them fire off a short-range projectile shot that applies the status two thirds of the time it hits and deals any damage. Refined crystal monster making one as fragile as unrefined crystal has a certain cruel logic to it, and it's one last reasonable vector to toss the effect around for a while now by being much more threatening to the high-ac, low-ev characters than Fragile otherwise potentially threatens the reverse. It does do less damage on hit than the crystal bolts did, since while it can't bolt-bounce it's inherently multiplicative for other monsters too (like the mighting peacekeeper bands in V they show up in most games in, or the terror that Desolation tends to be). To orient them towards their focus on melee here, they also get a few tweaks towards slightly less HP and AC but slightly more melee damage. This also gives crystal echidnas the aforementioned Crystallizing Shot over Crystal Bolt. They're quite weak for extended and mostly meant to be generic elemental fodder for Dis, which isn't a terrible position, but as a monster designated only for such late positioning they could do with a mechanic of any much note when they're otherwise a faster, weaker version of a monster already seen in V. Said vitrification should be terrifying in Dis, which admittedly might warrant some adjustments on Dis a little later. The Crystal Bolt spell hasn't been removed, as a one-off use of bolt-bouncing on an element besides lightning is a reasonable mechanical niche another monster could use with some renaming. The new Crystallizing Shot spell tile uses both snw-0's LCS icon and Bloax's Corona icon. -------------------------------------------------------------------------------- d044c6f | David Lawrence Ramsey | 2024-02-25 00:54:35 -0600 Fix punctuation. -------------------------------------------------------------------------------- c2b5402 | David Lawrence Ramsey | 2024-02-25 00:06:18 -0600 Fix spelling. -------------------------------------------------------------------------------- b91d5d9 | David Lawrence Ramsey | 2024-02-24 21:22:05 -0600 Add more flower names to artefacts. -------------------------------------------------------------------------------- 255bbe2 | David Lawrence Ramsey | 2024-02-24 13:40:21 -0600 Adjust ETC_FOUL_FLAME's colours again. Its portion of glowing colours now consists of bright versions of both of its umbra colours, white and brightmagenta, instead of just the former. -------------------------------------------------------------------------------- df13d27 | David Lawrence Ramsey | 2024-02-24 13:01:08 -0600 Add placeholder tiles for new "Brilliance". The new item tile is a palette-tweaked version of UNUSED/weapons/eveningstar7.png, and the new hand1 tile is a palette-tweaked version of player/hand1/eveningstar2.png. Also, rename the new hand1 tile from mace_of_brilliance.png to eveningstar_brilliance.png, since "Brilliance" has been an eveningstar for awhile, and move both the old item and hand1 tiles to UNUSED. -------------------------------------------------------------------------------- 38b2580 | regret-index | 2024-02-24 01:45:43 -0330 Vault review without end See all the other vault review commit messages about header clean-up and balancing according to stats and slipping in a few more recent items where they're appropriate and what not. Also worth of note: * Throw around a few more of the new randart-specifying properties in some heavily themed vaults and wizlabs. * Add a few more vaults into the Elf:1 misc_elf_vault slot, and reduce the presence of the single one of them that places runed doors. * One new incomplete effort is to start specifying all Abyss non-rune non-exit vault items, as both higher in overall quality (since the kills-to-escape and rune detection changes have hurt actually bothering with vaults) but also of lower potential value, to discourage deliberately perusing earlier Abyss floors for items when they're not dangerous (such as before doing ziggurats or Hells). -------------------------------------------------------------------------------- 65538d4 | regret-index | 2024-02-24 01:45:43 -0330 Put scrub nettles in default auto-excludes (Ge0FF) Hostile burning bushes didn't get an auto-exclude, so I missed it for the, well, one main game vault use. Nettles should be passable rare earlygame monsters anyway as long as they're in tunnels to work with their range 4. Also, make autoexclusion radiuses for nettles and starflowers both correspond to the maximum range they can hit the player, rather than assuming they hit from full LoS. -------------------------------------------------------------------------------- ee0a85e | Nicholas Feinberg | 2024-02-23 20:16:12 -0800 Remove Pakellas From the OSEL set. -------------------------------------------------------------------------------- cef59e7 | Nicholas Feinberg | 2024-02-23 20:14:16 -0800 Remove W*/P* Don't allow trying to wear or put on arbitrary objects. You can't! -------------------------------------------------------------------------------- 7a63421 | Nicholas Feinberg | 2024-02-23 20:10:01 -0800 Remove Beogh item gifts From the OSEL set. -------------------------------------------------------------------------------- 54e5184 | Nicholas Feinberg | 2024-02-23 20:08:33 -0800 Coglins: --Move, +-Rings & +Resist -Move was added to Coglins to add tactical variety, and to balance out their big upside (dual wielding) without making major and undesirable nerfs to skill aptitudes or HP. There were some upsides to -Move-on-action, and it might someday return in some other context, but ultimately very few people enjoyed it - even with considerable work put into UI improvements, it still broke flow. Instead, let's try doubling down on Coglins' 'no fast swap' gimmick and remove their ability to wear rings. (It'd interfere with their magic exo-arms, see.) I'm generally not particularly fond of equipment restrictions, since they reduce the fun of finding gear (one of the juciest parts of Crawl), but this is at least novel and has some other interesting interactions with the rest of the species. To partially compensate for this downside later on, Coglins now gain rF+ rC+ at XL 13. We might or might not eventually replace this with a choice between a few different 'upgrades'. Minor notes: - Coglins can still wear rings if they find the Macabre Finger Necklace. This is very silly and the UI isn't great, but unrands are allowed to be silly. - Possibly we should remove rings from the % screen rather than showing them as 'unavailable'. -------------------------------------------------------------------------------- a46d8fb | Nicholas Feinberg | 2024-02-23 18:03:47 -0800 Fix: marshall offhand doll parts (Namsan) aiiiiiiiii -------------------------------------------------------------------------------- 5d8ddb3 | Nicholas Feinberg | 2024-02-23 17:52:26 -0800 Fix: no mon weap inscrips in combat (riverfiend) Matching the behavior for player weapons. "The goblin hits you with the +3 mace of Famine {flame, rC+ rF- Stlth++}" doesn't need the full inscription included every time, or any time. -------------------------------------------------------------------------------- c8eefc9 | David Lawrence Ramsey | 2024-02-23 16:42:52 -0600 Fix non-damaging barbs of Wu Jian wrath (#3507). The ATTR_BARBS_POW attribute wasn't set. -------------------------------------------------------------------------------- 5f989ad | David Lawrence Ramsey | 2024-02-23 15:04:09 -0600 Tweak punctuation. -------------------------------------------------------------------------------- a4b76d3 | David Lawrence Ramsey | 2024-02-23 14:50:01 -0600 Make slick slippers give binding sigil immunity. Also document this in their description. -------------------------------------------------------------------------------- 5664dac | David Lawrence Ramsey | 2024-02-23 14:50:01 -0600 Move binding sigil immunity into a function. Accordingly, disable the warning for stepping onto binding sigils if you're immune. Also, change references to "your" sigil to "the" sigil, so that it's not player-specific, and change the message for when someone's immune to it to work for both players and monsters. -------------------------------------------------------------------------------- f15d296 | Monkooky | 2024-02-23 13:26:13 -0600 Datify changed_physiology Add a changed physiology bool to form class and data. [Committer's note: Updated for current trunk, and did checkwhite.] -------------------------------------------------------------------------------- 0b0b42b | David Lawrence Ramsey | 2024-02-23 12:09:55 -0600 No moving via trampling/dragging if bound. This comes into effect with Sigils of Binding and Yred's Fathomless Shackles. Closes #3547. -------------------------------------------------------------------------------- 3b8dbc4 | gammafunk | 2024-02-23 11:46:51 -0600 fix: The artprops specifier for monster item specs This commit allows artprops to be used in any items specified as part of a monster's specification, including wizard mode and DES. I've checked through all other calls of `items()`, and it doesn't seem there's any other place missing these fixed properties being passed as an argument. -------------------------------------------------------------------------------- db0f5c7 | David Lawrence Ramsey | 2024-02-23 08:52:36 -0600 Tweak more punctuation. -------------------------------------------------------------------------------- 0c113e4 | David Lawrence Ramsey | 2024-02-23 06:33:45 -0600 Tweak punctuation. -------------------------------------------------------------------------------- 26e3978 | elliptic | 2024-02-23 03:42:34 -0500 Swap Coglin and Barachi in the species selection screen Even if -Move is replaced with something else, Coglin still seems likely to be more complicated. -------------------------------------------------------------------------------- 080537f | David Lawrence Ramsey | 2024-02-22 22:27:37 -0600 Fix wording. -------------------------------------------------------------------------------- f785c72 | David Lawrence Ramsey | 2024-02-22 22:21:44 -0600 Fix typos. -------------------------------------------------------------------------------- 3324ac0 | gammafunk | 2024-02-22 22:14:37 -0600 fix: Exclude unrands from wizmode randart stats Unrands are in fact not randarts. Unrands might even be fixedarts, but no one really remembers what a fixedart is. -------------------------------------------------------------------------------- f641b5e | gammafunk | 2024-02-22 22:14:37 -0600 doc: Document the artprops item spec tag In the DES syntax guide, add a hopefully complete description of how to use it along with a few important notes. -------------------------------------------------------------------------------- e468397 | David Lawrence Ramsey | 2024-02-22 21:43:00 -0600 Fix messaging in Jinxbite sprite message. Louise should be bonked with "her" weapon, not "its" weapon. -------------------------------------------------------------------------------- 4bed94c | DracoOmega | 2024-02-23 00:05:59 -0330 Don't give apostle challenges while the player is under penance It's a strong feedbad when you can't even recruit the apostle after you win it (since you have no god abilities while penanced) This doesn't stop the unfortunate situation of it feeling bad if you somehow get penance *during* a challenge, but I can't simply send the challenge away the moment this happens or the player could deliberately attack their own apostles to end it at-will. -------------------------------------------------------------------------------- 3038c6f | DracoOmega | 2024-02-23 00:02:17 -0330 Fix a possible crash I somehow keep forgetting it's possible for agent() to return null. -------------------------------------------------------------------------------- 36b1df8 | DracoOmega | 2024-02-22 23:47:20 -0330 Fire final effects after _pre_monster_move Enchantments tick in this function (notably poison and sticky flame), which can result in monsters dying. Sometimes those deaths trigger a avoided_death_fineff (Beogh deathbed conversion, defeating apostles, bound souls being created). If that fineff is not processed before another monster acts, the dying monster will still be in an invalid state and can cause an assert if another monster tries to attack it. This is hard to trigger on purpose, but it still seems reasonable to fire final effects after each monster does its pre_move. -------------------------------------------------------------------------------- 4e6cf12 | DracoOmega | 2024-02-22 23:47:15 -0330 Fix reflected projectiles causing the player penance if they hit an ally If the player fired a projectile at an enemy who reflected it back, and the it missed the player and struck an ally behind them, this would be misattributed to the player themselves (and cause penance for Beogh / good gods). Change the conduct check to look at whether the agent() is the player (which properly handles reflection blame) rather than the original killer_type. -------------------------------------------------------------------------------- af4921d | David Lawrence Ramsey | 2024-02-22 14:54:39 -0600 Add "Brilliance" quote. -------------------------------------------------------------------------------- 1f14e3f | elliptic | 2024-02-22 14:22:43 -0500 Don't place hand cannon clouds on top of the player Previously they were more likely (1/3 chance) to place on top of the player than on any surrounding square, since fair_adjacent_iterator always iterates through the center first. Clouds on top of the player are also probably less nice decoratively while being more obstructive functionally (e.g. they block catoblepas breath), so let's just only place them adjacent to the player. (This commit also removes a small chance of not getting any cloud even when there is still room adjacent to the player.) -------------------------------------------------------------------------------- e3e1ee3 | Nicholas Feinberg | 2024-02-22 11:05:43 -0800 Fix tab with off-hand reaching -------------------------------------------------------------------------------- 4efcb1c | patrick | 2024-02-22 11:40:26 -0600 Touch up the Clear Minds Boutique just a skosh Talismans can be randarts too, so let's let them join the fun. -------------------------------------------------------------------------------- 7902d40 | patrick | 2024-02-22 11:40:26 -0600 Add a shop using the new artprops feature (gammafunk) As requested, a vault that uses the new artprops feature. Surprising no one, it's a shop! The Clear Minds Boutique generates four randarts which are hardcoded to include Clarity as one of their properties. -------------------------------------------------------------------------------- 387adf2 | gammafunk | 2024-02-22 11:40:26 -0600 feat: Simplify formulas for artefact properties (elliptic) When making an item randart, there's a binomial(7, 0.3) distribution used to assign quality from a level of 1 to 7. This is currently done by taking a binomial with 7 trials and taking a max of this and 1. This commit simplifies this to just be a 1 + binomial(6, 0.21), which has a similar mean. Additionally this commit simplifies the distribution for the number of bad artefact properties added. The current implementation is a min of a binomial distribution and the max allowed bad properties, which is 2 minus the number of any fixed bad properties. This binomial has a number of trials randomized based on the quality level and random rounding, with a fixed `p` of 0.3. The new implementation removes the min and the dependence on quality in the binomial, making the number of trials simply be the max allowed bad properties. The `p` is reduced to 0.21 to keep the mean number of bad properties similar to as before. This distribution will lead to more randarts having only 1 bad property instead of 2 and will even out the numbers of bad properties across randarts by quality. It's not clear that the original relationship of bad props to quality was necessary and this new distribution is much easier to reason about. Here are stats for `any randart` from 10k iterations each both before and after this distribution change: Before: Max # of props = 6, mean = 2.87, median = 3 Max # of good props = 5, mean = 2.45, median = 2 Max # of bad props = 2, mean = 0.42, median = 0 Max (good - bad) props = 5, avg # = 2.03 After: Max # of props = 6, mean = 2.97, median = 3 Max # of good props = 6, mean = 2.54, median = 3 Max # of bad props = 2, mean = 0.44, median = 0 Max (good - bad) props = 6, avg # = 2.10 The means are quite similar for both types of props, so this change shouldn't have a large effect, but will make future reasoning about randart balance easier. -------------------------------------------------------------------------------- 84f73fd | gammafunk | 2024-02-22 11:40:26 -0600 feat: Rework wizmode artefact and randart stats This commit improves a number of aspects of the Ctrl-I wizmode command that generates statistics for acquirement and randarts. The randart stats subcommand now accepts an arbitrary item spec instead of prompting for an inventory item. This allows us to examine randart stats of arbitrary item classes that can create multiple types of items, as well as stats for randarts that use the newly implemented fixed properties. This subcommand now prompts for a number of iterations instead of always making ~27k. Despite doing a bit more work in item generation, it still runs quickly enough to generate statistics for 10k items in a few seconds on my machine. The item spec used forces randart, but for item specs that can generate non-randart items (e.g. `any` can generate consumables), such items are discarded and not used in the statistics. The subcommands now write to the distinct files "acquirement_stats.txt" and "randart_stats.txt" instead of using the same ".stats" file. Output file creation now happens only after all input is validated and output progress is simplified. For both subcommands, item creation happens at the unseen origin location (0,0), eliminating message spam. Finally, the subcommands are refactored to use central data accessors for artefact properties, egos, etc, instead of maintaining their own independent lists. -------------------------------------------------------------------------------- 1e417eb | gammafunk | 2024-02-22 11:40:26 -0600 feat: Specifying fixed properties for randarts This commit adds support to item_spec to specify an arbitrary set of artefact property values. The values are given in any item spec according to the following syntax: artprops:prop1:val1&prop2:val2 ... Matches against property names are case insensitive, and properties like rPois and ^Contam that are boolean can omit specifying the value. This syntax can be used in any item spec, including when defining items for vaults, giving items to monsters, etc. When making the item, the randart property randomization considers the fixed values in terms never overriding these values. Randart generation considers how many good/bad properties the fixed ones add to the item and proceeds with its usual randomization process, which means that it may add additional random properties. Some error checking is done on the given value ranges to prevent negative values on properties that are only ever positive and to only allow 0 or 1 on boolean values. -------------------------------------------------------------------------------- 08bcfe7 | David Lawrence Ramsey | 2024-02-21 23:05:59 -0600 Fix "Brilliance" inscription: Halo -> Umbra. -------------------------------------------------------------------------------- 7d46fac | elliptic | 2024-02-21 22:07:31 -0500 Don't fail to wait off Coglin -Move due to haste randomization When hasted player_speed() returns either 6 or 7 randomly, so it was possible to have -Move duration set to 7 and then have a 6-aut wait action afterwards. This commit lowers the -Move duration by 1 to make room for such randomization. -------------------------------------------------------------------------------- e345137 | DracoOmega | 2024-02-21 21:29:22 -0330 Fix giving the player exactly 1 XP for kills they were uninvolved with Lightly broken when I took out the 2x multiplier for player damage done, when the last of the ally xp penalty was removed. -------------------------------------------------------------------------------- 80b497e | David Lawrence Ramsey | 2024-02-21 18:56:14 -0600 Give players with foul shadow night vision. Since it's another source of umbra, and it's coming from them anyway. -------------------------------------------------------------------------------- 0bc28be | David Lawrence Ramsey | 2024-02-21 17:43:23 -0600 Let ghost demons have umbras. Currently only used for Pan lords with foul flame, who all get radius-1 umbras. -------------------------------------------------------------------------------- d6b1d19 | David Lawrence Ramsey | 2024-02-21 17:20:20 -0600 Consolidate halo/silence aura/umbra checks. -------------------------------------------------------------------------------- 448f425 | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Adjust parameters for setting monster gods. _place_monster_set_god() only uses mgen_data's monster class and place, so use those as parameters instead of the whole mgen_data struct. Also, make it take the monster before those two parameters. -------------------------------------------------------------------------------- 937e628 | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Simplify setting monster gods a bit. In _place_monster_set_god(), since priest monsters default to GOD_NAMELESS if everything else fails, return after setting priest monsters' god. That way, there isn't quite as long of an if/else chain. -------------------------------------------------------------------------------- efc72b7 | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Make setting monsters' gods its own function. _place_monster_set_god() is split out of place_monster_aux(), but is otherwise unchanged. -------------------------------------------------------------------------------- 4368416 | Nicholas Feinberg | 2024-02-21 11:54:36 -0800 Fix: allow Vhi's with -Move (Drazool) Since it's no longer Palentonga's Rolling Charge, it's a translocation effect now. As such, it bypasses -Move and is only blocked by -Tele, stasis, being a tree, etc. -------------------------------------------------------------------------------- 123bbc5 | elliptic | 2024-02-21 11:34:14 -0500 Don't apply -Move on Coglin if there are no monsters left Try this out since this seems responsible for a fair proportion of the annoyances, e.g. players immediately wanting to manually move at the end of a fight. This commit also tries to wipe existing -Move that might still be remaining from a previous Coglin action if the action that concluded the fight was fast (e.g. a fast melee attack). (In principle maybe this part should be implemented somewhere else so that -Move is also removed if the action concluding the fight was a fast action that doesn't normally cause -Move (e.g. swapping a ring and having an ally kill the last enemy in that 0.5 time), but that seems super rare so this should be sufficient for testing the change.) Note that invisible monsters still count for this, so this does leak their existence - this seemed better than alternatives. -------------------------------------------------------------------------------- 28b100f | David Lawrence Ramsey | 2024-02-20 19:30:12 -0600 Move foul_flame_monster() into melee_attack. Since the other demonspawn mutations are handled there. Also, improve debug messages, set beam.thrower like cloak of flames and passive freeze, and add proper punctuation for greater damage. -------------------------------------------------------------------------------- 65e0ca0 | Nicholas Feinberg | 2024-02-20 17:23:14 -0800 Fix: don't segfault on offhand unrands Set unrand_reacts to the slot corresponding to the hand we're actually wielding an unrand in, not always EQ_WEAPON. This also fixes artefact staves with world_reacts functions, if they existed, which they don't. -------------------------------------------------------------------------------- ba97123 | Nicholas Feinberg | 2024-02-20 17:23:14 -0800 Refactor unrand_reacts We already set you.wield_change in every relevant world_reacts unrand func. -------------------------------------------------------------------------------- b849e8b | David Lawrence Ramsey | 2024-02-20 17:31:01 -0600 Add a few missing foul-flame-related bits. It can rarely show up in the chaos brand, so it should be displayed then. Also, like holy wrath, it needs to do damage to function, even if nothing is currently immune to it. -------------------------------------------------------------------------------- 34023cf | David Lawrence Ramsey | 2024-02-20 13:16:47 -0600 Add a TODO. Pan lords with foul flame touch would ideally have radius-1 umbra, but there's no easy way to implement that right now. -------------------------------------------------------------------------------- 42da790 | DracoOmega | 2024-02-20 14:21:10 -0330 Fix Vhi's destination checking being player-centric (Sergey) Even if a monster was casting Vhi's, it used only the player to determine whether a destination tile was safe. This meant that flying monsters would refuse to dash onto lava if the player was not flying, but also that land monsters would happily dash into lava if the player *was* flying (and then crash). Thank you for your sacrifice, Bogfrid. You will be remembered. -------------------------------------------------------------------------------- f8fd089 | elliptic | 2024-02-20 12:38:27 -0500 Make autoexplore wait for -Move to end -------------------------------------------------------------------------------- ceb5a3b | Nicholas Feinberg | 2024-02-20 08:06:41 -0800 Fix: wands don't nerf legs (elliptic) -------------------------------------------------------------------------------- 59b7d74 | Nicholas Feinberg | 2024-02-20 07:58:09 -0800 Fix offhand wielding unrands (dolorous) Closes #3571. -------------------------------------------------------------------------------- 2cd8773 | Nicholas Feinberg | 2024-02-20 07:46:05 -0800 Fix: Coglins get -Move for ranged/throwing -------------------------------------------------------------------------------- 3d4e8de | Nicholas Feinberg | 2024-02-20 07:45:04 -0800 Fix offhand-only attacks -------------------------------------------------------------------------------- 744942f | regret-index | 2024-02-20 03:06:04 -0330 Fix a door ficus (elliptic) -------------------------------------------------------------------------------- d27e141 | regret-index | 2024-02-20 03:04:45 -0330 Even more non-player spell icon tiles + Yred ability icon tiles Still placeholdery, still stitching together from other old tiles, still better than pawprints for all the webtiles players (and maybe local tiles players eventually? Who knows?) Spell sources: * Aura of Brilliance: Sastreii's Recieve Forbidden Knowledge icon and Brilliance monster status icon. * Call of Chaos: CanOfWorms's Word of Chaos icon. * Call Tide: roctavian's old watery Shoals stairs. * Concentrate Venom: Sastreii's status icon plus Bloax's Corona icon. * Crystal Bolt: roctavian's Bolt of Fire + Bolt of Ice + stone wall tiles. * Drain Magic, Sap Magic: snw-0's icon for Pakellas's brief Sap Magic invocation + Sastreii's antimagic icon. * Dream Dust: CanOfWorm's dream sheep tile. * Druid's Call: snw-0's recall icon + Sastreii's bunyip and toad tiles. * Entropic Weave: Ultraviolent4's corrosion status icon + Pete Hurst's cobweb tiles. * Fire Summon: nlavsky's Major Servant icon, previously used for the Staff of Asmodeus's own summon ability. * Malign Offering: Sastreii's Dark Bargain icon, coloured like Kiku icons. * Regeneration: roctavian's Regeneration spell icon. * Sheza's Dance: Sastreii's Pain Branding icon, CanofWorms's Fugue of the Fallen icon, snw-0's dancing weapon status icon and summoning sigil, roctavian's glaive + morningstar tiles. * Summon Illusion: DD's old icon for Yred Injury mirror + snw-0's sigil. * Throw Ally: PleasingFungus's Lesser Beckoning icon + CanOfWorms's Jinxbite icon. * Throw Klown Pie: snw-0's jester pie tile and jester cap tile. * Weakening Gaze: The original rltiles See Invisible plus Sastreii's Weak status icon. Ability sources: * Hurl Torchlight: snw-0's Hurl Damnation + snw-0's Cleansing flame icons. * Fathomless Shackles: snw-0's Sanctuary + CanOfWorm's Break The Chains. This also comes with a few alterations to already present monster summon spells icons, to fit more in frames or with newer tiles than prior, and some reorganization and description adjustment alongside it. -------------------------------------------------------------------------------- 8d7c456 | DracoOmega | 2024-02-20 02:39:06 -0330 Allow scrolling the god info panel up/down So that one can actually read a recruit's stats in an 80x24 console window, should someone wish to do so. For some reason, key events weren't being passed along to the default widget input handler here, which actually meant that the oldBeogh follower list (which could theoretically get even longer than this) did not scroll either. -------------------------------------------------------------------------------- 0ac2973 | Nicholas Feinberg | 2024-02-19 21:56:04 -0800 Fix: don't rev when shooting air (elliptic) This check seems OK for now, though it's a bit bad against invisible foes. -------------------------------------------------------------------------------- 4da7c8d | Nicholas Feinberg | 2024-02-19 21:40:07 -0800 Fix: don't call offhand weapons 'worn' (elliptic') -------------------------------------------------------------------------------- dbcfc42 | David Lawrence Ramsey | 2024-02-19 22:10:51 -0600 Adjust "Brilliance" description a bit. Foul flame is only mostly gone, so to say only its lesser version survived is not quite right. -------------------------------------------------------------------------------- f9bc0de | DracoOmega | 2024-02-19 23:51:09 -0330 Fix prompt for recruiting your first apostle using the wrong hotkey Because the code hadn't technically given the player access to the Recruit ability yet, the game wouldn't properly report on what hotkey it WOULD have, if the player had it. (Also fix a bug with it still printing the reminder if the player had apostles, but they were all dead or elsewhere) -------------------------------------------------------------------------------- ba67e77 | DracoOmega | 2024-02-19 23:31:57 -0330 Improve apostle UI - show brief stats in Dismiss ability / overview Remembering which of multiple dead apostles had which spells / items can be a little hard, and comparing a new recruit to multiple apostles (some of whom may also be dead) has a bit more UI friction than I wanted. So now you can see a simplified overview of your apostles' stats (plus those of an available recruit!) all at once in the religion screen (replacing the previous mostly-useless companion list, leftover from older days). Each Dismiss Apostle ability will also show the same stat place for the apostle you're dismissing. This block shows name, class, HP/AC/Damage, equipment, and spells. It's generally much less featureful than xv, but should still be a meaningful UI improvement. Additional polish may come in future, but I felt that this already provides enough QoL benefit that it's worth pushing. -------------------------------------------------------------------------------- 52729c3 | David Lawrence Ramsey | 2024-02-19 19:29:10 -0600 Adjust ETC_FOUL_FLAME to make it shadowy. It now consists of umbra colours (darkgrey and magenta), plus the occasional flicker of white to show that it's glowing. -------------------------------------------------------------------------------- 03ac3cc | David Lawrence Ramsey | 2024-02-19 17:00:31 -0600 Extinguish foul flame's last glow. Make the wielding messages for foul flame weapons mention blackness instead of radiance. -------------------------------------------------------------------------------- 0bcb2a7 | DracoOmega | 2024-02-19 19:20:10 -0330 Don't offer Beogh conversion to Demigods (ragingrage) They couldn't actually *join*, but would still get peached to as if they could (and even get the Join Beogh ability, which didn't actually work). -------------------------------------------------------------------------------- c0d2f6e | David Lawrence Ramsey | 2024-02-19 16:15:14 -0600 Rework foul flame damage to scale with XL. Simplify the damage function as well. The new formula is based on the spiny damage formula, and most likely still needs adjustment. -------------------------------------------------------------------------------- 2cdf64c | David Lawrence Ramsey | 2024-02-19 15:21:59 -0600 Reflavour foul flame as darkness, not light. The foul glow mutation is renamed to foul shadow, and its description has been adjusted. It loses its glow-related effects in favour of a consistent umbra with radius 1-3 (dependent on mutation level). It's also removed from Meteorans. At kate's suggestion, it also conflicts with spiny, since both give retaliation-based attacks. Its placeholder tiles are now the darkness tile in UNUSED/gui for level 3, and palette swaps of it for levels 1 and 2. "Brilliance" now has an umbra instead of a halo, like the ring of Shadows, and its description has been adjusted. The rewritten lore now describes foul flame as an overpowered umbra prototype. Its tiles need to be redone (item/weapon/artefact/urand_brilliance.png and player/hand1/artefact/mace_of_brilliance.png). Foul flame's actual damage in-game is unchanged. -------------------------------------------------------------------------------- a146dc8 | Nicholas Feinberg | 2024-02-19 13:01:28 -0800 Fix Maxwell's revving offhands (elliptic) Too good a bug to keep... -------------------------------------------------------------------------------- f177465 | DracoOmega | 2024-02-19 17:12:28 -0330 Don't crash when deathbed pacifying an orc standing on the stairs They would immediately leave the level when converted, and then by the time the revival fineff fired, they would already have stopped existing. -------------------------------------------------------------------------------- 52037ea | elliptic | 2024-02-19 14:14:59 -0500 Make autofight wait for -Move to end if it wants to move towards an enemy -------------------------------------------------------------------------------- 614e6b5 | Nicholas Feinberg | 2024-02-19 11:10:05 -0800 Fix the build? -------------------------------------------------------------------------------- 98a3e4f | Nicholas Feinberg | 2024-02-19 10:57:46 -0800 -Stiff, +-Move (elliptic, BountyHunterSAX) Coglins' Stiff mutation did provide interesting dynamics in combat, but could be very punishing of mispresses - one tab too many could cause a very painful double turn. Try a similar dynamic with -Move on attack/cast/throw, lasting for your turn + 1 normal action. This is pretty similar in terms of tactical implications, since moving at 2.0 speed is similar to waiting for 1.0 and then moving at 1.0. The upside is that this blocks dangerous moves; the downside is that it involves more obstruction from and messaging by the UI. Let's try it out. :) -------------------------------------------------------------------------------- b960cd1 | DracoOmega | 2024-02-19 13:52:25 -0330 Don't interrupt rest when allies take poison ticks This was additionally confusing since there isn't even any message for them taking damage this way, so it's not clear what's interrupting the player. (And it happens a lot from incidental damage in places like Snake) And while it's sad to lose an ally that way, the player also usually can't do anything about this - if they're lethally poisoned, they're just going to die. (Standing in a poison cloud does direct damage and will still interrupt, so most ways to get *more* poisoned will still alert the player) -------------------------------------------------------------------------------- b00f77f | David Lawrence Ramsey | 2024-02-19 10:12:00 -0600 Move foul glow to tier 2 demonspawn mutations. It needs to show up more often for testing, and it's not as game-warping as tier 3 mutations. -------------------------------------------------------------------------------- ce5c0aa | David Lawrence Ramsey | 2024-02-18 23:19:22 -0600 Adjust a few Donald speech lines for new Beogh. -------------------------------------------------------------------------------- 45148b7 | Nicholas Feinberg | 2024-02-18 21:16:22 -0800 Shuffle Rev colours around (DracoOmega) -------------------------------------------------------------------------------- 2ba4f54 | Nicholas Feinberg | 2024-02-18 20:15:39 -0800 Fix: ranged attack don't 'pierce through' orbs In terms of messaging. -------------------------------------------------------------------------------- c7c9bb8 | Nicholas Feinberg | 2024-02-18 20:14:25 -0800 Fix: don't count CACT_BLOCK for orbs -------------------------------------------------------------------------------- 673a130 | Nicholas Feinberg | 2024-02-18 20:14:23 -0800 Use a new helper -------------------------------------------------------------------------------- b640343 | Nicholas Feinberg | 2024-02-18 20:10:39 -0800 Fix: orbs aren't (divine) shields Don't treat an orb as a shield for TSO messaging purposes. -------------------------------------------------------------------------------- 709d21d | David Lawrence Ramsey | 2024-02-18 20:11:52 -0600 Add a few Donald speech lines for new Yred. -------------------------------------------------------------------------------- dd28848 | Nicholas Feinberg | 2024-02-18 17:25:33 -0800 Fix antimagic being pro-magic offhandedly (Lightli) Apply the SPWPN_ANTIMAGIC max MP penalty to off-hand weapons. -------------------------------------------------------------------------------- 0a58b4a | David Lawrence Ramsey | 2024-02-18 19:03:54 -0600 Fix tag_upgrade build? -------------------------------------------------------------------------------- 4a20d55 | regret-index | 2024-02-18 21:10:22 -0330 Quick vault review and decor adjustments Some layout and gimmick reconfiguring, some rewards and monster and feature choice tweaking, increased weight rather than decreased weight to a bunch of extra-large V vaults because they're already unlikely to spawn with the layout generator in the first place, and some continued emphasis of harmlessness in some of the newer decorations. -------------------------------------------------------------------------------- 831329d | regret-index | 2024-02-18 21:10:21 -0330 New decorations: caches of fruit and meat These are meant to provide the flavour of fruit trees and groves, or people discreting stashing away meals within settlements and fortresses, without the attending manifold issues of the hunger clock. Many vaults on either front end up involving the constant presence of greenery or lakes and moats to emphasize the notions of housing; this can compliment and reduce the use of either without interrupting as plants and water do, with relatively straightforward decoration that shouldn't be confusable as much else. Both of these fruit and meat piles are akin to dry fountains, not statues- they don't block fire or movement, and solely sit on the ground. They can also walked on without any effects beyond a rare message about stopping to nibble at floor food. (Most of the fruit messages are trying to be cosmopolitan, while the meat messages this time around are specifically tailored to the various animals of the Dungeon for a little more world-building. There's also a variety of species-specific messages.) In console, these are green and brown % or ÷ glyphs, the same glyphs as skeletons, which should continue to help with not flooding the screen any more than those currently do. (This also comes with a couple vaults being scaled for further locations than they currently possess, since they felt workable for other contexts.) The current fruit cache tile was made by snw-0, while the meat cache tile components go as far back as the original rltiles project. They're a little placeholdery- they feel a bit too item-like for now, though players shouldn't take too long to get used to it. These, more than any other decorative feature, would benefit from more contributions over time- getting back sultanas, snozzcumbers, and pizza would be nice, and it would also help to drift away from tiles that specifically invoke old carryable items. I'd also be up for a cache of baked goods for a handful of vaults, which could easily have some pie pile tiles for Zot.... (TODO: .rc setting for allowing fully muting the new MSGCH_DECOR_FLAVOUR, or brightening it from a current default darkgray. If such controls get in, maybe we could consider rare messages for other stuff, like walking over fountains, beside animated statues, or on top of impending cloud vents?) -------------------------------------------------------------------------------- a70f5b3 | Nicholas Feinberg | 2024-02-18 16:03:50 -0800 More Coglin novelty titles (ragingrage) -------------------------------------------------------------------------------- 363f0df | David Lawrence Ramsey | 2024-02-18 17:54:43 -0600 Remove unneeded quotes from YAML files. Some have them around species name, abbreviation, short name, adjective, and/or genus; and some don't. (Mountain Dwarf has them around some things and not others.) They're read properly either way, so the quotes aren't necessary. -------------------------------------------------------------------------------- 17d16cf | Nicholas Feinberg | 2024-02-18 15:05:00 -0800 Fix: don't crash on monster ranged Oops! -------------------------------------------------------------------------------- 9512921 | Nicholas Feinberg | 2024-02-18 14:58:13 -0800 Let coglin trees dual wield The intent was to block the exoskeleton muts (dual wield, slow wield, rev wield) for forms with no weapons, but to enable them for weapon-using forms. Treeform, inconveniently, melds 'physical' muts but also wields weapons. Let it dual-wield, since it feels very weird for coglins to otherwise want to wield a shield in their weapon-holding offhand, etc. Mecha-tree! -------------------------------------------------------------------------------- 7f4458d | Nicholas Feinberg | 2024-02-18 14:52:33 -0800 Leave the shadows behind (elliptic) -------------------------------------------------------------------------------- 89e69b9 | Nicholas Feinberg | 2024-02-18 14:51:53 -0800 Fix crash on lig ending (dolorous) With an offhanded weapon. Resolves #3557. -------------------------------------------------------------------------------- 0012f90 | Nicholas Feinberg | 2024-02-18 14:38:48 -0800 Fix: don't wield items twice (SentientSupper) Don't allow using the local tiles UI to wield the same one-handed weapon in both hands simultaneously. Juggling is illegal and clowns should be executed. -------------------------------------------------------------------------------- 0561d8b | Nicholas Feinberg | 2024-02-18 14:36:32 -0800 Loosen up stiff coglins (Sergey, SentientSupper) Count waiting as movement for Stiff purposes, to discourage jogging back and forth while waiting for enemies to round a corner. (One must infer the coglin is jogging in place within the tile.) -------------------------------------------------------------------------------- f146ca5 | Nicholas Feinberg | 2024-02-18 14:26:36 -0800 Add a very serious title (hellmonk) -------------------------------------------------------------------------------- 02c5f9f6 | Nicholas Feinberg | 2024-02-18 14:25:29 -0800 Fix: don't crash when printing stats With offhand weapons. -------------------------------------------------------------------------------- a990712 | Nicholas Feinberg | 2024-02-18 14:24:55 -0800 Fix: don't lose offhand ofter untransform (SentientSupper) -------------------------------------------------------------------------------- 2a2ee83 | DracoOmega | 2024-02-18 18:31:14 -0330 Interrupt autorest and travel when allies take damage Because autorest interrupts on fewer things than resting manually does, it was possible not to be notified of an apostle sitting in a poison cloud and have it immediately die with one button press. This is obviously quite bad. Now interrupt when any visible ally takes damage, to avoid this. I am... more than a little worried that this will create needless interruptions in regular play and that this should be more conservative, but the situation it's aimed at fixing is very bad, and it's been argued that the downsides won't come up in practice. So let's see, and then maybe try to narrow down criteria later, if it turns out there's issues. -------------------------------------------------------------------------------- 7fda0f4 | DracoOmega | 2024-02-18 18:27:09 -0330 Buff wizard apostles somewhat I intentionally kept the weight of some spells I thought would be especially useful on allies low, but in practice wizards often seem to be comparing poorly to other apostles, so I think they can stand to be more common. (This may still be too conservative?) Also make cast frequency of attack spells a little higher, give a little more hp, and also give bonus evasion that scales with apostle power (since their armour never gets especially good). -------------------------------------------------------------------------------- bd18ae2 | DracoOmega | 2024-02-18 18:11:20 -0330 Improve reminder for how to recruit an apostle The game already told the player how to if they had no apostles, but perhaps since the reminder came *after* the force_more for the apostle being available to recruit, it was sometimes overlooked. Now included it in the original message, colored to be hilighted more. -------------------------------------------------------------------------------- fe75644 | DracoOmega | 2024-02-18 16:55:40 -0330 Fix formicids being interrupted from taking stairs by dispersal traps (And anyone else with stasis, for that matter) Fixes #3567 -------------------------------------------------------------------------------- baf8858 | DracoOmega | 2024-02-18 14:42:06 -0330 Fix Scorch steam always being attributed to the player (SentientSupper) Could cause penance when cast by a hostile apostle against a friendly one, if the latter was standing over water. -------------------------------------------------------------------------------- 767cff9 | Kate | 2024-02-18 15:38:25 +0000 Fix delays not being interrupted by Rising Flame It was possible to, for example, activate Rising Flame, start climbing a staircase, then have the Rising Flame go off without interrupting the stair delay. Because Rising Flame then puts a shaft underneath the player's new location, they'd automatically jump back down the shaft as part of the continued stair delay. -------------------------------------------------------------------------------- c488ab4 | Kate | 2024-02-18 15:38:25 +0000 Tweak a message And adjust spacing. -------------------------------------------------------------------------------- 758c6da | grumposus | 2024-02-18 15:37:53 +0000 Make rising flame valid to use on D1 with the Orb And cause it to win the game. Closes #3519. -------------------------------------------------------------------------------- 289a535 | David Lawrence Ramsey | 2024-02-18 01:04:41 -0600 Don't list Hill Orcs in the aptitudes menu. -------------------------------------------------------------------------------- cd93b57 | David Lawrence Ramsey | 2024-02-17 19:40:41 -0600 Fix spelling. -------------------------------------------------------------------------------- 66ff23f | David Lawrence Ramsey | 2024-02-17 19:38:57 -0600 Handle joining/leaving good gods and foul flame. Joining them makes you holy, and thus unable to use it; leaving them for non-good gods makes you not holy, and thus able to use it. -------------------------------------------------------------------------------- d0048a8 | Nicholas Feinberg | 2024-02-17 16:58:32 -0800 Increase Foxfire Swarm damage Moving it from 1d6 to 1d8 might make it a bit more competitive with Ignis's other active. Elliptic suggested reducing the max number of foxfires from 24 to 8 (ie going from radius 2 to 1), which *would* make it easier to balance, but would be a terrible loss to the spectacle of the effect. I'd rather hold off. -------------------------------------------------------------------------------- 3fb9450 | Nicholas Feinberg | 2024-02-17 16:44:49 -0800 Fix: goblins are not elves (dolorous) -------------------------------------------------------------------------------- cc96a6a | Nicholas Feinberg | 2024-02-17 16:08:20 -0800 New species: Coglins Wielding weapons in each hand, Coglins are puny goblins that ride magic exoskeletons into battle. They're slow and inflexible in many ways. When they stop moving, their exoskeleton will be slow to move again. When they stop swinging, their exoskeleton's strikes will be weaker until they rev back up again. And when they switch weapons, it takes them some time to re-attune their exoskeleton's spirit. But once they get going - look out! More notes on mechanics: - Dual wielding: you can choose to wield a 1h weapon instead of a shield in your off-hand. (Unless you're wielding a 2h in your primary hand.) Whenever you strike with your primary weapon, your secondary will also attack. This doesn't trigger extra aux attacks. You can dual-wield 1h ranged weapons, but mixing and matching ranged and melee weapons doesn't work. Delay is the average of the two. The order of attacks is random. - Warmup strides: whenever you take a turn that's not movement, your next movement will take twice as long as normal. Other actions (attacks, spells, etc) remain normal speed. - Warmup strikes: your ranged and melee attacks are 33% weaker until you fully rev up, which takes about 4.0 dAut of attacking enemies. - Slow wielding: wielding, unwielding, or switching weapons (in both the primary and off-hand) takes 5 standard turns instead of 0.5. The idea is to play in a similar space to formicid's 2h+shield ability. Dual wielding is expected to *usually* be stronger than wielding a 2h or 1h+shield - and if it isn't, we can buff it until it is - but gear found will sometimes prompt one to use a shield or a 2h weapon, for a shorter or longer period. That sort of 'soft' change for gear evaluation (as opposed to a 'hard' lockout on item types ala spriggan/kobold/ogre/etc) seems fun and exciting. The various downsides are intended to complement this. Dual-wielding is a big strategic upside, so the downsides are tactical, hopefully making fights feel a bit different without being overly obtrusive. (And slow-wielding, in particular, is intended to avoid excessive weapon micromanagement.) There's also an implementation of an unused 'attractivitis' mutation in this commit. We may later turn this into a generic badmut, or cut it entirely. downside, either! More notes: - Weapon names are purely cosmetic, but Esmeralda's feelings will be hurt if you say so. - Apts and attributes are early drafts and especially subject to change. -------------------------------------------------------------------------------- ed53ad6 | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Officially deprecate Hill Orcs in YAML. -------------------------------------------------------------------------------- 2c85d38 | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Switch Lua mutation test from HO to DE (#3551). Since DE don't have any mutations, and HO are now deprecated. Suggested by wheals. Closes #3551. -------------------------------------------------------------------------------- f317980 | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Properly #ifdef out one last Hill Orc reference. -------------------------------------------------------------------------------- b72868e | David Lawrence Ramsey | 2024-02-17 08:31:08 -0600 Add more god-related names to artefacts. -------------------------------------------------------------------------------- c6a9d31 | elliptic | 2024-02-17 03:00:42 -0500 Remove an outdated note about boomerangs not returning (SentientSupper) -------------------------------------------------------------------------------- 4f4d228 | David Lawrence Ramsey | 2024-02-16 20:59:48 -0600 Consistently rename deprecated species' YAML. All of them now start with "deprecated-". Hill Orcs are untouched for now. -------------------------------------------------------------------------------- 3b6c037 | David Lawrence Ramsey | 2024-02-16 20:26:12 -0600 Move species' orc names to YAML. Humans are the only ones who don't get a specific orc name, and so default to "Orc". Demigods get "Buggy Orc", since they shouldn't be able to worship Beogh in the first place. All the obsolete species get orc names, too. (Deep Dwarf is Deep Dworc because Deep Orc is already used for Deep Elf.) Also update documentation. -------------------------------------------------------------------------------- c80224b | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive minmay's old "Brilliance" vault, adjusted. It's now guarded by profane servitors instead of angels/daevas; if "Brilliance" has already been generated, it'll now generate a randart eveningstar of draining, pain, or vampirism instead of holy wrath; and the item it generates no longer has the obsolete not_cursed property. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- c85c4cc | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive "Brilliance" with the foul flame brand. Change its brand from holy wrath to foul flame, change its colour from ETC_HOLY to ETC_FOUL_FLAME, drop its other qualities aside from its +1 enchantment, give it its old halo back, and rewrite its description to add some lore about its corruption and the origin of the foul flame brand. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- 7dcfd5f | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive and rename an old elemental colour. Put the colours of ETC_SHINING back in, and rename it ETC_FOUL_FLAME. Its colours are bright enough to use for the foul flame brand. This partially reverts commit 4071159e5c0962697a6c6eb0299a3d1e46caf787. -------------------------------------------------------------------------------- 953bdd3 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame to chaos effects, rarely. Its unpredictability is fitting for chaos, and only a few monsters with demonic holiness currently have the chaos attack flavour. -------------------------------------------------------------------------------- 26e6efb | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame weapon attacks to Pan lords, rarely. -------------------------------------------------------------------------------- 2ccd7fc | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame melee attack weapon and flavour for monsters. Currently, the former's brand is banned from actual weapons; it's only for monster attacks that are treated as weapons. However, all the code needed to put it on weapons is in place. Also, update the monster bot to account for foul flame attacks and resistance. -------------------------------------------------------------------------------- 3bb2588 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame melee attack for players. This is tied to the glowing mutation (you glow with foul flame). It triggers on attacks, similarly to the foul stench melee attack. Its functions are also modeled after those in emit_foul_stench(). -------------------------------------------------------------------------------- c1e5129 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame. It's basically inverse cleansing flame: undead/demons take less damage, and holies and good god worshippers take extra damage. -------------------------------------------------------------------------------- 9a4668d | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Rework glowing mutation into foul glow mutation. Turn it into a 3-level mutation, move it to tier 3 demonspawn mutations, mark it as good, and change its messages and description accordingly. Meteorans still keep 1 level of it, even though its nature has changed. Also add placeholder tiles for it: palette swaps of the old Darkness spell tile from UNUSED/gui. -------------------------------------------------------------------------------- 5eddc7e | DracoOmega | 2024-02-16 19:40:26 -0330 Fix Animate Dead zombies remaining after floor change Also broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c but appeared to be working correctly because of the bug fixed by 213d36726f0033a8e4beb488114cccfd39a8a707 -------------------------------------------------------------------------------- 4f8ebfe | Andrew O'Neill | 2024-02-16 15:08:30 -0600 Finish removing CMD_TOGGLE_TRAVEL_SPEED This removes the CMD_TOGGLE_TRAVEL_SPEED from colemak keybindings and keybind help. -------------------------------------------------------------------------------- 4ea16c4 | David Lawrence Ramsey | 2024-02-16 14:14:05 -0600 Fix punctuation. -------------------------------------------------------------------------------- b00bd65 | DracoOmega | 2024-02-16 16:29:32 -0330 Nerf Light the Black torch at low piety While I am fine with Yred being a god that offers a quicker early power spike than most gods, it felt a bit TOO much - especially if the player finds an early faded altar. Light the Torch now only provides allies upon reaching 1*, and the ally tables have been adjusted slightly so wights (and especially groups of wights) will be less common at very low piety/xl. A few other things have also been nudged here or there. -------------------------------------------------------------------------------- 652cfa0 | David Lawrence Ramsey | 2024-02-16 13:34:33 -0600 Tweak punctuation. -------------------------------------------------------------------------------- e323ee7 | David Lawrence Ramsey | 2024-02-16 13:31:32 -0600 Fix typo. -------------------------------------------------------------------------------- 9047412 | David Lawrence Ramsey | 2024-02-16 13:29:07 -0600 Update species_creation.md for child_name. -------------------------------------------------------------------------------- 4264278 | DracoOmega | 2024-02-16 14:55:05 -0330 Unbreak telling allies to guard an area This was broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c changing the LoS check for allies to return to you from 'Does this ally currently have LoS to the player' to 'Does this ally ever need LoS to the player to attack', resulting in all perma-allies attempting to return to the player every single turn - whether they could see you or not. I've also carved out an additional exception to not return to you if you told them to guard an area, since this is probably what the player wants in that case. Additionally, telling allies to follow you, or recalling them, should fully end their travel behaviour. (Previously - and unrelated to the linked commit - telling them to guard an area after you'd previously told them to guard a different area would often result in them trying to run back to the first one or something outright being stuck in place, since they would still be trying to use pathfinding info from the previous time they did pathfinding) I am 100% positive travel_path is still not being cleared in all situations that it should be, so it's possible that the minor change in _handle_monster_travelling will uncover some additional bugs, but the code currently seems to assume that the monster's target will be travel_path[0], if it's travelling, and thus if anything sets its target directly, it can cause it to perpetually freeze in place by assuming it's moving to its next waypoint when it's not actually moving anywhere at all. Probably better to find any other bugs as they come up rather than leave this one here. (Probably better to refactor a lot of monster movement / behaviour code, but HOO BOY is that a tall ask...) -------------------------------------------------------------------------------- eb24b2c | David Lawrence Ramsey | 2024-02-16 11:37:55 -0600 Flag non-mundane starting items as such (#3548). So that they get the proper tiles for branded/enchanted items. Closes #3548. -------------------------------------------------------------------------------- 213d367 | DracoOmega | 2024-02-16 05:03:32 -0330 Fix Animate Dead zombies being temporary (CarefulOdds) Accidentally broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c Sorry! -------------------------------------------------------------------------------- e6c3123 | David Lawrence Ramsey | 2024-02-16 00:57:03 -0600 Fix god speech substitution syntax (#3545). The speech databases use @this@ instead of . Closes #3545. -------------------------------------------------------------------------------- d8048dd | DracoOmega | 2024-02-15 20:47:36 -0330 Fix Electrolunge cast message -------------------------------------------------------------------------------- d58f893 | DracoOmega | 2024-02-15 19:55:40 -0330 Prevent using Tukima's on apostles (Darby) Even though apostles and their bands were MF_HARD_RESET (and thus don't drop items), it was still possible to animate their weapons and then kill them to gain a copy yourself. You could even do this repeatedly (if you were willing to upset Beogh) to a friendly apostle, who would return from abandoning you with a fresh copy of their weapon. I could theoretically just have made their gear count as summoned, but that still leaves the problem of using Tukima's *before* you recruit them and then leaving them forever without any weapon. It seems unfun to let players trap themselves like that, so let's just ban casting it on them. -------------------------------------------------------------------------------- bb23cca | DracoOmega | 2024-02-15 19:55:40 -0330 Don't allow binding souls of phantom reflections (Darby) -------------------------------------------------------------------------------- 295baea | DracoOmega | 2024-02-15 19:55:40 -0330 Don't transit monsters marked as followers Normally when entering a floor, followers (ie: things taking the stairs with you) are placed before transiting monsters (ie: things that fell down a shaft earlier or were banished). But Abyss generation could place transiting monsters (sometimes multiple times?) before the normal call to place followers. Followers are placed near the player, while transiting monsters are placed anywhere, so this could result in player allies seeming to disappear when you stepped through an Abyss portal. This also had the unfortunate side-effect of not updating the companion list properly, so let's try to prevent it. but transiting monsters placed randomly on the floor. -------------------------------------------------------------------------------- a2df315 | DracoOmega | 2024-02-15 19:55:40 -0330 Fix bound souls being saved to the companion list as hostile This was seemingly always the case, but usually not noticable as each level transit would update the saved copy (with the real, friendly one). But in some cases where a soul didn't transit properly and was recalled, it would be recalled as hostile and remain hostile forever afterward - even after being repeatedly killed! (It was theoretically even possible to farm unlimited items off a bound soul this way, by recalling and killing it over and over again) -------------------------------------------------------------------------------- 9b00542 | DracoOmega | 2024-02-15 19:55:40 -0330 Fix dactions that could cause Ancestors/Bound Souls to incorrectly die Because entering a new floor causes all dactions from the entire game's history to fire (see 063869c3723e ), the dactions for losing your Hep ancestor (due to piety loss/excommunication) or bound soul (due to binding a new one) could happen repeatedly. This usually did nothing, but in the Abyss in particular could cause them to simply die - a minor nuissance for an ancestor, but a permanent mysterious loss for a bound soul. Now we try to be a bit more picky about whether we actually kill something with this daction: check that the player still doesn't qualify for an ancestor, or that the bound soul we're trying to remove isn't the player's current companion. -------------------------------------------------------------------------------- 4bb0848 | DracoOmega | 2024-02-15 19:55:40 -0330 Make companion_is_elsewhere lie less Companion_is_elsewhere relied on a manually updated list of what floor each companion was supposed to be on. This was normally pretty reliable, but there were a few cases (the Abyss in particular) where the list could THINK they were there, but were not (eg: because the map was regenerated since the player was last there) Some results of this: -Being unable to recall followers that the game THOUGHT were on the floor with you, but were not -A particularly troublesome bug where old dactions to upgrade a Hep ancestor would incorrectly think the ancestor was on the current floor (since it wasn't 'elsewhere'!) and then try to change its weapon. Except, since it was referring to a monster that wasn't REALLY on the floor, trying to access its weapon would point to a random (probably undefined) item on the floor's item list instead. Tinkering with this could create various forms of buggy item to appear and crash the game. Now, since we know we can't 100% trust the cached list, whenever the list thinks a companion is on our current floor, we double-check that it actually is. And if it is not, set its location to an invalid floor (since it's currently effectively 'nowhere') This should fix both above bugs and possibly some others. -------------------------------------------------------------------------------- 51ccb66 | DracoOmega | 2024-02-15 19:55:39 -0330 Fix apostles being returned to you in the middle of AoE (Darby) If a kill during the earlier part of an AoE attack generated enough piety to end Beogh penance, Beogh would return your apostles to you in the middle of that attack, which could then hit them and immediately re-penance you. Make this a fineff as well. -------------------------------------------------------------------------------- 7eccf60 | DracoOmega | 2024-02-15 19:55:39 -0330 Preserve Beogh vengeance markers through polymorph (Oneirical) -------------------------------------------------------------------------------- 9c5f7be | DracoOmega | 2024-02-15 19:55:39 -0330 Remove Passwall armour bonus if the spell is interrupt eg: by being trampled in the middle of it. This fixes #3543 -------------------------------------------------------------------------------- e39a69d | regret-index | 2024-02-15 19:44:18 -0330 Cut another necrophage use, mildly nerf them to nerf Yred Forgot to remove necrophages from ghoul bands when I cut them from vaults in e446cd8. Bog bodies take up their weight entirely, so minimum and maximum ghoul band size has been reduced in exchange. Very early Yred is quite strong due to the many benefits at 0* needed to make the new piety gain restrictions work. Since necrophages solely exist for the bottom of Yred's raised Black Torch summons now, they can be a little weaker in both damage and health to make the snowballing a little harder at the earliest XLs working with Yred. -------------------------------------------------------------------------------- 5942d1e | regret-index | 2024-02-15 19:44:17 -0330 Adjust Zig set scaling a little more Emphasize spriggan druids in Lair floors a little less, scale Tomb / Pan / Fire floors a little harder, let the non-Tar hells at the higher ends emphasize a little more of the selected monsters, and screw with some experimental quadratic scaling for Air (titans) and Earth (hell sentinels and iron giants). Further steps still need to be taken, but this continues to be a very quick way to continue to adjust megazigging. -------------------------------------------------------------------------------- b3a183b | regret-index | 2024-02-15 19:44:17 -0330 New decorations: sacred lotuses The opposite of demonic plants in multiple ways, sacred lotuses are holy water-bound plants that don't wither away and have sturdiness even beyond bushes. They provide some additional decorative plants of a more notable nature than the old proliferation of trees and plants themselves, and are meant to only be used in very sparing pillars and sides rather than potential blockades like most other non-hostile plants are delegated to. They're used in vaults for Elyvilon (as symbols of longevity), Fedhas (as a revered plant), and the Wu Jian Council (as a symbol of elegance and grace). In particular, the first of those provides a little more fanciness for holy themed vaults, which focus heavily on wall and statue retiling due to the rather limited breadth one can use holies when compared to the wide variety of potential unholy themes. It can also provide a little bit of fanciness to the very watery, plant-filled branches of Swamp and Shoals. They use the old thorn lotus tile by snw-0. -------------------------------------------------------------------------------- 65e31ca | regret-index | 2024-02-15 19:44:17 -0330 Burning bush -> scrub nettle (monkooky) There's been some concerns with the increase of decorations that some non-decorative monsters shouldn't be confusable with decorative features. Burning bushes, those weird biblical jokes, fall directly under this concern. A regular bush can already be set on fire and use the same tile as the other enemy in question without suddenly picking up the ability to shoot 3d9+ Throw Flame. They're only used in one sprint, one vault's configuration for one branch, and by Fedhas's Overgrow ability, so modifying them into something a bit less confusable should address this without upsetting balance too much. The new scrub nettle is an Australian nettle, mildly enhanced in the way dart slugs and bombardier beetles are. It uses Sting over the burning bush Throw Flame, which gives them a partially irresistable attack that actually scales notably directly with one's Invocations skill (since orc apostles can get the spell for a while anyway). In exchange, the resistance is vastly more common, they're lower HD / HP to start with, and Sting only has a range of 4 instead of 7 (not that this is any more awkward as an ally than the wandering mushrooms the ability already grants). This probably doesn't upset Fedhas balance too much- Overgrow is very expensive and used for terrain-manipulation as much as it is for turret and mushroom support. We could look into invocations not granting such a high ratio of invo skill versus HD _every_ plant Fedhas uses, if needed. It might be useful in the right heavily-constrained portal, as a introductory baby immobile in a context of Sewers already occasionally having strange numbers of plants. If the name is somewhat questioned for not seeming threatening while the bulk of immotile plants aren't, it can use the far more direct name of "stinging nettle" instead. Their placeholder tile is a deeply silly mix of the original rltiles spiny worm, the first tile for porcupines by Malwyn, and an unused "poison pollen" plant tile from wad left in UNUSED for twelve years. (If these don't work out, it might be possible to set a different plant on fire instead of bushes, or maybe make a monster that's the base for a solitary snaplasher vine to reach out?) -------------------------------------------------------------------------------- 526f7d4 | gammafunk | 2024-02-14 20:35:28 -0600 fix: Walls in a ghost vault (EnegeticOcto) For gammafunk_ghost_abyssal_escape, it recently got the preserve_wall tag added due to its use of rock in its internal layout. Unfortunately, when this tag is present, the Vaults layout seems to replace stone wall with rock wall at some point. Until we can figure out how to fix this, have this vault only use metal and crystal for its random walls. -------------------------------------------------------------------------------- 5e32175 | David Lawrence Ramsey | 2024-02-14 19:00:26 -0600 Fix duplicate comment. -------------------------------------------------------------------------------- 1d7162e | Nicholas Feinberg | 2024-02-14 12:18:29 -0800 Fix: felids can't wield artefact weapons Broken in 4224600aead45df7c84102127e7103837e200c84. -------------------------------------------------------------------------------- 91ca388 | Nicholas Feinberg | 2024-02-14 12:15:14 -0800 Fix dwarven adjectives (Lici) -------------------------------------------------------------------------------- cdbe0f7 | DracoOmega | 2024-02-14 15:11:03 -0330 Fix one overlooked thing from the previous commit It's not clear that the source pos ever really did anything here anyway, as a frenzied monster will immediately pick a different nearby target regardless. -------------------------------------------------------------------------------- cc65242 | DracoOmega | 2024-02-14 15:08:38 -0330 Slightly refactor chaos_affect_defender to fix a couple of bugs Chaos_affect_defender was a member of attack, and was used for chaos-branded weapons, but it was ALSO used for chaos clouds. And this meant that clouds had to construct a fake attack just to call it. This had the consequence that there always had to be an 'attacker'. Since clouds often have no agent, the game defaulted to having the 'attacker' be the actor standing in the cloud. This was capable of causing penance in the following way. A friendly monster steps into the cloud and gets confused by it. Since they are the 'attacker' for this chaos effect, they count as having been confused by a player-friendly source for purposes of blame tracking. (This is how the player gets credited for kills done by monsters they confused). But then when this confused monster triggers the cloud again, because the source of the chaos effect (ie: themselves) was confused 'by you', YOU are considered the source of the new debuff they recieve, which counts as you attacking them yourself, as far as the good gods and Beogh are concerned. I have pulled chaos_affects_defender out attacks entirely. Now it is chaos_affects_actor() and the source is optional. It should otherwise operate basically the same as it did prevously, aside from fixing an additional bug where web effects from a chaos weapon incorrectly re-applied the damage that attack did and produced weird messages. (Note: I wasn't sure what file to put this in, so it's ended up in clouds.cc. If someone feels strongly, they could put it somewhere else, I guess) -------------------------------------------------------------------------------- 94eecf8 | DracoOmega | 2024-02-14 13:15:26 -0330 Fix Yred giving the wrong number of torch charges (Darby) I am not sure how in the world I missed those elses. But also, it turns out I missed a function that would have let me write this in a less dumb way in the first place. Whoops. -------------------------------------------------------------------------------- bc685e0 | patrick | 2024-02-14 11:38:59 -0500 Fix up randbook.txt The comment says that the headers for multi-spell books need to have the spell schools in alphabetical order, which was broken when Alchemy was invented. No doubt this ruined untold numbers of games. -------------------------------------------------------------------------------- fed3edf | Nicholas Feinberg | 2024-02-13 22:01:15 -0800 Fix an || -------------------------------------------------------------------------------- cc768c7 | Nicholas Feinberg | 2024-02-13 21:53:56 -0800 Fix Mountain Dwarf titles (particleface) -------------------------------------------------------------------------------- 028c0f8 | David Lawrence Ramsey | 2024-02-13 23:01:57 -0600 Checkwhite -------------------------------------------------------------------------------- 8574905 | DracoOmega | 2024-02-14 01:23:09 -0330 Don't let friendly monsters use manifold assault on targets you can't see -------------------------------------------------------------------------------- 6c3d6ff | DracoOmega | 2024-02-14 01:23:09 -0330 Don't mark your own apostles for vengeance (Oneirical) Even if they *did* kill your other apostles in a momentary act of blind frenzy >.> -------------------------------------------------------------------------------- fa6ab80 | DracoOmega | 2024-02-14 01:23:09 -0330 Clear apostle list on game start To keep from bringing apostles from a past game into a future one. This fixes #3534 and #3533 -------------------------------------------------------------------------------- 409ee8c | DracoOmega | 2024-02-14 01:23:09 -0330 Reroll apostle names to avoid the player ever having two identical names Make sure that any apostle challenge does not share a name with any of the apostles the player already has, to avoid the confusing situation of having two of them named the same thing. Also remove some unneeded (or outright incorrect) code from give_monster_proper_name -------------------------------------------------------------------------------- fced3f9 | regret-index | 2024-02-13 22:55:30 -0330 New formless jellyfish tile (CanOfWorms) A quite pretty new tile, really. (The state of formless jellyfish themselves seems to be roughly fine after quite a few buffs since their original implementation, but they still are a very strange fit for V as a branch. Possibly they could be trimmed from such and emphasized a little more in Shoals and Slime as they mechanically and thematically fit, much more than somewhere also very close to Depths's and Crypt's vampire knights, after V gets more monsters in the future?) -------------------------------------------------------------------------------- e446cd8 | regret-index | 2024-02-13 22:44:01 -0330 Vault review again again Header cleaning, set variety increasing, early decoration overuse reducing, later decoration use increasing, slight twitches of end balance, so on, and so forth. Of note: * Permanent bazaars no longer spawn- all bazaars are now timed. The chance for bazaars and bazaars alone confused people who haven't seen lots of them (as it's a low overall chance) into thinking they'd be portals one can revisit past the first trip. With the multitude of customized shop vaults also providing a lot more interest to shops these days, there's not too much pressure on bazaars * Necrophages have been trimmed out of vaults. Ever since rot and drain become intertwined, they don't really have any mechanical distinction beyond being an even earlier form of wight. A variety of other low-level undead fill their slots, depending on the vaults in question. I'm not removing them outright quite yet due to early Yred's xl scaling rather relying on them being present: it'd be good long-term to have a replacement for multiple early undead with their own distinguishing mechanics. Weeping skulls and giving misery protection the way we do for revenants and spectral flames might be of some use, but I'm wary of those appearing too often as is. (Maybe we could use some fixed skeleton types instead?...) * david_glass_crypt always places dread liches now, so one can't use a variety of smiting means to safely wear down any lich combinations that otherwise can't attack through the grates. It also finally places pressure plates under the tiles that will free the liches, so there's far less spoilers attached to the vault. * A few appropriately-air-themed Zot vaults that don't contain all of the downstairs or all of the upstairs now place storm talismans, regularly over the lightning rods that'd be found earlier by that point. We're already handing out level 9 spells in Zot vault rewards anyway, and it's not exactly solving Zot:5 compared to playing well enough there. -------------------------------------------------------------------------------- b478615 | regret-index | 2024-02-13 22:44:00 -0330 Make exactly one type of fountain not count as a watery feature (elliptic) With the multitude of different decoration types added and upcoming, there is a need for more consistency between them, and regular fountains were tracked as water for a variety of mechanics while sparkling fountains did not. Fire projectiles could make steam, sufficiently strong cold projectiles could make freezing clouds, and while no vaults nor level gen itself use it nor should use it these days, technically electric eels or entire krakens could fit in a fountain. The clouds are narrow mechanical interactions (since fountains themselves aren't that common) that don't need to serve as player traps, while eels work better in actual bodies of water and krakens shouldn't fit in fountains anyway. (There's also putting out sticky flame, and the loss of that is a little sad, but also the walk to a fountain would potentially put it out before even getting to the fountain anyway. This also cuts some Waterstrike and Shoals tide interactions, but Shoals doesn't exactly need fountains to provide water there.) Fountains now consistantly just count as floor for all intents and purposes. This also removes feat_is_watery(), since it is entirely redundant with feat_is_water(). (I might consider flavour messages for walking over them in the future with an rc setting to potentially mute such, in the same vein as another planned feature, but it should probably be tested on those first.) -------------------------------------------------------------------------------- bfd232f | DracoOmega | 2024-02-13 22:18:27 -0330 Fix apostles still getting player Vhi's instead of monster Vhi's Seems to have gotten messed up in the rebase to master. -------------------------------------------------------------------------------- 33d090a | David Lawrence Ramsey | 2024-02-13 17:37:04 -0600 Fix spelling. -------------------------------------------------------------------------------- d28b143 | DracoOmega | 2024-02-13 19:40:15 -0330 Charge artefact text to account for Mountain Dwarf ability (ge0ff) Now it can also be a little more specific about not working on unrands, too. -------------------------------------------------------------------------------- 817a283 | DracoOmega | 2024-02-13 19:39:06 -0330 Fix hostiles beyond able to follow the player through portals (various) This was broken by 71bd2ada001b which was only intended to let you take FRIENDLIES with you, rather than losing the old enemy avoidance behaviour. (It's possible this was responsible for a bug that caused multiple monsters to follow the player into the arena after using Okawaru's Duel ability, but I've not been able to reproduce that myself.) -------------------------------------------------------------------------------- 751ec8d | David Lawrence Ramsey | 2024-02-13 14:22:11 -0600 Tweak punctuation. -------------------------------------------------------------------------------- fdec872 | elliptic | 2024-02-13 12:13:10 -0500 Fix reversed logic for octopode offhand punches It gave offhand punch with shield to all non-octopodes instead. -------------------------------------------------------------------------------- 598725c | DracoOmega | 2024-02-12 18:28:39 -0330 Don't fire god conducts for allies banishing enemies -------------------------------------------------------------------------------- 0af507d | DracoOmega | 2024-02-12 17:51:53 -0330 Actually fix that on UNmarshall instead of marshall That's what I get for rushing... -------------------------------------------------------------------------------- c1aaa98 | DracoOmega | 2024-02-12 17:41:42 -0330 Fix a crash with rescaling damage_friendly Now that damage_friendly is no longer DOUBLE the friendly damage done to a monster, and assert could be tripped if a save file with a damaged monster was upgraded and that monster was killed. -------------------------------------------------------------------------------- 3a0b63c | David Lawrence Ramsey | 2024-02-12 13:16:50 -0600 Fix wording. -------------------------------------------------------------------------------- 710106c | DracoOmega | 2024-02-12 13:31:48 -0330 Checkwhite Of course, the original branch was fine and I never thought to run it for the one new file upon rebase >.> -------------------------------------------------------------------------------- 9003427 | DracoOmega | 2024-02-12 13:00:38 -0330 Fix typoes (Oneirical) -------------------------------------------------------------------------------- 7083e1d | DracoOmega | 2024-02-12 13:00:38 -0330 Fix Beogh conversion HP thresholds (Oneirical) -------------------------------------------------------------------------------- 4c96c8b | DracoOmega | 2024-02-12 13:00:38 -0330 Give Recall Apostles at *1 instead of *3, adjust keybinds The player cannot *get* apostles until 3*, but it felt awkward for smiting to sometimes remove the ability of the player to call existing apostles between levels. Now the player gets it at 1* (but the ability will be hidden if they have not recruited any yet) Also adjust internal ordering so the default keybind for recall and smite aren't so weird. -------------------------------------------------------------------------------- d26a540 | DracoOmega | 2024-02-12 13:00:37 -0330 Adjust Mennas's description To account for new Orcish flavor -------------------------------------------------------------------------------- f263e33 | DracoOmega | 2024-02-12 13:00:37 -0330 Cosmetic orcification Beogh worshippers now get a fake-mutation at 3* to indicate their orcish physical features growing in. This has custom messages to try and account for different species physiology. (I didn't make this a real mutation since I think it should ignore most things that would affect that and then it would need different message overrides for different species, etc.) This mutation remains if the player stops worshipping Beogh, but if they then worship Zin, Zin will cleanse it from them! -------------------------------------------------------------------------------- 28f58e9 | DracoOmega | 2024-02-12 13:00:37 -0330 Unbreak orcish follower speech, adjust some lines The code was still only giving special 'orcish' lines for followers and Beogh worshippers if you were a Hill Orc, so a huge number of speech lines could never be seen. Beogh worshippers will now always qualify as 'related' and I have edited a handful of speech lines for things that now feel out of theme (or otherwise imply that random orcs follow you, as opposed to leave you along). I also reduced the huge negative weight to allies orcs speaking, since there are now far, far fewer of them. This is far from a comprehensive dialogue pass, but should still improve things. -------------------------------------------------------------------------------- 8bc2e63 | DracoOmega | 2024-02-12 13:00:37 -0330 Remove a leftover from ally kills giving 1/2 XP Monsters internally track damage done to them in two categories: damage that will give the player XP, and damage that won't (ie: walking through natural clouds or being caught in the blast of another non-confused enemy). Because player allies used to give 1/2 XP, the 'XP-granting damage' value multiplied all player damage by two (since it was 'twice as good as ally damage') and did math with this basis. I have simplified this to just use a standard 1-to-1 ratio in all cases. (This incidentally fixes a bug where allies that banished enemies would grant no XP for the banishment at all) -------------------------------------------------------------------------------- a99f5f2 | DracoOmega | 2024-02-12 13:00:37 -0330 Fix Beogh conversion not being offered after abandoning your god Due to how the level caches whether there is a possible conversion offer on the floor upon first seeing an individual priest, if you weren't an atheist then, they will never offer it until you leave the floor and come back. (Also raise the HP threshold required for conversion to be offered to 2/3 instead of 1/2) -------------------------------------------------------------------------------- 977514b | David Lawrence Ramsey | 2024-02-12 13:00:37 -0330 Adjust descriptions of gnolls and ogres. Since orcs aren't really a species anymore, they can't be relatives, but can still be friends. -------------------------------------------------------------------------------- 4d81122 | David Lawrence Ramsey | 2024-02-12 13:00:37 -0330 Update the Torch status for unlit and lit states. -------------------------------------------------------------------------------- 13f1579 | DracoOmega | 2024-02-12 13:00:37 -0330 Properly warn Beogh players when attacking while confused near apostles This seems to have gotten broken when I made apostles themselves not get angry when attacked (since them ever being hostile messed a number of things up), but this made the warning logic no longer care that BEOGH would still get upset. Now it checks whether the monster can be angered *inside* bad_attack, which seems a more logical place for it to be anyway? -------------------------------------------------------------------------------- 90196df | DracoOmega | 2024-02-12 13:00:37 -0330 Note in the log when the player recruits an apostle -------------------------------------------------------------------------------- 5325a58 | DracoOmega | 2024-02-12 13:00:37 -0330 Fix binding The Royal Jelly's soul not opening the vault Since Bind Soul actually *prevents* the monster's death internally (despite what the flavor looks like...), a bunch of death triggers don't happen and this was the most noteworthy one. Now binding a soul will immediately fire some death triggers. I'm... not 100% happy with this; I can't help but wonder if other death-related things should also be being process when binding a soul, but I've also not seen other specific complaints (and there's awkwardness with having the original simply die, since the bound soul needs to inherit their equipment...) -------------------------------------------------------------------------------- f359be6 | DracoOmega | 2024-02-12 13:00:36 -0330 Add ability icons for dismiss/recruit apostle (and repurpose one for BfB) The dismiss apostle icon even changes its appearance based on whether the apostle is currently alive or dead! -------------------------------------------------------------------------------- b88b685 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix low power warriors accidentally getting throwing weapons -------------------------------------------------------------------------------- 58a3cf7 | DracoOmega | 2024-02-12 13:00:36 -0330 Rewrite backend handling of the player's apostles and their state The original version of this used a whole lot of different props (and even assembled some prop keys via a prefix and the monster's mid) and was generally a little unwieldy (even if it did work). I have converted this over to using a small data structure specifically for tracking apostle state. This generally simplifies code and will probably provide future benefits. It also allows me to track a 'vengeance contribution' for each individual apostle the player has, which I am using to adjust the revival formula yet again to fix a few weird cases (eg: dismissed apostles would still contribute a vengeance bonus upon vegeance completion, and the way piety needed was capped could cause 3 deaths to be cheaper than 2). **THIS WILL BREAK SAVES WORSHIPPING BEOGH PRIOR TO THIS POINT** Or rather, players with Beogh exprimental saves that upgrade to this version will probably lose the ability to revive apostles they have, and other things may go wrong. But this way, things on the backend should be better by the time we merge with trunk. I have tested most of the interactions affected by this change, but have no confidence I have squashed 100% of the bugs. It was tricky to set up in the first place, so we'll have to see if people find more of them.... -------------------------------------------------------------------------------- 0768ad7 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Adjust Yred nonliving death msg. Since the black torch is now explicitly powered by souls, not bodies. -------------------------------------------------------------------------------- 62e296f | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix spelling. -------------------------------------------------------------------------------- 2336e41 | DracoOmega | 2024-02-12 13:00:36 -0330 Leave allies behind when taking transporters without room to place them The current behaviour when taking a transporter is that the game tries to place all monsters coming with you near the player, and then if there is not enough room for them, to place them anywhere else in the level. In some rare situations this has awkward effects: for instance, if there isn't room to place followers after a Gauntlet transporter, those followers can be placed in inaccessible bubbles of the Gauntlet instead. This is especially bad for Beogh worshippers, as it can lead to their apostles immediately dying in ways you will never be able to avenge. Instead, if there is no room to place a friendly follower near you, simply leave them behind. Note: a similar thing happens when travelling across stairs, and while it also makes sense not to have elevator vaults teleport allies across a floor, I don't think it is safe to do so in this case; we cannot choose to leave a creature behind at its original location because that floor is already unloaded - they would simply cease to exist entirely. -------------------------------------------------------------------------------- d052325 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix a typo (Oneirical) -------------------------------------------------------------------------------- 20b9108 | DracoOmega | 2024-02-12 13:00:36 -0330 Try to prevent wizard apostles from shoving warrior apostles out of melee Since wizard apostles often have higher HD than warriors (for spell damage purposes), they will happily shove warriors out of the way to get in melee of enemies instead. This feels fairly bad and hurts their utility. Instead, try to make warriors take frontline priority over all other apostle types. -------------------------------------------------------------------------------- 1a7d3d2 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix a few Yred Light the Torch interactions You can now use the torch on more than a single Pan floor per game and cannot light the torch in Abyss at all. -------------------------------------------------------------------------------- ee83b44 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix wording. -------------------------------------------------------------------------------- a9ae0c8 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix typo. -------------------------------------------------------------------------------- a0f3258 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix capitalisation. -------------------------------------------------------------------------------- c1e9edf | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Add missing Torch status description. -------------------------------------------------------------------------------- 9b2ac7c | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix wording. -------------------------------------------------------------------------------- 97a3dca | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix typo. -------------------------------------------------------------------------------- 6350377 | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Checkwhite -------------------------------------------------------------------------------- 238c146 | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Re-add lost typo fix. -------------------------------------------------------------------------------- 7dfd7e7 | DracoOmega | 2024-02-12 13:00:35 -0330 Print a reminder when you kill things with Yred without a lit torch So long as your torch *could* still be lit on that floor, but was not. A couple people said this might help with sometimes forgetting to do so, and hopefully make it clearer to new players how the god works currently. -------------------------------------------------------------------------------- 4ed34f7 | DracoOmega | 2024-02-12 13:00:35 -0330 Prevent shafting when Yred's torch is lit In practice, I think this wasn't *really* a balance concern, but enough people seemed to find that it felt bad that I don't think it's important to preserve either. -------------------------------------------------------------------------------- 131f719 | DracoOmega | 2024-02-12 13:00:35 -0330 Remove Yred piety bonus for mostly-cleared floors This bonus was extremely small in practice (only +~1.5 extra piety for clearing 91% instead of 66%) but multiple players assumed it was larger and warped some of their play decisions around it. This isn't a desired effect, so I'm simply removing the bonus entirely (but leaving the flavor messages) If this somehow proves on overly meaningful nerf to Yred's overall piety gain, we can tweak it up in another way. -------------------------------------------------------------------------------- 9c8e3d1 | DracoOmega | 2024-02-12 13:00:35 -0330 Replace Hill Orcs with Mountain Dwarves Now that Beogh allows worship from any species, it's been broadly agreed to replace Hill Orcs with some sort of dwarf. I'm not married to the specific name (and other people seem to care more about this), but we can go with this at least for now. Mountain Dwarves are intended to fill a similar role to the Hill Orc species they are replacing - strong heavy-armor fighters who are noticably better at casting than their Minotaur cousins (even if still middling at it in several regards). I want to lean a little harder into them being especially suited for heavy-armour casting. As such, they innately get 1/2 ER from their armour for purposes of spellcasting (but not for EV). They retain HO's noteworthy +3 invo, while also offering the first Fire Apt above +1 in the game (which old Mountain Dwarves also shared, for what it's worth). There have been numerous suggestions for an additional simple gimmicks, but I'm interested in trying out this one: unlike any other species, their cultural history as artisans for the gods lets them use enchant weapon/armour scrolls to improve randarts. They cannot improve them above the level that a mundane item of the same type could be improved, and cannot affect unrandarts at all (which are conveniently a different color these days, for clarity!). I am hoping that this gives them uniquely interesting decisions over which items to wear in a way that is different from other species without being too obtrusive about it. Capping things to normal item plusses means they still can't make items stronger than randart high-rolls already could, though it obviously increases their consistency at finding such. -------------------------------------------------------------------------------- 8b45075 | DracoOmega | 2024-02-12 13:00:35 -0330 Tweak apostles again -Give them missing See Invis. -Improve wizards' chance for a ring (and limit it to ring types that will actually do something helpful for them). -Make better heavy armor types a bit less rare. -Adjust warrior spell lists, moving the level range of Might upward and making several other spells more common and/or available earlier. -------------------------------------------------------------------------------- 4ae1c6d | DracoOmega | 2024-02-12 13:00:35 -0330 Remove Touch of Beogh's effect on spell HD I've been slightly concerned this contributes to some overly dangerous early encounters, but also there's currently no good way to indicate HOW enhanced the spell damage of early wizards is. Maybe this nerfs them too much later in the game, but who knows? (Touch of Beogh retains the improved cast rate part of Brilliance) -------------------------------------------------------------------------------- 4addfe4 | DracoOmega | 2024-02-12 13:00:35 -0330 Let orc apostles walk on water Or something close enough to it, anyway. They basically count as amphibious in all ways, aside from being drawn on top of water, not resisting drowning, and having different xv lines. The code for this feels slightly hacky, but is minimal and localized, so probably fine. Swamp and Shouls have continued to be awkward enough for Beogh worshippers that I think it's mechanically important to do this (and the flavor fits!) -------------------------------------------------------------------------------- 8f7c6c8 | DracoOmega | 2024-02-12 13:00:35 -0330 Tweak Beogh resurrection piety mechanics a little The old system had a few weird issues in certain cases. Each apostle death added to the 'total piety needed' to trigger a resurrection, while clearing vengeance divided this 'total piety needed' by 4. But this meant that: -Clearing vengeance 3 separate times for three separate deaths gave a considerably larger benefit than having all 3 of your apostles dying at once and avenging them together -If you dismissed a dead apostle to recruit a new one and THAT died, you'd continue carrying forward the cost of the initial one who was dead. In some cases where avenging was not possible, this could defer resurrection indefinitely. -If an apostle died with no enemies around (possibly due to posion from something already dead), you would NEVER get the vengeance bonus and it would take far longer to revive them. Now, instead of dividing total piety needed, fulfilling vengeance counts as getting a large lump sum of progress, and this progress is proportional to how many apostles have been avenged. It should not matter if they die individually or all at once. Also, if a death does not have any targets to mark for vengeance, you will gain the piety you WOULD have gotten from avenging them immediately. Total piety needed for resurrection is capped (at a bit less than 3 times the cost of reviving a single apostle), so that continuously having new recruits die won't be needlessly punishing. Also, I have removed the scaling of apostle revival cost by apostle power. This had been intended to make early revivals quicker, and considered expected piety gain in lategame to be faster anyway, but anectodally, lategame apostles still die very quickly, so that may not have been necessary. Will continue to keep my eye on it. -------------------------------------------------------------------------------- 4aeb71b | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Fix punctuation. -------------------------------------------------------------------------------- c522641 | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Fix wording. -------------------------------------------------------------------------------- 62afc2a | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Fix more typos. -------------------------------------------------------------------------------- d9b01ef | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Add a few more Beogh apostle challenges. -------------------------------------------------------------------------------- bede892 | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Move Beogh apostle challenges to the database. -------------------------------------------------------------------------------- 8341cf9 | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Fix typos. -------------------------------------------------------------------------------- bf95a28 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix Yred wrath summons being friendly instead of hostile -------------------------------------------------------------------------------- 61f58e8 | brandon s allbery kf8nh | 2024-02-12 13:00:34 -0330 fix android, xcode and visual studio projects (#3517) not that the latter two likely to work afterward -------------------------------------------------------------------------------- 8281743 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix a ~3 turn buffer before the Bind Soul debuff wears off Ending immediately when LoS was broken sometimes led to unexpectedly losing your ritual without the player even realizing that a move would put them out of sight of their target. Now give them a very short grace period before ending the Bind Soul effect. I really, really hate this code. Surely there is a better way to reduce the duration of an enchantment by a specific amount than this? I didn't want to deconstify an argument in a giant function that otherwise respects this, though.... -------------------------------------------------------------------------------- f2bdd56 | DracoOmega | 2024-02-12 13:00:34 -0330 Don't crash on saving game after abandoning Beogh with apostles The dump was trying to get the name of the 'Dismiss Apostle' abilities so that it could show actions counts in the dump and with all apostles now erased from their internal slots, was crashing. Also: make logs count the 3 Dismiss Apostle abilities as the same ability, for action count purposes. This code is kinda ugly.... -------------------------------------------------------------------------------- 41bdf57 | DracoOmega | 2024-02-12 13:00:34 -0330 Don't forbid recalling allies out of the Abyss Since actually being banished internally 'kills' a follower, they shouldn't be on the companion list anyway. So all this code is currently doing (I think) is causing companions you take into the Abyss *with* you to be lost there forever. Seems unnecessary and unfun. -------------------------------------------------------------------------------- 1cc8961 | DracoOmega | 2024-02-12 13:00:34 -0330 (Hopefully) fix some crashes when reviving apostles that died in portals The game was complaining that an Ice Cave's exit didn't generate, which may have been because it was already used to leave from (and closed). At any rate, since the player should normally never be able to go back to the same floor of any disconnected branch again, it should be fine not to attempt to do cleanup on them... right? -------------------------------------------------------------------------------- 162f1d3 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix Blood for Blood orcs disappearing on save load (Oneirical) The old interlevel recall code was cleaning them up automatically (because they were a 'divine companion' that wasn't listed as having their location be the current floor - because of course they're not real companions at all). -------------------------------------------------------------------------------- 9402a6c | DracoOmega | 2024-02-12 13:00:34 -0330 Fix a crash with handling ally_attacked interrupts from dead sources -------------------------------------------------------------------------------- 7d8823f | DracoOmega | 2024-02-12 13:00:34 -0330 Fix another arena crash -------------------------------------------------------------------------------- 5b61e97 | DracoOmega | 2024-02-12 13:00:34 -0330 Don't give apostle challenges on the orb run (Oneirical) Oops. -------------------------------------------------------------------------------- 6e0f2b5 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix another typo -------------------------------------------------------------------------------- 424b3b5 | DracoOmega | 2024-02-12 13:00:33 -0330 Adjust Touch of Beogh and apostle power scaling (especially early) Nudge HP of apostles down a small bit at low power, increase it a bit at high power. Change how power capping works so that getting challenges unusually early (monks in particular) does not result in them being unfairly dangerous. Change Touch of Beogh's effect on HP. Instead of a flat +50%, it now gives a bonus that scales with apostle power (capping at the old +50% by 66 pow) This is intended foremost to make early challenges less potentially unfair to weaker or unlucky characters, with just a tiny bit of boosting of lategame allies. -------------------------------------------------------------------------------- d43e904 | DracoOmega | 2024-02-12 13:00:33 -0330 Fix Infestation angering friendly apostles It seems fine to just make friendlies immune to it, rather than just relying on them not being worth any XP. -------------------------------------------------------------------------------- 3e841c5 | DracoOmega | 2024-02-12 13:00:33 -0330 Fix some missing Beogh/Yred descriptions -------------------------------------------------------------------------------- 58d3cb9 | DracoOmega | 2024-02-12 13:00:33 -0330 End Blood for Blood on felid death I am very strongly side-eyeing that 'TODO' immediately below the code added here and thinking I ought to get on with implementing that in 0.32 because this feels like it's getting ridiculous. -------------------------------------------------------------------------------- 2a09507 | DracoOmega | 2024-02-12 13:00:33 -0330 Actually properly lose memory of all apostles on abanoning Beogh Currently, if you abandoned and rejoined, the game would let you have the same apostles back again. -------------------------------------------------------------------------------- 5d7853f | DracoOmega | 2024-02-12 13:00:33 -0330 Don't crash on dismissing apostles lost in the Abyss (Oneirical) And probably those in some other places, too! -------------------------------------------------------------------------------- f21637b | DracoOmega | 2024-02-12 13:00:33 -0330 Make Hurl Torchlight not damage the player, increase range 4->5 The player was already immune if they were undead or non-living, but while I'd hoped in general that not being able to use it at point-blank range would make positioning for it more interesting, in practice I'm not sure this is happening (or that many zombie pileups allow *any* positioning that could do something useful without hitting the player). So for now, let's try it just being harmless to you. -------------------------------------------------------------------------------- 134b472 | DracoOmega | 2024-02-12 13:00:33 -0330 Interrupt travel when player allies are attacked from out of sight Currently, while visible animations and messages happen when allies are shot from out of player LoS, these do not interrupt travel. This can be somewhat unpleasant for zombies and is deeply bad for apostles (whose deaths is a major event). Now the player should be interrupted by default when an ally is attacked by something the player cannot see. This uses the ME_WHACK behaviour_event() reaction, which should cover a great deal of offensive things used against them, but possibly not everything. I am a little concerned at this making it harder to use travel to flee a battle where your zombies are holding the line, but the positive QoL from this change is obvious. We'll see if any of this ends up being a problem. -------------------------------------------------------------------------------- 8fd3fe7 | DracoOmega | 2024-02-12 13:00:33 -0330 Don't randomize bound soul HP in the targeter -------------------------------------------------------------------------------- 3c42269 | DracoOmega | 2024-02-12 13:00:33 -0330 Don't turn friendly orc apostles hostile, even if you hit them Hitting them would trigger penance, which is supposed to just temporarily remove all allies, but the first ally hit could still turn hostile and NOT be removed (which caused multiple different subsequent buggy behaviours). Now they are unable to be made hostile, period. (You still shouldn't hit them) -------------------------------------------------------------------------------- 6c3fea3 | DracoOmega | 2024-02-12 13:00:33 -0330 Make dismissing divine allies on penance a fineffect If you read ?immo around orcish allies and something hit one, you would be blamed for the resulting flame cloud and given penance *in the middle of an attack*, resulting in deleting the attacked monster before the attack was done, ultimately resulting in a crash. I suspect this is the same cause as some TSO I've seen periodically, so I am moving all divine ally dismissal into a fineffect. This technically results in the player being able to get more penance at a time (by hitting multiple summons at once before they disappear), but a solution to that might be somewhat complex and I'm not sure it's necessary. I also removed some old code to protect against a crash that should no longer be necessary. -------------------------------------------------------------------------------- c998edd | DracoOmega | 2024-02-12 13:00:33 -0330 Don't issue divine challenges while taking the stairs Beogh could send an apostle at you WHILE you were leaving a level, and then get mad at you when you completed doing so (even though the player literally can't stop themselves at that point) -------------------------------------------------------------------------------- 2de8132 | David Lawrence Ramsey | 2024-02-12 13:00:33 -0330 Adjust Recite for Yred flavour changes. Yred is fallen now; and Lugonu, being outside both the pantheon and the dungeon, is beyond fallen. -------------------------------------------------------------------------------- 726641d | regret-index | 2024-02-12 13:00:32 -0330 Add some apostle names All of them are references to mythical or historical defeated converts of kings, warriors, retainers, or wild men, alluding a little to the new defeat and recruit system attached to orcish apostles. Possibly a little more could be done with this, possibly we'll just get other sorts of references snuck in eventually. Also, remove Harm as an apostle name, since it collides weirdly with the actual brand we've had for a long while now. -------------------------------------------------------------------------------- 659aec8 | regret-index | 2024-02-12 13:00:32 -0330 Add and edit a few apostle spell tiles / descriptions / lines Sticks to Snakes was missing a description and didn't imply the double snake summon, which it now does. Several summon spells also get tiles: Sticks to Snakes gets roctavian's old tile for such, Divine Armament's tile uses the standard circle and snw-0's Tukima's Dance tile, and Summon Vermin uses eyes from Sastreii's goliath frog and roctavian's jumping spider on top of a modified version of roctavian's Summon Small Mammals. -------------------------------------------------------------------------------- cdd5ff0 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix some Beogh status tracking being buggy when a felid dies (Oneirical) -------------------------------------------------------------------------------- 9c5a382 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix new status icons not displaying in webtiles -------------------------------------------------------------------------------- 7b7eff5 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix some typoes (Oneirical) -------------------------------------------------------------------------------- edb14d6 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix crashy Beogh wrath In a crisis of personality, Beogh would still be added to the list of gods that can punish you while worshipping them, but then remember they were not supposed to do that sort of thing anymore. Then the game would become unhappy. -------------------------------------------------------------------------------- 4bc2974 | DracoOmega | 2024-02-12 13:00:32 -0330 Be more consistant about announcing Beogh conversion offers The old code clearly intended the player be guaranteed to have a priest speak to them (and print a message about how to convert) the first time they were eligable. But since this was in behaviour_event() it wasn't actually guaranteed that the priest would do this on any turn. In particular, it seemed very unlikely on turns they cast spells (though they would sometimes not bother for many turns in a row for unclear other reasons). I have pulled this outside of monster behavior code entirely. When the player qualifies for the first time, they will reliably be informed at the start of their turn. (Priests still have the old 1/10th chance to mention conversion at any other eligable time) -------------------------------------------------------------------------------- d9a27e9 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix misformatted status description (Oneirical) -------------------------------------------------------------------------------- 5303d90 | DracoOmega | 2024-02-12 13:00:32 -0330 End Fathomless Shackles when you die as a felid (Oneirical) -------------------------------------------------------------------------------- 16b257c | DracoOmega | 2024-02-12 13:00:32 -0330 Fix friendly orc apostle descriptions being broken -------------------------------------------------------------------------------- ec13966 | DracoOmega | 2024-02-12 13:00:32 -0330 Make it more explicit how you recruit apostles When an apostle becomes available to recruit, if the player has none already, the game will print an explicit reminder about the ability you need to use to recruit them. Also added a default force_more when recruitment is available, as well as letting defeated apostles linger slightly longer. -------------------------------------------------------------------------------- 0494e2b | DracoOmega | 2024-02-12 13:00:32 -0330 Remove an overlooked debug message -------------------------------------------------------------------------------- eae03d5 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix a logic check for Light the Black Torch being inverted Fixes being able to light the torch an unlimited number of times per floor... -------------------------------------------------------------------------------- f6bdb7c | DracoOmega | 2024-02-12 13:00:31 -0330 Fix Beogh species name changes not being visible in webtiles -------------------------------------------------------------------------------- 24b0147 | DracoOmega | 2024-02-12 13:00:31 -0330 Fix tag upgrade build Overlooked these earlier. -------------------------------------------------------------------------------- 7faa437 | DracoOmega | 2024-02-12 13:00:31 -0330 Prevent using Sculpt Simulacrum on friendly/neutral units (Darby) I considered making it prompt you and then aggro them, but this seems simplest. -------------------------------------------------------------------------------- 18fcfa0 | DracoOmega | 2024-02-12 13:00:31 -0330 Revamp Yredelemnul Since their last revamp, Yredelemnul has felt in a mechanically troubled spot. Passive reaping can be useful, but using zombies as piety/ability payment suffers from several problems: -The player has essentially no god powers on a new floor -The opportunity cost of losing long-term allies for a short-term effect is frequently not equitable (this is especially true with Dark Bargain) -Piety is based on total HD of nearby zombies, while ability costs are based strictly on NUMBER of zombies, and the zombies to sacrifice are picked randomly, so it is often impossible for the player to even ballpark how many uses of Drain Life they have available before running out of piety -Your zombies can die out of LoS while travelling, depriving the player of god powers if they don't micromanage them -Frequently, by the time the player is in a bad situation, they no longer have the bodies left to perform any divine intervention at all All in all, it's been widely agreed that the practical problems outweigh the benefits of this system, so let's try something else entirely - specifically aimed at addressing key weaknesses of current Yred (bad on new floors, no panic button in bad situations) while adding a little more flavor. Yredelemnul is now specifically themed as a fallen 'good' god who was exile from their number and holds a grudge against them. (They always were the only evil god who actively disliked using holy weapons, and profane servitors are clearly dark mirrors of angels, so let's lean into this a little more). They specifically want their worshippers to be able to scour floors clean of life without retreat, and give a power set to encourage this. ----------------------- Post-Revamp ability set ----------------------- The player now gets an umbra upon worship, which grows with piety. Passive reaping works only upon monsters that *die inside an umbra* (it is fine if zombies kill them, but the player must be nearby). The should encourage a little more active participation in battle than spell-based necromancers often do. Formula for reaping chance has been changed a little. Base reaping chance starts out lower than before, but rises with piety. Your odds of reaping an individual zombie are inversely proportional to how many HD of them you currently control - if you have none, you will ALWAYS reap a kill. The idea is to smooth out low-rolls when a Yred-worshipper has few allies, while curtailing snowballing a little harder (especially at low piety) ------------------------------------- New 0* ability: Light the Black Torch ------------------------------------- Raises Yred's symbol aloft and begins your conquest of the current floor in their name. Immediately provides the player with multiple temporary undead servants (based on player's xl and capped by a function of their piety). This is usable only ONCE PER FLOOR, ever. Moreover, the player *only* gains Yred piety while the torch is lit and it will be extinguished as soon as you leave the floor by any means. Yred will provide a message evaluating the player's performance when they first leave a floor, as well as some bonus piety if they have killed a majority of enemies on it before doing so. This is intended to help Yred's weakest period - the start of floors when you have no zombies - while giving the player some control over when they want to start a floor 'for real' (ie: maybe they got shafted and just want to flee, maybe there were no monsters anywhere near the stairs and immediate summons would be wasted, etc.). In addition, it provides a flavorful conduct that meshes well with how zombies already want to work. ------------------------------- New 2* ability: Hurl Torchlight ------------------------------- At 2* or above, whenever the player Lights the Black Torch, they will gain a small number of charges of Hurl Torchlight that last for the rest of that floor - 2 charges at 2* piety, rising to 5 by 5*. This is a fireball-style projectile that deal appreciable non-elemental damage to living/holy/demonic creatures (ie: the same types Yred can reap) and empowers your undead minions caught in its blast - giving them short-duration Might and a little instant energy. This gives even more immediate level-starting power, while continuing the theme of 'Use your per-floor resources well' and plays interestingly with your zombie army. As Yred prizes unique souls, killing a unique will grant an additional charge of Torchlight. ------------------------------- Tweak Bind Soul as a 4* ability ------------------------------- Bind Soul was always the most unique and iconic Yred ability and this preserves the core of it (perhaps making it even more useful) while changing some fiddly parts of it. Rather than applying a limited-duration status to an enemy you are trying to bind (and thus making it rarely unpredictably fail if you missed too often, which felt bad), the soul-ripe status has unlimited duration, but breaks as soon as you lose LoS on the enemy you are binding. In exchange (and to preserve some of the risk/reward feel of the ability), you immediately lose 1/3 of your current HP to begin the binding process (but get it back if you succeed). This combination should make it feel dangerous to bind the most powerful souls, but leave the player feeling they have more agency in ensuring they do. Bound souls now have fast regeneration (a QoL fix for resting with them out of combat), and their HP is based on a function on the original monster's HP and the player's invocations skill rather than strictly 'HD x 10' which had some unintuitive effects. (Bind Soul has a better targeter that will now also inform the player of how durable their new friend will be if they take it!) ----------------------------------- New 5* ability: Fathomless Shackles ----------------------------------- Aimed to offer Yred a powerful panic button that still works even if their army has fallen apart, Fathomless Shackles is like a twisted mirror of Sanctuary. It creates a zone on the ground which slowly shrinks over time. So long as the player remains inside the zone, all enemies that share it with them will be bound in place and unable to move and will also take constant negative energy damage which heals the player for a portion of the damage dealt (capped to prevent huge crowds from being overly strong without also making reasonable numbers of targets offer too little healing). Isolated souls (ie: enemies not adjacent to any ally) take 50% more damage. Like Sanctuary, another cannot be created while the current one remains (even if it's become too tiny to be useful). ------------------------------------ Ideally, these changes make Yred more powerful, but also more fun to play. -------------------------------------------------------------------------------- 71bd2ad | DracoOmega | 2024-02-12 13:00:31 -0330 Allow followers to enter/be recall into portal vaults The original veto for this appears to long predate interlevel recall and I can't help but wonder if it was an attempt to prevent followers being lost forever inside portals. In any case, that time has long passed and I see no good reason to forbid a player from using apostles or bound souls in portal levels. -------------------------------------------------------------------------------- 848e619 | DracoOmega | 2024-02-12 13:00:31 -0330 Make Beogh/Yred recall instant again With the number of permanent allies of Beogh capped at 3, incremental recall felt rather silly. Sometimes it got all 3 of them in one turn and sometimes it took 2 (with additional messages about starting/stopping recall). This feels unnecessary. Yred still can have a larger number of zombies at once, but given that they are bound to a single floor and the mass armies that originally prompted incremental recall are a thing of the past, I think we can safely trim this code out and simplify. -------------------------------------------------------------------------------- 3f351f0 | DracoOmega | 2024-02-12 13:00:31 -0330 Comprehensively overhaul Beogh Beogh has been in a somewhat troubled place for a long time. Micromanaging an army can be a tedious, fiddly process in Crawl, and yet a Beogh player is punished for not doing so by losing large chunks of their god's supposed benefit - followers getting caught on monsters out of sight of you and dying, being shot and pulled away when you're auto-travelling, or just in general behaving in ways not conducive to them living. The reward for babysitting them is also lackluster; while orcs can be powerful for a while, they fall off hard later in the game where even warlords cannot be expected to live long against serious threats. But even if that were not the case, and your allies remained extremely powerful lategame, it's arguably not good design to offer the player a god that 'plays itself' by letting you grow an army that can handle dangerous things with limited player intervention. In addition, while Beogh being restricted to Hill Orcs was a flavor-first gimmick, it was also one that limited the potential richness of the god; not everyone wants to play a hill orc, and much of the richness of Crawl is the combinatorics that come from being able to pair arbitrary gods/species/backgrounds together. And so all of that is going to change. This commit combines years of feedback, suggestions, and design discussions to create a completely new Beogh experience - one that should hopefully stick to the spirit and fantasy of what Beogh offered, while being more mechanically interesting, less tedious to play, and offering more clearly strong upsides. Major changes: --------------------------------------------------------- Open Beogh worship up to all species, reflavor Beogh/orcs --------------------------------------------------------- Beogh has received some significant rewriting to accompany this change. Rather than simply being an intolerant god of a violent people, Beogh is now explicitly a god of pariahs and the dispossessed. Orcs are not a singular species which Beogh allow to worship them, but rather *anyone who worships Beogh may rightly call themselves an orc*. The shared physical appearance seen in the orcs of the dungeon is a result of Beogh's power touching upon them over a long period of time; some of those orcs may have once been humans, elves, or even octopodes. Still outside the normal pantheon (and disliked by the Good gods), players of all species can convert to Beogh via any orc priest if they are at low health *and not already worshipping another god* (this is partially to keep the Beogh status light from constantly blinking at every player in the game forever now). In fact, a player may now access the 'Convert to Beogh' ability while confused, and doing so will provide minor healing and confusion removal. Fall to your knees and the Shepherd will protect you as one of their flock. A significant amount of descriptive text involving Beogh has been rewritten. ---------------------------------------------------- Remove nearly all existing orcish follower mechanics ---------------------------------------------------- Beogh worshippers no longer have normal orcish monsters join them. All Beogh blessings (ie: improving follower weapons, bestowing additional followers, and random healing after kills) are removed. Monsters can no longer level up. Manually gifting weapons/armour to followers is removed. The Resurrection ability is removed. Hostile orcs instead have a piety-based chance to turn good neutral, become pacified, and leave the level instead. (To preserve some of the flavor of the old system without it leading to a large army for the player) --------------------------------------------------------- Replace orcish army mechanics with a new 'Apostle' system --------------------------------------------------------- At *** piety and above, Beogh worshippers will be sent divine challenges from Beogh. These apostles are essentially randomized uniques, generated using a system that can scale their power over the entire course of the game. When you defeat these apostles in battle, you can recruit them to join you. The player may have up to 3 apostles following them at once, and may freely dismiss any of them to recruit a new one if they so wish. Apostles that die do not do so permanently, but will be automatically revived by Beogh once the player proves themselves worthy. To differentiate this repeated ally revival as much as possible from Hep ancestors, apostles do not come back over TIME, but rather based on piety gained with an additional twist: Beogh wants you to avenge their deaths. When an apostle dies, all hostiles in sight of it at the time are marked for vengeance. Killing all of the marked targets will greatly speed up the dead apostle's return (currently it cuts the total piety needed to 1/4). Thus, while it is still possible to revive an apostle killed by something you cannot afford to fight, the player is *greatly* incentivized to find a way to do so. The aim is that this system encourages the player to try and defend their allies, but does not permanently punish them for failing to do so - as well as presenting interesting difficulties when the player is forced to manage on the back foot from time to time. (Marked monsters currently also set their patrol points to the body of the apostle they were marked for, to help the player find them again. This may be a *little* weird, but I think it's worth it to avoid the fiddliness of repeatedly autoexploring a level looking for them, and I doubt it's meaningfully exploitable since it requires letting an apostle die, which is a non-trivial loss in power) Internally, the death of an apostle sets a prop for 'piety needed to revive'. If a second apostle dies before the first comes back, the total piety needed is increased. All apostles will always revive together - partially for the greater impact of gaining several refreshed allies mid-battle, and partially to reduce cycles of 'lone apostle coming back, only to immediately die because you can't defend them without other allies around to help'. As this is based on piety gain, Faith does help. Generated apostles are divided into 3 archetypes: warrior, wizard, and priest, and are generated with an internal 'power' parameter (scaling from 0-100) that controls both their stats and what items/spells they have access to. -Warriors have the most HP and melee damage and get the heaviest armour/weapons. They can know Battlecry and sometimes know a single other spell drawn from a list of self-buffs and melee-friendly skills like harpoon shot or Vhi's. -Priests have medium hp/melee power, always know smite, as well as at least one other spell drawn from a list of summoning/support spells (with a couple specialized damage ones) -Wizards have low melee power, but draw from a wide list of conjurations and hexes, as well as some self-buff and utility spells (eg: haste, blink, battlesphere) Since apostles do not grow with the player, and have fixed stats and gear, the idea is that the player upgrades their power over time by getting NEW apostles who are stronger than their old ones. Ideally, different player archetypes may favor some apostle types over others, and specific high-roll apostles will be noteworthy and keep their value even after the player finds other stronger ones. Choosing who to keep should be interesting, and hoping for a particularly good apostle exciting. But you have to defeat them first! ------------------ Apostle Challenges ------------------ An apostle challenge will be issued shortly after the player first hits 3* piety, and then every so often afterwards (based on total piety gained, and slowly down in rate somewhat based on how many challenges the player has already fought). They way they work is this: Beogh announces the challenge when it is issued. Then a randomly generated apostle (scaled based on the number of challenge previous fought, capped by your XL) will be placed somewhere a short distance outside of the player's sight (but with a valid path to the player's location). The apostle and their band (if they have one) can track the player as if the player was Marked. Leaving the floor during a challenge will place the player under a modest penance. (Beogh has been changed to not cause wrath effects on a follower during penance, but this will still deprive them of their apostles until penance is lifted.) Hostile apostles have a buff during challenges, 'Touch of Beogh', which multiplies their HP and acts similarly to a (weak) Might and Brilliance (but stacks with them). The idea was to enable apostles who were simultaneously strong enough to threaten the player when hostile, but not too strong for the player to have as allies (when they will no longer have this buff). Smite is also specifically forbidden from targeting enemy apostles (Beogh wants you to prove your own mortal abilities to them!), though their band is fair game. (I think this is suitably flavorful, but the biggest motivation is that otherwise Smite would be too easy a way to simply delete any scary apostle if you wanted to, and that feels inappropriate) The timing of challenges is not fixed. During god_reacts(), if the player has earned enough piety to qualify for a new challenge, the game checks whether circumstances are suitable. Challenges will not be issued if: -The player is on a rune floor, in a portal vault, or in Zot -The player is below 50% HP or tension is sufficiently high -Several attempts to find a valid space to place the apostle fail The first two are to reduce TOO unkind to the player (apostle challenges can be scary and they will often already have their hands full here). The third is to avoid the expense of exhaustively checking connectivity whenever this happens; if we can't easily find a spot, chances are the player will be in a better location in the near future anyway. ------------------------------------------------------- Passive ability: heals friendly apostles by doing damage -------------------------------------------------------- Both to encourage the player to step into the fray rather than letting allies handle things on their own AND to give the player better agency in keeping their apostles from dying when things go bad, dealing damage has a chance to heal friendly apostles based on the damage done. This uses similar rules to Uskayaw for determining what damage 'counts' (ie: ignoring summons, poison, etc.), but rather than any complicated threat formula simply caps the total contribution of any damage instance by the smaller of 'the remaining hp of the monster damage' and '1/2 of that monster's max hp'. This should minimize any value the player could get from carrying around rats or leaving a high hp monster almost dead and simply reward wading into a fight and hurting things a whole lot. At the end of each player turn (to minimize message spam), there is a 40% chance to take 40% of your total damage contribution that turn (if this is more than 5) and split it evenly among all damaged apostles. This is fairly substantial healing, but apostles are still vulnerable to being overwhelmed and in general encouraging the player to push forward in dicey situations instead of immediately bailing (or feeling completely doomed to save your friends) feels good. ------------------------------------------- Add a new capstone ability: Blood for Blood ------------------------------------------- To replicate some of the old feeling of leading a massive orcish army (but with less tedium and micromanagement) as well as providing the player with a powerful button when they're on the back foot (and perhaps have no apostles alive at all), I have added a dramatic new active ability at 5*. Blood for Blood costs a massive amount of piety, but summons a large number of elite orcs around the player immediately, as well as giving them a status that continuously spawns additional orcs just outside of the player's LoS and has them stream in from all directions over time. The rate of new orc spawns is inversely proportional to how many orcs remain alive (ie: you get more of them, the fewer are otherwise still alive). The Blood for Blood status lasts a long time, but rapidly decays if there are no hostile monsters in sight. This ability can definitely be enough to turn a battle completely around, BUT there is a heavy caveat to using it: you have to be standing over the corpse of a dead apostle. So not only does it require you to have lost an ally in this battle, but you need to be able to reposition to stand on them (and remember: monsters involved in an apostle slaying will patrol around their corpse afterwards, so you can't simply leave and wait for them to go away). To help with UI concerns, tiles with valid corpses are highlighted in a way that makes them clear even if other monsters are standing on them. Fight your way to your fallen kin and swear bloody vengeance in their name! ---------------------- Assorted minor changes ---------------------- -Smiting costs slightly less piety -Adjusted various descriptions ------------------- THINGS NOT YET DONE ------------------- -There's a bunch more dialogue and descriptions that need changing -The flavor-only mutations (and associated messages) of slowly turning into an orc do not exist yet. -Probably further balance adjustments! -Try to avoid giving you apostles with the same name as one you already have -Make the dismissal UI a bit clearer about which apostles are alive or dead -Replace playable Hill Orcs with a different species -Make Beogh wrath summon random apostles to fight the play -Possibly refactor storage/handling of apostles # Conflicts: # crawl-ref/source/mon-data.h # crawl-ref/source/mon-flags.h -------------------------------------------------------------------------------- 1008970 | DracoOmega | 2024-02-12 13:00:30 -0330 Add M_CAUTIOUS to make (selective) spellcasters less likely to approach This is intended foremost for orc apostle wizards, but I think there are a few other places where it may be appropriate (such as glowing orange brains, whose spellset is especially hurt by waltzing up to the player without even a melee attack) The way it works is that if an M_CAUTIOUS monster doesn't opt to cast a spell that turn (or use a wand, reaching attacking, etc.) but had a valid spell it COULD have cast, and is not already in melee range of something, it has a 2/3 chance to wait in place instead of moving forward. It's sort of like having a cantrip that it won't ever use in place of attacking. I am hoping this will make wizard apostles a bit better at not flinging themselves into the jaws of death. -------------------------------------------------------------------------------- de80275 | DracoOmega | 2024-02-12 13:00:30 -0330 Add Divine Armament, another spell to help round out apostle summons Drawing upon Beogh's long history of directly granting weapons to their followers, this spell summons a single dancing weapon. The dancing weapon an individual apostle can summon will be identical between uses of this spell can will be either an axe or a polearm (both of which I think are the more interesting options for the player to have access to) At low power, it summons either a plain war axe or trident. At medium power, it summons either a battleaxe or glaive of electrocution. And at max power, it summons either an executioner's axe or bardiche of speed. Dancing weapon power also increases between these, so that the actual power of the summon shows larger differences between tiers (and the bottom tier is suitable to offer to the player fairly early) Even weak dancing weapons could be dangerous early enemies for many players, but I think Beogh worshippers' access to smite makes them uniquely capable of dealing with these, and it will help to give priest apostles more variety. -------------------------------------------------------------------------------- 9b8e009 | DracoOmega | 2024-02-12 13:00:30 -0330 Remove dancing weapon power's effect on weapon speed The formula that controls a dancing weapon's speed (based on power) was broken in gfb02dadd07 and meant that 100 power dancing weapons were normal speed, while ANY value lower than 100 was 1/2 that speed. Since the last Tukima's Dance revamp, the remaining places that used variable power dancing weapons were Beogh wrath (which mostly doesn't exist) and a Nemelex card. Reaching 100 power with the card was pretty attainable, but it was strange that until that point, your summon would both move and attack at half speed. I have removed the effect of power on speed entirely. Even if it did scale linearly, like the other stats do, 50% power meaning 50% damage *AND* 50% speed would be a quadratic effect on power scaling, which I don't think is desireable. -------------------------------------------------------------------------------- 0a50e04 | DracoOmega | 2024-02-12 13:00:30 -0330 Fix multiple issues with Nergalle's spectral orc summon, revamp her flavor There was a bunch of jankiness with Nergall's summon spectral orcs, at least some of it dating back from when it wasn't otherwise possible to make spectrals of non-base-genus types (ie: only spectral orcs, not spectral orc knights). The way the code originally 'cheated' to make them look like they were higher-level orcs still causes large visible titles over the spectrals in local tiles, often overlapping with each other in unreadable ways. At the same time, the tiles were unable to display the randomized equipment the spectrals were given. The spell also didn't properly respect its own summon cap (and was wildly inconsistent about how much power it could generate at a time - '1 plain orc' and '3 orc warlords' were technically both possibilities!) The spell now always summons 3 orcs at once (its cap). It can no longer summon plain orcs. I have added custom tiles for spectral orc warriors, knight, and warlords to be used only by this spell (so that their equipment is shown). I have also made the orcs specifically spawn with unbranded polearms and unbranded armour, so that there is no need for the player to examine them each time they appear. Higher-level orcs have better base item types, but there is otherwise no randomization. At the same time, I heavily revamped Nergalle's flavor from a 'cruel and ugly sorceress' to a 'chronicler of orcish history'. Her description and all of her speech lines have been rewritten from scratch (to also better line up with the flavor of the Beogh revamp). 'Summon Spectral Orcs' is also renamed to 'Vanquished Vanguard', with the description hilighting the polearms the spectrals are given. Nergalle herself can no longer get warlords from this spell, but the spell has HD-based power scaling so that Beogh apostles at higher levels will still be able to. -------------------------------------------------------------------------------- 3bdcaae | DracoOmega | 2024-02-12 13:00:29 -0330 Move monnames.txt into the monspeak database So that Nergalle can babble about randomly named orcs. -------------------------------------------------------------------------------- e2892a3 | DracoOmega | 2024-02-12 13:00:25 -0330 Don't let allies repeatedly cast blink/battlesphere with nothing around It was mildly amusing when a Yred bound soul might do this, but it should be a lot more regular ocurrance for allies to have these spells with Beogh now. And an ally blinking away from you right as you autotravel to another level, so that they miss travelling through the stairs with you, is more than a little awkward. -------------------------------------------------------------------------------- 6316ba0 | DracoOmega | 2024-02-12 13:00:22 -0330 Fix and simplify telling monsters to retreat, add an icon to display it Ordering friendly monsters to retreat had been partially broken for some time by the addition of more and more things (such as zombies) to the list of 'can't attack out of the player's los' - which caused them to immediately bounce back to the player as soon as they left your sight. Even worse, this made it look like they were no longer retreating, even though they still were internally and would thus ignore all hostiles. That part was fixed by 74bf07aea25d19011249c416dfe458c39cdb4042, but old code that kept allies from retreating too far ahead of the player still felt awkward in practice. I have removed the distance-based rubber-banding entirely (possibly this was a protection from when many allies would still attack out of los?) and increased the distance retreating allies will move by default. Retreating allies will now also follow the player across stairs. Finally, I have added an icon to indicate when allies are in a retreating state, which should make their behavior clearer to players. Hopefully, these improvements, combined with the change to the 'stop attacking' order, will make it easier for the player to keep their allies safe when they choose to. -------------------------------------------------------------------------------- 376ae90 | DracoOmega | 2024-02-12 13:00:22 -0330 Improve ally 'Stop Attacking'/'Follow Me' orders Telling your allies to stop attacking did nominally cause them to stop attacking, but was a little wonky. First of all, while it made them cancel their current targets, if something attacked them (a common occurrence in situations you'd ever need to tell them to stop attacking in the first place), they would still immediately switch back to attacking that things. Secondly, it would disable ally behavior of automatically picking targets indefinitely. If, at any point, you told your summons to 'follow you' and later ran into an enemy, they would not engage without you attacking first or directly commanding them. Not only was this invisible behavior, but there was no mechanism to cancel it (without setting the pet target some other way, such as attacking something yourself). Now, issuing a 'follow' or 'stop attack' order to allies will also prevent them from responding to attacks, but end automatically once the player has spent 50 consecutive aut outside of LoS of hostiles. This number was picked somewhat arbitrarily, but the idea was to buffer against the order ending immediately if a hostile briefly leaves sight, but still be very likely to have worn off by the time the player reaches something that could be considered 'the next encounter'. Together, this should hopefully make the order more fluidly useful for its ostensible purpose. -------------------------------------------------------------------------------- 0a82c86 | DracoOmega | 2024-02-12 13:00:20 -0330 Refactor/rename summon_can_attack() This function (used to prevent player summons and other allies from attacking outside the player's line of sight) has gotten a laundry list of specifiers attached to it over time, as more and more things are added to it (and more oversights are corrected). The name is also somewhat misleading, since many of those things are not summons! With the Beogh revamp removing one of the last cases of a perma-friendly player ally being able to attack outside of los, I have simplified the check greatly: now it looks entirely at whether the monster is permanently friendly, with no other qualifiers. This means that charmed/bribed monsters can still fight out of sight (since their 'true' attitude is not friendly) but essentially of the existing cases in _mons_attacks_outside_los should be subsumed more cleanly. I've also renamed these functions, to be more clear with what they're doing now: monster_needs_los() and monster_los_is_valid(). I also removed a couple special-cases that don't seem necessary (spectral weapons are already banned from manual attacks elsewhere, for instance) Fun fact: due to the exact specifiers in _mons_attacks_outside_los, charmed death knights and profane servitors would previously refuse to attack out of los because they worshipped Yred.... -------------------------------------------------------------------------------- 22358aa | DracoOmega | 2024-02-12 13:00:19 -0330 Fix minor bugs with set_nearest_monster_foe and refactor slightly The iterator for letting monsters pick other monsters as foes, for some reason, used LOS_DEFAULT_RANGE, regardless of the player's current vision range. This meant, for instance, that a monster at the extreme end of a barachi's sight couldn't engage another monster from that distance. The more concerning scenario - monsters still looking 7 tiles away for targets if you're a kobold - turned out not to matter for another reason: global los is cached using the player's LoS range, so calls to monster::can_see() would still fail for overly far monsters - they would just be called against targets that they would NEVER be able to see. With that in mind, I have removed a redundent los check in _mons_check_foe, corrected this bug, and renamed an argument for clarity. -------------------------------------------------------------------------------- 0c26625 | DracoOmega | 2024-02-12 13:00:17 -0330 Adjust Shock/Sting damage for monsters These spells don't really exist outside of ghosts (that also don't really exist) and low-level apostles, but their damage was really very bad even compared to other low-level monster spells like throw flame/frost. This raises them both fairly appreciably, but also removes a bizarrely high accuracy value for monster Sting. -------------------------------------------------------------------------------- bf7ee06 | DracoOmega | 2024-02-12 13:00:17 -0330 Tweak monster Sandblast Make it take 1.5x as long to cast, as the player spell does. But also raise its base damage significantly. (For some reason, it was identical to Throw Frost/Flame, despite checking AC 3 times. Now it is significantly more than that.) -------------------------------------------------------------------------------- 1518858 | DracoOmega | 2024-02-12 13:00:14 -0330 Adjust monster regeneration enchantment and add Regenerate Other ENCH_REGENERATION was only used as part of monster Trog's Hand (which was itself used only by spriggan berserkers). Since it merely did the equivalent of setting the M_FAST_REGEN flag, this made berserkers heal exactly 1 hp per turn, instead of the ~0.48 they would have healed without it. It did last a long time, but that is frankly a pathetic amount of healing. ENCH_REGENERATION has now been co-opted for another simple monster spell. It now applies regeneration on TOP of whatever natural regen a monster has (instead of replacing it) and heals 5% of the monster's max health + 3 each turn. This should let it scale a little to the target's own toughness and be something the player can actually feel. Regenerate Other is a simple use of this (intended for priest apostles at the moment) that simply applies this buff to a random injured ally in sight. Since this also significantly buffs Trog's Hand, I have cut its duration to less than half. (But I'm not convinced it is even that interesting or relevant on spriggan berserkers, who are already nearly magic-immune in the first place, and can't even use it if they go berserk first, which they often will. Considering cutting it from them and maybe finding a new home for it in future.) -------------------------------------------------------------------------------- 02d7de5 | DracoOmega | 2024-02-12 13:00:01 -0330 Re-add Sticks to Snakes (as a priestly apostle spell) Good appropriate flavor and helps increase priestly variety. Summons 2 of either water moccasins, black mambas, or anacondas, based non-randomly on spellpower (so it will be consistent for each apostle). -------------------------------------------------------------------------------- fcd2887 | DracoOmega | 2024-02-12 13:00:01 -0330 Fix ghosts/illusions not being able to see all player spells after amnesia Reading ?amnesia reduces you.spell_no by 1, but simply zeroes out the spell slot that was forgotten, without moving spells in higher slots back down. With how player spells are iterated by ghosts, this effectively meant that for each amnesia a player read, their top-most spell slot would become invisible until a new spell was learned. If a player forgot multiple spells to learn a single more expensive one (as is often the case), several of those older spells would remain hidden. Ghosts already skip over SPELL_NO_SPELL so let's just iterate the whole array. -------------------------------------------------------------------------------- 3bc30c4 | DracoOmega | 2024-02-12 13:00:01 -0330 Let monsters cast BVC I'm not entirely happy about the number of places this duplicates code with grasping roots rather than directly sharing it. That might be a place for future refactoring. -------------------------------------------------------------------------------- 0b06cff | DracoOmega | 2024-02-12 13:00:00 -0330 Let monsters cast Lesser Beckoning This is actually liable to be a lot stronger in monster hands than player ones, as a non-damaging harpoon shot you can't avoid. Maybe could replace Blink Other in Roxanne's set? Either way, it's now available for Mara to torment poor unfortunate Warpers with. -------------------------------------------------------------------------------- 03f2d2a | DracoOmega | 2024-02-12 13:00:00 -0330 Let monsters cast Manifold Assault (and refactor a few things) Beyond letting monsters use the spell in general, it refactors Autumn Katana's code so that it isn't mostly-copying manifold assault code in a separate way. Additionally, this refactors the special handling that both of these (and Wu Jian martial attacks) used for calculating weapon delay, so that it now relies only player_speed() and not you.time_taken. Commits dating back many years now suggest that it always should have worked this way, and I have not seen any bad results in testing all of these things with some rigor. Frankly, I'm of the opinon that you.time_taken should NEVER have any meaning in the middle of any player action, and only after the player's turn is complete.) -------------------------------------------------------------------------------- 4d0ad10 | DracoOmega | 2024-02-12 13:00:00 -0330 Implement monster Kiss of Death And give it a better message than "The negative energy hits you." -------------------------------------------------------------------------------- 6d05f22 | DracoOmega | 2024-02-12 12:59:58 -0330 Split monster Vhi's into Vhi's Electrolunge Functionally very similar to player Vhi's except that it doesn't care about the distance travelled for its damage, and simply applies a flat (HD-based) amount of electric damage if the initial attack hits (rather than being a multiplier on the weapon damage). It has a different name in large part to give it a different description when examined. xv properly shows the added damage. (I also gave it +1 range compared to player Vhi's) -------------------------------------------------------------------------------- 6658dcf | DracoOmega | 2024-02-12 12:32:25 -0330 Heavily refactor Vhi's Electric Charge and let monsters use it This removes the special-casing involved with targeting Vhi's and runs it through a standard spell targeter instead. Also makes the spell less player-centric so that monsters can use it. I think there's room for this to see play outside of just ghosts/illusions as well. Should simultaneously fix a crash caused when a monster displaced by Vhi's triggers a dispersal trap that puts a different monster back in the charger's way. (Now it tries repeatedly to free space until space actually remains free). I think it's arguable that monsters should get a bigger damage bonus from this than players do. I may do that later. -------------------------------------------------------------------------------- 5a13361 | DracoOmega | 2024-02-12 12:32:25 -0330 Searing Ray monster implementation Just for ghosts/illusions for the moment, but I think this one has real potential on some other monsters (I have arcanists in mind in particular). The dynamics of a channel that can be interrupted by the player moving (either out of range or to block the beam with other monsters) feel like a good one. With this in mind, the monster version also lasts longer at higher power than the player themselves can reach. If someone dislikes this, there's always the possibility of a foxfire/marshlight split with a fancier name for the arcanist version. -------------------------------------------------------------------------------- 7f64abb | DracoOmega | 2024-02-12 12:32:25 -0330 Implement monster foxfire (for illusions and ghosts) Marshlight already used basically identical code to foxfire under the hood (just with a key for cosmetic changes to it). To make this spell less strong at the same HD, monsters cast it with half power compared to marshlight, but it otherwise works the same way. (Of course, this still scales up much more than the player spell at high HD, but that's just how monster spells work in general) -------------------------------------------------------------------------------- 815546e | DracoOmega | 2024-02-12 12:32:25 -0330 Let monsters cast Scorch No direct users for it for the moment, though this enables it for player ghosts and illusions. -------------------------------------------------------------------------------- a626bee | DracoOmega | 2024-02-12 12:28:27 -0330 Fix blazeheart cores being able to be knocked back (Oneirical) In practice, this virtually never occurred, since the core is scheduled to act immediately after the player's next turn and enemies will rarely get any action between that and it exploding, but such a rare interaction shouldn't cause an explosion to happen at a different location than the player would expect. -------------------------------------------------------------------------------- c5dd13f | DracoOmega | 2024-02-12 03:12:17 -0330 Fix a crash when !lig wears off while having a non-base default form And probably any other hostile polymorph. This was broken by 6027059026f005a40a6 (Using transform() directly will not exit a forced form, so we should make sure to manually do so first. I don't believe return_to_default_form() is called anywhere where we wouldn't want that) -------------------------------------------------------------------------------- 4625e66 | regret-index | 2024-02-11 19:24:55 -0330 Decorate Pan a little further * Give a 33% chance to use one of the rune-themed Pan decorative vaults by nicolae in the corresponding unrand lord levels. Despite there being only four to five each for each of them, the bulk of such are all decently randomized in connectivity and pillars, while most of the rune levels outside of the rune vaults are already somewhat forgettable as their random monster sets focus more on theme than threat. (This would be a good place to get more vaults in the same style, which would allow increasing the overall odds.) * Add four more small vaults to the overall decorative vault pool, pushing it to about 14 non-specific vaults and 17 direct references. * Give an additional 20% chance to use one of the general decor vaults throughout the regular Pan floors. It's not the highest quantity for a technically infinite number of levels, so the chance isn't set that high, but the vaults available are both reasonably variable and they'll be frequently unseen due to the rapid rate most people dive Pan anyway. * Use the current flat chances of small blood fountain vaults to add an additional chance for decor corresponding directly to the current Ds enemy gods worshipped- demonic trees for Lugonu, WALL_UNDEAD bone rock for Kikubaaqudgha, and scintillating statues for Makhleb. -------------------------------------------------------------------------------- 6027059 | wheals | 2024-02-11 20:12:10 +0200 Fix location effects when transforming (#3274) In addition to the flying and diving messages mentioned in the issue that were never printed, the all-important "Floosh!" got skipped when swimming players left a flying form. -------------------------------------------------------------------------------- aa9fc57 | wheals | 2024-02-11 20:12:10 +0200 Combine swimming and water-safety for forms Since they are now the same. -------------------------------------------------------------------------------- f394fe6 | wheals | 2024-02-11 20:12:10 +0200 Let statues swim (#3081) They were already half-swimming, in that Merfolk and Octopode statues got their stealth bonuses while underwater. -------------------------------------------------------------------------------- 3737fec | wheals | 2024-02-11 20:12:10 +0200 Start shapeshifters with active talisman (#3494) -------------------------------------------------------------------------------- e5b9942 | Nicholas Feinberg | 2024-02-11 08:56:57 -0800 Parenthesize (wheals) -------------------------------------------------------------------------------- 9393900 | SentientSupper | 2024-02-11 08:56:14 -0800 Bugfix corrosion display for weapons in webtiles It was displaying 4 times the corrosion for weapons -------------------------------------------------------------------------------- ad12e12 | Nicholas Feinberg | 2024-02-11 08:55:51 -0800 Add SentientSupper to the CREDITS -------------------------------------------------------------------------------- 159c032 | regret-index | 2024-02-11 03:27:26 -0330 Fix tag upgrade for submerging removal -------------------------------------------------------------------------------- 6f326f6 | CipHuK | 2024-02-10 22:21:09 -0800 Stop asking for dragon armour toll from draconian As draconians do not use dragon armour, it is not a big deal for them to pay such small price to enter trove -------------------------------------------------------------------------------- 028e34c | Nicholas Feinberg | 2024-02-10 22:06:10 -0800 Give krakens rArcjolt (hellmonk) Reduce the damage that krakens (and other tentacle-creating monsters) take from multiple hits to their tentacles in the same attack. -------------------------------------------------------------------------------- 465344b | Nicholas Feinberg | 2024-02-10 21:48:40 -0800 Clean up remaining submerge code Resolves #3504. -------------------------------------------------------------------------------- dfa2165 | Monkooky | 2024-02-10 21:48:37 -0800 Remove (tentacle) submerge Submerge as a mechanic introduces very unique special cases that must be guarded against throughout the code. The untargettability it grants requires a special check in several targetters, and the ability to temporarily coexist with monsters makes removing the enchantment very complicated. Right now the only monsters that can submerge are tentacle segments, for whom the ability is fairly uninteresting. Preserving submerge for tentacle segments is decidedly not worth the technical debt it incurs. This does not touch the tile drawing code; it may still be possible to see 'submerged' tentacles if a tentacle somehow gets disconnected. There may be vestigial code for drawing other submerged entities. -------------------------------------------------------------------------------- 7d2b172 | SentientSupper | 2024-02-10 21:19:13 -0800 Change how rCorr interacts with corrosion stacks on the player Protecting yourself against corrosion feels bad because of how inconsistent it is. Each stack of corrosion on the players reduces AC and slay by 1. Quadrupled most sources of corrosion to compensate. Having corrosion resistance will halve the number of stacks applied to the player instead of a coinflip chance to prevent the status entirely. -------------------------------------------------------------------------------- dd6c86a | Zhang Kai | 2024-02-10 21:13:23 -0800 Update godspeak.txt -------------------------------------------------------------------------------- 1c9add5 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update montitle.txt -------------------------------------------------------------------------------- 0617a3d | Zhang Kai | 2024-02-10 21:13:23 -0800 Fix clouds.txt -------------------------------------------------------------------------------- 88f2fc3 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update status.txt -------------------------------------------------------------------------------- 6c12390 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update spells.txt -------------------------------------------------------------------------------- 5640b26 | Zhang Kai | 2024-02-10 21:13:23 -0800 Fix ability.txt -------------------------------------------------------------------------------- 8acc429 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update monsters.txt -------------------------------------------------------------------------------- 2c31015 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update skills.txt -------------------------------------------------------------------------------- 4c714f3 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update features.txt -------------------------------------------------------------------------------- 601a847 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update gods.txt -------------------------------------------------------------------------------- f76145d | Nicholas Feinberg | 2024-02-10 21:10:03 -0800 Make offhand punches UC only (various) Most people seemed to assume they already were, so there's a strong intuitiveness argument, and they are vanishingly rarely relevant with weapons. This also solves certain elf-related problems. -------------------------------------------------------------------------------- accdc7a | Nicholas Feinberg | 2024-02-10 21:04:58 -0800 Revert "Revert "Temporarily evert "Simplify off-hand attacks""" This reverts commit 95b6ac8b5ca23ae5db383e8efd33fbd561136ce6. -------------------------------------------------------------------------------- 5e87250 | Nicholas Feinberg | 2024-02-10 18:35:13 -0800 Fix spectral outgoing damage Spectral weapons were doubling the player's damage, not increasing it by 1.7x. ;_; -------------------------------------------------------------------------------- 35ecbac | elliptic | 2024-02-10 21:06:35 -0500 Don't cheat the player out of a shop in st_orc_town -------------------------------------------------------------------------------- 54dcad9 | patrick | 2024-02-10 20:58:19 -0500 Add a bunch more options to randbook.txt I added a bunch of alchemy terminology to go with the new spell school. Then I entered a thesaurus fugue and added a bunch of synonyms, especially for the spell school adjectives. I also added a bunch of other titles. Enjoy! -------------------------------------------------------------------------------- 4224600 | Nicholas Feinberg | 2024-02-10 17:02:06 -0800 Let evil players wield good weapons Blocking undead and demonic players from wielding weapons of holy wrath was very fiddly - lots of annoying corner case code around entering and leaving Death Form. Achieve the same flavour with less annoyance by just disabling the brand while players are dead, rather than blocking wielding entirely. -------------------------------------------------------------------------------- 04fe697 | Kyle Rawlins | 2024-02-10 17:05:11 -0500 fix: add some gem asserts These solve nothing for me, unfortunately. But they would make crashes for an out of bounds access here (which is possible by providing NUM_GEM_TYPES to these functions) less cryptic. -------------------------------------------------------------------------------- 39ddab2 | regret-index | 2024-02-10 18:32:05 -0330 More non-player spells tiles + juggernaut skeleton placeholder The latter is meant to help quickly distinguish them from the other giant skeletons in Depths, pairing together snw-0's juggernaut helmet with roctavian's large humanoid skeleton. It looks... very silly- the helmet's on _really_ tight- but it's rather important for necromancer bands and Crypt and Gloorx's level, so it will do for now. The spell icons continue to be a little placeholdery in terms of stitching together and editing currently extant tiles, but it should continue to help to have anything distinguishing besides pawprints. Sources: * Confusion Gaze: snw-0's Mass Confusion and the original rltile project's See Invisible spell. * Ensnare: Pete Hurst's cobweb tiles. * Eruption: snw-0's Upheaval. * Forceful Invitation: white_noise's exit stairs from Lair branches. * Injury Bond: Bloax's Corona tile + Sastreii's Injury Bond status icon. * Plane Rend: white_noise's exit stairs from Elf, V, Slime, and Crypt. * Stunning Burst: ontoclasm's Paralysis icon + roctavian's Lightning Bolt. * Slug Dart: snw-0's dart slug + roctavian's Stone Arrow projectile effect. * Virulence: CanOfWorms's resistance and vulnerability mutation tiles. * Warning Cry: The original rltiles project's Projected Noise. * Woodweal: Sastreii's regular trees + ontoclasm's heal wounds. Also, Ghostly Sacrifice uses the Ghostly Fireball tile, since we're still using Iceblast's tile for Seracfall, and monster Blinkbolt now uses the Player blinkbolt tile. -------------------------------------------------------------------------------- a5a6d97 | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Simplify some local tiles mouse UI There's no longer any reason to wield non-weapons other than goofing, and the mouse UI doesn't actually let you do so, so remove support for ctrl-clicking to unwield scrolls, potions, etc. Also, don't bother checking to see if weapons are throwable or evocable etc. They haven't been for a while. :) -------------------------------------------------------------------------------- 1929dd4 | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Further wield/unwield weapon refactors -------------------------------------------------------------------------------- e57e94b | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Remove the adjust_time_taken param Mostly unused and kind of clunky. (The alternative is clunky too, mind you.) -------------------------------------------------------------------------------- c02482b | regret-index | 2024-02-10 02:25:01 -0330 More adjustments for some recently-changed late uniques * Norris's killratio is doing quite poorly since his return, in some part due to trying to avoid the same Paralysis that was seen as redundant in his original removal but also not successfully getting AF_SLEEP due to potential multiplier one-shot spikiness. He went from a resistable Drain Magic to an irresistable but proportional mp drain in d00db9e cutting out Brain Feed for Brain Bite, and that's another distinguishing aspect we can keep working with when he's already intersecting a little with other water themed monsters as is, so I'm pushing his antimagic component even further by replacing Brain Bite for Draining Gaze's extremely dramatic 0-30 mp range. More focusing on destructive magic is definitely less time spent on peace and contemplation of death, and it emphasizes a threat distinct from most late uniques. (This also comes with a somewhat silly tile for Draining Gaze and new messages + some resorting within monspell.txt.) * Frederick is missing the fighter tag, despite having been buffed to deal more melee damage than several other uniques in the same range with conjurations also (Norris, Jory, Sojobo). He's been doing decently after the 0.31 release and the tweaks of b247575 / b730325 / 1baa85e, so I'm nudging his damage down slightly (50 -> 44) in exchange for a little consistency with surrounding uniques in getting an accuracy improvement. * Boris can use equipment while regular liches can't, for whatever reason, and always spawns with a robe. As a little more of an incentive to actually kill him rather than park him on a floor, and to give more distinction between attempts beyond the orb run or the luck of other spawns, I'm giving him a randart robe every time he spawns, guaranteed to be at least +2. He spawns quite late, so it's rare for people to want to switch over to a robe if they didn't have a decent extremely light body armour already, but it lets e.g. casters refight Boris repeatedly to find Archmagi (and then possibly die to orbs and misery). -------------------------------------------------------------------------------- 14f8b2e | David Lawrence Ramsey | 2024-02-09 11:34:01 -0600 Add another fruit name to artefacts. -------------------------------------------------------------------------------- c02fa2a | regret-index | 2024-02-09 04:11:30 -0330 New decoration: mystic cages In the footsteps of conduits and on a different track than the divine and demonic statues prior, these are meant to start providing inobtrusive decorative features reflecting a relatively more regular life inside of the dungeon beyond mostly empty rooms filled with enemies milling about. Mystic cages are metal statue redefinitions as kennels and enclosures for many pets: the hounds of gnolls and orcs, the menageries of vampires, the experiments of various wizards, the hypothetically tamed beasts within Vaults, and so on and so forth. With how often there's a mix of given intelligences in randomized generic floor spawn sets, it's easy to miss a vault deliberately pairing given monsters together if noise makes them wander or split- these can help straightforwardly i