32 actor.attack_finished_single[0] = actor.anim_finished =
time + 1.2;
35 missile.owner = missile.realowner = actor;
38 missile.projectiledeathtype = DEATH_MONSTER_WYVERN.m_id;
39 setsize(missile,
'-6 -6 -6',
'6 6 6');
40 setorigin(missile, actor.origin + actor.view_ofs +
v_forward * 14);
45 missile.avelocity =
'300 300 300';
46 missile.nextthink =
time + 5;
95 Weapon wep = WEP_WYVERN_ATTACK;
98 wep.
wr_think(wep,
this, weaponentity, 1);
109 setanim(actor, actor.anim_shoot,
false,
true,
true);
110 if (actor.animstate_endtime >
time)
111 actor.anim_finished = actor.animstate_endtime;
113 actor.anim_finished =
time + 1.2;
114 actor.attack_finished_single[0] = actor.anim_finished + 0.2;
135 setanim(actor, actor.anim_die2,
true,
false,
false);
142 actor.pain_finished =
time + 0.5;
143 setanim(actor, actor.anim_pain1,
true,
true,
false);
150 setanim(actor, actor.anim_die1,
false,
true,
true);
151 actor.velocity.x = 400 *
random() - 200;
152 actor.velocity.y = 400 *
random() - 200;
153 actor.velocity.z = 100 *
random() + 100;
162 actor.anim_idle =
animfixfps(actor,
'0 1 1', none);
163 actor.anim_walk =
animfixfps(actor,
'1 1 1', none);
164 actor.anim_run =
animfixfps(actor,
'2 1 1', none);
165 actor.anim_pain1 =
animfixfps(actor,
'3 1 2', none);
166 actor.anim_pain2 =
animfixfps(actor,
'4 1 2', none);
167 actor.anim_melee =
animfixfps(actor,
'5 1 5', none);
168 actor.anim_shoot =
animfixfps(actor,
'6 1 5', none);
169 actor.anim_die1 =
animfixfps(actor,
'7 1 0.5', none);
170 actor.anim_die2 =
animfixfps(actor,
'8 1 0.5', none);
196 PAR(_(
"The Wyvern is a flying reptilian monster that glides around hunting for fresh prey."));
197 PAR(_(
"While fragile, the Wyvern is capable of launching deadly fireballs at the player from a distance, inflicting high damage and causing burning."));
IntrusiveList g_bot_dodge
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.
bool SetResourceExplicit(entity e, Resource res_type, float amount)
Sets the resource amount of an entity without calling any hooks.
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
const float SOLID_TRIGGER
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)
float Fire_AddDamage(entity e, entity o, float d, float t, float dt)
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
#define FOREACH_ENTITY_RADIUS(org, dist, cond, body)
vector animfixfps(entity e, vector a, vector b)
void set_movetype(entity this, int mt)
const int MOVETYPE_FLYMISSILE
#define METHOD(cname, name, prototype)
const int PROJECTILE_FIREMINE
#define PROJECTILE_TOUCH(e, t)
IntrusiveList g_projectiles
string W_Sound(string w_snd)
#define SOUND(name, path)
#define PAR(...)
Adds an individually translatable paragraph to PAGE_TEXT without having to deal with strcat and sprin...
void Monster_Delay(entity this, int repeat_count, float defer_amnt, void(entity) func)
bool Monster_Spawn(entity this, bool check_appear, Monster mon)
Setup the basic required properties for a monster.
void monster_makevectors(entity this, entity targ)
#define MONSTER_SKILLMOD(mon)
const int MONSTER_ATTACK_MELEE
const int MONSTER_ATTACK_RANGED
#define W_SetupShot_Dir(ent, wepent, s_forward, antilag, recoil, snd, chan, maxdamage, deathtype)
entity weaponentities[MAX_WEAPONSLOTS]
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)
float autocvar_g_monster_wyvern_attack_fireball_damage
float autocvar_g_monster_wyvern_health
string autocvar_g_monster_wyvern_loot
float autocvar_g_monster_wyvern_speed_stop
bool M_Wyvern_Attack(int attack_type, entity actor, entity targ,.entity weaponentity)
float autocvar_g_monster_wyvern_attack_fireball_edgedamage
float autocvar_g_monster_wyvern_speed_walk
void M_Wyvern_Attack_Fireball_Touch(entity this, entity toucher)
float autocvar_g_monster_wyvern_speed_run
void M_Wyvern_Attack_Fireball_Explode(entity this)
float autocvar_g_monster_wyvern_damageforcescale
float autocvar_g_monster_wyvern_attack_fireball_force
void M_Wyvern_Attack_Fireball(entity this)
float autocvar_g_monster_wyvern_attack_fireball_radius
float autocvar_g_monster_wyvern_attack_fireball_damagetime
float autocvar_g_monster_wyvern_attack_fireball_speed