Initial commit
This commit is contained in:
64
Srcs-Server/game/src/char.cpp
Normal file
64
Srcs-Server/game/src/char.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
/// 1.) Search in void CHARACTER::SetProto(const CMob * pkMob):
|
||||
|
||||
if (m_bCharType == CHAR_TYPE_HORSE ||
|
||||
GetRaceNum() == 20101 ||
|
||||
GetRaceNum() == 20102 ||
|
||||
GetRaceNum() == 20103 ||
|
||||
GetRaceNum() == 20104 ||
|
||||
GetRaceNum() == 20105 ||
|
||||
GetRaceNum() == 20106 ||
|
||||
GetRaceNum() == 20107 ||
|
||||
GetRaceNum() == 20108 ||
|
||||
GetRaceNum() == 20109
|
||||
)
|
||||
|
||||
// and replace with:
|
||||
|
||||
if (m_bCharType == CHAR_TYPE_HORSE ||
|
||||
GetRaceNum() == 20101 ||
|
||||
GetRaceNum() == 20102 ||
|
||||
GetRaceNum() == 20103 ||
|
||||
GetRaceNum() == 20104 ||
|
||||
GetRaceNum() == 20105 ||
|
||||
GetRaceNum() == 20106 ||
|
||||
GetRaceNum() == 20107 ||
|
||||
GetRaceNum() == 20108 ||
|
||||
GetRaceNum() == 20109
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
|| CMobVnumHelper::IsMount(GetRaceNum())
|
||||
#endif
|
||||
)
|
||||
|
||||
/// 2.) Search in void CHARACTER::MountVnum(DWORD vnum):
|
||||
|
||||
}
|
||||
|
||||
SetValidComboInterval(0);
|
||||
SetComboSequence(0);
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#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, true);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/// 3.) Add at the end of the file:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
void CHARACTER::CheckEnterMount()
|
||||
{
|
||||
if (GetHorse()) // If is already summoned, do nothing
|
||||
return;
|
||||
|
||||
if (const auto pMountItem = GetWear(WEAR_COSTUME_MOUNT))
|
||||
HorseSummon(true, false, pMountItem->GetValue(1));
|
||||
}
|
||||
#endif
|
||||
25
Srcs-Server/game/src/char.h
Normal file
25
Srcs-Server/game/src/char.h
Normal file
@ -0,0 +1,25 @@
|
||||
/// 1.) Search:
|
||||
|
||||
};
|
||||
|
||||
ESex GET_SEX(LPCHARACTER ch);
|
||||
|
||||
// and add before, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
public:
|
||||
void CheckEnterMount();
|
||||
#endif
|
||||
|
||||
// like:
|
||||
/*
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
public:
|
||||
void CheckEnterMount();
|
||||
#endif
|
||||
};
|
||||
|
||||
ESex GET_SEX(LPCHARACTER ch);
|
||||
#endif
|
||||
*/
|
||||
79
Srcs-Server/game/src/char_horse.cpp
Normal file
79
Srcs-Server/game/src/char_horse.cpp
Normal file
@ -0,0 +1,79 @@
|
||||
/// 1.) Search in bool CHARACTER::StartRiding():
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
DWORD dwMountVnum = m_chHorse ? m_chHorse->GetRaceNum() : GetMyHorseVnum();
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (const LPITEM pMountItem = GetWear(WEAR_COSTUME_MOUNT))
|
||||
dwMountVnum = pMountItem->GetValue(1);
|
||||
#endif
|
||||
|
||||
// then search:
|
||||
|
||||
UpdatePacket();
|
||||
}
|
||||
|
||||
PointChange(POINT_ST, 0);
|
||||
PointChange(POINT_DX, 0);
|
||||
PointChange(POINT_HT, 0);
|
||||
PointChange(POINT_IQ, 0);
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
RemoveAffect(AFFECT_MOUNT_BONUS);
|
||||
#endif
|
||||
|
||||
/// 2.) Search in LPCHARACTER CHARACTER::GetRider() const:
|
||||
|
||||
void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const char* pPetName)
|
||||
{
|
||||
|
||||
// and add at the init, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (const LPITEM pMountItem = GetWear(WEAR_COSTUME_MOUNT))
|
||||
dwVnum = pMountItem->GetValue(1);
|
||||
#endif
|
||||
|
||||
/*Example:
|
||||
void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const char* pPetName)
|
||||
{
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (const LPITEM pMountItem = GetWear(WEAR_COSTUME_MOUNT))
|
||||
dwVnum = pMountItem->GetValue(1);
|
||||
#endif
|
||||
|
||||
if (bSummon)
|
||||
{...
|
||||
*/
|
||||
|
||||
/// 3.) Search in void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const char* pPetName):
|
||||
|
||||
m_chHorse->m_stName += LC_TEXT("´ÔÀÇ ¸»");
|
||||
|
||||
// and replace with:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
m_chHorse->m_stName += LC_TEXT(CMobVnumHelper::IsMount(dwVnum) ? "'s Mount" : "´ÔÀÇ ¸»");
|
||||
#else
|
||||
m_chHorse->m_stName += LC_TEXT("´ÔÀÇ ¸»");
|
||||
#endif
|
||||
|
||||
/*Example:
|
||||
if (pHorseName && strlen(pHorseName) != 0)
|
||||
m_chHorse->m_stName = pHorseName;
|
||||
else
|
||||
{
|
||||
m_chHorse->m_stName = GetName();
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
m_chHorse->m_stName += LC_TEXT(CMobVnumHelper::IsMount(dwVnum) ? "'s Mount" : "´ÔÀÇ ¸»");
|
||||
#else
|
||||
m_chHorse->m_stName += LC_TEXT("´ÔÀÇ ¸»");
|
||||
#endif
|
||||
}
|
||||
*/
|
||||
55
Srcs-Server/game/src/char_item.cpp
Normal file
55
Srcs-Server/game/src/char_item.cpp
Normal file
@ -0,0 +1,55 @@
|
||||
/// 1.) Search in bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count):
|
||||
|
||||
if (!CanHandleItem())
|
||||
{
|
||||
if (NULL != DragonSoul_RefineWindow_GetOpener())
|
||||
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("°ÈâÀ» ¿¬ »óÅ¿¡¼´Â ¾ÆÀÌÅÛÀ» ¿Å±æ ¼ö ¾ø½À´Ï´Ù."));
|
||||
return false;
|
||||
}
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (item->IsMount() && item->IsEquipped() && DestCell.IsDefaultInventoryPosition()) {
|
||||
StopRiding();
|
||||
HorseSummon(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// 2.) Search in bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell):
|
||||
|
||||
item1->AddToCharacter(this, TItemPos(INVENTORY, bCell2));
|
||||
item2->AddToCharacter(this, TItemPos(INVENTORY, bCell1));
|
||||
}
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (item1->IsMount() && item2->IsMount() && destCell.IsEquipPosition()) {
|
||||
HorseSummon(false);
|
||||
HorseSummon(true);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// 3.) Search in bool CHARACTER::UnequipItem(LPITEM item):
|
||||
|
||||
if (!CanUnequipNow(item))
|
||||
return false;
|
||||
|
||||
// and add before, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (item->IsMount()) {
|
||||
StopRiding();
|
||||
HorseSummon(false);
|
||||
}
|
||||
#endif
|
||||
|
||||
/// 4.) in bool CHARACTER::UnequipItem(LPITEM item):
|
||||
|
||||
// before the final "return true;", add this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (item->IsMount())
|
||||
HorseSummon(true);
|
||||
#endif
|
||||
10
Srcs-Server/game/src/input_login.cpp
Normal file
10
Srcs-Server/game/src/input_login.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
/// 1.) Search in void CInputLogin::Entergame(LPDESC d, const char * data):
|
||||
|
||||
if (ch->GetHorseLevel() > 0)
|
||||
ch->EnterHorse();
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
ch->CheckEnterMount();
|
||||
#endif
|
||||
27
Srcs-Server/game/src/item.cpp
Normal file
27
Srcs-Server/game/src/item.cpp
Normal file
@ -0,0 +1,27 @@
|
||||
/// 1.) Search in void CItem::ModifyPoints(bool bAdd):
|
||||
|
||||
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
|
||||
{
|
||||
if (m_pProto->aApplies[i].bType == APPLY_NONE)
|
||||
continue;
|
||||
|
||||
// and add under, this:
|
||||
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (IsMount())
|
||||
continue;
|
||||
#endif
|
||||
|
||||
/*Example:
|
||||
for (int i = 0; i < ITEM_APPLY_MAX_NUM; ++i)
|
||||
{
|
||||
if (m_pProto->aApplies[i].bType == APPLY_NONE)
|
||||
continue;
|
||||
#ifdef ENABLE_MOUNT_LIKE_HORSE
|
||||
if (IsMount())
|
||||
continue;
|
||||
#endif
|
||||
|
||||
long value = m_pProto->aApplies[i].lValue;
|
||||
...
|
||||
*/
|
||||
Reference in New Issue
Block a user