View difference between Paste ID: PVX6gKk8 and Vmr23qVs
SHOW: | | - or go back to the newest paste.
1
function GM:ScalePlayerDamage( ply, hitgroup, dmginfo )
2
	
3
	if( ply:IsEFlagSet( EFL_NOCLIP_ACTIVE ) or ply:Team() == TEAM_UNASSIGNED ) then
4
		
5
		dmginfo:ScaleDamage( 0 );
6
		return;
7
		
8
	end
9
	
10
	if( hitgroup == HITGROUP_HEAD ) then
11
		
12
		dmginfo:ScaleDamage( 2 );
13
		
14
	end
15
	
16
	if( hitgroup == HITGROUP_LEFTARM or
17
		hitgroup == HITGROUP_RIGHTARM or 
18
		hitgroup == HITGROUP_LEFTLEG or
19
		hitgroup == HITGROUP_RIGHTLEG or
20
		hitgroup == HITGROUP_GEAR ) then
21
		
22
		dmginfo:ScaleDamage( 0.5 );
23
		
24
	end
25
	
26
	if( hitgroup == HITGROUP_LEFTLEG or
27
		hitgroup == HITGROUP_RIGHTLEG ) then
28
		
29
		if( bit.band( dmginfo:GetDamageType(), DMG_BULLET ) == DMG_BULLET ) then
30
			
31
			local b = 15 - ( ply:Toughness() / 100 * 15 );
32
			b = b + ( ply:Hunger() / 100 ) * 10;
33
			
34
			if( CurTime() - ply:LastLegShot() >= b + 5 ) then
35
				
36
				ply:EmitSound( "Flesh.Break" );
37
				
38
			end
39
			
40
			ply:SetLastLegShot( CurTime() );
41
			
42
		end
43
		
44
	end
45
46
	local nDmgScale = 1
47
48
	for k,v in next, ply:GetEquippedItems() do
49
50
		local metaitem = GAMEMODE:GetItemByID( v );
51
		
52
		if( metaitem ) then
53
			
54
			if( metaitem.ArmorValues ) then
55
56
				for m,n in next, metaitem.ArmorValues do
57
58-
					if( bit.band( dmginfo:GetDamageType(), g ) == g ) then
58+
					if( bit.band( dmginfo:GetDamageType(), m ) == m ) then
59
60-
						nDmgScale = nDmgScale * h;
60+
						nDmgScale = nDmgScale * n;
61
62
					end
63
64
				end
65
66
			end
67
68
		end
69
70
	end
71
	
72
	if( nDmgScale ) then
73
	
74
		dmginfo:ScaleDamage( nDmgScale );
75
	
76
	end
77
	
78
end