From 4c168bd6510dadb3a480fa5be7a5708c7211c2eb Mon Sep 17 00:00:00 2001 From: zaCade Date: Sat, 4 Aug 2018 17:30:59 +0200 Subject: [PATCH] ItemSpawn: balrog, once again :D --- ItemSpawn/scripting/ItemSpawn.sp | 1659 ++----------------------- ItemSpawn/scripting/ItemSpawn2.sp | 205 ---- ItemSpawn/scripting/ItemSpawn_Old.sp | 1660 ++++++++++++++++++++++++++ ItemSpawn/scripting/items/balrog.inc | 100 +- 4 files changed, 1809 insertions(+), 1815 deletions(-) delete mode 100644 ItemSpawn/scripting/ItemSpawn2.sp create mode 100644 ItemSpawn/scripting/ItemSpawn_Old.sp diff --git a/ItemSpawn/scripting/ItemSpawn.sp b/ItemSpawn/scripting/ItemSpawn.sp index 3a255964..4a09e86b 100644 --- a/ItemSpawn/scripting/ItemSpawn.sp +++ b/ItemSpawn/scripting/ItemSpawn.sp @@ -1,13 +1,18 @@ +#pragma newdecls required + #include #include #include #pragma semicolon 1 -#pragma newdecls required - -int g_iCounter = 0; int g_iConsole; +int g_iCounter = 0; + +#include "items\balrog.inc" +#include "items\doghuman.inc" +#include "items\tnt.inc" +#include "items\vortigaunt.inc" //---------------------------------------------------------------------------------------------------- // Purpose: @@ -27,10 +32,11 @@ public Plugin myinfo = public void OnPluginStart() { HookEvent("round_start", OnRoundStart, EventHookMode_Post); - RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_KICK); - RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_KICK); + RegAdminCmd("sm_tnt", Command_TNT, ADMFLAG_KICK); + RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_KICK); RegAdminCmd("sm_humandog", Command_HumanDog, ADMFLAG_KICK); + RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_KICK); } //---------------------------------------------------------------------------------------------------- @@ -38,12 +44,14 @@ public void OnPluginStart() //---------------------------------------------------------------------------------------------------- public void OnMapStart() { + // Physbox PrecacheModel("models/props/cs_militia/crate_extrasmallmill.mdl"); // Vortigaunt PrecacheModel("models/vortigaunt_slave.mdl"); // Balrog + PrecacheModel("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx80.vtx"); AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx90.vtx"); AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); @@ -58,10 +66,10 @@ public void OnMapStart() AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_blade.vmt"); AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_bump.vtf"); AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_wings.vmt"); - PrecacheModel("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); AddFileToDownloadsTable("sound/unloze/balrog_scream.mp3"); // TNT + PrecacheModel("models/props/furnitures/humans/barrel01b.mdl"); AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx80.vtx"); AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx90.vtx"); AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.mdl"); @@ -72,9 +80,9 @@ public void OnMapStart() AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b.vtf"); AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_broken.vmt"); AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_no_metal.vtf"); - PrecacheModel("models/props/furnitures/humans/barrel01b.mdl"); // Dog + PrecacheModel("models/player/pil/re1/dog/dog_pil.mdl"); AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx80.vtx"); AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx90.vtx"); AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.mdl"); @@ -83,8 +91,9 @@ public void OnMapStart() AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.vvd"); AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vmt"); AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vtf"); - PrecacheModel("models/player/pil/re1/dog/dog_pil.mdl"); + // Dog Poo + PrecacheModel("models/poo/curlygpoo.mdl"); AddFileToDownloadsTable("models/poo/curlygpoo.dx80.vtx"); AddFileToDownloadsTable("models/poo/curlygpoo.dx90.vtx"); AddFileToDownloadsTable("models/poo/curlygpoo.mdl"); @@ -93,8 +102,72 @@ public void OnMapStart() AddFileToDownloadsTable("models/poo/curlygpoo.vvd"); AddFileToDownloadsTable("materials/models/poo/curlypoo.vmt"); AddFileToDownloadsTable("materials/models/poo/curlypoo.vtf"); - PrecacheModel("models/poo/curlygpoo.mdl"); +} +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock int CreateEntityAtOrigin(const char[] classname, const float origin[3]) +{ + int entity = INVALID_ENT_REFERENCE; + if ((entity = CreateEntityByName(classname)) != INVALID_ENT_REFERENCE) + DispatchKeyValueVector(entity, "origin", origin); + + return entity; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock bool DispatchKeyFormat(int entity, const char[] key, const char[] value, any ...) +{ + char buffer[1024]; + VFormat(buffer, sizeof(buffer), value, 4); + + return DispatchKeyValue(entity, key, buffer); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void SpawnAndActivate(int entity) +{ + DispatchSpawn(entity); + ActivateEntity(entity); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void ParentToEntity(int entity, int parent) +{ + SetVariantString("!activator"); + AcceptEntityInput(entity, "SetParent", parent, parent); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void SetEntityBBox(int entity, const float mins[3], const float maxs[3]) +{ + SetEntPropVector(entity, Prop_Send, "m_vecMins", mins); + SetEntPropVector(entity, Prop_Send, "m_vecMaxs", maxs); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void SetEntitySolid(int entity) +{ + SetEntProp(entity, Prop_Send, "m_nSolidType", 3); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +stock void SetEntityNodraw(int entity) +{ + SetEntProp(entity, Prop_Send, "m_fEffects", 32); } //---------------------------------------------------------------------------------------------------- @@ -104,1557 +177,27 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) { g_iCounter = 0; - // point_servercommand - g_iConsole = CreateEntityByName("point_servercommand"); - DispatchKeyValue(g_iConsole, "targetname", "item_spawn_console"); - DispatchSpawn(g_iConsole); - ActivateEntity(g_iConsole); + // player_weaponstrip. + int iPlayerStrip = CreateEntityByName("player_weaponstrip"); + DispatchKeyFormat(iPlayerStrip, "targetname", "item_spawn_weaponstrip"); + SpawnAndActivate(iPlayerStrip); - // Human filter + // player_speedmod. + int iPlayerSpeed = CreateEntityByName("player_speedmod"); + DispatchKeyFormat(iPlayerSpeed, "targetname", "item_spawn_speedmod"); + SpawnAndActivate(iPlayerSpeed); + + // filter_activator_team humans. int iHumanFilter = CreateEntityByName("filter_activator_team"); - DispatchKeyValue(iHumanFilter, "targetname", "item_spawn_human_filter"); - DispatchKeyValue(iHumanFilter, "Negated", "0"); - DispatchKeyValue(iHumanFilter, "filterteam", "3"); - DispatchSpawn(iHumanFilter); - ActivateEntity(iHumanFilter); + DispatchKeyFormat(iHumanFilter, "targetname", "item_spawn_human_filter"); + DispatchKeyFormat(iHumanFilter, "Negated", "0"); + DispatchKeyFormat(iHumanFilter, "filterteam", "3"); + SpawnAndActivate(iHumanFilter); - // Zombie filter + // filter_activator_team zombies. int iZombieFilter = CreateEntityByName("filter_activator_team"); - DispatchKeyValue(iZombieFilter, "targetname", "item_spawn_zombie_filter"); - DispatchKeyValue(iZombieFilter, "Negated", "0"); - DispatchKeyValue(iZombieFilter, "filterteam", "2"); - DispatchSpawn(iZombieFilter); - ActivateEntity(iZombieFilter); - - // player_weaponstrip - int iWeaponStrip = CreateEntityByName("player_weaponstrip"); - DispatchKeyValue(iWeaponStrip, "targetname", "item_spawn_weaponstrip"); - DispatchSpawn(iWeaponStrip); - ActivateEntity(iWeaponStrip); - - // speedmod - int iSpeedMod = CreateEntityByName("player_speedmod"); - DispatchKeyValue(iSpeedMod, "targetname", "item_spawn_speed"); - DispatchSpawn(iSpeedMod); - ActivateEntity(iSpeedMod); - + DispatchKeyFormat(iZombieFilter, "targetname", "item_spawn_zombie_filter"); + DispatchKeyFormat(iZombieFilter, "Negated", "0"); + DispatchKeyFormat(iZombieFilter, "filterteam", "2"); + SpawnAndActivate(iZombieFilter); } - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Action Command_Vortigaunt(int client, int argc) -{ - float fOrigin[3]; - - if (argc < 1) - { - GetClientEyePosition(client, fOrigin); - SpawnVortigaunt(fOrigin); - LogAction(client, -1, "\"%L\" spawned Vortigaunt at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); - return Plugin_Handled; - } - - char sArgs[64]; - char sTargetName[MAX_TARGET_LENGTH]; - int iTargets[MAXPLAYERS]; - int iTargetCount; - bool bIsML; - - GetCmdArg(1, sArgs, sizeof(sArgs)); - - if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) - { - ReplyToTargetError(client, iTargetCount); - return Plugin_Handled; - } - - for (int i = 0; i < iTargetCount; i++) - { - if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) - { - GetClientEyePosition(iTargets[i], fOrigin); - SpawnVortigaunt(fOrigin); - LogAction(client, -1, "\"%L\" gave Vortigaunt to \"%L\".", client, iTargets[i]); - } - } - return Plugin_Handled; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Action Command_Balrog(int client, int argc) -{ - float fOrigin[3]; - - if (argc < 1) - { - GetClientEyePosition(client, fOrigin); - SpawnBalrog(fOrigin); - LogAction(client, -1, "\"%L\" spawned Balrog at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); - return Plugin_Handled; - } - - char sArgs[64]; - char sTargetName[MAX_TARGET_LENGTH]; - int iTargets[MAXPLAYERS]; - int iTargetCount; - bool bIsML; - - GetCmdArg(1, sArgs, sizeof(sArgs)); - - if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) - { - ReplyToTargetError(client, iTargetCount); - return Plugin_Handled; - } - - for (int i = 0; i < iTargetCount; i++) - { - if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) - { - GetClientEyePosition(iTargets[i], fOrigin); - SpawnBalrog(fOrigin); - LogAction(client, -1, "\"%L\" gave Balrog to \"%L\".", client, iTargets[i]); - } - } - return Plugin_Handled; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Action Command_TNT(int client, int argc) -{ - float fOrigin[3]; - - if (argc < 1) - { - GetClientEyePosition(client, fOrigin); - SpawnTNT(fOrigin); - LogAction(client, -1, "\"%L\" spawned TNT at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); - return Plugin_Handled; - } - - char sArgs[64]; - char sTargetName[MAX_TARGET_LENGTH]; - int iTargets[MAXPLAYERS]; - int iTargetCount; - bool bIsML; - - GetCmdArg(1, sArgs, sizeof(sArgs)); - - if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) - { - ReplyToTargetError(client, iTargetCount); - return Plugin_Handled; - } - - for (int i = 0; i < iTargetCount; i++) - { - if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) - { - GetClientEyePosition(iTargets[i], fOrigin); - SpawnTNT(fOrigin); - LogAction(client, -1, "\"%L\" gave TNT to \"%L\".", client, iTargets[i]); - } - } - return Plugin_Handled; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Action Command_HumanDog(int client, int argc) -{ - float fOrigin[3]; - - if (argc < 1) - { - GetClientEyePosition(client, fOrigin); - SpawnHumanDog(fOrigin); - LogAction(client, -1, "\"%L\" spawned Human Dog at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); - return Plugin_Handled; - } - - char sArgs[64]; - char sTargetName[MAX_TARGET_LENGTH]; - int iTargets[MAXPLAYERS]; - int iTargetCount; - bool bIsML; - - GetCmdArg(1, sArgs, sizeof(sArgs)); - - if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) - { - ReplyToTargetError(client, iTargetCount); - return Plugin_Handled; - } - - for (int i = 0; i < iTargetCount; i++) - { - if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientHuman(iTargets[i]))) - { - GetClientEyePosition(iTargets[i], fOrigin); - SpawnHumanDog(fOrigin); - LogAction(client, -1, "\"%L\" gave Human Dog to \"%L\".", client, iTargets[i]); - } - } - return Plugin_Handled; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void SpawnVortigaunt(float fOrigin[3]) -{ - char sBuffer[256]; - float fOriginTemp[3]; - - // Knife - int iKnife = CreateEntityByName("weapon_knife"); - Format(sBuffer, sizeof(sBuffer), "vort_knife_%d", g_iCounter); - DispatchKeyValue(iKnife, "targetname", sBuffer); - Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); - DispatchKeyValue(iKnife, "hammerid", sBuffer); - DispatchKeyValue(iKnife, "spawnflags", "1"); - DispatchKeyValue(iKnife, "angles", "0 0 0"); - DispatchKeyValueVector(iKnife, "origin", fOrigin); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); - Format(sBuffer, sizeof(sBuffer), "vort_knife_%d,AddOutput,renderfx 6,0.03,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_ui_%d,Activate,,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - DispatchSpawn(iKnife); - ActivateEntity(iKnife); - HookSingleEntityOutput(iKnife, "OnPlayerPickup", VortigauntPickup, true); - - // Model - int iModel = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "vort_model_%d", g_iCounter); - DispatchKeyValue(iModel, "targetname", sBuffer); - DispatchKeyValue(iModel, "model", "models/vortigaunt_slave.mdl"); - DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); - DispatchKeyValue(iModel, "DefaultAnim", "Run_all"); - fOriginTemp[0] = fOrigin[0] + 7.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] - 34.24; - DispatchKeyValueVector(iModel, "origin", fOriginTemp); - DispatchSpawn(iModel); - ActivateEntity(iModel); - SetVariantString("!activator"); - AcceptEntityInput(iModel, "SetParent", iKnife); - - // pickup trigger_once - int iTrigger = CreateEntityByName("trigger_once"); - Format(sBuffer, sizeof(sBuffer), "vort_trigger_%d", g_iCounter); - DispatchKeyValue(iTrigger, "targetname", sBuffer); - DispatchKeyValue(iTrigger, "spawnflags", "1"); - DispatchKeyValue(iTrigger, "startdisabled", "1"); - DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); - DispatchKeyValueVector(iTrigger, "origin", fOrigin); - DispatchSpawn(iTrigger); - ActivateEntity(iTrigger); - SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds[3] = {-10.0, -10.0, -36.0}; - float fMaxbounds[3] = {10.0, 10.0, 36.0}; - SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); - SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); - SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); - int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); - enteffects |= 32; - SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "SetParent", iKnife); - - // Sound - int iSound = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "vort_sound_%d", g_iCounter); - DispatchKeyValue(iSound, "targetname", sBuffer); - DispatchKeyValue(iSound, "spawnflags", "48"); - DispatchKeyValue(iSound, "radius", "2250"); - Format(sBuffer, sizeof(sBuffer), "vort_knife_%d", g_iCounter); - DispatchKeyValue(iSound, "SourceEntityName", sBuffer); - DispatchKeyValue(iSound, "message", "ambient/energy/zap9.wav"); - DispatchKeyValue(iSound, "volume", "10"); - DispatchKeyValue(iSound, "health", "10"); - DispatchKeyValue(iSound, "pitch", "100"); - DispatchKeyValue(iSound, "pitchstart", "100"); - DispatchSpawn(iSound); - ActivateEntity(iSound); - SetVariantString("!activator"); - AcceptEntityInput(iSound, "SetParent", iKnife); - - // Push - int iPush = CreateEntityByName("trigger_push"); - Format(sBuffer, sizeof(sBuffer), "vort_push_%d", g_iCounter); - DispatchKeyValue(iPush, "targetname", sBuffer); - DispatchKeyValue(iPush, "spawnflags", "1"); - DispatchKeyValue(iPush, "startdisabled", "1"); - DispatchKeyValue(iPush, "speed", "1800"); - DispatchKeyValue(iPush, "pushdir", "0 180 0"); - DispatchKeyValue(iPush, "filtername", "item_spawn_human_filter"); - fOriginTemp[0] = fOrigin[0] + 899.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] - 8.0; - DispatchKeyValueVector(iPush, "origin", fOriginTemp); - DispatchSpawn(iPush); - ActivateEntity(iPush); - SetEntityModel(iPush, "models/vortigaunt_slave.mdl"); - float fMinbounds2[3] = {-852.0, -16.0, -9.0}; - float fMaxbounds2[3] = {852.0, 16.0, 9.0}; - SetEntPropVector(iPush, Prop_Send, "m_vecMins", fMinbounds2); - SetEntPropVector(iPush, Prop_Send, "m_vecMaxs", fMaxbounds2); - SetEntProp(iPush, Prop_Send, "m_nSolidType", 3); - int enteffects2 = GetEntProp(iPush, Prop_Send, "m_fEffects"); - enteffects2 |= 32; - SetEntProp(iPush, Prop_Send, "m_fEffects", enteffects2); - SetVariantString("!activator"); - AcceptEntityInput(iPush, "SetParent", iKnife); - - // Relay - int iRelay = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "vort_relay_%d", g_iCounter); - DispatchKeyValueVector(iRelay, "origin", fOrigin); - DispatchKeyValue(iRelay, "targetname", sBuffer); - DispatchKeyValue(iRelay, "spawnflags", "0"); - DispatchKeyValue(iRelay, "startdisabled", "0"); - DispatchKeyValue(iRelay, "OnTrigger", "!self,Disable,,0,-1"); - DispatchKeyValue(iRelay, "OnTrigger", "!self,Enable,,4,-1"); - Format(sBuffer, sizeof(sBuffer), "vort_model_%d,SetAnimation,zapattack1,0,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_push_%d,Enable,,1.5,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_push_%d,Disable,,2,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_sound_%d,PlaySound,,1.5,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_beam_%d,TurnOn,,1.5,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_beam_%d,TurnOff,,2.5,-1", g_iCounter); - DispatchKeyValue(iRelay, "OnTrigger", sBuffer); - DispatchKeyValue(iRelay, "OnTrigger", "item_spawn_speed,ModifySpeed,0,0,-1"); - DispatchKeyValue(iRelay, "OnTrigger", "item_spawn_speed,ModifySpeed,1.15,3.25,-1"); - DispatchSpawn(iRelay); - ActivateEntity(iRelay); - SetVariantString("!activator"); - AcceptEntityInput(iRelay, "SetParent", iKnife); - - // Game UI - int iUI = CreateEntityByName("game_ui"); - Format(sBuffer, sizeof(sBuffer), "vort_ui_%d", g_iCounter); - DispatchKeyValue(iUI, "targetname", sBuffer); - DispatchKeyValue(iUI, "spawnflags", "0"); - DispatchKeyValue(iUI, "FieldOfView", "-1.0"); - Format(sBuffer, sizeof(sBuffer), "vort_relay_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack2", sBuffer); - DispatchSpawn(iUI); - ActivateEntity(iUI); - SetVariantString("!activator"); - AcceptEntityInput(iUI, "SetParent", iKnife); - - // beam start - int iBeamStart = CreateEntityByName("prop_dynamic_override"); - Format(sBuffer, sizeof(sBuffer), "vort_beam_start_%d", g_iCounter); - DispatchKeyValue(iBeamStart, "targetname", sBuffer); - DispatchKeyValue(iBeamStart, "model", "models/props/cs_italy/bananna.mdl"); - DispatchKeyValue(iBeamStart, "disableshadows", "1"); - DispatchKeyValue(iBeamStart, "disablereceiveshadows", "1"); - DispatchKeyValue(iBeamStart, "DisableBoneFollowers", "1"); - DispatchKeyValue(iBeamStart, "rendermode", "10"); - fOriginTemp[0] = fOrigin[0] + 29.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] - 8.0; - DispatchKeyValueVector(iBeamStart, "origin", fOriginTemp); - DispatchSpawn(iBeamStart); - ActivateEntity(iBeamStart); - SetVariantString("!activator"); - AcceptEntityInput(iBeamStart, "SetParent", iKnife); - - // beam end - int iBeamEnd = CreateEntityByName("prop_dynamic_override"); - Format(sBuffer, sizeof(sBuffer), "vort_beam_end_%d", g_iCounter); - DispatchKeyValue(iBeamEnd, "targetname", sBuffer); - DispatchKeyValue(iBeamEnd, "model", "models/props/cs_italy/bananna.mdl"); - DispatchKeyValue(iBeamEnd, "disableshadows", "1"); - DispatchKeyValue(iBeamEnd, "disablereceiveshadows", "1"); - DispatchKeyValue(iBeamEnd, "DisableBoneFollowers", "1"); - DispatchKeyValue(iBeamEnd, "rendermode", "10"); - fOriginTemp[0] = fOrigin[0] + 1743.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] - 8.0; - DispatchKeyValueVector(iBeamEnd, "origin", fOriginTemp); - DispatchSpawn(iBeamEnd); - ActivateEntity(iBeamEnd); - SetVariantString("!activator"); - AcceptEntityInput(iBeamEnd, "SetParent", iKnife); - - // Beam - int iBeam = CreateEntityByName("env_beam"); - Format(sBuffer, sizeof(sBuffer), "vort_beam_%d", g_iCounter); - DispatchKeyValue(iBeam, "targetname", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_beam_start_%d", g_iCounter); - DispatchKeyValue(iBeam, "LightningStart", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_beam_end_%d", g_iCounter); - DispatchKeyValue(iBeam, "LightningEnd", sBuffer); - DispatchKeyValue(iBeam, "BoltWidth", "3"); - DispatchKeyValue(iBeam, "NoiseAmplitude", "1"); - DispatchKeyValue(iBeam, "decalname", "Bigshot"); - DispatchKeyValue(iBeam, "framerate", "0"); - DispatchKeyValue(iBeam, "framestart", "0"); - DispatchKeyValue(iBeam, "life", "1"); - DispatchKeyValue(iBeam, "spawnflags", "48"); - DispatchKeyValue(iBeam, "TouchType", "1"); - DispatchKeyValue(iBeam, "rendercolor", "0 200 0"); - DispatchKeyValue(iBeam, "texture", "sprites/laserbeam.spr"); - DispatchSpawn(iBeam); - SetVariantString("!activator"); - AcceptEntityInput(iBeam, "SetParent", iKnife); - - // enable pickup trigger - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "Enable"); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void SpawnBalrog(float fOrigin[3]) -{ - char sBuffer[256]; - float fOriginTemp[3]; - - // Knife - int iKnife = CreateEntityByName("weapon_knife"); - Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); - DispatchKeyValue(iKnife, "targetname", sBuffer); - Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); - DispatchKeyValue(iKnife, "hammerid", sBuffer); - DispatchKeyValue(iKnife, "spawnflags", "1"); - DispatchKeyValue(iKnife, "angles", "0 0 0"); - DispatchKeyValueVector(iKnife, "origin", fOrigin); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); - Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d,AddOutput,renderfx 6,0.03,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - DispatchKeyValue(iKnife, "OnPlayerPickup", "item_spawn_speed,ModifySpeed,0.8,0,-1"); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_ui_%d,Activate,,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d,Enable,,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,rendermode 10,0,-1"); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,health 2000000000,0,-1"); - DispatchKeyValue(iKnife, "OnUser3", "!self,FireUser3,,5,-1"); - //DispatchKeyValue(iKnife, "OnUser3", "!activator,AddOutput,gravity 2,0,-1"); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!self,FireUser3,,0,-1"); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,health 25000,15,-1"); - DispatchSpawn(iKnife); - ActivateEntity(iKnife); - HookSingleEntityOutput(iKnife, "OnPlayerPickup", BalrogPickup, true); - - // Model - int iModel = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d", g_iCounter); - DispatchKeyValue(iModel, "targetname", sBuffer); - DispatchKeyValue(iModel, "model", "models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); - DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); - DispatchKeyValue(iModel, "DefaultAnim", "crouch_walk_lower"); - DispatchKeyValue(iModel, "angles", "0 2 0"); - DispatchKeyValue(iModel, "solid", "0"); - fOriginTemp[0] = fOrigin[0] + 4.5; - fOriginTemp[1] = fOrigin[1] + 1.26; - fOriginTemp[2] = fOrigin[2] - 28.9; - DispatchKeyValueVector(iModel, "origin", fOriginTemp); - DispatchSpawn(iModel); - ActivateEntity(iModel); - SetVariantString("!activator"); - AcceptEntityInput(iModel, "SetParent", iKnife); - - // pickup trigger_once - int iTrigger = CreateEntityByName("trigger_once"); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_%d", g_iCounter); - DispatchKeyValue(iTrigger, "targetname", sBuffer); - DispatchKeyValue(iTrigger, "spawnflags", "1"); - DispatchKeyValue(iTrigger, "startdisabled", "1"); - DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); - DispatchKeyValueVector(iTrigger, "origin", fOrigin); - DispatchSpawn(iTrigger); - ActivateEntity(iTrigger); - SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds[3] = {-10.0, -10.0, -36.0}; - float fMaxbounds[3] = {10.0, 10.0, 36.0}; - SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); - SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); - SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); - int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); - enteffects |= 32; - SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "SetParent", iKnife); - - // kill trigger_once - int iKillTrigger = CreateEntityByName("trigger_hurt"); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d", g_iCounter); - DispatchKeyValue(iKillTrigger, "targetname", sBuffer); - DispatchKeyValue(iKillTrigger, "spawnflags", "1"); - DispatchKeyValue(iKillTrigger, "startdisabled", "1"); - DispatchKeyValue(iKillTrigger, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iKillTrigger, "damagetype", "0"); - DispatchKeyValue(iKillTrigger, "damagemodel", "0"); - DispatchKeyValue(iKillTrigger, "damagecap", "20"); - DispatchKeyValue(iKillTrigger, "damage", "200000"); - DispatchKeyValueVector(iKillTrigger, "origin", fOrigin); - DispatchSpawn(iKillTrigger); - ActivateEntity(iKillTrigger); - SetEntityModel(iKillTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds4[3] = {-10.0, -10.0, -36.0}; - float fMaxbounds4[3] = {10.0, 10.0, 36.0}; - SetEntPropVector(iKillTrigger, Prop_Send, "m_vecMins", fMinbounds4); - SetEntPropVector(iKillTrigger, Prop_Send, "m_vecMaxs", fMaxbounds4); - SetEntProp(iKillTrigger, Prop_Send, "m_nSolidType", 3); - int enteffects4 = GetEntProp(iKillTrigger, Prop_Send, "m_fEffects"); - enteffects4 |= 32; - SetEntProp(iKillTrigger, Prop_Send, "m_fEffects", enteffects4); - SetVariantString("!activator"); - AcceptEntityInput(iKillTrigger, "SetParent", iKnife); - - // trigger_hurt walking - int iKillTriggerWalking = CreateEntityByName("trigger_hurt"); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d", g_iCounter); - DispatchKeyValue(iKillTriggerWalking, "targetname", sBuffer); - DispatchKeyValue(iKillTriggerWalking, "spawnflags", "9"); - DispatchKeyValue(iKillTriggerWalking, "startdisabled", "0"); - DispatchKeyValue(iKillTriggerWalking, "filtername", "item_spawn_human_filter"); - DispatchKeyValue(iKillTriggerWalking, "damagetype", "128"); - DispatchKeyValue(iKillTriggerWalking, "damagemodel", "0"); - DispatchKeyValue(iKillTriggerWalking, "damagecap", "20"); - DispatchKeyValue(iKillTriggerWalking, "damage", "190"); - fOriginTemp[0] = fOrigin[0] + 28.5; - fOriginTemp[1] = fOrigin[1] - 2.74; - fOriginTemp[2] = fOrigin[2] - 4.9; - DispatchKeyValueVector(iKillTriggerWalking, "origin", fOriginTemp); - DispatchSpawn(iKillTriggerWalking); - ActivateEntity(iKillTriggerWalking); - SetEntityModel(iKillTriggerWalking, "models/vortigaunt_slave.mdl"); - float fMinbounds5[3] = {-32.0, -72.0, -84.0}; - float fMaxbounds5[3] = {32.0, 72.0, 84.0}; - SetEntPropVector(iKillTriggerWalking, Prop_Send, "m_vecMins", fMinbounds5); - SetEntPropVector(iKillTriggerWalking, Prop_Send, "m_vecMaxs", fMaxbounds5); - SetEntProp(iKillTriggerWalking, Prop_Send, "m_nSolidType", 3); - int enteffects5 = GetEntProp(iKillTriggerWalking, Prop_Send, "m_fEffects"); - enteffects5 |= 32; - SetEntProp(iKillTriggerWalking, Prop_Send, "m_fEffects", enteffects5); - SetVariantString("!activator"); - AcceptEntityInput(iKillTriggerWalking, "SetParent", iKnife); - - // trigger roar 1 - int iTriggerRoar = CreateEntityByName("trigger_multiple"); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d", g_iCounter); - DispatchKeyValue(iTriggerRoar, "targetname", sBuffer); - DispatchKeyValue(iTriggerRoar, "spawnflags", "1"); - DispatchKeyValue(iTriggerRoar, "startdisabled", "1"); - DispatchKeyValue(iTriggerRoar, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iTriggerRoar, "wait", "1"); - DispatchKeyValue(iTriggerRoar, "OnStartTouch", "item_spawn_speed,ModifySpeed,0,0,-1"); - DispatchKeyValue(iTriggerRoar, "OnStartTouch", "item_spawn_speed,speed,ModifySpeed,0.8,3,-1"); - fOriginTemp[0] = fOrigin[0] + 5.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] - 0.0; - DispatchKeyValueVector(iTriggerRoar, "origin", fOriginTemp); - DispatchSpawn(iTriggerRoar); - ActivateEntity(iTriggerRoar); - SetEntityModel(iTriggerRoar, "models/vortigaunt_slave.mdl"); - float fMinbounds6[3] = {-0.5, -0.5, -36.0}; - float fMaxbounds6[3] = {0.5, 0.5, 36.0}; - SetEntPropVector(iTriggerRoar, Prop_Send, "m_vecMins", fMinbounds6); - SetEntPropVector(iTriggerRoar, Prop_Send, "m_vecMaxs", fMaxbounds6); - SetEntProp(iTriggerRoar, Prop_Send, "m_nSolidType", 3); - int enteffects6 = GetEntProp(iTriggerRoar, Prop_Send, "m_fEffects"); - enteffects6 |= 32; - SetEntProp(iTriggerRoar, Prop_Send, "m_fEffects", enteffects6); - SetVariantString("!activator"); - AcceptEntityInput(iTriggerRoar, "SetParent", iKnife); - - // trigger roar 2 - int iTriggerRoar2 = CreateEntityByName("trigger_multiple"); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d", g_iCounter); - DispatchKeyValue(iTriggerRoar2, "targetname", sBuffer); - DispatchKeyValue(iTriggerRoar2, "spawnflags", "1"); - DispatchKeyValue(iTriggerRoar2, "startdisabled", "1"); - DispatchKeyValue(iTriggerRoar2, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iTriggerRoar2, "wait", "1"); - DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,health 10000,0,-1"); - DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "item_spawn_speed,ModifySpeed,1.5,0,-1"); - DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "item_spawn_speed,ModifySpeed,1.0,10,-1"); - DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,color 255 0 0,0,-1"); - DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,color 255 255 255,10,-1"); - fOriginTemp[0] = fOrigin[0] - 15.5; - fOriginTemp[1] = fOrigin[1] + 5.0; - fOriginTemp[2] = fOrigin[2] + 31.0; - DispatchKeyValueVector(iTriggerRoar2, "origin", fOriginTemp); - DispatchSpawn(iTriggerRoar2); - ActivateEntity(iTriggerRoar2); - SetEntityModel(iTriggerRoar2, "models/vortigaunt_slave.mdl"); - float fMinbounds7[3] = {-736.0, -736.0, -560.0}; - float fMaxbounds7[3] = {736.0, 736.0, 560.0}; - SetEntPropVector(iTriggerRoar2, Prop_Send, "m_vecMins", fMinbounds7); - SetEntPropVector(iTriggerRoar2, Prop_Send, "m_vecMaxs", fMaxbounds7); - SetEntProp(iTriggerRoar2, Prop_Send, "m_nSolidType", 3); - int enteffects7 = GetEntProp(iTriggerRoar2, Prop_Send, "m_fEffects"); - enteffects7 |= 32; - SetEntProp(iTriggerRoar2, Prop_Send, "m_fEffects", enteffects7); - SetVariantString("!activator"); - AcceptEntityInput(iTriggerRoar2, "SetParent", iKnife); - - // trigger_hurt attack - int iKillTriggerAttack = CreateEntityByName("trigger_hurt"); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d", g_iCounter); - DispatchKeyValue(iKillTriggerAttack, "targetname", sBuffer); - DispatchKeyValue(iKillTriggerAttack, "spawnflags", "9"); - DispatchKeyValue(iKillTriggerAttack, "startdisabled", "1"); - DispatchKeyValue(iKillTriggerAttack, "filtername", "item_spawn_human_filter"); - DispatchKeyValue(iKillTriggerAttack, "damagetype", "128"); - DispatchKeyValue(iKillTriggerAttack, "damagemodel", "0"); - DispatchKeyValue(iKillTriggerAttack, "damagecap", "20"); - DispatchKeyValue(iKillTriggerAttack, "damage", "500"); - fOriginTemp[0] = fOrigin[0] + 360.5; - fOriginTemp[1] = fOrigin[1] - 58.74; - fOriginTemp[2] = fOrigin[2] + 35.6; - DispatchKeyValueVector(iKillTriggerAttack, "origin", fOriginTemp); - DispatchSpawn(iKillTriggerAttack); - ActivateEntity(iKillTriggerAttack); - SetEntityModel(iKillTriggerAttack, "models/vortigaunt_slave.mdl"); - float fMinbounds8[3] = {-152.0, -256.0, -71.5}; - float fMaxbounds8[3] = {152.0, 256.0, 71.5}; - SetEntPropVector(iKillTriggerAttack, Prop_Send, "m_vecMins", fMinbounds8); - SetEntPropVector(iKillTriggerAttack, Prop_Send, "m_vecMaxs", fMaxbounds8); - SetEntProp(iKillTriggerAttack, Prop_Send, "m_nSolidType", 3); - int enteffects8 = GetEntProp(iKillTriggerAttack, Prop_Send, "m_fEffects"); - enteffects8 |= 32; - SetEntProp(iKillTriggerAttack, Prop_Send, "m_fEffects", enteffects8); - SetVariantString("!activator"); - AcceptEntityInput(iKillTriggerAttack, "SetParent", iKnife); - - // Sound 1 - int iSound1 = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "balrog_sound1_%d", g_iCounter); - DispatchKeyValue(iSound1, "targetname", sBuffer); - DispatchKeyValue(iSound1, "spawnflags", "49"); - DispatchKeyValue(iSound1, "radius", "8250"); - Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); - DispatchKeyValue(iSound1, "SourceEntityName", sBuffer); - DispatchKeyValue(iSound1, "message", "unloze/balrog_scream.mp3"); - DispatchKeyValue(iSound1, "volume", "10"); - DispatchKeyValue(iSound1, "health", "10"); - DispatchKeyValue(iSound1, "pitch", "100"); - DispatchKeyValue(iSound1, "pitchstart", "100"); - DispatchSpawn(iSound1); - ActivateEntity(iSound1); - SetVariantString("!activator"); - AcceptEntityInput(iSound1, "SetParent", iKnife); - - // Sound 2 - int iSound2 = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "balrog_sound2_%d", g_iCounter); - DispatchKeyValue(iSound2, "targetname", sBuffer); - DispatchKeyValue(iSound2, "spawnflags", "48"); - DispatchKeyValue(iSound2, "radius", "8250"); - Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); - DispatchKeyValue(iSound2, "SourceEntityName", sBuffer); - DispatchKeyValue(iSound2, "message", "npc/strider/strider_step2.wav"); - DispatchKeyValue(iSound2, "volume", "10"); - DispatchKeyValue(iSound2, "health", "10"); - DispatchKeyValue(iSound2, "pitch", "100"); - DispatchKeyValue(iSound2, "pitchstart", "100"); - DispatchSpawn(iSound2); - ActivateEntity(iSound2); - SetVariantString("!activator"); - AcceptEntityInput(iSound2, "SetParent", iKnife); - - // Sound 3 - int iSound3 = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "balrog_sound3_%d", g_iCounter); - DispatchKeyValue(iSound3, "targetname", sBuffer); - DispatchKeyValue(iSound3, "spawnflags", "48"); - DispatchKeyValue(iSound3, "radius", "8250"); - Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); - DispatchKeyValue(iSound3, "SourceEntityName", sBuffer); - DispatchKeyValue(iSound3, "message", "npc/strider/strider_skewer1.wav"); - DispatchKeyValue(iSound3, "volume", "10"); - DispatchKeyValue(iSound3, "health", "10"); - DispatchKeyValue(iSound3, "pitch", "100"); - DispatchKeyValue(iSound3, "pitchstart", "100"); - DispatchSpawn(iSound3); - ActivateEntity(iSound3); - SetVariantString("!activator"); - AcceptEntityInput(iSound3, "SetParent", iKnife); - - // Timer - int iTimer = CreateEntityByName("logic_timer"); - Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d", g_iCounter); - DispatchKeyValue(iTimer, "targetname", sBuffer); - DispatchKeyValue(iTimer, "spawnflags", "0"); - DispatchKeyValue(iTimer, "startdisabled", "1"); - DispatchKeyValue(iTimer, "UseRandomTime", "0"); - DispatchKeyValue(iTimer, "RefireTime", "0.95"); - Format(sBuffer, sizeof(sBuffer), "balrog_sound2_%d,PlaySound,,0,-1", g_iCounter); - DispatchKeyValue(iTimer, "OnTimer", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iTimer, "OnTimer", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d,Enable,,0.1,-1", g_iCounter); - DispatchKeyValue(iTimer, "OnTimer", sBuffer); - DispatchSpawn(iTimer); - ActivateEntity(iTimer); - SetVariantString("!activator"); - AcceptEntityInput(iTimer, "SetParent", iKnife); - - // Roar - int iRoar = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d", g_iCounter); - DispatchKeyValue(iRoar, "targetname", sBuffer); - DispatchKeyValue(iRoar, "spawnflags", "0"); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d,Enable,,0,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d,Disable,,4,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_groar,0,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Enable,,0,-1", g_iCounter); - //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,3.05,-1", g_iCounter); - //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,0.1,-1", g_iCounter); - //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,3.01,-1", g_iCounter); - //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Enable,,4,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_sound1_%d,PlaySound,,1,-1", g_iCounter); - DispatchKeyValue(iRoar, "OnTrigger", sBuffer); - //DispatchKeyValue(iRoar, "OnTrigger", "!activator,AddOutput,gravity 2,0,-1"); - DispatchKeyValue(iRoar, "OnTrigger", "!self,Disable,,0,-1"); - DispatchKeyValue(iRoar, "OnTrigger", "!self,Enable,,25,-1"); - DispatchSpawn(iRoar); - ActivateEntity(iRoar); - SetVariantString("!activator"); - AcceptEntityInput(iRoar, "SetParent", iKnife); - - // Attack - int iAttack = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d", g_iCounter); - DispatchKeyValue(iAttack, "targetname", sBuffer); - DispatchKeyValue(iAttack, "spawnflags", "0"); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_sound3_%d,PlaySound,,1,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Enable,,0,-1", g_iCounter); - //DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,0.1,-1", g_iCounter); - //DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d,Enable,,1.75,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d,Disable,,2.2,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Enable,,4,-1", g_iCounter); - DispatchKeyValue(iAttack, "OnTrigger", sBuffer); - //DispatchKeyValue(iAttack, "OnTrigger", "!activator,AddOutput,gravity 2,0,-1"); - DispatchKeyValue(iAttack, "OnTrigger", "!self,Disable,,0,-1"); - DispatchKeyValue(iAttack, "OnTrigger", "!self,Enable,,4.1,-1"); - DispatchSpawn(iAttack); - ActivateEntity(iAttack); - SetVariantString("!activator"); - AcceptEntityInput(iAttack, "SetParent", iKnife); - - // Physbox - int iPhysbox = CreateEntityByName("func_physbox_multiplayer"); - Format(sBuffer, sizeof(sBuffer), "balrog_physbox_%d", g_iCounter); - DispatchKeyValue(iPhysbox, "targetname", sBuffer); - DispatchKeyValue(iPhysbox, "spawnflags", "574464"); - DispatchKeyValue(iPhysbox, "rendermode", "0"); - DispatchKeyValue(iPhysbox, "renderfx", "0"); - DispatchKeyValue(iPhysbox, "rendercolor", "255 255 255"); - DispatchKeyValue(iPhysbox, "renderamt", "255 255 255"); - DispatchKeyValue(iPhysbox, "propdata", "0"); - DispatchKeyValue(iPhysbox, "pressuredelay", "0"); - DispatchKeyValue(iPhysbox, "preferredcarryangles", "0 0 0"); - DispatchKeyValue(iPhysbox, "PerformanceMode", "0"); - DispatchKeyValue(iPhysbox, "notsolid", "0"); - DispatchKeyValue(iPhysbox, "nodamageforces", "0"); - DispatchKeyValue(iPhysbox, "material", "0"); - DispatchKeyValue(iPhysbox, "massScale", "0"); - DispatchKeyValue(iPhysbox, "health", "32500"); - DispatchKeyValue(iPhysbox, "gibdir", "0 0 0"); - DispatchKeyValue(iPhysbox, "forcetoenablemotion", "0"); - DispatchKeyValue(iPhysbox, "explosion", "0"); - DispatchKeyValue(iPhysbox, "ExplodeRadius", "0"); - DispatchKeyValue(iPhysbox, "explodemagnitude", "0"); - DispatchKeyValue(iPhysbox, "ExplodeDamage", "0"); - DispatchKeyValue(iPhysbox, "disableshadows", "1"); - DispatchKeyValue(iPhysbox, "disablereceiveshadows", "0"); - DispatchKeyValue(iPhysbox, "Damagetype", "0"); - DispatchKeyValue(iPhysbox, "damagetoenablemotion", "0"); - DispatchKeyValue(iPhysbox, "damagefilter", "item_spawn_human_filter"); - DispatchKeyValue(iPhysbox, "model", "models/props/cs_militia/crate_extrasmallmill.mdl"); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,EmitBlood,,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnDamaged", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,ClearParent,,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_death,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetDefaultAnimation,balrog_death_idle,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d,Enable,,1,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d,Disable,,2,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); - fOriginTemp[0] = fOrigin[0] + 44.0; - fOriginTemp[1] = fOrigin[1] - 18.74; - fOriginTemp[2] = fOrigin[2] + 126.89; - DispatchKeyValueVector(iPhysbox, "origin", fOriginTemp); - DispatchSpawn(iPhysbox); - ActivateEntity(iPhysbox); - float fMinbounds3[3] = {-124.0, -120.0, -188.2}; - float fMaxbounds3[3] = {124.0, 120.0, 188.2}; - SetEntPropVector(iPhysbox, Prop_Send, "m_vecMins", fMinbounds3); - SetEntPropVector(iPhysbox, Prop_Send, "m_vecMaxs", fMaxbounds3); - SetEntProp(iPhysbox, Prop_Send, "m_nSolidType", 3); - int enteffects3 = GetEntProp(iPhysbox, Prop_Send, "m_fEffects"); - enteffects3 |= 32; - SetEntProp(iPhysbox, Prop_Send, "m_fEffects", enteffects3); - SetVariantString("!activator"); - AcceptEntityInput(iPhysbox, "SetParent", iKnife); - HookSingleEntityOutput(iPhysbox, "OnBreak", BalrogKill, true); - - // Game UI - int iUI = CreateEntityByName("game_ui"); - Format(sBuffer, sizeof(sBuffer), "balrog_ui_%d", g_iCounter); - DispatchKeyValue(iUI, "targetname", sBuffer); - DispatchKeyValue(iUI, "spawnflags", "0"); - DispatchKeyValue(iUI, "FieldOfView", "-1.0"); - Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack", sBuffer); - Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack2", sBuffer); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0,-1"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.1,-1"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.2,-1"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.3,-1"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0.8,3.0,-1"); - DispatchKeyValue(iUI, "PressedAttack", "item_spawn_speed,ModifySpeed,0,0,-1"); - DispatchKeyValue(iUI, "PressedAttack", "item_spawn_speed,ModifySpeed,0.8,3.0,-1"); - DispatchSpawn(iUI); - ActivateEntity(iUI); - SetVariantString("!activator"); - AcceptEntityInput(iUI, "SetParent", iKnife); - - // enable pickup trigger - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "Enable"); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void SpawnTNT(float fOrigin[3]) -{ - char sBuffer[256]; - float fOriginTemp[3]; - - // Knife - int iKnife = CreateEntityByName("weapon_knife"); - Format(sBuffer, sizeof(sBuffer), "tnt_knife_%d", g_iCounter); - DispatchKeyValue(iKnife, "targetname", sBuffer); - Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); - DispatchKeyValue(iKnife, "hammerid", sBuffer); - DispatchKeyValue(iKnife, "spawnflags", "1"); - DispatchKeyValue(iKnife, "angles", "0 0 0"); - DispatchKeyValueVector(iKnife, "origin", fOrigin); - Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d,Activate,,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,0,1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - DispatchSpawn(iKnife); - ActivateEntity(iKnife); - HookSingleEntityOutput(iKnife, "OnPlayerPickup", TNTPickup, true); - - // Model - int iModel = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "tnt_model_%d", g_iCounter); - DispatchKeyValue(iModel, "targetname", sBuffer); - DispatchKeyValue(iModel, "model", "models/props/furnitures/humans/barrel01b.mdl"); - DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); - DispatchKeyValue(iModel, "angles", "0.432793 271.953 -12.4926"); - DispatchKeyValue(iModel, "solid", "0"); - DispatchKeyValue(iModel, "OnUser1", "!self,IgniteLifetime,0,0,-1"); - DispatchKeyValue(iModel, "OnUser1", "!self,FireUser1,,0.2,-1"); - fOriginTemp[0] = fOrigin[0] - 30.16; - fOriginTemp[1] = fOrigin[1] - 2.0; - fOriginTemp[2] = fOrigin[2] - 9.2; - DispatchKeyValueVector(iModel, "origin", fOriginTemp); - DispatchSpawn(iModel); - ActivateEntity(iModel); - SetVariantString("!activator"); - AcceptEntityInput(iModel, "SetParent", iKnife); - SetVariantString("9999999"); - AcceptEntityInput(iModel, "SetHealth"); - AcceptEntityInput(iModel, "FireUser1"); - - // pickup trigger_once - int iTrigger = CreateEntityByName("trigger_once"); - Format(sBuffer, sizeof(sBuffer), "tnt_trigger_%d", g_iCounter); - DispatchKeyValue(iTrigger, "targetname", sBuffer); - DispatchKeyValue(iTrigger, "spawnflags", "1"); - DispatchKeyValue(iTrigger, "startdisabled", "1"); - DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); - DispatchKeyValueVector(iTrigger, "origin", fOrigin); - DispatchSpawn(iTrigger); - ActivateEntity(iTrigger); - SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds[3] = {-10.0, -10.0, -36.0}; - float fMaxbounds[3] = {10.0, 10.0, 36.0}; - SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); - SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); - SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); - int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); - enteffects |= 32; - SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "SetParent", iKnife); - - // Sparks - int iSparksHolder = CreateEntityByName("env_spark"); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d", g_iCounter); - DispatchKeyValue(iSparksHolder, "targetname", sBuffer); - DispatchKeyValue(iSparksHolder, "TrailLength", "1"); - DispatchKeyValue(iSparksHolder, "spawnflags", "0"); - DispatchKeyValue(iSparksHolder, "angles", "0 0 0"); - DispatchKeyValue(iSparksHolder, "MaxDelay", "0"); - DispatchKeyValue(iSparksHolder, "Magnitude", "1"); - fOriginTemp[0] = fOrigin[0] - 22.0; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] + 36.0; - DispatchKeyValueVector(iSparksHolder, "origin", fOriginTemp); - DispatchSpawn(iSparksHolder); - ActivateEntity(iSparksHolder); - SetVariantString("!activator"); - AcceptEntityInput(iSparksHolder, "SetParent", iKnife); - - // Sprite - int iSprite = CreateEntityByName("env_sprite"); - Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d", g_iCounter); - DispatchKeyValue(iSprite, "targetname", sBuffer); - DispatchKeyValue(iSprite, "spawnflags", "0"); - DispatchKeyValue(iSprite, "spawnflags", "0"); - DispatchKeyValue(iSprite, "scale", "0.1"); - DispatchKeyValue(iSprite, "rendermode", "5"); - DispatchKeyValue(iSprite, "renderfx", "0"); - DispatchKeyValue(iSprite, "model", "sprites/640_train.vmt"); - fOriginTemp[0] = fOrigin[0] + 31.0; - fOriginTemp[1] = fOrigin[1] + 1.73; - fOriginTemp[2] = fOrigin[2] + 4.3; - DispatchKeyValueVector(iSprite, "origin", fOriginTemp); - DispatchSpawn(iSprite); - ActivateEntity(iSprite); - SetVariantString("!activator"); - AcceptEntityInput(iSprite, "SetParent", iKnife); - - // Push - int iPush = CreateEntityByName("trigger_push"); - Format(sBuffer, sizeof(sBuffer), "tnt_push_%d", g_iCounter); - DispatchKeyValue(iPush, "targetname", sBuffer); - DispatchKeyValue(iPush, "spawnflags", "8"); - DispatchKeyValue(iPush, "startdisabled", "1"); - DispatchKeyValue(iPush, "speed", "18000"); - DispatchKeyValue(iPush, "pushdir", "-60 0 0"); - fOriginTemp[0] = fOrigin[0] + 79.46; - fOriginTemp[1] = fOrigin[1] - 0.0; - fOriginTemp[2] = fOrigin[2] + 15.76; - DispatchKeyValueVector(iPush, "origin", fOriginTemp); - DispatchSpawn(iPush); - ActivateEntity(iPush); - SetEntityModel(iPush, "models/vortigaunt_slave.mdl"); - float fMinbounds2[3] = {-36.0, -12.0, -25.0}; - float fMaxbounds2[3] = {36.0, 12.0, 25.0}; - SetEntPropVector(iPush, Prop_Send, "m_vecMins", fMinbounds2); - SetEntPropVector(iPush, Prop_Send, "m_vecMaxs", fMaxbounds2); - SetEntProp(iPush, Prop_Send, "m_nSolidType", 3); - int enteffects2 = GetEntProp(iPush, Prop_Send, "m_fEffects"); - enteffects2 |= 32; - SetEntProp(iPush, Prop_Send, "m_fEffects", enteffects2); - SetVariantString("!activator"); - AcceptEntityInput(iPush, "SetParent", iKnife); - - // Relay Trigger - int iRelayTrigger = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d", g_iCounter); - DispatchKeyValue(iRelayTrigger, "targetname", sBuffer); - DispatchKeyValue(iRelayTrigger, "spawnflags", "0"); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); - DispatchSpawn(iRelayTrigger); - ActivateEntity(iRelayTrigger); - SetVariantString("!activator"); - AcceptEntityInput(iRelayTrigger, "SetParent", iKnife); - - // Launch Compare - int iLaunchCompare = CreateEntityByName("logic_compare"); - Format(sBuffer, sizeof(sBuffer), "tnt_compare_launch_%d", g_iCounter); - DispatchKeyValue(iLaunchCompare, "targetname", sBuffer); - DispatchKeyValue(iLaunchCompare, "InitialValue", "1"); - DispatchKeyValue(iLaunchCompare, "CompareValue", "0"); - DispatchKeyValue(iLaunchCompare, "OnEqualTo", "!self,SetValue,1,0,-1"); - Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d,HideSprite,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Enable,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); - DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", "!self,SetValue,0,0,-1"); - Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d,ShowSprite,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Enable,,0,-1", g_iCounter); - DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); - DispatchKeyValueVector(iLaunchCompare, "origin", fOrigin); - DispatchSpawn(iLaunchCompare); - ActivateEntity(iLaunchCompare); - SetVariantString("!activator"); - AcceptEntityInput(iLaunchCompare, "SetParent", iKnife); - - // Relay Launch - int iRelayLaunch = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d", g_iCounter); - DispatchKeyValue(iRelayLaunch, "targetname", sBuffer); - DispatchKeyValue(iRelayLaunch, "spawnflags", "0"); - DispatchKeyValue(iRelayLaunch, "StartDisabled", "0"); - DispatchKeyValueVector(iRelayLaunch, "origin", fOrigin); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Enable,,20,-1", g_iCounter); - DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StopSpark,,0,-1", g_iCounter); - DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,20,-1", g_iCounter); - DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); - DispatchSpawn(iRelayLaunch); - ActivateEntity(iRelayLaunch); - SetVariantString("!activator"); - AcceptEntityInput(iRelayLaunch, "SetParent", iKnife); - HookSingleEntityOutput(iRelayLaunch, "OnTrigger", TNTUse, false); - - // Relay Launch Up - int iRelayLaunchUp = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "targetname", sBuffer); - DispatchKeyValue(iRelayLaunchUp, "spawnflags", "0"); - DispatchKeyValue(iRelayLaunchUp, "StartDisabled", "1"); - DispatchKeyValueVector(iRelayLaunchUp, "origin", fOrigin); - Format(sBuffer, sizeof(sBuffer), "tnt_push_%d,Enable,,0,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_push_%d,Disable,,0.5,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Disable,,0,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Enable,,20,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StopSpark,,0,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,20,-1", g_iCounter); - DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); - DispatchSpawn(iRelayLaunchUp); - ActivateEntity(iRelayLaunchUp); - SetVariantString("!activator"); - AcceptEntityInput(iRelayLaunchUp, "SetParent", iKnife); - HookSingleEntityOutput(iRelayLaunchUp, "OnTrigger", TNTUse, false); - - // Game UI - int iUI = CreateEntityByName("game_ui"); - Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d", g_iCounter); - DispatchKeyValue(iUI, "targetname", sBuffer); - DispatchKeyValue(iUI, "spawnflags", "0"); - DispatchKeyValue(iUI, "FieldOfView", "-1.0"); - Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack2", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_compare_launch_%d,Compare,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack", sBuffer); - DispatchSpawn(iUI); - ActivateEntity(iUI); - SetVariantString("!activator"); - AcceptEntityInput(iUI, "SetParent", iKnife); - - // enable pickup trigger - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "Enable"); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void SpawnHumanDog(float fOrigin[3]) -{ - char sBuffer[256]; - float fOriginTemp[3]; - - // Knife - int iKnife = CreateEntityByName("weapon_knife"); - Format(sBuffer, sizeof(sBuffer), "human_dog_knife_%d", g_iCounter); - DispatchKeyValue(iKnife, "targetname", sBuffer); - Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); - DispatchKeyValue(iKnife, "hammerid", sBuffer); - DispatchKeyValue(iKnife, "spawnflags", "1"); - DispatchKeyValue(iKnife, "angles", "0 0 0"); - DispatchKeyValueVector(iKnife, "origin", fOrigin); - //DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); - Format(sBuffer, sizeof(sBuffer), "human_dog_ui_%d,Activate,,0,-1", g_iCounter); - DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - DispatchSpawn(iKnife); - ActivateEntity(iKnife); - HookSingleEntityOutput(iKnife, "OnPlayerPickup", HumanDogPickup, true); - - // Model - int iModel = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "human_dog_model_%d", g_iCounter); - DispatchKeyValue(iModel, "targetname", sBuffer); - DispatchKeyValue(iModel, "model", "models/player/pil/re1/dog/dog_pil.mdl"); - DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); - DispatchKeyValue(iModel, "angles", "0 0 0"); - DispatchKeyValue(iModel, "solid", "0"); - DispatchKeyValue(iModel, "skin", "1"); - DispatchKeyValue(iModel, "DefaultAnim", "Run_lower"); - fOriginTemp[0] = fOrigin[0] + 10.4; - fOriginTemp[1] = fOrigin[1] - 2.0; - fOriginTemp[2] = fOrigin[2] - 40.32; - DispatchKeyValueVector(iModel, "origin", fOriginTemp); - DispatchSpawn(iModel); - ActivateEntity(iModel); - SetVariantString("!activator"); - AcceptEntityInput(iModel, "SetParent", iKnife); - - // pickup trigger_once - int iTrigger = CreateEntityByName("trigger_once"); - Format(sBuffer, sizeof(sBuffer), "tnt_trigger_%d", g_iCounter); - DispatchKeyValue(iTrigger, "targetname", sBuffer); - DispatchKeyValue(iTrigger, "spawnflags", "1"); - DispatchKeyValue(iTrigger, "startdisabled", "1"); - DispatchKeyValue(iTrigger, "filtername", "item_spawn_human_filter"); - DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); - DispatchKeyValueVector(iTrigger, "origin", fOrigin); - DispatchSpawn(iTrigger); - ActivateEntity(iTrigger); - SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds[3] = {-1.0, -1.0, -10.0}; - float fMaxbounds[3] = {1.0, 1.0, 10.0}; - SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); - SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); - SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); - int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); - enteffects |= 32; - SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "SetParent", iKnife); - - // Relay Trigger - int iRelayTrigger = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger_%d", g_iCounter); - DispatchKeyValue(iRelayTrigger, "targetname", sBuffer); - DispatchKeyValue(iRelayTrigger, "spawnflags", "0"); - Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger2_%d,Trigger,,0,4", g_iCounter); - DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); - DispatchSpawn(iRelayTrigger); - ActivateEntity(iRelayTrigger); - SetVariantString("!activator"); - AcceptEntityInput(iRelayTrigger, "SetParent", iKnife); - - // Relay Trigger2 - int iRelayTrigger2 = CreateEntityByName("logic_relay"); - Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger2_%d", g_iCounter); - DispatchKeyValue(iRelayTrigger2, "targetname", sBuffer); - DispatchKeyValue(iRelayTrigger2, "spawnflags", "0"); - DispatchSpawn(iRelayTrigger2); - ActivateEntity(iRelayTrigger2); - SetVariantString("!activator"); - AcceptEntityInput(iRelayTrigger2, "SetParent", iKnife); - HookSingleEntityOutput(iRelayTrigger2, "OnTrigger", HumanDogUse, false); - - // Game UI - int iUI = CreateEntityByName("game_ui"); - Format(sBuffer, sizeof(sBuffer), "human_dog_ui_%d", g_iCounter); - DispatchKeyValue(iUI, "targetname", sBuffer); - DispatchKeyValue(iUI, "spawnflags", "0"); - DispatchKeyValue(iUI, "FieldOfView", "-1.0"); - Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack2", sBuffer); - DispatchSpawn(iUI); - ActivateEntity(iUI); - SetVariantString("!activator"); - AcceptEntityInput(iUI, "SetParent", iKnife); - - // enable pickup trigger - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "Enable"); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void VortigauntPickup(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[128]; - Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Vortigaunt **", activator); - SetVariantString(sBuffer); - AcceptEntityInput(g_iConsole, "Command"); - - PrintToChat(activator, "Right Click to Pull Humans in front of you."); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void BalrogPickup(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[128]; - Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Balrog **", activator); - SetVariantString(sBuffer); - AcceptEntityInput(g_iConsole, "Command"); - PrintToChat(activator, " RIGHT CLICK = MOTIVATE ZOMBIES and LEFT CLICK = ATTACK."); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void BalrogKill(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[128]; - Format(sBuffer, sizeof(sBuffer), "say ** %N has killed the Balrog **", activator); - SetVariantString(sBuffer); - AcceptEntityInput(g_iConsole, "Command"); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void TNTPickup(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[128]; - Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up TNT **", activator); - SetVariantString(sBuffer); - AcceptEntityInput(g_iConsole, "Command"); - PrintToChat(activator, " RIGHT CLICK = Launch TNT and LEFT CLICK = Switch between 'put down' and 'throw'."); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void TNTUse(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[256]; - float fOrigin[3]; - float fAngles[3]; - - GetClientEyeAngles(activator, fAngles); - GetClientEyePosition(activator, fOrigin); - fAngles[0] = 0.0; - fAngles[2] = 0.0; - fOrigin[0] = fOrigin[0] + Cosine(DegToRad(fAngles[1])) * 46.63; - fOrigin[1] = fOrigin[1] + Sine(DegToRad(fAngles[1])) * 46.63; - fOrigin[2] = fOrigin[2] - 29.86; - - // Prop - int iProp = CreateEntityByName("prop_physics_multiplayer"); - Format(sBuffer, sizeof(sBuffer), "tnt_prop_%d", g_iCounter); - DispatchKeyValue(iProp, "targetname", sBuffer); - DispatchKeyValue(iProp, "model", "models/props/furnitures/humans/barrel01b.mdl"); - DispatchKeyValue(iProp, "spawnflags", "256"); - DispatchKeyValue(iProp, "physdamagescale", "0.1"); - DispatchKeyValue(iProp, "PerformanceMode", "0"); - DispatchKeyValue(iProp, "nodamageforces", "0"); - DispatchKeyValue(iProp, "solid", "6"); - DispatchKeyValue(iProp, "minhealthdmg", "999999"); - DispatchKeyValue(iProp, "health", "999999"); - DispatchKeyValueVector(iProp, "origin", fOrigin); - Format(sBuffer, sizeof(sBuffer), "tnt_fire_%d,StartFire,,3,1", g_iCounter); - DispatchKeyValue(iProp, "OnUser1", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_explosion_%d,Explode,,6.5,1", g_iCounter); - DispatchKeyValue(iProp, "OnUser1", sBuffer); - Format(sBuffer, sizeof(sBuffer), "tnt_sound_%d,PlaySound,,6.5,1", g_iCounter); - DispatchKeyValue(iProp, "OnUser1", sBuffer); - Format(sBuffer, sizeof(sBuffer), "!self,Kill,,6.6,1", g_iCounter); - DispatchKeyValue(iProp, "OnUser1", sBuffer); - DispatchSpawn(iProp); - ActivateEntity(iProp); - AcceptEntityInput(iProp, "FireUser1"); - - // Sparks - int iSparks = CreateEntityByName("env_spark"); - Format(sBuffer, sizeof(sBuffer), "tnt_sparks_%d", g_iCounter); - DispatchKeyValue(iSparks, "targetname", sBuffer); - DispatchKeyValue(iSparks, "TrailLength", "1"); - DispatchKeyValue(iSparks, "spawnflags", "64"); - DispatchKeyValue(iSparks, "angles", "0 0 0"); - DispatchKeyValue(iSparks, "MaxDelay", "0"); - DispatchKeyValue(iSparks, "Magnitude", "1"); - DispatchKeyValueVector(iSparks, "origin", fOrigin); - DispatchSpawn(iSparks); - ActivateEntity(iSparks); - SetVariantString("!activator"); - AcceptEntityInput(iSparks, "SetParent", iProp); - - // Fire - int iFire = CreateEntityByName("env_fire"); - Format(sBuffer, sizeof(sBuffer), "tnt_fire_%d", g_iCounter); - DispatchKeyValue(iFire, "targetname", sBuffer); - DispatchKeyValue(iFire, "ignitionpoint", "32"); - DispatchKeyValue(iFire, "spawnflags", "17"); - DispatchKeyValue(iFire, "health", "30"); - DispatchKeyValue(iFire, "firesize", "64"); - DispatchKeyValue(iFire, "fireattack", "4"); - DispatchKeyValue(iFire, "damagescale", "1.0"); - DispatchKeyValueVector(iFire, "origin", fOrigin); - DispatchSpawn(iFire); - ActivateEntity(iFire); - SetVariantString("!activator"); - AcceptEntityInput(iFire, "SetParent", iProp); - - // Explosion - int iExplosion = CreateEntityByName("env_explosion"); - Format(sBuffer, sizeof(sBuffer), "tnt_explosion_%d", g_iCounter); - DispatchKeyValue(iExplosion, "targetname", sBuffer); - DispatchKeyValue(iExplosion, "fireballsprite", "sprites/zerogxplode.spr"); - DispatchKeyValue(iExplosion, "iMagnitude", "220"); - DispatchKeyValue(iExplosion, "iRadiusOverride", "1024"); - DispatchKeyValue(iExplosion, "rendermode", "5"); - DispatchKeyValue(iExplosion, "spawnflags", "16"); - DispatchKeyValueVector(iExplosion, "origin", fOrigin); - DispatchSpawn(iExplosion); - ActivateEntity(iExplosion); - SetVariantString("!activator"); - AcceptEntityInput(iExplosion, "SetParent", iProp); - - // Sound - int iSound = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "tnt_sound_%d", g_iCounter); - DispatchKeyValue(iSound, "targetname", sBuffer); - DispatchKeyValue(iSound, "spawnflags", "48"); - DispatchKeyValue(iSound, "radius", "9800"); - DispatchKeyValue(iSound, "message", "ambient/explosions/explode_9.wav"); - DispatchKeyValue(iSound, "volume", "10"); - DispatchKeyValue(iSound, "health", "10"); - DispatchKeyValue(iSound, "pitch", "100"); - DispatchKeyValue(iSound, "pitchstart", "100"); - DispatchKeyValueVector(iSound, "origin", fOrigin); - DispatchSpawn(iSound); - ActivateEntity(iSound); - SetVariantString("!activator"); - AcceptEntityInput(iSound, "SetParent", iProp); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void HumanDogPickup(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[128]; - Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Human Dog **", activator); - SetVariantString(sBuffer); - AcceptEntityInput(g_iConsole, "Command"); - PrintToChat(activator, "RIGHT CLICK with your KNIFE to leave a present for the Zombies (max 4)"); - CreateTimer(2.0, EquipWeapons, GetClientUserId(activator), TIMER_FLAG_NO_MAPCHANGE); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void HumanDogUse(const char[] output, int caller, int activator, float delay) -{ - char sBuffer[256]; - float fOrigin[3]; - float fAngles[3]; - GetClientEyeAngles(activator, fAngles); - GetClientEyePosition(activator, fOrigin); - fAngles[0] = 0.0; - fAngles[2] = 0.0; - fOrigin[0] = fOrigin[0] + Cosine(DegToRad(fAngles[1])) * -50.0; - fOrigin[1] = fOrigin[1] + Sine(DegToRad(fAngles[1])) * -50.0; - fOrigin[2] = fOrigin[2] - 62.00; - - // Prop - int iProp = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_%d", g_iCounter); - DispatchKeyValue(iProp, "targetname", sBuffer); - DispatchKeyValue(iProp, "model", "models/poo/curlygpoo.mdl"); - DispatchKeyValue(iProp, "spawnflags", "0"); - DispatchKeyValue(iProp, "PerformanceMode", "0"); - DispatchKeyValue(iProp, "solid", "0"); - DispatchKeyValueVector(iProp, "origin", fOrigin); - DispatchSpawn(iProp); - ActivateEntity(iProp); - - // trigger - int iTrigger = CreateEntityByName("trigger_once"); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_trigger_%d", g_iCounter); - DispatchKeyValue(iTrigger, "targetname", sBuffer); - DispatchKeyValue(iTrigger, "spawnflags", "1"); - DispatchKeyValue(iTrigger, "startdisabled", "0"); - DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_%d,Kill,,1,1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d,Enable,,0,1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d,Disable,,0.25,1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d,Start,,0,-1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d,Kill,,1,-1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - Format(sBuffer, sizeof(sBuffer), "human_dog_sound_%d,PlaySound,,0,-1", g_iCounter); - DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); - DispatchKeyValueVector(iTrigger, "origin", fOrigin); - DispatchSpawn(iTrigger); - ActivateEntity(iTrigger); - SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); - float fMinbounds[3] = {-12.0, -12.0, -7.5}; - float fMaxbounds[3] = {12.0, 12.0, 7.5}; - SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); - SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); - SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); - int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); - enteffects |= 32; - SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); - SetVariantString("!activator"); - AcceptEntityInput(iTrigger, "SetParent", iProp); - - // poo hurt - int iHurt = CreateEntityByName("trigger_hurt"); - Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d", g_iCounter); - DispatchKeyValue(iHurt, "targetname", sBuffer); - DispatchKeyValue(iHurt, "spawnflags", "1"); - DispatchKeyValue(iHurt, "startdisabled", "1"); - DispatchKeyValue(iHurt, "filtername", "item_spawn_zombie_filter"); - DispatchKeyValue(iHurt, "damagetype", "0"); - DispatchKeyValue(iHurt, "damagemodel", "0"); - DispatchKeyValue(iHurt, "damagecap", "20"); - DispatchKeyValue(iHurt, "damage", "8000"); - DispatchKeyValueVector(iHurt, "origin", fOrigin); - DispatchSpawn(iHurt); - ActivateEntity(iHurt); - SetEntityModel(iHurt, "models/vortigaunt_slave.mdl"); - float fMinbounds2[3] = {-96.0, -112.0, -142.0}; - float fMaxbounds2[3] = {96.0, 112.0, 142.0}; - SetEntPropVector(iHurt, Prop_Send, "m_vecMins", fMinbounds2); - SetEntPropVector(iHurt, Prop_Send, "m_vecMaxs", fMaxbounds2); - SetEntProp(iHurt, Prop_Send, "m_nSolidType", 3); - int enteffects2 = GetEntProp(iHurt, Prop_Send, "m_fEffects"); - enteffects2 |= 32; - SetEntProp(iHurt, Prop_Send, "m_fEffects", enteffects2); - SetVariantString("!activator"); - AcceptEntityInput(iHurt, "SetParent", iProp); - - // Particles - int iParticles = CreateEntityByName("info_particle_system"); - Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d", g_iCounter); - DispatchKeyValue(iParticles, "targetname", sBuffer); - DispatchKeyValue(iParticles, "effect_name", "fire_small_01"); - DispatchKeyValue(iParticles, "start_active", "0"); - DispatchKeyValueVector(iParticles, "origin", fOrigin); - DispatchSpawn(iParticles); - ActivateEntity(iParticles); - SetVariantString("!activator"); - AcceptEntityInput(iParticles, "SetParent", iProp); - - // Sound - int iSound = CreateEntityByName("ambient_generic"); - Format(sBuffer, sizeof(sBuffer), "human_dog_sound_%d", g_iCounter); - DispatchKeyValue(iSound, "targetname", sBuffer); - DispatchKeyValue(iSound, "spawnflags", "49"); - DispatchKeyValue(iSound, "radius", "1250"); - DispatchKeyValue(iSound, "message", "ambient/explosions/explode_9.wav"); - DispatchKeyValue(iSound, "volume", "10"); - DispatchKeyValue(iSound, "health", "10"); - DispatchKeyValue(iSound, "pitch", "100"); - DispatchKeyValue(iSound, "pitchstart", "100"); - DispatchKeyValueVector(iSound, "origin", fOrigin); - DispatchSpawn(iSound); - ActivateEntity(iSound); - SetVariantString("!activator"); - AcceptEntityInput(iSound, "SetParent", iProp); - - g_iCounter ++; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname="*") -{ - if(sTargetname[0] == '#') // HammerID - { - int HammerID = StringToInt(sTargetname[1]); - - while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) - { - if(GetEntProp(entity, Prop_Data, "m_iHammerID") == HammerID) - return entity; - } - } - else // Targetname - { - int Wildcard = FindCharInString(sTargetname, '*'); - char sTargetnameBuf[64]; - - while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) - { - if(GetEntPropString(entity, Prop_Data, "m_iName", sTargetnameBuf, sizeof(sTargetnameBuf)) <= 0) - continue; - - if(strncmp(sTargetnameBuf, sTargetname, Wildcard) == 0) - return entity; - } - } - - return INVALID_ENT_REFERENCE; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Action EquipWeapons(Handle timer, any userid) -{ - int client = GetClientOfUserId(userid); - - if (client != 0) - { - GivePlayerItem(client, "weapon_p90"); - GivePlayerItem(client, "weapon_elite"); - GivePlayerItem(client, "item_kevlar"); - GivePlayerItem(client, "weapon_hegrenade"); - } -} \ No newline at end of file diff --git a/ItemSpawn/scripting/ItemSpawn2.sp b/ItemSpawn/scripting/ItemSpawn2.sp deleted file mode 100644 index 02c7565d..00000000 --- a/ItemSpawn/scripting/ItemSpawn2.sp +++ /dev/null @@ -1,205 +0,0 @@ -#pragma newdecls required - -#include -#include -#include - -#pragma semicolon 1 - -int g_iConsole; -int g_iCounter = 0; - -#include "items\balrog.inc" -#include "items\doghuman.inc" -#include "items\tnt.inc" -#include "items\vortigaunt.inc" - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public Plugin myinfo = -{ - name = "ItemSpawn", - author = "Neon", - description = "", - version = "1.1", - url = "https://steamcommunity.com/id/n3ontm" -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void OnPluginStart() -{ - HookEvent("round_start", OnRoundStart, EventHookMode_Post); - - RegAdminCmd("sm_tnt", Command_TNT, ADMFLAG_KICK); - RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_KICK); - RegAdminCmd("sm_humandog", Command_HumanDog, ADMFLAG_KICK); - RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_KICK); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void OnMapStart() -{ - // Physbox - PrecacheModel("models/props/cs_militia/crate_extrasmallmill.mdl"); - - // Vortigaunt - PrecacheModel("models/vortigaunt_slave.mdl"); - - // Balrog - PrecacheModel("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); - AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx80.vtx"); - AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx90.vtx"); - AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); - AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.sw.vtx"); - AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.vvd"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body.vmt"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body.vtf"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body_2.vmt"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_eyes.vmt"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon.vmt"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon.vtf"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_blade.vmt"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_bump.vtf"); - AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_wings.vmt"); - AddFileToDownloadsTable("sound/unloze/balrog_scream.mp3"); - - // TNT - PrecacheModel("models/props/furnitures/humans/barrel01b.mdl"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx80.vtx"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx90.vtx"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.mdl"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.phy"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.sw.vtx"); - AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.vvd"); - AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b.vmt"); - AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b.vtf"); - AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_broken.vmt"); - AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_no_metal.vtf"); - - // Dog - PrecacheModel("models/player/pil/re1/dog/dog_pil.mdl"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx80.vtx"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx90.vtx"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.mdl"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.phy"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.sw.vtx"); - AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.vvd"); - AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vmt"); - AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vtf"); - - // Dog Poo - PrecacheModel("models/poo/curlygpoo.mdl"); - AddFileToDownloadsTable("models/poo/curlygpoo.dx80.vtx"); - AddFileToDownloadsTable("models/poo/curlygpoo.dx90.vtx"); - AddFileToDownloadsTable("models/poo/curlygpoo.mdl"); - AddFileToDownloadsTable("models/poo/curlygpoo.phy"); - AddFileToDownloadsTable("models/poo/curlygpoo.sw.vtx"); - AddFileToDownloadsTable("models/poo/curlygpoo.vvd"); - AddFileToDownloadsTable("materials/models/poo/curlypoo.vmt"); - AddFileToDownloadsTable("materials/models/poo/curlypoo.vtf"); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock int CreateEntityAtOrigin(const char[] classname, const float origin[3]) -{ - int entity = INVALID_ENT_REFERENCE; - if ((entity = CreateEntityByName(classname)) != INVALID_ENT_REFERENCE) - DispatchKeyValueVector(entity, "origin", origin); - - return entity; -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock bool DispatchKeyFormat(int entity, const char[] key, const char[] value, any ...) -{ - char buffer[1024]; - VFormat(buffer, sizeof(buffer), value, 4); - - return DispatchKeyValue(entity, key, buffer); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock bool ActivateAndSpawn(int entity) -{ - ActivateEntity(entity); - - return DispatchSpawn(entity); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock bool ParentToEntity(int entity, int parent) -{ - SetVariantString("!activator"); - - return AcceptEntityInput(entity, "SetParent", parent, parent); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock void SetEntityBBox(int entity, const float mins[3], const float maxs[3]) -{ - SetEntPropVector(entity, Prop_Send, "m_vecMins", mins); - SetEntPropVector(entity, Prop_Send, "m_vecMaxs", maxs); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock void SetEntitySolid(int entity) -{ - SetEntProp(entity, Prop_Send, "m_nSolidType", 3); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -stock void SetEntityNodraw(int entity) -{ - SetEntProp(entity, Prop_Send, "m_fEffects", 32); -} - -//---------------------------------------------------------------------------------------------------- -// Purpose: -//---------------------------------------------------------------------------------------------------- -public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) -{ - g_iCounter = 0; - - // player_weaponstrip - int iPlayerStrip = CreateEntityByName("player_weaponstrip"); - DispatchKeyFormat(iPlayerStrip, "targetname", "item_spawn_weaponstrip"); - ActivateAndSpawn(iPlayerStrip); - - // player_speedmod - int iPlayerSpeed = CreateEntityByName("player_speedmod"); - DispatchKeyFormat(iPlayerSpeed, "targetname", "item_spawn_speedmod"); - ActivateAndSpawn(iPlayerSpeed); - - // filter_activator_team humans - int iHumanFilter = CreateEntityByName("filter_activator_team"); - DispatchKeyFormat(iHumanFilter, "targetname", "item_spawn_human_filter"); - DispatchKeyFormat(iHumanFilter, "Negated", "0"); - DispatchKeyFormat(iHumanFilter, "filterteam", "3"); - ActivateAndSpawn(iHumanFilter); - - // filter_activator_team zombies - int iZombieFilter = CreateEntityByName("filter_activator_team"); - DispatchKeyFormat(iZombieFilter, "targetname", "item_spawn_zombie_filter"); - DispatchKeyFormat(iZombieFilter, "Negated", "0"); - DispatchKeyFormat(iZombieFilter, "filterteam", "2"); - ActivateAndSpawn(iZombieFilter); -} diff --git a/ItemSpawn/scripting/ItemSpawn_Old.sp b/ItemSpawn/scripting/ItemSpawn_Old.sp new file mode 100644 index 00000000..3a255964 --- /dev/null +++ b/ItemSpawn/scripting/ItemSpawn_Old.sp @@ -0,0 +1,1660 @@ +#include +#include +#include + +#pragma semicolon 1 +#pragma newdecls required + +int g_iCounter = 0; + +int g_iConsole; + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Plugin myinfo = +{ + name = "ItemSpawn", + author = "Neon", + description = "", + version = "1.1", + url = "https://steamcommunity.com/id/n3ontm" +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnPluginStart() +{ + HookEvent("round_start", OnRoundStart, EventHookMode_Post); + RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_KICK); + RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_KICK); + RegAdminCmd("sm_tnt", Command_TNT, ADMFLAG_KICK); + RegAdminCmd("sm_humandog", Command_HumanDog, ADMFLAG_KICK); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnMapStart() +{ + PrecacheModel("models/props/cs_militia/crate_extrasmallmill.mdl"); + + // Vortigaunt + PrecacheModel("models/vortigaunt_slave.mdl"); + + // Balrog + AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx80.vtx"); + AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.dx90.vtx"); + AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); + AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.sw.vtx"); + AddFileToDownloadsTable("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.vvd"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body.vmt"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body.vtf"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_body_2.vmt"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_eyes.vmt"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon.vmt"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon.vtf"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_blade.vmt"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_weapon_bump.vtf"); + AddFileToDownloadsTable("materials/models/player/slow/amberlyn/lotr/balrog/slow_wings.vmt"); + PrecacheModel("models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); + AddFileToDownloadsTable("sound/unloze/balrog_scream.mp3"); + + // TNT + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx80.vtx"); + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.dx90.vtx"); + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.mdl"); + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.phy"); + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.sw.vtx"); + AddFileToDownloadsTable("models/props/furnitures/humans/barrel01b.vvd"); + AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b.vmt"); + AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b.vtf"); + AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_broken.vmt"); + AddFileToDownloadsTable("materials/models/barrel01b/wood_barrel01b_no_metal.vtf"); + PrecacheModel("models/props/furnitures/humans/barrel01b.mdl"); + + // Dog + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx80.vtx"); + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.dx90.vtx"); + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.mdl"); + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.phy"); + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.sw.vtx"); + AddFileToDownloadsTable("models/player/pil/re1/dog/dog_pil.vvd"); + AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vmt"); + AddFileToDownloadsTable("materials/models/player/pil/re1/dog/0000a.vtf"); + PrecacheModel("models/player/pil/re1/dog/dog_pil.mdl"); + + AddFileToDownloadsTable("models/poo/curlygpoo.dx80.vtx"); + AddFileToDownloadsTable("models/poo/curlygpoo.dx90.vtx"); + AddFileToDownloadsTable("models/poo/curlygpoo.mdl"); + AddFileToDownloadsTable("models/poo/curlygpoo.phy"); + AddFileToDownloadsTable("models/poo/curlygpoo.sw.vtx"); + AddFileToDownloadsTable("models/poo/curlygpoo.vvd"); + AddFileToDownloadsTable("materials/models/poo/curlypoo.vmt"); + AddFileToDownloadsTable("materials/models/poo/curlypoo.vtf"); + PrecacheModel("models/poo/curlygpoo.mdl"); + +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) +{ + g_iCounter = 0; + + // point_servercommand + g_iConsole = CreateEntityByName("point_servercommand"); + DispatchKeyValue(g_iConsole, "targetname", "item_spawn_console"); + DispatchSpawn(g_iConsole); + ActivateEntity(g_iConsole); + + // Human filter + int iHumanFilter = CreateEntityByName("filter_activator_team"); + DispatchKeyValue(iHumanFilter, "targetname", "item_spawn_human_filter"); + DispatchKeyValue(iHumanFilter, "Negated", "0"); + DispatchKeyValue(iHumanFilter, "filterteam", "3"); + DispatchSpawn(iHumanFilter); + ActivateEntity(iHumanFilter); + + // Zombie filter + int iZombieFilter = CreateEntityByName("filter_activator_team"); + DispatchKeyValue(iZombieFilter, "targetname", "item_spawn_zombie_filter"); + DispatchKeyValue(iZombieFilter, "Negated", "0"); + DispatchKeyValue(iZombieFilter, "filterteam", "2"); + DispatchSpawn(iZombieFilter); + ActivateEntity(iZombieFilter); + + // player_weaponstrip + int iWeaponStrip = CreateEntityByName("player_weaponstrip"); + DispatchKeyValue(iWeaponStrip, "targetname", "item_spawn_weaponstrip"); + DispatchSpawn(iWeaponStrip); + ActivateEntity(iWeaponStrip); + + // speedmod + int iSpeedMod = CreateEntityByName("player_speedmod"); + DispatchKeyValue(iSpeedMod, "targetname", "item_spawn_speed"); + DispatchSpawn(iSpeedMod); + ActivateEntity(iSpeedMod); + +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_Vortigaunt(int client, int argc) +{ + float fOrigin[3]; + + if (argc < 1) + { + GetClientEyePosition(client, fOrigin); + SpawnVortigaunt(fOrigin); + LogAction(client, -1, "\"%L\" spawned Vortigaunt at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); + return Plugin_Handled; + } + + char sArgs[64]; + char sTargetName[MAX_TARGET_LENGTH]; + int iTargets[MAXPLAYERS]; + int iTargetCount; + bool bIsML; + + GetCmdArg(1, sArgs, sizeof(sArgs)); + + if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) + { + ReplyToTargetError(client, iTargetCount); + return Plugin_Handled; + } + + for (int i = 0; i < iTargetCount; i++) + { + if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) + { + GetClientEyePosition(iTargets[i], fOrigin); + SpawnVortigaunt(fOrigin); + LogAction(client, -1, "\"%L\" gave Vortigaunt to \"%L\".", client, iTargets[i]); + } + } + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_Balrog(int client, int argc) +{ + float fOrigin[3]; + + if (argc < 1) + { + GetClientEyePosition(client, fOrigin); + SpawnBalrog(fOrigin); + LogAction(client, -1, "\"%L\" spawned Balrog at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); + return Plugin_Handled; + } + + char sArgs[64]; + char sTargetName[MAX_TARGET_LENGTH]; + int iTargets[MAXPLAYERS]; + int iTargetCount; + bool bIsML; + + GetCmdArg(1, sArgs, sizeof(sArgs)); + + if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) + { + ReplyToTargetError(client, iTargetCount); + return Plugin_Handled; + } + + for (int i = 0; i < iTargetCount; i++) + { + if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) + { + GetClientEyePosition(iTargets[i], fOrigin); + SpawnBalrog(fOrigin); + LogAction(client, -1, "\"%L\" gave Balrog to \"%L\".", client, iTargets[i]); + } + } + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_TNT(int client, int argc) +{ + float fOrigin[3]; + + if (argc < 1) + { + GetClientEyePosition(client, fOrigin); + SpawnTNT(fOrigin); + LogAction(client, -1, "\"%L\" spawned TNT at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); + return Plugin_Handled; + } + + char sArgs[64]; + char sTargetName[MAX_TARGET_LENGTH]; + int iTargets[MAXPLAYERS]; + int iTargetCount; + bool bIsML; + + GetCmdArg(1, sArgs, sizeof(sArgs)); + + if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) + { + ReplyToTargetError(client, iTargetCount); + return Plugin_Handled; + } + + for (int i = 0; i < iTargetCount; i++) + { + if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) + { + GetClientEyePosition(iTargets[i], fOrigin); + SpawnTNT(fOrigin); + LogAction(client, -1, "\"%L\" gave TNT to \"%L\".", client, iTargets[i]); + } + } + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_HumanDog(int client, int argc) +{ + float fOrigin[3]; + + if (argc < 1) + { + GetClientEyePosition(client, fOrigin); + SpawnHumanDog(fOrigin); + LogAction(client, -1, "\"%L\" spawned Human Dog at <%f><%f><%f>.", client, fOrigin[0], fOrigin[1], fOrigin[2]); + return Plugin_Handled; + } + + char sArgs[64]; + char sTargetName[MAX_TARGET_LENGTH]; + int iTargets[MAXPLAYERS]; + int iTargetCount; + bool bIsML; + + GetCmdArg(1, sArgs, sizeof(sArgs)); + + if ((iTargetCount = ProcessTargetString(sArgs, client, iTargets, MAXPLAYERS, COMMAND_FILTER_CONNECTED, sTargetName, sizeof(sTargetName), bIsML)) <= 0) + { + ReplyToTargetError(client, iTargetCount); + return Plugin_Handled; + } + + for (int i = 0; i < iTargetCount; i++) + { + if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientHuman(iTargets[i]))) + { + GetClientEyePosition(iTargets[i], fOrigin); + SpawnHumanDog(fOrigin); + LogAction(client, -1, "\"%L\" gave Human Dog to \"%L\".", client, iTargets[i]); + } + } + return Plugin_Handled; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SpawnVortigaunt(float fOrigin[3]) +{ + char sBuffer[256]; + float fOriginTemp[3]; + + // Knife + int iKnife = CreateEntityByName("weapon_knife"); + Format(sBuffer, sizeof(sBuffer), "vort_knife_%d", g_iCounter); + DispatchKeyValue(iKnife, "targetname", sBuffer); + Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); + DispatchKeyValue(iKnife, "hammerid", sBuffer); + DispatchKeyValue(iKnife, "spawnflags", "1"); + DispatchKeyValue(iKnife, "angles", "0 0 0"); + DispatchKeyValueVector(iKnife, "origin", fOrigin); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); + Format(sBuffer, sizeof(sBuffer), "vort_knife_%d,AddOutput,renderfx 6,0.03,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_ui_%d,Activate,,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + DispatchSpawn(iKnife); + ActivateEntity(iKnife); + HookSingleEntityOutput(iKnife, "OnPlayerPickup", VortigauntPickup, true); + + // Model + int iModel = CreateEntityByName("prop_dynamic"); + Format(sBuffer, sizeof(sBuffer), "vort_model_%d", g_iCounter); + DispatchKeyValue(iModel, "targetname", sBuffer); + DispatchKeyValue(iModel, "model", "models/vortigaunt_slave.mdl"); + DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); + DispatchKeyValue(iModel, "DefaultAnim", "Run_all"); + fOriginTemp[0] = fOrigin[0] + 7.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] - 34.24; + DispatchKeyValueVector(iModel, "origin", fOriginTemp); + DispatchSpawn(iModel); + ActivateEntity(iModel); + SetVariantString("!activator"); + AcceptEntityInput(iModel, "SetParent", iKnife); + + // pickup trigger_once + int iTrigger = CreateEntityByName("trigger_once"); + Format(sBuffer, sizeof(sBuffer), "vort_trigger_%d", g_iCounter); + DispatchKeyValue(iTrigger, "targetname", sBuffer); + DispatchKeyValue(iTrigger, "spawnflags", "1"); + DispatchKeyValue(iTrigger, "startdisabled", "1"); + DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); + DispatchKeyValueVector(iTrigger, "origin", fOrigin); + DispatchSpawn(iTrigger); + ActivateEntity(iTrigger); + SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds[3] = {-10.0, -10.0, -36.0}; + float fMaxbounds[3] = {10.0, 10.0, 36.0}; + SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); + SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); + SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "SetParent", iKnife); + + // Sound + int iSound = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "vort_sound_%d", g_iCounter); + DispatchKeyValue(iSound, "targetname", sBuffer); + DispatchKeyValue(iSound, "spawnflags", "48"); + DispatchKeyValue(iSound, "radius", "2250"); + Format(sBuffer, sizeof(sBuffer), "vort_knife_%d", g_iCounter); + DispatchKeyValue(iSound, "SourceEntityName", sBuffer); + DispatchKeyValue(iSound, "message", "ambient/energy/zap9.wav"); + DispatchKeyValue(iSound, "volume", "10"); + DispatchKeyValue(iSound, "health", "10"); + DispatchKeyValue(iSound, "pitch", "100"); + DispatchKeyValue(iSound, "pitchstart", "100"); + DispatchSpawn(iSound); + ActivateEntity(iSound); + SetVariantString("!activator"); + AcceptEntityInput(iSound, "SetParent", iKnife); + + // Push + int iPush = CreateEntityByName("trigger_push"); + Format(sBuffer, sizeof(sBuffer), "vort_push_%d", g_iCounter); + DispatchKeyValue(iPush, "targetname", sBuffer); + DispatchKeyValue(iPush, "spawnflags", "1"); + DispatchKeyValue(iPush, "startdisabled", "1"); + DispatchKeyValue(iPush, "speed", "1800"); + DispatchKeyValue(iPush, "pushdir", "0 180 0"); + DispatchKeyValue(iPush, "filtername", "item_spawn_human_filter"); + fOriginTemp[0] = fOrigin[0] + 899.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] - 8.0; + DispatchKeyValueVector(iPush, "origin", fOriginTemp); + DispatchSpawn(iPush); + ActivateEntity(iPush); + SetEntityModel(iPush, "models/vortigaunt_slave.mdl"); + float fMinbounds2[3] = {-852.0, -16.0, -9.0}; + float fMaxbounds2[3] = {852.0, 16.0, 9.0}; + SetEntPropVector(iPush, Prop_Send, "m_vecMins", fMinbounds2); + SetEntPropVector(iPush, Prop_Send, "m_vecMaxs", fMaxbounds2); + SetEntProp(iPush, Prop_Send, "m_nSolidType", 3); + int enteffects2 = GetEntProp(iPush, Prop_Send, "m_fEffects"); + enteffects2 |= 32; + SetEntProp(iPush, Prop_Send, "m_fEffects", enteffects2); + SetVariantString("!activator"); + AcceptEntityInput(iPush, "SetParent", iKnife); + + // Relay + int iRelay = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "vort_relay_%d", g_iCounter); + DispatchKeyValueVector(iRelay, "origin", fOrigin); + DispatchKeyValue(iRelay, "targetname", sBuffer); + DispatchKeyValue(iRelay, "spawnflags", "0"); + DispatchKeyValue(iRelay, "startdisabled", "0"); + DispatchKeyValue(iRelay, "OnTrigger", "!self,Disable,,0,-1"); + DispatchKeyValue(iRelay, "OnTrigger", "!self,Enable,,4,-1"); + Format(sBuffer, sizeof(sBuffer), "vort_model_%d,SetAnimation,zapattack1,0,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_push_%d,Enable,,1.5,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_push_%d,Disable,,2,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_sound_%d,PlaySound,,1.5,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_beam_%d,TurnOn,,1.5,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_beam_%d,TurnOff,,2.5,-1", g_iCounter); + DispatchKeyValue(iRelay, "OnTrigger", sBuffer); + DispatchKeyValue(iRelay, "OnTrigger", "item_spawn_speed,ModifySpeed,0,0,-1"); + DispatchKeyValue(iRelay, "OnTrigger", "item_spawn_speed,ModifySpeed,1.15,3.25,-1"); + DispatchSpawn(iRelay); + ActivateEntity(iRelay); + SetVariantString("!activator"); + AcceptEntityInput(iRelay, "SetParent", iKnife); + + // Game UI + int iUI = CreateEntityByName("game_ui"); + Format(sBuffer, sizeof(sBuffer), "vort_ui_%d", g_iCounter); + DispatchKeyValue(iUI, "targetname", sBuffer); + DispatchKeyValue(iUI, "spawnflags", "0"); + DispatchKeyValue(iUI, "FieldOfView", "-1.0"); + Format(sBuffer, sizeof(sBuffer), "vort_relay_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack2", sBuffer); + DispatchSpawn(iUI); + ActivateEntity(iUI); + SetVariantString("!activator"); + AcceptEntityInput(iUI, "SetParent", iKnife); + + // beam start + int iBeamStart = CreateEntityByName("prop_dynamic_override"); + Format(sBuffer, sizeof(sBuffer), "vort_beam_start_%d", g_iCounter); + DispatchKeyValue(iBeamStart, "targetname", sBuffer); + DispatchKeyValue(iBeamStart, "model", "models/props/cs_italy/bananna.mdl"); + DispatchKeyValue(iBeamStart, "disableshadows", "1"); + DispatchKeyValue(iBeamStart, "disablereceiveshadows", "1"); + DispatchKeyValue(iBeamStart, "DisableBoneFollowers", "1"); + DispatchKeyValue(iBeamStart, "rendermode", "10"); + fOriginTemp[0] = fOrigin[0] + 29.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] - 8.0; + DispatchKeyValueVector(iBeamStart, "origin", fOriginTemp); + DispatchSpawn(iBeamStart); + ActivateEntity(iBeamStart); + SetVariantString("!activator"); + AcceptEntityInput(iBeamStart, "SetParent", iKnife); + + // beam end + int iBeamEnd = CreateEntityByName("prop_dynamic_override"); + Format(sBuffer, sizeof(sBuffer), "vort_beam_end_%d", g_iCounter); + DispatchKeyValue(iBeamEnd, "targetname", sBuffer); + DispatchKeyValue(iBeamEnd, "model", "models/props/cs_italy/bananna.mdl"); + DispatchKeyValue(iBeamEnd, "disableshadows", "1"); + DispatchKeyValue(iBeamEnd, "disablereceiveshadows", "1"); + DispatchKeyValue(iBeamEnd, "DisableBoneFollowers", "1"); + DispatchKeyValue(iBeamEnd, "rendermode", "10"); + fOriginTemp[0] = fOrigin[0] + 1743.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] - 8.0; + DispatchKeyValueVector(iBeamEnd, "origin", fOriginTemp); + DispatchSpawn(iBeamEnd); + ActivateEntity(iBeamEnd); + SetVariantString("!activator"); + AcceptEntityInput(iBeamEnd, "SetParent", iKnife); + + // Beam + int iBeam = CreateEntityByName("env_beam"); + Format(sBuffer, sizeof(sBuffer), "vort_beam_%d", g_iCounter); + DispatchKeyValue(iBeam, "targetname", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_beam_start_%d", g_iCounter); + DispatchKeyValue(iBeam, "LightningStart", sBuffer); + Format(sBuffer, sizeof(sBuffer), "vort_beam_end_%d", g_iCounter); + DispatchKeyValue(iBeam, "LightningEnd", sBuffer); + DispatchKeyValue(iBeam, "BoltWidth", "3"); + DispatchKeyValue(iBeam, "NoiseAmplitude", "1"); + DispatchKeyValue(iBeam, "decalname", "Bigshot"); + DispatchKeyValue(iBeam, "framerate", "0"); + DispatchKeyValue(iBeam, "framestart", "0"); + DispatchKeyValue(iBeam, "life", "1"); + DispatchKeyValue(iBeam, "spawnflags", "48"); + DispatchKeyValue(iBeam, "TouchType", "1"); + DispatchKeyValue(iBeam, "rendercolor", "0 200 0"); + DispatchKeyValue(iBeam, "texture", "sprites/laserbeam.spr"); + DispatchSpawn(iBeam); + SetVariantString("!activator"); + AcceptEntityInput(iBeam, "SetParent", iKnife); + + // enable pickup trigger + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "Enable"); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SpawnBalrog(float fOrigin[3]) +{ + char sBuffer[256]; + float fOriginTemp[3]; + + // Knife + int iKnife = CreateEntityByName("weapon_knife"); + Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); + DispatchKeyValue(iKnife, "targetname", sBuffer); + Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); + DispatchKeyValue(iKnife, "hammerid", sBuffer); + DispatchKeyValue(iKnife, "spawnflags", "1"); + DispatchKeyValue(iKnife, "angles", "0 0 0"); + DispatchKeyValueVector(iKnife, "origin", fOrigin); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); + Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d,AddOutput,renderfx 6,0.03,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + DispatchKeyValue(iKnife, "OnPlayerPickup", "item_spawn_speed,ModifySpeed,0.8,0,-1"); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_ui_%d,Activate,,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,rendermode 10,0,-1"); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,health 2000000000,0,-1"); + DispatchKeyValue(iKnife, "OnUser3", "!self,FireUser3,,5,-1"); + //DispatchKeyValue(iKnife, "OnUser3", "!activator,AddOutput,gravity 2,0,-1"); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!self,FireUser3,,0,-1"); + DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,health 25000,15,-1"); + DispatchSpawn(iKnife); + ActivateEntity(iKnife); + HookSingleEntityOutput(iKnife, "OnPlayerPickup", BalrogPickup, true); + + // Model + int iModel = CreateEntityByName("prop_dynamic"); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d", g_iCounter); + DispatchKeyValue(iModel, "targetname", sBuffer); + DispatchKeyValue(iModel, "model", "models/player/slow/amberlyn/lotr/balrog/balrog_rafuron_hannibal.mdl"); + DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); + DispatchKeyValue(iModel, "DefaultAnim", "crouch_walk_lower"); + DispatchKeyValue(iModel, "angles", "0 2 0"); + DispatchKeyValue(iModel, "solid", "0"); + fOriginTemp[0] = fOrigin[0] + 4.5; + fOriginTemp[1] = fOrigin[1] + 1.26; + fOriginTemp[2] = fOrigin[2] - 28.9; + DispatchKeyValueVector(iModel, "origin", fOriginTemp); + DispatchSpawn(iModel); + ActivateEntity(iModel); + SetVariantString("!activator"); + AcceptEntityInput(iModel, "SetParent", iKnife); + + // pickup trigger_once + int iTrigger = CreateEntityByName("trigger_once"); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_%d", g_iCounter); + DispatchKeyValue(iTrigger, "targetname", sBuffer); + DispatchKeyValue(iTrigger, "spawnflags", "1"); + DispatchKeyValue(iTrigger, "startdisabled", "1"); + DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); + DispatchKeyValueVector(iTrigger, "origin", fOrigin); + DispatchSpawn(iTrigger); + ActivateEntity(iTrigger); + SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds[3] = {-10.0, -10.0, -36.0}; + float fMaxbounds[3] = {10.0, 10.0, 36.0}; + SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); + SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); + SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "SetParent", iKnife); + + // kill trigger_once + int iKillTrigger = CreateEntityByName("trigger_hurt"); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d", g_iCounter); + DispatchKeyValue(iKillTrigger, "targetname", sBuffer); + DispatchKeyValue(iKillTrigger, "spawnflags", "1"); + DispatchKeyValue(iKillTrigger, "startdisabled", "1"); + DispatchKeyValue(iKillTrigger, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iKillTrigger, "damagetype", "0"); + DispatchKeyValue(iKillTrigger, "damagemodel", "0"); + DispatchKeyValue(iKillTrigger, "damagecap", "20"); + DispatchKeyValue(iKillTrigger, "damage", "200000"); + DispatchKeyValueVector(iKillTrigger, "origin", fOrigin); + DispatchSpawn(iKillTrigger); + ActivateEntity(iKillTrigger); + SetEntityModel(iKillTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds4[3] = {-10.0, -10.0, -36.0}; + float fMaxbounds4[3] = {10.0, 10.0, 36.0}; + SetEntPropVector(iKillTrigger, Prop_Send, "m_vecMins", fMinbounds4); + SetEntPropVector(iKillTrigger, Prop_Send, "m_vecMaxs", fMaxbounds4); + SetEntProp(iKillTrigger, Prop_Send, "m_nSolidType", 3); + int enteffects4 = GetEntProp(iKillTrigger, Prop_Send, "m_fEffects"); + enteffects4 |= 32; + SetEntProp(iKillTrigger, Prop_Send, "m_fEffects", enteffects4); + SetVariantString("!activator"); + AcceptEntityInput(iKillTrigger, "SetParent", iKnife); + + // trigger_hurt walking + int iKillTriggerWalking = CreateEntityByName("trigger_hurt"); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d", g_iCounter); + DispatchKeyValue(iKillTriggerWalking, "targetname", sBuffer); + DispatchKeyValue(iKillTriggerWalking, "spawnflags", "9"); + DispatchKeyValue(iKillTriggerWalking, "startdisabled", "0"); + DispatchKeyValue(iKillTriggerWalking, "filtername", "item_spawn_human_filter"); + DispatchKeyValue(iKillTriggerWalking, "damagetype", "128"); + DispatchKeyValue(iKillTriggerWalking, "damagemodel", "0"); + DispatchKeyValue(iKillTriggerWalking, "damagecap", "20"); + DispatchKeyValue(iKillTriggerWalking, "damage", "190"); + fOriginTemp[0] = fOrigin[0] + 28.5; + fOriginTemp[1] = fOrigin[1] - 2.74; + fOriginTemp[2] = fOrigin[2] - 4.9; + DispatchKeyValueVector(iKillTriggerWalking, "origin", fOriginTemp); + DispatchSpawn(iKillTriggerWalking); + ActivateEntity(iKillTriggerWalking); + SetEntityModel(iKillTriggerWalking, "models/vortigaunt_slave.mdl"); + float fMinbounds5[3] = {-32.0, -72.0, -84.0}; + float fMaxbounds5[3] = {32.0, 72.0, 84.0}; + SetEntPropVector(iKillTriggerWalking, Prop_Send, "m_vecMins", fMinbounds5); + SetEntPropVector(iKillTriggerWalking, Prop_Send, "m_vecMaxs", fMaxbounds5); + SetEntProp(iKillTriggerWalking, Prop_Send, "m_nSolidType", 3); + int enteffects5 = GetEntProp(iKillTriggerWalking, Prop_Send, "m_fEffects"); + enteffects5 |= 32; + SetEntProp(iKillTriggerWalking, Prop_Send, "m_fEffects", enteffects5); + SetVariantString("!activator"); + AcceptEntityInput(iKillTriggerWalking, "SetParent", iKnife); + + // trigger roar 1 + int iTriggerRoar = CreateEntityByName("trigger_multiple"); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d", g_iCounter); + DispatchKeyValue(iTriggerRoar, "targetname", sBuffer); + DispatchKeyValue(iTriggerRoar, "spawnflags", "1"); + DispatchKeyValue(iTriggerRoar, "startdisabled", "1"); + DispatchKeyValue(iTriggerRoar, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iTriggerRoar, "wait", "1"); + DispatchKeyValue(iTriggerRoar, "OnStartTouch", "item_spawn_speed,ModifySpeed,0,0,-1"); + DispatchKeyValue(iTriggerRoar, "OnStartTouch", "item_spawn_speed,speed,ModifySpeed,0.8,3,-1"); + fOriginTemp[0] = fOrigin[0] + 5.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] - 0.0; + DispatchKeyValueVector(iTriggerRoar, "origin", fOriginTemp); + DispatchSpawn(iTriggerRoar); + ActivateEntity(iTriggerRoar); + SetEntityModel(iTriggerRoar, "models/vortigaunt_slave.mdl"); + float fMinbounds6[3] = {-0.5, -0.5, -36.0}; + float fMaxbounds6[3] = {0.5, 0.5, 36.0}; + SetEntPropVector(iTriggerRoar, Prop_Send, "m_vecMins", fMinbounds6); + SetEntPropVector(iTriggerRoar, Prop_Send, "m_vecMaxs", fMaxbounds6); + SetEntProp(iTriggerRoar, Prop_Send, "m_nSolidType", 3); + int enteffects6 = GetEntProp(iTriggerRoar, Prop_Send, "m_fEffects"); + enteffects6 |= 32; + SetEntProp(iTriggerRoar, Prop_Send, "m_fEffects", enteffects6); + SetVariantString("!activator"); + AcceptEntityInput(iTriggerRoar, "SetParent", iKnife); + + // trigger roar 2 + int iTriggerRoar2 = CreateEntityByName("trigger_multiple"); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d", g_iCounter); + DispatchKeyValue(iTriggerRoar2, "targetname", sBuffer); + DispatchKeyValue(iTriggerRoar2, "spawnflags", "1"); + DispatchKeyValue(iTriggerRoar2, "startdisabled", "1"); + DispatchKeyValue(iTriggerRoar2, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iTriggerRoar2, "wait", "1"); + DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,health 10000,0,-1"); + DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "item_spawn_speed,ModifySpeed,1.5,0,-1"); + DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "item_spawn_speed,ModifySpeed,1.0,10,-1"); + DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,color 255 0 0,0,-1"); + DispatchKeyValue(iTriggerRoar2, "OnStartTouch", "!activator,AddOutput,color 255 255 255,10,-1"); + fOriginTemp[0] = fOrigin[0] - 15.5; + fOriginTemp[1] = fOrigin[1] + 5.0; + fOriginTemp[2] = fOrigin[2] + 31.0; + DispatchKeyValueVector(iTriggerRoar2, "origin", fOriginTemp); + DispatchSpawn(iTriggerRoar2); + ActivateEntity(iTriggerRoar2); + SetEntityModel(iTriggerRoar2, "models/vortigaunt_slave.mdl"); + float fMinbounds7[3] = {-736.0, -736.0, -560.0}; + float fMaxbounds7[3] = {736.0, 736.0, 560.0}; + SetEntPropVector(iTriggerRoar2, Prop_Send, "m_vecMins", fMinbounds7); + SetEntPropVector(iTriggerRoar2, Prop_Send, "m_vecMaxs", fMaxbounds7); + SetEntProp(iTriggerRoar2, Prop_Send, "m_nSolidType", 3); + int enteffects7 = GetEntProp(iTriggerRoar2, Prop_Send, "m_fEffects"); + enteffects7 |= 32; + SetEntProp(iTriggerRoar2, Prop_Send, "m_fEffects", enteffects7); + SetVariantString("!activator"); + AcceptEntityInput(iTriggerRoar2, "SetParent", iKnife); + + // trigger_hurt attack + int iKillTriggerAttack = CreateEntityByName("trigger_hurt"); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d", g_iCounter); + DispatchKeyValue(iKillTriggerAttack, "targetname", sBuffer); + DispatchKeyValue(iKillTriggerAttack, "spawnflags", "9"); + DispatchKeyValue(iKillTriggerAttack, "startdisabled", "1"); + DispatchKeyValue(iKillTriggerAttack, "filtername", "item_spawn_human_filter"); + DispatchKeyValue(iKillTriggerAttack, "damagetype", "128"); + DispatchKeyValue(iKillTriggerAttack, "damagemodel", "0"); + DispatchKeyValue(iKillTriggerAttack, "damagecap", "20"); + DispatchKeyValue(iKillTriggerAttack, "damage", "500"); + fOriginTemp[0] = fOrigin[0] + 360.5; + fOriginTemp[1] = fOrigin[1] - 58.74; + fOriginTemp[2] = fOrigin[2] + 35.6; + DispatchKeyValueVector(iKillTriggerAttack, "origin", fOriginTemp); + DispatchSpawn(iKillTriggerAttack); + ActivateEntity(iKillTriggerAttack); + SetEntityModel(iKillTriggerAttack, "models/vortigaunt_slave.mdl"); + float fMinbounds8[3] = {-152.0, -256.0, -71.5}; + float fMaxbounds8[3] = {152.0, 256.0, 71.5}; + SetEntPropVector(iKillTriggerAttack, Prop_Send, "m_vecMins", fMinbounds8); + SetEntPropVector(iKillTriggerAttack, Prop_Send, "m_vecMaxs", fMaxbounds8); + SetEntProp(iKillTriggerAttack, Prop_Send, "m_nSolidType", 3); + int enteffects8 = GetEntProp(iKillTriggerAttack, Prop_Send, "m_fEffects"); + enteffects8 |= 32; + SetEntProp(iKillTriggerAttack, Prop_Send, "m_fEffects", enteffects8); + SetVariantString("!activator"); + AcceptEntityInput(iKillTriggerAttack, "SetParent", iKnife); + + // Sound 1 + int iSound1 = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "balrog_sound1_%d", g_iCounter); + DispatchKeyValue(iSound1, "targetname", sBuffer); + DispatchKeyValue(iSound1, "spawnflags", "49"); + DispatchKeyValue(iSound1, "radius", "8250"); + Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); + DispatchKeyValue(iSound1, "SourceEntityName", sBuffer); + DispatchKeyValue(iSound1, "message", "unloze/balrog_scream.mp3"); + DispatchKeyValue(iSound1, "volume", "10"); + DispatchKeyValue(iSound1, "health", "10"); + DispatchKeyValue(iSound1, "pitch", "100"); + DispatchKeyValue(iSound1, "pitchstart", "100"); + DispatchSpawn(iSound1); + ActivateEntity(iSound1); + SetVariantString("!activator"); + AcceptEntityInput(iSound1, "SetParent", iKnife); + + // Sound 2 + int iSound2 = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "balrog_sound2_%d", g_iCounter); + DispatchKeyValue(iSound2, "targetname", sBuffer); + DispatchKeyValue(iSound2, "spawnflags", "48"); + DispatchKeyValue(iSound2, "radius", "8250"); + Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); + DispatchKeyValue(iSound2, "SourceEntityName", sBuffer); + DispatchKeyValue(iSound2, "message", "npc/strider/strider_step2.wav"); + DispatchKeyValue(iSound2, "volume", "10"); + DispatchKeyValue(iSound2, "health", "10"); + DispatchKeyValue(iSound2, "pitch", "100"); + DispatchKeyValue(iSound2, "pitchstart", "100"); + DispatchSpawn(iSound2); + ActivateEntity(iSound2); + SetVariantString("!activator"); + AcceptEntityInput(iSound2, "SetParent", iKnife); + + // Sound 3 + int iSound3 = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "balrog_sound3_%d", g_iCounter); + DispatchKeyValue(iSound3, "targetname", sBuffer); + DispatchKeyValue(iSound3, "spawnflags", "48"); + DispatchKeyValue(iSound3, "radius", "8250"); + Format(sBuffer, sizeof(sBuffer), "balrog_knife_%d", g_iCounter); + DispatchKeyValue(iSound3, "SourceEntityName", sBuffer); + DispatchKeyValue(iSound3, "message", "npc/strider/strider_skewer1.wav"); + DispatchKeyValue(iSound3, "volume", "10"); + DispatchKeyValue(iSound3, "health", "10"); + DispatchKeyValue(iSound3, "pitch", "100"); + DispatchKeyValue(iSound3, "pitchstart", "100"); + DispatchSpawn(iSound3); + ActivateEntity(iSound3); + SetVariantString("!activator"); + AcceptEntityInput(iSound3, "SetParent", iKnife); + + // Timer + int iTimer = CreateEntityByName("logic_timer"); + Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d", g_iCounter); + DispatchKeyValue(iTimer, "targetname", sBuffer); + DispatchKeyValue(iTimer, "spawnflags", "0"); + DispatchKeyValue(iTimer, "startdisabled", "1"); + DispatchKeyValue(iTimer, "UseRandomTime", "0"); + DispatchKeyValue(iTimer, "RefireTime", "0.95"); + Format(sBuffer, sizeof(sBuffer), "balrog_sound2_%d,PlaySound,,0,-1", g_iCounter); + DispatchKeyValue(iTimer, "OnTimer", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iTimer, "OnTimer", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_walking_%d,Enable,,0.1,-1", g_iCounter); + DispatchKeyValue(iTimer, "OnTimer", sBuffer); + DispatchSpawn(iTimer); + ActivateEntity(iTimer); + SetVariantString("!activator"); + AcceptEntityInput(iTimer, "SetParent", iKnife); + + // Roar + int iRoar = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d", g_iCounter); + DispatchKeyValue(iRoar, "targetname", sBuffer); + DispatchKeyValue(iRoar, "spawnflags", "0"); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar2_%d,Disable,,4,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_groar,0,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Enable,,0,-1", g_iCounter); + //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,3.05,-1", g_iCounter); + //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,0.1,-1", g_iCounter); + //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,3.01,-1", g_iCounter); + //DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Enable,,4,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_sound1_%d,PlaySound,,1,-1", g_iCounter); + DispatchKeyValue(iRoar, "OnTrigger", sBuffer); + //DispatchKeyValue(iRoar, "OnTrigger", "!activator,AddOutput,gravity 2,0,-1"); + DispatchKeyValue(iRoar, "OnTrigger", "!self,Disable,,0,-1"); + DispatchKeyValue(iRoar, "OnTrigger", "!self,Enable,,25,-1"); + DispatchSpawn(iRoar); + ActivateEntity(iRoar); + SetVariantString("!activator"); + AcceptEntityInput(iRoar, "SetParent", iKnife); + + // Attack + int iAttack = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d", g_iCounter); + DispatchKeyValue(iAttack, "targetname", sBuffer); + DispatchKeyValue(iAttack, "spawnflags", "0"); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_sound3_%d,PlaySound,,1,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Enable,,0,-1", g_iCounter); + //DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_trigger_roar1_%d,Disable,,0.1,-1", g_iCounter); + //DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d,Enable,,1.75,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_attack_%d,Disable,,2.2,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Enable,,4,-1", g_iCounter); + DispatchKeyValue(iAttack, "OnTrigger", sBuffer); + //DispatchKeyValue(iAttack, "OnTrigger", "!activator,AddOutput,gravity 2,0,-1"); + DispatchKeyValue(iAttack, "OnTrigger", "!self,Disable,,0,-1"); + DispatchKeyValue(iAttack, "OnTrigger", "!self,Enable,,4.1,-1"); + DispatchSpawn(iAttack); + ActivateEntity(iAttack); + SetVariantString("!activator"); + AcceptEntityInput(iAttack, "SetParent", iKnife); + + // Physbox + int iPhysbox = CreateEntityByName("func_physbox_multiplayer"); + Format(sBuffer, sizeof(sBuffer), "balrog_physbox_%d", g_iCounter); + DispatchKeyValue(iPhysbox, "targetname", sBuffer); + DispatchKeyValue(iPhysbox, "spawnflags", "574464"); + DispatchKeyValue(iPhysbox, "rendermode", "0"); + DispatchKeyValue(iPhysbox, "renderfx", "0"); + DispatchKeyValue(iPhysbox, "rendercolor", "255 255 255"); + DispatchKeyValue(iPhysbox, "renderamt", "255 255 255"); + DispatchKeyValue(iPhysbox, "propdata", "0"); + DispatchKeyValue(iPhysbox, "pressuredelay", "0"); + DispatchKeyValue(iPhysbox, "preferredcarryangles", "0 0 0"); + DispatchKeyValue(iPhysbox, "PerformanceMode", "0"); + DispatchKeyValue(iPhysbox, "notsolid", "0"); + DispatchKeyValue(iPhysbox, "nodamageforces", "0"); + DispatchKeyValue(iPhysbox, "material", "0"); + DispatchKeyValue(iPhysbox, "massScale", "0"); + DispatchKeyValue(iPhysbox, "health", "32500"); + DispatchKeyValue(iPhysbox, "gibdir", "0 0 0"); + DispatchKeyValue(iPhysbox, "forcetoenablemotion", "0"); + DispatchKeyValue(iPhysbox, "explosion", "0"); + DispatchKeyValue(iPhysbox, "ExplodeRadius", "0"); + DispatchKeyValue(iPhysbox, "explodemagnitude", "0"); + DispatchKeyValue(iPhysbox, "ExplodeDamage", "0"); + DispatchKeyValue(iPhysbox, "disableshadows", "1"); + DispatchKeyValue(iPhysbox, "disablereceiveshadows", "0"); + DispatchKeyValue(iPhysbox, "Damagetype", "0"); + DispatchKeyValue(iPhysbox, "damagetoenablemotion", "0"); + DispatchKeyValue(iPhysbox, "damagefilter", "item_spawn_human_filter"); + DispatchKeyValue(iPhysbox, "model", "models/props/cs_militia/crate_extrasmallmill.mdl"); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,EmitBlood,,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnDamaged", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,ClearParent,,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetAnimation,balrog_death,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_model_%d,SetDefaultAnimation,balrog_death_idle,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d,Enable,,1,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_kill_trigger_%d,Disable,,2,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_timer_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iPhysbox, "OnBreak", sBuffer); + fOriginTemp[0] = fOrigin[0] + 44.0; + fOriginTemp[1] = fOrigin[1] - 18.74; + fOriginTemp[2] = fOrigin[2] + 126.89; + DispatchKeyValueVector(iPhysbox, "origin", fOriginTemp); + DispatchSpawn(iPhysbox); + ActivateEntity(iPhysbox); + float fMinbounds3[3] = {-124.0, -120.0, -188.2}; + float fMaxbounds3[3] = {124.0, 120.0, 188.2}; + SetEntPropVector(iPhysbox, Prop_Send, "m_vecMins", fMinbounds3); + SetEntPropVector(iPhysbox, Prop_Send, "m_vecMaxs", fMaxbounds3); + SetEntProp(iPhysbox, Prop_Send, "m_nSolidType", 3); + int enteffects3 = GetEntProp(iPhysbox, Prop_Send, "m_fEffects"); + enteffects3 |= 32; + SetEntProp(iPhysbox, Prop_Send, "m_fEffects", enteffects3); + SetVariantString("!activator"); + AcceptEntityInput(iPhysbox, "SetParent", iKnife); + HookSingleEntityOutput(iPhysbox, "OnBreak", BalrogKill, true); + + // Game UI + int iUI = CreateEntityByName("game_ui"); + Format(sBuffer, sizeof(sBuffer), "balrog_ui_%d", g_iCounter); + DispatchKeyValue(iUI, "targetname", sBuffer); + DispatchKeyValue(iUI, "spawnflags", "0"); + DispatchKeyValue(iUI, "FieldOfView", "-1.0"); + Format(sBuffer, sizeof(sBuffer), "balrog_relay2_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack", sBuffer); + Format(sBuffer, sizeof(sBuffer), "balrog_relay1_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack2", sBuffer); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0,-1"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.1,-1"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.2,-1"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0.3,-1"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0.8,3.0,-1"); + DispatchKeyValue(iUI, "PressedAttack", "item_spawn_speed,ModifySpeed,0,0,-1"); + DispatchKeyValue(iUI, "PressedAttack", "item_spawn_speed,ModifySpeed,0.8,3.0,-1"); + DispatchSpawn(iUI); + ActivateEntity(iUI); + SetVariantString("!activator"); + AcceptEntityInput(iUI, "SetParent", iKnife); + + // enable pickup trigger + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "Enable"); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SpawnTNT(float fOrigin[3]) +{ + char sBuffer[256]; + float fOriginTemp[3]; + + // Knife + int iKnife = CreateEntityByName("weapon_knife"); + Format(sBuffer, sizeof(sBuffer), "tnt_knife_%d", g_iCounter); + DispatchKeyValue(iKnife, "targetname", sBuffer); + Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); + DispatchKeyValue(iKnife, "hammerid", sBuffer); + DispatchKeyValue(iKnife, "spawnflags", "1"); + DispatchKeyValue(iKnife, "angles", "0 0 0"); + DispatchKeyValueVector(iKnife, "origin", fOrigin); + Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d,Activate,,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,0,1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + DispatchSpawn(iKnife); + ActivateEntity(iKnife); + HookSingleEntityOutput(iKnife, "OnPlayerPickup", TNTPickup, true); + + // Model + int iModel = CreateEntityByName("prop_dynamic"); + Format(sBuffer, sizeof(sBuffer), "tnt_model_%d", g_iCounter); + DispatchKeyValue(iModel, "targetname", sBuffer); + DispatchKeyValue(iModel, "model", "models/props/furnitures/humans/barrel01b.mdl"); + DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); + DispatchKeyValue(iModel, "angles", "0.432793 271.953 -12.4926"); + DispatchKeyValue(iModel, "solid", "0"); + DispatchKeyValue(iModel, "OnUser1", "!self,IgniteLifetime,0,0,-1"); + DispatchKeyValue(iModel, "OnUser1", "!self,FireUser1,,0.2,-1"); + fOriginTemp[0] = fOrigin[0] - 30.16; + fOriginTemp[1] = fOrigin[1] - 2.0; + fOriginTemp[2] = fOrigin[2] - 9.2; + DispatchKeyValueVector(iModel, "origin", fOriginTemp); + DispatchSpawn(iModel); + ActivateEntity(iModel); + SetVariantString("!activator"); + AcceptEntityInput(iModel, "SetParent", iKnife); + SetVariantString("9999999"); + AcceptEntityInput(iModel, "SetHealth"); + AcceptEntityInput(iModel, "FireUser1"); + + // pickup trigger_once + int iTrigger = CreateEntityByName("trigger_once"); + Format(sBuffer, sizeof(sBuffer), "tnt_trigger_%d", g_iCounter); + DispatchKeyValue(iTrigger, "targetname", sBuffer); + DispatchKeyValue(iTrigger, "spawnflags", "1"); + DispatchKeyValue(iTrigger, "startdisabled", "1"); + DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); + DispatchKeyValueVector(iTrigger, "origin", fOrigin); + DispatchSpawn(iTrigger); + ActivateEntity(iTrigger); + SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds[3] = {-10.0, -10.0, -36.0}; + float fMaxbounds[3] = {10.0, 10.0, 36.0}; + SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); + SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); + SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "SetParent", iKnife); + + // Sparks + int iSparksHolder = CreateEntityByName("env_spark"); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d", g_iCounter); + DispatchKeyValue(iSparksHolder, "targetname", sBuffer); + DispatchKeyValue(iSparksHolder, "TrailLength", "1"); + DispatchKeyValue(iSparksHolder, "spawnflags", "0"); + DispatchKeyValue(iSparksHolder, "angles", "0 0 0"); + DispatchKeyValue(iSparksHolder, "MaxDelay", "0"); + DispatchKeyValue(iSparksHolder, "Magnitude", "1"); + fOriginTemp[0] = fOrigin[0] - 22.0; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] + 36.0; + DispatchKeyValueVector(iSparksHolder, "origin", fOriginTemp); + DispatchSpawn(iSparksHolder); + ActivateEntity(iSparksHolder); + SetVariantString("!activator"); + AcceptEntityInput(iSparksHolder, "SetParent", iKnife); + + // Sprite + int iSprite = CreateEntityByName("env_sprite"); + Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d", g_iCounter); + DispatchKeyValue(iSprite, "targetname", sBuffer); + DispatchKeyValue(iSprite, "spawnflags", "0"); + DispatchKeyValue(iSprite, "spawnflags", "0"); + DispatchKeyValue(iSprite, "scale", "0.1"); + DispatchKeyValue(iSprite, "rendermode", "5"); + DispatchKeyValue(iSprite, "renderfx", "0"); + DispatchKeyValue(iSprite, "model", "sprites/640_train.vmt"); + fOriginTemp[0] = fOrigin[0] + 31.0; + fOriginTemp[1] = fOrigin[1] + 1.73; + fOriginTemp[2] = fOrigin[2] + 4.3; + DispatchKeyValueVector(iSprite, "origin", fOriginTemp); + DispatchSpawn(iSprite); + ActivateEntity(iSprite); + SetVariantString("!activator"); + AcceptEntityInput(iSprite, "SetParent", iKnife); + + // Push + int iPush = CreateEntityByName("trigger_push"); + Format(sBuffer, sizeof(sBuffer), "tnt_push_%d", g_iCounter); + DispatchKeyValue(iPush, "targetname", sBuffer); + DispatchKeyValue(iPush, "spawnflags", "8"); + DispatchKeyValue(iPush, "startdisabled", "1"); + DispatchKeyValue(iPush, "speed", "18000"); + DispatchKeyValue(iPush, "pushdir", "-60 0 0"); + fOriginTemp[0] = fOrigin[0] + 79.46; + fOriginTemp[1] = fOrigin[1] - 0.0; + fOriginTemp[2] = fOrigin[2] + 15.76; + DispatchKeyValueVector(iPush, "origin", fOriginTemp); + DispatchSpawn(iPush); + ActivateEntity(iPush); + SetEntityModel(iPush, "models/vortigaunt_slave.mdl"); + float fMinbounds2[3] = {-36.0, -12.0, -25.0}; + float fMaxbounds2[3] = {36.0, 12.0, 25.0}; + SetEntPropVector(iPush, Prop_Send, "m_vecMins", fMinbounds2); + SetEntPropVector(iPush, Prop_Send, "m_vecMaxs", fMaxbounds2); + SetEntProp(iPush, Prop_Send, "m_nSolidType", 3); + int enteffects2 = GetEntProp(iPush, Prop_Send, "m_fEffects"); + enteffects2 |= 32; + SetEntProp(iPush, Prop_Send, "m_fEffects", enteffects2); + SetVariantString("!activator"); + AcceptEntityInput(iPush, "SetParent", iKnife); + + // Relay Trigger + int iRelayTrigger = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d", g_iCounter); + DispatchKeyValue(iRelayTrigger, "targetname", sBuffer); + DispatchKeyValue(iRelayTrigger, "spawnflags", "0"); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); + DispatchSpawn(iRelayTrigger); + ActivateEntity(iRelayTrigger); + SetVariantString("!activator"); + AcceptEntityInput(iRelayTrigger, "SetParent", iKnife); + + // Launch Compare + int iLaunchCompare = CreateEntityByName("logic_compare"); + Format(sBuffer, sizeof(sBuffer), "tnt_compare_launch_%d", g_iCounter); + DispatchKeyValue(iLaunchCompare, "targetname", sBuffer); + DispatchKeyValue(iLaunchCompare, "InitialValue", "1"); + DispatchKeyValue(iLaunchCompare, "CompareValue", "0"); + DispatchKeyValue(iLaunchCompare, "OnEqualTo", "!self,SetValue,1,0,-1"); + Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d,HideSprite,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); + DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", "!self,SetValue,0,0,-1"); + Format(sBuffer, sizeof(sBuffer), "tnt_sprite_%d,ShowSprite,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); + DispatchKeyValueVector(iLaunchCompare, "origin", fOrigin); + DispatchSpawn(iLaunchCompare); + ActivateEntity(iLaunchCompare); + SetVariantString("!activator"); + AcceptEntityInput(iLaunchCompare, "SetParent", iKnife); + + // Relay Launch + int iRelayLaunch = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_%d", g_iCounter); + DispatchKeyValue(iRelayLaunch, "targetname", sBuffer); + DispatchKeyValue(iRelayLaunch, "spawnflags", "0"); + DispatchKeyValue(iRelayLaunch, "StartDisabled", "0"); + DispatchKeyValueVector(iRelayLaunch, "origin", fOrigin); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Enable,,20,-1", g_iCounter); + DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StopSpark,,0,-1", g_iCounter); + DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,20,-1", g_iCounter); + DispatchKeyValue(iRelayLaunch, "OnTrigger", sBuffer); + DispatchSpawn(iRelayLaunch); + ActivateEntity(iRelayLaunch); + SetVariantString("!activator"); + AcceptEntityInput(iRelayLaunch, "SetParent", iKnife); + HookSingleEntityOutput(iRelayLaunch, "OnTrigger", TNTUse, false); + + // Relay Launch Up + int iRelayLaunchUp = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_launch_up_%d", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "targetname", sBuffer); + DispatchKeyValue(iRelayLaunchUp, "spawnflags", "0"); + DispatchKeyValue(iRelayLaunchUp, "StartDisabled", "1"); + DispatchKeyValueVector(iRelayLaunchUp, "origin", fOrigin); + Format(sBuffer, sizeof(sBuffer), "tnt_push_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_push_%d,Disable,,0.5,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Enable,,20,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StopSpark,,0,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,20,-1", g_iCounter); + DispatchKeyValue(iRelayLaunchUp, "OnTrigger", sBuffer); + DispatchSpawn(iRelayLaunchUp); + ActivateEntity(iRelayLaunchUp); + SetVariantString("!activator"); + AcceptEntityInput(iRelayLaunchUp, "SetParent", iKnife); + HookSingleEntityOutput(iRelayLaunchUp, "OnTrigger", TNTUse, false); + + // Game UI + int iUI = CreateEntityByName("game_ui"); + Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d", g_iCounter); + DispatchKeyValue(iUI, "targetname", sBuffer); + DispatchKeyValue(iUI, "spawnflags", "0"); + DispatchKeyValue(iUI, "FieldOfView", "-1.0"); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_trigger_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack2", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_compare_launch_%d,Compare,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack", sBuffer); + DispatchSpawn(iUI); + ActivateEntity(iUI); + SetVariantString("!activator"); + AcceptEntityInput(iUI, "SetParent", iKnife); + + // enable pickup trigger + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "Enable"); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void SpawnHumanDog(float fOrigin[3]) +{ + char sBuffer[256]; + float fOriginTemp[3]; + + // Knife + int iKnife = CreateEntityByName("weapon_knife"); + Format(sBuffer, sizeof(sBuffer), "human_dog_knife_%d", g_iCounter); + DispatchKeyValue(iKnife, "targetname", sBuffer); + Format(sBuffer, sizeof(sBuffer), "11051995%d", g_iCounter); + DispatchKeyValue(iKnife, "hammerid", sBuffer); + DispatchKeyValue(iKnife, "spawnflags", "1"); + DispatchKeyValue(iKnife, "angles", "0 0 0"); + DispatchKeyValueVector(iKnife, "origin", fOrigin); + //DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); + Format(sBuffer, sizeof(sBuffer), "human_dog_ui_%d,Activate,,0,-1", g_iCounter); + DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); + DispatchSpawn(iKnife); + ActivateEntity(iKnife); + HookSingleEntityOutput(iKnife, "OnPlayerPickup", HumanDogPickup, true); + + // Model + int iModel = CreateEntityByName("prop_dynamic"); + Format(sBuffer, sizeof(sBuffer), "human_dog_model_%d", g_iCounter); + DispatchKeyValue(iModel, "targetname", sBuffer); + DispatchKeyValue(iModel, "model", "models/player/pil/re1/dog/dog_pil.mdl"); + DispatchKeyValue(iModel, "DisableBoneFollowers", "1"); + DispatchKeyValue(iModel, "angles", "0 0 0"); + DispatchKeyValue(iModel, "solid", "0"); + DispatchKeyValue(iModel, "skin", "1"); + DispatchKeyValue(iModel, "DefaultAnim", "Run_lower"); + fOriginTemp[0] = fOrigin[0] + 10.4; + fOriginTemp[1] = fOrigin[1] - 2.0; + fOriginTemp[2] = fOrigin[2] - 40.32; + DispatchKeyValueVector(iModel, "origin", fOriginTemp); + DispatchSpawn(iModel); + ActivateEntity(iModel); + SetVariantString("!activator"); + AcceptEntityInput(iModel, "SetParent", iKnife); + + // pickup trigger_once + int iTrigger = CreateEntityByName("trigger_once"); + Format(sBuffer, sizeof(sBuffer), "tnt_trigger_%d", g_iCounter); + DispatchKeyValue(iTrigger, "targetname", sBuffer); + DispatchKeyValue(iTrigger, "spawnflags", "1"); + DispatchKeyValue(iTrigger, "startdisabled", "1"); + DispatchKeyValue(iTrigger, "filtername", "item_spawn_human_filter"); + DispatchKeyValue(iTrigger, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); + DispatchKeyValueVector(iTrigger, "origin", fOrigin); + DispatchSpawn(iTrigger); + ActivateEntity(iTrigger); + SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds[3] = {-1.0, -1.0, -10.0}; + float fMaxbounds[3] = {1.0, 1.0, 10.0}; + SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); + SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); + SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "SetParent", iKnife); + + // Relay Trigger + int iRelayTrigger = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger_%d", g_iCounter); + DispatchKeyValue(iRelayTrigger, "targetname", sBuffer); + DispatchKeyValue(iRelayTrigger, "spawnflags", "0"); + Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger2_%d,Trigger,,0,4", g_iCounter); + DispatchKeyValue(iRelayTrigger, "OnTrigger", sBuffer); + DispatchSpawn(iRelayTrigger); + ActivateEntity(iRelayTrigger); + SetVariantString("!activator"); + AcceptEntityInput(iRelayTrigger, "SetParent", iKnife); + + // Relay Trigger2 + int iRelayTrigger2 = CreateEntityByName("logic_relay"); + Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger2_%d", g_iCounter); + DispatchKeyValue(iRelayTrigger2, "targetname", sBuffer); + DispatchKeyValue(iRelayTrigger2, "spawnflags", "0"); + DispatchSpawn(iRelayTrigger2); + ActivateEntity(iRelayTrigger2); + SetVariantString("!activator"); + AcceptEntityInput(iRelayTrigger2, "SetParent", iKnife); + HookSingleEntityOutput(iRelayTrigger2, "OnTrigger", HumanDogUse, false); + + // Game UI + int iUI = CreateEntityByName("game_ui"); + Format(sBuffer, sizeof(sBuffer), "human_dog_ui_%d", g_iCounter); + DispatchKeyValue(iUI, "targetname", sBuffer); + DispatchKeyValue(iUI, "spawnflags", "0"); + DispatchKeyValue(iUI, "FieldOfView", "-1.0"); + Format(sBuffer, sizeof(sBuffer), "human_dog_relay_trigger_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack2", sBuffer); + DispatchSpawn(iUI); + ActivateEntity(iUI); + SetVariantString("!activator"); + AcceptEntityInput(iUI, "SetParent", iKnife); + + // enable pickup trigger + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "Enable"); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void VortigauntPickup(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[128]; + Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Vortigaunt **", activator); + SetVariantString(sBuffer); + AcceptEntityInput(g_iConsole, "Command"); + + PrintToChat(activator, "Right Click to Pull Humans in front of you."); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void BalrogPickup(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[128]; + Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Balrog **", activator); + SetVariantString(sBuffer); + AcceptEntityInput(g_iConsole, "Command"); + PrintToChat(activator, " RIGHT CLICK = MOTIVATE ZOMBIES and LEFT CLICK = ATTACK."); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void BalrogKill(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[128]; + Format(sBuffer, sizeof(sBuffer), "say ** %N has killed the Balrog **", activator); + SetVariantString(sBuffer); + AcceptEntityInput(g_iConsole, "Command"); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TNTPickup(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[128]; + Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up TNT **", activator); + SetVariantString(sBuffer); + AcceptEntityInput(g_iConsole, "Command"); + PrintToChat(activator, " RIGHT CLICK = Launch TNT and LEFT CLICK = Switch between 'put down' and 'throw'."); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void TNTUse(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[256]; + float fOrigin[3]; + float fAngles[3]; + + GetClientEyeAngles(activator, fAngles); + GetClientEyePosition(activator, fOrigin); + fAngles[0] = 0.0; + fAngles[2] = 0.0; + fOrigin[0] = fOrigin[0] + Cosine(DegToRad(fAngles[1])) * 46.63; + fOrigin[1] = fOrigin[1] + Sine(DegToRad(fAngles[1])) * 46.63; + fOrigin[2] = fOrigin[2] - 29.86; + + // Prop + int iProp = CreateEntityByName("prop_physics_multiplayer"); + Format(sBuffer, sizeof(sBuffer), "tnt_prop_%d", g_iCounter); + DispatchKeyValue(iProp, "targetname", sBuffer); + DispatchKeyValue(iProp, "model", "models/props/furnitures/humans/barrel01b.mdl"); + DispatchKeyValue(iProp, "spawnflags", "256"); + DispatchKeyValue(iProp, "physdamagescale", "0.1"); + DispatchKeyValue(iProp, "PerformanceMode", "0"); + DispatchKeyValue(iProp, "nodamageforces", "0"); + DispatchKeyValue(iProp, "solid", "6"); + DispatchKeyValue(iProp, "minhealthdmg", "999999"); + DispatchKeyValue(iProp, "health", "999999"); + DispatchKeyValueVector(iProp, "origin", fOrigin); + Format(sBuffer, sizeof(sBuffer), "tnt_fire_%d,StartFire,,3,1", g_iCounter); + DispatchKeyValue(iProp, "OnUser1", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_explosion_%d,Explode,,6.5,1", g_iCounter); + DispatchKeyValue(iProp, "OnUser1", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_sound_%d,PlaySound,,6.5,1", g_iCounter); + DispatchKeyValue(iProp, "OnUser1", sBuffer); + Format(sBuffer, sizeof(sBuffer), "!self,Kill,,6.6,1", g_iCounter); + DispatchKeyValue(iProp, "OnUser1", sBuffer); + DispatchSpawn(iProp); + ActivateEntity(iProp); + AcceptEntityInput(iProp, "FireUser1"); + + // Sparks + int iSparks = CreateEntityByName("env_spark"); + Format(sBuffer, sizeof(sBuffer), "tnt_sparks_%d", g_iCounter); + DispatchKeyValue(iSparks, "targetname", sBuffer); + DispatchKeyValue(iSparks, "TrailLength", "1"); + DispatchKeyValue(iSparks, "spawnflags", "64"); + DispatchKeyValue(iSparks, "angles", "0 0 0"); + DispatchKeyValue(iSparks, "MaxDelay", "0"); + DispatchKeyValue(iSparks, "Magnitude", "1"); + DispatchKeyValueVector(iSparks, "origin", fOrigin); + DispatchSpawn(iSparks); + ActivateEntity(iSparks); + SetVariantString("!activator"); + AcceptEntityInput(iSparks, "SetParent", iProp); + + // Fire + int iFire = CreateEntityByName("env_fire"); + Format(sBuffer, sizeof(sBuffer), "tnt_fire_%d", g_iCounter); + DispatchKeyValue(iFire, "targetname", sBuffer); + DispatchKeyValue(iFire, "ignitionpoint", "32"); + DispatchKeyValue(iFire, "spawnflags", "17"); + DispatchKeyValue(iFire, "health", "30"); + DispatchKeyValue(iFire, "firesize", "64"); + DispatchKeyValue(iFire, "fireattack", "4"); + DispatchKeyValue(iFire, "damagescale", "1.0"); + DispatchKeyValueVector(iFire, "origin", fOrigin); + DispatchSpawn(iFire); + ActivateEntity(iFire); + SetVariantString("!activator"); + AcceptEntityInput(iFire, "SetParent", iProp); + + // Explosion + int iExplosion = CreateEntityByName("env_explosion"); + Format(sBuffer, sizeof(sBuffer), "tnt_explosion_%d", g_iCounter); + DispatchKeyValue(iExplosion, "targetname", sBuffer); + DispatchKeyValue(iExplosion, "fireballsprite", "sprites/zerogxplode.spr"); + DispatchKeyValue(iExplosion, "iMagnitude", "220"); + DispatchKeyValue(iExplosion, "iRadiusOverride", "1024"); + DispatchKeyValue(iExplosion, "rendermode", "5"); + DispatchKeyValue(iExplosion, "spawnflags", "16"); + DispatchKeyValueVector(iExplosion, "origin", fOrigin); + DispatchSpawn(iExplosion); + ActivateEntity(iExplosion); + SetVariantString("!activator"); + AcceptEntityInput(iExplosion, "SetParent", iProp); + + // Sound + int iSound = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "tnt_sound_%d", g_iCounter); + DispatchKeyValue(iSound, "targetname", sBuffer); + DispatchKeyValue(iSound, "spawnflags", "48"); + DispatchKeyValue(iSound, "radius", "9800"); + DispatchKeyValue(iSound, "message", "ambient/explosions/explode_9.wav"); + DispatchKeyValue(iSound, "volume", "10"); + DispatchKeyValue(iSound, "health", "10"); + DispatchKeyValue(iSound, "pitch", "100"); + DispatchKeyValue(iSound, "pitchstart", "100"); + DispatchKeyValueVector(iSound, "origin", fOrigin); + DispatchSpawn(iSound); + ActivateEntity(iSound); + SetVariantString("!activator"); + AcceptEntityInput(iSound, "SetParent", iProp); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void HumanDogPickup(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[128]; + Format(sBuffer, sizeof(sBuffer), "say ** %N has picked up Human Dog **", activator); + SetVariantString(sBuffer); + AcceptEntityInput(g_iConsole, "Command"); + PrintToChat(activator, "RIGHT CLICK with your KNIFE to leave a present for the Zombies (max 4)"); + CreateTimer(2.0, EquipWeapons, GetClientUserId(activator), TIMER_FLAG_NO_MAPCHANGE); +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public void HumanDogUse(const char[] output, int caller, int activator, float delay) +{ + char sBuffer[256]; + float fOrigin[3]; + float fAngles[3]; + GetClientEyeAngles(activator, fAngles); + GetClientEyePosition(activator, fOrigin); + fAngles[0] = 0.0; + fAngles[2] = 0.0; + fOrigin[0] = fOrigin[0] + Cosine(DegToRad(fAngles[1])) * -50.0; + fOrigin[1] = fOrigin[1] + Sine(DegToRad(fAngles[1])) * -50.0; + fOrigin[2] = fOrigin[2] - 62.00; + + // Prop + int iProp = CreateEntityByName("prop_dynamic"); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_%d", g_iCounter); + DispatchKeyValue(iProp, "targetname", sBuffer); + DispatchKeyValue(iProp, "model", "models/poo/curlygpoo.mdl"); + DispatchKeyValue(iProp, "spawnflags", "0"); + DispatchKeyValue(iProp, "PerformanceMode", "0"); + DispatchKeyValue(iProp, "solid", "0"); + DispatchKeyValueVector(iProp, "origin", fOrigin); + DispatchSpawn(iProp); + ActivateEntity(iProp); + + // trigger + int iTrigger = CreateEntityByName("trigger_once"); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_trigger_%d", g_iCounter); + DispatchKeyValue(iTrigger, "targetname", sBuffer); + DispatchKeyValue(iTrigger, "spawnflags", "1"); + DispatchKeyValue(iTrigger, "startdisabled", "0"); + DispatchKeyValue(iTrigger, "filtername", "item_spawn_zombie_filter"); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_%d,Kill,,1,1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d,Enable,,0,1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d,Disable,,0.25,1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d,Start,,0,-1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d,Kill,,1,-1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + Format(sBuffer, sizeof(sBuffer), "human_dog_sound_%d,PlaySound,,0,-1", g_iCounter); + DispatchKeyValue(iTrigger, "OnStartTouch", sBuffer); + DispatchKeyValueVector(iTrigger, "origin", fOrigin); + DispatchSpawn(iTrigger); + ActivateEntity(iTrigger); + SetEntityModel(iTrigger, "models/vortigaunt_slave.mdl"); + float fMinbounds[3] = {-12.0, -12.0, -7.5}; + float fMaxbounds[3] = {12.0, 12.0, 7.5}; + SetEntPropVector(iTrigger, Prop_Send, "m_vecMins", fMinbounds); + SetEntPropVector(iTrigger, Prop_Send, "m_vecMaxs", fMaxbounds); + SetEntProp(iTrigger, Prop_Send, "m_nSolidType", 2); + int enteffects = GetEntProp(iTrigger, Prop_Send, "m_fEffects"); + enteffects |= 32; + SetEntProp(iTrigger, Prop_Send, "m_fEffects", enteffects); + SetVariantString("!activator"); + AcceptEntityInput(iTrigger, "SetParent", iProp); + + // poo hurt + int iHurt = CreateEntityByName("trigger_hurt"); + Format(sBuffer, sizeof(sBuffer), "human_dog_poo_hurt_%d", g_iCounter); + DispatchKeyValue(iHurt, "targetname", sBuffer); + DispatchKeyValue(iHurt, "spawnflags", "1"); + DispatchKeyValue(iHurt, "startdisabled", "1"); + DispatchKeyValue(iHurt, "filtername", "item_spawn_zombie_filter"); + DispatchKeyValue(iHurt, "damagetype", "0"); + DispatchKeyValue(iHurt, "damagemodel", "0"); + DispatchKeyValue(iHurt, "damagecap", "20"); + DispatchKeyValue(iHurt, "damage", "8000"); + DispatchKeyValueVector(iHurt, "origin", fOrigin); + DispatchSpawn(iHurt); + ActivateEntity(iHurt); + SetEntityModel(iHurt, "models/vortigaunt_slave.mdl"); + float fMinbounds2[3] = {-96.0, -112.0, -142.0}; + float fMaxbounds2[3] = {96.0, 112.0, 142.0}; + SetEntPropVector(iHurt, Prop_Send, "m_vecMins", fMinbounds2); + SetEntPropVector(iHurt, Prop_Send, "m_vecMaxs", fMaxbounds2); + SetEntProp(iHurt, Prop_Send, "m_nSolidType", 3); + int enteffects2 = GetEntProp(iHurt, Prop_Send, "m_fEffects"); + enteffects2 |= 32; + SetEntProp(iHurt, Prop_Send, "m_fEffects", enteffects2); + SetVariantString("!activator"); + AcceptEntityInput(iHurt, "SetParent", iProp); + + // Particles + int iParticles = CreateEntityByName("info_particle_system"); + Format(sBuffer, sizeof(sBuffer), "human_dog_particles_%d", g_iCounter); + DispatchKeyValue(iParticles, "targetname", sBuffer); + DispatchKeyValue(iParticles, "effect_name", "fire_small_01"); + DispatchKeyValue(iParticles, "start_active", "0"); + DispatchKeyValueVector(iParticles, "origin", fOrigin); + DispatchSpawn(iParticles); + ActivateEntity(iParticles); + SetVariantString("!activator"); + AcceptEntityInput(iParticles, "SetParent", iProp); + + // Sound + int iSound = CreateEntityByName("ambient_generic"); + Format(sBuffer, sizeof(sBuffer), "human_dog_sound_%d", g_iCounter); + DispatchKeyValue(iSound, "targetname", sBuffer); + DispatchKeyValue(iSound, "spawnflags", "49"); + DispatchKeyValue(iSound, "radius", "1250"); + DispatchKeyValue(iSound, "message", "ambient/explosions/explode_9.wav"); + DispatchKeyValue(iSound, "volume", "10"); + DispatchKeyValue(iSound, "health", "10"); + DispatchKeyValue(iSound, "pitch", "100"); + DispatchKeyValue(iSound, "pitchstart", "100"); + DispatchKeyValueVector(iSound, "origin", fOrigin); + DispatchSpawn(iSound); + ActivateEntity(iSound); + SetVariantString("!activator"); + AcceptEntityInput(iSound, "SetParent", iProp); + + g_iCounter ++; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname="*") +{ + if(sTargetname[0] == '#') // HammerID + { + int HammerID = StringToInt(sTargetname[1]); + + while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) + { + if(GetEntProp(entity, Prop_Data, "m_iHammerID") == HammerID) + return entity; + } + } + else // Targetname + { + int Wildcard = FindCharInString(sTargetname, '*'); + char sTargetnameBuf[64]; + + while((entity = FindEntityByClassname(entity, sClassname)) != INVALID_ENT_REFERENCE) + { + if(GetEntPropString(entity, Prop_Data, "m_iName", sTargetnameBuf, sizeof(sTargetnameBuf)) <= 0) + continue; + + if(strncmp(sTargetnameBuf, sTargetname, Wildcard) == 0) + return entity; + } + } + + return INVALID_ENT_REFERENCE; +} + +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action EquipWeapons(Handle timer, any userid) +{ + int client = GetClientOfUserId(userid); + + if (client != 0) + { + GivePlayerItem(client, "weapon_p90"); + GivePlayerItem(client, "weapon_elite"); + GivePlayerItem(client, "item_kevlar"); + GivePlayerItem(client, "weapon_hegrenade"); + } +} \ No newline at end of file diff --git a/ItemSpawn/scripting/items/balrog.inc b/ItemSpawn/scripting/items/balrog.inc index e3cc58f7..635cb0ef 100644 --- a/ItemSpawn/scripting/items/balrog.inc +++ b/ItemSpawn/scripting/items/balrog.inc @@ -66,7 +66,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iKnife, "OnUser2", "item_balrog_walk_%d,Enable,,0.1,-1", g_iCounter); DispatchKeyFormat(iKnife, "OnUser2", "item_balrog_walk_sound_%d,PlaySound,,0,-1", g_iCounter); DispatchKeyFormat(iKnife, "OnUser2", "!self,FireUser2,,0.95,-1"); - ActivateAndSpawn(iKnife); + SpawnAndActivate(iKnife); HookSingleEntityOutput(iKnife, "OnPlayerPickup", BalrogPickup, true); @@ -83,7 +83,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iModel, "defaultanim", "crouch_walk_lower"); DispatchKeyFormat(iModel, "angles", "0 2 0"); DispatchKeyFormat(iModel, "solid", "0"); - ActivateAndSpawn(iModel); + SpawnAndActivate(iModel); ParentToEntity(iModel, iKnife); // trigger_once strip. @@ -93,7 +93,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iTriggerStrip, "spawnflags", "1"); DispatchKeyFormat(iTriggerStrip, "startdisabled", "1"); DispatchKeyFormat(iTriggerStrip, "OnStartTouch", "item_spawn_weaponstrip,StripWeaponsAndSuit,,0,1"); - ActivateAndSpawn(iTriggerStrip); + SpawnAndActivate(iTriggerStrip); ParentToEntity(iTriggerStrip, iKnife); // make the trigger work. @@ -112,7 +112,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iTriggerDeath, "damagemodel", "0"); DispatchKeyFormat(iTriggerDeath, "damagecap", "20"); DispatchKeyFormat(iTriggerDeath, "damage", "99999999"); - ActivateAndSpawn(iTriggerDeath); + SpawnAndActivate(iTriggerDeath); ParentToEntity(iTriggerDeath, iKnife); // make the trigger work. @@ -136,7 +136,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iTriggerWalk, "damagemodel", "0"); DispatchKeyFormat(iTriggerWalk, "damagecap", "20"); DispatchKeyFormat(iTriggerWalk, "damage", "190"); - ActivateAndSpawn(iTriggerWalk); + SpawnAndActivate(iTriggerWalk); ParentToEntity(iTriggerWalk, iKnife); // make the trigger work. @@ -166,7 +166,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iTriggerRoar, "OnStartTouch", "!activator,AddOutput,color 255 255 255,10,-1"); DispatchKeyFormat(iTriggerRoar, "OnStartTouch", "item_spawn_speedmod,ModifySpeed,1.5,0,-1"); DispatchKeyFormat(iTriggerRoar, "OnStartTouch", "item_spawn_speedmod,ModifySpeed,1.0,10,-1"); - ActivateAndSpawn(iTriggerRoar); + SpawnAndActivate(iTriggerRoar); ParentToEntity(iTriggerRoar, iKnife); // make the trigger work. @@ -174,7 +174,7 @@ public void SpawnBalrog(float fOrigin[3]) SetEntityBBox(iTriggerRoar, view_as({-736.0, -736.0, -560.0}), view_as({736.0, 736.0, 560.0})); SetEntitySolid(iTriggerRoar); SetEntityNodraw(iTriggerRoar); - + // attack origin. fOriginTemp[0] = fOrigin[0] + 360.5; fOriginTemp[1] = fOrigin[1] - 58.74; @@ -190,7 +190,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iTriggerAttack, "damagemodel", "0"); DispatchKeyFormat(iTriggerAttack, "damagecap", "20"); DispatchKeyFormat(iTriggerAttack, "damage", "500"); - ActivateAndSpawn(iTriggerAttack); + SpawnAndActivate(iTriggerAttack); ParentToEntity(iTriggerAttack, iKnife); // make the trigger work. @@ -210,7 +210,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iSoundWalk, "health", "10"); DispatchKeyFormat(iSoundWalk, "pitch", "100"); DispatchKeyFormat(iSoundWalk, "pitchstart", "100"); - ActivateAndSpawn(iSoundWalk); + SpawnAndActivate(iSoundWalk); ParentToEntity(iSoundWalk, iKnife); // ambient_generic roar. @@ -224,7 +224,7 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iSoundRoar, "health", "10"); DispatchKeyFormat(iSoundRoar, "pitch", "100"); DispatchKeyFormat(iSoundRoar, "pitchstart", "100"); - ActivateAndSpawn(iSoundRoar); + SpawnAndActivate(iSoundRoar); ParentToEntity(iSoundRoar, iKnife); // ambient_generic attack. @@ -238,54 +238,48 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iSoundAttack, "health", "10"); DispatchKeyFormat(iSoundAttack, "pitch", "100"); DispatchKeyFormat(iSoundAttack, "pitchstart", "100"); - ActivateAndSpawn(iSoundAttack); + SpawnAndActivate(iSoundAttack); ParentToEntity(iSoundAttack, iKnife); - // logic_relay roar. - int iRelayRoar = CreateEntityAtOrigin("logic_relay", fOrigin); - DispatchKeyFormat(iRelayRoar, "targetname", "item_balrog_roar_relay_%d", g_iCounter); + // logic_compare roar. + int iRelayRoar = CreateEntityAtOrigin("logic_compare", fOrigin); + DispatchKeyFormat(iRelayRoar, "targetname", "item_balrog_roar_compare_%d", g_iCounter); DispatchKeyFormat(iRelayRoar, "spawnflags", "0"); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_roar_relay_%d,Disable,,0,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_attack_relay_%d,Disable,,0,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_model_%d,SetAnimation,balrog_groar,0,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_roar_%d,Enable,,0,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_roar_%d,Disable,,4,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_roar_sound_%d,PlaySound,,1,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_roar_relay_%d,Enable,,25,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_balrog_attack_relay_%d,Enable,,4,-1", g_iCounter); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,0,-1"); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,1,-1"); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,2,-1"); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,3,-1"); - DispatchKeyFormat(iRelayRoar, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0.8,4,-1"); - ActivateAndSpawn(iRelayRoar); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "!self,SetValue,1,0,-1"); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "!self,SetValue,0,25,-1"); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_attack_compare_%d,SetCompareValue,-1,0,-1", g_iCounter); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_attack_compare_%d,SetCompareValue,0,4,-1", g_iCounter); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_spawn_speedmod,ModifySpeed,0,0,-1"); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_spawn_speedmod,ModifySpeed,0.8,4,-1"); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_model_%d,SetAnimation,balrog_groar,0,-1", g_iCounter); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_roar_sound_%d,PlaySound,,1,-1", g_iCounter); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_roar_%d,Enable,,0,-1", g_iCounter); + DispatchKeyFormat(iRelayRoar, "OnEqualTo", "item_balrog_roar_%d,Disable,,4,-1", g_iCounter); + SpawnAndActivate(iRelayRoar); ParentToEntity(iRelayRoar, iKnife); - // logic_relay attack. - int iRelayAttack = CreateEntityAtOrigin("logic_relay", fOrigin); - DispatchKeyFormat(iRelayAttack, "targetname", "item_balrog_attack_relay_%d", g_iCounter); + // logic_compare attack. + int iRelayAttack = CreateEntityAtOrigin("logic_compare", fOrigin); + DispatchKeyFormat(iRelayAttack, "targetname", "item_balrog_attack_compare_%d", g_iCounter); DispatchKeyFormat(iRelayAttack, "spawnflags", "0"); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_roar_relay_%d,Disable,,0,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_attack_relay_%d,Disable,,0,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_attack_%d,Enable,,1.75,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_attack_%d,Disable,,2.2,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_attack_sound_%d,PlaySound,,1,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_roar_relay_%d,Enable,,4,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_balrog_attack_relay_%d,Enable,,4,-1", g_iCounter); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,0,-1"); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,1,-1"); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,2,-1"); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0,3,-1"); - DispatchKeyFormat(iRelayAttack, "OnTrigger", "item_spawn_speedmod,ModifySpeed,0.8,4,-1"); - ActivateAndSpawn(iRelayAttack); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "!self,SetValue,1,0,-1"); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "!self,SetValue,0,4,-1"); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_roar_compare_%d,SetCompareValue,-1,0,-1", g_iCounter); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_roar_compare_%d,SetCompareValue,0,4,-1", g_iCounter); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_spawn_speedmod,ModifySpeed,0,0,-1"); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_spawn_speedmod,ModifySpeed,0.8,4,-1"); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_model_%d,SetAnimation,balrog_attack1,0,-1", g_iCounter); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_attack_sound_%d,PlaySound,,1,-1", g_iCounter); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_attack_%d,Enable,,1.75,-1", g_iCounter); + DispatchKeyFormat(iRelayAttack, "OnEqualTo", "item_balrog_attack_%d,Disable,,2.2,-1", g_iCounter); + SpawnAndActivate(iRelayAttack); ParentToEntity(iRelayAttack, iKnife); // health origin. fOriginTemp[0] = fOrigin[0] + 44.0; fOriginTemp[1] = fOrigin[1] - 18.74; fOriginTemp[2] = fOrigin[2] + 126.89; -/* + // func_physbox_multiplayer health. int iHealth = CreateEntityAtOrigin("func_physbox_multiplayer", fOriginTemp); DispatchKeyFormat(iHealth, "targetname", "item_balrog_health_%d", g_iCounter); @@ -321,14 +315,14 @@ public void SpawnBalrog(float fOrigin[3]) DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_walk_sound_%d,Kill,,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_roar_sound_%d,Kill,,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_attack_sound_%d,Kill,,0,-1", g_iCounter); - DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_roar_relay_%d,Kill,,0,-1", g_iCounter); - DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_attack_relay_%d,Kill,,0,-1", g_iCounter); + DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_roar_compare_%d,Kill,,0,-1", g_iCounter); + DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_attack_compare_%d,Kill,,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_model_%d,ClearParent,,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_model_%d,SetAnimation,balrog_death,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_model_%d,SetDefaultAnimation,balrog_death_idle,0,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_death_%d,Enable,,1,-1", g_iCounter); DispatchKeyFormat(iHealth, "OnBreak", "item_balrog_death_%d,Kill,,2,-1", g_iCounter); - ActivateAndSpawn(iHealth); + SpawnAndActivate(iHealth); ParentToEntity(iHealth, iKnife); // make the trigger work. @@ -338,14 +332,16 @@ public void SpawnBalrog(float fOrigin[3]) SetEntityNodraw(iHealth); HookSingleEntityOutput(iHealth, "OnBreak", BalrogKill, true); -*/ + // game_ui. int iControls = CreateEntityAtOrigin("game_ui", fOrigin); DispatchKeyFormat(iControls, "targetname", "item_balrog_ui_%d", g_iCounter); DispatchKeyFormat(iControls, "spawnflags", "0"); DispatchKeyFormat(iControls, "fieldofview", "-1.0"); - DispatchKeyFormat(iControls, "PressedAttack", "item_balrog_attack_relay_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyFormat(iControls, "PressedAttack2", "item_balrog_roar_relay_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyFormat(iControls, "PressedAttack", "item_balrog_attack_compare_%d,Compare,,0,-1", g_iCounter); + DispatchKeyFormat(iControls, "PressedAttack2", "item_balrog_roar_compare_%d,Compare,,0,-1", g_iCounter); + SpawnAndActivate(iControls); + ParentToEntity(iControls, iKnife); AcceptEntityInput(iTriggerStrip, "Enable"); g_iCounter++;