The open source repository for the action RPG game in development by Sig Productions titled 'Adventures in Lestoria'!
https://forums.lestoria.net
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.5 KiB
38 lines
1.5 KiB
#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>(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<ConfigInt("Range")/100.f*24){
|
|
if(m.attackCooldownTimer==0){
|
|
m.attackCooldownTimer=ConfigFloat("ShootingSpeed");
|
|
m.queueShotTimer=std::min(m.attackCooldownTimer-0.001,0.3);
|
|
m.F(A::SHOOT_ANIMATION_TIME)=ConfigIntArr("ShootAnimation",0)*ConfigFloatArr("ShootAnimation",1);
|
|
m.PerformShootAnimation();
|
|
}
|
|
}
|
|
} |