amxmodx/modules/ns/ns_const.h
2015-07-29 20:49:14 +02:00

377 lines
10 KiB
C

// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license
//
// Natural Selection Module
//
#ifndef NS_CONST_H
#define NS_CONST_H
// Offsets (used in NPData.cpp)
#define NEED_TO_FIND 0
#define OFFSET_WIN_RESOURCES 1816
#define OFFSET_LIN_RESOURCES 1836
#define OFFSET_WIN_WEAPDMG 408
#define OFFSET_LIN_WEAPDMG 424
#define OFFSET_WIN_WEAPRANGE 404
#define OFFSET_LIN_WEAPRANGE 420
#define OFFSET_WIN_WEAPCLIP 364
#define OFFSET_LIN_WEAPCLIP 380
#define OFFSET_WIN_WEAPID 324
#define OFFSET_LIN_WEAPID 340
// Next weapon in the item linked list
#define OFFSET_WIN_WEAP_NEXT 320
#define OFFSET_LIN_WEAP_NEXT 336
#define OFFSET_WIN_HIVE_TRAIT 488
#define OFFSET_LIN_HIVE_TRAIT 504
#define OFFSET_WIN_SCORE 6588
#define OFFSET_LIN_SCORE 6608
#define OFFSET_WIN_EXP 6512
#define OFFSET_LIN_EXP 6532
#define OFFSET_WIN_POINTS 6520
#define OFFSET_LIN_POINTS 6540
#define OFFSET_WIN_AMMO_LMG 1116
#define OFFSET_LIN_AMMO_LMG 1136
#define OFFSET_WIN_AMMO_PISTOL 1120
#define OFFSET_LIN_AMMO_PISTOL 1140
#define OFFSET_WIN_AMMO_SHOTGUN 1124
#define OFFSET_LIN_AMMO_SHOTGUN 1144
#define OFFSET_WIN_AMMO_HMG 1128
#define OFFSET_LIN_AMMO_HMG 1148
#define OFFSET_WIN_AMMO_GL 1132
#define OFFSET_LIN_AMMO_GL 1152
#define OFFSET_WIN_AMMO_HG 1136
#define OFFSET_LIN_AMMO_HG 1156
#define OFFSET_WIN_DEATHS 1380
#define OFFSET_LIN_DEATHS 1400
#define OFFSET_WIN_STRUCTOWNER 324
#define OFFSET_LIN_STRUCTOWNER 340
#define OFFSET_WIN_HIVEABILITY 6248
#define OFFSET_LIN_HIVEABILITY 6268
#define OFFSET_WIN_PLAYER_ITEMS 1068
#define OFFSET_LIN_PLAYER_ITEMS 1088
#define OFFSET_WIN_NEXT_WEAPON 1280
#define OFFSET_LIN_NEXT_WEAPON 1300
#define OFFSET_WIN_CURRENT_WEAPON 1092
#define OFFSET_LIN_CURRENT_WEAPON 1112 // +4 is the client known weapon if it's ever needed
#define OFFSET_WIN_LAST_WEAPON 1100
#define OFFSET_LIN_LAST_WEAPON 1120
#define OFFSET_WIN_ENTVAR 4
#define OFFSET_LIN_ENTVAR 4 // first entry in the virtual class (vtable is 0)
#define OFFSET_WIN_OBS_ENERGY 476
#define OFFSET_LIN_OBS_ENERGY 492
#define OFFSET_WIN_WELD_DONE 128
#define OFFSET_LIN_WELD_DONE 144
#define OFFSET_WIN_WELD_TIME 132
#define OFFSET_LIN_WELD_TIME 148
#define OFFSET_WIN_GHOST_STRUCTURE 472
#define OFFSET_LIN_GHOST_STRUCTURE 488
// The teamnumber for the specified team
#define OFFSET_WIN_GAMEPLAY_TEAMA 0x54
#define OFFSET_LIN_GAMEPLAY_TEAMA 0x64
#define OFFSET_WIN_GAMEPLAY_TEAMB 0x58
#define OFFSET_LIN_GAMEPLAY_TEAMB 0x68
#define OFFSET_WIN_UPGRADES_BOUGHT 0x1980
#define OFFSET_LIN_UPGRADES_BOUGHT 0x1994
#define OFFSET_WIN_UPGRADES_ACTIVE 0x198C
#define OFFSET_LIN_UPGRADES_ACTIVE 0x19A0
#define OFFSET_WIN_COMBAT_TECHTREE 0x1998
#define OFFSET_LIN_COMBAT_TECHTREE 0x19AC
// TODO: Symbols / signatures instead
// Not actually offsets, but easier to use MAKE_OFFSET stuff for this :o
// First functions listed in the disassembler
#define OFFSET_WIN_BASE "?SUB_CallUseToggle@CBaseEntity@@QAEXXZ"
#define OFFSET_LIN_BASE "_init"
#define OFFSET_LIN_MEMBERFUNCSTART 0x000EDBE8 // The location of _init in the binary
#define OFFSET_WIN_MEMBERFUNCSTART 0x00001000 // The location of CBaseEntity::SUB_CallUseToggle
// NOTE: These addresses are raw offsets, not including the
// base addresses! These are the exact offsets that
// the disassembler provides.
// MAKE_MEMBER_OFFSET will compensate for the base address
// Recycle: void AvHBaseBuildable::StartRecycle(void)
#define OFFSET_WIN_MEMBER_RECYCLE MAKE_MEMBER_OFFSET(0x00053950)
#define OFFSET_LIN_MEMBER_RECYCLE MAKE_MEMBER_OFFSET(0x00180800)
// Weldable: void AvHWeldable::AddWeldTime(float Time)
#define OFFSET_WIN_MEMBER_TRIGGER_WELDABLE MAKE_MEMBER_OFFSET(0x000A0E20)
#define OFFSET_LIN_MEMBER_TRIGGER_WELDABLE MAKE_MEMBER_OFFSET(0x00232840)
// Research: bool AvHTechTree::SetResearchDone(AvHMessageID inMessageID, bool inState)
#define OFFSET_WIN_MEMBER_SET_RESEARCH_DONE MAKE_MEMBER_OFFSET(0x0009EC40)
#define OFFSET_LIN_MEMBER_SET_RESEARCH_DONE MAKE_MEMBER_OFFSET(0x0022E740)
// Game Rules: AvHGameRules *GetGameRules(void)
#define OFFSET_WIN_GETGAMERULES MAKE_MEMBER_OFFSET(0x00068000)
#define OFFSET_LIN_GETGAMERULES MAKE_MEMBER_OFFSET(0x0019F930)
// Offset into the gamerules pointer to the TeamA / TeamB class
#define GAMERULES_TEAMA_OFFSET 0xCC
#define GAMERULES_TEAMB_OFFSET 0x2A8
#define AVHTEAM_RESOURCES_OFFSET 0x94
#define GAMERULES_TEAMA_RESOURCES GAMERULES_TEAMA_OFFSET + AVHTEAM_RESOURCES_OFFSET
#define GAMERULES_TEAMB_RESOURCES GAMERULES_TEAMB_OFFSET + AVHTEAM_RESOURCES_OFFSET
enum
{
NSGame_CantTell, /**< It is too soon to tell (can't find avhgameplay
entity or it doesn't have private data) */
NSGame_MarineVAlien, /**< Marine vs Aliens (standard) gameplay */
NSGame_MarineVMarine, /**< Marine vs Marine */
NSGame_AlienVAlien, /**< Alien vs Alien */
NSGame_Unknown, /**< Can find the gameplay entity, but can't
determine gameplay type. */
};
enum
{
MASK_NONE = 0,
MASK_SIGHTED = 1,
MASK_DETECTED = 2,
MASK_BUILDABLE = 4,
MASK_BASEBUILD0 = 8, // Base build slot #0
MASK_WEAPONS1 = 8, // Marine weapons 1
MASK_CARAPACE = 8, // Alien carapace
MASK_WEAPONS2 = 16, // Marines weapons 2
MASK_REGENERATION = 16, // Alien regeneration
MASK_BASEBUILD1 = 16, // Base build slot #1
MASK_WEAPONS3 = 32, // Marine weapons 3
MASK_REDEMPTION = 32, // Alien redemption
MASK_BASEBUILD2 = 32, // Base build slot #2
MASK_ARMOR1 = 64, // Marine armor 1
MASK_CELERITY = 64, // Alien celerity
MASK_BASEBUILD3 = 64, // Base build slot #3
MASK_ARMOR2 = 128, // Marine armor 2
MASK_ADRENALINE = 128, // Alien adrenaline
MASK_BASEBUILD4 = 128, // Base build slot #4
MASK_ARMOR3 = 256, // Marine armor 3
MASK_SILENCE = 256, // Alien silence
MASK_BASEBUILD5 = 256, // Base build slot #5
MASK_JETPACK = 512, // Marine jetpacks
MASK_CLOAKING = 512, // Alien cloaking
MASK_BASEBUILD6 = 512, // Base build slot #6
MASK_FOCUS = 1024, // Alien focus
MASK_MOTION = 1024, // Marine motion tracking
MASK_BASEBUILD7 = 1024, // Base build slot #7
MASK_SCENTOFFEAR = 2048, // Alien scent of fear
MASK_DEFENSE2 = 4096, // Defense level 2
MASK_DEFENSE3 = 8192, // Defense level 3
MASK_ELECTRICITY = 8192, // Electricy
MASK_MOVEMENT2 = 16384, // Movement level 2,
MASK_MOVEMENT3 = 32768, // Movement level 3
MASK_HEAVYARMOR = 32768, // Marine heavy armor
MASK_SENSORY2 = 65536, // Sensory level 2
MASK_SENSORY3 = 131072, // Sensory level 3
MASK_ALIEN_MOVEMENT = 262144, // Onos is charging
MASK_WALLSTICKING = 524288, // Flag for wall-sticking
MASK_PRIMALSCREAM = 1048576, // Alien is in range of active primal scream
MASK_UMBRA = 2097152, // In umbra
MASK_DIGESTING = 4194304, // When set on a visible player, player is digesting. When set on invisible player, player is being digested
MASK_RECYCLING = 8388608, // Building is recycling
MASK_TOPDOWN = 16777216, // Commander view
MASK_PLAYER_STUNNED = 33554432, // Player has been stunned by stomp
MASK_ENSNARED = 67108864, // Webbed
MASK_ALIEN_EMBRYO = 134217728, //268435456, // Gestating
MASK_SELECTABLE = 268435456, //536870912, // ???
MASK_PARASITED = 536870912, //1073741824, // Parasite flag
MASK_SENSORY_NEARBY = 1073741824 //2147483648 // Sensory chamber in range
};
typedef enum
{
AVH_USER3_NONE = 0,
AVH_USER3_MARINE_PLAYER,
AVH_USER3_COMMANDER_PLAYER,
AVH_USER3_ALIEN_PLAYER1,
AVH_USER3_ALIEN_PLAYER2,
AVH_USER3_ALIEN_PLAYER3,
AVH_USER3_ALIEN_PLAYER4,
AVH_USER3_ALIEN_PLAYER5,
AVH_USER3_ALIEN_EMBRYO,
AVH_USER3_SPAWN_TEAMONE,
AVH_USER3_SPAWN_TEAMTWO,
AVH_USER3_PARTICLE_ON, // only valid for AvHParticleEntity: entindex as int in fuser1, template index stored in fuser2
AVH_USER3_PARTICLE_OFF, // only valid for AvHParticleEntity: particle system handle in fuser1
AVH_USER3_WELD, // float progress (0 - 100) stored in fuser1
AVH_USER3_ALPHA, // fuser1 indicates how much alpha this entity toggles to in commander mode, fuser2 for players
AVH_USER3_MARINEITEM, // Something a friendly marine can pick up
AVH_USER3_WAYPOINT,
AVH_USER3_HIVE,
AVH_USER3_NOBUILD,
AVH_USER3_USEABLE,
AVH_USER3_AUDIO_ON,
AVH_USER3_AUDIO_OFF,
AVH_USER3_FUNC_RESOURCE,
AVH_USER3_COMMANDER_STATION,
AVH_USER3_TURRET_FACTORY,
AVH_USER3_ARMORY,
AVH_USER3_ADVANCED_ARMORY,
AVH_USER3_ARMSLAB,
AVH_USER3_PROTOTYPE_LAB,
AVH_USER3_OBSERVATORY,
AVH_USER3_CHEMLAB,
AVH_USER3_MEDLAB,
AVH_USER3_NUKEPLANT,
AVH_USER3_TURRET,
AVH_USER3_SIEGETURRET,
AVH_USER3_RESTOWER,
AVH_USER3_PLACEHOLDER,
AVH_USER3_INFANTRYPORTAL,
AVH_USER3_NUKE,
AVH_USER3_BREAKABLE,
AVH_USER3_UMBRA,
AVH_USER3_PHASEGATE,
AVH_USER3_DEFENSE_CHAMBER,
AVH_USER3_MOVEMENT_CHAMBER,
AVH_USER3_OFFENSE_CHAMBER,
AVH_USER3_SENSORY_CHAMBER,
AVH_USER3_ALIENRESTOWER,
AVH_USER3_HEAVY,
AVH_USER3_JETPACK,
AVH_USER3_ADVANCED_TURRET_FACTORY,
AVH_USER3_SPAWN_READYROOM,
AVH_USER3_CLIENT_COMMAND,
AVH_USER3_FUNC_ILLUSIONARY,
AVH_USER3_MENU_BUILD,
AVH_USER3_MENU_BUILD_ADVANCED,
AVH_USER3_MENU_ASSIST,
AVH_USER3_MENU_EQUIP,
AVH_USER3_MINE,
AVH_USER3_MAX
} AvHUser3;
enum
{
WEAPON_NONE = 0,
WEAPON_CLAWS,
WEAPON_SPIT,
WEAPON_SPORES,
WEAPON_SPIKE,
WEAPON_BITE,
WEAPON_BITE2,
WEAPON_SWIPE,
WEAPON_WEBSPINNER,
WEAPON_METABOLIZE,
WEAPON_PARASITE,
WEAPON_BLINK,
WEAPON_DIVINEWIND,
WEAPON_KNIFE,
WEAPON_PISTOL,
WEAPON_LMG,
WEAPON_SHOTGUN,
WEAPON_HMG,
WEAPON_WELDER,
WEAPON_MINE,
WEAPON_GRENADE_GUN,
WEAPON_LEAP,
WEAPON_CHARGE,
WEAPON_UMBRA,
WEAPON_PRIMALSCREAM,
WEAPON_BILEBOMB,
WEAPON_ACIDROCKET,
WEAPON_HEALINGSPRAY,
WEAPON_GRENADE,
WEAPON_STOMP,
WEAPON_DEVOUR,
WEAPON_MAX
};
enum
{
PLAYERCLASS_NONE = 0,
PLAYERCLASS_ALIVE_MARINE,
PLAYERCLASS_ALIVE_JETPACK,
PLAYERCLASS_ALIVE_HEAVY_MARINE,
PLAYERCLASS_ALIVE_LEVEL1,
PLAYERCLASS_ALIVE_LEVEL2,
PLAYERCLASS_ALIVE_LEVEL3,
PLAYERCLASS_ALIVE_LEVEL4,
PLAYERCLASS_ALIVE_LEVEL5,
PLAYERCLASS_ALIVE_DIGESTING,
PLAYERCLASS_ALIVE_GESTATING,
PLAYERCLASS_DEAD_MARINE,
PLAYERCLASS_DEAD_ALIEN,
PLAYERCLASS_COMMANDER,
PLAYERCLASS_REINFORCING,
PLAYERCLASS_SPECTATOR,
PLAYERCLASS_READY,
};
enum classes
{
CLASS_UNKNOWN = 0,
CLASS_SKULK,
CLASS_GORGE,
CLASS_LERK,
CLASS_FADE,
CLASS_ONOS,
CLASS_MARINE,
CLASS_JETPACK,
CLASS_HEAVY,
CLASS_COMMANDER,
CLASS_GESTATE,
CLASS_DEAD,
CLASS_NOTEAM
};
#endif