You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(15) |
Sep
(131) |
Oct
(149) |
Nov
(216) |
Dec
(222) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(152) |
Feb
(58) |
Mar
(184) |
Apr
(249) |
May
(96) |
Jun
(207) |
Jul
(248) |
Aug
(87) |
Sep
(232) |
Oct
(440) |
Nov
(248) |
Dec
(212) |
2008 |
Jan
(216) |
Feb
(118) |
Mar
(508) |
Apr
(796) |
May
(597) |
Jun
(896) |
Jul
(475) |
Aug
(124) |
Sep
(200) |
Oct
(248) |
Nov
(377) |
Dec
(373) |
2009 |
Jan
(807) |
Feb
(430) |
Mar
(276) |
Apr
(138) |
May
(161) |
Jun
(210) |
Jul
(390) |
Aug
(141) |
Sep
(286) |
Oct
(826) |
Nov
(1123) |
Dec
(419) |
2010 |
Jan
(671) |
Feb
(625) |
Mar
(328) |
Apr
(349) |
May
(296) |
Jun
(485) |
Jul
(396) |
Aug
(113) |
Sep
(582) |
Oct
(414) |
Nov
(248) |
Dec
(377) |
2011 |
Jan
(400) |
Feb
(225) |
Mar
(321) |
Apr
(264) |
May
(148) |
Jun
(249) |
Jul
(270) |
Aug
(217) |
Sep
(262) |
Oct
(356) |
Nov
(426) |
Dec
(359) |
2012 |
Jan
(203) |
Feb
(131) |
Mar
(317) |
Apr
(313) |
May
(170) |
Jun
(272) |
Jul
(363) |
Aug
(364) |
Sep
(330) |
Oct
(188) |
Nov
(178) |
Dec
(141) |
2013 |
Jan
(177) |
Feb
(258) |
Mar
(459) |
Apr
(352) |
May
(443) |
Jun
(364) |
Jul
(185) |
Aug
(175) |
Sep
(242) |
Oct
(237) |
Nov
(359) |
Dec
(300) |
2014 |
Jan
(331) |
Feb
(272) |
Mar
(446) |
Apr
(301) |
May
(577) |
Jun
(435) |
Jul
(365) |
Aug
(358) |
Sep
(306) |
Oct
(617) |
Nov
(863) |
Dec
(466) |
2015 |
Jan
(295) |
Feb
(165) |
Mar
(319) |
Apr
(201) |
May
(158) |
Jun
(148) |
Jul
(62) |
Aug
(91) |
Sep
(147) |
Oct
(203) |
Nov
(346) |
Dec
(382) |
2016 |
Jan
(242) |
Feb
(280) |
Mar
(229) |
Apr
(157) |
May
(297) |
Jun
(335) |
Jul
(157) |
Aug
(219) |
Sep
(307) |
Oct
(212) |
Nov
(177) |
Dec
(112) |
2017 |
Jan
(100) |
Feb
(203) |
Mar
(112) |
Apr
(124) |
May
(81) |
Jun
(43) |
Jul
(39) |
Aug
(49) |
Sep
(24) |
Oct
(55) |
Nov
(68) |
Dec
(95) |
2018 |
Jan
(130) |
Feb
(73) |
Mar
(47) |
Apr
(57) |
May
(62) |
Jun
(76) |
Jul
(159) |
Aug
(158) |
Sep
(81) |
Oct
(100) |
Nov
(62) |
Dec
(75) |
2019 |
Jan
(130) |
Feb
(138) |
Mar
(80) |
Apr
(61) |
May
(88) |
Jun
(65) |
Jul
(61) |
Aug
(37) |
Sep
(85) |
Oct
(155) |
Nov
(133) |
Dec
(91) |
2020 |
Jan
(59) |
Feb
(123) |
Mar
(121) |
Apr
(155) |
May
(300) |
Jun
(136) |
Jul
(330) |
Aug
(84) |
Sep
(56) |
Oct
(87) |
Nov
(154) |
Dec
(200) |
2021 |
Jan
(205) |
Feb
(203) |
Mar
(292) |
Apr
(165) |
May
(56) |
Jun
(135) |
Jul
(248) |
Aug
(218) |
Sep
(165) |
Oct
(150) |
Nov
(135) |
Dec
(266) |
2022 |
Jan
(194) |
Feb
(149) |
Mar
(49) |
Apr
(38) |
May
(145) |
Jun
(213) |
Jul
(150) |
Aug
(126) |
Sep
(188) |
Oct
(121) |
Nov
(34) |
Dec
(142) |
2023 |
Jan
(105) |
Feb
(82) |
Mar
(138) |
Apr
(125) |
May
(112) |
Jun
(90) |
Jul
(222) |
Aug
(279) |
Sep
(157) |
Oct
(100) |
Nov
(85) |
Dec
(295) |
2024 |
Jan
(123) |
Feb
(353) |
Mar
(220) |
Apr
(112) |
May
(162) |
Jun
(169) |
Jul
(205) |
Aug
(174) |
Sep
(73) |
Oct
(62) |
Nov
(95) |
Dec
(62) |
2025 |
Jan
(125) |
Feb
(90) |
Mar
(127) |
Apr
(188) |
May
(74) |
Jun
(59) |
Jul
(154) |
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <gi...@cr...> - 2025-07-08 00:55:28
|
at 42cf65a8438172096988e4c620fdc7e035668c15 (commit) ----------------------------------------------------------------------- commit 42cf65a8438172096988e4c620fdc7e035668c15 Author: hellmonk <nld...@gm...> Date: Mon Jul 7 19:51:34 2025 -0500 Feat: shrines of evolution Intended as a feature for a portal vault. Swaps the player's highest and lowest base stats, then adds two to their highest base stat. This is a feature instead of an item so that it cannot be banked. This implementation is quick and dirty, should be revised before merge. ----------------------------------------------------------------------- -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 19:30:09
|
via 87ee97bf79e4f45ab42af9477cfd38f99c844ade (commit) from 19c559dd153d7572574a07992707f342b3afeb38 (commit) ----------------------------------------------------------------------- commit 87ee97bf79e4f45ab42af9477cfd38f99c844ade Author: gammafunk <gam...@gm...> Date: Mon Jul 7 14:28:05 2025 -0500 Fix a typo (Oneirical) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/database/shout.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawl-ref/source/dat/database/shout.txt b/crawl-ref/source/dat/database/shout.txt index 52273eef43..974563e908 100644 --- a/crawl-ref/source/dat/database/shout.txt +++ b/crawl-ref/source/dat/database/shout.txt @@ -453,7 +453,7 @@ You pose @_riddle_adj_@ riddle to @the_monster@ You ask @the_monster@ @_riddle_adj_@ riddle -You challege @the_monster@ with @_riddle_adj_@ riddle +You challenge @the_monster@ with @_riddle_adj_@ riddle %%%% Sphinx riddle success -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 19:20:08
|
via 19c559dd153d7572574a07992707f342b3afeb38 (commit) from 0cc2c75a636414a3415ebf104f19ae89c3da119c (commit) ----------------------------------------------------------------------- commit 19c559dd153d7572574a07992707f342b3afeb38 Author: hellmonk <nld...@gm...> Date: Mon Jul 7 14:17:37 2025 -0500 fix a title bug ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/skills.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crawl-ref/source/skills.cc b/crawl-ref/source/skills.cc index d1c4041385..1001e71d09 100644 --- a/crawl-ref/source/skills.cc +++ b/crawl-ref/source/skills.cc @@ -2263,8 +2263,11 @@ string skill_title_by_rank(skill_type best_skill, uint8_t skill_rank, } if (conducts) - result = special_conduct_title(best_skill, skill_rank); - + { + string conduct = special_conduct_title(best_skill, skill_rank); + if (!conduct.empty()) + result = conduct; + } if (result.empty()) result = skill_titles[best_skill][skill_rank]; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 08:55:10
|
via 0cc2c75a636414a3415ebf104f19ae89c3da119c (commit) from a7298f496d1430cacd2289ae141e5699f382a226 (commit) ----------------------------------------------------------------------- commit 0cc2c75a636414a3415ebf104f19ae89c3da119c Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 06:21:44 2025 -0230 Ensure a Temple entry vault is always placed (staticshock) In general, if an attempt to place a branch entry vault fails, the fallback simply places the entry feature on its own on a random tile on the map. But this is no longer adequate for Temple, as this means the Zot orb statues outside may never be shown to the player. Now, when a Temple entry vault fails to place, it will fall back on placing the smallest possible vault (just the entrance + 2 statues) and if that also fails, the level will be vetoed entirely. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/des/branches/temple.des | 15 ++++++++------- crawl-ref/source/dungeon.cc | 11 +++++++++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/crawl-ref/source/dat/des/branches/temple.des b/crawl-ref/source/dat/des/branches/temple.des index be7b5111d9..5401645d90 100644 --- a/crawl-ref/source/dat/des/branches/temple.des +++ b/crawl-ref/source/dat/des/branches/temple.des @@ -40,6 +40,14 @@ end # <<E>> Temple entries ############################################################################## +# Dummy Temple entry +NAME: temple_entry_dummy +TAGS: transparent +: temple_entry(_G) +MAP +ZOZ +ENDMAP + NAME: temple_hall SUBST: ? : c:20 x v b G:5 : temple_entry(_G) @@ -98,13 +106,6 @@ MAP ...?... ENDMAP -NAME: temple_statues -TAGS: transparent -: temple_entry(_G) -MAP -ZOZ -ENDMAP - NAME: temple_green TAGS: transparent NSUBST: ? = 1:+ / * = +bb diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc index cd9f619924..1ce584f05b 100644 --- a/crawl-ref/source/dungeon.cc +++ b/crawl-ref/source/dungeon.cc @@ -3878,6 +3878,17 @@ static void _place_branch_entrances(bool use_vaults) if (_place_vault_by_tag(entry_tag)) // Placed this entrance, carry on to subsequent branches continue; + // If placing a normal Temple entrance failed, try again to + // place the smallest possible one, and if that also fails, veto + // the level (to ensure Zot orb statues are always placed.) + else if (it->id == BRANCH_TEMPLE) + { + const map_def* dummy = find_map_by_name("temple_entry_dummy"); + if (dummy && _build_secondary_vault(dummy)) + continue; + + throw dgn_veto_exception("Failed to place Temple entry."); + } } // Otherwise place a single stair feature. -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 07:25:17
|
via a7298f496d1430cacd2289ae141e5699f382a226 (commit) from 6f252c72f21763f989d7f81061a1bc95ed4d591c (commit) ----------------------------------------------------------------------- commit a7298f496d1430cacd2289ae141e5699f382a226 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:50:50 2025 -0230 Add Dewdrops on the Grass to credits ----------------------------------------------------------------------- Summary of changes: crawl-ref/CREDITS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/crawl-ref/CREDITS.txt b/crawl-ref/CREDITS.txt index 275d293f00..99bb2eca29 100644 --- a/crawl-ref/CREDITS.txt +++ b/crawl-ref/CREDITS.txt @@ -162,6 +162,7 @@ Paul Dejean Denzi Sean Dewar + DewdropsOTG Ed Dewey dicedlemming Lothar Dierkes -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 07:05:16
|
via 6f252c72f21763f989d7f81061a1bc95ed4d591c (commit) via 03e512366c3dda4ff0e280bdb16813ecadc00152 (commit) via b9a1c928f1502b96383c0e1376a0694bc5b6d74b (commit) via 26b3ba3cbca0836573c009067adefe5eb590d6ff (commit) via 90f01339ec1cf515d3a6e4b19a45f9b378dec51f (commit) via 2e4cc96e4d90b7fb74c8ce888c4f42612706fb87 (commit) via e757dcb4938e6309fe28813a283849b21ced5b61 (commit) via 0f688253b4642c631b6742d8a59c4011771d7283 (commit) via 3ed96b2d958db8b01246b78efd6a59a20a3e2cab (commit) via c64bd83218be8d514f5d753e5e042e760b0f94c9 (commit) via 857301abd681c888dc2b1b6d6fcc56c733b890f3 (commit) via 3d2785031b75921f7f712d21b4c71ee7fbf4b713 (commit) via 240e1f6f9e080107c20c11adb9105545f81a7fde (commit) from e6c66e347d84e232bc12bb5368e801c868aee4ca (commit) ----------------------------------------------------------------------- commit 6f252c72f21763f989d7f81061a1bc95ed4d591c Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:29:47 2025 -0230 Don't ask which item to remove when all are identical (Back-form) This behavior (ie: not prompting to pick a ring on ring swap when both are identical) was seemingly lost in 2dbd7c1 and now it is back again in an mildly enhanced form. (It should now work on any number of any type of equipment, provided that all swap candidates are identical to each other. So formicids with 2 identical gloves get the same treatment.) commit 03e512366c3dda4ff0e280bdb16813ecadc00152 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:12:59 2025 -0230 Don't let rF- override steam immunity (Dewdrops) While rF+ passively confers cloud steam immunity on its own, the way these two resists were interconnected led to the unintuitive result that having rF- could lead to to a pale draconian being able to be damaged by their own breath. Now steam res can merely *benefit* from levels of rF and never be reduced by them. commit b9a1c928f1502b96383c0e1376a0694bc5b6d74b Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:07:15 2025 -0230 Don't allow bypassing ability target restrictions with !/@ Similar reasoning to 0ad0e9b was for spells. commit 26b3ba3cbca0836573c009067adefe5eb590d6ff Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:05:56 2025 -0230 Don't leak invisible monster positions with Bestial Takedown (cool3) commit 90f01339ec1cf515d3a6e4b19a45f9b378dec51f Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 04:01:32 2025 -0230 Add a small raven easter-egg By popular demand. commit 2e4cc96e4d90b7fb74c8ce888c4f42612706fb87 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:54:50 2025 -0230 Allow gloves of Hurling to stack (Darby) Now that it is possible in multiple ways to have 2 pairs of gloves at once. commit e757dcb4938e6309fe28813a283849b21ced5b61 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:47:36 2025 -0230 Allow reaping brand to work with Gozag (dilly) And also combine with other corpse-using necromancy. (And prevent it from working with Yred, who bans most other uses of reanimation spells - it could produce two spectrals from one demon, otherwise!) commit 0f688253b4642c631b6742d8a59c4011771d7283 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:41:25 2025 -0230 Don't apply Bane of Warding to firewood (Darby) commit 3ed96b2d958db8b01246b78efd6a59a20a3e2cab Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:41:12 2025 -0230 Adjust riddle talisman description for felids (dilly) Now explicitly mentions that it doesn't grant them barding and cloak slots. commit c64bd83218be8d514f5d753e5e042e760b0f94c9 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:29:14 2025 -0230 Don't crash when using Aphotic Marionette with a tesseract in view (Darby) Use an explicit flag for 'dummy' spells (that exist for UI purposes) to prevent monsters from trying to cast them under any circumstances. commit 857301abd681c888dc2b1b6d6fcc56c733b890f3 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:28:17 2025 -0230 Don't allow bribing/mirroring a Boundless Tesseract (Darby) When the mirror copy expired, it would even kill all the real tesseracts on the floor! commit 3d2785031b75921f7f712d21b4c71ee7fbf4b713 Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:26:21 2025 -0230 Don't prevent using fuzzed ?blinking with LoS <= 2 (Darby) Not that they're very useful with that small an LoS, but they technically do more than nothing and so shouldn't be effectively forbidden. commit 240e1f6f9e080107c20c11adb9105545f81a7fde Author: DracoOmega <dra...@gm...> Date: Mon Jul 7 03:08:43 2025 -0230 Fix Mutagenic Gaze giving far less contam than intended (Darby) Was giving exactly 4% until you reached slightly below 100%, at which point it was stopping entirely... ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/ability.cc | 2 +- crawl-ref/source/dat/database/monspeak.txt | 9 ++++++ crawl-ref/source/dat/descript/items.txt | 12 ++++++-- crawl-ref/source/dat/mons/boundless-tesseract.yaml | 2 +- crawl-ref/source/dat/mons/raven.yaml | 2 +- crawl-ref/source/god-abil.cc | 1 - crawl-ref/source/item-use.cc | 33 ++++++++++++++++++++++ crawl-ref/source/mon-cast.cc | 5 +++- crawl-ref/source/mon-clone.cc | 1 + crawl-ref/source/mon-death.cc | 6 ++-- crawl-ref/source/mutation.cc | 2 +- crawl-ref/source/player.cc | 8 ++++-- crawl-ref/source/spl-cast.h | 2 +- crawl-ref/source/spl-data.h | 4 +-- crawl-ref/source/spl-transloc.cc | 2 +- crawl-ref/source/target.cc | 2 +- 16 files changed, 74 insertions(+), 19 deletions(-) diff --git a/crawl-ref/source/ability.cc b/crawl-ref/source/ability.cc index 1d44f1570f..81231ddb77 100644 --- a/crawl-ref/source/ability.cc +++ b/crawl-ref/source/ability.cc @@ -2807,7 +2807,7 @@ bool activate_talent(const talent& tal, dist *target) direction_chooser_args args; args.hitfunc = hitfunc.get(); - args.restricts = testbits(abil.flags, abflag::target) ? DIR_TARGET + args.restricts = testbits(abil.flags, abflag::target) ? DIR_ENFORCE_RANGE : DIR_NONE; args.mode = TARG_HOSTILE; args.range = range; diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt index 6635025951..f0b8013e82 100644 --- a/crawl-ref/source/dat/database/monspeak.txt +++ b/crawl-ref/source/dat/database/monspeak.txt @@ -8036,6 +8036,15 @@ friendly protean progenitor w:30 __NONE %%%% +################## Raven ########################### +raven + +w:100 +__NONE + +w:2 +@The_monster@ caws, "Nevermore!" +%%%% ################## Reaper ################################## # The reaper has come for you! reaper diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index c0401b8d1c..56cc3a6cd8 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -1181,9 +1181,15 @@ A slender, sharply pointed sword, with an uncommonly elegant design. riddle talisman An intricate puzzlebox containing an unknowable prize. Transforms the user into -a riddle-loving sphinx. In this form, they are capable of wearing a cloak and -barding, and their melee attacks cause powerful winds to strike their foe which -do increased damage for every open space next to them. They are also masterful +a riddle-loving sphinx. In this form, they are {{ + if you.race() == "Felid" then + return "normally capable of wearing a cloak and barding (though your" .. + " own diminutive size would prevent this)" + else + return "capable of wearing a cloak and barding" + end +}}, and their melee attacks cause powerful winds to strike their foe which do +increased damage for every open space next to them. They are also masterful enchanters, casting Hex spells much more easily and ignoring a portion of their foe's Willpower. diff --git a/crawl-ref/source/dat/mons/boundless-tesseract.yaml b/crawl-ref/source/dat/mons/boundless-tesseract.yaml index a613dc42ef..76a2997faf 100644 --- a/crawl-ref/source/dat/mons/boundless-tesseract.yaml +++ b/crawl-ref/source/dat/mons/boundless-tesseract.yaml @@ -10,7 +10,7 @@ hp_10x: 1800 ac: 10 ev: 1 spells: boundless_tesseract -intelligence: human +intelligence: brainless size: large shape: misc tile_variance: cycle diff --git a/crawl-ref/source/dat/mons/raven.yaml b/crawl-ref/source/dat/mons/raven.yaml index 1c58c1f6f0..e3a1bba3c0 100644 --- a/crawl-ref/source/dat/mons/raven.yaml +++ b/crawl-ref/source/dat/mons/raven.yaml @@ -1,6 +1,6 @@ name: "raven" glyph: {char: "b", colour: blue} -flags: [flies] +flags: [flies, speaks] exp: 210 will: 20 attacks: diff --git a/crawl-ref/source/god-abil.cc b/crawl-ref/source/god-abil.cc index 8d5b7d73f6..b131d4975e 100644 --- a/crawl-ref/source/god-abil.cc +++ b/crawl-ref/source/god-abil.cc @@ -3010,7 +3010,6 @@ bool valid_marionette_spell(spell_type spell) case SPELL_WALL_OF_BRAMBLES: case SPELL_CALL_TIDE: case SPELL_DRUIDS_CALL: - case SPELL_PYRRHIC_RECOLLECTION: // Doesn't do anything to monsters case SPELL_MESMERISE: diff --git a/crawl-ref/source/item-use.cc b/crawl-ref/source/item-use.cc index 40ecbc162e..2e61f331ee 100644 --- a/crawl-ref/source/item-use.cc +++ b/crawl-ref/source/item-use.cc @@ -1175,8 +1175,41 @@ static item_def* _item_swap_menu(const vector<item_def*>& candidates) return nullptr; } +static bool _equipment_effectively_identical(const item_def& item1, const item_def& item2) +{ + return item1.base_type == item2.base_type + && item1.sub_type == item2.sub_type + && item1.plus == item2.plus + && item1.brand == item2.brand + && !item1.cursed() && !item2.cursed() + && !is_artefact(item1) && !is_artefact(item2); +} + static item_def* _item_swap_prompt(const vector<item_def*>& candidates) { + // If our list contains only identical items, return the first without a + // prompt. + bool found_non_match = false; + for (size_t i = 0; i < candidates.size() - 1; ++i) + { + item_def* item = candidates[i]; + if (item->base_type == OBJ_JEWELLERY && Options.jewellery_prompt) + continue; + + for (size_t j = i + 1; j < candidates.size(); ++j) + { + // A single non-match among all candidates is enough to cancel this + if (!_equipment_effectively_identical(*item, *candidates[j])) + { + found_non_match = true; + break; + } + } + } + + if (!found_non_match && !candidates.empty()) + return candidates[0]; + // Default to a menu for larger choices if (candidates.size() > 3 || ui::has_layout()) return _item_swap_menu(candidates); diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc index 6b1123314c..9939ff2cff 100644 --- a/crawl-ref/source/mon-cast.cc +++ b/crawl-ref/source/mon-cast.cc @@ -513,7 +513,7 @@ static const map<spell_type, mons_spell_logic> spell_to_logic = { flash_tile(you.pos(), LIGHTBLUE, 25); mpr("Mutagenic energy flows into you."); contaminate_player(random_range(80, 120) - + you.magic_contamination < 1000 ? 40 : 0); + + (you.magic_contamination < 1000 ? 40 : 0)); } else if (coinflip()) foe->malmutate(&caster, "mutagenic gaze"); @@ -9106,6 +9106,9 @@ ai_action::goodness monster_spell_goodness(monster* mon, spell_type spell) actor *foe = mon->get_foe(); const bool friendly = mon->friendly(); + if (get_spell_flags(spell) & spflag::dummy) + return ai_action::impossible(); + if (!foe && (get_spell_flags(spell) & spflag::targeting_mask)) return ai_action::impossible(); diff --git a/crawl-ref/source/mon-clone.cc b/crawl-ref/source/mon-clone.cc index 90eb4bbac6..5a1bbeb1fc 100644 --- a/crawl-ref/source/mon-clone.cc +++ b/crawl-ref/source/mon-clone.cc @@ -54,6 +54,7 @@ static bool _monster_clone_exists(monster* mons) static bool _mons_is_illusion_cloneable(monster* mons) { return !mons->is_peripheral() + && mons->type != MONS_BOUNDLESS_TESSERACT && !mons->is_illusion() && !_monster_clone_exists(mons); } diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc index 8cb707ed0a..12015108a5 100644 --- a/crawl-ref/source/mon-death.cc +++ b/crawl-ref/source/mon-death.cc @@ -1821,7 +1821,7 @@ static bool _animate_dead_reap(monster &mons) return true; } -static bool _reaping(monster &mons) +static bool _reaping_brand(monster &mons) { if (!mons.props.exists(REAPING_DAMAGE_KEY)) return false; @@ -1890,7 +1890,7 @@ static bool _apply_necromancy(monster &mons, bool quiet, bool corpse_gone, if (corpse_gone || have_passive(passive_t::goldify_corpses)) return false; - if (in_los && (_animate_dead_reap(mons) || _reaping(mons))) + if (in_los && (_animate_dead_reap(mons))) return true; return false; @@ -3264,6 +3264,8 @@ item_def* monster_die(monster& mons, killer_type killer, SPELL_DEATH_CHANNEL, static_cast<god_type>(you.attribute[ATTR_DIVINE_DEATH_CHANNEL])); } + else if (!you_worship(GOD_YREDELEMNUL)) + (_reaping_brand(mons)); if (in_los && corpseworthy && yred_torch_is_raised()) yred_feed_torch(&mons); diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc index a9a3ca9a27..4dbe1a61c5 100644 --- a/crawl-ref/source/mutation.cc +++ b/crawl-ref/source/mutation.cc @@ -3530,7 +3530,7 @@ void maybe_apply_bane_to_monster(monster& mons) mons.add_ench(mon_enchant(ENCH_WARDING, 0, nullptr, INFINITE_DURATION)); for (monster_near_iterator mi(mons.pos(), LOS_NO_TRANS); mi; ++mi) { - if (!testbits(mi->flags, MF_SEEN)) + if (!testbits(mi->flags, MF_SEEN) && !mi->is_peripheral()) mi->add_ench(mon_enchant(ENCH_WARDING, 0, nullptr, INFINITE_DURATION)); } } diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 934841e5b3..12153321d5 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -1310,7 +1310,9 @@ int player_res_steam(bool allow_random, bool temp, bool items) res += armour_type_prop(body_armour->sub_type, ARMF_RES_STEAM) * 2; } - res += rf * 2; + // Don't let rF- override steam immunity. + if (rf > 0 || res == 0) + res += rf * 2; if (res > 2) res = 2; @@ -3585,8 +3587,8 @@ int slaying_bonus(bool throwing, bool random) ret += you.wearing_jewellery(RING_SLAYING); ret += you.scan_artefacts(ARTP_SLAYING); - if (you.wearing_ego(OBJ_ARMOUR, SPARM_HURLING) && throwing) - ret += 4; + if (throwing) + ret += 4 * you.wearing_ego(OBJ_ARMOUR, SPARM_HURLING); ret += 3 * augmentation_amount(); ret += you.get_mutation_level(MUT_SHARP_SCALES); diff --git a/crawl-ref/source/spl-cast.h b/crawl-ref/source/spl-cast.h index 35068904cd..cd19c37b11 100644 --- a/crawl-ref/source/spl-cast.h +++ b/crawl-ref/source/spl-cast.h @@ -57,7 +57,7 @@ enum class spflag WL_check = 0x08000000, // spell that checks monster WL mons_abjure = 0x10000000, // monsters can cast abjuration // instead of this spell - // 0x20000000, // was spflag::not_evil + dummy = 0x20000000, // not a real spell (and shouldn't be cast) holy = 0x40000000, // considered holy (can't be // used by Yred bound souls) }; diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index ffd1e8bd11..7be84c76ec 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -4576,7 +4576,7 @@ static const struct spell_desc spelldata[] = { SPELL_PYRRHIC_RECOLLECTION, "Pyrrhic Recollection", spschool::none, - spflag::monster, + spflag::monster | spflag::dummy, 6, 200, -1, -1, @@ -4587,7 +4587,7 @@ static const struct spell_desc spelldata[] = { SPELL_PLANAR_OVERLAY, "Planar Overlay", spschool::none, - spflag::monster, + spflag::monster | spflag::dummy, 6, 200, -1, -1, diff --git a/crawl-ref/source/spl-transloc.cc b/crawl-ref/source/spl-transloc.cc index adc02e3621..ed18cb608c 100644 --- a/crawl-ref/source/spl-transloc.cc +++ b/crawl-ref/source/spl-transloc.cc @@ -898,7 +898,7 @@ spret controlled_blink(bool safe_cancel, dist *target) // Fuzz blinking by 2 tiles while in Zot or on the orb run. if (orb_limits_translocation()) { - targeter_hop tgt(you.current_vision - 2, false); + targeter_hop tgt(max(1, you.current_vision - 2), false); if (!_find_cblink_target(*target, safe_cancel, "blink", &tgt)) return spret::abort; target->target = _fuzz_blink_destination(target->target); diff --git a/crawl-ref/source/target.cc b/crawl-ref/source/target.cc index e26e826085..e4fe5e2918 100644 --- a/crawl-ref/source/target.cc +++ b/crawl-ref/source/target.cc @@ -2791,7 +2791,7 @@ bool targeter_bestial_takedown::valid_aim(coord_def a) if (monster* mon = monster_at(a)) { - if (!mon->friendly() && mon->has_ench(ENCH_FEAR)) + if (!mon->friendly() && mon->has_ench(ENCH_FEAR) && you.can_see(*mon)) { if (get_bestial_landing_spots(a).empty()) return notify_fail("You can see nowhere safe to land near that."); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 05:00:10
|
via e6c66e347d84e232bc12bb5368e801c868aee4ca (commit) from 28cf5388aedcda4c99563730235705c2732b5050 (commit) ----------------------------------------------------------------------- commit e6c66e347d84e232bc12bb5368e801c868aee4ca Author: Hellmonk <nld...@gm...> Date: Sun Jul 6 23:56:39 2025 -0500 Add support for conduct titles (#4634) Allow title handling outside the species/skill/god/stat paradigm. It should be possible to make titles for various challenge conducts or unusual playstyles. These titles will also be saved for player ghosts. Includes a selection of such titles: "Flawless", for holding all gems intact "True Ascetic", for never using a potion or scroll "Incurious", for 15 rune deathless Felid "Ruthless", for having the Orb at xl 18 or lower "Miser", for Gozag runs which never purchase from shops "Chaos Fanatic", for 15 rune CK runs without abandoning Xom "Keeper of the Flame", as above for Cinder Acolytes of Ignis More will be added over time. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/describe.cc | 14 +++++-- crawl-ref/source/ghost.cc | 2 + crawl-ref/source/ghost.h | 1 + crawl-ref/source/main.cc | 1 + crawl-ref/source/mon-info.cc | 2 + crawl-ref/source/mon-info.h | 1 + crawl-ref/source/skills.cc | 83 ++++++++++++++++++++++++++++++++++++++---- crawl-ref/source/skills.h | 4 +- crawl-ref/source/tag-version.h | 2 + crawl-ref/source/tags.cc | 15 ++++++++ 10 files changed, 114 insertions(+), 11 deletions(-) diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 1c1ec496c3..2e6327e3f0 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -7225,8 +7225,11 @@ string get_ghost_description(const monster_info &mi, bool concise) const species_type gspecies = mi.i_ghost.species; - gstr << mi.mname << " the " - << skill_title_by_rank(mi.i_ghost.best_skill, + string title = mi.i_ghost.title; +#if TAG_MAJOR_VERSION == 34 + if (title.empty()) + { + title = skill_title_by_rank(mi.i_ghost.best_skill, mi.i_ghost.best_skill_rank, gspecies, get_species_def(gspecies).d, @@ -7234,7 +7237,12 @@ string get_ghost_description(const monster_info &mi, bool concise) get_species_def(gspecies).i, mi.i_ghost.religion, 10 + mi.i_ghost.xl_rank * 27, - transformation::none) + false); + } +#endif + + gstr << mi.mname << " the " + << title << ", " << _xl_rank_name(mi.i_ghost.xl_rank) << " "; if (concise) diff --git a/crawl-ref/source/ghost.cc b/crawl-ref/source/ghost.cc index 3b07bd0bb4..ced6dc8f4a 100644 --- a/crawl-ref/source/ghost.cc +++ b/crawl-ref/source/ghost.cc @@ -147,6 +147,7 @@ void ghost_demon::reset() flies = false; cloud_ring_ench = ENCH_NONE; umbra_rad = -1; + title = ""; } // Set values to the bare minimum required to function, in cases where full @@ -529,6 +530,7 @@ void ghost_demon::init_player_ghost() best_skill = ::best_skill(SK_FIRST_SKILL, SK_LAST_SKILL); best_skill_level = you.skills[best_skill]; xl = you.experience_level; + title = player_title(); flies = true; diff --git a/crawl-ref/source/ghost.h b/crawl-ref/source/ghost.h index 48873ec14a..88d6315afa 100644 --- a/crawl-ref/source/ghost.h +++ b/crawl-ref/source/ghost.h @@ -70,6 +70,7 @@ public: resists_t resists; enchant_type cloud_ring_ench; int umbra_rad; + string title; colour_t colour; diff --git a/crawl-ref/source/main.cc b/crawl-ref/source/main.cc index c777031711..dc4e252131 100644 --- a/crawl-ref/source/main.cc +++ b/crawl-ref/source/main.cc @@ -2468,6 +2468,7 @@ static void _prep_input() you.shield_blocks = 0; // no blocks this round you.redraw_status_lights = true; + you.redraw_title = true; if (you.running == 0) { you.quiver_action.set_needs_redraw(); diff --git a/crawl-ref/source/mon-info.cc b/crawl-ref/source/mon-info.cc index 19aafac063..cfe9a0efa4 100644 --- a/crawl-ref/source/mon-info.cc +++ b/crawl-ref/source/mon-info.cc @@ -367,6 +367,7 @@ monster_info::monster_info(monster_type p_type, monster_type p_base_type) hd = ghost_rank_to_level(i_ghost.xl_rank); i_ghost.ac = 5; i_ghost.damage = 5; + i_ghost.title = ""; } if (mons_is_draconian_job(type)) @@ -712,6 +713,7 @@ monster_info::monster_info(const monster* m, int milev) i_ghost.xl_rank = ghost_level_to_rank(ghost.xl); i_ghost.ac = quantise(ghost.ac, 5); i_ghost.damage = ghost.damage; + i_ghost.title = ghost.title; props[KNOWN_MAX_HP_KEY] = (int)ghost.max_hp; if (m->props.exists(MIRRORED_GHOST_KEY)) props[MIRRORED_GHOST_KEY] = m->props[MIRRORED_GHOST_KEY]; diff --git a/crawl-ref/source/mon-info.h b/crawl-ref/source/mon-info.h index 38afbdc240..ab8b6ac925 100644 --- a/crawl-ref/source/mon-info.h +++ b/crawl-ref/source/mon-info.h @@ -371,6 +371,7 @@ struct monster_info : public monster_info_base short xl_rank; short damage; short ac; + string title; } i_ghost; inline bool is(unsigned mbflag) const diff --git a/crawl-ref/source/skills.cc b/crawl-ref/source/skills.cc index a23ac1914e..d1c4041385 100644 --- a/crawl-ref/source/skills.cc +++ b/crawl-ref/source/skills.cc @@ -16,6 +16,7 @@ #include "ability.h" #include "clua.h" +#include "chardump.h" #include "describe-god.h" #include "evoke.h" #include "files.h" @@ -24,6 +25,7 @@ #include "god-passive.h" #include "hints.h" #include "item-prop.h" +#include "items.h" #include "libutil.h" #include "message.h" #include "notes.h" @@ -1915,6 +1917,74 @@ unsigned get_skill_rank(unsigned skill_lev) /* level 27 */ : 4; } +/** + * Special conduct skill title tracking, extending the range of skill titles + * beyond what's covered in skill_title_by_rank. These titles are used only if + * "conducts" are enabled by that function, which excludes titles for player + * ghosts until someone wants to enable that, but allows going beyond the + * stat/skill/god paradigm of that function. + * + * When adding titles here, try to avoid "covering" the entirety of normal skill + * titles (ie don't add a lorekeeper title based on the tournament banner + * because it invalidates a large number of low skill level titles) + * + * Also, try to make the conducts interesting and challenging, not annoying, + * since some players like to chase titles. + */ +string special_conduct_title(skill_type best_skill, uint8_t skill_rank) +{ + string title; + + // All gem runs, as per the graceful banner (graceful seems a weird title) + if (gems_held_intact() >= 11) + return "Flawless"; + + // A very hard version of the ascetic banner + if (you.experience_level > 17 + && !you.action_count.count(make_pair(CACT_USE, caction_compound(OBJ_POTIONS))) + && !you.action_count.count(make_pair(CACT_USE, caction_compound(OBJ_SCROLLS)))) + { + return "True Ascetic"; + } + + // All rune deathless felid + if (you.species == SP_FELID && runes_in_pack() >= 15 && you.deaths == 0) + return "Incurious"; + + // A harder version of the ruthless efficiency banner + if (you.experience_level < 19 && player_has_orb()) + return "Ruthless"; + + // Shopless, with Gozag + if (you_worship(GOD_GOZAG) && you.experience_level > 17 + && you.attribute[ATTR_PURCHASES] == 0) + { + return "Miser"; + } + + // all runes with a zealot without ever abandoning + if (runes_in_pack() >= 15 && you.char_class == JOB_CHAOS_KNIGHT + && you_worship(GOD_XOM) && you.worshipped[GOD_XOM] == 1) + { + return "Chaos Fanatic"; + } + + if (runes_in_pack() >= 15 && you.char_class == JOB_CINDER_ACOLYTE + && you_worship(GOD_IGNIS) && you.worshipped[GOD_IGNIS] == 1) + { + return "Keeper of the Flame"; + } + + // Award for being very good at crab + if (you.form == transformation::fortress_crab + && best_skill == SK_SHAPESHIFTING && skill_rank == 5) + { + return "Pinnacle of Evolution"; + } + + return title; +} + // XX should at least some of this be in species.cc? /** @@ -1928,12 +1998,12 @@ unsigned get_skill_rank(unsigned skill_lev) * @param intel The player's base intelligence * @param god The god_type of the god the player follows. * @param piety The player's piety with the given god. - * @param trans The player's current transformation + * @param conducts Whether or not to check "special" conduct titles * @return An appropriate and/or humorous title. */ string skill_title_by_rank(skill_type best_skill, uint8_t skill_rank, species_type species, int dex, int str, int intel, - god_type god, int piety, transformation trans) + god_type god, int piety, bool conducts) { // paranoia @@ -2029,11 +2099,6 @@ string skill_title_by_rank(skill_type best_skill, uint8_t skill_rank, result = "Undying Armoury"; break; - case SK_SHAPESHIFTING: - if (trans == transformation::fortress_crab && skill_rank == 5) - result = "Pinnacle of Evolution"; - break; - case SK_SPELLCASTING: if (species == SP_DJINNI && skill_rank == 5) result = "Wishgranter"; @@ -2197,6 +2262,10 @@ string skill_title_by_rank(skill_type best_skill, uint8_t skill_rank, result = god_title(betrayed_god, species, piety); } + if (conducts) + result = special_conduct_title(best_skill, skill_rank); + + if (result.empty()) result = skill_titles[best_skill][skill_rank]; } diff --git a/crawl-ref/source/skills.h b/crawl-ref/source/skills.h index b177825d40..8fc0f7d562 100644 --- a/crawl-ref/source/skills.h +++ b/crawl-ref/source/skills.h @@ -92,6 +92,7 @@ const char *skill_abbr(skill_type which_skill); skill_type str_to_skill(const string &skill); skill_type str_to_skill_safe(const string &skill); +string special_conduct_title(skill_type best_skill, uint8_t skill_rank); string skill_title_by_rank( skill_type best_skill, uint8_t skill_rank, // these used for ghosts and hiscores: @@ -99,7 +100,8 @@ string skill_title_by_rank( int dex = you.base_stats[STAT_DEX], int str = you.base_stats[STAT_STR], int intel = you.base_stats[STAT_INT], god_type god = you.religion, - int piety = you.raw_piety, transformation trans = you.form); + int piety = you.raw_piety, bool conducts = true); + unsigned get_skill_rank(unsigned skill_lev); string player_title(bool the = true); diff --git a/crawl-ref/source/tag-version.h b/crawl-ref/source/tag-version.h index f87586d034..8faca1a0c3 100644 --- a/crawl-ref/source/tag-version.h +++ b/crawl-ref/source/tag-version.h @@ -328,6 +328,7 @@ enum tag_minor_version TAG_MINOR_TEMP_MUT_KILLS, // Change how temp mutations are cured TAG_MINOR_CONTAM_PERCENT, // Rescale internal values for magic contamination TAG_MINOR_ZOT_ORB_ROTATION, // Add multiple rotating orb monster types to Zot + TAG_MINOR_GHOST_TITLE, // Store ghost titles instead of generating them #endif NUM_TAG_MINORS, TAG_MINOR_VERSION = NUM_TAG_MINORS - 1 @@ -347,6 +348,7 @@ const set<int> bones_minor_tags = TAG_MINOR_GHOST_UMBRAS, TAG_MINOR_GHOST_MOVE_SPEED_FIX, TAG_MINOR_GHOST_WILLPOWER, + TAG_MINOR_GHOST_TITLE, #endif }; diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc index f3d1b96533..f0f0af1e63 100644 --- a/crawl-ref/source/tags.cc +++ b/crawl-ref/source/tags.cc @@ -6520,6 +6520,7 @@ void _marshallMonsterInfo(writer &th, const monster_info& mi) marshallShort(th, mi.i_ghost.xl_rank); marshallShort(th, mi.i_ghost.damage); marshallShort(th, mi.i_ghost.ac); + marshallString(th, mi.i_ghost.title); } mi.props.write(th); @@ -6784,6 +6785,12 @@ void _unmarshallMonsterInfo(reader &th, monster_info& mi) mi.i_ghost.xl_rank = unmarshallShort(th); mi.i_ghost.damage = unmarshallShort(th); mi.i_ghost.ac = unmarshallShort(th); +#if TAG_MAJOR_VERSION == 34 + if (th.getMinorVersion() < TAG_MINOR_GHOST_TITLE) + mi.i_ghost.title = ""; + else +#endif + unmarshallString(th); } #if TAG_MAJOR_VERSION == 34 if ((mons_is_ghost_demon(mi.type) @@ -8256,6 +8263,7 @@ static void _marshallGhost(writer &th, const ghost_demon &ghost) marshallByte(th, ghost.colour); marshallBoolean(th, ghost.flies); marshallShort(th, ghost.umbra_rad); + marshallString(th, ghost.title); _marshallSpells(th, ghost.spells); } @@ -8338,6 +8346,13 @@ static ghost_demon _unmarshallGhost(reader &th) else #endif ghost.umbra_rad = unmarshallShort(th); +#if TAG_MAJOR_VERSION == 34 + if (th.getMinorVersion() < TAG_MINOR_GHOST_TITLE) + ghost.title = ""; + else +#endif + ghost.title = unmarshallString(th); + unmarshallSpells(th, ghost.spells #if TAG_MAJOR_VERSION == 34 -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-07 03:50:15
|
via c57ece609a30a0ad9cb2edfbf5b5ae36db57eaf7 (commit) via 28cf5388aedcda4c99563730235705c2732b5050 (commit) via d700b1d6c5345f8a00b3763c2a97e54288124bc7 (commit) via e53ad14149bb2167b98a8b9eb8352e0618e7d08b (commit) via 3d0e656495fc269fcb93d31380cffeec7ae2d8fb (commit) via 4b37bdf94e06d792bdc44f1853d851601cfa8a6c (commit) via 8edd070e86724b00a583848022aad86f348f92d9 (commit) via 052753400fab83b1cc4c5e0389b35bc1393d0bb2 (commit) via ba080413bb799d23c810e48a6c588f1f501b8b3e (commit) via a82abc1eca3b6b6c15f596868c1fb2965739d6b9 (commit) via 0ac7050e40a6ae80ed5edd1a00b4e94518cbd2e1 (commit) via 9245ba7e0e433b5e5f5e79ffaa30c7bc61542070 (commit) via 58bce5c09a45991e93464d4546a5ad2346835fa5 (commit) via 49f3ece09ae2da0aa94debfcf0cbc6c432e2bdbe (commit) via 9f259bd188b73a36c9896d50662e74ecbc6bee5b (commit) via 2e5ef21555db61364d8317a92a66ccd3be653f40 (commit) via 6afd62ccd5ae09732db369cc74e5b27d517e6eb0 (commit) via eef651f67af6023524e9f99e9a211862cde27b4e (commit) via 9a6bba5181c9a2caf331894991c9784f9a6004ef (commit) via 02f3d51f4c005bb60d7fdd18431b22e9be8f654c (commit) via 3197762f3de73852df71882fa0e5588e0aae37ae (commit) via 7d0a7343d7e0ccb499af69f49a80d4e6273557ac (commit) via 21a59f485403f4ae01b1aca30b75330f6deba921 (commit) via 724dfb3b2487f68f2f59b5818d2af6e937b52f7d (commit) via 6336768dfd455be3c8f47ad95cfccba7ba8f2e5b (commit) via 62e60e0296f5a3dd8484e10d20ffb70be5f33500 (commit) via 60b5d8b99b4a0fc30e94d4751d5860efa21d5ea9 (commit) via 091814e86701822a399fdd12b5906262717f5391 (commit) via 905eea1a6b51a460b2cd7eadd28a6fa1493fe3e4 (commit) via 30d1165b966627a4f3276a3ee2e865dd112ff8b8 (commit) via 3911a2f490963da2de54be6a9adcef3ea674b08f (commit) via e75be345548b8d941e59e50c8380bcf30482ad04 (commit) via b1d71068920da0d73f9bc480c5e5e9bfcc0f8ba6 (commit) via 94194747ba8bc6b023750ea804c61c6ba72af6bc (commit) via 41bb3a0f41ecc5d5ab2f29a25e000e24d3046bb1 (commit) via 76c8eab05c3745cc64a49781f9ff6e30a5abaff1 (commit) via f5d2b76d86e1dbabcf896a6f85229a040ec6d7de (commit) via e722901d9e21aba9423690792a14d76e52debeea (commit) via b8a17184764f6a84fd36bc4316feb6357935f552 (commit) via 1ff2131c939e3d81112a3c7906c57dfc57f75d94 (commit) via 31aee9cdb85855958bd458ed6a6aaafd3ffb918a (commit) via 6226c2728749897a2935ca5f4e52b4e59f8bdc57 (commit) via 7e80ae8a7136f9a1ec825d7d8dd2bf49bbf3fcd3 (commit) via eee55696c450d37bf4456802a61d7cf548e6fc7a (commit) via faf06d56fc8ecd764da2daa11bd0dbad774f0559 (commit) via 7341a40b1811a3433379c240329296a453aa8d16 (commit) via b05e2c082db49097d284944ee795804759e889ea (commit) via 70c6c67644340c5a8533027c869de16e3d182d34 (commit) via 6d902687a52e55e9fb4eedd3886b91c07f543a96 (commit) via 715f76a3251c70837e73e0a6156f3cd868b09627 (commit) via 9c06f765019fe2cadd406acdc3058d5b7b4ec98c (commit) via e002260597d5fb019fdcf40e2c05f10ebd5042df (commit) via 6a75ce48ae8b43c1b6aed2c00ff32ecef08b0e19 (commit) via 727a8ff8c51072a4fe367d50cf5780345e142101 (commit) via dd4ca101b716f6d516e15d61adef7c5736b8c2bb (commit) via 8c54407fd10ac3c077858c108a3360b9b599f02d (commit) via b285aab4bfc26c687100ac0a235c9e787e6cfa66 (commit) via 32552a36459c0979f9fea2b94a02f1f8b39ea17d (commit) via bc0309bb70bbc970c603663bc7cf801c4340258e (commit) via eddbedc23e7eb1c2bb5d53d7c71b4d62289ad219 (commit) via 6405cb6f9f0d8c89fdd838354132e008593a6f00 (commit) via 42a77206da2a9d200b9b707c2a827562edb613d8 (commit) via 62013438aebb6c0b83e39b99081e0c33851a3a23 (commit) via beb3228c29d4ecf57d75ae3e88bc1ee06097301e (commit) via cdf022edef78a28149d6166906ea84f3c8324b3c (commit) via b9118b70cf21cbcd12a5aa799a1b5f8ddcacb48e (commit) via 473d61d5f3844162d42a3a2cf41004992e52c96a (commit) via c9fbd40ca52fe2b2c20d0d4b32f42f36fa9e0e91 (commit) via dccffc7fa4ce6812bcddfe120a9abada2403a30a (commit) via 36ea7f389b4a30078318f3b1a92094bed6ee9d44 (commit) via 1de4b17f54b2382911e0450dd687c5b554962b53 (commit) via 6aa2896139d2d002c5adbf66cc5585f678e7c08e (commit) via a8eaa2688164bf8cd35b71648d047d486325b855 (commit) via 67c6cfe9664fa1b279d1739f22a8cf932199f146 (commit) via bb9f6eaebf591c8d0dbcffd850db4db014351ca6 (commit) via 029931c8c28df44bebc2c49096fc55eed02e70cc (commit) via 0e87efbab1a62acf19ddcbb27e4210f030ed733b (commit) via ce3637a8a7a872352b98e5899fe69a4ddea25856 (commit) via 0e930c616a6946c334c84a7f613c310531e318e3 (commit) via 3921acbb5b747a7f919f12281c619876d148d0d3 (commit) via 03c9043ecf93f485f16231435e7422dafd6170cd (commit) via 3cc1a7f2c6768943520ed3122b4c12f01389669a (commit) via 1509c9730a249f68116187277720fdaed30670ca (commit) via 589dcd5fafb1a68775068fc7231b09c47d30c123 (commit) via bdfbcd9d8f78396635d9db6ee0b91fcb7306b3a9 (commit) via daee816b5679b267cdebf03c52066883a99d2e0c (commit) via 6c811b4e7387537361429851791ade5e4667ebaf (commit) via 932a6721109af5c2f6a99758c43015e61c1a18ad (commit) via ed944a3ea86c6e6d93f579315f2d9393842677d9 (commit) via 810186ef393cde6ec8c852f0809d80017f42730e (commit) via 298d9142ee2850900ab906718909e31f379bceae (commit) via 8504f3149174a6c758377aed43ccc52bec8b9714 (commit) via 98bede34cbe93dfb14650113add09748b507d74f (commit) via bbd43c3f96221d25e74cbcdb304ab455793b68e4 (commit) via 5a39f0a0a9fdf6b8e9df592417a477469a88208b (commit) via 26b8a9168e87f109ce280fe5d1a7a49c1ed3508c (commit) via 0254f6ebed81059f3959f0b8f9d34f3c59877443 (commit) via 668f0552a68a97bfb2456b4e7b90c0ed37f15e61 (commit) via 35fecaca18c7d17315fc9cc3b881098d4c6b52ee (commit) via d15709afe72fab67b7a5ac060c2f270f222bcf71 (commit) via e0d6eff36e669e3ee68eeb8996d5ccc855817f8e (commit) via 3a56b92573224d0c4c50210a49c4465d8badd9c3 (commit) via 10526ab61d0ae0e703af5be6e4c0a493bc7d48a8 (commit) via 2eebc40b835fbb463a478f2e38689beeeca9d068 (commit) via ab6f3de9150e0a9561027164475afc1ae0543936 (commit) via b4b1104264172cfef90bdc7bd7344e4aaa7baf78 (commit) via 599f840ba3089ce80cfb0acb5a1920ce59d3cc57 (commit) via 792dbfd15cad65a0e5e5f8488ff7d43b0fd89829 (commit) via 215ae768d85bd0d5740eb73dc6a4a73fe8dd9bcb (commit) via 833c0d20aa5f9972f86b76c53e37e7d1a64a7c85 (commit) via bf3c94e042c26c02627803cacdd4a4b095a5fa7d (commit) via 10e391dd33ebaae68ce9ca4f00ac765b4a5258dd (commit) via 5ccffcbd921f0429411dcfbcefc994d31f109a7c (commit) via 99ad798d1dee928a58c8599e16513f2eaccf4555 (commit) via e40175b4d2d0208862194a208143a457197d9265 (commit) via 20c652507f7c13ea3d5f6f6c6243dc056aa8dc7c (commit) via 49a8721c84f1b65a6762c9d2ef4aa1bc1998e818 (commit) via 8e1e0eb00bb8afbec19d1cdb2b40914bde60ba99 (commit) via b3df94d7d9568ed31d2f02756eb18184e62d77b7 (commit) via 3a513b15fd1e33ee3888f0eb54617fded238035a (commit) via d61037341e1f3e0be0eca180dbaa7d4cdd96acca (commit) via 93b359f46793ad7ff9ee4d48018aa242bb49c517 (commit) via fe8c342c43e39349279acc864ed8f25e32528c97 (commit) via d49d7355873df7c392c02732fd24780f178bab90 (commit) via 8f30dc1df9db2484b70d70a6835605dbb82560ad (commit) via eb2233f344df81f775a21f6696c33aade17fe40d (commit) via f3e65b18dfbdf948c0da17bad72bbd72f8b3109a (commit) via 4ea9b775280b8b2dafcf3047c9122ab12a43a8fa (commit) via d32397033825d6f48e48fb453c2870ffcc4ca6bf (commit) via 3e33581886cf8aa44a61b2b71628e704de9f32da (commit) via 8b6760638494a4240af7092ef63323a4c22b36e1 (commit) via 11e0a03ac7ca91542b9564681be41c28fa8a89b2 (commit) via 25cbcda860011dfc79dee4d15180175919460754 (commit) from 46dcbc1f2cb31e27891ff3e5ecd9266e322ba4b5 (commit) ----------------------------------------------------------------------- commit c57ece609a30a0ad9cb2edfbf5b5ae36db57eaf7 Merge: 46dcbc1f2c 28cf5388ae Author: Hellmonk <nld...@gm...> Date: Sun Jul 6 22:48:39 2025 -0500 Merge branch 'master' into entitledplayers ----------------------------------------------------------------------- Summary of changes: crawl-ref/CREDITS.txt | 3 + crawl-ref/docs/crawl_manual.rst | 16 +- crawl-ref/docs/options_guide.txt | 13 +- crawl-ref/source/ability.cc | 15 +- crawl-ref/source/acquire.cc | 24 +- crawl-ref/source/acquire.h | 3 +- crawl-ref/source/actor-los.cc | 2 + crawl-ref/source/actor.h | 7 +- crawl-ref/source/areas.cc | 10 +- crawl-ref/source/art-data.txt | 11 +- crawl-ref/source/art-func.h | 4 +- crawl-ref/source/artefact-prop-type.h | 1 + crawl-ref/source/artefact.cc | 11 +- crawl-ref/source/artefact.h | 2 +- crawl-ref/source/attack.cc | 5 - crawl-ref/source/attitude-change.cc | 2 +- crawl-ref/source/attribute-type.h | 7 +- crawl-ref/source/bane-data.h | 112 + crawl-ref/source/bane-type.h | 32 + crawl-ref/source/beam-type.h | 6 +- crawl-ref/source/beam.cc | 212 +- crawl-ref/source/beam.h | 1 - crawl-ref/source/bloodspatter.cc | 5 +- crawl-ref/source/bloodspatter.h | 3 +- crawl-ref/source/book-data.h | 8 +- crawl-ref/source/book-type.h | 1 + crawl-ref/source/catch2-tests/test_player.cc | 8 - crawl-ref/source/cloud.cc | 11 +- crawl-ref/source/ctest.cc | 4 + crawl-ref/source/daction-type.h | 1 + crawl-ref/source/dactions.cc | 9 + crawl-ref/source/dat/clua/autofight.lua | 3 + crawl-ref/source/dat/database/godspeak.txt | 5 +- crawl-ref/source/dat/database/help.txt | 4 +- crawl-ref/source/dat/database/monspeak.txt | 4 +- crawl-ref/source/dat/database/monspell.txt | 60 +- crawl-ref/source/dat/database/randbook.txt | 2 +- crawl-ref/source/dat/database/shout.txt | 15 + crawl-ref/source/dat/database/zh/help.txt | 2 +- crawl-ref/source/dat/database/zh/monspell.txt | 2 +- crawl-ref/source/dat/defaults/messages.txt | 5 + crawl-ref/source/dat/defaults/misc.txt | 3 +- crawl-ref/source/dat/des/altar/altar.des | 8 +- crawl-ref/source/dat/des/altar/ecumenical.des | 6 +- crawl-ref/source/dat/des/altar/lugonu_bribe.des | 2 +- crawl-ref/source/dat/des/altar/overflow.des | 94 +- .../source/dat/des/altar/yredelemnul_ordeal.des | 13 +- crawl-ref/source/dat/des/arrival/large.des | 3 +- crawl-ref/source/dat/des/arrival/small.des | 11 +- crawl-ref/source/dat/des/arrival/twisted.des | 27 +- crawl-ref/source/dat/des/branches/abyss.des | 72 +- crawl-ref/source/dat/des/branches/crypt.des | 193 +- crawl-ref/source/dat/des/branches/depths.des | 7 +- .../source/dat/des/branches/depths_encompass.des | 49 +- crawl-ref/source/dat/des/branches/geh.des | 2 +- crawl-ref/source/dat/des/branches/hell.des | 16 +- crawl-ref/source/dat/des/branches/hells.des | 15 +- crawl-ref/source/dat/des/branches/lair.des | 30 +- crawl-ref/source/dat/des/branches/orc.des | 4 +- crawl-ref/source/dat/des/branches/pan.des | 68 +- crawl-ref/source/dat/des/branches/snake.des | 11 +- crawl-ref/source/dat/des/branches/swamp.des | 29 +- crawl-ref/source/dat/des/branches/tar.des | 30 +- crawl-ref/source/dat/des/branches/temple.des | 198 +- crawl-ref/source/dat/des/branches/tomb.des | 2 +- crawl-ref/source/dat/des/branches/vaults.des | 8 +- .../source/dat/des/branches/vaults_rooms_hard.des | 15 +- .../dat/des/branches/vaults_rooms_standard.des | 7 +- crawl-ref/source/dat/des/branches/zot.des | 231 +- crawl-ref/source/dat/des/builder/alphashops.des | 2 +- crawl-ref/source/dat/des/builder/custombooks.des | 10 +- crawl-ref/source/dat/des/builder/rooms.des | 15 +- crawl-ref/source/dat/des/builder/shops.des | 30 +- crawl-ref/source/dat/des/portals/bazaar.des | 2 +- crawl-ref/source/dat/des/portals/necropolis.des | 38 +- crawl-ref/source/dat/des/portals/ossuary.des | 44 +- crawl-ref/source/dat/des/portals/sewer.des | 2 +- crawl-ref/source/dat/des/portals/trove.des | 2384 +++++++++++--------- crawl-ref/source/dat/des/portals/volcano.des | 40 +- crawl-ref/source/dat/des/portals/wizlab.des | 42 +- crawl-ref/source/dat/des/serial/demonic.des | 6 +- crawl-ref/source/dat/des/serial/library.des | 2 +- crawl-ref/source/dat/des/serial/magic_research.des | 7 +- crawl-ref/source/dat/des/serial/undead.des | 16 +- crawl-ref/source/dat/des/sprint/arena_sprint.des | 46 +- crawl-ref/source/dat/des/sprint/pitsprint.des | 53 +- crawl-ref/source/dat/des/sprint/sprint_mu.des | 6 +- crawl-ref/source/dat/des/sprint/zigsprint.des | 31 +- crawl-ref/source/dat/des/tutorial/lesson4.des | 4 +- crawl-ref/source/dat/des/variable/ambush.des | 4 +- crawl-ref/source/dat/des/variable/arcadia.des | 4 +- crawl-ref/source/dat/des/variable/d_encompass.des | 31 +- crawl-ref/source/dat/des/variable/float.des | 282 ++- crawl-ref/source/dat/des/variable/large_themed.des | 74 +- .../source/dat/des/variable/lemuel_castle.des | 13 +- .../source/dat/des/variable/mini_features.des | 2 +- .../source/dat/des/variable/mini_monsters.des | 100 +- crawl-ref/source/dat/des/variable/the_bubble.des | 4 +- crawl-ref/source/dat/descript/ability.txt | 4 +- crawl-ref/source/dat/descript/cs/unrand.txt | 2 +- crawl-ref/source/dat/descript/da/unrand.txt | 2 +- crawl-ref/source/dat/descript/de/unrand.txt | 2 +- crawl-ref/source/dat/descript/features.txt | 21 + crawl-ref/source/dat/descript/fr/unrand.txt | 4 +- crawl-ref/source/dat/descript/it/unrand.txt | 2 +- crawl-ref/source/dat/descript/items.txt | 9 +- crawl-ref/source/dat/descript/ja/unrand.txt | 2 +- crawl-ref/source/dat/descript/ko/unrand.txt | 2 +- crawl-ref/source/dat/descript/monsters.txt | 75 +- crawl-ref/source/dat/descript/mutations.txt | 110 +- crawl-ref/source/dat/descript/pl/unrand.txt | 2 +- crawl-ref/source/dat/descript/quotes.txt | 2 +- crawl-ref/source/dat/descript/ru/unrand.txt | 2 +- crawl-ref/source/dat/descript/spells.txt | 91 +- crawl-ref/source/dat/descript/status.txt | 29 +- crawl-ref/source/dat/descript/unrand.txt | 4 +- crawl-ref/source/dat/descript/zh/monsters.txt | 14 +- crawl-ref/source/dat/descript/zh/unrand.txt | 2 +- crawl-ref/source/dat/dlua/explorer.lua | 2 + crawl-ref/source/dat/dlua/gauntlet.lua | 8 +- crawl-ref/source/dat/dlua/lm_trove.lua | 128 +- crawl-ref/source/dat/dlua/vault.lua | 60 +- crawl-ref/source/dat/dlua/ziggurat.lua | 9 +- crawl-ref/source/dat/forms/bat-swarm.yaml | 1 + crawl-ref/source/dat/forms/death.yaml | 1 + crawl-ref/source/dat/forms/vampire.yaml | 1 + crawl-ref/source/dat/jobs/enchanter.yaml | 2 +- crawl-ref/source/dat/mons/boundless-tesseract.yaml | 16 + crawl-ref/source/dat/mons/cacodemon.yaml | 6 +- crawl-ref/source/dat/mons/death-knight.yaml | 12 +- .../source/dat/mons/{skeleton.yaml => draugr.yaml} | 7 +- crawl-ref/source/dat/mons/drude.yaml | 20 + crawl-ref/source/dat/mons/glass-eye.yaml | 2 +- crawl-ref/source/dat/mons/marrowcuda.yaml | 1 - crawl-ref/source/dat/mons/moon-troll.yaml | 6 +- .../mons/{doom-hound.yaml => oblivion-hound.yaml} | 4 +- crawl-ref/source/dat/mons/orb-of-entropy.yaml | 17 + crawl-ref/source/dat/mons/orb-of-winter.yaml | 17 + crawl-ref/source/dat/mons/raven.yaml | 18 + .../source/dat/mons/screaming-refraction.yaml | 19 + crawl-ref/source/dat/mons/shining-eye.yaml | 5 +- crawl-ref/source/dat/mons/zykzyl.yaml | 19 + crawl-ref/source/dat/species/mummy.yaml | 1 + crawl-ref/source/dat/species/poltergeist.yaml | 1 + crawl-ref/source/dat/species/revenant.yaml | 1 + crawl-ref/source/dbg-objstat.cc | 45 +- crawl-ref/source/death-curse.cc | 26 +- crawl-ref/source/decks.cc | 7 +- crawl-ref/source/describe-god.cc | 8 +- crawl-ref/source/describe-spells.cc | 62 +- crawl-ref/source/describe-spells.h | 4 + crawl-ref/source/describe.cc | 122 +- crawl-ref/source/describe.h | 5 +- crawl-ref/source/dgn-overview.cc | 8 + crawl-ref/source/directn.cc | 3 +- crawl-ref/source/dungeon-feature-type.h | 2 + crawl-ref/source/dungeon.cc | 77 +- crawl-ref/source/duration-data.h | 14 +- crawl-ref/source/duration-type.h | 6 +- crawl-ref/source/enchant-type.h | 8 +- crawl-ref/source/english.cc | 2 +- crawl-ref/source/feature-data.h | 8 + crawl-ref/source/fight.cc | 4 +- crawl-ref/source/files.cc | 9 + crawl-ref/source/god-abil.cc | 76 +- crawl-ref/source/god-companions.cc | 2 +- crawl-ref/source/god-conduct.cc | 9 +- crawl-ref/source/god-passive.cc | 10 +- crawl-ref/source/god-passive.h | 4 +- crawl-ref/source/god-prayer.cc | 2 +- crawl-ref/source/god-wrath.cc | 34 +- crawl-ref/source/hints.cc | 2 +- crawl-ref/source/hiscores.cc | 2 +- crawl-ref/source/initfile.cc | 4 +- crawl-ref/source/invent.cc | 22 +- crawl-ref/source/item-name.cc | 16 +- crawl-ref/source/item-prop.cc | 7 + crawl-ref/source/items.cc | 3 + crawl-ref/source/kills.cc | 22 +- crawl-ref/source/kills.h | 2 +- crawl-ref/source/l-crawl.cc | 25 + crawl-ref/source/l-dgnlvl.cc | 9 + crawl-ref/source/l-moninf.cc | 7 + crawl-ref/source/l-you.cc | 32 +- crawl-ref/source/lev-pand.cc | 1 + crawl-ref/source/lookup-help-type.h | 1 + crawl-ref/source/lookup-help.cc | 24 + crawl-ref/source/main.cc | 5 +- crawl-ref/source/makeitem.cc | 202 +- crawl-ref/source/makeitem.h | 7 + crawl-ref/source/mapdef.cc | 77 +- crawl-ref/source/mapdef.h | 2 +- crawl-ref/source/melee-attack.cc | 62 +- crawl-ref/source/melee-attack.h | 4 +- crawl-ref/source/mgen-data.h | 9 + crawl-ref/source/mgen-enum.h | 6 +- crawl-ref/source/mon-abil.cc | 91 +- crawl-ref/source/mon-abil.h | 7 + crawl-ref/source/mon-act.cc | 20 +- crawl-ref/source/mon-behv.cc | 32 +- crawl-ref/source/mon-cast.cc | 192 +- crawl-ref/source/mon-cast.h | 2 +- crawl-ref/source/mon-death.cc | 63 +- crawl-ref/source/mon-ench.cc | 61 +- crawl-ref/source/mon-enum.h | 5 + crawl-ref/source/mon-flags.h | 3 + crawl-ref/source/mon-gear.cc | 15 +- crawl-ref/source/mon-info-flag-name.h | 4 + crawl-ref/source/mon-info.cc | 47 +- crawl-ref/source/mon-info.h | 6 + crawl-ref/source/mon-pick-data.h | 101 +- crawl-ref/source/mon-pick.cc | 1 + crawl-ref/source/mon-place.cc | 123 +- crawl-ref/source/mon-place.h | 11 +- crawl-ref/source/mon-poly.cc | 6 +- crawl-ref/source/mon-spell.h | 68 +- crawl-ref/source/mon-util.cc | 104 +- crawl-ref/source/mon-util.h | 5 +- crawl-ref/source/monster-type.h | 28 +- crawl-ref/source/monster.cc | 108 +- crawl-ref/source/monster.h | 11 +- crawl-ref/source/movement.cc | 52 +- crawl-ref/source/mutation-data.h | 59 +- crawl-ref/source/mutation-type.h | 7 +- crawl-ref/source/mutation.cc | 648 ++++-- crawl-ref/source/mutation.h | 18 +- crawl-ref/source/ng-setup.cc | 12 +- crawl-ref/source/options.h | 2 + crawl-ref/source/ouch.cc | 86 +- crawl-ref/source/output.cc | 195 +- crawl-ref/source/player-equip.cc | 41 +- crawl-ref/source/player-equip.h | 5 +- crawl-ref/source/player-reacts.cc | 81 +- crawl-ref/source/player.cc | 391 ++-- crawl-ref/source/player.h | 36 +- crawl-ref/source/potion.cc | 12 +- crawl-ref/source/ranged-attack.cc | 5 +- crawl-ref/source/religion.cc | 552 +++-- crawl-ref/source/religion.h | 9 +- .../monsters}/skeletons/skeleton_bat.png | Bin .../monsters}/skeletons/skeleton_bird.png | Bin .../monsters}/skeletons/skeleton_centaur.png | Bin .../monsters}/skeletons/skeleton_draconian.png | Bin .../monsters}/skeletons/skeleton_dragon.png | Bin .../monsters}/skeletons/skeleton_drake.png | Bin .../monsters}/skeletons/skeleton_fish.png | Bin .../monsters}/skeletons/skeleton_frog.png | Bin .../skeletons/skeleton_humanoid_large.png | Bin .../skeletons/skeleton_humanoid_medium.png | Bin .../skeletons/skeleton_humanoid_small.png | Bin .../monsters}/skeletons/skeleton_hydra1.png | Bin .../monsters}/skeletons/skeleton_hydra2.png | Bin .../monsters}/skeletons/skeleton_hydra3.png | Bin .../monsters}/skeletons/skeleton_hydra4.png | Bin .../monsters}/skeletons/skeleton_hydra5.png | Bin .../monsters}/skeletons/skeleton_juggernaut.png | Bin .../skeletons/skeleton_lernaean_hydra01.png | Bin .../skeletons/skeleton_lernaean_hydra02.png | Bin .../skeletons/skeleton_lernaean_hydra03.png | Bin .../skeletons/skeleton_lernaean_hydra04.png | Bin .../skeletons/skeleton_lernaean_hydra05.png | Bin .../skeletons/skeleton_lernaean_hydra06.png | Bin .../skeletons/skeleton_lernaean_hydra07.png | Bin .../skeletons/skeleton_lernaean_hydra08.png | Bin .../skeletons/skeleton_lernaean_hydra09.png | Bin .../skeletons/skeleton_lernaean_hydra10.png | Bin .../monsters}/skeletons/skeleton_lizard.png | Bin .../monsters}/skeletons/skeleton_naga.png | Bin .../skeletons/skeleton_quadruped_large.png | Bin .../skeletons/skeleton_quadruped_small.png | Bin .../skeletons/skeleton_quadruped_winged.png | Bin .../monsters}/skeletons/skeleton_snake.png | Bin .../monsters}/skeletons/skeleton_troll.png | Bin .../monsters}/skeletons/skeleton_turtle.png | Bin .../monsters}/skeletons/skeleton_ugly_thing.png | Bin .../monsters}/skeletons/skeleton_x.png | Bin crawl-ref/source/rltiles/dc-corpse.txt | 3 +- crawl-ref/source/rltiles/dc-feat.txt | 6 + crawl-ref/source/rltiles/dc-icons.txt | 4 + crawl-ref/source/rltiles/dc-item.txt | 81 + crawl-ref/source/rltiles/dc-misc.txt | 15 +- crawl-ref/source/rltiles/dc-mon.txt | 28 +- crawl-ref/source/rltiles/dc-player.txt | 2 +- crawl-ref/source/rltiles/dc-spells.txt | 10 +- crawl-ref/source/rltiles/dc-wall.txt | 18 + crawl-ref/source/rltiles/dc-zombie.txt | 58 +- .../dngn/statues/zot_entropy_orb_statue.png | Bin 0 -> 9517 bytes .../rltiles/dngn/statues/zot_fire_orb_statue.png | Bin 0 -> 10385 bytes .../rltiles/dngn/statues/zot_winter_orb_statue.png | Bin 0 -> 9349 bytes .../source/rltiles/dngn/vaults/bottled_spirits.png | Bin 0 -> 8235 bytes .../source/rltiles/dngn/wall/zot_stone_last00.png | Bin 0 -> 2507 bytes .../source/rltiles/dngn/wall/zot_stone_last01.png | Bin 0 -> 2489 bytes .../source/rltiles/dngn/wall/zot_stone_last02.png | Bin 0 -> 2526 bytes .../source/rltiles/dngn/wall/zot_stone_last03.png | Bin 0 -> 2492 bytes .../source/rltiles/dngn/wall/zot_stone_last04.png | Bin 0 -> 2521 bytes .../source/rltiles/dngn/wall/zot_stone_last05.png | Bin 0 -> 2605 bytes .../source/rltiles/dngn/wall/zot_stone_last06.png | Bin 0 -> 2430 bytes .../source/rltiles/dngn/wall/zot_stone_last07.png | Bin 0 -> 2406 bytes .../source/rltiles/dngn/wall/zot_stone_last08.png | Bin 0 -> 2430 bytes .../source/rltiles/dngn/wall/zot_stone_last09.png | Bin 0 -> 2493 bytes .../source/rltiles/dngn/wall/zot_stone_last10.png | Bin 0 -> 2348 bytes .../source/rltiles/dngn/wall/zot_stone_last11.png | Bin 0 -> 2363 bytes crawl-ref/source/rltiles/effect/contam0.png | Bin 0 -> 1832 bytes crawl-ref/source/rltiles/effect/contam1.png | Bin 0 -> 2023 bytes crawl-ref/source/rltiles/effect/contam2.png | Bin 0 -> 1955 bytes crawl-ref/source/rltiles/effect/contam3.png | Bin 0 -> 1908 bytes crawl-ref/source/rltiles/effect/doom_bolt0.png | Bin 0 -> 3011 bytes crawl-ref/source/rltiles/effect/doom_bolt1.png | Bin 0 -> 2977 bytes crawl-ref/source/rltiles/effect/gloom0.png | Bin 0 -> 2275 bytes crawl-ref/source/rltiles/effect/gloom1.png | Bin 0 -> 2449 bytes .../effect/{doom_howl.png => oblivion_howl.png} | Bin crawl-ref/source/rltiles/effect/ostracise.png | Bin 0 -> 7532 bytes .../rltiles/gui/spells/monster/acid_ball.png | Bin 0 -> 9066 bytes ...ystallizing_shot.png => crystallising_shot.png} | Bin .../rltiles/gui/spells/monster/doom_bolt.png | Bin 0 -> 1500 bytes .../source/rltiles/gui/spells/monster/ill_omen.png | Bin 0 -> 1170 bytes .../rltiles/gui/spells/monster/mutagenic_gaze.png | Bin 0 -> 1311 bytes .../monster/{doom_howl.png => oblivion_howl.png} | Bin .../rltiles/gui/spells/monster/ostracise.png | Bin 0 -> 7846 bytes .../rltiles/gui/spells/monster/warp_body.png | Bin 0 -> 7163 bytes .../item/parchment/base_parchment_high_level.png | Bin 0 -> 1208 bytes .../item/parchment/base_parchment_low_level.png | Bin 0 -> 1174 bytes .../item/parchment/base_parchment_mid_level.png | Bin 0 -> 1125 bytes .../item/parchment/parchment_multi_left_air.png | Bin 0 -> 722 bytes .../parchment/parchment_multi_left_air_high.png | Bin 0 -> 790 bytes .../item/parchment/parchment_multi_left_alch.png | Bin 0 -> 729 bytes .../parchment/parchment_multi_left_alch_high.png | Bin 0 -> 851 bytes .../item/parchment/parchment_multi_left_conj.png | Bin 0 -> 730 bytes .../parchment/parchment_multi_left_conj_high.png | Bin 0 -> 793 bytes .../item/parchment/parchment_multi_left_earth.png | Bin 0 -> 740 bytes .../parchment/parchment_multi_left_earth_high.png | Bin 0 -> 850 bytes .../item/parchment/parchment_multi_left_fire.png | Bin 0 -> 774 bytes .../parchment/parchment_multi_left_fire_high.png | Bin 0 -> 880 bytes .../item/parchment/parchment_multi_left_forge.png | Bin 0 -> 741 bytes .../parchment/parchment_multi_left_forge_high.png | Bin 0 -> 864 bytes .../item/parchment/parchment_multi_left_hexes.png | Bin 0 -> 730 bytes .../parchment/parchment_multi_left_hexes_high.png | Bin 0 -> 809 bytes .../item/parchment/parchment_multi_left_ice.png | Bin 0 -> 729 bytes .../parchment/parchment_multi_left_ice_high.png | Bin 0 -> 816 bytes .../item/parchment/parchment_multi_left_necro.png | Bin 0 -> 714 bytes .../parchment/parchment_multi_left_necro_high.png | Bin 0 -> 807 bytes .../item/parchment/parchment_multi_left_summ.png | Bin 0 -> 730 bytes .../parchment/parchment_multi_left_summ_high.png | Bin 0 -> 845 bytes .../item/parchment/parchment_multi_left_tloc.png | Bin 0 -> 753 bytes .../parchment/parchment_multi_left_tloc_high.png | Bin 0 -> 835 bytes .../item/parchment/parchment_multi_right_air.png | Bin 0 -> 709 bytes .../parchment/parchment_multi_right_air_high.png | Bin 0 -> 781 bytes .../item/parchment/parchment_multi_right_alch.png | Bin 0 -> 767 bytes .../parchment/parchment_multi_right_alch_high.png | Bin 0 -> 867 bytes .../item/parchment/parchment_multi_right_conj.png | Bin 0 -> 728 bytes .../parchment/parchment_multi_right_conj_high.png | Bin 0 -> 801 bytes .../item/parchment/parchment_multi_right_earth.png | Bin 0 -> 783 bytes .../parchment/parchment_multi_right_earth_high.png | Bin 0 -> 870 bytes .../item/parchment/parchment_multi_right_fire.png | Bin 0 -> 785 bytes .../parchment/parchment_multi_right_fire_high.png | Bin 0 -> 871 bytes .../item/parchment/parchment_multi_right_forge.png | Bin 0 -> 751 bytes .../parchment/parchment_multi_right_forge_high.png | Bin 0 -> 834 bytes .../item/parchment/parchment_multi_right_hexes.png | Bin 0 -> 747 bytes .../parchment/parchment_multi_right_hexes_high.png | Bin 0 -> 831 bytes .../item/parchment/parchment_multi_right_ice.png | Bin 0 -> 757 bytes .../parchment/parchment_multi_right_ice_high.png | Bin 0 -> 851 bytes .../item/parchment/parchment_multi_right_necro.png | Bin 0 -> 733 bytes .../parchment/parchment_multi_right_necro_high.png | Bin 0 -> 837 bytes .../item/parchment/parchment_multi_right_summ.png | Bin 0 -> 739 bytes .../parchment/parchment_multi_right_summ_high.png | Bin 0 -> 854 bytes .../item/parchment/parchment_multi_right_tloc.png | Bin 0 -> 755 bytes .../parchment/parchment_multi_right_tloc_high.png | Bin 0 -> 845 bytes .../item/parchment/parchment_single_air.png | Bin 0 -> 815 bytes .../item/parchment/parchment_single_air_high.png | Bin 0 -> 916 bytes .../item/parchment/parchment_single_alch.png | Bin 0 -> 853 bytes .../item/parchment/parchment_single_alch_high.png | Bin 0 -> 986 bytes .../item/parchment/parchment_single_conj.png | Bin 0 -> 822 bytes .../item/parchment/parchment_single_conj_high.png | Bin 0 -> 923 bytes .../item/parchment/parchment_single_earth.png | Bin 0 -> 875 bytes .../item/parchment/parchment_single_earth_high.png | Bin 0 -> 1002 bytes .../item/parchment/parchment_single_fire.png | Bin 0 -> 889 bytes .../item/parchment/parchment_single_fire_high.png | Bin 0 -> 1015 bytes .../item/parchment/parchment_single_forge.png | Bin 0 -> 848 bytes .../item/parchment/parchment_single_forge_high.png | Bin 0 -> 989 bytes .../item/parchment/parchment_single_hexes.png | Bin 0 -> 840 bytes .../item/parchment/parchment_single_hexes_high.png | Bin 0 -> 950 bytes .../item/parchment/parchment_single_ice.png | Bin 0 -> 857 bytes .../item/parchment/parchment_single_ice_high.png | Bin 0 -> 948 bytes .../item/parchment/parchment_single_necro.png | Bin 0 -> 828 bytes .../item/parchment/parchment_single_necro_high.png | Bin 0 -> 951 bytes .../item/parchment/parchment_single_summ.png | Bin 0 -> 831 bytes .../item/parchment/parchment_single_summ_high.png | Bin 0 -> 979 bytes .../item/parchment/parchment_single_tloc.png | Bin 0 -> 858 bytes .../item/parchment/parchment_single_tloc_high.png | Bin 0 -> 977 bytes ...rand_doom_knight.png => urand_dread_knight.png} | Bin .../item/weapon/artefact/urand_storm_bow.png | Bin 625 -> 6626 bytes crawl-ref/source/rltiles/misc/icons/dim.png | Bin 0 -> 7579 bytes crawl-ref/source/rltiles/misc/icons/figment.png | Bin 0 -> 11989 bytes crawl-ref/source/rltiles/misc/icons/paradox.png | Bin 0 -> 5903 bytes crawl-ref/source/rltiles/misc/icons/warding.png | Bin 0 -> 703 bytes .../mon/aberrations/screaming_refraction.png | Bin 0 -> 8602 bytes .../animals/{doom_hound.png => oblivion_hound.png} | Bin crawl-ref/source/rltiles/mon/animals/raven.png | Bin 0 -> 7082 bytes crawl-ref/source/rltiles/mon/demons/cacodemon.png | Bin 1493 -> 2241 bytes crawl-ref/source/rltiles/mon/demons/drude.png | Bin 0 -> 7942 bytes crawl-ref/source/rltiles/mon/demons/quasit.png | Bin 822 -> 0 bytes crawl-ref/source/rltiles/mon/demons/zykzyl.png | Bin 0 -> 2106 bytes .../rltiles/mon/nonliving/orb_of_entropy.png | Bin 0 -> 970 bytes .../source/rltiles/mon/nonliving/orb_of_winter.png | Bin 0 -> 1960 bytes .../rltiles/mon/statues/planar_tesseract0.png | Bin 0 -> 3810 bytes .../rltiles/mon/statues/planar_tesseract1.png | Bin 0 -> 3769 bytes .../rltiles/mon/statues/planar_tesseract2.png | Bin 0 -> 3611 bytes .../rltiles/mon/statues/planar_tesseract3.png | Bin 0 -> 3855 bytes .../rltiles/mon/statues/planar_tesseract4.png | Bin 0 -> 3993 bytes .../rltiles/mon/statues/planar_tesseract5.png | Bin 0 -> 3952 bytes .../rltiles/mon/undead/draugr/draugr_bat.png | Bin 0 -> 968 bytes .../rltiles/mon/undead/draugr/draugr_bird.png | Bin 0 -> 1322 bytes .../rltiles/mon/undead/draugr/draugr_centaur.png | Bin 0 -> 1352 bytes .../rltiles/mon/undead/draugr/draugr_draconian.png | Bin 0 -> 1292 bytes .../rltiles/mon/undead/draugr/draugr_dragon.png | Bin 0 -> 1411 bytes .../rltiles/mon/undead/draugr/draugr_drake.png | Bin 0 -> 1175 bytes .../rltiles/mon/undead/draugr/draugr_fish.png | Bin 0 -> 1294 bytes .../rltiles/mon/undead/draugr/draugr_frog.png | Bin 0 -> 1518 bytes .../mon/undead/draugr/draugr_humanoid_large.png | Bin 0 -> 1207 bytes .../mon/undead/draugr/draugr_humanoid_medium.png | Bin 0 -> 1062 bytes .../mon/undead/draugr/draugr_humanoid_small.png | Bin 0 -> 1090 bytes .../rltiles/mon/undead/draugr/draugr_hydra1.png | Bin 0 -> 1236 bytes .../rltiles/mon/undead/draugr/draugr_hydra2.png | Bin 0 -> 1244 bytes .../rltiles/mon/undead/draugr/draugr_hydra3.png | Bin 0 -> 1248 bytes .../rltiles/mon/undead/draugr/draugr_hydra4.png | Bin 0 -> 1238 bytes .../rltiles/mon/undead/draugr/draugr_hydra5.png | Bin 0 -> 1210 bytes .../mon/undead/draugr/draugr_juggernaut.png | Bin 0 -> 1222 bytes .../rltiles/mon/undead/draugr/draugr_lizard.png | Bin 0 -> 1179 bytes .../rltiles/mon/undead/draugr/draugr_naga.png | Bin 0 -> 1225 bytes .../mon/undead/draugr/draugr_quadruped_large.png | Bin 0 -> 1155 bytes .../mon/undead/draugr/draugr_quadruped_small.png | Bin 0 -> 1086 bytes .../mon/undead/draugr/draugr_quadruped_winged.png | Bin 0 -> 1411 bytes .../rltiles/mon/undead/draugr/draugr_snake.png | Bin 0 -> 1278 bytes .../rltiles/mon/undead/draugr/draugr_troll.png | Bin 0 -> 1129 bytes .../rltiles/mon/undead/draugr/draugr_turtle.png | Bin 0 -> 1278 bytes .../mon/undead/draugr/draugr_ugly_thing.png | Bin 0 -> 1333 bytes .../source/rltiles/mon/undead/draugr/draugr_x.png | Bin 0 -> 1291 bytes .../rltiles/mon/undead/draugr/draugur_dragon.png | Bin 0 -> 1401 bytes .../artefact/{doom_knight.png => dread_knight.png} | Bin crawl-ref/source/sacrifice-data.h | 8 +- crawl-ref/source/shopping.cc | 66 +- crawl-ref/source/shout.cc | 2 + crawl-ref/source/showsymb.cc | 2 +- crawl-ref/source/skills.cc | 11 +- crawl-ref/source/skills.h | 4 +- crawl-ref/source/species.cc | 4 +- crawl-ref/source/spell-type.h | 13 +- crawl-ref/source/spl-book.cc | 8 + crawl-ref/source/spl-cast.cc | 50 +- crawl-ref/source/spl-cast.h | 2 + crawl-ref/source/spl-damage.cc | 164 +- crawl-ref/source/spl-damage.h | 6 +- crawl-ref/source/spl-data.h | 114 +- crawl-ref/source/spl-goditem.cc | 11 +- crawl-ref/source/spl-goditem.h | 6 +- crawl-ref/source/spl-miscast.cc | 4 +- crawl-ref/source/spl-monench.cc | 189 +- crawl-ref/source/spl-monench.h | 4 + crawl-ref/source/spl-summoning.cc | 28 +- crawl-ref/source/spl-summoning.h | 6 +- crawl-ref/source/spl-transloc.cc | 32 +- crawl-ref/source/spl-util.cc | 34 +- crawl-ref/source/spl-zap.cc | 24 +- crawl-ref/source/spl-zap.h | 3 - crawl-ref/source/stairs.cc | 4 +- crawl-ref/source/startup.cc | 5 +- crawl-ref/source/stash.cc | 4 + crawl-ref/source/status.cc | 83 +- crawl-ref/source/status.h | 4 +- crawl-ref/source/tag-version.h | 4 + crawl-ref/source/tags.cc | 59 +- crawl-ref/source/target.cc | 3 + crawl-ref/source/terrain.cc | 3 +- crawl-ref/source/test/mutation.lua | 19 +- crawl-ref/source/test/stress/qw.rc | 4 +- crawl-ref/source/tilecell.cc | 3 +- crawl-ref/source/tiledgnbuf.cc | 14 + crawl-ref/source/tilemcache.cc | 71 +- crawl-ref/source/tilepick.cc | 188 +- crawl-ref/source/tilepick.h | 4 + crawl-ref/source/tilereg-grid.cc | 1 + crawl-ref/source/tilereg-grid.h | 1 + crawl-ref/source/tilereg-inv.cc | 9 + crawl-ref/source/tileweb.cc | 23 + crawl-ref/source/tileweb.h | 3 + crawl-ref/source/timed-effect-type.h | 1 + crawl-ref/source/timed-effects.cc | 204 +- crawl-ref/source/transform.cc | 2 +- crawl-ref/source/traps.cc | 2 +- crawl-ref/source/util/art-data.pl | 5 +- crawl-ref/source/util/mon-gen/header.txt | 2 - crawl-ref/source/util/monster/monster-main.cc | 3 + crawl-ref/source/view.cc | 4 +- .../webserver/game_data/static/cell_renderer.js | 10 + .../source/webserver/game_data/static/player.js | 66 +- .../source/webserver/game_data/static/style.css | 13 + .../source/webserver/game_data/templates/game.html | 2 + crawl-ref/source/wiz-you.cc | 13 +- crawl-ref/source/xom.cc | 183 +- crawl-ref/source/xom.h | 1 + crawl-ref/source/zap-data.h | 289 +-- crawl-ref/source/zap-type.h | 7 +- 502 files changed, 8152 insertions(+), 4483 deletions(-) create mode 100644 crawl-ref/source/bane-data.h create mode 100644 crawl-ref/source/bane-type.h create mode 100644 crawl-ref/source/dat/mons/boundless-tesseract.yaml rename crawl-ref/source/dat/mons/{skeleton.yaml => draugr.yaml} (72%) create mode 100644 crawl-ref/source/dat/mons/drude.yaml rename crawl-ref/source/dat/mons/{doom-hound.yaml => oblivion-hound.yaml} (86%) create mode 100644 crawl-ref/source/dat/mons/orb-of-entropy.yaml create mode 100644 crawl-ref/source/dat/mons/orb-of-winter.yaml create mode 100644 crawl-ref/source/dat/mons/raven.yaml create mode 100644 crawl-ref/source/dat/mons/screaming-refraction.yaml create mode 100644 crawl-ref/source/dat/mons/zykzyl.yaml rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_bat.png (100%) mode change 100755 => 100644 rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_bird.png (100%) mode change 100755 => 100644 rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_centaur.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_draconian.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_dragon.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_drake.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_fish.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_frog.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_humanoid_large.png (100%) mode change 100755 => 100644 rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_humanoid_medium.png (100%) mode change 100755 => 100644 rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_humanoid_small.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_hydra1.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_hydra2.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_hydra3.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_hydra4.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_hydra5.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_juggernaut.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra01.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra02.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra03.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra04.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra05.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra06.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra07.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra08.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra09.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lernaean_hydra10.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_lizard.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_naga.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_quadruped_large.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_quadruped_small.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_quadruped_winged.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_snake.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_troll.png (100%) mode change 100755 => 100644 rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_turtle.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_ugly_thing.png (100%) rename crawl-ref/source/rltiles/{mon/undead => UNUSED/monsters}/skeletons/skeleton_x.png (100%) create mode 100644 crawl-ref/source/rltiles/dngn/statues/zot_entropy_orb_statue.png create mode 100644 crawl-ref/source/rltiles/dngn/statues/zot_fire_orb_statue.png create mode 100644 crawl-ref/source/rltiles/dngn/statues/zot_winter_orb_statue.png create mode 100644 crawl-ref/source/rltiles/dngn/vaults/bottled_spirits.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last00.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last01.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last02.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last03.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last04.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last05.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last06.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last07.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last08.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last09.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last10.png create mode 100644 crawl-ref/source/rltiles/dngn/wall/zot_stone_last11.png create mode 100644 crawl-ref/source/rltiles/effect/contam0.png create mode 100644 crawl-ref/source/rltiles/effect/contam1.png create mode 100644 crawl-ref/source/rltiles/effect/contam2.png create mode 100644 crawl-ref/source/rltiles/effect/contam3.png create mode 100644 crawl-ref/source/rltiles/effect/doom_bolt0.png create mode 100644 crawl-ref/source/rltiles/effect/doom_bolt1.png create mode 100644 crawl-ref/source/rltiles/effect/gloom0.png create mode 100644 crawl-ref/source/rltiles/effect/gloom1.png rename crawl-ref/source/rltiles/effect/{doom_howl.png => oblivion_howl.png} (100%) create mode 100644 crawl-ref/source/rltiles/effect/ostracise.png create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/acid_ball.png rename crawl-ref/source/rltiles/gui/spells/monster/{crystallizing_shot.png => crystallising_shot.png} (100%) create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/doom_bolt.png create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/ill_omen.png create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/mutagenic_gaze.png rename crawl-ref/source/rltiles/gui/spells/monster/{doom_howl.png => oblivion_howl.png} (100%) create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/ostracise.png create mode 100644 crawl-ref/source/rltiles/gui/spells/monster/warp_body.png create mode 100644 crawl-ref/source/rltiles/item/parchment/base_parchment_high_level.png create mode 100644 crawl-ref/source/rltiles/item/parchment/base_parchment_low_level.png create mode 100644 crawl-ref/source/rltiles/item/parchment/base_parchment_mid_level.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_air.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_air_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_alch.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_alch_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_conj.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_conj_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_earth.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_earth_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_fire.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_fire_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_forge.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_forge_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_hexes.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_hexes_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_ice.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_ice_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_necro.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_necro_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_summ.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_summ_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_tloc.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_left_tloc_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_air.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_air_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_alch.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_alch_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_conj.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_conj_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_earth.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_earth_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_fire.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_fire_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_forge.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_forge_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_hexes.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_hexes_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_ice.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_ice_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_necro.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_necro_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_summ.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_summ_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_tloc.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_multi_right_tloc_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_air.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_air_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_alch.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_alch_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_conj.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_conj_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_earth.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_earth_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_fire.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_fire_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_forge.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_forge_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_hexes.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_hexes_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_ice.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_ice_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_necro.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_necro_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_summ.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_summ_high.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_tloc.png create mode 100644 crawl-ref/source/rltiles/item/parchment/parchment_single_tloc_high.png rename crawl-ref/source/rltiles/item/weapon/artefact/{urand_doom_knight.png => urand_dread_knight.png} (100%) create mode 100644 crawl-ref/source/rltiles/misc/icons/dim.png create mode 100644 crawl-ref/source/rltiles/misc/icons/figment.png create mode 100644 crawl-ref/source/rltiles/misc/icons/paradox.png create mode 100644 crawl-ref/source/rltiles/misc/icons/warding.png create mode 100644 crawl-ref/source/rltiles/mon/aberrations/screaming_refraction.png rename crawl-ref/source/rltiles/mon/animals/{doom_hound.png => oblivion_hound.png} (100%) create mode 100644 crawl-ref/source/rltiles/mon/animals/raven.png create mode 100644 crawl-ref/source/rltiles/mon/demons/drude.png delete mode 100755 crawl-ref/source/rltiles/mon/demons/quasit.png create mode 100644 crawl-ref/source/rltiles/mon/demons/zykzyl.png create mode 100644 crawl-ref/source/rltiles/mon/nonliving/orb_of_entropy.png create mode 100644 crawl-ref/source/rltiles/mon/nonliving/orb_of_winter.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract0.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract1.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract2.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract3.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract4.png create mode 100644 crawl-ref/source/rltiles/mon/statues/planar_tesseract5.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_bat.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_bird.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_centaur.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_draconian.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_dragon.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_drake.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_fish.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_frog.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_humanoid_large.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_humanoid_medium.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_humanoid_small.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_hydra1.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_hydra2.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_hydra3.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_hydra4.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_hydra5.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_juggernaut.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_lizard.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_naga.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_quadruped_large.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_quadruped_small.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_quadruped_winged.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_snake.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_troll.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_turtle.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_ugly_thing.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugr_x.png create mode 100644 crawl-ref/source/rltiles/mon/undead/draugr/draugur_dragon.png rename crawl-ref/source/rltiles/player/hand1/artefact/{doom_knight.png => dread_knight.png} (100%) diff --git a/crawl-ref/CREDITS.txt b/crawl-ref/CREDITS.txt index f7b390f268..275d293f00 100644 --- a/crawl-ref/CREDITS.txt +++ b/crawl-ref/CREDITS.txt @@ -289,6 +289,7 @@ mgdelmonte Midn8 mikee + MikeJHeg Nathan Mills Andrew Minton Mintice @@ -420,6 +421,7 @@ Jonathan Klabunde Tomer Tommy Sean VanMeter + Vaskritaya Mikko Vepsäläinen vla22 WanderingBlade @@ -432,6 +434,7 @@ Evan Williams Mara Williamson Jeremey Wilson + Nicholas Wilson wjchen ximxim Yelve Yakut diff --git a/crawl-ref/docs/crawl_manual.rst b/crawl-ref/docs/crawl_manual.rst index ba67a0996d..65ef639009 100644 --- a/crawl-ref/docs/crawl_manual.rst +++ b/crawl-ref/docs/crawl_manual.rst @@ -1160,11 +1160,10 @@ as a single mutation. Miscasting spells will cause magical contamination, which in turn can cause mutations if too much contamination is accrued at once. Certain powerful -magical effects or spells (such as 'Invisibility' and 'Irradiate') also cause -contamination as a side-effect even when successful. A single use of these -effects is safe on its own, but multiple uses in short succession, or usage with -existing contamination from other sources can cause dangerous levels of -contamination. +magical spells (such as 'Irradiate') also cause contamination as a side-effect +even when successful. A single use of these effects is safe on its own, but +multiple uses in short succession, or usage with existing contamination from +other sources can cause dangerous levels of contamination. Mutations from magical contamination are almost always harmful. Mutation... [truncated message content] |
From: <gi...@cr...> - 2025-07-07 03:25:15
|
via 46dcbc1f2cb31e27891ff3e5ecd9266e322ba4b5 (commit) from c8bdb538badbaf71d3890123ecc278e081c7b791 (commit) ----------------------------------------------------------------------- commit 46dcbc1f2cb31e27891ff3e5ecd9266e322ba4b5 Author: hellmonk <nld...@gm...> Date: Sun Jul 6 22:23:12 2025 -0500 felid deathless title ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/skills.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crawl-ref/source/skills.cc b/crawl-ref/source/skills.cc index a524f7aa47..b8b87ada6c 100644 --- a/crawl-ref/source/skills.cc +++ b/crawl-ref/source/skills.cc @@ -1947,6 +1947,10 @@ string special_conduct_title(skill_type best_skill, uint8_t skill_rank) return "True Ascetic"; } + // All rune deathless felid + if (you.species == SP_FELID && runes_in_pack() >= 15 && you.deaths == 0) + return "Incurious"; + // A harder version of the ruthless efficiency banner if (you.experience_level < 19 && player_has_orb()) return "Ruthless"; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 19:30:15
|
via 28cf5388aedcda4c99563730235705c2732b5050 (commit) via d700b1d6c5345f8a00b3763c2a97e54288124bc7 (commit) from e53ad14149bb2167b98a8b9eb8352e0618e7d08b (commit) ----------------------------------------------------------------------- commit 28cf5388aedcda4c99563730235705c2732b5050 Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 16:58:19 2025 -0230 Remove a stray debugging statement Leftover from 5232bdb. I'm honestly surprised no one ran into it in-game in the meantime (since it's actually visible if playing console). commit d700b1d6c5345f8a00b3763c2a97e54288124bc7 Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 16:57:38 2025 -0230 Fix Platinum Paragon targeter sometimes aiming at the player (Lici) If the first habitable space near the desired enemy happened to be where the player was already standing, it could aim it at you (which isn't actually a valid target for it). ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/directn.cc | 1 - crawl-ref/source/target.cc | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/crawl-ref/source/directn.cc b/crawl-ref/source/directn.cc index c883a6c5ad..cc7616244e 100644 --- a/crawl-ref/source/directn.cc +++ b/crawl-ref/source/directn.cc @@ -1298,7 +1298,6 @@ coord_def direction_chooser::find_default_monster_target() // pick an acceptable one in sight. if (pos.origin() && mode == TARG_HOSTILE_OR_EMPTY) { - fprintf(stderr, "A"); for (radius_iterator ri(you.pos(), LOS_NO_TRANS, true); ri; ++ri) if (hitfunc->valid_aim(*ri)) return *ri; diff --git a/crawl-ref/source/target.cc b/crawl-ref/source/target.cc index 1158203b31..e26e826085 100644 --- a/crawl-ref/source/target.cc +++ b/crawl-ref/source/target.cc @@ -2832,6 +2832,9 @@ bool targeter_paragon_deploy::valid_aim(coord_def a) if (!targeter_smite::valid_aim(a)) return false; + if (a == you.pos()) + return false; + if (!monster_habitable_grid(MONS_PLATINUM_PARAGON, a)) return notify_fail("Your paragon could not survive being deployed there."); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 17:50:14
|
via e53ad14149bb2167b98a8b9eb8352e0618e7d08b (commit) from 3d0e656495fc269fcb93d31380cffeec7ae2d8fb (commit) ----------------------------------------------------------------------- commit e53ad14149bb2167b98a8b9eb8352e0618e7d08b Author: David Lawrence Ramsey <poo...@gm...> Date: Sun Jul 6 12:47:38 2025 -0500 Update comment regarding Terence. Since he's no longer a mass murderer in hiding. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/mon-gear.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crawl-ref/source/mon-gear.cc b/crawl-ref/source/mon-gear.cc index a7e89aca29..9ba727ff2b 100644 --- a/crawl-ref/source/mon-gear.cc +++ b/crawl-ref/source/mon-gear.cc @@ -1341,7 +1341,8 @@ int make_mons_weapon(monster_type type, int level, bool melee_only) } break; - // As a violent thug, Throatcutter suits Terence perfectly. + // As someone who's learned the hard way that many have no honour in war, + // Throatcutter suits Terence perfectly. case MONS_TERENCE: if (one_chance_in(100) && !get_unique_item_status(UNRAND_THROATCUTTER)) { -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 16:10:16
|
via 3d0e656495fc269fcb93d31380cffeec7ae2d8fb (commit) from 4b37bdf94e06d792bdc44f1853d851601cfa8a6c (commit) ----------------------------------------------------------------------- commit 3d0e656495fc269fcb93d31380cffeec7ae2d8fb Author: Isaac Clancy <ik...@ya...> Date: Thu May 1 17:28:35 2025 +1200 Make diamond sawblades splatter more blood (GnomeSayin) Shredding enemies with sawblades feels like it should result in a lot of blood, which it wasn't producing before. I limited each sawblade to only spraying blood in a small area around its victims as its hard to tell where the blood is coming from otherwise. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/bloodspatter.cc | 5 +++-- crawl-ref/source/bloodspatter.h | 3 ++- crawl-ref/source/mon-cast.cc | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/crawl-ref/source/bloodspatter.cc b/crawl-ref/source/bloodspatter.cc index 8ec342afa6..ddd2c9379b 100644 --- a/crawl-ref/source/bloodspatter.cc +++ b/crawl-ref/source/bloodspatter.cc @@ -185,14 +185,15 @@ void bleed_onto_floor(const coord_def& where, monster_type montype, _maybe_bloodify_square(where, damage, spatter, from, old_blood); } -void blood_spray(const coord_def& origin, monster_type montype, int level) +void blood_spray(const coord_def& origin, monster_type montype, int level, + int max_ranged) { int tries = 0; for (int i = 0; i < level; ++i) { // Blood drops are small and light and suffer a lot of wind // resistance. - int range = random2(8) + 1; + int range = random2(max_ranged) + 1; while (tries < 5000) { diff --git a/crawl-ref/source/bloodspatter.h b/crawl-ref/source/bloodspatter.h index cb4fb86e92..8d9362c0c6 100644 --- a/crawl-ref/source/bloodspatter.h +++ b/crawl-ref/source/bloodspatter.h @@ -9,7 +9,8 @@ void bleed_onto_floor(const coord_def& where, monster_type mon, int damage, bool spatter = false, const coord_def& from = INVALID_COORD, const bool old_blood = false); -void blood_spray(const coord_def& where, monster_type mon, int level); +void blood_spray(const coord_def& where, monster_type mon, int level, + int max_ranged = 8); void generate_random_blood_spatter_on_level( const map_bitmask *susceptible_area = nullptr); void bleed_for_makhleb(const actor& actor); diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc index 98184ba435..6b1123314c 100644 --- a/crawl-ref/source/mon-cast.cc +++ b/crawl-ref/source/mon-cast.cc @@ -880,7 +880,8 @@ static const map<spell_type, mons_spell_logic> spell_to_logic = { if (final) { - bleed_onto_floor(victim->pos(), victim->type, final, true); + if (victim->has_blood()) + blood_spray(victim->pos(), victim->type, final / 5, 2); victim->hurt(&caster, final); } } -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 15:40:09
|
via 4b37bdf94e06d792bdc44f1853d851601cfa8a6c (commit) from 8edd070e86724b00a583848022aad86f348f92d9 (commit) ----------------------------------------------------------------------- commit 4b37bdf94e06d792bdc44f1853d851601cfa8a6c Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 13:06:40 2025 -0230 Fix a typo (staticshock) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/status.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawl-ref/source/status.cc b/crawl-ref/source/status.cc index 5c2a72f39a..3892b6480f 100644 --- a/crawl-ref/source/status.cc +++ b/crawl-ref/source/status.cc @@ -899,7 +899,7 @@ bool fill_status_info(int status, status_info& inf) if (bonus > 0) { inf.short_text = make_stringf("trickster (+%d AC)", bonus); - inf.long_text = make_stringf("You are bolsted by spread misfortune (+%d AC)", bonus); + inf.long_text = make_stringf("You are bolstered by spread misfortune (+%d AC)", bonus); } } break; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 11:30:18
|
via 8edd070e86724b00a583848022aad86f348f92d9 (commit) from 052753400fab83b1cc4c5e0389b35bc1393d0bb2 (commit) ----------------------------------------------------------------------- commit 8edd070e86724b00a583848022aad86f348f92d9 Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 08:59:15 2025 -0230 Don't crash on % screen with rF/rC less than -1 (Ogregutan) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/output.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index d44327aa63..ba4b3c72ad 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -2525,7 +2525,9 @@ static string _resist_composer(const char * name, int spacing, int value, const static int _pois_res[] = {150, 100, 33, 33, 0}; const static int _corr_res[] = {-1, 100, 50, -1, -1}; - ASSERT(value >= -1 && value <= 3); + if (value < -1) + value = -1; + ASSERT(value <= 3); switch (type) { case MR_RES_FIRE: -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 09:55:15
|
via 052753400fab83b1cc4c5e0389b35bc1393d0bb2 (commit) from ba080413bb799d23c810e48a6c588f1f501b8b3e (commit) ----------------------------------------------------------------------- commit 052753400fab83b1cc4c5e0389b35bc1393d0bb2 Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 07:19:38 2025 -0230 Don't consider all parchments identical on the shopping list (Ogregutan) Picking up any parchment would remove all other parchments from the shopping list, not just ones of the same spell. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/shopping.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index 6485691d36..a951f2150a 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -1975,9 +1975,12 @@ bool ShoppingList::cull_identical_items(const item_def& item, int cost) } // Don't prompt to remove known manuals when the new one is for a - // different skill. - if (item.is_type(OBJ_BOOKS, BOOK_MANUAL) && item.plus != list_item.plus) + // different skill, or parchment of different spells. + if ((item.is_type(OBJ_BOOKS, BOOK_MANUAL) || item.is_type(OBJ_BOOKS, BOOK_PARCHMENT)) + && item.plus != list_item.plus) + { continue; + } list_pair listed(list_item, thing_pos(thing)); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 06:05:12
|
via ba080413bb799d23c810e48a6c588f1f501b8b3e (commit) via a82abc1eca3b6b6c15f596868c1fb2965739d6b9 (commit) from 0ac7050e40a6ae80ed5edd1a00b4e94518cbd2e1 (commit) ----------------------------------------------------------------------- commit ba080413bb799d23c810e48a6c588f1f501b8b3e Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 03:30:28 2025 -0230 Fix %s screen showing the wrong resist values for rN (Planckenstein) commit a82abc1eca3b6b6c15f596868c1fb2965739d6b9 Author: DracoOmega <dra...@gm...> Date: Sun Jul 6 03:29:37 2025 -0230 Fix parchments being more expensive than intended (Darby) They were getting both the higher per-spell rate they were intended to have *and* the cost of being in a book of one spell (making them nearly twice as expensive as their apparent intention). ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/output.cc | 1 + crawl-ref/source/shopping.cc | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index 8b3633e0fc..d44327aa63 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -2535,6 +2535,7 @@ static string _resist_composer(const char * name, int spacing, int value, case MR_RES_NEG: res_percent = _neg_res[value + 1]; + break; case MR_RES_POISON: case MR_RES_ELEC: diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index 4458b0caa7..6485691d36 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -752,15 +752,18 @@ unsigned int item_value(item_def item, bool ident) valued = level * 27 + 27; } #if TAG_MAJOR_VERSION == 34 - if (book == BOOK_BUGGY_DESTRUCTION) + else if (book == BOOK_BUGGY_DESTRUCTION) break; #endif - int levels = 0; - const vector<spell_type> spells = spells_in_book(item); - for (spell_type spell : spells) - levels += spell_difficulty(spell); - // Level 9 spells are worth 4x level 1 spells. - valued += levels * 20 + spells.size() * 20; + else + { + int levels = 0; + const vector<spell_type> spells = spells_in_book(item); + for (spell_type spell : spells) + levels += spell_difficulty(spell); + // Level 9 spells are worth 4x level 1 spells. + valued += levels * 20 + spells.size() * 20; + } break; } -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 04:30:14
|
via 0ac7050e40a6ae80ed5edd1a00b4e94518cbd2e1 (commit) from 9245ba7e0e433b5e5f5e79ffaa30c7bc61542070 (commit) ----------------------------------------------------------------------- commit 0ac7050e40a6ae80ed5edd1a00b4e94518cbd2e1 Author: David Lawrence Ramsey <poo...@gm...> Date: Sat Jul 5 23:26:08 2025 -0500 Fix wording. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/descript/mutations.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawl-ref/source/dat/descript/mutations.txt b/crawl-ref/source/dat/descript/mutations.txt index ef681fec33..130474af21 100644 --- a/crawl-ref/source/dat/descript/mutations.txt +++ b/crawl-ref/source/dat/descript/mutations.txt @@ -183,7 +183,7 @@ lucky mutation You have an uncanny knack for uncovering hidden properties of items other people might ignore as mundane. Whenever you encounter a new item on the ground for the -first time, there is a very tiny chance to discover that is actually an +first time, there is a very tiny chance to discover that it is actually an artefact. Each level of this mutation increases that chance. %%%% # ------ Auxes ----- -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-06 04:15:16
|
via 9245ba7e0e433b5e5f5e79ffaa30c7bc61542070 (commit) from 58bce5c09a45991e93464d4546a5ad2346835fa5 (commit) ----------------------------------------------------------------------- commit 9245ba7e0e433b5e5f5e79ffaa30c7bc61542070 Author: regret-index <clo...@ho...> Date: Fri Jul 4 05:46:12 2025 -0230 Variant orb vault distribution A chunk of vault review accidentally not properly merged into eee5569. Unthemed Zot vaults using orbs of fire just freely use whatever orb Zot has that game, vaults with mostly just orbs of fire as threats only place when said orbs are available, and old fiery / cold / negative energy and acid vaults are each adjusted to have a chance of placing their orb only if that orb is available. Most notably, this removes some old arenasprint monsters trying to make its own vault monster variants of orbs of fire, and adds the new cold and negative energy orbs to the corresponding ziggurat floors to correspond to the current orb of fire set. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/defaults/misc.txt | 3 +- crawl-ref/source/dat/des/branches/hells.des | 9 +- crawl-ref/source/dat/des/branches/tar.des | 4 + crawl-ref/source/dat/des/branches/zot.des | 105 ++++++++++++++------- crawl-ref/source/dat/des/builder/shops.des | 2 +- crawl-ref/source/dat/des/sprint/arena_sprint.des | 31 +++--- crawl-ref/source/dat/des/sprint/pitsprint.des | 3 +- crawl-ref/source/dat/des/sprint/zigsprint.des | 2 +- crawl-ref/source/dat/des/variable/float.des | 35 ++++--- crawl-ref/source/dat/des/variable/large_themed.des | 10 +- .../source/dat/des/variable/mini_monsters.des | 2 +- crawl-ref/source/dat/des/variable/the_bubble.des | 4 +- crawl-ref/source/dat/descript/monsters.txt | 15 --- crawl-ref/source/dat/descript/zh/monsters.txt | 12 --- crawl-ref/source/dat/dlua/explorer.lua | 2 + crawl-ref/source/dat/dlua/ziggurat.lua | 5 +- 16 files changed, 146 insertions(+), 98 deletions(-) diff --git a/crawl-ref/source/dat/defaults/misc.txt b/crawl-ref/source/dat/defaults/misc.txt index 92eabae6ab..63034c74e2 100644 --- a/crawl-ref/source/dat/defaults/misc.txt +++ b/crawl-ref/source/dat/defaults/misc.txt @@ -12,7 +12,8 @@ note_items += acquirement, of Zot note_messages += Your scales start note_messages += protects you from harm note_messages += You (fall|are sucked) into a shaft -note_monsters += orb of fire, ancient lich, dread lich, Sigmund +note_monsters += orb of fire, orb of winter, orb of entropy +note_monsters += ancient lich, dread lich, Sigmund monster_item_view_features += stair, trap, runelight diff --git a/crawl-ref/source/dat/des/branches/hells.des b/crawl-ref/source/dat/des/branches/hells.des index a4b3053627..2ddc6a8c5d 100644 --- a/crawl-ref/source/dat/des/branches/hells.des +++ b/crawl-ref/source/dat/des/branches/hells.des @@ -94,10 +94,17 @@ SUBST: l = w, W = . : else -- Zot KMONS: 1 = shard shrike KMONS: 2 = seven-headed hydra simulacrum / eight-headed hydra simulacrum -KMONS: 3 = orb of fire / hellephant w:5 +KMONS: 3 = hellephant KMONS: 4 = draconian scorcher KMONS: 5 = red draconian ; cloak . mace ego:freezing pre_id KMONS: 6 = white draconian ; cloak . mace ego:flaming pre_id +KMONS: ? = orb of fire +KMONS: ! = orb of winter +: if dgn.zot_orb_type() == "orb of fire" then +SUBST: 3 = 3?? +: elseif dgn.zot_orb_type() == "orb of winter" then +SUBST: 1 = 1!! +: end KFEAT: 1 = w KFEAT: 3 = l NSUBST: 0 = 1:5 / 1:6 diff --git a/crawl-ref/source/dat/des/branches/tar.des b/crawl-ref/source/dat/des/branches/tar.des index 53b9891ffd..49349348d6 100644 --- a/crawl-ref/source/dat/des/branches/tar.des +++ b/crawl-ref/source/dat/des/branches/tar.des @@ -195,6 +195,10 @@ KMONS: 7 = death cob w:12 / zombie w:4 / base draconian draugr w:4 KMONS: 8 = patrolling death cob KMONS: ABCD = shadow dragon KMONS: EF = death drake +KMONS: & = orb of entropy +: if dgn.zot_orb_type() == "orb of entropy" then +SUBST: 34 = & +: end : end KMONS: 0 = soul eater KMONS: Z = obsidian statue diff --git a/crawl-ref/source/dat/des/branches/zot.des b/crawl-ref/source/dat/des/branches/zot.des index 06047eb5d3..c820aad322 100644 --- a/crawl-ref/source/dat/des/branches/zot.des +++ b/crawl-ref/source/dat/des/branches/zot.des @@ -2451,7 +2451,7 @@ NAME: lemuel_lich_library TAGS: no_monster_gen no_descent DEPTH: Zot, !Zot:$ MONS: laughing skull, lich, ancient lich / dread lich, necromancer -MONS: vampire mage, black draconian draugr +MONS: vampire mage, black draconian draugr, orb of entropy ITEM: any book mimic:10 w:20 / any scroll mimic:10 KFEAT: ^ = archmage's trap SUBST: x : xvv, w : w?, G : Gg @@ -2459,6 +2459,9 @@ NSUBST: ? = 14 = 111. / *:. SUBST: 4 = 4 5:3 .:3, ^ : ^.. TILE: G = dngn_statue_depths_zot_lich / dngn_statue_zot_old_guardian TILE: c = wall_studio +: if dgn.zot_orb_type() == "orb of fire" then +NSUBST: 3 = 1:37 / *:7 +: end : vault_metal_statue_setup(_G, "g", "soul conduit") MAP wwwwwwwwwwwwwwwwwwwwwww @@ -2474,7 +2477,7 @@ wwxxcxxxxxx+xxxxxxx+xww wwxcxcxxxc..xxxxxx$$xww wwxdddxxxxx.x...xx$$xww wwx.3.xxxc..+.G.xxxxxww -wwx...xxxxx.x...xxxxxww +wwx.>.xxxxx.x...xxxxxww wwx...xxxc..xxxxxxxxxww wwxx+xxxxxx.xxcdddddxww wwxx.xcxxc..xxcd232dxww @@ -2488,23 +2491,34 @@ wwwwwwwwwwwwwwwwwwwwwww ENDMAP ########################### -# Lake of fire +# Lake of fire (...or ice!) # -NAME: lemuel_lake_of_fire -DEPTH: Zot -SUBST: * =*l -KMONS: * = orb of fire -KFEAT: * = l -SUBST: .=.l -MAP - ..ll.. -..llll.. -.llllll. -.ll**ll. -.ll**ll. -.llllll. -..llll.. - ..ll.. +NAME: lemuel_lake_of_fire +TAGS: no_pool_fixup +DEPTH: Zot +WEIGHT: 12 +KMONS: 1 = orb of fire +KMONS: 2 = orb of winter +KMONS: P = block of ice +KFEAT: 1 = l +KFEAT: 2P = w +: if dgn.zot_orb_type() == "orb of fire" then +SUBST: * = 1l, ~ = l, . = .l +: elseif dgn.zot_orb_type() == "orb of winter" then +SUBST: * = 2P, ~ = w, . = .w +: end +veto {{ + return dgn.zot_orb_type() == "orb of entropy" +}} +MAP + ..~~.. +..~~~~.. +.~~~~~~. +.~~**~~. +.~~**~~. +.~~~~~~. +..~~~~.. + ..~~.. ENDMAP ########################### @@ -2568,11 +2582,16 @@ NAME: lemuel_acid_trip DEPTH: Zot, !Zot:$ ORIENT: centre MONS: oklob plant, acid blob, jelly, yellow draconian -MONS: any nonbase yellow draconian +MONS: any nonbase yellow draconian, orb of entropy KFEAT: ^ = devourer's trap SUBST: 1 = 1:2 . SUBST: . = .:20 3:3 2:1 SUBST: } = }:80 >, ) = ):80 >, ] = ]:80 > +# If orbs of entropy are available, have a chance to place one and also +# reduce the total monster count to somewhat balance this out. +: if dgn.zot_orb_type() == "orb of entropy" and crawl.coinflip() then +NSUBST: 2 = 1:6 / 2:. / *:2, 4 = 2:. / *:4, 5 = 1:. / *:5 +: end MAP xx++xx xxx....xxx @@ -2603,10 +2622,13 @@ DEPTH: Zot, !Zot:$ ORIENT: centre MONS: orb of fire, fire elemental MONS: red draconian, any nonbase red draconian -MONS: efreet -SUBST: 1=122, 3=322 -SUBST: 4 = 2:20 4:5 3:15 .:20 -SUBST: G : G. +MONS: efreet, sun moth +: if dgn.zot_orb_type() == "orb of fire" then +SUBST: 1 = 122, 6 = . +: else +NSUBST: 16 = 2:6 / * = 662 +: end +SUBST: 3=322, 4 = 2:20 4:5 3:15 .:20, G : G. TILE: c = wall_stone_scorched : vault_metal_statue_setup(_G, "G", "fiery conduit") MAP @@ -2624,8 +2646,8 @@ llll...x.2cc+cc2.x...llll llll..Gx.cc444cc.xG..llll llll...x.c44444c.x...llll llll..x.c44F44c.x..llll - llll..x.c44444c.x..llll - llll.x.cc444cc.x.llll + llll..x6c44444c6x..llll + llll.x6cc444cc6x.llll llll.x.1c...c1.x.llll llllxxxc+++cxxxllll llll333...333llll @@ -2682,6 +2704,7 @@ ENDMAP NAME: nrook_zot_tub TAGS: no_monster_gen DEPTH: Zot +WEIGHT: 25 KMONS: M = patrolling red draconian att:neutral / \ patrolling nonbase red draconian att:neutral KMONS: F = orb of fire att:neutral @@ -2690,6 +2713,9 @@ MARKER: X = lua:fog_machine { cloud_type="steam", \ pow_min = 2, pow_max = 10, delay = 25, \ size = 2, walk_dist = 3, spread_rate= 10 } : vault_metal_statue_setup(_G, "g", "enigmatic dynamo") +veto {{ + return dgn.zot_orb_type() ~= "orb of fire" +}} MAP @ xxxxx+xxxxx @@ -3488,7 +3514,7 @@ MONS: titan / lich / deep elf annihilator w:3 / deep elf high priest w:4 / \ deep elf sorcerer w:3 / glowing orange brain w:3 MONS: nonbase draconian w:20 / protean progenitor / killer klown / \ death cob / curse toe w:5 / ancient lich / dread lich / \ - electric golem / orb of fire w:5 + electric golem / orb of appropriateness w:5 KFEAT: V = v SHUFFLE: EF SUBST: E : . @@ -3594,7 +3620,7 @@ MONS: fire dragon w:35 / ice dragon w:35 / shadow dragon w:25 / \ storm dragon w:50 / wyrmhole w:15 / golden dragon w:35 MONS: Killer Klown / electric golem w:5 / \ curse toe w:5 / protean progenitor w:5 -MONS: orb of fire +MONS: orb of appropriateness SUBST: 2 = 222., 5 = 55. SUBST: } = }:80 >, ] = ]:80 >, ) = ):80 > MAP @@ -4069,7 +4095,7 @@ KMONS: 67 = protean progenitor KMONS: 89 = killer klown KMONS: AB = curse toe KMONS: CD = electric golem -KMONS: E = orb of fire +KMONS: E = orb of appropriateness KMONS: F = ancient lich / dread lich KMONS: ! = base draconian w:30 ; cloak . great sword good_item | \ battleaxe good_item | bardiche good_item | great mace good_item / \ @@ -4276,11 +4302,15 @@ ENDMAP NAME: hellmonk_greenhouse_of_terror TAGS: no_monster_gen no_descent +WEIGHT: 25 DEPTH: Zot:2-, !Zot:$ MONS: orb of fire, bush NSUBST: . = 1:1 / . SUBST: > = )}], < = ({[ : decorative_floor(_G, 'p', "garden patch") +veto {{ + return dgn.zot_orb_type() ~= "orb of fire" +}} MAP ttttt t.>.t @@ -4402,7 +4432,7 @@ ORIENT: south DEPTH: Zot, !Zot:$ MONS: 0 band MONS: red draconian / will-o-the-wisp w:2 -MONS: red draconian scorcher, orb of fire / golden dragon +MONS: red draconian scorcher, golden dragon MONS: white draconian / blizzard demon w:2 MONS: white draconian knight, golden dragon KMONS: 8 = black draconian / spark wasp w:2 @@ -4417,6 +4447,9 @@ KMONS: f = quicksilver dragon KMONS: g = death cob / storm dragon zombie w:4 KMONS: h = shadow dragon KMONS: i = curse toe / ancient lich w:2 +KMONS: ? = orb of fire +KMONS: ! = orb of winter +KMONS: & = orb of entropy KMONS: z = 0 band KMONS: W = withered plant KFEAT: jk = m @@ -4424,7 +4457,7 @@ KFEAT: s = metal_statue NSUBST: D = 1:< / 2:x. / *:x, . = 3:1 / *:. SHUFFLE: 234j / 567k / 890s / ABCW / defU / ghiG SUBST: j : jjl, k : kkw -SHUFFLE: 369Beh / 369Beh / heB963 / Beh369, HIJKLMNO, }]) +SHUFFLE: 369Beh / 369Beh / 369Beh / heB963 / Beh369, HIJKLMNO, }]) SUBST: HIJ = x, K : x., L : x., MNO = ., } = }:70, ] = ]:40 > MARKER: U = lua:fog_machine { cloud_type = "purple smoke", \ pow_min = 4, pow_max = 5, \ @@ -4440,6 +4473,13 @@ TILE: m = dngn_transparent_wall_magenta : else : vault_metal_statue_setup(_G, "s", "nascence circuit") : end +: if dgn.zot_orb_type() == "orb of fire" then +SUBST: 4 = 3? +: elseif dgn.zot_orb_type() == "orb of winter" then +SUBST: 7 = 6! +: elseif dgn.zot_orb_type() == "orb of entropy" then +SUBST: i = i& +: end MAP xccccccccccccccx xxccccccccsccWcccWcckccccccccxx @@ -4485,7 +4525,8 @@ TAGS: no_dump no_trap_gen PLACE: Zot:$ ORIENT: north MONS: patrolling orb guardian, boundless tesseract -MONS: electric golem, killer klown, ancient lich / dread lich, orb of fire +MONS: electric golem, killer klown, ancient lich / dread lich +MONS: orb of appropriateness KITEM: R = prismatic gem KITEM: Z = Orb of Zot KFEAT: Z = orb dais @@ -4530,7 +4571,7 @@ NSUBST: f = 3 / 4 / 6 / 9 = ? .:8 / e, k = 3 / 4 / 6 / 9 = ? .:8 / j # Minimum number of traps in each upper wing. NSUBST: e = 4=~ / ., j = 4=~ / . # Each upper wing has equal chance to get one of three sets that most heavily -# weight specific monsters: killer klown, ancient / dread lich, or orb of fire. +# weight specific monsters: killer klown, ancient / dread lich, or orbs. SUBST: ? : KLM SUBST: K = 0 4:40 5 6 ., L = 0 4 5:40 6 ., M = 0 4 5 6:40 . # Make a final sprinkling of traps throughout the vault. diff --git a/crawl-ref/source/dat/des/builder/shops.des b/crawl-ref/source/dat/des/builder/shops.des index 9114416925..0de132f0eb 100644 --- a/crawl-ref/source/dat/des/builder/shops.des +++ b/crawl-ref/source/dat/des/builder/shops.des @@ -2137,7 +2137,7 @@ MONS: orb spider zombie / weeping skull / laughing skull MONS: glass eye / tengu reaver, lich / fire giant w:5 MONS: occultist w:5 / tengu conjurer / rakshasa w:5 : else -- Zot -MONS: orb of fire, draconian scorcher, lich +MONS: orb of appropriateness, draconian scorcher, lich : end MAP ccccc diff --git a/crawl-ref/source/dat/des/sprint/arena_sprint.des b/crawl-ref/source/dat/des/sprint/arena_sprint.des index e606b29ec1..078c53e964 100644 --- a/crawl-ref/source/dat/des/sprint/arena_sprint.des +++ b/crawl-ref/source/dat/des/sprint/arena_sprint.des @@ -211,7 +211,7 @@ function arena_sprint_get_monster_set(round, boss) if not boss then if round == 27 then return {"place:Zot:$ / orb guardian w:60 / tiamat / " .. - "orb of fire / electric golem / killer klown / " .. + "orb of appropriateness / electric golem / killer klown / " .. "ancient lich / dread lich / protean progenitor / " .. "ghost moth / moth of wrath"} end @@ -477,12 +477,13 @@ function arena_sprint_get_monster_set(round, boss) iron elemental / stone giant / iron giant", "w:5 orb of fire / brimstone fiend / balrug / hellion /\ fire giant / sun demon / fire vortex", - "place:Coc:$ w:20 / ice fiend / blizzard demon / ice devil", + "w:5 orb of winter / place:Coc:$ w:15 / ice fiend /\ + blizzard demon / ice devil", "spriggan air mage / w:5 titan / w:5 electric golem / wind drake /\ air elemental / storm dragon", - "tzitzimitl / reaper / shadow dragon / death drake /\ - deep elf death mage / lich w:15 / ancient lich w:5 /\ - death knight w:5 / place:Tar:$ w:40", + "w:5 orb of entropy / tzitzimitl / reaper / shadow dragon /\ + death drake / deep elf death mage / lich w:15 /\ + ancient lich w:5 / death knight w:5 / place:Tar:$ w:30", "daeva / angel / cherub / pearl dragon / ophan / apis w:2", -- Misc "kobold blastminer / yaktaur captain", @@ -550,12 +551,12 @@ function arena_sprint_get_monster_set(round, boss) iron elemental / stone giant / cacodemon", "orb of fire / brimstone fiend / balrug / hellion /\ fire giant / sun demon", - "place:Coc:$ w:20 / ice fiend / blizzard demon / ice devil /\ - white draconian", + "orb of winter / shard shrike / ice fiend / blizzard demon /\ + white draconian w:20", "spriggan air mage / titan / electric golem / storm dragon", "tzitzimitl / reaper / shadow dragon / death drake /\ deep elf death mage / ancient lich /\ - death knight w:5 / place:Tar:$ w:40", + orb of entropy / place:Tar:$ w:20", "daeva / angel / cherub / fravashi w:15 / pearl dragon w:15 /\ ophan / apis w:5", -- Misc @@ -593,8 +594,7 @@ function arena_sprint_get_monster_set(round, boss) "brimstone fiend / ice fiend / tzitzimitl / executioner / hell sentinel", "titan / spriggan air mage / blizzard demon / w:20 air elemental", "guardian sphinx / place:Tomb:$", - "orb of fire / orb of fire name:orb_of_ice n_rpl n_des spells:glaciate.80.magical col:lightblue tile:mons_orb_of_ice /\ - orb of fire name:orb_of_electricity n_rpl n_des spells:chain_lightning.80.magical col:yellow tile:mons_orb_of_electricity", + "orb of fire / orb of winter / orb of entropy", "hellion / w:5 efreet" } else -- Because somehow, the above stuff was too easy. @@ -628,13 +628,13 @@ function arena_sprint_get_monster_set(round, boss) iron giant / caustic shrike / walking crystal tome", "orb of fire w:25 / brimstone fiend / balrug / hellion w:25 /\ fire giant / searing wretch w:5 / oni incarcerator w:5", - "ice fiend / blizzard demon w:5 / shard shrike /\ + "orb of winter w:25 / blizzard demon w:5 / shard shrike /\ white draconian knight / walking frostbound tome", "spriggan air mage / titan / electric golem w:20 /\ storm dragon", - "tzitzimitl / reaper / shadow dragon / death drake /\ - deep elf death mage / demonspawn soul scholar /\ - death knight w:5", + "orb of entropy w:25 / tzitzimitl / reaper / shadow dragon /\ + death drake / deep elf death mage /\ + demonspawn soul scholar", "daeva w:20 / angel / cherub w:5 / fravashi w:15 /\ pearl dragon w:15 / ophan / apis", -- Misc @@ -669,8 +669,7 @@ function arena_sprint_get_monster_set(round, boss) "iron golem hd:20 exp:2074 col:magenta name:orb_golem n_rpl n_des n_spe spells:orb_of_destruction.70.natural", "brimstone fiend / ice fiend / tzitzimitl w:5 / hell sentinel", "titan / spriggan air mage / blizzard demon", - "orb of fire / orb of fire name:orb_of_ice n_rpl n_des spells:glaciate.80.magical col:lightblue tile:mons_orb_of_ice / " .. - "orb of fire name:orb_of_electricity n_rpl n_des spells:chain_lightning.80.magical col:yellow tile:mons_orb_of_electricity", + "orb of fire / orb of winter / orb of entropy", "hellion" } end diff --git a/crawl-ref/source/dat/des/sprint/pitsprint.des b/crawl-ref/source/dat/des/sprint/pitsprint.des index b0541488c6..20c4fd983a 100644 --- a/crawl-ref/source/dat/des/sprint/pitsprint.des +++ b/crawl-ref/source/dat/des/sprint/pitsprint.des @@ -115,7 +115,8 @@ function base_monster_setup(e) primal mutant beast w:2 / iron elemental w:3") e.kmons("G = caustic shrike w:5 / caustic shrike band w:5 /\ shard shrike w:3 / shard shrike band w:3 /\ - orb of fire w:12 / electric golem / protean progenitor band w:6 /\ + orb of fire w:8 / orb of winter w:8 / orb of entropy w:8 /\ + electric golem / protean progenitor band w:6 /\ ancient lich w:6 / dread lich w:6 / royal mummy /\ vampire bloodprince w:2 / curse skull w:2 /\ antique champion w:6 ; shadow dragon scales . kite shield . double sword /\ diff --git a/crawl-ref/source/dat/des/sprint/zigsprint.des b/crawl-ref/source/dat/des/sprint/zigsprint.des index b852335bc9..50e8751164 100644 --- a/crawl-ref/source/dat/des/sprint/zigsprint.des +++ b/crawl-ref/source/dat/des/sprint/zigsprint.des @@ -509,7 +509,7 @@ local rnd = crawl.random2(142) elseif rnd < 81 then e.kmons("1 = ice beast / polar bear / white imp / simulacrum / rime drake/\ freezing wraith / ice devil / ice dragon / frost giant /\ - ice fiend w:5 / blizzard demon") + orb of winter w:5 / blizzard demon") -- Air elseif rnd < 84 then e.kmons("1 = air elemental / wind drake / spriggan air mage /\ diff --git a/crawl-ref/source/dat/des/variable/float.des b/crawl-ref/source/dat/des/variable/float.des index 0695bccec2..4cf5ab6be5 100644 --- a/crawl-ref/source/dat/des/variable/float.des +++ b/crawl-ref/source/dat/des/variable/float.des @@ -4019,7 +4019,7 @@ KMONS: 8 = tengu reaver ; battleaxe ego:flaming | great sword ego:freezing | \ KMONS: 9 = red draconian / white draconian / black draconian KMONS: 0 = red draconian stormcaller / white draconian stormcaller / \ black draconian stormcaller -KMONS: ! = orb of fire / electric golem / ice fiend / iron giant +KMONS: ! = orb of appropriateness / electric golem / ice fiend / iron giant KMONS: & = ancient lich KITEM: $ = $ no_pickup KITEM: y = $ no_pickup, smoky gem @@ -4446,10 +4446,15 @@ MONS: white draconian stormcaller / white draconian annihilator / \ white draconian monk / white draconian knight ; glaive ego:freezing . \ cloak MONS: white draconian ; halberd ego:freezing . cloak +KMONS: 8 = orb of winter NSUBST: . = 1:{} / 1 = ):50 / 1 = ]:40 > NSUBST: - = 4:1 / 4:2 / 2 = 122 / *:- SHUFFLE: {([, })] SUBST: b : bm +# Something terrible can still follow you away from the island regardless. +: if dgn.zot_orb_type() == "orb of winter" then +NSUBST: 1 = 1:8 / 1:2 / *:1 +: end : vault_metal_statue_setup(_G, "b", "icy conduit") : elseif you.branch() == "Vaults" then MONS: ironbound frostheart, arcanist / white very ugly thing w:2 @@ -4470,8 +4475,8 @@ TILE: b = bedevilled_crystal_cocytus KMONS: 3 = ice statue KFEAT: 3 = > NSUBST: ' = 5=*$ / *:%, $ = 1:dd$ / *:$ -KPROP: -W123$%* = no_tele_into -KMASK: -W123$%* = opaque +KPROP: -W1238$%* = no_tele_into +KMASK: -W1238$%* = opaque MAP ... ..x.. @@ -5144,7 +5149,7 @@ SUBST: 5 = 4, 4 = 23 : elseif you.in_branch("Zot") then MONS: ghost moth / death cob / curse toe MONS: nonbase draconian / protean progenitor w:2 -MONS: ancient lich / dread lich, orb of fire +MONS: ancient lich / dread lich, orb of appropriateness SUBST: 3 = 2, 4 = 3, 5 = 4 : end KFEAT: _ = altar_sif_muna / altar_vehumet @@ -6193,7 +6198,8 @@ ENDMAP NAME: dreamdust_black_sun_cult TAGS: transparent no_monster_gen ORIENT: float -DEPTH: D:13-, Zot +DEPTH: D:13-, Zot, !Zot:$ +WEIGHT: 25 (Zot), 10 : if you.in_branch("D") then KMONS: 1 = salamander mystic / cognitogaunt w:1 KMONS: 2 = sun demon @@ -6219,6 +6225,9 @@ FTILE: -mA1 = floor_volcanic MARKER: ! = lua:fog_machine { cloud_type='flame', pow_min = 10, pow_max = 10, \ delay = 10, size = 1, excl_rad = 0 } NSUBST: - = 2=2 / 2=2- / 3=3 / 3=3- / - +veto {{ + return you.in_branch("Zot") and dgn.zot_orb_type() ~= "orb of fire" +}} MAP ......... ..!bbbbb!.. @@ -7267,7 +7276,7 @@ NSUBST: | = 1:d / 1:e / 1:g / * = de : else -- Zot MONS: white draconian, white draconian stormcaller MONS: white draconian monk, white draconian knight / white draconian shifter -MONS: lich, golden dragon +MONS: lich, golden dragon, orb of winter KFEAT: ^ = zot trap NSUBST: ^ = 2:^. / *:., 1 = 1:2 / 1:345 / 1:6 / *:1 NSUBST: $ = 1:} / *:$, | = 2:e / 1:g / *:d @@ -7275,6 +7284,9 @@ SHUFFLE: })] SUBST: ) = ):70 >, ] = 40:] >, G = P MARKER: U = lua:fog_machine { cloud_type = "freezing vapour", size = 1, \ pow_max = 10, delay_min = 30, delay_max = 40, excl_rad = 0 } +: if dgn.zot_orb_type() == "orb of winter" then +SUBST: 6 = 677 +: end : end ITEM: ice dragon scales w:15 / kite shield ego:cold_resistance / \ ring of ice randart w:4 / staff of cold w:3 / rimehorn talisman w:2 @@ -7363,7 +7375,7 @@ ORIENT: float WEIGHT: 10 (D), 5 SUBST: m:mn : if you.in_branch("Zot") then -KMONS: ]}) = orb of fire / electric golem / draconian knight w:20 +KMONS: ]}) = orb of appropriateness / electric golem / draconian knight w:20 : elseif not you.in_branch("D") then KMONS: ]}) = 9 : end @@ -8621,7 +8633,7 @@ KMONS: 8 = bone dragon / lich / ancient lich / dread lich / \ vampire bloodprince w:5 / curse toe w:5 / zombie w:5 / \ draugr w:5 / eidolon / reaper w:20 / soul eater / place:Crypt w:30 : elseif you.in_branch("Zot") then -KMONS: 8 = nonbase draconian w:35 / orb of fire / electric golem / \ +KMONS: 8 = nonbase draconian w:35 / orb of appropriateness / electric golem / \ killer klown / death cob / curse toe w:5 / ancient lich w:5 / \ dread lich w:5 / protean progenitor w:15 SUBST: *% = . @@ -11534,7 +11546,7 @@ KMONS: 2 = executioner / brimstone fiend / ice fiend / tzitzimitl \ SUBST: 8 = 29, 9 = 01 : elseif you.in_branch("Zot") then KMONS: 1 = ancient lich w:5 / dread lich w:5 / protean progenitor / \ - orb of fire / curse toe + orb of appropriateness / curse toe SUBST: 8 = 18 : end # In Vaults we let the layout dictate wall type and need a border of floor. @@ -11613,7 +11625,7 @@ KMONS: 3 = executioner / brimstone fiend / ice fiend / tzitzimitl \ / hell sentinel SUBST: 8 = 39, 9 = 02, H = K : elseif you.in_branch("Zot") then -KMONS: 2 = ancient lich w:5 / dread lich w:5 / orb of fire / curse toe +KMONS: 2 = ancient lich w:5 / dread lich w:5 / orb of appropriateness / curse toe SUBST: 8 = 28 : end COLOUR: p = yellow @@ -11789,7 +11801,8 @@ SHUFFLE: Ww / ll SUBST: 2 = G:50 2, r = $*, s = | KFEAT: ^ = shaft trap / alarm trap / zot trap : elseif you.in_branch("Zot") then -MONS: ancient lich w:5 / dread lich w:5 / orb of fire, orange crystal statue +MONS: ancient lich w:5 / dread lich w:5 / orb of appropriateness +MONS: orange crystal statue SUBST: 2 = G:50 2, r = *:30 |, wW = l, K = ), s = ] KFEAT: ^ = zot trap : end diff --git a/crawl-ref/source/dat/des/variable/large_themed.des b/crawl-ref/source/dat/des/variable/large_themed.des index aba5171379..fe59e2eccf 100644 --- a/crawl-ref/source/dat/des/variable/large_themed.des +++ b/crawl-ref/source/dat/des/variable/large_themed.des @@ -2780,7 +2780,11 @@ MONS: red draconian / red draconian monk w:5 MONS: red draconian knight, red draconian annihilator MONS: red draconian scorcher, red draconian shifter KMONS: 6 : iron dragon / golden dragon -KMONS: 7 : dread lich / orb of fire +KMONS: 7 = dread lich +KMONS: 8 = orb of fire +: if dgn.zot_orb_type() == "orb of fire" then +SUBST: 7 : 78 +: end KMONS: L = moth of wrath NSUBST: V> = 1:} / 1 = ):6 >:1 / 1 = ]:6 >:1 SUBST: " = 1 @@ -3250,7 +3254,9 @@ NSUBST: l = 1:L / 1 = Ll / *:l, * = 1:Y / 1:Z / 1:d / 2:! / *:$ : end : else -- Zot MONS: red draconian, red draconian monk / golden dragon -MONS: red draconian annihilator w:5 / red draconian scorcher, orb of fire +MONS: red draconian annihilator w:5 / red draconian scorcher +# Winter doesn't stop for lava. Winter doesn't stop for anything. +MONS: orb of appropriateness KMONS: L = moth of wrath / ghost moth w:2 NSUBST: . = 3:1 / 2:2 / 2:3 / 2 = 233. NSUBST: l = 2:L / 3 = Lll / *:l, 4 = 1:4 / *:23 diff --git a/crawl-ref/source/dat/des/variable/mini_monsters.des b/crawl-ref/source/dat/des/variable/mini_monsters.des index 9f1f47b6cc..3e2d7235c8 100644 --- a/crawl-ref/source/dat/des/variable/mini_monsters.des +++ b/crawl-ref/source/dat/des/variable/mini_monsters.des @@ -10408,7 +10408,7 @@ KMONS: 1 = oblivion hound w:15 / death drake / bone dragon / tormentor / \ KMONS: 1 = shard shrike w:15 / titan / blizzard demon / tormentor / \ ice fiend w:15 / ancient lich / dread lich / place:Coc:$ w:24 : elseif you.in_branch("Zot") then -KMONS: 1 = nonbase draconian / orb of fire / electric golem / \ +KMONS: 1 = nonbase draconian / orb of appropriateness / electric golem / \ killer klown / ancient lich / dread lich / curse toe / \ protean progenitor / place:Zot:$ w:20 # Dungeon, Vaults, and Depths get 8 spawns. diff --git a/crawl-ref/source/dat/des/variable/the_bubble.des b/crawl-ref/source/dat/des/variable/the_bubble.des index ef745470db..e236d95247 100644 --- a/crawl-ref/source/dat/des/variable/the_bubble.des +++ b/crawl-ref/source/dat/des/variable/the_bubble.des @@ -38,8 +38,8 @@ function gammafunk_the_bubble_setup(e, entry_glyph, exit_glyph) e.kmons("2 = ancient lich / dread lich / vampire bloodprince w:5") e.nsubst("8 = 1:2 / 8") elseif you.in_branch("Zot") then - e.kmons("2 = ancient lich w:5 / dread lich w:5 / orb of fire / \ - curse toe / protean progenitor band") + e.kmons("2 = ancient lich w:5 / dread lich w:5 / curse toe / \ + orb of appropriateness / protean progenitor band") e.kfeat("t = petrified_tree") e.subst("8 = 28") elseif you.in_branch("Pandemonium") then diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index ceb6d76d85..29f3ac814b 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -3675,21 +3675,6 @@ A metal golem crackling with magical energies. It must have been created by a truly devious wizard, or possibly someone who misheard what monsters could be found in the Realm of Zot. %%%% -orb of electricity - -A massive floating ball. It resembles ball lightning, but looks far more -stable. -%%%% -# I'm not sure how widely cosmogonical Norse myths are known to an average -# reader; Crawl's audience tends to be far more educated though, so let's -# hope the concepts of Ginnungagap, Niflheim and Muspelheim are not too -# obscure. -orb of ice - -A globe of primordial ice, floating in the air. It is said to be a relic of -ancient times, when the world was a void bracketed by realms of endless fire -and cold. -%%%% phase bat A strange, glowing bat that flutters through more dimensions than the average diff --git a/crawl-ref/source/dat/descript/zh/monsters.txt b/crawl-ref/source/dat/descript/zh/monsters.txt index 706bcd7977..b807bf97ca 100644 --- a/crawl-ref/source/dat/descript/zh/monsters.txt +++ b/crawl-ref/source/dat/descript/zh/monsters.txt @@ -2902,18 +2902,6 @@ orb golem ä¸å°éå±éåï¼èº«ä¸çéæ³è½éå¼åªä½åãå®ä¸å®æ¯ç±ä¸ä½é常ç¡ç¾çå·«å¸åé çï¼ æè æ¯æäººå¬éäºè½å¨ä½ç¹é¢ååç°åªäºæªç©ã %%%% -orb of electricity - -ä¸ä¸ªé£æµ®çå·¨åçä½ã宿ç¹åçç¶éªçµï¼ä½çèµ·æ¥è¦ç¨³å®å¾å¤ã -%%%% -# æä¸ç¡®å®æ®é读è 坹忬§ç¥è¯çå®å®è®ºäºè§£æå¤å°ã -# ä¸è¿ï¼å°ç¢ç¬è¡çç©å®¶å¾å¾åè¿æ´å¤æè²ï¼ -# æä»¥æä»¬å¸æé伦å 鸿æ²ãå°¼ç¦å°æµ·å§åç©æ¯è´å°æµ·å§è¿äºæ¦å¿µä¸ä¼å¤ªæ¦æ¶©é¾æã -orb of ice - -ä¸ä¸ªåå§çå°çï¼æµ®å¨ç©ºä¸ã -æ®è¯´è¿æ¯è¿å¤çéç©ï¼å½æ¶ä¸çæ¯ä¸çè空ï¼è¢«æ å°½çç«åå¯å å´çã -%%%% petrified plant 䏿 ªè¢«ç³åçæ®éæ¤ç©ã diff --git a/crawl-ref/source/dat/dlua/explorer.lua b/crawl-ref/source/dat/dlua/explorer.lua index d8b364ddd8..21c13cf3f5 100644 --- a/crawl-ref/source/dat/dlua/explorer.lua +++ b/crawl-ref/source/dat/dlua/explorer.lua @@ -385,6 +385,8 @@ explorer.dangerous_monsters = { "ancient lich", "dread lich", "orb of fire", + "orb of winter", + "orb of entropy", "royal mummy", "Hell Sentinel", "Ice Fiend", diff --git a/crawl-ref/source/dat/dlua/ziggurat.lua b/crawl-ref/source/dat/dlua/ziggurat.lua index d9a13d1af7..26c0e900eb 100644 --- a/crawl-ref/source/dat/dlua/ziggurat.lua +++ b/crawl-ref/source/dat/dlua/ziggurat.lua @@ -355,7 +355,7 @@ mset(with_props(spec_fn(function () "juggernaut simulacrum w:5 / ironbound frostheart w:5 / " .. "walking frostbound tome w:" .. d .. " / frost giant w:" .. d .. " / " .. "blizzard demon w:" .. d .. " / white draconian knight w:" .. e .. " / " .. - "shard shrike w:" .. e .. " / ice fiend w:" .. e + "shard shrike w:" .. e .. " / orb of winter w:" .. e end), { weight = 2 })) mset(with_props(spec_fn(function () @@ -390,7 +390,8 @@ mset(with_props(spec_fn(function () "deep elf death mage w:2 / shadow dragon w:8 / ghost crab w:4 / " .. "eidolon w:4 / revenant soulmonger w:" .. e .. " / " .. "demonspawn soul scholar w:4 / curse skull w:4 / curse toe w:2 / " .. - "halazid warlock w:" .. e .. " / player ghost w:" .. f + "halazid warlock w:" .. e .. " / player ghost w:" .. f .. " / " .. + "orb of entropy w:" .. f end), { weight = 2 })) mset(with_props(spec_fn(function () -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 22:45:39
|
via 58bce5c09a45991e93464d4546a5ad2346835fa5 (commit) from 49f3ece09ae2da0aa94debfcf0cbc6c432e2bdbe (commit) ----------------------------------------------------------------------- commit 58bce5c09a45991e93464d4546a5ad2346835fa5 Author: David Lawrence Ramsey <poo...@gm...> Date: Sat Jul 5 17:31:54 2025 -0500 Fix spelling. Crystallizing Shot -> Crystallising Shot. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/beam-type.h | 2 +- crawl-ref/source/beam.cc | 6 +++--- crawl-ref/source/dat/database/monspell.txt | 2 +- crawl-ref/source/dat/database/randbook.txt | 2 +- crawl-ref/source/dat/database/zh/monspell.txt | 2 +- crawl-ref/source/dat/descript/monsters.txt | 2 +- crawl-ref/source/dat/descript/spells.txt | 2 +- crawl-ref/source/fight.cc | 2 +- crawl-ref/source/mon-cast.cc | 2 +- crawl-ref/source/mon-spell.h | 4 ++-- crawl-ref/source/rltiles/dc-spells.txt | 2 +- .../{crystallizing_shot.png => crystallising_shot.png} | Bin crawl-ref/source/spell-type.h | 2 +- crawl-ref/source/spl-data.h | 4 ++-- crawl-ref/source/spl-zap.cc | 2 +- crawl-ref/source/zap-data.h | 6 +++--- crawl-ref/source/zap-type.h | 2 +- 17 files changed, 22 insertions(+), 22 deletions(-) rename crawl-ref/source/rltiles/gui/spells/monster/{crystallizing_shot.png => crystallising_shot.png} (100%) diff --git a/crawl-ref/source/beam-type.h b/crawl-ref/source/beam-type.h index f3b48e4a8b..daccfb5845 100644 --- a/crawl-ref/source/beam-type.h +++ b/crawl-ref/source/beam-type.h @@ -38,7 +38,7 @@ enum beam_type // bolt::flavour BEAM_DEVASTATION, BEAM_UMBRAL_TORCHLIGHT, BEAM_FOUL_FLAME, - BEAM_CRYSTALLIZING, + BEAM_CRYSTALLISING, BEAM_WARPING, BEAM_QAZLAL, BEAM_HAEMOCLASM, diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 5929e7f782..b9e20a273c 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -4478,7 +4478,7 @@ void bolt::affect_player() else if (flavour == BEAM_ACID && coinflip()) you.corrode(agent()); - if (flavour == BEAM_CRYSTALLIZING && !one_chance_in(4)) + if (flavour == BEAM_CRYSTALLISING && !one_chance_in(4)) you.vitrify(agent(), random_range(8, 18)); if (origin_spell == SPELL_SOJOURNING_BOLT @@ -5226,7 +5226,7 @@ void bolt::monster_post_hit(monster* mon, int dmg) monster_teleport(mon, false, false, false, agent()); } - if (flavour == BEAM_CRYSTALLIZING && !one_chance_in(4)) + if (flavour == BEAM_CRYSTALLISING && !one_chance_in(4)) mon->vitrify(agent(), random_range(8, 18)); if (dmg) @@ -7666,7 +7666,7 @@ static string _beam_type_name(beam_type type) case BEAM_WEAKNESS: return "weakness"; case BEAM_DEVASTATION: return "devastation"; case BEAM_UMBRAL_TORCHLIGHT: return "umbral torchlight"; - case BEAM_CRYSTALLIZING: return "crystallizing"; + case BEAM_CRYSTALLISING: return "crystallising"; case BEAM_WARPING: return "spatial disruption"; case BEAM_QAZLAL: return "upheaval targetter"; case BEAM_RIMEBLIGHT: return "rimeblight"; diff --git a/crawl-ref/source/dat/database/monspell.txt b/crawl-ref/source/dat/database/monspell.txt index 5a5e2089bd..aba8ba1c91 100644 --- a/crawl-ref/source/dat/database/monspell.txt +++ b/crawl-ref/source/dat/database/monspell.txt @@ -704,7 +704,7 @@ crystal echidna cast targeted @The_monster@ flicks its quills @at@ @target@. %%%% -Crystallizing Shot crystal guardian cast +Crystallising Shot crystal guardian cast @The_monster@ fires a shard of @reflexive@ @at@ @target@. %%%% diff --git a/crawl-ref/source/dat/database/randbook.txt b/crawl-ref/source/dat/database/randbook.txt index 8878ef77b4..797a1f3014 100644 --- a/crawl-ref/source/dat/database/randbook.txt +++ b/crawl-ref/source/dat/database/randbook.txt @@ -2578,7 +2578,7 @@ Cold Congealing -Crystallized +Crystallised Freezing diff --git a/crawl-ref/source/dat/database/zh/monspell.txt b/crawl-ref/source/dat/database/zh/monspell.txt index e52970735f..ee00994f3b 100644 --- a/crawl-ref/source/dat/database/zh/monspell.txt +++ b/crawl-ref/source/dat/database/zh/monspell.txt @@ -690,7 +690,7 @@ Splinterspray cast @The_monster@æ·åºçä¸å°ä¸²@beam@ @at@ @target@ã %%%% -Crystallizing Shot crystal guardian cast +Crystallising Shot crystal guardian cast @The_monster@å°åºçæ°´æ¶ç®@at@ @target@ã %%%% diff --git a/crawl-ref/source/dat/descript/monsters.txt b/crawl-ref/source/dat/descript/monsters.txt index dc7e9307f7..ceb6d76d85 100644 --- a/crawl-ref/source/dat/descript/monsters.txt +++ b/crawl-ref/source/dat/descript/monsters.txt @@ -1033,7 +1033,7 @@ A crocodilian with powerful jaws. crystal echidna A spiny, long snouted rodent grown out of pure living crystal. It is -immune to most forms of magic and hurls both crystallizing shots and painful +immune to most forms of magic and hurls both crystallising shots and painful barbs. %%%% crystal guardian diff --git a/crawl-ref/source/dat/descript/spells.txt b/crawl-ref/source/dat/descript/spells.txt index bff9907586..e162ba5ae6 100644 --- a/crawl-ref/source/dat/descript/spells.txt +++ b/crawl-ref/source/dat/descript/spells.txt @@ -437,7 +437,7 @@ Creeping Shadow spell Calls forth shadows from the corners of nearby walls to strike at all of the caster's enemies standing adjacent to them. %%%% -Crystallizing Shot spell +Crystallising Shot spell Hurls a large and heavy shard of crystal. It may render a creature's body structure as brittle and fragile as shattered and unrefined crystal, increasing diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index c3c7ce10e5..aa18293e87 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -805,7 +805,7 @@ beam_type get_beam_resist_type(beam_type flavour) case BEAM_MISSILE: case BEAM_MMISSILE: case BEAM_FRAG: - case BEAM_CRYSTALLIZING: + case BEAM_CRYSTALLISING: case BEAM_SEISMIC: case BEAM_BOLAS: case BEAM_AIR: diff --git a/crawl-ref/source/mon-cast.cc b/crawl-ref/source/mon-cast.cc index e71a1bd711..98184ba435 100644 --- a/crawl-ref/source/mon-cast.cc +++ b/crawl-ref/source/mon-cast.cc @@ -2204,7 +2204,7 @@ bolt mons_spell_beam(const monster* mons, spell_type spell_cast, int power, case SPELL_BOLT_OF_DEVASTATION: case SPELL_BOLT_OF_FLESH: case SPELL_BORGNJORS_VILE_CLUTCH: - case SPELL_CRYSTALLIZING_SHOT: + case SPELL_CRYSTALLISING_SHOT: case SPELL_HELLFIRE_MORTAR: case SPELL_MAGMA_BARRAGE: case SPELL_SHADOW_TORPOR: diff --git a/crawl-ref/source/mon-spell.h b/crawl-ref/source/mon-spell.h index 056cd65b79..01a33d8b9d 100644 --- a/crawl-ref/source/mon-spell.h +++ b/crawl-ref/source/mon-spell.h @@ -620,7 +620,7 @@ static const mon_spellbook mspell_list[] = // ('r') rodents { MST_CRYSTAL_ECHIDNA, { - { SPELL_CRYSTALLIZING_SHOT, 30, MON_SPELL_NATURAL }, + { SPELL_CRYSTALLISING_SHOT, 30, MON_SPELL_NATURAL }, { SPELL_THROW_BARBS, 30, MON_SPELL_NATURAL }, } }, @@ -1800,7 +1800,7 @@ static const mon_spellbook mspell_list[] = { MST_CRYSTAL_GUARDIAN, { - { SPELL_CRYSTALLIZING_SHOT, 50, MON_SPELL_MAGICAL }, + { SPELL_CRYSTALLISING_SHOT, 50, MON_SPELL_MAGICAL }, } }, diff --git a/crawl-ref/source/rltiles/dc-spells.txt b/crawl-ref/source/rltiles/dc-spells.txt index 819a837fb7..a7bde18744 100644 --- a/crawl-ref/source/rltiles/dc-spells.txt +++ b/crawl-ref/source/rltiles/dc-spells.txt @@ -232,7 +232,7 @@ conjure_living_spells CONJURE_LIVING_SPELLS corrupting_pulse CORRUPTING_PULSE create_tentacles CREATE_TENTACLES creeping_frost CREEPING_FROST -crystallizing_shot CRYSTALLIZING_SHOT +crystallising_shot CRYSTALLISING_SHOT death_rattle DEATH_RATTLE dimensional_anchor DIMENSIONAL_ANCHOR dominate_undead DOMINATE_UNDEAD diff --git a/crawl-ref/source/rltiles/gui/spells/monster/crystallizing_shot.png b/crawl-ref/source/rltiles/gui/spells/monster/crystallising_shot.png similarity index 100% rename from crawl-ref/source/rltiles/gui/spells/monster/crystallizing_shot.png rename to crawl-ref/source/rltiles/gui/spells/monster/crystallising_shot.png diff --git a/crawl-ref/source/spell-type.h b/crawl-ref/source/spell-type.h index 886659c14d..5a99f9c2d6 100644 --- a/crawl-ref/source/spell-type.h +++ b/crawl-ref/source/spell-type.h @@ -571,7 +571,7 @@ enum spell_type : int SPELL_REGENERATE_OTHER, SPELL_DIVINE_ARMAMENT, SPELL_HURL_TORCHLIGHT, - SPELL_CRYSTALLIZING_SHOT, + SPELL_CRYSTALLISING_SHOT, SPELL_REBOUNDING_BLAZE, SPELL_WARP_SPACE, SPELL_COMBUSTION_BREATH, diff --git a/crawl-ref/source/spl-data.h b/crawl-ref/source/spl-data.h index d2fe67ddcf..ffd1e8bd11 100644 --- a/crawl-ref/source/spl-data.h +++ b/crawl-ref/source/spl-data.h @@ -3795,14 +3795,14 @@ static const struct spell_desc spelldata[] = }, { - SPELL_CRYSTALLIZING_SHOT, "Crystallizing Shot", + SPELL_CRYSTALLISING_SHOT, "Crystallising Shot", spschool::conjuration | spschool::earth | spschool::hexes, spflag::dir_or_target | spflag::needs_tracer | spflag::monster, 6, 50, 4, 4, 0, - TILEG_CRYSTALLIZING_SHOT, + TILEG_CRYSTALLISING_SHOT, }, { diff --git a/crawl-ref/source/spl-zap.cc b/crawl-ref/source/spl-zap.cc index 223d295d95..4d767e8cad 100644 --- a/crawl-ref/source/spl-zap.cc +++ b/crawl-ref/source/spl-zap.cc @@ -112,7 +112,7 @@ static pair<spell_type, zap_type> _spl_zaps[] = { SPELL_DRAIN_MAGIC, ZAP_DRAIN_MAGIC }, { SPELL_BECKONING_GALE, ZAP_BECKONING_GALE }, { SPELL_HARPOON_SHOT, ZAP_HARPOON_SHOT}, - { SPELL_CRYSTALLIZING_SHOT, ZAP_CRYSTALLIZING_SHOT }, + { SPELL_CRYSTALLISING_SHOT, ZAP_CRYSTALLISING_SHOT }, { SPELL_THROW_PIE, ZAP_THROW_PIE}, { SPELL_AGONY, ZAP_AGONY }, { SPELL_DISPEL_UNDEAD_RANGE, ZAP_DISPEL_UNDEAD_RANGE }, diff --git a/crawl-ref/source/zap-data.h b/crawl-ref/source/zap-data.h index bf295f4f83..6714af1081 100644 --- a/crawl-ref/source/zap-data.h +++ b/crawl-ref/source/zap-data.h @@ -158,15 +158,15 @@ static const zap_info zap_data[] = }, { - ZAP_CRYSTALLIZING_SHOT, - "crystallizing shot", + ZAP_CRYSTALLISING_SHOT, + "crystallising shot", nullptr, nullptr, new dicedef_calculator<3, 6, 1, 10>, new tohit_calculator<18, 1, 30>, LIGHTCYAN, false, - BEAM_CRYSTALLIZING, + BEAM_CRYSTALLISING, DCHAR_FIRED_MISSILE, false, false, diff --git a/crawl-ref/source/zap-type.h b/crawl-ref/source/zap-type.h index ba9dac0981..9892791c4b 100644 --- a/crawl-ref/source/zap-type.h +++ b/crawl-ref/source/zap-type.h @@ -131,7 +131,7 @@ enum zap_type ZAP_MALIGN_OFFERING, ZAP_CURSE_OF_AGONY, ZAP_HURL_TORCHLIGHT, - ZAP_CRYSTALLIZING_SHOT, + ZAP_CRYSTALLISING_SHOT, ZAP_WARP_SPACE, ZAP_COMBUSTION_BREATH, ZAP_NULLIFYING_BREATH, -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 21:25:15
|
via 49f3ece09ae2da0aa94debfcf0cbc6c432e2bdbe (commit) via 9f259bd188b73a36c9896d50662e74ecbc6bee5b (commit) from 2e5ef21555db61364d8317a92a66ccd3be653f40 (commit) ----------------------------------------------------------------------- commit 49f3ece09ae2da0aa94debfcf0cbc6c432e2bdbe Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 18:52:51 2025 -0230 Properly make only spellbooks inedible Instead of only parchments, the literal inverse of what I meant to do. commit 9f259bd188b73a36c9896d50662e74ecbc6bee5b Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 18:52:16 2025 -0230 Improve a webtiles parchment rendering check (WizardIke) Apparently next_pc and next_mc can sometimes get out of sync with each other, which may have been the source of the crash in the first place. Instead, make sure to use the same map_knowledge from which the tile was derived. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/item-prop.cc | 5 ++++- crawl-ref/source/tileweb.cc | 4 +--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/crawl-ref/source/item-prop.cc b/crawl-ref/source/item-prop.cc index 3e3ae02d40..1ea5b5f42d 100644 --- a/crawl-ref/source/item-prop.cc +++ b/crawl-ref/source/item-prop.cc @@ -2921,8 +2921,11 @@ bool item_is_jelly_edible(const item_def &item) return false; // Don't eat spellbooks. (They're the 'artefacts' of parchments now.) - if (item.is_type(OBJ_BOOKS, BOOK_PARCHMENT)) + if (item.base_type == OBJ_BOOKS + && item.sub_type != BOOK_PARCHMENT && item.sub_type != BOOK_MANUAL) + { return false; + } // Don't eat mimics. if (item.flags & ISFLAG_MIMIC) diff --git a/crawl-ref/source/tileweb.cc b/crawl-ref/source/tileweb.cc index 944035fba0..7c913be153 100644 --- a/crawl-ref/source/tileweb.cc +++ b/crawl-ref/source/tileweb.cc @@ -1592,9 +1592,7 @@ void TilesFramework::_send_cell(const coord_def &gc, // XXX: Encode spell school overlays for parchments. if (fg_idx >= TILE_PARCHMENT_LOW && fg_idx <= TILE_PARCHMENT_HIGH) { - const item_def* item = next_mc.item(); - // XXX: Not yet sure how it's possible to get here without an - // item we're trying to render, and yet it appears to be. + const item_def* item = next_pc.map_knowledge.item(); if (item) { spell_type spell = static_cast<spell_type>(item->plus); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 20:45:15
|
via 2e5ef21555db61364d8317a92a66ccd3be653f40 (commit) from 6afd62ccd5ae09732db369cc74e5b27d517e6eb0 (commit) ----------------------------------------------------------------------- commit 2e5ef21555db61364d8317a92a66ccd3be653f40 Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 18:12:28 2025 -0230 Remove a failing test case It's no longer possible for an arbitrary species to mutate Tough Skin as of 724dfb3, so this test would always fail. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/catch2-tests/test_player.cc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/crawl-ref/source/catch2-tests/test_player.cc b/crawl-ref/source/catch2-tests/test_player.cc index 71de5f1385..13167c8f84 100644 --- a/crawl-ref/source/catch2-tests/test_player.cc +++ b/crawl-ref/source/catch2-tests/test_player.cc @@ -55,14 +55,6 @@ TEST_CASE_METHOD(MockPlayerYouTestsFixture, } TEST_CASE_METHOD(MockPlayerYouTestsFixture, - "Check tough_skin", "[single-file]" ) { - - mutate(MUT_TOUGH_SKIN, "testing"); - - REQUIRE(you.base_ac(100) == 100); -} - -TEST_CASE_METHOD(MockPlayerYouTestsFixture, "Check iridescent scales", "[single-file]" ) { mutate(MUT_IRIDESCENT_SCALES, "testing"); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 20:25:09
|
via 6afd62ccd5ae09732db369cc74e5b27d517e6eb0 (commit) from eef651f67af6023524e9f99e9a211862cde27b4e (commit) ----------------------------------------------------------------------- commit 6afd62ccd5ae09732db369cc74e5b27d517e6eb0 Author: patrick <xd...@gm...> Date: Sat Jul 5 16:20:06 2025 -0400 Add two abstract decorative float vaults In the vein of nicolae_hitomezashi, two big vaults based on simple tilings of a single subvault. Nothing fancy. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/des/variable/float.des | 123 ++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/crawl-ref/source/dat/des/variable/float.des b/crawl-ref/source/dat/des/variable/float.des index 1a711ea6c2..0695bccec2 100644 --- a/crawl-ref/source/dat/des/variable/float.des +++ b/crawl-ref/source/dat/des/variable/float.des @@ -1659,6 +1659,129 @@ MAP ccc .@. ccc .@. ccc .@. ccc .@. ENDMAP +NAME: nicolae_squigglewinding +TAGS: transparent decor +DEPTH: D:8-, Depths, Snake +ORIENT: float +: local glyphs = "DEFHJKLMNOPQRSZ-" +: for i = 1, string.len(glyphs), 1 do +: subvault(string.sub(glyphs, i, i) .. " : nico_subwinding") +: end +MAP + xxc.@.cxxxxc.@.cxxxxc.@.cxxxxc.@.cxx +xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx +xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx +cDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHc +.DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH. +@DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH@ +.DDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHH. +cDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHc +xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx +xDDDDDDDDDEEEEEEEEEFFFFFFFFFHHHHHHHHHx +xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx +xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx +cJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMc +.JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM. +@JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM@ +.JJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMM. +cJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMc +xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx +xJJJJJJJJJKKKKKKKKKLLLLLLLLLMMMMMMMMMx +xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx +xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx +cNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQc +.NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ. +@NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ@ +.NNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQ. +cNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQc +xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx +xNNNNNNNNNOOOOOOOOOPPPPPPPPPQQQQQQQQQx +xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x +xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x +cRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------c +.RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------. +@RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------@ +.RRRRRRRRRSSSSSSSSSZZZZZZZZZ---------. +cRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------c +xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x +xRRRRRRRRRSSSSSSSSSZZZZZZZZZ---------x + xxc.@.cxxxxc.@.cxxxxc.@.cxxxxc.@.cxx +ENDMAP + +NAME: nicolae_subvault_individual_squiggle +TAGS: unrand transparent nico_subwinding allow_dup no_dump +DEPTH: D:8-, Depths, Snake +ORIENT: float +MAP +xxc...cxx +xxc...ccx +cccc...cc +..cc..... +....c.... +.....cc.. +cc...cccc +xcc...cxx +xxc...cxx +ENDMAP + +NAME: nicolae_big_ol_wall_tiling +TAGS: transparent decor +DEPTH: D:8-, Depths +ORIENT: float +: local glyphs = "DEFHJKLMNOPQRSZ-" +: for i = 1, string.len(glyphs), 1 do +: subvault(string.sub(glyphs, i, i) .. " : nico_winderwall") +: end +NSUBST: p = @ / ., q = @ / ., r = @ / ., s = @ / . +MAP +xxx..p..xx..p..xx..p..xx..p..xxx +x...ccc....ccc....ccc....ccc...x +x.DDDDDDDEEEEEEEFFFFFFFHHHHHHH.x +..DDDDDDDEEEEEEEFFFFFFFHHHHHHH.. +.cDDDDDDDEEEEEEEFFFFFFFHHHHHHHc. +scDDDDDDDEEEEEEEFFFFFFFHHHHHHHcq +.cDDDDDDDEEEEEEEFFFFFFFHHHHHHHc. +..DDDDDDDEEEEEEEFFFFFFFHHHHHHH.. +x.DDDDDDDEEEEEEEFFFFFFFHHHHHHH.x +x.JJJJJJJKKKKKKKLLLLLLLMMMMMMM.x +..JJJJJJJKKKKKKKLLLLLLLMMMMMMM.. +.cJJJJJJJKKKKKKKLLLLLLLMMMMMMMc. +scJJJJJJJKKKKKKKLLLLLLLMMMMMMMcq +.cJJJJJJJKKKKKKKLLLLLLLMMMMMMMc. +..JJJJJJJKKKKKKKLLLLLLLMMMMMMM.. +x.JJJJJJJKKKKKKKLLLLLLLMMMMMMM.x +x.NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.x +..NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.. +.cNNNNNNNOOOOOOOPPPPPPPQQQQQQQc. +scNNNNNNNOOOOOOOPPPPPPPQQQQQQQcq +.cNNNNNNNOOOOOOOPPPPPPPQQQQQQQc. +..NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.. +x.NNNNNNNOOOOOOOPPPPPPPQQQQQQQ.x +x.RRRRRRRSSSSSSSZZZZZZZ-------.x +..RRRRRRRSSSSSSSZZZZZZZ-------.. +.cRRRRRRRSSSSSSSZZZZZZZ-------c. +scRRRRRRRSSSSSSSZZZZZZZ-------cq +.cRRRRRRRSSSSSSSZZZZZZZ-------c. +..RRRRRRRSSSSSSSZZZZZZZ-------.. +x.RRRRRRRSSSSSSSZZZZZZZ-------.x +x...ccc....ccc....ccc....ccc...x +xxx..r..xx..r..xx..r..xx..r..xxx +ENDMAP + +NAME: nicolae_subvault_for_big_wall_tiling +TAGS: unrand transparent nico_winderwall allow_dup no_dump +DEPTH: D:8-, Depths +ORIENT: float +MAP +..ccc.. +...c... +c..c..c +c..n..c +c..c..c +...c... +..ccc.. +ENDMAP + ############################################################################### # # <<2>> Themed threat vaults. -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 20:05:13
|
via eef651f67af6023524e9f99e9a211862cde27b4e (commit) from 9a6bba5181c9a2caf331894991c9784f9a6004ef (commit) ----------------------------------------------------------------------- commit eef651f67af6023524e9f99e9a211862cde27b4e Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 17:34:21 2025 -0230 Fix EV just being V on the console sidebar (Lightli) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/output.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index 45d8b6852f..8b3633e0fc 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -1042,7 +1042,7 @@ static void _print_stats_doom(int x, int y) // most of the time). if (you.attribute[ATTR_DOOM] == 0) { - CPRINTF(" "); + CPRINTF(" "); return; } -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 19:55:15
|
via 9a6bba5181c9a2caf331894991c9784f9a6004ef (commit) from 02f3d51f4c005bb60d7fdd18431b22e9be8f654c (commit) ----------------------------------------------------------------------- commit 9a6bba5181c9a2caf331894991c9784f9a6004ef Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 17:19:57 2025 -0230 (Maybe) fix a webtiles parchment rendering crash I'm not yet sure how it's possible to be told to draw a parchment without there being a parchment there to draw, but in the meantime this will hopefully allow any affected player to proceed. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/tileweb.cc | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/crawl-ref/source/tileweb.cc b/crawl-ref/source/tileweb.cc index 993684a700..944035fba0 100644 --- a/crawl-ref/source/tileweb.cc +++ b/crawl-ref/source/tileweb.cc @@ -1593,14 +1593,19 @@ void TilesFramework::_send_cell(const coord_def &gc, if (fg_idx >= TILE_PARCHMENT_LOW && fg_idx <= TILE_PARCHMENT_HIGH) { const item_def* item = next_mc.item(); - spell_type spell = static_cast<spell_type>(item->plus); - const tileidx_t school1 = tileidx_parchment_overlay(spell, 0); - const tileidx_t school2 = tileidx_parchment_overlay(spell, 1); - - if (school1 > 0) - json_write_int("overlay1", school1); - if (school2 > 0) - json_write_int("overlay2", school2); + // XXX: Not yet sure how it's possible to get here without an + // item we're trying to render, and yet it appears to be. + if (item) + { + spell_type spell = static_cast<spell_type>(item->plus); + const tileidx_t school1 = tileidx_parchment_overlay(spell, 0); + const tileidx_t school2 = tileidx_parchment_overlay(spell, 1); + + if (school1 > 0) + json_write_int("overlay1", school1); + if (school2 > 0) + json_write_int("overlay2", school2); + } } } -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-05 17:35:11
|
via 02f3d51f4c005bb60d7fdd18431b22e9be8f654c (commit) from 3197762f3de73852df71882fa0e5588e0aae37ae (commit) ----------------------------------------------------------------------- commit 02f3d51f4c005bb60d7fdd18431b22e9be8f654c Author: DracoOmega <dra...@gm...> Date: Sat Jul 5 15:02:23 2025 -0230 Don't upgrade shop items via Lucky if they can't fit in one's inventory While shop purchases are normally unaffected, if the player's inventory was full at the time, they geet dropped on the ground instead, which *did* allow Lucky to see them to upgrade. Now, it should not. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/shopping.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index e59154f64c..4458b0caa7 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -865,6 +865,9 @@ static bool _purchase(shop_struct& shop, const level_pos& pos, int index, if (item.is_identified()) item.flags |= ISFLAG_NOTED_ID; + // Don't upgrade item with Lucky mutation if it can't fit in our pack. + item.flags |= ISFLAG_SEEN; + // Record milestones for purchasing especially notable items (runes, // gems, the Orb). milestone_check(item); -- Dungeon Crawl Stone Soup |