예제 #1
0
 private void OnGotEquipped(EntityUid uid, MagbootsComponent component, GotEquippedEvent args)
 {
     if (args.Slot == "shoes")
     {
         UpdateMagbootEffects(args.Equipee, uid, true, component);
     }
 }
예제 #2
0
 private void OnSlipAttempt(EntityUid uid, MagbootsComponent component, SlipAttemptEvent args)
 {
     if (component.On)
     {
         args.Cancel();
     }
 }
    private void OnToggleAction(EntityUid uid, MagbootsComponent component, ToggleActionEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        args.Handled = true;
        component.On = !component.On;

        if (_sharedContainer.TryGetContainingContainer(uid, out var container) &&
            _inventory.TryGetSlotEntity(container.Owner, "shoes", out var entityUid) && entityUid == component.Owner)
        {
            UpdateMagbootEffects(container.Owner, uid, true, component);
        }

        if (TryComp <ItemComponent>(uid, out var item))
        {
            _item.SetHeldPrefix(uid, component.On ? "on" : null, item);
            _clothing.SetEquippedPrefix(uid, component.On ? "on" : null);
        }

        if (TryComp(uid, out AppearanceComponent? appearance))
        {
            appearance.SetData(ToggleVisuals.Toggled, component.On);
        }

        OnChanged(component);
        Dirty(component);
    }
예제 #4
0
        private void AddToggleVerb(EntityUid uid, MagbootsComponent component, GetActivationVerbsEvent args)
        {
            if (!args.CanAccess || !args.CanInteract)
                return;

            Verb verb = new();
            verb.Text = Loc.GetString("toggle-magboots-verb-get-data-text");
            verb.Act = () => component.On = !component.On;
            // TODO VERB ICON add toggle icon? maybe a computer on/off symbol?
            args.Verbs.Add(verb);
        }
    private void OnHandleState(EntityUid uid, MagbootsComponent component, ref ComponentHandleState args)
    {
        if (args.Current is not MagbootsComponentState componentState)
        {
            return;
        }

        if (component.On == componentState.On)
        {
            return;
        }

        component.On = componentState.On;
        OnChanged(component);
    }
예제 #6
0
 private void OnRefreshMovespeed(EntityUid uid, MagbootsComponent component, RefreshMovementSpeedModifiersEvent args)
 {
     args.ModifySpeed(component.WalkSpeedModifier, component.SprintSpeedModifier);
 }
 private void OnGetActions(EntityUid uid, MagbootsComponent component, GetItemActionsEvent args)
 {
     args.Actions.Add(component.ToggleAction);
 }
 protected void OnChanged(MagbootsComponent component)
 {
     _sharedActions.SetToggled(component.ToggleAction, component.On);
     _clothingSpeedModifier.SetClothingSpeedModifierEnabled(component.Owner, component.On);
 }
 private void OnGetState(EntityUid uid, MagbootsComponent component, ref ComponentGetState args)
 {
     args.State = new MagbootsComponentState(component.On);
 }