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;
172 Vector m_vPushVelocity;
178 qboolean m_iInZoomMode;
185 int server_new_buttons;
188 int last_attack_button;
195 Vector damage_angles;
198 float next_painsound_time;
201 SafePtr<Camera> camera;
202 SafePtr<Camera> actor_camera;
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;
249 SafePtr<Entity> atobject;
253 SafePtr<Entity> toucheduseanim;
254 int useanim_numloops;
255 SafePtr<Entity> useitem_in_use;
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;
288 class SafePtr<
DM_Team> current_team;
289 float m_fTeamSelectTime;
297 float m_fAllowVoteTime;
298 float m_fNextVoteOptionTime;
300 float m_fWeapSelectTime;
301 float fAttackerDispTime;
302 SafePtr<Entity> pAttackerDistPointer;
305 int m_iInfoClientHealth;
306 float m_fInfoClientTime;
307 bool m_bDeathSpectator;
308 jailstate_t m_jailstate;
315 MulticastDelegate<void(
const str& text)> delegate_stufftext;
316 MulticastDelegate<void()> delegate_spawned;
326 int m_iNumObjectives;
327 int m_iObjectivesCompleted;
329 str m_sPerferredWeaponOverride;
334 Vector mvTrail[MAX_TRAILS];
335 Vector mvTrailEyes[MAX_TRAILS];
339 int m_iNumEnemiesKilled;
340 int m_iNumObjectsDestroyed;
341 int m_iNumShotsFired;
344 int m_iNumTorsoShots;
345 int m_iNumLeftLegShots;
346 int m_iNumRightLegShots;
347 int m_iNumGroinShots;
348 int m_iNumLeftArmShots;
349 int m_iNumRightArmShots;
351 float m_fLastSprintTime;
353 float m_fLastInvulnerableTime;
354 int m_iInvulnerableTimeRemaining;
355 float m_fInvulnerableTimeElapsed;
356 float m_fSpawnTimeLeft;
357 bool m_bRespawnWhenReady;
358 bool m_bReadyToRespawn;
366 float speed_multiplier[MAX_SPEED_MULTIPLIERS];
376 con_map<str, vma_t> vmalist;
384 int m_iInstantMessageTime;
396 qboolean CondImmediateSwitch(
Conditional& condition);
398 qboolean CondUseWeaponClass(
Conditional& condition);
400 qboolean CondWeaponClassActive(
Conditional& condition);
401 qboolean CondWeaponCurrentFireAnim(
Conditional& condition);
402 qboolean CondWeaponReadyToFire(
Conditional& condition);
403 qboolean CondWeaponClassReadyToFire(
Conditional& condition);
411 qboolean CondCanPlaceLandmine(
Conditional& condition);
414 void MeasureLandmineDistances();
415 qboolean CondIsAssistingEscape(
Conditional& condition);
417 qboolean CondWeaponReadyToFireNoSound(
Conditional& condition);
419 qboolean CondPutAwayOffHand(
Conditional& condition);
420 qboolean CondAnyWeaponActive(
Conditional& condition);
421 qboolean CondAttackBlocked(
Conditional& condition);
424 qboolean CondWeaponHasAmmo(
Conditional& condition);
425 qboolean CondWeaponHasAmmoInClip(
Conditional& condition);
427 qboolean CondWeaponsHolstered(
Conditional& condition);
429 qboolean CondNewWeaponIsItem(
Conditional& condition);
431 qboolean CondMinChargeTime(
Conditional& condition);
432 qboolean CondMaxChargeTime(
Conditional& condition);
447 qboolean CondAnimDoneTorso(
Conditional& condition);
448 qboolean CondActionAnimDone(
Conditional& condition);
451 qboolean CondRightVelocity(
Conditional& condition);
452 qboolean CondBackwardVelocity(
Conditional& condition);
453 qboolean CondForwardVelocity(
Conditional& condition);
457 qboolean Cond22DegreeSlope(
Conditional& condition);
458 qboolean Cond45DegreeSlope(
Conditional& condition);
468 qboolean CondPainDirection(
Conditional& condition);
470 qboolean CondPainThreshold(
Conditional& condition);
476 qboolean CondUseAnimFinished(
Conditional& condition);
478 qboolean CondLoopUseObject(
Conditional& condition);
485 qboolean CondCanClimbUpLadder(
Conditional& condition);
486 qboolean CondCanClimbDownLadder(
Conditional& condition);
487 qboolean CondCanGetOffLadderTop(
Conditional& condition);
488 qboolean CondCanGetOffLadderBottom(
Conditional& condition);
490 qboolean CondFacingUpSlope(
Conditional& condition);
491 qboolean CondFacingDownSlope(
Conditional& condition);
497 qboolean CondDuckedViewInWater(
Conditional& condition);
498 qboolean CondCheckMovementSpeed(
Conditional& condition);
499 qboolean CondAttackPrimary(
Conditional& condition);
500 qboolean CondAttackSecondary(
Conditional& condition);
501 qboolean CondAttackButtonPrimary(
Conditional& condition);
502 qboolean CondAttackButtonSecondary(
Conditional& condition);
507 qboolean CondClientCommand(
Conditional& condition);
516 void StartPush(
void);
517 void StartClimbLadder(
void);
518 void StartUseAnim(
void);
519 void StartLoopUseAnim(
void);
520 void SetupUseObject(
void);
522 void StartUseObject(Event *ev);
523 void FinishUseObject(Event *ev);
524 void FinishUseAnim(Event *ev);
525 void Turn(Event *ev);
526 void TurnUpdate(Event *ev);
527 void TurnLegs(Event *ev);
529 CLASS_PROTOTYPE(Player);
535 void InitSound(
void);
536 void InitEdict(
void);
537 void InitClient(
void);
538 void InitPhysics(
void);
539 void InitPowerups(
void);
540 void InitWorldEffects(
void);
541 void InitMaxAmmo(
void);
542 void InitWeapons(
void);
544 void InitModel(
void);
545 void InitState(
void);
546 void InitHealth(
void);
547 void InitInventory(
void);
548 void InitDeathmatch(
void);
549 void InitStats(
void);
552 bool QueryLandminesAllowed()
const;
553 void EnsurePlayerHasAllowedWeapons();
556 void EquipWeapons_ver8();
557 void ChooseSpawnPoint(
void);
559 void EndLevel(Event *ev);
560 void Respawn(Event *ev);
562 void SetDeltaAngles(
void)
override;
563 void setAngles(Vector ang)
override;
564 void SetViewangles(Event *ev);
565 void GetViewangles(Event *ev);
567 void DoUse(Event *ev);
568 void Obituary(Entity *attacker, Entity *inflictor,
int meansofdeath,
int iLocation);
569 void Killed(Event *ev)
override;
570 void Dead(Event *ev);
571 void Pain(Event *ev);
574 void AttachToLadder(Event *ev);
575 void UnattachFromLadder(Event *ev);
576 void TweakLadderPos(Event *ev);
577 void EnsureOverLadder(Event *ev);
578 void EnsureForwardOffLadder(Event *ev);
583 void EventForceLandmineMeasure(Event *ev)
override;
584 str GetCurrentDMWeaponType()
const;
588 void SetMoveInfo(
pmove_t *pm, usercmd_t *ucmd);
589 pmtype_t GetMovePlayerMoveType(
void);
590 void ClientMove(usercmd_t *ucmd);
591 void VehicleMove(usercmd_t *ucmd);
592 void TurretMove(usercmd_t *ucmd);
593 void CheckMoveFlags(
void);
594 void ClientInactivityTimer(
void);
595 void ClientThink(
void)
override;
596 void UpdateEnemies(
void);
598 void InitLegsStateTable(
void);
599 void InitTorsoStateTable(
void);
600 void LoadStateTable(
void);
601 void ResetState(Event *ev);
602 void EvaluateState(
State *forceTorso = NULL,
State *forceLegs = NULL);
604 void CheckGround(
void)
override;
605 void UpdateViewAngles(usercmd_t *cmd);
606 qboolean AnimMove(Vector& move, Vector *endpos = NULL);
607 qboolean TestMove(Vector& pos, Vector *endpos = NULL);
608 qboolean CheckMove(Vector& move, Vector *endpos = NULL);
610 float CheckMoveDist(Vector& delta);
611 float TestMoveDist(Vector& pos);
613 void EndAnim_Legs(Event *ev);
614 void EndAnim_Torso(Event *ev);
615 void EndAnim_Pain(Event *ev);
616 void SetPartAnim(
const char *anim, bodypart_t slot = legs);
617 void StopPartAnimating(bodypart_t part);
618 void PausePartAnim(bodypart_t part);
619 int CurrentPartAnim(bodypart_t part)
const;
620 void AdjustAnimBlends(
void);
621 void PlayerAnimDelta(
float *vDelta);
622 void TouchedUseAnim(Entity *ent);
624 void SelectPreviousItem(Event *ev);
625 void SelectNextItem(Event *ev);
626 void SelectPreviousWeapon(Event *ev);
627 void SelectNextWeapon(Event *ev);
628 void DropCurrentWeapon(Event *ev);
629 void PlayerReload(Event *ev);
630 void EventCorrectWeaponAttachments(Event *ev);
632 void GiveCheat(Event *ev);
633 void GiveWeaponCheat(Event *ev);
634 void GiveAllCheat(Event *ev);
635 void GiveNewWeaponsCheat(Event *ev);
636 void GodCheat(Event *ev);
637 void FullHeal(Event *ev);
638 void NoTargetCheat(Event *ev);
639 void NoclipCheat(Event *ev);
640 void Kill(Event *ev);
641 void SpawnEntity(Event *ev);
642 void SpawnActor(Event *ev);
643 void ListInventoryEvent(Event *ev);
644 void EventGetIsEscaping(Event *ev);
645 void EventJailEscapeStop(Event *ev);
646 void EventJailAssistEscape(Event *ev);
647 void EventJailEscape(Event *ev);
648 void EventTeleport(Event *ev);
649 void EventFace(Event *ev);
650 void EventCoord(Event *ev);
651 void EventTestAnim(Event *ev);
653 void GameVersion(Event *ev);
655 void EventSetSelectedFov(Event *ev);
656 void SetSelectedFov(
float newFov);
657 void GetPlayerView(Vector *pos, Vector *angle);
659 float CalcRoll(
void);
660 void WorldEffects(
void);
661 void AddBlend(
float r,
float g,
float b,
float a);
662 void CalcBlend(
void)
override;
663 void DamageFeedback(
void);
665 void CopyStats(Player *player);
666 void UpdateStats(
void);
667 void UpdateMusic(
void);
668 void UpdateReverb(
void);
669 void UpdateMisc(
void);
671 void SetReverb(str type,
float level);
672 void SetReverb(
int type,
float level);
673 void SetReverb(Event *ev);
675 Camera *CurrentCamera(
void);
676 void SetCamera(Camera *ent,
float switchTime);
677 void CameraCut(
void);
678 void CameraCut(Camera *ent);
686 float camerablend[4],
689 void SetupView(
void);
691 void ProcessPmoveEvents(
int event);
693 void PlayerAngles(
void);
694 void FinishMove(
void);
695 void EndFrame(
void)
override;
697 void TestThread(Event *ev);
698 Vector EyePosition(
void)
override;
699 Vector GunTarget(
bool bNoCollision,
const vec3_t position,
const vec3_t forward)
override;
701 void GotKill(Event *ev);
702 void SetPowerupTimer(Event *ev);
703 void UpdatePowerupTimer(Event *ev);
705 void WhatIs(Event *ev);
706 void ActorInfo(Event *ev);
707 void Taunt(Event *ev);
709 void ChangeMusic(
const char *current,
const char *fallback, qboolean force);
710 void ChangeMusicVolume(
float volume,
float fade_time);
711 void RestoreMusicVolume(
float fade_time);
713 void Archive(
Archiver& arc)
override;
714 void ArchivePersistantData(
Archiver& arc);
716 void KillEnt(Event *ev);
717 void RemoveEnt(Event *ev);
718 void KillClass(Event *ev);
719 void RemoveClass(Event *ev);
721 void addOrigin(Vector org)
override;
723 void Jump(Event *ev);
724 void JumpXY(Event *ev);
726 void SetViewAngles(Vector angles)
override;
727 void SetTargetViewAngles(Vector angles)
override;
729 Vector GetViewAngles(
void)
override {
return v_angle; };
731 void SetFov(
float newFov);
732 float GetFov()
const;
734 void ToggleZoom(
int iZoom);
736 void ZoomOffEvent(Event *ev);
737 qboolean IsZoomed(
void);
738 void SafeZoomed(Event *ev);
739 void DumpState(Event *ev);
740 void ForceLegsState(Event *ev);
741 void ForceTorsoState(Event *ev);
743 Vector GetAngleToTarget(Entity *ent, str tag,
float yawclamp,
float pitchclamp, Vector baseangles);
746 void AcquireTarget(
void);
747 void RemoveTarget(Entity *ent_to_remove);
749 void DebugWeaponTags(
int controller_tag,
Weapon *weapon, str weapon_tagname);
750 void NextPainTime(Event *ev);
751 void SetTakePain(Event *ev);
753 void SetMouthAngle(Event *ev);
755 void EnterVehicle(Event *ev);
756 void ExitVehicle(Event *ev);
757 void EnterTurret(TurretGun *ent);
758 void EnterTurret(Event *ev);
759 void ExitTurret(
void);
760 void ExitTurret(Event *ev);
761 void Holster(Event *ev);
762 void HolsterToggle(Event *ev);
764 void RemoveFromVehiclesAndTurretsInternal(
void);
765 void RemoveFromVehiclesAndTurrets(
void);
766 void WatchActor(Event *ev);
767 void StopWatchingActor(Event *ev);
768 painDirection_t Pain_string_to_int(str pain);
770 inline Vector GetVAngles(
void) {
return v_angle; }
773 void VelocityModified(
void)
override;
774 int GetKnockback(
int original_knockback, qboolean blocked);
775 int GetMoveResult(
void);
776 void ReceivedItem(
Item *
item)
override;
777 void RemovedItem(
Item *
item)
override;
778 void AmmoAmountChanged(
Ammo *ammo,
int inclip = 0)
override;
780 void WaitForState(Event *ev);
781 void SkipCinematic(Event *ev);
782 void SetDamageMultiplier(Event *ev);
783 void LogStats(Event *ev);
785 void PlayerShowModel(Event *ev);
786 void showModel(
void)
override;
787 void ResetHaveItem(Event *ev);
788 void ModifyHeight(Event *ev);
789 void ModifyHeightFloat(Event *ev);
790 void SetMovePosFlags(Event *ev);
791 void GetPositionForScript(Event *ev);
792 void GetMovementForScript(Event *ev);
793 void EventStuffText(Event *ev);
794 void EventSetVoiceType(Event *ev);
795 void GetTeamDialogPrefix(str& outPrefix);
796 void PlayInstantMessageSound(
const char *name);
797 void EventDMMessage(Event *ev);
800 str GetBattleLanguageCondition()
const;
801 str GetBattleLanguageDirection()
const;
802 str GetBattleLanguageLocation()
const;
803 str GetBattleLanguageLocalFolks();
804 str GetBattleLanguageWeapon()
const;
805 str GetBattleLanguageDistance()
const;
806 str GetBattleLanguageDistanceMeters(
float dist)
const;
807 str GetBattleLanguageDistanceFeet(
float dist)
const;
808 str GetBattleLanguageTarget()
const;
809 str TranslateBattleLanguageTokens(
const char *
string);
811 void EventIPrint(Event *ev);
812 void EventGetUseHeld(Event *ev);
813 void EventGetFireHeld(Event *ev);
814 void EventGetPrimaryFireHeld(Event *ev);
815 void EventGetSecondaryFireHeld(Event *ev);
816 void Score(Event *ev);
817 void Join_DM_Team(Event *ev);
818 void Auto_Join_DM_Team(Event *ev);
819 void Leave_DM_Team(Event *ev);
820 teamtype_t GetTeam()
const;
821 void SetTeam(teamtype_t team);
822 bool IsSpectator(
void);
823 void BeginFight(
void);
825 void Spectator(
void);
826 void Spectator(Event *ev);
827 void SetPlayerSpectate(
bool bNext);
828 void SetPlayerSpectateRandom(
void);
829 bool IsValidSpectatePlayer(Player *pPlayer);
830 void GetSpectateFollowOrientation(Player *pPlayer, Vector& vPos, Vector& vAng);
831 void UpdateStatus(
const char *s);
832 void SetDM_Team(
DM_Team *team);
834 void WarpToPoint(Entity *spawnpoint);
836 void ArmorDamage(Event *ev)
override;
837 void HUDPrint(
const char *s);
838 void Disconnect(
void);
841 int GetNumKills()
const;
842 int GetNumDeaths()
const;
843 void AddKills(
int num);
844 void AddDeaths(
int num);
845 void CallVote(Event *ev);
846 void Vote(Event *ev);
847 void RetrieveVoteOptions(Event *ev);
848 void EventPrimaryDMWeapon(Event *ev);
849 void EventSecondaryDMWeapon(Event *ev);
851 void DeadBody(Event *ev);
854 void LostMatch(
void);
855 int GetMatchesWon()
const;
856 int GetMatchesLost()
const;
860 void GetIsSpectator(Event *ev);
861 void EventSetInJail(Event *ev);
862 bool IsInJail()
const;
863 void EventGetInJail(Event *ev);
864 void GetNationalityPrefix(Event *ev);
866 void GetIsDisguised(Event *ev);
867 void GetHasDisguise(Event *ev);
868 void SetHasDisguise(Event *ev);
869 void SetObjectiveCount(Event *ev);
871 void EventDMDeathDrop(Event *ev);
872 void EventStopwatch(Event *ev);
873 void KilledPlayerInDeathmatch(Player *killed, meansOfDeath_t meansofdeath);
874 void SetStopwatch(
int iDuration, stopWatchType_t type = SWT_NORMAL);
875 void BeginTempSpectator(
void);
876 void EndSpectator(
void);
878 PlayerStart *GetLastSpawnpoint()
const {
return m_pLastSpawnpoint; }
880 void Stats(Event *ev);
881 void ArmWithWeapons(Event *ev);
882 void EventGetCurrentDMWeaponType(Event *ev);
883 void PhysicsOn(Event *ev);
884 void PhysicsOff(Event *ev);
886 void Think()
override;
887 bool IsReady(
void)
const;
889 void EventGetReady(Event *ev);
890 void EventSetReady(Event *ev);
891 void EventSetNotReady(Event *ev);
892 void EventGetDMTeam(Event *ev);
893 void EventGetNetName(Event *ev);
894 void EventSetViewModelAnim(Event *ev);
895 void EventEnterIntermission(Event *ev);
896 void EventSetPerferredWeapon(Event *ev);
898 bool BlocksAIMovement();
903 float GetRunSpeed()
const;
904 void FireWeapon(
int number, firemode_t mode)
override;
905 void SetInvulnerable();
906 void TickInvulnerable();
907 void SetVulnerable();
908 bool IsInvulnerable();
909 void CancelInvulnerable();
910 void InitInvulnerable();
911 void TickTeamSpawn();
912 bool ShouldForceSpectatorOnDeath()
const;
913 bool HasVehicle()
const override;
914 void setContentsSolid()
override;
915 void UserSelectWeapon(
bool bWait);
916 void PickWeaponEvent(Event *ev);
917 bool AllowTeamRespawn()
const;
918 void EventUseWeaponClass(Event *ev)
override;
919 void EventAddKills(Event *ev);
920 bool CanKnockback(
float minHealth)
const;
925 void EventKillAxis(Event *ev);
926 void EventGetTurret(Event *ev);
927 void EventGetVehicle(Event *ev);
930 void FindAlias(str& output, str name, AliasListNode_t **node);
932 bool HasVotedYes()
const;
933 bool HasVotedNo()
const;
940 qboolean CheckCanSwitchTeam(teamtype_t team);
942 qboolean ViewModelAnim(str anim, qboolean force_restart, qboolean bFullAnim);
943 virtual void Spawned(
void);
945 void AddDeaths(Event *ev);
946 void AdminRights(Event *ev);
947 void BindWeap(Event *ev);
948 void Dive(Event *ev);
949 void EventSetTeam(Event *ev);
950 void FreezeControls(Event *ev);
951 void GetConnState(Event *ev);
952 void GetDamageMultiplier(Event *ev);
953 void GetKills(Event *ev);
954 void GetDeaths(Event *ev);
955 void GetKillHandler(Event *ev);
956 void GetMoveSpeedScale(Event *ev);
957 void GetLegsState(Event *ev);
958 void GetStateFile(Event *ev);
959 void GetTorsoState(Event *ev);
960 void GetUserInfo(Event *ev);
961 void Inventory(Event *ev);
962 void InventorySet(Event *ev);
963 void IsAdmin(Event *ev);
964 void JoinDMTeamReal(Event *ev);
965 void JoinDMTeam(Event *ev);
966 void LeanLeftHeld(Event *ev);
967 void LeanRightHeld(Event *ev);
968 void PlayLocalSound(Event *ev);
969 void RunHeld(Event *ev);
970 void SecFireHeld(Event *ev);
971 void SetAnimSpeed(Event *ev);
972 void SetKillHandler(Event *ev);
973 void SetSpeed(Event *ev);
974 void SetStateFile(Event *ev);
975 void HideEntity(Event *ev);
976 void ShowEntity(Event *ev);
977 void StopLocalSound(Event *ev);
978 void Userinfo(Event *ev);
983 void EventGetViewModelAnim(Event *ev);
984 void EventGetViewModelAnimFinished(Event *ev);
985 void EventGetViewModelAnimValid(Event *ev);
987 void EventEarthquake(Event *ev);
988 void SetClientFlag(Event *ev);
989 void SetEntityShader(Event *ev);
990 void SetLocalSoundRate(Event *ev);
991 void SetVMASpeed(Event *ev);
992 void VisionGetNaked(Event *ev);
993 void VisionSetBlur(Event *ev);
994 void VisionSetNaked(Event *ev);
997 bool IsPrimaryWeaponValid()
const;
999 void PostAnimate()
override;
1000 void Postthink()
override;
1001 void GibEvent(Event *ev);
1003 qboolean canUse(Entity *entity,
bool requiresLookAt);
1004 int getUseableEntities(
int *touch,
int maxcount,
bool requiresLookAt =
true);