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
(152) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <gi...@cr...> - 2025-07-16 14:50:10
|
via ab3abaf5e2f6025059f6636c1cb0dada0119547d (commit) from 4c6382bb59ae868e552bafe7c0311b430072fc5c (commit) ----------------------------------------------------------------------- commit ab3abaf5e2f6025059f6636c1cb0dada0119547d Author: hellmonk <nld...@gm...> Date: Wed Jul 16 09:46:37 2025 -0500 Send lured monsters home instead of dismissing Probably works better, and makes more sense. Suggested independently by DracoOmega and np7. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/mon-transit.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crawl-ref/source/mon-transit.cc b/crawl-ref/source/mon-transit.cc index 0807fe9bd2..a1afd0eb79 100644 --- a/crawl-ref/source/mon-transit.cc +++ b/crawl-ref/source/mon-transit.cc @@ -125,11 +125,12 @@ static void _level_place_followers(m_transit_list &m) { // old loc isn't really meaningful new_mon->apply_location_effects(new_mon->pos()); - // Dismiss monsters that are bored of being lured around + // Monsters that are bored of being lured around go home if (!new_mon->friendly() && far_from_origin(new_mon->origin_level)) { - new_mon->flags |= MF_HARD_RESET | MF_NO_REWARD; - monster_die(*new_mon, KILL_RESET, NON_MONSTER); + new_mon->set_transit(new_mon->origin_level); + new_mon->destroy_inventory(); + monster_cleanup(new_mon); } } m.erase(mon); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-16 14:05:16
|
via 61dfde65f731c8c12635c7b49e8999e3d85ca5b1 (commit) via a900f1dcfa0515d57e48d6499e32536c7b03c0db (commit) via 4e65442990e40cbac551b31edb84df436f6b37b7 (commit) via ed85b0c8cf6f7a5db171839918e0abcf5449bb27 (commit) via 47bdf687761b8247aa043ddf56e8d43612880234 (commit) via f7319d04a1ba7c934976f71bbcb594f62a231fe1 (commit) from 4be4d403487162b4a280d0b1d164a492f374d54b (commit) ----------------------------------------------------------------------- commit 61dfde65f731c8c12635c7b49e8999e3d85ca5b1 Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 11:25:53 2025 -0230 Rename RevParry again (to RevGuard) and change the enums to match I'm not 100% happy with it, but I feel it may convey the parrying property a little better than RevArmour did. commit a900f1dcfa0515d57e48d6499e32536c7b03c0db Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 10:55:18 2025 -0230 Add a linebreak between amulet descriptions and where they were obtained Makes it a bit easier to read (and is present for most other items). commit 4e65442990e40cbac551b31edb84df436f6b37b7 Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 10:54:42 2025 -0230 Fix missing Amulet of Dissipation description (And fix it not getting an inscription on randarts). commit ed85b0c8cf6f7a5db171839918e0abcf5449bb27 Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 10:49:42 2025 -0230 Don't show rings of fire/ice on the Known Items screen commit 47bdf687761b8247aa043ddf56e8d43612880234 Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 10:44:09 2025 -0230 Change Amulet of Alchemy's secondary effect Instead of reducing the cost of Alchemy spells by 1, it now restores a small amount of MP (currently 3-6) whenever the wearer drinks an otherwise-useful potion. This is a less narrow secondary effect than before (it seems a good idea to me for amulets to be a little broader in their appeal) and leans into another thematic association of alchemy. Additionally, MPRegen amulets were often by-far the most desireable amulet for many mages and this might give it a little competition in that regard (ideally being a little less strong passively, but better in burst situations). To discourage fiddly amulet swapping, it requires attuning to the amulet at full MP, just like MPRegen does. (It's possible I've set the numbers too high, but I'm curious how players will feel to use it.) commit f7319d04a1ba7c934976f71bbcb594f62a231fe1 Author: DracoOmega <dra...@gm...> Date: Wed Jul 16 10:37:39 2025 -0230 Fix outdated Wildshape description / messages (And give it an inscription on randarts). ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/artefact.cc | 6 +++--- crawl-ref/source/dat/descript/items.txt | 13 ++++++++++--- crawl-ref/source/describe.cc | 12 +++++++----- crawl-ref/source/item-name.cc | 4 ++-- crawl-ref/source/item-prop-enum.h | 2 +- crawl-ref/source/item-prop.cc | 5 ++++- crawl-ref/source/melee-attack.cc | 2 +- crawl-ref/source/player-equip.cc | 12 +++++------- crawl-ref/source/player-reacts.cc | 24 ++++++++++++++++++------ crawl-ref/source/player.cc | 6 +++--- crawl-ref/source/potion.cc | 14 +++++++++++++- crawl-ref/source/spl-summoning.cc | 7 +++++++ crawl-ref/source/spl-util.cc | 3 --- 13 files changed, 74 insertions(+), 36 deletions(-) diff --git a/crawl-ref/source/artefact.cc b/crawl-ref/source/artefact.cc index 6b717e5bf5..4fce0607e2 100644 --- a/crawl-ref/source/artefact.cc +++ b/crawl-ref/source/artefact.cc @@ -1987,7 +1987,7 @@ enum gizmo_prop_type GIZMO_REPEL, GIZMO_RAMPAGE, GIZMO_GADGETEER, - GIZMO_PARRYREV, + GIZMO_REVGUARD, GIZMO_SPELLMOTOR, GIZMO_AUTODAZZLE, LAST_RARE_GIZMO = GIZMO_AUTODAZZLE, @@ -2053,8 +2053,8 @@ static void _apply_gizmo_prop(item_def& gizmo, gizmo_prop_type prop) gizmo.brand = SPGIZMO_GADGETEER; break; - case GIZMO_PARRYREV: - gizmo.brand = SPGIZMO_PARRYREV; + case GIZMO_REVGUARD: + gizmo.brand = SPGIZMO_REVGUARD; break; case GIZMO_SPELLMOTOR: diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index c638835cbc..822794bac9 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -8,7 +8,15 @@ corrosive slime flow off it like water. %%%% Amulet of alchemy -An amulet that enhances and reduces the mp cost of alchemy spells. +An amulet that enhances the power of the wearer's alchemy spells and also allows +them to extract small amounts of magical energy from any potion they drink. The +latter effect only functions once the amulet has attuned itself to the wearer's +body with full reserves of magic. +%%%% +amulet of dissipation + +An amulet which causes negative status effects upon the wearer to expire twice +as quickly with time. %%%% amulet of faith @@ -52,8 +60,7 @@ enemies, but only while moving and waiting. While taking other actions %%%% amulet of wildshape -An amulet which improves its wearer's skill with shapeshifting. The benefit -provided depends somewhat on the wearer's base shapeshifting skill. +An amulet which improves its wearer's skill with Shapeshifting. %%%% animal skin diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index f17c2a0ae8..442f94acdd 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -262,6 +262,9 @@ const char* jewellery_base_ability_string(int subtype) case AMU_GUARDIAN_SPIRIT: return "Spirit"; case AMU_FAITH: return "Faith"; case AMU_REFLECTION: return "Reflect"; + case AMU_WILDSHAPE: return "Wildshape"; + case AMU_ALCHEMY: return "Alch+"; + case AMU_DISSIPATION: return "Dissipate"; #if TAG_MAJOR_VERSION == 34 case AMU_INACCURACY: return "Inacc"; #endif @@ -685,7 +688,8 @@ static const char* _jewellery_base_ability_description(int subtype) case AMU_WILDSHAPE: return "It improves your skill with shapeshifting (+5)"; case AMU_ALCHEMY: - return "It enhances your alchemy spells and reduces their mp cost."; + return "It enhances your alchemy spells and restores some MP when you " + "drink potions."; case AMU_DISSIPATION: return "It reduces the duration of hostile enchantments and decays " "magical contamination more quickly."; @@ -2697,7 +2701,7 @@ static string _describe_gizmo(const item_def &item) "a 30% chance to not spend a charge.\n"; break; - case SPGIZMO_PARRYREV: + case SPGIZMO_REVGUARD: ret += "Your AC increases as you Rev (up to +5) and while " "fully Revved, your attacks may disarm enemies.\n"; break; @@ -2933,9 +2937,7 @@ string get_item_description(const item_def &item, case OBJ_JEWELLERY: desc = _describe_jewellery(item, verbose); - if (desc.empty()) - need_extra_line = false; - else + if (!desc.empty()) description << desc; break; diff --git a/crawl-ref/source/item-name.cc b/crawl-ref/source/item-name.cc index faa5b6a4d2..e9e41c21e9 100644 --- a/crawl-ref/source/item-name.cc +++ b/crawl-ref/source/item-name.cc @@ -862,7 +862,7 @@ const char* jewellery_effect_name(int jeweltype, bool terse) #endif case AMU_ACROBAT: return "Acrobat"; case AMU_WILDSHAPE: return "Wildshape"; - case AMU_ALCHEMY: return "Alch"; + case AMU_ALCHEMY: return "Alch+"; case AMU_DISSIPATION: return "Dissipate"; case AMU_NOTHING: return ""; default: return "buggy"; @@ -1041,7 +1041,7 @@ const char* gizmo_effect_name(int type) { case SPGIZMO_SPELLMOTOR: return "SpellMotor"; case SPGIZMO_GADGETEER: return "Gadgeteer"; - case SPGIZMO_PARRYREV: return "RevArmour"; + case SPGIZMO_REVGUARD: return "RevGuard"; case SPGIZMO_AUTODAZZLE: return "AutoDazzle"; default: diff --git a/crawl-ref/source/item-prop-enum.h b/crawl-ref/source/item-prop-enum.h index 3e0727a4d9..f3f6a4a940 100644 --- a/crawl-ref/source/item-prop-enum.h +++ b/crawl-ref/source/item-prop-enum.h @@ -902,6 +902,6 @@ enum special_gizmo_type SPGIZMO_NORMAL, SPGIZMO_SPELLMOTOR, SPGIZMO_GADGETEER, - SPGIZMO_PARRYREV, + SPGIZMO_REVGUARD, SPGIZMO_AUTODAZZLE, }; diff --git a/crawl-ref/source/item-prop.cc b/crawl-ref/source/item-prop.cc index 683ee472b9..3f4868527f 100644 --- a/crawl-ref/source/item-prop.cc +++ b/crawl-ref/source/item-prop.cc @@ -1033,6 +1033,8 @@ const set<pair<object_class_type, int> > removed_items = { OBJ_JEWELLERY, RING_TELEPORTATION }, { OBJ_JEWELLERY, RING_ATTENTION }, { OBJ_JEWELLERY, RING_STEALTH }, + { OBJ_JEWELLERY, RING_FIRE }, + { OBJ_JEWELLERY, RING_ICE }, { OBJ_STAVES, STAFF_ENCHANTMENT }, { OBJ_STAVES, STAFF_CHANNELLING }, { OBJ_STAVES, STAFF_POWER }, @@ -3137,7 +3139,8 @@ bool is_regen_item(const item_def& item) bool is_mana_regen_item(const item_def& item) { return is_artefact(item) && artefact_property(item, ARTP_MANA_REGENERATION) - || item.is_type(OBJ_JEWELLERY, AMU_MANA_REGENERATION); + || item.is_type(OBJ_JEWELLERY, AMU_MANA_REGENERATION) + || item.is_type(OBJ_JEWELLERY, AMU_ALCHEMY); } string talisman_type_name(int type) diff --git a/crawl-ref/source/melee-attack.cc b/crawl-ref/source/melee-attack.cc index 684b9f4af9..39e34bc47c 100644 --- a/crawl-ref/source/melee-attack.cc +++ b/crawl-ref/source/melee-attack.cc @@ -595,7 +595,7 @@ void melee_attack::try_parry_disarm() && defender->is_monster() && defender->alive() && you.rev_percent() > FULL_REV_PERCENT - && you.wearing_ego(OBJ_GIZMOS, SPGIZMO_PARRYREV) + && you.wearing_ego(OBJ_GIZMOS, SPGIZMO_REVGUARD) && one_chance_in(50 + defender->get_experience_level() * 2 - you.get_experience_level())) { diff --git a/crawl-ref/source/player-equip.cc b/crawl-ref/source/player-equip.cc index f422628708..57e7e9ec3f 100644 --- a/crawl-ref/source/player-equip.cc +++ b/crawl-ref/source/player-equip.cc @@ -2436,7 +2436,8 @@ static void _handle_regen_item_equip(const item_def& item) return; } #endif - if (regen_mp && !regen_hp && !player_regenerates_mp()) + if (regen_mp && !regen_hp && !player_regenerates_mp() + && !item.is_type(OBJ_JEWELLERY, AMU_ALCHEMY)) { mprf("The %s feel%s cold and inert.", item_name.c_str(), plural ? "" : "s"); @@ -2560,15 +2561,12 @@ static void _equip_jewellery_effect(item_def &item, bool unmeld) break; case AMU_WILDSHAPE: - if (!you.skill(SK_SHAPESHIFTING)) - mpr("You feel meek and tame."); - else - mpr("You feel a wild power."); + mpr("You feel a wild power."); _change_wildshape_status(); break; case AMU_ALCHEMY: - mpr("You feel more attuned to alchemy."); + mpr("You feel a deeper understanding of alchemy."); break; case AMU_DISSIPATION: @@ -2649,7 +2647,7 @@ static void _unequip_jewellery_effect(item_def &item, bool meld) break; case AMU_WILDSHAPE: - _change_wildshape_status(); + _change_wildshape_status(); break; #if TAG_MAJOR_VERSION == 34 diff --git a/crawl-ref/source/player-reacts.cc b/crawl-ref/source/player-reacts.cc index 29f3556e7f..b426c0be17 100644 --- a/crawl-ref/source/player-reacts.cc +++ b/crawl-ref/source/player-reacts.cc @@ -1050,6 +1050,7 @@ void maybe_attune_regen_items(bool attune_regen, bool attune_mana_regen) bool gained_regen = false; bool gained_mana_regen = false; + bool gained_alchemy = false; for (player_equip_entry& entry : you.equipment.items) { @@ -1065,7 +1066,9 @@ void maybe_attune_regen_items(bool attune_regen, bool attune_mana_regen) // Track which properties we should notify the player they have gained. if (!gained_regen && is_regen_item(arm)) gained_regen = true; - if (!gained_mana_regen && is_mana_regen_item(arm)) + if (arm.is_type(OBJ_JEWELLERY, AMU_ALCHEMY)) + gained_alchemy = true; + else if (!gained_mana_regen && is_mana_regen_item(arm)) gained_mana_regen = true; eq_list.push_back(is_artefact(arm) ? get_artefact_name(arm) : @@ -1081,14 +1084,23 @@ void maybe_attune_regen_items(bool attune_regen, bool attune_mana_regen) if (eq_list.empty()) return; - const char* msg = (gained_regen && gained_mana_regen) ? " health and magic" - : (gained_regen ? "" : " magic"); + vector<string> msgs; + + if (gained_regen || gained_mana_regen) + { + msgs.emplace_back(make_stringf("regenerate %s more quickly", + gained_regen && gained_mana_regen ? " health and magic" + : (gained_regen ? "" : " magic"))); + } + if (gained_alchemy) + msgs.emplace_back("extract magic from the potions you drink"); plural = plural || eq_list.size() > 1; string eq_str = comma_separated_line(eq_list.begin(), eq_list.end()); - mprf("Your %s attune%s to your body, and you begin to regenerate%s " - "more quickly.", eq_str.c_str(), plural ? " themselves" : "s itself", - msg); + string msg_str = comma_separated_line(msgs.begin(), msgs.end()); + mprf("Your %s attune%s to your body, and you begin to %s.", + eq_str.c_str(), plural ? " themselves" : "s itself", + msg_str.c_str()); } // cjo: Handles player hp and mp regeneration. If the counter diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 0a46075565..7c6571d7c2 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -6410,7 +6410,7 @@ int player::armour_class_scaled(int scale) const AC += _meek_bonus() * 100; } - if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_PARRYREV)) + if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_REVGUARD)) { const static int rev_bonus[] = {0, 200, 400, 500}; AC += rev_bonus[you.rev_tier()]; @@ -8577,7 +8577,7 @@ void player::rev_down(int dur) const int perc_lost = div_rand_round(dur * 5, 6); you.props[REV_PERCENT_KEY] = max(0, you.rev_percent() - perc_lost); - if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_PARRYREV)) + if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_REVGUARD)) you.redraw_armour_class = true; } @@ -8590,7 +8590,7 @@ void player::rev_up(int dur) const int perc_gained = random_range(dur * 2, dur * 3); you.props[REV_PERCENT_KEY] = min(100, you.rev_percent() + perc_gained); - if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_PARRYREV)) + if (you.wearing_ego(OBJ_GIZMOS, SPGIZMO_REVGUARD)) you.redraw_armour_class = true; } diff --git a/crawl-ref/source/potion.cc b/crawl-ref/source/potion.cc index 979982641e..54ea90ae43 100644 --- a/crawl-ref/source/potion.cc +++ b/crawl-ref/source/potion.cc @@ -934,7 +934,19 @@ bool quaff_potion(item_def &potion) } const potion_type ptyp = static_cast<potion_type>(potion.sub_type); - return get_potion_effect(ptyp)->quaff(was_known); + if (get_potion_effect(ptyp)->quaff(was_known)) + { + if (you.wearing(OBJ_JEWELLERY, AMU_ALCHEMY, false, true) + && you.magic_points < you.max_magic_points) + { + mpr("You extract magical energy from the potion."); + inc_mp(random_range(3, 6)); + } + + return true; + } + + return false; } /** diff --git a/crawl-ref/source/spl-summoning.cc b/crawl-ref/source/spl-summoning.cc index ba9c7292b3..93ede33fbe 100644 --- a/crawl-ref/source/spl-summoning.cc +++ b/crawl-ref/source/spl-summoning.cc @@ -4307,6 +4307,13 @@ static void _do_player_potion() if (you.has_mutation(MUT_DRUNKEN_BRAWLING) && oni_likes_potion(potion)) oni_drunken_swing(); + if (you.wearing(OBJ_JEWELLERY, AMU_ALCHEMY, false, true) + && you.magic_points < you.max_magic_points) + { + mpr("You extract magical energy from the potion."); + inc_mp(random_range(3, 6)); + } + // Mildly shorter duration than drinking the potion normally. get_potion_effect(potion)->effect(true, 15); } diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 17d547adb2..4fa847bda5 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -555,9 +555,6 @@ int spell_mana(spell_type which_spell, bool real_spell) if (you.has_mutation(MUT_EFFICIENT_MAGIC)) cost = max(1, cost - you.get_mutation_level(MUT_EFFICIENT_MAGIC)); - if (spell_typematch(which_spell, spschool::alchemy) && real_spell) - cost = max(1, cost - you.wearing_jewellery(AMU_ALCHEMY)); - if (you.duration[DUR_BRILLIANCE] || you.unrand_equipped(UNRAND_FOLLY)) cost = cost/2 + cost%2; // round up -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-15 23:05:14
|
at 4c6382bb59ae868e552bafe7c0311b430072fc5c (commit) ----------------------------------------------------------------------- commit 4c6382bb59ae868e552bafe7c0311b430072fc5c Author: hellmonk <nld...@gm...> Date: Tue Jul 15 17:51:17 2025 -0500 Dismiss monsters that are lured too far. Experimental change. Store the origin level of each monster in its structure, and track how far away from the origin we are on transit to a new floor. If the monster is 3 or more floors away after transit, it goes away forever, yielding no items or exp. This only applies to hostile monsters in connected branches, and is turned off for the orbrun. This is a thing that shouldn't be noticeable for most players. It prevents the sort of degenerate exploits that happened with eg. silent spectres, without having to either tag every monster with an exploitable mechanic to not use stairs or to avoid using those mechanics altogether. So now making an earlygame digging monster, or monsters with double-edged auras or other symmetrical mechanics should be possible. I left in a bunch of testing messages for easier debugging. Those should be removed and an actual message should be added before merge. ----------------------------------------------------------------------- -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-15 07:40:14
|
via 1673ddcb0ae94647088d2a3d4b12af2567f572dd (commit) from 90afa8895f949b052c87b5a2574869fd94d62c6c (commit) ----------------------------------------------------------------------- commit 1673ddcb0ae94647088d2a3d4b12af2567f572dd Author: David Lawrence Ramsey <poo...@gm...> Date: Tue Jul 15 01:39:51 2025 -0500 Make Zonguldrok's reaping count as evil (#4655). Since it's not a weapon, but armour that adds the reaping brand to whatever attack you're using, manually trigger the evil god conduct for it, just as we do with Damnation. But do this after all other brand checks, since it effectively gives your weapon the reaping brand on top of whatever brand it has. NOTE: Regarding brands with manual conduct triggers, one-shotting a monster with Damnation, Zonguldrok, or a chaos effect that doesn't resolve to a brand that works on dead monsters will not trigger the appropriate conduct when it should, but that's a separate issue, and this change still brings us closer to the correct behaviour. Also, there's no warning prompt about potential penance when wielding Zonguldrok, because all the warning prompt code is written with the assumption that only weapons can trigger conducts, not armour, but that's also a separate issue. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/attack.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/crawl-ref/source/attack.cc b/crawl-ref/source/attack.cc index 038aab8828..837f8ccfaf 100644 --- a/crawl-ref/source/attack.cc +++ b/crawl-ref/source/attack.cc @@ -1388,6 +1388,11 @@ bool attack::apply_damage_brand(const char *what) did_god_conduct(DID_CHAOS, 2 + random2(3)); } + // Since this adds the reaping brand to all attacks, check it after all + // other brands. + if (attacker->is_player() && you.unrand_equipped(UNRAND_SKULL_OF_ZONGULDROK)) + did_god_conduct(DID_EVIL, 2 + random2(3)); + if (!obvious_effect) obvious_effect = !special_damage_message.empty(); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-15 04:30:29
|
via 4be4d403487162b4a280d0b1d164a492f374d54b (commit) from 61fba5b580746a8baa9ea45682673bbc21220b15 (commit) ----------------------------------------------------------------------- commit 4be4d403487162b4a280d0b1d164a492f374d54b Author: hellmonk <nld...@gm...> Date: Mon Jul 14 19:14:35 2025 -0500 Change shield ego weighting Split across types to mimic armours. Allow ponderous tower shields. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/item-prop.cc | 58 ++++++++++++++++++++++++++++++------------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/crawl-ref/source/item-prop.cc b/crawl-ref/source/item-prop.cc index 66afea0fbb..683ee472b9 100644 --- a/crawl-ref/source/item-prop.cc +++ b/crawl-ref/source/item-prop.cc @@ -81,19 +81,6 @@ static const vector<ego_weight_tuple> BASIC_BODY_EGOS = { { SPARM_POSITIVE_ENERGY, 2 }, }; -// Total Weight 100 -static const vector<ego_weight_tuple> SCALE_BODY_EGOS = { - { SPARM_FIRE_RESISTANCE, 20 }, - { SPARM_COLD_RESISTANCE, 20 }, - { SPARM_POISON_RESISTANCE, 10 }, - { SPARM_WILLPOWER, 15 }, - { SPARM_POSITIVE_ENERGY, 7 }, - { SPARM_ARCHERY, 7 }, - { SPARM_COMMAND, 7 }, - { SPARM_DEATH, 7 }, - { SPARM_RESONANCE, 7 }, -}; - // Total weight 100. static const vector<ego_weight_tuple> HEAVY_BODY_EGOS = { { SPARM_FIRE_RESISTANCE, 21 }, @@ -156,7 +143,17 @@ static const armour_def Armour_prop[] = { ARM_RING_MAIL, "ring mail", 5, -70, 40, SLOT_BODY_ARMOUR, SIZE_SMALL, SIZE_MEDIUM, true, 100, BASIC_BODY_EGOS }, { ARM_SCALE_MAIL, "scale mail", 6, -100, 40, - SLOT_BODY_ARMOUR, SIZE_SMALL, SIZE_MEDIUM, true, 10, SCALE_BODY_EGOS }, + SLOT_BODY_ARMOUR, SIZE_SMALL, SIZE_MEDIUM, true, 10, { + { SPARM_FIRE_RESISTANCE, 20 }, + { SPARM_COLD_RESISTANCE, 20 }, + { SPARM_POISON_RESISTANCE, 10 }, + { SPARM_WILLPOWER, 15 }, + { SPARM_POSITIVE_ENERGY, 7 }, + { SPARM_ARCHERY, 7 }, + { SPARM_COMMAND, 7 }, + { SPARM_DEATH, 7 }, + { SPARM_RESONANCE, 7 }, + }}, { ARM_CHAIN_MAIL, "chain mail", 8, -140, 60, SLOT_BODY_ARMOUR, SIZE_SMALL, SIZE_MEDIUM, true, 10, HEAVY_BODY_EGOS }, { ARM_PLATE_ARMOUR, "plate armour", 10, -180, 180, @@ -262,11 +259,38 @@ static const armour_def Armour_prop[] = { SPARM_ENERGY, 1 }, }}, { ARM_BUCKLER, "buckler", 3, -50, 45, - SLOT_OFFHAND, SIZE_LITTLE, SIZE_MEDIUM, true, 0, SHIELD_EGOS }, + SLOT_OFFHAND, SIZE_LITTLE, SIZE_MEDIUM, true, 0, { + { SPARM_RESISTANCE, 2 }, + { SPARM_FIRE_RESISTANCE, 5 }, + { SPARM_COLD_RESISTANCE, 5 }, + { SPARM_POISON_RESISTANCE, 5 }, + { SPARM_POSITIVE_ENERGY, 5 }, + { SPARM_NORMAL, 5 }, + { SPARM_REFLECTION, 9 }, + { SPARM_PROTECTION, 14 }, + }}, { ARM_KITE_SHIELD, "kite shield", 8, -100, 70, - SLOT_OFFHAND, SIZE_SMALL, SIZE_LARGE, true, 0, SHIELD_EGOS }, + SLOT_OFFHAND, SIZE_SMALL, SIZE_LARGE, true, 0,{ + { SPARM_FIRE_RESISTANCE, 4 }, + { SPARM_COLD_RESISTANCE, 4 }, + { SPARM_POISON_RESISTANCE, 4 }, + { SPARM_POSITIVE_ENERGY, 4 }, + { SPARM_NORMAL, 4 }, + { SPARM_PRESERVATION, 4 }, + { SPARM_REFLECTION, 13 }, + { SPARM_PROTECTION, 13 }, + }}, { ARM_TOWER_SHIELD, "tower shield", 13, -150, 80, - SLOT_OFFHAND, SIZE_MEDIUM, SIZE_GIANT, true, 0, SHIELD_EGOS }, + SLOT_OFFHAND, SIZE_MEDIUM, SIZE_GIANT, true, 0, { + { SPARM_FIRE_RESISTANCE, 3 }, + { SPARM_COLD_RESISTANCE, 3 }, + { SPARM_POISON_RESISTANCE, 3 }, + { SPARM_POSITIVE_ENERGY, 3 }, + { SPARM_PONDEROUSNESS, 3 }, + { SPARM_PRESERVATION, 5 }, + { SPARM_REFLECTION, 5 }, + { SPARM_PROTECTION, 15 }, + }}, // Following all ARM_ entries for the benefit of util/gather_items DRAGON_ARMOUR(STEAM, "steam", 5, 0, 400, -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-14 23:40:13
|
via 61fba5b580746a8baa9ea45682673bbc21220b15 (commit) via b8fd483c09a62f682253259a53d06affcfa77431 (commit) via 62605002da157668d967554a0d3b14ee27669b7d (commit) from bc61345c7189d402f1b0917fbf7399209dc6bdda (commit) ----------------------------------------------------------------------- commit 61fba5b580746a8baa9ea45682673bbc21220b15 Author: hellmonk <nld...@gm...> Date: Mon Jul 14 18:35:51 2025 -0500 rename revparry commit b8fd483c09a62f682253259a53d06affcfa77431 Author: hellmonk <nld...@gm...> Date: Mon Jul 14 18:25:38 2025 -0500 rename deflection ego to parrying commit 62605002da157668d967554a0d3b14ee27669b7d Author: hellmonk <nld...@gm...> Date: Mon Jul 14 17:45:48 2025 -0500 Revert "Rings of conjuration" Moved conj enhancer into orb slot earlier. This reverts commit 70ffe06879018ce7d965db1513c7ba975b12bad7. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/artefact.cc | 1 - crawl-ref/source/dat/descript/items.txt | 4 ---- crawl-ref/source/describe.cc | 2 +- crawl-ref/source/duration-data.h | 6 +++--- crawl-ref/source/duration-type.h | 2 +- crawl-ref/source/fight.cc | 2 +- crawl-ref/source/item-name.cc | 10 +++------- crawl-ref/source/item-prop-enum.h | 3 +-- crawl-ref/source/item-prop.cc | 2 +- crawl-ref/source/makeitem.cc | 2 +- crawl-ref/source/mapdef.cc | 2 +- crawl-ref/source/output.cc | 2 +- crawl-ref/source/player-equip.cc | 4 ++-- crawl-ref/source/player-equip.h | 2 +- crawl-ref/source/player.cc | 17 ++++++++--------- crawl-ref/source/player.h | 4 ++-- crawl-ref/source/rltiles/dc-item.txt | 10 ++++++---- .../armour/brands/{i-deflection.png => i-parrying.png} | Bin crawl-ref/source/rltiles/item/ring/i-conjuration.png | Bin 185 -> 0 bytes crawl-ref/source/shopping.cc | 3 +-- crawl-ref/source/tileweb.cc | 6 +++--- crawl-ref/source/wiz-dump.cc | 2 -- 22 files changed, 37 insertions(+), 49 deletions(-) rename crawl-ref/source/rltiles/item/armour/brands/{i-deflection.png => i-parrying.png} (100%) delete mode 100644 crawl-ref/source/rltiles/item/ring/i-conjuration.png diff --git a/crawl-ref/source/artefact.cc b/crawl-ref/source/artefact.cc index eaf456ca26..6b717e5bf5 100644 --- a/crawl-ref/source/artefact.cc +++ b/crawl-ref/source/artefact.cc @@ -393,7 +393,6 @@ static map<jewellery_type, vector<artp_value>> jewellery_artps = { { RING_POSITIVE_ENERGY, { { ARTP_NEGATIVE_ENERGY, 1 } } }, { RING_WILLPOWER, { { ARTP_WILLPOWER, 1 } } }, { RING_RESIST_CORROSION, { { ARTP_RCORR, 1 } } }, - { RING_CONJURATION, { { ARTP_ENHANCE_CONJ, 1 } } }, { RING_STRENGTH, { { ARTP_STRENGTH, 0 } } }, { RING_INTELLIGENCE, { { ARTP_INTELLIGENCE, 0 } } }, diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index 3ba739f4c3..c638835cbc 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -1219,10 +1219,6 @@ ring mail A light leather suit reinforced with a covering of metal rings. It is protective in combat, but slightly uncomfortable due to the added weight. %%%% -ring of conjuration - -A ring that enhances its wearer's conjuration spells. -%%%% ring of dexterity A ring that increases the dexterity of its wearer. diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index ce782dff38..f17c2a0ae8 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -2384,7 +2384,7 @@ static const char* _item_ego_desc(special_armour_type ego) return "it improves the success rate of the wearer's forgecraft spells " " and enhances their melee attacks proportionally to forgecraft " " skill"; - case SPARM_DEFLECTION: + case SPARM_PARRYING: return "It shields the wearer if their last action was a melee attack. " "The shielding is half as effective if the wielder's offhand is " "occupied by an item other than their weapon."; diff --git a/crawl-ref/source/duration-data.h b/crawl-ref/source/duration-data.h index a974162551..80a4a8a72f 100644 --- a/crawl-ref/source/duration-data.h +++ b/crawl-ref/source/duration-data.h @@ -748,9 +748,9 @@ static const duration_def duration_data[] = "Your melee attacks are strengthened by primal bloodlust.", D_EXPIRES, {{ "Your bloodlust subsides." }, { "You feel your bloodlust ebbing." }}, 6}, - { DUR_DEFLECTION, 0, "", - "deflection", "deflecting", - "You are deflecting attacks and have increased SH.", D_NO_FLAGS, + { DUR_PARRYING, 0, "", + "parry", "parrying", + "You are parrying attacks and have increased SH.", D_NO_FLAGS, {{ "", []() { you.redraw_armour_class = true; }}}}, diff --git a/crawl-ref/source/duration-type.h b/crawl-ref/source/duration-type.h index 04f4bc2d7e..fada471a03 100644 --- a/crawl-ref/source/duration-type.h +++ b/crawl-ref/source/duration-type.h @@ -293,6 +293,6 @@ enum duration_type DUR_MEDUSA_COOLDOWN, DUR_DIMINISHED_SPELLS, DUR_DAZED, - DUR_DEFLECTION, + DUR_PARRYING, NUM_DURATIONS }; diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index 6ae3263f19..5b643ede29 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -638,7 +638,7 @@ void do_player_post_attack(actor *defender, bool was_firewood, bool simu) _do_medusa_stinger(); if (!was_firewood) - update_deflection_status(); + update_parrying_status(); } /** diff --git a/crawl-ref/source/item-name.cc b/crawl-ref/source/item-name.cc index bf83824d6c..faa5b6a4d2 100644 --- a/crawl-ref/source/item-name.cc +++ b/crawl-ref/source/item-name.cc @@ -580,7 +580,7 @@ const char* special_armour_type_name(special_armour_type ego, bool terse) case SPARM_COMMAND: return "command"; case SPARM_DEATH: return "death"; case SPARM_RESONANCE: return "resonance"; - case SPARM_DEFLECTION: return "deflection"; + case SPARM_PARRYING: return "parrying"; case SPARM_CONJURING: return "conjuring"; case SPARM_GLASS: return "glass"; default: return "bugginess"; @@ -639,7 +639,7 @@ const char* special_armour_type_name(special_armour_type ego, bool terse) case SPARM_COMMAND: return "command"; case SPARM_DEATH: return "death"; case SPARM_RESONANCE: return "resonance"; - case SPARM_DEFLECTION: return "deflection"; + case SPARM_PARRYING: return "parrying"; case SPARM_CONJURING: return "conjuring"; case SPARM_GLASS: return "glass"; default: return "buggy"; @@ -803,7 +803,6 @@ const char* jewellery_effect_name(int jeweltype, bool terse) case RING_TELEPORTATION: return "teleportation"; case RING_TELEPORT_CONTROL: return "teleport control"; #endif - case RING_CONJURATION: return "conjuration"; case AMU_MANA_REGENERATION: return "magic regeneration"; case AMU_ACROBAT: return "the acrobat"; #if TAG_MAJOR_VERSION == 34 @@ -856,7 +855,6 @@ const char* jewellery_effect_name(int jeweltype, bool terse) case RING_FIRE: return "obsoleteness"; case RING_ICE: return "obsoleteness"; #endif - case RING_CONJURATION: return "Conj"; case AMU_REGENERATION: return "Regen"; case AMU_MANA_REGENERATION: return "RegenMP"; #if TAG_MAJOR_VERSION == 34 @@ -1043,7 +1041,7 @@ const char* gizmo_effect_name(int type) { case SPGIZMO_SPELLMOTOR: return "SpellMotor"; case SPGIZMO_GADGETEER: return "Gadgeteer"; - case SPGIZMO_PARRYREV: return "RevParry"; + case SPGIZMO_PARRYREV: return "RevArmour"; case SPGIZMO_AUTODAZZLE: return "AutoDazzle"; default: @@ -3462,8 +3460,6 @@ bool is_useless_item(const item_def &item, bool temp, bool ident) return player_res_poison(false, temp, false) > 0; case RING_WIZARDRY: - case RING_CONJURATION: - case AMU_ALCHEMY: return you_worship(GOD_TROG); case RING_FLIGHT: diff --git a/crawl-ref/source/item-prop-enum.h b/crawl-ref/source/item-prop-enum.h index a232d33ae3..3e0727a4d9 100644 --- a/crawl-ref/source/item-prop-enum.h +++ b/crawl-ref/source/item-prop-enum.h @@ -233,7 +233,6 @@ enum jewellery_type RING_ICE, RING_TELEPORT_CONTROL, #endif - RING_CONJURATION, NUM_RINGS, // keep as last ring; should not overlap // with amulets! // RINGS after num_rings are for unique types for artefacts @@ -532,7 +531,7 @@ enum special_armour_type SPARM_COMMAND, SPARM_DEATH, SPARM_RESONANCE, - SPARM_DEFLECTION, + SPARM_PARRYING, SPARM_CONJURING, SPARM_GLASS, NUM_REAL_SPECIAL_ARMOURS, diff --git a/crawl-ref/source/item-prop.cc b/crawl-ref/source/item-prop.cc index 08d39c972d..66afea0fbb 100644 --- a/crawl-ref/source/item-prop.cc +++ b/crawl-ref/source/item-prop.cc @@ -195,7 +195,7 @@ static const armour_def Armour_prop[] = SLOT_GLOVES, SIZE_SMALL, SIZE_MEDIUM, true, 0, { { SPARM_DEXTERITY, 1 }, { SPARM_STRENGTH, 1 }, - { SPARM_DEFLECTION,1 }, + { SPARM_PARRYING, 1 }, { SPARM_HURLING, 1 }, { SPARM_STEALTH, 1 }, { SPARM_INFUSION, 1 }, diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc index 692ce401c6..30c057792c 100644 --- a/crawl-ref/source/makeitem.cc +++ b/crawl-ref/source/makeitem.cc @@ -830,7 +830,7 @@ bool is_armour_brand_ok(int type, int brand, bool strict) // deliberate fall-through case SPARM_HURLING: case SPARM_FIRE: - case SPARM_DEFLECTION: + case SPARM_PARRYING: return slot == SLOT_GLOVES; case SPARM_SEE_INVISIBLE: diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index a55160f213..cc2fb1468c 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -5000,7 +5000,7 @@ int str_to_ego(object_class_type item_type, string ego_str) "command", "death", "resonance", - "deflection", + "parrying", "conjuring", "glass", nullptr diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index 55a8e3562f..5af7dee30b 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -638,7 +638,7 @@ static bool _boosted_sh() && you.duration[DUR_EPHEMERAL_SHIELD]) || (you.get_mutation_level(MUT_CONDENSATION_SHIELD) && !you.duration[DUR_ICEMAIL_DEPLETED]) - || you.duration[DUR_DEFLECTION]; + || you.duration[DUR_PARRYING]; } #ifdef DGL_SIMPLE_MESSAGING diff --git a/crawl-ref/source/player-equip.cc b/crawl-ref/source/player-equip.cc index 272ac341cc..f422628708 100644 --- a/crawl-ref/source/player-equip.cc +++ b/crawl-ref/source/player-equip.cc @@ -2470,9 +2470,9 @@ bool acrobat_boost_active() && (!you.is_constricted()); } -bool deflection_boost_active() +bool parrying_boost_active() { - return player_deflection() && you.duration[DUR_DEFLECTION]; + return player_parrying() && you.duration[DUR_PARRYING]; } static void _equip_amulet_of_reflection() diff --git a/crawl-ref/source/player-equip.h b/crawl-ref/source/player-equip.h index ebab6cffd8..c2b962d55d 100644 --- a/crawl-ref/source/player-equip.h +++ b/crawl-ref/source/player-equip.h @@ -145,6 +145,6 @@ void equip_artefact_effect(item_def &item, bool *show_msgs, bool unmeld); void unequip_artefact_effect(item_def &item, bool *show_msgs, bool meld); bool acrobat_boost_active(); -bool deflection_boost_active(); +bool parrying_boost_active(); void unwield_distortion(bool brand = false); diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index e33417372d..0a46075565 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -1618,7 +1618,6 @@ int player_spec_conj() int sc = 0; sc += you.wearing(OBJ_STAVES, STAFF_CONJURATION); - sc += you.wearing_jewellery(RING_CONJURATION); sc += you.wearing_ego(OBJ_ARMOUR, SPARM_CONJURING); sc += you.scan_artefacts(ARTP_ENHANCE_CONJ); @@ -1854,9 +1853,9 @@ void update_acrobat_status() you.redraw_evasion = true; } -int player_deflection() +int player_parrying() { - int sh = 8 * you.wearing_ego(OBJ_ARMOUR, SPARM_DEFLECTION); + int sh = 8 * you.wearing_ego(OBJ_ARMOUR, SPARM_PARRYING); if (you.get_mutation_level(MUT_MISSING_HAND)) sh /= 2; else @@ -1869,12 +1868,12 @@ int player_deflection() return sh; } -void update_deflection_status() +void update_parrying_status() { - if (player_deflection() <= 0) + if (player_parrying() <= 0) return; - you.duration[DUR_DEFLECTION] = you.time_taken+1; + you.duration[DUR_PARRYING] = you.time_taken+1; you.redraw_armour_class = true; } @@ -2185,8 +2184,8 @@ int player_shield_class(int scale, bool random, bool ignore_temporary) shield += you.wearing_jewellery(AMU_REFLECTION) * AMU_REFLECT_SH * 100; shield += you.scan_artefacts(ARTP_SHIELDING) * 200; - if (you.duration[DUR_DEFLECTION]) - shield += player_deflection() * 200; + if (you.duration[DUR_PARRYING]) + shield += player_parrying() * 200; return random ? div_rand_round(shield * scale, 100) : ((shield * scale) / 100); } @@ -5947,7 +5946,7 @@ bool player::shielded() const return shield() || duration[DUR_DIVINE_SHIELD] || duration[DUR_EPHEMERAL_SHIELD] - || duration[DUR_DEFLECTION] + || duration[DUR_PARRYING] || get_mutation_level(MUT_LARGE_BONE_PLATES) > 0 || qazlal_sh_boost() > 0 || you.wearing_jewellery(AMU_REFLECTION) diff --git a/crawl-ref/source/player.h b/crawl-ref/source/player.h index 92f76c4119..a820e75c2e 100644 --- a/crawl-ref/source/player.h +++ b/crawl-ref/source/player.h @@ -1029,8 +1029,8 @@ bool player_can_hear(const coord_def& p, int hear_distance = 999); void update_acrobat_status(); bool player_acrobatic(); -int player_deflection(); -void update_deflection_status(); +int player_parrying(); +void update_parrying_status(); bool is_effectively_light_armour(const item_def *item); bool player_effectively_in_light_armour(); diff --git a/crawl-ref/source/rltiles/dc-item.txt b/crawl-ref/source/rltiles/dc-item.txt index ec2595bf5d..4aa4ad8bcc 100644 --- a/crawl-ref/source/rltiles/dc-item.txt +++ b/crawl-ref/source/rltiles/dc-item.txt @@ -596,7 +596,7 @@ i-archery BRAND_ARM_ARCHERY i-command BRAND_ARM_COMMAND i-death BRAND_ARM_DEATH i-resonance BRAND_ARM_RESONANCE -i-deflection BRAND_ARM_DEFLECTION +i-parrying BRAND_ARM_PARRYING i-conjuring BRAND_ARM_CONJURING i-glass BRAND_ARM_GLASS BRAND_ARM_LAST %rim 1 @@ -857,13 +857,15 @@ i-wizardry RING_WIZARDRY i-magical-power RING_MAGICAL_POWER i-flight RING_FLIGHT i-positive-energy RING_POSITIVE_ENERGY -i-willpower RING_WILLPOWER # start TAG_MAJOR_VERSION == 34 +i-willpower RING_WILLPOWER i-fire RING_FIRE i-ice RING_ICE -i-c-teleport RING_TELEPORT_CONTROL +i-c-teleport RING_TELEPORT_CONTROL RING_ID_LAST +# end TAG_MAJOR_VERSION +# start TAG_MAJOR_VERSION == 35 +# i-willpower RING_WILLPOWER RING_ID_LAST # end TAG_MAJOR_VERSION -i-conjuration RING_CONJURATION RING_ID_LAST ############amulets %sdir item/amulet diff --git a/crawl-ref/source/rltiles/item/armour/brands/i-deflection.png b/crawl-ref/source/rltiles/item/armour/brands/i-parrying.png similarity index 100% rename from crawl-ref/source/rltiles/item/armour/brands/i-deflection.png rename to crawl-ref/source/rltiles/item/armour/brands/i-parrying.png diff --git a/crawl-ref/source/rltiles/item/ring/i-conjuration.png b/crawl-ref/source/rltiles/item/ring/i-conjuration.png deleted file mode 100644 index 74d5a0f0e8..0000000000 Binary files a/crawl-ref/source/rltiles/item/ring/i-conjuration.png and /dev/null differ diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index 04548449c8..9d9ee0a504 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -390,7 +390,7 @@ unsigned int item_value(item_def item, bool ident) case SPARM_INFUSION: case SPARM_LIGHT: case SPARM_ENERGY: - case SPARM_DEFLECTION: + case SPARM_PARRYING: case SPARM_CONJURING: case SPARM_GLASS: valued += 50; @@ -619,7 +619,6 @@ unsigned int item_value(item_def item, bool ident) break; case RING_WIZARDRY: - case RING_CONJURATION: case AMU_REGENERATION: case AMU_GUARDIAN_SPIRIT: case AMU_MANA_REGENERATION: diff --git a/crawl-ref/source/tileweb.cc b/crawl-ref/source/tileweb.cc index d31306a5bf..817a4b0036 100644 --- a/crawl-ref/source/tileweb.cc +++ b/crawl-ref/source/tileweb.cc @@ -1006,12 +1006,12 @@ static bool _update_statuses(player_info& c) continue; inf.short_text = "acrobatic"; } - else if (status == DUR_DEFLECTION) + else if (status == DUR_PARRYING) { inf = status_info(); - if (!deflection_boost_active()) + if (!parrying_boost_active()) continue; - inf.short_text = "deflecting"; + inf.short_text = "parrying"; } else if (!fill_status_info(status, inf)) // this will reset inf itself continue; diff --git a/crawl-ref/source/wiz-dump.cc b/crawl-ref/source/wiz-dump.cc index c0cd07017e..eeac7f5289 100644 --- a/crawl-ref/source/wiz-dump.cc +++ b/crawl-ref/source/wiz-dump.cc @@ -110,8 +110,6 @@ static uint8_t _jewellery_type_from_artefact_prop(const string &s return RING_FLIGHT; if (s == "rPois") return RING_POISON_RESISTANCE; - if (s == "Conj") - return RING_CONJURATION; if (s.substr(0, 2) == "AC") return RING_PROTECTION; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-14 21:30:15
|
via bc61345c7189d402f1b0917fbf7399209dc6bdda (commit) from c2f5aec0ffef5fedf2b51214eccc6dba23315bfe (commit) ----------------------------------------------------------------------- commit bc61345c7189d402f1b0917fbf7399209dc6bdda Author: hellmonk <nld...@gm...> Date: Mon Jul 14 16:25:06 2025 -0500 fix glass and dissipation egos ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/monster.cc | 20 ++++++++++---------- crawl-ref/source/status.cc | 3 +-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index afd9e0aeb6..83d0e020f1 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -4415,23 +4415,23 @@ int monster::hurt(const actor *agent, int amount, beam_type flavour, } // Trigger corrupting presence and orbs of glass - if (agent && agent->is_player() && alive() - && you.get_mutation_level(MUT_CORRUPTING_PRESENCE)) + if (agent && agent->is_player() && alive()) { - if (one_chance_in(12)) - this->corrode(&you, "Your corrupting presence"); - if (you.get_mutation_level(MUT_CORRUPTING_PRESENCE) > 1 - && one_chance_in(12)) + if (you.get_mutation_level(MUT_CORRUPTING_PRESENCE)) { - this->malmutate(&you, "Your corrupting presence"); + if (one_chance_in(12)) + this->corrode(&you, "Your corrupting presence"); + if (you.get_mutation_level(MUT_CORRUPTING_PRESENCE) > 1 + && one_chance_in(12)) + { + this->malmutate(&you, "Your corrupting presence"); + } } - // needs a future commit to work - /* if (you.wearing_ego(OBJ_ARMOUR, SPARM_GLASS) && x_chance_in_y(40 + you.skill(SK_EVOCATIONS, 10), 500)) { this->vitrify(&you, 4 + random2(5 + you.skill(SK_EVOCATIONS))); - }*/ + } } blame_damage(agent, amount); diff --git a/crawl-ref/source/status.cc b/crawl-ref/source/status.cc index db836273bb..4a221ec455 100644 --- a/crawl-ref/source/status.cc +++ b/crawl-ref/source/status.cc @@ -114,8 +114,7 @@ bool duration_dispellable(duration_type dur) bool duration_negative(duration_type dur) { - return false; - //_lookup_duration(dur)->duration_has_flag(D_NEGATIVE); + return _lookup_duration(dur)->duration_has_flag(D_NEGATIVE); } static int _bad_ench_colour(int lvl, int orange, int red) -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-14 20:40:10
|
via 90afa8895f949b052c87b5a2574869fd94d62c6c (commit) from 3f269bfe755b530276f8f3e0dd00cc7cab9f2c66 (commit) ----------------------------------------------------------------------- commit 90afa8895f949b052c87b5a2574869fd94d62c6c Author: DracoOmega <dra...@gm...> Date: Mon Jul 14 18:09:07 2025 -0230 Fix monsters sometimes not waking from spell damage (Planckenstein) Accidentally broken by 77f475f ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/beam.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index 463335b16f..ec29c6fd55 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -5181,9 +5181,12 @@ void bolt::monster_post_hit(monster* mon, int dmg) // Don't annoy friendlies or good neutrals if the player's beam // did no damage. Hostiles will still take umbrage. - if ((dmg > 0 || !mon->wont_attack()) && !BLAME_KILL(thrower)) + if (dmg > 0 || !mon->wont_attack() || !YOU_KILL(thrower)) { - behaviour_event(mon, ME_ANNOY, agent()); + const actor* to_blame = agent(); + if (thrower == KILL_YOU_CONF) + to_blame = actor_by_mid(source_id); + behaviour_event(mon, ME_ANNOY, to_blame); // behaviour_event can make a monster leave the level or vanish. if (!mon->alive()) -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-14 19:10:14
|
via c2f5aec0ffef5fedf2b51214eccc6dba23315bfe (commit) via 3f269bfe755b530276f8f3e0dd00cc7cab9f2c66 (commit) via f73b0916658deaebf1451429dcd3b8738b14a52b (commit) via 77f475f057e2bdce60da2e5ab67d4e6d87d1693f (commit) via 1c8910b83be96dcf1c87ef32e9841cb5e8afe722 (commit) via 534c8d50344a4d6619f4740d72b836ad3d44bf10 (commit) via 1fa925810a6d5232149caa2c0358e3104e94d1a9 (commit) via a680ef8428e13bb0c88b376fa62f8a9408d2c301 (commit) via 77d58bd2100bb11ffeab9c7a04fb03be70d4e45d (commit) via b7c2e1d855219a9b867eeb221698a9f4ba1a647d (commit) via 7c6d325bc265f633814e8b385bd99b203b1cef93 (commit) via c6894e477c601c286bc8424506c9bb80e190084e (commit) via b873afd9ec3d35eefd53920da16130b7959612d6 (commit) via ff7e82441f3a8dd63c3da6cedf01375270e93ccd (commit) via 8903f4d545fb1a6463b2b6f2b865e772d1dfc1a2 (commit) via 71506e332b858dde8cde902e42d1823f00edc394 (commit) via 79144c677037e29759d624930c45b1401d67b5c2 (commit) via bb92c9d70428e48777545ae3884f0e780995c5e2 (commit) via f72e9069bfe63de11eaa828750857da25ad3fef5 (commit) via e64c27fa7ce588b53477c71df053ebd92be5f873 (commit) via 8c5cb908cfc73e627762bdf7436b292a5c2d4e03 (commit) via b1c27173d81cf9cc87b1b1341df54655f142ccb1 (commit) via 309a5445d7c1d1d52dac55110a22ffc13c5da6b9 (commit) via 17b53af623c32dce5a876bec18be2ead38f9ca2a (commit) via 2db4d66fed52567eb4f6552d8ea7f6ca3e92d8e0 (commit) via baadf7e5a714067a9958ba52ea3c00476695e9ac (commit) via 88f54759262d77cbcfb2dc8ee86c89f852030ddb (commit) via 7acc8d57e806615e4921a963a45d0ceb16042e3b (commit) via 118629b06ae15267be9b6f78e880de1d99736480 (commit) via d11ae09b5d82e5716771dac4331de57c116d6db7 (commit) via 22a848724cb8892b6b1ff5a94f70ec54fcd0c00e (commit) via 740026549f8b43eceff41d839dff048cf23d9f53 (commit) via f559632a36f990224cb2edb4f49eaee648e830e9 (commit) via 92974b8de6179edbd4d80ff7fe8bd95b4779db9e (commit) via a00341b0ceeb71f9798f37140eb40583dd6a359b (commit) via c8829d1dcfce3a3edd22ed31c1c089868b3a85a3 (commit) via 7335e6a58e337fd3b347215cee8ab5c84d244516 (commit) via bb4d5816a9feff6dead4cbce9cb61a7e9ac9e394 (commit) via ad3b09032c7003098d32853ad525631d4c29c246 (commit) via 9a6fec6d823cfc27d24a0f0d84553c713a4e90d1 (commit) via 0396ba8ddbc24c5654335460f38e8b56c1af91fa (commit) via 4f5a5d9d27a146ba959c4bcd139d227b19bcf069 (commit) via b9c99e84c20c0a90bf52ce57f4c917513284c342 (commit) via 826fe50d78a1dbc03aa9e0dbc39f8fd3a81ea09f (commit) via 747caa52fdb131d5585626dbc4a8c6708146f6c8 (commit) via 6ecf20f4ee650c88a32fdb5cb242fac581635053 (commit) via d528656974bfe6f1009bb390b27139a71b5d63c2 (commit) via 87ee97bf79e4f45ab42af9477cfd38f99c844ade (commit) via 19c559dd153d7572574a07992707f342b3afeb38 (commit) via 0cc2c75a636414a3415ebf104f19ae89c3da119c (commit) via a7298f496d1430cacd2289ae141e5699f382a226 (commit) 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) via e6c66e347d84e232bc12bb5368e801c868aee4ca (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) via 585f80a30c841ed172dd866241540bec12be987f (commit) via 0397c6d773c232c007eb90c070b58245361a01fc (commit) via d01ceb9fa2b574c388f1e532e5336244169c13af (commit) via b288c88578b728ec5035d2b8edd5e6ff17a7ae02 (commit) via 732661e5956ffcc897286738603e33fd13acb3ec (commit) via ff597e4505f3e9e5a578097fe6c99286a74548a5 (commit) via ac0a5507583415c825d715de11afca51b1cf932e (commit) via 9ac4a0d9d894b0d5172b123e4d17b0979cdf69a0 (commit) via 22e6b53a17e02726b9667eda3359c15cd2d08ff2 (commit) from 8647d90488a627269ca89e78dc4bfddfe108107c (commit) ----------------------------------------------------------------------- commit c2f5aec0ffef5fedf2b51214eccc6dba23315bfe Merge: 8647d90488 3f269bfe75 Author: Hellmonk <nld...@gm...> Date: Mon Jul 14 14:07:37 2025 -0500 Merge branch 'master' into greathelmet ----------------------------------------------------------------------- Summary of changes: crawl-ref/CREDITS.txt | 11 +- crawl-ref/docs/changelog.txt | 231 ++ crawl-ref/docs/crawl_manual.rst | 16 +- crawl-ref/docs/options_guide.txt | 58 +- crawl-ref/source/ability.cc | 17 +- 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 | 12 +- 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 | 236 +- 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/cio.h | 1 - crawl-ref/source/cloud.cc | 12 +- 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 | 13 +- crawl-ref/source/dat/database/monspell.txt | 60 +- crawl-ref/source/dat/database/randbook.txt | 2 +- crawl-ref/source/dat/database/shout.txt | 17 +- crawl-ref/source/dat/database/wpnnoise.txt | 52 + 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 | 215 +- 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/spells.txt | 6 - 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 | 21 +- crawl-ref/source/dat/descript/ja/spells.txt | 5 - crawl-ref/source/dat/descript/ja/unrand.txt | 2 +- crawl-ref/source/dat/descript/ko/spells.txt | 6 - crawl-ref/source/dat/descript/ko/unrand.txt | 2 +- crawl-ref/source/dat/descript/monsters.txt | 76 +- crawl-ref/source/dat/descript/mutations.txt | 114 +- crawl-ref/source/dat/descript/pl/spells.txt | 6 - crawl-ref/source/dat/descript/pl/unrand.txt | 2 +- crawl-ref/source/dat/descript/quotes.txt | 2 +- crawl-ref/source/dat/descript/ru/spells.txt | 6 - crawl-ref/source/dat/descript/ru/unrand.txt | 2 +- crawl-ref/source/dat/descript/spells.txt | 108 +- crawl-ref/source/dat/descript/status.txt | 35 +- crawl-ref/source/dat/descript/unrand.txt | 4 +- crawl-ref/source/dat/descript/zh/monsters.txt | 14 +- crawl-ref/source/dat/descript/zh/spells.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/bat.yaml | 1 + crawl-ref/source/dat/forms/death.yaml | 1 + crawl-ref/source/dat/forms/fungus.yaml | 1 + crawl-ref/source/dat/forms/pig.yaml | 1 + crawl-ref/source/dat/forms/tree.yaml | 1 + crawl-ref/source/dat/forms/vampire.yaml | 1 + crawl-ref/source/dat/forms/wisp.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/vampire-bloodprince.yaml | 2 +- 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 | 141 +- 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 | 91 +- crawl-ref/source/duration-data.h | 139 +- 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/ghost.cc | 2 + crawl-ref/source/ghost.h | 1 + crawl-ref/source/god-abil.cc | 77 +- 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 | 64 +- crawl-ref/source/invent.cc | 22 +- crawl-ref/source/item-name.cc | 16 +- crawl-ref/source/item-prop.cc | 7 + crawl-ref/source/item-use.cc | 33 + 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 | 35 +- crawl-ref/source/lev-pand.cc | 1 + crawl-ref/source/libconsole.h | 3 - crawl-ref/source/libunix.cc | 15 +- crawl-ref/source/libutil.cc | 6 +- crawl-ref/source/libw32c.cc | 19 +- crawl-ref/source/lookup-help-type.h | 1 + crawl-ref/source/lookup-help.cc | 24 + crawl-ref/source/macro.cc | 1 - crawl-ref/source/main.cc | 6 +- crawl-ref/source/makeitem.cc | 202 +- crawl-ref/source/makeitem.h | 7 + crawl-ref/source/mapdef.cc | 78 +- crawl-ref/source/mapdef.h | 2 +- crawl-ref/source/melee-attack.cc | 62 +- crawl-ref/source/melee-attack.h | 4 +- crawl-ref/source/menu.cc | 1 - crawl-ref/source/mgen-data.h | 9 + crawl-ref/source/mgen-enum.h | 6 +- crawl-ref/source/mon-abil.cc | 101 +- 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 | 199 +- crawl-ref/source/mon-cast.h | 2 +- crawl-ref/source/mon-clone.cc | 1 + crawl-ref/source/mon-death.cc | 92 +- crawl-ref/source/mon-death.h | 1 + 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 | 49 +- crawl-ref/source/mon-info.h | 7 + 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 | 141 +- crawl-ref/source/monster.h | 11 +- crawl-ref/source/movement.cc | 52 +- crawl-ref/source/mutation-data.h | 68 +- crawl-ref/source/mutation-type.h | 8 +- crawl-ref/source/mutation.cc | 657 ++++-- crawl-ref/source/mutation.h | 18 +- crawl-ref/source/ng-setup.cc | 12 +- crawl-ref/source/notes.cc | 16 +- crawl-ref/source/notes.h | 2 + crawl-ref/source/options.h | 11 + crawl-ref/source/ouch.cc | 86 +- crawl-ref/source/output.cc | 205 +- crawl-ref/source/player-act.cc | 10 +- 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 | 411 ++-- 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 +- .../{dngn/traps => UNUSED/floor}/archmage.png | Bin .../{dngn/traps => UNUSED/floor}/devourer.png | Bin .../{dngn/traps => UNUSED/floor}/tyrant.png | Bin .../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 | 5 + 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-mutations.txt | 1 + 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 crawl-ref/source/rltiles/dngn/traps/archmage.png | Bin 8209 -> 1828 bytes crawl-ref/source/rltiles/dngn/traps/devourer.png | Bin 8176 -> 2328 bytes crawl-ref/source/rltiles/dngn/traps/tyrant.png | Bin 6994 -> 1930 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 -> 7859 bytes .../gui/mutations/contamination_susceptible.png | Bin 0 -> 494 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 .../rltiles/item/misc/misc_tambourine_inert.png | Bin 1165 -> 1147 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 .../source/rltiles/misc/icons/sentinel_mark.png | Bin 0 -> 5232 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/reaper.png | Bin 8906 -> 8976 bytes .../rltiles/mon/demons/reaper_scytheless.png | Bin 8288 -> 8371 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 | 126 +- crawl-ref/source/skills.h | 8 +- 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 | 76 +- crawl-ref/source/spl-cast.h | 4 +- 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/state.cc | 1 + crawl-ref/source/state.h | 1 + crawl-ref/source/status.cc | 154 +- crawl-ref/source/status.h | 7 +- crawl-ref/source/tag-version.h | 7 + crawl-ref/source/tags.cc | 82 +- crawl-ref/source/target.cc | 5 +- crawl-ref/source/terrain.cc | 5 +- 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 | 190 +- 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 | 46 +- crawl-ref/source/tileweb.h | 6 +- crawl-ref/source/timed-effect-type.h | 1 + crawl-ref/source/timed-effects.cc | 204 +- crawl-ref/source/transform.cc | 8 +- crawl-ref/source/transform.h | 3 + crawl-ref/source/traps.cc | 6 +- crawl-ref/source/travel.cc | 47 + crawl-ref/source/ui.cc | 29 +- crawl-ref/source/util/art-data.pl | 5 +- crawl-ref/source/util/form-gen.py | 2 + crawl-ref/source/util/form-gen/body.txt | 2 +- crawl-ref/source/util/form-gen/header.txt | 1 + crawl-ref/source/util/mon-gen/header.txt | 2 - crawl-ref/source/util/monster/monster-main.cc | 3 + crawl-ref/source/view.cc | 18 +- .../webserver/game_data/static/cell_renderer.js | 12 + .../source/webserver/game_data/static/player.js | 69 +- .../source/webserver/game_data/static/style.css | 13 + .../source/webserver/game_data/templates/game.html | 2 + .../source/webserver/webtiles/process_handler.py | 12 +- 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 +- 552 files changed, 9253 insertions(+), 4748 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 copy crawl-ref/source/rltiles/{dngn/traps => UNUSED/floor}/archmage.png (100%) copy crawl-ref/source/rltiles/{dngn/traps => UNUSED/floor}/devourer.png (100%) copy crawl-ref/source/rltiles/{dngn/traps => UNUSED/floor}/tyrant.png (100%) 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/mutations/contamination_susceptible.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... [truncated message content] |
From: <gi...@cr...> - 2025-07-14 03:20:28
|
via 8647d90488a627269ca89e78dc4bfddfe108107c (commit) via 7f07463a0b2fb7ae9cba5da02a0062eb1dd2e474 (commit) from da5fd27e9c38b590af3b459cd8c32dfff707c66d (commit) ----------------------------------------------------------------------- commit 8647d90488a627269ca89e78dc4bfddfe108107c Author: hellmonk <nld...@gm...> Date: Sun Jul 13 22:17:38 2025 -0500 Amulets of Dissipation Make negative dispellable effects and contam go away ~ twice as fast. Not functional yet, need to rebase first. commit 7f07463a0b2fb7ae9cba5da02a0062eb1dd2e474 Author: hellmonk <nld...@gm...> Date: Sun Jul 13 20:59:27 2025 -0500 simplify wildshape amulets ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/describe.cc | 6 ++++-- crawl-ref/source/item-name.cc | 2 ++ crawl-ref/source/item-prop-enum.h | 1 + crawl-ref/source/player-equip.cc | 4 ++++ crawl-ref/source/player-reacts.cc | 7 +++++++ crawl-ref/source/player.cc | 8 ++++---- crawl-ref/source/rltiles/dc-item.txt | 3 ++- crawl-ref/source/rltiles/item/amulet/i-dissipation.png | Bin 0 -> 275 bytes crawl-ref/source/shopping.cc | 1 + crawl-ref/source/status.cc | 6 ++++++ crawl-ref/source/status.h | 1 + crawl-ref/source/wiz-dump.cc | 2 ++ 12 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 crawl-ref/source/rltiles/item/amulet/i-dissipation.png diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index cfae7e4aee..14ebc80807 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -678,10 +678,12 @@ static const char* _jewellery_base_ability_description(int subtype) case AMU_REFLECTION: return "It reflects blocked missile attacks."; case AMU_WILDSHAPE: - return "It improves your ability with shapeshifting, depending on " - "your skill."; + return "It improves your skill with shapeshifting (+5)"; case AMU_ALCHEMY: return "It enhances your alchemy spells and reduces their mp cost."; + case AMU_DISSIPATION: + return "It reduces the duration of hostile enchantments and decays " + "magical contamination more quickly."; #if TAG_MAJOR_VERSION == 34 case AMU_INACCURACY: return "It reduces the accuracy of all your attacks."; diff --git a/crawl-ref/source/item-name.cc b/crawl-ref/source/item-name.cc index 0d0a116b42..2abf6fee80 100644 --- a/crawl-ref/source/item-name.cc +++ b/crawl-ref/source/item-name.cc @@ -820,6 +820,7 @@ const char* jewellery_effect_name(int jeweltype, bool terse) case AMU_REGENERATION: return "regeneration"; case AMU_WILDSHAPE: return "wildshape"; case AMU_ALCHEMY: return "alchemy"; + case AMU_DISSIPATION: return "dissipation"; default: return "buggy jewellery"; } } @@ -863,6 +864,7 @@ const char* jewellery_effect_name(int jeweltype, bool terse) case AMU_ACROBAT: return "Acrobat"; case AMU_WILDSHAPE: return "Wildshape"; case AMU_ALCHEMY: return "Alch"; + case AMU_DISSIPATION: return "Dissipate"; case AMU_NOTHING: return ""; default: return "buggy"; } diff --git a/crawl-ref/source/item-prop-enum.h b/crawl-ref/source/item-prop-enum.h index b3be883466..a232d33ae3 100644 --- a/crawl-ref/source/item-prop-enum.h +++ b/crawl-ref/source/item-prop-enum.h @@ -266,6 +266,7 @@ enum jewellery_type AMU_REGENERATION, AMU_WILDSHAPE, AMU_ALCHEMY, + AMU_DISSIPATION, NUM_JEWELLERY }; diff --git a/crawl-ref/source/player-equip.cc b/crawl-ref/source/player-equip.cc index 6617501232..98ca69edd9 100644 --- a/crawl-ref/source/player-equip.cc +++ b/crawl-ref/source/player-equip.cc @@ -2556,6 +2556,10 @@ static void _equip_jewellery_effect(item_def &item, bool unmeld) mpr("You feel more attuned to alchemy."); break; + case AMU_DISSIPATION: + mpr("You feel as though your troubles will go away faster."); + break; + case AMU_GUARDIAN_SPIRIT: _spirit_shield_message(unmeld); break; diff --git a/crawl-ref/source/player-reacts.cc b/crawl-ref/source/player-reacts.cc index c83f21d46d..f4a9250cdd 100644 --- a/crawl-ref/source/player-reacts.cc +++ b/crawl-ref/source/player-reacts.cc @@ -143,6 +143,13 @@ static bool _decrement_a_duration(duration_type dur, int delay, const int old_dur = you.duration[dur]; you.duration[dur] -= delay; + // Amulets of dissipation wear off negative statuses faster + if (duration_dispellable(dur) && duration_negative(dur) + && you.wearing_jewellery(AMU_DISSIPATION)) + { + you.duration[dur] -= delay * you.wearing_jewellery(AMU_DISSIPATION); + } + // If we start expiring, handle exploss and print the exppoint message. if (you.duration[dur] <= exppoint && old_dur > exppoint) { diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index 70b07e010f..7ec5965e48 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -4153,6 +4153,9 @@ void contaminate_player(int change, bool controlled, bool msg) change *= 2; #endif + if (change < 0) + change *= 1 + you.wearing_jewellery(AMU_DISSIPATION); + you.magic_contamination = max(0, min(250000, you.magic_contamination + change)); @@ -6064,10 +6067,7 @@ int player::skill(skill_type sk, int scale, bool real, bool temp) const } if (sk == SK_SHAPESHIFTING) - { - level += min(level / 2, - you.wearing_jewellery(AMU_WILDSHAPE) * 6 * scale); - } + level += you.wearing_jewellery(AMU_WILDSHAPE) * 5 * scale; if (level > MAX_SKILL_LEVEL * scale) level = MAX_SKILL_LEVEL * scale; diff --git a/crawl-ref/source/rltiles/dc-item.txt b/crawl-ref/source/rltiles/dc-item.txt index d9d5d6547e..2ee4c4eafa 100644 --- a/crawl-ref/source/rltiles/dc-item.txt +++ b/crawl-ref/source/rltiles/dc-item.txt @@ -932,7 +932,8 @@ i-faith AMU_FAITH i-reflection AMU_REFLECTION i-regeneration AMU_REGENERATION i-wildshape AMU_WILDSHAPE -i-alchemy AMU_ALCHEMY AMU_ID_LAST +i-alchemy AMU_ALCHEMY +i-dissipation AMU_DISSIPATION AMU_ID_LAST ####################OBJ_POTIONS %sdir item/potion diff --git a/crawl-ref/source/rltiles/item/amulet/i-dissipation.png b/crawl-ref/source/rltiles/item/amulet/i-dissipation.png new file mode 100644 index 0000000000..d07b3db02e Binary files /dev/null and b/crawl-ref/source/rltiles/item/amulet/i-dissipation.png differ diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index e4cd9e97dd..25c158e9c3 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -627,6 +627,7 @@ unsigned int item_value(item_def item, bool ident) case AMU_REFLECTION: case AMU_WILDSHAPE: case AMU_ALCHEMY: + case AMU_DISSIPATION: valued += 300; break; diff --git a/crawl-ref/source/status.cc b/crawl-ref/source/status.cc index 0ef659911c..0a7a3aad0b 100644 --- a/crawl-ref/source/status.cc +++ b/crawl-ref/source/status.cc @@ -74,6 +74,12 @@ bool duration_dispellable(duration_type dur) return _lookup_duration(dur)->duration_has_flag(D_DISPELLABLE); } +bool duration_negative(duration_type dur) +{ + return false; + //_lookup_duration(dur)->duration_has_flag(D_NEGATIVE); +} + static int _bad_ench_colour(int lvl, int orange, int red) { if (lvl >= red) diff --git a/crawl-ref/source/status.h b/crawl-ref/source/status.h index d93df33f98..dbe9c1437c 100644 --- a/crawl-ref/source/status.h +++ b/crawl-ref/source/status.h @@ -78,6 +78,7 @@ bool fill_status_info(int status, status_info& info); const char *duration_name(duration_type dur); bool duration_dispellable(duration_type dur); +bool duration_negative(duration_type dur); void init_duration_index(); bool duration_decrements_normally(duration_type dur); diff --git a/crawl-ref/source/wiz-dump.cc b/crawl-ref/source/wiz-dump.cc index 3daf194342..c0cd07017e 100644 --- a/crawl-ref/source/wiz-dump.cc +++ b/crawl-ref/source/wiz-dump.cc @@ -85,6 +85,8 @@ static uint8_t _jewellery_type_from_artefact_prop(const string &s return AMU_WILDSHAPE; if (s == "Alchemy") return AMU_ALCHEMY; + if (s == "Dissipation") + return AMU_DISSIPATION; if (s == "rCorr") return RING_RESIST_CORROSION; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-13 22:45:10
|
via da5fd27e9c38b590af3b459cd8c32dfff707c66d (commit) from 3f999f4160642223652214ff4a71fecd5afcb6b2 (commit) ----------------------------------------------------------------------- commit da5fd27e9c38b590af3b459cd8c32dfff707c66d Author: hellmonk <nld...@gm...> Date: Sun Jul 13 17:40:18 2025 -0500 unbrace ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/spl-util.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 737c81565a..94e086fa65 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -557,9 +557,7 @@ int spell_mana(spell_type which_spell, bool real_spell) cost = max(1, cost - you.get_mutation_level(MUT_EFFICIENT_MAGIC)); if (spell_typematch(which_spell, spschool::alchemy) && real_spell) - { cost = max(1, cost - you.wearing_jewellery(AMU_ALCHEMY)); - } if (you.duration[DUR_BRILLIANCE] || you.unrand_equipped(UNRAND_FOLLY)) cost = cost/2 + cost%2; // round up -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-13 22:40:14
|
via 3f269bfe755b530276f8f3e0dd00cc7cab9f2c66 (commit) from f73b0916658deaebf1451429dcd3b8738b14a52b (commit) ----------------------------------------------------------------------- commit 3f269bfe755b530276f8f3e0dd00cc7cab9f2c66 Author: hellmonk <nld...@gm...> Date: Sun Jul 13 17:37:48 2025 -0500 Update credits.txt ----------------------------------------------------------------------- Summary of changes: crawl-ref/CREDITS.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crawl-ref/CREDITS.txt b/crawl-ref/CREDITS.txt index 99bb2eca29..91c802f477 100644 --- a/crawl-ref/CREDITS.txt +++ b/crawl-ref/CREDITS.txt @@ -95,6 +95,7 @@ aMcNicky AndSDev Antern + antimachina Austin Appleby araganzar argonaut @@ -111,6 +112,7 @@ Beargit Bill Beher Alexander Beisig + Alex Beloi benadryl biasface Björn Bähre @@ -138,6 +140,7 @@ Ian Caltabiano David Candido Edgar Carballo + caryoscelus Cedor Cerol Marcelo Cerri @@ -161,6 +164,7 @@ Darby Paul Dejean Denzi + DevJac Sean Dewar DewdropsOTG Ed Dewey @@ -191,7 +195,6 @@ Brett Foster Kyle Fox Perry Fraser - freepotion Chris Galardi GenericPseudonym Ge0ff @@ -291,6 +294,7 @@ Midn8 mikee MikeJHeg + Jared Miller Nathan Mills Andrew Minton Mintice @@ -314,6 +318,7 @@ Erkki Nurmi Mattias Nyberg nyra + Weston Odom Dylan O'Donnell Heinrich Ody Chris Oelmueller -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-13 22:25:12
|
via 3f999f4160642223652214ff4a71fecd5afcb6b2 (commit) from bdec800ac2b62f63ddd311ccbda74e10ad77a017 (commit) ----------------------------------------------------------------------- commit 3f999f4160642223652214ff4a71fecd5afcb6b2 Author: hellmonk <nld...@gm...> Date: Sun Jul 13 15:54:04 2025 -0500 Shuffle some properties Move cheaper casting to amulet of alchemy instead of conjuring orb. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/descript/items.txt | 4 ++++ crawl-ref/source/describe.cc | 4 ++-- crawl-ref/source/spl-util.cc | 6 ++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/crawl-ref/source/dat/descript/items.txt b/crawl-ref/source/dat/descript/items.txt index 837a9bc899..cd27ad209c 100644 --- a/crawl-ref/source/dat/descript/items.txt +++ b/crawl-ref/source/dat/descript/items.txt @@ -6,6 +6,10 @@ much protection as the armour made from the scales of some larger dragons, it is somewhat lighter and less encumbering. It is also remarkably smooth, letting corrosive slime flow off it like water. %%%% +Amulet of alchemy + +An amulet that enhances and reduces the mp cost of alchemy spells. +%%%% amulet of faith A charm crafted to call the attention of the gods to its wearer. This divine diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 73af513df1..cfae7e4aee 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -681,7 +681,7 @@ static const char* _jewellery_base_ability_description(int subtype) return "It improves your ability with shapeshifting, depending on " "your skill."; case AMU_ALCHEMY: - return "It enhances your alchemy spells."; + return "It enhances your alchemy spells and reduces their mp cost."; #if TAG_MAJOR_VERSION == 34 case AMU_INACCURACY: return "It reduces the accuracy of all your attacks."; @@ -2382,7 +2382,7 @@ static const char* _item_ego_desc(special_armour_type ego) "The shielding is half as effective if the wielder's offhand is " "occupied by an item other than their weapon."; case SPARM_CONJURING: - return "It enhances and cheapens the wearer's conjurations, and " + return "It enhances the wearer's conjurations, and " "provides a spellpower boost to all non-conjuration spells that " "depends on the wearer's conjurations skill."; case SPARM_GLASS: diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 5b5e259a67..737c81565a 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -556,11 +556,9 @@ int spell_mana(spell_type which_spell, bool real_spell) if (you.has_mutation(MUT_EFFICIENT_MAGIC)) cost = max(1, cost - you.get_mutation_level(MUT_EFFICIENT_MAGIC)); - if (you.wearing_ego(OBJ_ARMOUR, SPARM_CONJURING) - && spell_typematch(which_spell, spschool::conjuration) - && real_spell) + if (spell_typematch(which_spell, spschool::alchemy) && real_spell) { - cost = max(1, cost - 1); + cost = max(1, cost - you.wearing_jewellery(AMU_ALCHEMY)); } if (you.duration[DUR_BRILLIANCE] || you.unrand_equipped(UNRAND_FOLLY)) -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-13 03:05:16
|
via bdec800ac2b62f63ddd311ccbda74e10ad77a017 (commit) via 4b17f6b7a2462e2806ca3de19a5f0cf8eb276ced (commit) via a376bf2ac672bc9070054360a324e9be84681efa (commit) from d2f241eafa7d39c7415aadfa053c96878903eda6 (commit) ----------------------------------------------------------------------- commit bdec800ac2b62f63ddd311ccbda74e10ad77a017 Author: hellmonk <nld...@gm...> Date: Sat Jul 12 22:03:57 2025 -0500 beautiful tile recolors commit 4b17f6b7a2462e2806ca3de19a5f0cf8eb276ced Author: hellmonk <nld...@gm...> Date: Sat Jul 12 22:02:23 2025 -0500 Orbs of glass They vitrify things, better if you have evocations skill. I am not sure that skill scaling "makes sense" here, but we want to try some skill scaling designs. commit a376bf2ac672bc9070054360a324e9be84681efa Author: hellmonk <nld...@gm...> Date: Sat Jul 12 21:32:48 2025 -0500 Orbs of conjuring A different take on conjurations boosting. +1 conj enhancer, -1 conj cost, and your non-conj spells get a conjuration skill dependent power boost. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/describe.cc | 7 +++++++ crawl-ref/source/item-name.cc | 4 ++++ crawl-ref/source/item-prop-enum.h | 2 ++ crawl-ref/source/item-prop.cc | 10 +++++----- crawl-ref/source/makeitem.cc | 2 ++ crawl-ref/source/mapdef.cc | 2 ++ crawl-ref/source/monster.cc | 9 ++++++++- crawl-ref/source/player.cc | 1 + crawl-ref/source/rltiles/dc-item.txt | 4 +++- .../i-conjuration.png => armour/brands/i-conjuring.png} | Bin crawl-ref/source/rltiles/item/armour/brands/i-glass.png | Bin 0 -> 278 bytes crawl-ref/source/shopping.cc | 2 ++ crawl-ref/source/spl-cast.cc | 3 +++ crawl-ref/source/spl-util.cc | 7 +++++++ 14 files changed, 46 insertions(+), 7 deletions(-) copy crawl-ref/source/rltiles/item/{ring/i-conjuration.png => armour/brands/i-conjuring.png} (100%) create mode 100644 crawl-ref/source/rltiles/item/armour/brands/i-glass.png diff --git a/crawl-ref/source/describe.cc b/crawl-ref/source/describe.cc index 536a88db2d..73af513df1 100644 --- a/crawl-ref/source/describe.cc +++ b/crawl-ref/source/describe.cc @@ -2381,6 +2381,13 @@ static const char* _item_ego_desc(special_armour_type ego) return "It shields the wearer if their last action was a melee attack. " "The shielding is half as effective if the wielder's offhand is " "occupied by an item other than their weapon."; + case SPARM_CONJURING: + return "It enhances and cheapens the wearer's conjurations, and " + "provides a spellpower boost to all non-conjuration spells that " + "depends on the wearer's conjurations skill."; + case SPARM_GLASS: + return "It may vitrify nearby enemies when they take damage. " + "Evocations skill increases the likelihood of vitrification."; default: return "it makes the wearer crave the taste of eggplant."; } diff --git a/crawl-ref/source/item-name.cc b/crawl-ref/source/item-name.cc index 305bc67717..0d0a116b42 100644 --- a/crawl-ref/source/item-name.cc +++ b/crawl-ref/source/item-name.cc @@ -580,6 +580,8 @@ const char* special_armour_type_name(special_armour_type ego, bool terse) case SPARM_DEATH: return "death"; case SPARM_RESONANCE: return "resonance"; case SPARM_DEFLECTION: return "deflection"; + case SPARM_CONJURING: return "conjuring"; + case SPARM_GLASS: return "glass"; default: return "bugginess"; } } @@ -637,6 +639,8 @@ const char* special_armour_type_name(special_armour_type ego, bool terse) case SPARM_DEATH: return "death"; case SPARM_RESONANCE: return "resonance"; case SPARM_DEFLECTION: return "deflection"; + case SPARM_CONJURING: return "conjuring"; + case SPARM_GLASS: return "glass"; default: return "buggy"; } } diff --git a/crawl-ref/source/item-prop-enum.h b/crawl-ref/source/item-prop-enum.h index ad1e67da45..b3be883466 100644 --- a/crawl-ref/source/item-prop-enum.h +++ b/crawl-ref/source/item-prop-enum.h @@ -532,6 +532,8 @@ enum special_armour_type SPARM_DEATH, SPARM_RESONANCE, SPARM_DEFLECTION, + SPARM_CONJURING, + SPARM_GLASS, NUM_REAL_SPECIAL_ARMOURS, NUM_SPECIAL_ARMOURS, }; diff --git a/crawl-ref/source/item-prop.cc b/crawl-ref/source/item-prop.cc index ee60252ea7..2166bfaaf0 100644 --- a/crawl-ref/source/item-prop.cc +++ b/crawl-ref/source/item-prop.cc @@ -255,11 +255,11 @@ static const armour_def Armour_prop[] = // to calculate adjusted shield penalty. { ARM_ORB, "orb", 0, 0, 50, SLOT_OFFHAND, SIZE_LITTLE, SIZE_GIANT, true, 0, { - { SPARM_LIGHT, 1 }, - { SPARM_RAGE, 1 }, - { SPARM_MAYHEM, 1 }, - { SPARM_GUILE, 1 }, - { SPARM_ENERGY, 1 }, + { SPARM_CONJURING, 1 }, + { SPARM_GLASS, 1 }, + { SPARM_MAYHEM, 1 }, + { SPARM_GUILE, 1 }, + { SPARM_ENERGY, 1 }, }}, { ARM_BUCKLER, "buckler", 3, -50, 45, SLOT_OFFHAND, SIZE_LITTLE, SIZE_MEDIUM, true, 0, SHIELD_EGOS }, diff --git a/crawl-ref/source/makeitem.cc b/crawl-ref/source/makeitem.cc index 791c62c686..aa97bfae66 100644 --- a/crawl-ref/source/makeitem.cc +++ b/crawl-ref/source/makeitem.cc @@ -870,6 +870,8 @@ bool is_armour_brand_ok(int type, int brand, bool strict) case SPARM_MAYHEM: case SPARM_GUILE: case SPARM_ENERGY: + case SPARM_CONJURING: + case SPARM_GLASS: return type == ARM_ORB; case SPARM_ARCHERY: diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index 5e58e59c03..eb5082f322 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -4993,6 +4993,8 @@ int str_to_ego(object_class_type item_type, string ego_str) "death", "resonance", "deflection", + "conjuring", + "glass", nullptr }; COMPILE_CHECK(ARRAYSZ(armour_egos) == NUM_REAL_SPECIAL_ARMOURS); diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index f92abb7037..f71790e099 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -4407,7 +4407,7 @@ int monster::hurt(const actor *agent, int amount, beam_type flavour, mirror_damage_fineff::schedule(valid_agent, this, amount * 2 / 3); } - // Trigger corrupting presence + // Trigger corrupting presence and orbs of glass if (agent && agent->is_player() && alive() && you.get_mutation_level(MUT_CORRUPTING_PRESENCE)) { @@ -4418,6 +4418,13 @@ int monster::hurt(const actor *agent, int amount, beam_type flavour, { this->malmutate(&you, "Your corrupting presence"); } + // needs a future commit to work + /* + if (you.wearing_ego(OBJ_ARMOUR, SPARM_GLASS) + && x_chance_in_y(40 + you.skill(SK_EVOCATIONS, 10), 500)) + { + this->vitrify(&you, 4 + random2(5 + you.skill(SK_EVOCATIONS))); + }*/ } blame_damage(agent, amount); diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index c47ff792c8..70b07e010f 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -1587,6 +1587,7 @@ int player_spec_conj() sc += you.wearing(OBJ_STAVES, STAFF_CONJURATION); sc += you.wearing_jewellery(RING_CONJURATION); + sc += you.wearing_ego(OBJ_ARMOUR, SPARM_CONJURING); sc += you.scan_artefacts(ARTP_ENHANCE_CONJ); return sc; diff --git a/crawl-ref/source/rltiles/dc-item.txt b/crawl-ref/source/rltiles/dc-item.txt index 87053bda51..d9d5d6547e 100644 --- a/crawl-ref/source/rltiles/dc-item.txt +++ b/crawl-ref/source/rltiles/dc-item.txt @@ -596,7 +596,9 @@ i-archery BRAND_ARM_ARCHERY i-command BRAND_ARM_COMMAND i-death BRAND_ARM_DEATH i-resonance BRAND_ARM_RESONANCE -i-deflection BRAND_ARM_DEFLECTION BRAND_ARM_LAST +i-deflection BRAND_ARM_DEFLECTION +i-conjuring BRAND_ARM_CONJURING +i-glass BRAND_ARM_GLASS BRAND_ARM_LAST %rim 1 ###########OBJ_WANDS diff --git a/crawl-ref/source/rltiles/item/ring/i-conjuration.png b/crawl-ref/source/rltiles/item/armour/brands/i-conjuring.png similarity index 100% copy from crawl-ref/source/rltiles/item/ring/i-conjuration.png copy to crawl-ref/source/rltiles/item/armour/brands/i-conjuring.png diff --git a/crawl-ref/source/rltiles/item/armour/brands/i-glass.png b/crawl-ref/source/rltiles/item/armour/brands/i-glass.png new file mode 100644 index 0000000000..ad3a923ef2 Binary files /dev/null and b/crawl-ref/source/rltiles/item/armour/brands/i-glass.png differ diff --git a/crawl-ref/source/shopping.cc b/crawl-ref/source/shopping.cc index 8ff2e62ea0..e4cd9e97dd 100644 --- a/crawl-ref/source/shopping.cc +++ b/crawl-ref/source/shopping.cc @@ -391,6 +391,8 @@ unsigned int item_value(item_def item, bool ident) case SPARM_LIGHT: case SPARM_ENERGY: case SPARM_DEFLECTION: + case SPARM_CONJURING: + case SPARM_GLASS: valued += 50; break; diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index cbe1eaf24a..d14f097413 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -562,6 +562,9 @@ int calc_spell_power(spell_type spell) if (you.wearing_ego(OBJ_ARMOUR, SPARM_COMMAND) && spell_typematch(spell, spschool::summoning)) power = power * (270 + you.skill(SK_ARMOUR, 10)) / 270; + if (you.wearing_ego(OBJ_ARMOUR, SPARM_CONJURING) && !spell_typematch(spell, spschool::conjuration)) + power = power * (540 + you.skill(SK_CONJURATIONS, 10)) / 540; + // at this point, `power` is assumed to be basically in centis. // apply a stepdown, and scale. power = _stepdown_spellpower(power); diff --git a/crawl-ref/source/spl-util.cc b/crawl-ref/source/spl-util.cc index 647219e540..5b5e259a67 100644 --- a/crawl-ref/source/spl-util.cc +++ b/crawl-ref/source/spl-util.cc @@ -556,6 +556,13 @@ int spell_mana(spell_type which_spell, bool real_spell) if (you.has_mutation(MUT_EFFICIENT_MAGIC)) cost = max(1, cost - you.get_mutation_level(MUT_EFFICIENT_MAGIC)); + if (you.wearing_ego(OBJ_ARMOUR, SPARM_CONJURING) + && spell_typematch(which_spell, spschool::conjuration) + && real_spell) + { + cost = max(1, cost - 1); + } + if (you.duration[DUR_BRILLIANCE] || you.unrand_equipped(UNRAND_FOLLY)) cost = cost/2 + cost%2; // round up -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-12 19:10:16
|
via f73b0916658deaebf1451429dcd3b8738b14a52b (commit) from 77f475f057e2bdce60da2e5ab67d4e6d87d1693f (commit) ----------------------------------------------------------------------- commit f73b0916658deaebf1451429dcd3b8738b14a52b Author: DracoOmega <dra...@gm...> Date: Sat Jul 12 16:37:27 2025 -0230 Don't generate buggy mundane unrands (BlackTorch) The 'mundane' itemspec tag causes an item to lose its plusses and ego *after* it goes through the normal generation process. But nothing (apparently) stopped the item from generating as an artefact before having its plusses/ego squashed. For randarts, this just resulted in a +0 randart with the rest of its properties intact (even its ego, since randarts don't store it in the same field as non-artefacts!). But unrands repurpose the brand field as their unrand ID, meaning that having its 'ego' set to 0 turned the item into 'DUMMY UNRANDART 1' (which would eventually assert since it doesn't have a colour defined...) Now 'mundane' necessarily also forbids the itemspec from generating an artefact, which should fix these problems. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/mapdef.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/crawl-ref/source/mapdef.cc b/crawl-ref/source/mapdef.cc index a0aa5c3216..94e6be92a0 100644 --- a/crawl-ref/source/mapdef.cc +++ b/crawl-ref/source/mapdef.cc @@ -5299,6 +5299,7 @@ bool item_list::parse_single_spec(item_spec& result, string s) { result.level = ISPEC_MUNDANE; result.ego = -1; + result.allow_uniques = 0; } if (strip_tag(s, "damaged")) result.level = ISPEC_DAMAGED; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-12 09:05:20
|
discards 3380db887fda31daf46e17c77234d9db24090528 (commit) via 9ecece310740aca532d7c9234a9adc15eb0d3e8f (commit) via 77f475f057e2bdce60da2e5ab67d4e6d87d1693f (commit) via 1c8910b83be96dcf1c87ef32e9841cb5e8afe722 (commit) via 534c8d50344a4d6619f4740d72b836ad3d44bf10 (commit) via 1fa925810a6d5232149caa2c0358e3104e94d1a9 (commit) via a680ef8428e13bb0c88b376fa62f8a9408d2c301 (commit) via 77d58bd2100bb11ffeab9c7a04fb03be70d4e45d (commit) via b7c2e1d855219a9b867eeb221698a9f4ba1a647d (commit) via 7c6d325bc265f633814e8b385bd99b203b1cef93 (commit) via c6894e477c601c286bc8424506c9bb80e190084e (commit) via b873afd9ec3d35eefd53920da16130b7959612d6 (commit) via ff7e82441f3a8dd63c3da6cedf01375270e93ccd (commit) via 8903f4d545fb1a6463b2b6f2b865e772d1dfc1a2 (commit) via 71506e332b858dde8cde902e42d1823f00edc394 (commit) via 79144c677037e29759d624930c45b1401d67b5c2 (commit) via bb92c9d70428e48777545ae3884f0e780995c5e2 (commit) via f72e9069bfe63de11eaa828750857da25ad3fef5 (commit) via e64c27fa7ce588b53477c71df053ebd92be5f873 (commit) via 8c5cb908cfc73e627762bdf7436b292a5c2d4e03 (commit) via b1c27173d81cf9cc87b1b1341df54655f142ccb1 (commit) via 309a5445d7c1d1d52dac55110a22ffc13c5da6b9 (commit) via 17b53af623c32dce5a876bec18be2ead38f9ca2a (commit) via 2db4d66fed52567eb4f6552d8ea7f6ca3e92d8e0 (commit) via baadf7e5a714067a9958ba52ea3c00476695e9ac (commit) via 88f54759262d77cbcfb2dc8ee86c89f852030ddb (commit) via 7acc8d57e806615e4921a963a45d0ceb16042e3b (commit) via 118629b06ae15267be9b6f78e880de1d99736480 (commit) via d11ae09b5d82e5716771dac4331de57c116d6db7 (commit) via 22a848724cb8892b6b1ff5a94f70ec54fcd0c00e (commit) via 740026549f8b43eceff41d839dff048cf23d9f53 (commit) via f559632a36f990224cb2edb4f49eaee648e830e9 (commit) via 92974b8de6179edbd4d80ff7fe8bd95b4779db9e (commit) via a00341b0ceeb71f9798f37140eb40583dd6a359b (commit) via c8829d1dcfce3a3edd22ed31c1c089868b3a85a3 (commit) via 7335e6a58e337fd3b347215cee8ab5c84d244516 (commit) via bb4d5816a9feff6dead4cbce9cb61a7e9ac9e394 (commit) via ad3b09032c7003098d32853ad525631d4c29c246 (commit) via 9a6fec6d823cfc27d24a0f0d84553c713a4e90d1 (commit) via 0396ba8ddbc24c5654335460f38e8b56c1af91fa (commit) via 4f5a5d9d27a146ba959c4bcd139d227b19bcf069 (commit) via b9c99e84c20c0a90bf52ce57f4c917513284c342 (commit) via 826fe50d78a1dbc03aa9e0dbc39f8fd3a81ea09f (commit) via 747caa52fdb131d5585626dbc4a8c6708146f6c8 (commit) via 6ecf20f4ee650c88a32fdb5cb242fac581635053 (commit) via d528656974bfe6f1009bb390b27139a71b5d63c2 (commit) via 87ee97bf79e4f45ab42af9477cfd38f99c844ade (commit) via 19c559dd153d7572574a07992707f342b3afeb38 (commit) via 0cc2c75a636414a3415ebf104f19ae89c3da119c (commit) via a7298f496d1430cacd2289ae141e5699f382a226 (commit) 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) via e6c66e347d84e232bc12bb5368e801c868aee4ca (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) via 585f80a30c841ed172dd866241540bec12be987f (commit) via 0397c6d773c232c007eb90c070b58245361a01fc (commit) via d01ceb9fa2b574c388f1e532e5336244169c13af (commit) via b288c88578b728ec5035d2b8edd5e6ff17a7ae02 (commit) via 732661e5956ffcc897286738603e33fd13acb3ec (commit) via ff597e4505f3e9e5a578097fe6c99286a74548a5 (commit) via ac0a5507583415c825d715de11afca51b1cf932e (commit) via 9ac4a0d9d894b0d5172b123e4d17b0979cdf69a0 (commit) via 22e6b53a17e02726b9667eda3359c15cd2d08ff2 (commit) via f195f0a051a895b3a22b77d24ef1e2fe5725c660 (commit) via eab1728e4fe192589484aa7d75a57e2610b4a25f (commit) via 2cefda1e527bea60e54006b1b736279300b89437 (commit) via 493218e9dd2d887d67013dfbb861a3b8198f1e20 (commit) via 7cd85c4fe53871a765676107ac12edf77c4e20dc (commit) via f4014ab7dd66aeb7e08f8ac1f599304325b9be7e (commit) via 40d046d360511c922d618e5b5e898b37317557c1 (commit) via 171da1f90a7de2ecff8fb1cb0dcd39ae6b5ffbbb (commit) via b00a169baacab9234052d8006ec14c9754ed8bc2 (commit) via 83bb3df973065e223ad5415d01dae9b414072401 (commit) via 6224c2db4bd9798a9b1d787912fdac626e8415e3 (commit) via 63c1f0f1fb9145f98355f655d747c4f162bce2e0 (commit) via 4abbe0680036a4b60bf05f6fc01b0add56fdf0c2 (commit) via 1953aced1e446596a9c86c22f2db9d9bd29652c7 (commit) via 8297d12de2237fee31dfa0aaf40372d88cee9eaf (commit) via 404a8c3a75100d057c4fe92ef4551312a152e105 (commit) via 6c38aea23f5f5dbdd50c2a60cc33e5dbcf40d399 (commit) via f69c87c02d3a79724b4de682f21a319b38c93435 (commit) via 0f670162d57068f621c0bc444f4617df585d1e28 (commit) via b171341b6e0f913954b74952b0eed56c8e6449a5 (commit) via 08eacbdebab5b9c9307e0b90f58385405a17424d (commit) via 171c64471ab2b40a6ecb05bfaa86d303d47209fb (commit) via 44170bca365bb15aa556fe48a7756b8aa08da2ac (commit) via 7473122876a1cb95d8483f5148b9045e0db124ac (commit) via 47e3c77385d2f00408f8c49075c2b104c1265801 (commit) via b2eba286c405de69cf566c1dd8b107b9f346f8a4 (commit) via cfdb215a354ed85568aeca7a61529b5f467917fd (commit) via fbfeffa08239fa51c220e62b74c3d078616069bb (commit) via 40ba0be6bd6ec78949cd6ad9e2ecc9df06c2dbf8 (commit) via 1a0b88e55323fc1aa37ac01558172e023d33a410 (commit) via d0004994c21d5eb29f7ebc2919c0b0784ddd2a15 (commit) via 34ef1d5bbbf53b4a00d8d531f5e9f4ffac42b62d (commit) via 33411132f31178e8849335566efc44f991a10ab6 (commit) via ab3042f3a18e94061eeeeed73f0ac1bb1be01ebf (commit) via 80b48b85327595b146d88014330e9929503e342a (commit) via a3557c0749360cfa619157f4876eaf6032987b6e (commit) via 56df707391f48d8306f56a7fe2a0ba46c6bf011b (commit) via 9222c71edf842ea67c2b2227440cc5f1e4249850 (commit) via ca936108488570688c6dd1fa6d63f6fefce9f255 (commit) via 708931efb8650f3405f218fd77cd271696e1d468 (commit) via b0ba1dcefe5b76c2fb6b68b02debb4255e77cea6 (commit) via 4ca2a633effb2e889f46bc3c3bf6d5940f256066 (commit) via f2480e12d09a04e277cb9913e68e22b3bc03cc85 (commit) via 2e754a0f84edadbb2a12106e9f8f16b64bc67d0c (commit) via 209a3779e73d11dcb9ee82e28338b53eb4f69151 (commit) via 1f4ce136efc82c950f551611ea3f353373c19ea1 (commit) via 0bbdec72d483ba83adb6c1c57ff3619776ab0733 (commit) via 459fa385caaf95cc51eb9993233361a4aa7bbb58 (commit) via b316cd9ea5af55bb22e713c62dac2120e8d684b5 (commit) via 4f4cae6fa3ba6015b4466b229f177be37444be04 (commit) via f517b90e60a36c2143621febc3de79bf69881444 (commit) via f7d21c3a49533ff83dce3b5de877777975a6c8a1 (commit) via a9c97bacbe78ee8fbbe0653b9fe437d0bef3ed17 (commit) via a2f1e0a9fafab898c1b95c78907f481d0d5156bb (commit) via 7ead7bf3001b4d3df1fb9147f5cee11feeb5457d (commit) via dc56b02a7e52f778d5dc8d3d00d17f7ebf8bf732 (commit) via 833c818450e86a226df6ed7c2eb1c78944949f76 (commit) via 3fe01be7b1dd52ae6296533b7976c422dcd3c3af (commit) via 98ae27249950ca2468539aff0a9bb13b06021660 (commit) via 3711a3bbcc72017b175ff726219e3bb0015ee13d (commit) via fac9211266c9403b0ccbcd891f7561f5ab97ed14 (commit) via 4c0fa254c5e79375f910a2c8b385f2f2946c2f03 (commit) via ca858a1cb5fe4f12168065dfa21fa289157b907a (commit) via ee063f470efffef934499158478e68d9d805c10b (commit) via 129f5b2170bb996eadc00b4cb970eda380b5240a (commit) via 1959ad8d6d0877e9e1326071d6c4a86aa2e6c42e (commit) via 9b72c3cd0f92477eb0b3270803458075e32004e4 (commit) via 8207d21d3af791b6dac74383249715ac8840316b (commit) via d898879d2945b2a678ce956a3183a9781b63cd8c (commit) via 7ecae41dda817dd5799c2618e0bcf4aa6359a814 (commit) via 8da7c38387e0c711f33331f35709d380e40482d0 (commit) via eedf646592e004e4855901fbc5e4efdc8c27d0fc (commit) via 157474af122eb7edc10b3bde137ce9f6ad0bfbc9 (commit) via f41e6d5f71fc38be13911dcb2b5416618428868d (commit) via 1647f1c33899762f37c354f9d318d278a84a098c (commit) via 65ec681d5fe1c082785d9fe94765c4d66d9d1598 (commit) via 2e3b24bea056d8010f44d12349323f10bc260234 (commit) via 9c5c50b1d7598a64bd5c67644905d0ac5eeaa903 (commit) via 03fca52c64465e0ece2ef92f0eea7e76b793c58a (commit) This update added new revisions after undoing existing revisions. That is to say, the old revision is not a strict subset of the new revision. This situation occurs when you --force push a change and generate a repository containing something like this: * -- * -- B -- O -- O -- O (3380db887fda31daf46e17c77234d9db24090528) \ N -- N -- N (9ecece310740aca532d7c9234a9adc15eb0d3e8f) When this happens we assume that you've already had alert emails for all of the O revisions, and so we here report only the revisions in the N branch from the common base, B. ----------------------------------------------------------------------- commit 9ecece310740aca532d7c9234a9adc15eb0d3e8f Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat Jul 12 09:01:24 2025 +0000 Bump tornado in /crawl-ref/source/webserver/requirements Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.2 to 6.5.1. - [Changelog](https://github.com/tornadoweb/tornado/blob/master/docs/releases.rst) - [Commits](https://github.com/tornadoweb/tornado/compare/v6.4.2...v6.5.1) --- updated-dependencies: - dependency-name: tornado dependency-version: 6.5.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <su...@gi...> ----------------------------------------------------------------------- Summary of changes: .github/workflows/ci.yml | 8 +- crawl-ref/CREDITS.txt | 16 +- crawl-ref/INSTALL.md | 14 +- crawl-ref/docs/changelog.txt | 263 ++- crawl-ref/docs/crawl_manual.rst | 16 +- crawl-ref/docs/options_guide.txt | 69 +- crawl-ref/source/MSVC/crawl.vcxproj | 2 +- crawl-ref/source/MSVC/tilegen.vcxproj | 8 +- crawl-ref/source/ability.cc | 29 +- 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 +- .../src/main/java/org/libsdl/app/SDLActivity.java | 9 +- 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 | 12 +- 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 | 260 +-- 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/branch-data.h | 2 +- crawl-ref/source/catch2-tests/test_player.cc | 8 - crawl-ref/source/cio.h | 1 - crawl-ref/source/cloud.cc | 12 +- crawl-ref/source/contrib/MSVC/SDL.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/SDL_image.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/SDLmain.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/freetype.vcxproj | 24 +- crawl-ref/source/contrib/MSVC/libpng.vcxproj | 16 +- crawl-ref/source/contrib/MSVC/lua.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/pcre.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/sqlite.vcxproj | 8 +- crawl-ref/source/contrib/MSVC/zlib.vcxproj | 8 +- crawl-ref/source/coordit.cc | 2 +- crawl-ref/source/corpse.cc | 4 +- 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/FAQ.txt | 18 +- crawl-ref/source/dat/database/godspeak.txt | 11 +- crawl-ref/source/dat/database/help.txt | 4 +- crawl-ref/source/dat/database/monspeak.txt | 55 +- crawl-ref/source/dat/database/monspell.txt | 81 +- crawl-ref/source/dat/database/randbook.txt | 2 +- crawl-ref/source/dat/database/shout.txt | 17 +- crawl-ref/source/dat/database/wpnnoise.txt | 52 + 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/kiku_cage.des | 2 +- crawl-ref/source/dat/des/altar/lugonu_bribe.des | 2 +- crawl-ref/source/dat/des/altar/overflow.des | 94 +- crawl-ref/source/dat/des/altar/trog_wizard.des | 2 +- .../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 | 137 +- crawl-ref/source/dat/des/branches/coc.des | 66 +- crawl-ref/source/dat/des/branches/crypt.des | 431 ++-- crawl-ref/source/dat/des/branches/depths.des | 7 +- .../source/dat/des/branches/depths_encompass.des | 57 +- crawl-ref/source/dat/des/branches/elf.des | 130 +- crawl-ref/source/dat/des/branches/geh.des | 4 +- 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 | 55 +- crawl-ref/source/dat/des/branches/tar.des | 30 +- crawl-ref/source/dat/des/branches/temple.des | 215 +- 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 | 21 +- .../dat/des/branches/vaults_rooms_standard.des | 7 +- crawl-ref/source/dat/des/branches/zot.des | 243 +- 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 | 20 +- crawl-ref/source/dat/des/builder/shops.des | 30 +- crawl-ref/source/dat/des/portals/bazaar.des | 8 +- crawl-ref/source/dat/des/portals/necropolis.des | 60 +- 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 | 2381 +++++++++++--------- crawl-ref/source/dat/des/portals/volcano.des | 40 +- crawl-ref/source/dat/des/portals/wizlab.des | 58 +- 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 | 16 +- crawl-ref/source/dat/des/serial/undead.des | 16 +- crawl-ref/source/dat/des/sprint/arena_sprint.des | 73 +- crawl-ref/source/dat/des/sprint/linesprint.des | 2 +- crawl-ref/source/dat/des/sprint/pitsprint.des | 70 +- crawl-ref/source/dat/des/sprint/sprint_mu.des | 6 +- crawl-ref/source/dat/des/sprint/zigsprint.des | 45 +- 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 | 14 +- crawl-ref/source/dat/des/variable/d_encompass.des | 33 +- crawl-ref/source/dat/des/variable/float.des | 427 ++-- .../source/dat/des/variable/large_abstract.des | 25 +- crawl-ref/source/dat/des/variable/large_themed.des | 111 +- .../source/dat/des/variable/lemuel_castle.des | 13 +- .../source/dat/des/variable/mini_features.des | 2 +- .../source/dat/des/variable/mini_monsters.des | 130 +- crawl-ref/source/dat/des/variable/the_bubble.des | 4 +- crawl-ref/source/dat/descript/ability.txt | 6 +- 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/spells.txt | 6 - 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 | 21 +- crawl-ref/source/dat/descript/ja/spells.txt | 5 - crawl-ref/source/dat/descript/ja/unrand.txt | 2 +- crawl-ref/source/dat/descript/ko/spells.txt | 6 - crawl-ref/source/dat/descript/ko/unrand.txt | 2 +- crawl-ref/source/dat/descript/monsters.txt | 108 +- crawl-ref/source/dat/descript/mutations.txt | 114 +- crawl-ref/source/dat/descript/pl/spells.txt | 6 - crawl-ref/source/dat/descript/pl/unrand.txt | 2 +- crawl-ref/source/dat/descript/quotes.txt | 19 +- crawl-ref/source/dat/descript/ru/spells.txt | 6 - crawl-ref/source/dat/descript/ru/unrand.txt | 2 +- crawl-ref/source/dat/descript/spells.txt | 120 +- crawl-ref/source/dat/descript/status.txt | 35 +- crawl-ref/source/dat/descript/unrand.txt | 4 +- crawl-ref/source/dat/descript/zh/monsters.txt | 14 +- crawl-ref/source/dat/descript/zh/spells.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 | 66 +- crawl-ref/source/dat/dlua/ziggurat.lua | 12 +- crawl-ref/source/dat/forms/bat-swarm.yaml | 3 +- crawl-ref/source/dat/forms/bat.yaml | 1 + crawl-ref/source/dat/forms/death.yaml | 1 + crawl-ref/source/dat/forms/fungus.yaml | 1 + crawl-ref/source/dat/forms/pig.yaml | 1 + crawl-ref/source/dat/forms/tree.yaml | 1 + crawl-ref/source/dat/forms/vampire.yaml | 1 + crawl-ref/source/dat/forms/wisp.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/chonchon.yaml | 21 + crawl-ref/source/dat/mons/cognitogaunt.yaml | 20 + crawl-ref/source/dat/mons/crawling-flesh-cage.yaml | 19 + crawl-ref/source/dat/mons/death-knight.yaml | 12 +- .../dat/mons/{skeleton-small.yaml => draugr.yaml} | 8 +- crawl-ref/source/dat/mons/drude.yaml | 20 + crawl-ref/source/dat/mons/glass-eye.yaml | 2 +- crawl-ref/source/dat/mons/grinder.yaml | 2 +- crawl-ref/source/dat/mons/kobold-fleshcrafter.yaml | 21 + crawl-ref/source/dat/mons/marrowcuda.yaml | 1 - .../source/dat/mons/merged-slime-creature.yaml | 17 - 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/pile-of-flesh.yaml | 14 + crawl-ref/source/dat/mons/raven.yaml | 18 + .../source/dat/mons/screaming-refraction.yaml | 19 + .../source/dat/mons/serpent-of-hell-cocytus.yaml | 5 +- crawl-ref/source/dat/mons/serpent-of-hell-dis.yaml | 8 +- .../source/dat/mons/serpent-of-hell-tartarus.yaml | 5 +- crawl-ref/source/dat/mons/serpent-of-hell.yaml | 5 +- crawl-ref/source/dat/mons/shining-eye.yaml | 5 +- crawl-ref/source/dat/mons/simulacrum-large.yaml | 19 - crawl-ref/source/dat/mons/simulacrum-small.yaml | 19 - crawl-ref/source/dat/mons/skeleton-large.yaml | 18 - crawl-ref/source/dat/mons/skeleton.yaml | 17 - crawl-ref/source/dat/mons/sky-beast.yaml | 2 +- crawl-ref/source/dat/mons/sphinx-marauder.yaml | 2 +- crawl-ref/source/dat/mons/vampire-bloodprince.yaml | 2 +- crawl-ref/source/dat/mons/zombie-large.yaml | 19 - crawl-ref/source/dat/mons/zombie-small.yaml | 19 - 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/debian/changelog | 10 + crawl-ref/source/decks.cc | 13 +- crawl-ref/source/delay.cc | 2 +- crawl-ref/source/describe-god.cc | 16 +- crawl-ref/source/describe-spells.cc | 62 +- crawl-ref/source/describe-spells.h | 4 + crawl-ref/source/describe.cc | 155 +- crawl-ref/source/describe.h | 5 +- crawl-ref/source/dgn-overview.cc | 77 +- crawl-ref/source/directn.cc | 3 +- crawl-ref/source/dungeon-feature-type.h | 2 + crawl-ref/source/dungeon.cc | 99 +- crawl-ref/source/dungeon.h | 1 + crawl-ref/source/duration-data.h | 139 +- crawl-ref/source/duration-type.h | 6 +- crawl-ref/source/enchant-type.h | 8 +- crawl-ref/source/english.cc | 5 +- crawl-ref/source/evoke.cc | 2 + crawl-ref/source/feature-data.h | 8 + crawl-ref/source/fight.cc | 29 +- crawl-ref/source/fight.h | 1 + crawl-ref/source/files.cc | 9 + crawl-ref/source/fineff.cc | 4 - crawl-ref/source/fixedp.h | 6 +- crawl-ref/source/ghost.cc | 15 +- crawl-ref/source/ghost.h | 3 +- crawl-ref/source/god-abil.cc | 77 +- crawl-ref/source/god-companions.cc | 2 +- crawl-ref/source/god-conduct.cc | 9 +- crawl-ref/source/god-item.cc | 3 +- crawl-ref/source/god-passive.cc | 15 +- crawl-ref/source/god-passive.h | 4 +- crawl-ref/source/god-prayer.cc | 2 +- crawl-ref/source/god-wrath.cc | 54 +- crawl-ref/source/hints.cc | 2 +- crawl-ref/source/hiscores.cc | 2 +- crawl-ref/source/initfile.cc | 64 +- crawl-ref/source/invent.cc | 22 +- crawl-ref/source/item-name.cc | 18 +- crawl-ref/source/item-prop.cc | 7 + crawl-ref/source/item-use.cc | 141 +- crawl-ref/source/item-use.h | 1 + crawl-ref/source/items.cc | 3 + crawl-ref/source/kills.cc | 42 +- crawl-ref/source/kills.h | 2 +- crawl-ref/source/l-crawl.cc | 25 + crawl-ref/source/l-debug.cc | 5 + crawl-ref/source/l-dgnlvl.cc | 9 + crawl-ref/source/l-moninf.cc | 7 + crawl-ref/source/l-you.cc | 35 +- crawl-ref/source/lev-pand.cc | 1 + crawl-ref/source/libconsole.h | 3 - crawl-ref/source/libunix.cc | 15 +- crawl-ref/source/libutil.cc | 6 +- crawl-ref/source/libw32c.cc | 19 +- crawl-ref/source/lookup-help-type.h | 1 + crawl-ref/source/lookup-help.cc | 24 + crawl-ref/source/macro.cc | 1 - crawl-ref/source/main.cc | 6 +- crawl-ref/source/makeitem.cc | 202 +- crawl-ref/source/makeitem.h | 7 + crawl-ref/source/mapdef.cc | 84 +- crawl-ref/source/mapdef.h | 4 +- crawl-ref/source/melee-attack.cc | 83 +- crawl-ref/source/melee-attack.h | 4 +- crawl-ref/source/menu.cc | 1 - crawl-ref/source/mgen-data.h | 9 + crawl-ref/source/mgen-enum.h | 9 +- crawl-ref/source/mon-abil.cc | 101 +- 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 | 286 ++- crawl-ref/source/mon-cast.h | 2 +- crawl-ref/source/mon-clone.cc | 1 + crawl-ref/source/mon-death.cc | 125 +- crawl-ref/source/mon-death.h | 1 + crawl-ref/source/mon-ench.cc | 61 +- crawl-ref/source/mon-enum.h | 6 + crawl-ref/source/mon-flags.h | 3 + crawl-ref/source/mon-gear.cc | 26 +- crawl-ref/source/mon-info-flag-name.h | 4 + crawl-ref/source/mon-info.cc | 67 +- crawl-ref/source/mon-info.h | 7 + crawl-ref/source/mon-pick-data.h | 131 +- crawl-ref/source/mon-pick.cc | 3 +- crawl-ref/source/mon-place.cc | 153 +- crawl-ref/source/mon-place.h | 11 +- crawl-ref/source/mon-poly.cc | 6 +- crawl-ref/source/mon-project.cc | 4 +- crawl-ref/source/mon-project.h | 2 +- crawl-ref/source/mon-spell.h | 94 +- crawl-ref/source/mon-util.cc | 133 +- crawl-ref/source/mon-util.h | 7 +- crawl-ref/source/monster-type.h | 46 +- crawl-ref/source/monster.cc | 164 +- crawl-ref/source/monster.h | 12 +- crawl-ref/source/movement.cc | 52 +- crawl-ref/source/mutation-data.h | 68 +- crawl-ref/source/mutation-type.h | 8 +- crawl-ref/source/mutation.cc | 657 ++++-- crawl-ref/source/mutation.h | 18 +- crawl-ref/source/ng-setup.cc | 12 +- crawl-ref/source/notes.cc | 16 +- crawl-ref/source/notes.h | 2 + crawl-ref/source/options.h | 11 + crawl-ref/source/ouch.cc | 86 +- crawl-ref/source/output.cc | 216 +- crawl-ref/source/player-act.cc | 10 +- crawl-ref/source/player-equip.cc | 93 +- crawl-ref/source/player-equip.h | 7 +- crawl-ref/source/player-reacts.cc | 81 +- crawl-ref/source/player.cc | 413 ++-- crawl-ref/source/player.h | 36 +- crawl-ref/source/potion.cc | 12 +- crawl-ref/source/quiver.cc | 4 +- crawl-ref/source/ranged-attack.cc | 5 +- crawl-ref/source/religion.cc | 579 +++-- crawl-ref/source/religion.h | 10 +- .../{dngn/traps => UNUSED/floor}/archmage.png | Bin .../{dngn/traps => UNUSED/floor}/devourer.png | Bin .../{dngn/traps => UNUSED/floor}/tyrant.png | Bin .../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 | 9 +- crawl-ref/source/rltiles/dc-feat.txt | 7 + crawl-ref/source/rltiles/dc-icons.txt | 6 + crawl-ref/source/rltiles/dc-item.txt | 81 + crawl-ref/source/rltiles/dc-misc.txt | 22 +- crawl-ref/source/rltiles/dc-mon.txt | 40 +- crawl-ref/source/rltiles/dc-mutations.txt | 1 + crawl-ref/source/rltiles/dc-player.txt | 2 +- crawl-ref/source/rltiles/dc-spells.txt | 12 +- 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 crawl-ref/source/rltiles/dngn/traps/archmage.png | Bin 8209 -> 1828 bytes crawl-ref/source/rltiles/dngn/traps/devourer.png | Bin 8176 -> 2328 bytes crawl-ref/source/rltiles/dngn/traps/tyrant.png | Bin 6994 -> 1930 bytes .../source/rltiles/dngn/vaults/bottled_spirits.png | Bin 0 -> 8235 bytes .../rltiles/dngn/vaults/gilded_reliquary.png | Bin 0 -> 10263 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/chaos0.png | Bin 0 -> 2119 bytes crawl-ref/source/rltiles/effect/chaos1.png | Bin 0 -> 10401 bytes crawl-ref/source/rltiles/effect/chaos2.png | Bin 0 -> 1798 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/flesh0.png | Bin 0 -> 9319 bytes crawl-ref/source/rltiles/effect/flesh1.png | Bin 0 -> 9314 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 -> 7859 bytes .../gui/mutations/contamination_susceptible.png | Bin 0 -> 494 bytes .../rltiles/gui/spells/monster/acid_ball.png | Bin 0 -> 9066 bytes .../rltiles/gui/spells/monster/awaken_flesh.png | Bin 0 -> 1847 bytes .../rltiles/gui/spells/monster/bolt_of_flesh.png | Bin 0 -> 9298 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 .../rltiles/item/misc/misc_tambourine_inert.png | Bin 1165 -> 1147 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/frenzied.png | Bin 0 -> 715 bytes crawl-ref/source/rltiles/misc/icons/paradox.png | Bin 0 -> 5903 bytes .../source/rltiles/misc/icons/sentinel_mark.png | Bin 0 -> 5232 bytes crawl-ref/source/rltiles/misc/icons/warding.png | Bin 0 -> 703 bytes .../source/rltiles/mon/aberrations/chonchon0.png | Bin 0 -> 1561 bytes .../source/rltiles/mon/aberrations/chonchon1.png | Bin 0 -> 1526 bytes .../source/rltiles/mon/aberrations/chonchon2.png | Bin 0 -> 1572 bytes .../mon/aberrations/crawling_flesh_cage0.png | Bin 0 -> 8594 bytes .../mon/aberrations/crawling_flesh_cage1.png | Bin 0 -> 8431 bytes .../mon/aberrations/crawling_flesh_cage2.png | Bin 0 -> 8584 bytes .../mon/aberrations/crawling_flesh_cage3.png | Bin 0 -> 8444 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/reaper.png | Bin 8906 -> 8976 bytes .../rltiles/mon/demons/reaper_scytheless.png | Bin 8288 -> 8371 bytes crawl-ref/source/rltiles/mon/demons/zykzyl.png | Bin 0 -> 2106 bytes .../rltiles/mon/humanoids/kobold_fleshcrafter.png | Bin 0 -> 1670 bytes .../rltiles/mon/nonliving/orb_of_entropy.png | Bin 0 -> 970 bytes .../source/rltiles/mon/nonliving/orb_of_winter.png | Bin 0 -> 1960 bytes .../source/rltiles/mon/statues/pile_of_flesh0.png | Bin 0 -> 8088 bytes .../source/rltiles/mon/statues/pile_of_flesh1.png | Bin 0 -> 8073 bytes .../source/rltiles/mon/statues/pile_of_flesh2.png | Bin 0 -> 8009 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 .../source/rltiles/mon/undead/cognitogaunt.png | Bin 0 -> 1383 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 | 4 +- crawl-ref/source/show.cc | 5 +- crawl-ref/source/showsymb.cc | 50 +- crawl-ref/source/skills.cc | 153 +- crawl-ref/source/skills.h | 8 +- crawl-ref/source/species.cc | 4 +- crawl-ref/source/spell-type.h | 15 +- crawl-ref/source/spl-book.cc | 8 + crawl-ref/source/spl-cast.cc | 76 +- crawl-ref/source/spl-cast.h | 5 +- crawl-ref/source/spl-damage.cc | 165 +- crawl-ref/source/spl-damage.h | 6 +- crawl-ref/source/spl-data.h | 158 +- 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 | 29 +- 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 | 26 +- crawl-ref/source/spl-zap.h | 3 - crawl-ref/source/stairs.cc | 4 +- crawl-ref/source/startup.cc | 5 +- crawl-ref/source/stash.cc | 8 +- crawl-ref/source/state.cc | 1 + crawl-ref/source/state.h | 1 + crawl-ref/source/status.cc | 154 +- crawl-ref/source/status.h | 7 +- crawl-ref/source/tag-version.h | 10 + crawl-ref/source/tags.cc | 101 +- crawl-ref/source/target.cc | 10 +- crawl-ref/source/target.h | 1 + crawl-ref/source/terrain.cc | 10 +- crawl-ref/source/test/moncast.lua | 8 + 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 | 15 + crawl-ref/source/tilemcache.cc | 75 +- crawl-ref/source/tilepick.cc | 194 +- 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/tileview.cc | 2 +- crawl-ref/source/tileweb.cc | 46 +- crawl-ref/source/tileweb.h | 6 +- crawl-ref/source/timed-effect-type.h | 1 + crawl-ref/source/timed-effects.cc | 206 +- crawl-ref/source/transform.cc | 100 +- crawl-ref/source/transform.h | 10 +- crawl-ref/source/traps.cc | 6 +- crawl-ref/source/travel.cc | 58 +- crawl-ref/source/ui.cc | 29 +- crawl-ref/source/util/art-data.pl | 5 +- crawl-ref/source/util/form-gen.py | 5 +- crawl-ref/source/util/form-gen/body.txt | 2 +- crawl-ref/source/util/form-gen/header.txt | 1 + crawl-ref/source/util/mon-gen/header.txt | 9 +- crawl-ref/source/util/monster/monster-main.cc | 21 +- crawl-ref/source/view.cc | 18 +- .../webserver/game_data/static/cell_renderer.js | 13 + .../source/webserver/game_data/static/player.js | 69 +- .../source/webserver/game_data/static/style.css | 13 + .../source/webserver/game_data/templates/game.html | 2 + .../source/webserver/requirements/base.py3.txt | 2 +- .../source/webserver/requirements/dev.py3.txt | 2 +- .../source/webserver/webtiles/process_handler.py | 12 +- crawl-ref/source/wiz-you.cc | 13 +- crawl-ref/source/xom.cc | 218 +- crawl-ref/source/xom.h | 1 + crawl-ref/source/zap-data.h | 319 +-- crawl-ref/source/zap-type.h | 9 +- 635 files changed, 11017 insertions(+), 5764 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 create mode 100644 crawl-ref/source/dat... [truncated message content] |
From: <gi...@cr...> - 2025-07-12 09:00:11
|
via 77f475f057e2bdce60da2e5ab67d4e6d87d1693f (commit) from 1c8910b83be96dcf1c87ef32e9841cb5e8afe722 (commit) ----------------------------------------------------------------------- commit 77f475f057e2bdce60da2e5ab67d4e6d87d1693f Author: DracoOmega <dra...@gm...> Date: Sat Jul 12 06:27:19 2025 -0230 Blame the player for fewer actions by confused enemies (Acrobat) The actions of enemies confused by the player are attributed to the player in many cases so that the player will still get credit for damage/kills done by monsters you confused. However, this had the negative result of allies also mistakenly believing that actions of confused enemies were being done directly by the player. So, for instance, you could summon a tarantella, it could confuse a chaos spawn in melee, and that confused chaos spawn could hit it back and apply a debuff, which the tarantella would then blame you for and disappear (you'd even get penance if you were worshipping a good god!) This didn't apply harmfully in all cases, but chaos flavored attacks in particular used beam code for debuffs internally, resulting in this issue. It is possible some other manifestations of this were also fixed in the process. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/beam.cc | 24 +++++++++++++++--------- crawl-ref/source/mon-death.h | 1 + 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index b9e20a273c..463335b16f 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -766,7 +766,7 @@ void bolt::precalc_agent_properties() void bolt::apply_beam_conducts() { - if (is_tracer() && YOU_KILL(thrower)) + if (is_tracer() && BLAME_KILL(thrower)) { switch (flavour) { @@ -1642,7 +1642,7 @@ int mons_adjust_flavoured(monster* mons, bolt &pbolt, int hurted, mons->drain(pbolt.agent()); - if (YOU_KILL(pbolt.thrower)) + if (BLAME_KILL(pbolt.thrower)) did_god_conduct(DID_EVIL, 2, pbolt.god_cares()); } break; @@ -1663,7 +1663,7 @@ int mons_adjust_flavoured(monster* mons, bolt &pbolt, int hurted, miasma_monster(mons, pbolt.agent()); - if (YOU_KILL(pbolt.thrower)) + if (BLAME_KILL(pbolt.thrower)) did_god_conduct(DID_UNCLEAN, 2, pbolt.god_cares()); } break; @@ -4924,7 +4924,7 @@ void bolt::enchantment_affect_monster(monster* mon) if (nasty_to(mon)) { - if (YOU_KILL(thrower)) + if (BLAME_KILL(thrower)) { set_attack_conducts(conducts, *mon, you.can_see(*mon)); @@ -4994,7 +4994,13 @@ void bolt::enchantment_affect_monster(monster* mon) // Nasty enchantments will annoy the monster, and are considered // naughty (even if a monster resisted). if (mon && mon->alive() && nasty_to(mon)) - behaviour_event(mon, ME_ANNOY, agent()); + { + // Don't anger allies for the actions of confused enemies. + const actor* to_blame = agent(); + if (thrower == KILL_YOU_CONF) + to_blame = actor_by_mid(source_id); + behaviour_event(mon, ME_ANNOY, to_blame); + } else behaviour_event(mon, ME_ALERT, agent()); } @@ -5175,7 +5181,7 @@ void bolt::monster_post_hit(monster* mon, int dmg) // Don't annoy friendlies or good neutrals if the player's beam // did no damage. Hostiles will still take umbrage. - if (dmg > 0 || !mon->wont_attack() || !YOU_KILL(thrower)) + if ((dmg > 0 || !mon->wont_attack()) && !BLAME_KILL(thrower)) { behaviour_event(mon, ME_ANNOY, agent()); @@ -6210,7 +6216,7 @@ mon_resist_type bolt::apply_enchantment_to_monster(monster* mon) case BEAM_POLYMORPH: if (mon->polymorph(0)) obvious_effect = true; - if (YOU_KILL(thrower)) + if (BLAME_KILL(thrower)) { const int level = 2 + random2(3); did_god_conduct(DID_DELIBERATE_MUTATING, level, god_cares()); @@ -6221,7 +6227,7 @@ mon_resist_type bolt::apply_enchantment_to_monster(monster* mon) case BEAM_UNRAVELLED_MAGIC: if (mon->malmutate(agent())) // exact source doesn't matter obvious_effect = true; - if (YOU_KILL(thrower)) + if (BLAME_KILL(thrower)) { const int level = 2 + random2(3); did_god_conduct(DID_DELIBERATE_MUTATING, level, god_cares()); @@ -6359,7 +6365,7 @@ mon_resist_type bolt::apply_enchantment_to_monster(monster* mon) } case BEAM_HASTE: - if (YOU_KILL(thrower)) + if (BLAME_KILL(thrower)) did_god_conduct(DID_HASTY, 6, god_cares()); if (mon->stasis()) diff --git a/crawl-ref/source/mon-death.h b/crawl-ref/source/mon-death.h index fd82a8bc7c..b77f104302 100644 --- a/crawl-ref/source/mon-death.h +++ b/crawl-ref/source/mon-death.h @@ -35,6 +35,7 @@ class monster; #define YOU_KILL(x) ((x) == KILL_YOU || (x) == KILL_YOU_MISSILE \ || (x) == KILL_YOU_CONF) +#define BLAME_KILL(x) ((x) == KILL_YOU || (x) == KILL_YOU_MISSILE) #define MON_KILL(x) ((x) == KILL_MON || (x) == KILL_MON_MISSILE) #define RESET_KILL(x) ((x) == KILL_RESET || (x) == KILL_RESET_KEEP_ITEMS \ || (x) == KILL_TENTACLE_CLEANUP) -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 19:55:10
|
via 1c8910b83be96dcf1c87ef32e9841cb5e8afe722 (commit) from 534c8d50344a4d6619f4740d72b836ad3d44bf10 (commit) ----------------------------------------------------------------------- commit 1c8910b83be96dcf1c87ef32e9841cb5e8afe722 Author: David Lawrence Ramsey <poo...@gm...> Date: Fri Jul 11 14:40:40 2025 -0500 Add Zonguldrok speech for yet more artefact hats. Specifically, the hat of the Alchemist and the crown of vainglory. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/database/wpnnoise.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/crawl-ref/source/dat/database/wpnnoise.txt b/crawl-ref/source/dat/database/wpnnoise.txt index 66f755b934..a3d6016377 100644 --- a/crawl-ref/source/dat/database/wpnnoise.txt +++ b/crawl-ref/source/dat/database/wpnnoise.txt @@ -1958,6 +1958,14 @@ Such primal killing power, scion.... Be of strong will, and bring death to all who oppose us! %%%% +zonguldrok hat hat of the Alchemist + +Ah, alchemy. So many new and exciting ways to cause harm.... + +All our enemies can now be test subjects! + +Even if you find the elixir of immortality, remember: I was immortal first! +%%%% zonguldrok hat hat of Pondering # Pinky and the Brain @@ -1966,6 +1974,14 @@ Scion, are you pondering what I'm pondering? I can tolerate a stained cap for power such as this! I must contemplate what to do next.... +%%%% +zonguldrok hat crown of vainglory + +All will be laid low in my presence! + +I can tolerate light if it grants the power to send my enemies to eternal darkness! + +Kill for my glory, not yours, scion! ############################################################################### ############################################################################### # -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 19:30:10
|
via 534c8d50344a4d6619f4740d72b836ad3d44bf10 (commit) from 1fa925810a6d5232149caa2c0358e3104e94d1a9 (commit) ----------------------------------------------------------------------- commit 534c8d50344a4d6619f4740d72b836ad3d44bf10 Author: David Lawrence Ramsey <poo...@gm...> Date: Fri Jul 11 14:11:30 2025 -0500 Add Zonguldrok speech for yet more artefact hats. Specifically, the hood of the Assassin and the mask of the Dragon. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/database/wpnnoise.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crawl-ref/source/dat/database/wpnnoise.txt b/crawl-ref/source/dat/database/wpnnoise.txt index c7a265d944..66f755b934 100644 --- a/crawl-ref/source/dat/database/wpnnoise.txt +++ b/crawl-ref/source/dat/database/wpnnoise.txt @@ -1940,6 +1940,24 @@ Rage, rage against the shining of the light! Our combined strength is more than our foes can bear! %%%% +zonguldrok hat hood of the Assassin + +# Tolkien, Glaurung on Turin Turambar +Be a stabber in the dark, treacherous to foes! + +# Star Trek, Klingon saying +Four thousand throats may be cut in one night by a running man. + +Ah, the thrill of more efficient killing! +%%%% +zonguldrok hat mask of the Dragon + +A mask of a dragon worshipper? I shall make the dragons worship me! + +Such primal killing power, scion.... + +Be of strong will, and bring death to all who oppose us! +%%%% zonguldrok hat hat of Pondering # Pinky and the Brain -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 18:45:15
|
via 1fa925810a6d5232149caa2c0358e3104e94d1a9 (commit) from a680ef8428e13bb0c88b376fa62f8a9408d2c301 (commit) ----------------------------------------------------------------------- commit 1fa925810a6d5232149caa2c0358e3104e94d1a9 Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 16:11:39 2025 -0230 Fix broken force_more for tesseracts activating. (Acrobat) I forgot to update it when I rephrased the message they give. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/defaults/messages.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crawl-ref/source/dat/defaults/messages.txt b/crawl-ref/source/dat/defaults/messages.txt index bb9ecd8f70..cafb79209d 100644 --- a/crawl-ref/source/dat/defaults/messages.txt +++ b/crawl-ref/source/dat/defaults/messages.txt @@ -111,7 +111,7 @@ force_more_message += Zot has nearly found you force_more_message += Zot already knows force_more_message += Zot's attention fixes on you force_more_message += Zot's power touches on you -force_more_message += Zot begin to focus +force_more_message += You feel the power of Zot begin to gather ## Reduce chance of draining because flight or form runs out: force_more_message += ^Careful! -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 17:40:10
|
via a680ef8428e13bb0c88b376fa62f8a9408d2c301 (commit) from 77d58bd2100bb11ffeab9c7a04fb03be70d4e45d (commit) ----------------------------------------------------------------------- commit a680ef8428e13bb0c88b376fa62f8a9408d2c301 Author: David Lawrence Ramsey <poo...@gm...> Date: Fri Jul 11 12:18:18 2025 -0500 Add Zonguldrok speech for more artefact hats. Specifically, the crown of Dyrovepreva and the hat of the Bear Spirit. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/dat/database/wpnnoise.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crawl-ref/source/dat/database/wpnnoise.txt b/crawl-ref/source/dat/database/wpnnoise.txt index e5b1810062..c7a265d944 100644 --- a/crawl-ref/source/dat/database/wpnnoise.txt +++ b/crawl-ref/source/dat/database/wpnnoise.txt @@ -1922,6 +1922,24 @@ Bah, this is suited for peasants, not a master of souls. How lamentable, to be reduced to wearing... this. %%%% +zonguldrok hat crown of Dyrovepreva + +I can see much more clearly than that foolish titan prince! + +The purity of bronze and the beauty of gems: a fitting combination. + +Let us go off to war, my scion! +%%%% +zonguldrok hat hat of the Bear Spirit + +# Dylan Thomas +My scion, our enemies will not go gentle into that good night! + +# Dylan Thomas, again +Rage, rage against the shining of the light! + +Our combined strength is more than our foes can bear! +%%%% zonguldrok hat hat of Pondering # Pinky and the Brain -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 10:40:34
|
via 77d58bd2100bb11ffeab9c7a04fb03be70d4e45d (commit) via b7c2e1d855219a9b867eeb221698a9f4ba1a647d (commit) via 7c6d325bc265f633814e8b385bd99b203b1cef93 (commit) via c6894e477c601c286bc8424506c9bb80e190084e (commit) via b873afd9ec3d35eefd53920da16130b7959612d6 (commit) via ff7e82441f3a8dd63c3da6cedf01375270e93ccd (commit) via 8903f4d545fb1a6463b2b6f2b865e772d1dfc1a2 (commit) from 71506e332b858dde8cde902e42d1823f00edc394 (commit) ----------------------------------------------------------------------- commit 77d58bd2100bb11ffeab9c7a04fb03be70d4e45d Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 08:07:07 2025 -0230 Fix Figment icon not rendering in webtiles commit b7c2e1d855219a9b867eeb221698a9f4ba1a647d Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:54:31 2025 -0230 Fix piety troves reporting their cost as "be buggy" (Ogregutan) (On the dungeon overview screen) commit 7c6d325bc265f633814e8b385bd99b203b1cef93 Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:54:01 2025 -0230 Fix a Yred reaping crash if Ostracised to 0 piety (Ogregutan) commit c6894e477c601c286bc8424506c9bb80e190084e Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:48:00 2025 -0230 Fix a force_more on allies getting banes (Lici) Turns out 'Doom befalls you' also matches 'Doom befalls your [something]'. commit b873afd9ec3d35eefd53920da16130b7959612d6 Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:47:16 2025 -0230 New option: always_show_doom_contam (Particleface) If true, this displays the doom and contam meters in the upper-right of the sidebar, regardless of whether the player currently has any doom or contam. commit ff7e82441f3a8dd63c3da6cedf01375270e93ccd Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:18:27 2025 -0230 Don't announce "You feel the reach of Zot diminish." for both tesseracts commit 8903f4d545fb1a6463b2b6f2b865e772d1dfc1a2 Author: DracoOmega <dra...@gm...> Date: Fri Jul 11 07:17:33 2025 -0230 Fix a crash with banishing a boundless tesseract (WizardIke) ----------------------------------------------------------------------- Summary of changes: crawl-ref/docs/options_guide.txt | 5 +++++ crawl-ref/source/dat/defaults/messages.txt | 2 +- crawl-ref/source/dat/dlua/lm_trove.lua | 2 +- crawl-ref/source/initfile.cc | 2 ++ crawl-ref/source/mon-death.cc | 7 +++++-- crawl-ref/source/options.h | 1 + crawl-ref/source/output.cc | 13 ++++++++----- crawl-ref/source/religion.cc | 2 +- .../source/webserver/game_data/static/cell_renderer.js | 1 + crawl-ref/source/webserver/game_data/static/player.js | 7 +++++-- 10 files changed, 30 insertions(+), 12 deletions(-) diff --git a/crawl-ref/docs/options_guide.txt b/crawl-ref/docs/options_guide.txt index cb72c5bfc7..d0c1f42cc0 100644 --- a/crawl-ref/docs/options_guide.txt +++ b/crawl-ref/docs/options_guide.txt @@ -1915,6 +1915,11 @@ show_resist_percent = true from each element, based on their current pips of resistance, will be shown on the % screen. +always_show_doom_contam = false + If set to true, always display the doom and contam meters in the + upper-right of the side panel, even if the player doesn't currently + have any doom or contamination. + 3-i Colours (messages and menus) ----------------- diff --git a/crawl-ref/source/dat/defaults/messages.txt b/crawl-ref/source/dat/defaults/messages.txt index d5487c221a..bb9ecd8f70 100644 --- a/crawl-ref/source/dat/defaults/messages.txt +++ b/crawl-ref/source/dat/defaults/messages.txt @@ -152,7 +152,7 @@ force_more_message += You are slowing down force_more_message += You fall asleep # Banes -force_more_message += befalls you +force_more_message += befalls you.... force_more_message += upon you is lifted # Abyss exits and rune diff --git a/crawl-ref/source/dat/dlua/lm_trove.lua b/crawl-ref/source/dat/dlua/lm_trove.lua index 834f7b2330..621ebcbd35 100644 --- a/crawl-ref/source/dat/dlua/lm_trove.lua +++ b/crawl-ref/source/dat/dlua/lm_trove.lua @@ -133,7 +133,7 @@ function TroveMarker:overview_note (marker) else return "give " .. self:item_name(false) end - elseif toll.type == "piety" then + elseif toll.type == "nopiety" then return "lose all piety" elseif toll.type == "bane" then return "suffer the " .. crawl.bane_name(toll.bane) diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc index 057bd69cb8..1dd920756d 100644 --- a/crawl-ref/source/initfile.cc +++ b/crawl-ref/source/initfile.cc @@ -474,6 +474,7 @@ const vector<GameOption*> game_options::build_options_list() new BoolGameOption(SIMPLE_NAME(warn_hatches), false), new BoolGameOption(SIMPLE_NAME(warn_contam_cost), false), new BoolGameOption(SIMPLE_NAME(show_resist_percent), true), + new BoolGameOption(SIMPLE_NAME(always_show_doom_contam), false), new BoolGameOption(SIMPLE_NAME(enable_recast_spell), true), new BoolGameOption(SIMPLE_NAME(auto_hide_spells), false), new BoolGameOption(SIMPLE_NAME(blink_brightens_background), false), @@ -5393,6 +5394,7 @@ void game_options::write_webtiles_options(const string& name) tiles.json_write_int("glyph_mode_font_size", glyph_mode_font_size); tiles.json_write_bool("show_game_time", show_game_time); + tiles.json_write_bool("always_show_doom_contam", always_show_doom_contam); // TODO: convert action_panel_show into a yes/no/never option. It would be // better to have a more straightforward way of disabling the panel diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc index 3cded79120..8dee26a8a0 100644 --- a/crawl-ref/source/mon-death.cc +++ b/crawl-ref/source/mon-death.cc @@ -3163,12 +3163,14 @@ item_def* monster_die(monster& mons, killer_type killer, // Must be done after health is set to zero and monster is properly marked dead. if (mons.type == MONS_BOUNDLESS_TESSERACT) { - mprf(MSGCH_ORB, "You feel the reach of Zot diminish."); // Remove all non-rewarding spawns, along with the other tesseract. for (monster_iterator mi; mi; ++mi) { - if (mi->type == MONS_BOUNDLESS_TESSERACT && mi->mid != mons.mid) + if (mi->type == MONS_BOUNDLESS_TESSERACT && mi->mid != mons.mid + && !(mi->flags & MF_BANISHED)) + { monster_die(**mi, killer, killer_index); + } else if ((mi->flags & (MF_HARD_RESET | MF_NO_REWARD) && mi->props.exists(BLAME_KEY))) { @@ -3187,6 +3189,7 @@ item_def* monster_die(monster& mons, killer_type killer, if (you.props.exists(TESSERACT_START_TIME_KEY)) { + mprf(MSGCH_ORB, "You feel the reach of Zot diminish."); mark_milestone("tesseract.kill", "destroyed the tesseracts."); you.props.erase(TESSERACT_START_TIME_KEY); } diff --git a/crawl-ref/source/options.h b/crawl-ref/source/options.h index 753fe3100c..0c8b7d9bb0 100644 --- a/crawl-ref/source/options.h +++ b/crawl-ref/source/options.h @@ -516,6 +516,7 @@ public: bool warn_hatches; // offer a y/n prompt when the player uses an escape hatch bool warn_contam_cost; // Prompt when casting a spell like Irradiate, with dangerous contam. bool show_resist_percent; // Show resist percentages on the % screen + bool always_show_doom_contam; // Always show doom/contam meters, even without doom/contam bool enable_recast_spell; // Allow recasting spells with 'z' Enter. skill_focus_mode skill_focus; // is the focus skills available bool auto_hide_spells; // hide new spells diff --git a/crawl-ref/source/output.cc b/crawl-ref/source/output.cc index e2a6f5744e..138e55ac4e 100644 --- a/crawl-ref/source/output.cc +++ b/crawl-ref/source/output.cc @@ -1040,7 +1040,7 @@ static void _print_stats_doom(int x, int y) // Hide the bar entirely if there is no active doom (since that will be true // most of the time). - if (you.attribute[ATTR_DOOM] == 0) + if (you.attribute[ATTR_DOOM] == 0 && !Options.always_show_doom_contam) { CPRINTF(" "); return; @@ -1056,8 +1056,10 @@ static void _print_stats_doom(int x, int y) textcolour(LIGHTRED); else if (you.attribute[ATTR_DOOM] >= 25) textcolour(YELLOW); - else + else if (you.attribute[ATTR_DOOM] > 0) textcolour(LIGHTGRAY); + else + textcolour(DARKGRAY); CPRINTF("%d%% ", you.attribute[ATTR_DOOM]); you.redraw_doom = false; @@ -1068,9 +1070,9 @@ static void _print_stats_contam(int x, int y) CGOTOXY(x, y, GOTO_STAT); // Hide the bar entirely if the player has no contam - if (you.magic_contamination == 0) + if (you.magic_contamination == 0 && !Options.always_show_doom_contam) { - CPRINTF(" "); + CPRINTF(" "); return; } @@ -1078,7 +1080,8 @@ static void _print_stats_contam(int x, int y) textcolour(HUD_CAPTION_COLOUR); CPRINTF("Contam: "); - const int contam = max(1, you.magic_contamination / 10); + const int contam = max(you.magic_contamination > 0 ? 1 : 0, + you.magic_contamination / 10); if (contam >= 200) textcolour(RED); else if (contam >= 100) diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index d710794752..31db4eb5d3 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -1131,7 +1131,7 @@ bool yred_reap_chance() int ratio = min(piety_breakpoint(5), (int)you.piety()) * 100 / piety_breakpoint(5); int min_chance = 15 + (25 * ratio / 100); - ratio = min(100, (hd * 100 / you.piety() * 4)); + ratio = min(100, (hd * 100 / max(you.piety() * 4, 1))); int chance = (ratio * min_chance / 100) + ((100 - ratio)); return x_chance_in_y(chance, 100); diff --git a/crawl-ref/source/webserver/game_data/static/cell_renderer.js b/crawl-ref/source/webserver/game_data/static/cell_renderer.js index 395fcee6b3..d5d761df8d 100644 --- a/crawl-ref/source/webserver/game_data/static/cell_renderer.js +++ b/crawl-ref/source/webserver/game_data/static/cell_renderer.js @@ -1174,6 +1174,7 @@ function ($, view_data, gui, main, tileinfo_player, icons, dngn, enums, case icons.VEXED: case icons.PARADOX: case icons.WARDING: + case icons.FIGMENT: this.draw_icon(idx, x, y, ofsx, ofsy, img_scale); return 10; case icons.CONSTRICTED: diff --git a/crawl-ref/source/webserver/game_data/static/player.js b/crawl-ref/source/webserver/game_data/static/player.js index c4b51dda3a..fa22084f1c 100644 --- a/crawl-ref/source/webserver/game_data/static/player.js +++ b/crawl-ref/source/webserver/game_data/static/player.js @@ -290,7 +290,7 @@ function ($, comm, client, enums, map_knowledge, messages, options, util) { function update_doom() { - if (player.doom == 0) + if (player.doom == 0 && options.get("always_show_doom_contam") === false) { $("#stats_doom_ui").hide(); return; @@ -303,12 +303,15 @@ function ($, comm, client, enums, map_knowledge, messages, options, util) { elem.text(" " + val + "%"); var colour = "fg7"; + if (player.doom == 0) + colour = "fg8"; if (player.doom >= 75) colour = "fg5"; else if (player.doom >= 50) colour = "fg12"; else if (player.doom >= 25) colour = "fg14"; + elem.addClass(colour); $("#stats_doom").html(elem); @@ -323,7 +326,7 @@ function ($, comm, client, enums, map_knowledge, messages, options, util) { function update_contam() { - if (player.contam == 0) + if (player.contam == 0 && options.get("always_show_doom_contam") === false) { $("#stats_contam_ui").hide(); return; -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-11 07:05:14
|
via 71506e332b858dde8cde902e42d1823f00edc394 (commit) from 79144c677037e29759d624930c45b1401d67b5c2 (commit) ----------------------------------------------------------------------- commit 71506e332b858dde8cde902e42d1823f00edc394 Author: David Lawrence Ramsey <poo...@gm...> Date: Wed Jul 9 20:01:16 2025 -0500 Adjust crawling flesh cage polymorphing/mutation. Since they're made of mostly ugly thing fragments, they shouldn't polymorph the usual way, and since they don't have different colours the way ordinary ugly things do, disallow their polymorphing, and make their mutation only cosmetic. (Coincidentally, both of these are exactly how polymorphed/mutated abominations are treated.) ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/monster.cc | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/crawl-ref/source/monster.cc b/crawl-ref/source/monster.cc index 596c8ad003..9ab429fca8 100644 --- a/crawl-ref/source/monster.cc +++ b/crawl-ref/source/monster.cc @@ -5107,10 +5107,15 @@ bool monster::can_mutate() const if (type == MONS_CHAOS_SPAWN) return false; - // Abominations re-randomize their tile when mutated. They do not gain the - // malmutate status or experience any other non-cosmetic effect. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated. They do not gain the malmutate status or experience any other + // non-cosmetic effect. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) + { return true; + } const mon_holy_type holi = holiness(); @@ -5128,10 +5133,17 @@ bool monster::can_polymorph() const if (type == MONS_CHAOS_SPAWN) return true; - // Abominations re-randomize their tile when mutated, so can_mutate returns - // true for them. Like all undead, they can't be polymorphed. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated, so can_mutate returns true for them. Abominations can't be + // polymorphed because they're undead, and crawling flesh cages can't be + // polymorphed the usual way because they're mostly made of ugly thing + // fragments. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) + { return false; + } // Polymorphing apostles breaks all sorts of things (like making challenges // unwinnable if it happens) and it would be complex to fix this, so let's @@ -5185,9 +5197,12 @@ bool monster::malmutate(const actor* source, const string& /*reason*/) if (!can_mutate()) return false; - // Abominations re-randomize their tile when mutated. They do not gain the - // malmutate status or experience any other non-cosmetic effect. - if (type == MONS_ABOMINATION_SMALL || type == MONS_ABOMINATION_LARGE) + // Abominations and crawling flesh cages re-randomize their tile when + // mutated. They do not gain the malmutate status or experience any other + // non-cosmetic effect. + if (type == MONS_ABOMINATION_SMALL + || type == MONS_ABOMINATION_LARGE + || type == MONS_CRAWLING_FLESH_CAGE) { #ifdef USE_TILE props[TILE_NUM_KEY].get_short() = ui_random(256); -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-10 16:50:10
|
via 79144c677037e29759d624930c45b1401d67b5c2 (commit) from bb92c9d70428e48777545ae3884f0e780995c5e2 (commit) ----------------------------------------------------------------------- commit 79144c677037e29759d624930c45b1401d67b5c2 Author: DracoOmega <dra...@gm...> Date: Thu Jul 10 14:16:10 2025 -0230 Add an actual message to the tesseract milestones ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/mon-abil.cc | 2 +- crawl-ref/source/mon-death.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crawl-ref/source/mon-abil.cc b/crawl-ref/source/mon-abil.cc index f1d077450b..a3330ba276 100644 --- a/crawl-ref/source/mon-abil.cc +++ b/crawl-ref/source/mon-abil.cc @@ -1471,7 +1471,7 @@ void tesseract_action(monster& mon) if (mon.behaviour != BEH_SLEEP && !mon.props.exists(TESSERACT_START_TIME_KEY)) { mprf(MSGCH_WARN, "You feel the power of Zot begin to gather its forces!"); - mark_milestone("tesseract.activate", ""); + mark_milestone("tesseract.activate", "activated a tesseract"); for (monster_iterator mi; mi; ++mi) { diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc index 454ab5680a..3cded79120 100644 --- a/crawl-ref/source/mon-death.cc +++ b/crawl-ref/source/mon-death.cc @@ -3187,7 +3187,7 @@ item_def* monster_die(monster& mons, killer_type killer, if (you.props.exists(TESSERACT_START_TIME_KEY)) { - mark_milestone("tesseract.kill", ""); + mark_milestone("tesseract.kill", "destroyed the tesseracts."); you.props.erase(TESSERACT_START_TIME_KEY); } } -- Dungeon Crawl Stone Soup |
From: <gi...@cr...> - 2025-07-10 12:35:11
|
via bb92c9d70428e48777545ae3884f0e780995c5e2 (commit) via f72e9069bfe63de11eaa828750857da25ad3fef5 (commit) via e64c27fa7ce588b53477c71df053ebd92be5f873 (commit) from 8c5cb908cfc73e627762bdf7436b292a5c2d4e03 (commit) ----------------------------------------------------------------------- commit bb92c9d70428e48777545ae3884f0e780995c5e2 Author: DracoOmega <dra...@gm...> Date: Thu Jul 10 09:42:52 2025 -0230 Adjust offlevel tesseract turn cap (acrobat) The comment mistakenly talk about turns when the value involved was in aut, but that made me also realize the cap was too small (since it was aut.) I have raised the cap to 1000 turns (ie: 10,000 aut). The comment should now also be accurate. commit f72e9069bfe63de11eaa828750857da25ad3fef5 Author: DracoOmega <dra...@gm...> Date: Thu Jul 10 09:40:11 2025 -0230 Add milestones for tesseracts activating/dying (gammafunk) commit e64c27fa7ce588b53477c71df053ebd92be5f873 Author: Isaac Clancy <ik...@ya...> Date: Thu Jul 10 12:47:33 2025 +1200 Fix a webtiles desync when a spectator joins When a spectactor joins we send the full map data to the spectator that just joined and record this map data is the last sent map data. However, the player and any pre-exiting spectators might not have received this map data yet and as we set it as the last sent map data it won't be sent again until it changes. To fix this, make sure all the pre-existing clients have the most up to date map data before sending the full map data to the new spectator. Fixes #1474 Fixes #1637 Fixes #2473 Fixes #2499 Fixes #2704 Fixes #3153 Fixes #3222 Fixes #3489 Fixes #3974 Fixes #4013 Fixes #4169 Fixes #4536 ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/mon-abil.cc | 7 ++++--- crawl-ref/source/mon-death.cc | 7 ++++++- crawl-ref/source/tileweb.cc | 23 +++++++++++++++++++--- crawl-ref/source/tileweb.h | 2 +- .../source/webserver/webtiles/process_handler.py | 12 +++++++++-- 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/crawl-ref/source/mon-abil.cc b/crawl-ref/source/mon-abil.cc index 39acbf7a06..f1d077450b 100644 --- a/crawl-ref/source/mon-abil.cc +++ b/crawl-ref/source/mon-abil.cc @@ -1471,6 +1471,7 @@ void tesseract_action(monster& mon) if (mon.behaviour != BEH_SLEEP && !mon.props.exists(TESSERACT_START_TIME_KEY)) { mprf(MSGCH_WARN, "You feel the power of Zot begin to gather its forces!"); + mark_milestone("tesseract.activate", ""); for (monster_iterator mi; mi; ++mi) { @@ -1502,10 +1503,10 @@ void tesseract_action(monster& mon) // Handle regular spawning int& timer = mon.props[TESSERACT_SPAWN_TIMER_KEY].get_int(); - // Don't act as if more than 3000 turns have passed off-level (in case the + // Don't act as if more than 1000 turns have passed off-level (in case the // player goes to do Extended in the meantime). - if (you.elapsed_time - timer > 3000) - timer = you.elapsed_time - 3000; + if (you.elapsed_time - timer > 10000) + timer = you.elapsed_time - 10000; // Catch up however many spawns should have happened since the last time // we activated. diff --git a/crawl-ref/source/mon-death.cc b/crawl-ref/source/mon-death.cc index c120b39a5c..454ab5680a 100644 --- a/crawl-ref/source/mon-death.cc +++ b/crawl-ref/source/mon-death.cc @@ -3184,7 +3184,12 @@ item_def* monster_die(monster& mons, killer_type killer, } } } - you.props.erase(TESSERACT_START_TIME_KEY); + + if (you.props.exists(TESSERACT_START_TIME_KEY)) + { + mark_milestone("tesseract.kill", ""); + you.props.erase(TESSERACT_START_TIME_KEY); + } } if (mons_is_tentacle_head(mons_base_type(mons))) { diff --git a/crawl-ref/source/tileweb.cc b/crawl-ref/source/tileweb.cc index 66f0c554df..e8ca97965a 100644 --- a/crawl-ref/source/tileweb.cc +++ b/crawl-ref/source/tileweb.cc @@ -1825,7 +1825,7 @@ void TilesFramework::_mcache_ref(bool inc) } } -void TilesFramework::_send_map(bool force_full) +void TilesFramework::_send_map(bool spectator_only) { // TODO: prevent in some other / better way? if (_send_lock) @@ -1835,7 +1835,7 @@ void TilesFramework::_send_map(bool force_full) map<uint32_t, coord_def> new_monster_locs; - force_full = force_full || m_need_full_map; + bool force_full = spectator_only || m_need_full_map; m_need_full_map = false; json_open_object(); @@ -1843,6 +1843,10 @@ void TilesFramework::_send_map(bool force_full) json_treat_as_empty(); // cautionary note: this is used in heuristic ways in process_handler.py, + // see `_is_spectator_only` + if (spectator_only) + json_write_bool("spect_only", true); + // cautionary note: this is used in heuristic ways in process_handler.py, // see `_is_full_map_msg` if (force_full) json_write_bool("clear", true); @@ -1939,6 +1943,10 @@ void TilesFramework::_send_map(bool force_full) if (force_full) _send_cursor(CURSOR_MAP); + // Everything should already be up to date when called with spectator_only + if (spectator_only) + return; + if (m_mcache_ref_done) _mcache_ref(false); @@ -2128,7 +2136,16 @@ void TilesFramework::_send_everything() // Map is sent after player, otherwise HP/MP bar can be left behind in the // old location if the player has moved - _send_map(true); + + // The player might not have received the latest map data yet and + // _send_map(true) only sends the full map to the newly connected + // spectator but resets the dirty flags. So make sure the player's + // map data is up to date first. + const bool sent_full_map = m_need_full_map; + _send_map(false); + // If we didn't send the full map, send it to the new spectator + if (!sent_full_map) + _send_map(true); // Menus json_open_object(); diff --git a/crawl-ref/source/tileweb.h b/crawl-ref/source/tileweb.h index 70712eeac8..affd2a0477 100644 --- a/crawl-ref/source/tileweb.h +++ b/crawl-ref/source/tileweb.h @@ -323,7 +323,7 @@ protected: void _mcache_ref(bool inc); void _send_cursor(cursor_type type); - void _send_map(bool force_full = false); + void _send_map(bool spectator_only = false); void _send_cell(const coord_def &gc, const screen_cell_t ¤t_sc, const screen_cell_t &next_sc, const map_cell ¤t_mc, const map_cell &next_mc, diff --git a/crawl-ref/source/webserver/webtiles/process_handler.py b/crawl-ref/source/webserver/webtiles/process_handler.py index e506c3b284..971c4c62c7 100644 --- a/crawl-ref/source/webserver/webtiles/process_handler.py +++ b/crawl-ref/source/webserver/webtiles/process_handler.py @@ -189,6 +189,10 @@ class CrawlProcessHandlerBase(object): return (re.search(r'"msg" *: *"map"', tocheck) and re.search(r'"clear" *: *true', tocheck)) + def _is_spectator_only(self, msg): + tocheck = msg[0:50] + return re.search(r'"spect_only" *: *true', tocheck) + def handle_process_message(self, msg, send): # type: (str, bool) -> None # special handling for map messages on a new spectator: these can be # massive, and the deflate time adds up, so only send it to new @@ -197,8 +201,12 @@ class CrawlProcessHandlerBase(object): # TODO: if multiple spectators join at the same time, it's probably # possible for this heuristic to fail and send a full map to everyone if self._fresh_watchers and self._is_full_map_msg(msg): - for w in self._fresh_watchers: - w.append_message(msg, send) + if self._is_spectator_only(msg): + for w in self._fresh_watchers: + w.append_message(msg, send) + else: + for receiver in self._receivers: + receiver.append_message(msg, send) self._fresh_watchers = set() return for receiver in self._receivers: -- Dungeon Crawl Stone Soup |