Commit Graph

1114 Commits

Author SHA1 Message Date
gsemaj 33fde8af69
Tighten parameter for removeBuff 2023-08-13 10:50:50 -07:00
gsemaj 1a7bb826d8 Move drain to new system
TODO
- There is a seg fault that happens when drain kills the mob
- leech unimplemented
- mob skills unimplemented
2023-07-25 20:30:54 +00:00
gsemaj da9fb499de reorder some stuff 2023-07-25 19:49:38 +00:00
gsemaj 2bc2235179 Fix icon not disappearing for debuffs 2023-07-25 19:11:28 +00:00
gsemaj 618126f963 Tick buffs for mobs 2023-07-25 19:00:35 +00:00
gsemaj b16ffe4f19 Fix infinite slowdown with snare 2023-07-25 19:00:01 +00:00
gsemaj 6edc01c1f1
Implement buff handling for CombatNPC 2023-07-25 13:49:40 -04:00
gsemaj c0e566050b
Move buffs from Mob to CombatNPC 2023-07-25 13:42:40 -04:00
gsemaj 7a59248ace
Implement buffs for mobs 2023-07-25 13:19:49 -04:00
gsemaj 6ee55d7406
Damage n debuff handler 2023-07-25 13:09:28 -04:00
gsemaj 41622ad8aa Fix trailing structs
The change to allow flexible trailing struct sizes broke
`attachSkillResults` oops
2023-07-25 17:05:44 +00:00
gsemaj 0f09808bc4
Get rid of cbf 2023-07-25 10:43:48 -04:00
gsemaj b6171ebdc1
Add `clearBuffs` 2023-07-25 10:41:45 -04:00
gsemaj 5671adbd74
Make skill result size check an assertion 2023-07-23 10:46:53 -04:00
gsemaj 550b26db39
Oops 2023-07-23 10:42:07 -04:00
gsemaj 68be9cc381
Change SkillResult size validation
Since leech uses trailing structs of two different sizes, just use the max SkillResult size in validation/zeroing and then check for overflow in a couple extra places
2023-07-23 10:31:40 -04:00
gsemaj ef33a182d1
Reorder abilities to match client handling 2023-07-23 10:15:00 -04:00
gsemaj 9bd8eabed7
Don't add buff if player dead 2023-07-23 10:13:22 -04:00
gsemaj 2249b5381b
Fix seg fault with egg powers 2023-07-22 15:10:00 -04:00
gsemaj 9b7656117d
Reuse `useNanoSkill` codepath for passive powers 2023-07-20 17:53:13 -04:00
gsemaj 9394825d41
Fix recall 2023-07-12 17:43:05 -04:00
gsemaj 6e0d55c4b7
Make SkillType an enum class 2023-07-12 17:37:05 -04:00
gsemaj 33396f8d28
Fix self recall 2023-07-11 20:21:37 -04:00
gsemaj cd908666af
[WIP] Fix targeting for groups 2023-07-11 17:42:08 -04:00
gsemaj 74588f2c77
[WIP] Active power handling
TODO:
- recall (self and group) is broken
- revive (only group) is broken
- damage + debuff is unimplemented
2023-07-11 13:52:59 -04:00
gsemaj 829f75112c
Sync with master 2023-07-11 13:52:59 -04:00
gsemaj 343668fbcd
Add overload to remove specific class of buff
I initially added this because, despite the higher tickrate for
composite condition calculations thanks to the last commit, there is
still a slight status icon delay when rapidly switching nanos. I
attempted to use this to make that problem go away and for whatever
reason it wasn't effective, but I figure it would be useful to have
anyway so I'm keeping it.
2023-07-11 13:52:59 -04:00
gsemaj 2e572169c0
Move some stuff from playerTick to player combat step 2023-07-11 13:52:59 -04:00
gsemaj b3e28ddea3
Refactor group handling 2023-07-11 13:52:58 -04:00
gsemaj 1670dfd830
Port egg buffs over to new system 2023-07-11 13:52:58 -04:00
gsemaj e768ebcabe
More skill handlers
Note: need to revisit these when active powers are implemented to make
sure they are correct. DamageNDebuff isn't even implemented yet.
2023-07-11 13:52:58 -04:00
gsemaj 9bc7e8de62
Passive nano powers 2023-07-11 13:52:58 -04:00
gsemaj f249599ab5
YET ANOTHER ITERATION of the new ability system
I am very tired
2023-07-11 13:52:57 -04:00
gsemaj 2901f5f285
Passive nano powers pt 1 2023-07-11 13:52:57 -04:00
gsemaj 36f329c302
Passive nano powers boilerplate 2023-07-11 13:52:57 -04:00
gsemaj eb7daf8eaa
Fix timed out buffs not calling onExpire 2023-07-11 13:52:57 -04:00
gsemaj 0c5a9400ce
Buff framework tweaks + polish 2023-07-11 13:52:56 -04:00
gsemaj f150595f70
Rework buff callbacks
The first implementation was way too complicated and prone to bugs.
This is much more simple flexible; first off, std::function is now used
instead of a raw function pointer, so lambdas and binds are fair game
which is great for scripting. Second, callbacks for all stacks are
executed. It is up to the callback target to ensure correct behavior.
2023-07-11 13:52:56 -04:00
gsemaj c6528eb2ac
oops 2023-07-11 13:52:56 -04:00
gsemaj d631ca1aa1
CRLF purge in Buffs.cpp 2023-07-11 13:52:56 -04:00
gsemaj a94fb0ed6d
egg prep 2023-07-11 13:52:55 -04:00
gsemaj d48aa21135
Move `Buff` implementation to Buffs.cpp 2023-07-11 13:52:55 -04:00
gsemaj c60c4dac38
New buff framework (player implementation)
Get rid of `iConditionBitFlag` in favor of a system of individual buff
objects that get composited to a bitflag on-the-fly.
Buff objects can have callbacks for application, expiration, and tick,
making them pretty flexible. Scripting languages can eventually use
these for custom behavior, too.

TODO:
- Get rid of bitflag in BaseNPC
- Apply buffs from passive nano powers
- Apply buffs from active nano powers
- Move eggs to new system
- ???
2023-07-11 13:52:55 -04:00
gsemaj 215da0130d
The great re-`#include`
Was getting frustrated by the inconsistency in our include statements,
which were causing me problems. As a result, I went through and manually
re-organized every include statement in non-core files.

I'm just gonna copy my rant from Discord:
FOR HEADER FILES (.hpp):
- everything you use IN THE HEADER must be EXPLICITLY INCLUDED with the exception of things that fall under Core.hpp
- you may NOT include ANYTHING ELSE

FOR SOURCE FILES (.cpp):
- you can #include whatever you want as long as the partner header is included first
- anything that gets included by another include is fair game
- redundant includes are ok because they'll be harmless AS LONG AS our header files stay lean.

the point of this is NOT to optimize the number of includes used all around or make things more efficient necessarily. it's to improve readability & coherence and make it easier to avoid cyclical issues
2023-07-11 13:52:54 -04:00
gsemaj 0e8a4742eb
Get rid of player fire rate suspicion
This was super primitive & jank, and caused false positives.
Will replace with a polished system later on.
2023-07-11 13:52:54 -04:00
gsemaj 85bb4d163e
Handle case where cmake is invoked outside root 2023-07-11 13:52:54 -04:00
gsemaj 09b74a5711
Start moving passive power processing to `playerTick` 2023-07-11 13:52:53 -04:00
gsemaj 90819bea8e
Groundwork for new buff system 2023-07-11 13:52:53 -04:00
gsemaj 3cc5c09a91
Active power classification 2023-07-11 13:52:53 -04:00
gsemaj 536d5fbcfa
some struct reorg 2023-07-11 13:52:53 -04:00