diff --git a/Crawler/SlimeKing.cpp b/Crawler/SlimeKing.cpp index 74bb8ec3..9cb407a9 100644 --- a/Crawler/SlimeKing.cpp +++ b/Crawler/SlimeKing.cpp @@ -108,7 +108,7 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,int strategyNumbe if(m.GetState()==State::RECOVERY){ m.F(A::RECOVERY_TIME)=std::max(0.f,m.F(A::RECOVERY_TIME)-fElapsedTime); if(m.F(A::RECOVERY_TIME)==0){ - m.GetState()==State::NORMAL; + m.SetState(State::NORMAL); Recovered(); } return; @@ -253,6 +253,25 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,int strategyNumbe TransitionPhase(m.phase); return; } + if(m.I(A::PATTERN_REPEAT_COUNT)==0){ + StartJump(ConfigFloat("Phase3.JumpDelayTime"),game->GetPlayer()->GetPos(),ConfigFloat("Phase3.JumpRecoveryTime"),ConfigFloat("Phase3.JumpMoveSpd")); + m.I(A::PATTERN_REPEAT_COUNT)++; + }else + if(m.I(A::PATTERN_REPEAT_COUNT)<4&&m.F(A::SHOOT_TIMER)==0){ + m.F(A::SHOOT_TIMER)=ConfigFloat("Phase3.ShootRate"); + m.I(A::PATTERN_REPEAT_COUNT)++; + int bulletCount=ConfigInt("Phase3.ShootProjectileCount"); + for(int i=0;iGetPlayer()->GetPos()); + float angle=(i-(bulletCount/2))*util::degToRad(ConfigFloat("Phase3.ShootAngleSpread"))+initialAngle; + BULLET_LIST.emplace_back(std::make_unique(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6})); + } + }else + if(m.I(A::PATTERN_REPEAT_COUNT)>=4){ + m.F(A::RECOVERY_TIME)=ConfigFloat("Phase3.PhaseRecoveryTime"); + m.SetState(State::RECOVERY); + m.I(A::PATTERN_REPEAT_COUNT)=0; + } }break; case 4:{ if(m.hp<=0){ diff --git a/Crawler/Version.h b/Crawler/Version.h index 5e6b71af..0df419c9 100644 --- a/Crawler/Version.h +++ b/Crawler/Version.h @@ -2,7 +2,7 @@ #define VERSION_MAJOR 0 #define VERSION_MINOR 2 #define VERSION_PATCH 0 -#define VERSION_BUILD 1383 +#define VERSION_BUILD 1390 #define stringify(a) stringify_(a) #define stringify_(a) #a diff --git a/Crawler/assets/config/MonsterStrategies.txt b/Crawler/assets/config/MonsterStrategies.txt index bf4c1d2a..2de3c8d9 100644 --- a/Crawler/assets/config/MonsterStrategies.txt +++ b/Crawler/assets/config/MonsterStrategies.txt @@ -86,7 +86,7 @@ MonsterStrategy # How far the player gets knocked back if hit. JumpKnockbackFactor = 250 - BulletSpd = 250 + BulletSpd = 350 Phase1 { @@ -129,9 +129,13 @@ MonsterStrategy # Percentage of health to transition to Phase 3 Change = 50% MonsterSpawnOnChange = Red Slime, 2 + + PhaseRecoveryTime = 2.0 + ShootRate = 0.5 ShootProjectileCount = 3 ShootAngleSpread = 45 + JumpMoveSpd = 170 JumpDelayTime = 0.5 JumpRecoveryTime = 2.0 } diff --git a/Crawler/assets/config/Monsters.txt b/Crawler/assets/config/Monsters.txt index 1df2a201..f6f93c5d 100644 --- a/Crawler/assets/config/Monsters.txt +++ b/Crawler/assets/config/Monsters.txt @@ -139,7 +139,7 @@ Monsters Size = 800 Strategy = Slime King - StartPhase = 2 + StartPhase = 3 #Size of each animation frame SheetFrameSize = 24,24