diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/battle.c | 19 | ||||
-rw-r--r-- | src/map/skill.c | 15 | ||||
-rw-r--r-- | src/map/status.c | 2 |
3 files changed, 20 insertions, 16 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index ffc39c595..819e4be65 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2635,16 +2635,10 @@ struct Damage battle_calc_misc_attack( md.damage = skill_get_zeny(skill_num ,skill_lv); if (!md.damage) md.damage = 2; md.damage = md.damage + rand()%md.damage; - - if (sd) - { - if ( md.damage > sd->status.zeny ) - md.damage=sd->status.zeny; - pc_payzeny(sd, md.damage); - } - - if(is_boss(target) || tsd || map_flag_gvg2(target->m)) + if (is_boss(target)) md.damage=md.damage/3; + else if (tsd) + md.damage=md.damage/2; break; case GS_FLING: md.damage = sd?sd->status.job_level:status_get_lv(src); @@ -2737,6 +2731,13 @@ struct Damage battle_calc_misc_attack( if (map_flag_gvg2(target->m)) md.damage=battle_calc_gvg_damage(src,target,md.damage,md.div_,skill_num,skill_lv,md.flag); + if (skill_num == NJ_ZENYNAGE && sd) + { //Time to Pay Up. + if ( md.damage > sd->status.zeny ) + md.damage=sd->status.zeny; + pc_payzeny(sd, md.damage); + } + return md; } /*========================================== diff --git a/src/map/skill.c b/src/map/skill.c index aa79bf71d..4b077fb1a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3141,14 +3141,15 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int sc_start(src,SC_HIDING,100,skilllv,skill_get_time(skillid,skilllv)); break; case NJ_KIRIKAGE: - { + if (!map_flag_gvg(src->m)) + { //You don't move on GVG grounds. short x, y; map_search_freecell(bl, 0, &x, &y, 1, 1, 0); - status_change_end(src, SC_HIDING, -1); if (unit_movepos(src, x, y, 0, 0)) clif_slide(src,src->x,src->y); - skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); } + status_change_end(src, SC_HIDING, -1); + skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); break; case 0: if(sd) { @@ -6077,9 +6078,11 @@ int skill_castend_pos2 (struct block_list *src, int x, int y, int skillid, int s break; case NJ_SHADOWJUMP: { - unit_movepos(src, x, y, 1, 0); - clif_slide(src,x,y); - + if (!map_flag_gvg(src->m)) + { //You don't move on GVG grounds. + unit_movepos(src, x, y, 1, 0); + clif_slide(src,x,y); + } if (sc && sc->data[SC_HIDING].timer != -1) status_change_end(src, SC_HIDING, -1); } diff --git a/src/map/status.c b/src/map/status.c index f339e3479..ef3e73021 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -4001,7 +4001,7 @@ struct regen_data *status_get_regen_data(struct block_list *bl) struct status_data *status_get_status_data(struct block_list *bl)
{
- nullpo_retr(NULL, bl);
+ nullpo_retr(&dummy_status, bl);
switch (bl->type) {
case BL_PC:
|