Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function GM:ScalePlayerDamage( ply, hitgroup, dmginfo )
- if( ply:IsEFlagSet( EFL_NOCLIP_ACTIVE ) or ply:Team() == TEAM_UNASSIGNED ) then
- dmginfo:ScaleDamage( 0 );
- return;
- end
- if( hitgroup == HITGROUP_HEAD ) then
- dmginfo:ScaleDamage( 2 );
- end
- if( hitgroup == HITGROUP_LEFTARM or
- hitgroup == HITGROUP_RIGHTARM or
- hitgroup == HITGROUP_LEFTLEG or
- hitgroup == HITGROUP_RIGHTLEG or
- hitgroup == HITGROUP_GEAR ) then
- dmginfo:ScaleDamage( 0.5 );
- end
- if( hitgroup == HITGROUP_LEFTLEG or
- hitgroup == HITGROUP_RIGHTLEG ) then
- if( bit.band( dmginfo:GetDamageType(), DMG_BULLET ) == DMG_BULLET ) then
- local b = 15 - ( ply:Toughness() / 100 * 15 );
- b = b + ( ply:Hunger() / 100 ) * 10;
- if( CurTime() - ply:LastLegShot() >= b + 5 ) then
- ply:EmitSound( "Flesh.Break" );
- end
- ply:SetLastLegShot( CurTime() );
- end
- end
- local nDmgScale = 1
- for k,v in next, ply:GetEquippedItems() do
- local metaitem = GAMEMODE:GetItemByID( v );
- if( metaitem ) then
- if( metaitem.ArmorValues ) then
- for m,n in next, metaitem.ArmorValues do
- if( bit.band( dmginfo:GetDamageType(), m ) == m ) then
- nDmgScale = nDmgScale * n;
- end
- end
- end
- end
- end
- if( nDmgScale ) then
- dmginfo:ScaleDamage( nDmgScale );
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement