summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt6
-rw-r--r--src/map/mob.c4
-rw-r--r--src/map/skill.c8
-rw-r--r--src/map/status.c2
4 files changed, 16 insertions, 4 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 336dd521c..b867b1b9e 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,12 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/11/28
+ * Modified the way Storm Gust freeze's counter works. Now it checks for the
+ caster of the Storm Gust, if it's the same as the previous hit, the counter
+ is increased, otherwise, the ID is updated and the counter is changed to 1.
+ [Skotlex]
+ * Fixed always receiving at least 1 bexp/jexp even when the mob gives no
+ exp at all. [Skotlex]
* Changed write to send as suggested by TheUltraMage in:
http://www.eathena.ws/board/index.php?showtopic=105417
Hopefully that will take care of the SIGPIPE problem in Debian and cygwin. [FlavioJS]
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: