128class Player :
public Sentient
131 friend class Vehicle;
132 friend class TurretGun;
133 friend class VehicleTurretGun;
137 static movecontrolfunc_t MoveStartFuncs[];
142 State *currentState_Legs;
143 State *currentState_Torso;
145 str last_torso_anim_name;
146 str last_leg_anim_name;
149 float m_fPartBlends[2];
151 float partBlendMult[2];
163 float m_fLastDeltaTime;
165 movecontrol_t movecontrol;
167 int last_camera_type;
174 Vector m_vPushVelocity;
180 qboolean m_iInZoomMode;
187 int server_new_buttons;
190 int last_attack_button;
197 Vector damage_angles;
200 float next_painsound_time;
203 SafePtr<Camera> camera;
204 SafePtr<Camera> actor_camera;
205 SimpleActorPtr actor_to_watch;
207 qboolean actor_camera_right;
208 qboolean starting_actor_camera_right;
211 int music_current_mood;
212 int music_fallback_mood;
213 float music_current_volume;
214 float music_saved_volume;
215 float music_volume_fade_time;
222 painDirection_t pain_dir;
223 meansOfDeath_t pain_type;
228 float m_fMineCheckTime;
241 qboolean music_forced;
244 usereyes_t last_eyeinfo;
251 SafePtr<Entity> atobject;
255 SafePtr<Entity> toucheduseanim;
256 int useanim_numloops;
257 SafePtr<Entity> useitem_in_use;
260 float move_right_vel;
261 float move_backward_vel;
262 float move_forward_vel;
267 float damage_multiplier;
272 voicetype_t m_voiceType;
278 int num_lost_matches;
280 int m_iLastNumTeamKills;
282 bool m_bTempSpectator;
284 bool m_bSpectatorSwitching;
285 bool m_bAllowFighting;
287 int m_iPlayerSpectating;
290 class SafePtr<
DM_Team> current_team;
291 float m_fTeamSelectTime;
299 float m_fAllowVoteTime;
300 float m_fNextVoteOptionTime;
302 float m_fWeapSelectTime;
303 float fAttackerDispTime;
304 SafePtr<Entity> pAttackerDistPointer;
307 int m_iInfoClientHealth;
308 float m_fInfoClientTime;
309 bool m_bDeathSpectator;
310 jailstate_t m_jailstate;
317 MulticastDelegate<void(
const str& text)> delegate_stufftext;
318 MulticastDelegate<void()> delegate_spawned;
328 int m_iNumObjectives;
329 int m_iObjectivesCompleted;
331 str m_sPerferredWeaponOverride;
336 Vector mvTrail[MAX_TRAILS];
337 Vector mvTrailEyes[MAX_TRAILS];
341 int m_iNumEnemiesKilled;
342 int m_iNumObjectsDestroyed;
343 int m_iNumShotsFired;
346 int m_iNumTorsoShots;
347 int m_iNumLeftLegShots;
348 int m_iNumRightLegShots;
349 int m_iNumGroinShots;
350 int m_iNumLeftArmShots;
351 int m_iNumRightArmShots;
353 float m_fLastSprintTime;
355 float m_fLastInvulnerableTime;
356 int m_iInvulnerableTimeRemaining;
357 float m_fInvulnerableTimeElapsed;
358 float m_fSpawnTimeLeft;
359 bool m_bRespawnWhenReady;
360 bool m_bReadyToRespawn;
367 float speed_multiplier[MAX_SPEED_MULTIPLIERS];
380 con_map<str, vma_t> vmalist;
388 int m_iInstantMessageTime;
400 qboolean CondImmediateSwitch(
Conditional& condition);
402 qboolean CondUseWeaponClass(
Conditional& condition);
404 qboolean CondWeaponClassActive(
Conditional& condition);
405 qboolean CondWeaponCurrentFireAnim(
Conditional& condition);
406 qboolean CondWeaponReadyToFire(
Conditional& condition);
407 qboolean CondWeaponClassReadyToFire(
Conditional& condition);
415 qboolean CondCanPlaceLandmine(
Conditional& condition);
418 void MeasureLandmineDistances();
419 qboolean CondIsAssistingEscape(
Conditional& condition);
421 qboolean CondWeaponReadyToFireNoSound(
Conditional& condition);
423 qboolean CondPutAwayOffHand(
Conditional& condition);
424 qboolean CondAnyWeaponActive(
Conditional& condition);
425 qboolean CondAttackBlocked(
Conditional& condition);
428 qboolean CondWeaponHasAmmo(
Conditional& condition);
429 qboolean CondWeaponHasAmmoInClip(
Conditional& condition);
431 qboolean CondWeaponsHolstered(
Conditional& condition);
433 qboolean CondNewWeaponIsItem(
Conditional& condition);
435 qboolean CondMinChargeTime(
Conditional& condition);
436 qboolean CondMaxChargeTime(
Conditional& condition);
451 qboolean CondAnimDoneTorso(
Conditional& condition);
452 qboolean CondActionAnimDone(
Conditional& condition);
455 qboolean CondRightVelocity(
Conditional& condition);
456 qboolean CondBackwardVelocity(
Conditional& condition);
457 qboolean CondForwardVelocity(
Conditional& condition);
461 qboolean Cond22DegreeSlope(
Conditional& condition);
462 qboolean Cond45DegreeSlope(
Conditional& condition);
472 qboolean CondPainDirection(
Conditional& condition);
474 qboolean CondPainThreshold(
Conditional& condition);
480 qboolean CondUseAnimFinished(
Conditional& condition);
482 qboolean CondLoopUseObject(
Conditional& condition);
489 qboolean CondCanClimbUpLadder(
Conditional& condition);
490 qboolean CondCanClimbDownLadder(
Conditional& condition);
491 qboolean CondCanGetOffLadderTop(
Conditional& condition);
492 qboolean CondCanGetOffLadderBottom(
Conditional& condition);
494 qboolean CondFacingUpSlope(
Conditional& condition);
495 qboolean CondFacingDownSlope(
Conditional& condition);
501 qboolean CondDuckedViewInWater(
Conditional& condition);
502 qboolean CondCheckMovementSpeed(
Conditional& condition);
503 qboolean CondAttackPrimary(
Conditional& condition);
504 qboolean CondAttackSecondary(
Conditional& condition);
505 qboolean CondAttackButtonPrimary(
Conditional& condition);
506 qboolean CondAttackButtonSecondary(
Conditional& condition);
511 qboolean CondClientCommand(
Conditional& condition);
520 void StartPush(
void);
521 void StartClimbLadder(
void);
522 void StartUseAnim(
void);
523 void StartLoopUseAnim(
void);
524 void SetupUseObject(
void);
526 void StartUseObject(Event *ev);
527 void FinishUseObject(Event *ev);
528 void FinishUseAnim(Event *ev);
529 void Turn(Event *ev);
530 void TurnUpdate(Event *ev);
531 void TurnLegs(Event *ev);
533 CLASS_PROTOTYPE(Player);
539 void InitSound(
void);
540 void InitEdict(
void);
541 void InitClient(
void);
542 void InitPhysics(
void);
543 void InitPowerups(
void);
544 void InitWorldEffects(
void);
545 void InitMaxAmmo(
void);
546 void InitWeapons(
void);
548 void InitModel(
void);
549 void InitState(
void);
550 void InitHealth(
void);
551 void InitInventory(
void);
552 void InitDeathmatch(
void);
553 void InitStats(
void);
556 bool QueryLandminesAllowed()
const;
557 void EnsurePlayerHasAllowedWeapons();
560 void EquipWeapons_ver8();
561 void ChooseSpawnPoint(
void);
563 void EndLevel(Event *ev);
564 void Respawn(Event *ev);
566 void SetDeltaAngles(
void)
override;
567 void setAngles(Vector ang)
override;
568 void SetViewangles(Event *ev);
569 void GetViewangles(Event *ev);
571 void DoUse(Event *ev);
572 void Obituary(Entity *attacker, Entity *inflictor,
int meansofdeath,
int iLocation);
573 void Killed(Event *ev)
override;
574 void Dead(Event *ev);
575 void Pain(Event *ev);
578 void AttachToLadder(Event *ev);
579 void UnattachFromLadder(Event *ev);
580 void TweakLadderPos(Event *ev);
581 void EnsureOverLadder(Event *ev);
582 void EnsureForwardOffLadder(Event *ev);
587 void EventForceLandmineMeasure(Event *ev)
override;
588 str GetCurrentDMWeaponType()
const;
592 void SetMoveInfo(
pmove_t *pm, usercmd_t *ucmd);
593 pmtype_t GetMovePlayerMoveType(
void);
594 void ClientMove(usercmd_t *ucmd);
595 void VehicleMove(usercmd_t *ucmd);
596 void TurretMove(usercmd_t *ucmd);
597 void CheckMoveFlags(
void);
598 void ClientInactivityTimer(
void);
599 void ClientThink(
void)
override;
600 void UpdateEnemies(
void);
602 void InitLegsStateTable(
void);
603 void InitTorsoStateTable(
void);
604 void LoadStateTable(
void);
605 void ResetState(Event *ev);
606 void EvaluateState(
State *forceTorso = NULL,
State *forceLegs = NULL);
608 void CheckGround(
void)
override;
609 void UpdateViewAngles(usercmd_t *cmd);
610 qboolean AnimMove(Vector& move, Vector *endpos = NULL);
611 qboolean TestMove(Vector& pos, Vector *endpos = NULL);
612 qboolean CheckMove(Vector& move, Vector *endpos = NULL);
614 float CheckMoveDist(Vector& delta);
615 float TestMoveDist(Vector& pos);
617 void EndAnim_Legs(Event *ev);
618 void EndAnim_Torso(Event *ev);
619 void EndAnim_Pain(Event *ev);
620 void SetPartAnim(
const char *anim, bodypart_t slot = legs);
621 void StopPartAnimating(bodypart_t part);
622 void PausePartAnim(bodypart_t part);
623 int CurrentPartAnim(bodypart_t part)
const;
624 void AdjustAnimBlends(
void);
625 void PlayerAnimDelta(
float *vDelta);
626 void TouchedUseAnim(Entity *ent);
628 void SelectPreviousItem(Event *ev);
629 void SelectNextItem(Event *ev);
630 void SelectPreviousWeapon(Event *ev);
631 void SelectNextWeapon(Event *ev);
632 void DropCurrentWeapon(Event *ev);
633 void PlayerReload(Event *ev);
634 void EventCorrectWeaponAttachments(Event *ev);
636 void GiveCheat(Event *ev);
637 void GiveWeaponCheat(Event *ev);
638 void GiveAllCheat(Event *ev);
639 void GiveNewWeaponsCheat(Event *ev);
640 void GodCheat(Event *ev);
641 void FullHeal(Event *ev);
642 void NoTargetCheat(Event *ev);
643 void NoclipCheat(Event *ev);
644 void Kill(Event *ev);
645 void SpawnEntity(Event *ev);
646 void SpawnActor(Event *ev);
647 void ListInventoryEvent(Event *ev);
648 void EventGetIsEscaping(Event *ev);
649 void EventJailEscapeStop(Event *ev);
650 void EventJailAssistEscape(Event *ev);
651 void EventJailEscape(Event *ev);
652 void EventTeleport(Event *ev);
653 void EventFace(Event *ev);
654 void EventCoord(Event *ev);
655 void EventTestAnim(Event *ev);
657 void GameVersion(Event *ev);
659 void EventSetSelectedFov(Event *ev);
660 void SetSelectedFov(
float newFov);
661 void GetPlayerView(Vector *pos, Vector *angle);
663 float CalcRoll(
void);
664 void WorldEffects(
void);
665 void AddBlend(
float r,
float g,
float b,
float a);
666 void CalcBlend(
void)
override;
667 void DamageFeedback(
void);
669 void CopyStats(Player *player);
670 void UpdateStats(
void);
671 void UpdateMusic(
void);
672 void UpdateReverb(
void);
673 void UpdateMisc(
void);
675 void SetReverb(str type,
float level);
676 void SetReverb(
int type,
float level);
677 void SetReverb(Event *ev);
679 Camera *CurrentCamera(
void);
680 void SetCamera(Camera *ent,
float switchTime);
681 void CameraCut(
void);
682 void CameraCut(Camera *ent);
690 float camerablend[4],
693 void SetupView(
void);
695 void ProcessPmoveEvents(
int event);
697 void PlayerAngles(
void);
698 void FinishMove(
void);
699 void EndFrame(
void)
override;
701 void TestThread(Event *ev);
702 Vector EyePosition(
void)
override;
703 Vector GunTarget(
bool bNoCollision,
const vec3_t position,
const vec3_t forward)
override;
705 void GotKill(Event *ev);
706 void SetPowerupTimer(Event *ev);
707 void UpdatePowerupTimer(Event *ev);
709 void WhatIs(Event *ev);
710 void ActorInfo(Event *ev);
711 void Taunt(Event *ev);
713 void ChangeMusic(
const char *current,
const char *fallback, qboolean force);
714 void ChangeMusicVolume(
float volume,
float fade_time);
715 void RestoreMusicVolume(
float fade_time);
717 void Archive(
Archiver& arc)
override;
718 void ArchivePersistantData(
Archiver& arc);
720 void KillEnt(Event *ev);
721 void RemoveEnt(Event *ev);
722 void KillClass(Event *ev);
723 void RemoveClass(Event *ev);
725 void addOrigin(Vector org)
override;
727 void Jump(Event *ev);
728 void JumpXY(Event *ev);
730 void SetViewAngles(Vector angles)
override;
731 void SetTargetViewAngles(Vector angles)
override;
733 Vector GetViewAngles(
void)
override {
return v_angle; };
735 void SetFov(
float newFov);
736 float GetFov()
const;
738 void ToggleZoom(
int iZoom);
740 void ZoomOffEvent(Event *ev);
741 qboolean IsZoomed(
void);
742 void SafeZoomed(Event *ev);
743 void DumpState(Event *ev);
744 void ForceLegsState(Event *ev);
745 void ForceTorsoState(Event *ev);
747 Vector GetAngleToTarget(Entity *ent, str tag,
float yawclamp,
float pitchclamp, Vector baseangles);
750 void AcquireTarget(
void);
751 void RemoveTarget(Entity *ent_to_remove);
753 void DebugWeaponTags(
int controller_tag,
Weapon *weapon, str weapon_tagname);
754 void NextPainTime(Event *ev);
755 void SetTakePain(Event *ev);
757 void SetMouthAngle(Event *ev);
759 void EnterVehicle(Event *ev);
760 void ExitVehicle(Event *ev);
761 void EnterTurret(TurretGun *ent);
762 void EnterTurret(Event *ev);
763 void ExitTurret(
void);
764 void ExitTurret(Event *ev);
765 void Holster(Event *ev);
766 void HolsterToggle(Event *ev);
768 void RemoveFromVehiclesAndTurretsInternal(
void);
769 void RemoveFromVehiclesAndTurrets(
void);
770 void WatchActor(Event *ev);
771 void StopWatchingActor(Event *ev);
772 painDirection_t Pain_string_to_int(str pain);
774 inline Vector GetVAngles(
void) {
return v_angle; }
777 void VelocityModified(
void)
override;
778 int GetKnockback(
int original_knockback, qboolean blocked);
779 int GetMoveResult(
void);
780 void ReceivedItem(
Item *
item)
override;
781 void RemovedItem(
Item *
item)
override;
782 void AmmoAmountChanged(
Ammo *ammo,
int inclip = 0)
override;
784 void WaitForState(Event *ev);
785 void SkipCinematic(Event *ev);
786 void SetDamageMultiplier(Event *ev);
787 void LogStats(Event *ev);
789 void PlayerShowModel(Event *ev);
790 void showModel(
void)
override;
791 void ResetHaveItem(Event *ev);
793 void ModifyHeight(Event *ev);
795 void ModifyHeightFloat(Event *ev);
797 void SetMovePosFlags(Event *ev);
798 void GetPositionForScript(Event *ev);
799 void GetMovementForScript(Event *ev);
800 void EventStuffText(Event *ev);
801 void EventSetVoiceType(Event *ev);
802 void GetTeamDialogPrefix(str& outPrefix);
803 void PlayInstantMessageSound(
const char *name);
804 void EventDMMessage(Event *ev);
807 str GetBattleLanguageCondition()
const;
808 str GetBattleLanguageDirection()
const;
809 str GetBattleLanguageLocation()
const;
810 str GetBattleLanguageLocalFolks();
811 str GetBattleLanguageWeapon()
const;
812 str GetBattleLanguageDistance()
const;
813 str GetBattleLanguageDistanceMeters(
float dist)
const;
814 str GetBattleLanguageDistanceFeet(
float dist)
const;
815 str GetBattleLanguageTarget()
const;
816 str TranslateBattleLanguageTokens(
const char *
string);
818 void EventIPrint(Event *ev);
819 void EventGetUseHeld(Event *ev);
820 void EventGetFireHeld(Event *ev);
821 void EventGetPrimaryFireHeld(Event *ev);
822 void EventGetSecondaryFireHeld(Event *ev);
823 void Score(Event *ev);
824 void Join_DM_Team(Event *ev);
825 void Auto_Join_DM_Team(Event *ev);
826 void Leave_DM_Team(Event *ev);
827 teamtype_t GetTeam()
const;
828 void SetTeam(teamtype_t team);
829 bool IsSpectator(
void);
830 void BeginFight(
void);
832 void Spectator(
void);
833 void Spectator(Event *ev);
834 void SetPlayerSpectate(
bool bNext);
835 void SetPlayerSpectateRandom(
void);
836 bool IsValidSpectatePlayer(Player *pPlayer);
837 void GetSpectateFollowOrientation(Player *pPlayer, Vector& vPos, Vector& vAng);
838 void UpdateStatus(
const char *s);
839 void SetDM_Team(
DM_Team *team);
841 void WarpToPoint(Entity *spawnpoint);
843 void ArmorDamage(Event *ev)
override;
844 void HUDPrint(
const char *s);
845 void Disconnect(
void);
848 int GetNumKills()
const;
849 int GetNumDeaths()
const;
850 void AddKills(
int num);
851 void AddDeaths(
int num);
852 void CallVote(Event *ev);
853 void Vote(Event *ev);
854 void RetrieveVoteOptions(Event *ev);
855 void EventPrimaryDMWeapon(Event *ev);
856 void EventSecondaryDMWeapon(Event *ev);
858 void DeadBody(Event *ev);
861 void LostMatch(
void);
862 int GetMatchesWon()
const;
863 int GetMatchesLost()
const;
867 void GetIsSpectator(Event *ev);
868 void EventSetInJail(Event *ev);
869 bool IsInJail()
const;
870 void EventGetInJail(Event *ev);
871 void GetNationalityPrefix(Event *ev);
873 void GetIsDisguised(Event *ev);
874 void GetHasDisguise(Event *ev);
875 void SetHasDisguise(Event *ev);
876 void SetObjectiveCount(Event *ev);
878 void EventDMDeathDrop(Event *ev);
879 void EventStopwatch(Event *ev);
880 void KilledPlayerInDeathmatch(Player *killed, meansOfDeath_t meansofdeath);
881 void SetStopwatch(
int iDuration, stopWatchType_t type = SWT_NORMAL);
882 void BeginTempSpectator(
void);
883 void EndSpectator(
void);
885 PlayerStart *GetLastSpawnpoint()
const {
return m_pLastSpawnpoint; }
887 void Stats(Event *ev);
888 void ArmWithWeapons(Event *ev);
889 void EventGetCurrentDMWeaponType(Event *ev);
890 void PhysicsOn(Event *ev);
891 void PhysicsOff(Event *ev);
893 void Think()
override;
894 bool IsReady(
void)
const;
896 void EventGetReady(Event *ev);
897 void EventSetReady(Event *ev);
898 void EventSetNotReady(Event *ev);
899 void EventGetDMTeam(Event *ev);
900 void EventGetNetName(Event *ev);
901 void EventSetViewModelAnim(Event *ev);
902 void EventEnterIntermission(Event *ev);
903 void EventSetPerferredWeapon(Event *ev);
905 bool BlocksAIMovement();
910 float GetRunSpeed()
const;
911 void FireWeapon(
int number, firemode_t mode)
override;
912 void SetInvulnerable();
913 void TickInvulnerable();
914 void SetVulnerable();
915 bool IsInvulnerable();
916 void CancelInvulnerable();
917 void InitInvulnerable();
918 void TickTeamSpawn();
919 bool ShouldForceSpectatorOnDeath()
const;
920 bool HasVehicle()
const override;
921 void setContentsSolid()
override;
922 void UserSelectWeapon(
bool bWait);
923 void PickWeaponEvent(Event *ev);
924 bool AllowTeamRespawn()
const;
925 void EventUseWeaponClass(Event *ev)
override;
926 void EventAddKills(Event *ev);
927 bool CanKnockback(
float minHealth)
const;
932 void EventKillAxis(Event *ev);
933 void EventGetTurret(Event *ev);
934 void EventGetVehicle(Event *ev);
937 void FindAlias(str& output, str name, AliasListNode_t **node);
939 bool HasVotedYes()
const;
940 bool HasVotedNo()
const;
947 qboolean CheckCanSwitchTeam(teamtype_t team);
949 qboolean ViewModelAnim(str anim, qboolean force_restart, qboolean bFullAnim);
950 virtual void Spawned(
void);
952 void RemoveOwnedProjectiles();
954 void AddDeaths(Event *ev);
955 void AdminRights(Event *ev);
956 void BindWeap(Event *ev);
957 void Dive(Event *ev);
958 void EventSetTeam(Event *ev);
959 void FreezeControls(Event *ev);
960 void GetConnState(Event *ev);
961 void GetDamageMultiplier(Event *ev);
962 void GetKills(Event *ev);
963 void GetDeaths(Event *ev);
964 void GetKillHandler(Event *ev);
965 void GetMoveSpeedScale(Event *ev);
966 void GetLegsState(Event *ev);
967 void GetStateFile(Event *ev);
968 void GetTorsoState(Event *ev);
969 void GetUserInfo(Event *ev);
970 void Inventory(Event *ev);
971 void InventorySet(Event *ev);
972 void IsAdmin(Event *ev);
973 void JoinDMTeamReal(Event *ev);
974 void JoinDMTeam(Event *ev);
975 void LeanLeftHeld(Event *ev);
976 void LeanRightHeld(Event *ev);
977 void PlayLocalSound(Event *ev);
978 void RunHeld(Event *ev);
979 void SecFireHeld(Event *ev);
980 void SetAnimSpeed(Event *ev);
981 void SetKillHandler(Event *ev);
982 void SetSpeed(Event *ev);
983 void SetStateFile(Event *ev);
984 void HideEntity(Event *ev);
985 void ShowEntity(Event *ev);
986 void StopLocalSound(Event *ev);
987 void Userinfo(Event *ev);
992 void EventGetViewModelAnim(Event *ev);
993 void EventGetViewModelAnimFinished(Event *ev);
994 void EventGetViewModelAnimValid(Event *ev);
996 void EventEarthquake(Event *ev);
997 void SetClientFlag(Event *ev);
998 void SetEntityShader(Event *ev);
999 void SetLocalSoundRate(Event *ev);
1000 void SetVMASpeed(Event *ev);
1001 void VisionGetNaked(Event *ev);
1002 void VisionSetBlur(Event *ev);
1003 void VisionSetNaked(Event *ev);
1006 bool IsPrimaryWeaponValid()
const;
1008 void PostAnimate()
override;
1009 void Postthink()
override;
1010 void GibEvent(Event *ev);
1012 qboolean canUse(Entity *entity,
bool requiresLookAt);
1013 int getUseableEntities(
int *touch,
int maxcount,
bool requiresLookAt =
true);