- Reverted the battle_calc_return_damage code as the previous one was correct, ninja self-targetted skills CAN be reflected.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9689 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
e034ce07bb
commit
53949e4131
@ -3,6 +3,9 @@ Date Added
|
|||||||
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
|
||||||
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.
|
||||||
|
|
||||||
|
2007/01/22
|
||||||
|
* Reverted the battle_calc_return_damage code as the previous one was
|
||||||
|
correct, ninja self-targetted skills CAN be reflected. [Skotlex]
|
||||||
2007/01/21
|
2007/01/21
|
||||||
* Fixed while statements not "reserving" the curly before parsing the test
|
* Fixed while statements not "reserving" the curly before parsing the test
|
||||||
expression. [FlavioJS]
|
expression. [FlavioJS]
|
||||||
|
@ -2790,7 +2790,7 @@ struct Damage battle_calc_attack( int attack_type,
|
|||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
int battle_calc_return_damage(struct block_list *bl, int skill, int *damage, int flag) {
|
int battle_calc_return_damage(struct block_list *bl, int *damage, int flag) {
|
||||||
struct map_session_data *sd=NULL;
|
struct map_session_data *sd=NULL;
|
||||||
struct status_change *sc;
|
struct status_change *sc;
|
||||||
int rdamage = 0;
|
int rdamage = 0;
|
||||||
@ -2798,7 +2798,7 @@ int battle_calc_return_damage(struct block_list *bl, int skill, int *damage, int
|
|||||||
BL_CAST(BL_PC, bl, sd);
|
BL_CAST(BL_PC, bl, sd);
|
||||||
sc = status_get_sc(bl);
|
sc = status_get_sc(bl);
|
||||||
|
|
||||||
if(flag&BF_WEAPON && skill != WS_CARTTERMINATION) { // FIXME(?): Quick and dirty check, but HSCR does bypass Shield Reflect... so I make it bypass the whole reflect thing [DracoRPG]
|
if(flag&BF_WEAPON) {
|
||||||
//Bounces back part of the damage.
|
//Bounces back part of the damage.
|
||||||
if (flag & BF_SHORT) {
|
if (flag & BF_SHORT) {
|
||||||
if (sd && sd->short_weapon_damage_return)
|
if (sd && sd->short_weapon_damage_return)
|
||||||
@ -2823,7 +2823,6 @@ int battle_calc_return_damage(struct block_list *bl, int skill, int *damage, int
|
|||||||
if(flag&BF_MAGIC)
|
if(flag&BF_MAGIC)
|
||||||
{
|
{
|
||||||
if(sd && sd->magic_damage_return &&
|
if(sd && sd->magic_damage_return &&
|
||||||
!(skill_get_inf(skill)&(INF_GROUND_SKILL|INF_SELF_SKILL)) &&
|
|
||||||
rand()%100 < sd->magic_damage_return)
|
rand()%100 < sd->magic_damage_return)
|
||||||
{ //Bounces back full damage, you take none.
|
{ //Bounces back full damage, you take none.
|
||||||
rdamage = *damage;
|
rdamage = *damage;
|
||||||
@ -3011,7 +3010,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target,
|
|||||||
|
|
||||||
damage = wd.damage + wd.damage2;
|
damage = wd.damage + wd.damage2;
|
||||||
if (damage > 0 && src != target) {
|
if (damage > 0 && src != target) {
|
||||||
rdamage = battle_calc_return_damage(target, 0, &damage, wd.flag);
|
rdamage = battle_calc_return_damage(target, &damage, wd.flag);
|
||||||
if (rdamage > 0) {
|
if (rdamage > 0) {
|
||||||
rdelay = clif_damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
rdelay = clif_damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
||||||
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
||||||
|
@ -25,7 +25,7 @@ struct block_list;
|
|||||||
|
|
||||||
struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int flag);
|
struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int flag);
|
||||||
|
|
||||||
int battle_calc_return_damage(struct block_list *bl, int skill, int *damage, int flag);
|
int battle_calc_return_damage(struct block_list *bl, int *damage, int flag);
|
||||||
|
|
||||||
void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdamage, int ldamage, int race, int boss);
|
void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdamage, int ldamage, int race, int boss);
|
||||||
|
|
||||||
|
@ -1930,8 +1930,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
|
|||||||
|
|
||||||
damage = dmg.damage + dmg.damage2;
|
damage = dmg.damage + dmg.damage2;
|
||||||
|
|
||||||
if (damage > 0 && src != bl && src == dsrc)
|
if (damage > 0 && src != bl && src == dsrc && skillid != WS_CARTTERMINATION) // FIXME(?): Quick and dirty check, but HSCR does bypass Shield Reflect... so I make it bypass the whole reflect thing [DracoRPG]
|
||||||
rdamage = battle_calc_return_damage(bl, skillid, &damage, dmg.flag);
|
rdamage = battle_calc_return_damage(bl, &damage, dmg.flag);
|
||||||
|
|
||||||
//Skill hit type
|
//Skill hit type
|
||||||
type=(skillid==0)?5:skill_get_hit(skillid);
|
type=(skillid==0)?5:skill_get_hit(skillid);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user