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.
This commit is contained in:
parent
efc976758b
commit
ee79ef225b
@ -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++){
|
for(int i=0;i<ConfigInt("Death Ring Bullet Count");i++){
|
||||||
const float bulletAngle=((2*PI)/ConfigInt("Death Ring Bullet Count"))*i+bulletAngRandomOffset;
|
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;
|
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;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -746,6 +746,18 @@ void Player::Update(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
#pragma endregion
|
#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
|
#pragma region Handle knockup timers
|
||||||
if(knockUpTimer>0.f){
|
if(knockUpTimer>0.f){
|
||||||
knockUpTimer=std::max(0.f,knockUpTimer-fElapsedTime);
|
knockUpTimer=std::max(0.f,knockUpTimer-fElapsedTime);
|
||||||
|
@ -366,6 +366,7 @@ private:
|
|||||||
bool renderedSpriteUsesAdditiveBlending{false};
|
bool renderedSpriteUsesAdditiveBlending{false};
|
||||||
float deadlyDashAdditiveBlendingToggleTimer{};
|
float deadlyDashAdditiveBlendingToggleTimer{};
|
||||||
std::unordered_set<std::string>myClass{};
|
std::unordered_set<std::string>myClass{};
|
||||||
|
float daggerThrowWaitTimer{INFINITY};
|
||||||
protected:
|
protected:
|
||||||
const float ATTACK_COOLDOWN="Warrior.Auto Attack.Cooldown"_F;
|
const float ATTACK_COOLDOWN="Warrior.Auto Attack.Cooldown"_F;
|
||||||
const float MAGIC_ATTACK_COOLDOWN="Wizard.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;
|
m.target=targetWalkPos;
|
||||||
RUN_TOWARDS(m,fElapsedTime,"Run Towards");
|
RUN_TOWARDS(m,fElapsedTime,"Run Towards");
|
||||||
m.PerformAnimation("STONE PILLAR CAST");
|
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;
|
}break;
|
||||||
case SHOOT_STONE_CAST:{
|
case SHOOT_STONE_CAST:{
|
||||||
|
@ -128,11 +128,8 @@ void Thief::InitializeClassAbilities(){
|
|||||||
p->ghostPositions.push_back(p->GetPos()+vf2d{0,-p->GetZ()});
|
p->ghostPositions.push_back(p->GetPos()+vf2d{0,-p->GetZ()});
|
||||||
p->ghostFrameTimer=p->RETREAT_GHOST_FRAME_DELAY;
|
p->ghostFrameTimer=p->RETREAT_GHOST_FRAME_DELAY;
|
||||||
p->ghostRemoveTimer=p->RETREAT_GHOST_FRAMES*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);
|
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->SetAnimationBasedOnTargetingDirection("IDLE",angleToCursor);
|
||||||
p->SetState(State::RETREAT);
|
p->SetState(State::RETREAT);
|
||||||
SoundEffect::PlaySFX("Thief.Ability 1.Sound"_S,SoundEffect::CENTERED);
|
SoundEffect::PlaySFX("Thief.Ability 1.Sound"_S,SoundEffect::CENTERED);
|
||||||
|
@ -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 10258
|
#define VERSION_BUILD 10261
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
@ -1522,7 +1522,7 @@
|
|||||||
<property name="spawner" type="object" value="23"/>
|
<property name="spawner" type="object" value="23"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</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>
|
<properties>
|
||||||
<property name="Upper?" type="bool" value="false"/>
|
<property name="Upper?" type="bool" value="false"/>
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -752,6 +752,7 @@ Monsters
|
|||||||
Size = 147%
|
Size = 147%
|
||||||
|
|
||||||
XP = 71
|
XP = 71
|
||||||
|
Collision Radius = 5
|
||||||
|
|
||||||
Strategy = Stone Elemental
|
Strategy = Stone Elemental
|
||||||
|
|
||||||
@ -1001,6 +1002,8 @@ Monsters
|
|||||||
#Size of each animation frame
|
#Size of each animation frame
|
||||||
SheetFrameSize = 48,48
|
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
|
# 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
|
4-Way Spritesheet = True
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ Thief
|
|||||||
# The distance the retreat moves the Thief.
|
# The distance the retreat moves the Thief.
|
||||||
RetreatDistance = 200
|
RetreatDistance = 200
|
||||||
Sound = Ranger Retreat
|
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.
|
#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
|
Cooldown Bar Color 1 = 64, 0, 0, 192
|
||||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user