Ver Fonte

- @heal no longer displays a healing animation. Fixes the client believing you couldn't be healed more than 32K.
- Now you can use any skills (except encore/dancing ones) while under Longing for Freeding.
- Now you can use any skills while under Marionette Control.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7111 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex há 19 anos atrás
pai
commit
4597fbab18
3 ficheiros alterados com 17 adições e 5 exclusões
  1. 5 0
      Changelog-Trunk.txt
  2. 4 4
      src/map/atcommand.c
  3. 8 1
      src/map/status.c

+ 5 - 0
Changelog-Trunk.txt

@@ -4,6 +4,11 @@ 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/06/12
+	* @heal no longer displays a healing animation. Fixes the client believing
+	  you couldn't be healed more than 32K. [Skotlex]
+	* Now you can use any skills (except encore/dancing ones) while under
+	  Longing for Freeding. [Skotlex]
+	* Now you can use any skills while under Marionette Control. [Skotlex]
 	* Fixed npc_checknear's distance check returning the opposite of what it
 	  should (false when the range is correct and viceversa) [Skotlex]
 	* Added a warning on item loading when an item is of equippable type but

+ 4 - 4
src/map/atcommand.c

@@ -2488,7 +2488,7 @@ int atcommand_heal(
 	sscanf(message, "%d %d", &hp, &sp);
 
 	if (hp == 0 && sp == 0) {
-		if (!status_heal(&sd->bl, sd->battle_status.max_hp, sd->battle_status.max_sp, 2))
+		if (!status_percent_heal(&sd->bl, 100, 100))
 			clif_displaymessage(fd, msg_table[157]); // HP and SP are already with the good value.
 		else
 			clif_displaymessage(fd, msg_table[17]); // HP, SP recovered.
@@ -2496,7 +2496,7 @@ int atcommand_heal(
 	}
 	
 	if(hp > 0 && sp >= 0) {
-		if(!status_heal(&sd->bl, hp, sp, 2))
+		if(!status_heal(&sd->bl, hp, sp, 0))
 			clif_displaymessage(fd, msg_table[157]); // HP and SP are already with the good value.
 		else
 			clif_displaymessage(fd, msg_table[17]); // HP, SP recovered.
@@ -2513,7 +2513,7 @@ int atcommand_heal(
 	//Opposing signs.
 	if (hp) {
 		if (hp > 0)
-			status_heal(&sd->bl, hp, 0, 2);
+			status_heal(&sd->bl, hp, 0, 0);
 		else {
 			status_damage(NULL, &sd->bl, -hp, 0, 0, 0);
 			clif_damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0 , 4, 0);
@@ -2522,7 +2522,7 @@ int atcommand_heal(
 
 	if (sp) {
 		if (sp > 0)
-			status_heal(&sd->bl, 0, sp, 2);
+			status_heal(&sd->bl, 0, sp, 0);
 		else
 			status_damage(NULL, &sd->bl, 0, -sp, 0, 0);
 	}

+ 8 - 1
src/map/status.c

@@ -870,7 +870,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 			(src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_num)
 		) {	//Skills blocked through status changes...
 			if (!flag && ( //Blocked only from using the skill (stuff like autospell may still go through
-				(sc->data[SC_MARIONETTE].timer != -1 && skill_num != CG_MARIONETTE) ||
+//				(sc->data[SC_MARIONETTE].timer != -1 && skill_num != CG_MARIONETTE) ||
 				(sc->data[SC_MARIONETTE2].timer != -1 && skill_num == CG_MARIONETTE) ||
 				sc->data[SC_SILENCE].timer != -1 || 
 				sc->data[SC_STEELBODY].timer != -1 ||
@@ -888,6 +888,13 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 
 			if (flag!=2 && sc->data[SC_DANCING].timer != -1)
 			{
+				if(sc->data[SC_LONGING].timer != -1)
+			  	{	//Allow everything except dancing/re-dancing. [Skotlex]
+					if (skill_num == BD_ENCORE ||
+						skill_get_inf2(skill_num)&(INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL)
+					)
+						return 0;
+				} else
 				if (skill_num != BD_ADAPTATION && skill_num != CG_LONGINGFREEDOM
 					&& skill_num != BA_MUSICALSTRIKE && skill_num != DC_THROWARROW)
 					return 0;