添加草丛处理

This commit is contained in:
aozhiwei 2019-07-18 17:43:52 +08:00
parent bdb8afab0d
commit ef44eaf024
6 changed files with 17 additions and 5 deletions

View File

@ -126,7 +126,11 @@ void AndroidAI::DoAttack()
}
if (owner->updated_times % 10 == 0) {
Human* enemy = owner->room->FindEnemy((Human*)owner);
if (enemy && !enemy->HasBuffEffect(BET_Invincible) && !enemy->HasBuffEffect(BET_Hide)) {
if (enemy &&
!enemy->HasBuffEffect(BET_Invincible) &&
!enemy->HasBuffEffect(BET_Hide) &&
!enemy->HasBuffEffect(BET_InGrass)
) {
Human* sender = (Human*)owner;
a8::Vec2 shot_dir = enemy->pos - sender->pos;
if (std::abs(shot_dir.x) > FLT_EPSILON ||

View File

@ -25,7 +25,7 @@ Android::~Android()
void Android::Initialize()
{
Human::Initialize();
SetSkinInfo(15001);
SetSkinInfo(MetaMgr::Instance()->RandTank());
GiveEquip();
skin_meta = MetaMgr::Instance()->GetTank(SkinId());
if (skin_meta) {

View File

@ -189,7 +189,7 @@ enum BuffEffectType_e
BET_Begin = 0,
BET_ChgAttr = 1, //改变属性
BET_Vertigo = 2, //眩晕
BET_Unuse = 3, //
BET_InGrass = 3, //在草丛
BET_LastBurn = 4, //持续灼烧
BET_Invincible = 5, //无敌
BET_Hide = 6, //隐身

View File

@ -1542,8 +1542,8 @@ void Human::ProcBuffEffect(Buff* buff)
void Human::OnAttack()
{
if (a8::HasBitFlag(status, HS_InGrass)) {
if (HasBuffEffect(BET_Hide)) {
RemoveBuffByEffectId(BET_Hide);
if (HasBuffEffect(BET_InGrass)) {
RemoveBuffByEffectId(BET_InGrass);
}
if (grass_hide_timer_list_) {
room->xtimer.ModifyTimer(grass_hide_timer_list_,

View File

@ -64,6 +64,7 @@ public:
std::map<std::string, std::tuple<int, int>> maptpl_size_hash;
std::map<int, MetaData::Dress*> dress_hash;
std::map<int, MetaData::Tank*> tank_hash;
std::vector<int> tankid_list;
std::map<int, MetaData::Driver*> driver_hash;
std::map<int, MetaData::Skill*> skill_hash;
std::map<int, MetaData::Buff*> buff_hash;
@ -206,6 +207,7 @@ private:
item.i = &meta;
item.Init();
tank_hash[item.i->id()] = &item;
tankid_list.push_back(meta.id());
}
for (auto& meta : driver_meta_list) {
@ -486,6 +488,11 @@ MetaData::Tank* MetaMgr::GetTank(int tank_id)
return itr != loader_->tank_hash.end() ? itr->second : nullptr;
}
int MetaMgr::RandTank()
{
return !loader_->tankid_list.empty() ? loader_->tankid_list[rand() % loader_->tankid_list.size()] : 0;
}
float MetaMgr::GetRankRewardParam(int rank)
{
auto itr = loader_->rankreward_hash.find(rank);

View File

@ -38,6 +38,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
MetaData::Dress* GetDress(int dress_id);
MetaData::Driver* GetDriver(int driver_id);
MetaData::Tank* GetTank(int tank_id);
int RandTank();
float GetRankRewardParam(int rank);
float GetKillRewardParam(int kill_num);
std::vector<MetaData::Robot>* GetRobotList();