36#include "characterstate.h"
39#include "dm_manager.h"
40#include "scriptdelegate.h"
42extern Event EV_Player_EndLevel;
43extern Event EV_Player_GiveCheat;
44extern Event EV_Player_GodCheat;
45extern Event EV_Player_NoTargetCheat;
46extern Event EV_Player_NoClipCheat;
47extern Event EV_Player_GameVersion;
48extern Event EV_Player_Fov;
49extern Event EV_Player_WhatIs;
50extern Event EV_Player_Respawn;
51extern Event EV_Player_WatchActor;
52extern Event EV_Player_StopWatchingActor;
53extern Event EV_Player_DoStats;
54extern Event EV_Player_EnterIntermission;
55extern Event EV_GetViewangles;
56extern Event EV_SetViewangles;
57extern Event EV_Player_AutoJoinDMTeam;
58extern Event EV_Player_JoinDMTeam;
59extern Event EV_Player_Respawn;
60extern Event EV_Player_PrimaryDMWeapon;
61extern Event EV_Player_StuffText;
91 PVT_AXIS_GERMAN = PVT_AXIS_AXIS1,
93 PVT_AXIS_ITALIAN = PVT_AXIS_AXIS2,
100typedef enum jailstate_e {
103 JAILSTATE_ASSIST_ESCAPE
106typedef enum nationality_e {
115typedef void (
Player::*movecontrolfunc_t)(void);
122#define MAX_SPEED_MULTIPLIERS 4
123#define MAX_ANIM_SLOT 16
126class Player :
public Sentient
129 friend class Vehicle;
130 friend class TurretGun;
131 friend class VehicleTurretGun;
135 static movecontrolfunc_t MoveStartFuncs[];
140 State *currentState_Legs;
141 State *currentState_Torso;
143 str last_torso_anim_name;
144 str last_leg_anim_name;
147 float m_fPartBlends[2];
149 float partBlendMult[2];
161 float m_fLastDeltaTime;
163 movecontrol_t movecontrol;
165 int last_camera_type;
178 qboolean m_iInZoomMode;
185 int server_new_buttons;
188 int last_attack_button;
198 float next_painsound_time;
203 SimpleActorPtr actor_to_watch;
205 qboolean actor_camera_right;
206 qboolean starting_actor_camera_right;
209 int music_current_mood;
210 int music_fallback_mood;
211 float music_current_volume;
212 float music_saved_volume;
213 float music_volume_fade_time;
220 painDirection_t pain_dir;
221 meansOfDeath_t pain_type;
226 float m_fMineCheckTime;
239 qboolean music_forced;
242 usereyes_t last_eyeinfo;
254 int useanim_numloops;
258 float move_right_vel;
259 float move_backward_vel;
260 float move_forward_vel;
265 float damage_multiplier;
270 voicetype_t m_voiceType;
276 int num_lost_matches;
278 int m_iLastNumTeamKills;
280 bool m_bTempSpectator;
282 bool m_bSpectatorSwitching;
283 bool m_bAllowFighting;
285 int m_iPlayerSpectating;
289 float m_fTeamSelectTime;
297 float m_fLastVoteTime;
298 float m_fNextVoteOptionTime;
300 float m_fWeapSelectTime;
301 float fAttackerDispTime;
305 int m_iInfoClientHealth;
306 float m_fInfoClientTime;
307 bool m_bDeathSpectator;
308 jailstate_t m_jailstate;
325 int m_iNumObjectives;
326 int m_iObjectivesCompleted;
328 str m_sPerferredWeaponOverride;
333 Vector mvTrail[MAX_TRAILS];
334 Vector mvTrailEyes[MAX_TRAILS];
338 int m_iNumEnemiesKilled;
339 int m_iNumObjectsDestroyed;
340 int m_iNumShotsFired;
343 int m_iNumTorsoShots;
344 int m_iNumLeftLegShots;
345 int m_iNumRightLegShots;
346 int m_iNumGroinShots;
347 int m_iNumLeftArmShots;
348 int m_iNumRightArmShots;
350 float m_fLastSprintTime;
352 float m_fLastInvulnerableTime;
353 int m_iInvulnerableTimeRemaining;
354 float m_fInvulnerableTimeElapsed;
355 float m_fSpawnTimeLeft;
356 bool m_bWaitingForRespawn;
357 bool m_bShouldRespawn;
366 float speed_multiplier[MAX_SPEED_MULTIPLIERS];
377 int m_iInstantMessageTime;
389 qboolean CondImmediateSwitch(
Conditional& condition);
391 qboolean CondUseWeaponClass(
Conditional& condition);
393 qboolean CondWeaponClassActive(
Conditional& condition);
394 qboolean CondWeaponCurrentFireAnim(
Conditional& condition);
395 qboolean CondWeaponReadyToFire(
Conditional& condition);
396 qboolean CondWeaponClassReadyToFire(
Conditional& condition);
404 qboolean CondCanPlaceLandmine(
Conditional& condition);
407 void MeasureLandmineDistances();
408 qboolean CondIsAssistingEscape(
Conditional& condition);
410 qboolean CondWeaponReadyToFireNoSound(
Conditional& condition);
412 qboolean CondPutAwayOffHand(
Conditional& condition);
413 qboolean CondAnyWeaponActive(
Conditional& condition);
414 qboolean CondAttackBlocked(
Conditional& condition);
417 qboolean CondWeaponHasAmmo(
Conditional& condition);
418 qboolean CondWeaponHasAmmoInClip(
Conditional& condition);
420 qboolean CondWeaponsHolstered(
Conditional& condition);
422 qboolean CondNewWeaponIsItem(
Conditional& condition);
424 qboolean CondMinChargeTime(
Conditional& condition);
425 qboolean CondMaxChargeTime(
Conditional& condition);
440 qboolean CondAnimDoneTorso(
Conditional& condition);
441 qboolean CondActionAnimDone(
Conditional& condition);
444 qboolean CondRightVelocity(
Conditional& condition);
445 qboolean CondBackwardVelocity(
Conditional& condition);
446 qboolean CondForwardVelocity(
Conditional& condition);
450 qboolean Cond22DegreeSlope(
Conditional& condition);
451 qboolean Cond45DegreeSlope(
Conditional& condition);
461 qboolean CondPainDirection(
Conditional& condition);
463 qboolean CondPainThreshold(
Conditional& condition);
469 qboolean CondUseAnimFinished(
Conditional& condition);
471 qboolean CondLoopUseObject(
Conditional& condition);
478 qboolean CondCanClimbUpLadder(
Conditional& condition);
479 qboolean CondCanClimbDownLadder(
Conditional& condition);
480 qboolean CondCanGetOffLadderTop(
Conditional& condition);
481 qboolean CondCanGetOffLadderBottom(
Conditional& condition);
483 qboolean CondFacingUpSlope(
Conditional& condition);
484 qboolean CondFacingDownSlope(
Conditional& condition);
490 qboolean CondDuckedViewInWater(
Conditional& condition);
491 qboolean CondCheckMovementSpeed(
Conditional& condition);
492 qboolean CondAttackPrimary(
Conditional& condition);
493 qboolean CondAttackSecondary(
Conditional& condition);
494 qboolean CondAttackButtonPrimary(
Conditional& condition);
495 qboolean CondAttackButtonSecondary(
Conditional& condition);
501 qboolean CondClientCommand(
Conditional& condition);
506 void StartPush(
void);
507 void StartClimbLadder(
void);
508 void StartUseAnim(
void);
509 void StartLoopUseAnim(
void);
510 void SetupUseObject(
void);
512 void StartUseObject(
Event *ev);
513 void FinishUseObject(
Event *ev);
514 void FinishUseAnim(
Event *ev);
515 void Turn(
Event *ev);
516 void TurnUpdate(
Event *ev);
517 void TurnLegs(
Event *ev);
519 CLASS_PROTOTYPE(Player);
525 void InitSound(
void);
526 void InitEdict(
void);
527 void InitClient(
void);
528 void InitPhysics(
void);
529 void InitPowerups(
void);
530 void InitWorldEffects(
void);
531 void InitMaxAmmo(
void);
532 void InitWeapons(
void);
534 void InitModel(
void);
535 void InitModelFps(
void);
536 void InitState(
void);
537 void InitHealth(
void);
538 void InitInventory(
void);
539 void InitDeathmatch(
void);
540 void InitStats(
void);
543 bool QueryLandminesAllowed()
const;
544 void EnsurePlayerHasAllowedWeapons();
547 void EquipWeapons_ver8();
548 void ChooseSpawnPoint(
void);
550 void EndLevel(
Event *ev);
551 void Respawn(
Event *ev);
553 void SetDeltaAngles(
void)
override;
554 void setAngles(
Vector ang)
override;
555 void SetViewangles(
Event *ev);
556 void GetViewangles(
Event *ev);
558 void DoUse(
Event *ev);
559 void Obituary(Entity *attacker, Entity *inflictor,
int meansofdeath,
int iLocation);
560 void Killed(
Event *ev)
override;
561 void Dead(
Event *ev);
562 void Pain(
Event *ev);
565 void AttachToLadder(
Event *ev);
566 void UnattachFromLadder(
Event *ev);
567 void TweakLadderPos(
Event *ev);
568 void EnsureOverLadder(
Event *ev);
569 void EnsureForwardOffLadder(
Event *ev);
574 void EventForceLandmineMeasure(
Event *ev)
override;
575 str GetCurrentDMWeaponType()
const;
579 void SetMoveInfo(
pmove_t *pm, usercmd_t *ucmd);
580 pmtype_t GetMovePlayerMoveType(
void);
581 void ClientMove(usercmd_t *ucmd);
582 void VehicleMove(usercmd_t *ucmd);
583 void TurretMove(usercmd_t *ucmd);
584 void CheckMoveFlags(
void);
585 void ClientInactivityTimer(
void);
586 void ClientThink(
void)
override;
587 void UpdateEnemies(
void);
589 void InitLegsStateTable(
void);
590 void InitTorsoStateTable(
void);
591 void LoadStateTable(
void);
592 void ResetState(
Event *ev);
593 void EvaluateState(
State *forceTorso = NULL,
State *forceLegs = NULL);
595 void CheckGround(
void)
override;
596 void UpdateViewAngles(usercmd_t *cmd);
599 qboolean CheckMove(
Vector& move,
Vector *endpos = NULL);
601 float CheckMoveDist(
Vector& delta);
602 float TestMoveDist(
Vector& pos);
604 void EndAnim_Legs(
Event *ev);
605 void EndAnim_Torso(
Event *ev);
606 void EndAnim_Pain(
Event *ev);
607 void SetPartAnim(
const char *anim, bodypart_t slot = legs);
608 void StopPartAnimating(bodypart_t part);
609 void PausePartAnim(bodypart_t part);
610 int CurrentPartAnim(bodypart_t part)
const;
611 void AdjustAnimBlends(
void);
612 void PlayerAnimDelta(
float *vDelta);
613 void TouchedUseAnim(Entity *ent);
615 void SelectPreviousItem(
Event *ev);
616 void SelectNextItem(
Event *ev);
617 void SelectPreviousWeapon(
Event *ev);
618 void SelectNextWeapon(
Event *ev);
619 void DropCurrentWeapon(
Event *ev);
620 void PlayerReload(
Event *ev);
621 void EventCorrectWeaponAttachments(
Event *ev);
623 void GiveCheat(
Event *ev);
624 void GiveWeaponCheat(
Event *ev);
625 void GiveAllCheat(
Event *ev);
626 void GiveNewWeaponsCheat(
Event *ev);
627 void GodCheat(
Event *ev);
628 void FullHeal(
Event *ev);
629 void NoTargetCheat(
Event *ev);
630 void NoclipCheat(
Event *ev);
631 void Kill(
Event *ev);
632 void SpawnEntity(
Event *ev);
633 void SpawnActor(
Event *ev);
634 void ListInventoryEvent(
Event *ev);
635 void EventGetIsEscaping(
Event *ev);
636 void EventJailEscapeStop(
Event *ev);
637 void EventJailAssistEscape(
Event *ev);
638 void EventJailEscape(
Event *ev);
639 void EventTeleport(
Event *ev);
640 void EventFace(
Event *ev);
641 void EventCoord(
Event *ev);
642 void EventTestAnim(
Event *ev);
644 void GameVersion(
Event *ev);
646 void EventSetSelectedFov(
Event *ev);
647 void SetSelectedFov(
float newFov);
650 float CalcRoll(
void);
651 void WorldEffects(
void);
652 void AddBlend(
float r,
float g,
float b,
float a);
653 void CalcBlend(
void)
override;
654 void DamageFeedback(
void);
656 void CopyStats(Player *player);
657 void UpdateStats(
void);
658 void UpdateMusic(
void);
659 void UpdateReverb(
void);
660 void UpdateMisc(
void);
662 void SetReverb(
str type,
float level);
663 void SetReverb(
int type,
float level);
664 void SetReverb(
Event *ev);
666 Camera *CurrentCamera(
void);
667 void SetCamera(Camera *ent,
float switchTime);
668 void CameraCut(
void);
669 void CameraCut(Camera *ent);
677 float camerablend[4],
680 void SetupView(
void);
682 void ProcessPmoveEvents(
int event);
684 void PlayerAngles(
void);
685 void FinishMove(
void);
686 void EndFrame(
void)
override;
688 void TestThread(
Event *ev);
689 Vector EyePosition(
void)
override;
690 Vector GunTarget(
bool bNoCollision,
const vec3_t position,
const vec3_t forward)
override;
692 void GotKill(
Event *ev);
693 void SetPowerupTimer(
Event *ev);
694 void UpdatePowerupTimer(
Event *ev);
696 void WhatIs(
Event *ev);
697 void ActorInfo(
Event *ev);
698 void Taunt(
Event *ev);
700 void ChangeMusic(
const char *current,
const char *fallback, qboolean force);
701 void ChangeMusicVolume(
float volume,
float fade_time);
702 void RestoreMusicVolume(
float fade_time);
704 void Archive(
Archiver& arc)
override;
705 void ArchivePersistantData(
Archiver& arc);
707 void KillEnt(
Event *ev);
708 void RemoveEnt(
Event *ev);
709 void KillClass(
Event *ev);
710 void RemoveClass(
Event *ev);
712 void addOrigin(
Vector org)
override;
714 void Jump(
Event *ev);
715 void JumpXY(
Event *ev);
717 void SetViewAngles(
Vector angles)
override;
718 void SetTargetViewAngles(
Vector angles)
override;
720 Vector GetViewAngles(
void)
override {
return v_angle; };
722 void SetFov(
float newFov);
723 float GetFov()
const;
725 void ToggleZoom(
int iZoom);
727 void ZoomOffEvent(
Event *ev);
728 qboolean IsZoomed(
void);
729 void SafeZoomed(
Event *ev);
730 void DumpState(
Event *ev);
731 void ForceLegsState(
Event *ev);
732 void ForceTorsoState(
Event *ev);
734 Vector GetAngleToTarget(Entity *ent,
str tag,
float yawclamp,
float pitchclamp,
Vector baseangles);
737 void AcquireTarget(
void);
738 void RemoveTarget(Entity *ent_to_remove);
740 void DebugWeaponTags(
int controller_tag,
Weapon *weapon,
str weapon_tagname);
741 void NextPainTime(
Event *ev);
742 void SetTakePain(
Event *ev);
744 void SetMouthAngle(
Event *ev);
746 void EnterVehicle(
Event *ev);
747 void ExitVehicle(
Event *ev);
748 void EnterTurret(TurretGun *ent);
749 void EnterTurret(
Event *ev);
750 void ExitTurret(
void);
751 void ExitTurret(
Event *ev);
752 void Holster(
Event *ev);
753 void HolsterToggle(
Event *ev);
755 void RemoveFromVehiclesAndTurretsInternal(
void);
756 void RemoveFromVehiclesAndTurrets(
void);
757 void WatchActor(
Event *ev);
758 void StopWatchingActor(
Event *ev);
759 painDirection_t Pain_string_to_int(
str pain);
761 inline Vector GetVAngles(
void) {
return v_angle; }
764 void VelocityModified(
void)
override;
765 int GetKnockback(
int original_knockback, qboolean blocked);
766 int GetMoveResult(
void);
767 void ReceivedItem(
Item *
item)
override;
768 void RemovedItem(
Item *
item)
override;
769 void AmmoAmountChanged(
Ammo *ammo,
int inclip = 0)
override;
771 void WaitForState(
Event *ev);
772 void SkipCinematic(
Event *ev);
773 void SetDamageMultiplier(
Event *ev);
774 void LogStats(
Event *ev);
776 void PlayerShowModel(
Event *ev);
777 void showModel(
void)
override;
778 void ResetHaveItem(
Event *ev);
779 void ModifyHeight(
Event *ev);
780 void ModifyHeightFloat(
Event *ev);
781 void SetMovePosFlags(
Event *ev);
782 void GetPositionForScript(
Event *ev);
783 void GetMovementForScript(
Event *ev);
784 void EventStuffText(
Event *ev);
785 void EventSetVoiceType(
Event *ev);
786 void GetTeamDialogPrefix(
str& outPrefix);
787 void PlayInstantMessageSound(
const char *name);
788 void EventDMMessage(
Event *ev);
791 str GetBattleLanguageCondition()
const;
792 str GetBattleLanguageDirection()
const;
793 str GetBattleLanguageLocation()
const;
794 str GetBattleLanguageLocalFolks();
795 str GetBattleLanguageWeapon()
const;
796 str GetBattleLanguageDistance()
const;
797 str GetBattleLanguageDistanceMeters(
float dist)
const;
798 str GetBattleLanguageDistanceFeet(
float dist)
const;
799 str GetBattleLanguageTarget()
const;
800 str TranslateBattleLanguageTokens(
const char *
string);
802 void EventIPrint(
Event *ev);
803 void EventGetUseHeld(
Event *ev);
804 void EventGetFireHeld(
Event *ev);
805 void EventGetPrimaryFireHeld(
Event *ev);
806 void EventGetSecondaryFireHeld(
Event *ev);
807 void Score(
Event *ev);
808 void Join_DM_Team(
Event *ev);
809 void Auto_Join_DM_Team(
Event *ev);
810 void Leave_DM_Team(
Event *ev);
811 teamtype_t GetTeam()
const;
812 void SetTeam(teamtype_t team);
813 bool IsSpectator(
void);
814 void BeginFight(
void);
816 void Spectator(
void);
817 void Spectator(
Event *ev);
818 void SetPlayerSpectate(
bool bNext);
819 void SetPlayerSpectateRandom(
void);
820 bool IsValidSpectatePlayer(Player *pPlayer);
821 void GetSpectateFollowOrientation(Player *pPlayer,
Vector& vPos,
Vector& vAng);
822 void UpdateStatus(
const char *s);
823 void SetDM_Team(
DM_Team *team);
825 void WarpToPoint(Entity *spawnpoint);
827 void ArmorDamage(
Event *ev)
override;
828 void HUDPrint(
const char *s);
829 void Disconnect(
void);
832 int GetNumKills()
const;
833 int GetNumDeaths()
const;
834 void AddKills(
int num);
835 void AddDeaths(
int num);
836 void CallVote(
Event *ev);
837 void Vote(
Event *ev);
838 void RetrieveVoteOptions(
Event *ev);
839 void EventPrimaryDMWeapon(
Event *ev);
840 void EventSecondaryDMWeapon(
Event *ev);
842 void DeadBody(
Event *ev);
845 void LostMatch(
void);
846 int GetMatchesWon()
const;
847 int GetMatchesLost()
const;
851 void GetIsSpectator(
Event *ev);
852 void EventSetInJail(
Event *ev);
853 bool IsInJail()
const;
854 void EventGetInJail(
Event *ev);
855 void GetNationalityPrefix(
Event *ev);
857 void GetIsDisguised(
Event *ev);
858 void GetHasDisguise(
Event *ev);
859 void SetHasDisguise(
Event *ev);
860 void SetObjectiveCount(
Event *ev);
862 void EventDMDeathDrop(
Event *ev);
863 void EventStopwatch(
Event *ev);
864 void KilledPlayerInDeathmatch(Player *killed, meansOfDeath_t meansofdeath);
865 void SetStopwatch(
int iDuration, stopWatchType_t type = SWT_NORMAL);
866 void BeginTempSpectator(
void);
867 void EndSpectator(
void);
869 PlayerStart *GetLastSpawnpoint()
const {
return m_pLastSpawnpoint; }
871 void Stats(
Event *ev);
872 void ArmWithWeapons(
Event *ev);
873 void EventGetCurrentDMWeaponType(
Event *ev);
874 void PhysicsOn(
Event *ev);
875 void PhysicsOff(
Event *ev);
877 void Think()
override;
878 bool IsReady(
void)
const;
880 void EventGetReady(
Event *ev);
881 void EventSetReady(
Event *ev);
882 void EventSetNotReady(
Event *ev);
883 void EventGetDMTeam(
Event *ev);
884 void EventGetNetName(
Event *ev);
885 void EventSetViewModelAnim(
Event *ev);
886 void EventEnterIntermission(
Event *ev);
887 void EventSetPerferredWeapon(
Event *ev);
889 bool BlocksAIMovement();
894 float GetRunSpeed()
const;
895 void FireWeapon(
int number, firemode_t mode)
override;
896 void SetInvulnerable();
897 void TickInvulnerable();
898 void SetVulnerable();
899 bool IsInvulnerable();
900 void CancelInvulnerable();
901 void InitInvulnerable();
902 void TickTeamSpawn();
903 bool ShouldForceSpectatorOnDeath()
const;
904 bool HasVehicle()
const override;
905 void setContentsSolid()
override;
906 void UserSelectWeapon(
bool bWait);
907 void PickWeaponEvent(
Event *ev);
908 bool AllowTeamRespawn()
const;
909 void EventUseWeaponClass(
Event *ev)
override;
910 void EventAddKills(
Event *ev);
911 bool CanKnockback(
float minHealth)
const;
916 void EventKillAxis(
Event *ev);
917 void EventGetTurret(
Event *ev);
918 void EventGetVehicle(
Event *ev);
921 void FindAlias(
str& output,
str name, AliasListNode_t **node);
923 bool HasVotedYes()
const;
924 bool HasVotedNo()
const;
931 qboolean CheckCanSwitchTeam(teamtype_t team);
933 qboolean ViewModelAnim(
str anim, qboolean force_restart, qboolean bFullAnim);
934 virtual void Spawned(
void);
936 void AddDeaths(
Event *ev);
937 void AdminRights(
Event *ev);
938 void BindWeap(
Event *ev);
939 void Dive(
Event *ev);
940 void EventSetTeam(
Event *ev);
941 void EventGetViewModelAnim(
Event *ev);
942 void EventGetViewModelAnimFinished(
Event *ev);
943 void EventGetViewModelAnimValid(
Event *ev);
944 void FreezeControls(
Event *ev);
945 void GetConnState(
Event *ev);
946 void GetDamageMultiplier(
Event *ev);
947 void GetKills(
Event *ev);
948 void GetDeaths(
Event *ev);
949 void GetKillHandler(
Event *ev);
950 void GetMoveSpeedScale(
Event *ev);
951 void GetLegsState(
Event *ev);
952 void GetStateFile(
Event *ev);
953 void GetTorsoState(
Event *ev);
954 void Inventory(
Event *ev);
955 void InventorySet(
Event *ev);
956 void IsAdmin(
Event *ev);
957 void JoinDMTeamReal(
Event *ev);
958 void JoinDMTeam(
Event *ev);
959 void LeanLeftHeld(
Event *ev);
960 void LeanRightHeld(
Event *ev);
961 void PlayLocalSound(
Event *ev);
962 void RunHeld(
Event *ev);
963 void SecFireHeld(
Event *ev);
964 void SetAnimSpeed(
Event *ev);
965 void SetKillHandler(
Event *ev);
966 void SetSpeed(
Event *ev);
967 void SetStateFile(
Event *ev);
968 void HideEntity(
Event *ev);
969 void ShowEntity(
Event *ev);
970 void StopLocalSound(
Event *ev);
971 void Userinfo(
Event *ev);
973 void EventEarthquake(
Event *ev);
974 void SetClientFlag(
Event *ev);
975 void SetEntityShader(
Event *ev);
976 void SetLocalSoundRate(
Event *ev);
977 void SetVMASpeed(
Event *ev);
978 void VisionGetNaked(
Event *ev);
979 void VisionSetBlur(
Event *ev);
980 void VisionSetNaked(
Event *ev);
983 void Postthink()
override;
984 void GibEvent(
Event *ev);
986 qboolean canUse(Entity *entity,
bool requiresLookAt);
987 int getUseableEntities(
int *touch,
int maxcount,
bool requiresLookAt =
true);
990inline void Player::Archive(
Archiver& arc)
994 Sentient::Archive(arc);
996 arc.ArchiveInteger(&m_iPartSlot[0]);
997 arc.ArchiveInteger(&m_iPartSlot[1]);
999 arc.ArchiveFloat(&m_fPartBlends[0]);
1000 arc.ArchiveFloat(&m_fPartBlends[1]);
1001 arc.ArchiveFloat(&partBlendMult[0]);
1002 arc.ArchiveFloat(&partBlendMult[1]);
1004 arc.ArchiveString(&last_torso_anim_name);
1005 arc.ArchiveString(&last_leg_anim_name);
1006 arc.ArchiveString(&partAnim[0]);
1007 arc.ArchiveString(&partAnim[1]);
1008 arc.ArchiveString(&partOldAnim[0]);
1009 arc.ArchiveString(&partOldAnim[1]);
1011 arc.ArchiveString(&m_sPerferredWeaponOverride);
1013 arc.ArchiveBool(&animdone_Legs);
1014 arc.ArchiveBool(&animdone_Torso);
1016 arc.ArchiveInteger(&m_iMovePosFlags);
1017 ArchiveEnum(movecontrol, movecontrol_t);
1018 arc.ArchiveInteger(&last_camera_type);
1020 arc.ArchiveVector(&oldvelocity);
1021 arc.ArchiveVector(&old_v_angle);
1022 arc.ArchiveVector(&oldorigin);
1023 arc.ArchiveFloat(&animspeed);
1024 arc.ArchiveFloat(&airspeed);
1026 arc.ArchiveVector(&m_vPushVelocity);
1028 arc.ArchiveRaw(blend,
sizeof(blend));
1029 arc.ArchiveFloat(&fov);
1030 arc.ArchiveFloat(&selectedfov);
1031 arc.ArchiveInteger(&m_iInZoomMode);
1033 arc.ArchiveVector(&v_angle);
1034 arc.ArchiveVector(&m_vViewPos);
1035 arc.ArchiveVector(&m_vViewAng);
1037 arc.ArchiveInteger(&buttons);
1038 arc.ArchiveInteger(&new_buttons);
1039 arc.ArchiveInteger(&server_new_buttons);
1040 arc.ArchiveFloat(&respawn_time);
1042 arc.ArchiveInteger(&last_attack_button);
1044 arc.ArchiveFloat(&damage_blood);
1045 arc.ArchiveFloat(&damage_alpha);
1046 arc.ArchiveVector(&damage_blend);
1047 arc.ArchiveVector(&damage_from);
1048 arc.ArchiveVector(&damage_angles);
1049 arc.ArchiveFloat(&damage_count);
1050 arc.ArchiveFloat(&next_painsound_time);
1052 arc.ArchiveSafePointer(&camera);
1053 arc.ArchiveSafePointer(&actor_camera);
1054 arc.ArchiveSafePointer(&actor_to_watch);
1056 arc.ArchiveBoolean(&actor_camera_right);
1057 arc.ArchiveBoolean(&starting_actor_camera_right);
1059 arc.ArchiveInteger(&music_current_mood);
1060 arc.ArchiveInteger(&music_fallback_mood);
1062 arc.ArchiveFloat(&music_current_volume);
1063 arc.ArchiveFloat(&music_saved_volume);
1064 arc.ArchiveFloat(&music_volume_fade_time);
1066 arc.ArchiveInteger(&reverb_type);
1067 arc.ArchiveFloat(&reverb_level);
1069 arc.ArchiveBoolean(&gibbed);
1070 arc.ArchiveFloat(&pain);
1072 ArchiveEnum(pain_dir, painDirection_t);
1073 ArchiveEnum(pain_type, meansOfDeath_t);
1075 arc.ArchiveInteger(&pain_location);
1076 arc.ArchiveBool(&take_pain);
1077 arc.ArchiveInteger(&nextpaintime);
1079 arc.ArchiveFloat(&m_fHealRate);
1081 arc.ArchiveBool(&knockdown);
1082 arc.ArchiveBool(&canfall);
1083 arc.ArchiveBool(&falling);
1085 arc.ArchiveInteger(&feetfalling);
1086 arc.ArchiveVector(&falldir);
1088 arc.ArchiveBool(&mediumimpact);
1089 arc.ArchiveBool(&hardimpact);
1091 arc.ArchiveBoolean(&music_forced);
1093 arc.ArchiveRaw(&last_ucmd,
sizeof(usercmd_t));
1094 arc.ArchiveRaw(&last_eyeinfo,
sizeof(usereyes_t));
1096 arc.ArchiveFloat(&animheight);
1098 arc.ArchiveVector(&yaw_forward);
1099 arc.ArchiveVector(&yaw_left);
1101 arc.ArchiveSafePointer(&atobject);
1102 arc.ArchiveFloat(&atobject_dist);
1103 arc.ArchiveVector(&atobject_dir);
1105 arc.ArchiveSafePointer(&toucheduseanim);
1106 arc.ArchiveInteger(&useanim_numloops);
1107 arc.ArchiveSafePointer(&useitem_in_use);
1109 arc.ArchiveFloat(&move_left_vel);
1110 arc.ArchiveFloat(&move_right_vel);
1111 arc.ArchiveFloat(&move_backward_vel);
1112 arc.ArchiveFloat(&move_forward_vel);
1113 arc.ArchiveFloat(&move_up_vel);
1114 arc.ArchiveFloat(&move_down_vel);
1115 arc.ArchiveInteger(&moveresult);
1117 arc.ArchiveFloat(&damage_multiplier);
1119 arc.ArchiveString(&waitForState);
1120 arc.ArchiveInteger(&m_iNumObjectives);
1121 arc.ArchiveInteger(&m_iObjectivesCompleted);
1123 for (
int i = 0; i < MAX_TRAILS; i++) {
1124 arc.ArchiveVector(&mvTrail[i]);
1127 for (
int i = 0; i < MAX_TRAILS; i++) {
1128 arc.ArchiveVector(&mvTrailEyes[i]);
1131 arc.ArchiveInteger(&mCurTrailOrigin);
1132 arc.ArchiveInteger(&mLastTrailTime);
1134 arc.ArchiveInteger(&m_iNumHitsTaken);
1135 arc.ArchiveInteger(&m_iNumEnemiesKilled);
1136 arc.ArchiveInteger(&m_iNumObjectsDestroyed);
1137 arc.ArchiveInteger(&m_iNumShotsFired);
1138 arc.ArchiveInteger(&m_iNumHits);
1139 arc.ArchiveInteger(&m_iNumHeadShots);
1140 arc.ArchiveInteger(&m_iNumTorsoShots);
1141 arc.ArchiveInteger(&m_iNumLeftLegShots);
1142 arc.ArchiveInteger(&m_iNumRightLegShots);
1143 arc.ArchiveInteger(&m_iNumGroinShots);
1144 arc.ArchiveInteger(&m_iNumLeftArmShots);
1145 arc.ArchiveInteger(&m_iNumRightArmShots);
1149 ArchiveEnum(m_jailstate, jailstate_t);
1150 arc.ArchiveString(&m_sDmPrimary);
1151 arc.ArchiveBool(&m_bIsInJail);
1154 arc.ArchiveFloat(&m_fLastDeltaTime);
1158 arc.ArchiveFloat(&m_fLastSprintTime);
1159 arc.ArchiveBool(&m_bHasJumped);
1163 if (currentState_Legs) {
1164 tempStr = currentState_Legs->getName();
1168 arc.ArchiveString(&tempStr);
1170 if (currentState_Torso) {
1171 tempStr = currentState_Torso->getName();
1175 arc.ArchiveString(&tempStr);
1177 statemap_Legs = GetStatemap(
1178 str(g_statefile->string) +
"_Legs.st", (Condition<Class> *)m_conditions, &legs_conditionals,
false
1180 statemap_Torso = GetStatemap(
1181 str(g_statefile->string) +
"_Torso.st", (Condition<Class> *)m_conditions, &torso_conditionals,
false
1184 arc.ArchiveString(&tempStr);
1185 if (tempStr !=
"NULL") {
1186 currentState_Legs = statemap_Legs->FindState(tempStr);
1188 currentState_Legs = NULL;
1190 arc.ArchiveString(&tempStr);
1191 if (tempStr !=
"NULL") {
1192 currentState_Torso = statemap_Torso->FindState(tempStr);
1194 currentState_Torso = NULL;
1197 for (
int i = 1; i <= legs_conditionals.NumObjects(); i++) {
1198 Conditional *c = legs_conditionals.ObjectAt(i);
1200 if (Q_stricmp(c->getName(),
"PAIN") && !c->parmList.NumObjects()) {
1201 m_pLegsPainCond = c;
1206 for (
int i = 1; i <= torso_conditionals.NumObjects(); i++) {
1207 Conditional *c = torso_conditionals.ObjectAt(i);
1209 if (Q_stricmp(c->getName(),
"PAIN") && !c->parmList.NumObjects()) {
1210 m_pTorsoPainCond = c;
1216 if (arc.Loading()) {
1218 SetViewAngles(v_angle);
1227 arc.ArchiveBool(&m_bFrozen);
1228 arc.ArchiveBool(&animDoneVM);
1229 arc.ArchiveFloat(&m_fVMAtime);
1231 for (
int i = 0; i < MAX_SPEED_MULTIPLIERS; i++) {
1232 arc.ArchiveFloat(&speed_multiplier[i]);
1236inline Camera *Player::CurrentCamera(
void)
1241inline void Player::CameraCut(
void)
1246 client->ps.camera_flags = ((client->ps.camera_flags & CF_CAMERA_CUT_BIT) ^ CF_CAMERA_CUT_BIT)
1247 | (client->ps.camera_flags & ~CF_CAMERA_CUT_BIT);
1250inline void Player::CameraCut(
Camera *ent)
1252 if (ent == camera) {
1258inline void Player::SetCamera(
Camera *ent,
float switchTime)
1261 client->ps.camera_time = switchTime;
1262 if (switchTime <= 0.0f) {
Definition characterstate.h:82
Definition container.h:85
Definition dm_manager.h:38
Definition listener.h:246
Definition playerstart.h:34
Definition scriptdelegate.h:100
Definition gamescript.h:165
Definition characterstate.h:302
Definition characterstate.h:216
Definition uiconsole.h:27
Definition characterstate.h:76
Definition bg_public.h:284