void CShotgun::ReloadShell(int zoomed) { if(m_reload_was_broken) return; CActor *pOwner = m_pWeapon->GetOwnerActor(); bool isAI = pOwner && (pOwner->IsPlayer() == false); int ammoCount = m_pWeapon->GetAmmoCount(m_pShared->fireparams.ammo_type_class); if((ammoCount < m_pShared->fireparams.clip_size) && (m_max_shells>0) && (isAI || (m_pWeapon->GetInventoryAmmoCount(m_pShared->fireparams.ammo_type_class) > 0))) // AI has unlimited ammo { m_max_shells --; // reload a shell m_pWeapon->PlayAction(g_pItemStrings->reload_shell, 0, false, CItem::eIPAF_Default|CItem::eIPAF_RepeatLastFrame|CItem::eIPAF_RestartAnimation); uint32 animTime = m_pWeapon->GetCurrentAnimationTime(eIGS_FirstPerson); if(animTime==0) animTime = 530; //For DS m_pWeapon->GetScheduler()->TimerAction(animTime, CSchedulerAction<PartialReloadAction>::Create(PartialReloadAction(m_pWeapon, zoomed)), false); // call this again } else { EndReload(zoomed); } }
void CShotgun::ReloadShell(int zoomed) { if(m_reload_was_broken) return; CActor* pOwner = m_pWeapon->GetOwnerActor(); bool isAI = pOwner && (pOwner->IsPlayer() == false); int ammoCount = m_pWeapon->GetAmmoCount(m_fireParams->fireparams.ammo_type_class); if ((ammoCount < GetClipSize()) && (m_max_shells>0) && (isAI || (m_pWeapon->GetInventoryAmmoCount(m_fireParams->fireparams.ammo_type_class) > (m_load_shell_on_end ? 1 : 0))) ) // AI has unlimited ammo { m_max_shells --; const float speedOverride = GetReloadSpeedMultiplier(pOwner); // reload a shell m_pWeapon->PlayAction(GetFragmentIds().reload_shell, 0, false, CItem::eIPAF_Default,speedOverride); uint32 animTime = m_pWeapon->GetCurrentAnimationTime(eIGS_Owner); if(animTime==0) animTime = 530; //For DS m_pWeapon->GetScheduler()->TimerAction(animTime, CSchedulerAction<PartialReloadAction>::Create(PartialReloadAction(m_pWeapon, zoomed)), false); // call this again } else { EndReload(zoomed); } }