From: dis- Date: Sun, 3 Mar 2013 06:51:21 +0000 (+0000) Subject: Save damages dealt by player for each monster. (Do not use yet) X-Git-Tag: v2.1.2~34 X-Git-Url: http://git.osdn.net/view?p=hengband%2Fhengband.git;a=commitdiff_plain;h=b5e208734929adba91f545b32813ff99bd9074a5 Save damages dealt by player for each monster. (Do not use yet) --- diff --git a/src/defines.h b/src/defines.h index a89729285..96f581c9b 100644 --- a/src/defines.h +++ b/src/defines.h @@ -76,7 +76,7 @@ #define H_VER_MAJOR 2 #define H_VER_MINOR 1 #define H_VER_PATCH 2 -#define H_VER_EXTRA 0 +#define H_VER_EXTRA 1 #define ANGBAND_2_8_1 diff --git a/src/dungeon.c b/src/dungeon.c index 115e354ee..d984c7ddc 100644 --- a/src/dungeon.c +++ b/src/dungeon.c @@ -7061,6 +7061,7 @@ prt(" m_ptr->maxhp = r_ptr->hdice*(r_ptr->hside+1)/2; m_ptr->max_maxhp = m_ptr->maxhp; m_ptr->hp = r_ptr->hdice*(r_ptr->hside+1)/2; + m_ptr->dealt_damage = 0; m_ptr->energy_need = ENERGY_NEED() + ENERGY_NEED(); } diff --git a/src/load.c b/src/load.c index 412487666..f24d8da71 100644 --- a/src/load.c +++ b/src/load.c @@ -703,6 +703,15 @@ static void rd_monster_old(monster_type *m_ptr) { rd_s16b(&m_ptr->max_maxhp); } + if(h_older_than(2, 1, 2, 1)) + { + m_ptr->dealt_damage = 0; + } + else + { + rd_s16b(&m_ptr->dealt_damage); + } + rd_s16b(&m_ptr->mtimed[MTIMED_CSLEEP]); rd_byte(&m_ptr->mspeed); if (z_older_than(10, 4, 2)) @@ -825,6 +834,14 @@ static void rd_monster(monster_type *m_ptr) rd_s16b(&m_ptr->hp); rd_s16b(&m_ptr->maxhp); rd_s16b(&m_ptr->max_maxhp); + if(h_older_than(2, 1, 2, 1)) + { + m_ptr->dealt_damage = 0; + } + else + { + rd_s16b(&m_ptr->dealt_damage); + } /* Monster race index of its appearance */ if (flags & SAVE_MON_AP_R_IDX) rd_s16b(&m_ptr->ap_r_idx); diff --git a/src/melee2.c b/src/melee2.c index b5855f521..a49737d86 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -4641,6 +4641,9 @@ void monster_gain_exp(int m_idx, int s_idx) } m_ptr->maxhp = m_ptr->max_maxhp; m_ptr->hp = old_hp * m_ptr->maxhp / old_maxhp; + + /* dealt damage is 0 at initial*/ + m_ptr->dealt_damage = 0; /* Extract the monster base speed */ m_ptr->mspeed = get_mspeed(r_ptr); diff --git a/src/monster2.c b/src/monster2.c index 607022640..3f4483c86 100644 --- a/src/monster2.c +++ b/src/monster2.c @@ -2867,6 +2867,9 @@ void choose_new_monster(int m_idx, bool born, int r_idx) m_ptr->maxhp = (long)(m_ptr->maxhp * m_ptr->max_maxhp) / oldmaxhp; if (m_ptr->maxhp < 1) m_ptr->maxhp = 1; m_ptr->hp = (long)(m_ptr->hp * m_ptr->max_maxhp) / oldmaxhp; + + /* reset dealt_damage */ + m_ptr->dealt_damage = 0; } @@ -3245,6 +3248,10 @@ msg_print(" if (m_ptr->r_idx == MON_WOUNDED_BEAR) m_ptr->hp = m_ptr->maxhp / 2; else m_ptr->hp = m_ptr->maxhp; + + + /* dealt damage is 0 at initial*/ + m_ptr->dealt_damage = 0; /* Extract the monster base speed */ diff --git a/src/save.c b/src/save.c index 998fabb77..cdc0ca2d5 100644 --- a/src/save.c +++ b/src/save.c @@ -215,6 +215,8 @@ static void wr_monster(monster_type *m_ptr) wr_s16b(m_ptr->hp); wr_s16b(m_ptr->maxhp); wr_s16b(m_ptr->max_maxhp); + wr_s16b(m_ptr->dealt_damage); + /* Monster race index of its appearance */ if (flags & SAVE_MON_AP_R_IDX) wr_s16b(m_ptr->ap_r_idx); diff --git a/src/types.h b/src/types.h index fbefefc59..d71a07619 100644 --- a/src/types.h +++ b/src/types.h @@ -591,6 +591,7 @@ struct monster_type s16b hp; /* Current Hit points */ s16b maxhp; /* Max Hit points */ s16b max_maxhp; /* Max Max Hit points */ + s16b dealt_damage; /* Sum of damages dealt by player */ s16b mtimed[MAX_MTIMED]; /* Timed status counter */ diff --git a/src/xtra2.c b/src/xtra2.c index bbe40be35..e64e84f0d 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -1776,6 +1776,14 @@ bool mon_take_hit(int m_idx, int dam, bool *fear, cptr note) /* Hurt it */ m_ptr->hp -= dam; + + m_ptr->dealt_damage += dam; + if(m_ptr->dealt_damage > m_ptr->max_maxhp * 100) m_ptr->dealt_damage = m_ptr->max_maxhp * 100; + if (p_ptr->wizard) + { + msg_format( _("¹ç·×%d/%d¤Î¥À¥á¡¼¥¸¤òÍ¿¤¨¤¿¡£","You do %d (out of %d) damage."), + m_ptr->dealt_damage, m_ptr->maxhp); + } /* It is dead now */ if (m_ptr->hp < 0)