Adding and removing effects

To add or remove effects, simply append to the StatusEffectRequests buffer. The request will be automatically evaluated, and the stacks and duration will be handled by a custom system.

Note that the equivalent of predicate and event based durations are stored by an event ID. If you are using Status Effects with custom predicate and events you will need to create your own systems that manage them. It will need to query all StatusEffects buffers, iterate through them, and decrement duration accordingly for specifically effects with event and predicate timing.

            var entity = EntityManager.CreateEntityQuery(typeof(ExamplePlayer)).GetSingletonEntity();
            var requests = EntityManager.GetBuffer<StatusEffectRequests>(entity);
            // Add
            requests.Add(new StatusEffectRequests(MyStatusEffectData.Id));
            // Add with stack count
            requests.Add(new StatusEffectRequests(MyStatusEffectData.Id, stacks: 5));
            // Add with duration
            requests.Add(new StatusEffectRequests(MyStatusEffectData.Id, duration: 3));
            // Add with a predicate
            requests.Add(new StatusEffectRequests(MyStatusEffectData.Id, eventId: MyEventId));
            // Add with an event
            requests.Add(new StatusEffectRequests(MyStatusEffectData.Id, duration: 3, eventId: MyEventId));

            // Remove all
            requests.Add(new StatusEffectRequests(StatusEffectRemovalType.Any));
            // Remove with stack count
            requests.Add(new StatusEffectRequests(StatusEffectRemovalType.Any, stacks: 5));
            // Remove specific data
            requests.Add(new StatusEffectRequests(StatusEffectRemovalType.Data, id: MyStatusEffectData.Id));
            // Remove specific name
            requests.Add(new StatusEffectRequests(StatusEffectRemovalType.Name, id: MyComparableName.Id));
            // Remove specific group
            requests.Add(new StatusEffectRequests(StatusEffectRemovalType.Group, group: MyStatusEffectData.Group));

Last updated