653 lines · 14.1 KB · C
RawDownload
#include <u.h>#include <libc.h>#include <stdio.h>#include "../dat.h"#include "../fns.h"#include "m_brain.h"  static int	sound_chest_open;static int	sound_tentacles_extend;static int	sound_tentacles_retract;static int	sound_death;static int	sound_idle1;static int	sound_idle2;static int	sound_idle3;static int	sound_pain1;static int	sound_pain2;static int	sound_sight;static int	sound_search;static int	sound_melee1;static int	sound_melee2;static int	sound_melee3;  void brain_sight (edict_t *self, edict_t */*other*/){	gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);} void brain_search (edict_t *self){	gi.sound (self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);}  void brain_run (edict_t *self);void brain_dead (edict_t *self);  //// STAND// mframe_t brain_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 brain_move_stand = {FRAME_stand01, FRAME_stand30, brain_frames_stand, NULL}; void brain_stand (edict_t *self){	self->monsterinfo.currentmove = &brain_move_stand;}  //// IDLE// mframe_t brain_frames_idle [] ={	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 brain_move_idle = {FRAME_stand31, FRAME_stand60, brain_frames_idle, brain_stand}; void brain_idle (edict_t *self){	gi.sound (self, CHAN_AUTO, sound_idle3, 1, ATTN_IDLE, 0);	self->monsterinfo.currentmove = &brain_move_idle;}  //// WALK//mframe_t brain_frames_walk1 [] ={	ai_walk,	7,	NULL,	ai_walk,	2,	NULL,	ai_walk,	3,	NULL,	ai_walk,	3,	NULL,	ai_walk,	1,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	9,	NULL,	ai_walk,	-4,	NULL,	ai_walk,	-1,	NULL,	ai_walk,	2,	NULL};mmove_t brain_move_walk1 = {FRAME_walk101, FRAME_walk111, brain_frames_walk1, NULL}; // walk2 is FUBAR, do not use/*void brain_walk2_cycle (edict_t *self){	if (qrandom() > 0.1)		self->monsterinfo.nextframe = FRAME_walk220;} mframe_t brain_frames_walk2 [] ={	ai_walk,	3,	NULL,	ai_walk,	-2,	NULL,	ai_walk,	-4,	NULL,	ai_walk,	-3,	NULL,	ai_walk,	0,	NULL,	ai_walk,	1,	NULL,	ai_walk,	12,	NULL,	ai_walk,	0,	NULL,	ai_walk,	-3,	NULL,	ai_walk,	0,	NULL, 	ai_walk,	-2,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	1,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	0,	NULL,	ai_walk,	10,	NULL,		// Cycle Start 	ai_walk,	-1,	NULL,	ai_walk,	7,	NULL,	ai_walk,	0,	NULL,	ai_walk,	3,	NULL,	ai_walk,	-3,	NULL,	ai_walk,	2,	NULL,	ai_walk,	4,	NULL,	ai_walk,	-3,	NULL,	ai_walk,	2,	NULL,	ai_walk,	0,	NULL, 	ai_walk,	4,	brain_walk2_cycle,	ai_walk,	-1,	NULL,	ai_walk,	-1,	NULL,	ai_walk,	-8,	NULL,			ai_walk,	0,	NULL,	ai_walk,	1,	NULL,	ai_walk,	5,	NULL,	ai_walk,	2,	NULL,	ai_walk,	-1,	NULL,	ai_walk,	-5,	NULL};mmove_t brain_move_walk2 = {FRAME_walk201, FRAME_walk240, brain_frames_walk2, NULL};*/ void brain_walk (edict_t *self){//	if (qrandom() <= 0.5)		self->monsterinfo.currentmove = &brain_move_walk1;//	else//		self->monsterinfo.currentmove = &brain_move_walk2;}   mframe_t brain_frames_defense [] ={	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 brain_move_defense = {FRAME_defens01, FRAME_defens08, brain_frames_defense, NULL}; mframe_t brain_frames_pain3 [] ={	ai_move,	-2,	NULL,	ai_move,	2,	NULL,	ai_move,	1,	NULL,	ai_move,	3,	NULL,	ai_move,	0,	NULL,	ai_move,	-4,	NULL};mmove_t brain_move_pain3 = {FRAME_pain301, FRAME_pain306, brain_frames_pain3, brain_run}; mframe_t brain_frames_pain2 [] ={	ai_move,	-2,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	3,	NULL,	ai_move,	1,	NULL,	ai_move,	-2,	NULL};mmove_t brain_move_pain2 = {FRAME_pain201, FRAME_pain208, brain_frames_pain2, brain_run}; mframe_t brain_frames_pain1 [] ={	ai_move,	-6,	NULL,	ai_move,	-2,	NULL,	ai_move,	-6,	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,	2,	NULL,	ai_move,	0,	NULL,	ai_move,	2,	NULL,	ai_move,	1,	NULL,	ai_move,	7,	NULL,	ai_move,	0,	NULL,	ai_move,	3,	NULL,	ai_move,	-1,	NULL};mmove_t brain_move_pain1 = {FRAME_pain101, FRAME_pain121, brain_frames_pain1, brain_run};  //// DUCK// void brain_duck_down (edict_t *self){	if (self->monsterinfo.aiflags & AI_DUCKED)		return;	self->monsterinfo.aiflags |= AI_DUCKED;	self->maxs[2] -= 32;	self->takedamage = DAMAGE_YES;	gi.linkentity (self);} void brain_duck_hold (edict_t *self){	if (level.time >= self->monsterinfo.pausetime)		self->monsterinfo.aiflags &= ~AI_HOLD_FRAME;	else		self->monsterinfo.aiflags |= AI_HOLD_FRAME;} void brain_duck_up (edict_t *self){	self->monsterinfo.aiflags &= ~AI_DUCKED;	self->maxs[2] += 32;	self->takedamage = DAMAGE_AIM;	gi.linkentity (self);} mframe_t brain_frames_duck [] ={	ai_move,	0,	NULL,	ai_move,	-2,	brain_duck_down,	ai_move,	17,	brain_duck_hold,	ai_move,	-3,	NULL,	ai_move,	-1,	brain_duck_up,	ai_move,	-5,	NULL,	ai_move,	-6,	NULL,	ai_move,	-6,	NULL};mmove_t brain_move_duck = {FRAME_duck01, FRAME_duck08, brain_frames_duck, brain_run}; void brain_dodge (edict_t *self, edict_t *attacker, float eta){	if (qrandom() > 0.25)		return; 	if (!self->enemy)		self->enemy = attacker; 	self->monsterinfo.pausetime = level.time + eta + 0.5;	self->monsterinfo.currentmove = &brain_move_duck;}  mframe_t brain_frames_death2 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	9,	NULL,	ai_move,	0,	NULL};mmove_t brain_move_death2 = {FRAME_death201, FRAME_death205, brain_frames_death2, brain_dead}; mframe_t brain_frames_death1 [] ={	ai_move,	0,	NULL,	ai_move,	0,	NULL,	ai_move,	-2,	NULL,	ai_move,	9,	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 brain_move_death1 = {FRAME_death101, FRAME_death118, brain_frames_death1, brain_dead};  //// MELEE// void brain_swing_right (edict_t *self){	gi.sound (self, CHAN_BODY, sound_melee1, 1, ATTN_NORM, 0);} void brain_hit_right (edict_t *self){	vec3_t	aim; 	VectorSet (aim, MELEE_DISTANCE, self->maxs[0], 8);	if (fire_hit (self, aim, (15 + (rand() %5)), 40))		gi.sound (self, CHAN_WEAPON, sound_melee3, 1, ATTN_NORM, 0);} void brain_swing_left (edict_t *self){	gi.sound (self, CHAN_BODY, sound_melee2, 1, ATTN_NORM, 0);} void brain_hit_left (edict_t *self){	vec3_t	aim; 	VectorSet (aim, MELEE_DISTANCE, self->mins[0], 8);	if (fire_hit (self, aim, (15 + (rand() %5)), 40))		gi.sound (self, CHAN_WEAPON, sound_melee3, 1, ATTN_NORM, 0);} mframe_t brain_frames_attack1 [] ={	ai_charge,	8,	NULL,	ai_charge,	3,	NULL,	ai_charge,	5,	NULL,	ai_charge,	0,	NULL,	ai_charge,	-3,	brain_swing_right,	ai_charge,	0,	NULL,	ai_charge,	-5,	NULL,	ai_charge,	-7,	brain_hit_right,	ai_charge,	0,	NULL,	ai_charge,	6,	brain_swing_left,	ai_charge,	1,	NULL,	ai_charge,	2,	brain_hit_left,	ai_charge,	-3,	NULL,	ai_charge,	6,	NULL,	ai_charge,	-1,	NULL,	ai_charge,	-3,	NULL,	ai_charge,	2,	NULL,	ai_charge,	-11,NULL};mmove_t brain_move_attack1 = {FRAME_attak101, FRAME_attak118, brain_frames_attack1, brain_run}; void brain_chest_open (edict_t *self){	self->spawnflags &= ~65536;	self->monsterinfo.power_armor_type = POWER_ARMOR_NONE;	gi.sound (self, CHAN_BODY, sound_chest_open, 1, ATTN_NORM, 0);} void brain_tentacle_attack (edict_t *self){	vec3_t	aim; 	VectorSet (aim, MELEE_DISTANCE, 0, 8);	if (fire_hit (self, aim, (10 + (rand() %5)), -600) && skill->value > 0)		self->spawnflags |= 65536;	gi.sound (self, CHAN_WEAPON, sound_tentacles_retract, 1, ATTN_NORM, 0);} void brain_chest_closed (edict_t *self){	self->monsterinfo.power_armor_type = POWER_ARMOR_SCREEN;	if (self->spawnflags & 65536)	{		self->spawnflags &= ~65536;		self->monsterinfo.currentmove = &brain_move_attack1;	}} mframe_t brain_frames_attack2 [] ={	ai_charge,	5,	NULL,	ai_charge,	-4,	NULL,	ai_charge,	-4,	NULL,	ai_charge,	-3,	NULL,	ai_charge,	0,	brain_chest_open,	ai_charge,	0,	NULL,	ai_charge,	13,	brain_tentacle_attack,	ai_charge,	0,	NULL,	ai_charge,	2,	NULL,	ai_charge,	0,	NULL,	ai_charge,	-9,	brain_chest_closed,	ai_charge,	0,	NULL,	ai_charge,	4,	NULL,	ai_charge,	3,	NULL,	ai_charge,	2,	NULL,	ai_charge,	-3,	NULL,	ai_charge,	-6,	NULL};mmove_t brain_move_attack2 = {FRAME_attak201, FRAME_attak217, brain_frames_attack2, brain_run}; void brain_melee(edict_t *self){	if (qrandom() <= 0.5)		self->monsterinfo.currentmove = &brain_move_attack1;	else		self->monsterinfo.currentmove = &brain_move_attack2;}  //// RUN// mframe_t brain_frames_run [] ={	ai_run,	9,	NULL,	ai_run,	2,	NULL,	ai_run,	3,	NULL,	ai_run,	3,	NULL,	ai_run,	1,	NULL,	ai_run,	0,	NULL,

Lines 1–500 of 653.

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