32 modeleffect_spawn(
"models/sphere/sphere.md3", 0, 0, this.
origin,
'0 0 0',
'0 0 0',
'0 0 0', 0,
WEP_CVAR_PRI(WEP_FIREBALL, bfgradius), 0.2, 0.05, 0.25);
39 vector force_dir, realowner_org;
41 for (; e; e = e.chain)
50 dist =
vlen(e.WarpZone_findradius_dist);
55 force_dir = e.WarpZone_findradius_dist * 1 / -dist;
64 e.WarpZone_findradius_nearest,
68 Send_Effect(EFFECT_FIREBALL_BFGDAMAGE, e.WarpZone_findradius_nearest, -force_dir, 1);
136 W_SetupShot_ProjectileSize(actor, weaponentity,
'-16 -16 -16',
'16 16 16',
false, 2, SND_FIREBALL_FIRE2,
CH_WEAPON_A,
WEP_CVAR_PRI(WEP_FIREBALL, damage) +
WEP_CVAR_PRI(WEP_FIREBALL, bfgdamage), WEP_FIREBALL.m_id);
140 entity proj =
new(plasma_prim);
142 proj.owner = proj.realowner = actor;
143 proj.bot_dodge =
true;
144 proj.bot_dodgerating =
WEP_CVAR_PRI(WEP_FIREBALL, damage);
148 proj.nextthink =
time;
150 proj.team = actor.team;
155 proj.projectiledeathtype = WEP_FIREBALL.m_id;
156 proj.weaponentity_fld = weaponentity;
163 setsize(proj,
'-16 -16 -16',
'16 16 16');
179 actor.(weaponentity).
movedir = old_movedir;
261 W_SetupShot_ProjectileSize(actor, weaponentity,
'-4 -4 -4',
'4 4 4',
false, 2, SND_FIREBALL_FIRE,
CH_WEAPON_A,
WEP_CVAR_SEC(WEP_FIREBALL, damage), WEP_FIREBALL.m_id |
HITTYPE_SECONDARY);
262 actor.(weaponentity).
movedir = old_movedir;
266 entity proj =
new(grenade);
268 proj.owner = proj.realowner = actor;
269 proj.bot_dodge =
true;
270 proj.bot_dodgerating =
WEP_CVAR_SEC(WEP_FIREBALL, damage);
275 setsize(proj,
'-4 -4 -4',
'4 4 4');
278 proj.nextthink =
time;
300 if (!actor.bot_primary_fireballmooth)
306 actor.bot_primary_fireballmooth =
true;
315 actor.bot_primary_fireballmooth =
false;
324 if (
time >= actor.(weaponentity).fireball_primarytime
363 return WEAPON_FIREBALL_SUICIDE_FIREMINE;
365 return WEAPON_FIREBALL_SUICIDE_BLAST;
371 return WEAPON_FIREBALL_MURDER_FIREMINE;
373 return WEAPON_FIREBALL_MURDER_BLAST;
401 PAR(_(
"The %s supercharges then fires a massive fireball in a straight line, dealing heaps of splash damage over a large radius on impact."),
COLORED_NAME(
this));
402 PAR(_(
"The secondary fire launches flaming balls that set nearby players alight."));
403 PAR(_(
"It is a superweapon, so isn't often found in game."));
404 PAR(_(
"It doesn't require ammo, but it is destroyed after some time."));
405 PAR(_(
"Since the %s takes a moment to charge and the fireball travels slowly, using it effectively may be difficult, "
406 "but if done properly it can deal a ton of damage."),
COLORED_NAME(
this));
void accuracy_add(entity this, Weapon w, float fired, float hit, float real)
update accuracy stats
bool accuracy_isgooddamage(entity attacker, entity targ)
does this damage count towards accuracy stats?
bool bot_aim(entity this,.entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity, bool shot_accurate)
IntrusiveList g_bot_dodge
#define MUTATOR_CALLHOOK(id,...)
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
void TakeResource(entity receiver, Resource res_type, float amount)
Takes an entity some resource.
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
#define COLORED_NAME(this)
#define PHYS_INPUT_BUTTON_ATCK(s)
#define PHYS_INPUT_BUTTON_ATCK2(s)
float W_WeaponRateFactor(entity this)
void CSQCProjectile(entity e, float clientanimate, int type, float docull)
void Damage(entity targ, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
float Fire_AddDamage(entity e, entity o, float d, float t, float dt)
const int HITTYPE_BOUNCE
set manually after projectile has bounced
const int HITTYPE_SPLASH
automatically set by RadiusDamage
const int HITTYPE_SECONDARY
#define pointparticles(effect, org, vel, howmany)
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
SetResourceExplicit(ent, RES_ARMOR, ReadByte() *DEC_FACTOR)) ENTCS_PROP(NAME
void W_Fireball_Think(entity this)
void W_Fireball_Attack2(entity actor,.entity weaponentity)
void W_Fireball_Explode_use(entity this, entity actor, entity trigger)
void W_Fireball_TouchExplode(entity this, entity toucher)
void W_Fireball_Firemine_Touch(entity this, entity toucher)
void W_Fireball_Attack1_Frame0(Weapon thiswep, entity actor,.entity weaponentity, int fire)
bool W_Fireball_LaserPlay_cond(entity e)
void W_Fireball_Firemine_Think(entity this)
void W_Fireball_AttackEffect(entity actor,.entity weaponentity, int bullet_count)
void W_Fireball_Explode(entity this, entity directhitentity)
void W_Fireball_Damage(entity this, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
bool bot_primary_fireballmooth
bool W_Fireball_Explode_cond(entity e)
void W_Fireball_Attack1_Frame1(Weapon thiswep, entity actor,.entity weaponentity, int fire)
void W_Fireball_Attack1_Frame4(Weapon thiswep, entity actor,.entity weaponentity, int fire)
void W_Fireball_Attack1_Frame3(Weapon thiswep, entity actor,.entity weaponentity, int fire)
void W_Fireball_Explode_think(entity this)
void W_Fireball_Attack1(entity actor,.entity weaponentity)
void W_Fireball_Attack1_Frame2(Weapon thiswep, entity actor,.entity weaponentity, int fire)
float fireball_primarytime
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
entity WarpZone_SearchInRadius(vector org, float rad, float nomonsters, WarpZone_FindRadius_cond_callback_t cb)
Modified findradius aware of warpzones, that only includes entities that meet the "cb" criteria.
vector WarpZone_TransformOrigin(entity wz, vector org)
Transforms origin org across warpzone wz.
vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org)
Transform origin org in from's reference into to's reference.
void WarpZone_RefSys_Copy(entity me, entity from)
Copies the warpzone reference of from onto me.
#define WarpZone_TraceLine(org, end, nomonsters, forent)
noref entity WarpZone_SearchInRadius_otherent
Free to use in the callback.
void modeleffect_spawn(string m, float s, float f, vector o, vector v, vector ang, vector angv, float s0, float s2, float a, float t1, float t2)
void set_movetype(entity this, int mt)
const int MOVETYPE_BOUNCE
entity Notification
always last
#define METHOD(cname, name, prototype)
const int PROJECTILE_FIREMINE
const int PROJECTILE_FIREBALL
float health
Legacy fields for the resources. To be removed.
#define IS_INDEPENDENT_PLAYER(e)
float W_CheckProjectileDamage(entity inflictor, entity projowner, int deathtype, float exception)
void W_LaserPlay(entity this, float rad, float damage, float edgedamage, float burntime, WarpZone_FindRadius_cond_callback_t cb)
Randomly chooses a player within the radius to shoot a laser towards.
void W_PrepareExplosionByDamage(entity this, entity attacker, void(entity this) explode)
#define PROJECTILE_TOUCH(e, t)
IntrusiveList g_projectiles
#define PROJECTILE_MAKETRIGGER(e)
const int CH_WEAPON_SINGLE
#define sound(e, c, s, v, a)
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...
vector W_SetupShot_GetAlternatingOffset(int bullet_count)
#define W_SetupShot_ProjectileSize(ent, wepent, mi, ma, antilag, recoil, snd, chan, maxdamage, deathtype)
#define W_SetupProjVelocity_PRI(ent, wep)
#define W_SetupProjVelocity_UP_SEC(ent, wep)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt().
string W_Guide_Keybinds(Weapon wep)
string W_Guide_DPS(string name, string pri, string sec)
void W_MuzzleFlash(Weapon thiswep, entity actor,.entity weaponentity, vector shotorg, vector shotdir)
#define WEP_CVAR_PRI(wep, name)
#define WEP_CVAR_SEC(wep, name)
const int MAX_WEAPONSLOTS
entity weaponentities[MAX_WEAPONSLOTS]
void weapon_thinkf(entity actor,.entity weaponentity, WFRAME fr, float t, void(Weapon thiswep, entity actor,.entity weaponentity, int fire) func)
bool weapon_prepareattack(Weapon thiswep, entity actor,.entity weaponentity, bool secondary, float attacktime)
void w_ready(Weapon thiswep, entity actor,.entity weaponentity, int fire)