readme
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#ifndef STATUS_EFFECT_CLASS
|
||||
#define STATUS_EFFECT_CLASS
|
||||
|
||||
#include <string>
|
||||
|
||||
// Something lasting put on a character, changing how it moves or what it can do while it's on
|
||||
struct StatusEffect {
|
||||
enum class Type {
|
||||
HeavyGravity, // pulled down harder: slower, can't jump, and falls faster
|
||||
Knockdown, // on the floor: can't do anything, and only attacks that hit the knocked down can hit it
|
||||
Executed // playing out how it was killed: can't do anything or be hit until it's over
|
||||
};
|
||||
|
||||
Type type = Type::HeavyGravity;
|
||||
float timeLeft = -1.0f; // real seconds, below 0 lasts forever
|
||||
};
|
||||
|
||||
// How much each one changes, and what the HUD calls it
|
||||
struct StatusEffectInfo {
|
||||
std::string name;
|
||||
float speedMultiplier = 1.0f; // times its walking speed
|
||||
float gravityMultiplier = 1.0f; // times the world's gravity while it's in the air
|
||||
bool preventsJumping = false;
|
||||
bool preventsActing = false; // can't move, turn, attack or anything else, like a stun
|
||||
bool dodgesHits = false; // only hitboxes that hit the knocked down can touch it
|
||||
};
|
||||
|
||||
inline const StatusEffectInfo& GetStatusEffectInfo(StatusEffect::Type type) {
|
||||
static const StatusEffectInfo heavyGravity = { "HEAVY", 0.5f, 3.0f, true };
|
||||
static const StatusEffectInfo knockdown = { "KNOCKED DOWN", 0.0f, 1.0f, true, true, true };
|
||||
static const StatusEffectInfo executed = { "", 0.0f, 1.0f, true, true, true };
|
||||
switch (type) {
|
||||
case StatusEffect::Type::Executed:
|
||||
return executed;
|
||||
case StatusEffect::Type::Knockdown:
|
||||
return knockdown;
|
||||
case StatusEffect::Type::HeavyGravity:
|
||||
default:
|
||||
return heavyGravity;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user