diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
index ee132871..3e602540 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj
+++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj
@@ -619,6 +619,10 @@
+
+
+
+
diff --git a/Adventures in Lestoria/Boar.cpp b/Adventures in Lestoria/Boar.cpp
new file mode 100644
index 00000000..b6eb86d4
--- /dev/null
+++ b/Adventures in Lestoria/Boar.cpp
@@ -0,0 +1,80 @@
+#pragma region License
+/*
+License (OLC-3)
+~~~~~~~~~~~~~~~
+
+Copyright 2024 Joshua Sigona
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+1. Redistributions or derivations of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions or derivative works in binary form must reproduce the above
+copyright notice. This list of conditions and the following disclaimer must be
+reproduced in the documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors may
+be used to endorse or promote products derived from this software without specific
+prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Portions of this software are copyright © 2024 The FreeType
+Project (www.freetype.org). Please see LICENSE_FT.txt for more information.
+All rights reserved.
+*/
+#pragma endregion
+#include "AdventuresInLestoria.h"
+#include "DEFINES.h"
+#include "Monster.h"
+#include "MonsterStrategyHelpers.h"
+/*
+* Attack Strategie: If range to player >700 move closer.
+if range 400-700 Scratch the ground twice and then charge with 30% Move-Spd bonus in the players direction for a distance of 900.
+If range to player<400 backpaddle with 50% move-spd. if getting hit while backpaddling, start charge sequence.
+*/
+
+INCLUDE_game
+using A=Attribute;
+
+void Monster::STRATEGY::BOAR(Monster&m,float fElapsedTime,std::string strategy){
+ enum PhaseName{
+ MOVE,
+ SCRATCH,
+ CHARGE,
+ };
+
+ switch(m.phase){
+ case PhaseName::MOVE:{
+ float distToPlayer=geom2d::line(m.GetPos(),game->GetPlayer()->GetPos()).length();
+ if(distToPlayer>=ConfigInt("Closein Range")/100.f*24){
+ m.RemoveBuff(BuffType::SLOWDOWN);
+ RUN_TOWARDS(m,fElapsedTime,"Run Towards");
+ }else
+ if(distToPlayer<=ConfigInt("Backpedal Range")/100.f*24){
+ Key prevFacingDirection=m.GetFacingDirection();
+ m.AddBuff(BuffType::SLOWDOWN,INFINITE,(100-ConfigInt("Backpedal Movespeed"))/100.f);
+ RUN_AWAY(m,fElapsedTime,"Run Away");
+ m.UpdateFacingDirection(game->GetPlayer()->GetPos());
+ }else m.phase=PhaseName::SCRATCH;
+ }break;
+ case PhaseName::SCRATCH:{
+ m.RemoveBuff(BuffType::SLOWDOWN);
+
+ }break;
+ case PhaseName::CHARGE:{
+
+ }break;
+ }
+}
\ No newline at end of file
diff --git a/Adventures in Lestoria/Monster.h b/Adventures in Lestoria/Monster.h
index 15f907e3..95d3dd6d 100644
--- a/Adventures in Lestoria/Monster.h
+++ b/Adventures in Lestoria/Monster.h
@@ -227,6 +227,7 @@ private:
static void BEAR(Monster&m,float fElapsedTime,std::string strategy);
static void URSULE(Monster&m,float fElapsedTime,std::string strategy);
static void NPC(Monster&m,float fElapsedTime,std::string strategy);
+ static void BOAR(Monster&m,float fElapsedTime,std::string strategy);
};
};
diff --git a/Adventures in Lestoria/MonsterAttribute.h b/Adventures in Lestoria/MonsterAttribute.h
index dd91afc2..2e4db660 100644
--- a/Adventures in Lestoria/MonsterAttribute.h
+++ b/Adventures in Lestoria/MonsterAttribute.h
@@ -107,4 +107,5 @@ enum class Attribute{
LAST_JUMP_TIMER,
INITIALIZED,
JUMP_MOVE_TO_TARGET_TIMER,
+
};
\ No newline at end of file
diff --git a/Adventures in Lestoria/RUN_STRATEGY.cpp b/Adventures in Lestoria/RUN_STRATEGY.cpp
index 61242a4d..6eb23c36 100644
--- a/Adventures in Lestoria/RUN_STRATEGY.cpp
+++ b/Adventures in Lestoria/RUN_STRATEGY.cpp
@@ -53,6 +53,7 @@ void Monster::InitializeStrategies(){
STRATEGY_DATA.insert("Bear",Monster::STRATEGY::BEAR);
STRATEGY_DATA.insert("Ursule",Monster::STRATEGY::URSULE);
STRATEGY_DATA.insert("NPC",Monster::STRATEGY::NPC);
+ STRATEGY_DATA.insert("Boar",Monster::STRATEGY::BOAR);
STRATEGY_DATA.SetInitialized();
}
diff --git a/Adventures in Lestoria/assets/Campaigns/World_Map.png b/Adventures in Lestoria/assets/Campaigns/World_Map.png
index 5283138f..88c4e1a4 100644
Binary files a/Adventures in Lestoria/assets/Campaigns/World_Map.png and b/Adventures in Lestoria/assets/Campaigns/World_Map.png differ
diff --git a/Adventures in Lestoria/assets/config/MonsterStrategies.txt b/Adventures in Lestoria/assets/config/MonsterStrategies.txt
index 2e5f53b4..c3b63e8a 100644
--- a/Adventures in Lestoria/assets/config/MonsterStrategies.txt
+++ b/Adventures in Lestoria/assets/config/MonsterStrategies.txt
@@ -531,4 +531,18 @@ MonsterStrategy
# The maximum distance from the player that the NPC can be to interact with them.
Interaction Distance = 200
}
+ Boar
+ {
+ Closein Range = 700
+
+ Backpedal Range = 400
+
+ Ground Scratch Count = 2
+
+ Charge Movespeed = 130%
+
+ Charge Distance = 900
+
+ Backpedal Movespeed = 50%
+ }
}
\ No newline at end of file