- 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://svn.code.sf.net/p/rathena/svn/trunk@8426 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
276361d8dd
commit
d359756066
@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/08/22
|
2006/08/22
|
||||||
|
* getnameditem will now also work on stackable items [Skotlex]
|
||||||
|
* 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. [Skotlex]
|
||||||
|
* Fixed Resurrect Homunculus's % to 20*lv% [Skotlex]
|
||||||
* Added SQL update which should remove \' from guild names [Toms]
|
* Added SQL update which should remove \' from guild names [Toms]
|
||||||
* Added option to disable character deletion of certain levels [Lupus]
|
* Added option to disable character deletion of certain levels [Lupus]
|
||||||
check char_athena.conf for this option format
|
check char_athena.conf for this option format
|
||||||
|
@ -953,6 +953,8 @@ static struct Damage battle_calc_weapon_attack(
|
|||||||
if (skill_num == GS_GROUNDDRIFT)
|
if (skill_num == GS_GROUNDDRIFT)
|
||||||
s_ele = s_ele_ = wflag; //element comes in flag.
|
s_ele = s_ele_ = wflag; //element comes in flag.
|
||||||
|
|
||||||
|
if(!skill_num)
|
||||||
|
{ //Skills ALWAYS use ONLY your right-hand weapon (tested on Aegis 10.2)
|
||||||
if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0)
|
if (sd && sd->weapontype1 == 0 && sd->weapontype2 > 0)
|
||||||
{
|
{
|
||||||
flag.rh=0;
|
flag.rh=0;
|
||||||
@ -960,10 +962,6 @@ static struct Damage battle_calc_weapon_attack(
|
|||||||
}
|
}
|
||||||
if (sstatus->lhw && sstatus->lhw->atk)
|
if (sstatus->lhw && sstatus->lhw->atk)
|
||||||
flag.lh=1;
|
flag.lh=1;
|
||||||
|
|
||||||
if (skill_num == ASC_BREAKER)
|
|
||||||
{ //Soul Breaker disregards dual-wielding.
|
|
||||||
flag.rh = 1; flag.lh = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Check for critical
|
//Check for critical
|
||||||
@ -1193,7 +1191,6 @@ static struct Damage battle_calc_weapon_attack(
|
|||||||
short index = sd->equip_index[8];
|
short index = sd->equip_index[8];
|
||||||
|
|
||||||
wd.damage = sstatus->batk;
|
wd.damage = sstatus->batk;
|
||||||
if (flag.lh) wd.damage2 = wd.damage;
|
|
||||||
|
|
||||||
if (index >= 0 &&
|
if (index >= 0 &&
|
||||||
sd->inventory_data[index] &&
|
sd->inventory_data[index] &&
|
||||||
@ -1205,7 +1202,6 @@ static struct Damage battle_calc_weapon_attack(
|
|||||||
if(src->type == BL_HOM){
|
if(src->type == BL_HOM){
|
||||||
TBL_HOM *hd = (TBL_HOM*)src;
|
TBL_HOM *hd = (TBL_HOM*)src;
|
||||||
wd.damage = hd->master->homunculus.intimacy ;
|
wd.damage = hd->master->homunculus.intimacy ;
|
||||||
wd.damage2 = hd->master->homunculus.intimacy ;
|
|
||||||
hd->master->homunculus.intimacy = 200;
|
hd->master->homunculus.intimacy = 200;
|
||||||
clif_send_homdata(hd->master,0x100,hd->master->homunculus.intimacy/100);
|
clif_send_homdata(hd->master,0x100,hd->master->homunculus.intimacy/100);
|
||||||
break;
|
break;
|
||||||
@ -1230,7 +1226,7 @@ static struct Damage battle_calc_weapon_attack(
|
|||||||
i |= 16; // for ex. shuriken must not be influenced by DEX
|
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);
|
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);
|
wd.damage2 = battle_calc_base_damage(sstatus, sstatus->lhw, sc, tstatus->size, sd, i);
|
||||||
|
|
||||||
// Added split damage for Huuma
|
// 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);
|
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)))
|
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;
|
wd.damage2 = wd.damage2 * (30 + (skill * 10))/100;
|
||||||
if(wd.damage2 < 1) wd.damage2 = 1;
|
if(wd.damage2 < 1) wd.damage2 = 1;
|
||||||
}
|
}
|
||||||
} else if(sd->status.weapon == W_KATAR)
|
} else if(sd->status.weapon == W_KATAR && !skill_num)
|
||||||
{ //Katars
|
{ //Katars (offhand damage only applies to normal attacks, tested on Aegis 10.2)
|
||||||
skill = pc_checkskill(sd,TF_DOUBLE);
|
skill = pc_checkskill(sd,TF_DOUBLE);
|
||||||
wd.damage2 = wd.damage * (1 + (skill * 2))/100;
|
wd.damage2 = wd.damage * (1 + (skill * 2))/100;
|
||||||
|
|
||||||
|
@ -5276,9 +5276,8 @@ int buildin_getnameditem(struct script_state *st)
|
|||||||
}else
|
}else
|
||||||
nameid = conv_num(st,data);
|
nameid = conv_num(st,data);
|
||||||
|
|
||||||
if(!itemdb_exists(nameid) || itemdb_isstackable(nameid))
|
if(!itemdb_exists(nameid)/* || itemdb_isstackable(nameid)*/)
|
||||||
{ //We don't allow non-equipable/stackable items to be named
|
{ //Even though named stackable items "could" be risky, they are required for certain quests.
|
||||||
//to avoid any qty exploits that could happen because of it.
|
|
||||||
push_val(st->stack,C_INT,0);
|
push_val(st->stack,C_INT,0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -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 2: sid=MG_LIGHTNINGBOLT; break;
|
||||||
case 3: sid=WZ_EARTHSPIKE; 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;
|
break;
|
||||||
case WZ_WATERBALL: /* ウォーターボール */
|
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]
|
case AM_RESURRECTHOMUN: //[orn]
|
||||||
if (sd)
|
if (sd)
|
||||||
{
|
{
|
||||||
|
/* According to Tharis, the correct % SHOULD be 20*lv%
|
||||||
int p;
|
int p;
|
||||||
// If skilllv = 1, range = 1~4%, lv 2 : 5~25%, lv 3 : 25~45%, ...
|
// If skilllv = 1, range = 1~4%, lv 2 : 5~25%, lv 3 : 25~45%, ...
|
||||||
if (skilllv == 1)
|
if (skilllv == 1)
|
||||||
p = 1 + rand() % 4;
|
p = 1 + rand() % 4;
|
||||||
else
|
else
|
||||||
p = 5 + 20 * (skilllv - 2) + rand() % 21;
|
p = 5 + 20 * (skilllv - 2) + rand() % 21;
|
||||||
|
*/
|
||||||
if (map_flag_gvg(src->m) || //No reviving in WoE grounds!
|
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);
|
clif_skill_fail(sd,skillid,0,0);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user