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

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

?? p_user.c

?? 魔法師傳奇源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
		mo->flags2 &= ~MF2_SLIDE;	}}void P_BlastMobj(mobj_t *source, mobj_t *victim, fixed_t strength){	angle_t angle,ang;	mobj_t *mo;	fixed_t x,y,z;	angle = R_PointToAngle2(source->x, source->y, victim->x, victim->y);	angle >>= ANGLETOFINESHIFT;	if (strength < BLAST_FULLSTRENGTH)	{		victim->momx = FixedMul(strength, finecosine[angle]);		victim->momy = FixedMul(strength, finesine[angle]);		if (victim->player)		{			// Players handled automatically		}		else		{			victim->flags2 |= MF2_SLIDE;			victim->flags2 |= MF2_BLASTED;		}	}	else		// full strength blast from artifact	{		if (victim->flags&MF_MISSILE)		{			switch(victim->type)			{				case MT_SORCBALL1:	// don't blast sorcerer balls				case MT_SORCBALL2:				case MT_SORCBALL3:					return;					break;				case MT_MSTAFF_FX2:	// Reflect to originator					victim->special1 = (int)victim->target;						victim->target = source;					break;				default:					break;			}		}		if (victim->type == MT_HOLY_FX)		{			if ((mobj_t *)(victim->special1) == source)			{				victim->special1 = (int)victim->target;					victim->target = source;			}		}		victim->momx = FixedMul(BLAST_SPEED, finecosine[angle]);		victim->momy = FixedMul(BLAST_SPEED, finesine[angle]);		// Spawn blast puff		ang = R_PointToAngle2(victim->x, victim->y, source->x, source->y);		ang >>= ANGLETOFINESHIFT;		x = victim->x + FixedMul(victim->radius+FRACUNIT, finecosine[ang]);		y = victim->y + FixedMul(victim->radius+FRACUNIT, finesine[ang]);		z = victim->z - victim->floorclip + (victim->height>>1);		mo=P_SpawnMobj(x, y, z, MT_BLASTEFFECT);		if (mo)		{			mo->momx = victim->momx;			mo->momy = victim->momy;		}		if (victim->flags&MF_MISSILE)		{			victim->momz = 8*FRACUNIT;			mo->momz = victim->momz;		}		else		{			victim->momz = (1000/victim->info->mass)<<FRACBITS;		}		if (victim->player)		{			// Players handled automatically		}		else		{			victim->flags2 |= MF2_SLIDE;			victim->flags2 |= MF2_BLASTED;		}	}}// Blast all mobj things awayvoid P_BlastRadius(player_t *player){	mobj_t *mo;	mobj_t *pmo=player->mo;	thinker_t *think;	fixed_t dist;	S_StartSound(pmo, SFX_ARTIFACT_BLAST);	P_NoiseAlert(player->mo, player->mo);	for(think = thinkercap.next; think != &thinkercap; think = think->next)	{		if(think->function != P_MobjThinker)		{ // Not a mobj thinker			continue;		}		mo = (mobj_t *)think;		if((mo == pmo) || (mo->flags2&MF2_BOSS))		{ // Not a valid monster			continue;		}		if ((mo->type == MT_POISONCLOUD) ||		// poison cloud			(mo->type == MT_HOLY_FX) ||			// holy fx			(mo->flags&MF_ICECORPSE))			// frozen corpse		{			// Let these special cases go		}		else if ((mo->flags&MF_COUNTKILL) &&			(mo->health <= 0))		{			continue;		}		else if (!(mo->flags&MF_COUNTKILL) &&			!(mo->player) &&			!(mo->flags&MF_MISSILE))		{	// Must be monster, player, or missile			continue;		}		if (mo->flags2&MF2_DORMANT)		{			continue;		// no dormant creatures		}		if ((mo->type == MT_WRAITHB) && (mo->flags2&MF2_DONTDRAW))		{			continue;		// no underground wraiths		}		if ((mo->type == MT_SPLASHBASE) ||			(mo->type == MT_SPLASH))		{			continue;		}		if(mo->type == MT_SERPENT || mo->type == MT_SERPENTLEADER)		{			continue;		}		dist = P_AproxDistance(pmo->x - mo->x, pmo->y - mo->y);		if(dist > BLAST_RADIUS_DIST)		{ // Out of range			continue;		}		P_BlastMobj(pmo, mo, BLAST_FULLSTRENGTH);	}}#define HEAL_RADIUS_DIST	255*FRACUNIT// Do class specific effect for everyone in radiusboolean P_HealRadius(player_t *player){	mobj_t *mo;	mobj_t *pmo=player->mo;	thinker_t *think;	fixed_t dist;	int effective=false;	int amount;	for(think = thinkercap.next; think != &thinkercap; think = think->next)	{		if(think->function != P_MobjThinker)		{ // Not a mobj thinker			continue;		}		mo = (mobj_t *)think;		if (!mo->player) continue;		if (mo->health <= 0) continue;		dist = P_AproxDistance(pmo->x - mo->x, pmo->y - mo->y);		if(dist > HEAL_RADIUS_DIST)		{ // Out of range			continue;		}		switch(player->class)		{			case PCLASS_FIGHTER:		// Radius armor boost				if ((P_GiveArmor(mo->player, ARMOR_ARMOR, 1)) ||					(P_GiveArmor(mo->player, ARMOR_SHIELD, 1)) ||					(P_GiveArmor(mo->player, ARMOR_HELMET, 1)) ||					(P_GiveArmor(mo->player, ARMOR_AMULET, 1)))				{					effective=true;					S_StartSound(mo, SFX_MYSTICINCANT);				}				break;			case PCLASS_CLERIC:			// Radius heal				amount = 50 + (P_Random()%50);				if (P_GiveBody(mo->player, amount))				{					effective=true;					S_StartSound(mo, SFX_MYSTICINCANT);				}				break;			case PCLASS_MAGE:			// Radius mana boost				amount = 50 + (P_Random()%50);				if ((P_GiveMana(mo->player, MANA_1, amount)) ||					(P_GiveMana(mo->player, MANA_2, amount)))				{					effective=true;					S_StartSound(mo, SFX_MYSTICINCANT);				}				break;			case PCLASS_PIG:			default:				break;		}	}	return(effective);}//----------------------------------------------------------------------------//// PROC P_PlayerNextArtifact////----------------------------------------------------------------------------void P_PlayerNextArtifact(player_t *player){	extern int inv_ptr;	extern int curpos;	if(player == &players[consoleplayer])	{		inv_ptr--;		if(inv_ptr < 6)		{			curpos--;			if(curpos < 0)			{				curpos = 0;			}		}		if(inv_ptr < 0)		{			inv_ptr = player->inventorySlotNum-1;			if(inv_ptr < 6)			{				curpos = inv_ptr;			}			else			{				curpos = 6;			}		}		player->readyArtifact =			player->inventory[inv_ptr].type;	}}//----------------------------------------------------------------------------//// PROC P_PlayerRemoveArtifact////----------------------------------------------------------------------------void P_PlayerRemoveArtifact(player_t *player, int slot){	int i;	extern int inv_ptr;	extern int curpos;	player->artifactCount--;	if(!(--player->inventory[slot].count))	{ // Used last of a type - compact the artifact list		player->readyArtifact = arti_none;		player->inventory[slot].type = arti_none;		for(i = slot+1; i < player->inventorySlotNum; i++)		{			player->inventory[i-1] = player->inventory[i];		}		player->inventorySlotNum--;		if(player == &players[consoleplayer])		{ // Set position markers and get next readyArtifact			inv_ptr--;			if(inv_ptr < 6)			{				curpos--;				if(curpos < 0)				{					curpos = 0;				}			}			if(inv_ptr >= player->inventorySlotNum)			{				inv_ptr = player->inventorySlotNum-1;			}			if(inv_ptr < 0)			{				inv_ptr = 0;			}			player->readyArtifact =				player->inventory[inv_ptr].type;		}	}}//----------------------------------------------------------------------------//// PROC P_PlayerUseArtifact////----------------------------------------------------------------------------void P_PlayerUseArtifact(player_t *player, artitype_t arti){	int i;	for(i = 0; i < player->inventorySlotNum; i++)	{		if(player->inventory[i].type == arti)		{ // Found match - try to use			if(P_UseArtifact(player, arti))			{ // Artifact was used - remove it from inventory				P_PlayerRemoveArtifact(player, i);				if(player == &players[consoleplayer])				{					if(arti < arti_firstpuzzitem)					{						S_StartSound(NULL, SFX_ARTIFACT_USE);					}					else					{						S_StartSound(NULL, SFX_PUZZLE_SUCCESS);					}					ArtifactFlash = 4;				}			}			else if(arti < arti_firstpuzzitem)			{ // Unable to use artifact, advance pointer				P_PlayerNextArtifact(player);			}			break;		}	}}//==========================================================================//// P_UseArtifact//// Returns true if the artifact was used.////==========================================================================boolean P_UseArtifact(player_t *player, artitype_t arti){	mobj_t *mo;	angle_t angle;	int i;	int count;	switch(arti)	{		case arti_invulnerability:			if(!P_GivePower(player, pw_invulnerability))			{				return(false);			}			break;		case arti_health:			if(!P_GiveBody(player, 25))			{				return(false);			}			break;		case arti_superhealth:			if(!P_GiveBody(player, 100))			{				return(false);			}			break;		case arti_healingradius:			if (!P_HealRadius(player))			{				return(false);			}			break;		case arti_torch:			if(!P_GivePower(player, pw_infrared))			{				return(false);			}			break;		case arti_egg:			mo = player->mo;			P_SpawnPlayerMissile(mo, MT_EGGFX);			P_SPMAngle(mo, MT_EGGFX, mo->angle-(ANG45/6));			P_SPMAngle(mo, MT_EGGFX, mo->angle+(ANG45/6));			P_SPMAngle(mo, MT_EGGFX, mo->angle-(ANG45/3));			P_SPMAngle(mo, MT_EGGFX, mo->angle+(ANG45/3));			break;		case arti_fly:			if(!P_GivePower(player, pw_flight))			{				return(false);			}			if(player->mo->momz <= -35*FRACUNIT)			{ // stop falling scream				S_StopSound(player->mo);			}			break;		case arti_summon:			mo = P_SpawnPlayerMissile(player->mo, MT_SUMMON_FX);			if (mo)			{				mo->target = player->mo;				mo->special1 = (int)(player->mo);				mo->momz = 5*FRACUNIT;			}			break;		case arti_teleport:			P_ArtiTele(player);			break;		case arti_teleportother:			P_ArtiTeleportOther(player);			break;		case arti_poisonbag:			angle = player->mo->angle>>ANGLETOFINESHIFT;			if(player->class == PCLASS_CLERIC)			{				mo = P_SpawnMobj(player->mo->x+16*finecosine[angle],					player->mo->y+24*finesine[angle], player->mo->z-					player->mo->floorclip+8*FRACUNIT, MT_POISONBAG);				if(mo)				{					mo->target = player->mo;				}			}			else if(player->class == PCLASS_MAGE)			{				mo = P_SpawnMobj(player->mo->x+16*finecosine[angle],					player->mo->y+24*finesine[angle], player->mo->z-					player->mo->floorclip+8*FRACUNIT, MT_FIREBOMB);				if(mo)				{					mo->target = player->mo;				}			}						else // PCLASS_FIGHTER, obviously (also pig, not so obviously)			{				mo = P_SpawnMobj(player->mo->x, player->mo->y, 					player->mo->z-player->mo->floorclip+35*FRACUNIT,					MT_THROWINGBOMB);				if(mo)				{					mo->angle = player->mo->angle+(((P_Random()&7)-4)<<24);					mo->momz = 4*FRACUNIT+((player->lookdir)<<(FRACBITS-4));					mo->z += player->lookdir<<(FRACBITS-4);					P_ThrustMobj(mo, mo->angle, mo->info->speed);					mo->momx += player->mo->momx>>1;					mo->momy += player->mo->momy>>1;					mo->target = player->mo;					mo->tics -= P_Random()&3;					P_CheckMissileSpawn(mo);															} 			}			break;		case arti_speed:			if(!P_GivePower(player, pw_speed))			{				return(false);			}			break;		case arti_boostmana:			if(!P_GiveMana(player, MANA_1, MAX_MANA))			{				if(!P_GiveMana(player, MANA_2, MAX_MANA))				{					return false;				}							}			else 			{				P_GiveMana(player, MANA_2, MAX_MANA);			}			break;		case arti_boostarmor:			count = 0;			for(i = 0; i < NUMARMOR; i++)			{				count += P_GiveArmor(player, i, 1); // 1 point per armor type			}			if(!count)			{				return false;			}			break;		case arti_blastradius:			P_BlastRadius(player);			break;		case arti_puzzskull:		case arti_puzzgembig:		case arti_puzzgemred:		case arti_puzzgemgreen1:		case arti_puzzgemgreen2:		case arti_puzzgemblue1:		case arti_puzzgemblue2:		case arti_puzzbook1:		case arti_puzzbook2:		case arti_puzzskull2:		case arti_puzzfweapon:		case arti_puzzcweapon:		case arti_puzzmweapon:		case arti_puzzgear1:		case arti_puzzgear2:		case arti_puzzgear3:		case arti_puzzgear4:			if(P_UsePuzzleItem(player, arti-arti_firstpuzzitem))			{				return true;			}			else			{				P_SetYellowMessage(player, TXT_USEPUZZLEFAILED, false);				return false;			}			break;		default:			return false;	}	return true;}//============================================================================//// A_SpeedFade////============================================================================void A_SpeedFade(mobj_t *actor){	actor->flags |= MF_SHADOW;	actor->flags &= ~MF_ALTSHADOW;	actor->sprite = actor->target->sprite;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影精品一区二区| caoporn国产精品| 91麻豆精品国产自产在线| 亚洲一区二区高清| 欧美美女激情18p| 久久99精品国产.久久久久久| 欧美成人性战久久| 国产成人精品一区二区三区四区| 中文无字幕一区二区三区| 99综合电影在线视频| 亚洲夂夂婷婷色拍ww47| 欧美一区二区成人6969| 国产中文字幕一区| 亚洲视频图片小说| 欧美一区二区精品| 粉嫩aⅴ一区二区三区四区五区 | 成人白浆超碰人人人人| 自拍偷拍国产精品| 7777精品伊人久久久大香线蕉的 | 久久久久久毛片| 91亚洲男人天堂| 三级不卡在线观看| 国产精品国产成人国产三级| 欧美日韩国产乱码电影| 国产乱码精品一区二区三| 亚洲激情中文1区| 精品国产乱码久久久久久免费 | 天天综合色天天综合色h| 欧美精品一区在线观看| 9久草视频在线视频精品| 首页欧美精品中文字幕| 国产免费成人在线视频| 欧美精品在线一区二区三区| 国产不卡视频一区| 午夜精品免费在线观看| 欧美国产亚洲另类动漫| 欧美精品久久99久久在免费线| 福利电影一区二区| 日本成人在线看| 亚洲欧美乱综合| 国产婷婷色一区二区三区四区 | 欧美亚洲图片小说| 国产精品18久久久久久久久久久久 | 国产精品久久毛片a| 欧美一个色资源| 色综合色综合色综合 | 国产成人精品影视| 免播放器亚洲一区| 亚洲一区二区三区在线| 中文字幕免费在线观看视频一区| 欧美一区午夜精品| 欧美在线观看一区| 一本大道综合伊人精品热热| 国产精品小仙女| 久久99精品国产麻豆婷婷洗澡| 亚洲最新在线观看| 17c精品麻豆一区二区免费| 精品久久久久久无| 日韩一级二级三级精品视频| 欧美日韩在线观看一区二区| 99国产精品久久| www.激情成人| 成人亚洲精品久久久久软件| 国产一区二区导航在线播放| 日本va欧美va欧美va精品| 午夜电影网一区| 亚洲一卡二卡三卡四卡五卡| 综合久久久久综合| 亚洲欧洲中文日韩久久av乱码| 国产欧美日韩精品在线| 国产午夜亚洲精品午夜鲁丝片 | 欧美一区三区四区| 欧美日韩在线不卡| 欧美人狂配大交3d怪物一区| 欧美性色黄大片| 在线观看日韩一区| 欧美三级日韩在线| 精品视频在线看| 欧美精品亚洲二区| 欧美一区二区三区人| 日韩欧美一级精品久久| 日韩欧美国产wwwww| 久久综合色播五月| 亚洲国产精品精华液2区45| 欧美国产欧美亚州国产日韩mv天天看完整| 久久网这里都是精品| 国产亚洲成aⅴ人片在线观看 | 亚洲精品一区二区三区在线观看 | 中文字幕一区二区三区在线观看| 国产日韩精品一区二区浪潮av| 久久久国产午夜精品| 国产精品人妖ts系列视频| 国产精品福利一区| 亚洲精品国产高清久久伦理二区| 亚洲午夜羞羞片| 久久激情五月婷婷| 成人综合婷婷国产精品久久 | 黄色小说综合网站| 国产福利一区在线| 91在线视频网址| 欧美日韩免费视频| 精品成人免费观看| 最新不卡av在线| 天堂va蜜桃一区二区三区| 久久电影国产免费久久电影| 国产99久久久国产精品潘金| 色伊人久久综合中文字幕| 在线成人免费视频| 国产欧美一区二区精品婷婷| 亚洲精品国产精华液| 久久99国产精品成人| 91同城在线观看| 日韩欧美国产一区二区在线播放| 欧美激情一二三区| 日韩成人免费看| 99麻豆久久久国产精品免费| 777久久久精品| 亚洲国产精品精华液2区45| 婷婷久久综合九色综合绿巨人| 国产一区二区不卡| 欧美日韩亚洲国产综合| 国产日产精品1区| 午夜精品在线看| 播五月开心婷婷综合| 欧美一区二区三区视频免费| 中文字幕一区二区三区四区| 免费美女久久99| 99在线热播精品免费| 久久综合狠狠综合| 亚洲成av人片一区二区| 成人精品电影在线观看| 91精品国产福利在线观看| 亚洲精品自拍动漫在线| 国产精品一级二级三级| 91麻豆精品国产91久久久久久| 成人免费一区二区三区视频| 国产麻豆日韩欧美久久| 欧美一区二区三区精品| 夜夜操天天操亚洲| 91在线播放网址| 久久久久久影视| 美女视频黄a大片欧美| 在线观看国产一区二区| 国产精品久99| 国产福利电影一区二区三区| 欧美刺激脚交jootjob| 午夜精品久久久久久久99樱桃| 91在线小视频| 国产精品成人网| 成人黄色网址在线观看| 国产婷婷精品av在线| 毛片av中文字幕一区二区| 欧美日韩五月天| 亚洲图片欧美色图| 91精彩视频在线| 亚洲女同ⅹxx女同tv| 波多野结衣在线一区| 国产人妖乱国产精品人妖| 国产精品996| 国产欧美日韩亚州综合 | 91小视频免费观看| 亚洲国产高清不卡| 成人午夜av电影| 国产精品不卡在线| 99久久精品国产麻豆演员表| 国产精品久久久久一区二区三区共| 国产大陆a不卡| 国产精品卡一卡二| 色综合色狠狠天天综合色| 一区二区三区日韩精品视频| 91久久精品午夜一区二区| 亚洲一区自拍偷拍| 欧美日本不卡视频| 麻豆国产精品一区二区三区| 日韩精品中文字幕一区 | 成人18视频日本| 一区在线观看视频| 色妞www精品视频| 亚洲五码中文字幕| 欧美一级欧美三级在线观看| 久久国产精品一区二区| 久久久久国产精品厨房| 成人av电影在线| 一区二区高清在线| 欧美精品18+| 极品少妇xxxx偷拍精品少妇| 国产精品视频一二三区| 91小宝寻花一区二区三区| 亚洲成a天堂v人片| 日韩欧美国产一二三区| 高潮精品一区videoshd| 樱花影视一区二区| 7777女厕盗摄久久久| 国产精品99久久久久久久女警| 综合色天天鬼久久鬼色| 在线播放中文一区| 国产传媒欧美日韩成人| 亚洲黄色片在线观看| 欧美一区二区三区人| 成人自拍视频在线|