diff options
-rw-r--r-- | conf/battle/player.conf | 4 | ||||
-rw-r--r-- | src/map/battle.c | 1 | ||||
-rw-r--r-- | src/map/battle.h | 3 | ||||
-rw-r--r-- | src/map/clif.c | 3 | ||||
-rw-r--r-- | src/map/pc.c | 5 |
5 files changed, 15 insertions, 1 deletions
diff --git a/conf/battle/player.conf b/conf/battle/player.conf index b31385b8b..9168a6320 100644 --- a/conf/battle/player.conf +++ b/conf/battle/player.conf @@ -185,3 +185,7 @@ idletime_criteria: 0x1F costume_refine_def: yes shadow_refine_def: yes shadow_refine_atk: yes + +// Keep player facing direction after warping? +// Default: no (on official servers players always faces north) +player_warp_keep_direction: yes diff --git a/src/map/battle.c b/src/map/battle.c index 879776871..6182d1ff5 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7247,6 +7247,7 @@ static const struct battle_data { { "min_body_style", &battle_config.min_body_style, 0, 0, SHRT_MAX, }, { "max_body_style", &battle_config.max_body_style, 4, 0, SHRT_MAX, }, { "save_body_style", &battle_config.save_body_style, 0, 0, 1, }, + { "player_warp_keep_direction", &battle_config.player_warp_keep_direction, 0, 0, 1, }, }; #ifndef STATS_OPT_OUT /** diff --git a/src/map/battle.h b/src/map/battle.h index cb15e3b90..1a23870e7 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -539,6 +539,9 @@ struct Battle_Config { // BodyStyle int min_body_style, max_body_style; int save_body_style; + + // Warp Face Direction + int player_warp_keep_direction; }; /* criteria for battle_config.idletime_critera */ diff --git a/src/map/clif.c b/src/map/clif.c index 897249836..2317801bc 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9548,7 +9548,8 @@ void clif_parse_LoadEndAck(int fd, struct map_session_data *sd) { clif->clearunit_area(&sd->bl, CLR_DEAD); else { skill->usave_trigger(sd); - sd->ud.dir = 0;/* enforce north-facing (not visually, virtually) */ + if (battle_config.player_warp_keep_direction == 1) + clif->changed_dir(&sd->bl, SELF); // Visually updates player facing direction } // Trigger skill effects if you appear standing on them diff --git a/src/map/pc.c b/src/map/pc.c index 2206dbb80..93470493a 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5580,6 +5580,8 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int npc->script_event(sd, NPCE_LOGOUT); //remove from map, THEN change x/y coordinates unit->remove_map_pc(sd,clrtype); + if (battle_config.player_warp_keep_direction == 0) + sd->ud.dir = 0; // makes character face north sd->mapindex = map_index; sd->bl.x=x; sd->bl.y=y; @@ -5610,6 +5612,9 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int vending->close(sd); } + if (battle_config.player_warp_keep_direction == 0) + sd->ud.dir = 0; // makes character face north + if(sd->bl.prev != NULL){ unit->remove_map_pc(sd,clrtype); clif->changemap(sd,m,x,y); // [MouseJstr] |