summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-10 19:20:59 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-10 19:20:59 +0000
commitb77170410fbc46495d9d150a501b4387e410693a (patch)
tree08045f94d94f1398c35b49fc7164a61b17ae996a /src
parent1346352b049d049bf773d358cd9aae75788f5eae (diff)
downloadhercules-b77170410fbc46495d9d150a501b4387e410693a.tar.gz
hercules-b77170410fbc46495d9d150a501b4387e410693a.tar.bz2
hercules-b77170410fbc46495d9d150a501b4387e410693a.tar.xz
hercules-b77170410fbc46495d9d150a501b4387e410693a.zip
- Deluge/Violent Gale/Volcano tiles will now fail to be placed on cells that are already ocuppied by anything else.
- status_is_immune will now return 0 or the amount of immunity of the target. In which cases it returns 100 for WoH and the GTB bonus when they have passed the gtb_sc_immunity setting. This enables targetted spells to not "fail silently" unless GTB's magic reduction is 100. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9194 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/skill.c12
-rw-r--r--src/map/status.c7
2 files changed, 15 insertions, 4 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index 03ed2f235..e11fc54f0 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2639,7 +2639,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if (status_isdead(bl))
return 1;
- if (skillid && skill_get_type(skillid) == BF_MAGIC && status_isimmune(bl))
+ if (skillid && skill_get_type(skillid) == BF_MAGIC && status_isimmune(bl) == 100)
{ //GTB makes all targetted magic fail silently.
if (sd) clif_skill_fail(sd,skillid,0,0);
return 1;
@@ -9323,6 +9323,15 @@ int skill_cell_overlap(struct block_list *bl, va_list ap)
// Suiton/Kaensin CAN super-impose on each another.
// case NJ_SUITON:
// case NJ_KAENSIN:
+// The official implementation makes them fail to appear when casted on top of ANYTHING
+// but I wonder if they didn't actually meant to fail when casted on top of each other?
+// hence, I leave the alternate implementation here, commented. [Skotlex]
+ if (unit->range <= 0)
+ {
+ (*alive) = 0;
+ return 1;
+ }
+/*
switch (unit->group->skill_id)
{ //These cannot override each other.
case SA_VOLCANO:
@@ -9333,6 +9342,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap)
(*alive) = 0;
return 1;
}
+*/
break;
case PF_FOGWALL:
switch(unit->group->skill_id)
diff --git a/src/map/status.c b/src/map/status.c
index e74e7a5a5..f339e3479 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -4168,10 +4168,11 @@ int status_isimmune(struct block_list *bl)
{
struct status_change *sc =status_get_sc(bl);
if (sc && sc->count && sc->data[SC_HERMODE].timer != -1)
- return 1;
+ return 100;
+
if (bl->type == BL_PC &&
- ((TBL_PC*)bl)->special_state.no_magic_damage)
- return ((TBL_PC*)bl)->special_state.no_magic_damage > battle_config.gtb_sc_immunity;
+ ((TBL_PC*)bl)->special_state.no_magic_damage > battle_config.gtb_sc_immunity)
+ return ((TBL_PC*)bl)->special_state.no_magic_damage;
return 0;
}