소스 검색

- Fixed bugreport:6887, a variable was not initialized;
- Make @addwarp <npc name> parameter mandatory as per requests;
- Changed SCB_ALL to SCB_BASE on SC_INTRAVISION case, it should be enough.

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

momacabu 12 년 전
부모
커밋
57006f7756
6개의 변경된 파일14개의 추가작업 그리고 17개의 파일을 삭제
  1. 1 1
      conf/msg_athena.conf
  2. 5 5
      doc/atcommands.txt
  3. 2 2
      src/map/atcommand.c
  4. 4 7
      src/map/npc.c
  5. 1 1
      src/map/skill.c
  6. 1 1
      src/map/status.c

+ 1 - 1
conf/msg_athena.conf

@@ -984,7 +984,7 @@
 1155: NPC moved.
 
 // @addwarp
-1156: Usage: @addwarp <mapname> <X> <Y> {<npc name>}
+1156: Usage: @addwarp <mapname> <X> <Y> <npc name>
 1157: Unknown map '%s'.
 1158: New warp NPC '%s' created.
 

+ 5 - 5
doc/atcommands.txt

@@ -190,17 +190,17 @@ Sets a mapflag for the current map (1 = On, 0 = Off).
 
 ---------------------------------------
 
-@addwarp <map> <x> <y> {<npc name>}
+@addwarp <map> <x> <y> <npc name>
 
 Creates a warp portal on the character's current coordinates that lasts until the next reboot.
-If no name is specified, the server will automatically assign a name for the warp portal.
-The name will be displayed only once in the chat window.
+The name parameter is mandatory and if it already exists, the server will automagically assign a name,
+and it will be displayed only once in the chat window.
 
 Example:
-@addwarp prontera 50 50
+@addwarp prontera 50 50 my_warp_sample
 
 Output:
-New warp NPC 'warp_4_170_198' created.
+New warp NPC 'my_warp_sample' created.
 
 ---------------------------------------
 

+ 2 - 2
src/map/atcommand.c

@@ -5267,8 +5267,8 @@ ACMD_FUNC(addwarp)
 	nullpo_retr(-1, sd);
 	memset(warpname, '\0', sizeof(warpname));
 
-	if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 3) {
-		clif_displaymessage(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> {<npc name>}
+	if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) {
+		clif_displaymessage(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name>
 		return -1;
 	}
 

+ 4 - 7
src/map/npc.c

@@ -2021,14 +2021,11 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
 	nd->bl.x = from_x;
 	nd->bl.y = from_y;
 	
-	if (name)
-	{
-		safestrncpy(nd->exname, name, ARRAYLENGTH(nd->exname));
-		if (npc_name2id(nd->exname) != NULL)
-			flag = 1;
-	}
+	safestrncpy(nd->exname, name, ARRAYLENGTH(nd->exname));
+	if (npc_name2id(nd->exname) != NULL)
+		flag = 1;
 	
-	if (name[0] == '\0' || flag == 1)
+	if (flag == 1)
 		snprintf(nd->exname, ARRAYLENGTH(nd->exname), "warp_%d_%d_%d", from_mapid, from_x, from_y);
 
 	for( i = 0; npc_name2id(nd->exname) != NULL; ++i )

+ 1 - 1
src/map/skill.c

@@ -4692,7 +4692,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag);
 		case MH_STEINWAND: {
 			struct block_list *s_src = battle_get_master(src);
-			short ret;
+			short ret = 0;
 			if(!skill_check_unit_range(src, src->x, src->y, skillid, skilllv))  //prevent reiteration
 			    ret = skill_castend_pos2(src,src->x,src->y,skillid,skilllv,tick,flag); //cast on homon
 			if(s_src && !skill_check_unit_range(s_src, s_src->x, s_src->y, skillid, skilllv))

+ 1 - 1
src/map/status.c

@@ -9419,7 +9419,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
 			clif_status_load(bl, SI_ACTIVE_MONSTER_TRANSFORM, 0);
 			break;
 		case SC_INTRAVISION:
-			calc_flag = SCB_ALL;/* required for overlapping */
+			calc_flag = SCB_BASE;/* required for overlapping */
 			break;
 		}