Ver código fonte

* Moved duel code into a separate file.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14785 54d463be-8e91-2dee-dedb-b68131a5f0ec
ai4rei 14 anos atrás
pai
commit
a94aea7582

+ 1 - 0
Changelog-Trunk.txt

@@ -1,6 +1,7 @@
 Date	Added
 
 2011/04/09
+	* Moved duel code into a separate file. [Ai4rei]
 	* Added *.opt (VS6 workspace cache file) to svn:ignore. [Ai4rei]
 	* Changed pc_jobid2mapid to use a 1:1 mapping which is less prone to errors and faster than the previous method (follow up to r14755). [Ai4rei]
 2011/04/08

+ 2 - 2
src/map/Makefile.in

@@ -18,7 +18,7 @@ MAP_OBJ = map.o chrif.o clif.o pc.o status.o npc.o \
 	storage.o skill.o atcommand.o battle.o battleground.o \
 	intif.o trade.o party.o vending.o guild.o pet.o \
 	log.o mail.o date.o unit.o homunculus.o mercenary.o quest.o instance.o \
-	buyingstore.o searchstore.o
+	buyingstore.o searchstore.o duel.o
 MAP_TXT_OBJ = $(MAP_OBJ:%=obj_txt/%) \
 	obj_txt/mapreg_txt.o
 MAP_SQL_OBJ = $(MAP_OBJ:%=obj_sql/%) \
@@ -28,7 +28,7 @@ MAP_H = map.h chrif.h clif.h pc.h status.h npc.h \
 	storage.h skill.h atcommand.h battle.h battleground.h \
 	intif.h trade.h party.h vending.h guild.h pet.h \
 	log.h mail.h date.h unit.h homunculus.h mercenary.h quest.h instance.h mapreg.h \
-	buyingstore.h searchstore.h
+	buyingstore.h searchstore.h duel.h
 
 HAVE_MYSQL=@HAVE_MYSQL@
 ifeq ($(HAVE_MYSQL),yes)

+ 1 - 0
src/map/atcommand.c

@@ -17,6 +17,7 @@
 #include "chat.h"
 #include "clif.h"
 #include "chrif.h"
+#include "duel.h"
 #include "intif.h"
 #include "itemdb.h"
 #include "log.h"

+ 189 - 0
src/map/duel.c

@@ -0,0 +1,189 @@
+// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
+// For more information, see LICENCE in the main folder
+
+#include "../common/cbasetypes.h"
+
+#include "atcommand.h"  // msg_txt
+#include "clif.h"
+#include "duel.h"
+#include "pc.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+struct duel duel_list[MAX_DUEL];
+int duel_count = 0;
+
+/*==========================================
+ * Duel organizing functions [LuzZza]
+ *------------------------------------------*/
+void duel_savetime(struct map_session_data* sd)
+{
+	time_t timer;
+	struct tm *t;
+	
+	time(&timer);
+	t = localtime(&timer);
+	
+	pc_setglobalreg(sd, "PC_LAST_DUEL_TIME", t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);	
+	return;
+}
+
+int duel_checktime(struct map_session_data* sd)
+{
+	int diff;
+	time_t timer;
+	struct tm *t;
+	
+	time(&timer);
+    t = localtime(&timer);
+	
+	diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, "PC_LAST_DUEL_TIME");
+	
+	return !(diff >= 0 && diff < battle_config.duel_time_interval);
+}
+static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
+{
+	struct map_session_data *ssd = va_arg(va, struct map_session_data*);
+	int *p = va_arg(va, int*);
+	char output[256];
+
+	if (sd->duel_group != ssd->duel_group) return 0;
+	
+	sprintf(output, "      %d. %s", ++(*p), sd->status.name);
+	clif_disp_onlyself(ssd, output, strlen(output));
+	return 1;
+}
+
+int duel_showinfo(const unsigned int did, struct map_session_data* sd)
+{
+	int p=0;
+	char output[256];
+
+	if(duel_list[did].max_players_limit > 0)
+		sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --"
+			did, duel_count,
+			duel_list[did].members_count,
+			duel_list[did].members_count + duel_list[did].invites_count,
+			duel_list[did].max_players_limit);
+	else
+		sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --"
+			did, duel_count,
+			duel_list[did].members_count,
+			duel_list[did].members_count + duel_list[did].invites_count);
+
+	clif_disp_onlyself(sd, output, strlen(output));
+	map_foreachpc(duel_showinfo_sub, sd, &p);
+	return 0;
+}
+
+int duel_create(struct map_session_data* sd, const unsigned int maxpl)
+{
+	int i=1;
+	char output[256];
+	
+	while(duel_list[i].members_count > 0 && i < MAX_DUEL) i++;
+	if(i == MAX_DUEL) return 0;
+	
+	duel_count++;
+	sd->duel_group = i;
+	duel_list[i].members_count++;
+	duel_list[i].invites_count = 0;
+	duel_list[i].max_players_limit = maxpl;
+	
+	strcpy(output, msg_txt(372)); // " -- Duel has been created (@invite/@leave) --"
+	clif_disp_onlyself(sd, output, strlen(output));
+	
+	clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
+	//clif_misceffect2(&sd->bl, 159);
+	return i;
+}
+
+int duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd)
+{
+	char output[256];
+
+	// " -- Player %s invites %s to duel --"
+	sprintf(output, msg_txt(373), sd->status.name, target_sd->status.name);
+	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
+
+	target_sd->duel_invite = did;
+	duel_list[did].invites_count++;
+	
+	// "Blue -- Player %s invites you to PVP duel (@accept/@reject) --"
+	sprintf(output, msg_txt(374), sd->status.name);
+	clif_broadcast((struct block_list *)target_sd, output, strlen(output)+1, 0x10, SELF);
+	return 0;
+}
+
+static int duel_leave_sub(struct map_session_data* sd, va_list va)
+{
+	int did = va_arg(va, int);
+	if (sd->duel_invite == did)
+		sd->duel_invite = 0;
+	return 0;
+}
+
+int duel_leave(const unsigned int did, struct map_session_data* sd)
+{
+	char output[256];
+	
+	// " <- Player %s has left duel --"
+	sprintf(output, msg_txt(375), sd->status.name);
+	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
+	
+	duel_list[did].members_count--;
+	
+	if(duel_list[did].members_count == 0) {
+		map_foreachpc(duel_leave_sub, did); 
+		duel_count--;
+	}
+	
+	sd->duel_group = 0;
+	duel_savetime(sd);
+	clif_map_property(sd, MAPPROPERTY_NOTHING);
+	return 0;
+}
+
+int duel_accept(const unsigned int did, struct map_session_data* sd)
+{
+	char output[256];
+	
+	duel_list[did].members_count++;
+	sd->duel_group = sd->duel_invite;
+	duel_list[did].invites_count--;
+	sd->duel_invite = 0;
+	
+	// " -> Player %s has accepted duel --"
+	sprintf(output, msg_txt(376), sd->status.name);
+	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
+
+	clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
+	//clif_misceffect2(&sd->bl, 159);
+	return 0;
+}
+
+int duel_reject(const unsigned int did, struct map_session_data* sd)
+{
+	char output[256];
+	
+	// " -- Player %s has rejected duel --"
+	sprintf(output, msg_txt(377), sd->status.name);
+	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
+	
+	duel_list[did].invites_count--;
+	sd->duel_invite = 0;
+	return 0;
+}
+
+void do_final_duel(void)
+{
+}
+
+int do_init_duel(void)
+{
+	memset(&duel_list[0], 0, sizeof(duel_list));
+	return 0;
+}

+ 29 - 0
src/map/duel.h

@@ -0,0 +1,29 @@
+// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
+// For more information, see LICENCE in the main folder
+
+#ifndef _DUEL_H_
+#define _DUEL_H_
+
+struct duel {
+	int members_count;
+	int invites_count;
+	int max_players_limit;
+};
+
+#define MAX_DUEL 1024
+extern struct duel duel_list[MAX_DUEL];
+extern int duel_count;
+
+//Duel functions // [LuzZza]
+int duel_create(struct map_session_data* sd, const unsigned int maxpl);
+int duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd);
+int duel_accept(const unsigned int did, struct map_session_data* sd);
+int duel_reject(const unsigned int did, struct map_session_data* sd);
+int duel_leave(const unsigned int did, struct map_session_data* sd);
+int duel_showinfo(const unsigned int did, struct map_session_data* sd);
+int duel_checktime(struct map_session_data* sd);
+
+int do_init_duel(void);
+void do_final_duel(void);
+
+#endif /* _DUEL_H_ */

+ 3 - 0
src/map/map.c

@@ -17,6 +17,7 @@
 #include "path.h"
 #include "chrif.h"
 #include "clif.h"
+#include "duel.h"
 #include "intif.h"
 #include "npc.h"
 #include "pc.h"
@@ -3438,6 +3439,7 @@ void do_final(void)
 	do_final_status();
 	do_final_unit();
 	do_final_battleground();
+	do_final_duel();
 	
 	map_db->destroy(map_db, map_db_final);
 	
@@ -3673,6 +3675,7 @@ int do_init(int argc, char *argv[])
 	do_init_npc();
 	do_init_unit();
 	do_init_battleground();
+	do_init_duel();
 
 	npc_event_do_oninit();	// npc‚ÌOnInitƒCƒxƒ“ƒg?�s
 

+ 1 - 167
src/map/pc.c

@@ -18,6 +18,7 @@
 #include "chrif.h"
 #include "clif.h"
 #include "date.h" // is_day_of_*()
+#include "duel.h"
 #include "intif.h"
 #include "itemdb.h"
 #include "log.h"
@@ -63,9 +64,6 @@ static unsigned short equip_pos[EQI_MAX]={EQP_ACC_L,EQP_ACC_R,EQP_SHOES,EQP_GARM
 #define MOTD_LINE_SIZE 128
 static char motd_text[MOTD_LINE_SIZE][CHAT_SIZE_MAX]; // Message of the day buffer [Valaris]
 
-struct duel duel_list[MAX_DUEL];
-int duel_count = 0;
-
 //Links related info to the sd->hate_mob[]/sd->feel_map[] entries
 const struct sg_data sg_info[MAX_PC_FEELHATE] = {
 		{ SG_SUN_ANGER, SG_SUN_BLESS, SG_SUN_COMFORT, "PC_FEEL_SUN", "PC_HATE_MOB_SUN", is_day_of_sun },
@@ -7735,168 +7733,6 @@ void pc_setstand(struct map_session_data *sd){
 	sd->state.dead_sit = sd->vd.dead_sit = 0;
 }
 
-/*==========================================
- * Duel organizing functions [LuzZza]
- *------------------------------------------*/
-void duel_savetime(struct map_session_data* sd)
-{
-	time_t timer;
-	struct tm *t;
-	
-	time(&timer);
-	t = localtime(&timer);
-	
-	pc_setglobalreg(sd, "PC_LAST_DUEL_TIME", t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min);	
-	return;
-}
-
-int duel_checktime(struct map_session_data* sd)
-{
-	int diff;
-	time_t timer;
-	struct tm *t;
-	
-	time(&timer);
-    t = localtime(&timer);
-	
-	diff = t->tm_mday*24*60 + t->tm_hour*60 + t->tm_min - pc_readglobalreg(sd, "PC_LAST_DUEL_TIME");
-	
-	return !(diff >= 0 && diff < battle_config.duel_time_interval);
-}
-static int duel_showinfo_sub(struct map_session_data* sd, va_list va)
-{
-	struct map_session_data *ssd = va_arg(va, struct map_session_data*);
-	int *p = va_arg(va, int*);
-	char output[256];
-
-	if (sd->duel_group != ssd->duel_group) return 0;
-	
-	sprintf(output, "      %d. %s", ++(*p), sd->status.name);
-	clif_disp_onlyself(ssd, output, strlen(output));
-	return 1;
-}
-
-int duel_showinfo(const unsigned int did, struct map_session_data* sd)
-{
-	int p=0;
-	char output[256];
-
-	if(duel_list[did].max_players_limit > 0)
-		sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --"
-			did, duel_count,
-			duel_list[did].members_count,
-			duel_list[did].members_count + duel_list[did].invites_count,
-			duel_list[did].max_players_limit);
-	else
-		sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --"
-			did, duel_count,
-			duel_list[did].members_count,
-			duel_list[did].members_count + duel_list[did].invites_count);
-
-	clif_disp_onlyself(sd, output, strlen(output));
-	map_foreachpc(duel_showinfo_sub, sd, &p);
-	return 0;
-}
-
-int duel_create(struct map_session_data* sd, const unsigned int maxpl)
-{
-	int i=1;
-	char output[256];
-	
-	while(duel_list[i].members_count > 0 && i < MAX_DUEL) i++;
-	if(i == MAX_DUEL) return 0;
-	
-	duel_count++;
-	sd->duel_group = i;
-	duel_list[i].members_count++;
-	duel_list[i].invites_count = 0;
-	duel_list[i].max_players_limit = maxpl;
-	
-	strcpy(output, msg_txt(372)); // " -- Duel has been created (@invite/@leave) --"
-	clif_disp_onlyself(sd, output, strlen(output));
-	
-	clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
-	//clif_misceffect2(&sd->bl, 159);
-	return i;
-}
-
-int duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd)
-{
-	char output[256];
-
-	// " -- Player %s invites %s to duel --"
-	sprintf(output, msg_txt(373), sd->status.name, target_sd->status.name);
-	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
-
-	target_sd->duel_invite = did;
-	duel_list[did].invites_count++;
-	
-	// "Blue -- Player %s invites you to PVP duel (@accept/@reject) --"
-	sprintf(output, msg_txt(374), sd->status.name);
-	clif_broadcast((struct block_list *)target_sd, output, strlen(output)+1, 0x10, SELF);
-	return 0;
-}
-
-static int duel_leave_sub(struct map_session_data* sd, va_list va)
-{
-	int did = va_arg(va, int);
-	if (sd->duel_invite == did)
-		sd->duel_invite = 0;
-	return 0;
-}
-
-int duel_leave(const unsigned int did, struct map_session_data* sd)
-{
-	char output[256];
-	
-	// " <- Player %s has left duel --"
-	sprintf(output, msg_txt(375), sd->status.name);
-	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
-	
-	duel_list[did].members_count--;
-	
-	if(duel_list[did].members_count == 0) {
-		map_foreachpc(duel_leave_sub, did); 
-		duel_count--;
-	}
-	
-	sd->duel_group = 0;
-	duel_savetime(sd);
-	clif_map_property(sd, MAPPROPERTY_NOTHING);
-	return 0;
-}
-
-int duel_accept(const unsigned int did, struct map_session_data* sd)
-{
-	char output[256];
-	
-	duel_list[did].members_count++;
-	sd->duel_group = sd->duel_invite;
-	duel_list[did].invites_count--;
-	sd->duel_invite = 0;
-	
-	// " -> Player %s has accepted duel --"
-	sprintf(output, msg_txt(376), sd->status.name);
-	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
-
-	clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
-	//clif_misceffect2(&sd->bl, 159);
-	return 0;
-}
-
-int duel_reject(const unsigned int did, struct map_session_data* sd)
-{
-	char output[256];
-	
-	// " -- Player %s has rejected duel --"
-	sprintf(output, msg_txt(377), sd->status.name);
-	clif_disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
-	
-	duel_list[did].invites_count--;
-	sd->duel_invite = 0;
-	return 0;
-}
-
 int pc_split_str(char *str,char **val,int num)
 {
 	int i;
@@ -8258,8 +8094,6 @@ int do_init_pc(void)
 	pc_readdb();
 	pc_read_motd(); // Read MOTD [Valaris]
 
-	memset(&duel_list[0], 0, sizeof(duel_list));
-
 	add_timer_func_list(pc_invincible_timer, "pc_invincible_timer");
 	add_timer_func_list(pc_eventtimer, "pc_eventtimer");
 	add_timer_func_list(pc_inventory_rental_end, "pc_inventory_rental_end");

+ 0 - 19
src/map/pc.h

@@ -510,16 +510,6 @@ enum equip_index {
 	EQI_MAX
 };
 
-struct duel {
-	int members_count;
-	int invites_count;
-	int max_players_limit;
-};
-
-#define MAX_DUEL 1024
-extern struct duel duel_list[MAX_DUEL];
-extern int duel_count;
-
 #define pc_setdead(sd)        ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 1 )
 #define pc_setsit(sd)         ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 2 )
 #define pc_isdead(sd)         ( (sd)->state.dead_sit == 1 )
@@ -778,15 +768,6 @@ void pc_inventory_rentals(struct map_session_data *sd);
 int pc_inventory_rental_clear(struct map_session_data *sd);
 void pc_inventory_rental_add(struct map_session_data *sd, int seconds);
 
-//Duel functions // [LuzZza]
-int duel_create(struct map_session_data* sd, const unsigned int maxpl);
-int duel_invite(const unsigned int did, struct map_session_data* sd, struct map_session_data* target_sd);
-int duel_accept(const unsigned int did, struct map_session_data* sd);
-int duel_reject(const unsigned int did, struct map_session_data* sd);
-int duel_leave(const unsigned int did, struct map_session_data* sd);
-int duel_showinfo(const unsigned int did, struct map_session_data* sd);
-int duel_checktime(struct map_session_data* sd);
-
 int pc_read_motd(void); // [Valaris]
 int pc_disguise(struct map_session_data *sd, int class_);
 

+ 1 - 0
src/map/unit.c

@@ -17,6 +17,7 @@
 #include "mercenary.h"
 #include "skill.h"
 #include "clif.h"
+#include "duel.h"
 #include "npc.h"
 #include "guild.h"
 #include "status.h"

+ 2 - 0
vcproj-10/map-server_sql.vcxproj

@@ -153,6 +153,7 @@
     <ClInclude Include="..\src\map\chrif.h" />
     <ClInclude Include="..\src\map\clif.h" />
     <ClInclude Include="..\src\map\date.h" />
+    <ClInclude Include="..\src\map\duel.h" />
     <ClInclude Include="..\src\map\guild.h" />
     <ClInclude Include="..\src\map\intif.h" />
     <ClInclude Include="..\src\map\itemdb.h" />
@@ -204,6 +205,7 @@
     <ClCompile Include="..\src\map\chrif.c" />
     <ClCompile Include="..\src\map\clif.c" />
     <ClCompile Include="..\src\map\date.c" />
+    <ClCompile Include="..\src\map\duel.c" />
     <ClCompile Include="..\src\map\guild.c" />
     <ClCompile Include="..\src\map\intif.c" />
     <ClCompile Include="..\src\map\itemdb.c" />

+ 2 - 0
vcproj-10/map-server_txt.vcxproj

@@ -132,6 +132,7 @@
     <ClCompile Include="..\src\map\chrif.c" />
     <ClCompile Include="..\src\map\clif.c" />
     <ClCompile Include="..\src\map\date.c" />
+    <ClCompile Include="..\src\map\duel.c" />
     <ClCompile Include="..\src\map\guild.c" />
     <ClCompile Include="..\src\map\homunculus.c" />
     <ClCompile Include="..\src\map\instance.c" />
@@ -183,6 +184,7 @@
     <ClInclude Include="..\src\map\chrif.h" />
     <ClInclude Include="..\src\map\clif.h" />
     <ClInclude Include="..\src\map\date.h" />
+    <ClInclude Include="..\src\map\duel.h" />
     <ClInclude Include="..\src\map\guild.h" />
     <ClInclude Include="..\src\map\homunculus.h" />
     <ClInclude Include="..\src\map\instance.h" />

+ 8 - 0
vcproj-6/map-server_sql.dsp

@@ -271,6 +271,14 @@ SOURCE=..\src\map\date.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\src\map\duel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\src\map\duel.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\src\map\guild.c
 # End Source File
 # Begin Source File

+ 8 - 0
vcproj-6/map-server_txt.dsp

@@ -231,6 +231,10 @@ SOURCE=..\src\map\date.c
 # End Source File
 # Begin Source File
 
+SOURCE=..\src\map\duel.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\src\map\guild.c
 # End Source File
 # Begin Source File
@@ -363,6 +367,10 @@ SOURCE=..\src\map\date.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\src\map\duel.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\src\map\guild.h
 # End Source File
 # Begin Source File

+ 6 - 0
vcproj-7.1/map-server_sql.vcproj

@@ -196,6 +196,12 @@
 			<File
 				RelativePath="..\src\map\date.h">
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c">
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h">
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c">
 			</File>

+ 6 - 0
vcproj-7.1/map-server_txt.vcproj

@@ -196,6 +196,12 @@
 			<File
 				RelativePath="..\src\map\date.h">
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c">
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h">
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c">
 			</File>

+ 8 - 0
vcproj-8/map-server_sql.vcproj

@@ -415,6 +415,14 @@
 				RelativePath="..\src\map\date.h"
 				>
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c"
+				>
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h"
+				>
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c"
 				>

+ 8 - 0
vcproj-8/map-server_txt.vcproj

@@ -266,6 +266,14 @@
 				RelativePath="..\src\map\date.h"
 				>
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c"
+				>
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h"
+				>
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c"
 				>

+ 8 - 0
vcproj-9/map-server_sql.vcproj

@@ -414,6 +414,14 @@
 				RelativePath="..\src\map\date.h"
 				>
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c"
+				>
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h"
+				>
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c"
 				>

+ 8 - 0
vcproj-9/map-server_txt.vcproj

@@ -265,6 +265,14 @@
 				RelativePath="..\src\map\date.h"
 				>
 			</File>
+			<File
+				RelativePath="..\src\map\duel.c"
+				>
+			</File>
+			<File
+				RelativePath="..\src\map\duel.h"
+				>
+			</File>
 			<File
 				RelativePath="..\src\map\guild.c"
 				>