添加草丛处理

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) { if (owner->updated_times % 10 == 0) {
Human* enemy = owner->room->FindEnemy((Human*)owner); 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; Human* sender = (Human*)owner;
a8::Vec2 shot_dir = enemy->pos - sender->pos; a8::Vec2 shot_dir = enemy->pos - sender->pos;
if (std::abs(shot_dir.x) > FLT_EPSILON || if (std::abs(shot_dir.x) > FLT_EPSILON ||

View File

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

View File

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

View File

@ -1542,8 +1542,8 @@ void Human::ProcBuffEffect(Buff* buff)
void Human::OnAttack() void Human::OnAttack()
{ {
if (a8::HasBitFlag(status, HS_InGrass)) { if (a8::HasBitFlag(status, HS_InGrass)) {
if (HasBuffEffect(BET_Hide)) { if (HasBuffEffect(BET_InGrass)) {
RemoveBuffByEffectId(BET_Hide); RemoveBuffByEffectId(BET_InGrass);
} }
if (grass_hide_timer_list_) { if (grass_hide_timer_list_) {
room->xtimer.ModifyTimer(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<std::string, std::tuple<int, int>> maptpl_size_hash;
std::map<int, MetaData::Dress*> dress_hash; std::map<int, MetaData::Dress*> dress_hash;
std::map<int, MetaData::Tank*> tank_hash; std::map<int, MetaData::Tank*> tank_hash;
std::vector<int> tankid_list;
std::map<int, MetaData::Driver*> driver_hash; std::map<int, MetaData::Driver*> driver_hash;
std::map<int, MetaData::Skill*> skill_hash; std::map<int, MetaData::Skill*> skill_hash;
std::map<int, MetaData::Buff*> buff_hash; std::map<int, MetaData::Buff*> buff_hash;
@ -206,6 +207,7 @@ private:
item.i = &meta; item.i = &meta;
item.Init(); item.Init();
tank_hash[item.i->id()] = &item; tank_hash[item.i->id()] = &item;
tankid_list.push_back(meta.id());
} }
for (auto& meta : driver_meta_list) { 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; 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) float MetaMgr::GetRankRewardParam(int rank)
{ {
auto itr = loader_->rankreward_hash.find(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::Dress* GetDress(int dress_id);
MetaData::Driver* GetDriver(int driver_id); MetaData::Driver* GetDriver(int driver_id);
MetaData::Tank* GetTank(int tank_id); MetaData::Tank* GetTank(int tank_id);
int RandTank();
float GetRankRewardParam(int rank); float GetRankRewardParam(int rank);
float GetKillRewardParam(int kill_num); float GetKillRewardParam(int kill_num);
std::vector<MetaData::Robot>* GetRobotList(); std::vector<MetaData::Robot>* GetRobotList();