From b970380ed01b23c948c6cc1b9fc9e8f8a2deca53 Mon Sep 17 00:00:00 2001 From: rud0lp20 Date: Mon, 10 Sep 2012 16:32:06 +0000 Subject: 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 --- src/map/battle.c | 10 +++++++--- src/map/pc.c | 1 + src/map/skill.c | 2 +- src/map/status.c | 16 ++++++---------- 4 files changed, 15 insertions(+), 14 deletions(-) (limited to 'src/map') 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; -- cgit v1.2.3-70-g09d2