Skip to content

Commit

Permalink
feat(elysiera): runic can be used for spells and leveld (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
luan committed Jul 27, 2023
1 parent 2beb675 commit c03d446
Show file tree
Hide file tree
Showing 8 changed files with 1,154 additions and 1,146 deletions.
9 changes: 5 additions & 4 deletions data-otservbr-global/scripts/spells/runes/avalanche.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
combat:setArea(createCombatArea(AREA_CIRCLE3X3))

function onGetFormulaValues(player, level, maglevel)
local min = (level / 5) + (maglevel * 1.2) + 7
local max = (level / 5) + (maglevel * 2.8) + 17
-- example of runic usage
function onGetFormulaValues(player, level, maglevel, runic)
local min = (level / 5) + (maglevel * 1.2) + 7 + runic / 5
local max = (level / 5) + (maglevel * 2.8) + 17 + runic / 5
return -min, -max
end

Expand All @@ -30,4 +31,4 @@ rune:level(30)
rune:magicLevel(4)
rune:cooldown(2 * 1000)
rune:groupCooldown(2 * 1000)
rune:register()
rune:register()
2 changes: 2 additions & 0 deletions data-otservbr-global/scripts/talkactions/god/add_skill.lua
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ local function getSkillId(skillName)
return SKILL_DEFENSE
elseif skillName:sub(1, 4) == "toni" then
return SKILL_TONICITY
elseif skillName:sub(1, 4) == "runi" then
return SKILL_RUNIC
else
return SKILL_LUCK
end
Expand Down
2 changes: 2 additions & 0 deletions src/config/configmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,8 @@ bool ConfigManager::load() {
integer[HAZARD_SPAWN_PLUNDER_MULTIPLIER] = getGlobalNumber(L, "hazardSpawnPlunderMultiplier", 25);
integer[LOW_LEVEL_BONUS_EXP] = getGlobalNumber(L, "lowLevelBonusExp", 50);

floating[RUNIC_MULTIPLIER] = getGlobalFloat(L, "runicMultiplier", 1 / 500.0);

boolean[VIP_SYSTEM_ENABLED] = getGlobalBoolean(L, "vipSystemEnabled", false);
integer[VIP_BONUS_EXP] = getGlobalNumber(L, "vipBonusExp", 20);
integer[VIP_BONUS_LOOT] = getGlobalNumber(L, "vipBonusLoot", 20);
Expand Down
5 changes: 3 additions & 2 deletions src/creatures/combat/combat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1471,10 +1471,11 @@ void ValueCallback::getMinMaxValues(Player* player, CombatDamage &damage, bool u

switch (type) {
case COMBAT_FORMULA_LEVELMAGIC: {
// onGetPlayerMinMaxValues(player, level, maglevel)
// onGetPlayerMinMaxValues(player, level, maglevel, runic)
lua_pushnumber(L, player->getLevel());
lua_pushnumber(L, getMagicLevelSkill(player, damage));
parameters += 2;
lua_pushnumber(L, player->getSkillLevel(SKILL_RUNIC));
parameters += 3;
break;
}

Expand Down
4 changes: 4 additions & 0 deletions src/creatures/combat/spells.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,10 @@ bool RuneSpell::executeUse(Player* player, Item* item, const Position &, Thing*
}

postCastSpell(player);
if (hasCharges && item) {
player->addSkillAdvance(SKILL_RUNIC, 1);
}

if (hasCharges && item && g_configManager().getBoolean(REMOVE_RUNE_CHARGES)) {
int32_t newCount = std::max<int32_t>(0, item->getItemCount() - 1);
g_game().transformItem(item, item->getID(), newCount);
Expand Down
4 changes: 1 addition & 3 deletions src/creatures/players/player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ float Player::getMitigation() const {
}

int32_t Player::getDefense() const {
int32_t defenseSkill = getSkillLevel(SKILL_LUCK);
int32_t defenseSkill = getSkillLevel(SKILL_DEFENSE);
int32_t defenseValue = 7;
const Item* weapon;
const Item* shield;
Expand All @@ -400,7 +400,6 @@ int32_t Player::getDefense() const {

if (weapon) {
defenseValue = weapon->getDefense() + weapon->getExtraDefense();
defenseSkill = getWeaponSkill(weapon);
}

if (shield) {
Expand All @@ -409,7 +408,6 @@ int32_t Player::getDefense() const {
if (shield->getDefense() > 0) {
defenseValue += wheel()->getMajorStatConditional("Combat Mastery", WheelMajor_t::DEFENSE);
}
defenseSkill = getSkillLevel(SKILL_DEFENSE);
}

if (defenseSkill == 0) {
Expand Down
Loading

0 comments on commit c03d446

Please sign in to comment.