From 6aa1ac3bede23b22ca1a8919818f226225c21165 Mon Sep 17 00:00:00 2001 From: skotlex Date: Sun, 17 Sep 2006 07:38:10 +0000 Subject: - Fixed NPC_INVISIBLE's cloak ending after attacking once. - Fixed SG_FUSION being castable without Soul Link state. - Moved the item-use restriction SC checks from clif.c to pc_use_item, fixed Gravitation blocking potion usage on it's area of effect. - Sphere Marines and Summoned Flora are now inmune to class-changing. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8782 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 8 ++++++++ src/map/clif.c | 9 --------- src/map/mob.c | 3 +++ src/map/pc.c | 7 +++++-- src/map/skill.c | 4 ++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index fa2e89c31..bbd35e580 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,14 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. + +2006/09/17 + * Fixed NPC_INVISIBLE's cloak ending after attacking once. [Skotlex] + * Fixed SG_FUSION being castable without Soul Link state. [Skotlex] + * Moved the item-use restriction SC checks from clif.c to pc_use_item, + fixed Gravitation blocking potion usage on it's area of effect. [Skotlex] + * Sphere Marines and Summoned Flora are now inmune to class-changing. + [Skotlex] 2006/09/16 * Added monster_ai&256. When set, a monster will pick a random starting position to begin checking versus it's skills, otherwise, it will always diff --git a/src/map/clif.c b/src/map/clif.c index 366da63df..fe9ae5afb 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9285,15 +9285,6 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd) { if (clif_trading(sd)) return; - if (sd->sc.count && ( - sd->sc.data[SC_TRICKDEAD].timer != -1 || //死んだふり - sd->sc.data[SC_BLADESTOP].timer != -1 || //白刃取り - sd->sc.data[SC_BERSERK].timer!=-1 || //バーサーク - (sd->sc.data[SC_NOCHAT].timer!=-1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOITEM) || - sd->sc.data[SC_GRAVITATION].timer!=-1 //会話禁止 - )) - return; - if (sd->invincible_timer != -1) pc_delinvincibletimer(sd); diff --git a/src/map/mob.c b/src/map/mob.c index 8ee1970b7..73446d349 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2284,6 +2284,9 @@ int mob_class_change (struct mob_data *md, int class_) if (md->class_ >= 1324 && md->class_ <= 1363) return 0; //Treasure Boxes + if (md->special_state.ai > 1) + return 0; //Marine Spheres and Floras. + if (mob_is_clone(md->class_)) return 0; //Clones diff --git a/src/map/pc.c b/src/map/pc.c index 057e5e59d..bd02b1ec3 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2938,10 +2938,13 @@ int pc_useitem(struct map_session_data *sd,int n) sd->sc.data[SC_MARIONETTE].timer!=-1 || (sd->sc.data[SC_GRAVITATION].timer!=-1 && sd->sc.data[SC_GRAVITATION].val3 == BCT_SELF) || //Cannot use Potions/Healing items while under Gospel. - (sd->sc.data[SC_GOSPEL].timer!=-1 && sd->sc.data[SC_GOSPEL].val4 == BCT_SELF && sd->inventory_data[n]->type == IT_HEALING) + (sd->sc.data[SC_GOSPEL].timer!=-1 && sd->sc.data[SC_GOSPEL].val4 == BCT_SELF && sd->inventory_data[n]->type == IT_HEALING) || + sd->sc.data[SC_TRICKDEAD].timer != -1 || + sd->sc.data[SC_BLADESTOP].timer != -1 || + (sd->sc.data[SC_NOCHAT].timer!=-1 && sd->sc.data[SC_NOCHAT].val1&MANNER_NOITEM) )) return 0; - + sd->itemid = sd->status.inventory[n].nameid; sd->itemindex = n; amount = sd->status.inventory[n].amount; diff --git a/src/map/skill.c b/src/map/skill.c index 790707090..af022a5af 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4941,7 +4941,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in //On level 1, use level 10 cloaking (no speed penalty) //with val4 passed as 1 is for "infinite cloak". clif_skill_nodamage(src,bl,skillid,skilllv, - sc_start4(bl,type,100,9+skilllv,0,0,1,skill_get_time(skillid,skilllv))); + sc_start4(bl,type,100,9+skilllv,0,0,2,skill_get_time(skillid,skilllv))); break; case NPC_SIEGEMODE: @@ -8226,7 +8226,7 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t clif_skill_fail(sd,skill,0,0); return 0; case SG_FUSION: - if (!sc || sc->data[SC_FUSION].timer!=-1) + if (sc && sc->data[SC_FUSION].timer!=-1) return 1; if (sc && sc->data[SC_SPIRIT].timer != -1 && sc->data[SC_SPIRIT].val2 == SL_STAR) break; -- cgit v1.2.3-70-g09d2