summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt4
-rw-r--r--src/map/battle.c5
-rw-r--r--src/map/clif.c5
-rw-r--r--src/map/pc.c13
-rw-r--r--src/map/status.c24
5 files changed, 27 insertions, 24 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 244bff19f..753ea5f17 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/05/05
+ * /doridori now won't double the HP/SP regen of TKs, it only activates
+ their "happy" state. [Skotlex]
+ * Added the -50 hit penalty when standing on Wall of Fog. [Skotlex]
+ * Uncommented the status_calc_mdef2 call in status_calc_pc. [Skotlex]
* Being in Enjoyable Rest state will now also trigger the HP/SP Time skills
(even if there's no other TK around). [Skotlex]
* Added battle config settings view_range_rate and chase_range_rate to
diff --git a/src/map/battle.c b/src/map/battle.c
index db2b8be3f..0bb50eb76 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1304,7 +1304,10 @@ static struct Damage battle_calc_weapon_attack(
}
hitrate+= status_get_hit(src) - flee;
-
+
+ if((sc && sc->data[SC_FOGWALL].timer!=-1) || (tsc && tsc->data[SC_FOGWALL].timer!=-1))
+ hitrate-=50;
+
if(sd && flag.arrow)
hitrate += sd->arrow_hit;
if(skill_num)
diff --git a/src/map/clif.c b/src/map/clif.c
index 6c7fe0142..3b3f47a7c 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -10820,7 +10820,10 @@ void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd)
*/
void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd) {
int level;
- sd->doridori_counter = 1;
+
+ if ((sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE)
+ sd->doridori_counter++;
+
if ((sd->class_&MAPID_UPPERMASK) == MAPID_TAEKWON
&& sd->state.rest && (level = pc_checkskill(sd,TK_SPTIME)))
sc_start(&sd->bl,SkillStatusChangeTable[TK_SPTIME],100,level,skill_get_time(TK_SPTIME, level));
diff --git a/src/map/pc.c b/src/map/pc.c
index 00f606051..ddf9a244e 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6817,7 +6817,7 @@ static int pc_natural_heal_sp(struct map_session_data *sd)
if(sd->nshealsp > 0) {
if(sd->inchealsptick >= battle_config.natural_heal_skill_interval && sd->status.sp < sd->status.max_sp) {
- if(sd->doridori_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE) {
+ if(sd->doridori_counter) {
bonus = sd->nshealsp*2;
sd->doridori_counter = 0;
} else
@@ -6858,12 +6858,6 @@ static int pc_spirit_heal_hp(struct map_session_data *sd)
if(sd->inchealspirithptick >= interval) {
bonus_hp = sd->nsshealhp;
- if(sd->doridori_counter && pc_checkskill(sd,TK_HPTIME) > 0) {
- //TK_HPTIME doridori provided bonus [Dralnu]
- bonus_hp += sd->nsshealhp;
- if (!sd->nsshealsp) //If there's sp regen, this gets clear in the next function. [Skotlex]
- sd->doridori_counter = 0;
- }
while(sd->inchealspirithptick >= interval) {
if(pc_issit(sd)) {
sd->inchealspirithptick -= interval;
@@ -6904,11 +6898,6 @@ static int pc_spirit_heal_sp(struct map_session_data *sd)
if(sd->inchealspiritsptick >= interval) {
bonus_sp = sd->nsshealsp;
- if(sd->doridori_counter && pc_checkskill(sd,TK_SPTIME) > 0) {
- //TK_SPTIME doridori provided bonus [Dralnu]
- bonus_sp += sd->nsshealsp;
- sd->doridori_counter = 0;
- }
while(sd->inchealspiritsptick >= interval) {
if(pc_issit(sd)) {
sd->inchealspiritsptick -= interval;
diff --git a/src/map/status.c b/src/map/status.c
index f0b4797eb..87142832a 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -1311,7 +1311,7 @@ int status_calc_pc(struct map_session_data* sd,int first)
// Basic INT-MDEF value
sd->mdef2 += sd->paramc[3];
- // sd->mdef2 = status_calc_mdef2(&sd->bl,sd->mdef2);
+ sd->mdef2 = status_calc_mdef2(&sd->bl,sd->mdef2);
// Apply relative modifiers from equipment
if(sd->mdef2_rate != 100)
@@ -2953,20 +2953,24 @@ int status_get_mdef2(struct block_list *bl)
int mdef2=0;
nullpo_retr(0, bl);
- if(bl->type == BL_PC)
- return ((struct map_session_data *)bl)->mdef2 + (((struct map_session_data *)bl)->paramc[2]>>1);
- else if(bl->type == BL_MOB)
- mdef2 = ((struct mob_data *)bl)->db->int_ + (((struct mob_data *)bl)->db->vit>>1);
- else if(bl->type == BL_PET) { //<Skotlex> Use pet's stats
- if (battle_config.pet_lv_rate && ((struct pet_data *)bl)->status)
- mdef2 = ((struct pet_data *)bl)->status->int_ +(((struct pet_data *)bl)->status->vit>>1);
+ switch(bl->type)
+ {
+ case BL_PC:
+ return ((TBL_PC*)bl)->mdef2 + (((TBL_PC*)bl)->paramc[2]>>1);
+ case BL_MOB:
+ mdef2 = ((TBL_MOB*)bl)->db->int_ + (((TBL_MOB*)bl)->db->vit>>1);
+ break;
+ case BL_PET:
+ //<Skotlex> Use pet's stats
+ if (battle_config.pet_lv_rate && ((TBL_PET*)bl)->status)
+ mdef2 = ((TBL_PET*)bl)->status->int_ +(((TBL_PET*)bl)->status->vit>>1);
else
- mdef2 = ((struct pet_data *)bl)->db->int_ + (((struct pet_data *)bl)->db->vit>>1);
+ mdef2 = ((TBL_PET*)bl)->db->int_ + (((TBL_PET*)bl)->db->vit>>1);
+ break;
}
mdef2 = status_calc_mdef2(bl,mdef2);
if(mdef2 < 0) mdef2 = 0;
-
return mdef2;
}
/*==========================================