summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-09-10 16:32:06 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-09-10 16:32:06 +0000
commitb970380ed01b23c948c6cc1b9fc9e8f8a2deca53 (patch)
tree4535f49b3c7c9ad0d9869fb8f4b3288d770757e2
parentd8bd7d857896c04afb43b4c7012735a09b9644f7 (diff)
downloadhercules-b970380ed01b23c948c6cc1b9fc9e8f8a2deca53.tar.gz
hercules-b970380ed01b23c948c6cc1b9fc9e8f8a2deca53.tar.bz2
hercules-b970380ed01b23c948c6cc1b9fc9e8f8a2deca53.tar.xz
hercules-b970380ed01b23c948c6cc1b9fc9e8f8a2deca53.zip
Fixed bugreport:6650 where WZ_QUAGMIRE affects caster in non PK map.
Fixed bugreport:6635 where SO_FIREWALK & SO_ELECTRIC walk still active after changing map. Updated EDP to it's Renewal damage formula bonus. NOTE: result damage still quite huge than official since renewal atk is not yet fully implemented. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16770 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--src/map/battle.c10
-rw-r--r--src/map/pc.c1
-rw-r--r--src/map/skill.c2
-rw-r--r--src/map/status.c16
4 files changed, 15 insertions, 14 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index a3a097c92..c48f4ce63 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2632,10 +2632,9 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
skill_num == LG_SHIELDPRESS ) )
ATK_ADDRATE(sc->data[SC_GLOOMYDAY_SK]->val2);
if( sc->data[SC_EDP] ){
- // FIX ME: Should Rolling Cutter be affected by EDP?
switch(skill_num){
case AS_SPLASHER: case AS_VENOMKNIFE:
- case AS_GRIMTOOTH: case GC_ROLLINGCUTTER:
+ case AS_GRIMTOOTH:
break;
#ifndef RENEWAL_EDP
case ASC_BREAKER: case ASC_METEORASSAULT: break;
@@ -3070,7 +3069,12 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
if( wd.flag&BF_LONG )
cardfix = cardfix * ( 100 + sd->bonus.long_attack_atk_rate ) / 100;
-
+#ifdef RENEWAL_EDP
+ if( sc && sc->data[SC_EDP] ){
+ cardfix = cardfix * (100 + sc->data[SC_EDP]->val1 * 60 ) / 100;
+ cardfix_ = cardfix_ * (100 + sc->data[SC_EDP]->val1 * 60 ) / 100;
+ }
+#endif
if( cardfix != 1000 || cardfix_ != 1000 )
ATK_RATE2(cardfix/10, cardfix_/10); //What happens if you use right-to-left and there's no right weapon, only left?
}
diff --git a/src/map/pc.c b/src/map/pc.c
index 89263ba5f..a8ccc5c47 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -4589,6 +4589,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
delete_timer(sce->timer, status_change_timer);
sce->timer = add_timer(gettick() + skill_get_time(SG_KNOWLEDGE, sce->val1), status_change_timer, sd->bl.id, SC_KNOWLEDGE);
}
+ status_change_end(&sd->bl, SC_PROPERTYWALK, INVALID_TIMER);
}
for( i = 0; i < EQI_MAX; i++ ) {
if( sd->equip_index[ i ] >= 0 )
diff --git a/src/map/skill.c b/src/map/skill.c
index ef2b91c24..29500b8b0 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -10839,7 +10839,7 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
break;
case UNT_QUAGMIRE:
- if(!sce)
+ if( !sce && battle_check_target(&sg->unit->bl,bl,sg->target_flag) > 0 )
sc_start4(bl,type,100,sg->skill_lv,sg->group_id,0,0,sg->limit);
break;
diff --git a/src/map/status.c b/src/map/status.c
index e3bca4513..d6e96e522 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -968,8 +968,8 @@ void initChangeTables(void) {
StatusChangeFlagTable[SC_EXTRACT_SALAMINE_JUICE] |= SCB_ASPD;
#ifdef RENEWAL_EDP
- // renewal EDP increases your atk and weapon atk
- StatusChangeFlagTable[SC_EDP] |= SCB_BATK|SCB_WATK;
+ // renewal EDP increases your weapon atk
+ StatusChangeFlagTable[SC_EDP] |= SCB_WATK;
#endif
if( !battle_config.display_hallucination ) //Disable Hallucination.
@@ -4399,11 +4399,6 @@ static unsigned short status_calc_batk(struct block_list *bl, struct status_chan
batk += 70;
if(sc->data[SC_ANGRIFFS_MODUS])
batk += batk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
-#ifdef RENEWAL_EDP
- // renewal EDP increases your base atk by atk x skill level
- if( sc->data[SC_EDP] )
- batk = batk * sc->data[SC_EDP]->val1;
-#endif
if( sc->data[SC_ZANGETSU] )
batk += batk * sc->data[SC_ZANGETSU]->val2 / 100;
return (unsigned short)cap_value(batk,0,USHRT_MAX);
@@ -4487,9 +4482,8 @@ static unsigned short status_calc_watk(struct block_list *bl, struct status_chan
if(sc->data[SC_ANGRIFFS_MODUS])
watk += watk * sc->data[SC_ANGRIFFS_MODUS]->val2/100;
#ifdef RENEWAL_EDP
- // renewal EDP increases your weapon atk by watk x Skill Level - 1
- if( sc->data[SC_EDP] && sc->data[SC_EDP]->val1 > 1 )
- watk = watk * (sc->data[SC_EDP]->val1 - 1);
+ if( sc->data[SC_EDP] )
+ watk = watk * (100 + sc->data[SC_EDP]->val1 * 80) / 100;
#endif
return (unsigned short)cap_value(watk,0,USHRT_MAX);
@@ -6983,7 +6977,9 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
break;
case SC_EDP: // [Celest]
val2 = val1 + 2; //Chance to Poison enemies.
+#ifndef RENEWAL_EDP
val3 = 50*(val1+1); //Damage increase (+50 +50*lv%)
+#endif
if( sd )//[Ind] - iROwiki says each level increases its duration by 3 seconds
tick += pc_checkskill(sd,GC_RESEARCHNEWPOISON)*3000;
break;