Browse Source

- Mercenary data structures.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13110 54d463be-8e91-2dee-dedb-b68131a5f0ec
zephyrus 16 years ago
parent
commit
4ca3bd6ce3
5 changed files with 44 additions and 3 deletions
  1. 17 1
      src/common/mmo.h
  2. 2 0
      src/map/map.h
  3. 11 1
      src/map/mercenary.c
  4. 13 1
      src/map/mercenary.h
  5. 1 0
      src/map/pc.h

+ 17 - 1
src/common/mmo.h

@@ -107,6 +107,8 @@
 //Mercenary System
 #define MC_SKILLBASE 8201
 #define MAX_MERCSKILL 37
+#define MAX_MERCENARY_CLASS 30
+#define MAX_MERCENARY_SKILL 4
 
 enum item_types {
 	IT_HEALING = 0,
@@ -233,6 +235,15 @@ struct s_homunculus {	//[orn]
 	int luk ;
 };
 
+struct s_mercenary {
+	int mercenary_id;
+	int char_id;
+	short class_;
+	int hp, sp;
+	unsigned int kill_count;
+	unsigned int remain_life_time;
+};
+
 struct s_friend {
 	int account_id;
 	int char_id;
@@ -265,9 +276,14 @@ struct mmo_charstatus {
 	short manner;
 	unsigned char karma;
 	short hair,hair_color,clothes_color;
-	int party_id,guild_id,pet_id,hom_id;
+	int party_id,guild_id,pet_id,hom_id,mer_id;
 	int fame;
 
+	// Mercenary Guilds Rank
+	int arch_loyalty, arch_count;
+	int spear_loyalty, spear_count;
+	int sword_loyalty, sword_count;
+
 	short weapon; // enum weapon_type
 	short shield; // view-id
 	short head_top,head_mid,head_bottom;

+ 2 - 0
src/map/map.h

@@ -176,6 +176,7 @@ enum bl_type {
 	BL_SKILL = 0x020,
 	BL_NPC   = 0x040,
 	BL_CHAT  = 0x080,
+	BL_MER   = 0x100,
 
 	BL_ALL   = 0xFFF,
 };
@@ -631,6 +632,7 @@ typedef struct chat_data        TBL_CHAT;
 typedef struct skill_unit       TBL_SKILL;
 typedef struct pet_data         TBL_PET;
 typedef struct homun_data       TBL_HOM;
+typedef struct mercenary_data   TBL_MER;
 
 #define BL_CAST(type_, bl) \
 	( ((bl) == (struct block_list*)NULL || (bl)->type != (type_)) ? (T ## type_ *)NULL : (T ## type_ *)(bl) )

+ 11 - 1
src/map/mercenary.c

@@ -37,12 +37,22 @@
 #include <string.h>
 #include <math.h>
 
-
 //Better equiprobability than rand()% [orn]
 #define rand(a, b) (a+(int) ((float)(b-a+1)*rand()/(RAND_MAX+1.0)))
 
+/*==========================================
+ * Mercenary's System
+ *------------------------------------------*/
 struct s_mercenary_db mercenary_db[MAX_MERCENARY_CLASS]; // Mercenary Database
 
+int merc_create(struct map_session_data *sd, int class_)
+{
+	return 1;
+}
+
+/*==========================================
+ * Homunculus's System
+ *------------------------------------------*/
 struct s_homunculus_db homunculus_db[MAX_HOMUNCULUS_CLASS];	//[orn]
 struct skill_tree_entry hskill_tree[MAX_HOMUNCULUS_CLASS][MAX_SKILL_TREE];
 

+ 13 - 1
src/map/mercenary.h

@@ -23,6 +23,18 @@ struct s_mercenary_db {
 
 extern struct s_mercenary_db mercenary_db[MAX_MERCENARY_CLASS];
 
+struct mercenary_data {
+	struct block_list bl;
+	struct unit_data ud;
+	struct view_data *vd;
+	struct status_change *base_status, battle_status;
+	struct status_change sc;
+	struct regen_data regen;
+
+	struct s_mercenary_db *db;
+	struct s_mercenary mercenary;
+};
+
 // Homunculus DB Structures
 // ===================================
 
@@ -58,7 +70,7 @@ struct homun_data {
 	struct status_change sc;
 	struct regen_data regen;
 	struct s_homunculus_db *homunculusDB;	//[orn]
-	struct s_homunculus homunculus ;	//[orn]
+	struct s_homunculus homunculus;	//[orn]
 
 	struct map_session_data *master; //pointer back to its master
 	int hungry_timer;	//[orn]

+ 1 - 0
src/map/pc.h

@@ -313,6 +313,7 @@ struct map_session_data {
 
 	struct pet_data *pd;
 	struct homun_data *hd;	// [blackhole89]
+	struct mercenary_data *md;
 
 	struct{
 		int  m; //-1 - none, other: map index corresponding to map name.