1
This commit is contained in:
parent
8ce7854986
commit
3fe0802f45
@ -706,6 +706,9 @@ Human* AndroidNewAI::GetTarget()
|
||||
if (a8::HasBitFlag(hum->status, HS_Disable)) {
|
||||
return;
|
||||
}
|
||||
if (hum->HasBuffEffect(kBET_InGrass)) {
|
||||
return;
|
||||
}
|
||||
if (myself->team_id == hum->team_id) {
|
||||
return;
|
||||
}
|
||||
|
@ -405,3 +405,7 @@ const int HUNLUAN_BUFFID = 6001;
|
||||
|
||||
const int DRIVER_BUFFID = 6003;
|
||||
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()
|
||||
{
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
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()
|
||||
{
|
||||
|
||||
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;
|
||||
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 FrameEvent;
|
||||
};
|
||||
|
@ -124,6 +124,16 @@ class MetaMgr : public a8::Singleton<MetaMgr>
|
||||
int level1room_robot_autodie_distance = 0;
|
||||
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
|
||||
int refresh_robot_min_num = 0;
|
||||
int refresh_robot_max_num = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user