diff --git a/Crawler.sln b/Crawler.sln
index 56358287..f4d5657f 100644
--- a/Crawler.sln
+++ b/Crawler.sln
@@ -9,6 +9,8 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ Release Desktop|x64 = Release Desktop|x64
+ Release Desktop|x86 = Release Desktop|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
@@ -17,6 +19,10 @@ Global
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x64.Build.0 = Debug|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x86.ActiveCfg = Debug|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Debug|x86.Build.0 = Debug|Win32
+ {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x64.ActiveCfg = Release Desktop|x64
+ {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x64.Build.0 = Release Desktop|x64
+ {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x86.ActiveCfg = Release Desktop|Win32
+ {8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release Desktop|x86.Build.0 = Release Desktop|Win32
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x64.ActiveCfg = Release|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x64.Build.0 = Release|x64
{8E3067AF-CFE7-4B11-BC6B-B867C32753D7}.Release|x86.ActiveCfg = Release|Win32
diff --git a/Crawler/Crawler.vcxproj b/Crawler/Crawler.vcxproj
index fe0ac052..0b26966f 100644
--- a/Crawler/Crawler.vcxproj
+++ b/Crawler/Crawler.vcxproj
@@ -13,6 +13,14 @@
Emscripten
x64
+
+ Release Desktop
+ Win32
+
+
+ Release Desktop
+ x64
+
Release
Win32
@@ -47,6 +55,13 @@
true
Unicode
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
Application
true
@@ -60,6 +75,13 @@
true
Unicode
+
+ Application
+ false
+ v143
+ true
+ Unicode
+
v143
@@ -77,12 +99,18 @@
+
+
+
+
+
+
@@ -118,6 +146,25 @@
powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"
+
+
+ Level3
+ true
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+
+
+ Console
+ true
+ true
+ true
+
+
+ powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"
+
+
Level3
@@ -161,6 +208,30 @@
powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File emscripten_build.ps1
+
+
+ Level3
+ true
+ true
+ true
+ NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ true
+ stdcpp17
+
+
+ Console
+ true
+ true
+ true
+
+
+ powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File update_version.ps1 "./version.h"
+
+
+
+
+
+
Console
diff --git a/Crawler/EnergyBolt.cpp b/Crawler/EnergyBolt.cpp
index 2c0c1eee..271e2b7d 100644
--- a/Crawler/EnergyBolt.cpp
+++ b/Crawler/EnergyBolt.cpp
@@ -14,7 +14,7 @@ void EnergyBolt::Update(float fElapsedTime){
lastParticleSpawn=std::max(0.f,lastParticleSpawn-fElapsedTime);
if(lastParticleSpawn==0){
lastParticleSpawn="Wizard.Auto Attack.ParticleFrequency"_F;
- game->AddEffect(std::make_unique(pos,"Wizard.Auto Attack.ParticleLifetimeRange"_FRange,AnimationState::ENERGY_PARTICLE,upperLevel,"Wizard.Auto Attack.ParticleSizeRange"_FRange,"Wizard.Auto Attack.ParticleFadeoutTime"_F,vf2d{"Wizard.Auto Attack.ParicleSpeedRange"_FRange,"Wizard.Auto Attack.ParicleSpeedRange"_FRange}));
+ game->AddEffect(std::make_unique(pos,"Wizard.Auto Attack.ParticleLifetimeRange"_FRange,AnimationState::ENERGY_PARTICLE,upperLevel,"Wizard.Auto Attack.ParticleSizeRange"_FRange,"Wizard.Auto Attack.ParticleFadeoutTime"_F,vf2d{"Wizard.Auto Attack.ParticleSpeedRange"_FRange,"Wizard.Auto Attack.ParticleSpeedRange"_FRange}));
}
}
diff --git a/Crawler/FireBolt.cpp b/Crawler/FireBolt.cpp
index 277b5809..93e730be 100644
--- a/Crawler/FireBolt.cpp
+++ b/Crawler/FireBolt.cpp
@@ -14,15 +14,15 @@ FireBolt::FireBolt(vf2d pos,vf2d vel,float radius,int damage,bool upperLevel,boo
void FireBolt::Update(float fElapsedTime){
lastParticleSpawn=std::max(0.f,lastParticleSpawn-fElapsedTime);
if(lastParticleSpawn==0){
- lastParticleSpawn=0.03;
- game->AddEffect(std::make_unique(pos,util::random(1),AnimationState::ENERGY_PARTICLE,upperLevel,util::random(2),0.3,vf2d{util::random(120)-60,-util::random(60)},Pixel{255,uint8_t(util::random(250)),0}));
+ lastParticleSpawn="Wizard.Ability 1.ParticleFrequency"_F;
+ game->AddEffect(std::make_unique(pos,"Wizard.Ability 1.ParticleLifetimeRange"_FRange,AnimationState::ENERGY_PARTICLE,upperLevel,"Wizard.Ability 1.ParticleSizeRange"_FRange,"Wizard.Ability 1.ParticleFadeoutTime"_F,vf2d{"Wizard.Ability 1.ParticleXSpeedRange"_FRange,"Wizard.Ability 1.ParticleYSpeedRange"_FRange},Pixel{uint8_t("Wizard.Ability 1.ParticleRedRange"_FRange),uint8_t("Wizard.Ability 1.ParticleGreenRange"_FRange),uint8_t("Wizard.Ability 1.ParticleBlueRange"_FRange),uint8_t("Wizard.Ability 1.ParticleAlphaRange"_FRange)}));
}
}
bool FireBolt::PlayerHit(Player*player)
{
deactivated=true;
- fadeOutTime=0.2f;
+ fadeOutTime="Wizard.Ability 1.BulletHitFadeoutTime"_F;
game->AddEffect(std::make_unique(player->GetPos(),0,AnimationState::SPLASH_EFFECT,upperLevel,5,0.25,vf2d{},Pixel{240,120,60}));
return false;
}
@@ -30,12 +30,12 @@ bool FireBolt::PlayerHit(Player*player)
bool FireBolt::MonsterHit(Monster& monster)
{
deactivated=true;
- fadeOutTime=0.2f;
- for(int i=0;i<72;i++){
- game->AddEffect(std::make_unique(monster.GetPos(),util::random(0.5),AnimationState::DOT_PARTICLE,upperLevel,util::random(2),util::random(0.4),vf2d{util::random(300)-150,util::random(300)-150},Pixel{255,uint8_t(util::random(190)+60),60}));
+ fadeOutTime="Wizard.Ability 1.BulletHitFadeoutTime"_F;
+ for(int i=0;i<"Wizard.Ability 1.BulletHitExplosionParticleCount"_I;i++){
+ game->AddEffect(std::make_unique(monster.GetPos(),"Wizard.Ability 1.BulletHitExplosionParticleLifetimeRange"_FRange,AnimationState::DOT_PARTICLE,upperLevel,"Wizard.Ability 1.BulletHitExplosionParticleSizeRange"_FRange,"Wizard.Ability 1.BulletHitExplosionParticleFadeoutTimeRange"_FRange,vf2d{"Wizard.Ability 1.BulletHitExplosionParticleSpeedRange"_FRange,"Wizard.Ability 1.BulletHitExplosionParticleSpeedRange"_FRange},Pixel{uint8_t("Wizard.Ability 1.BulletHitExplosionParticleRedRange"_FRange),uint8_t("Wizard.Ability 1.BulletHitExplosionParticleGreenRange"_FRange),uint8_t("Wizard.Ability 1.BulletHitExplosionParticleBlueRange"_FRange),uint8_t("Wizard.Ability 1.BulletHitExplosionParticleAlphaRange"_FRange)}));
}
- game->SetupWorldShake(0.25);
- game->HurtEnemies(monster.GetPos(),2.5*24,3*damage,OnUpperLevel());
- game->AddEffect(std::make_unique(monster.GetPos(),0,AnimationState::SPLASH_EFFECT,upperLevel,5,0.25,vf2d{},Pixel{240,120,60}));
+ game->SetupWorldShake("Wizard.Ability 1.WorldShakeTime"_F);
+ game->HurtEnemies(monster.GetPos(),"Wizard.Ability 1.BulletHitExplosionRange"_F/100*12,"Wizard.Ability 1.BulletHitExplosionDamageMult"_F*damage,OnUpperLevel());
+ game->AddEffect(std::make_unique(monster.GetPos(),0,AnimationState::SPLASH_EFFECT,upperLevel,"Wizard.Ability 1.BulletHitExplosionRange"_F/100*2,"Wizard.Ability 1.BulletHitExplosionFadeoutTime"_F,vf2d{},"Wizard.Ability 1.BulletHitExplosionColor"_Pixel));
return false;
}
diff --git a/Crawler/Version.h b/Crawler/Version.h
index 042973d6..a707c948 100644
--- a/Crawler/Version.h
+++ b/Crawler/Version.h
@@ -2,7 +2,7 @@
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_PATCH 0
-#define VERSION_BUILD 908
+#define VERSION_BUILD 913
#define stringify(a) stringify_(a)
#define stringify_(a) #a
diff --git a/Crawler/assets/config/classes/Wizard.txt b/Crawler/assets/config/classes/Wizard.txt
index 33467fd1..bf84148f 100644
--- a/Crawler/assets/config/classes/Wizard.txt
+++ b/Crawler/assets/config/classes/Wizard.txt
@@ -81,6 +81,45 @@ Wizard
#Coloring of the bullet.
BulletColor = 240, 120, 60, 255
+
+ # When bullet makes contact, how fast the bullet will fade out.
+ BulletHitFadeoutTime = 0.2
+
+ WorldShakeTime = 0.25
+
+ BulletHitExplosionRange = 250
+ # WARNING! This is how much damage multipled from the original damage of a fire bolt, not the base damage of the player.
+ BulletHitExplosionDamageMult = 3
+
+ BulletHitExplosionFadeoutTime = 0.25
+
+ BulletHitExplosionColor = 240, 120, 60, 255
+
+ # The number of particles that spawn when a fire bolt explodes on contact.
+ BulletHitExplosionParticleCount = 72
+ BulletHitExplosionParticleLifetimeRange = 0,0.5
+ BulletHitExplosionParticleSizeRange = 0,2
+ BulletHitExplosionParticleFadeoutTimeRange = 0,0.4
+ BulletHitExplosionParticleSpeedRange = -150,150
+ # Specific color randomization ranges for the explosion particles.
+ BulletHitExplosionParticleRedRange = 255,255
+ BulletHitExplosionParticleGreenRange = 60,250
+ BulletHitExplosionParticleBlueRange = 60,60
+ BulletHitExplosionParticleAlphaRange = 255,255
+
+ # How much time passes before another particle spawns from the bullet.
+ ParticleFrequency = 0.03
+ # Specify a minimum and maximum range
+ ParticleLifetimeRange = 0,1
+ ParticleSizeRange = 0,2
+ ParticleFadeoutTime = 0.3
+ ParticleXSpeedRange = -60,60
+ ParticleYSpeedRange = -60,-60
+ # Specific color randomization ranges for the fire bolt particles.
+ ParticleRedRange = 255,255
+ ParticleGreenRange = 0,250
+ ParticleBlueRange = 0,0
+ ParticleAlphaRange = 255,255
}
Ability 2
{
diff --git a/Crawler/assets/config/configuration.txt b/Crawler/assets/config/configuration.txt
index 2f4e114c..098bab37 100644
--- a/Crawler/assets/config/configuration.txt
+++ b/Crawler/assets/config/configuration.txt
@@ -16,4 +16,4 @@ class_directory = classes/
class_list = Warrior, Thief, Ranger, Trapper, Wizard, Witch
# Whether or not to show individual data accesses from config data structure.
-debug_access_options = 0
\ No newline at end of file
+debug_access_options = 1
\ No newline at end of file
diff --git a/x64/Release Desktop/Crawler.exe b/x64/Release Desktop/Crawler.exe
new file mode 100644
index 00000000..d9e7b98b
Binary files /dev/null and b/x64/Release Desktop/Crawler.exe differ