diff --git a/Adventures in Lestoria/Adventures in Lestoria.tiled-project b/Adventures in Lestoria/Adventures in Lestoria.tiled-project
index 0774d026..0f9a3707 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.tiled-project
+++ b/Adventures in Lestoria/Adventures in Lestoria.tiled-project
@@ -268,7 +268,8 @@
"CAMPAIGN_2_B1",
"BOSS_2",
"BOSS_2_B",
- "STORY_2_1"
+ "STORY_2_1",
+ "STORY_2_2"
],
"valuesAsFlags": false
},
@@ -472,7 +473,8 @@
"None",
"Blacksmith",
"PotionCrafting",
- "TravelingMerchant"
+ "TravelingMerchant",
+ "Artificer"
],
"valuesAsFlags": false
},
diff --git a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
index c2ef6eac..94a086eb 100644
--- a/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
+++ b/Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
@@ -1154,6 +1154,9 @@
Source Files\Bullet Types
+
+ Configurations\Story
+
diff --git a/Adventures in Lestoria/AdventuresInLestoria.cpp b/Adventures in Lestoria/AdventuresInLestoria.cpp
index 099fdd95..57371129 100644
--- a/Adventures in Lestoria/AdventuresInLestoria.cpp
+++ b/Adventures in Lestoria/AdventuresInLestoria.cpp
@@ -335,7 +335,7 @@ bool AiL::OnUserCreate(){
GameSettings::Initialize();
#endif
- State_OverworldMap::SetStageMarker("starting_map_name"_S);
+ State_OverworldMap::SetStageMarker("Player.Starting Location"_S);
STEAMINPUT(
SteamInput()->Init(false);
Input::LoadSteamButtonIcons();
diff --git a/Adventures in Lestoria/Chapter 2.txt b/Adventures in Lestoria/Chapter 2.txt
new file mode 100644
index 00000000..15ed0929
--- /dev/null
+++ b/Adventures in Lestoria/Chapter 2.txt
@@ -0,0 +1,26 @@
+===ARTIFICER_INTRO===
+{BACKGROUND commercial_assets/Forest Clearing Campsite_Day.png}
+
+[Artificer]
+Hello adventurer! Welcome to my artificing station! I have not met you yet, may I have the pleasure of knowing your name?
+
+[You]
+Hello, my name is [You].
+
+[Artificer]
+Excellent! Nice to meet you, [You]. At my station you have the ability to refine and fix up imperfect jewelry discovered while exploring!
+
+Disassemble rings that are undesirable to you and retrieve fragments of them, then use the Refine station to empower your equipment further!
+
+This should let you get some use out of all those extra rings you're carrying around, eh?
+
+[You]
+Great, I think I could make good use of this. Thank you.
+
+===ARTIFICER_HELP===
+[Artificer]
+At this station you have the ability to refine and fix up imperfect jewelry discovered while exploring!
+
+Disassemble rings that are undesirable to you and retrieve fragments of them, then use the Refine station to empower your equipment further!
+
+You can make use of those extra rings you have been piling up!
\ No newline at end of file
diff --git a/Adventures in Lestoria/Crawler_Artificer.txt b/Adventures in Lestoria/Crawler_Artificer.txt
index 7149e311..8f31a372 100644
--- a/Adventures in Lestoria/Crawler_Artificer.txt
+++ b/Adventures in Lestoria/Crawler_Artificer.txt
@@ -4,12 +4,32 @@ Artificer
- Unlocks an additional feature after Chapter 3 - Bonus Boss
- Is available in the hub area
+Artificer unlocks after beating chapter 2 bonus boss.
+Player heads to camp.
+Camera pans over to the Artificer's station, and a new NPC appears there.
+Then camera pans back over to the player
+The leave buttons are disabled and a tutorial prompt to visit the artificer appears.
+You go to the artificer and talk to them.
+Artificer explains that your accessories' stats may not have reached their full potential yet and can be refined.
+ You can disassemble previously obtained rings to get ring fragments, then refine your rings to increase its power further.
+
+Artificer: Hello adventurer! Welcome to my artificing station! May I have the pleasure of knowing your name?
+[YOU]: Hello, my name is ____.
+Artificer: Excelent! Nice to meet you, [YOU]. Here you have the ability to refine and fix up imperfect jewelry discovered along your journey!
+Artificer: Break down rings that are undesirable to you to retrieve fragments, then use the Refining station to empower your equipment further!
+Artificer: This will let you get use out of all those extra rings you may be carrying around, eh?
+
+
Artificer has 4 Dialog Options
-- Repair/Enhance (Name may change in the future)
+- Repair/Enhance/(Refine?) (Name may change in the future)
- Disassemble
- Enchant (Requieres Chapter 3 - Bonus boss)
+- Help (Runs through the explanation again.)
- Leave
+
+(Whichever is greater): Always go up by 20%/Always go up by 1
+
Enhancing Gear
- increases the stats of an item.
- Increases a random stat by a random amount that did not reach its cap. (cant go higher then 20% of its current amount in on Enhance attempt and cant go higher then the max stat value of the item)
diff --git a/Adventures in Lestoria/NPC.cpp b/Adventures in Lestoria/NPC.cpp
index d4769740..cebb79ed 100644
--- a/Adventures in Lestoria/NPC.cpp
+++ b/Adventures in Lestoria/NPC.cpp
@@ -83,6 +83,9 @@ void Monster::STRATEGY::NPC(Monster&m,float fElapsedTime,std::string strategy){
}else
if(m.npcData.function=="TravelingMerchant"){
Menu::OpenMenu(MenuType::MERCHANT);
+ }else
+ if(m.npcData.function=="Artificer"){
+ Menu::OpenMenu(MenuType::MERCHANT);
}
}
}else{
diff --git a/Adventures in Lestoria/State_GameHub.cpp b/Adventures in Lestoria/State_GameHub.cpp
index b64029b6..6d0c3aed 100644
--- a/Adventures in Lestoria/State_GameHub.cpp
+++ b/Adventures in Lestoria/State_GameHub.cpp
@@ -68,6 +68,9 @@ void State_GameHub::OnStateChange(GameState*prevState){
}
void State_GameHub::OnLevelLoad(){
game->UpdateDiscordStatus("Camp",game->GetPlayer()->GetClassName());
+ if(Unlock::IsUnlocked("STORY_2_2")){
+ Audio::SetAudioEvent("Chapter3Unlock");
+ }else
if(Unlock::IsUnlocked("STORY_1_3")){
Audio::SetAudioEvent("Chapter2Unlock");
}else
diff --git a/Adventures in Lestoria/State_OverworldMap.cpp b/Adventures in Lestoria/State_OverworldMap.cpp
index cb6e32a7..dfa871bd 100644
--- a/Adventures in Lestoria/State_OverworldMap.cpp
+++ b/Adventures in Lestoria/State_OverworldMap.cpp
@@ -63,8 +63,10 @@ void State_OverworldMap::OnStateChange(GameState*prevState){
game->ResetCompletedStageFlag();
- if(Unlock::IsUnlocked("STORY_1_3")){
+ justUnlockedChapter2=false;
+ if(Unlock::IsUnlocked("STORY_1_3")&&game->GetCurrentChapter()==1){
game->SetChapter(2);
+ justUnlockedChapter2=true;
}
game->LoadLevel("WORLD_MAP");
@@ -74,6 +76,7 @@ void State_OverworldMap::OnLevelLoad(){
Menu::CloseAllMenus();
}
game->GetPlayer()->ForceSetPos(currentConnectionPoint->rect.pos+currentConnectionPoint->rect.size/2+vf2d{0,16});
+ if(justUnlockedChapter2)SetStageMarker("Player.Chapter 2 Unlock Set Location"_S);
playerTargetPos=currentConnectionPoint->rect.pos+currentConnectionPoint->rect.size/2+vf2d{0,16};
game->GetPlayer()->UpdateWalkingAnimation(DOWN);
game->GetPlayer()->SetState(State::FORCE_WALK);
@@ -101,6 +104,7 @@ void State_OverworldMap::OnUserUpdate(AiL*game){
if(geom2d::line(game->GetPlayer()->GetPos(),playerTargetPos).length()<2){
game->GetPlayer()->SetPos(playerTargetPos);
}else{
+ game->GetPlayer()->SetAnimationBasedOnTarget("WALK",playerTargetPos);
game->GetPlayer()->SetPos(game->GetPlayer()->GetPos()+util::pointTo(game->GetPlayer()->GetPos(),playerTargetPos)*playerMoveSpd*game->GetElapsedTime());
}
}
@@ -116,18 +120,6 @@ void State_OverworldMap::OnUserUpdate(AiL*game){
if(mouseUsed){
UpdateCurrentConnectionPoint(cp);
playerTargetPos=currentConnectionPoint->rect.pos+currentConnectionPoint->rect.size/2+vf2d{0,16};
- float angleTo=util::angleTo(game->GetPlayer()->GetPos(),playerTargetPos);
- if(angleTo>=-3*PI/4&&angleTo<-PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(UP);
- }else
- if(angleTo=-PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(RIGHT);
- }else
- if(angleTo>=PI/4&&angleTo<3*PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(DOWN);
- }else{
- game->GetPlayer()->UpdateWalkingAnimation(LEFT);
- }
if(abs(game->KEY_SCROLLHORZ_L.Analog())>=0.2f||abs(game->KEY_SCROLLVERT_L.Analog()>=0.2f))analogMove=true;
goto doneNavigating;
}else{
@@ -148,18 +140,6 @@ void State_OverworldMap::OnUserUpdate(AiL*game){
if(Unlock::IsUnlocked(neighbor.unlockCondition)&&targetDirection==directionInd){
UpdateCurrentConnectionPoint(neighbor);
playerTargetPos=currentConnectionPoint->rect.pos+currentConnectionPoint->rect.size/2+vf2d{0,16};
- float angleTo=util::angleTo(game->GetPlayer()->GetPos(),playerTargetPos);
- if(angleTo>=-3*PI/4&&angleTo<-PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(UP);
- }else
- if(angleTo=-PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(RIGHT);
- }else
- if(angleTo>=PI/4&&angleTo<3*PI/4){
- game->GetPlayer()->UpdateWalkingAnimation(DOWN);
- }else{
- game->GetPlayer()->UpdateWalkingAnimation(LEFT);
- }
if(abs(game->KEY_SCROLLHORZ_L.Analog())>=0.2f||abs(game->KEY_SCROLLVERT_L.Analog()>=0.2f))analogMove=true;
goto doneNavigating;
}
diff --git a/Adventures in Lestoria/State_OverworldMap.h b/Adventures in Lestoria/State_OverworldMap.h
index 80b27016..39974313 100644
--- a/Adventures in Lestoria/State_OverworldMap.h
+++ b/Adventures in Lestoria/State_OverworldMap.h
@@ -48,6 +48,7 @@ class State_OverworldMap:public GameState{
const float playerMoveSpd=48.0;
bool analogMove=false;
float mosaicAmt=0.f;
+ bool justUnlockedChapter2{false};
public:
State_OverworldMap();
static std::vectorconnections;
diff --git a/Adventures in Lestoria/Version.h b/Adventures in Lestoria/Version.h
index 278044c0..0f7f8987 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 10391
+#define VERSION_BUILD 10399
#define stringify(a) stringify_(a)
#define stringify_(a) #a
diff --git a/Adventures in Lestoria/assets/Campaigns/Hub_v2.tmx b/Adventures in Lestoria/assets/Campaigns/Hub_v2.tmx
index c8b2677d..b69cdec0 100644
--- a/Adventures in Lestoria/assets/Campaigns/Hub_v2.tmx
+++ b/Adventures in Lestoria/assets/Campaigns/Hub_v2.tmx
@@ -1,5 +1,5 @@
-