Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,14 @@ execute_process(
ERROR_QUIET
)
if(NOT CODEGEN_DEPS_EXIT_CODE EQUAL 0)
message(FATAL_ERROR "Run: ${Python_EXECUTABLE} -m pip install -r tools/requirements.txt")
message(FATAL_ERROR
"Codegen requires the Python packages jinja2, jsonschema, and pyyaml, "
"but they are not installed for the interpreter CMake selected:\n"
" ${Python_EXECUTABLE}\n"
"Install them by running this command exactly as shown (the interpreter path "
"matters, so the packages land in the environment this build uses):\n"
" ${Python_EXECUTABLE} -m pip install -r ${CMAKE_SOURCE_DIR}/tools/requirements.txt"
)
endif()

add_custom_target(data_codegen
Expand Down
8 changes: 4 additions & 4 deletions data/enums/effect_overwrite.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ meta:

values:
equal_higher: 0 # only overwrite if equal or higher (tier, power)
higher: 1 # only overwrite if strictly higher
never: 2
always: 3
ignore_duplicate: 4
higher: 1 # only overwrite if higher (tier, power)
never: 2 # never overwrite
always: 3 # always overwrite no matter
ignore_duplicate: 4 # ignore dupes
tier_higher: 5 # only overwrite if tier is higher (regardless of power)
4 changes: 2 additions & 2 deletions src/map/ability.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void CAbility::setActionType(const ActionCategory type)
m_actionType = type;
}

void CAbility::setPostActionEffectCleanup(EFFECT effectToCleanup)
void CAbility::setPostActionEffectCleanup(xi::StatusEffect effectToCleanup)
{
m_cleanupEffect = effectToCleanup;
}
Expand Down Expand Up @@ -187,7 +187,7 @@ auto CAbility::getActionType() const -> ActionCategory
return m_actionType;
}

EFFECT CAbility::getPostActionEffectCleanup()
auto CAbility::getPostActionEffectCleanup() -> xi::StatusEffect
{
return m_cleanupEffect;
}
Expand Down
44 changes: 22 additions & 22 deletions src/map/ability.h
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ class CAbility
int32 getVE() const;
uint16 getMeritModID() const;
auto getActionType() const -> ActionCategory;
EFFECT getPostActionEffectCleanup();
auto getPostActionEffectCleanup() -> xi::StatusEffect;

void setID(uint16 id);
void setJob(JOBTYPE Job);
Expand All @@ -740,32 +740,32 @@ class CAbility
void setVE(int32 VE);
void setMeritModID(uint16 value);
void setActionType(ActionCategory type);
void setPostActionEffectCleanup(EFFECT effectToCleanup);
void setPostActionEffectCleanup(xi::StatusEffect effectToCleanup);

const std::string& getName();
void setName(const std::string& name);

private:
uint16 m_ID;
JOBTYPE m_Job;
uint8 m_level;
uint16 m_animationID;
timer::duration m_animationTime{};
timer::duration m_castTime{};
float m_range;
uint8 m_aoe;
uint8 m_radius{ 0 };
uint16 m_validTarget;
uint16 m_addType;
MsgBasic m_message;
timer::duration m_recastTime{};
Recast m_recastId;
int32 m_CE;
int32 m_VE;
uint16 m_meritModID;
std::string m_name;
ActionCategory m_actionType{};
EFFECT m_cleanupEffect{};
uint16 m_ID;
JOBTYPE m_Job;
uint8 m_level;
uint16 m_animationID;
timer::duration m_animationTime{};
timer::duration m_castTime{};
float m_range;
uint8 m_aoe;
uint8 m_radius{ 0 };
uint16 m_validTarget;
uint16 m_addType;
MsgBasic m_message;
timer::duration m_recastTime{};
Recast m_recastId;
int32 m_CE;
int32 m_VE;
uint16 m_meritModID;
std::string m_name;
ActionCategory m_actionType{};
xi::StatusEffect m_cleanupEffect{};
};

/************************************************************************
Expand Down
80 changes: 40 additions & 40 deletions src/map/ai/controllers/automaton_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,14 +172,14 @@ auto CAutomatonController::GetCurrentManeuvers() const -> CurrentManeuvers
{
const auto& statuses = PAutomaton->PMaster->StatusEffectContainer;
return {
statuses->GetEffectsCount(EFFECT_FIRE_MANEUVER),
statuses->GetEffectsCount(EFFECT_ICE_MANEUVER),
statuses->GetEffectsCount(EFFECT_WIND_MANEUVER),
statuses->GetEffectsCount(EFFECT_EARTH_MANEUVER),
statuses->GetEffectsCount(EFFECT_THUNDER_MANEUVER),
statuses->GetEffectsCount(EFFECT_WATER_MANEUVER),
statuses->GetEffectsCount(EFFECT_LIGHT_MANEUVER),
statuses->GetEffectsCount(EFFECT_DARK_MANEUVER),
statuses->GetEffectsCount(xi::StatusEffect::FireManeuver),
statuses->GetEffectsCount(xi::StatusEffect::IceManeuver),
statuses->GetEffectsCount(xi::StatusEffect::WindManeuver),
statuses->GetEffectsCount(xi::StatusEffect::EarthManeuver),
statuses->GetEffectsCount(xi::StatusEffect::ThunderManeuver),
statuses->GetEffectsCount(xi::StatusEffect::WaterManeuver),
statuses->GetEffectsCount(xi::StatusEffect::LightManeuver),
statuses->GetEffectsCount(xi::StatusEffect::DarkManeuver),
};
}

Expand Down Expand Up @@ -735,7 +735,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
{
if (!dispel && PStatus->GetDuration() > 0s)
{
if (PStatus->HasEffectFlag(EFFECTFLAG_DISPELABLE))
if (PStatus->HasEffectFlag(xi::StatusEffectFlag::Dispelable))
{
dispel = true;
return;
Expand All @@ -751,7 +751,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
default:
{
if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
if (maneuvers.dark) // Dark -> Bio
{
Expand All @@ -763,7 +763,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light)
{
Expand All @@ -775,7 +775,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
if (maneuvers.dark) // Dark -> Bio
{
Expand All @@ -787,7 +787,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light)
{
Expand Down Expand Up @@ -871,19 +871,19 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo

if (maneuvers.dark) // Dark -> Access to Enfeebles
{
if (!PAutomaton->StatusEffectContainer->HasStatusEffect(EFFECT_INT_BOOST))
if (!PAutomaton->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::IntBoost))
{ // Use it ASAP
defaultPriority.emplace_back(SpellID::Absorb_INT);
}

// Not prioritizable since it requires 1 Dark to access Enfeebles and requires 2 of another element to prioritize another
defaultPriority.emplace_back(SpellID::Blind);
if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
defaultPriority.emplace_back(SpellID::Bio_II);
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light >= 2) // 2 Light -> Dia
{
Expand All @@ -894,12 +894,12 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
defaultPriority.emplace_back(SpellID::Dia_II);
}
}
if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
defaultPriority.emplace_back(SpellID::Bio);
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light >= 2) // 2 Light -> Dia
{
Expand Down Expand Up @@ -985,21 +985,21 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
if (maneuvers.dark) // Dark -> Blind > Bio
{
castPriority.emplace_back(SpellID::Blind);
if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
castPriority.emplace_back(SpellID::Bio_II);
}
}
else
{
defaultPriority.emplace_back(SpellID::Blind);
if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
defaultPriority.emplace_back(SpellID::Bio_II);
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light) // Light -> Dia
{
Expand All @@ -1011,7 +1011,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_DIA))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Dia))
{
if (maneuvers.dark) // Dark -> Blind > Bio
{
Expand All @@ -1023,7 +1023,7 @@ auto CAutomatonController::TryEnfeeble(const CurrentManeuvers& maneuvers) -> boo
}
}

if (!PTarget->StatusEffectContainer->HasStatusEffect(EFFECT_BIO))
if (!PTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Bio))
{
if (maneuvers.light) // Light -> Dia
{
Expand Down Expand Up @@ -1229,29 +1229,29 @@ auto CAutomatonController::TryEnhance() -> bool
{
if (PStatus->GetDuration() > 0s)
{
if (PStatus->GetStatusID() == EFFECT_PROTECT)
if (PStatus->GetStatusID() == xi::StatusEffect::Protect)
{
protect = true;
++protectcount;
}

if (PStatus->GetStatusID() == EFFECT_SHELL)
if (PStatus->GetStatusID() == xi::StatusEffect::Shell)
{
shell = true;
++shellcount;
}

if (PStatus->GetStatusID() == EFFECT_HASTE || PStatus->GetStatusID() == EFFECT_GEO_HASTE)
if (PStatus->GetStatusID() == xi::StatusEffect::Haste || PStatus->GetStatusID() == xi::StatusEffect::GeoHaste)
{
haste = true;
}

if (PStatus->GetStatusID() == EFFECT_STONESKIN)
if (PStatus->GetStatusID() == xi::StatusEffect::Stoneskin)
{
stoneskin = true;
}

if (PStatus->GetStatusID() == EFFECT_PHALANX)
if (PStatus->GetStatusID() == xi::StatusEffect::Phalanx)
{
phalanx = true;
}
Expand Down Expand Up @@ -1309,17 +1309,17 @@ auto CAutomatonController::TryEnhance() -> bool
{
if (PStatus->GetDuration() > 0s)
{
if (PStatus->GetStatusID() == EFFECT_PROTECT)
if (PStatus->GetStatusID() == xi::StatusEffect::Protect)
{
protect = true;
}

if (PStatus->GetStatusID() == EFFECT_SHELL)
if (PStatus->GetStatusID() == xi::StatusEffect::Shell)
{
shell = true;
}

if (PStatus->GetStatusID() == EFFECT_HASTE || PStatus->GetStatusID() == EFFECT_GEO_HASTE)
if (PStatus->GetStatusID() == xi::StatusEffect::Haste || PStatus->GetStatusID() == xi::StatusEffect::GeoHaste)
{
haste = true;
}
Expand Down Expand Up @@ -1381,19 +1381,19 @@ auto CAutomatonController::TryEnhance() -> bool
{
if (PStatus->GetDuration() > 0s)
{
if (PStatus->GetStatusID() == EFFECT_PROTECT)
if (PStatus->GetStatusID() == xi::StatusEffect::Protect)
{
protect = true;
++protectcount;
}

if (PStatus->GetStatusID() == EFFECT_SHELL)
if (PStatus->GetStatusID() == xi::StatusEffect::Shell)
{
shell = true;
++shellcount;
}

if (PStatus->GetStatusID() == EFFECT_HASTE || PStatus->GetStatusID() == EFFECT_GEO_HASTE)
if (PStatus->GetStatusID() == xi::StatusEffect::Haste || PStatus->GetStatusID() == xi::StatusEffect::GeoHaste)
{
haste = true;
}
Expand Down Expand Up @@ -1435,7 +1435,7 @@ auto CAutomatonController::TryEnhance() -> bool
}

if (PRegenTarget &&
!(PRegenTarget->StatusEffectContainer->HasStatusEffect(EFFECT_REGEN) || PRegenTarget->StatusEffectContainer->HasStatusEffect(EFFECT_GEO_REGEN)))
!(PRegenTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::Regen) || PRegenTarget->StatusEffectContainer->HasStatusEffect(xi::StatusEffect::GeoRegen)))
{
if (Cast(PRegenTarget->targid, SpellID::Regen_III) || Cast(PRegenTarget->targid, SpellID::Regen_II) || Cast(PRegenTarget->targid, SpellID::Regen))
{
Expand Down Expand Up @@ -1523,7 +1523,7 @@ auto CAutomatonController::TryTPMove() -> bool

if (attemptChain)
{
CStatusEffect* PSCEffect = PTarget->StatusEffectContainer->GetStatusEffect(EFFECT_SKILLCHAIN, 0);
CStatusEffect* PSCEffect = PTarget->StatusEffectContainer->GetStatusEffect(xi::StatusEffect::Skillchain, 0);
if (PSCEffect && PSCEffect->GetStartTime() + 3s < timer::now())
{
std::list<SKILLCHAIN_ELEMENT> resonanceProperties;
Expand Down Expand Up @@ -1613,7 +1613,7 @@ auto CAutomatonController::TryAttachment() -> bool
auto CAutomatonController::CanCastSpells(IgnoreRecastsAndCosts ignoreRecastsAndCosts) -> bool
{
// Check for spell blockers e.g. silence
if (PAutomaton->StatusEffectContainer->HasStatusEffect({ EFFECT_SILENCE, EFFECT_MUTE }))
if (PAutomaton->StatusEffectContainer->HasStatusEffect({ xi::StatusEffect::Silence, xi::StatusEffect::Mute }))
{
return false;
}
Expand Down Expand Up @@ -1675,15 +1675,15 @@ void LoadAutomatonSpellList()
AutomatonSpell PSpell{
.skilllevel = rset->get<uint16>("skilllevel"),
.heads = rset->get<uint8>("heads"),
.enfeeble = rset->get<EFFECT>("enfeeble"),
.enfeeble = rset->get<xi::StatusEffect>("enfeeble"),
.immunity = rset->get<IMMUNITY>("immunity"),
.removes = {}, // Will handle in a moment
};

uint32 removes = rset->get<uint32>("removes");
while (removes > 0)
{
PSpell.removes.emplace_back(static_cast<EFFECT>(removes & 0xFF));
PSpell.removes.emplace_back(static_cast<xi::StatusEffect>(removes & 0xFF));
removes = removes >> 8;
}

Expand Down Expand Up @@ -1721,7 +1721,7 @@ Maybe<SpellID> FindNaSpell(CStatusEffect* PStatus)
}
}

if (PStatus->HasEffectFlag(EFFECTFLAG_ERASABLE))
if (PStatus->HasEffectFlag(xi::StatusEffectFlag::Erasable))
{
return SpellID::Erase;
}
Expand Down
Loading
Loading