From: mogami Date: Wed, 9 Jul 2003 16:01:56 +0000 (+0000) Subject: アンドロイドの強化度に対するランダムアーティファクトの評価が低すぎたので調整。 X-Git-Tag: v2.1.2~1283 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=eecaab47ccaed89d3c562ab02f0b73cc85132ed0;p=hengbandforosx%2Fhengbandosx.git アンドロイドの強化度に対するランダムアーティファクトの評価が低すぎたので調整。 --- diff --git a/src/effects.c b/src/effects.c index d540fc120..0b763c2aa 100644 --- a/src/effects.c +++ b/src/effects.c @@ -5434,7 +5434,33 @@ void calc_android_exp(void) level = (level + MAX(a_info[o_ptr->name1].level - 8, 5)) / 2; level += MIN(20, a_info[o_ptr->name1].rarity/(a_info[o_ptr->name1].gen_flags & TRG_INSTA_ART ? 10 : 3)); } - else if (o_ptr->name2) level += MAX(3, (e_info[o_ptr->name2].rating - 5)/2); + else if (o_ptr->name2) + { + level += MAX(3, (e_info[o_ptr->name2].rating - 5)/2); + } + else if (o_ptr->art_name) + { + s32b total_flags = flag_cost(o_ptr, o_ptr->pval); + int fake_level; + + if (o_ptr->tval >= TV_BOOTS) + { + /* For armors */ + if (total_flags < 15000) fake_level = 10; + else if (total_flags < 35000) fake_level = 25; + else fake_level = 40; + } + else + { + /* For weapons */ + if (total_flags < 20000) fake_level = 10; + else if (total_flags < 45000) fake_level = 25; + else fake_level = 40; + } + + level = MAX(level, (level + MAX(fake_level - 8, 5)) / 2 + 3); + } + value = object_value_real(q_ptr); if (value <= 0) continue; diff --git a/src/object2.c b/src/object2.c index 0146bc201..0958bed81 100644 --- a/src/object2.c +++ b/src/object2.c @@ -865,16 +865,23 @@ static s32b object_value_base(object_type *o_ptr) /* Return the value of the flags the object has... */ -s32b flag_cost(object_type * o_ptr, int plusses) +s32b flag_cost(object_type *o_ptr, int plusses) { s32b total = 0; u32b flgs[TR_FLAG_SIZE]; s32b tmp_cost; int count; int i; + object_kind *k_ptr; object_flags(o_ptr, flgs); + /* Base item's value will be added later. */ + k_ptr = &k_info[o_ptr->k_idx]; + for (i = 0; i < TR_FLAG_SIZE; i++) + flgs[i] &= ~(k_ptr->flags[i]); + + /* Fixed artifact's value will be added later. */ if (o_ptr->name1) { artifact_type *a_ptr = &a_info[o_ptr->name1]; @@ -882,30 +889,21 @@ s32b flag_cost(object_type * o_ptr, int plusses) for (i = 0; i < TR_FLAG_SIZE; i++) flgs[i] &= ~(a_ptr->flags[i]); } - else - { - if ((o_ptr->tval == TV_RING) || (o_ptr->tval == TV_AMULET)) - { - object_kind *k_ptr = &k_info[o_ptr->k_idx]; - for (i = 0; i < TR_FLAG_SIZE; i++) - flgs[i] &= ~(k_ptr->flags[i]); - } - - if (o_ptr->name2) - { - ego_item_type *e_ptr = &e_info[o_ptr->name2]; + /* Fixed ego item's value will be added later. */ + else if (o_ptr->name2) + { + ego_item_type *e_ptr = &e_info[o_ptr->name2]; - for (i = 0; i < TR_FLAG_SIZE; i++) - flgs[i] &= ~(e_ptr->flags[i]); + for (i = 0; i < TR_FLAG_SIZE; i++) + flgs[i] &= ~(e_ptr->flags[i]); - } - else if (o_ptr->art_name) - { - total = 5000; - } } + + /* + * Calucurate values of remaining flags + */ if (have_flag(flgs, TR_STR)) total += (1700 * plusses); if (have_flag(flgs, TR_INT)) total += (1700 * plusses); if (have_flag(flgs, TR_WIS)) total += (1700 * plusses);