heretic2-sdk/Toolkit/Programming/GameCode/game/m_stats.h
1999-03-18 00:00:00 +00:00

434 lines
No EOL
11 KiB
C

#ifndef G_STATS_H
#define G_STATS_H
#include "g_ClassStatics.h"
extern int AttackRangesForClass [NUM_ATTACKRANGES];
extern byte MaxBuoysForClass [NUM_CLASSIDS];
extern int JumpChanceForClass [NUM_CLASSIDS];
extern vec3_t STDMinsForClass [NUM_CLASSIDS];
extern vec3_t STDMaxsForClass [NUM_CLASSIDS];
typedef struct MonsterShadow_s
{
qboolean useShadow;
float scale;
} MonsterShadow_t;
extern struct MonsterShadow_s G_MonsterShadow[NUM_CLASSIDS];
#define ITEM_REWARD_CHANCE 1
#define MAX_SIGHT_PLAYER_DIST 1000
// ***************************************
// ** MONSTER SPAWNFLAGS
// ***************************************
#define MSF_NONE 0x000000//0-no spawn flags
#define MSF_AMBUSH 0x000001//1-monster spawn flag AMBUSH
#define MSF_ASLEEP 0x000002//2-monster spawn flag ASLEEP- will not so anything until used
//next three are mutually exclusive, sorry- that's how it was made, would be a pain to change now- should make walking a seperate one from other two...
#define MSF_WALKING 0x000004//4-monster is walking a beat
#define MSF_EATING 0x000004//4-monster is eating
#define MSF_PERCHING 0x000004//4-monster is perched- only harpies and imps
// spawnflags 8 - 64 are individual to the monster
#define MSF_SPECIAL1 0x000008//8
#define MSF_SPECIAL2 0x000010//16
#define MSF_SPECIAL3 0x000020//32
#define MSF_SPECIAL4 0x000040//64
#define MSF_FIXED 0x000080//128 - monster will not move, only attack
//spawnflags 256 - 4096 used for selective spawning
//selective spawning control spawnflags for all entities, don't mess with them
#define MSF_NOT_EASY 0x000100//256
#define MSF_NOT_MEDIUM 0x000200//512
#define MSF_NOT_HARD 0x000400//1024
#define MSF_NOT_COOP 0x000800//2048
#define MSF_NOT_DEATHMATCH 0x001000//4096
//Extra Spawnflags since our creatures are so Freakin awesome!
//these 4 are for all creatures, annot be per-creature specific
#define MSF_WANDER 0x002000//8192
#define MSF_MELEE_LEAD 0x004000//16384
#define MSF_STALK 0x008000//32768
#define MSF_COWARD 0x010000//65536
//extra spawnflags 128K - 1024K are individual to the monster
#define MSF_EXTRA1 0x020000//128K
#define MSF_EXTRA2 0x040000//256K
#define MSF_EXTRA3 0x080000//512K
#define MSF_EXTRA4 0x100000//1024K
//===================================
//SPECIAL MONSTER-SPECIFIC SPAWNFLAGS
//===================================
//SSITHRA
#define MSF_SSITHRA_NAMOR 8 //Ssithra will jump out of water when woken up or used
#define MSF_SSITHRA_SPIN 16 //Ssithra will spin around when woken up or used
#define MSF_SSITHRA_ALPHA 32 //Tougher ssithra
#define MSF_SSITHRA_CLOTHED 64 //Clothed, shoot explosive tip proj's
//ASSASSIN
#define MSF_ASS_JUMPAMBUSH 8 //Will jump when awoken
#define MSF_ASS_NOSHADOW 16 //cannot cloak
#define MSF_ASS_NOTELEPORT 32 //cannot teleprt
#define MSF_ASS_CINEMATIC 64 //A cinematic monster
#define MSF_ASS_TPORTAMBUSH 0x020000//Will spawn in teleport when triggered
#define MSF_ASS_STARTSHADOW 0x040000 //Assasin starts shadowed and decloaks when woken
#define MSF_ASS_SIDEJUMPAMBUSH 0x080000//assassin will jump out sideways
#define MSF_ASS_TELEPORTDODGE 0x100000//assassin will use teleports to dodge
//Gorgon
#define MSF_GORGON_SPEEDY 8
#define MSF_GORGON_COWARD 64
//Plague Elves
#define MSF_PELF_CINEMATIC 8 //cinematic plague elf
#define MSF_PELF_MISSILE 16 //Missile-bearing plague elf
#define MSF_PELF_ONFIRE 32 //Starts on fire, as per request of sick-ass Raffel!
//Insects
#define MSF_INSECT_CINEMATIC 8 //Cinematic insect
#define MSF_INSECT_BEAST_FODDER 16 //Looks for beasts
#define MSF_INSECT_YELLOWJACKET 32 //Diff skin and projectile- male
#define MSF_INSECT_ALTERNATE 32 //Diff tint and projectile- female
//Ogles - special cases- have their own spawnflags
#define OF_PUSHING 1
#define OF_PICK_UP 4
#define OF_PICK_DOWN 8
#define OF_CHISEL_UP 16
#define OF_CHISEL_DOWN 32
#define OF_HAMMER_UP 64
#define OF_HAMMER_DOWN 128
#define OF_SONG_LEADER 256
// ***************************************
// ** MONSTER STATS
// ***************************************
#define MAX_BLOCKING_THING_HEALTH 100//highest health some blocking ent can be and let a monster still hack away at it to clear it's path
//**********
//**ASSASSIN
//**********
#define ASSASSIN_HEALTH 250
#define ASSASSIN_MASS 180
#define ASSASSIN_MIN_DAMAGE 7
#define ASSASSIN_MAX_DAMAGE 13
#define ASSASSIN_MIN_CLOAK_RANGE 100
#define ASSASSIN_DAGGER_SPEED 500.0
#define ASS_TP_OFF 1
#define ASS_TP_ANY 2
#define ASS_TP_DEF 3
//**********
//**TRIAL BEAST
//**********
#define TB_HEALTH 7000
#define TB_MASS 10000
#define TB_DMG_BITE_MIN 30
#define TB_DMG_BITE_MAX 50
#define TB_DMG_IMPACT_MIN 10
#define TB_DMG_IMPACT_MAX 100
#define TB_DMG_IMPACT_KB 150
//**********
//**BEE
//**********
#define BEE_HEALTH 50
#define BEE_MASS 10
//**********
//**CHICKEN
//**********
#define CHICKEN_HEALTH 10
#define CHICKEN_MASS 30
//**********
//**ELF LORD
//**********
#define ELFLORD_HEALTH 2250
#define ELFLORD_MASS 2500
#define ELFLORD_STAR_MIN_DAMAGE 8
#define ELFLORD_STAR_MAX_DAMAGE 12
#define ELFLORD_BEAM_MIN_DAMAGE 4
#define ELFLORD_BEAM_MAX_DAMAGE 8
//**********
//**FISH
//**********
#define FISH_HEALTH 50
#define FISH_MASS 120
#define FISH_DMG_BITE_MIN 5
#define FISH_DMG_BITE_MAX 10
//**********
//**GKROKON
//**********
#define GKROKON_HEALTH 75
#define GKROKON_MASS 60
#define GKROKON_DMG_SPOO_MIN 4
#define GKROKON_DMG_SPOO_MAX 8
#define GKROKON_DMG_BITE_MIN 5
#define GKROKON_DMG_BITE_MAX 10
//**********
//**GORGON
//**********
#define GORGON_HEALTH 100
#define GORGON_MASS 80
#define GORGON_SCALE_MIN 0.9
#define GORGON_SCALE_MAX 1.2
#define GORGON_DMG_MIN 5 // Note: This is multiplied by the scale of the creature
#define GORGON_DMG_MAX 10 // Note: This is multiplied by the scale of the creature
#define GORGON_LEADER_HEALTH 200
#define GORGON_LEADER_MASS 300
#define GORGON_ALERT_DIST 500
#define GORGON_SKIN 0
#define GORGON_PAIN_SKIN 1
//**********
//**HARPY
//**********
#define HARPY_HEALTH 60
#define HARPY_MASS 100
#define HARPY_DMG_MIN 10
#define HARPY_DMG_MAX 20
//**********
//**IMP
//**********
#define IMP_HEALTH 200
#define IMP_MASS 75
#define IMP_DMG_MIN 10
#define IMP_DMG_MAX 20
//**********
//**MORCALAVIN
//**********
#define MORK_HEALTH1 100
#define MORK_HEALTH 2500
#define MORK_MASS 2500
#define MORK_DMG_BEAM_MIN 10
#define MORK_DMG_BEAM_MAX 20
#define MORK_DMG_PROJ1_MIN 2
#define MORK_DMG_PROJ1_MAX 5
#define MORK_DMG_PUFF_RADIUS 32
#define MORK_DMG_PUFF_MAX 128
#define MORK_DMG_PUFF_MIN 8
#define MORK_DMG_EYES_MULT 200
#define MORK_DMG_EYES_MIN 10
//**********
//**MUTANT SSITHRA
//**********
#define MSSITHRA_HEALTH 2250
#define MSSITHRA_MASS 2000
#define MSSITHRA_DMG_MIN 8
#define MSSITHRA_DMG_MAX 16
#define MSSITHRA_DMG_SWIPE 40
#define MSSITHRA_DMG_ARROW_RADIUS 50
#define MSSITHRA_ARROW_SPEED 600
//**********
//**OGLE
//**********
#define OGLE_HEALTH 100
#define OGLE_MASS 100
#define OGLE_DMG_MIN 5
#define OGLE_DMG_MAX 8
//**********
//**PLAGUE ELF
//**********
#define PLAGUEELF_HEALTH 50
#define PLAGUEELF_MASS 150
#define PLAGUEELF_DMG_MIN 2
#define PLAGUEELF_DMG_MAX 4
#define PLAGUEELF_DMG_HOE 1 // Modifiers to the min/max damage
#define PLAGUEELF_DMG_GAFF 2 // Modifiers to the min/max damage
#define PLAGUEELF_DMG_HAMMER -1 // Modifiers to the min/max damage
#define PLAGUEELF_DMG_SPELL_MIN 4
#define PLAGUEELF_DMG_SPELL_MAX 8
#define PLAGUEELF_GUARD_DMG_SPELL_MIN 5
#define PLAGUEELF_GUARD_DMG_SPELL_MAX 10
#define PALACE_ELF_SKIN 4 //for guards
#define DYING_ELF_PAIN_VOICE 0
#define DYING_ELF_IDLE_VOICE 1
#define DYING_ELF_TOUCH_VOICE 2
//**********
//**PLAGUE SSITHRA
//**********
#define SSITHRA_HEALTH 125
#define SSITHRA_MASS 200
#define SSITHRA_DMG_MIN 6
#define SSITHRA_DMG_MAX 8
#define SSITHRA_DMG_ARROW_RADIUS 50
#define SSITHRA_JUMP_VELOCITY 300.0
#define SSITHRA_HOP_VELOCITY 128.0
#define SSITHRA_SPOO_SPEED 450
#define SSITHRA_BIGARROW_DMG_MIN 16
#define SSITHRA_BIGARROW_DMG_MAX 24
//**********
//**HIGH PRIESTESS
//**********
#define HP_HEALTH 2500
#define HP_MASS 2000
#define HP_DMG_FURY_MIN 3
#define HP_DMG_FURY_MAX 5
#define HP_DMG_BROOD_MIN 8
#define HP_DMG_BROOD_MAX 16
#define HP_DMG_RAIN 2
#define HP_DMG_MISSILE_MIN 2
#define HP_DMG_MISSILE_MAX 4
#define HP_DMG_FIRE_MIN 2
#define HP_DMG_FIRE_MAX 4
//**********
//**RAT
//**********
#define RAT_HEALTH 10
#define RAT_MASS 10
#define RAT_DMG_BITE 1
#define RAT_GROUP_RANGE 150
//**********
//**SERAPH OVERLORD
//**********
#define SERAPH_HEALTH 250
#define SERAPH_MASS 350
#define SERAPH_DMG_WHIP 5
#define SERAPH_DMG_WHIP_RUN 8
//**********
//**SERAPH GUARD
//**********
#define SGUARD_HEALTH 300
#define SGUARD_MASS 1000
#define SGUARD_DMG_AXE 15
#define SGUARD_DMG_AXE_SPIN 30
#define SGUARD_DMG_SPELL_MIN 10
#define SGUARD_DMG_SPELL_MAX 15
//**********
//**PLAGUE SPREADER
//**********
#define SPREADER_HEALTH 200
#define SPREADER_MASS 275
#define SPREADER_DMG_DEATH 1
#define SPREADER_DMG_DEATH_RAD 30
#define SPREADER_DMG_RAM 10
#define SPREADER_DMG_RAM_KB 20
#define SPREADER_DMG_TAKEOFF 1
#define SPREADER_DMG_TAKEOFF_RAD 100
#define SPREADER_GRENADE_DAMAGE 20
#define SPREADER_GRENADE_RADIUS (100.0)
#define SPREADER_GRENADE_TIME (2.9F)
#define SPREADER_MIST_DAMAGE 1
#define SPREADER_MIST_RADIUS 40
#define SPREADER_MIST_GRADIUS 30
//**********
//**TCHEKRIK
//**********
#define TC_HEALTH_MALE 200
#define TC_HEALTH_FEMALE 200
#define MASS_TC_MALE 300
#define MASS_TC_FEMALE 250
#define TC_DMG_STAB_MIN 5
#define TC_DMG_STAB_MAX 15
#define TC_MALE_DMG_HACK_MIN 15
#define TC_MALE_DMG_HACK_MAX 25
#define TC_FEMALE_DMG_HACK_MIN 3
#define TC_FEMALE_DMG_HACK_MAX 8
#define TC_DMG_FIREBALL_MIN 3
#define TC_DMG_FIREBALL_MAX 5
#define TC_DMG_SPEAR_MIN 1
#define TC_DMG_SPEAR_MAX 3
#define TC_DMG_YSPEAR_MIN 6
#define TC_DMG_YSPEAR_MAX 12
#define GLOBE_DAMAGE_MIN 10
#define GLOBE_DAMAGE_RANGE 35
#define GLOBE_EXPLOSION_RADIUS_MIN 89.0
#define GLOBE_EXPLOSION_RADIUS_MAX 160.0
#define INSECT_STAFF_SPEED 100.0
#define INSECT_STAFF_AIMED_SPEED 750.0
//MORCALAVIN EFFECTS
enum {
//offensive
FX_M_BEAM,
//impacts
FX_M_MISC_EXPLODE,
//other
FX_IMP_FIRE,
FX_IMP_FBEXPL,
FX_CW_STARS,
FX_BUOY,
FX_BUOY_PATH,
FX_M_MOBLUR,
FX_ASS_DAGGER,
FX_UNDER_WATER_WAKE,
//jweier
FX_QUAKE_RING,
FX_GROUND_ATTACK,
FX_MORK_BEAM,
FX_MORK_MISSILE,
FX_MORK_MISSILE_HIT,
FX_MORK_TRACKING_MISSILE,
FX_MSSITHRA_EXPLODE,
FX_MSSITHRA_ARROW,
FX_MSSITHRA_ARROW_CHARGE,
};
//MISC globals
extern edict_t *give_head_to_harpy;
extern edict_t *take_head_from;
#endif // G_STATS_H