From f8ebb28853a8a9c51725778688af0c4bb54d31e0 Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 24 Jul 2006 17:28:13 +0000 Subject: - Added a check to prevent Deluge/Volcano/Violent Gale from being placed on top of each other. Reverted the previous 'fix' where atk was being increased based on armor element rather than element of attack. - Added flag 0x002 (no reiteration) to Deluge/Volcano/Violent Gale (skill_unit_db) - Removed the noreturn mapflag check from script command warp. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7858 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 4 ++++ db/Changelog.txt | 2 ++ db/skill_unit_db.txt | 6 +++--- src/map/battle.c | 6 +++--- src/map/script.c | 6 ------ src/map/skill.c | 18 ++++++++++++++++-- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 712bfa5b1..6c217b374 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,10 @@ 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/07/24 + * Added a check to prevent Deluge/Volcano/Violent Gale from being placed on + top of each other. Reverted the previous 'fix' where atk was being + increased based on armor element rather than element of attack. [Skotlex] + * Removed the noreturn mapflag check from script command warp. [Skotlex] * Homuculus cleanup [DracoRPG] - Replaced nullpo's in parse functions by silent checks - Removed server-side effect for menu option 0 (view status window... diff --git a/db/Changelog.txt b/db/Changelog.txt index 9821f3d05..a122c2403 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -25,6 +25,8 @@ ========================= 07/24 + * Added flag 0x002 (no reiteration) to Deluge/Volcano/Violent Gale + (skill_unit_db) [Skotlex] * Edited Rachel mobs a little and added Beret to Turtle General drops [Playtester] * Changed Land Protector's range back to 3. [Skotlex] 07/23 diff --git a/db/skill_unit_db.txt b/db/skill_unit_db.txt index 0b8de926a..c5a83b5d0 100644 --- a/db/skill_unit_db.txt +++ b/db/skill_unit_db.txt @@ -52,9 +52,9 @@ 220,0xb0, , 0, 0, -1,all, 0x002 //RG_GRAFFITI 229,0xb1, , 0, 1,1000,enemy, 0x006 //AM_DEMONSTRATION 254,0x86, , -1, 0, 400,enemy, 0x000 //CR_GRANDCROSS -285,0x9a, , 3, 0, -1,all, 0x000 //SA_VOLCANO -286,0x9b, , 3, 0, -1,all, 0x000 //SA_DELUGE -287,0x9c, , 3, 0, -1,all, 0x000 //SA_VIOLENTGALE +285,0x9a, , 3, 0, -1,all, 0x002 //SA_VOLCANO +286,0x9b, , 3, 0, -1,all, 0x002 //SA_DELUGE +287,0x9c, , 3, 0, -1,all, 0x002 //SA_VIOLENTGALE 288,0x9d,,3:3:4:4:5,0, -1,all, 0x000 //SA_LANDPROTECTOR 306,0x9e, , 4, 0,6000,all, 0x200 //BD_LULLABY 307,0x9f, , 4, 0, -1,enemy, 0x210 //BD_RICHMANKIM diff --git a/src/map/battle.c b/src/map/battle.c index acd5d547d..bbee2fe24 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -198,11 +198,11 @@ int battle_attr_fix(struct block_list *src, struct block_list *target, int damag ratio = attr_fix_table[def_lv-1][atk_elem][def_type]; if (sc && sc->count) { - if(sc->data[SC_VOLCANO].timer!=-1 && status_get_element(src) == ELE_FIRE) + if(sc->data[SC_VOLCANO].timer!=-1 && atk_elem == ELE_FIRE) ratio += enchant_eff[sc->data[SC_VOLCANO].val1-1]; - if(sc->data[SC_VIOLENTGALE].timer!=-1 && status_get_element(src) == ELE_WIND) + if(sc->data[SC_VIOLENTGALE].timer!=-1 && atk_elem == ELE_WIND) ratio += enchant_eff[sc->data[SC_VIOLENTGALE].val1-1]; - if(sc->data[SC_DELUGE].timer!=-1 && status_get_element(src) == ELE_WATER) + if(sc->data[SC_DELUGE].timer!=-1 && atk_elem == ELE_WATER) ratio += enchant_eff[sc->data[SC_DELUGE].val1-1]; } if (tsc && tsc->count) diff --git a/src/map/script.c b/src/map/script.c index d17b84fdd..3b1fbfe23 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -3054,15 +3054,9 @@ int buildin_warp(struct script_state *st) if(strcmp(str,"Random")==0) pc_randomwarp(sd,3); else if(strcmp(str,"SavePoint")==0){ - if(map[sd->bl.m].flag.noreturn) // ’±‹ΦŽ~ - return 0; - pc_setpos(sd,sd->status.save_point.map, sd->status.save_point.x,sd->status.save_point.y,3); }else if(strcmp(str,"Save")==0){ - if(map[sd->bl.m].flag.noreturn) // ’±‹ΦŽ~ - return 0; - pc_setpos(sd,sd->status.save_point.map, sd->status.save_point.x,sd->status.save_point.y,3); }else diff --git a/src/map/skill.c b/src/map/skill.c index 46280601e..230b35e55 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2194,6 +2194,20 @@ static int skill_check_unit_range_sub (struct block_list *bl, va_list ap) if(g_skillid != MG_SAFETYWALL && g_skillid != AL_PNEUMA) return 0; break; + //Cannot stack among themselves. + case SA_VOLCANO: + case SA_DELUGE: + case SA_VIOLENTGALE: + switch (g_skillid) + { + case SA_VOLCANO: + case SA_DELUGE: + case SA_VIOLENTGALE: + break; + default: + return 0; + } + break; case AL_WARP: case HT_SKIDTRAP: case HT_LANDMINE: @@ -5831,7 +5845,7 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data) break; } - if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1)) /* 使用村仢チェック */ + if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1)) break; if(hd && !skill_check_condition_hom(hd,ud->skillid, ud->skilllv,1)) //[orn] @@ -7683,7 +7697,7 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap) if(pc_isdead(tsd)) return 0; - if (tsd->sc.count && (tsd->sc.data[SC_SILENCE].timer != -1 || tsd->sc.data[SC_STUN].timer != -1)) + if (tsd->sc.count && (tsd->sc.data[SC_SILENCE].timer != -1 || tsd->sc.opt1)) return 0; switch(skillid) -- cgit v1.2.3-70-g09d2