Skip to content

Commit

Permalink
Adapt revscript loading to spell groups
Browse files Browse the repository at this point in the history
Previous PR should've fixed XML loading, this should fix Revscript loading.

I dont like how I created new enum, so this needs both testing and thought how it can be improved.
  • Loading branch information
Tofame committed Dec 10, 2024
1 parent efe7673 commit 4d58073
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ enum SpellGroup_t : uint8_t {
SPELLGROUP_HEALING = 2,
SPELLGROUP_SUPPORT = 3,
SPELLGROUP_SPECIAL = 4,

SPELLGROUP_UNKNOWN = 255, // last, unspecified
};

enum SpellType_t : uint8_t {
Expand Down
6 changes: 3 additions & 3 deletions src/luascript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16671,7 +16671,7 @@ int LuaScriptInterface::luaSpellGroup(lua_State* L)
pushBoolean(L, true);
} else if (isString(L, 2)) {
group = stringToSpellGroup(getString(L, 2));
if (group != SPELLGROUP_NONE) {
if (group != SPELLGROUP_UNKNOWN) {
spell->setGroup(group);
} else {
std::cout << "[Warning - Spell::group] Unknown group: " << getString(L, 2) << std::endl;
Expand All @@ -16693,15 +16693,15 @@ int LuaScriptInterface::luaSpellGroup(lua_State* L)
pushBoolean(L, true);
} else if (isString(L, 2) && isString(L, 3)) {
primaryGroup = stringToSpellGroup(getString(L, 2));
if (primaryGroup != SPELLGROUP_NONE) {
if (primaryGroup != SPELLGROUP_UNKNOWN) {
spell->setGroup(primaryGroup);
} else {
std::cout << "[Warning - Spell::group] Unknown primaryGroup: " << getString(L, 2) << std::endl;
pushBoolean(L, false);
return 1;
}
secondaryGroup = stringToSpellGroup(getString(L, 3));
if (secondaryGroup != SPELLGROUP_NONE) {
if (secondaryGroup != SPELLGROUP_UNKNOWN) {
spell->setSecondaryGroup(secondaryGroup);
} else {
std::cout << "[Warning - Spell::group] Unknown secondaryGroup: " << getString(L, 3) << std::endl;
Expand Down
1 change: 1 addition & 0 deletions src/spells.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,7 @@ bool Spell::configureSpell(const pugi::xml_node& node)
std::string tmpStr = asLowerCaseString(attr.as_string());
if (tmpStr == "none" || tmpStr == "0") {
group = SPELLGROUP_NONE;
groupCooldown = 0;
} else if (tmpStr == "attack" || tmpStr == "1") {
group = SPELLGROUP_ATTACK;
} else if (tmpStr == "healing" || tmpStr == "2") {
Expand Down
3 changes: 3 additions & 0 deletions src/spells.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ class Spell : public BaseSpell
}
void setGroup(SpellGroup_t g) {
group = g;
if(group == SPELLGROUP_NONE) {
groupCooldown = 0;
}
}
SpellGroup_t getSecondaryGroup() const {
return secondaryGroup;
Expand Down
8 changes: 5 additions & 3 deletions src/tools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1243,8 +1243,10 @@ int64_t OTSYS_TIME()

SpellGroup_t stringToSpellGroup(const std::string& value)
{
std::string tmpStr = asLowerCaseString(value);
if (tmpStr == "attack" || tmpStr == "1") {
std::string tmpStr = boost::algorithm::to_lower_copy(value);
if (tmpStr == "none" || tmpStr == "0") {
return SPELLGROUP_NONE;
} else if (tmpStr == "attack" || tmpStr == "1") {
return SPELLGROUP_ATTACK;
} else if (tmpStr == "healing" || tmpStr == "2") {
return SPELLGROUP_HEALING;
Expand All @@ -1254,7 +1256,7 @@ SpellGroup_t stringToSpellGroup(const std::string& value)
return SPELLGROUP_SPECIAL;
}

return SPELLGROUP_NONE;
return SPELLGROUP_UNKNOWN;
}

std::vector<uint16_t> depotBoxes = {
Expand Down

0 comments on commit 4d58073

Please sign in to comment.