- 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://svn.code.sf.net/p/rathena/svn/trunk@9194 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-11-10 19:20:59 +00:00
parent fff660eb38
commit 3b530a5702
3 changed files with 21 additions and 4 deletions

View File

@ -4,6 +4,12 @@ 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. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/11/10 2006/11/10
* Deluge/Violent Gale/Volcano tiles will now fail to be placed on cells
that are already ocuppied by anything else. [Skotlex]
* 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. [Skotlex]
* Fixed Homunculus being spawned as soon as they arrive from the * Fixed Homunculus being spawned as soon as they arrive from the
char-server even if the Master has not spawned on the map yet. [Skotlex] char-server even if the Master has not spawned on the map yet. [Skotlex]
* AL_TELEPORT now fails when used on top of Land Protector. [Skotlex] * AL_TELEPORT now fails when used on top of Land Protector. [Skotlex]

View File

@ -2639,7 +2639,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
if (status_isdead(bl)) if (status_isdead(bl))
return 1; 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. { //GTB makes all targetted magic fail silently.
if (sd) clif_skill_fail(sd,skillid,0,0); if (sd) clif_skill_fail(sd,skillid,0,0);
return 1; 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. // Suiton/Kaensin CAN super-impose on each another.
// case NJ_SUITON: // case NJ_SUITON:
// case NJ_KAENSIN: // 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) switch (unit->group->skill_id)
{ //These cannot override each other. { //These cannot override each other.
case SA_VOLCANO: case SA_VOLCANO:
@ -9333,6 +9342,7 @@ int skill_cell_overlap(struct block_list *bl, va_list ap)
(*alive) = 0; (*alive) = 0;
return 1; return 1;
} }
*/
break; break;
case PF_FOGWALL: case PF_FOGWALL:
switch(unit->group->skill_id) switch(unit->group->skill_id)

View File

@ -4168,10 +4168,11 @@ int status_isimmune(struct block_list *bl)
{ {
struct status_change *sc =status_get_sc(bl); struct status_change *sc =status_get_sc(bl);
if (sc && sc->count && sc->data[SC_HERMODE].timer != -1) if (sc && sc->count && sc->data[SC_HERMODE].timer != -1)
return 1; return 100;
if (bl->type == BL_PC && if (bl->type == BL_PC &&
((TBL_PC*)bl)->special_state.no_magic_damage) ((TBL_PC*)bl)->special_state.no_magic_damage > battle_config.gtb_sc_immunity)
return ((TBL_PC*)bl)->special_state.no_magic_damage > battle_config.gtb_sc_immunity; return ((TBL_PC*)bl)->special_state.no_magic_damage;
return 0; return 0;
} }