Add 0.1s delay on Hidden Dagger's throw for Thief. Allows the player to potentially jump through a target and being able to hit them with it. Fix Stone Elementals facing the incorrect direction while casting stone pillars. Move 2-8 end ring to more sensible area (in front of Chapter 2 boss arena). Reduce Chapter 2 Boss' and Stone Elemental's collision radius to better match the sprite. Add iframe time when hit by a breaking stone pillar's bullet ring to prevent getting obliterated by standing in the center of the bullet ring. Release Build 10261.

mac-build
sigonasr2 4 months ago
parent ecfd7941b7
commit f16d10a095
  1. 1
      Adventures in Lestoria/BreakingPillar.cpp
  2. 12
      Adventures in Lestoria/Player.cpp
  3. 1
      Adventures in Lestoria/Player.h
  4. 5
      Adventures in Lestoria/Stone_Elemental.cpp
  5. 5
      Adventures in Lestoria/Thief.cpp
  6. 2
      Adventures in Lestoria/Version.h
  7. 2
      Adventures in Lestoria/assets/Campaigns/2_8.tmx
  8. 3
      Adventures in Lestoria/assets/config/Monsters.txt
  9. 1
      Adventures in Lestoria/assets/config/classes/Thief.txt
  10. BIN
      x64/Release/Adventures in Lestoria.exe

@ -69,6 +69,7 @@ void Monster::STRATEGY::BREAKING_PILLAR(Monster&m,float fElapsedTime,std::string
for(int i=0;i<ConfigInt("Death Ring Bullet Count");i++){
const float bulletAngle=((2*PI)/ConfigInt("Death Ring Bullet Count"))*i+bulletAngRandomOffset;
CreateBullet(Bullet)(m.GetPos(),vf2d{ConfigFloat("Death Ring Bullet Speed"),bulletAngle}.cart(),ConfigFloat("Death Ring Bullet Size"),ConfigInt("Death Ring Bullet Damage"),m.OnUpperLevel(),false,ConfigPixel("Death Ring Bullet Color"),vf2d{ConfigFloat("Death Ring Bullet Size")/3,ConfigFloat("Death Ring Bullet Size")/3})EndBullet;
BULLET_LIST.back()->SetIframeTimeOnHit(0.15f);
}
return false;
});

@ -746,6 +746,18 @@ void Player::Update(float fElapsedTime){
}
#pragma endregion
#pragma region Thief
if(daggerThrowWaitTimer-fElapsedTime<=0.f){
daggerThrowWaitTimer=INFINITY;
float angleToCursor=atan2(GetWorldAimingLocation(Player::USE_WALK_DIR).y-GetPos().y,GetWorldAimingLocation(Player::USE_WALK_DIR).x-GetPos().x);
const float daggerLifetime{"Thief.Ability 1.Dagger Range"_F/"Thief.Ability 1.Dagger Speed"_F};
CreateBullet(Bullet)(GetPos(),vf2d{"Thief.Ability 1.Dagger Speed"_F,angleToCursor}.cart(),"Thief.Ability 1.Dagger Radius"_F,GetAttack()*"Thief.Ability 1.Damage"_I,"dagger.png",OnUpperLevel(),false,daggerLifetime,true,true,WHITE,{1.f,1.f},0.f,"Dagger Hit")EndBullet;
}
daggerThrowWaitTimer-=fElapsedTime;
#pragma endregion
#pragma region Handle knockup timers
if(knockUpTimer>0.f){
knockUpTimer=std::max(0.f,knockUpTimer-fElapsedTime);

@ -366,6 +366,7 @@ private:
bool renderedSpriteUsesAdditiveBlending{false};
float deadlyDashAdditiveBlendingToggleTimer{};
std::unordered_set<std::string>myClass{};
float daggerThrowWaitTimer{INFINITY};
protected:
const float ATTACK_COOLDOWN="Warrior.Auto Attack.Cooldown"_F;
const float MAGIC_ATTACK_COOLDOWN="Wizard.Auto Attack.Cooldown"_F;

@ -142,7 +142,10 @@ void Monster::STRATEGY::STONE_ELEMENTAL(Monster&m,float fElapsedTime,std::string
m.target=targetWalkPos;
RUN_TOWARDS(m,fElapsedTime,"Run Towards");
m.PerformAnimation("STONE PILLAR CAST");
m.UpdateFacingDirection(game->GetPlayer()->GetPos());
m.UpdateFacingDirection(targetWalkPos);
}else{
m.PerformAnimation("STONE PILLAR CAST");
m.UpdateFacingDirection(m.V(A::LOCKON_POS));
}
}break;
case SHOOT_STONE_CAST:{

@ -128,11 +128,8 @@ void Thief::InitializeClassAbilities(){
p->ghostPositions.push_back(p->GetPos()+vf2d{0,-p->GetZ()});
p->ghostFrameTimer=p->RETREAT_GHOST_FRAME_DELAY;
p->ghostRemoveTimer=p->RETREAT_GHOST_FRAMES*p->RETREAT_GHOST_FRAME_DELAY;
p->daggerThrowWaitTimer="Thief.Ability 1.Dagger Throw Delay"_F;
float angleToCursor=atan2(p->GetWorldAimingLocation(Player::USE_WALK_DIR).y-p->GetPos().y,p->GetWorldAimingLocation(Player::USE_WALK_DIR).x-p->GetPos().x);
const float daggerLifetime{"Thief.Ability 1.Dagger Range"_F/"Thief.Ability 1.Dagger Speed"_F};
CreateBullet(Bullet)(p->GetPos(),vf2d{"Thief.Ability 1.Dagger Speed"_F,angleToCursor}.cart(),"Thief.Ability 1.Dagger Radius"_F,p->GetAttack()*"Thief.Ability 1.Damage"_I,"dagger.png",p->OnUpperLevel(),false,daggerLifetime,true,true,WHITE,{1.f,1.f},0.f,"Dagger Hit")EndBullet;
p->SetAnimationBasedOnTargetingDirection("IDLE",angleToCursor);
p->SetState(State::RETREAT);
SoundEffect::PlaySFX("Thief.Ability 1.Sound"_S,SoundEffect::CENTERED);

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

@ -1522,7 +1522,7 @@
<property name="spawner" type="object" value="23"/>
</properties>
</object>
<object id="141" name="End Zone" type="EndZone" x="3120" y="378" width="120" height="120">
<object id="141" name="End Zone" type="EndZone" x="2982" y="1014" width="288" height="246">
<properties>
<property name="Upper?" type="bool" value="false"/>
</properties>

@ -752,6 +752,7 @@ Monsters
Size = 147%
XP = 71
Collision Radius = 5
Strategy = Stone Elemental
@ -1001,6 +1002,8 @@ Monsters
#Size of each animation frame
SheetFrameSize = 48,48
Collision Radius = 5
# Setting this to true means every four rows indicates one animation, the ordering of the directions is: NORTH, EAST, SOUTH, WEST
4-Way Spritesheet = True

@ -76,6 +76,7 @@ Thief
# The distance the retreat moves the Thief.
RetreatDistance = 200
Sound = Ranger Retreat
Dagger Throw Delay = 0.1s
#RGB Values. Color 1 is the circle at full cooldown, Color 2 is the color at empty cooldown.
Cooldown Bar Color 1 = 64, 0, 0, 192

Loading…
Cancel
Save