Skip to content

Commit

Permalink
Created config to disable support outfit selector on customize charac…
Browse files Browse the repository at this point in the history
…ter and Adjusted another checks.
  • Loading branch information
elsongabriel committed Apr 23, 2024
1 parent d30710c commit ea1b739
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 13 deletions.
2 changes: 2 additions & 0 deletions config.lua.dist
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ onlyPremiumAccount = false
-- NOTE: startStreakLevel will make a reward streak level for new players who never logged in
-- NOTE: if showLootsInBestiary is true, will cause all loots to be shown in the bestiary even if the player has not reached the required number of kills
-- NOTE: minTownIdToBankTransfer blocks towns less than defined from receiving money transfers
-- NOTE: enableSupportOutfit enable GODS and GMS to select support outfit (gamemaster, customer support or community manager)
stashMoving = false
depotChest = 4
autoLoot = false
Expand All @@ -261,6 +262,7 @@ enablePlayerPutItemInAmmoSlot = false
startStreakLevel = 0
showLootsInBestiary = false
minTownIdToBankTransfer = 3
enableSupportOutfit = true

-- Teleport summon
-- Set to true will never remove the summon
Expand Down
1 change: 1 addition & 0 deletions src/config/config_enums.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ enum ConfigKey_t : uint16_t {
DISCORD_WEBHOOK_URL,
EMOTE_SPELLS,
ENABLE_PLAYER_PUT_ITEM_IN_AMMO_SLOT,
ENABLE_SUPPORT_OUTFIT,
EX_ACTIONS_DELAY_INTERVAL,
EXP_FROM_PLAYERS_LEVEL_RANGE,
EXPERIENCE_FROM_PLAYERS,
Expand Down
1 change: 1 addition & 0 deletions src/config/configmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ bool ConfigManager::load() {
loadBoolConfig(L, DISCORD_SEND_FOOTER, "discordSendFooter", true);
loadBoolConfig(L, EMOTE_SPELLS, "emoteSpells", false);
loadBoolConfig(L, ENABLE_PLAYER_PUT_ITEM_IN_AMMO_SLOT, "enablePlayerPutItemInAmmoSlot", false);
loadBoolConfig(L, ENABLE_SUPPORT_OUTFIT, "enableSupportOutfit", true);
loadBoolConfig(L, EXPERIENCE_FROM_PLAYERS, "experienceByKillingPlayers", false);
loadBoolConfig(L, FORCE_MONSTERTYPE_LOAD, "forceMonsterTypesOnLoad", true);
loadBoolConfig(L, FREE_PREMIUM, "freePremium", false);
Expand Down
7 changes: 6 additions & 1 deletion src/game/game.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4081,7 +4081,7 @@ void Game::playerSetShowOffSocket(uint32_t playerId, Outfit_t &outfit, const Pos
}

const auto mount = mounts.getMountByClientID(outfit.lookMount);
if (!mount || !player->hasMount(mount)) {
if (!mount || !player->hasMount(mount) || player->isSupportOutfit()) {
outfit.lookMount = 0;
}

Expand Down Expand Up @@ -5762,6 +5762,11 @@ void Game::playerChangeOutfit(uint32_t playerId, Outfit_t outfit, uint8_t isMoun
return;
}

if (player->isSupportOutfit()) {
outfit.lookMount = 0;
isMountRandomized = 0;
}

player->setRandomMount(isMountRandomized);

if (isMountRandomized && outfit.lookMount != 0 && player->hasAnyMount()) {
Expand Down
25 changes: 13 additions & 12 deletions src/server/network/protocol/protocolgame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3153,21 +3153,22 @@ void ProtocolGame::sendCreatureOutfit(std::shared_ptr<Creature> creature, const
return;
}

Outfit_t newOutfit = outfit;
if (player->isSupportOutfit()) {
player->setCurrentMount(0);
newOutfit.lookMount = 0;
}

NetworkMessage msg;
msg.addByte(0x8E);
msg.add<uint32_t>(creature->getID());
AddOutfit(msg, outfit);

auto isSupportOutfit = player->isSupportOutfit();
if (isSupportOutfit) {
player->setCurrentMount(0);
}
AddOutfit(msg, newOutfit);

if (!oldProtocol && outfit.lookMount != 0 && !isSupportOutfit) {
msg.addByte(outfit.lookMountHead);
msg.addByte(outfit.lookMountBody);
msg.addByte(outfit.lookMountLegs);
msg.addByte(outfit.lookMountFeet);
if (!oldProtocol && newOutfit.lookMount != 0) {
msg.addByte(newOutfit.lookMountHead);
msg.addByte(newOutfit.lookMountBody);
msg.addByte(newOutfit.lookMountLegs);
msg.addByte(newOutfit.lookMountFeet);
}
writeToOutputBuffer(msg);
}
Expand Down Expand Up @@ -6688,7 +6689,7 @@ void ProtocolGame::sendOutfitWindow() {
uint16_t outfitSize = 0;
msg.skipBytes(2);

if (player->isAccessPlayer()) {
if (player->isAccessPlayer() && g_configManager().getBoolean(ENABLE_SUPPORT_OUTFIT, __FUNCTION__)) {
msg.add<uint16_t>(75);
msg.addString("Gamemaster", "ProtocolGame::sendOutfitWindow - Gamemaster");
msg.addByte(0);
Expand Down

0 comments on commit ea1b739

Please sign in to comment.