21 p.x += e.mins.x +
random() * (e.maxs.x - e.mins.x);
22 p.y += e.mins.y +
random() * (e.maxs.y - e.mins.y);
23 p.z += e.mins.z +
random() * (e.maxs.z - e.mins.z);
27 e.fireball_impactvec = p;
34 d = damage + (edgedamage - damage) * (d / dist);
62 { this.velocity_z = 200; }
81 proj.owner = this.
owner;
83 proj.team = this.
owner.team;
84 proj.bot_dodge =
true;
87 proj.projectiledeathtype = DEATH_NADE_NAPALM.m_id;
91 setsize(proj,
'-4 -4 -4',
'4 4 4');
92 setorigin(proj, this.
origin);
94 proj.nextthink =
time;
101 proj.velocity = kick;
136 { this.velocity_z = 200; }
157 entity fountain =
new(nade_napalm_fountain);
158 fountain.owner = this.
owner;
160 fountain.origin = this.
origin;
164 setorigin(fountain, fountain.origin);
166 fountain.nextthink =
time;
168 fountain.pushltime = fountain.ltime;
169 fountain.team = this.
team;
171 fountain.projectiledeathtype = DEATH_NADE_NAPALM.m_id;
172 fountain.bot_dodge =
true;
174 fountain.nade_special_time =
time;
175 setsize(fountain,
'-16 -16 -16',
'16 16 16');
184 PAR(_(
"The %s detonates after a short delay, spreading fiery napalm globs around in a fountain. "
185 "The napalm fire balls burn for a while, and damage players who get too close."),
COLORED_NAME(
this));
IntrusiveList g_bot_dodge
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define COLORED_NAME(this)
#define setmodel(this, m)
const float CONTENT_WATER
void UpdateCSQCProjectile(entity e)
void CSQCProjectile(entity e, float clientanimate, int type, float docull)
float Fire_AddDamage(entity e, entity o, float d, float t, float dt)
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
entity WarpZone_FindRadius(vector org, float rad, bool needlineofsight)
vector WarpZone_UnTransformOrigin(entity wz, vector v)
void set_movetype(entity this, int mt)
const int MOVETYPE_BOUNCE
void nade_napalm_boom(entity this)
void napalm_fountain_think(entity this)
void napalm_damage(entity this, float dist, float damage, float edgedamage, float burntime)
void nade_napalm_ball(entity this)
void napalm_ball_think(entity this)
const int PROJECTILE_NAPALM_FOUNTAIN
float autocvar_g_nades_napalm_fountain_lifetime
float autocvar_g_nades_napalm_ball_damage
float autocvar_g_nades_napalm_fountain_radius
float autocvar_g_nades_napalm_ball_damageforcescale
int autocvar_g_nades_napalm_ball_count
float autocvar_g_nades_napalm_ball_lifetime
float autocvar_g_nades_napalm_fountain_edgedamage
float autocvar_g_nades_napalm_burntime
bool autocvar_g_nades_napalm_selfdamage
float autocvar_g_nades_napalm_fountain_delay
float autocvar_g_nades_napalm_ball_spread
float autocvar_g_nades_napalm_ball_radius
float autocvar_g_nades_napalm_fountain_damage
#define METHOD(cname, name, prototype)
ERASEABLE void RandomSelection_Init()
#define RandomSelection_AddEnt(e, weight, priority)
entity RandomSelection_chosen_ent
#define round_handler_IsActive()
#define round_handler_IsRoundStarted()
IntrusiveList g_projectiles
#define PROJECTILE_MAKETRIGGER(e)
#define SND_NADE_NAPALM_FIRE
float spamsound(entity e, int chan, Sound samp, float vol, float _atten)
use this one if you might be causing spam (e.g.
bool StatusEffects_active(StatusEffect this, entity actor)
#define PAR(...)
Adds an individually translatable paragraph to PAGE_TEXT without having to deal with strcat and sprin...