Skip to main content

idTargetableProxyHandler & idTarget_SmartAIProxy

The idTargetableProxyHandler entity defines the render model and proxy list for Meathook Nodes.

The idTarget_SmartAIProxy entity defines the grapple position for Meathook Nodes.

Requires assets from a TAG2 map (e5m1_spear, e5m2_earth, e5m3_hell, e5m4_boss).

idTargetableProxyHandler

entity {
	entityDef meathook_node_handler_1 {
	inherit = "target/proxy_handler";
	class = "idTargetableProxyHandler";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		cooldownDuration = 5000; // defines the cooldown; scrubs set this to 0
		connectSound = "play_meat_hook_lock_in";
		ambientLoopSound = "play_meathook_sphere_amb_loop";
		oneSidedActiveModel = "art/kit/gameplay/meathook_traversal_a.lwo";
		oneSidedInactiveModel = "art/kit/gameplay/meathook_traversal_b.lwo";
		allSidedActiveModel = "art/kit/gameplay/meathook_traversal_c.lwo";
		allSidedInactiveModel = "art/kit/gameplay/meathook_traversal_d.lwo";
		oneSidedActiveFXModel = "art/kit/gameplay/meathook_traversal_a_rings.lwo";
		oneSidedInactiveFXModel = "art/kit/gameplay/meathook_traversal_b_rings.lwo";
		allSidedActiveFXModel = "art/kit/gameplay/meathook_traversal_c_rings.lwo";
		allSidedInactiveFXModel = "art/kit/gameplay/meathook_traversal_d_rings.lwo";
		renderModelInfo = {
			model = "art/kit/gameplay/meatHook_traversal_placeholder.lwo";
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
		clipModelInfo = {
			clipModelName = "maps/prefabs/gameplay/meathook_target/target_proxy_handler_2";
		}
		proxyList = {
			num = 1;
			item[0] = {
				proxyEntity = "meathook_node_1"; // the idTarget_SmartAIProxy entity
				proxyTagName = "meathook_node_handler_1"; // this entity
			}
		}
		isOmnidirectional = true; // setting this to true makes the node appear on both sides
		spawnPosition = { // be sure to change the spawn position
			x = 1;
			y = 1;
			z = 1;
		}
		spawnOrientation = {
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 1;
					y = 0;
					z = 0;
				}
			}
		}
	}
}
}

idTarget_SmartAIProxy

entity {
	entityDef meathook_node_1 {
	inherit = "target/ai_proxy_meathook";
	class = "idTarget_SmartAIProxy";
	expandInheritance = false;
	poolCount = 0;
	poolGranularity = 2;
	networkReplicated = false;
	disableAIPooling = false;
	edit = {
		flags = {
			noFlood = true;
		}
		targetingDecl = "target_aiproxy_meathook";
		distanceOverride = 25; // how far the Meathook connection is
		renderModelInfo = {
			scale = {
				x = 1;
				y = 1;
				z = 1;
			}
		}
		spawnPosition = { // make this identical to the idTargetableProxyHandler entity
			x = 1;
			y = 1;
			z = 1;
		}
		spawnOrientation = {
			mat = {
				mat[0] = {
					x = 1;
					y = 0;
					z = 0;
				}
				mat[1] = {
					x = 1;
					y = 0;
					z = 0;
				}
			}
		}
	}
}
}