MQ2SpawnType::GETMETHOD() - Face method added

Moderator: MacroQuest Developers

onetimehero
a ghoul
a ghoul
Posts: 105
Joined: Fri Sep 05, 2003 2:42 pm

MQ2SpawnType::GETMETHOD() - Face method added

Post by onetimehero » Sun Mar 27, 2005 12:54 am

Can use face,nolook, away, and/or predict as arguments to Face method.

${Spawn[a large rat]:Face}
${Spawn[a large rat]:Face[fast]}
${Spawn[a large rat]:Target:Face[predict,fast,nolook,away]}

Code: Select all


bool MQ2SpawnType::GETMETHOD()
{
#define pPtr ((PSPAWNINFO)VarPtr.Ptr)
	if (!VarPtr.Ptr)
		return false;
	PMQ2TYPEMETHOD pMethod=MQ2SpawnType::FindMethod(Method);
	if (!pMethod)
		return false;
	switch((SpawnMethods)pMethod->ID)
	{
	case Target:
		*ppTarget=GetSpawnByID(pPtr->SpawnID); // this could be a variable, which is just a copy. use its ID
		return true;
	case Face:
		{
			PSPAWNINFO pSpawn = (PSPAWNINFO)GetSpawnByID(pPtr->SpawnID);
			bool bfPredict=false;
			bool bfAway=false;
			bool bfNolook=false;
			bool bfFast=false;
			gFaceAngle = (
				atan2(pSpawn->X - ((PSPAWNINFO)pCharSpawn)->X,
				pSpawn->Y - ((PSPAWNINFO)pCharSpawn)->Y)
				* 256.0f / PI);
			while (argc--)
			{
				if (!stricmp(argv[argc],"predict"))
					bfPredict=true;
				else if (!stricmp(argv[argc],"nolook"))
					bfNolook=true;
				else if (!stricmp(argv[argc],"away"))
					bfAway=true;
				else if (!stricmp(argv[argc],"fast"))
					bfFast=true;
			}
			if (bfPredict)
			{
				DOUBLE Distance;
				Distance = DistanceToSpawn((PSPAWNINFO)pCharSpawn, pSpawn);
				gFaceAngle = (
					atan2((pSpawn->X + (pSpawn->SpeedX * Distance)) - ((PSPAWNINFO)pCharSpawn)->X,
					(pSpawn->Y + (pSpawn->SpeedY * Distance)) - ((PSPAWNINFO)pCharSpawn)->Y)
					* 256.0f / PI);
			}
			if (!bfNolook) {
				DOUBLE Distance = DistanceToSpawn((PSPAWNINFO)pCharSpawn, pSpawn);
				gLookAngle = (
					atan2(pSpawn->Z + pSpawn->AvatarHeight*StateHeightMultiplier(pSpawn->StandState) - ((PSPAWNINFO)pCharSpawn)->Z - 
					((PSPAWNINFO)pCharSpawn)->AvatarHeight*StateHeightMultiplier(((PSPAWNINFO)pCharSpawn)->StandState), 
					(FLOAT)Distance) 
					* 256.0f / PI);
				if (bfAway) gLookAngle = -gLookAngle;
				if (bfFast) {
					((PSPAWNINFO)pCharSpawn)->CameraAngle = (FLOAT)gLookAngle;
					gLookAngle=10000.0f;
				}
			}
			if (bfAway) {
				gFaceAngle += 256.0f;
			}
			if (gFaceAngle>=512.0f) gFaceAngle -= 512.0f;
			if (gFaceAngle<0.0f) gFaceAngle += 512.0f;
			if (bfFast) {
				((PSPAWNINFO)pCharSpawn)->Heading = (FLOAT)gFaceAngle;
				gFaceAngle=10000.0f;
			}
		}
		return true;
	case xAssist:
		return true;
	}
	return false;
#undef pPtr
}
Hmm. That's odd.

xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 3:29 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:07 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:08 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:09 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:10 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:11 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:12 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:50 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:52 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:53 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:54 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:55 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:56 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: MQ2SpawnType::GETMETHOD() - Face method added

Post by xyilla » Fri May 02, 2025 4:57 pm