This commit is contained in:
lifestorm
2024-08-04 23:54:45 +03:00
parent 0e770b2b49
commit df294d03aa
7526 changed files with 4011945 additions and 15 deletions

View File

@@ -0,0 +1,144 @@
--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
local PLUGIN = PLUGIN
game.AddParticles("particles/fire_01.pcf")
PrecacheParticleSystem("fire_jet_01_flame")
util.PrecacheSound("ambient/explosions/explode_8.wav")
function PLUGIN:PostPlayerLoadout(client)
if (client:Team() == FACTION_CREMATOR and client:GetCharacter()) then
client:SetWalkSpeed(50)
client:SetRunSpeed(70)
client:SetHealth(300)
client:SetMaxHealth(300)
client:StripWeapon("ix_keys")
client:Give("immolator")
client:SelectWeapon("immolator")
client:SetNetVar("fuelTankHealth", 1)
client:SetNetVar("fuelTankWasExploded", nil)
end
end
function PLUGIN:GetPlayerPainSound(client)
if (client:Team() == FACTION_CREMATOR) then
return "npc/cremator/alert_object.wav"
end
end
function PLUGIN:GetPlayerDeathSound(client)
if (client:Team() == FACTION_CREMATOR) then
return "npc/cremator/crem_die.wav"
end
end
local walkSounds = {"npc/cremator/foot1.wav", "npc/cremator/foot2.wav", "npc/cremator/foot3.wav"}
function PLUGIN:PlayerFootstep(client, position, foot, soundName, volume)
if (client:Team() == FACTION_CREMATOR) then
client:EmitSound(walkSounds[math.random(1, #walkSounds)])
return true
end
end
local fuelTankBone = "Bip01 Spine2"
local radius = 200
local magnitude = 10
local fireTrailSeconds = 5
function PLUGIN:PlayerTraceAttack(client, damageInfo, vector, trace)
if (client:Team() == FACTION_CREMATOR) then
local fuelTankHealth = client:GetNetVar("fuelTankHealth", 0)
local bone = trace.HitBoxBone
if (client:GetBoneName(bone) == fuelTankBone) then
if (client:GetNetVar("fuelTankWasExploded")) then return end
if (fuelTankHealth > 0) then
client:SetNetVar("fuelTankHealth", fuelTankHealth - damageInfo:GetDamage())
return
end
local timerId = "ixCrematorTankExplodeTimer_" .. client:EntIndex()
if (timer.Exists(timerId)) then return end
local matrix = client:GetBoneMatrix(bone)
local position = matrix:GetTranslation()
local angles = matrix:GetAngles()
local fireTrail = ents.Create( "info_particle_system" )
fireTrail:SetKeyValue("effect_name", "fire_jet_01_flame")
fireTrail:SetKeyValue("start_active", "1")
fireTrail:SetPos(position)
fireTrail:SetAngles(angles)
fireTrail:SetParent(client)
fireTrail:Spawn()
fireTrail:Activate()
fireTrail:Fire("Kill", nil, fireTrailSeconds)
client:SetNetVar("fuelTankWasExploded", true)
timer.Create(timerId, fireTrailSeconds, 1, function()
if (!IsValid(client)) then return end
local playerPosition = client:GetPos()
local effect = EffectData()
effect:SetStart(playerPosition)
effect:SetOrigin(playerPosition)
effect:SetScale(2)
effect:SetRadius(radius)
effect:SetMagnitude(magnitude)
util.Effect("Explosion", effect, true, true)
util.Effect("HelicopterMegaBomb", effect, true, true)
local explode = ents.Create("info_particle_system")
explode:SetKeyValue("effect_name", "hl2r_explosion_rpg")
explode:SetOwner(client)
explode:SetPos(playerPosition)
explode:Spawn()
explode:Activate()
explode:Fire("start", "", 0)
explode:Fire("kill", "", 30)
local blastDamage = DamageInfo()
blastDamage:SetInflictor(client)
blastDamage:SetAttacker(client)
blastDamage:SetDamage(80)
blastDamage:SetDamageType(bit.bor(DMG_BLAST, DMG_AIRBOAT))
util.BlastDamageInfo(blastDamage, playerPosition, radius)
local explosion = ents.Create("env_physexplosion")
explosion:SetPos(playerPosition)
explosion:SetKeyValue("magnitude", magnitude)
explosion:SetKeyValue("radius", radius)
explosion:SetKeyValue("spawnflags", "19")
explosion:Spawn()
explosion:Fire("Explode", "", 0)
client:ForceSequence("Flich01")
end)
end
end
end