2021-11-29 02:34:44 +13:00
using Content.Server.Administration.Logs ;
2021-10-07 13:01:27 +02:00
using Content.Server.Damage.Components ;
using Content.Server.Tools.Components ;
2021-11-29 02:34:44 +13:00
using Content.Shared.Administration.Logs ;
2021-10-07 13:01:27 +02:00
using Content.Shared.Damage ;
2021-11-28 14:56:53 +01:00
using Content.Shared.Database ;
2021-10-07 13:01:27 +02:00
using Content.Shared.Interaction ;
using Robust.Shared.GameObjects ;
using Robust.Shared.IoC ;
namespace Content.Server.Damage.Systems
{
public class DamageOnToolInteractSystem : EntitySystem
{
[Dependency] private readonly DamageableSystem _damageableSystem = default ! ;
2021-11-29 02:34:44 +13:00
[Dependency] private readonly AdminLogSystem _logSystem = default ! ;
2021-10-07 13:01:27 +02:00
public override void Initialize ( )
{
base . Initialize ( ) ;
SubscribeLocalEvent < DamageOnToolInteractComponent , InteractUsingEvent > ( OnInteracted ) ;
}
private void OnInteracted ( EntityUid uid , DamageOnToolInteractComponent component , InteractUsingEvent args )
{
if ( args . Handled )
return ;
if ( component . WeldingDamage is { } weldingDamage
2021-12-08 13:00:43 +01:00
& & EntityManager . TryGetComponent < WelderComponent ? > ( args . Used , out var welder )
2021-12-21 17:20:32 +00:00
& & welder . Lit
& & ! welder . TankSafe )
2021-10-07 13:01:27 +02:00
{
2021-12-03 15:53:09 +01:00
var dmg = _damageableSystem . TryChangeDamage ( args . Target , weldingDamage ) ;
2021-11-29 02:34:44 +13:00
if ( dmg ! = null )
_logSystem . Add ( LogType . Damaged ,
2021-12-14 00:22:58 +13:00
$"{ToPrettyString(args.User):user} used {ToPrettyString(args.Used):used} as a welder to deal {dmg.Total:damage} damage to {ToPrettyString(args.Target):target}" ) ;
2021-11-29 02:34:44 +13:00
2021-10-07 13:01:27 +02:00
args . Handled = true ;
}
2021-11-29 02:34:44 +13:00
else if ( component . DefaultDamage is { } damage
2021-12-08 13:00:43 +01:00
& & EntityManager . TryGetComponent < ToolComponent ? > ( args . Used , out var tool )
2021-10-07 13:01:27 +02:00
& & tool . Qualities . ContainsAny ( component . Tools ) )
{
2021-12-03 15:53:09 +01:00
var dmg = _damageableSystem . TryChangeDamage ( args . Target , damage ) ;
2021-11-29 02:34:44 +13:00
if ( dmg ! = null )
_logSystem . Add ( LogType . Damaged ,
2021-12-14 00:22:58 +13:00
$"{ToPrettyString(args.User):user} used {ToPrettyString(args.Used):used} as a tool to deal {dmg.Total:damage} damage to {ToPrettyString(args.Target):target}" ) ;
2021-11-29 02:34:44 +13:00
2021-10-07 13:01:27 +02:00
args . Handled = true ;
}
}
}
}