41 actor.punchangle_x =
random() - 0.5;
42 actor.punchangle_y =
random() - 0.5;
45 missile =
new(hlacbolt);
46 missile.owner = missile.realowner = actor;
47 missile.bot_dodge =
true;
49 missile.bot_dodgerating =
WEP_CVAR_PRI(WEP_HLAC, damage);
55 setsize(missile,
'0 0 0',
'0 0 0');
68 missile.projectiledeathtype = thiswep.
m_id;
69 missile.weaponentity_fld = weaponentity;
90 missile =
new(hlacbolt);
91 missile.owner = missile.realowner = actor;
92 missile.bot_dodge =
true;
94 missile.bot_dodgerating =
WEP_CVAR_SEC(WEP_HLAC, damage);
100 setsize(missile,
'0 0 0',
'0 0 0');
115 missile.weaponentity_fld = weaponentity;
124 actor.punchangle_x =
random() - 0.5;
125 actor.punchangle_y =
random() - 0.5;
132 if(actor.(weaponentity).m_weapon != actor.(weaponentity).m_switchweapon)
134 w_ready(thiswep, actor, weaponentity, fire);
144 w_ready(thiswep, actor, weaponentity, fire);
150 actor.(weaponentity).
misc_bulletcounter = actor.(weaponentity).misc_bulletcounter + 1;
167 thiswep.wr_reload(thiswep, actor, weaponentity);
178 else if((fire & 2) &&
WEP_CVAR(WEP_HLAC, secondary))
209 return WEAPON_HLAC_SUICIDE;
214 return WEAPON_HLAC_MURDER;
224 entity eff = EFFECT_GREEN_HLAC_IMPACT;
228 eff = EFFECT_BLASTER_IMPACT;
245 PAR(_(
"The %s (or HLAC for short) fires lasers in quick succession. "
247 PAR(_(
"The secondary fire shoots a burst of multiple randomly-scattered lasers at once."));
248 PAR(_(
"Unlike the %s, it consumes %s ammo for each laser shot, meaning that it cannot be used infinitely."),
COLORED_NAME(WEP_BLASTER),
COLORED_NAME(ITEM_Cells));
249 PAR(_(
"The %s works best in close ranges, but the primary fire is also useful in medium ranges."),
COLORED_NAME(
this));
250 PAR(_(
"A unique aspect of the %s is that the longer the primary fire is held, the more that the lasers will start to spread out. "
251 "This means releasing primary fire every now and then is important to restore accuracy. "
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.
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
virtual void wr_checkammo1()
(SERVER) checks ammo for weapon primary
#define COLORED_NAME(this)
const int IT_UNLIMITED_AMMO
#define PHYS_INPUT_BUTTON_ATCK(s)
float W_WeaponRateFactor(entity this)
void CSQCProjectile(entity e, float clientanimate, int type, float docull)
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
void W_SwitchWeapon_Force(Player this, Weapon w,.entity weaponentity)
const int HITTYPE_SECONDARY
void SUB_Remove(entity this)
Remove entity.
#define pointparticles(effect, org, vel, howmany)
#define particleeffectnum(e)
void W_HLAC_Attack(Weapon thiswep, entity actor,.entity weaponentity)
void W_HLAC_Attack_Frame(Weapon thiswep, entity actor,.entity weaponentity, int fire)
void W_HLAC_Attack2(Weapon thiswep, entity actor,.entity weaponentity)
void W_HLAC_Touch(entity this, entity toucher)
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
void set_movetype(entity this, int mt)
entity Notification
always last
#define METHOD(cname, name, prototype)
const int PROJECTILE_HLAC
#define w_getbestweapon(ent, wepent)
#define PROJECTILE_TOUCH(e, t)
IntrusiveList g_projectiles
#define PROJECTILE_MAKETRIGGER(e)
#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(ent, wepent, antilag, recoil, snd, chan, maxdamage, deathtype)
#define W_SetupProjVelocity_Basic(ent, pspeed, pspread)
string W_Guide_Keybinds(Weapon wep)
string W_Guide_DPS_secondaryMultishot(string name, string pri, string sec, string shots, string refire2, bool sec_variable)
void W_MuzzleFlash(Weapon thiswep, entity actor,.entity weaponentity, vector shotorg, vector shotdir)
#define WEP_CVAR_PRI(wep, name)
#define WEP_CVAR_BOTH(wep, isprimary, 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)
#define ATTACK_FINISHED(ent, w)
float weapon_load[REGISTRY_MAX(Weapons)]