diff options
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index 18c09f135..e65b87639 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2832,8 +2832,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int int x, y; struct skill_unit* unit; - if( src->type == BL_PC && skilllv > maxlv ) - range = maxlv / 2; + if( skilllv > maxlv && (src->type == BL_PC || skilllv < 10) ) + range = maxlv / 2; for( y = src->y - range; y <= src->y + range; ++y ) for( x = src->x - range; x <= src->x + range; ++x ) diff --git a/src/map/status.c b/src/map/status.c index c7b7b1567..792c225d0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3685,6 +3685,13 @@ static signed short status_calc_flee2(struct block_list *bl, struct status_chang static signed char status_calc_def(struct block_list *bl, struct status_change *sc, int def) { + if( bl->type == BL_PC ) + { + struct unit_data *ud = unit_bl2ud( bl); + if( ud && ud->skilltimer != INVALID_TIMER && (ud->skillid == CR_GRANDCROSS || ud->skillid == NPC_GRANDDARKNESS) ) + def = def*2/3; + } + if(!sc || !sc->count) return (signed char)cap_value(def,CHAR_MIN,CHAR_MAX); |