597 lines · 13.0 KB · C
RawDownload
#include <u.h>#include <libc.h>#include <stdio.h>#include "../dat.h"#include "../fns.h"#include "m_hover.h" qboolean visible (edict_t *self, edict_t *other);  static int	sound_pain1;static int	sound_pain2;static int	sound_death1;static int	sound_death2;static int	sound_sight;static int	sound_search1;static int	sound_search2;  void hover_sight (edict_t *self, edict_t *){	gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);} void hover_search (edict_t *self){	if (qrandom() < 0.5)		gi.sound (self, CHAN_VOICE, sound_search1, 1, ATTN_NORM, 0);	else		gi.sound (self, CHAN_VOICE, sound_search2, 1, ATTN_NORM, 0);}  void hover_run (edict_t *self);void hover_stand (edict_t *self);void hover_dead (edict_t *self);void hover_attack (edict_t *self);void hover_reattack (edict_t *self);void hover_fire_blaster (edict_t *self);void hover_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); mframe_t hover_frames_stand [] ={	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL,	ai_stand, 0, NULL};mmove_t	hover_move_stand = {FRAME_stand01, FRAME_stand30, hover_frames_stand, NULL}; mframe_t hover_frames_stop1 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_stop1 = {FRAME_stop101, FRAME_stop109, hover_frames_stop1, NULL}; mframe_t hover_frames_stop2 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_stop2 = {FRAME_stop201, FRAME_stop208, hover_frames_stop2, NULL}; mframe_t hover_frames_takeoff [] ={	ai_move,	0,	NULL,	ai_move,	-2,	NULL,	ai_move,	5,	NULL,	ai_move,	-1,	NULL,	ai_move,	1,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	-1,	NULL,	ai_move,	-1,	NULL,	ai_move,	-1,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	2,	NULL,	ai_move,	1,	NULL,	ai_move,	1,	NULL,	ai_move,	-6,	NULL,	ai_move,	-9,	NULL,	ai_move,	1,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	2,	NULL,	ai_move,	1,	NULL,	ai_move,	1,	NULL,	ai_move,	1,	NULL,	ai_move,	2,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	3,	NULL,	ai_move,	2,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_takeoff = {FRAME_takeof01, FRAME_takeof30, hover_frames_takeoff, NULL}; mframe_t hover_frames_pain3 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_pain3 = {FRAME_pain301, FRAME_pain309, hover_frames_pain3, hover_run}; mframe_t hover_frames_pain2 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_pain2 = {FRAME_pain201, FRAME_pain212, hover_frames_pain2, hover_run}; mframe_t hover_frames_pain1 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	-8,	NULL,	ai_move,	-4,	NULL,	ai_move,	-6,	NULL,	ai_move,	-4,	NULL,	ai_move,	-3,	NULL,	ai_move,	1,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	3,	NULL,	ai_move,	1,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	3,	NULL,	ai_move,	2,	NULL,	ai_move,	7,	NULL,	ai_move,	1,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	5,	NULL,	ai_move,	3,	NULL,	ai_move,	4,	NULL};mmove_t hover_move_pain1 = {FRAME_pain101, FRAME_pain128, hover_frames_pain1, hover_run}; mframe_t hover_frames_land [] ={	ai_move,	0,	NULL};mmove_t hover_move_land = {FRAME_land01, FRAME_land01, hover_frames_land, NULL}; mframe_t hover_frames_forward [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_forward = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_forward, NULL}; mframe_t hover_frames_walk [] ={	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL,	ai_walk,	4,	NULL};mmove_t hover_move_walk = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_walk, NULL}; mframe_t hover_frames_run [] ={	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL,	ai_run,	10,	NULL};mmove_t hover_move_run = {FRAME_forwrd01, FRAME_forwrd35, hover_frames_run, NULL}; mframe_t hover_frames_death1 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	-10,NULL,	ai_move,	3,	NULL,	ai_move,	5,	NULL,	ai_move,	4,	NULL,	ai_move,	7,	NULL};mmove_t hover_move_death1 = {FRAME_death101, FRAME_death111, hover_frames_death1, hover_dead}; mframe_t hover_frames_backward [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL};mmove_t hover_move_backward = {FRAME_backwd01, FRAME_backwd24, hover_frames_backward, NULL}; mframe_t hover_frames_start_attack [] ={	ai_charge,	1,	NULL,	ai_charge,	1,	NULL,	ai_charge,	1,	NULL};mmove_t hover_move_start_attack = {FRAME_attak101, FRAME_attak103, hover_frames_start_attack, hover_attack}; mframe_t hover_frames_attack1 [] ={	ai_charge,	-10,	hover_fire_blaster,	ai_charge,	-10,	hover_fire_blaster,	ai_charge,	0,		hover_reattack,};mmove_t hover_move_attack1 = {FRAME_attak104, FRAME_attak106, hover_frames_attack1, NULL};  mframe_t hover_frames_end_attack [] ={	ai_charge,	1,	NULL,	ai_charge,	1,	NULL};mmove_t hover_move_end_attack = {FRAME_attak107, FRAME_attak108, hover_frames_end_attack, hover_run}; void hover_reattack (edict_t *self){	if (self->enemy->health > 0 )		if (visible (self, self->enemy) )			if (qrandom() <= 0.6)					{				self->monsterinfo.currentmove = &hover_move_attack1;				return;			}	self->monsterinfo.currentmove = &hover_move_end_attack;}  void hover_fire_blaster (edict_t *self){	vec3_t	start;	vec3_t	forward, right;	vec3_t	end;	vec3_t	dir;	int		effect; 	if (self->s.frame == FRAME_attak104)		effect = EF_HYPERBLASTER;	else		effect = 0; 	AngleVectors (self->s.angles, forward, right, NULL);	G_ProjectSource (self->s.origin, monster_flash_offset[MZ2_HOVER_BLASTER_1], forward, right, start); 	VectorCopy (self->enemy->s.origin, end);	end[2] += self->enemy->viewheight;	VectorSubtract (end, start, dir); 	monster_fire_blaster (self, start, dir, 1, 1000, MZ2_HOVER_BLASTER_1, effect);}  void hover_stand (edict_t *self){		self->monsterinfo.currentmove = &hover_move_stand;} void hover_run (edict_t *self){	if (self->monsterinfo.aiflags & AI_STAND_GROUND)		self->monsterinfo.currentmove = &hover_move_stand;	else		self->monsterinfo.currentmove = &hover_move_run;} void hover_walk (edict_t *self){	self->monsterinfo.currentmove = &hover_move_walk;} void hover_start_attack (edict_t *self){	self->monsterinfo.currentmove = &hover_move_start_attack;} void hover_attack(edict_t *self){	self->monsterinfo.currentmove = &hover_move_attack1;}  void hover_pain (edict_t *self, edict_t *, float, int damage){	if (self->health < (self->max_health / 2))		self->s.skinnum = 1; 	if (level.time < self->pain_debounce_time)		return; 	self->pain_debounce_time = level.time + 3; 	if (skill->value == 3)		return;		// no pain anims in nightmare 	if (damage <= 25)	{		if (qrandom() < 0.5)		{			gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);			self->monsterinfo.currentmove = &hover_move_pain3;		}		else		{			gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM, 0);			self->monsterinfo.currentmove = &hover_move_pain2;		}	}	else	{		gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM, 0);		self->monsterinfo.currentmove = &hover_move_pain1;	}} void hover_deadthink (edict_t *self){	if (!self->groundentity && level.time < self->timestamp)	{

Lines 1–500 of 597.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t