Pārlūkot izejas kodu

* Fixed /resetstate /resetskill being unuseable at all
* Fixed /mm /mapmove being useable by all players
* Fixed some compile errors in mob_once_spawn
* Corrected a typo in Chemical Protection skills

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

celest 20 gadi atpakaļ
vecāks
revīzija
79084575ce
5 mainītis faili ar 32 papildinājumiem un 26 dzēšanām
  1. 6 0
      Changelog-SVN.txt
  2. 1 0
      src/map/atcommand.c
  3. 16 18
      src/map/clif.c
  4. 8 7
      src/map/mob.c
  5. 1 1
      src/map/skill.c

+ 6 - 0
Changelog-SVN.txt

@@ -1,5 +1,11 @@
 Date	Added
 
+03/01
+        * Fixed /resetstate /resetskill being unuseable at all [celest]
+        * Fixed /mm /mapmove being useable by all players [celest]
+        * Fixed some compile errors in mob_once_spawn [celest]
+        * Corrected a typo in Chemical Protection skills, thanks to holyfork [celest]
+
 02/28
         * Fixed SQL Castle saving bugs [Lupus]
         * Corrected Tiger Fist, Chain Crush, and Palm Push Strike damage, thanks to

+ 1 - 0
src/map/atcommand.c

@@ -489,6 +489,7 @@ static AtCommandInfo atcommand_info[] = {
 	{ AtCommand_CleanMap,			"@cleanmap",		 0, atcommand_cleanmap },
 	{ AtCommand_NpcTalk,			"@npctalk",			 0,	atcommand_npctalk },
 	{ AtCommand_PetTalk,			"@pettalk",			 0,	atcommand_pettalk },
+	{ AtCommand_ResetState,			"/reset",			40,	NULL },
 
 #ifndef TXT_ONLY // sql-only commands
 	{ AtCommand_CheckMail,			"@checkmail",		 1, atcommand_listmail }, // [Valaris]

+ 16 - 18
src/map/clif.c

@@ -8053,7 +8053,8 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd) {
 //	not needed -- map_name[16]='\0'; will do
 //	memset(map_name, '\0', sizeof(map_name));
 
-	if (battle_config.atc_gmonly != 0 || (pc_isGM(sd) >= get_atcommand_level(AtCommand_MapMove))) {
+	if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) &&
+	    (pc_isGM(sd) >= get_atcommand_level(AtCommand_MapMove))) {
 		memcpy(map_name, RFIFOP(fd,2), 16);
 		map_name[16]='\0';
 		sprintf(output, "%s %d %d", map_name, RFIFOW(fd,18), RFIFOW(fd,20));
@@ -9440,15 +9441,14 @@ void clif_parse_SolveCharName(int fd, struct map_session_data *sd) {
 void clif_parse_ResetChar(int fd, struct map_session_data *sd) {
 	nullpo_retv(sd);
 
-	if (battle_config.atc_gmonly == 0 || pc_isGM(sd)) {
+	if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) &&
+		pc_isGM(sd) >= get_atcommand_level(AtCommand_ResetState)) {
 		switch(RFIFOW(fd,2)){
 		case 0:
-			if (pc_isGM(sd) >= get_atcommand_level(AtCommand_ResetState))
-				pc_resetstate(sd);
+			pc_resetstate(sd);
 			break;
 		case 1:
-			if (pc_isGM(sd) >= get_atcommand_level(AtCommand_ResetState))
-				pc_resetskill(sd);
+			pc_resetskill(sd);
 			break;
 		}
 	}
@@ -9720,13 +9720,12 @@ void clif_parse_PartyChangeOption(int fd, struct map_session_data *sd) {
  */
 void clif_parse_PartyMessage(int fd, struct map_session_data *sd) {
 	nullpo_retv(sd);
-	if (is_charcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != CharCommand_None)
-		return;
-	if (is_atcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != AtCommand_None)
-		return;
-	if(sd->sc_data &&
+
+	if (is_charcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != CharCommand_None ||
+		is_atcommand(fd, sd, (char*)RFIFOP(fd,4), 0) != AtCommand_None ||
+		(sd->sc_data && 
 		(sd->sc_data[SC_BERSERK].timer!=-1 ||	//バーサーク時は会話も不可
-		sd->sc_data[SC_NOCHAT].timer!=-1))		//チャット禁止
+		sd->sc_data[SC_NOCHAT].timer!=-1)))		//チャット禁止
 		return;
 
 	party_send_message(sd, (char*)RFIFOP(fd,4), RFIFOW(fd,2)-4);
@@ -9931,13 +9930,12 @@ void clif_parse_GuildExplusion(int fd,struct map_session_data *sd) {
  */
 void clif_parse_GuildMessage(int fd,struct map_session_data *sd) {
 	nullpo_retv(sd);
-	if (is_charcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != CharCommand_None)
-		return;
-	if (is_atcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != AtCommand_None)
-		return;
-	if(sd->sc_data &&
+
+	if (is_charcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != CharCommand_None ||
+		is_atcommand(fd, sd, (char*)RFIFOP(fd, 4), 0) != AtCommand_None ||
+		(sd->sc_data &&
 		(sd->sc_data[SC_BERSERK].timer!=-1 ||	//バーサーク時は会話も不可
-		sd->sc_data[SC_NOCHAT].timer!=-1))		//チャット禁止
+		sd->sc_data[SC_NOCHAT].timer!=-1)))		//チャット禁止
 		return;
 
 	guild_send_message(sd, (char*)RFIFOP(fd,4), RFIFOW(fd,2)-4);

+ 8 - 7
src/map/mob.c

@@ -121,8 +121,8 @@ int mob_once_spawn(struct map_session_data *sd,char *mapname,
 {
 	struct mob_data *md=NULL;
 	int m,count,lv=255,r=class_;
-	int c,j=0;
-
+	int i, j;
+	
 	if( sd )
 		lv=sd->status.base_level;
 
@@ -135,8 +135,8 @@ int mob_once_spawn(struct map_session_data *sd,char *mapname,
 		return 0;
 
 	if(class_<0){	// ƒ‰ƒ“ƒ_ƒ€‚É�¢Š«
-		int i=0;
-		int j=-class_-1;
+		i = 0;
+		j = -class_-1;
 		int k;
 		if(j>=0 && j<MAX_RANDOMMONSTER){
 			do{
@@ -157,18 +157,19 @@ int mob_once_spawn(struct map_session_data *sd,char *mapname,
 		if (x <= 0 || y <= 0) {
 			if (x <= 0) x = sd->bl.x + rand() % 3 - 1;
 			if (y <= 0) y = sd->bl.y + rand() % 3 - 1;
-			if ((c = map_getcell(m, x, y)) == 1 || c == 5) {
+			if (map_getcell(m, x, y, CELL_CHKNOPASS)) {
 				x = sd->bl.x;
 				y = sd->bl.y;
 			}
 		}
 	} else if (x <= 0 || y <= 0) {
+		i = j = 0;
 		printf("mob_once_spawn: %i at %s x:%i y:%i\n ??\n",class_,map[m].name,x,y); //got idea from Freya [Lupus]
 		do {
 			x = rand() % (map[m].xs - 2) + 1;
 			y = rand() % (map[m].ys - 2) + 1;
-		} while (((c = map_getcell(m, x, y)) == 1 || c == 5) && j++ < 64);
-		if (c == 1 || c == 5) { // not solved?
+		} while ((i=map_getcell(m, x, y, CELL_CHKNOPASS)) && j++ < 64);
+		if (i) { // not solved?
 			x = 0;
 			y = 0;
 		}

+ 1 - 1
src/map/skill.c

@@ -3901,7 +3901,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
 			struct status_change *tsc_data = status_get_sc_data(bl);
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
 			if(tsc_data && tsc_data[scid].timer != -1)
-				status_change_end(bl, SC_STRIPWEAPON, -1 );
+				status_change_end(bl, scid, -1 );
 			status_change_start(bl,SkillStatusChangeTable[skillid],skilllv,0,0,0,skill_get_time(skillid,skilllv),0 );
 		}
 		break;