Cogito, ergo sum

Legacy:RandomSpawnPoint

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UT :: Actor (UT) >> NavigationPoint (UT) >> RandomSpawnPoint (custom)

This spawnpoint is used in conjunction with the RandomCreatureFactory

//=============================================================================
// RandomSpawnpoint.
// Used by RandomCreatureFactories for spawning monsters
// Created by Naked Monster, updated by Timmypowergammer.
//=============================================================================
class RandomSpawnPoint extends SpawnPoint;
 
var ThingFactory factory;
 
function bool Create()
{
	local pawn newcreature;
	local RandomCreatureFactory pawnFactory;
	local pawn creature;
	local actor temp, A;
	local rotator newRot;
 
	if ( factory.bCovert && PlayerCanSeeMe() ) //make sure no player can see this
		return false;
 
	temp = Spawn(factory.prototype);
	if (temp == None)
		return false;
	newRot = rot(0,0,0);
	newRot.yaw = rotation.yaw;
	temp.SetRotation(newRot);
	temp.event = factory.tag;
	temp.tag = factory.itemtag;
	newcreature = pawn(temp);
	if( Event != '' )
		foreach AllActors( class 'Actor', A, Event )
			A.Trigger( Self, Instigator );
	if ( factory.bFalling )
		temp.SetPhysics(PHYS_Falling);
	if (newcreature == None)
		return true;
 
	pawnFactory = RandomCreatureFactory(factory);
	if (pawnFactory == None)
	{
		log("Error - use creature factory to spawn pawns");
		return true;
	}
	if (ScriptedPawn(newcreature) != None)
	{
		ScriptedPawn(newcreature).Orders = pawnFactory.Orders;
		ScriptedPawn(newcreature).OrderTag = pawnFactory.OrderTag;
		ScriptedPawn(newcreature).SetEnemy(pawnFactory.enemy);
		ScriptedPawn(newcreature).Alarmtag = pawnFactory.AlarmTag;
		ScriptedPawn(newcreature).SetOwner(pawnFactory);
	}
	else
		newcreature.enemy = pawnFactory.enemy;
	if (newcreature.enemy != None)
		newcreature.lastseenpos = newcreature.enemy.location;
	newcreature.SetMovementPhysics();
	if ( newcreature.Physics == PHYS_Walking)
		newcreature.SetPhysics(PHYS_Falling);
	return true;
}

Naked_Monster: It's working now!