亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? m_supertank.c

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	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 supertank_move_attack3 = {FRAME_attak3_1, FRAME_attak3_27, supertank_frames_attack3, supertank_run};

mframe_t supertank_frames_attack2[]=
{
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	NULL,
	ai_charge,	0,	supertankRocket,
	ai_move,	0,	NULL,
	ai_move,	0,	NULL,
	ai_move,	0,	supertankRocket,
	ai_move,	0,	NULL,
	ai_move,	0,	NULL,
	ai_move,	0,	supertankRocket,
	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 supertank_move_attack2 = {FRAME_attak2_1, FRAME_attak2_27, supertank_frames_attack2, supertank_run};

mframe_t supertank_frames_attack1[]=
{
	ai_charge,	0,	supertankMachineGun,
	ai_charge,	0,	supertankMachineGun,
	ai_charge,	0,	supertankMachineGun,
	ai_charge,	0,	supertankMachineGun,
	ai_charge,	0,	supertankMachineGun,
	ai_charge,	0,	supertankMachineGun,

};
mmove_t supertank_move_attack1 = {FRAME_attak1_1, FRAME_attak1_6, supertank_frames_attack1, supertank_reattack1};

mframe_t supertank_frames_end_attack1[]=
{
	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 supertank_move_end_attack1 = {FRAME_attak1_7, FRAME_attak1_20, supertank_frames_end_attack1, supertank_run};


void supertank_reattack1(edict_t *self)
{
	if (visible(self, self->enemy))
		if (random() < 0.9)
			self->monsterinfo.currentmove = &supertank_move_attack1;
		else
			self->monsterinfo.currentmove = &supertank_move_end_attack1;	
	else
		self->monsterinfo.currentmove = &supertank_move_end_attack1;
}

void supertank_pain (edict_t *self, edict_t *other, float kick, int damage)
{

	if (self->health < (self->max_health / 2))
			self->s.skinnum = 1;

	if (level.time < self->pain_debounce_time)
			return;

	// Lessen the chance of him going into his pain frames
	if (damage <=25)
		if (random()<0.2)
			return;

	// Don't go into pain if he's firing his rockets
	if (skill->value >= 2)
		if ( (self->s.frame >= FRAME_attak2_1) && (self->s.frame <= FRAME_attak2_14) )
			return;

	self->pain_debounce_time = level.time + 3;

	if (skill->value == 3)
		return;		// no pain anims in nightmare

	if (damage <= 10)
	{
		gi.sound (self, CHAN_VOICE, sound_pain1, 1, ATTN_NORM,0);
		self->monsterinfo.currentmove = &supertank_move_pain1;
	}
	else if (damage <= 25)
	{
		gi.sound (self, CHAN_VOICE, sound_pain3, 1, ATTN_NORM,0);
		self->monsterinfo.currentmove = &supertank_move_pain2;
	}
	else
	{
		gi.sound (self, CHAN_VOICE, sound_pain2, 1, ATTN_NORM,0);
		self->monsterinfo.currentmove = &supertank_move_pain3;
	}
};


void supertankRocket (edict_t *self)
{
	vec3_t	forward, right;
	vec3_t	start;
	vec3_t	dir;
	vec3_t	vec;
	int		flash_number;

	if (self->s.frame == FRAME_attak2_8)
		flash_number = MZ2_SUPERTANK_ROCKET_1;
	else if (self->s.frame == FRAME_attak2_11)
		flash_number = MZ2_SUPERTANK_ROCKET_2;
	else // (self->s.frame == FRAME_attak2_14)
		flash_number = MZ2_SUPERTANK_ROCKET_3;

	AngleVectors (self->s.angles, forward, right, NULL);
	G_ProjectSource (self->s.origin, monster_flash_offset[flash_number], forward, right, start);

	VectorCopy (self->enemy->s.origin, vec);
	vec[2] += self->enemy->viewheight;
	VectorSubtract (vec, start, dir);
	VectorNormalize (dir);

	monster_fire_rocket (self, start, dir, 50, 500, flash_number);
}	

void supertankMachineGun (edict_t *self)
{
	vec3_t	dir;
	vec3_t	vec;
	vec3_t	start;
	vec3_t	forward, right;
	int		flash_number;

	flash_number = MZ2_SUPERTANK_MACHINEGUN_1 + (self->s.frame - FRAME_attak1_1);

	//FIXME!!!
	dir[0] = 0;
	dir[1] = self->s.angles[1];
	dir[2] = 0;

	AngleVectors (dir, forward, right, NULL);
	G_ProjectSource (self->s.origin, monster_flash_offset[flash_number], forward, right, start);

	if (self->enemy)
	{
		VectorCopy (self->enemy->s.origin, vec);
		VectorMA (vec, 0, self->enemy->velocity, vec);
		vec[2] += self->enemy->viewheight;
		VectorSubtract (vec, start, forward);
		VectorNormalize (forward);
  }

	monster_fire_bullet (self, start, forward, 6, 4, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, flash_number);
}	


void supertank_attack(edict_t *self)
{
	vec3_t	vec;
	float	range;
	//float	r;

	VectorSubtract (self->enemy->s.origin, self->s.origin, vec);
	range = VectorLength (vec);

	//r = random();

	// Attack 1 == Chaingun
	// Attack 2 == Rocket Launcher

	if (range <= 160)
	{
		self->monsterinfo.currentmove = &supertank_move_attack1;
	}
	else
	{	// fire rockets more often at distance
		if (random() < 0.3)
			self->monsterinfo.currentmove = &supertank_move_attack1;
		else
			self->monsterinfo.currentmove = &supertank_move_attack2;
	}
}


//
// death
//

void supertank_dead (edict_t *self)
{
	VectorSet (self->mins, -60, -60, 0);
	VectorSet (self->maxs, 60, 60, 72);
	self->movetype = MOVETYPE_TOSS;
	self->svflags |= SVF_DEADMONSTER;
	self->nextthink = 0;
	gi.linkentity (self);
}


void BossExplode (edict_t *self)
{
	vec3_t	org;
	int		n;

	self->think = BossExplode;
	VectorCopy (self->s.origin, org);
	org[2] += 24 + (rand()&15);
	switch (self->count++)
	{
	case 0:
		org[0] -= 24;
		org[1] -= 24;
		break;
	case 1:
		org[0] += 24;
		org[1] += 24;
		break;
	case 2:
		org[0] += 24;
		org[1] -= 24;
		break;
	case 3:
		org[0] -= 24;
		org[1] += 24;
		break;
	case 4:
		org[0] -= 48;
		org[1] -= 48;
		break;
	case 5:
		org[0] += 48;
		org[1] += 48;
		break;
	case 6:
		org[0] -= 48;
		org[1] += 48;
		break;
	case 7:
		org[0] += 48;
		org[1] -= 48;
		break;
	case 8:
		self->s.sound = 0;
		for (n= 0; n < 4; n++)
			ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", 500, GIB_ORGANIC);
		for (n= 0; n < 8; n++)
			ThrowGib (self, "models/objects/gibs/sm_metal/tris.md2", 500, GIB_METALLIC);
		ThrowGib (self, "models/objects/gibs/chest/tris.md2", 500, GIB_ORGANIC);
		ThrowHead (self, "models/objects/gibs/gear/tris.md2", 500, GIB_METALLIC);
		self->deadflag = DEAD_DEAD;
		return;
	}

	gi.WriteByte (svc_temp_entity);
	gi.WriteByte (TE_EXPLOSION1);
	gi.WritePosition (org);
	gi.multicast (self->s.origin, MULTICAST_PVS);

	self->nextthink = level.time + 0.1;
}


void supertank_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
{
	gi.sound (self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
	self->deadflag = DEAD_DEAD;
	self->takedamage = DAMAGE_NO;
	self->count = 0;
	self->monsterinfo.currentmove = &supertank_move_death;
}

//
// monster_supertank
//

/*QUAKED monster_supertank (1 .5 0) (-64 -64 0) (64 64 72) Ambush Trigger_Spawn Sight
*/
void SP_monster_supertank (edict_t *self)
{
	if (deathmatch->value)
	{
		G_FreeEdict (self);
		return;
	}

	sound_pain1 = gi.soundindex ("bosstank/btkpain1.wav");
	sound_pain2 = gi.soundindex ("bosstank/btkpain2.wav");
	sound_pain3 = gi.soundindex ("bosstank/btkpain3.wav");
	sound_death = gi.soundindex ("bosstank/btkdeth1.wav");
	sound_search1 = gi.soundindex ("bosstank/btkunqv1.wav");
	sound_search2 = gi.soundindex ("bosstank/btkunqv2.wav");

//	self->s.sound = gi.soundindex ("bosstank/btkengn1.wav");
	tread_sound = gi.soundindex ("bosstank/btkengn1.wav");

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss1/tris.md2");
	VectorSet (self->mins, -64, -64, 0);
	VectorSet (self->maxs, 64, 64, 112);

	self->health = 1500;
	self->gib_health = -500;
	self->mass = 800;

	self->pain = supertank_pain;
	self->die = supertank_die;
	self->monsterinfo.stand = supertank_stand;
	self->monsterinfo.walk = supertank_walk;
	self->monsterinfo.run = supertank_run;
	self->monsterinfo.dodge = NULL;
	self->monsterinfo.attack = supertank_attack;
	self->monsterinfo.search = supertank_search;
	self->monsterinfo.melee = NULL;
	self->monsterinfo.sight = NULL;

	gi.linkentity (self);
	
	self->monsterinfo.currentmove = &supertank_move_stand;
	self->monsterinfo.scale = MODEL_SCALE;

	walkmonster_start(self);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜视频在线观看| 欧美一区二区三区免费在线看| 99久久精品免费精品国产| 久久久亚洲精华液精华液精华液 | 免费在线观看视频一区| 欧美日韩在线三级| 亚洲h在线观看| 色婷婷综合在线| 亚洲免费观看在线视频| 99精品欧美一区二区三区综合在线| 国产亚洲成年网址在线观看| 懂色av一区二区三区免费观看| 亚洲国产高清aⅴ视频| 麻豆国产91在线播放| 欧美日韩一区二区三区在线看| 亚洲午夜一区二区三区| 欧美一区二区三区四区久久| 日本在线不卡一区| 日韩精品资源二区在线| 国内精品自线一区二区三区视频| 久久久久国产成人精品亚洲午夜| 国产麻豆9l精品三级站| 中文一区二区完整视频在线观看| 成人中文字幕合集| 日本一区二区三区四区| 国产99久久久久| 国产日韩精品一区| 91色porny在线视频| 亚洲一区中文日韩| 欧美成人一区二区三区在线观看| 国产麻豆一精品一av一免费| 国产精品久久久久久福利一牛影视| 99久久综合精品| 午夜国产不卡在线观看视频| 久久综合网色—综合色88| 成人av网站在线| 五月开心婷婷久久| 欧美日韩五月天| 久久国产精品免费| 中文字幕综合网| 5566中文字幕一区二区电影| 精品一区二区免费视频| 亚洲色图另类专区| 91精品国产91综合久久蜜臀| 成人一区二区三区中文字幕| 亚洲国产乱码最新视频 | 5月丁香婷婷综合| 国产精品一二二区| 国产精品国产三级国产三级人妇| 欧美精品aⅴ在线视频| 国产制服丝袜一区| 一区二区三区免费| 久久精品亚洲麻豆av一区二区| 日本精品一区二区三区高清| 国产一区二区三区在线观看免费 | 精品国产免费人成电影在线观看四季| 成人丝袜高跟foot| 日韩精品一二三区| 中文字幕一区二区三区视频| 日韩一卡二卡三卡四卡| 97国产精品videossex| 精品在线免费观看| 中文字幕一区二区不卡| 精品精品国产高清a毛片牛牛| 色悠久久久久综合欧美99| 国产乱妇无码大片在线观看| 亚洲综合另类小说| 精品国产乱码91久久久久久网站| 在线精品视频免费观看| 成人夜色视频网站在线观看| 欧美aaa在线| 亚洲mv大片欧洲mv大片精品| 亚洲日本免费电影| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美日韩久久不卡| 成人国产精品免费网站| 精品亚洲免费视频| 樱花影视一区二区| 日韩伦理电影网| 国产精品色婷婷| 欧美激情中文字幕一区二区| 26uuu精品一区二区| 日韩你懂的电影在线观看| 欧美军同video69gay| 欧美系列日韩一区| 欧洲亚洲精品在线| 成人avav影音| 99免费精品视频| 不卡的av电影| 99国产欧美另类久久久精品| 成人av电影在线网| 99视频国产精品| 91在线精品秘密一区二区| www.欧美亚洲| 粉嫩13p一区二区三区| 国内成人免费视频| 激情国产一区二区 | 国产91在线看| 国产大陆精品国产| 国产一区视频网站| 国产乱妇无码大片在线观看| 成人午夜免费av| 99久久精品久久久久久清纯| 一本到高清视频免费精品| 欧美在线不卡一区| 欧美美女喷水视频| 精品久久五月天| 欧美国产一区视频在线观看| 中文字幕一区二区三区在线观看 | 豆国产96在线|亚洲| 97se狠狠狠综合亚洲狠狠| 91啪在线观看| 色成人在线视频| 欧美精品在线视频| 亚洲精品一区二区三区99| 久久青草欧美一区二区三区| 亚洲国产精品ⅴa在线观看| 亚洲人成精品久久久久| 亚洲图片另类小说| 天天综合天天做天天综合| 久久精品国产成人一区二区三区| 国产福利一区二区| 日本精品视频一区二区三区| 日韩午夜激情免费电影| 国产蜜臀av在线一区二区三区| 国产精品国产三级国产普通话三级 | 欧美v亚洲v综合ⅴ国产v| 国产蜜臀av在线一区二区三区| 亚洲青青青在线视频| 亚洲男同1069视频| 日本aⅴ亚洲精品中文乱码| 成人动漫在线一区| 6080yy午夜一二三区久久| 国产女同性恋一区二区| 日韩精品一二区| 国产日韩av一区| 亚洲一区二区三区不卡国产欧美| 国产成人精品亚洲午夜麻豆| 在线不卡中文字幕| 一区二区三区欧美| 99久久精品国产毛片| 日本一区二区在线不卡| 久久成人免费网站| 日韩一区二区三区在线视频| 亚洲香蕉伊在人在线观| av电影一区二区| 国产精品系列在线| 国产精品综合二区| 久久综合999| 狂野欧美性猛交blacked| 欧美丰满一区二区免费视频| 亚洲精品中文在线| a亚洲天堂av| 国产精品久久久久久亚洲伦| 国产成人在线视频网站| 久久久久久久久久电影| 激情综合五月婷婷| 久久综合狠狠综合久久综合88 | 欧美最猛性xxxxx直播| 亚洲欧美电影一区二区| a美女胸又www黄视频久久| 国产欧美综合在线观看第十页 | 男人的j进女人的j一区| 在线成人高清不卡| 日本美女视频一区二区| 欧美一区二区久久久| 青青草国产精品亚洲专区无| 日韩一级片网站| 久久精品国产亚洲高清剧情介绍 | 日韩精品最新网址| 久久精品久久综合| 久久一区二区三区国产精品| 国产毛片一区二区| 国产精品美日韩| 色噜噜久久综合| 日韩电影网1区2区| 精品久久人人做人人爽| 国产成人精品一区二区三区网站观看 | 中文乱码免费一区二区| gogogo免费视频观看亚洲一| 亚洲另类在线一区| 欧美色成人综合| 蜜臀av一区二区在线免费观看 | 在线视频中文字幕一区二区| 亚洲国产精品久久艾草纯爱| 欧美一区二区三区性视频| 久久超碰97中文字幕| 日本一区二区视频在线| 91年精品国产| 日韩av不卡一区二区| 欧美精品一区二区三区蜜桃视频| 成人一区二区在线观看| 亚洲高清中文字幕| 日韩一区二区三区三四区视频在线观看 | 婷婷综合另类小说色区| 精品91自产拍在线观看一区| 成人黄动漫网站免费app| 亚洲成av人片在www色猫咪| 日韩欧美亚洲国产另类 | 在线看一区二区|