summaryrefslogtreecommitdiff
path: root/game/server/tf/tf_mapitems.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/server/tf/tf_mapitems.h')
-rw-r--r--game/server/tf/tf_mapitems.h403
1 files changed, 403 insertions, 0 deletions
diff --git a/game/server/tf/tf_mapitems.h b/game/server/tf/tf_mapitems.h
new file mode 100644
index 0000000..1fc3e1c
--- /dev/null
+++ b/game/server/tf/tf_mapitems.h
@@ -0,0 +1,403 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef TF_MAPITEMS_H
+#define TF_MAPITEMS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+#include "tf_shareddefs.h"
+
+
+class CTFPlayer;
+
+
+/*==================================================*/
+/* CTF Support defines */
+/*==================================================*/
+#define CTF_FLAG1 1
+#define CTF_FLAG2 2
+#define CTF_DROPOFF1 3
+#define CTF_DROPOFF2 4
+#define CTF_SCORE1 5
+#define CTF_SCORE2 6
+
+
+// Defines for GoalItem Removing from Player Methods
+#define GI_DROP_PLAYERDEATH 0 // Dropped by a dying player
+#define GI_DROP_REMOVEGOAL 1 // Removed by a Goal
+#define GI_DROP_PLAYERDROP 2 // Dropped by a player
+
+
+// Defines for methods of GoalItem returning
+#define GI_RET_DROP_DEAD 0 // Dropped by a dead player
+#define GI_RET_DROP_LIVING 1 // Dropped by a living player
+#define GI_RET_GOAL 2 // Returned by a Goal
+#define GI_RET_TIME 3 // Returned due to timeout
+
+
+// Defines for Goal States
+#define TFGS_ACTIVE 1
+#define TFGS_INACTIVE 2
+#define TFGS_REMOVED 3
+#define TFGS_DELAYED 4
+
+
+// Defines for Goal Result types : goal_result
+#define TFGR_SINGLE 1 // Goal can only be activated once
+#define TFGR_ADD_BONUSES 2 // Any Goals activated by this one give their bonuses
+#define TFGR_ENDGAME 4 // Goal fires Intermission, displays scores, and ends level
+#define TFGR_NO_ITEM_RESULTS 8 // GoalItems given by this Goal don't do results
+#define TFGR_REMOVE_DISGUISE 16 // Prevent/Remove undercover from any Spy
+#define TFGR_FORCE_RESPAWN 32 // Forces the player to teleport to a respawn point
+#define TFGR_DESTROY_BUILDINGS 64 // Destroys this player's buildings, if anys
+
+
+// Defines for Goal Item types, : goal_activation (in items)
+#define TFGI_GLOW 1 // Players carrying this GoalItem will glow
+#define TFGI_SLOW 2 // Players carrying this GoalItem will move at half-speed
+#define TFGI_DROP 4 // Players dying with this item will drop it
+#define TFGI_RETURN_DROP 8 // Return if a player with it dies
+#define TFGI_RETURN_GOAL 16 // Return if a player with it has it removed by a goal's activation
+#define TFGI_RETURN_REMOVE 32 // Return if it is removed by TFGI_REMOVE
+#define TFGI_REVERSE_AP 64 // Only pickup if the player _doesn't_ match AP Details
+#define TFGI_REMOVE 128 // Remove if left untouched for 2 minutes after being dropped
+#define TFGI_KEEP 256 // Players keep this item even when they die
+#define TFGI_ITEMGLOWS 512 // Item glows when on the ground
+#define TFGI_DONTREMOVERES 1024 // Don't remove results when the item is removed
+#define TFGI_DROPTOGROUND 2048 // Drop To Ground when spawning
+#define TFGI_CANBEDROPPED 4096 // Can be voluntarily dropped by players
+#define TFGI_SOLID 8192 // Is solid... blocks bullets, etc
+
+
+// For all these defines, see the tfortmap.txt that came with the zip
+// for complete descriptions.
+// Defines for Goal Activation types : goal_activation (in goals)
+#define TFGA_TOUCH 1 // Activated when touched
+#define TFGA_TOUCH_DETPACK 2 // Activated when touched by a detpack explosion
+#define TFGA_REVERSE_AP 4 // Activated when AP details are _not_ met
+#define TFGA_SPANNER 8 // Activated when hit by an engineer's spanner
+#define TFGA_DROPTOGROUND 2048 // Drop to Ground when spawning
+
+
+// Defines for Goal Effects types : goal_effect
+#define TFGE_AP 1 // AP is affected. Default.
+#define TFGE_AP_TEAM 2 // All of the AP's team.
+#define TFGE_NOT_AP_TEAM 4 // All except AP's team.
+#define TFGE_NOT_AP 8 // All except AP.
+#define TFGE_WALL 16 // If set, walls stop the Radius effects
+#define TFGE_SAME_ENVIRONMENT 32 // If set, players in a different environment to the Goal are not affected
+#define TFGE_TIMER_CHECK_AP 64 // If set, Timer Goals check their critera for all players fitting their effects
+
+#if 0
+
+class CTFBaseItem : public CBaseAnimating
+{
+public:
+
+ bool CheckExistence();
+
+
+public:
+
+ int group_no;
+ int goal_no;
+ int goal_state; // TFGS_
+ // Goal/Timer/GoalItem/Trigger existence checking
+ int ex_skill_min; // Exists when the skill is >= this value
+ int ex_skill_max; // Exists when the skill is <= this value
+ string_t teamcheck; // TeamCheck entity that should be checked
+};
+
+
+class CTFGoal : public CTFBaseItem
+{
+public:
+ DECLARE_CLASS( CTFGoal, CBaseAnimating );
+ DECLARE_DATADESC();
+
+ void Spawn( void );
+ void StartGoal( void );
+ void PlaceGoal( void );
+ void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
+ void tfgoal_touch( CBaseEntity *pOther );
+
+ void DelayedResult();
+
+ Class_T Classify ( void ) { return CLASS_TFGOAL; }
+
+ void SetObjectCollisionBox( void );
+
+ void tfgoal_timer_tick();
+ void DoRespawn();
+
+
+public:
+ //TFTODO: lots of these variables need to be put in the FGD file.
+ int goal_effects; // TFGE_
+ int goal_result; // TFGR_
+
+ int playerclass; // One of the PC_ defines.
+
+ float t_length; // Goal Criteria radius check
+
+ // NOTE: In CTFGoal, these are overridden to mean: if they're not zero, then this goal only
+ // affects players...
+ int maxammo_shells; // ... with that team number
+ int maxammo_nails; // ... without that team number
+
+ int ammo_shells;
+ int ammo_nails;
+ int ammo_rockets;
+ int ammo_cells;
+ int ammo_medikit;
+ int ammo_detpack;
+ int no_grenades_1;
+ int no_grenades_2;
+
+ // Item Displaying details
+ int display_item_status[4]; // Goal displays the status of these items
+ string_t team_str_home; // Displayed when the item is at home base
+ string_t team_str_moved; // Displayed when the item has been moved
+ string_t team_str_carried; // Displayed when the item is being carried
+ string_t non_team_str_home; // Displayed when the item is at home base
+ string_t non_team_str_moved; // Displayed when the item has been moved
+ string_t non_team_str_carried; // Displayed when the item is being carried
+
+ float invincible_finished;
+ float invisible_finished;
+ float super_damage_finished;
+ float radsuit_finished;
+
+ int lives;
+ int frags;
+ float wait;
+
+ float search_time; // Timer goal delay
+ int item_list; // Used to keep track of which goalitems are
+ // affecting the player at any time.
+ // GoalItems use it to keep track of their own
+ // mask to apply to a player's item_list
+
+ float drop_time; // Time spent untouched before item return
+ float armortype;
+ int armorvalue;
+ int armorclass; // Type of armor being worn;
+
+ int count; // Change teamscores
+
+ // Goal Size
+ Vector goal_min;
+ Vector goal_max;
+
+ bool m_bAddBonuses;
+
+ int items;
+ int items_allowed;
+
+ int else_goal;
+ int if_goal_is_active;
+ int if_goal_is_inactive;
+ int if_goal_is_removed;
+ int if_group_is_active;
+ int if_group_is_inactive;
+ int if_group_is_removed;
+
+ int speed_reduction;
+
+ int return_item_no;
+ int if_item_has_moved;
+ int if_item_hasnt_moved;
+
+ int has_item_from_group;
+ int hasnt_item_from_group;
+
+ int goal_activation;
+ int delay_time;
+ int weapon;
+ string_t owned_by_teamcheck;
+ int owned_by;
+ string_t noise;
+
+ // Spawnpoint behaviour
+ int remove_spawnpoint;
+ int restore_spawnpoint;
+ int remove_spawngroup;
+ int restore_spawngroup;
+
+ // These are the old centerprinting methods.
+ // They now print using the large fancy text
+ string_t broadcast; // Centerprinted to all, overridden by the next two
+ string_t team_broadcast; // Centerprinted to AP's team members, but not the AP
+ string_t non_team_broadcast; // Centerprinted to non AP's team members
+ string_t owners_team_broadcast; // Centerprinted to the members of the team that own the Goal/Item
+ string_t non_owners_team_broadcast; // Centerprinted to the members of the team that don't own the Goal/Item
+ string_t team_drop; // Centerprinted to item owners team
+ string_t non_team_drop; // Centerprinted to everone not on item owners team
+
+ // These are new fields that print the old fashioned centerprint method
+ string_t org_broadcast; // Centerprinted to all, overridden by the next two
+ string_t org_team_broadcast; // Centerprinted to AP's team members, but not the AP
+ string_t org_non_team_broadcast; // Centerprinted to non AP's team members
+ string_t org_owners_team_broadcast; // Centerprinted to the members of the team that own the Goal/Item
+ string_t org_non_owners_team_broadcast; // Centerprinted to the members of the team that don't own the Goal/Item
+ string_t org_team_drop; // Centerprinted to item owners team
+ string_t org_non_team_drop; // Centerprinted to everone not on item owners team
+ string_t org_message; // Centerprinted to the AP upon activation
+ string_t org_noise3;
+ string_t org_noise4;
+ // These still print the old centerprint fashion
+ string_t netname_broadcast; // same as above, prepended by AP netname and bprinted
+ string_t netname_team_broadcast; // same as above, prepended by AP netname and bprinted
+ string_t netname_non_team_broadcast; // same as above, prepended by AP netname and bprinted
+ string_t netname_owners_team_broadcast; // same as above, prepended by AP netname and bprinted
+ string_t netname_team_drop; // same as above, prepended by AP netname and bprinted
+ string_t netname_non_team_drop; // same as above, prepended by AP netname and bprinted
+ string_t speak; // VOX Spoken to Everyone
+ string_t AP_speak; // VOX Spoken the AP
+ string_t team_speak; // VOX Spoken to AP's team_members, including the AP
+ string_t non_team_speak; // VOX Spoken to non AP's team_members
+ string_t owners_team_speak; // VOX Spoken to members of the team that own this Goal
+ string_t non_owners_team_speak; // VOX Spoken to everyone bit the members of the team that own this Goal
+
+ float m_flEndRoundTime;
+ string_t m_iszEndRoundMsg_Team1_Win;
+ string_t m_iszEndRoundMsg_Team2_Win;
+ string_t m_iszEndRoundMsg_Team3_Win;
+ string_t m_iszEndRoundMsg_Team4_Win;
+ string_t m_iszEndRoundMsg_Team1_Lose;
+ string_t m_iszEndRoundMsg_Team2_Lose;
+ string_t m_iszEndRoundMsg_Team3_Lose;
+ string_t m_iszEndRoundMsg_Team4_Lose;
+ string_t m_iszEndRoundMsg_Team1;
+ string_t m_iszEndRoundMsg_Team2;
+ string_t m_iszEndRoundMsg_Team3;
+ string_t m_iszEndRoundMsg_Team4;
+ string_t m_iszEndRoundMsg_OwnedBy;
+ string_t m_iszEndRoundMsg_NonOwnedBy;
+
+ int all_active;
+ int last_impulse; // The previous impulse command from this player
+
+ int activate_goal_no;
+ int inactivate_goal_no;
+ int remove_goal_no;
+ int restore_goal_no;
+ int activate_group_no;
+ int inactivate_group_no;
+ int remove_group_no;
+ int restore_group_no;
+
+ BOOL do_triggerwork; // Overrides for trigger handling in TF Goals
+ string_t killtarget; // Remove ents with this target
+ string_t target;
+
+ string_t message;
+
+ // Score increases
+ int increase_team[4]; // Increase the scores of teams
+ int increase_team_owned_by; // Increase the score of the team that owns this entity
+
+ EHANDLE enemy;
+
+ Vector oldorigin;
+ int axhitme; // Remove item from AP
+
+ int remove_item_group;
+};
+
+
+class CTFGoalItem : public CTFGoal
+{
+public:
+ void Spawn( void );
+ void StartItem( void );
+ void PlaceItem( void );
+
+ Class_T Classify ( void ) { return CLASS_TFGOAL_ITEM; }
+
+ void item_tfgoal_touch( CBaseEntity *pOther );
+ void tfgoalitem_droptouch();
+ void tfgoalitem_dropthink();
+ void tfgoalitem_remove();
+
+ void DoDrop( Vector vecOrigin );
+
+
+public:
+
+ float m_flDroppedAt;
+
+ float speed;
+ int speed_reduction;
+
+ float distance;
+ float pain_finished;
+ float attack_finished;
+
+ Vector redrop_origin; // Original drop position
+ int redrop_count; // Number of time's we redropped.
+};
+
+
+class CTFTimerGoal : public CTFGoal
+{
+public:
+ void Spawn( void );
+
+ Class_T Classify ( void ) { return CLASS_TFGOAL_TIMER; }
+};
+
+
+#if 0
+class CTFSpawn : public CTFBaseItem
+{
+public:
+ void Spawn( void );
+ void Activate( void );
+ Class_T Classify ( void ) { return CLASS_TFSPAWN; }
+ BOOL CheckTeam( int iTeamNo );
+
+ EHANDLE m_pTeamCheck;
+};
+#endif
+
+
+class CBaseDelay : public CTFGoal
+{
+public:
+ DECLARE_CLASS( CBaseDelay, CTFGoal );
+
+ void SUB_UseTargets( CBaseEntity *pActivator, USE_TYPE useType, float value );
+ void KeyValue( KeyValueData *pkvd );
+ void DelayThink( void );
+ virtual bool KeyValue( const char *szKeyName, const char *szValue );
+
+public:
+ float m_flDelay;
+ string_t m_iszKillTarget;
+ int button;
+};
+
+
+class CTeamCheck : public CBaseDelay
+{
+public:
+ void Spawn( void );
+ void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
+ BOOL TeamMatches( int iTeam );
+};
+
+
+// Global functions.
+CTFGoalItem* Finditem(int ino);
+void DisplayItemStatus(CTFGoal *Goal, CTFPlayer *Player, CTFGoalItem *Item);
+
+#endif
+
+#endif // TF_MAPITEMS_H \ No newline at end of file