diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
index dee6c8bf..764129ce 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj
+++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
@@ -217,7 +217,7 @@
true
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
- stdcpp20
+ stdcpplatest
C:\Users\LabUser\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\LabUser\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\LabUser\Documents\include;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include;%(AdditionalIncludeDirectories)
/MP20 %(AdditionalOptions)
4099;5030;4715;4172;4834
@@ -243,7 +243,7 @@
true
_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
- stdcpp20
+ stdcpplatest
C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include
/MP20 %(AdditionalOptions)
4099;5030;4715;4172;4834
@@ -274,7 +274,7 @@
true
NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
true
- stdcpp20
+ stdcpplatest
/MP20 %(AdditionalOptions)
C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include
true
@@ -336,7 +336,7 @@
$(CoreLibraryDependencies);%(AdditionalDependencies);discord_game_sdk.dll.lib
- stdcpp20
+ stdcpplatest
C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;
true
@@ -353,7 +353,7 @@
$(CoreLibraryDependencies);%(AdditionalDependencies);discord_game_sdk.dll.lib
- stdcpp20
+ stdcpplatest
C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;
true
diff --git a/Adventures in Lestoria/ItemEnchant.cpp b/Adventures in Lestoria/ItemEnchant.cpp
index fbb975ce..12e7a712 100644
--- a/Adventures in Lestoria/ItemEnchant.cpp
+++ b/Adventures in Lestoria/ItemEnchant.cpp
@@ -39,7 +39,9 @@ All rights reserved.
#include "olcUTIL_DataFile.h"
#include "ItemEnchant.h"
#include "DEFINES.h"
+#include "Class.h"
#include
+#include
INCLUDE_DATA
@@ -47,6 +49,9 @@ std::unordered_mapItemEnchantInfo::ENCHANT_LIST;
std::unordered_mapItemEnchantInfo::ENCHANT_CATEGORIES;
void ItemEnchantInfo::Initialize(){
+ ENCHANT_LIST.clear();
+ ENCHANT_CATEGORIES.clear();
+
float minCategoryRollWeight{};
float maxCategoryRollWeight{};
for(const auto&[key,size]:DATA["Item Enchants"]){
@@ -76,10 +81,11 @@ void ItemEnchantInfo::Initialize(){
for(const auto&[key,size]:enchantData){
if(key=="Percent Chance"||key=="Enchant Display Color")continue;
- const auto MakeEnchant=[](const std::string_view keyName,datafile&enchant){
+ const auto MakeEnchant=[enchantCategory](const std::string_view keyName,datafile&enchant){
ItemEnchantInfo newEnchant;
+ newEnchant.category=enchantCategory;
newEnchant.name=keyName;
- newEnchant.description=enchant["Description"].GetString();
+ std::string enchantDescription{enchant["Description"].GetString()};
using enum AbilitySlot;
const std::unordered_mapaffectSlots{
{"Auto Attack",AUTO_ATTACK},
@@ -94,7 +100,6 @@ void ItemEnchantInfo::Initialize(){
if(!affectSlots.count(affectStr))ERR(std::format("WARNING! Could not find translate ability affect slot name {} to a valid slot! Valid slot names are: \"Auto Attack, Right Click Ability, Ability 1, Ability 2, Ability 3\"",affectStr));
newEnchant.abilitySlot=affectSlots.at(affectStr);
}
-
size_t statModifierInd{};
while(enchant.HasProperty(std::format("Stat Modifier[{}]",statModifierInd))){
const datafile&stat{enchant[std::format("Stat Modifier[{}]",statModifierInd)]};
@@ -103,13 +108,25 @@ void ItemEnchantInfo::Initialize(){
statModifierInd++;
}
+ auto IsRequiredKey=[](const std::string_view key){return key=="Description"||key=="Affects"||key.starts_with("Stat Modifier[");};
+
for(auto&[key,size]:enchant){
- if(key=="Description"||key=="Affects"||key.starts_with("Stat Modifier["))continue;
+ if(IsRequiredKey(key))continue;
const auto&result{newEnchant.config.insert({key,enchant[key].GetReal()})};
const bool InsertFailed{!result.second};
if(InsertFailed)ERR(std::format("WARNING! Enchant {} already had an extra property named {}. Duplicates not allowed!",keyName,key));
}
+ for(const auto&[configName,val]:newEnchant.config){
+ const std::string wrappedConfigStr{std::vformat("{{{}}}",std::make_format_args(configName))};
+ size_t configValInd{enchantDescription.find(wrappedConfigStr)};
+ if(configValInd==std::string::npos)continue;
+ std::string formattedFloat{std::format("{}",val)};
+ enchantDescription=enchantDescription.replace(configValInd,wrappedConfigStr.length(),formattedFloat);
+ }
+
+ newEnchant.description=enchantDescription;
+
return newEnchant;
};
@@ -121,7 +138,7 @@ void ItemEnchantInfo::Initialize(){
ItemEnchantInfo newEnchant{MakeEnchant(key,classEnchantData[key])};
const auto&result{ENCHANT_LIST.insert({key,newEnchant})};
const bool InsertFailed{!result.second};
- if(InsertFailed)ERR(std::format("WARNING! Enchant {} already existed in Enchantment List! Duplicates are not allowed!",key));
+ if(InsertFailed)ERR(std::format("WARNING! Enchant {} already existed in Enchant List! Duplicates are not allowed!",key));
}
}else{
ItemEnchantInfo newEnchant{MakeEnchant(key,enchantData[key])};
@@ -132,10 +149,29 @@ void ItemEnchantInfo::Initialize(){
}
}
}
-
-const ItemEnchantInfo&ItemEnchantInfo::GetEnchant(const std::string_view name){
- return ENCHANT_LIST.at(std::string(name));
-}
ItemEnchant::ItemEnchant(const std::string_view enchantName)
-:enchant(ItemEnchantInfo::GetEnchant(enchantName)){}
\ No newline at end of file
+:enchant(ItemEnchantInfo::GetEnchant(enchantName)){}
+
+const ItemEnchantInfo&ItemEnchantInfo::GetEnchant(const std::string_view enchantName){
+ return ENCHANT_LIST.at(std::string(enchantName));
+}
+
+const std::string ItemEnchantInfo::Name(TextStyle style)const{
+ using enum TextStyle;
+ switch(style){
+ case NORMAL:{
+ return name;
+ }break;
+ case COLOR_CODES:{
+ return ENCHANT_CATEGORIES.at(category).displayCol.toHexString()+name;
+ }break;
+ }
+ return{};
+}
+const std::string_view ItemEnchantInfo::Description()const{
+ return description;
+}
+const float ItemEnchantInfo::GetConfigValue(const std::string_view keyName)const{
+ return config.at(std::string(keyName));
+}
\ No newline at end of file
diff --git a/Adventures in Lestoria/ItemEnchant.h b/Adventures in Lestoria/ItemEnchant.h
index 759f1242..7a9106f6 100644
--- a/Adventures in Lestoria/ItemEnchant.h
+++ b/Adventures in Lestoria/ItemEnchant.h
@@ -39,16 +39,20 @@ All rights reserved.
#include "AttributableStat.h"
#include "Pixel.h"
-#include "Class.h"
class ItemEnchantInfo{
public:
+ enum class TextStyle{
+ NORMAL,
+ COLOR_CODES,
+ };
+
static void Initialize();
- const static ItemEnchantInfo&GetEnchant(const std::string_view name);
+ const static ItemEnchantInfo&GetEnchant(const std::string_view enchantName);
- const std::string_view Name();
- const std::string_view Description();
- const float GetConfigValue(const std::string_view keyName);
+ const std::string Name(TextStyle style=TextStyle::NORMAL)const;
+ const std::string_view Description()const;
+ const float GetConfigValue(const std::string_view keyName)const;
enum class AbilitySlot{
AUTO_ATTACK,
RIGHT_CLICK,
@@ -69,6 +73,7 @@ private:
std::pairweightedRollRange;
Pixel displayCol;
};
+ ItemEnchantCategory category;
std::string name;
std::string description;
std::optionalabilitySlot;
@@ -84,4 +89,4 @@ public:
ItemEnchant(const std::string_view enchantName);
private:
const ItemEnchantInfo&enchant;
-};
+};
\ No newline at end of file
diff --git a/Adventures in Lestoria/Pixel.cpp b/Adventures in Lestoria/Pixel.cpp
index 230c9f77..a6450653 100644
--- a/Adventures in Lestoria/Pixel.cpp
+++ b/Adventures in Lestoria/Pixel.cpp
@@ -51,6 +51,7 @@ Community: https://community.onelonecoder.com
#include "Pixel.h"
#include
#include
+#include
namespace olc{
// O------------------------------------------------------------------------------O
@@ -167,6 +168,10 @@ namespace olc{
return Pixel(nR, nG, nB, a);
}
+ std::string Pixel::toHexString()const{
+ return std::format("#{:2X}{:2X}{:2X}",r,g,b);
+ }
+
Pixel PixelF(float red, float green, float blue, float alpha)
{ return Pixel(uint8_t(red * 255.0f), uint8_t(green * 255.0f), uint8_t(blue * 255.0f), uint8_t(alpha * 255.0f)); }
diff --git a/Adventures in Lestoria/Pixel.h b/Adventures in Lestoria/Pixel.h
index 8af085e2..dfa990b4 100644
--- a/Adventures in Lestoria/Pixel.h
+++ b/Adventures in Lestoria/Pixel.h
@@ -49,6 +49,7 @@ Community: https://community.onelonecoder.com
#pragma endregion
#pragma once
#include
+#include
// O------------------------------------------------------------------------------O
// | olc::Pixel IMPLEMENTATION |
@@ -89,6 +90,7 @@ namespace olc{
Pixel& operator *=(const Pixel& p);
bool operator < (const Pixel& p)const;
Pixel inv() const;
+ std::string toHexString()const;
};
Pixel PixelF(float red, float green, float blue, float alpha = 1.0f);
diff --git a/Adventures in Lestoria/SaveFile.cpp b/Adventures in Lestoria/SaveFile.cpp
index 0696d768..2cb6049f 100644
--- a/Adventures in Lestoria/SaveFile.cpp
+++ b/Adventures in Lestoria/SaveFile.cpp
@@ -651,8 +651,7 @@ const std::string SaveFile::CreateServerRequest(const SaveFileOperation::Operati
const std::array uriReserved={';','/','?',':','@','&','=','+','$',',','-','_','.','!','~','*','\'','(',')','#'};
if(c>='A'&&c<='Z'||c>='a'&&c<='z'||c>='0'&&c<='9'||std::find(uriReserved.begin(),uriReserved.end(),c)!=uriReserved.end())return std::move(str)+c;
- std::string convertedChar=std::format("%{:02x}",c);
- std::for_each(convertedChar.begin(),convertedChar.end(),[](char&c){c=char(std::toupper(c));});
+ std::string convertedChar=std::format("%{:02X}",c);
return std::move(str)+convertedChar;
});
};
diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h
index bf929047..ad6fc283 100644
--- a/Adventures in Lestoria/Version.h
+++ b/Adventures in Lestoria/Version.h
@@ -39,7 +39,7 @@ All rights reserved.
#define VERSION_MAJOR 1
#define VERSION_MINOR 2
#define VERSION_PATCH 3
-#define VERSION_BUILD 10498
+#define VERSION_BUILD 10511
#define stringify(a) stringify_(a)
#define stringify_(a) #a
diff --git a/Adventures in Lestoria/assets/config/items/ItemEnchants.txt b/Adventures in Lestoria/assets/config/items/ItemEnchants.txt
index 1a2df4fd..707f3a60 100644
--- a/Adventures in Lestoria/assets/config/items/ItemEnchants.txt
+++ b/Adventures in Lestoria/assets/config/items/ItemEnchants.txt
@@ -6,102 +6,61 @@ Item Enchants
Percent Chance = 50%
Enchant Display Color = 253, 255, 206, 255
- Health Increase
- {
- Description = "Increases Maximum Health."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = Health, 10, 25
- # Stat Modifier[1] = ...
- }
Health Boost
{
Description = "Increases Maximum Health %."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Health %, 5, 10
- # Stat Modifier[1] = ...
- }
- Defense Increase
- {
- Description = "Increases Defense."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = Defense, 10, 25
- # Stat Modifier[1] = ...
- }
- Defense Boost
- {
- Description = "Increases Defense %."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = Defense %, 5, 10
- # Stat Modifier[1] = ...
- }
- Attack Increase
- {
- Description = "Increases Attack."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = Attack, 5, 10
+ Stat Modifier[0] = Health %, 3, 5
# Stat Modifier[1] = ...
}
Attack Boost
{
Description = "Increases Attack %."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Attack %, 2, 5
+ Stat Modifier[0] = Attack %, 3, 5
# Stat Modifier[1] = ...
}
Movement Boost
{
Description = "Increases Move Spd %."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Move Spd %, 5, 10
+ Stat Modifier[0] = Move Spd %, 3, 5
# Stat Modifier[1] = ...
}
Ability Haste
{
Description = "Decreases cooldown time of abilities."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = CDR, 2, 5
+ Stat Modifier[0] = CDR, 3, 5
# Stat Modifier[1] = ...
}
Crit Rate
{
Description = "Increases critical hit rate."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Crit Rate, 2, 5
+ Stat Modifier[0] = Crit Rate, 3, 5
# Stat Modifier[1] = ...
}
Crit Damage
{
Description = "Increases damage from critical hits."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Crit Dmg, 5, 10
- # Stat Modifier[1] = ...
- }
- HP Recovery
- {
- Description = "Restores health every 6 seconds."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = HP6 Recovery %, 2, 4
+ Stat Modifier[0] = Crit Dmg, 7, 10
# Stat Modifier[1] = ...
}
Stoneskin
{
Description = "Reduces damage taken."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Damage Reduction, 2, 5
- # Stat Modifier[1] = ...
- }
- Quickstrike
- {
- Description = "Increases attack rate."
- # Stat, Lowest, Highest Value
- Stat Modifier[0] = Attack Spd, 3, 5
+ Stat Modifier[0] = Damage Reduction, 3, 5
# Stat Modifier[1] = ...
}
+
Mana Pool
{
Description = "Increases maximum mana."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Mana, 10, 20
+ Stat Modifier[0] = Mana, 7, 12
# Stat Modifier[1] = ...
}
@@ -116,29 +75,43 @@ Item Enchants
{
Quickdraw
{
- Description = "Basic Attack cooldown has a 20% chance of instantly resetting when a target is hit."
+ Description = "Basic Attack cooldown has a {RESET CHANCE}% chance of instantly resetting when a target is hit."
Affects = Auto Attack
+
+ RESET CHANCE = 20%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Stealthy Retreat
{
- Description = "Invulnerability time increased dramatically when using Retreat."
+ Description = "Invulnerability time increased by {INVULNERABILITY INCREASE} seconds when using Retreat."
Affects = Right Click Ability
+
+ INVULNERABILITY INCREASE = 2.0s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Poisonous Arrow
{
- Description = "Every 10 seconds, the next arrow fired becomes a poisonous arrow causing 20% damage every second for 7 seconds."
+ Description = "Every {POISON ARROW RESET FREQUENCY} seconds, the next arrow fired becomes a poisonous arrow causing {POISON TICK DAMAGE}% damage every second for {POISON DURATION} seconds."
Affects = Auto Attack
+
+ POISON ARROW RESET FREQUENCY = 10s
+ POISON TICK DAMAGE = 20%
+ POISON DURATION = 7s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Extreme Rapid Fire
{
- Description = "Fire an additional 5 arrows when using Rapid Fire"
+ Description = "Fire an additional {ARROW COUNT INCREASE} arrows when using Rapid Fire"
Affects = Ability 1
+
+ ARROW COUNT INCREASE = 5
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -146,20 +119,30 @@ Item Enchants
{
Description = "Charged Shot's attack radius becomes immensely large."
Affects = Ability 2
+
+ ATTACK RADIUS INCREASE MULT = 15x
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Mega Charged Shot
{
- Description = "Charged Shot's cast time increases by 1.5 seconds. Now deals two times more damage."
+ Description = "Charged Shot's cast time increases by {CAST TIME INCREASE} seconds. Now deals two times more damage."
Affects = Ability 2
+
+ CAST TIME INCREASE = 1.5s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Multi-Multishot
{
- Description = "Multishot can now hold up to three charges."
+ Description = "Multishot can now hold up to {EXTRA CHARGE COUNT} charges and has a {COOLDOWN REDUCTION PCT}% reduced Cooldown."
Affects = Ability 3
+
+ EXTRA CHARGE COUNT = 3
+ COOLDOWN REDUCTION PCT = 10%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -168,36 +151,76 @@ Item Enchants
{
Backstabber
{
- Description = "Attacking a target from behind deals an additional 40% damage."
+ Description = "Attacking a target from behind deals an additional {BACKSTAB BONUS DMG}% damage."
Affects = Auto Attack
+
+ BACKSTAB BONUS DMG = 40%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Tumble
{
- Description = "Roll range, invulnerability time, and Movespeed boost are all increased by 30%."
+ Description = "Roll range, invulnerability time, and Movespeed boost are all increased by {BOOST PERCENTAGE}%."
Affects = Right Click Ability
+
+ BOOST PERCENTAGE = 30%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Triple Toss
{
- Description = "Hidden Dagger now throws three daggers instead of one."
+ Description = "Hidden Dagger now throws {NEW DAGGER COUNT} daggers instead of 1."
Affects = Ability 1
+
+ NEW DAGGER COUNT = 3
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Deadly Mirage
{
- Description = "Immediately after dashing once with Deadly Dash, perform another dash in target direction."
+ Description = "After dashing once with Deadly Dash, gives a {REACTIVATE TIMING WINDOW} second window to reuse the skill without spending mana."
Affects = Ability 2
+
+ REACTIVATE TIMING WINDOW = 2s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Adrenaline Stim
{
- Description = "Sacrifice 20% of your health to gain 50% increased attack range. Adrenaline Rush also lasts 30 seconds instead of 8."
+ Description = "Sacrifice {HEALTH PCT COST}% of your health to gain {ATTACK RANGE INCREASE PCT}% increased attack range. Adrenaline Rush also lasts {NEW ADRENALINE RUSH DURATION} seconds instead of 8."
+ Affects = Ability 3
+
+ HEALTH PCT COST = 20%
+ ATTACK RANGE INCREASE PCT = 50%
+ NEW ADRENALINE RUSH DURATION = 30s
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Bloodlust
+ {
+ Description = "Every Enemy killed during Adrenaline Rush increases the duration of the buff by {BUFF TIMER INCREASE} seconds. Every Kill grants a {ATTACK BUFF PCT INCREASE}% Attack buff stacking up to {MAX ATTACK BUFF STACKS} times."
Affects = Ability 3
+
+ BUFF TIMER INCREASE = 2s
+ ATTACK BUFF PCT INCREASE = 1%
+ MAX ATTACK BUFF STACKS = 10
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Evasive Movement
+ {
+ Description = "Roll also grants {DAMAGE REDUCTION PCT}% Damage Reduction for {DAMAGE REDUCTION DURATION} seconds."
+ Affects = Right Click Ability
+
+ DAMAGE REDUCTION PCT = 50%
+ DAMAGE REDUCTION DURATION = 3.0s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -206,74 +229,104 @@ Item Enchants
{
Burning Arrow
{
- Description = "Auto attacks now apply a 6-second burn to targets dealing 20% attack every 2 seconds."
+ Description = "Auto attacks on a marked Target now apply a {BURN DURATION}-second burn to targets dealing {BURN DAMAGE}% attack every {BURN TICK FREQUENCY} seconds. Burn can be stacked up to {MAX BURN STACK} times"
Affects = Auto Attack
+
+ BURN DURATION = 6s
+ BURN DAMAGE = 20%
+ BURN TICK FREQUENCY = 2s
+ MAX BURN STACK = 3
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Enfeebled Target
{
- Description = "Marked targets are slowed by 30% and deal 20% less damage."
+ Description = "Marked targets are slowed by {SLOW PCT}% and deal {DAMAGE REDUCTION PCT}% less damage."
Affects = Ability 1
+
+ SLOT PCT = 30%
+ DAMAGE REDUCTION PCT = 20%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Long-Lasting Mark
{
- Description = "Marks now last for 20 seconds."
+ Description = "Marks now last for {DURATION} seconds."
Affects = Ability 1
+
+ DURATION = 20s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Trap Collector
{
- Description = "You can now hold two charges of each trap."
+ Description = "You can now hold {CHARGE COUNT} charges of each trap."
Affects = Ability 2, Ability 3
+
+ CHARGE COUNT = 2
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Lingering Scent
{
- Description = "Bleed lasts for 10 seconds longer."
+ Description = "Bleed lasts for {BLEED EXTRA DURATION} seconds longer."
Affects = Ability 2
+
+ BLEED EXTRA DURATION = 10s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
- Caught Dead
+ Opportunity Shot
{
- Description = "Caught targets are stuck for 5 seconds."
- Affects = Ability 2
+ Description = "Every {MARK TIME} seconds a random enemy on screen gets {MARK AMOUNT} Mark. If a mark on that Target is triggered within {MARK TRIGGER TIME} seconds, your Mark Target's cooldown is reduced by {MARK COOLDOWN REDUCE} seconds."
+ Affects = Auto Attack
+
+ MARK TIME = 8s
+ MARK AMOUNT = 1
+ MARK TRIGGER TIME = 3s
+ MARK COOLDOWN REDUCE = 2s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Concussive Trap
{
- Description = "Explosive traps now explode three times when triggered. Additional explosions deal 250% attack."
+ Description = "Explosive traps now explode {TRAP EXPLODE COUNT} times when triggered. Additional explosions deal {ADDITIONAL EXPLOSION DAMAGE}% attack."
Affects = Ability 3
+
+ TRAP EXPLODE COUNT = 3
+ ADDITIONAL EXPLOSION DAMAGE = 250%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
}
Warrior
{
- Giant Sword
- {
- Description = "Attack Range increased by 75%."
- Affects = Auto Attack
- # Stat, Lowest, Highest Value
- # Stat Modifier[0] = ..., 0, 0
- }
- Steel Yourself
+ Sword Enchantment
{
- Description = "Negates knockback from collisions."
+ Description = "After Sonic Slash your Autohit range gets increased by {AUTO RANGE INCREASE}% for {INCREASE DURATION} seconds"
Affects = Auto Attack
+
+ AUTO RANGE INCREASE = 100%
+ INCREASE DURATION = 8s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
- Auto Guard
+ Improved Ground Slam
{
- Description = "If Block is up and you take damage, Block will activate immediately, preventing the attack."
- Affects = Right Click Ability
+ Description = "Ground Slam is {GROUND SLAM RADIUS INCREASE}% larger range and deals additional Damage equal to {DEFENSE DAMAGE}% of your defense."
+ Affects = Ability 2
+
+ GROUND SLAM RADIUS INCREASE = 20%
+ DEFENSE DAMAGE = 50%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -281,34 +334,51 @@ Item Enchants
{
Description = "Block's duration is doubled."
Affects = Right Click Ability
+
+ BLOCK DURATION MULT = 2x
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Advance Shield
{
- Description = "Block no longer grants invulnerability or knockback reduction. Block now grants a shield equal to 20% of your health for 10 seconds. You can perform other actions while the shield is active."
+ Description = "Block no longer grants invulnerability or knockback reduction. Block now grants a shield equal to {SHIELD AMOUNT}% of your maximum health for {SHIELD DURATION} seconds."
Affects = Right Click Ability
+
+ SHIELD AMOUNT = 20%
+ SHIELD DURATION = 9s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Battle Shout
{
- Description = "Battlecry now deals damage equal to your defense."
+ Description = "Battlecry deals damage equal to {DEFENSE DAMAGE}% of your defense."
Affects = Ability 1
+
+ DEFENSE DAMAGE = 100%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Slam Shock
{
- Description = "Monsters hit by Ground Slam become stunned for 5 seconds."
+ Description = "Monsters hit by Ground Slam become stunned for {STUN DURATION} seconds."
Affects = Ability 2
+
+ STUN DURATION = 5s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Sonic Upgrade
{
- Description = "Sonic Slash's Cooldown and Mana costs reduced by 20%."
+ Description = "Sonic Slash's Cooldown and Mana costs reduced by {REDUCTION PCT}% and Deals Additional Damage Equal to {ADDITIONAL DMG PCT}% of you max Health."
Affects = Ability 3
+
+ REDUCTION PCT = 15%
+ ADDITIONAL DMG PCT = 10%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -317,15 +387,22 @@ Item Enchants
{
Bouncing Orb
{
- Description = "Homing orb now bounces off of targets up to 4 bounces. Damage reduced to 50% attack. Cannot hit the same target twice in a row."
+ Description = "Homing orb now bounces off of targets up to {BOUNCE COUNT} bounces. Damage reduced to {ORB DAMAGE}% attack. Cannot hit the same target twice in a row."
Affects = Auto Attack
+
+ BOUNCE COUNT = 4
+ ORB DAMAGE = 50%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Nine Lives
{
- Description = "Transform's cooldown becomes 20 seconds. Upon using Transform remain in cat form. Instead of taking damage, getting hit will simply revert your form."
+ Description = "Transform's cooldown becomes {TRANSFORM COOLDOWN} seconds. Upon using Transform remain in cat form. Instead of taking damage, getting hit will revert your form."
Affects = Right Click Ability
+
+ TRANSFORM COOLDOWN = 20s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -333,27 +410,52 @@ Item Enchants
{
Description = "If Curse of Pain kills a target, it can spread to nearby targets."
Affects = Ability 1
+
+ SPREAD RANGE = 250
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Pooling Poison
{
- Description = "Throw Poison causes the splash effect to linger for 10 seconds, dealing 100% attack every 2 seconds."
+ Description = "Throw Poison causes the splash effect to linger for {SPLASH LINGER TIME} seconds, dealing {POISON POOL DAMAGE}% attack every {POISON POOL DAMAGE FREQUENCY} seconds."
Affects = Ability 2
+
+ SPLASH LINGER TIME = 10s
+ POISON POOL DAMAGE = 100%
+ POISON POOL DAMAGE FREQUENCY = 2s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Poison Bounce
{
- Description = "Throw Poison bounces along the ground two additional times dealing small splashes of poison for 100% attack damage before the final explosion."
+ Description = "Throw Poison bounces along the ground {BOUNCE COUNT} additional times dealing small splashes of poison for {BOUNCE DAMAGE}% attack damage before the final explosion."
Affects = Ability 2
+
+ BOUNCE COUNT = 2
+ BOUNCE DAMAGE = 100%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Expunge
{
- Description = "Target takes 50% additional damage during Curse of Death."
+ Description = "Target takes {BONUS DAMAGE}% additional damage during Curse of Death."
Affects = Ability 3
+
+ BONUS DAMAGE = 50%
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Curse of Doom
+ {
+ Description = "If a target dies while Curse of Death is active, the target causes a large explosion, dealing all the damage accumulated during Curse of Death onto nearby targets.
+ Affects = Ability 3
+
+ EXPLODE RANGE = 500
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -362,50 +464,83 @@ Item Enchants
{
Piercing Bolt
{
- Description = "Regular attacks now go through targets. Damage dealt to additional targets reduced by 50%."
+ Description = "Regular attacks now go through targets. Damage dealt to additional targets is {MULTI TARGET DAMAGE}% of attack."
Affects = Auto Attack
+
+ MULTI TARGET DAMAGE = 50%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Blink Portal
{
- Description = "For 5 seconds after using Teleport, the Wizard can activate Teleport again to teleport back to the original location. Cooldown increased to 13 seconds."
+ Description = "For {REACTIVATION TIME} seconds after using Teleport, the Wizard can activate Teleport again to teleport back to the original location. Cooldown increased to {COOLDOWN} seconds."
Affects = Right Click Ability
+
+ REACTIVATION TIME = 5s
+ COOLDOWN = 13s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Black Hole
{
- Description = "After teleporting, creates a small black hole pulling in nearby targets for 4 seconds."
+ Description = "After teleporting, creates a small black hole pulling in nearby targets for {BLACK HOLE DURATION} seconds."
Affects = Right Click Ability
+
+ BLACK HOLE DURATION = 4s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Trail of Fire
{
- Description = "The Firebolt leaves behind a trail of fire, burning targets standing in it for 10% attack every second for 10 seconds."
+ Description = "The Firebolt leaves behind a trail of fire, burning targets standing in it for {TRAIL DAMAGE}% attack every second for {TRAIL DURATION} seconds."
Affects = Ability 1
+
+ TRAIL DAMAGE = 10%
+ TRAIL DURATION = 10s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Chain Lightning
{
- Description = "Targets affected by Lightning Bolt will send out two additional shocks half a second later to other nearby targets for 100% attack. This can continue up to three times."
+ Description = "Targets affected by Lightning Bolt will send out {ADDITIONAL SHOCK COUNT} additional shocks {ADDITIONAL SHOCK DELAY} seconds later to other nearby targets for {SHOCK DAMAGE}% attack. This can continue up to {REPEAT COUNT} times."
Affects = Ability 2
+
+ ADDITIONAL SHOCK COUNT = 2
+ ADDITIONAL SHOCK DELAY = 0.5s
+ SHOCK DAMAGE = 100%
+ REPEAT COUNT = 3
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Summon Comet
{
- Description = "Meteor cast time reduced by 1 second. Meteor attack falls twice as quickly."
+ Description = "Meteor cast time reduced to {METEOR CAST TIME} seconds. Meteor attack falls {FALL SPEED MULT}x as quickly. Damage is reduced by {DAMAGE REDUCTION PCT}% and Cooldown reduced by {COOLDOWN REDUCTION} seconds."
Affects = Ability 3
+
+ METEOR CAST TIME = 0.5s
+ FALL SPEED MULT = 2.0x
+ DAMAGE REDUCTION PCT = 10%
+ COOLDOWN REDUCTION = 8s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Solar Flare
{
- Description = "Meteor cast time increased by 2 seconds. Meteor is twice as large and deals 1600% attack. Lingering fire rings last twice as long."
+ Description = "Meteor cast time increased to {METEOR CAST TIME} seconds. Meteor is {SIZE MULT}x as large and deals {METEOR ATTACK}% attack. Lingering fire rings last {FIRE RING DURATION MULT}x as long. Cooldown increased by {COOLDOWN INCREASE} seconds."
Affects = Ability 3
+
+ METEOR CAST TIME = 3.5s
+ SIZE MULT = 2x
+ METEOR ATTACK = 1600%
+ FIRE RING DURATION MULT = 2x
+ COOLDOWN INCREASE = 8s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
@@ -421,43 +556,96 @@ Item Enchants
{
Description = "Provides a defensive aura granting many boons."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Health %, 5, 10
- Stat Modifier[1] = Defense %, 5, 10
- Stat Modifier[2] = Move Spd %, 5, 10
- Stat Modifier[3] = HP4 Recovery %, 2, 5
+ Stat Modifier[0] = Health %, 2, 3
+ Stat Modifier[1] = Damage Reduction, 2, 3
+ Stat Modifier[2] = Move Spd %, 2, 3
+ Stat Modifier[3] = HP6 Recovery %, 1, 1
}
Aura of the Beast
{
Description = "Provides an offensive aura granting many boons."
# Stat, Lowest, Highest Value
- Stat Modifier[0] = Attack %, 4, 8
- Stat Modifier[1] = Crit Rate, 5, 10
- Stat Modifier[2] = CDR, 5, 10
- Stat Modifier[3] = Crit Dmg, 15, 20
+ Stat Modifier[0] = Attack %, 2, 3
+ Stat Modifier[1] = Crit Rate, 2, 3
+ Stat Modifier[2] = CDR, 2, 3
+ Stat Modifier[3] = Crit Dmg, 3, 7
}
Lethal Tempo
{
- Description = "Increases Attack Speed by 5% with each strike, up to 25%. Lasts for 5 seconds."
+ Description = "Increases Attack Speed by {ATTACK SPEED INCREASE}% with each strike, up to {MAX ATTACK SPEED INCREASE}%. Stacks last for {STACK DURATION} seconds."
+
+ ATTACK SPEED INCREASE = 5%
+ MAX ATTACK SPEED INCREASE = 25%
+ STACK DURATION = 5s
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Second Wind
{
- Description = "Gain 1% HP Recovery/sec when below 20% health."
+ Description = "Gain {HP RECOVERY PCT}% HP Recovery/sec when below {HP BELOW THRESHOLD}% health."
+
+ HP RECOVERY PCT = 1%
+ HP BELOW THRESHOLD = 20%
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Emergency Recovery
+ {
+ Description = "Gain {HP RECOVERY PCT}% HP Recovery every 6 seconds. Effect increases by {GAIN AMOUNT PCT}% for every {MISSING HEALTH BONUS PCT}% health missing. Below {FOUR SECOND HP THRESHOLD}% Health Recovery happens every 4 seconds."
+
+ HP RECOVERY PCT = 1%
+ GAIN AMOUNT PCT = 0.5%
+ MISSING HEALTH BONUS PCT = 10%
+ FOUR SECOND HP THRESHOLD = 30%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Death Defiance
{
- Description = "30% chance to avoid taking lethal damage."
+ Description = "{LETHAL DAMAGE AVOID CHANCE}% chance to avoid taking lethal damage."
+
+ LETHAL DAMAGE AVOID CHANCE = 30%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
Reaper of Souls
{
- Description = "Recover 3 Health for each monster kill."
+ Description = "Recover {HEALTH GAIN} Health, {MANA GAIN} Mana and reduces ability cooldowns by {COOLDOWN REDUCTION} seconds for each monster kill."
+
+ HEALTH GAIN = 3
+ MANA GAIN = 2
+ COOLDOWN REDUCTION = 0.5s
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Wizards Soul
+ {
+ Description = "Using an ability reduces the cooldown of every other ability by {ABILITY COOLDOWN AMOUNT} seconds. Mana Recovery also increases by {MANA RECOVERY MULT}x for {MANA RECOVERY DURATION} seconds."
+
+ ABILITY COOLDOWN AMOUNT = 1.5s
+ MANA RECOVERY MULT = 2x
+ MANA RECOVERY DURATION = 2s
+
+ # Stat, Lowest, Highest Value
+ # Stat Modifier[0] = ..., 0, 0
+ }
+ Last Reserve
+ {
+ Description = "Gain {DAMAGE REDUCTION PCT}% Damage Reduction, {ATTACK PCT}% Attack and {COOLDOWN REDUCTION PCT}% Cooldown Reduction when below {HP BELOW THRESHOLD}% Health".
+
+ DAMAGE REDUCTION PCT = 30%
+ ATTACK PCT = 10%
+ COOLDOWN REDUCTION PCT = 10%
+ HP BELOW THRESHOLD = 25%
+
# Stat, Lowest, Highest Value
# Stat Modifier[0] = ..., 0, 0
}
+
}
}
\ No newline at end of file
diff --git a/x64/Release/Adventures in Lestoria.exe b/x64/Release/Adventures in Lestoria.exe
index 7f507225..f0b845d9 100644
Binary files a/x64/Release/Adventures in Lestoria.exe and b/x64/Release/Adventures in Lestoria.exe differ