95 lines
2.7 KiB
C++
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 |