Add new item icons. Change safe area indicator colors. Make safe area indicator color configurable. Release Build 10039.
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">
|
||||||
|
|||||||
190
Adventures in Lestoria/Chapter_3_Monsters.txt
Normal file
@ -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
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.3 KiB |
BIN
Adventures in Lestoria/assets/items/Flat Recovery Potion.png
Normal file
|
After Width: | Height: | Size: 621 B |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
BIN
Adventures in Lestoria/assets/items/Pct Recovery Potion.png
Normal file
|
After Width: | Height: | Size: 621 B |
|
After Width: | Height: | Size: 621 B |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 621 B After Width: | Height: | Size: 4.6 KiB |
BIN
Adventures in Lestoria/assets/items/Test Armor.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
Adventures in Lestoria/assets/items/Test Armor2.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
Adventures in Lestoria/assets/items/Test Armor3.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
Adventures in Lestoria/assets/items/Test Armor4.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 878 B After Width: | Height: | Size: 4.6 KiB |