From 7740a68642e66bb59368042d109262332d849298 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 22 Aug 2006 14:09:01 +0000 Subject: - getnameditem will now also work on stackable items - Corrected battle_calc_weapon_attack so that all skills ignore your left-hand weapon, and that the Katar's double-attack damage bonus for the offhand damage applies ONLY on normal attacks. - Fixed Resurrect Homunculus's % to 20*lv% git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8426 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 31 ++++++++++++++----------------- src/map/script.c | 5 ++--- src/map/skill.c | 6 ++++-- 3 files changed, 20 insertions(+), 22 deletions(-) (limited to 'src/map') diff --git a/src/map/battle.c b/src/map/battle.c index 51101b3c0..facdd6169 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -953,17 +953,15 @@ static struct Damage battle_calc_weapon_attack( if (skill_num == GS_GROUNDDRIFT) s_ele = s_ele_ = wflag; //element comes in flag. - if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0) - { - flag.rh=0; - flag.lh=1; - } - if (sstatus->lhw && sstatus->lhw->atk) - flag.lh=1; - - if (skill_num == ASC_BREAKER) - { //Soul Breaker disregards dual-wielding. - flag.rh = 1; flag.lh = 0; + if(!skill_num) + { //Skills ALWAYS use ONLY your right-hand weapon (tested on Aegis 10.2) + if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0) + { + flag.rh=0; + flag.lh=1; + } + if (sstatus->lhw && sstatus->lhw->atk) + flag.lh=1; } //Check for critical @@ -1193,7 +1191,6 @@ static struct Damage battle_calc_weapon_attack( short index = sd->equip_index[8]; wd.damage = sstatus->batk; - if (flag.lh) wd.damage2 = wd.damage; if (index >= 0 && sd->inventory_data[index] && @@ -1205,7 +1202,6 @@ static struct Damage battle_calc_weapon_attack( if(src->type == BL_HOM){ TBL_HOM *hd = (TBL_HOM*)src; wd.damage = hd->master->homunculus.intimacy ; - wd.damage2 = hd->master->homunculus.intimacy ; hd->master->homunculus.intimacy = 200; clif_send_homdata(hd->master,0x100,hd->master->homunculus.intimacy/100); break; @@ -1230,7 +1226,7 @@ static struct Damage battle_calc_weapon_attack( 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 (sstatus->lhw && flag.lh) + if (flag.lh) wd.damage2 = battle_calc_base_damage(sstatus, sstatus->lhw, sc, tstatus->size, sd, i); // Added split damage for Huuma @@ -1766,7 +1762,8 @@ static struct Damage battle_calc_weapon_attack( } wd.damage = battle_addmastery(sd,target,wd.damage,0); - if (flag.lh) wd.damage2 = battle_addmastery(sd,target,wd.damage2,1); + if (flag.lh) + wd.damage2 = battle_addmastery(sd,target,wd.damage2,1); if((skill=pc_checkskill(sd,SG_STAR_ANGER)) >0 && (t_class == sd->hate_mob[2] || (sc && sc->data[SC_MIRACLE].timer!=-1))) { @@ -1989,8 +1986,8 @@ static struct Damage battle_calc_weapon_attack( wd.damage2 = wd.damage2 * (30 + (skill * 10))/100; if(wd.damage2 < 1) wd.damage2 = 1; } - } else if(sd->status.weapon == W_KATAR) - { //Katars + } else if(sd->status.weapon == W_KATAR && !skill_num) + { //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2) skill = pc_checkskill(sd,TF_DOUBLE); wd.damage2 = wd.damage * (1 + (skill * 2))/100; diff --git a/src/map/script.c b/src/map/script.c index 7d199721d..79cdb517a 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5276,9 +5276,8 @@ int buildin_getnameditem(struct script_state *st) }else nameid = conv_num(st,data); - if(!itemdb_exists(nameid) || itemdb_isstackable(nameid)) - { //We don't allow non-equipable/stackable items to be named - //to avoid any qty exploits that could happen because of it. + if(!itemdb_exists(nameid)/* || itemdb_isstackable(nameid)*/) + { //Even though named stackable items "could" be risky, they are required for certain quests. push_val(st->stack,C_INT,0); return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index 132cf7eff..9ab0bbb95 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3045,7 +3045,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case 2: sid=MG_LIGHTNINGBOLT; break; case 3: sid=WZ_EARTHSPIKE; break; } - skill_attack(BF_MAGIC,src,src,bl,sid,skilllv,tick,flag); + skill_attack(BF_MAGIC,src,src,bl,sid,skilllv,tick,flag|0xF000); } break; case WZ_WATERBALL: /* ウォーターボール */ @@ -6247,14 +6247,16 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s case AM_RESURRECTHOMUN: //[orn] if (sd) { + /* According to Tharis, the correct % SHOULD be 20*lv% int p; // If skilllv = 1, range = 1~4%, lv 2 : 5~25%, lv 3 : 25~45%, ... if (skilllv == 1) p = 1 + rand() % 4; else p = 5 + 20 * (skilllv - 2) + rand() % 21; + */ if (map_flag_gvg(src->m) || //No reviving in WoE grounds! - !merc_revive_homunculus(sd, p, x, y)) + !merc_revive_homunculus(sd, 20*skilllv, x, y)) { clif_skill_fail(sd,skillid,0,0); break; -- cgit v1.2.3-70-g09d2