summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt8
-rw-r--r--src/map/clif.c9
-rw-r--r--src/map/mob.c3
-rw-r--r--src/map/pc.c7
-rw-r--r--src/map/skill.c4
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;