diff options
author | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-09-10 16:32:06 +0000 |
---|---|---|
committer | rud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2012-09-10 16:32:06 +0000 |
commit | b970380ed01b23c948c6cc1b9fc9e8f8a2deca53 (patch) | |
tree | 4535f49b3c7c9ad0d9869fb8f4b3288d770757e2 | |
parent | d8bd7d857896c04afb43b4c7012735a09b9644f7 (diff) | |
download | hercules-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.c | 10 | ||||
-rw-r--r-- | src/map/pc.c | 1 | ||||
-rw-r--r-- | src/map/skill.c | 2 | ||||
-rw-r--r-- | src/map/status.c | 16 |
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; |