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

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

?? p_mobj.c

?? 魔法師傳奇源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		{			if(mo->floorz != mo->subsector->sector->floorheight)			{				return;			}		}	}	if(mo->momx > -STOPSPEED && mo->momx < STOPSPEED		&& mo->momy > -STOPSPEED && mo->momy < STOPSPEED		&& (!player || (player->cmd.forwardmove == 0		&& player->cmd.sidemove == 0)))	{ // If in a walking frame, stop moving		if(player)		{			if((unsigned)((player->mo->state-states)				-PStateRun[player->class]) < 4)			{				P_SetMobjState(player->mo, PStateNormal[player->class]);			}		}		mo->momx = 0;		mo->momy = 0;	}	else	{		if(mo->flags2&MF2_FLY && !(mo->z <= mo->floorz)			&&!(mo->flags2&MF2_ONMOBJ))		{			mo->momx = FixedMul(mo->momx, FRICTION_FLY);			mo->momy = FixedMul(mo->momy, FRICTION_FLY);		}		else if(P_GetThingFloorType(mo) == FLOOR_ICE)		{			mo->momx = FixedMul(mo->momx, FRICTION_LOW);			mo->momy = FixedMul(mo->momy, FRICTION_LOW);		}		else		{			mo->momx = FixedMul(mo->momx, FRICTION_NORMAL);			mo->momy = FixedMul(mo->momy, FRICTION_NORMAL);		}	}}// Move this to p_inter ***void P_MonsterFallingDamage(mobj_t *mo){	int damage;	int mom;	mom = abs(mo->momz);	if(mom > 35*FRACUNIT)	{ // automatic death		damage=10000;	}	else	{		damage = ((mom - (23*FRACUNIT) )*6)>>FRACBITS;	}	damage=10000;	// always kill 'em	P_DamageMobj(mo, NULL, NULL, damage);}/*================= P_ZMovement================*/void P_ZMovement(mobj_t *mo){	int dist;	int delta;//// check for smooth step up//	if (mo->player && mo->z < mo->floorz)	{		mo->player->viewheight -= mo->floorz-mo->z;		mo->player->deltaviewheight = (VIEWHEIGHT - mo->player->viewheight)>>3;	}	//// adjust height//	mo->z += mo->momz;	if(mo->flags&MF_FLOAT && mo->target)	{	// float down towards target if too close		if(!(mo->flags&MF_SKULLFLY) && !(mo->flags&MF_INFLOAT))		{			dist = P_AproxDistance(mo->x-mo->target->x, mo->y-mo->target->y);			delta =( mo->target->z+(mo->height>>1))-mo->z;			if (delta < 0 && dist < -(delta*3))				mo->z -= FLOATSPEED;			else if (delta > 0 && dist < (delta*3))				mo->z += FLOATSPEED;					}	}	if(mo->player && mo->flags2&MF2_FLY && !(mo->z <= mo->floorz)		&& leveltime&2)	{		mo->z += finesine[(FINEANGLES/20*leveltime>>2)&FINEMASK];	}//// clip movement//	if(mo->z <= mo->floorz)	{	// Hit the floor		if(mo->flags&MF_MISSILE)		{			mo->z = mo->floorz;			if(mo->flags2&MF2_FLOORBOUNCE)			{				P_FloorBounceMissile(mo);				return;			}			else if(mo->type == MT_HOLY_FX)			{ // The spirit struck the ground				mo->momz = 0;				P_HitFloor(mo);				return;			}			else if(mo->type == MT_MNTRFX2 || mo->type == MT_LIGHTNING_FLOOR)			{ // Minotaur floor fire can go up steps				return;			}			else			{				P_HitFloor(mo);				P_ExplodeMissile(mo);				return;			}		}		if(mo->flags&MF_COUNTKILL)		// Blasted mobj falling		{			if(mo->momz < -(23*FRACUNIT))			{				P_MonsterFallingDamage(mo);			}		}		if(mo->z-mo->momz > mo->floorz)		{ // Spawn splashes, etc.			P_HitFloor(mo);		}		mo->z = mo->floorz;		if(mo->momz < 0)		{			if(mo->flags2&MF2_ICEDAMAGE && mo->momz < -GRAVITY*8)			{				mo->tics = 1;				mo->momx = 0;				mo->momy = 0;				mo->momz = 0;				return;			}				if(mo->player)			{				mo->player->jumpTics = 7;// delay any jumping for a short time				if(mo->momz < -GRAVITY*8 && !(mo->flags2&MF2_FLY))				{ // squat down					mo->player->deltaviewheight = mo->momz>>3;					if(mo->momz < -23*FRACUNIT)					{						P_FallingDamage(mo->player);						P_NoiseAlert(mo, mo);					}					else if(mo->momz < -GRAVITY*12 && !mo->player->morphTics)					{						S_StartSound(mo, SFX_PLAYER_LAND);						switch(mo->player->class)						{							case PCLASS_FIGHTER:								S_StartSound(mo, SFX_PLAYER_FIGHTER_GRUNT);								break;							case PCLASS_CLERIC:								S_StartSound(mo, SFX_PLAYER_CLERIC_GRUNT);								break;							case PCLASS_MAGE:								S_StartSound(mo, SFX_PLAYER_MAGE_GRUNT);								break;							default:								break;						}					}					else if ((P_GetThingFloorType(mo) < FLOOR_LIQUID) && 						(!mo->player->morphTics))					{						S_StartSound(mo, SFX_PLAYER_LAND);					}#ifdef __WATCOMC__					if(!useexterndriver)					{						mo->player->centering = true;					}#else					mo->player->centering = true;#endif				}			}			else if(mo->type >= MT_POTTERY1 				&& mo->type <= MT_POTTERY3)			{				P_DamageMobj(mo, NULL, NULL, 25);			}			else if(mo->flags&MF_COUNTKILL)			{				if(mo->momz < -23*FRACUNIT)				{					// Doesn't get here				}			}			mo->momz = 0;		}		if(mo->flags&MF_SKULLFLY)		{ // The skull slammed into something			mo->momz = -mo->momz;		}		if(mo->info->crashstate &&			(mo->flags&MF_CORPSE) && 			!(mo->flags2&MF2_ICEDAMAGE))		{			P_SetMobjState(mo, mo->info->crashstate);			return;		}	}	else if(mo->flags2&MF2_LOGRAV)	{		if(mo->momz == 0)			mo->momz = -(GRAVITY>>3)*2;		else			mo->momz -= GRAVITY>>3;	}	else if (! (mo->flags & MF_NOGRAVITY) )	{		if (mo->momz == 0)			mo->momz = -GRAVITY*2;		else			mo->momz -= GRAVITY;	}		if (mo->z + mo->height > mo->ceilingz)	{	// hit the ceiling		if (mo->momz > 0)			mo->momz = 0;		mo->z = mo->ceilingz - mo->height;		if(mo->flags2&MF2_FLOORBOUNCE)		{			// Maybe reverse momentum here for ceiling bounce			// Currently won't happen			if(mo->info->seesound)			{				S_StartSound(mo, mo->info->seesound);			}			return;		}			if (mo->flags & MF_SKULLFLY)		{	// the skull slammed into something			mo->momz = -mo->momz;		}		if(mo->flags&MF_MISSILE)		{			if(mo->type == MT_LIGHTNING_CEILING)			{				return;			}			if(mo->subsector->sector->ceilingpic == skyflatnum)			{				if(mo->type == MT_BLOODYSKULL)				{					mo->momx = mo->momy = 0;					mo->momz = -FRACUNIT;				}				else if(mo->type == MT_HOLY_FX)				{					P_ExplodeMissile(mo);				}				else				{					P_RemoveMobj(mo);				}				return;			}			P_ExplodeMissile(mo);			return;		}	}}//----------------------------------------------------------------------------//// PROC P_BlasterMobjThinker//////----------------------------------------------------------------------------void P_BlasterMobjThinker(mobj_t *mobj){	int i;	fixed_t xfrac;	fixed_t yfrac;	fixed_t zfrac;	fixed_t z;	boolean changexy;	mobj_t *mo;	// Handle movement	if(mobj->momx || mobj->momy ||		(mobj->z != mobj->floorz) || mobj->momz)	{		xfrac = mobj->momx>>3;		yfrac = mobj->momy>>3;		zfrac = mobj->momz>>3;		changexy = xfrac || yfrac;		for(i = 0; i < 8; i++)		{			if(changexy)			{				if(!P_TryMove(mobj, mobj->x+xfrac, mobj->y+yfrac))				{ // Blocked move					P_ExplodeMissile(mobj);					return;				}			}			mobj->z += zfrac;			if(mobj->z <= mobj->floorz)			{ // Hit the floor				mobj->z = mobj->floorz;				P_HitFloor(mobj);				P_ExplodeMissile(mobj);				return;			}			if(mobj->z+mobj->height > mobj->ceilingz)			{ // Hit the ceiling				mobj->z = mobj->ceilingz-mobj->height;				P_ExplodeMissile(mobj);				return;			}			if(changexy)			{				if(mobj->type == MT_MWAND_MISSILE && (P_Random() < 128))				{					z = mobj->z-8*FRACUNIT;					if(z < mobj->floorz)					{						z = mobj->floorz;					}					P_SpawnMobj(mobj->x, mobj->y, z, MT_MWANDSMOKE);				}				else if(!--mobj->special1)				{					mobj->special1 = 4;					z = mobj->z-12*FRACUNIT;					if(z < mobj->floorz)					{						z = mobj->floorz;					}					mo = P_SpawnMobj(mobj->x, mobj->y, z, MT_CFLAMEFLOOR);					if(mo)					{						mo->angle = mobj->angle;					}				}			}		}	}	// Advance the state	if(mobj->tics != -1)	{		mobj->tics--;		while(!mobj->tics)		{			if(!P_SetMobjState(mobj, mobj->state->nextstate))			{ // mobj was removed				return;			}		}	}}//===========================================================================//// PlayerLandedOnThing////===========================================================================static void PlayerLandedOnThing(mobj_t *mo, mobj_t *onmobj){	mo->player->deltaviewheight = mo->momz>>3;	if(mo->momz < -23*FRACUNIT)	{		P_FallingDamage(mo->player);		P_NoiseAlert(mo, mo);	}	else if(mo->momz < -GRAVITY*12 		&& !mo->player->morphTics)	{		S_StartSound(mo, SFX_PLAYER_LAND);		switch(mo->player->class)		{			case PCLASS_FIGHTER:				S_StartSound(mo, SFX_PLAYER_FIGHTER_GRUNT);				break;			case PCLASS_CLERIC:				S_StartSound(mo, SFX_PLAYER_CLERIC_GRUNT);				break;			case PCLASS_MAGE:				S_StartSound(mo, SFX_PLAYER_MAGE_GRUNT);				break;			default:				break;		}	}	else if(!mo->player->morphTics)	{		S_StartSound(mo, SFX_PLAYER_LAND);	}#ifdef __WATCOMC__	if(!useexterndriver)	{		mo->player->centering = true;	}#else	mo->player->centering = true;#endif}//----------------------------------------------------------------------------//// PROC P_MobjThinker////----------------------------------------------------------------------------void P_MobjThinker(mobj_t *mobj){	mobj_t *onmo;/*	// Reset to not blasted when momentums are gone	if((mobj->flags2&MF2_BLASTED) && (!(mobj->momx)) && (!(mobj->momy)))		ResetBlasted(mobj);*/	// Handle X and Y momentums	BlockingMobj = NULL;	if(mobj->momx || mobj->momy || (mobj->flags&MF_SKULLFLY))	{		P_XYMovement(mobj);		if(mobj->thinker.function == (think_t)-1)		{ // mobj was removed			return;		}	}	else if(mobj->flags2&MF2_BLASTED)	{ // Reset to not blasted when momentums are gone		ResetBlasted(mobj);	}	if(mobj->flags2&MF2_FLOATBOB)	{ // Floating item bobbing motion (special1 is height)		mobj->z = mobj->floorz +					mobj->special1 +					FloatBobOffsets[(mobj->health++)&63];	}	else if((mobj->z != mobj->floorz) || mobj->momz || BlockingMobj)	{	// Handle Z momentum and gravity		if(mobj->flags2&MF2_PASSMOBJ)		{			if(!(onmo = P_CheckOnmobj(mobj)))			{				P_ZMovement(mobj);				if(mobj->player && mobj->flags&MF2_ONMOBJ)				{					mobj->flags2 &= ~MF2_ONMOBJ;				}			}			else			{				if(mobj->player)				{					if(mobj->momz < -GRAVITY*8 && !(mobj->flags2&MF2_FLY))					{						PlayerLandedOnThing(mobj, onmo);					}					if(onmo->z+onmo->height-mobj->z <= 24*FRACUNIT)					{						mobj->player->viewheight -= onmo->z+onmo->height							-mobj->z;						mobj->player->deltaviewheight = 							(VIEWHEIGHT-mobj->player->viewheight)>>3;						mobj->z = onmo->z+onmo->height;						mobj->flags2 |= MF2_ONMOBJ;						mobj->momz = 0;					}									else					{ // hit the bottom of the blocking mobj						mobj->momz = 0;					}				}/* Landing on another player, and mimicking his movements				if(mobj->player && onmo->player)				{					mobj->momx = onmo->momx;					mobj->momy = onmo->momy;					if(onmo->z < onmo->floorz)					{						mobj->z += onmo->floorz-onmo->z;						if(onmo->player)						{							onmo->player->viewheight -= onmo->floorz-onmo->z;							onmo->player->deltaviewheight = (VIEWHEIGHT-								onmo->player->viewheight)>>3;						}						onmo->z = onmo->floorz;					}				}*/			}		}		else		{			P_ZMovement(mobj);		}		if(mobj->thinker.function == (think_t)-1)		{ // mobj was removed			return;		}	}	// Cycle through states, calling action functions at transitions	if(mobj->tics != -1)	{		mobj->tics--;		// you can cycle through multiple states in a tic		while(!mobj->tics)		{			if(!P_SetMobjState(mobj, mobj->state->nextstate))			{ // mobj was removed				return;			}		}	}}//==========================================================================//// P_SpawnMobj////==========================================================================mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type){	mobj_t *mobj;	state_t *st;	mobjinfo_t *info;	fixed_t space;	mobj = Z_Malloc(sizeof(*mobj), PU_LEVEL, NULL);	memset(mobj, 0, sizeof(*mobj));	info = &mobjinfo[type];	mobj->type = type;	mobj->info = info;	mobj->x = x;	mobj->y = y;	mobj->radius = info->radius;	mobj->height = info->height;	mobj->flags = info->flags;	mobj->flags2 = info->flags2;	mobj->damage = info->damage;	mobj->health = info->spawnhealth;	if(gameskill != sk_nightmare)	{		mobj->reactiontime = info->reactiontime;	}	mobj->lastlook = P_Random()%MAXPLAYERS;	// Set the state, but do not use P_SetMobjState, because action	// routines can't be called yet.  If the spawnstate has an action	// routine, it will not be called.	st = &states[info->spawnstate];	mobj->state = st;	mobj->tics = st->tics;	mobj->sprite = st->sprite;	mobj->frame = st->frame;	// Set subsector and/or block links.	P_SetThingPosition(mobj);	mobj->floorz = mobj->subsector->sector->floorheight;	mobj->ceilingz = mobj->subsector->sector->ceilingheight;	if(z == ONFLOORZ)	{		mobj->z = mobj->floorz;	}	else if(z == ONCEILINGZ)	{		mobj->z = mobj->ceilingz-mobj->info->height;	}		else if(z == FLOATRANDZ)	{		space = ((mobj->ceilingz)-(mobj->info->height))-mobj->floorz;		if(space > 48*FRACUNIT)		{			space -= 40*FRACUNIT;			mobj->z = ((space*P_Random())>>8)+mobj->floorz+40*FRACUNIT;		}		else		{			mobj->z = mobj->floorz;		}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
无码av中文一区二区三区桃花岛| 中文字幕乱码日本亚洲一区二区 | 久久 天天综合| 欧美一区欧美二区| 久久精品久久久精品美女| 91精品福利在线一区二区三区| 五月天激情小说综合| 欧美一区二区黄色| 激情成人综合网| 中文字幕一区视频| 欧美亚洲另类激情小说| 日韩影院精彩在线| 久久一区二区三区国产精品| 国产成人精品亚洲777人妖 | 精品国产第一区二区三区观看体验| 久久精品免费看| 久久久www成人免费无遮挡大片| 国产mv日韩mv欧美| 亚洲一区在线播放| 久久综合五月天婷婷伊人| 不卡的看片网站| 奇米影视7777精品一区二区| 久久精品免视看| 97久久精品人人做人人爽| 午夜久久久久久电影| 久久久久88色偷偷免费| 欧美视频三区在线播放| 国产中文字幕一区| 亚洲国产精品视频| 久久久精品日韩欧美| 欧美在线制服丝袜| 国产经典欧美精品| 午夜一区二区三区视频| 国产无遮挡一区二区三区毛片日本| 99免费精品在线观看| 毛片av中文字幕一区二区| 亚洲天堂免费在线观看视频| 欧美成人乱码一区二区三区| 色婷婷综合激情| 国产精品自拍一区| 午夜日韩在线观看| 亚洲欧美一区二区三区孕妇| 精品久久久三级丝袜| 色综合久久久久| 国产精品乡下勾搭老头1| 亚洲一区二区精品久久av| 欧美经典一区二区| 欧美一二三四区在线| 一本色道久久加勒比精品| 国产成人免费xxxxxxxx| 免费观看30秒视频久久| 亚洲精品免费电影| 亚洲欧洲av在线| 国产欧美日韩在线观看| 日韩一区二区在线看| 在线观看亚洲一区| www.一区二区| 粉嫩一区二区三区在线看 | 久久99日本精品| 亚洲成年人影院| 亚洲综合无码一区二区| **性色生活片久久毛片| 国产区在线观看成人精品 | 欧美色视频在线| 成人成人成人在线视频| 国产成人综合网站| 韩国女主播成人在线| 麻豆精品新av中文字幕| 日欧美一区二区| 天堂蜜桃一区二区三区| 丝袜美腿亚洲色图| 午夜精品在线看| 日韩精品久久理论片| 亚洲伊人色欲综合网| 亚洲一区二区三区小说| 亚洲男人的天堂在线aⅴ视频| 国产精品久久久久国产精品日日| 国产欧美日韩视频一区二区| 国产午夜精品一区二区三区视频 | 欧美综合一区二区三区| 色噜噜狠狠成人中文综合| 色噜噜久久综合| 91福利区一区二区三区| 欧美体内she精高潮| 欧美日韩在线综合| 4hu四虎永久在线影院成人| 欧美一区二区视频在线观看2020| 91精品国产综合久久福利软件| 91精品国产福利在线观看| 欧美一卡二卡三卡| 精品av久久707| 欧美精彩视频一区二区三区| 亚洲欧洲另类国产综合| 亚洲一区二区三区视频在线 | 亚洲一区二区影院| 男男视频亚洲欧美| 韩国av一区二区三区在线观看| 国产福利精品一区| 色久综合一二码| 91精品国产综合久久久久| 欧美精品一区二区不卡| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 丝袜美腿一区二区三区| 久久不见久久见中文字幕免费| 国产成人夜色高潮福利影视| 97久久精品人人爽人人爽蜜臀 | 另类小说一区二区三区| 国产成人免费av在线| 在线免费视频一区二区| 日韩久久免费av| 国产精品久久久久久久午夜片| 亚洲高清一区二区三区| 国产高清在线精品| 欧美中文字幕一区二区三区亚洲| 日韩一区二区三区视频| 中文字幕日韩一区二区| 日本不卡视频在线观看| 成人美女视频在线观看| 精品视频一区二区不卡| 久久人人爽人人爽| 亚洲成人资源在线| 成人免费观看视频| 欧美成人a∨高清免费观看| 日韩美女精品在线| 精品一区二区三区免费视频| 色综合久久久网| 奇米色一区二区| caoporn国产精品| 日韩欧美一级精品久久| 亚洲久草在线视频| 国产精品一区二区无线| 欧美剧在线免费观看网站| 久久久久久久久久电影| 日韩在线一二三区| 色呦呦国产精品| 亚洲国产成人午夜在线一区| 视频一区中文字幕| 色香蕉久久蜜桃| 国产精品日产欧美久久久久| 麻豆一区二区三| 欧美日韩国产经典色站一区二区三区| 中文字幕国产一区二区| 精品一区二区三区在线观看| 欧美日韩一区视频| 亚洲精品中文在线| caoporm超碰国产精品| 久久久久久**毛片大全| 久久 天天综合| 欧美一级视频精品观看| 亚洲国产你懂的| 欧美少妇bbb| 一区二区三区在线不卡| 成人av午夜电影| 中文字幕欧美国产| 国产suv一区二区三区88区| 精品日本一线二线三线不卡| 日韩 欧美一区二区三区| 欧美亚洲日本国产| 亚洲国产精品影院| 欧美日韩精品福利| 亚洲国产精品久久久久秋霞影院 | 亚洲午夜久久久久久久久电影院| 91麻豆免费看| 亚洲欧美日韩一区| 欧美中文字幕亚洲一区二区va在线 | 99re视频这里只有精品| 国产精品久久99| av在线播放成人| 亚洲美女免费视频| 色系网站成人免费| 亚洲最大成人综合| 欧美亚洲另类激情小说| 视频一区视频二区在线观看| 制服视频三区第一页精品| 日韩国产欧美在线观看| 日韩一级大片在线观看| 韩国在线一区二区| 国产视频一区二区在线| 成人免费av资源| 亚洲精品免费播放| 欧美日韩国产一级二级| 久久99精品久久久久| 国产日韩欧美高清| 色综合久久久久| 五月天国产精品| 久久综合丝袜日本网| 9l国产精品久久久久麻豆| 亚洲激情自拍偷拍| 欧美一卡2卡3卡4卡| 国产精品99精品久久免费| 国产精品久久久久婷婷| 欧美日韩五月天| 国产伦理精品不卡| 国产精品伦理在线| 精品一区二区三区蜜桃| 久久66热偷产精品| 99re这里只有精品6| 欧美一区二区三区人| 久久久久久99久久久精品网站| 久久精品视频在线免费观看|