idTarget_Spawn
An entity to spawn other entities. Primarily used for idAI2 entities.
2016
entity {
entityDef example_target_spawn_1 {
inherit = "target/spawn";
class = "idTarget_Spawn";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
edit = {
"idEntity::entityFlags_t" flags = {
"bool" noFlood = true;
}
spawnEditable = {
overwriteTraversalFlags = true; // if set to true, use traversalClassFlags to overwrite the ai's flags
traversalClassFlags = "CLASS_A";
spawnAt = ""; // idEntity; the entity (demon) spawned by this spawn target will spawn at the listed entity.
copyTargets = true; // // if true the targeted entity's target list will be copied to the spawned entity
additionalTargets = {
num = 0;
item[0] = ""; // idEntity
}
spawnAnim = ""; // aiStateOverride must be set to AIOVERRIDE_PLAY_ENTRANCE_ANIMATION in order to use spawnAnim
aiStateOverride = "AIOVERRIDE_TELEPORT"; // aiStateOverride_t
}
spawnConditions = { // Inherited from idTarget_Spawn_Parent's idSpawnConditions
maxCount = 0; // maximum number of entities (demons) that this spawn target will spawn
reuseDelaySec = 0; // delay in seconds, between uses
doBoundsTest = false;
boundsTestType = "BOUNDSTEST_NONE"; // boundsTest_t
fovCheck = 0; // Whether the spawn target is (not) in the player's FOV, in degrees. Use positive values for within, and negative values for outside of
minDistance = 0; // The player cannot be closer than the specified distance to the spawn target.
maxDistance = 0; // The player cannot be further than the specified distance to the spawn target.
neighborSpawnerDistance = -1;
LOS_Test = "LOS_NONE"; // targetSpawn_LOSTest; to be combined with an FOV test. LOS_NONE no test, LOS_TRUE must be in LOS, LOS_FALSE must not be in LOS
playerToTest = "PLAYER_SP"; // which player to test for this spawn target; leave as is for the primary player
conditionProxy = ""; // idInfo_SpawnConditionProxy; entity at location to do LOS, FOV, and distance checks
}
spawnPosition = {
x = 0;
y = 0;
z = 0;
}
spawnOrientation = { // 0 0 0
mat = {
mat[0] = {
x = 1;
y = 0;
z = -0;
}
mat[1] = {
x = 0;
y = 1;
z = 0;
}
mat[2] = {
x = 0;
y = 0;
z = 1;
}
}
}
entityDefs = { // entity list to be spawned by the spawn target
num = 1;
item[0] = {
name = "example_ai_imp_1";
}
}
targets = { // target list to be spawned by the spawn target; this can be excluded/left empty if targetSpawnParent is set, it will draw targets from there instead
num = 0;
item[0] = "";
}
targetSpawnParent = "example_spawn_parent_1"; // idTarget_Spawn_Parent
}
}
}
It should be noted that most of these parameters can be excluded unless needed. An idTarget_Spawn can be simplified down to this, as an example, if all the player wishes to do is be able to spawn in demons with the teleport anim/fx and no other frills.
entity {
entityDef game_target_spawn_mod_1 {
inherit = "target/spawn";
class = "idTarget_Spawn";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
edit = {
"idEntity::entityFlags_t" flags = {
"bool" noFlood = true;
}
spawnEditable = {
traversalClassFlags = "CLASS_A";
aiStateOverride = "AIOVERRIDE_TELEPORT";
}
spawnPosition = {
x = 8717;
y = 8363;
z = 6633;
}
entityDefs = {
num = 1;
item[0] = {
name = "mod_ai_imp_1";
}
}
targetSpawnParent = "mod_master_spawn_parent";
}
}
}
Eternal
entity {
entityDef example_target_spawn {
inherit = "target/spawn";
class = "idTarget_Spawn";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
spawnConditions = {
maxCount = 0;
reuseDelaySec = 0;
doBoundsTest = false;
boundsTestType = "BOUNDSTEST_NONE";
fovCheck = 0;
minDistance = 0;
maxDistance = 0;
neighborSpawnerDistance = -1;
LOS_Test = "LOS_NONE";
playerToTest = "PLAYER_SP";
conditionProxy = "";
}
spawnEditableShared = {
groupName = "";
deathTrigger = "";
coverRadius = 0;
maxEnemyCoverDistance = 0;
}
entityDefs = {
num = 0;
}
conductorEntityAIType = "SPAWN_AI_TYPE_ANY";
initialEntityDefs = {
num = 0;
}
spawnEditable = {
spawnAt = "";
copyTargets = false;
additionalTargets = {
num = 0;
}
overwriteTraversalFlags = true;
traversalClassFlags = "CLASS_A";
combatHintClass = "CLASS_ALL";
spawnAnim = "";
aiStateOverride = "AIOVERRIDE_TELEPORT";
initialTargetOverride = "";
}
portal = "";
targetSpawnParent = "example_spawn_parent";
disablePooling = false;
spawnPosition = {
x = 209.669998;
y = -10.990000;
z = -23.95;
}
}
}
}
Similarly, a spawn target can be simplified to the following example.
entity {
entityDef ai_target_spawn_mod_1 {
inherit = "target/spawn";
class = "idTarget_Spawn";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
entityDefs = {
num = 1;
item[0] = {
name = "example_ai_gargoyle_1";
}
}
targetSpawnParent = "mod_master_spawn_parent";
spawnEditable = {
overwriteTraversalFlags = true;
traversalClassFlags = "CLASS_A";
combatHintClass = "CLASS_ALL";
aiStateOverride = "AIOVERRIDE_TELEPORT";
}
spawnPosition = {
x = 209.669998;
y = -10.990000;
z = -23.95;
}
}
}
}