Add new item icons. Change safe area indicator colors. Make safe area indicator color configurable. Release Build 10039.

mac-build
sigonasr2 5 months ago
parent f1b2aa59f9
commit 7086a8807b
  1. 1
      .gitignore
  2. 1
      Adventures in Lestoria/Adventures in Lestoria.vcxproj
  3. 3
      Adventures in Lestoria/Adventures in Lestoria.vcxproj.filters
  4. 190
      Adventures in Lestoria/Chapter_3_Monsters.txt
  5. 1
      Adventures in Lestoria/MonsterAttribute.h
  6. 9
      Adventures in Lestoria/StoneGolem.cpp
  7. 2
      Adventures in Lestoria/Version.h
  8. 4
      Adventures in Lestoria/assets/config/MonsterStrategies.txt
  9. BIN
      Adventures in Lestoria/assets/gamepack.pak
  10. BIN
      Adventures in Lestoria/assets/items/Bird's Treasure.png
  11. BIN
      Adventures in Lestoria/assets/items/Blackpowder.png
  12. BIN
      Adventures in Lestoria/assets/items/Boar Meat.png
  13. BIN
      Adventures in Lestoria/assets/items/Broken Bow.png
  14. BIN
      Adventures in Lestoria/assets/items/Broken Dagger.png
  15. BIN
      Adventures in Lestoria/assets/items/Flat Recovery Potion.png
  16. BIN
      Adventures in Lestoria/assets/items/Hawk Feather.png
  17. BIN
      Adventures in Lestoria/assets/items/Iron Ore.png
  18. BIN
      Adventures in Lestoria/assets/items/Pct Recovery Potion.png
  19. BIN
      Adventures in Lestoria/assets/items/Stat Up Everything Potion.png
  20. BIN
      Adventures in Lestoria/assets/items/Stone Heart.png
  21. BIN
      Adventures in Lestoria/assets/items/Stone Ring.png
  22. BIN
      Adventures in Lestoria/assets/items/Stone.png
  23. BIN
      Adventures in Lestoria/assets/items/Test Armor.png
  24. BIN
      Adventures in Lestoria/assets/items/Test Armor2.png
  25. BIN
      Adventures in Lestoria/assets/items/Test Armor3.png
  26. BIN
      Adventures in Lestoria/assets/items/Test Armor4.png
  27. BIN
      Adventures in Lestoria/assets/items/Yellow Gemstone.png
  28. BIN
      x64/Release/Adventures in Lestoria.exe

1
.gitignore vendored

@ -424,3 +424,4 @@ desktop.ini
/x64/Unit Testing/assets /x64/Unit Testing/assets
/Adventures in Lestoria Tests/x64/Unit Testing /Adventures in Lestoria Tests/x64/Unit Testing
/x64/Unit Testing /x64/Unit Testing
/Adventures in Lestoria/assets/2.10

@ -1126,6 +1126,7 @@
<Text Include="Chapter_1_Creatures_Part_2.txt" /> <Text Include="Chapter_1_Creatures_Part_2.txt" />
<Text Include="Chapter_2_Boss.txt" /> <Text Include="Chapter_2_Boss.txt" />
<Text Include="Chapter_2_Monsters.txt" /> <Text Include="Chapter_2_Monsters.txt" />
<Text Include="Chapter_3_Monsters.txt" />
<Text Include="characters.txt" /> <Text Include="characters.txt" />
<Text Include="Crawler_2_Bonus_Boss.txt" /> <Text Include="Crawler_2_Bonus_Boss.txt" />
<Text Include="Crawler_System_Overview.txt" /> <Text Include="Crawler_System_Overview.txt" />

@ -1298,6 +1298,9 @@
<Text Include="debug.log"> <Text Include="debug.log">
<Filter>Documentation</Filter> <Filter>Documentation</Filter>
</Text> </Text>
<Text Include="Chapter_3_Monsters.txt">
<Filter>Documentation\Mechanics</Filter>
</Text>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="assets\heart.ico"> <Image Include="assets\heart.ico">

@ -0,0 +1,190 @@
Pirate
-Wields a Saber and wears an eye patch, pirate hat, the typical Pirate stereotype.
Animations (5):
Idle
Walk
Slash
Stab
Dead
Pirate Marauder
-Equipped with 2 Swords.
Animations (5):
Idle
Walk
Jump Attack (Plunge)
Whirlwind Attack (Spinning around frantically)
Dead
Pirate Buccaneer
-Equipped with a musket.
Animations (5):
Idle
Walk
Aim
Firing
Dead
Pirate Captain
-Holds a Saber in one hand and a Hand Gun in the other.
Animations (7):
Idle
Walk
Slash using Saber
Stab using Saber
Raise + Shoot Handgun
Drink a bottle of Rum.
Dead
Parrot
======
(Does not require a death animation)
Animations (3):
Idle
Fly
Charge
Crab
====
Animations (4):
Idle
Sidestep / Crab Walk
Lifts up pincers and charges
Dead
Sandworm
========
Starts underground (can see silhouette)
Animations (6):
Idle (Head above ground)
Dive underground
Swim in sand
Rise up from ground
Shoot/Spit Sand
Dead
Seagull
=======
Animations (3):
Idle
Flying
Dead
=================
Pirate
Size: 100%
Hp: 350
Exp: 33
Attack: 31
Move-Spd: 110%
Equipped with a Saber.
Same behaviour like Chapter 2 Dagger Goblins.
Pirate Marauder
Size: 100%
Hp: 500
Exp: 39
Attack: 43
Move-Spd: 125%
Equipped with 2 Swords.
Base behaviour like Pirate.
every 8 seconds chance to do an ability:
25% & insight of players vision & further then 400 range away: Jump attack on the player 150 radius impact area
25% & within 700 range of player & further then 400 range away: whirlwind attack, spinning to the players position +60% Move-spd during this attack
50% continue base behaviour.
Pirate Buccaneer
Size: 100%
Hp: 430
Exp: 37
Attack: 45
Move-Spd: 100%
Equipped with a Muskeet.
Aim (1.0 Sec) - Lock position (0.3 sec) - Shoot - reload (2 sec) - move if to far away. (trying to stay in 1000 Range)
Pirate Captain (+Parrot)
Size: 120%
Hp: 1050
Exp: 59
Attack: 55
Move-Spd: 95%
1 hand Saber. 1 Hand Gun
Also Base Pirate behaviour.
every 6 seconds if range <400 60% chance to stand still for 0.5 seconds - shoot his gun and continue base movement.
Once the Captain dropps below 300 health he pulls out a bottle of Rum and starts drinking. takes 2 seconds and recovers 150 Health. Only triggers once.
When the Pirate Enters the Screen the Parrot is still sitting on its shoulder and starts flying 2 seconds after the enemy is visible.
The parrot has the same stats and behaviour like chapter 2 Hawks.
The Parrot doesnt die, instead it gets stunned for 5 seconds on death and then recovers.
When the Captain dies the Parrot flies away and despawns out of screen.
Crap
Size: 60%
Hp: 600
Exp: 34
Attack: 23
Move-Spd: 120%
Side step circles around the player in a 400 range radius.
every second running in a circle 20% chance to stop for 0.5 seconds, turn his side towards the player and charges with a pincer attack and runs a bit further to get to 400 range on the other side of the player.
starts circling the player again.
Giant Crap
Size: 180%
Hp: 1800
Exp: 61
Attack: 49
Move-Spd: 90%
Charges player sideways. charges 600 range further then players position.
After charge 1 second no moving. then starts next charge building up movespeed over first 2 seconds.
Sandworm
Size: 90%
Hp: 400
Exp: 24
Attack: 33
Move-Spd: 200% // 0% (stationary on air)
The sandworm spawns underground.
The sandworm ist completly invisible when its underground.
It moves to a random point within a 400 range around the player. (can be exactly under the player aswell)
once it reaches it position there is an 300 radisu animation and the player gets sucked in with a 30% movespd effect (
Examples:
if playing doesnt move it moves with 30% speed into the middle,
if moving to the center normal speed +30%
if moving out normal speed -30%
Effect lasts for 3 seconds. If player is in the middle player receives collision damage.
Worm behaves like Chapter 1 Flower for up to 6 Attacks or if range to player is higher then 1500.
Then it burrows down again and repeats.
Seagul
Size: 80%
Hp: 40
Exp: 6
Attack: 0
Move-Spd: 120%
When Player gets within 1000 Range Seagul starts flying away. takes 2 seconds to leave the ground. (time needs to be extended if 2 seconds arent enough for a warrior to get in warcry range)
Despawns once it reaches 4000 Range.
Bosses
Giant Octopus
Pirate Captain Ghost

@ -142,4 +142,5 @@ enum class Attribute{
CHASE_TIMER, CHASE_TIMER,
STONE_TOSS_COUNT, STONE_TOSS_COUNT,
STONE_TOSS_TIMER, STONE_TOSS_TIMER,
SHOCKWAVE_COLOR,
}; };

@ -105,13 +105,13 @@ void Monster::STRATEGY::STONE_GOLEM(Monster&m,float fElapsedTime,std::string str
const vf2d extendedSmallestCornerPoint{geom2d::line<float>{m.GetPos(),smallestCorner.second}.rpoint((100000.f))}; const vf2d extendedSmallestCornerPoint{geom2d::line<float>{m.GetPos(),smallestCorner.second}.rpoint((100000.f))};
#pragma endregion #pragma endregion
m.VEC(A::STAGE_POLYGONS).emplace_back(StageMaskPolygon{{largestCorner.second,extendedLargestCornerPoint,extendedSmallestCornerPoint,smallestCorner.second},"safeIndicatorGradient.png",angleToMiddle,PixelLerp(VERY_DARK_BLUE,BLACK,sin(geom2d::pi*game->GetRunTime()*2))}); m.VEC(A::STAGE_POLYGONS).emplace_back(StageMaskPolygon{{largestCorner.second,extendedLargestCornerPoint,extendedSmallestCornerPoint,smallestCorner.second},"safeIndicatorGradient.png",angleToMiddle,PixelLerp(Pixel{uint32_t(m.I(A::SHOCKWAVE_COLOR))},BLACK,sin(geom2d::pi*game->GetRunTime()*2))});
}); });
m.SetStrategyDrawFunction([&](AiL*game,Monster&m,const std::string&strategyName){ m.SetStrategyDrawFunction([](AiL*game,Monster&m,const std::string&strategyName){
std::for_each(m.VEC(A::STAGE_POLYGONS).begin(),m.VEC(A::STAGE_POLYGONS).end(),[&](std::any&data){ std::for_each(m.VEC(A::STAGE_POLYGONS).begin(),m.VEC(A::STAGE_POLYGONS).end(),[&](std::any&data){
StageMaskPolygon&polygon{std::any_cast<StageMaskPolygon&>(data)}; StageMaskPolygon&polygon{std::any_cast<StageMaskPolygon&>(data)};
Pixel newCol{PixelLerp(VERY_DARK_BLUE,BLACK,sin(geom2d::pi*game->GetRunTime()*2)/2.f+0.5f)}; Pixel newCol{PixelLerp(Pixel{uint32_t(m.I(A::SHOCKWAVE_COLOR))},BLACK,sin(geom2d::pi*game->GetRunTime()*2)/2.f+0.5f)};
newCol.a=util::lerp(255.f,0.f,sin(geom2d::pi*game->GetRunTime()*2)/2.f+0.5f); newCol.a=util::lerp(Pixel{uint32_t(m.I(A::SHOCKWAVE_COLOR))}.a,0.f,sin(geom2d::pi*game->GetRunTime()*2)/2.f+0.5f);
polygon.SetBlendColor(newCol); polygon.SetBlendColor(newCol);
polygon.Draw(); polygon.Draw();
}); });
@ -163,6 +163,7 @@ void Monster::STRATEGY::STONE_GOLEM(Monster&m,float fElapsedTime,std::string str
m.I(A::PATTERN_REPEAT_COUNT)=ConfigInt("Beginning Phase.Repeat Count"); m.I(A::PATTERN_REPEAT_COUNT)=ConfigInt("Beginning Phase.Repeat Count");
m.F(A::HEALTH_PCT_PHASE)=1.f; m.F(A::HEALTH_PCT_PHASE)=1.f;
m.F(A::NEXT_HEALTH_PCT_PILLAR_PHASE)=ConfigFloat("Pillar Respawns.Start HP Threshold")/100.f; m.F(A::NEXT_HEALTH_PCT_PILLAR_PHASE)=ConfigFloat("Pillar Respawns.Start HP Threshold")/100.f;
m.I(A::SHOCKWAVE_COLOR)=ConfigPixel("Shockwave.Danger Area Color").n;
m.phase=SPAWN_PILLAR_PREPARE; m.phase=SPAWN_PILLAR_PREPARE;
if(ConfigIntArr("Pillar Respawns.Respawn Count",0)<ConfigIntArr("Pillar Respawns.Respawn Count",1))ERR(std::format("WARNING! {} Stone golem pillars were declared damaged when only {} will spawn. Please make sure the number is the same or equal to the total spawned pillars! (\"Pillar Respawns.Respawn Count\" strategy property)",ConfigIntArr("Pillar Respawns.Respawn Count",1),ConfigIntArr("Pillar Respawns.Respawn Count",0))); if(ConfigIntArr("Pillar Respawns.Respawn Count",0)<ConfigIntArr("Pillar Respawns.Respawn Count",1))ERR(std::format("WARNING! {} Stone golem pillars were declared damaged when only {} will spawn. Please make sure the number is the same or equal to the total spawned pillars! (\"Pillar Respawns.Respawn Count\" strategy property)",ConfigIntArr("Pillar Respawns.Respawn Count",1),ConfigIntArr("Pillar Respawns.Respawn Count",0)));

@ -39,7 +39,7 @@ All rights reserved.
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 2 #define VERSION_MINOR 2
#define VERSION_PATCH 3 #define VERSION_PATCH 3
#define VERSION_BUILD 10027 #define VERSION_BUILD 10039
#define stringify(a) stringify_(a) #define stringify(a) stringify_(a)
#define stringify_(a) #a #define stringify_(a) #a

@ -953,7 +953,7 @@ MonsterStrategy
} }
Shockwave Shockwave
{ {
Start HP Threshold = 90% Start HP Threshold = 100%
# How much HP Pct separates each shockwave attack. # How much HP Pct separates each shockwave attack.
Repeating Threshold = 10% Repeating Threshold = 10%
@ -963,6 +963,8 @@ MonsterStrategy
Knockback Amount = 450 Knockback Amount = 450
Shockwave Screen Shake Time = 0.75s Shockwave Screen Shake Time = 0.75s
Danger Area Color = 64 red, 0 green, 0 blue, 255 alpha
Ring Expand Speed = 5.0/s Ring Expand Speed = 5.0/s
Shockwave Ring Lifetime = 2.5s Shockwave Ring Lifetime = 2.5s
Shockwave Fadeout Time = 0.5s Shockwave Fadeout Time = 0.5s

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

After

Width:  |  Height:  |  Size: 4.6 KiB

Loading…
Cancel
Save