diff options
author | DracoRPG <DracoRPG@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-24 19:29:23 +0000 |
---|---|---|
committer | DracoRPG <DracoRPG@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-24 19:29:23 +0000 |
commit | 2a36020cb4786e41ed7f5f02cc77a8522537c4bd (patch) | |
tree | 158e3d57fb33038c0b995abf974f0d7cb43c1c12 /src/map | |
parent | d9c231e137254734e780570b48741205868be4b7 (diff) | |
download | hercules-2a36020cb4786e41ed7f5f02cc77a8522537c4bd.tar.gz hercules-2a36020cb4786e41ed7f5f02cc77a8522537c4bd.tar.bz2 hercules-2a36020cb4786e41ed7f5f02cc77a8522537c4bd.tar.xz hercules-2a36020cb4786e41ed7f5f02cc77a8522537c4bd.zip |
Venom Splasher and Gloria Domini fixes and updates
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10907 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 28 | ||||
-rw-r--r-- | src/map/skill.c | 11 |
2 files changed, 16 insertions, 23 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 0a8fb57ed..b6d9dfd89 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -528,9 +528,8 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama if(md && md->guardian_data) { if(class_ == MOBID_EMPERIUM && flag&BF_SKILL) - //SKill inmunity. + //Skill immunity. switch (skill_num) { - case PA_PRESSURE: case MO_TRIPLEATTACK: case HW_GRAVITATION: break; @@ -1067,8 +1066,8 @@ static struct Damage battle_calc_weapon_attack( if (skill_num && !flag.hit) switch(skill_num) { - case AS_SPLASHER: //Reports say it always hits? - if (wflag) //Only if you were the one exploding. + case AS_SPLASHER: + if (wflag) // Always hits the one exploding. break; flag.hit = 1; break; @@ -1247,14 +1246,14 @@ static struct Damage battle_calc_weapon_attack( (sc && sc->data[SC_WEAPONPERFECTION].timer!=-1?8:0); if (flag.arrow && sd) switch(sd->status.weapon) { - case W_BOW: - case W_REVOLVER: - case W_SHOTGUN: - case W_GATLING: - case W_GRENADE: - break; - default: - i |= 16; // for ex. shuriken must not be influenced by DEX + case W_BOW: + case W_REVOLVER: + case W_SHOTGUN: + case W_GATLING: + case W_GRENADE: + break; + default: + i |= 16; // for ex. shuriken must not be influenced by DEX } wd.damage = battle_calc_base_damage(sstatus, &sstatus->rhw, sc, tstatus->size, sd, i); if (flag.lh) @@ -1477,15 +1476,13 @@ static struct Damage battle_calc_weapon_attack( break; case AS_SPLASHER: i = 400+50*skill_lv; - if (sd) i += 20*pc_checkskill(sd,AS_POISONREACT); - if (wflag>1) i/=wflag; //Splash damage is half. + if (wflag>1) i /= 4; // FIXME: Should be 25% of damage inflicted to target, not 25% of skillratio bonus skillratio += i; break; case ASC_BREAKER: skillratio += 100*skill_lv-100; break; case PA_SACRIFICE: - //40% less effective on siege maps. [Skotlex] skillratio += 10*skill_lv-10; break; case PA_SHIELDCHAIN: @@ -1615,6 +1612,7 @@ static struct Damage battle_calc_weapon_attack( if(sc->data[SC_EDP].timer != -1 && skill_num != ASC_BREAKER && skill_num != ASC_METEORASSAULT && + skill_num != AS_SPLASHER && skill_num != AS_VENOMKNIFE) ATK_ADDRATE(sc->data[SC_EDP].val3); } diff --git a/src/map/skill.c b/src/map/skill.c index 0f95a0f7b..07c0eddeb 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1088,12 +1088,6 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int sc_start4(bl,SC_DPOISON,sc->data[SC_EDP].val2, sc->data[SC_EDP].val1,0,0,0,skill_get_time2(ASC_EDP,sc->data[SC_EDP].val1)); } - if (tsc->count) { - if (tsc->data[SC_SPLASHER].timer != -1) - sc_start4(bl,SC_POISON,2*tsc->data[SC_SPLASHER].val1+10, - tsc->data[SC_SPLASHER].val1,0,0,0, - skill_get_time2(tsc->data[SC_SPLASHER].val2,tsc->data[SC_SPLASHER].val1)); - } } break; @@ -1110,7 +1104,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int skilllv = pc_checkskill(sd, TF_POISON); case TF_POISON: case AS_SPLASHER: - if(!sc_start(bl,SC_POISON,(2*skilllv+10),skilllv,skill_get_time2(skillid,skilllv)) + if(!sc_start(bl,SC_POISON,(4*skilllv+10),skilllv,skill_get_time2(skillid,skilllv)) && sd && skillid==TF_POISON ) clif_skill_fail(sd,skillid,0,0); @@ -5116,7 +5110,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in break; case AS_SPLASHER: - if(tstatus->max_hp*3/4 < tstatus->hp) { + if(tstatus->mode&MD_BOSS || tstatus-> hp > tstatus->max_hp*3/4) { + if (sd) clif_skill_fail(sd,skillid,0,0); map_freeblock_unlock(); return 1; } |