summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-06 15:58:30 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-06 15:58:30 +0000
commitbb0e0bcc5d4da8331f6fb33c879b2d757855722a (patch)
tree4b768273eb0b136ca23f71f1b4504ed34c1ab8b2 /src/map/skill.c
parent4ecf64221cb558786e4581f4ac7ffa733fa3e4d5 (diff)
downloadhercules-bb0e0bcc5d4da8331f6fb33c879b2d757855722a.tar.gz
hercules-bb0e0bcc5d4da8331f6fb33c879b2d757855722a.tar.bz2
hercules-bb0e0bcc5d4da8331f6fb33c879b2d757855722a.tar.xz
hercules-bb0e0bcc5d4da8331f6fb33c879b2d757855722a.zip
- Ganbantein's delay is now 2 secs.
- Removed the time2 value of NJ_NEN since it has no use. - Removed the return code entry when logging GM reload-GM requests (login-sql),it'll just be stored as zero. - Added a fix on socket.c to not pick INADDR_ANY when choosing our own IP. - Applied the correction on maprespawnguildid so that it parses ALL players and not just those on a map. - TK_JUMPKICK now dispels normal aspd/speed potions (not berserk pitched ones) and Preserve will be unable to block this. - Soul Linkers are now inmune to SA_DISPEL - You can now place everything (except magic skills) on top of LPs. - Corrected Ganbantein to not touch song/dance/ensembles. - Status_calc_pc will refuse to execute if the player is still tagged as a "new connection" and the invocation is not meant to be the first one. - Swapped the order of checks in status_isimmune so that Wand of Hermod skill blocking takes precedence over GTB's - Client packets will all be ignored while a player is not on a map until the LoadEndAck packet is received. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9152 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index b11ae6dde..f49744679 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1310,17 +1310,19 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case TK_JUMPKICK:
//Cancel out Soul Linker status of the target. [Skotlex]
if (tsc->count) {
- if (tsc->data[SC_PRESERVE].timer != -1) //preserve blocks the cleaning
- break;
- //Remove pitched potions effect.
- if (tsc->data[SC_ASPDPOTION0].timer != -1 && tsc->data[SC_ASPDPOTION0].val4)
+ //Remove NORMAL potions effect.
+ if (tsc->data[SC_ASPDPOTION0].timer != -1 && !tsc->data[SC_ASPDPOTION0].val4)
status_change_end(bl, SC_ASPDPOTION0, -1);
- if (tsc->data[SC_ASPDPOTION1].timer != -1 && tsc->data[SC_ASPDPOTION1].val4)
+ if (tsc->data[SC_ASPDPOTION1].timer != -1 && !tsc->data[SC_ASPDPOTION1].val4)
status_change_end(bl, SC_ASPDPOTION1, -1);
- if (tsc->data[SC_ASPDPOTION2].timer != -1 && tsc->data[SC_ASPDPOTION2].val4)
+ if (tsc->data[SC_ASPDPOTION2].timer != -1 && !tsc->data[SC_ASPDPOTION2].val4)
status_change_end(bl, SC_ASPDPOTION2, -1);
- if (tsc->data[SC_ASPDPOTION3].timer != -1 && tsc->data[SC_ASPDPOTION3].val4)
+ if (tsc->data[SC_ASPDPOTION3].timer != -1 && !tsc->data[SC_ASPDPOTION3].val4)
status_change_end(bl, SC_ASPDPOTION3, -1);
+ if (tsc->data[SC_SPEEDUP0].timer != -1 && !tsc->data[SC_SPEEDUP0].val4)
+ status_change_end(bl, SC_SPEEDUP0, -1);
+ if (tsc->data[SC_SPEEDUP1].timer != -1 && !tsc->data[SC_SPEEDUP1].val4)
+ status_change_end(bl, SC_SPEEDUP1, -1);
if (tsc->data[SC_SPIRIT].timer != -1)
status_change_end(bl, SC_SPIRIT, -1);
if (tsc->data[SC_ONEHAND].timer != -1)
@@ -4621,6 +4623,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
clif_skill_nodamage(src,bl,skillid,skilllv,1);
i = status_get_sc_def_mdef(bl);
if (i >= 10000 ||
+ (dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) ||
tsc == NULL || (tsc->data[SC_SPIRIT].timer != -1 && tsc->data[SC_SPIRIT].val2 == SL_ROGUE) || //Rogue's spirit defends againt dispel.
//Fixed & changed to use a proportionnal reduction (no info, but seems far more logical) [DracoRPG]
rand()%10000 >= (10000-i)*(50+10*skilllv)/100)
@@ -9333,8 +9336,9 @@ int skill_landprotector (struct block_list *bl, va_list ap)
break;
}
if (unit->group->skill_id == SA_LANDPROTECTOR &&
- !(skill_get_unit_flag(skillid)&(UF_DANCE|UF_SONG|UF_ENSEMBLE)))
- { //It deletes everything except songs/dances/encores.
+ skill_get_type(skillid) == BF_MAGIC)
+// !(skill_get_unit_flag(skillid)&(UF_DANCE|UF_SONG|UF_ENSEMBLE)))
+ { //When LP is already placed, all it does it prevent magic spells from being placed.
(*alive) = 0;
return 1;
}
@@ -9355,10 +9359,9 @@ int skill_ganbatein (struct block_list *bl, va_list ap)
if ((unit = (struct skill_unit *)bl) == NULL || unit->group == NULL)
return 0;
-// Apparently, it REMOVES traps.
-// if (skill_get_inf2(unit->group->skill_id)&INF2_TRAP)
-// return 0; //Do not remove traps.
-
+ if (unit->group->state.song_dance)
+ return 0; //Don't touch song/dance/ensemble.
+
if (unit->group->skill_id == SA_LANDPROTECTOR)
skill_delunit(unit, 1);
else skill_delunitgroup(NULL, unit->group, 1);