12 float explosion_damage =
RadiusDamage(
this, this.
realowner,
WEP_CVAR_PRI(WEP_OVERKILL_RPC, damage),
WEP_CVAR_PRI(WEP_OVERKILL_RPC, edgedamage),
WEP_CVAR_PRI(WEP_OVERKILL_RPC,
radius),
NULL,
NULL,
WEP_CVAR_PRI(WEP_OVERKILL_RPC, force), this.
projectiledeathtype, this.
weaponentity_fld, directhitentity);
73 float hit_damage =
WEP_CVAR_PRI(WEP_OVERKILL_RPC, damage2);
92 W_SetupShot_ProjectileSize(actor, weaponentity,
'-3 -3 -3',
'3 3 3',
false, 5, SND_RPC_FIRE,
CH_WEAPON_A,
WEP_CVAR_PRI(WEP_OVERKILL_RPC, damage), thiswep.
m_id);
96 missile.owner = missile.realowner = actor;
97 missile.bot_dodge =
true;
98 missile.bot_dodgerating =
WEP_CVAR_PRI(WEP_OVERKILL_RPC, damage) * 2;
104 missile.damagedbycontents =
true;
108 missile.projectiledeathtype = thiswep.
m_id;
109 missile.weaponentity_fld = weaponentity;
110 setsize (missile,
'-3 -3 -3',
'3 3 3');
119 missile.nextthink =
time;
126 missile.m_chainsaw_damage = 0;
138 if ((
WEP_CVAR_SEC(WEP_OVERKILL_RPC, refire_type) == 1) && (fire & 2) && (
time >= actor.jump_interval))
144 if ((actor.(weaponentity).wframe == WFRAME_IDLE) ||
145 (actor.(weaponentity).wframe == WFRAME_FIRE2))
148 actor.(weaponentity).
wframe = WFRAME_FIRE2;
150 if (it == actor || (
IS_SPEC(it) && it.enemy == actor))
152 wframe_send(it, actor.(weaponentity), WFRAME_FIRE2, autocvar_g_weaponratefactor, true);
158 if (
WEP_CVAR(WEP_OVERKILL_RPC, reload_ammo) && actor.(weaponentity).clip_load <
WEP_CVAR_PRI(WEP_OVERKILL_RPC,
ammo))
161 thiswep.wr_reload(thiswep, actor, weaponentity);
174 if ((fire & 2) && (
WEP_CVAR_SEC(WEP_OVERKILL_RPC, refire_type) == 0))
208 return WEAPON_OVERKILL_RPC_SUICIDE_SPLASH;
210 return WEAPON_OVERKILL_RPC_SUICIDE_DIRECT;
216 return WEAPON_OVERKILL_RPC_MURDER_SPLASH;
218 return WEAPON_OVERKILL_RPC_MURDER_DIRECT;
242 PAR(_(
"As the name suggests, the %s is a superweapon that fires a rocket propelled chainsaw which explodes on impact, dealing a lot of splash damage to any players close by."),
COLORED_NAME(
this));
243 PAR(_(
"Like with all %s weapons, the secondary fire shoots a laser which doesn't damage or push enemies, but can be used to push yourself around."),
COLORED_NAME(MUTATOR_ok));
244 PAR(_(
"It is a superweapon found on some maps, meaning that it breaks down after some time."));
245 PAR(_(
"The primary fire consumes %s ammo, although you spawn with an infinite amount of it in %s."),
COLORED_NAME(ITEM_Rockets),
COLORED_NAME(MUTATOR_ok));
246 PAR(_(
"Since it is the only %s weapon which deals splash damage, the %s is a good choice of weapon for attacking groups of enemies."),
COLORED_NAME(MUTATOR_ok),
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?
void animdecide_setaction(entity e, float action, float restart)
const int ANIMACTION_SHOOT
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,...)
void W_Blaster_Attack(entity actor,.entity weaponentity)
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.
bool SetResourceExplicit(entity e, Resource res_type, float amount)
Sets the resource amount of an entity without calling any hooks.
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)
float W_WeaponRateFactor(entity this)
void UpdateCSQCProjectile(entity e)
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)
IntrusiveList g_damagedbycontents
#define DEATH_WEAPONOF(t)
#define pointparticles(effect, org, vel, howmany)
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
void set_movetype(entity this, int mt)
entity Notification
always last
void W_OverkillRocketPropelledChainsaw_Explode_think(entity this)
void W_OverkillRocketPropelledChainsaw_Touch(entity this, entity toucher)
void W_OverkillRocketPropelledChainsaw_Damage(entity this, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
void W_OverkillRocketPropelledChainsaw_Explode(entity this, entity directhitentity)
void W_OverkillRocketPropelledChainsaw_Attack(Weapon thiswep, entity actor,.entity weaponentity)
void W_OverkillRocketPropelledChainsaw_Think(entity this)
#define METHOD(cname, name, prototype)
float health
Legacy fields for the resources. To be removed.
float W_CheckProjectileDamage(entity inflictor, entity projowner, int deathtype, float exception)
void W_PrepareExplosionByDamage(entity this, entity attacker, void(entity this) explode)
IntrusiveList g_projectiles
#define PROJECTILE_MAKETRIGGER(e)
float WarpZone_Projectile_Touch(entity this, entity toucher)
#define sound(e, c, s, v, a)
#define PAR(...)
Adds an individually translatable paragraph to PAGE_TEXT without having to deal with strcat and sprin...
#define W_SetupShot_ProjectileSize(ent, wepent, mi, ma, antilag, recoil, snd, chan, maxdamage, deathtype)
#define W_SetupProjVelocity_Basic(ent, pspeed, pspread)
#define FOREACH_CLIENT(cond, body)
string W_Guide_Keybinds(Weapon wep)
string W_Guide_DPS_onlyOne_andDirectHit(string name, string fire)
void W_MuzzleFlash(Weapon thiswep, entity actor,.entity weaponentity, vector shotorg, vector shotdir)
#define WEP_CVAR_PRI(wep, name)
#define WEP_CVAR(wep, name)
#define WEP_CVAR_SEC(wep, name)
void W_DecreaseAmmo(Weapon wep, entity actor, float ammo_use,.entity weaponentity)
void W_Reload(entity actor,.entity weaponentity, float sent_ammo_min, Sound sent_sound)
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)
float weapon_load[REGISTRY_MAX(Weapons)]