From 15464b9af7847c6cd801e3fb11f744c869c6868b Mon Sep 17 00:00:00 2001 From: Fesiug Date: Mon, 1 Jan 2024 17:05:24 -0500 Subject: [PATCH] More weapon system tweaks --- .../entities/benny_equipment_ammo.lua | 2 +- .../benny/entities/weapons/benny/cl_wm.lua | 4 +- .../entities/weapons/benny/sh_firing.lua | 8 +- .../entities/weapons/benny/sh_holdtypes.lua | 8 +- .../benny/entities/weapons/benny/sh_inv.lua | 12 +-- .../entities/weapons/benny/sh_reload.lua | 16 ++-- .../benny/entities/weapons/benny/sh_stat2.lua | 26 +++++++ .../entities/weapons/benny/sh_statregen.lua | 2 +- .../benny/entities/weapons/benny/shared.lua | 38 +++------- .../gamemode/modules/gui/cl_debuginv.lua | 6 +- .../gamemode/modules/gui/cl_spawnmenu.lua | 11 +-- .../gamemode/modules/player/cl_camera.lua | 2 +- .../benny/gamemode/modules/player/cl_hud.lua | 28 ++++--- .../gamemode/modules/player/sh_movement.lua | 8 +- .../modules/player/sh_movement_advanced.lua | 2 +- .../gamemode/modules/player/sh_player.lua | 6 +- .../gamemode/modules/weapons/_sh_weapons.lua | 2 +- .../gamemode/modules/weapons/sh_weapons.lua | 73 +++++++++++++++++-- 18 files changed, 162 insertions(+), 92 deletions(-) diff --git a/gamemodes/benny/entities/entities/benny_equipment_ammo.lua b/gamemodes/benny/entities/entities/benny_equipment_ammo.lua index f23debd..32590d7 100644 --- a/gamemodes/benny/entities/entities/benny_equipment_ammo.lua +++ b/gamemodes/benny/entities/entities/benny_equipment_ammo.lua @@ -17,7 +17,7 @@ end function ENT:Use( activator ) if ( activator:IsPlayer() ) then local wep = activator:GetActiveWeapon() - local bt, bc = wep:BTable(), wep:BClass() + local bt, bc = wep:bWepTable(), wep:bWepClass() for i=1, 3 do -- if bt["Ammo" .. i] and bt.Loaded != i then -- bt["Ammo" .. i] = bc.Ammo diff --git a/gamemodes/benny/entities/weapons/benny/cl_wm.lua b/gamemodes/benny/entities/weapons/benny/cl_wm.lua index 98eef1f..fafd2a4 100644 --- a/gamemodes/benny/entities/weapons/benny/cl_wm.lua +++ b/gamemodes/benny/entities/weapons/benny/cl_wm.lua @@ -2,7 +2,7 @@ function SWEP:DrawWorldModel() local p = self:GetOwner() do local wm = self.CWM - local class = self:BClass( false ) + local class = self:bWepClass( false ) if class then if !IsValid(wm) then wm = ClientsideModel( class.WModel ) @@ -19,7 +19,7 @@ function SWEP:DrawWorldModel() end do local wm = self.CWM_Left - local class = self:BClass( true ) + local class = self:bWepClass( true ) if class then if !IsValid(wm) then wm = ClientsideModel( class.WModel ) diff --git a/gamemodes/benny/entities/weapons/benny/sh_firing.lua b/gamemodes/benny/entities/weapons/benny/sh_firing.lua index f05359f..d8d05a1 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_firing.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_firing.lua @@ -21,10 +21,10 @@ function SWEP:SecondaryAttack() end function SWEP:BFire( hand ) - if self:BTable( hand ) and self:GetAim() == 1 then + if self:bWepTable( hand ) and self:GetAim() == 1 then local p = self:GetOwner() - local wep_table = self:BTable( hand ) - local wep_class = self:BClass( hand ) + local wep_table = self:bWepTable( hand ) + local wep_class = self:bWepClass( hand ) if wep_class.Custom_Fire then if wep_class.Custom_Fire( self, wep_table, wep_class, hand ) then return end @@ -78,7 +78,7 @@ end local bc = { effects = true, damage = true } function SWEP:CallFire( hand ) local p = self:GetOwner() - local class = self:BClass( hand ) + local class = self:bWepClass( hand ) local spread = self:BSpread( hand ) for i=1, self:GetStat( hand, "Pellets" ) do local dir = self:GetOwner():EyeAngles() diff --git a/gamemodes/benny/entities/weapons/benny/sh_holdtypes.lua b/gamemodes/benny/entities/weapons/benny/sh_holdtypes.lua index 26deaa7..a7f0c25 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_holdtypes.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_holdtypes.lua @@ -114,7 +114,7 @@ SWEP.GestureDraw = { ACT_GMOD_GESTURE_MELEE_SHOVE_1HAND, 0.75 } SWEP.GestureHolster = { ACT_GMOD_GESTURE_MELEE_SHOVE_1HAND, 0.65 } function SWEP:TPFire( hand ) if CLIENT and !IsFirstTimePredicted() then return end - local target = self:BClass( hand ) and self:BClass( hand ).GestureFire + local target = self:bWepClass( hand ) and self:bWepClass( hand ).GestureFire if !target then target = self.GestureFire end @@ -122,7 +122,7 @@ function SWEP:TPFire( hand ) end function SWEP:TPReload( hand ) if CLIENT and !IsFirstTimePredicted() then return end - local target = self:BClass( hand ) and self:BClass( hand ).GestureReload + local target = self:bWepClass( hand ) and self:bWepClass( hand ).GestureReload if !target then target = self.GestureReload end @@ -130,7 +130,7 @@ function SWEP:TPReload( hand ) end function SWEP:TPDraw( hand ) if CLIENT and !IsFirstTimePredicted() then return end - local target = self:BClass( hand ) and self:BClass( hand ).GestureDraw + local target = self:bWepClass( hand ) and self:bWepClass( hand ).GestureDraw if !target then target = self.GestureDraw end @@ -138,7 +138,7 @@ function SWEP:TPDraw( hand ) end function SWEP:TPHolster( hand ) if CLIENT and !IsFirstTimePredicted() then return end - local target = self:BClass( hand ) and self:BClass( hand ).GestureHolster + local target = self:bWepClass( hand ) and self:bWepClass( hand ).GestureHolster if !target then target = self.GestureHolster end diff --git a/gamemodes/benny/entities/weapons/benny/sh_inv.lua b/gamemodes/benny/entities/weapons/benny/sh_inv.lua index 20f4ac4..438a228 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_inv.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_inv.lua @@ -1,22 +1,22 @@ function SWEP:GetStat( hand, stat ) local Hand = ((hand==true and "Left Hand") or (hand==false and "Right Hand")) - assert( self:BClass( hand ), "No weapon in " .. Hand .. " (Trying to get stat " .. stat .. ")" ) - local thereturn = (self:BClass( hand ) and self:BClass( hand )[stat]) + assert( self:bWepClass( hand ), "No weapon in " .. Hand .. " (Trying to get stat " .. stat .. ")" ) + local thereturn = (self:bWepClass( hand ) and self:bWepClass( hand )[stat]) assert( thereturn, "No stat for " .. stat .. " ( " .. Hand .. " )" ) return thereturn end function BENNY_GetStat( class, stat ) assert( class, "No class" ) - local thereturn = (class[stat] or fallbackstat[stat]) + local thereturn = class[stat] assert( thereturn, "No stat for " .. stat ) return thereturn end function SWEP:C_DualCheck() local p = self:GetOwner() - local lt = self:BClass( true ) + local lt = self:bWepClass( true ) if lt then if lt.Features == "firearm" then return p:GetInfoNum( "benny_wep_ao_firearms", 1 )==1 @@ -77,7 +77,7 @@ function SWEP:BHolster( hand ) local p = self:GetOwner() --B_Sound( self, "Common.Holster" ) - local item = self:BTable( hand ) + local item = self:bWepTable( hand ) if item then local class = WeaponGet(item.Class) if class.Custom_Holster then class.Custom_Holster( self, item, class, hand ) end @@ -89,6 +89,6 @@ function SWEP:BHolster( hand ) end function SWEP:BSpread( hand ) - return self:BClass( hand ).Spread + self:bGetSpread( hand ) + return self:bWepClass( hand ).Spread + self:bGetSpread( hand ) end diff --git a/gamemodes/benny/entities/weapons/benny/sh_reload.lua b/gamemodes/benny/entities/weapons/benny/sh_reload.lua index dcd15ea..1ccfcd6 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_reload.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_reload.lua @@ -5,8 +5,8 @@ function SWEP:Reload( hand ) if hand == nil then return end -- Needs to be called from the custom ones local p = self:GetOwner() local inv = p:INV_Get() - local wep_table = self:BTable( hand ) - local wep_class = self:BClass( hand ) + local wep_table = self:bWepTable( hand ) + local wep_class = self:bWepClass( hand ) if wep_table then if wep_class.Custom_Reload then if wep_class.Custom_Reload( self, wep_table ) then return end @@ -53,8 +53,8 @@ end function SWEP:Reload_MagOut( hand, curmag, optinv, optwep_table, optwep_class ) local p = self:GetOwner() local inv = optinv or p:INV_Get() - local wep_table = optwep_table or self:BTable( hand ) - local wep_class = optwep_class or self:BClass( hand ) + local wep_table = optwep_table or self:bWepTable( hand ) + local wep_class = optwep_class or self:bWepClass( hand ) if !inv[curmag] then -- PROTO: This happens sometimes. I'm commenting it so it doesn't look like anything broke, because it didn't. @@ -76,7 +76,7 @@ end function SWEP:GetLoadableMagazines( hand, class, optinv, optwep_table ) local p = self:GetOwner() local inv = optinv or p:INV_Get() - local wep_table = optwep_table or self:BTable( hand ) + local wep_table = optwep_table or self:bWepTable( hand ) local maglist = p:INV_FindMag( wep_table.Class ) local usedlist = {} @@ -92,7 +92,7 @@ end function SWEP:GetBestLoadableMagazine( hand, class, optinv, optwep_table ) local p = self:GetOwner() local inv = optinv or p:INV_Get() - local wep_table = optwep_table or self:BTable( hand ) + local wep_table = optwep_table or self:bWepTable( hand ) local maglist = p:INV_FindMag( wep_table.Class ) local mag = false @@ -117,8 +117,8 @@ end function SWEP:Reload_MagIn( hand, curmag, optinv, optwep_table, optwep_class ) local p = self:GetOwner() local inv = optinv or p:INV_Get() - local wep_table = optwep_table or self:BTable( hand ) - local wep_class = optwep_class or self:BClass( hand ) + local wep_table = optwep_table or self:bWepTable( hand ) + local wep_class = optwep_class or self:bWepClass( hand ) local mag = self:GetBestLoadableMagazine( hand, wep_table.Class ) if mag then diff --git a/gamemodes/benny/entities/weapons/benny/sh_stat2.lua b/gamemodes/benny/entities/weapons/benny/sh_stat2.lua index 42cb70c..d62f257 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_stat2.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_stat2.lua @@ -1,6 +1,32 @@ -- Stat2 +function SWEP:bWepTable( alt ) + return self:GetOwner():INV_Get()[ ((alt==true) and self:GetWep2()) or ((alt==false) and self:GetWep1()) ] +end + +function SWEP:bWepClass( alt ) + local ta = self:bWepTable( alt ) + if ta then + return WeaponGet( ta.Class ) + else + return false + end +end + +function SWEP:bMagTable( alt ) + return self:GetOwner():INV_Get()[ ((alt==true) and self:GetWep2_Clip()) or ((alt==false) and self:GetWep1_Clip()) ] +end + +function SWEP:bMagClass( alt ) + local ta = self:bMagTable( alt ) + if ta then + return WeaponGet( ta.Class ) + else + return false + end +end + -- Weapon ID function SWEP:bGetInvID( hand ) assert( hand!=nil, "Missing hand argument" ) diff --git a/gamemodes/benny/entities/weapons/benny/sh_statregen.lua b/gamemodes/benny/entities/weapons/benny/sh_statregen.lua index 6085926..39d98bc 100644 --- a/gamemodes/benny/entities/weapons/benny/sh_statregen.lua +++ b/gamemodes/benny/entities/weapons/benny/sh_statregen.lua @@ -28,7 +28,7 @@ else else data = net.ReadDouble() end - LocalPlayer():GetActiveWeapon():BTable()[stat] = data + LocalPlayer():GetActiveWeapon():bWepTable()[stat] = data end end) end \ No newline at end of file diff --git a/gamemodes/benny/entities/weapons/benny/shared.lua b/gamemodes/benny/entities/weapons/benny/shared.lua index f2f8332..76f0f02 100644 --- a/gamemodes/benny/entities/weapons/benny/shared.lua +++ b/gamemodes/benny/entities/weapons/benny/shared.lua @@ -73,20 +73,6 @@ function SWEP:SetupDataTables() self:SetWep2_Reloading( -1 ) end --- BENNY shit -function SWEP:BTable( alt ) - return self:GetOwner():INV_Get()[ alt and self:GetWep2() or self:GetWep1() ] -end - -function SWEP:BClass( alt ) - local ta = self:BTable( alt ) - if ta then - return WeaponGet( ta.Class ) - else - return false - end -end - function SWEP:B_Ammo( hand, value ) local p = self:GetOwner() local inv = p:INV_Get() @@ -96,7 +82,7 @@ function SWEP:B_Ammo( hand, value ) end function SWEP:B_Firemode( alt ) - return self:BClass( alt ).Firemodes[ self:bGetFiremode( alt ) ] + return self:bWepClass( alt ).Firemodes[ self:bGetFiremode( alt ) ] end function SWEP:B_FiremodeName( alt ) @@ -175,10 +161,10 @@ function SWEP:Think() local p = self:GetOwner() local inv = p:INV_Get() - local wep1 = self:BTable( false ) - local wep1c = self:BClass( false ) - local wep2 = self:BTable( true ) - local wep2c = self:BClass( true ) + local wep1 = self:bWepTable( false ) + local wep1c = self:bWepClass( false ) + local wep2 = self:bWepTable( true ) + local wep2c = self:bWepClass( true ) if self:bGetReqInvID( false ) != "" and self:bGetReqInvID( true ) != "" and self:bGetReqInvID( false ) == self:bGetReqInvID( true ) then self:bSetReqInvID( false, "" ) @@ -199,7 +185,7 @@ function SWEP:Think() -- Just know, this feels bad. if self:bGetReloadTime( hand ) > 0 then -- hold - elseif self:BClass( hand ) and self:bGetShotTime( hand ) + self:GetStat( hand, "ShootHolsterTime" ) > CurTime() then + elseif self:bWepClass( hand ) and self:bGetShotTime( hand ) + self:GetStat( hand, "ShootHolsterTime" ) > CurTime() then -- hold else if curr != "" then @@ -252,7 +238,7 @@ function SWEP:Think() for i=1, 2 do local hand = i==2 - local wep, wepc = self:BTable( hand ), self:BClass( hand ) + local wep, wepc = self:bWepTable( hand ), self:bWepClass( hand ) if wepc and wepc.Features == "firearm" and self:bGetIntDelay( hand ) < CurTime()-0.01 then local mweh = math.Remap( CurTime(), self:bGetShotTime( hand ), self:bGetShotTime( hand ) + self:GetStat( hand, "SpreadDecay_RampTime" ), 0, 1 ) mweh = math.Clamp( mweh, 0, 1 ) @@ -262,10 +248,10 @@ function SWEP:Think() end local ht = "normal" - if self:BClass( false ) and self:bGetHolsterTime( false ) < 0 then + if self:bWepClass( false ) and self:bGetHolsterTime( false ) < 0 then ht = "passive" if self:GetUserAim() then - if self:BClass( true ) then + if self:bWepClass( true ) then ht = "duel" else ht = self:GetStat( false, "HoldType" ) @@ -281,9 +267,9 @@ function SWEP:Think() for i=1, 2 do local hand = i==2 - if self:BClass( hand ) then - if self:BClass( hand ).Custom_Think then - self:BClass( hand ).Custom_Think( self, self:BTable( hand ), self:BClass( hand ), hand ) + if self:bWepClass( hand ) then + if self:bWepClass( hand ).Custom_Think then + self:bWepClass( hand ).Custom_Think( self, self:bWepTable( hand ), self:bWepClass( hand ), hand ) end end end diff --git a/gamemodes/benny/gamemode/modules/gui/cl_debuginv.lua b/gamemodes/benny/gamemode/modules/gui/cl_debuginv.lua index bc60727..9834665 100644 --- a/gamemodes/benny/gamemode/modules/gui/cl_debuginv.lua +++ b/gamemodes/benny/gamemode/modules/gui/cl_debuginv.lua @@ -14,15 +14,15 @@ local function regen_items( itemlist ) local class = inv[v].Class local Class = WeaponGet(class) - if !catesmade[Class.Type] then - catesmade[Class.Type] = true + if !catesmade[Class.Category] then + catesmade[Class.Category] = true local cate = vgui.Create( "DButton" ) itemlist:AddItem( cate ) cate:SetSize( 1, ss(12) ) cate:Dock( TOP ) cate:DockMargin( 0, 0, 0, ss(2) ) - cate.Text_Name = Class.Type + cate.Text_Name = Class.Category function cate:Paint( w, h ) surface.SetDrawColor( schemes[active]["bg"] ) diff --git a/gamemodes/benny/gamemode/modules/gui/cl_spawnmenu.lua b/gamemodes/benny/gamemode/modules/gui/cl_spawnmenu.lua index 77a5431..2c13657 100644 --- a/gamemodes/benny/gamemode/modules/gui/cl_spawnmenu.lua +++ b/gamemodes/benny/gamemode/modules/gui/cl_spawnmenu.lua @@ -64,7 +64,7 @@ local mewer = { score_1 = rmt1c( BENNY_GetStat( class, "Damage" ) * truedelay, 100, 350 ) score_1 = score_1 * weight_1 - score_2 = rmt1c( BENNY_GetStat( class, "Ammo" ), 16, 42 ) + score_2 = rmt1c( BENNY_GetStat( class, "AmmoStd" ), 16, 42 ) score_2 = score_2 * weight_2 return score_1 + score_2 @@ -339,7 +339,7 @@ function OpenSMenu() surface.SetDrawColor( schema("fg") ) surface.DrawRect( 0, 0, w, h ) - draw.SimpleText( BENNY_GetStat( hm, "Ammo" ) .. " rounds", "Benny_12", ss(2), ss(2), schema_c("bg") ) + draw.SimpleText( BENNY_GetStat( hm, "AmmoStd" ) .. " rounds", "Benny_12", ss(2), ss(2), schema_c("bg") ) end return true end @@ -381,11 +381,12 @@ function OpenSMenu() local createlist = {} for ClassName, Class in pairs( WEAPONS ) do - if !createlist[Class.Type] then - createlist[Class.Type] = {} + if !createlist[Class.Category] then + print(Class, Class.Category) + createlist[Class.Category] = {} end - table.insert( createlist[Class.Type], { ClassName = ClassName, Class = Class } ) + table.insert( createlist[Class.Category], { ClassName = ClassName, Class = Class } ) end for i, v in SortedPairs( createlist ) do diff --git a/gamemodes/benny/gamemode/modules/player/cl_camera.lua b/gamemodes/benny/gamemode/modules/player/cl_camera.lua index c4d224a..593baa0 100644 --- a/gamemodes/benny/gamemode/modules/player/cl_camera.lua +++ b/gamemodes/benny/gamemode/modules/player/cl_camera.lua @@ -291,7 +291,7 @@ hook.Add( "CalcView", "Benny_CalcView", function( ply, pos, ang, fov ) local wep = ply:BennyCheck() if wep then -- and ply:GetActiveWeapon():GetAim() > 0 then - local cv = wep:BClass( true ) and wep:BClass( true ).Custom_CalcView or wep:BClass( false ) and wep:BClass( false ).Custom_CalcView + local cv = wep:bWepClass( true ) and wep:bWepClass( true ).Custom_CalcView or wep:bWepClass( false ) and wep:bWepClass( false ).Custom_CalcView local halt = false if cv then halt = cv( wep, view, view.origin, view.angles, view.fov ) diff --git a/gamemodes/benny/gamemode/modules/player/cl_hud.lua b/gamemodes/benny/gamemode/modules/player/cl_hud.lua index b27ecb0..d9e844c 100644 --- a/gamemodes/benny/gamemode/modules/player/cl_hud.lua +++ b/gamemodes/benny/gamemode/modules/player/cl_hud.lua @@ -487,16 +487,16 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() if wep and ConVarCL_Bool("hud_enable_active") then -- Weapon local inv = p:INV_Get() - local wep1 = wep:BTable( false ) - local wep1c = wep:BClass( false ) - local wep2 = wep:BTable( true ) - local wep2c = wep:BClass( true ) + local wep1 = wep:bWepTable( false ) + local wep1c = wep:bWepClass( false ) + local wep2 = wep:bWepTable( true ) + local wep2c = wep:bWepClass( true ) for i=1, 2 do local hand = i==2 - if wep:BTable( hand ) then -- New Weapon HUD - local wep_table = wep:BTable( hand ) - local wep_class = wep:BClass( hand ) + if wep:bWepTable( hand ) then -- New Weapon HUD + local wep_table = wep:bWepTable( hand ) + local wep_class = wep:bWepClass( hand ) local p_w, p_h = ss(156), ss(64) local p_x, p_y = sw - p_w - Wb, Hb @@ -514,7 +514,7 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() draw.SimpleText( wep_class.Name, "Benny_16", p_x+ss(6), p_y+ss(5), scheme["bg"], TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP ) - local identicallist = p:INV_Find( wep:BTable( hand ).Class ) + local identicallist = p:INV_Find( wep:bWepTable( hand ).Class ) identicallist = table.Flip( identicallist ) local numba = identicallist[ wep:bGetInvID( hand ) ] draw.SimpleText( "#" .. tostring(numba) .. ", " .. wep:bGetInvID( hand ), "Benny_10", p_x+p_w-pb2, p_y+ss(7), scheme["bg"], TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP ) @@ -649,11 +649,11 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() for hhhh=1, 2 do local hand = hhhh==2 - if wep:GetUserAim() and wep:BClass( hand ) then -- Crosshair + if wep:GetUserAim() and wep:bWepClass( hand ) then -- Crosshair local s, w, h = ss, ScrW(), ScrH() local gap = gap - if wep:BClass( hand ).Spread then + if wep:bWepClass( hand ).Spread then gap = gap * wep:BSpread( hand ) end @@ -665,7 +665,7 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() local mat1 = i == 1 and mat_long_s or mat_long local mat2 = i == 1 and mat_dot_s or mat_dot surface.SetDrawColor( cooler ) - local typ = wep:BClass( hand ).Type + local typ = wep:bWepClass( hand ).Category if typ == "rifle" or typ == "sniper" then surface.SetMaterial( mat1 ) surface.DrawTexturedRectRotated( poosx - s(spacer_long) - gap, poosy, s(16), s(16), 0 ) @@ -742,12 +742,10 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() local boxsize = ss(b_w) surface.SetDrawColor( scheme[active and "fg" or "bg"] ) surface.DrawRect( b_x + bump, b_y, boxsize, ss(b_h) ) - --draw.SimpleText( class.Type, "Benny_8", b_x + bump + boxsize/2, b_y + ss(3), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) draw.SimpleText( class.Name, "Benny_8", b_x + bump + boxsize/2, b_y + ss(4), scheme[active and "bg" or "fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) if active then draw.SimpleText( active_r and "RIGHT" or active_l and "LEFT", "Benny_10", b_x + bump + boxsize/2, b_y + ss(10), scheme["bg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) end - --draw.SimpleText( "", "Benny_8", b_x + bump + boxsize/2, b_y + ss(17), scheme["fg"], TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP ) if class.Features == "firearm" or class.Features == "grenade" then invid = invid + 1 surface.SetDrawColor( scheme[active and "bg" or "fg"] ) @@ -906,7 +904,7 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() local bx, by = sw/2, sh*(0.75) local mx = 50 - local wep1_table, wep1_class = wep:BTable( false ), wep:BClass( false ) + local wep1_table, wep1_class = wep:bWepTable( false ), wep:bWepClass( false ) if wep1_table then draw.SimpleText( wep1_class.Name, "Benny_14", bx-mx, by+ss(8)*-1, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP ) draw.SimpleText( "Clip1: " .. wep:Clip1(), "Benny_14", bx-mx, by+ss(8)*0, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP ) @@ -917,7 +915,7 @@ hook.Add( "HUDPaint", "Benny_HUDPaint", function() end end - local wep2_table, wep2_class = wep:BTable( true ), wep:BClass( true ) + local wep2_table, wep2_class = wep:bWepTable( true ), wep:bWepClass( true ) if wep2_table then draw.SimpleText( wep2_class.Name, "Benny_14", bx+mx, by+ss(8)*-1, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP ) draw.SimpleText( "Clip2: " .. wep:Clip2(), "Benny_14", bx+mx, by+ss(8)*0, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP ) diff --git a/gamemodes/benny/gamemode/modules/player/sh_movement.lua b/gamemodes/benny/gamemode/modules/player/sh_movement.lua index d52cb3c..1be6736 100644 --- a/gamemodes/benny/gamemode/modules/player/sh_movement.lua +++ b/gamemodes/benny/gamemode/modules/player/sh_movement.lua @@ -24,8 +24,8 @@ hook.Add( "InputMouseApply", "Benny_InputMouseApply", function( cmd, x, y, ang ) local p = LocalPlayer() local w = p:BennyCheck() local cdis = false - if w and w:BClass( false ) and w:BClass( false ).Custom_DisableSpecialMovement and w:BClass( false ).Custom_DisableSpecialMovement( w ) then cdis = true end - if w and w:BClass( true ) and w:BClass( true ).Custom_DisableSpecialMovement and w:BClass( true ).Custom_DisableSpecialMovement( w ) then cdis = true end + if w and w:bWepClass( false ) and w:bWepClass( false ).Custom_DisableSpecialMovement and w:bWepClass( false ).Custom_DisableSpecialMovement( w ) then cdis = true end + if w and w:bWepClass( true ) and w:bWepClass( true ).Custom_DisableSpecialMovement and w:bWepClass( true ).Custom_DisableSpecialMovement( w ) then cdis = true end if GetConVar("benny_cam_override"):GetString() != "" then cdis = true end if p:NoclippingAndNotVaulting() then cdis = true end if w and !cdis then @@ -85,8 +85,8 @@ hook.Add( "CreateMove", "Benny_CreateMove", function( cmd ) local w = p:BennyCheck() local cdis = false if w then - if w:BClass( false ) and w:BClass( false ).Custom_DisableSpecialMovement and w:BClass( false ).Custom_DisableSpecialMovement( w ) then cdis = true end - if w:BClass( true ) and w:BClass( true ).Custom_DisableSpecialMovement and w:BClass( true ).Custom_DisableSpecialMovement( w ) then cdis = true end + if w:bWepClass( false ) and w:bWepClass( false ).Custom_DisableSpecialMovement and w:bWepClass( false ).Custom_DisableSpecialMovement( w ) then cdis = true end + if w:bWepClass( true ) and w:bWepClass( true ).Custom_DisableSpecialMovement and w:bWepClass( true ).Custom_DisableSpecialMovement( w ) then cdis = true end end if GetConVar("benny_cam_override"):GetString() != "" then cdis = true end if LocalPlayer():NoclippingAndNotVaulting() then cdis = true end diff --git a/gamemodes/benny/gamemode/modules/player/sh_movement_advanced.lua b/gamemodes/benny/gamemode/modules/player/sh_movement_advanced.lua index 43c22ad..694658d 100644 --- a/gamemodes/benny/gamemode/modules/player/sh_movement_advanced.lua +++ b/gamemodes/benny/gamemode/modules/player/sh_movement_advanced.lua @@ -151,7 +151,7 @@ hook.Add( "Move", "Benny_Move", function( ply, mv ) local w = ply:BennyCheck() local hand = false - if w and w:BClass( hand ) then + if w and w:bWepClass( hand ) then local targetspeed = ply:GetMaxSpeed() targetspeed = targetspeed * w:GetStat( hand, "Speed_Move" ) diff --git a/gamemodes/benny/gamemode/modules/player/sh_player.lua b/gamemodes/benny/gamemode/modules/player/sh_player.lua index 1e62cd0..028c65a 100644 --- a/gamemodes/benny/gamemode/modules/player/sh_player.lua +++ b/gamemodes/benny/gamemode/modules/player/sh_player.lua @@ -195,8 +195,8 @@ function PT:INV_Weight() end -- PROTO: HOLY SHIT THIS SUCKS, MAKES A FUNCTION AND MIGHT RUN EVERY FRAME!!! table.sort( results, function( a, b ) - return (T_WEIGHT[b[2]["Type"]] - b[1]["Acquisition"]*(1e-5)) - < (T_WEIGHT[a[2]["Type"]] - a[1]["Acquisition"]*(1e-5)) + return (T_WEIGHT[b[2]["Category"]] - b[1]["Acquisition"]*(1e-5)) + < (T_WEIGHT[a[2]["Category"]] - a[1]["Acquisition"]*(1e-5)) end ) local finale = {} for i, v in ipairs( results ) do @@ -278,7 +278,7 @@ do local temp = {} for id, data in pairs( inv ) do local idata = WeaponGet(data.Class) - local translated = translat[idata.Type] + local translated = translat[idata.Category] if i == translated[1] then table.insert( temp, { id, translated[2] } ) diff --git a/gamemodes/benny/gamemode/modules/weapons/_sh_weapons.lua b/gamemodes/benny/gamemode/modules/weapons/_sh_weapons.lua index 8659313..b2d0d80 100644 --- a/gamemodes/benny/gamemode/modules/weapons/_sh_weapons.lua +++ b/gamemodes/benny/gamemode/modules/weapons/_sh_weapons.lua @@ -1332,7 +1332,7 @@ do -- Grenades, nothing here is guaranteed. -- TEMP: Do this right! if !class.GrenadeCharge then self:SetGrenadeDownStart( CurTime() ) end -- - local hand = (self:BTable( true ) and self:BTable( true ).Class == data.Class) or false + local hand = (self:bWepTable( true ) and self:bWepTable( true ).Class == data.Class) or false self:TPFire( hand ) if SERVER then GrenadeCreate( self, data ) end local id = self:bGetInvID( hand ) diff --git a/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua b/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua index d16ee45..1e83e0a 100644 --- a/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua +++ b/gamemodes/benny/gamemode/modules/weapons/sh_weapons.lua @@ -24,6 +24,7 @@ end ItemDef("base", { Name = "Base Item", + Category = "base", Type = "base", Description = "Base of everything", @@ -56,8 +57,8 @@ ItemDef("base", { }) ItemDef("base_firearm", { - --Name = "Base Firearm", - Type = "base", + Name = "Base Firearm", + Category = "base", Base = "base", Description = "Base for firearms", Features = "firearm", @@ -72,6 +73,45 @@ ItemDef("base_firearm", { }, }, + Damage = 0, + AmmoStd = 1, + Pellets = 1, + Delay = 60/600, + + Spread = 0, + SpreadAdd = 0, + SpreadAddMax = 1, + + SpreadDecay_Start = 1, + SpreadDecay_End = 2, + SpreadDecay_RampTime = 1, + + Reload_MagOut = 0.2, + Reload_MagIn = 0.8, + Reload_MagIn_Bonus1 = 0.56, + Reload_MagIn_Bonus2 = 0.56+0.1, + + Func_Attack = function( self, hand ) + end, +}) + +ItemDef("base_melee", { + Name = "Base Melee", + Category = "base", + Base = "base", + Description = "Base for melee weapons", + Features = "firearm", + + WModel = "models/weapons/w_pistol.mdl", + HoldType = "pistol", + + -- Firearm specific + Firemodes = { + { + Mode = 1, + }, + }, + Damage = 0, Delay = 60/600, @@ -89,7 +129,7 @@ ItemDef("base_firearm", { ItemDef("base_grenade", { Name = "Base Grenade", - Type = "grenade", + Category = "grenade", Base = "base", Description = "Base for grenades", Features = "grenade", @@ -100,7 +140,7 @@ ItemDef("base_grenade", { ItemDef("base_magazine", { Name = "Base Magazine", - Type = "magazine", + Category = "magazine", Base = "base", Description = "Base for magazines", Features = "magazine", @@ -110,10 +150,10 @@ ItemDef("base_magazine", { }) ItemDef("deagle", { - --Name = "DEAGLE", + Name = "DEAGLE", Description = "Autoloading .50 caliber pistol.", Base = "base_firearm", - Type = "pistol", + Category = "pistol", WModel = "models/weapons/w_pist_deagle.mdl", HoldType = "revolver", @@ -123,13 +163,32 @@ ItemDef("deagle", { Sound_MagOut = "Anaconda.MagOut", Sound_MagIn = "Anaconda.MagIn", Sound_Cock = "Deagle.Cock", + + -- + AmmoStd = 7, + Delay = (60/180), + Firemodes = FIREMODE_SEMI, + Damage = 47, + Spread = 30/60, + SpreadAdd = 4, + SpreadAddMax = 15, + + SpreadDecay_Start = 8, + SpreadDecay_End = 25, + SpreadDecay_RampTime = 0.5, + + Speed_Move = 0.95, + Speed_Aiming = 0.95, + Speed_Reloading = 0.95, + Speed_Firing = 0.95, + Speed_FiringTime = 0.5, }) ItemDef("mag_deagle", { Name = "MAG: DEAGLE 7-rnd", Base = "base_magazine", - Ammo = 7, + Ammo = 14, }) --[[ ItemDef("deagle", {