mirror of
https://github.com/fortressforever/tfc-reference-data.git
synced 2024-11-24 21:02:23 +00:00
Some more info/test plugins
Findings: - RPG radius is random in line with the damage, and does ~0.5 damage at edge of radius. Radius is roughly similar to that in FF - Frag gren damage falls off to 0 at the edge of its radius, and does more max damage than in FF. - MIRV and MIRVlets do identical damage to frag grens
This commit is contained in:
parent
6a4cda3277
commit
2a8a9a52ef
7 changed files with 109 additions and 2 deletions
|
@ -6,4 +6,10 @@
|
||||||
* Approximately +1000 velocity in the direction of the player's current velocity
|
* Approximately +1000 velocity in the direction of the player's current velocity
|
||||||
|
|
||||||
### While standing still
|
### While standing still
|
||||||
* Approximately +950 velocity straight up
|
* Approximately +950 velocity straight up
|
||||||
|
|
||||||
|
## Damage and radius
|
||||||
|
|
||||||
|
* At origin: 162
|
||||||
|
* Radius: ~368 from origin (note: not from edge of player hitbox)
|
||||||
|
* Falloff: 0 damage at edge of radius
|
8
grenades/mirv/README.md
Normal file
8
grenades/mirv/README.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# MIRV Grenade
|
||||||
|
|
||||||
|
## Damage and radius
|
||||||
|
|
||||||
|
* At origin: 162
|
||||||
|
* Radius: ~368 from origin (note: not from edge of player hitbox)
|
||||||
|
* Falloff: 0 damage at edge of radius
|
||||||
|
* Both the MIRV and MIRVlets do the same damage and have the same radius
|
|
@ -6,6 +6,7 @@
|
||||||
#define AUTHOR "squeek."
|
#define AUTHOR "squeek."
|
||||||
|
|
||||||
#define TEST_GREN_TARGET_CVAR "test_gren_target"
|
#define TEST_GREN_TARGET_CVAR "test_gren_target"
|
||||||
|
#define TEST_GREN_RADIUS_CVAR "test_gren_radius"
|
||||||
|
|
||||||
public plugin_init()
|
public plugin_init()
|
||||||
{
|
{
|
||||||
|
@ -13,11 +14,15 @@ public plugin_init()
|
||||||
register_think("tf_weapon_normalgrenade", "gren_think")
|
register_think("tf_weapon_normalgrenade", "gren_think")
|
||||||
|
|
||||||
register_cvar(TEST_GREN_TARGET_CVAR, "1")
|
register_cvar(TEST_GREN_TARGET_CVAR, "1")
|
||||||
|
register_cvar(TEST_GREN_RADIUS_CVAR, "0")
|
||||||
}
|
}
|
||||||
|
|
||||||
// teleport grenades to the origin of the target
|
// teleport grenades to the origin of the target
|
||||||
public gren_think(gren_id)
|
public gren_think(gren_id)
|
||||||
{
|
{
|
||||||
|
if (get_cvar_num(TEST_GREN_TARGET_CVAR) < 0)
|
||||||
|
return
|
||||||
|
|
||||||
teleport_ent_to_ent(gren_id, get_cvar_num(TEST_GREN_TARGET_CVAR))
|
teleport_ent_to_ent(gren_id, get_cvar_num(TEST_GREN_TARGET_CVAR))
|
||||||
static Float:zero_velocity[3] = {0.0}
|
static Float:zero_velocity[3] = {0.0}
|
||||||
entity_set_vector(gren_id, EV_VEC_velocity, zero_velocity)
|
entity_set_vector(gren_id, EV_VEC_velocity, zero_velocity)
|
||||||
|
@ -31,5 +36,6 @@ public teleport_ent_to_ent(ent_id, target_id)
|
||||||
|
|
||||||
static Float:target_origin[3]
|
static Float:target_origin[3]
|
||||||
entity_get_vector(target_id, EV_VEC_origin, target_origin)
|
entity_get_vector(target_id, EV_VEC_origin, target_origin)
|
||||||
|
target_origin[0] = target_origin[0] + get_cvar_num(TEST_GREN_RADIUS_CVAR)
|
||||||
entity_set_vector(ent_id, EV_VEC_origin, target_origin)
|
entity_set_vector(ent_id, EV_VEC_origin, target_origin)
|
||||||
}
|
}
|
42
plugins/test_mirv.sma
Normal file
42
plugins/test_mirv.sma
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#include <amxmodx>
|
||||||
|
#include <engine>
|
||||||
|
|
||||||
|
#define PLUGIN "Test Mirvs"
|
||||||
|
#define VERSION "0.1"
|
||||||
|
#define AUTHOR "squeek."
|
||||||
|
|
||||||
|
#define TEST_MIRV_TARGET_CVAR "test_mirv_target"
|
||||||
|
#define TEST_MIRV_RADIUS_CVAR "test_mirv_radius"
|
||||||
|
|
||||||
|
public plugin_init()
|
||||||
|
{
|
||||||
|
register_plugin(PLUGIN, VERSION, AUTHOR)
|
||||||
|
register_think("tf_weapon_mirvgrenade", "gren_think")
|
||||||
|
register_think("tf_weapon_mirvbomblet", "gren_think")
|
||||||
|
|
||||||
|
register_cvar(TEST_MIRV_TARGET_CVAR, "1")
|
||||||
|
register_cvar(TEST_MIRV_RADIUS_CVAR, "0")
|
||||||
|
}
|
||||||
|
|
||||||
|
// teleport grenades to the origin of the target
|
||||||
|
public gren_think(gren_id)
|
||||||
|
{
|
||||||
|
if (get_cvar_num(TEST_MIRV_TARGET_CVAR) < 0)
|
||||||
|
return
|
||||||
|
|
||||||
|
teleport_ent_to_ent(gren_id, get_cvar_num(TEST_MIRV_TARGET_CVAR))
|
||||||
|
static Float:zero_velocity[3] = {0.0}
|
||||||
|
entity_set_vector(gren_id, EV_VEC_velocity, zero_velocity)
|
||||||
|
}
|
||||||
|
|
||||||
|
// move entity to the origin of the target
|
||||||
|
public teleport_ent_to_ent(ent_id, target_id)
|
||||||
|
{
|
||||||
|
if (!is_valid_ent(target_id) || !is_valid_ent(ent_id))
|
||||||
|
return
|
||||||
|
|
||||||
|
static Float:target_origin[3]
|
||||||
|
entity_get_vector(target_id, EV_VEC_origin, target_origin)
|
||||||
|
target_origin[0] = target_origin[0] + get_cvar_num(TEST_MIRV_RADIUS_CVAR)
|
||||||
|
entity_set_vector(ent_id, EV_VEC_origin, target_origin)
|
||||||
|
}
|
41
plugins/test_rpg_radius.sma
Normal file
41
plugins/test_rpg_radius.sma
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include <amxmodx>
|
||||||
|
#include <engine>
|
||||||
|
|
||||||
|
#define PLUGIN "Test RPG Radius"
|
||||||
|
#define VERSION "0.1"
|
||||||
|
#define AUTHOR "squeek."
|
||||||
|
|
||||||
|
#define TEST_RPG_TARGET_CVAR "test_rpg_radius_target"
|
||||||
|
#define TEST_RPG_RADIUS_CVAR "test_rpg_radius"
|
||||||
|
|
||||||
|
public plugin_init()
|
||||||
|
{
|
||||||
|
register_plugin(PLUGIN, VERSION, AUTHOR)
|
||||||
|
register_touch("tf_rpg_rocket", "*", "rocket_touch")
|
||||||
|
|
||||||
|
register_cvar(TEST_RPG_TARGET_CVAR, "1")
|
||||||
|
register_cvar(TEST_RPG_RADIUS_CVAR, "0")
|
||||||
|
}
|
||||||
|
|
||||||
|
// teleport grenades to the origin of the target
|
||||||
|
public rocket_touch(gren_id)
|
||||||
|
{
|
||||||
|
if (get_cvar_num(TEST_RPG_TARGET_CVAR) < 0)
|
||||||
|
return
|
||||||
|
|
||||||
|
teleport_ent_to_ent(gren_id, get_cvar_num(TEST_RPG_TARGET_CVAR))
|
||||||
|
static Float:zero_velocity[3] = {0.0}
|
||||||
|
entity_set_vector(gren_id, EV_VEC_velocity, zero_velocity)
|
||||||
|
}
|
||||||
|
|
||||||
|
// move entity to the origin of the target
|
||||||
|
public teleport_ent_to_ent(ent_id, target_id)
|
||||||
|
{
|
||||||
|
if (!is_valid_ent(target_id) || !is_valid_ent(ent_id))
|
||||||
|
return
|
||||||
|
|
||||||
|
static Float:target_origin[3]
|
||||||
|
entity_get_vector(target_id, EV_VEC_origin, target_origin)
|
||||||
|
target_origin[0] = target_origin[0] + get_cvar_num(TEST_RPG_RADIUS_CVAR)
|
||||||
|
entity_set_vector(ent_id, EV_VEC_origin, target_origin)
|
||||||
|
}
|
|
@ -14,4 +14,4 @@ All damage data was measured with the exploding at a crouched player's origin ex
|
||||||
* Average: ~80
|
* Average: ~80
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
* Damage radius: ~120 units
|
* Damage radius: ~120 units (~136 from the origin)
|
|
@ -16,5 +16,9 @@ All damage data was measured with the rocket exploding at the player's origin ex
|
||||||
#### Damage frequency
|
#### Damage frequency
|
||||||
![Chart: Frequency of RPG Damage at Player Origin](graphics/damage_frequency.png)
|
![Chart: Frequency of RPG Damage at Player Origin](graphics/damage_frequency.png)
|
||||||
|
|
||||||
|
#### Radius
|
||||||
|
* Radius: ~125 from origin max (note: not from edge of player hitbox)
|
||||||
|
* Radius also seems to vary based on the randomness of the damage, and seems to do about half damage at the edge of its radius
|
||||||
|
|
||||||
### Misc
|
### Misc
|
||||||
* Projectile Speed: 900
|
* Projectile Speed: 900
|
Loading…
Reference in a new issue