#include "Monster.h" #include "MonsterStrategyHelpers.h" #include "DEFINES.h" #include "Crawler.h" #include "utils.h" typedef Attribute A; INCLUDE_game INCLUDE_BULLET_LIST void Monster::STRATEGY::TURRET(Monster&m,float fElapsedTime,int strategyNumber){ m.attackCooldownTimer=std::max(0.f,m.attackCooldownTimer-fElapsedTime); if(m.F(A::SHOOT_ANIMATION_TIME)>0){ m.F(A::SHOOT_ANIMATION_TIME)=std::max(0.f,m.F(A::SHOOT_ANIMATION_TIME)-fElapsedTime); if(m.F(A::SHOOT_ANIMATION_TIME)==0){ m.PerformIdleAnimation(); } } if(m.queueShotTimer>0){ m.queueShotTimer-=fElapsedTime; if(m.queueShotTimer<0){ m.queueShotTimer=0; BULLET_LIST.push_back(std::make_unique(Bullet(m.pos + vf2d{ 0,-4 }, geom2d::line(m.pos + vf2d{ 0,-4 }, game->GetPlayer()->GetPos()).vector().norm() * 24 * ConfigInt("BulletSpeed")/100.f, 12.f*ConfigInt("BulletSize")/100.f, m.GetAttack(),m.upperLevel,false, { uint8_t(ConfigIntArr("BulletColor",0)),uint8_t(ConfigIntArr("BulletColor",1)),uint8_t(ConfigIntArr("BulletColor",2)),uint8_t(ConfigIntArr("BulletColor",3) )},{ConfigInt("BulletSize")/100.f*8,ConfigInt("BulletSize")/100.f*8}))); } } auto dist=geom2d::line(m.GetPos(),game->GetPlayer()->GetPos()).length(); if(dist