Bladeren bron

more updates

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@590 54d463be-8e91-2dee-dedb-b68131a5f0ec
amber 20 jaren geleden
bovenliggende
commit
589f92ecd9
6 gewijzigde bestanden met toevoegingen van 49 en 3 verwijderingen
  1. 3 0
      Changelog.txt
  2. 1 0
      Makefile
  3. 2 1
      conf-tmpl/battle_athena.conf
  4. 41 1
      src/map/atcommand.c
  5. 1 0
      src/map/atcommand.h
  6. 1 1
      src/map/pc.c

+ 3 - 0
Changelog.txt

@@ -1,5 +1,8 @@
 Date	Added
 12/17
+	* Fixed skill #301 causing crashes [MouseJstr]
+	* Fixed documentation error on gm_skills_unconditionl [MouseJstr]
+	* added @grind test command.. only for testing [MouseJstr]
 	* Added clearweather to the atcommand configuration file. [nsstrunks]
 12/16
         * Added a fix for AFM loading, thanks to Pete [celest]

+ 1 - 0
Makefile

@@ -1,5 +1,6 @@
 # $Id: Makefile 158 2004-10-01 03:45:15Z PoW $
 
+# CC = /usr/local/bin/gcc -fbounds-checking -pipe
 CC = gcc -pipe
 PACKETDEF = -DPACKETVER=6 -DNEW_006b -DSO_REUSEPORT
 #PACKETDEF = -DPACKETVER=5 -DNEW_006b

+ 2 - 1
conf-tmpl/battle_athena.conf

@@ -208,7 +208,8 @@ gm_all_skill_add_abra: no
 // [GM] Can equip anything? (No or minimum GM level, can cause client errors.)
 gm_all_equipment: no
 
-// [GM] Raise skills unconditionally, that is, put points in to a skill not in thier jobs skill tree? (no or minimum gm level)
+// [GM] Can use skills without meeting the required conditions (no 
+//   blue gems?  no problem
 gm_skill_unconditional: no
 
 // Can a normal player by-pass the skill tree? (Note 1)

+ 41 - 1
src/map/atcommand.c

@@ -233,6 +233,8 @@ ACMD_FUNC(marry); // by MouseJstr
 ACMD_FUNC(divorce); // by MouseJstr
 ACMD_FUNC(rings); // by MouseJstr
 
+ACMD_FUNC(grind); // by MouseJstr
+
 /*==========================================
  *AtCommandInfo atcommand_info[]�\‘¢‘̂̒è‹`
  *------------------------------------------
@@ -483,6 +485,7 @@ static AtCommandInfo atcommand_info[] = {
 	{ AtCommand_Marry,		"@marry",	40, atcommand_marry }, // [MouseJstr]
 	{ AtCommand_Divorce,		"@divorce",	40, atcommand_divorce }, // [MouseJstr]
 	{ AtCommand_Rings,		"@rings",	40, atcommand_rings }, // [MouseJstr]
+	{ AtCommand_Grind,		"@grind",	40, atcommand_grind }, // [MouseJstr]
 
 // add new commands before this line
 	{ AtCommand_Unknown,             NULL,                1, NULL }
@@ -2160,7 +2163,6 @@ int atcommand_alive(
 	return 0;
 	} 
 	return -1;
-	
 }
 
 /*==========================================
@@ -7494,6 +7496,44 @@ atcommand_rings(const int fd, struct map_session_data* sd,
   return 0;
 }
 
+/*==========================================
+ * @grind by [MouseJstr]
+ *------------------------------------------
+ */
+int
+atcommand_grind(const int fd, struct map_session_data* sd,
+	const char* command, const char* message)
+{
+	struct map_session_data *pl_sd = NULL;
+	int skillnum;
+	int inf;
+	char target[255];
+	nullpo_retr(-1, sd);
+
+	if (!message || !*message)
+		return -1;
+	if(sscanf(message, "%s", target) != 1) {
+		clif_displaymessage(fd, "Usage: @grind  <target>");
+		return -1;
+	}
+	if((pl_sd=map_nick2sd(target)) == NULL) 
+		return -1;
+
+	for (skillnum = 1; skillnum < 500; skillnum++) {
+		sd->status.sp = sd->status.max_sp;
+		atcommand_alive(fd, sd, command, message);
+
+		inf = skill_get_inf(skillnum);
+
+		if ((inf == 2) || (inf == 1))
+			skill_use_pos(sd, pl_sd->bl.x+5, pl_sd->bl.y+5, skillnum, 1);
+		else
+			skill_use_id(sd, pl_sd->bl.id, skillnum, 1);
+	}
+
+	return 0;
+}
+
 /*==========================================
  * It is made to rain.
  *------------------------------------------

+ 1 - 0
src/map/atcommand.h

@@ -216,6 +216,7 @@ enum AtCommandType {
 	AtCommand_Marry, // by MouseJstr
 	AtCommand_Divorce, // by MouseJstr
 	AtCommand_Rings, // by MouseJstr
+	AtCommand_Grind, // by MouseJstr
 	
 	// end
 	AtCommand_Unknown,

+ 1 - 1
src/map/pc.c

@@ -5408,7 +5408,7 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage)
 	if (sd->sc_data) {
 		if (sd->sc_data[SC_ENDURE].timer == -1 && sd->sc_data[SC_BERSERK].timer == -1 && !sd->special_state.infinite_endure)
 			pc_stop_walking(sd,3);
-		else if(sd->sc_data[SC_ENDURE].timer != -1 && src->type==BL_MOB && (--sd->sc_data[SC_ENDURE].val2) <= 0)
+		else if(sd->sc_data[SC_ENDURE].timer != -1 && (src != NULL && src->type==BL_MOB) && (--sd->sc_data[SC_ENDURE].val2) <= 0)
 			skill_status_change_end(&sd->bl, SC_ENDURE, -1);
 	} else
 		pc_stop_walking(sd,3);