Inactive/Active ring status based on being in/out of combat.

pull/28/head
sigonasr2 1 year ago
parent eeb24934a3
commit 5b28478596
  1. 7
      Crawler/Crawler.cpp
  2. 3
      Crawler/Monster.cpp
  3. 10
      Crawler/Player.cpp
  4. 3
      Crawler/Player.h
  5. 2
      Crawler/Version.h
  6. 3
      Crawler/assets/config/Player.txt
  7. 1
      Crawler/assets/config/gfx/gfx.txt
  8. BIN
      Crawler/assets/finishring.png
  9. BIN
      Crawler/assets/finishring_green.png

@ -665,7 +665,12 @@ void Crawler::RenderWorld(float fElapsedTime){
auto RenderZone=[&](geom2d::rect<int>&zone){
game->SetDecalMode(DecalMode::ADDITIVE);
view.DrawDecal(zone.pos,GFX["finishring.png"].Decal(),vf2d(zone.size)/vf2d(GFX["finishring.png"].Sprite()->Size()),{255,255,255,uint8_t(abs(sin(game->levelTime))*255)});
Pixel ringColor={64,255,64,uint8_t(abs(sin(game->levelTime))*255)};
if(!player->IsOutOfCombat()){
game->SetDecalMode(DecalMode::NORMAL);
ringColor.r=ringColor.g=ringColor.b=64;
}
view.DrawDecal(zone.pos,GFX["finishring.png"].Decal(),vf2d(zone.size)/vf2d(GFX["finishring.png"].Sprite()->Size()),ringColor);
game->SetDecalMode(DecalMode::NORMAL);
};

@ -71,7 +71,7 @@ vf2d&Monster::GetPos(){
}
int Monster::GetHealth(){
return hp;
}
}
int Monster::GetAttack(){
float mod_atk=atk;
for(Buff&b:GetBuffs(ATTACK_UP)){
@ -277,6 +277,7 @@ bool Monster::Hurt(int damage,bool onUpperLevel,float z){
if(game->InBossEncounter()){
game->StartBossEncounter();
}
game->GetPlayer()->ResetLastCombatTime();
float mod_dmg=damage;
for(Buff&b:GetBuffs(BuffType::DAMAGE_REDUCTION)){
mod_dmg-=damage*b.intensity;

@ -222,6 +222,7 @@ void Player::Update(float fElapsedTime){
notificationDisplay.second=std::max(0.f,notificationDisplay.second-fElapsedTime);
lastHitTimer=std::max(0.f,lastHitTimer-fElapsedTime);
blockTimer=std::max(0.f,blockTimer-fElapsedTime);
lastCombatTime=lastCombatTime+fElapsedTime;
manaTickTimer-=fElapsedTime;
if(castInfo.castTimer>0){
castInfo.castTimer-=fElapsedTime;
@ -553,6 +554,7 @@ bool Player::Hurt(int damage,bool onUpperLevel,float z){
if(hp<=0||HasIframes()||OnUpperLevel()!=onUpperLevel||abs(GetZ()-z)>1) return false;
if(GetState()==State::BLOCK)damage*=1-"Warrior.Right Click Ability.DamageReduction"_F;
float mod_dmg=damage;
lastCombatTime=0;
for(Buff&b:GetBuffs(BuffType::DAMAGE_REDUCTION)){
mod_dmg-=damage*b.intensity;
}
@ -749,4 +751,12 @@ void Player::ConsumeMana(int amt){
void Player::SetSizeMult(float size){
this->size=size;
}
void Player::ResetLastCombatTime(){
lastCombatTime=0;
}
bool Player::IsOutOfCombat(){
return lastCombatTime>="Player.Out of Combat Time"_F;
}

@ -91,6 +91,7 @@ private:
std::shared_ptr<DamageNumber>damageNumberPtr;
void Initialize();
float iframe_time=0;
float lastCombatTime=0;
protected:
const float ATTACK_COOLDOWN="Warrior.Auto Attack.Cooldown"_F;
const float MAGIC_ATTACK_COOLDOWN="Wizard.Auto Attack.Cooldown"_F;
@ -189,6 +190,8 @@ public:
Key GetLastReleasedMovementKey();
float GetSwordSwingTimer();
bool OnUpperLevel();
void ResetLastCombatTime();
bool IsOutOfCombat();
//Triggers when the player has moved.
void Moved();
virtual ~Player()=default;

@ -33,7 +33,7 @@ SUCH DAMAGE.
#define VERSION_MAJOR 0
#define VERSION_MINOR 2
#define VERSION_PATCH 1
#define VERSION_BUILD 2903
#define VERSION_BUILD 2920
#define stringify(a) stringify_(a)
#define stringify_(a) #a

@ -12,6 +12,9 @@ Player
# How many of any one type of item we can bring to the battlefield max per slot.
Item Loadout Limit = 10
# How many seconds must pass before the player is considered out of combat (meaning they can exit a level)
Out of Combat Time = 5.0
# Each attack will have _N,_E,_S,_W appended to them once read in-game.
PLAYER_ANIMATION[0] = WARRIOR_WALK
PLAYER_ANIMATION[1] = WARRIOR_IDLE

@ -39,6 +39,7 @@ Images
GFX_SkillOverlayIcon = skill_overlay_icon.png
GFX_SkillOverlayIconOverlay = skill_overlay_icon_overlay.png
GFX_FinishRing = finishring.png
GFX_FinishRingGreen = finishring_green.png
# Ability Icons
GFX_Warrior_BattleCry_Icon = Ability Icons/battlecry.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Loading…
Cancel
Save