|
@@ -16,6 +16,8 @@
|
|
|
struct duel duel_list[MAX_DUEL]; //list of current duel
|
|
|
int duel_count = 0; //number of duel active
|
|
|
|
|
|
+static void duel_set(const unsigned int did, struct map_session_data* sd);
|
|
|
+
|
|
|
/*
|
|
|
* Save the current time of the duel in PC_LAST_DUEL_TIME
|
|
|
*/
|
|
@@ -88,6 +90,26 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd)
|
|
|
map_foreachpc(duel_showinfo_sub, sd, &p);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+* Moves sd to duel
|
|
|
+*/
|
|
|
+static void duel_set(const unsigned int did, struct map_session_data* sd) {
|
|
|
+ sd->state.changemap = 1;
|
|
|
+ sd->state.warping = 1;
|
|
|
+
|
|
|
+ // As you move to a different plane, ground effects need to be cleared
|
|
|
+ skill_clear_unitgroup(&sd->bl);
|
|
|
+ skill_unit_move(&sd->bl, gettick(), 2);
|
|
|
+ skill_cleartimerskill(&sd->bl);
|
|
|
+
|
|
|
+ sd->duel_group = did;
|
|
|
+
|
|
|
+ skill_unit_move(&sd->bl, gettick(), 3);
|
|
|
+
|
|
|
+ sd->state.changemap = 0;
|
|
|
+ sd->state.warping = 0;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Create a new duel for sd
|
|
|
*/
|
|
@@ -100,7 +122,7 @@ int duel_create(struct map_session_data* sd, const unsigned int maxpl)
|
|
|
if(i == MAX_DUEL) return 0;
|
|
|
|
|
|
duel_count++;
|
|
|
- sd->duel_group = i;
|
|
|
+ duel_set(i, sd);
|
|
|
duel_list[i].members_count++;
|
|
|
duel_list[i].invites_count = 0;
|
|
|
duel_list[i].max_players_limit = maxpl;
|
|
@@ -169,7 +191,7 @@ void duel_leave(const unsigned int did, struct map_session_data* sd)
|
|
|
duel_count--;
|
|
|
}
|
|
|
|
|
|
- sd->duel_group = 0;
|
|
|
+ duel_set(0, sd);
|
|
|
duel_savetime(sd);
|
|
|
clif_map_property(sd, MAPPROPERTY_NOTHING);
|
|
|
clif_maptypeproperty2(&sd->bl,SELF);
|
|
@@ -185,7 +207,7 @@ void 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_set(sd->duel_invite, sd);
|
|
|
duel_list[did].invites_count--;
|
|
|
sd->duel_invite = 0;
|
|
|
|