5 .float m_chainsaw_damage;
7 void W_OverkillRocketPropelledChainsaw_Explode(
entity this,
entity directhitentity)
12 float explosion_damage =
RadiusDamage(
this, this.
realowner,
WEP_CVAR_PRI(okrpc, damage),
WEP_CVAR_PRI(okrpc, edgedamage),
WEP_CVAR_PRI(okrpc,
radius),
NULL,
NULL,
WEP_CVAR_PRI(okrpc, force), this.
projectiledeathtype, this.
weaponentity_fld, directhitentity);
13 if (explosion_damage > 0 && this.m_chainsaw_damage > 0)
23 void W_OverkillRocketPropelledChainsaw_Explode_think(
entity this)
25 W_OverkillRocketPropelledChainsaw_Explode(
this,
NULL);
28 void W_OverkillRocketPropelledChainsaw_Touch (
entity this,
entity toucher)
34 W_OverkillRocketPropelledChainsaw_Explode(
this, toucher);
51 void W_OverkillRocketPropelledChainsaw_Think(
entity this)
68 if (this.m_chainsaw_damage == 0)
87 void W_OverkillRocketPropelledChainsaw_Attack(
Weapon thiswep,
entity actor, .
entity weaponentity)
92 W_SetupShot_ProjectileSize(actor, weaponentity,
'-3 -3 -3',
'3 3 3',
false, 5, SND_ROCKET_FIRE,
CH_WEAPON_A,
WEP_CVAR_PRI(okrpc, damage), thiswep.
m_id);
96 missile.owner = missile.realowner = actor;
97 missile.bot_dodge =
true;
98 missile.bot_dodgerating =
WEP_CVAR_PRI(okrpc, damage) * 2;
103 missile.event_damage = W_OverkillRocketPropelledChainsaw_Damage;
104 missile.damagedbycontents =
true;
108 missile.projectiledeathtype = thiswep.
m_id;
109 missile.weaponentity_fld = weaponentity;
110 setsize (missile,
'-3 -3 -3',
'3 3 3');
115 settouch(missile, W_OverkillRocketPropelledChainsaw_Touch);
117 setthink(missile, W_OverkillRocketPropelledChainsaw_Think);
119 missile.nextthink =
time;
120 missile.flags = FL_PROJECTILE;
126 missile.m_chainsaw_damage = 0;
138 if ((
WEP_CVAR_SEC(okrpc, refire_type) == 1) && (fire & 2) && (
time >= actor.jump_interval))
142 BLASTER_SECONDARY_ATTACK(okrpc, actor, weaponentity);
143 if ((actor.(weaponentity).wframe == WFRAME_IDLE) ||
144 (actor.(weaponentity).wframe == WFRAME_FIRE2))
147 actor.(weaponentity).wframe = WFRAME_FIRE2;
149 if (it == actor || (
IS_SPEC(it) && it.enemy == actor))
151 wframe_send(it, actor.(weaponentity), WFRAME_FIRE2, autocvar_g_weaponratefactor, true);
160 thiswep.wr_reload(thiswep, actor, weaponentity);
169 W_OverkillRocketPropelledChainsaw_Attack(thiswep, actor, weaponentity);
173 if ((fire & 2) && (
WEP_CVAR_SEC(okrpc, refire_type) == 0))
179 BLASTER_SECONDARY_ATTACK(okrpc, actor, weaponentity);
206 return WEAPON_OVERKILL_RPC_SUICIDE_SPLASH;
208 return WEAPON_OVERKILL_RPC_SUICIDE_DIRECT;
214 return WEAPON_BLASTER_MURDER;
216 return WEAPON_OVERKILL_RPC_MURDER_SPLASH;
218 return WEAPON_OVERKILL_RPC_MURDER_DIRECT;
228 org2 = w_org + w_backoff * 12;
const int HITTYPE_SPLASH
automatically set by RadiusDamage
#define WEP_CVAR_PRI(wepname, name)
#define W_SetupProjVelocity_Basic(ent, pspeed, pspread)
bool bot_aim(entity this,.entity weaponentity, float shotspeed, float shotspeedupward, float maxshottime, float applygravity)
#define WEP_CVAR_SEC(wepname, name)
float weapon_load[REGISTRY_MAX(Weapons)]
#define PROJECTILE_MAKETRIGGER(e)
bool SetResourceExplicit(entity e, Resource res_type, float amount)
Sets the resource amount of an entity without calling any hooks.
#define W_SetupShot_ProjectileSize(ent, wepent, mi, ma, antilag, recoil, snd, chan, maxdamage, deathtype)
float W_CheckProjectileDamage(entity inflictor, entity projowner, int deathtype, float exception)
IntrusiveList g_damagedbycontents
#define FOREACH_CLIENT(cond, body)
void w_ready(Weapon thiswep, entity actor,.entity weaponentity, int fire)
#define WEP_CVAR(wepname, name)
#define METHOD(cname, name, prototype)
void CSQCProjectile(entity e, float clientanimate, int type, float docull)
#define DEATH_WEAPONOF(t)
IntrusiveList g_bot_dodge
void TakeResource(entity receiver, Resource res_type, float amount)
Takes an entity some resource.
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
void UpdateCSQCProjectile(entity e)
bool weapon_prepareattack(Weapon thiswep, entity actor,.entity weaponentity, bool secondary, float attacktime)
void animdecide_setaction(entity e, float action, float restart)
void W_PrepareExplosionByDamage(entity this, entity attacker, void(entity this) explode)
#define PHYS_INPUT_BUTTON_ATCK(s)
const int ANIMACTION_SHOOT
void Damage(entity targ, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
const int HITTYPE_SECONDARY
vector(float skel, float bonenum) _skel_get_boneabs_hidden
IntrusiveList g_projectiles
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
void accuracy_add(entity this, Weapon w, float fired, float hit)
entity Notification
always last
void weapon_thinkf(entity actor,.entity weaponentity, WFRAME fr, float t, void(Weapon thiswep, entity actor,.entity weaponentity, int fire) func)
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
bool accuracy_isgooddamage(entity attacker, entity targ)
#define MUTATOR_CALLHOOK(id,...)
float WarpZone_Projectile_Touch(entity this, entity toucher)
void W_DecreaseAmmo(Weapon wep, entity actor, float ammo_use,.entity weaponentity)
#define sound(e, c, s, v, a)
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
float W_WeaponRateFactor(entity this)
void set_movetype(entity this, int mt)
void W_Reload(entity actor,.entity weaponentity, float sent_ammo_min, Sound sent_sound)