Added stage loot to levels configuration, and implemented stage loot upon level completion.
This commit is contained in:
parent
8a1689cb07
commit
c021c531f7
@ -378,6 +378,10 @@
|
|||||||
<SubType>
|
<SubType>
|
||||||
</SubType>
|
</SubType>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="ItemMapData.h">
|
||||||
|
<SubType>
|
||||||
|
</SubType>
|
||||||
|
</ClInclude>
|
||||||
<ClInclude Include="ItemMenuLabel.h">
|
<ClInclude Include="ItemMenuLabel.h">
|
||||||
<SubType>
|
<SubType>
|
||||||
</SubType>
|
</SubType>
|
||||||
|
@ -432,6 +432,9 @@
|
|||||||
<ClInclude Include="ItemNameConverter.h">
|
<ClInclude Include="ItemNameConverter.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="ItemMapData.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Player.cpp">
|
<ClCompile Include="Player.cpp">
|
||||||
|
@ -1617,6 +1617,14 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){
|
|||||||
size_t slashMarker = mapFile.find_last_of('/');
|
size_t slashMarker = mapFile.find_last_of('/');
|
||||||
std::string baseDir=mapFile.substr(0,slashMarker+1);
|
std::string baseDir=mapFile.substr(0,slashMarker+1);
|
||||||
MAP_DATA[map]=level.GetData();
|
MAP_DATA[map]=level.GetData();
|
||||||
|
|
||||||
|
for(auto&[key,size]:DATA["Levels"][map]){
|
||||||
|
if(key.starts_with("Loot")){
|
||||||
|
datafile data=DATA["Levels"][map][key];
|
||||||
|
MAP_DATA[map].stageLoot.push_back(ItemMapData(data.GetString(0U),data.GetInt(1U),data.GetInt(2U)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for(XMLTag&tag:MAP_DATA[map].TilesetData){
|
for(XMLTag&tag:MAP_DATA[map].TilesetData){
|
||||||
size_t slashMarkerSourceDir = tag.data["source"].find_last_of('/');
|
size_t slashMarkerSourceDir = tag.data["source"].find_last_of('/');
|
||||||
std::string baseSourceDir=tag.data["source"].substr(slashMarkerSourceDir+1);
|
std::string baseSourceDir=tag.data["source"].substr(slashMarkerSourceDir+1);
|
||||||
@ -2303,7 +2311,7 @@ bool AiL::OnUserDestroy(){
|
|||||||
|
|
||||||
void AiL::InitializeLevels(){
|
void AiL::InitializeLevels(){
|
||||||
for(auto&[key,size]:DATA["Levels"]){
|
for(auto&[key,size]:DATA["Levels"]){
|
||||||
InitializeLevel("map_path"_S+operator""_S(("Levels."+key).c_str(),("Levels."+key).size()),key);
|
InitializeLevel("map_path"_S+DATA["Levels"][key]["Map File"].GetString(),key);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(ConnectionPoint&cp:State_OverworldMap::connections){
|
for(ConnectionPoint&cp:State_OverworldMap::connections){
|
||||||
|
47
Adventures in Lestoria/ItemMapData.h
Normal file
47
Adventures in Lestoria/ItemMapData.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
#pragma region License
|
||||||
|
/*
|
||||||
|
License (OLC-3)
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Copyright 2024 Joshua Sigona <sigonasr2@gmail.com>
|
||||||
|
|
||||||
|
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 © 2023 The FreeType
|
||||||
|
Project (www.freetype.org). Please see LICENSE_FT.txt for more information.
|
||||||
|
All rights reserved.
|
||||||
|
*/
|
||||||
|
#pragma endregion
|
||||||
|
#pragma once
|
||||||
|
#include "Item.h"
|
||||||
|
|
||||||
|
struct ItemMapData{
|
||||||
|
IT item;
|
||||||
|
uint8_t amt;
|
||||||
|
int chance;
|
||||||
|
inline ItemMapData(IT item,uint8_t amt,int chance)
|
||||||
|
:item(item),amt(amt),chance(chance){}
|
||||||
|
};
|
@ -51,6 +51,13 @@ void State_LevelComplete::OnStateChange(GameState*prevState){
|
|||||||
}
|
}
|
||||||
Component<MenuLabel>(MenuType::LEVEL_COMPLETE,"Level EXP Gain Outline")->SetLabel(std::format("+{} Exp",game->GetPlayer()->GetAccumulatedXP()));
|
Component<MenuLabel>(MenuType::LEVEL_COMPLETE,"Level EXP Gain Outline")->SetLabel(std::format("+{} Exp",game->GetPlayer()->GetAccumulatedXP()));
|
||||||
game->GetPlayer()->AddXP(game->GetPlayer()->GetAccumulatedXP());
|
game->GetPlayer()->AddXP(game->GetPlayer()->GetAccumulatedXP());
|
||||||
|
for(const ItemMapData&data:game->GetCurrentMap().stageLoot){
|
||||||
|
for(uint8_t rolls=0;rolls<data.amt;rolls++){
|
||||||
|
if(util::random(1.0f)<data.chance/100.f){
|
||||||
|
Inventory::AddItem(data.item,1U);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
game->GetPlayer()->SetState(State::NORMAL);
|
game->GetPlayer()->SetState(State::NORMAL);
|
||||||
Menu::OpenMenu(LEVEL_COMPLETE);
|
Menu::OpenMenu(LEVEL_COMPLETE);
|
||||||
};
|
};
|
||||||
|
@ -254,8 +254,8 @@ ConnectionPoint&State_OverworldMap::GetCurrentConnectionPoint(){
|
|||||||
|
|
||||||
void State_OverworldMap::StartLevel(){
|
void State_OverworldMap::StartLevel(){
|
||||||
game->UpdateDiscordStatus(State_OverworldMap::GetCurrentConnectionPoint().name,game->GetPlayer()->GetClassName());
|
game->UpdateDiscordStatus(State_OverworldMap::GetCurrentConnectionPoint().name,game->GetPlayer()->GetClassName());
|
||||||
State_OverworldMap::GetCurrentConnectionPoint().SetVisited();
|
|
||||||
SaveFile::SaveGame();
|
SaveFile::SaveGame();
|
||||||
|
State_OverworldMap::GetCurrentConnectionPoint().SetVisited();
|
||||||
if(State_OverworldMap::GetCurrentConnectionPoint().map.starts_with("STORY")){
|
if(State_OverworldMap::GetCurrentConnectionPoint().map.starts_with("STORY")){
|
||||||
VisualNovel::LoadVisualNovel(State_OverworldMap::GetCurrentConnectionPoint().map);
|
VisualNovel::LoadVisualNovel(State_OverworldMap::GetCurrentConnectionPoint().map);
|
||||||
}else{
|
}else{
|
||||||
|
@ -43,6 +43,7 @@ All rights reserved.
|
|||||||
#include "EnvironmentalAudio.h"
|
#include "EnvironmentalAudio.h"
|
||||||
#include "DEFINES.h"
|
#include "DEFINES.h"
|
||||||
#include "safemap.h"
|
#include "safemap.h"
|
||||||
|
#include "ItemMapData.h"
|
||||||
|
|
||||||
using MapName=std::string;
|
using MapName=std::string;
|
||||||
using namespace olc;
|
using namespace olc;
|
||||||
@ -100,6 +101,7 @@ struct Map{
|
|||||||
std::vector<XMLTag> TilesetData;
|
std::vector<XMLTag> TilesetData;
|
||||||
std::vector<LayerTag> LayerData;
|
std::vector<LayerTag> LayerData;
|
||||||
std::vector<EnvironmentalAudio>environmentalAudioData;
|
std::vector<EnvironmentalAudio>environmentalAudioData;
|
||||||
|
std::vector<ItemMapData>stageLoot;
|
||||||
std::string mapType="";
|
std::string mapType="";
|
||||||
std::string bgmSongName="";
|
std::string bgmSongName="";
|
||||||
BackdropName backdrop="";
|
BackdropName backdrop="";
|
||||||
|
@ -10,13 +10,13 @@ Settings Menu
|
|||||||
remove that bind from the list. Up to two keys may be binded per action.
|
remove that bind from the list. Up to two keys may be binded per action.
|
||||||
-We have to save keybinds to the save file.
|
-We have to save keybinds to the save file.
|
||||||
|
|
||||||
- Fix Stage Completed screen, item displays can hit the scrollbar.
|
|
||||||
|
|
||||||
- Stage Loot Config
|
- Stage Loot Config
|
||||||
- Initial Crafting of Gear.
|
- Initial Crafting of Gear.
|
||||||
|
|
||||||
- XP Bar
|
- XP Bar
|
||||||
|
|
||||||
|
- Fix reflections for rotated monsters.
|
||||||
|
|
||||||
January 31st
|
January 31st
|
||||||
============
|
============
|
||||||
Make new unlocked nodes more obvious, made neighboring nodes more obvious
|
Make new unlocked nodes more obvious, made neighboring nodes more obvious
|
||||||
@ -32,6 +32,8 @@ Story proofreading/correcting/storyboarding
|
|||||||
- Lock up unimplemented classes.
|
- Lock up unimplemented classes.
|
||||||
- Don't enable all stage plates normally.
|
- Don't enable all stage plates normally.
|
||||||
|
|
||||||
|
- Add Death screen (Zoom in on fatal blow, slow time down... Display some game over text... Allow retry or return to world map.)
|
||||||
|
|
||||||
- Auto targeting for controller / keyboard.
|
- Auto targeting for controller / keyboard.
|
||||||
|
|
||||||
A "Debug" version of the game that simply outputs all std::cout to a file as well (debug.log).
|
A "Debug" version of the game that simply outputs all std::cout to a file as well (debug.log).
|
||||||
|
@ -39,7 +39,7 @@ All rights reserved.
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_PATCH 0
|
#define VERSION_PATCH 0
|
||||||
#define VERSION_BUILD 6234
|
#define VERSION_BUILD 6237
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
@ -2,16 +2,64 @@ map_path = assets/Campaigns/
|
|||||||
|
|
||||||
Levels
|
Levels
|
||||||
{
|
{
|
||||||
WORLD_MAP = World_Map.tmx
|
WORLD_MAP
|
||||||
|
{
|
||||||
|
Map File = World_Map.tmx
|
||||||
|
}
|
||||||
|
|
||||||
CAMPAIGN_1_1 = 1_1_v2.tmx
|
CAMPAIGN_1_1
|
||||||
BOSS_1 = Boss_1_v2.tmx
|
{
|
||||||
|
Map File = 1_1_v2.tmx
|
||||||
|
|
||||||
CAMPAIGN_1_2 = 1_2.tmx
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
CAMPAIGN_1_3 = 1_3.tmx
|
Loot[0] = Berries, 5, 100%
|
||||||
CAMPAIGN_1_4 = 1_4.tmx
|
Loot[1] = Minor Mana Potion, 1, 100%
|
||||||
CAMPAIGN_1_5 = 1_5.tmx
|
}
|
||||||
CAMPAIGN_1_6 = 1_6.tmx
|
BOSS_1
|
||||||
CAMPAIGN_1_7 = 1_7.tmx
|
{
|
||||||
CAMPAIGN_1_8 = 1_8.tmx
|
Map File = Boss_1_v2.tmx
|
||||||
|
}
|
||||||
|
|
||||||
|
CAMPAIGN_1_2
|
||||||
|
{
|
||||||
|
Map File = 1_2.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_3
|
||||||
|
{
|
||||||
|
Map File = 1_3.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_4
|
||||||
|
{
|
||||||
|
Map File = 1_4.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_5
|
||||||
|
{
|
||||||
|
Map File = 1_5.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_6
|
||||||
|
{
|
||||||
|
Map File = 1_6.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_7
|
||||||
|
{
|
||||||
|
Map File = 1_7.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
|
CAMPAIGN_1_8
|
||||||
|
{
|
||||||
|
Map File = 1_8.tmx
|
||||||
|
# Specify item and number of items. Optionally specify a % drop chance per item.
|
||||||
|
# Loot[0] = Berries, 5, 100%
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user