summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt5
-rw-r--r--src/map/battle.c19
-rw-r--r--src/map/skill.c15
-rw-r--r--src/map/status.c2
4 files changed, 25 insertions, 16 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 7f427f830..464449661 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -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.
2006/11/16
+ * Shadow Jump and Kirikage won't "move" you if you use them in GvG grounds.
+ Fixed Kirikage so it first warps you, and then you unhide. [Skotlex]
+ * Corrected Zeny Nage so the Zeny spent on the attack is always the exact
+ same value as the damage you are dealing. Also corrected it so it does half
+ damage when used on players. [Skotlex]
* Overlapping song/dances will now cause dissonance/ugly-dance level 1
instead of retaining the level of their song/dance. [Skotlex]
* Fixed wrong check in @petrename, thanks to The Ultra Mage.[Skotlex]
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: