Commit Graph

1060 Commits

Author SHA1 Message Date
65a608b478 Email: fix issue #186 2023-02-27 16:07:37 -06:00
gsemaj
bbaaa53df2 [WIP] Active power handling
TODO:
- recall (self and group) is broken
- revive (only group) is broken
- damage + debuff is unimplemented
2022-11-27 17:39:08 -05:00
gsemaj
273b73379e Sync with master 2022-07-30 22:50:03 -07:00
gsemaj
1709d2b0ef 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.
2022-07-30 22:35:20 -07:00
gsemaj
457c320d48 Move some stuff from playerTick to player combat step 2022-07-30 22:35:19 -07:00
gsemaj
29024e9351 Refactor group handling 2022-07-30 22:35:19 -07:00
gsemaj
0994aaff71 Port egg buffs over to new system 2022-07-30 22:35:19 -07:00
gsemaj
cb94018e46 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.
2022-07-30 22:35:18 -07:00
gsemaj
e0a0cc186e Passive nano powers 2022-07-30 22:35:18 -07:00
gsemaj
d4253c3b49 YET ANOTHER ITERATION of the new ability system
I am very tired
2022-07-30 22:35:17 -07:00
gsemaj
5b58055924 Passive nano powers pt 1 2022-07-30 22:35:17 -07:00
gsemaj
7a7cdb1330 Passive nano powers boilerplate 2022-07-30 22:35:16 -07:00
gsemaj
0e054e21b6 Fix timed out buffs not calling onExpire 2022-07-30 22:35:16 -07:00
gsemaj
ad9bf2a9e3 Buff framework tweaks + polish 2022-07-30 22:35:16 -07:00
gsemaj
a38bf0e7be 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.
2022-07-30 22:35:15 -07:00
gsemaj
3d22103113 oops 2022-07-30 22:35:15 -07:00
gsemaj
761581afd7 CRLF purge in Buffs.cpp 2022-07-30 22:35:15 -07:00
gsemaj
daec7a33b7 egg prep 2022-07-30 22:35:14 -07:00
gsemaj
462ced6685 Move Buff implementation to Buffs.cpp 2022-07-30 22:35:14 -07:00
gsemaj
cc190efc63 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
- ???
2022-07-30 22:35:14 -07:00
gsemaj
df1b4ff160 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
2022-07-30 22:35:13 -07:00
gsemaj
9f7c8a18df Get rid of player fire rate suspicion
This was super primitive & jank, and caused false positives.
Will replace with a polished system later on.
2022-07-30 22:32:25 -07:00
gsemaj
ea61ed1aaa Handle case where cmake is invoked outside root 2022-07-30 22:32:25 -07:00
gsemaj
9982d9bdda Start moving passive power processing to playerTick 2022-07-30 22:32:25 -07:00
gsemaj
398e9fddf8 Groundwork for new buff system 2022-07-30 22:32:24 -07:00
gsemaj
fd664c4f19 Active power classification 2022-07-30 22:32:24 -07:00
gsemaj
feaaf4cab9 some struct reorg 2022-07-30 22:32:24 -07:00
gsemaj
d3e6bae5d9 Replace group filter operator with function 2022-07-30 22:32:24 -07:00
gsemaj
0f042c4233 Ignore .bak files
for my local backups lol
2022-07-30 22:32:24 -07:00
gsemaj
3dc7124f58 Refactor player groups
Group structures are used now. Adds more checks in some places but simplifies things overall.
We can expand this system to entities as well now pretty trivially.
2022-07-30 22:32:23 -07:00
gsemaj
71e78afa0b (WIP) EXPERIMENTAL GROUP CHANGES 2022-07-30 22:32:23 -07:00
gsemaj
0a2b3fbdad (WIP) TODO ABILITIES 2022-07-30 22:31:18 -07:00
gsemaj
911dbaab83 Move mob aggro logic into takeDamage override
God that feels good
2022-07-30 22:31:18 -07:00
gsemaj
7183180be5 (WIP) Move away from rigid states/transitions to allow custom behavior 2022-07-30 22:31:18 -07:00
gsemaj
3f1f78942e EntityType -> EntityKind 2022-07-30 22:31:18 -07:00
gsemaj
a9dea36882 (WIP) onRoamStart hook implementation 2022-07-30 22:31:17 -07:00
gsemaj
de23779209 (WIP) Remove BaseNPC::barkerType to save space 2022-07-30 22:31:17 -07:00
gsemaj
748a82e223 ope 2022-07-30 22:31:17 -07:00
gsemaj
231e88fd55 (WIP) onCombatStart hook implementation 2022-07-30 22:31:17 -07:00
gsemaj
abfb562489 (WIP) onDeath hook implementation 2022-07-30 22:31:17 -07:00
gsemaj
589c5a8732 (WIP) Add src param to transition + certain hooks
Should all hooks have src? I think not
2022-07-30 22:31:17 -07:00
gsemaj
0b8b92b7f6 (WIP) Transitions + hook definitions + onRetreat hook implementation 2022-07-30 22:31:17 -07:00
gsemaj
f0cf6326e5 (WIP) Point 2: Generalization 2022-07-30 22:31:16 -07:00
gsemaj
82bc94c01c (WIP) Point 1: step functions 2022-07-30 22:29:14 -07:00
gsemaj
5d9dcb8609 (WIP) Start implementing ICombatant
Start by replacing `hitMob` with `takeDamage` interface function.
Simplify `pcAttackChars` a little by utilizing the new interface, then add more interface functions as needed.

A lot of the combat logic is tied to the `Mob` class. Need to start moving stuff over to CombatNPC.
2022-07-30 22:29:13 -07:00
gsemaj
166e148878 (WIP) Move ICombatant functions around a bit 2022-07-30 22:29:12 -07:00
gsemaj
14b02ec5d2 (WIP) Initial ICombatant draft 2022-07-30 22:29:12 -07:00
d50c312227 [refactor] Get rid of NPC.hpp
This file was already obsoleted at the start of the refactor, but seems
to have escaped notice until now.
2022-07-30 22:29:10 -07:00
18ed96493f [refactor] Replace a few uses of magic numbers with enums 2022-07-30 22:29:10 -07:00
71a7d3d164 [refactor] Cosmetic cleanup in Fuse fight functions 2022-07-30 22:29:08 -07:00