mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
386 lines
8.3 KiB
Lua
386 lines
8.3 KiB
Lua
|
|
--[[
|
||
|
|
| 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
AddCSLuaFile()
|
||
|
|
|
||
|
|
pk_pills.register("ep2_hunter",{
|
||
|
|
printName="Hunter",
|
||
|
|
side="hl_combine",
|
||
|
|
type="ply",
|
||
|
|
model="models/hunter.mdl",
|
||
|
|
default_rp_cost=9000,
|
||
|
|
camera={
|
||
|
|
offset=Vector(0,0,100),
|
||
|
|
dist=150
|
||
|
|
},
|
||
|
|
hull=Vector(60,60,100),
|
||
|
|
anims={
|
||
|
|
default={
|
||
|
|
idle="idle1",
|
||
|
|
walk="walk_all",
|
||
|
|
run="canter_all",
|
||
|
|
jump="jump",
|
||
|
|
glide="jump_idle",
|
||
|
|
melee1="meleeleft",
|
||
|
|
melee2="meleert",
|
||
|
|
melee3="melee_02"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
sounds={
|
||
|
|
melee=pk_pills.helpers.makeList("npc/ministrider/hunter_defendstrider#.wav",3),
|
||
|
|
melee_hit=pk_pills.helpers.makeList("npc/zombie/claw_strike#.wav",3),
|
||
|
|
shoot="npc/ministrider/ministrider_fire1.wav",
|
||
|
|
step=pk_pills.helpers.makeList("npc/ministrider/ministrider_footstep#.wav",5)
|
||
|
|
},
|
||
|
|
aim={
|
||
|
|
attachment="MiniGunBase",
|
||
|
|
simple=true
|
||
|
|
},
|
||
|
|
attack={
|
||
|
|
mode= "auto",
|
||
|
|
func=function(ply,ent)
|
||
|
|
ent:PillSound("shoot",true)
|
||
|
|
local f = ents.Create("hunter_flechette")
|
||
|
|
f:SetPos(ply:GetShootPos()+ply:EyeAngles():Forward()*80)
|
||
|
|
f:SetVelocity(ply:EyeAngles():Forward()*2000+VectorRand()*10)
|
||
|
|
f:SetAngles(ply:EyeAngles())
|
||
|
|
f:Spawn()
|
||
|
|
end,
|
||
|
|
delay=.1
|
||
|
|
},
|
||
|
|
attack2={
|
||
|
|
mode="trigger",
|
||
|
|
func = pk_pills.common.melee,
|
||
|
|
animCount=3,
|
||
|
|
delay=.5,
|
||
|
|
range=75,
|
||
|
|
dmg=25
|
||
|
|
},
|
||
|
|
movePoseMode="yaw",
|
||
|
|
moveSpeed={
|
||
|
|
walk=200,
|
||
|
|
run=500
|
||
|
|
},
|
||
|
|
jumpPower=400,
|
||
|
|
health=300,
|
||
|
|
noFallDamage=true
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_antlion_worker",{
|
||
|
|
parent="antlion",
|
||
|
|
printName="Antlion Worker",
|
||
|
|
model="models/antlion_worker.mdl",
|
||
|
|
default_rp_cost=6000,
|
||
|
|
options=false,
|
||
|
|
reload= function(ply,ent)
|
||
|
|
ent:PillAnim("spit",true)
|
||
|
|
|
||
|
|
timer.Simple(.5,function()
|
||
|
|
if !IsValid(ply) then return end
|
||
|
|
for i=1,5 do
|
||
|
|
local n=math.random(3)
|
||
|
|
local s = ents.Create("grenade_spit")
|
||
|
|
s:SetPos(ply:GetShootPos()+ply:EyeAngles():Forward()*100+Vector(0,0,50))
|
||
|
|
s:SetVelocity(ply:EyeAngles():Forward()*800+Vector(0,0,400)+VectorRand()*20)
|
||
|
|
s:Spawn()
|
||
|
|
if n==1 then
|
||
|
|
s:SetModel("models/spitball_medium.mdl")
|
||
|
|
elseif n==2 then
|
||
|
|
s:SetModel("models/spitball_small.mdl")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end,
|
||
|
|
aim={nocrosshair=false},
|
||
|
|
anims={
|
||
|
|
default={
|
||
|
|
spit="spit"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_cturret",{
|
||
|
|
parent="cturret",
|
||
|
|
printName="Rebel Turret",
|
||
|
|
side=false,
|
||
|
|
default_rp_cost=3000,
|
||
|
|
options=function() return {
|
||
|
|
{visMat="models/combine_turrets/floor_turret/floor_turret_citizen"},
|
||
|
|
{visMat="models/combine_turrets/floor_turret/floor_turret_citizen4"}
|
||
|
|
} end,
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_guardian",{
|
||
|
|
parent="antlion_guard",
|
||
|
|
printName="Ancient Guardian",
|
||
|
|
default_rp_cost=11000,
|
||
|
|
visMat="Models/antlion_guard/antlionGuard2",
|
||
|
|
attack={
|
||
|
|
dmg=100
|
||
|
|
},
|
||
|
|
charge={
|
||
|
|
dmg=200
|
||
|
|
}
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_vort_scientist",{
|
||
|
|
parent="vort",
|
||
|
|
printName="Vortigaunt Scientist",
|
||
|
|
model="models/vortigaunt_doctor.mdl",
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_sniper",{
|
||
|
|
parent="csoldier",
|
||
|
|
printName="Combine Sniper",
|
||
|
|
default_rp_cost=7000,
|
||
|
|
//model="models/Combine_Super_Soldier.mdl",
|
||
|
|
//ammo={AR2AltFire=6},
|
||
|
|
//health=300
|
||
|
|
loadout={"pill_wep_csniper"}
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_inventor",{
|
||
|
|
printName="The Inventor",
|
||
|
|
type="ply",
|
||
|
|
model="models/magnusson.mdl",
|
||
|
|
default_rp_cost=10000,
|
||
|
|
anims={
|
||
|
|
default={
|
||
|
|
idle="lineidle02",
|
||
|
|
walk="walk_all",
|
||
|
|
run="run_all",
|
||
|
|
crouch="Crouch_idleD",
|
||
|
|
crouch_walk="Crouch_walk_aLL",
|
||
|
|
glide="jump_holding_glide",
|
||
|
|
jump="jump_holding_jump",
|
||
|
|
g_attack="gesture_shoot_smg1",
|
||
|
|
g_reload="gesture_reload_smg1"
|
||
|
|
},
|
||
|
|
smg={
|
||
|
|
idle="Idle_SMG1_Aim_Alert",
|
||
|
|
walk="walkAIMALL1",
|
||
|
|
run="run_alert_aiming_all",
|
||
|
|
crouch="crouch_aim_smg1",
|
||
|
|
crouch_walk="Crouch_walk_aiming_all"
|
||
|
|
},
|
||
|
|
ar2={
|
||
|
|
idle="idle_angry_Ar2",
|
||
|
|
walk="walkAIMALL1_ar2",
|
||
|
|
run="run_aiming_ar2_all",
|
||
|
|
crouch="crouch_aim_smg1",
|
||
|
|
crouch_walk="Crouch_walk_aiming_all",
|
||
|
|
g_attack="gesture_shoot_ar2",
|
||
|
|
g_reload="gesture_reload_ar2"
|
||
|
|
},
|
||
|
|
shotgun={
|
||
|
|
idle="Idle_Angry_Shotgun",
|
||
|
|
walk="walkAIMALL1_ar2",
|
||
|
|
run="run_aiming_ar2_all",
|
||
|
|
crouch="crouch_aim_smg1",
|
||
|
|
crouch_walk="Crouch_walk_aiming_all",
|
||
|
|
g_attack="gesture_shoot_shotgun",
|
||
|
|
g_reload="gesture_reload_ar2"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
aim={
|
||
|
|
xPose="aim_yaw",
|
||
|
|
yPose="aim_pitch"
|
||
|
|
},
|
||
|
|
moveSpeed={
|
||
|
|
walk=60,
|
||
|
|
run=200,
|
||
|
|
ducked=40
|
||
|
|
},
|
||
|
|
loadout={"pill_wep_holstered","weapon_smg1","pill_wep_magnade"},
|
||
|
|
ammo={SMG1=100},
|
||
|
|
health=1000,
|
||
|
|
validHoldTypes={"smg","ar2","shotgun","grenade"},
|
||
|
|
movePoseMode="yaw"
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_grub",{
|
||
|
|
printName="Grub",
|
||
|
|
side="antlion",
|
||
|
|
type="ply",
|
||
|
|
model="models/antlion_grub.mdl",
|
||
|
|
default_rp_cost=400,
|
||
|
|
camera={
|
||
|
|
offset=Vector(0,0,5),
|
||
|
|
dist=80
|
||
|
|
},
|
||
|
|
hull=Vector(30,30,15),
|
||
|
|
anims={},
|
||
|
|
moveSpeed={
|
||
|
|
walk=30,
|
||
|
|
run=60
|
||
|
|
},
|
||
|
|
jumpPower=0,
|
||
|
|
health=20
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_gnome",{
|
||
|
|
printName="Garden Gnome",
|
||
|
|
type="ply",
|
||
|
|
model="models/props_junk/gnome.mdl",
|
||
|
|
default_rp_cost=1000,
|
||
|
|
camera={
|
||
|
|
offset=Vector(0,0,15),
|
||
|
|
dist=80
|
||
|
|
},
|
||
|
|
hull=Vector(10,10,30),
|
||
|
|
anims={},
|
||
|
|
moveSpeed={
|
||
|
|
walk=60,
|
||
|
|
run=120
|
||
|
|
},
|
||
|
|
attack={
|
||
|
|
mode="trigger",
|
||
|
|
func=function(ply,ent)
|
||
|
|
ent:PillSound("laugh")
|
||
|
|
end
|
||
|
|
},
|
||
|
|
sounds={
|
||
|
|
laugh=pk_pills.helpers.makeList("vo/ravenholm/madlaugh0#.wav",4),
|
||
|
|
laugh_pitch=140
|
||
|
|
},
|
||
|
|
noragdoll=true,
|
||
|
|
jumpPower=150,
|
||
|
|
health=80,
|
||
|
|
noFallDamage=true
|
||
|
|
})
|
||
|
|
|
||
|
|
pk_pills.register("ep2_advisor",{
|
||
|
|
printName="Enhanced Advisor",
|
||
|
|
parent="advisor",
|
||
|
|
model="models/birdbrainswagtrain/episodic/advisor.mdl",
|
||
|
|
default_rp_cost=10000,
|
||
|
|
aim={},
|
||
|
|
attack={
|
||
|
|
mode="trigger",
|
||
|
|
func=function(ply,ent)
|
||
|
|
if ent:GetSequence()!=ent:LookupSequence("idle") then return end
|
||
|
|
ent:PillAnim("melee",true)
|
||
|
|
|
||
|
|
timer.Simple(.7,function()
|
||
|
|
if !IsValid(ent) then return end
|
||
|
|
|
||
|
|
local tr = util.TraceHull({
|
||
|
|
start=ent:GetPos(),
|
||
|
|
endpos=ent:GetPos()+ent:GetAngles():Forward()*200,
|
||
|
|
filter={ent},
|
||
|
|
mins=Vector(-25,-25,-25),
|
||
|
|
maxs=Vector(25,25,25)
|
||
|
|
})
|
||
|
|
if IsValid(tr.Entity) then
|
||
|
|
local dmg=DamageInfo()
|
||
|
|
dmg:SetAttacker(ply)
|
||
|
|
dmg:SetInflictor(ent)
|
||
|
|
dmg:SetDamageType(DMG_SLASH)
|
||
|
|
dmg:SetDamage(50)
|
||
|
|
|
||
|
|
tr.Entity:TakeDamageInfo(dmg)
|
||
|
|
|
||
|
|
ent:PillSound("hit")
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
timer.Simple(1.2,function()
|
||
|
|
if !IsValid(ent) then return end
|
||
|
|
ent:PillAnim("idle",true)
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
},
|
||
|
|
attack2={
|
||
|
|
mode="trigger",
|
||
|
|
func=function(ply,ent)
|
||
|
|
if ent:GetSequence()!=ent:LookupSequence("idle") then return end
|
||
|
|
ent:PillAnim("grab",true)
|
||
|
|
|
||
|
|
timer.Simple(.7,function()
|
||
|
|
if !IsValid(ent) then return end
|
||
|
|
|
||
|
|
local tr = util.TraceHull({
|
||
|
|
start=ent:GetPos(),
|
||
|
|
endpos=ent:GetPos()+ent:GetAngles():Forward()*200,
|
||
|
|
filter={ent},
|
||
|
|
mins=Vector(-25,-25,-25),
|
||
|
|
maxs=Vector(25,25,25)
|
||
|
|
})
|
||
|
|
if IsValid(tr.Entity) and not tr.Entity:IsFlagSet(FL_GODMODE) then
|
||
|
|
|
||
|
|
local mdl_ent = pk_pills.getMappedEnt(tr.Entity) or tr.Entity
|
||
|
|
|
||
|
|
mdl_ent = mdl_ent.subModel or mdl_ent
|
||
|
|
|
||
|
|
mdl_ent = mdl_ent.GetPuppet and mdl_ent:GetPuppet() or mdl_ent
|
||
|
|
|
||
|
|
if mdl_ent:LookupBone("ValveBiped.Bip01_Spine4") then
|
||
|
|
local mdl_name = mdl_ent:GetModel()
|
||
|
|
|
||
|
|
if tr.Entity:IsPlayer() then
|
||
|
|
tr.Entity:KillSilent()
|
||
|
|
else
|
||
|
|
tr.Entity:Remove()
|
||
|
|
end
|
||
|
|
|
||
|
|
local attachment=ents.Create("pill_attachment_body")
|
||
|
|
attachment.model = mdl_name
|
||
|
|
attachment:SetPos(ent:GetPos())
|
||
|
|
attachment:SetParent(ent)
|
||
|
|
attachment:Spawn()
|
||
|
|
|
||
|
|
ent.brainsucked=true
|
||
|
|
else
|
||
|
|
ent.brainsucked=false
|
||
|
|
end
|
||
|
|
else
|
||
|
|
ent.brainsucked=false
|
||
|
|
end
|
||
|
|
|
||
|
|
if !ent.brainsucked then
|
||
|
|
ent:PillAnim("fail",true)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
timer.Simple(2.3,function()
|
||
|
|
if !IsValid(ent) or !ent.brainsucked then return end
|
||
|
|
|
||
|
|
ent:PillSound("brainsuck")
|
||
|
|
|
||
|
|
local effectdata = EffectData()
|
||
|
|
|
||
|
|
effectdata:SetOrigin(ent:LocalToWorld(Vector(75,0,-20)))
|
||
|
|
effectdata:SetNormal(ent:GetAngles():Forward())
|
||
|
|
effectdata:SetMagnitude(1)
|
||
|
|
effectdata:SetScale(10)
|
||
|
|
effectdata:SetColor(0)
|
||
|
|
effectdata:SetFlags(3)
|
||
|
|
|
||
|
|
util.Effect("bloodspray",effectdata)
|
||
|
|
end)
|
||
|
|
timer.Simple(5,function()
|
||
|
|
if !IsValid(ent) then return end
|
||
|
|
ent:PillAnim("idle",true)
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
},
|
||
|
|
reload=function(ply,ent)
|
||
|
|
local traceres = util.QuickTrace(ent:GetPos(),ply:EyeAngles():Forward()*99999,{ply,ent})
|
||
|
|
|
||
|
|
local blast = ents.Create("pill_advisor_blast")
|
||
|
|
blast:SetPos(traceres.HitPos)
|
||
|
|
blast:SetOwner(ply)
|
||
|
|
blast:Spawn()
|
||
|
|
|
||
|
|
ent:PillSound("blast")
|
||
|
|
end,
|
||
|
|
sounds={
|
||
|
|
brainsuck="physics/flesh/flesh_squishy_impact_hard3.wav",
|
||
|
|
blast="npc/advisor/advisor_blast1.wav"
|
||
|
|
}
|
||
|
|
})
|