Merge branch 'Upstream/master'
This commit is contained in:
commit
49b034e6f5
@ -181,6 +181,12 @@ gx_disptype: 1
|
|||||||
// Max Level Difference for Devotion
|
// Max Level Difference for Devotion
|
||||||
devotion_level_difference: 10
|
devotion_level_difference: 10
|
||||||
|
|
||||||
|
// Using 'old' behavior for devotion vs reflect damage? (Note 2)
|
||||||
|
// Default is 0 (official). If 'devotion_rdamage' is > 0 (chance to devot the reflected damage),
|
||||||
|
// when player with devotion attacks player with reflect damage ability (item bonus or skill),
|
||||||
|
// the damage will be taken by the person who provides devotion instead the attacker.
|
||||||
|
devotion_rdamage: 0
|
||||||
|
|
||||||
// If no than you can use the ensemble skills alone. (Note 1)
|
// If no than you can use the ensemble skills alone. (Note 1)
|
||||||
player_skill_partner_check: yes
|
player_skill_partner_check: yes
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ payon,162,67,4 script Guide#pay 708,{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cutin "pay_soldier",255;
|
cutin "",255;
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,6 +291,6 @@ pay_arche,85,30,2 script Guide#2pay 708,{
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cutin "pay_soldier",255;
|
cutin "",255;
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
|
@ -178,8 +178,8 @@ payon,163,64,3 script Guide#01payon::GuidePayon 708,{
|
|||||||
case 4:
|
case 4:
|
||||||
mes "[Payon Guide]";
|
mes "[Payon Guide]";
|
||||||
mes "Enjoy your stay.";
|
mes "Enjoy your stay.";
|
||||||
close;
|
close2;
|
||||||
cutin "pay_soldier",255;
|
cutin "",255;
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -287,7 +287,7 @@ pay_arche,86,33,4 script Guide#05payon 708,{
|
|||||||
mes "[Payon Guide]";
|
mes "[Payon Guide]";
|
||||||
mes "Enjoy your stay.";
|
mes "Enjoy your stay.";
|
||||||
close2;
|
close2;
|
||||||
cutin "pay_soldier",255;
|
cutin "",255;
|
||||||
end;
|
end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4477,11 +4477,20 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|||||||
// Item reflect gets calculated first
|
// Item reflect gets calculated first
|
||||||
rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id, 0);
|
rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id, 0);
|
||||||
if( rdamage > 0 ) {
|
if( rdamage > 0 ) {
|
||||||
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
bool isDevotRdamage = false;
|
||||||
rdelay = clif_damage(src, src, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
//Get info if the attacker has Devotion from other player
|
||||||
|
struct status_change *ssc = NULL;
|
||||||
|
struct block_list *d_bl = NULL;
|
||||||
|
if (battle_config.devotion_rdamage && battle_config.devotion_rdamage > rand()%100) {
|
||||||
|
ssc = status_get_sc(src);;
|
||||||
|
if (ssc && ssc->data[SC_DEVOTION] && (d_bl = map_id2bl(ssc->data[SC_DEVOTION]->val1)))
|
||||||
|
isDevotRdamage = true;
|
||||||
|
}
|
||||||
|
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
||||||
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
||||||
battle_delay_damage(tick, wd->amotion,target,src,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]
|
||||||
skill_additional_effect(target, src, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
||||||
|
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate skill reflect damage separately
|
// Calculate skill reflect damage separately
|
||||||
@ -4489,6 +4498,15 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|||||||
struct status_data *tstatus = status_get_status_data(target);
|
struct status_data *tstatus = status_get_status_data(target);
|
||||||
rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id, 1);
|
rdamage = battle_calc_return_damage(target, src, &damage, wd->flag, skill_id, 1);
|
||||||
if( rdamage > 0 ) {
|
if( rdamage > 0 ) {
|
||||||
|
bool isDevotRdamage = false;
|
||||||
|
//Get info if the attacker has Devotion from other player
|
||||||
|
struct status_change *ssc = NULL;
|
||||||
|
struct block_list *d_bl = NULL;
|
||||||
|
if (battle_config.devotion_rdamage && battle_config.devotion_rdamage > rand()%100) {
|
||||||
|
ssc = status_get_sc(src);;
|
||||||
|
if (ssc && ssc->data[SC_DEVOTION] && (d_bl = map_id2bl(ssc->data[SC_DEVOTION]->val1)))
|
||||||
|
isDevotRdamage = true;
|
||||||
|
}
|
||||||
//if(tsc->data[SC__SHADOWFORM]) {
|
//if(tsc->data[SC__SHADOWFORM]) {
|
||||||
// struct block_list *s_bl = map_id2bl(tsc->data[SC__SHADOWFORM]->val2);
|
// struct block_list *s_bl = map_id2bl(tsc->data[SC__SHADOWFORM]->val2);
|
||||||
// if(s_bl)
|
// if(s_bl)
|
||||||
@ -4500,11 +4518,11 @@ void battle_do_reflect(int attack_type, struct Damage *wd, struct block_list* sr
|
|||||||
if(attack_type == BF_WEAPON && tsc->data[SC_REFLECTDAMAGE] ) // Don't reflect your own damage (Grand Cross)
|
if(attack_type == BF_WEAPON && tsc->data[SC_REFLECTDAMAGE] ) // Don't reflect your own damage (Grand Cross)
|
||||||
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
map_foreachinshootrange(battle_damage_area,target,skill_get_splash(LG_REFLECTDAMAGE,1),BL_CHAR,tick,target,wd->amotion,sstatus->dmotion,rdamage,tstatus->race);
|
||||||
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
else if(attack_type == BF_WEAPON || attack_type == BF_MISC) {
|
||||||
rdelay = clif_damage(src, src, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
rdelay = clif_damage(src, (!isDevotRdamage) ? src : d_bl, tick, wd->amotion, sstatus->dmotion, rdamage, 1, 4, 0);
|
||||||
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
if( tsd ) battle_drain(tsd, src, rdamage, rdamage, sstatus->race, is_boss(src));
|
||||||
// It appears that official servers give skill reflect damage a longer delay
|
// It appears that official servers give skill reflect damage a longer delay
|
||||||
battle_delay_damage(tick, wd->amotion,target,src,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
battle_delay_damage(tick, wd->amotion,target,(!isDevotRdamage) ? src : d_bl,0,CR_REFLECTSHIELD,0,rdamage,ATK_DEF,rdelay,true);
|
||||||
skill_additional_effect(target, src, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
skill_additional_effect(target, (!isDevotRdamage) ? src : d_bl, CR_REFLECTSHIELD, 1, BF_WEAPON|BF_SHORT|BF_NORMAL,ATK_DEF,tick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7264,6 +7282,7 @@ static const struct _battle_data {
|
|||||||
{ "emblem_transparency_limit", &battle_config.emblem_transparency_limit, 80, 0, 100, },
|
{ "emblem_transparency_limit", &battle_config.emblem_transparency_limit, 80, 0, 100, },
|
||||||
{ "discount_item_point_shop", &battle_config.discount_item_point_shop, 0, 0, 3, },
|
{ "discount_item_point_shop", &battle_config.discount_item_point_shop, 0, 0, 3, },
|
||||||
{ "update_enemy_position", &battle_config.update_enemy_position, 0, 0, 1, },
|
{ "update_enemy_position", &battle_config.update_enemy_position, 0, 0, 1, },
|
||||||
|
{ "devotion_rdamage", &battle_config.devotion_rdamage, 0, 0, 100, },
|
||||||
};
|
};
|
||||||
#ifndef STATS_OPT_OUT
|
#ifndef STATS_OPT_OUT
|
||||||
/**
|
/**
|
||||||
|
@ -514,6 +514,7 @@ extern struct Battle_Config
|
|||||||
int emblem_transparency_limit;
|
int emblem_transparency_limit;
|
||||||
int discount_item_point_shop;
|
int discount_item_point_shop;
|
||||||
int update_enemy_position;
|
int update_enemy_position;
|
||||||
|
int devotion_rdamage;
|
||||||
} battle_config;
|
} battle_config;
|
||||||
|
|
||||||
void do_init_battle(void);
|
void do_init_battle(void);
|
||||||
|
@ -2657,7 +2657,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
|
|||||||
//Reduction: 6% + 6% every 20%
|
//Reduction: 6% + 6% every 20%
|
||||||
dmg.damage -= dmg.damage * (6 * (1+per)) / 100;
|
dmg.damage -= dmg.damage * (6 * (1+per)) / 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if(tsc && tsc->data[SC_MAGICROD] && src == dsrc) {
|
if(tsc && tsc->data[SC_MAGICROD] && src == dsrc) {
|
||||||
@ -5952,7 +5952,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|||||||
mer->devotion_flag = 1; // Mercenary Devoting Owner
|
mer->devotion_flag = 1; // Mercenary Devoting Owner
|
||||||
|
|
||||||
clif_skill_nodamage(src, bl, skill_id, skill_lv,
|
clif_skill_nodamage(src, bl, skill_id, skill_lv,
|
||||||
sc_start4(src,bl, type, 100, src->id, i, skill_get_range2(src,skill_id,skill_lv),0, skill_get_time2(skill_id, skill_lv)));
|
sc_start4(src, bl, type, 100, src->id, i, skill_get_range2(src,skill_id,skill_lv),0, skill_get_time2(skill_id, skill_lv)));
|
||||||
clif_devotion(src, NULL);
|
clif_devotion(src, NULL);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user