Files
2024-03-10 08:31:29 +01:00

95 lines
2.7 KiB
C++

/// If you want CTRL + B and CTRL G unsummon and summon the mount:
// Srcs-Server/game/src/cmd_general.cpp, add at beginning of ACMD(do_user_horse_back), this:
ACMD(do_ride)
{
#ifdef ENABLE_MOUNT_LIKE_HORSE
if (const auto pItem = ch->GetWear(WEAR_COSTUME_MOUNT)) {
if (!ch->GetHorse() && !ch->IsRiding()) {
ch->HorseSummon(true, false, pItem->GetValue(0));
return;
}
}
#endif
/// If you want CTRL + B to remove the seal, that's enough:
// Srcs-Server/game/src/cmd_general.cpp, edit ACMD(do_user_horse_back) like this:
ACMD(do_user_horse_back)
{
if (ch->GetHorse())
{
ch->HorseSummon(false);
#ifdef ENABLE_MOUNT_LIKE_HORSE
if (const LPITEM pMount = ch->GetWear(WEAR_COSTUME_MOUNT))
ch->UnequipItem(pMount);
#endif
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»À» µ¹·Áº¸³Â½À´Ï´Ù."));
}
else if (ch->IsHorseRiding())
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»¿¡¼­ ¸ÕÀú ³»·Á¾ß ÇÕ´Ï´Ù."));
else
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»À» ¸ÕÀú ¼ÒÈ¯ÇØÁÖ¼¼¿ä."));
}
/// If you want CTRL + B don't remove your mount:
// Srcs-Server/game/src/cmd_general.cpp, edit ACMD(do_user_horse_back) like this:
ACMD(do_user_horse_back)
{
#ifdef ENABLE_MOUNT_LIKE_HORSE
if (const LPITEM pMount = ch->GetWear(WEAR_COSTUME_MOUNT))
{
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't do that with mounts, only with horse."));
return;
}
#endif
if (ch->GetHorse())
{
ch->HorseSummon(false);
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»À» µ¹·Áº¸³Â½À´Ï´Ù."));
}
else if (ch->IsHorseRiding())
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»¿¡¼­ ¸ÕÀú ³»·Á¾ß ÇÕ´Ï´Ù."));
else
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸»À» ¸ÕÀú ¼ÒÈ¯ÇØÁÖ¼¼¿ä."));
}
/// For those who want bonuses to be awarded even if you are not riding, but simply have the mount summoned:
// Remove from Srcs-Server/game/src/item.cpp, void CItem::ModifyPoints
#ifdef ENABLE_MOUNT_LIKE_HORSE
if (IsMount())
continue;
#endif
// Remove from Srcs-Server/game/src/char.cpp, void CHARACTER::MountVnum
#ifdef ENABLE_MOUNT_LIKE_HORSE
RemoveAffect(AFFECT_MOUNT_BONUS);
if (const auto pMountItem = GetWear(WEAR_COSTUME_MOUNT))
{
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i) {
if (pMountItem->GetProto()->aApplies[i].bType == APPLY_NONE || vnum == 0)
continue;
AddAffect(AFFECT_MOUNT_BONUS, aApplyInfo[pMountItem->GetProto()->aApplies[i].bType].bPointType, pMountItem->GetProto()->aApplies[i].lValue, AFF_NONE, INFINITE_AFFECT_DURATION, 0, false);
}
}
#endif
// Remove from Srcs-Server/game/src/char.cpp, bool CHARACTER::StopRiding
#ifdef ENABLE_MOUNT_LIKE_HORSE
RemoveAffect(AFFECT_MOUNT_BONUS);
#endif