#ifdef SVQC
-.float spider_slowness; // effect time of slowness inflicted by spiders
-
.float spider_web_delay;
float autocvar_g_monster_spider_attack_web_damagetime;
{
entity player = M_ARGV(0, entity);
- if(time < player.spider_slowness)
+ if(StatusEffects_active(STATUSEFFECT_Webbed, player))
STAT(MOVEVARS_HIGHSPEED, player) *= 0.5;
}
{
entity mon = M_ARGV(0, entity);
- if(time < mon.spider_slowness)
+ if(StatusEffects_active(STATUSEFFECT_Webbed, mon))
{
M_ARGV(1, float) *= 0.5; // run speed
M_ARGV(2, float) *= 0.5; // walk speed
}
}
-MUTATOR_HOOKFUNCTION(spiderweb, PlayerSpawn)
-{
- entity player = M_ARGV(0, entity);
-
- player.spider_slowness = 0;
- return false;
-}
-
-MUTATOR_HOOKFUNCTION(spiderweb, MonsterSpawn)
-{
- entity mon = M_ARGV(0, entity);
-
- mon.spider_slowness = 0;
-}
-
SOUND(SpiderAttack_FIRE, W_Sound("electro_fire"));
METHOD(SpiderAttack, wr_think, void(SpiderAttack thiswep, entity actor, .entity weaponentity, int fire))
{
FOREACH_ENTITY_RADIUS(this.origin, 25, it != this && it.takedamage && !IS_DEAD(it) && GetResource(it, RES_HEALTH) > 0 && it.monsterdef != MON_SPIDER,
{
- it.spider_slowness = time + (autocvar_g_monster_spider_attack_web_damagetime);
+ StatusEffects_apply(STATUSEFFECT_Webbed, it, time + autocvar_g_monster_spider_attack_web_damagetime, 0);
});
delete(this);