void cHorse::OnRightClicked(cPlayer & a_Player) { super::OnRightClicked(a_Player); if (m_bIsTame) { if (a_Player.IsCrouched()) { PlayerOpenWindow(a_Player); return; } auto EquipedItemType = a_Player.GetEquippedItem().m_ItemType; if ( !IsSaddled() && ( (EquipedItemType == E_ITEM_SADDLE) || ItemCategory::IsHorseArmor(EquipedItemType) ) ) { // Player is holding a horse inventory item, open the window: PlayerOpenWindow(a_Player); } else { a_Player.AttachTo(this); } } else if (a_Player.GetEquippedItem().IsEmpty()) { // Check if leashed / unleashed to player before try to ride if (!m_IsLeashActionJustDone) { if (m_Attachee != nullptr) { if (m_Attachee->GetUniqueID() == a_Player.GetUniqueID()) { a_Player.Detach(); return; } if (m_Attachee->IsPlayer()) { return; } m_Attachee->Detach(); } m_TameAttemptTimes++; a_Player.AttachTo(this); } } else { m_bIsRearing = true; m_RearTickCount = 0; m_World->BroadcastSoundEffect("entity.horse.angry", GetPosition(), 1.0f, 0.8f); } }