This commit is contained in:
aozhiwei 2020-07-28 17:46:03 +08:00
parent 1c8c2745bf
commit dfe106e953
4 changed files with 28 additions and 2 deletions

View File

@ -552,6 +552,15 @@ bool Human::IsCollisionInMapService()
DropItems(obstacle); DropItems(obstacle);
} }
obstacle->BroadcastFullState(room); obstacle->BroadcastFullState(room);
if (obstacle->IsEntitySubType(EST_RoomObstacle)) {
bool is_terminator_airdrop_box = ((RoomObstacle*)obstacle)->is_terminator_airdrop_box;
if (is_terminator_airdrop_box && GetRace() == kHumanRace) {
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID);
if (buff_meta) {
AddBuff(this, buff_meta, 1);
}
}
}
} else { } else {
Global::last_collider = collider; Global::last_collider = collider;
return true; return true;
@ -3042,6 +3051,21 @@ void Human::ProcBuffEffect(Human* caster, Buff* buff)
int i = 0; int i = 0;
} }
break; break;
case kBET_Terminator:
{
if (GetRace() == kHumanRace &&
MetaMgr::Instance()->terminator_meta &&
meta != MetaMgr::Instance()->terminator_meta) {
WinExp(this, MetaMgr::Instance()->terminator_meta->i->exp() + 1);
room->NotifySysPiao("终结者出现", a8::MkRgb(255, 0, 0), 3);
}
}
break;
case kBET_PlayShotAni:
{
}
break;
default: default:
{ {
} }

View File

@ -345,6 +345,7 @@ public:
if (!MetaMgr::Instance()->android_meta) { if (!MetaMgr::Instance()->android_meta) {
abort(); abort();
} }
MetaMgr::Instance()->terminator_meta = MetaMgr::Instance()->GetPlayer(5005);
} }
#endif #endif
Check(); Check();

View File

@ -131,6 +131,7 @@ class MetaMgr : public a8::Singleton<MetaMgr>
int map_cell_width = 64 * 8; int map_cell_width = 64 * 8;
MetaData::Player* human_meta = nullptr; MetaData::Player* human_meta = nullptr;
MetaData::Player* android_meta = nullptr; MetaData::Player* android_meta = nullptr;
MetaData::Player* terminator_meta = nullptr;
private: private:
MetaDataLoader* loader_ = nullptr; MetaDataLoader* loader_ = nullptr;

View File

@ -1415,8 +1415,8 @@ void Room::AirDrop(int appear_time, int box_id, int airdrop_id)
{ {
Room* room = (Room*)param.sender.GetUserData(); Room* room = (Room*)param.sender.GetUserData();
if (!room->IsGameOver()) { if (!room->IsGameOver()) {
int airdrop_id = a8::Low32(param.param1.GetInt()); int airdrop_id = a8::Low32(param.param1.GetInt64());
int box_id = a8::High32(param.param1.GetInt()); int box_id = a8::High32(param.param1.GetInt64());
RoomObstacle* obstacle = room->CreateObstacle RoomObstacle* obstacle = room->CreateObstacle
( (
box_id, box_id,