summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c7
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);