|
|
|
@ -65,6 +65,7 @@ void Monster::STRATEGY::URSULE(Monster&m,float fElapsedTime,std::string strategy |
|
|
|
|
m.PerformOtherAnimation(1); |
|
|
|
|
m.AddBuff(BARRIER_DAMAGE_REDUCTION,INFINITE,ConfigFloat("Phase 2.Barrier Damage Reduction")/100.f); |
|
|
|
|
m.I(A::PHASE_REPEAT_COUNT)=ConfigInt("Phase 2.Wisp Pattern Spawn Count"); |
|
|
|
|
SoundEffect::PlaySFX("Ursule Phase Transition",SoundEffect::CENTERED); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
if(m.GetRemainingHPPct()<=ConfigFloat("Phase 2.Change")/100.f){ |
|
|
|
@ -135,8 +136,11 @@ void Monster::STRATEGY::URSULE(Monster&m,float fElapsedTime,std::string strategy |
|
|
|
|
int rowCount=Config(std::format("Wisp Pattern {}",wispPattern)).GetKeys().size(); |
|
|
|
|
for(float x=0;x<mapWidth;x+=wispSize.x){ |
|
|
|
|
for(int y=0;y<rowCount;y++){ |
|
|
|
|
float ySpawn=ConfigInt("Phase 2.Wisp Pattern Spawn Y")+y*wispSize.y; |
|
|
|
|
BULLET_LIST.push_back(std::make_unique<Wisp>(vf2d{x,ySpawn},vf2d{0,ConfigFloat("Phase 2.Wisp Speed")},wispSize.x/2,m.GetAttack(),m.OnUpperLevel(),false,ConfigPixel("Phase 2.Wisp Color"))); |
|
|
|
|
std::string_view row=ConfigString(std::format("Wisp Pattern {}.Row[{}]",wispPattern,y)); |
|
|
|
|
if(row[int(x/wispSize.x)%row.length()]!='.'){ |
|
|
|
|
float ySpawn=ConfigInt("Phase 2.Wisp Pattern Spawn Y")+y*wispSize.y; |
|
|
|
|
BULLET_LIST.push_back(std::make_unique<Wisp>(vf2d{x,ySpawn},vf2d{0,ConfigFloat("Phase 2.Wisp Speed")},wispSize.x/2,m.GetAttack(),m.OnUpperLevel(),false,ConfigPixel("Phase 2.Wisp Color"))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
m.I(A::PHASE_REPEAT_COUNT)--; |
|
|
|
|