فهرست منبع

- Gospel sends the buff message to the affected player.
Reported by holybeske in http://www.eathena.ws/board/index.php?showtopic=130440

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

FlavioJS 18 سال پیش
والد
کامیت
a35ee1f5d7
3فایلهای تغییر یافته به همراه23 افزوده شده و 28 حذف شده
  1. 2 0
      Changelog-Trunk.txt
  2. 1 10
      src/map/clif.c
  3. 20 18
      src/map/skill.c

+ 2 - 0
Changelog-Trunk.txt

@@ -3,6 +3,8 @@ 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/12/02
+	* Gospel sends the buff message to the affected player. [FlavioJS]
 2006/12/31
 	* Made HSCR bypass both Guard and Shield Reflect using the dirty way [DracoRPG]
 	  > cleaner way would need to rethink the whole skill's implementation

+ 1 - 10
src/map/clif.c

@@ -10093,11 +10093,6 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
 void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd)
 {
 	RFIFOHEAD(fd);
-#ifdef __WIN32
-	//For some extraordinarily eerie reason that noone has figured out yet, 
-	//windows native compiles NEED this nullpo_retv or the function is not found!
-	nullpo_retv(sd);
-#endif
 	npc_scriptcont(sd,RFIFOL(fd,2));
 }
 
@@ -10108,11 +10103,7 @@ void clif_parse_NpcNextClicked(int fd,struct map_session_data *sd)
 void clif_parse_NpcAmountInput(int fd,struct map_session_data *sd)
 {
 	RFIFOHEAD(fd);
-#define RFIFOL_(fd,pos) (*(int*)(session[fd]->rdata+session[fd]->rdata_pos+(pos)))
-	//Input Value overflow Exploit FIX
-	sd->npc_amount=RFIFOL_(fd,6); //fixed by Lupus. npc_amount is (int) but was RFIFOL changing it to (unsigned int)
-#undef RFIFOL_
-
+	sd->npc_amount=(int)RFIFOL(fd,6);
 	npc_scriptcont(sd,RFIFOL(fd,2));
 }
 

+ 20 - 18
src/map/skill.c

@@ -917,7 +917,7 @@ int skillnotok (int skillid, struct map_session_data *sd)
 
 // [orn] - skill ok to cast? and when?	//homunculus
 int skillnotok_hom (int skillid, struct homun_data *hd)
-{	
+{
 	int i = skillid;
 	nullpo_retr (1, hd);
 	
@@ -1060,7 +1060,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 				}
 			}
 		}
-	
+
 		if (sc && sc->count) {	
 		// Enchant Poison gives a chance to poison attacked enemies
 			if(sc->data[SC_ENCPOISON].timer != -1) //Don't use sc_start since chance comes in 1/10000 rate.
@@ -1129,7 +1129,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	case WZ_VERMILION:
 		sc_start(bl,SC_BLIND,4*skilllv,skilllv,skill_get_time2(skillid,skilllv));
 		break;
-		
+
 	case HT_FREEZINGTRAP:
 		sc_start(bl,SC_FREEZE,(3*skilllv+35),skilllv,skill_get_time2(skillid,skilllv));
 		break;
@@ -1215,7 +1215,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 		if (tstatus->size==1) //Only stuns mid-sized mobs.
 			sc_start(bl,SC_STUN,(30+10*skilllv),skilllv,skill_get_time(skillid,skilllv));
 		break;
-			
+
 	case NPC_PETRIFYATTACK:
 		sc_start4(bl,SkillStatusChangeTable(skillid),50+10*skilllv,
 			skilllv,0,0,skill_get_time(skillid,skilllv), 
@@ -1309,7 +1309,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	case TK_DOWNKICK:
 		sc_start(bl,SC_STUN,100,skilllv,skill_get_time2(skillid,skilllv));
 		break;
-			
+
 	case TK_JUMPKICK:
 		//Cancel out Soul Linker status of the target. [Skotlex]
 		if (tsc->count) {
@@ -1373,7 +1373,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 			if (type)
 				rate += sd->addeff[i].arrow_rate;
 			if (!rate) continue;
-			
+
 			if (!(sd->addeff[i].flag&ATF_LONG && sd->addeff[i].flag&ATF_SHORT))
 			{	//Trigger has range consideration.
 				if ((sd->addeff[i].flag&ATF_LONG && !type) ||
@@ -1382,7 +1382,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 			}
 			type =  sd->addeff[i].id;
 			skill = skill_get_time2(StatusSkillChangeTable[type],7);
-			
+
 			if (sd->addeff[i].flag&ATF_TARGET)
 				status_change_start(bl,type,rate,7,0,0,0,skill,0);
 			
@@ -6984,7 +6984,8 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 {
 	struct skill_unit_group *sg;
 	struct block_list *ss;
-	struct map_session_data *sd;
+	TBL_PC* sd;
+	TBL_PC* tsd;
 	struct status_data *tstatus, *sstatus;
 	struct status_change *tsc, *sc;
 	struct skill_unit_group_tickset *ts;
@@ -7001,6 +7002,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 	nullpo_retr(0, sg=src->group);
 	nullpo_retr(0, ss=map_id2bl(sg->src_id));
 	BL_CAST(BL_PC, ss, sd);
+	BL_CAST(BL_PC, bl, tsd);
 	tsc = status_get_sc(bl);
 	tstatus = status_get_status_data(bl);
 	if (sg->state.magic_power)  //For magic power. 
@@ -7251,23 +7253,23 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 						break;
 					case 1: // End all negative status
 						status_change_clear_buffs(bl,2);
-						if (sd) clif_gospel_info(sd, 0x15);
+						if (tsd) clif_gospel_info(tsd, 0x15);
 						break;
 					case 2: // Immunity to all status
 						sc_start(bl,SC_SCRESIST,100,100,type);
-						if (sd) clif_gospel_info(sd, 0x16);
+						if (tsd) clif_gospel_info(tsd, 0x16);
 						break;
 					case 3: // MaxHP +100%
 						sc_start(bl,SC_INCMHPRATE,100,100,type);
-						if (sd) clif_gospel_info(sd, 0x17);
+						if (tsd) clif_gospel_info(tsd, 0x17);
 						break;
 					case 4: // MaxSP +100%
 						sc_start(bl,SC_INCMSPRATE,100,100,type);
-						if (sd) clif_gospel_info(sd, 0x18);
+						if (tsd) clif_gospel_info(tsd, 0x18);
 						break;
 					case 5: // All stats +20
 						sc_start(bl,SC_INCALLSTATUS,100,20,type);
-						if (sd) clif_gospel_info(sd, 0x19);
+						if (tsd) clif_gospel_info(tsd, 0x19);
 						break;
 					case 6: // Level 10 Blessing
 						sc_start(bl,SC_BLESSING,100,10,type);
@@ -7277,24 +7279,24 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns
 						break;
 					case 8: // Enchant weapon with Holy element
 						sc_start(bl,SC_ASPERSIO,100,1,type);
-						if (sd) clif_gospel_info(sd, 0x1c);
+						if (tsd) clif_gospel_info(tsd, 0x1c);
 						break;
 					case 9: // Enchant armor with Holy element
 						sc_start(bl,SC_BENEDICTIO,100,1,type);
-						if (sd) clif_gospel_info(sd, 0x1d);
+						if (tsd) clif_gospel_info(tsd, 0x1d);
 						break;
 					case 10: // DEF +25%
 						sc_start(bl,SC_INCDEFRATE,100,25,type);
-						if (sd) clif_gospel_info(sd, 0x1e);
+						if (tsd) clif_gospel_info(tsd, 0x1e);
 						break;
 					case 11: // ATK +100%
 						sc_start(bl,SC_INCATKRATE,100,100,type);
-						if (sd) clif_gospel_info(sd, 0x1f);
+						if (tsd) clif_gospel_info(tsd, 0x1f);
 						break;
 					case 12: // HIT/Flee +50
 						sc_start(bl,SC_INCHIT,100,50,type);
 						sc_start(bl,SC_INCFLEE,100,50,type);
-						if (sd) clif_gospel_info(sd, 0x20);
+						if (tsd) clif_gospel_info(tsd, 0x20);
 						break;
 				}
 			}