diff --git a/.vscode/settings.json b/.vscode/settings.json index 24ce3fcf..81969e1e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -91,7 +91,8 @@ "*.inc": "cpp", "future": "cpp", "any": "cpp", - "source_location": "cpp" + "source_location": "cpp", + "forward_list": "cpp" }, "editor.suggest.insertMode": "replace" } \ No newline at end of file diff --git a/Adventures in Lestoria/DamageNumber.cpp b/Adventures in Lestoria/DamageNumber.cpp index b294b11f..9d96dd04 100644 --- a/Adventures in Lestoria/DamageNumber.cpp +++ b/Adventures in Lestoria/DamageNumber.cpp @@ -54,7 +54,7 @@ DamageNumber::DamageNumber(vf2d pos,int damage,bool friendly,DamageNumberType ty } void DamageNumber::RecalculateSize(){ - float damageMultRatio=damage/game->GetPlayer()->GetBaseStat("Attack")/2.f; + float damageMultRatio=damage/game->GetPlayer()->GetStat("Attack")/2.f; riseSpd=originalRiseSpd; if(!friendly){ float newSize=std::clamp(roundf(damageMultRatio),1.0f,4.0f); diff --git a/Adventures in Lestoria/Monster.cpp b/Adventures in Lestoria/Monster.cpp index a4cafcff..dcd8b18c 100644 --- a/Adventures in Lestoria/Monster.cpp +++ b/Adventures in Lestoria/Monster.cpp @@ -400,6 +400,9 @@ void Monster::Collision(Player*p){ p->Knockback(knockbackVecNorm*knockbackStrength); #pragma endregion + + B(Attribute::COLLIDED_WITH_PLAYER)=true; + Collision(); } void Monster::Collision(Monster&m){ @@ -783,4 +786,12 @@ const float Monster::GetCollisionDamage()const{ void Monster::SetStrategyDeathFunction(std::functionfunc){ hasStrategyDeathFunction=true; strategyDeathFunc=func; +} + +const bool Monster::IsNPC()const{ + return MONSTER_DATA[name].IsNPC(); +} + +const bool MonsterData::IsNPC()const{ + return isNPC; } \ No newline at end of file diff --git a/Adventures in Lestoria/Monster.h b/Adventures in Lestoria/Monster.h index 57df3d5d..3066ac6a 100644 --- a/Adventures in Lestoria/Monster.h +++ b/Adventures in Lestoria/Monster.h @@ -71,7 +71,7 @@ struct MonsterDropData{ }; struct MonsterData{ - private: +private: std::string name; int hp; int atk; @@ -88,7 +88,8 @@ struct MonsterData{ EventName deathSound=""; EventName walkSound=""; std::vector dropData; - public: + bool isNPC=false; +public: MonsterData(); MonsterData(std::string name,int hp,int atk,const uint32_t xp,std::vectoranimations,std::vectordrops,float moveSpd=1.0f,float size=1.0f,std::string strategy="Run Towards",int collisionDmg=0); int GetHealth(); @@ -105,6 +106,7 @@ struct MonsterData{ const EventName&GetHurtSound(); const EventName&GetDeathSound(); const EventName&GetWalkSound(); + const bool IsNPC()const; std::vectorGetAnimations(){ return animations; } @@ -193,6 +195,7 @@ public: void RotateTowardsPos(const vf2d&targetPos); const float GetDamageReductionFromBuffs()const; const float GetCollisionDamage()const; + const bool IsNPC()const; private: std::string name; vf2d pos; diff --git a/Adventures in Lestoria/MonsterAttribute.h b/Adventures in Lestoria/MonsterAttribute.h index 211a8457..a761146a 100644 --- a/Adventures in Lestoria/MonsterAttribute.h +++ b/Adventures in Lestoria/MonsterAttribute.h @@ -92,4 +92,5 @@ enum class Attribute{ BULLETS_REMOVED, BEAR_STOMP_COUNT, PREVIOUS_PHASE, + COLLIDED_WITH_PLAYER, //A boolean flag that is set to true when an enemy makes contact with the player. }; \ No newline at end of file diff --git a/Adventures in Lestoria/MonsterData.cpp b/Adventures in Lestoria/MonsterData.cpp index 9944d31e..67b89041 100644 --- a/Adventures in Lestoria/MonsterData.cpp +++ b/Adventures in Lestoria/MonsterData.cpp @@ -207,7 +207,7 @@ void MonsterData::InitializeMonsterData(){ } } void MonsterData::InitializeNPCData(){ - for(auto&[key,size]:DATA["NPCs"].GetKeys()){ + for(auto&[key,dataSize]:DATA["NPCs"].GetKeys()){ std::string NPCName=key; if(MONSTER_DATA.count(key)){ ERR("WARNING! A monster with the name "<accumulatedMonsterTags; std::mapstagePlates; bool infiniteMap=false; @@ -400,7 +400,7 @@ class TMXParser{ }; XMLTag newTag=ReadNextTag(); - + if (newTag.tag=="object"&&newTag.data["type"]!="StagePlate"){ currentStagePlate=nullptr; } @@ -514,13 +514,13 @@ class TMXParser{ } } }else{ - #if _DEBUG + #ifdef _DEBUG if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Unsupported tag format! Ignoring."<<"\n"; #endif } - #if _DEBUG - if(_DEBUG_MAP_LOAD_INFO)std::cout<<"\n"<<"=============\n"; - #endif + #ifdef _DEBUG + if(_DEBUG_MAP_LOAD_INFO)std::cout<<"\n"<<"=============\n"; + #endif } TMXParser::TMXParser(std::string file){ fileName=file; diff --git a/Adventures in Lestoria/Ursule.cpp b/Adventures in Lestoria/Ursule.cpp index abf52f38..32d014b9 100644 --- a/Adventures in Lestoria/Ursule.cpp +++ b/Adventures in Lestoria/Ursule.cpp @@ -306,6 +306,7 @@ void Monster::STRATEGY::URSULE(Monster&m,float fElapsedTime,std::string strategy m.F(A::CASTING_TIMER)=ConfigFloat("Phase 3.Charge Cast Time"); m.UpdateFacingDirection(geom2d::line(m.GetPos(),game->GetPlayer()->GetPos()).vector()); m.PerformOtherAnimation(4); + m.B(A::COLLIDED_WITH_PLAYER)=false; } } if(m.F(A::CASTING_TIMER)>0.f){ @@ -350,7 +351,7 @@ void Monster::STRATEGY::URSULE(Monster&m,float fElapsedTime,std::string strategy float distToTarget=geom2d::line(m.target,m.GetPos()).length(); - if(distToTarget<=4.f||m.F(A::TARGET_TIMER)==0.f){ + if(distToTarget<=4.f||m.F(A::TARGET_TIMER)==0.f||m.B(A::COLLIDED_WITH_PLAYER)){ m.phase=3; m.RemoveBuff(SPEEDBOOST); m.RemoveBuff(FIXED_COLLISION_DMG); diff --git a/Adventures in Lestoria/assets/config/configuration.txt b/Adventures in Lestoria/assets/config/configuration.txt index 05802dd1..6b10f41e 100644 --- a/Adventures in Lestoria/assets/config/configuration.txt +++ b/Adventures in Lestoria/assets/config/configuration.txt @@ -120,7 +120,7 @@ debug_access_options = 0 debug_menu_navigation_info = 0 # Shows map loading output -debug_map_load_info = 0 +debug_map_load_info = 1 # Shows state transition information debug_transition_info = 0