From fc6482ae43a1154f2d7d992d9da685fcaf93fafd Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Sun, 7 Dec 2025 20:18:53 +0100 Subject: [PATCH] ru:: randeff now has id, and can be found via id --- rogueviz/ru/classes.cpp | 3 ++- rogueviz/ru/randeff.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/rogueviz/ru/classes.cpp b/rogueviz/ru/classes.cpp index ff87986b..88b4e943 100644 --- a/rogueviz/ru/classes.cpp +++ b/rogueviz/ru/classes.cpp @@ -17,13 +17,14 @@ struct data { using powerfun = hr::function; struct randeff { + string id; string name; string desc; string effect; power *which_weapon; int qty, a, b, c, d; powerfun act; - randeff (string name, string desc, string effect, powerfun act) : name(name), desc(desc), effect(effect), act(act) {} + randeff (string name, string desc, string effect, powerfun act); }; enum class mod { burning, freezing, disarming }; diff --git a/rogueviz/ru/randeff.cpp b/rogueviz/ru/randeff.cpp index cb9d81e0..5b0cf0f9 100644 --- a/rogueviz/ru/randeff.cpp +++ b/rogueviz/ru/randeff.cpp @@ -1,5 +1,14 @@ namespace rogue_unlike { +map *all_effects; + +randeff::randeff (string name, string desc, string effect, powerfun act) + : name(name), desc(desc), effect(effect), act(act) { + id = unspace(name); + if(!all_effects) all_effects = new map; + (*all_effects)[id] = this; + } + randeff inc_str("Strength", "Increases your Strength by 50%.", "You feel stronger!", [] (data &d) { m.next.stats[stat::str] += m.current.stats[stat::str] / 3; }); randeff inc_dex("Dexterity", "Increases your Dexterity by 50%.", "You feel faster!", [] (data &d) { m.next.stats[stat::dex] += m.current.stats[stat::dex] / 3; }); randeff inc_con("Toughness", "Increases your Toughness by 50%.", "You feel tougher!", [] (data &d) { m.next.stats[stat::con] += m.current.stats[stat::con] / 3; });