Fixed Wall of Thorn skill, all of its conditions should now be met.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15971 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
08c67d5d99
commit
f6300d31f9
@ -10583,6 +10583,15 @@ static int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, un
|
|||||||
skill_blown(ss,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),unit_getdir(bl),0);
|
skill_blown(ss,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),unit_getdir(bl),0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case UNT_WALLOFTHORN:
|
||||||
|
if( status_get_mode(bl)&MD_BOSS )
|
||||||
|
break; // iRO Wiki says that this skill don't affect to Boss monsters.
|
||||||
|
if( battle_check_target(ss,bl,BCT_ENEMY) <= 0 )
|
||||||
|
skill_blown(&src->bl,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv),unit_getdir(bl),0);
|
||||||
|
else
|
||||||
|
skill_attack(skill_get_type(sg->skill_id), ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0);
|
||||||
|
break;
|
||||||
|
|
||||||
case UNT_GD_LEADERSHIP:
|
case UNT_GD_LEADERSHIP:
|
||||||
case UNT_GD_GLORYWOUNDS:
|
case UNT_GD_GLORYWOUNDS:
|
||||||
case UNT_GD_SOULCOLD:
|
case UNT_GD_SOULCOLD:
|
||||||
@ -11416,6 +11425,7 @@ int skill_unit_ondamaged (struct skill_unit *src, struct block_list *bl, int dam
|
|||||||
case UNT_ANKLESNARE:
|
case UNT_ANKLESNARE:
|
||||||
case UNT_ICEWALL:
|
case UNT_ICEWALL:
|
||||||
case UNT_REVERBERATION:
|
case UNT_REVERBERATION:
|
||||||
|
case UNT_WALLOFTHORN:
|
||||||
src->val1-=damage;
|
src->val1-=damage;
|
||||||
break;
|
break;
|
||||||
case UNT_BLASTMINE:
|
case UNT_BLASTMINE:
|
||||||
@ -14552,6 +14562,12 @@ static int skill_unit_timer_sub(DBKey key, DBData *data, va_list ap)
|
|||||||
if( unit->val1 <= 0 )
|
if( unit->val1 <= 0 )
|
||||||
unit->limit = DIFF_TICK(tick + 700,group->tick);
|
unit->limit = DIFF_TICK(tick + 700,group->tick);
|
||||||
break;
|
break;
|
||||||
|
case UNT_WALLOFTHORN:
|
||||||
|
if( unit->val1 <= 0 ) {
|
||||||
|
group->unit_id = UNT_USED_TRAPS;
|
||||||
|
group->limit = DIFF_TICK(tick, group->tick) + 1500;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -14762,8 +14778,8 @@ int skill_unit_move_unit_group (struct skill_unit_group *group, int m, int dx, i
|
|||||||
if (skill_get_unit_flag(group->skill_id)&UF_ENSEMBLE)
|
if (skill_get_unit_flag(group->skill_id)&UF_ENSEMBLE)
|
||||||
return 0; //Ensembles may not be moved around.
|
return 0; //Ensembles may not be moved around.
|
||||||
|
|
||||||
if( group->unit_id == UNT_ICEWALL )
|
if( group->unit_id == UNT_ICEWALL || group->unit_id == UNT_WALLOFTHORN )
|
||||||
return 0; //Icewalls don't get knocked back
|
return 0; //Icewalls and Wall of Thorns don't get knocked back
|
||||||
|
|
||||||
m_flag = (int *) aCalloc(group->unit_count, sizeof(int));
|
m_flag = (int *) aCalloc(group->unit_count, sizeof(int));
|
||||||
// m_flag
|
// m_flag
|
||||||
|
@ -1425,19 +1425,29 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skill_num == PA_PRESSURE && flag && target) {
|
switch( skill_num ) {
|
||||||
|
case PA_PRESSURE:
|
||||||
|
if( flag && target ) {
|
||||||
//Gloria Avoids pretty much everything....
|
//Gloria Avoids pretty much everything....
|
||||||
tsc = status_get_sc(target);
|
tsc = status_get_sc(target);
|
||||||
if(tsc && tsc->option&OPTION_HIDE)
|
if(tsc && tsc->option&OPTION_HIDE)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case GN_WALLOFTHORN:
|
||||||
|
if( target && status_isdead(target) )
|
||||||
|
return 0;
|
||||||
|
break;
|
||||||
|
case AL_TELEPORT:
|
||||||
//Should fail when used on top of Land Protector [Skotlex]
|
//Should fail when used on top of Land Protector [Skotlex]
|
||||||
if (src && skill_num == AL_TELEPORT && map_getcell(src->m, src->x, src->y, CELL_CHKLANDPROTECTOR)
|
if (src && map_getcell(src->m, src->x, src->y, CELL_CHKLANDPROTECTOR)
|
||||||
&& !(status->mode&MD_BOSS)
|
&& !(status->mode&MD_BOSS)
|
||||||
&& (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_num))
|
&& (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_num))
|
||||||
return 0;
|
return 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if ( src ) sc = status_get_sc(src);
|
if ( src ) sc = status_get_sc(src);
|
||||||
|
|
||||||
@ -1486,7 +1496,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
|
|||||||
skill_get_inf2(skill_num)&(INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL)
|
skill_get_inf2(skill_num)&(INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL)
|
||||||
)
|
)
|
||||||
return 0;
|
return 0;
|
||||||
} else
|
} else {
|
||||||
switch (skill_num) {
|
switch (skill_num) {
|
||||||
case BD_ADAPTATION:
|
case BD_ADAPTATION:
|
||||||
case CG_LONGINGFREEDOM:
|
case CG_LONGINGFREEDOM:
|
||||||
@ -1496,6 +1506,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
|
|||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if ((sc->data[SC_DANCING]->val1&0xFFFF) == CG_HERMODE && skill_num == BD_ADAPTATION)
|
if ((sc->data[SC_DANCING]->val1&0xFFFF) == CG_HERMODE && skill_num == BD_ADAPTATION)
|
||||||
return 0; //Can't amp out of Wand of Hermode :/ [Skotlex]
|
return 0; //Can't amp out of Wand of Hermode :/ [Skotlex]
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user