6 if (
vdist(actor.origin - actor.enemy.origin, >,
WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, bot_range)))
18 if ((
WEP_CVAR_SEC(WEP_OVERKILL_SHOTGUN, refire_type) == 1) && (fire & 2) && (
time >= actor.jump_interval))
24 if ((actor.(weaponentity).wframe == WFRAME_IDLE) ||
25 (actor.(weaponentity).wframe == WFRAME_FIRE2))
28 actor.(weaponentity).
wframe = WFRAME_FIRE2;
30 if (it == actor || (
IS_SPEC(it) && it.enemy == actor))
32 wframe_send(it, actor.(weaponentity), WFRAME_FIRE2, autocvar_g_weaponratefactor, true);
38 if (
WEP_CVAR(WEP_OVERKILL_SHOTGUN, reload_ammo) && actor.(weaponentity).clip_load <
WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN,
ammo))
41 thiswep.wr_reload(thiswep, actor, weaponentity);
53 WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, damagefalloff_halflife),
54 WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, damagefalloff_mindist),
55 WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, damagefalloff_maxdist),
59 WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, spread_pattern_scale),
63 WEP_CVAR_PRI(WEP_OVERKILL_SHOTGUN, damagefalloff_forcehalflife),
68 if ((fire & 2) && (
WEP_CVAR_SEC(WEP_OVERKILL_SHOTGUN, refire_type) == 0))
99 return WEAPON_THINKING_WITH_PORTALS;
104 return WEAPON_OVERKILL_SHOTGUN_MURDER;
119 actor.prevric =
time;
132 PAR(_(
"The %s fires a single shotgun round which spreads into multiple pellets upon exiting the barrel, dealing a deadly blow if up close."),
COLORED_NAME(
this));
133 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));
134 PAR(_(
"The primary fire consumes %s ammo, although you spawn with an infinite amount of it in %s. "
135 "It has a limited magazine size, so needs reloading after several shots."),
COLORED_NAME(ITEM_Shells),
COLORED_NAME(MUTATOR_ok));
136 PAR(_(
"The %s damage drops off quickly as the range increases, so it is only useful for close combat or sometimes medium range combat."),
COLORED_NAME(
this));
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)
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.
#define COLORED_NAME(this)
#define PHYS_INPUT_BUTTON_ATCK(s)
#define PHYS_INPUT_BUTTON_ATCK2(s)
float W_WeaponRateFactor(entity this)
#define pointparticles(effect, org, vel, howmany)
entity Notification
always last
#define METHOD(cname, name, prototype)
void W_Shotgun_Attack(Weapon thiswep, entity actor,.entity weaponentity, float isprimary, float ammocount, float damage, float falloff_halflife, float falloff_mindist, float falloff_maxdist, float bullets, float spread, float spread_pattern, float spread_pattern_scale, float spread_pattern_bias, float solidpenetration, float force, float falloff_forcehalflife, entity bullet_trail_effect)
#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 FOREACH_CLIENT(cond, body)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt()
string W_Guide_Keybinds(Weapon wep)
string W_Guide_DPS_onlyOneMultishot(string name, string fire, string shots, string refire2)
#define WEP_CVAR_PRI(wep, name)
#define WEP_CVAR(wep, name)
#define WEP_CVAR_SEC(wep, name)
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)]