summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/mob.c4
-rw-r--r--src/map/skill.c8
-rw-r--r--src/map/status.c2
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: