Chainsaw Pickups
Info
Chainsaw fuel pickups cannot be picked-up after a client has already picked-up 2 of them in the same map.
This method will give ALL Slayers +1 fuel pickup when one Slayer tries to pickup a fuel canister.
idDynamicEntity
entity {
entityDef coop_pickup_ammo_gas_1_fake {
inherit = "func/dynamic";
class = "idDynamicEntity"; // This is the fuel canister model
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Be sure to set the spawn position
x = -11.11;
y = -11.11;
z = -11.11;
}
spawnOrientation = { // Be sure to set the spawn orientation
mat = {
mat[0] = {
x = -1;
y = 0;
z = 0;
}
mat[1] = {
x = 0;
y = -1;
z = 0;
}
}
}
renderModelInfo = {
model = "art/pickups/ammo/ammo_chainsaw_01.lwo";
contributesToLightProbeGen = false;
ignoreDesaturate = true;
emissiveScale = 0.2;
scale = {
x = 2;
y = 2;
z = 2;
}
}
clipModelInfo = {
type = "CLIPMODEL_NONE";
}
dormancy = {
canBecomeDormant = true;
}
}
}
}
idTrigger
entity {
entityDef coop_pickup_ammo_gas_1_trigger {
inherit = "trigger/trigger";
class = "idTrigger";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
spawnPosition = { // Set the spawn position to same as the idDynamicEntity
x = -11.11;
y = -11.11;
z = -11.11;
}
renderModelInfo = {
model = NULL;
}
clipModelInfo = {
type = "CLIPMODEL_BOX";
size = {
x = 2;
y = 2;
z = 2;
}
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake_timeline"; // Targets the removal or respawn timeline
}
playerCanActivate = true;
clientCanActivate = true;
triggerForAllClients = true;
triggerOnEnter = true;
triggerOnce = true; // Set to false for respawning pickup
wait = 0; // Add a wait timer for respawning pickup
}
}
}
Global SFX / Give Fuel
A separate relay entity must exist once to activate the sound effect & give fuel ammo command.
entity {
entityDef multiplayer_chainsaw_refill_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 2;
item[0] = "multiplayer_chainsaw_refill"; // Ammo refill
item[1] = "multiplayer_chainsaw_refill_sfx"; // Sound effect
}
repeat = true; // Must be true
}
}
}
entity {
entityDef multiplayer_chainsaw_refill_sfx {
inherit = "sound/soundentity";
class = "idSoundEntity";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
temporarySoundEvent = true;
spawnPosition = { // The spawn position does not matter
x = 1;
y = 1;
z = 1;
}
soundOcclusionBypass = true;
startEvents = {
num = 1;
item[0] = "play_pickup_ammo_chainsaw";
}
stopEvents = {
num = 1;
item[0] = "play_pickup_ammo_chainsaw";
}
}
}
}
entity {
entityDef multiplayer_chainsaw_refill {
class = "idTarget_Command";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false;
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
commandText = "give ammo/sharedammopool/fuel"; // Be sure to set the ammo count to 1 for this decl
spawnPosition = { // The spawn position does not matter
x = 1;
y = 1;
z = 1;
}
}
}
}
Removal Timeline / Relay
entity {
entityDef coop_pickup_ammo_gas_1_fake_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true; // Must be true
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "coop_pickup_ammo_gas_1_fake_remove"; // Remove relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "multiplayer_chainsaw_refill_relay"; // SFX & give fuel relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef coop_pickup_ammo_gas_1_fake_remove {
inherit = "target/remove";
class = "idTarget_Remove";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake"; // Removes the chainsaw canister model
}
}
}
}
Respawn Timeline / Relay
entity {
entityDef coop_pickup_ammo_gas_1_fake_timeline {
inherit = "target/timeline";
class = "idTarget_Timeline";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = true; // Must be true
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
componentTimeLine = {
entityEvents = {
num = 2;
item[0] = {
entity = "coop_pickup_ammo_gas_1_fake_relay"; // Respawn relay
events = {
num = 2;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
item[1] = {
eventTime = 30000; // Show fuel cansiter render model after 30 seconds
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
item[1] = {
entity = "multiplayer_chainsaw_refill_fuck_you_relay"; // SFX & give fuel relay
events = {
num = 1;
item[0] = {
eventTime = 100;
eventCall = {
eventDef = "activate";
args = {
num = 1;
item[0] = {
entity = "";
}
}
}
}
}
}
}
}
allowClientsToStart = true;
renderModelInfo = {
scale = {
x = 1;
y = 1;
z = 1;
}
}
}
}
}
entity {
entityDef coop_pickup_ammo_gas_1_fake_relay {
inherit = "target/relay";
class = "idTarget_Count";
expandInheritance = false;
poolCount = 0;
poolGranularity = 2;
networkReplicated = false; // Must be false
disableAIPooling = false;
edit = {
flags = {
noFlood = true;
}
networkSerializeTransforms = false;
count = 1;
spawnPosition = {
x = 1;
y = 1;
z = 1;
}
targets = {
num = 1;
item[0] = "coop_pickup_ammo_gas_1_fake"; // Show/Hide fuel canister render model
}
repeat = true; // Must be true
}
}
}
No Comments