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 |