From 7b932be60f736a7f447271f24dc9c0b8b6e9d507 Mon Sep 17 00:00:00 2001 From: neon <> Date: Mon, 30 Jul 2018 23:09:08 +0200 Subject: [PATCH] for real this time --- ItemSpawn/scripting/ItemSpawn.sp | 861 ++++++++++++++++++++++++++----- 1 file changed, 727 insertions(+), 134 deletions(-) diff --git a/ItemSpawn/scripting/ItemSpawn.sp b/ItemSpawn/scripting/ItemSpawn.sp index c47f2962..4f98de2a 100644 --- a/ItemSpawn/scripting/ItemSpawn.sp +++ b/ItemSpawn/scripting/ItemSpawn.sp @@ -27,8 +27,9 @@ public Plugin myinfo = public void OnPluginStart() { HookEvent("round_start", OnRoundStart, EventHookMode_Post); - RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_RCON); - RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_RCON); + RegAdminCmd("sm_vortigaunt", Command_Vortigaunt, ADMFLAG_KICK); + RegAdminCmd("sm_balrog", Command_Balrog, ADMFLAG_KICK); + RegAdminCmd("sm_tnt", Command_TNT, ADMFLAG_KICK); } //---------------------------------------------------------------------------------------------------- @@ -47,7 +48,6 @@ public void OnMapStart() 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"); @@ -59,6 +59,20 @@ public void OnMapStart() 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"); + } //---------------------------------------------------------------------------------------------------- @@ -103,6 +117,45 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast) ActivateEntity(iSpeedMod); } +//---------------------------------------------------------------------------------------------------- +// Purpose: +//---------------------------------------------------------------------------------------------------- +public Action Command_Vortigaunt(int client, int argc) +{ + float fOrigin[3]; + + if (argc < 1) + { + GetClientEyePosition(client, fOrigin); + SpawnVortigaunt(fOrigin); + 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); + } + } + return Plugin_Handled; +} + //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- @@ -145,14 +198,14 @@ public Action Command_Balrog(int client, int argc) //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- -public Action Command_Vortigaunt(int client, int argc) +public Action Command_TNT(int client, int argc) { float fOrigin[3]; if (argc < 1) { GetClientEyePosition(client, fOrigin); - SpawnVortigaunt(fOrigin); + SpawnTNT(fOrigin); return Plugin_Handled; } @@ -175,12 +228,228 @@ public Action Command_Vortigaunt(int client, int argc) if(IsClientInGame(iTargets[i]) && IsPlayerAlive(iTargets[i]) && (ZR_IsClientZombie(iTargets[i]))) { GetClientEyePosition(iTargets[i], fOrigin); - SpawnVortigaunt(fOrigin); + SpawnTNT(fOrigin); } } 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, false); + + // 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); + 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"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0,-1"); + DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,1.15,3.25,-1"); + 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: //---------------------------------------------------------------------------------------------------- @@ -636,48 +905,48 @@ public void SpawnBalrog(float fOrigin[3]) //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- -public void SpawnVortigaunt(float fOrigin[3]) +public void SpawnTNT(float fOrigin[3]) { char sBuffer[256]; float fOriginTemp[3]; // Knife int iKnife = CreateEntityByName("weapon_knife"); - Format(sBuffer, sizeof(sBuffer), "vort_knife_%d", g_iCounter); + 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); - DispatchKeyValue(iKnife, "OnPlayerPickUp", "!activator,AddOutput,renderfx 6,0,-1"); - Format(sBuffer, sizeof(sBuffer), "vort_knife_%d,AddOutput,renderfx 6,0.03,-1", g_iCounter); + Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d,Activate,,0,-1", g_iCounter); DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); - Format(sBuffer, sizeof(sBuffer), "vort_ui_%d,Activate,,0,-1", g_iCounter); + Format(sBuffer, sizeof(sBuffer), "tnt_holder_sparks_%d,StartSpark,,0,1", g_iCounter); DispatchKeyValue(iKnife, "OnPlayerPickup", sBuffer); DispatchSpawn(iKnife); ActivateEntity(iKnife); - HookSingleEntityOutput(iKnife, "OnPlayerPickup", VortigauntPickup, false); + HookSingleEntityOutput(iKnife, "OnPlayerPickup", TNTPickup, false); // Model int iModel = CreateEntityByName("prop_dynamic"); - Format(sBuffer, sizeof(sBuffer), "vort_model_%d", g_iCounter); + Format(sBuffer, sizeof(sBuffer), "tnt_model_%d", g_iCounter); DispatchKeyValue(iModel, "targetname", sBuffer); - DispatchKeyValue(iModel, "model", "models/vortigaunt_slave.mdl"); + DispatchKeyValue(iModel, "model", "models/props/furnitures/humans/barrel01b.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; + DispatchKeyValue(iModel, "angles", "0.432793 271.953 -12.4926"); + DispatchKeyValue(iModel, "solid", "0"); + 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); + 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); + Format(sBuffer, sizeof(sBuffer), "tnt_trigger_%d", g_iCounter); DispatchKeyValue(iTrigger, "targetname", sBuffer); DispatchKeyValue(iTrigger, "spawnflags", "1"); DispatchKeyValue(iTrigger, "startdisabled", "1"); @@ -697,43 +966,87 @@ public void SpawnVortigaunt(float fOrigin[3]) 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); + + // 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(iSound, "SetParent", iKnife); - + AcceptEntityInput(iSparksHolder, "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_launch_%d,Enable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_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_launch_%d,Disable,,0,-1", g_iCounter); + DispatchKeyValue(iLaunchCompare, "OnNotEqualTo", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_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); + + // 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), "vort_push_%d", g_iCounter); + Format(sBuffer, sizeof(sBuffer), "tnt_push_%d", g_iCounter); DispatchKeyValue(iPush, "targetname", sBuffer); - DispatchKeyValue(iPush, "spawnflags", "1"); + DispatchKeyValue(iPush, "spawnflags", "8"); 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; + 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] - 8.0; + fOriginTemp[2] = fOrigin[2] + 15.76; 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, 17.0}; + 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); @@ -742,106 +1055,374 @@ public void SpawnVortigaunt(float fOrigin[3]) 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); - DispatchSpawn(iRelay); - ActivateEntity(iRelay); + // 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(iRelay, "SetParent", iKnife); + 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); + HookSingleEntityOutput(iPhysbox, "OnBreak", BalrogKill, false); + SetVariantString("!activator"); + AcceptEntityInput(iPhysbox, "SetParent", iKnife); // Game UI int iUI = CreateEntityByName("game_ui"); - Format(sBuffer, sizeof(sBuffer), "vort_ui_%d", g_iCounter); + Format(sBuffer, sizeof(sBuffer), "tnt_ui_%d", g_iCounter); DispatchKeyValue(iUI, "targetname", sBuffer); DispatchKeyValue(iUI, "spawnflags", "0"); DispatchKeyValue(iUI, "FieldOfView", "-1.0"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,0,0,-1"); - DispatchKeyValue(iUI, "PressedAttack2", "item_spawn_speed,ModifySpeed,1.15,3.25,-1"); - Format(sBuffer, sizeof(sBuffer), "vort_relay_%d,Trigger,,0,-1", g_iCounter); - DispatchKeyValue(iUI, "PressedAttack2", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_relay_%d,Trigger,,0,-1", g_iCounter); + DispatchKeyValue(iUI, "PressedAttack", sBuffer); + Format(sBuffer, sizeof(sBuffer), "tnt_compare_launch_%d,Compare,,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"); @@ -883,4 +1464,16 @@ public void BalrogKill(const char[] output, int caller, int activator, float del 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 = MOTIVATE ZOMBIES and LEFT CLICK = ATTACK."); } \ No newline at end of file