From 1382b22cd68bf90f2adc4ae13187416982f9a12f Mon Sep 17 00:00:00 2001
From: ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>
Date: Fri, 14 Dec 2007 23:38:11 +0000
Subject: Guardian hp handling code removal (see bugreport:342) - removed
 guardian hp from the castle data structure, database, savefiles and various
 script functions (use upgrade_svn11914.sql) - removed guardian hp calculation
 and manipulation from the castle manager npc, now the hp values are updated
 by the server itself (glitch: when castle defense changes, all guardians are
 healed to full) - tweaked script function 'guardianinfo' to provide some data
 needed by the manager npc (currently available are hp, maxhp and visibility);
 also, it doesn't need a player attached to execute anymore The whole thing is
 experimental, use at your own risk (seems to work though...)

git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11915 54d463be-8e91-2dee-dedb-b68131a5f0ec
---
 src/char/int_guild.c | 133 +++++++++++++--------------------------------------
 1 file changed, 33 insertions(+), 100 deletions(-)

(limited to 'src/char')

diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 7112666ce..1e47d9fb2 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -309,13 +309,11 @@ int inter_guildcastle_tostr(char *str, struct guild_castle *gc)
 {
 	int len;
 
-	len = sprintf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",	// added Guardian HP [Valaris]
+	len = sprintf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
 	              gc->castle_id, gc->guild_id, gc->economy, gc->defense, gc->triggerE,
 	              gc->triggerD, gc->nextTime, gc->payTime, gc->createTime, gc->visibleC,
 	              gc->guardian[0].visible, gc->guardian[1].visible, gc->guardian[2].visible, gc->guardian[3].visible,
-					  gc->guardian[4].visible, gc->guardian[5].visible, gc->guardian[6].visible, gc->guardian[7].visible,
-					  gc->guardian[0].hp, gc->guardian[1].hp, gc->guardian[2].hp, gc->guardian[3].hp,
-					  gc->guardian[4].hp, gc->guardian[5].hp, gc->guardian[6].hp, gc->guardian[7].hp);
+	              gc->guardian[4].visible, gc->guardian[5].visible, gc->guardian[6].visible, gc->guardian[7].visible);
 
 	return 0;
 }
@@ -324,77 +322,40 @@ int inter_guildcastle_tostr(char *str, struct guild_castle *gc)
 // �M���h��f�[�^�̕����񂩂�̕ϊ�
 int inter_guildcastle_fromstr(char *str, struct guild_castle *gc)
 {
-	int tmp_int[26];
+	int castleid, guildid, economy, defense, triggerE, triggerD, nextTime, payTime, createTime, visibleC;
+	int guardian[8];
+	int dummy;
 
 	memset(gc, 0, sizeof(struct guild_castle));
-	// new structure of guild castle
-	if (sscanf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
-	           &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3], &tmp_int[4], &tmp_int[5], &tmp_int[6],
-	           &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13],
-	           &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], &tmp_int[19], &tmp_int[20],
-	           &tmp_int[21], &tmp_int[22], &tmp_int[23], &tmp_int[24], &tmp_int[25]) == 26) {
-		gc->castle_id = tmp_int[0];
-		gc->guild_id = tmp_int[1];
-		gc->economy = tmp_int[2];
-		gc->defense = tmp_int[3];
-		gc->triggerE = tmp_int[4];
-		gc->triggerD = tmp_int[5];
-		gc->nextTime = tmp_int[6];
-		gc->payTime = tmp_int[7];
-		gc->createTime = tmp_int[8];
-		gc->visibleC = tmp_int[9];
-		gc->guardian[0].visible = tmp_int[10];
-		gc->guardian[1].visible = tmp_int[11];
-		gc->guardian[2].visible = tmp_int[12];
-		gc->guardian[3].visible = tmp_int[13];
-		gc->guardian[4].visible = tmp_int[14];
-		gc->guardian[5].visible = tmp_int[15];
-		gc->guardian[6].visible = tmp_int[16];
-		gc->guardian[7].visible = tmp_int[17];
-		gc->guardian[0].hp = tmp_int[18];
-		gc->guardian[1].hp = tmp_int[19];
-		gc->guardian[2].hp = tmp_int[20];
-		gc->guardian[3].hp = tmp_int[21];
-		gc->guardian[4].hp = tmp_int[22];
-		gc->guardian[5].hp = tmp_int[23];
-		gc->guardian[6].hp = tmp_int[24];
-		gc->guardian[7].hp = tmp_int[25];	// end additions [Valaris]
-	// old structure of guild castle
-	} else if (sscanf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
-	                  &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3], &tmp_int[4], &tmp_int[5], &tmp_int[6],
-	                  &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13],
-	                  &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17]) == 18) {
-		int i;
-		
-		gc->castle_id = tmp_int[0];
-		gc->guild_id = tmp_int[1];
-		gc->economy = tmp_int[2];
-		gc->defense = tmp_int[3];
-		gc->triggerE = tmp_int[4];
-		gc->triggerD = tmp_int[5];
-		gc->nextTime = tmp_int[6];
-		gc->payTime = tmp_int[7];
-		gc->createTime = tmp_int[8];
-		gc->visibleC = tmp_int[9];
-		gc->guardian[0].visible = tmp_int[10];
-		gc->guardian[1].visible = tmp_int[11];
-		gc->guardian[2].visible = tmp_int[12];
-		gc->guardian[3].visible = tmp_int[13];
-		gc->guardian[4].visible = tmp_int[14];
-		gc->guardian[5].visible = tmp_int[15];
-		gc->guardian[6].visible = tmp_int[16];
-		gc->guardian[7].visible = tmp_int[17];
-
-		for (i = 0; i < MAX_GUARDIANS; i++)
-		{
-			if (gc->guardian[i].visible)
-				gc->guardian[i].hp = 15000 + 2000 * gc->defense;
-			else
-				gc->guardian[i].hp = 0;
-		}
-	} else {
+	// structure of guild castle with the guardian hp included
+	if( sscanf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
+		&castleid, &guildid, &economy, &defense, &triggerE, &triggerD, &nextTime, &payTime, &createTime, &visibleC,
+		&guardian[0], &guardian[1], &guardian[2], &guardian[3], &guardian[4], &guardian[5], &guardian[6], &guardian[7],
+		&dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy) != 26 )
+	// structure of guild castle without the hps (current one)
+	if( sscanf(str, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
+		&castleid, &guildid, &economy, &defense, &triggerE, &triggerD, &nextTime, &payTime, &createTime, &visibleC,
+		&guardian[0], &guardian[1], &guardian[2], &guardian[3], &guardian[4], &guardian[5], &guardian[6], &guardian[7]) != 18 )
 		return 1;
-	}
+
+	gc->castle_id = castleid;
+	gc->guild_id = guildid;
+	gc->economy = economy;
+	gc->defense = defense;
+	gc->triggerE = triggerE;
+	gc->triggerD = triggerD;
+	gc->nextTime = nextTime;
+	gc->payTime = payTime;
+	gc->createTime = createTime;
+	gc->visibleC = visibleC;
+	gc->guardian[0].visible = guardian[0];
+	gc->guardian[1].visible = guardian[1];
+	gc->guardian[2].visible = guardian[2];
+	gc->guardian[3].visible = guardian[3];
+	gc->guardian[4].visible = guardian[4];
+	gc->guardian[5].visible = guardian[5];
+	gc->guardian[6].visible = guardian[6];
+	gc->guardian[7].visible = guardian[7];
 
 	return 0;
 }
@@ -964,15 +925,6 @@ int mapif_guild_castle_datasave(int castle_id, int index, int value)
 	return 0;
 }
 
-int mapif_guild_castle_alldataload_sub(DBKey key, void *data, va_list ap)
-{
-	int fd = va_arg(ap, int);
-	int *p = va_arg(ap, int*);
-
-
-	return 0;
-}
-
 int mapif_guild_castle_alldataload(int fd)
 {
 	DBIterator* iter;
@@ -1498,16 +1450,6 @@ int mapif_parse_GuildCastleDataLoad(int fd, int castle_id, int index)
 	case 16:
 	case 17:
 		return mapif_guild_castle_dataload(gc->castle_id, index, gc->guardian[index-10].visible);
-	case 18:
-	case 19:
-	case 20:
-	case 21:
-	case 22:
-	case 23:
-	case 24:
-	case 25:
-		return mapif_guild_castle_dataload(gc->castle_id, index, gc->guardian[index-18].hp);	// end additions [Valaris]
-
 	default:
 		ShowError("mapif_parse_GuildCastleDataLoad ERROR!! (Not found index=%d)\n", index);
 		return 0;
@@ -1555,15 +1497,6 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
 	case 16:
 	case 17:
 		gc->guardian[index-10].visible = value; break;
-	case 18:
-	case 19:
-	case 20:
-	case 21:
-	case 22:
-	case 23:
-	case 24:
-	case 25:
-		gc->guardian[index-18].hp = value; break;	// end additions [Valaris]
 	default:
 		ShowError("mapif_parse_GuildCastleDataSave ERROR!! (Not found index=%d)\n", index);
 		return 0;
-- 
cgit v1.2.3-70-g09d2