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 |