5 float autocvar_g_monster_wyvern_attack_fireball_damage;
6 float autocvar_g_monster_wyvern_attack_fireball_edgedamage;
7 float autocvar_g_monster_wyvern_attack_fireball_damagetime;
8 float autocvar_g_monster_wyvern_attack_fireball_force;
9 float autocvar_g_monster_wyvern_attack_fireball_radius;
10 float autocvar_g_monster_wyvern_attack_fireball_speed;
12 void M_Wyvern_Attack_Fireball_Explode(
entity this);
13 void M_Wyvern_Attack_Fireball_Touch(
entity this,
entity toucher);
24 actor.attack_finished_single[0] =
time + 1.2;
25 actor.anim_finished =
time + 1.2;
29 missile.owner = missile.realowner = actor;
32 missile.projectiledeathtype = DEATH_MONSTER_WYVERN.m_id;
33 setsize(missile,
'-6 -6 -6',
'6 6 6');
35 missile.flags = FL_PROJECTILE;
38 missile.velocity =
w_shotdir * (autocvar_g_monster_wyvern_attack_fireball_speed);
39 missile.avelocity =
'300 300 300';
40 missile.nextthink =
time + 5;
41 setthink(missile, M_Wyvern_Attack_Fireball_Explode);
42 settouch(missile, M_Wyvern_Attack_Fireball_Touch);
54 float autocvar_g_monster_wyvern_health;
55 float autocvar_g_monster_wyvern_damageforcescale = 0.6;
56 float autocvar_g_monster_wyvern_speed_stop;
57 float autocvar_g_monster_wyvern_speed_run;
58 float autocvar_g_monster_wyvern_speed_walk;
68 void M_Wyvern_Attack_Fireball_Explode(
entity this)
70 Send_Effect(EFFECT_FIREBALL_EXPLODE, this.
origin,
'0 0 0', 1);
74 RadiusDamage(
this, own, autocvar_g_monster_wyvern_attack_fireball_damage, autocvar_g_monster_wyvern_attack_fireball_edgedamage, autocvar_g_monster_wyvern_attack_fireball_force,
77 FOREACH_ENTITY_RADIUS(this.
origin, autocvar_g_monster_wyvern_attack_fireball_radius, it.takedamage ==
DAMAGE_AIM,
79 Fire_AddDamage(it, own, 5 * MONSTER_SKILLMOD(own), autocvar_g_monster_wyvern_attack_fireball_damagetime, this.projectiledeathtype);
85 void M_Wyvern_Attack_Fireball_Touch(
entity this,
entity toucher)
89 M_Wyvern_Attack_Fireball_Explode(
this);
100 Weapon wep = WEP_WYVERN_ATTACK;
101 wep.wr_think(wep, actor, weaponentity, 1);
122 actor.pain_finished =
time + 0.5;
123 setanim(actor, actor.anim_pain1,
true,
true,
false);
130 setanim(actor, actor.anim_die1,
false,
true,
true);
131 actor.velocity_x = -200 + 400 *
random();
132 actor.velocity_y = -200 + 400 *
random();
133 actor.velocity_z = 100 + 100 *
random();
142 actor.anim_die1 = animfixfps(actor,
'4 1 0.5', none);
143 actor.anim_walk = animfixfps(actor,
'1 1 1', none);
144 actor.anim_idle = animfixfps(actor,
'0 1 1', none);
145 actor.anim_pain1 = animfixfps(actor,
'3 1 2', none);
146 actor.anim_shoot = animfixfps(actor,
'2 1 5', none);
147 actor.anim_run = animfixfps(actor,
'1 1 1', none);
156 if(!actor.speed) { actor.speed = (autocvar_g_monster_wyvern_speed_walk); }
157 if(!actor.speed2) { actor.speed2 = (autocvar_g_monster_wyvern_speed_run); }
158 if(!actor.stopspeed) { actor.stopspeed = (autocvar_g_monster_wyvern_speed_stop); }
159 if(!actor.damageforcescale) { actor.damageforcescale = (autocvar_g_monster_wyvern_damageforcescale); }
161 actor.monster_loot = ITEM_Cells;
162 actor.monster_attackfunc = M_Wyvern_Attack;
bool SetResourceExplicit(entity e, Resource res_type, float amount)
Sets the resource amount of an entity without calling any hooks.
void w_ready(Weapon thiswep, entity actor,.entity weaponentity, int fire)
spawnfunc(info_player_attacker)
string W_Sound(string w_snd)
#define METHOD(cname, name, prototype)
void CSQCProjectile(entity e, float clientanimate, int type, float docull)
IntrusiveList g_bot_dodge
#define PROJECTILE_TOUCH(e, t)
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
bool weapon_prepareattack(Weapon thiswep, entity actor,.entity weaponentity, bool secondary, float attacktime)
const int MONSTER_ATTACK_MELEE
const int MONSTER_ATTACK_RANGED
#define W_SetupShot_Dir(ent, wepent, s_forward, antilag, recoil, snd, chan, maxdamage, deathtype)
void monster_makevectors(entity this, entity targ)
const int PROJECTILE_FIREMINE
vector(float skel, float bonenum) _skel_get_boneabs_hidden
float MOVETYPE_FLYMISSILE
IntrusiveList g_projectiles
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
bool Monster_Spawn(entity this, bool check_appear, Monster mon)
void weapon_thinkf(entity actor,.entity weaponentity, WFRAME fr, float t, void(Weapon thiswep, entity actor,.entity weaponentity, int fire) func)
const float SOLID_TRIGGER
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
#define SOUND(name, path)
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
void set_movetype(entity this, int mt)