diff options
-rw-r--r-- | Changelog-Trunk.txt | 6 | ||||
-rw-r--r-- | src/map/mob.c | 4 | ||||
-rw-r--r-- | src/map/skill.c | 8 | ||||
-rw-r--r-- | src/map/status.c | 2 |
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:
|