299 lines
9.6 KiB
C
299 lines
9.6 KiB
C
//
|
|
// 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
|
|
#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)
|
|
|
|
// 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
|
|
|
|
// tornado
|
|
#define TORN_DUR 0.5
|
|
#define SPIN_DUR 15.0
|
|
#define TORN_DAMAGE 20
|
|
|
|
#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
|
|
///////////////////////////////////////////
|
|
|
|
#define RUN_MULT 1.65
|
|
|
|
#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_
|