1
This commit is contained in:
parent
8ce7854986
commit
3fe0802f45
@ -706,6 +706,9 @@ Human* AndroidNewAI::GetTarget()
|
|||||||
if (a8::HasBitFlag(hum->status, HS_Disable)) {
|
if (a8::HasBitFlag(hum->status, HS_Disable)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (hum->HasBuffEffect(kBET_InGrass)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (myself->team_id == hum->team_id) {
|
if (myself->team_id == hum->team_id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -405,3 +405,7 @@ const int HUNLUAN_BUFFID = 6001;
|
|||||||
|
|
||||||
const int DRIVER_BUFFID = 6003;
|
const int DRIVER_BUFFID = 6003;
|
||||||
const int PASSENGER_BUFFID = 6004;
|
const int PASSENGER_BUFFID = 6004;
|
||||||
|
|
||||||
|
const int GRASS_HIDE_BUFF_ID = 6005;
|
||||||
|
const int WATER_BUFF_ID = 6006;
|
||||||
|
const int ICE_BUFF_ID = 6007;
|
||||||
|
@ -4335,30 +4335,169 @@ void Human::CheckSpecObject()
|
|||||||
|
|
||||||
void Human::OnEnterGrass()
|
void Human::OnEnterGrass()
|
||||||
{
|
{
|
||||||
|
if (leave_grass_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_grass_timer_);
|
||||||
|
leave_grass_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (hide_grass_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_grass_timer_);
|
||||||
|
hide_grass_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
hide_grass_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->grass_invisible_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(GRASS_HIDE_BUFF_ID);
|
||||||
|
if (buff_meta) {
|
||||||
|
hum->AddBuff(hum, buff_meta, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->hide_grass_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::OnLeaveGrass()
|
void Human::OnLeaveGrass()
|
||||||
{
|
{
|
||||||
|
if (hide_grass_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_grass_timer_);
|
||||||
|
hide_grass_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (leave_grass_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_grass_timer_);
|
||||||
|
}
|
||||||
|
leave_grass_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->grass_show_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->leave_grass_timer_ = nullptr;
|
||||||
|
hum->RemoveBuffById(GRASS_HIDE_BUFF_ID);
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->leave_grass_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::OnEnterWater()
|
void Human::OnEnterWater()
|
||||||
{
|
{
|
||||||
|
if (leave_water_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_water_timer_);
|
||||||
|
leave_water_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (hide_water_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_water_timer_);
|
||||||
|
hide_water_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
hide_water_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->water_invisible_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(WATER_BUFF_ID);
|
||||||
|
if (buff_meta) {
|
||||||
|
hum->AddBuff(hum, buff_meta, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->hide_water_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::OnLeaveWater()
|
void Human::OnLeaveWater()
|
||||||
{
|
{
|
||||||
|
if (hide_water_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_water_timer_);
|
||||||
|
hide_water_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (leave_water_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_water_timer_);
|
||||||
|
}
|
||||||
|
leave_water_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->water_show_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->RemoveBuffById(WATER_BUFF_ID);
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->leave_water_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::OnEnterIce()
|
void Human::OnEnterIce()
|
||||||
{
|
{
|
||||||
|
if (leave_ice_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_ice_timer_);
|
||||||
|
leave_ice_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (hide_ice_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_ice_timer_);
|
||||||
|
hide_ice_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
hide_ice_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->ice_invisible_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(ICE_BUFF_ID);
|
||||||
|
if (buff_meta) {
|
||||||
|
hum->AddBuff(hum, buff_meta, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->hide_ice_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void Human::OnLeaveIce()
|
void Human::OnLeaveIce()
|
||||||
{
|
{
|
||||||
|
if (hide_ice_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(hide_ice_timer_);
|
||||||
|
hide_ice_timer_ = nullptr;
|
||||||
|
}
|
||||||
|
if (leave_ice_timer_) {
|
||||||
|
room->xtimer.DeleteTimer(leave_ice_timer_);
|
||||||
|
}
|
||||||
|
leave_ice_timer_ = room->xtimer.AddDeadLineTimerAndAttach
|
||||||
|
(MetaMgr::Instance()->ice_show_time * SERVER_FRAME_RATE,
|
||||||
|
a8::XParams()
|
||||||
|
.SetSender(this),
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->RemoveBuffById(ICE_BUFF_ID);
|
||||||
|
},
|
||||||
|
&xtimer_attacher.timer_list_,
|
||||||
|
[] (const a8::XParams& param)
|
||||||
|
{
|
||||||
|
Human* hum = (Human*)param.sender.GetUserData();
|
||||||
|
hum->leave_ice_timer_ = nullptr;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
@ -436,6 +436,13 @@ private:
|
|||||||
Entity* last_collision_door_ = nullptr;
|
Entity* last_collision_door_ = nullptr;
|
||||||
long long jump_frameno_ = 0;
|
long long jump_frameno_ = 0;
|
||||||
|
|
||||||
|
xtimer_list* leave_grass_timer_ = nullptr;
|
||||||
|
xtimer_list* hide_grass_timer_ = nullptr;
|
||||||
|
xtimer_list* leave_water_timer_ = nullptr;
|
||||||
|
xtimer_list* hide_water_timer_ = nullptr;
|
||||||
|
xtimer_list* leave_ice_timer_ = nullptr;
|
||||||
|
xtimer_list* hide_ice_timer_ = nullptr;
|
||||||
|
|
||||||
friend class FrameMaker;
|
friend class FrameMaker;
|
||||||
friend class FrameEvent;
|
friend class FrameEvent;
|
||||||
};
|
};
|
||||||
|
@ -124,6 +124,16 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
|||||||
int level1room_robot_autodie_distance = 0;
|
int level1room_robot_autodie_distance = 0;
|
||||||
std::string level1room_born_point;
|
std::string level1room_born_point;
|
||||||
|
|
||||||
|
float grass_invisible_time = 0.5;
|
||||||
|
float grass_show_time = 0.5f;
|
||||||
|
float grass_invisible_time2 = 2.0f;
|
||||||
|
float water_invisible_time = 0.5;
|
||||||
|
float water_show_time = 0.5f;
|
||||||
|
float water_invisible_time2 = 2.0f;
|
||||||
|
float ice_invisible_time = 0.5;
|
||||||
|
float ice_show_time = 0.5f;
|
||||||
|
float ice_invisible_time2 = 2.0f;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
int refresh_robot_min_num = 0;
|
int refresh_robot_min_num = 0;
|
||||||
int refresh_robot_max_num = 0;
|
int refresh_robot_max_num = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user