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
|
||||
/Adventures in Lestoria Tests/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_2_Boss.txt" />
|
||||
<Text Include="Chapter_2_Monsters.txt" />
|
||||
<Text Include="Chapter_3_Monsters.txt" />
|
||||
<Text Include="characters.txt" />
|
||||
<Text Include="Crawler_2_Bonus_Boss.txt" />
|
||||
<Text Include="Crawler_System_Overview.txt" />
|
||||
|
||||
@ -1298,6 +1298,9 @@
|
||||
<Text Include="debug.log">
|
||||
<Filter>Documentation</Filter>
|
||||
</Text>
|
||||
<Text Include="Chapter_3_Monsters.txt">
|
||||
<Filter>Documentation\Mechanics</Filter>
|
||||
</Text>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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,
|
||||
STONE_TOSS_COUNT,
|
||||
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))};
|
||||
#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){
|
||||
StageMaskPolygon&polygon{std::any_cast<StageMaskPolygon&>(data)};
|
||||
Pixel newCol{PixelLerp(VERY_DARK_BLUE,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);
|
||||
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(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.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.F(A::HEALTH_PCT_PHASE)=1.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;
|
||||
|
||||
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_MINOR 2
|
||||
#define VERSION_PATCH 3
|
||||
#define VERSION_BUILD 10027
|
||||
#define VERSION_BUILD 10039
|
||||
|
||||
#define stringify(a) stringify_(a)
|
||||
#define stringify_(a) #a
|
||||
|
||||
@ -953,7 +953,7 @@ MonsterStrategy
|
||||
}
|
||||
Shockwave
|
||||
{
|
||||
Start HP Threshold = 90%
|
||||
Start HP Threshold = 100%
|
||||
# How much HP Pct separates each shockwave attack.
|
||||
Repeating Threshold = 10%
|
||||
|
||||
@ -963,6 +963,8 @@ MonsterStrategy
|
||||
Knockback Amount = 450
|
||||
Shockwave Screen Shake Time = 0.75s
|
||||
|
||||
Danger Area Color = 64 red, 0 green, 0 blue, 255 alpha
|
||||
|
||||
Ring Expand Speed = 5.0/s
|
||||
Shockwave Ring Lifetime = 2.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 |