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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? p_enemy.c

?? 魔法師傳奇源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
// go into chase stateseeyou:	if (actor->info->seesound)	{		int             sound;		sound = actor->info->seesound;		if(actor->flags2&MF2_BOSS)		{ // Full volume			S_StartSound(NULL, sound);		}		else		{			S_StartSound(actor, sound);		}	}	P_SetMobjState(actor, actor->info->seestate);}/*================ A_Chase== Actor has a melee attack, so it tries to close as fast as possible===============*/void A_Chase(mobj_t *actor){	int delta;	if(actor->reactiontime)	{		actor->reactiontime--;	}	// Modify target threshold	if(actor->threshold)	{		actor->threshold--;	}	if(gameskill == sk_nightmare)	{ // Monsters move faster in nightmare mode		actor->tics -= actor->tics/2;		if(actor->tics < 3)		{			actor->tics = 3;		}	}//// turn towards movement direction if not there yet//	if(actor->movedir < 8)	{		actor->angle &= (7<<29);		delta = actor->angle-(actor->movedir << 29);		if(delta > 0)		{			actor->angle -= ANG90/2;		}		else if(delta < 0)		{			actor->angle += ANG90/2;		}	}	if(!actor->target || !(actor->target->flags&MF_SHOOTABLE))	{ // look for a new target		if(P_LookForPlayers(actor, true))		{ // got a new target			return;		}		P_SetMobjState(actor, actor->info->spawnstate);		return;	}//// don't attack twice in a row//	if(actor->flags & MF_JUSTATTACKED)	{		actor->flags &= ~MF_JUSTATTACKED;		if (gameskill != sk_nightmare)			P_NewChaseDir (actor);		return;	}//// check for melee attack//	if (actor->info->meleestate && P_CheckMeleeRange (actor))	{		if(actor->info->attacksound)		{			S_StartSound (actor, actor->info->attacksound);		}		P_SetMobjState (actor, actor->info->meleestate);		return;	}//// check for missile attack//	if (actor->info->missilestate)	{		if (gameskill < sk_nightmare && actor->movecount)			goto nomissile;		if (!P_CheckMissileRange (actor))			goto nomissile;		P_SetMobjState (actor, actor->info->missilestate);		actor->flags |= MF_JUSTATTACKED;		return;	}nomissile://// possibly choose another target//	if (netgame && !actor->threshold && !P_CheckSight (actor, actor->target) )	{		if (P_LookForPlayers(actor,true))			return;         // got a new target	}//// chase towards player//	if (--actor->movecount<0 || !P_Move (actor))	{		P_NewChaseDir (actor);	}//// make active sound//	if(actor->info->activesound && P_Random() < 3)	{		if(actor->type == MT_BISHOP && P_Random() < 128)		{			S_StartSound(actor, actor->info->seesound);		}		else if(actor->type == MT_PIG)		{			S_StartSound(actor, SFX_PIG_ACTIVE1+(P_Random()&1));		}		else if(actor->flags2&MF2_BOSS)		{			S_StartSound(NULL, actor->info->activesound);		}		else		{			S_StartSound(actor, actor->info->activesound);		}	}}//----------------------------------------------------------------------------//// PROC A_FaceTarget////----------------------------------------------------------------------------void A_FaceTarget(mobj_t *actor){	if(!actor->target)	{		return;	}	actor->flags &= ~MF_AMBUSH;	actor->angle = R_PointToAngle2(actor->x, actor->y, actor->target->x,		actor->target->y);	if(actor->target->flags&MF_SHADOW)	{ // Target is a ghost		actor->angle += (P_Random()-P_Random())<<21;	}}//----------------------------------------------------------------------------//// PROC A_Pain////----------------------------------------------------------------------------void A_Pain(mobj_t *actor){	if(actor->info->painsound)	{		S_StartSound(actor, actor->info->painsound);	}}//============================================================================//// A_SetInvulnerable////============================================================================void A_SetInvulnerable(mobj_t *actor){	actor->flags2 |= MF2_INVULNERABLE;}//============================================================================//// A_UnSetInvulnerable////============================================================================void A_UnSetInvulnerable(mobj_t *actor){	actor->flags2 &= ~MF2_INVULNERABLE;}//============================================================================//// A_SetReflective////============================================================================void A_SetReflective(mobj_t *actor){	actor->flags2 |= MF2_REFLECTIVE;	if ((actor->type == MT_CENTAUR) ||		(actor->type == MT_CENTAURLEADER))	{		A_SetInvulnerable(actor);	}}//============================================================================//// A_UnSetReflective////============================================================================void A_UnSetReflective(mobj_t *actor){	actor->flags2 &= ~MF2_REFLECTIVE;	if ((actor->type == MT_CENTAUR) ||		(actor->type == MT_CENTAURLEADER))	{		A_UnSetInvulnerable(actor);	}}//----------------------------------------------------------------------------//// FUNC P_UpdateMorphedMonster//// Returns true if the pig morphs.////----------------------------------------------------------------------------boolean P_UpdateMorphedMonster(mobj_t *actor, int tics){	mobj_t *fog;	fixed_t x;	fixed_t y;	fixed_t z;	mobjtype_t moType;	mobj_t *mo;	mobj_t oldMonster;	actor->special1 -= tics;	if(actor->special1 > 0)	{		return(false);	}	moType = actor->special2;	switch(moType)	{		case MT_WRAITHB:			// These must remain morphed		case MT_SERPENT:		case MT_SERPENTLEADER:		case MT_MINOTAUR:			return(false);		default:			break;	}	x = actor->x;	y = actor->y;	z = actor->z;	oldMonster = *actor;			// Save pig vars	P_RemoveMobjFromTIDList(actor);	P_SetMobjState(actor, S_FREETARGMOBJ);	mo = P_SpawnMobj(x, y, z, moType);	if(P_TestMobjLocation(mo) == false)	{ // Didn't fit		P_RemoveMobj(mo);		mo = P_SpawnMobj(x, y, z, oldMonster.type);		mo->angle = oldMonster.angle;		mo->flags = oldMonster.flags;		mo->health = oldMonster.health;		mo->target = oldMonster.target;		mo->special = oldMonster.special;		mo->special1 = 5*35; // Next try in 5 seconds		mo->special2 = moType;		mo->tid = oldMonster.tid;		memcpy(mo->args, oldMonster.args, 5);		P_InsertMobjIntoTIDList(mo, oldMonster.tid);		return(false);	}	mo->angle = oldMonster.angle;	mo->target = oldMonster.target;	mo->tid = oldMonster.tid;	mo->special = oldMonster.special;	memcpy(mo->args, oldMonster.args, 5);	P_InsertMobjIntoTIDList(mo, oldMonster.tid);	fog = P_SpawnMobj(x, y, z+TELEFOGHEIGHT, MT_TFOG);	S_StartSound(fog, SFX_TELEPORT);	return(true);}//----------------------------------------------------------------------------//// PROC A_PigLook////----------------------------------------------------------------------------void A_PigLook(mobj_t *actor){	if(P_UpdateMorphedMonster(actor, 10))	{		return;	}	A_Look(actor);}//----------------------------------------------------------------------------//// PROC A_PigChase////----------------------------------------------------------------------------void A_PigChase(mobj_t *actor){	if(P_UpdateMorphedMonster(actor, 3))	{		return;	}	A_Chase(actor);}//============================================================================//// A_PigAttack////============================================================================void A_PigAttack(mobj_t *actor){	if(P_UpdateMorphedMonster(actor, 18))	{		return;	}	if(!actor->target)	{		return;	}	if(P_CheckMeleeRange(actor))	{		P_DamageMobj(actor->target, actor, actor, 2+(P_Random()&1));		S_StartSound(actor, SFX_PIG_ATTACK);	}}//============================================================================//// A_PigPain////============================================================================void A_PigPain(mobj_t *actor){	A_Pain(actor);	if(actor->z <= actor->floorz)	{		actor->momz = 3.5*FRACUNIT;	}}void FaceMovementDirection(mobj_t *actor){	switch(actor->movedir)	{		case DI_EAST:			actor->angle = 0<<24;			break;		case DI_NORTHEAST:			actor->angle = 32<<24;			break;		case DI_NORTH:			actor->angle = 64<<24;			break;		case DI_NORTHWEST:			actor->angle = 96<<24;			break;		case DI_WEST:			actor->angle = 128<<24;			break;		case DI_SOUTHWEST:			actor->angle = 160<<24;			break;		case DI_SOUTH:			actor->angle = 192<<24;			break;		case DI_SOUTHEAST:			actor->angle = 224<<24;			break;	}}//----------------------------------------------------------------------------//// Minotaur variables//// 	special1		pointer to player that spawned it (mobj_t)//	special2		internal to minotaur AI//	args[0]			args[0]-args[3] together make up minotaur start time//	args[1]			|//	args[2]			|//	args[3]			V//	args[4]			charge duration countdown//----------------------------------------------------------------------------void A_MinotaurFade0(mobj_t *actor){	actor->flags &= ~MF_ALTSHADOW;	actor->flags |= MF_SHADOW;}void A_MinotaurFade1(mobj_t *actor){	// Second level of transparency	actor->flags &= ~MF_SHADOW;	actor->flags |= MF_ALTSHADOW;}void A_MinotaurFade2(mobj_t *actor){	// Make fully visible	actor->flags &= ~MF_SHADOW;	actor->flags &= ~MF_ALTSHADOW;}//----------------------------------------------------------------------------//// A_MinotaurRoam - //// //----------------------------------------------------------------------------void A_MinotaurLook(mobj_t *actor);void A_MinotaurRoam(mobj_t *actor){	unsigned int *starttime = (unsigned int *)actor->args;	actor->flags &= ~MF_SHADOW;			// In case pain caused him to 	actor->flags &= ~MF_ALTSHADOW;		// skip his fade in.	if ((leveltime - *starttime) >= MAULATORTICS)	{		P_DamageMobj(actor,NULL,NULL,10000);		return;	}	if (P_Random()<30)		A_MinotaurLook(actor);		// adjust to closest target	if (P_Random()<6)	{		//Choose new direction		actor->movedir = P_Random() % 8;		FaceMovementDirection(actor);	}	if (!P_Move(actor))	{		// Turn		if (P_Random() & 1)			actor->movedir = (++actor->movedir)%8;		else			actor->movedir = (actor->movedir+7)%8;		FaceMovementDirection(actor);	}}//----------------------------------------------------------------------------////	PROC A_MinotaurLook//// Look for enemy of player//----------------------------------------------------------------------------#define MINOTAUR_LOOK_DIST		(16*54*FRACUNIT)void A_MinotaurLook(mobj_t *actor){	mobj_t *mo=NULL;	player_t *player;	thinker_t *think;	fixed_t dist;	int i;	mobj_t *master = (mobj_t *)(actor->special1);	actor->target = NULL;	if (deathmatch)					// Quick search for players	{    	for (i=0; i<MAXPLAYERS; i++)		{			if (!playeringame[i]) continue;			player = &players[i];			mo = player->mo;			if (mo == master) continue;			if (mo->health <= 0) continue;			dist = P_AproxDistance(actor->x - mo->x, actor->y - mo->y);			if (dist > MINOTAUR_LOOK_DIST) continue;			actor->target = mo;			break;		}	}	if (!actor->target)				// Near player monster search	{		if (master && (master->health>0) && (master->player))			mo = P_RoughMonsterSearch(master, 20);		else			mo = P_RoughMonsterSearch(actor, 20);		actor->target = mo;	}	if (!actor->target)				// Normal monster search	{		for(think = thinkercap.next; think != &thinkercap; think = think->next)		{			if(think->function != P_MobjThinker) continue;			mo = (mobj_t *)think;			if (!(mo->flags&MF_COUNTKILL)) continue;			if (mo->health <= 0) continue;			if (!(mo->flags&MF_SHOOTABLE)) continue;			dist = P_AproxDistance(actor->x - mo->x, actor->y - mo->y);			if (dist > MINOTAUR_LOOK_DIST) continue;			if ((mo == master) || (mo == actor)) continue;			if ((mo->type == MT_MINOTAUR) &&				(mo->special1 == actor->special1)) continue;			actor->target = mo;			break;			// Found mobj to attack		}	}	if (actor->target)	{		P_SetMobjStateNF(actor, S_MNTR_WALK1);	}	else	{		P_SetMobjStateNF(actor, S_MNTR_ROAM1);	}}void A_MinotaurChase(mobj_t *actor){	unsigned int *starttime = (unsigned int *)actor->args;	actor->flags &= ~MF_SHADOW;			// In case pain caused him to 	actor->flags &= ~MF_ALTSHADOW;		// skip his fade in.	if ((leveltime - *starttime) >= MAULATORTICS)	{		P_DamageMobj(actor,NULL,NULL,10000);		return;	}	if (P_Random()<30)		A_MinotaurLook(actor);		// adjust to closest target	if (!actor->target || (actor->target->health <= 0) ||		!(actor->target->flags&MF_SHOOTABLE))	{ // look for a new target		P_SetMobjState(actor, S_MNTR_LOOK1);		return;	}	FaceMovementDirection(actor);	actor->reactiontime=0;	// Melee attack	if (actor->info->meleestate && P_CheckMeleeRange(actor))	{		if(actor->info->attacksound)		{			S_StartSound (actor, actor->info->attacksound);		}		P_SetMobjState (actor, actor->info->meleestate);		return;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美美女激情18p| 欧美日韩一区二区电影| 国产麻豆一精品一av一免费| 亚洲自拍偷拍图区| 日本一区二区三区四区在线视频 | 亚洲婷婷在线视频| 成人免费在线视频| 亚洲妇熟xx妇色黄| 婷婷开心激情综合| 日韩在线观看一区二区| 亚洲高清不卡在线| 亚洲gay无套男同| 久久久精品2019中文字幕之3| 精品国产一区二区亚洲人成毛片| 日韩欧美一二三四区| 欧美一区二区三区免费视频| 欧美四级电影在线观看| 久久天天做天天爱综合色| 国产婷婷色一区二区三区四区| 精品少妇一区二区三区日产乱码 | 日韩欧美在线综合网| 久久精品人人爽人人爽| 欧美国产精品一区二区三区| 精品毛片乱码1区2区3区| 欧美成人综合网站| 国产欧美日韩在线| 日本欧美在线观看| 欧洲一区二区三区在线| 国产欧美一区二区精品忘忧草| 亚洲婷婷国产精品电影人久久| 图片区日韩欧美亚洲| 91麻豆自制传媒国产之光| 欧美精品乱人伦久久久久久| 欧美韩日一区二区三区四区| 亚洲444eee在线观看| 国产在线国偷精品免费看| 欧美日韩精品免费| 亚洲伊人伊色伊影伊综合网| 国产传媒日韩欧美成人| 久久久久久久久久久电影| 国产一区不卡精品| 精品99久久久久久| 天堂一区二区在线免费观看| 国产精品88av| 久久久午夜精品| 青青草原综合久久大伊人精品优势| 91老师片黄在线观看| 日韩西西人体444www| 丝袜美腿亚洲综合| 成人免费视频app| 日韩免费成人网| 美腿丝袜亚洲色图| 精品福利一区二区三区免费视频| 一区二区在线免费| 欧美一卡二卡在线| youjizz久久| 天天色天天操综合| 日韩欧美一区二区免费| 成人动漫av在线| 一区二区三区日韩精品视频| 欧美三级资源在线| 国产综合久久久久影院| 亚洲欧美日韩国产综合在线| 欧美精品一二三| 国产成人av影院| 亚洲精选免费视频| 欧美一级一区二区| eeuss鲁片一区二区三区| 精品在线观看免费| 亚洲精品视频免费观看| 日韩三级视频中文字幕| 色妹子一区二区| 国产一区二区不卡| 免费观看一级特黄欧美大片| 亚洲蜜臀av乱码久久精品蜜桃| 日韩欧美国产一区二区在线播放| 色哟哟一区二区在线观看| 国模娜娜一区二区三区| 亚洲成年人网站在线观看| 久久久久国产精品人| 在线观看成人小视频| 国产精一品亚洲二区在线视频| 亚洲高清免费视频| 亚洲一区二区三区激情| 国产精品久久久久影院老司| 欧美精品一区二区在线观看| 欧美羞羞免费网站| 欧美日韩在线精品一区二区三区激情| 国产一区二区免费视频| 青青青爽久久午夜综合久久午夜| √…a在线天堂一区| 久久久午夜精品| 国产亚洲一区二区三区四区| 色婷婷综合久久| 91麻豆精品在线观看| 91网站视频在线观看| 欧美视频一区在线观看| 精品粉嫩aⅴ一区二区三区四区| 久久久精品黄色| 亚洲精品第1页| 美国十次综合导航| 成人一道本在线| 欧美日韩日本视频| 国产亚洲精品aa午夜观看| 中文字幕精品一区二区三区精品| 欧美一级xxx| 久久噜噜亚洲综合| 亚洲一区二区三区四区不卡| 美国一区二区三区在线播放| 菠萝蜜视频在线观看一区| 色欲综合视频天天天| 精品区一区二区| 亚洲国产日产av| 韩国一区二区三区| 欧美日韩午夜在线视频| 国产精品网站导航| 日本午夜一本久久久综合| caoporm超碰国产精品| 精品日本一线二线三线不卡| 有坂深雪av一区二区精品| 久久成人免费电影| 成人精品国产一区二区4080| 欧美日韩一二三| 亚洲视频中文字幕| 91一区二区三区在线观看| 国产午夜精品理论片a级大结局 | 久久精品国产99国产| 91网站在线观看视频| 欧美一区二区三区免费在线看| 国产午夜精品理论片a级大结局| 日本欧美一区二区在线观看| 国产成人午夜高潮毛片| 欧美色精品在线视频| 国产精品毛片久久久久久久| 久久国产福利国产秒拍| 久久久久久久免费视频了| 国内成人免费视频| 亚洲婷婷在线视频| 欧美区在线观看| 捆绑变态av一区二区三区| 日韩欧美高清dvd碟片| 亚洲自拍偷拍av| 精品播放一区二区| 成人av在线一区二区| 中文字幕亚洲区| 色哟哟日韩精品| 亚洲国产视频在线| 日韩丝袜情趣美女图片| 激情文学综合插| 欧美激情一区二区三区四区| 99在线精品视频| 美美哒免费高清在线观看视频一区二区| 久久66热re国产| 亚洲乱码一区二区三区在线观看| 欧美三片在线视频观看| 国产精品亚洲第一区在线暖暖韩国| 国产精品久久久久久久久图文区| 精品视频在线免费看| 五月天久久比比资源色| 国产性天天综合网| 91成人网在线| 粉嫩aⅴ一区二区三区四区五区| 性欧美大战久久久久久久久| 久久久.com| 欧美裸体bbwbbwbbw| 波多野结衣的一区二区三区| 午夜精品久久久久久久99樱桃| 国产精品国产a| 中文字幕五月欧美| 久久九九国产精品| 99视频超级精品| 久久99精品国产麻豆婷婷| 丝袜国产日韩另类美女| 中文字幕亚洲在| 国产精品美女一区二区三区 | 亚洲欧美综合色| 亚洲欧美怡红院| 久久久电影一区二区三区| wwww国产精品欧美| 精品对白一区国产伦| 久久久久久久久久美女| 久久一夜天堂av一区二区三区 | 亚洲成人综合网站| 亚洲成人资源网| 麻豆成人免费电影| 国产精品影视在线观看| 99久久久国产精品免费蜜臀| 波多野结衣精品在线| 色88888久久久久久影院按摩| 在线观看日韩国产| 日韩一区二区三区高清免费看看| 精品国产精品一区二区夜夜嗨| 国产日韩精品一区| 亚洲综合一区二区| 国内不卡的二区三区中文字幕 | 一区二区三区蜜桃| 奇米色777欧美一区二区| 国产成人精品综合在线观看| 欧美日精品一区视频| 国产色一区二区|