Beispiel #1
0
        private void TurnOff(EnergySwordComponent comp)
        {
            if (!comp.Activated)
            {
                return;
            }

            if (TryComp(comp.Owner, out ItemComponent? item))
            {
                _item.SetSize(comp.Owner, 5, item);
            }

            if (TryComp <DisarmMalusComponent>(comp.Owner, out var malus))
            {
                malus.Malus -= comp.litDisarmMalus;
            }

            if (TryComp <MeleeWeaponComponent>(comp.Owner, out var weaponComp))
            {
                weaponComp.HitSound = comp.OnHitOff;
            }

            RemComp <SharpComponent>(comp.Owner);

            SoundSystem.Play(comp.DeActivateSound.GetSound(), Filter.Pvs(comp.Owner, entityManager: EntityManager), comp.Owner);

            comp.Activated = false;
        }
Beispiel #2
0
 private void OnMapInit(EntityUid uid, EnergySwordComponent comp, MapInitEvent args)
 {
     if (comp.ColorOptions.Count != 0)
     {
         comp.BladeColor = _random.Pick(comp.ColorOptions);
     }
 }
Beispiel #3
0
        private void TurnOn(EnergySwordComponent comp)
        {
            if (comp.Activated)
            {
                return;
            }

            if (TryComp(comp.Owner, out ItemComponent? item))
            {
                _item.SetSize(comp.Owner, 9999, item);
            }

            EnsureComp <SharpComponent>(comp.Owner);

            if (TryComp <MeleeWeaponComponent>(comp.Owner, out var weaponComp))
            {
                weaponComp.HitSound = comp.OnHitOn;
            }

            SoundSystem.Play(comp.ActivateSound.GetSound(), Filter.Pvs(comp.Owner, entityManager: EntityManager), comp.Owner);

            if (TryComp <DisarmMalusComponent>(comp.Owner, out var malus))
            {
                malus.Malus += comp.litDisarmMalus;
            }

            comp.Activated = true;
        }
Beispiel #4
0
        private void OnInteractUsing(EntityUid uid, EnergySwordComponent comp, InteractUsingEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (!TryComp(args.Used, out ToolComponent? tool) || !tool.Qualities.ContainsAny("Pulsing"))
            {
                return;
            }

            args.Handled = true;
            comp.Hacked  = !comp.Hacked;

            if (comp.Hacked)
            {
                var rgb = EnsureComp <RgbLightControllerComponent>(uid);
                _rgbSystem.SetCycleRate(uid, comp.CycleRate, rgb);
            }
            else
            {
                RemComp <RgbLightControllerComponent>(uid);
            }
        }
Beispiel #5
0
        private void OnMeleeHit(EntityUid uid, EnergySwordComponent comp, MeleeHitEvent args)
        {
            if (!comp.Activated)
            {
                return;
            }

            // Overrides basic blunt damage with burn+slash as set in yaml
            args.BonusDamage = comp.LitDamageBonus;
        }
Beispiel #6
0
        private void UpdateAppearance(EnergySwordComponent component)
        {
            if (!TryComp(component.Owner, out AppearanceComponent? appearanceComponent))
            {
                return;
            }

            appearanceComponent.SetData(ToggleableLightVisuals.Enabled, component.Activated);
            appearanceComponent.SetData(ToggleableLightVisuals.Color, component.BladeColor);
        }
        private void TurnOn(EnergySwordComponent comp)
        {
            if (comp.Activated)
            {
                return;
            }

            if (TryComp(comp.Owner, out SharedItemComponent? item))
            {
                item.Size = 9999;
            }

            SoundSystem.Play(Filter.Pvs(comp.Owner), comp.ActivateSound.GetSound(), comp.Owner);

            comp.Activated = true;
            UpdateAppearance(comp, item);
        }
        private void OnUseInHand(EntityUid uid, EnergySwordComponent comp, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            args.Handled = true;

            if (comp.Activated)
            {
                TurnOff(comp);
            }
            else
            {
                TurnOn(comp);
            }
        }
        private void OnInteractUsing(EntityUid uid, EnergySwordComponent comp, InteractUsingEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (comp.Hacked)
            {
                return;
            }

            if (!TryComp(args.Used, out ToolComponent? tool) || !tool.Qualities.ContainsAny("Pulsing"))
            {
                return;
            }

            args.Handled = true;
            comp.Hacked  = true;
            UpdateAppearance(comp);
        }
        private void UpdateAppearance(EnergySwordComponent component, SharedItemComponent?itemComponent = null)
        {
            if (!EntityManager.TryGetComponent(component.Owner, out AppearanceComponent? appearanceComponent))
            {
                return;
            }

            appearanceComponent.SetData(EnergySwordVisuals.Color, component.BladeColor);

            var status = component.Activated ? EnergySwordStatus.On : EnergySwordStatus.Off;

            if (component.Hacked)
            {
                status |= EnergySwordStatus.Hacked;
            }

            appearanceComponent.SetData(EnergySwordVisuals.State, status);
            // wew itemcomp
            if (Resolve(component.Owner, ref itemComponent, false))
            {
                itemComponent.EquippedPrefix = component.Activated ? "on" : "off";
                itemComponent.Color          = component.BladeColor;
            }
        }