diff options
author | Bardur Arantsson <bardur@scientician.net> | 2015-09-14 17:30:27 +0200 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2015-09-14 17:30:27 +0200 |
commit | 87544c0599ec69df0af560dbfe7f58482d2a0bf5 (patch) | |
tree | 501ace7c8a913a23e74debda1c6026bad20d6364 | |
parent | b7ceceb10db03a8d59de5de39a7cd6465409c35c (diff) |
Replace hack_apply_magic_power with optional parameter
-rw-r--r-- | src/cmd7.cc | 9 | ||||
-rw-r--r-- | src/object2.cc | 13 | ||||
-rw-r--r-- | src/object2.hpp | 5 | ||||
-rw-r--r-- | src/traps.cc | 6 | ||||
-rw-r--r-- | src/wizard1.cc | 3 | ||||
-rw-r--r-- | src/wizard2.cc | 3 |
6 files changed, 14 insertions, 25 deletions
diff --git a/src/cmd7.cc b/src/cmd7.cc index 1bf6d48d..acf7e73b 100644 --- a/src/cmd7.cc +++ b/src/cmd7.cc @@ -2778,8 +2778,7 @@ static void alchemist_display_recipe(int tval, int sval, int ego) o_ptr = &forge; object_prep(o_ptr, lookup_kind(tval, sval)); o_ptr->name2 = ego; - hack_apply_magic_power = -99; - apply_magic(o_ptr, get_skill(SKILL_ALCHEMY) * 2, FALSE, FALSE, FALSE); + apply_magic(o_ptr, get_skill(SKILL_ALCHEMY) * 2, FALSE, FALSE, FALSE, boost::make_optional(0)); object_aware(o_ptr); object_known(o_ptr); /* the 0 mode means only the text, leaving off any numbers */ @@ -3843,8 +3842,7 @@ void do_cmd_alchemist(void) o_ptr = &forge; object_wipe(o_ptr); object_prep(o_ptr, lookup_kind(tval, sval)); - hack_apply_magic_power = -99; - apply_magic(o_ptr, askill * 2, FALSE, FALSE, FALSE); + apply_magic(o_ptr, askill * 2, FALSE, FALSE, FALSE, boost::make_optional(0)); if ( o_ptr->tval == TV_WAND || o_ptr->tval == TV_STAFF) o_ptr->pval = 0; value = object_value_real(o_ptr); @@ -4147,8 +4145,7 @@ void do_cmd_alchemist(void) s_ptr->number = 1; /* Force creation of non ego non cursed */ - hack_apply_magic_power = -99; - apply_magic(s_ptr, 0, FALSE, FALSE, FALSE); + apply_magic(s_ptr, 0, FALSE, FALSE, FALSE, boost::make_optional(0)); /* Hack -- remove possible curse */ if (cursed_p(s_ptr)) diff --git a/src/object2.cc b/src/object2.cc index d437d24d..b0e33365 100644 --- a/src/object2.cc +++ b/src/object2.cc @@ -3884,8 +3884,7 @@ void add_random_ego_flag(object_type *o_ptr, int fego, bool_ *limit_blows) * "good" and "great" arguments are false. As a total hack, if "great" is * true, then the item gets 3 extra "attempts" to become an artifact. */ -int hack_apply_magic_power = 0; -void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ great) +void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ great, boost::optional<int> force_power) { int i, rolls, f1, f2, power; object_kind *k_ptr = &k_info[o_ptr->k_idx]; @@ -3986,15 +3985,11 @@ void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ grea if (magik(f2)) power = -2; } - /* Mega hack */ - if (hack_apply_magic_power) + /* Override power with parameter? */ + if (auto power_override = force_power) { - if (hack_apply_magic_power == -99) - power = 0; - else - power = hack_apply_magic_power; + power = *power_override; } - hack_apply_magic_power = 0; /* Assume no rolls */ rolls = 0; diff --git a/src/object2.hpp b/src/object2.hpp index 6d5d7160..26d07b25 100644 --- a/src/object2.hpp +++ b/src/object2.hpp @@ -4,6 +4,8 @@ #include "object_type_fwd.hpp" #include "obj_theme_fwd.hpp" +#include <boost/optional.hpp> + typedef enum { OPTIMIZE, NO_OPTIMIZE } optimize_flag; typedef enum { DESCRIBE, NO_DESCRIBE } describe_flag; @@ -49,8 +51,7 @@ extern s16b lookup_kind(int tval, int sval); extern void object_wipe(object_type *o_ptr); extern void object_prep(object_type *o_ptr, int k_idx); extern void object_copy(object_type *o_ptr, object_type *j_ptr); -extern int hack_apply_magic_power; -extern void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ great); +extern void apply_magic(object_type *o_ptr, int lev, bool_ okay, bool_ good, bool_ great, boost::optional<int> force_power = boost::none); extern bool_ make_object(object_type *j_ptr, bool_ good, bool_ great, obj_theme const &theme); extern void place_object(int y, int x, bool_ good, bool_ great, int where); extern bool_ make_gold(object_type *j_ptr); diff --git a/src/traps.cc b/src/traps.cc index b336a770..bc4ef99f 100644 --- a/src/traps.cc +++ b/src/traps.cc @@ -1382,8 +1382,7 @@ bool_ player_activate_trap_type(s16b y, s16b x, object_type *i_ptr, s16b item) /* Create a Wand of Nothing */ object_prep(j_ptr, lookup_kind(TV_WAND, SV_WAND_NOTHING)); - hack_apply_magic_power = -99; - apply_magic(j_ptr, 0, FALSE, FALSE, FALSE); + apply_magic(j_ptr, 0, FALSE, FALSE, FALSE, boost::make_optional(0)); j_ptr->ident &= ~IDENT_KNOWN; p_ptr->notice |= (PN_COMBINE | PN_REORDER); } @@ -1393,8 +1392,7 @@ bool_ player_activate_trap_type(s16b y, s16b x, object_type *i_ptr, s16b item) /* Create a Staff of Nothing */ object_prep(j_ptr, lookup_kind(TV_STAFF, SV_STAFF_NOTHING)); - hack_apply_magic_power = -99; - apply_magic(j_ptr, 0, FALSE, FALSE, FALSE); + apply_magic(j_ptr, 0, FALSE, FALSE, FALSE, boost::make_optional(0)); j_ptr->ident &= ~IDENT_KNOWN; p_ptr->notice |= (PN_COMBINE | PN_REORDER); } diff --git a/src/wizard1.cc b/src/wizard1.cc index 7e139808..476def67 100644 --- a/src/wizard1.cc +++ b/src/wizard1.cc @@ -295,8 +295,7 @@ static void kind_info(char *buf, char *dam, char *wgt, int *lev, s32b *val, int if ((k_ptr->tval == TV_WAND) || (k_ptr->tval == TV_STAFF)) { - hack_apply_magic_power = -99; - apply_magic(q_ptr, 0, FALSE, FALSE, FALSE); + apply_magic(q_ptr, 0, FALSE, FALSE, FALSE, boost::make_optional(0)); } /* Level */ diff --git a/src/wizard2.cc b/src/wizard2.cc index c4f5436e..7bce50c7 100644 --- a/src/wizard2.cc +++ b/src/wizard2.cc @@ -786,8 +786,7 @@ static void wiz_reroll_item(object_type *o_ptr) else if (ch == 'b' || ch == 'B') { object_prep(q_ptr, o_ptr->k_idx); - hack_apply_magic_power = -2; - apply_magic(q_ptr, dun_level, FALSE, FALSE, FALSE); + apply_magic(q_ptr, dun_level, FALSE, FALSE, FALSE, boost::make_optional(-2)); } /* Apply normal magic, but first clear object */ |