heretic2-sdk/Toolkit/Programming/GameCode/game/g_playstats.h

300 lines
9.6 KiB
C
Raw Normal View History

1998-11-24 00:00:00 +00:00
//
// g_playstats.h
//
// Heretic II
// Copyright 1998 Raven Software
//
#ifndef _G_PLAYSTATS_H_
#define _G_PLAYSTATS_H_
// ***************************************
// ** GENERAL
// ***************************************
#define DAMAGE_DM_FACTOR 0.67
// ***************************************
// ** WEAPON STATS
// ***************************************
#define MAX_REFLECT 8
// Sword staff
#define SWORD_DMG_MIN 15
#define SWORD_DMG_MAX 25
#define SWORD_POWER1_DMG_MIN 30
#define SWORD_POWER1_DMG_MAX 40
#define SWORD_POWER2_DMG_MIN 45
#define SWORD_POWER2_DMG_MAX 55
#define SWORD_SPIN_DMG_MOD 1.75
1999-03-18 00:00:00 +00:00
#define SWORD_BACK_DMG_MOD 0.7
#define SWORD_STAB_DMG_MOD 2.5
#define SWORD_BLOCK_DELAY 1.2
#define SWORD_BLOCK_DURATION 0.4
#define SWORD_BLOCK_TIME (SWORD_BLOCK_DELAY + SWORD_BLOCK_DURATION)
1998-11-24 00:00:00 +00:00
// Flying Fist
#define FIREBALL_MIN_FIZZLE_DAMAGE 5 // Least amount of damage it will do after flying
#define FIREBALL_DAMAGE_MIN 20
#define FIREBALL_DAMAGE_MAX 25
#define FIREBALL_DAMAGE_MIN_POWER 30
#define FIREBALL_DAMAGE_MAX_POWER 40
#define FIREBALL_RADIUS 64.0 // Radius of damage for the powered up version.
#define FLYING_FIST_SPEED 1000.0
// Hellstaff
#define HELLBOLT_DAMAGE_MIN 7
#define HELLBOLT_DAMAGE_MAX 10
#define HELLLASER_DIST 1024.0
#define HELLLASER_DAMAGE_MIN 11
#define HELLLASER_DAMAGE_MAX 14
#define HELLBOLT_SPEED 1000.0
// Blast (Arc of Thunder)
#define BLAST_DISTANCE 1000.0 // Max range of the blast
#define BLAST_DMG_MIN 10
#define BLAST_DMG_MAX 15
#define BLAST_ANGLE_INC 3.5
#define BLAST_NUM_SHOTS 5
// Magic Missile array (powered up Arc)
#define MAGICMISSILE_DAMAGE_MIN 30
#define MAGICMISSILE_DAMAGE_MAX 40
#define MAGICMISSILE_DAMAGE_RAD 20
#define MAGICMISSILE_RADIUS 48
#define MAGICMISSILE_SPEED 1500.0
// #define MAGICMISSILE_DAMAGE_RADIUS 64
// Red Rain Arrows
#define RED_RAIN_DMG_ARROW_MIN 35
#define RED_RAIN_DMG_ARROW_MAX 45
#define RED_RAIN_DURATION 8.0F
#define RED_RAIN_DAMAGE_INTERVAL 0.25
#define RED_RAIN_DAMAGE 10 // 10 points every .25 seconds.
#define RED_RAIN_RADIUS 60.0F
#define MAX_REDRAINHEIGHT 200.0F
#define MAX_REDRAINFALLDIST 1000.0F
#define RED_RAIN_LIGHTNING_DURATION (RED_RAIN_DURATION - 1.5)
#define RED_RAIN_LIGHTNING_CHANCE 6 // 1 in 6 chance per target every .25 seconds
#define RED_RAIN_LIGHTNING_RADIUS 100.0
#define RED_RAIN_LIGHTNING_WIDTH 6.0
#define RED_RAIN_DMG_LIGHTNING_MIN 20
#define RED_RAIN_DMG_LIGHTNING_MAX 30
#define NUM_STORMS_PER_PLAYER 3//maybe 5, esp in DM?
#define RED_ARROW_SPEED 1000.0F
// Powered up red rain arrows
#define POWER_RAIN_DMG_ARROW_MIN 45
#define POWER_RAIN_DMG_ARROW_MAX 55
#define POWER_RAIN_DAMAGE 15 // 15 points every .25 seconds
#define POWER_RAIN_RADIUS 80.0F
#define POWER_RAIN_LIGHTNING_RADIUS 120.0
#define POWER_RAIN_LIGHTNING_WIDTH 40.0
#define POWER_RAIN_DMG_LIGHTNING_MIN 30 // Big nasty beam of thick lightning with radius damage
#define POWER_RAIN_DMG_LIGHTNING_MAX 45
#define POWER_RAIN_DMG_LIGHTNING_RADIUS 100
// Fireblast (unpowered firewall)
#define FIREBLAST_LIFETIME 5
#define FIREBLAST_SPEED 480.0
#define FIREBLAST_RADIUS 48.0
#define FIREBLAST_PROJ_RADIUS 8.0
#define FIREBLAST_DRADIUS (1.0)
#define FIREBLAST_VRADIUS 16
#define FIREBLAST_DAMAGE 48
#define FIREBLAST_DAMAGE_MIN 32
// Firewall (powered fireblast!)
#define FIREWAVE_UP 80
#define FIREWAVE_DOWN 48
#define FIREWAVE_SPEED 320.0F // Speed of the firewall
#define FIREWAVE_DM_SPEED 450.0F // Speed of the firewall in deathmatch
#define FIREWAVE_PROJ_RADIUS 8.0
#define FIREWAVE_RADIUS 20.0F // Size of each element of the firewall
#define FIREWAVE_DRADIUS (FIREWAVE_RADIUS)
#define FIREWAVE_DAMAGE 75 // How much damage the wall does every think.
#define FIREWAVE_DAMAGE_MIN 50
#define FIREWAVE_WORM_DAMAGE 30
#define FIREWAVE_WORM_RADIUS 64.0
// Phoenix Arrows
#define PHOENIX_EXPLODE_DAMAGE 175 // Silver armor + 100 health ends with 13 health. Demo: 225
#define PHOENIX_EXPLODE_RADIUS 128
#define PHOENIX_EXPLODE_DAMAGE_POWER 300 // Gold armor + 100 health ends with 25 health. Demo: 350
#define PHOENIX_EXPLODE_RADIUS_POWER 144
#define PHOENIX_ARROW_SPEED 640.0F
// Sphere of Annihilation
#define SPHERE_DAMAGE 100
#define SPHERE_RADIUS_MIN 48
#define SPHERE_RADIUS_MAX 256
#define SPHERE_BASE_MANA 6
#define SPHERE_MANA_PER_CHARGE 1
#define SPHERE_MAX_MANA_CHARGE 7 // For a total of 20 mana in a shot.
#define SPHERE_MAX_CHARGES (SPHERE_MAX_MANA_CHARGE * 2) // 2 frames per charge.
#define SPHERE_FLY_SPEED 600.0
#define SPHERE_LASER_SPEED 320.0
// Ripper (Iron Doom)
#define RIPPER_DAMAGE_MIN 40
#define RIPPER_DAMAGE_MAX 50
#define RIPPER_BALLS 8
#define RIPPER_BALL_ANGLE (M_PI*2.0/RIPPER_BALLS)
#define RIPPER_BALL_BANGLE (256/RIPPER_BALLS) // NOTE: Only works if the number of balls is evenly dividable!
#define RIPPER_EXPLODE_DAMAGE 20
#define RIPPER_SPEED 2000.0
#define RIPPER_EXPLODE_SPEED 500
// Mace balls (powered up Iron Doom)
#define MACEBALL_GRAVITY 0.5F
#define MACEBALL_LIFE 5.0
#define MACEBALL_EXTRALIFE 5
#define MACEBALL_DAMAGE 1000
#define MACEBALL_BOSS_DAMAGE 100
1999-03-18 00:00:00 +00:00
// tornado
#define TORN_DUR 0.5
#define SPIN_DUR 15.0
#define TORN_DAMAGE 20
1998-11-24 00:00:00 +00:00
#define FIRE_LINGER_PLAYER_DMG_MIN 0
#define FIRE_LINGER_PLAYER_DMG_MAX 1
#define FIRE_LINGER_DMG_MIN 2
#define FIRE_LINGER_DMG_MAX 3
// ***************************************
// ** DEFENSIVE SPELL STATS
// ***************************************
// Delay before you can use a defensive spell again.
#define DEFENSE_DEBOUNCE 0.5
// Blue Ring of repulsion
#define RING_EFFECT_RADIUS 200.0
#define RING_MASS_FACTOR 200.0
#define RING_KNOCKBACK_BASE 150
#define RING_KNOCKBACK_SCALE 200
// Meteor Barrier
#define METEOR_DAMAGE_MIN 35
#define METEOR_DAMAGE_MAX 40
#define METEOR_SEARCH_CHANCE 12
#define METEOR_SEARCH_RADIUS 800
// Morph ovum
#define NUM_OF_OVUMS 6
#define MORPH_DUR 30 // how long players / bad guys remain chickens - in seconds
// Lightning Shield
#define SHIELD_DAMAGE_MIN 15
#define SHIELD_DAMAGE_MAX 20
#define SHIELD_DURATION 23
#define SHIELD_DAMAGE_RADIUS 96
#define SHIELD_LIGHTNING_WIDTH 8
#define SHIELD_ATTACK_CHANCE 3 // This is the chance of searching at all, and the chance of being zapped if found.
// ***************************************
// ** OTHER EFFECT STATS
// ***************************************
///////////////////////////////////////////
// ITEM STUFF
///////////////////////////////////////////
#define BARREL_EXPLODE_DMG_MIN 10
#define BARREL_EXPLODE_DMG_MAX 100
#define BARREL_EXPLODE_RADIUS 128
///////////////////////////////////////////
// FLAME THROWER STUFF - SERVER SIDE
///////////////////////////////////////////
// time to move from min to max grav values - server side
#define GRAV_MOV 1.0
// gravity flamethrower starts with - server side
#define MAX_GRAV 1.2
// gravity flamethrower maxes out at - server side
#define MIN_GRAV 0.12
// time for flamethrower to be at its max - server side - seconds
#define ZEN_TIME 3.0
// damage flamethrower does at one hit
#define FLAME_THROW_DAMAGE 10.0
// frame update speed - server side
#define FLAME_UPDATE_PER_SEC 0.2
// count of number of updates per second - server side
#define FLAME_NUM_UPDATE_PER_SEC (GRAV_MOV / FLAME_UPDATE_PER_SEC)
// given the update speed, and the distance we have to go, and the time move from one to another,
// get us a value to update gravity with each frame
#define TOTAL_GRAV_MOV (MAX_GRAV - MIN_GRAV) / ((float)FLAME_NUM_UPDATE_PER_SEC)
///////////////////////////////////////////
// FLAME THROWER STUFF - CLIENT EFFECTS SIDE
///////////////////////////////////////////
// inital gravity value - client effects side. Should match cl_gravity->value
#define FLAME_GRAV -675.0
// gravity flamethrower starts out with - client effects side
#define MAX_GRAV_FX FLAME_GRAV * MAX_GRAV
// gravity flamethrower maxes out at - client effects side
#define MIN_GRAV_FX FLAME_GRAV * MIN_GRAV
// time for flamethrower to be at its max - client effects side - milliseconds
#define ZEN_TIME_FX ZEN_TIME * 1000.0
// time to move from min to max grav values - client effects side - milliseconds
#define GRAV_MOV_FX GRAV_MOV * 1000.0
// total distance from min to max grav
#define TOTAL_DIST_FX ((float)MAX_GRAV_FX - (float)MIN_GRAV_FX)
///////////////////////////////////////////
// SCREEN SHAKE DEFINES
///////////////////////////////////////////
#define SHAKE_LATERAL 1
#define SHAKE_VERTICAL 2
#define SHAKE_DEPTH 4
#define SHAKE_ALL_DIR 7
///////////////////////////////////////////
// DISTANCE DEFINES
///////////////////////////////////////////
1999-03-18 00:00:00 +00:00
#define RUN_MULT 1.65
1998-11-24 00:00:00 +00:00
#define FAR_CLIP_DIST "4096.0"
#define FAR_CLIP_DIST_VAL 4096.0
#define NEAR_CLIP_DIST "64.0"
#define NEAR_CLIP_DIST_VAL 64.0
#define DETAIL_LOW 0
#define DETAIL_NORMAL 1
#define DETAIL_HIGH 2
#define DETAIL_UBERHIGH 3
#define DETAIL_DEFAULT "2.0"
#define VIOLENCE_NONE 0
#define VIOLENCE_BLOOD 1
#define VIOLENCE_NORMAL 2
#define VIOLENCE_ULTRA 3
#define VIOLENCE_DEFAULT VIOLENCE_NORMAL
#define VIOLENCE_DEFAULT_STR "2"
///////////////////////////////////////////
// BREATH HOLDING DURATIONS (IN SECONDS)
///////////////////////////////////////////
#define HOLD_BREATH_TIME 20.0
#define M_HOLD_BREATH_TIME 12.0
#endif // _G_PLAYSTATS_H_