Jelajahi Sumber

- 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://svn.code.sf.net/p/rathena/svn/trunk@8782 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 18 tahun lalu
induk
melakukan
401920c1d8
5 mengubah file dengan 18 tambahan dan 13 penghapusan
  1. 8 0
      Changelog-Trunk.txt
  2. 0 9
      src/map/clif.c
  3. 3 0
      src/map/mob.c
  4. 5 2
      src/map/pc.c
  5. 2 2
      src/map/skill.c

+ 8 - 0
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

+ 0 - 9
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);
 

+ 3 - 0
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
 

+ 5 - 2
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;

+ 2 - 2
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;