31 STAT(MOVEVARS_HIGHSPEED, player) *= 0.5;
57 setanim(actor, actor.anim_shoot,
true,
true,
true);
58 if (actor.animstate_endtime >
time)
59 actor.anim_finished = actor.animstate_endtime;
61 actor.anim_finished =
time + 1;
62 actor.attack_finished_single[0] = actor.anim_finished + 0.2;
80 actor.attack_range = 60;
133 entity proj =
new(plasma);
134 proj.owner = proj.realowner =
this;
137 proj.bot_dodge =
true;
138 proj.bot_dodgerating = 0;
139 proj.nextthink =
time + 5;
141 proj.projectiledeathtype = DEATH_MONSTER_SPIDER.m_id;
149 setsize(proj,
'-4 -4 -4',
'4 4 4');
151 proj.damageforcescale = 0;
157 proj.damagedbycontents =
true;
160 proj.bouncefactor = 0.3;
161 proj.bouncestop = 0.05;
169 Weapon wep = WEP_SPIDER_ATTACK;
173 wep.
wr_think(wep, actor, weaponentity, 2);
179 wep.
wr_think(wep, actor, weaponentity, 1);
201 setanim(actor, ((
random() > 0.5) ? actor.anim_pain2 : actor.anim_pain1),
true,
true,
false);
202 actor.pain_finished = actor.animstate_endtime;
209 setanim(actor, ((
random() > 0.5) ? actor.anim_die2 : actor.anim_die1),
false,
true,
true);
218 actor.anim_melee =
animfixfps(actor,
'0 1 5', none);
219 actor.anim_die1 =
animfixfps(actor,
'1 1 1', none);
220 actor.anim_die2 =
animfixfps(actor,
'2 1 1', none);
221 actor.anim_shoot =
animfixfps(actor,
'3 1 1', none);
223 actor.anim_idle =
animfixfps(actor,
'5 1 1', none);
225 actor.anim_pain1 =
animfixfps(actor,
'7 1 1', none);
226 actor.anim_pain2 =
animfixfps(actor,
'8 1 1', none);
228 actor.anim_walk =
animfixfps(actor,
'10 1 1', none);
229 actor.anim_run =
animfixfps(actor,
'10 1 1', none);
262 PAR(_(
"The Spider is a large mechanically-enhanced arachnoid adept at hunting speedy enemies."));
263 PAR(_(
"To slow down its target, the Spider launches a synthetic web-like substance from its cannons. "
264 "Approaching its enwebbed prey, the Spider will inflict a series of high damage bites."));
IntrusiveList g_bot_dodge
#define REGISTER_MUTATOR(...)
#define MUTATOR_HOOKFUNCTION(...)
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_think()
(SERVER) logic to run every frame
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)
IntrusiveList g_damagedbycontents
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
SetResourceExplicit(ent, RES_ARMOR, ReadByte() *DEC_FACTOR)) ENTCS_PROP(NAME
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.
noref entity WarpZone_SearchInRadius_otherent
Free to use in the callback.
vector animfixfps(entity e, vector a, vector b)
void set_movetype(entity this, int mt)
const int MOVETYPE_BOUNCE
#define METHOD(cname, name, prototype)
const int PROJECTILE_ELECTRO
void adaptor_think2use_hittype_splash(entity this)
#define PROJECTILE_TOUCH(e, t)
IntrusiveList g_projectiles
#define PROJECTILE_MAKETRIGGER(e)
#define sound(e, c, s, v, a)
string W_Sound(string w_snd)
#define SOUND(name, path)
float autocvar_g_monster_spider_attack_bite_delay
float autocvar_g_monster_spider_damageforcescale
string autocvar_g_monster_spider_loot
void M_Spider_Attack_Web_Explode_use(entity this, entity actor, entity trigger)
float autocvar_g_monster_spider_attack_web_delay
float autocvar_g_monster_spider_attack_web_speed
bool M_Spider_Attack(int attack_type, entity actor, entity targ,.entity weaponentity)
float autocvar_g_monster_spider_speed_stop
float autocvar_g_monster_spider_speed_run
bool M_Spider_Attack_Web_Explode_cond(entity e)
void M_Spider_Attack_Web(entity this)
float autocvar_g_monster_spider_speed_walk
float autocvar_g_monster_spider_health
void M_Spider_Attack_Web_Explode(entity this)
float autocvar_g_monster_spider_attack_web_range
void M_Spider_Attack_Web_Touch(entity this, entity toucher)
float autocvar_g_monster_spider_attack_bite_damage
float autocvar_g_monster_spider_attack_web_damagetime
float autocvar_g_monster_spider_attack_web_speed_up
bool StatusEffects_active(StatusEffect this, entity actor)
void StatusEffects_apply(StatusEffect this, entity actor, float eff_time, int eff_flags)
#define PAR(...)
Adds an individually translatable paragraph to PAGE_TEXT without having to deal with strcat and sprin...
bool Monster_Spawn(entity this, bool check_appear, Monster mon)
Setup the basic required properties for a monster.
entity Monster_FindTarget(entity this)
void monster_makevectors(entity this, entity targ)
bool Monster_Attack_Melee(entity this, entity targ, float damg, vector anim, float er, float animtime, int deathtype, bool dostop)
const int MONSTER_ATTACK_MELEE
const int MONSTER_ATTACK_RANGED
void W_SetupProjVelocity_Explicit(entity proj, vector dir, vector upDir, float pSpeed, float pUpSpeed, float pZSpeed, float spread, float forceAbsolute)
#define W_SetupShot_Dir(ent, wepent, s_forward, antilag, recoil, snd, chan, maxdamage, deathtype)
#define CENTER_OR_VIEWOFS(ent)
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt().
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)