Fixed PK mode bugs

This commit is contained in:
Mind Rapist
2025-12-27 10:12:27 +02:00
parent 5179261a47
commit 2422af51a8

View File

@@ -2113,11 +2113,28 @@ void CInstanceBase::SetPartyMemberFlag(bool bFlag)
void CInstanceBase::SetStateFlags(DWORD dwStateFlags)
{
if (dwStateFlags & ADD_CHARACTER_STATE_KILLER)
SetKiller(TRUE);
else
SetKiller(FALSE);
// MR-4: Fix PK Mode Bug
// Prevent killer mode for same-guild attacks in GUILD PK mode
bool skipKiller = false;
if ((dwStateFlags & ADD_CHARACTER_STATE_KILLER) && PK_MODE_GUILD == GetPKMode()) {
CPythonPlayer& rkPlayer = CPythonPlayer::Instance();
DWORD myGuildID = GetGuildID();
DWORD mainGuildID = rkPlayer.GetGuildID();
if (myGuildID != 0 && myGuildID == mainGuildID) {
skipKiller = true;
}
}
if (!skipKiller) {
if (dwStateFlags & ADD_CHARACTER_STATE_KILLER)
SetKiller(TRUE);
else
SetKiller(FALSE);
}
// MR-4: -- END OF -- Fix PK Mode Bug
if (dwStateFlags & ADD_CHARACTER_STATE_PARTY)
SetPartyMemberFlag(TRUE);
else
@@ -2238,10 +2255,20 @@ bool CInstanceBase::IsAttackableInstance(CInstanceBase& rkInstVictim)
if (IsPVPInstance(rkInstVictim))
return true;
// MR-4: Fix PK Mode Bug
if (PK_MODE_REVENGE == GetPKMode())
{
if (!IAbstractPlayer::GetSingleton().IsSamePartyMember(GetVirtualID(), rkInstVictim.GetVirtualID()))
if (IsConflictAlignmentInstance(rkInstVictim))
{
if (
(GetGuildID() == 0 || GetGuildID() != rkInstVictim.GetGuildID()) &&
IsConflictAlignmentInstance(rkInstVictim) &&
rkInstVictim.GetAlignment() < 0
)
return true;
}
}
// MR-4: -- END OF -- Fix PK Mode Bug
}
else
{