diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/mob.c | 4 | ||||
-rw-r--r-- | src/map/skill.c | 8 | ||||
-rw-r--r-- | src/map/status.c | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 927c180a6..bce62d938 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1842,7 +1842,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) } jper = per; - if (map[md->bl.m].flag.nobaseexp) + if (map[md->bl.m].flag.nobaseexp || !md->db->base_exp) base_exp=0; else { temp = bonus; //Do not alter bonus for the jExp section below. @@ -1862,7 +1862,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) base_exp = 1; } //Homun earned job-exp is always lost. - if (map[md->bl.m].flag.nojobexp || md->dmglog[i].flag) + if (map[md->bl.m].flag.nojobexp || !md->db->job_exp || md->dmglog[i].flag) job_exp=0; else { if (map[md->bl.m].jexp != 100) diff --git a/src/map/skill.c b/src/map/skill.c index 0f78fe32a..ee3619822 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1117,7 +1117,13 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int break; case WZ_STORMGUST: - tsc->data[SC_FREEZE].val3++; + if (tsc->data[SC_FREEZE].val2 == src->id) + tsc->data[SC_FREEZE].val3++; //Repeated hits from same SG + else { //New SG, reset count + tsc->data[SC_FREEZE].val2 = src->id; + tsc->data[SC_FREEZE].val3 = 1; + } + if(tsc->data[SC_FREEZE].val3 >= 3) //Tharis pointed out that this is normal freeze chance with a base of 300% sc_start(bl,SC_FREEZE,300,skilllv,skill_get_time2(skillid,skilllv)); break; diff --git a/src/map/status.c b/src/map/status.c index adb35c32d..306273087 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -6134,7 +6134,7 @@ int status_change_end( struct block_list* bl , int type,int tid ) break;
case SC_FREEZE:
- sc->data[type].val3 = 0; //Clear Storm Gust hit count
+ sc->data[type].val2 = 0; //Clear ID of SG caster
break;
case SC_MARIONETTE:
|