From 4bde7760f12752a385ff065c8d83bc66765b93b8 Mon Sep 17 00:00:00 2001 From: gumi Date: Mon, 31 Jul 2017 16:39:33 -0400 Subject: add option to restrict party leader change to same map --- conf/map/battle/party.conf | 6 ++++++ src/map/battle.c | 1 + src/map/battle.h | 3 ++- src/map/clif.h | 1 + src/map/party.c | 5 +++++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/conf/map/battle/party.conf b/conf/map/battle/party.conf index 07a0bdaea..a38321806 100644 --- a/conf/map/battle/party.conf +++ b/conf/map/battle/party.conf @@ -41,6 +41,12 @@ party_update_interval: 1000 // 1: Athena - bar is updated with the party map dots (up to 1 second delay) party_hp_mode: 0 +// When changing party leader, should the new leader be in the same map +// as the current leader. (Note 1) +// true: Aegis - They must be in the same map +// false: Athena - They can be in different maps +party_change_leader_same_map: true + // When 'Party Share' item sharing is enabled in a party, // announce in the party which party-member received the item and what's he received? (Note 1) show_party_share_picker: true diff --git a/src/map/battle.c b/src/map/battle.c index 57a74bba4..5c8ad95ef 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -7097,6 +7097,7 @@ static const struct battle_data { { "vending_over_max", &battle_config.vending_over_max, 1, 0, 1, }, { "show_steal_in_same_party", &battle_config.show_steal_in_same_party, 0, 0, 1, }, { "party_hp_mode", &battle_config.party_hp_mode, 0, 0, 1, }, + { "party_change_leader_same_map", &battle_config.party_change_leader_same_map, 0, 0, 1, }, { "show_party_share_picker", &battle_config.party_show_share_picker, 1, 0, 1, }, { "show_picker_item_type", &battle_config.show_picker_item_type, 112, 0, INT_MAX, }, { "party_update_interval", &battle_config.party_update_interval, 1000, 100, INT_MAX, }, diff --git a/src/map/battle.h b/src/map/battle.h index a73c6dc44..44e454156 100644 --- a/src/map/battle.h +++ b/src/map/battle.h @@ -298,6 +298,7 @@ struct Battle_Config { int show_steal_in_same_party; int party_share_type; int party_hp_mode; + int party_change_leader_same_map; int party_show_share_picker; int show_picker_item_type; int attack_attr_none; @@ -545,7 +546,7 @@ struct Battle_Config { int player_warp_keep_direction; int atcommand_levelup_events; // Enable atcommands trigger level up events for NPCs - + int bow_unequip_arrow; int max_summoner_parameter; // Summoner Max Stats diff --git a/src/map/clif.h b/src/map/clif.h index b34be81a3..ab51de223 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -385,6 +385,7 @@ enum clif_messages { MSG_SECONDS_UNTIL_USE = 0x746, ///< %d seconds left until you can use MSG_NPC_WORK_IN_PROGRESS = 0x783, // FIXME[Haru]: This seems to be 0x784 in the msgstringtable files I found. MSG_REINS_CANT_USE_MOUNTED = 0x78b, // FIXME[Haru]: This seems to be 0x785 in the msgstringtalbe files I found. + MSG_PARTY_LEADER_SAMEMAP = 0x82e, //< It is only possible to change the party leader while on the same map. }; /** diff --git a/src/map/party.c b/src/map/party.c index 26b4bae8b..a4a7e6dca 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -731,6 +731,11 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts return false; } + if (battle_config.party_change_leader_same_map && sd->bl.m != tsd->bl.m) { + clif->msgtable(sd, MSG_PARTY_LEADER_SAMEMAP); // It is only possible to change the party leader while on the same map. + return false; + } + if( map->list[sd->bl.m].flag.partylock ) { clif->message(sd->fd, msg_sd(sd,287)); // You cannot change party leaders in this map. return false; -- cgit v1.2.3-60-g2f50