From b06ebc171990e2a3bedee763ee3af19bfc0eea28 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 28 Nov 2006 13:42:49 +0000 Subject: [PATCH] - 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. - Fixed always receiving at least 1 bexp/jexp even when the mob gives no exp at all. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9345 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 6 ++++++ src/map/mob.c | 4 ++-- src/map/skill.c | 8 +++++++- src/map/status.c | 2 +- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 336dd521ce..b867b1b9eb 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 927c180a60..bce62d938f 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 0f78fe32aa..ee3619822c 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 adb35c32d9..306273087c 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: