#267 stop spell stacking of same spell

Closed
opened 3 years ago by image · 4 comments
image commented 3 years ago

We don't have code for this AFAIK. Need a way to do this, sadly might have to regex through the spell names to see if it matches the new spell, there doesn't seem to be any matching way to do it other than that they may call the same LUA file (but may not!)

We don't have code for this AFAIK. Need a way to do this, sadly might have to regex through the spell names to see if it matches the new spell, there doesn't seem to be any matching way to do it other than that they may call the same LUA file (but may not!)
neatz09 commented 3 years ago
Collaborator

we do not. the best approach would probably have a DB entry similar to linked_ID but use it to cancel out/lock out unstackable spells. mobs can stack some the "unstackable" spells as long as they come from a different source. i.e 2 mobs hit with quickstrike they will stack as long as one trigger comes from each mob.

we do not. the best approach would probably have a DB entry similar to linked_ID but use it to cancel out/lock out unstackable spells. mobs can stack some the "unstackable" spells as long as they come from a different source. i.e 2 mobs hit with quickstrike they will stack as long as one trigger comes from each mob.
image commented 3 years ago
Collaborator
  • Spells are now tracked by the link_timer_id, this means that like spells (eg. Arctic Blast I, Arctic Blast II, etc.) will not stack. The lesser spells will be rejected if the higher tier is already casted on the mob.
  • Spells of same or higher tier that are unfriendly spells will replace the existing.
  • Friendly spells of higher tier will cause the previous tier spell to cancel out on the maintained list, subsequent queueing will put higher tier spell on maintained spells.
  • If there are multiple casters on a mob, unless it is a DEBUFF they will stack. Same rules apply above to the caster on target.
- Spells are now tracked by the link_timer_id, this means that like spells (eg. Arctic Blast I, Arctic Blast II, etc.) will not stack. The lesser spells will be rejected if the higher tier is already casted on the mob. - Spells of same or higher tier that are unfriendly spells will replace the existing. - Friendly spells of higher tier will cause the previous tier spell to cancel out on the maintained list, subsequent queueing will put higher tier spell on maintained spells. - If there are multiple casters on a mob, unless it is a DEBUFF they will stack. Same rules apply above to the caster on target.
image commented 3 years ago
Collaborator

other than DD and DOT other spells will not stack with each other if in the same linked group. We may need an extended way to group spells beyond that 'linked group' like spell_type_group.

#define SPELL_TYPE_UNSET        1
#define SPELL_TYPE_DD           2
#define SPELL_TYPE_DOT          3
#define SPELL_TYPE_HEAL         4
#define SPELL_TYPE_HOT_WARD     5
#define SPELL_TYPE_DEBUFF       6
#define SPELL_TYPE_BUFF         7
#define SPELL_TYPE_COMBATBUFF   8
#define SPELL_TYPE_TAUNT        9
#define SPELL_TYPE_DETAUNT      10
#define SPELL_TYPE_REZ          11
#define SPELL_TYPE_CURE         12
other than DD and DOT other spells will not stack with each other if in the same linked group. We may need an extended way to group spells beyond that 'linked group' like spell_type_group. ``` #define SPELL_TYPE_UNSET 1 #define SPELL_TYPE_DD 2 #define SPELL_TYPE_DOT 3 #define SPELL_TYPE_HEAL 4 #define SPELL_TYPE_HOT_WARD 5 #define SPELL_TYPE_DEBUFF 6 #define SPELL_TYPE_BUFF 7 #define SPELL_TYPE_COMBATBUFF 8 #define SPELL_TYPE_TAUNT 9 #define SPELL_TYPE_DETAUNT 10 #define SPELL_TYPE_REZ 11 #define SPELL_TYPE_CURE 12 ```
image commented 3 years ago
Collaborator
alter table spells add column type_group_spell_id int(10) signed not null default '0';
type_group_spell_id = 0 - follows other criteria (linked timer id, spell id, etc.)
type_group_spell_id > 0 - this is another way beyond the linked_timer to restrict spells being casted on a target
type_group_spell_id = -1 - allows stacking with other players spells
type_group_spell_id <= -2 - allows stacking with other players and self
``` alter table spells add column type_group_spell_id int(10) signed not null default '0'; ``` ``` type_group_spell_id = 0 - follows other criteria (linked timer id, spell id, etc.) type_group_spell_id > 0 - this is another way beyond the linked_timer to restrict spells being casted on a target type_group_spell_id = -1 - allows stacking with other players spells type_group_spell_id <= -2 - allows stacking with other players and self ```
Sign in to join this conversation.
Loading...
Cancel
Save
There is no content yet.