| 17 | CSaveTee::CSaveTee() = default; |
| 18 | |
| 19 | void CSaveTee::Save(CCharacter *pChr, bool AddPenalty) |
| 20 | { |
| 21 | m_ClientId = pChr->m_pPlayer->GetCid(); |
| 22 | str_copy(m_aName, pChr->Server()->ClientName(m_ClientId), sizeof(m_aName)); |
| 23 | |
| 24 | m_Alive = pChr->m_Alive; |
| 25 | |
| 26 | // This is extremely suspect code, probably interacts badly with force pause |
| 27 | m_Paused = absolute(pChr->m_pPlayer->IsPaused()); |
| 28 | if(m_Paused == CPlayer::PAUSE_SPEC && !pChr->m_Paused) |
| 29 | { |
| 30 | m_Paused = CPlayer::PAUSE_NONE; |
| 31 | } |
| 32 | |
| 33 | m_NeededFaketuning = pChr->m_NeededFaketuning; |
| 34 | |
| 35 | m_TeeStarted = pChr->Teams()->TeeStarted(m_ClientId); |
| 36 | m_TeeFinished = pChr->Teams()->TeeFinished(m_ClientId); |
| 37 | m_IsSolo = pChr->m_Core.m_Solo; |
| 38 | |
| 39 | for(int i = 0; i < NUM_WEAPONS; i++) |
| 40 | { |
| 41 | m_aWeapons[i].m_AmmoRegenStart = pChr->m_Core.m_aWeapons[i].m_AmmoRegenStart; |
| 42 | m_aWeapons[i].m_Ammo = pChr->m_Core.m_aWeapons[i].m_Ammo; |
| 43 | m_aWeapons[i].m_Ammocost = pChr->m_Core.m_aWeapons[i].m_Ammocost; |
| 44 | m_aWeapons[i].m_Got = pChr->m_Core.m_aWeapons[i].m_Got; |
| 45 | } |
| 46 | |
| 47 | m_Ninja.m_ActivationDir = pChr->m_Core.m_Ninja.m_ActivationDir; |
| 48 | if(pChr->m_Core.m_Ninja.m_ActivationTick) |
| 49 | m_Ninja.m_ActivationTick = pChr->Server()->Tick() - pChr->m_Core.m_Ninja.m_ActivationTick; |
| 50 | else |
| 51 | m_Ninja.m_ActivationTick = 0; |
| 52 | m_Ninja.m_CurrentMoveTime = pChr->m_Core.m_Ninja.m_CurrentMoveTime; |
| 53 | m_Ninja.m_OldVelAmount = pChr->m_Core.m_Ninja.m_OldVelAmount; |
| 54 | |
| 55 | m_LastWeapon = pChr->m_LastWeapon; |
| 56 | m_QueuedWeapon = pChr->m_QueuedWeapon; |
| 57 | |
| 58 | m_EndlessJump = pChr->m_Core.m_EndlessJump; |
| 59 | m_Jetpack = pChr->m_Core.m_Jetpack; |
| 60 | m_NinjaJetpack = pChr->m_NinjaJetpack; |
| 61 | m_FreezeTime = pChr->m_FreezeTime; |
| 62 | m_FreezeStart = pChr->Server()->Tick() - pChr->m_Core.m_FreezeStart; |
| 63 | |
| 64 | m_DeepFrozen = pChr->m_Core.m_DeepFrozen; |
| 65 | m_LiveFrozen = pChr->m_Core.m_LiveFrozen; |
| 66 | m_EndlessHook = pChr->m_Core.m_EndlessHook; |
| 67 | m_DDRaceState = static_cast<int>(pChr->m_DDRaceState); |
| 68 | |
| 69 | m_HitDisabledFlags = 0; |
| 70 | if(pChr->m_Core.m_HammerHitDisabled) |
| 71 | m_HitDisabledFlags |= CSaveTee::HAMMER_HIT_DISABLED; |
| 72 | if(pChr->m_Core.m_ShotgunHitDisabled) |
| 73 | m_HitDisabledFlags |= CSaveTee::SHOTGUN_HIT_DISABLED; |
| 74 | if(pChr->m_Core.m_GrenadeHitDisabled) |
| 75 | m_HitDisabledFlags |= CSaveTee::GRENADE_HIT_DISABLED; |
| 76 | if(pChr->m_Core.m_LaserHitDisabled) |
no test coverage detected