Ver Fonte

Fixed bugreport:6498 sp respawn restart_sp_rate setting is now fully respected.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16668 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind há 12 anos atrás
pai
commit
74a9a079b7
2 ficheiros alterados com 8 adições e 6 exclusões
  1. 4 5
      src/map/pc.c
  2. 4 1
      src/map/status.c

+ 4 - 5
src/map/pc.c

@@ -395,18 +395,17 @@ unsigned char pc_famerank(int char_id, int job)
 	return 0;
 }
 
-int pc_setrestartvalue(struct map_session_data *sd,int type)
-{
+int pc_setrestartvalue(struct map_session_data *sd,int type) {
 	struct status_data *status, *b_status;
 	nullpo_ret(sd);
 
 	b_status = &sd->base_status;
 	status = &sd->battle_status;
 
-	if (type&1)
-	{	//Normal resurrection
+	if (type&1) {	//Normal resurrection
 		status->hp = 1; //Otherwise status_heal may fail if dead.
-		status_heal(&sd->bl, b_status->hp, b_status->sp>status->sp?b_status->sp-status->sp:0, 1);
+		status_heal(&sd->bl, b_status->hp, 0, 1);
+		status_set_sp(&sd->bl, b_status->sp, 1);
 	} else { //Just for saving on the char-server (with values as if respawned)
 		sd->status.hp = b_status->hp;
 		sd->status.sp = (status->sp < b_status->sp)?b_status->sp:status->sp;

+ 4 - 1
src/map/status.c

@@ -2784,6 +2784,9 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 			status->hp = 1;
 
 		status->sp = status->max_sp * battle_config.restart_sp_rate /100;
+		
+		if( !status->sp ) /* the minimum for the respawn setting is SP:1 */
+			status->sp = 1;
 	}
 
 // ----- MISC CALCULATION -----
@@ -3077,7 +3080,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
 	}
 	
 	calculating = 0;
-
+	
 	return 0;
 }