dobrograd-13-06-2022/garrysmod/addons/feature-wire/lua/wire/stools/explosive.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

84 lines
4.5 KiB
Lua

WireToolSetup.setCategory( "Physics" )
WireToolSetup.open( "explosive", "Explosive", "gmod_wire_explosive", nil, "Explosives" )
TOOL.ClientConVar = {
model = "models/props_c17/oildrum001_explosive.mdl",
effect = "Explosion",
trigger = 1, -- Wire input value to cause the explosion
damage = 200, -- Damage to inflict
radius = 300,
removeafter = 0,
affectother = 0,
notaffected = 0,
delaytime = 0,
delayreloadtime = 0,
maxhealth = 100,
bulletproof = 0,
explosionproof = 0,
explodeatzero = 1,
resetatexplode = 1,
fireeffect = 1,
coloreffect = 1,
invisibleatzero = 0,
}
TOOL.ReloadSetsModel = true
if ( CLIENT ) then
language.Add( "Tool.wire_explosive.name", "Wired Explosives Tool" )
language.Add( "Tool.wire_explosive.desc", "Creates a variety of different explosives for wire system." )
language.Add( "Tool.wire_explosive.trigger", "Trigger value:" )
language.Add( "Tool.wire_explosive.damage", "Damage:" )
language.Add( "Tool.wire_explosive.radius", "Blast radius:" )
language.Add( "Tool.wire_explosive.delaytime", "On fire time (delay after triggered before explosion):" )
language.Add( "Tool.wire_explosive.delayreloadtime", "Delay after explosion before it can be triggered again:" )
language.Add( "Tool.wire_explosive.removeafter", "Remove on explosion" )
language.Add( "Tool.wire_explosive.affectother", "Damaged/moved by other wired explosives" )
language.Add( "Tool.wire_explosive.notaffected", "Not moved by any phyiscal damage" )
language.Add( "Tool.wire_explosive.maxhealth", "Max health:" )
language.Add( "Tool.wire_explosive.bulletproof", "Bullet proof" )
language.Add( "Tool.wire_explosive.explosionproof", "Explosion proof" )
language.Add( "Tool.wire_explosive.explodeatzero", "Explode when health = zero" )
language.Add( "Tool.wire_explosive.resetatexplode", "Reset health then" )
language.Add( "Tool.wire_explosive.fireeffect", "Enable fire effect on triggered" )
language.Add( "Tool.wire_explosive.coloreffect", "Enable color change effect on damage" )
language.Add( "Tool.wire_explosive.invisibleatzero", "Become invisible when health reaches 0" )
TOOL.Information = {
{ name = "left", text = "Create " .. TOOL.Name },
{ name = "right", text = "Update " .. TOOL.Name },
}
end
WireToolSetup.BaseLang()
WireToolSetup.SetupMax( 10 )
if SERVER then
function TOOL:GetConVars()
return self:GetClientNumber("trigger"), self:GetClientNumber("damage"), self:GetClientNumber("delaytime"), self:GetClientNumber("removeafter")~=0,
self:GetClientNumber("radius"), self:GetClientNumber("affectother")~=0, self:GetClientNumber("notaffected")~=0, self:GetClientNumber("delayreloadtime"),
self:GetClientNumber("maxhealth"), self:GetClientNumber("bulletproof")~=0, self:GetClientNumber("explosionproof")~=0, self:GetClientNumber("fallproof")~=0,
self:GetClientNumber("explodeatzero")~=0, self:GetClientNumber("resetatexplode")~=0, self:GetClientNumber("fireeffect")~=0, self:GetClientNumber("coloreffect")~=0,
self:GetClientNumber("invisibleatzero")~=0
end
-- Uses default WireToolObj:MakeEnt's WireLib.MakeWireEnt function
end
function TOOL.BuildCPanel(panel)
WireToolHelpers.MakePresetControl(panel, "wire_explosive")
ModelPlug_AddToCPanel(panel, "Explosive", "wire_explosive", nil, 3)
panel:NumSlider("#Tool.wire_explosive.trigger", "wire_explosive_trigger", -10, 10, 0 )
panel:NumSlider("#Tool.wire_explosive.damage", "wire_explosive_damage", 0, 500, 0 )
panel:NumSlider("#Tool.wire_explosive.radius", "wire_explosive_radius", 1, 1500, 0 )
panel:NumSlider("#Tool.wire_explosive.delaytime", "wire_explosive_delaytime", 0, 60, 2 )
panel:NumSlider("#Tool.wire_explosive.delayreloadtime", "wire_explosive_delayreloadtime", 0, 60, 2 )
panel:CheckBox("#Tool.wire_explosive.removeafter","wire_explosive_removeafter")
panel:CheckBox("#Tool.wire_explosive.affectother","wire_explosive_affectother")
panel:CheckBox("#Tool.wire_explosive.notaffected","wire_explosive_notaffected")
panel:NumSlider("#Tool.wire_explosive.maxhealth", "wire_explosive_maxhealth", 0, 500, 0 )
panel:CheckBox("#Tool.wire_explosive.bulletproof","wire_explosive_bulletproof")
panel:CheckBox("#Tool.wire_explosive.explosionproof","wire_explosive_explosionproof")
panel:CheckBox("#Tool.wire_explosive.explodeatzero","wire_explosive_explodeatzero")
panel:CheckBox("#Tool.wire_explosive.resetatexplode","wire_explosive_resetatexplode")
panel:CheckBox("#Tool.wire_explosive.fireeffect","wire_explosive_fireeffect")
panel:CheckBox("#Tool.wire_explosive.coloreffect","wire_explosive_coloreffect")
panel:CheckBox("#Tool.wire_explosive.invisibleatzero","wire_explosive_invisibleatzero")
end