添加终结者宝箱保护
This commit is contained in:
parent
c26b2c05f3
commit
e02df63539
@ -83,7 +83,9 @@ void Bullet::OnHit(std::set<Entity*>& objects)
|
|||||||
case ET_Obstacle:
|
case ET_Obstacle:
|
||||||
{
|
{
|
||||||
Obstacle* obstacle = (Obstacle*)target;
|
Obstacle* obstacle = (Obstacle*)target;
|
||||||
if (!obstacle->IsDead(room) && obstacle->Attackable()) {
|
if (!obstacle->IsDead(room) &&
|
||||||
|
obstacle->Attackable() &&
|
||||||
|
!obstacle->IsTerminatorAirDropBox(room)) {
|
||||||
float dmg = GetAtk() * (1 + player->GetBuffAttrRate(kHAT_Atk)) +
|
float dmg = GetAtk() * (1 + player->GetBuffAttrRate(kHAT_Atk)) +
|
||||||
player->GetBuffAttrAbs(kHAT_Atk);
|
player->GetBuffAttrAbs(kHAT_Atk);
|
||||||
float def = 0;
|
float def = 0;
|
||||||
|
@ -526,15 +526,11 @@ bool Human::IsCollisionInMapService()
|
|||||||
if (!collider->owner->dead && TestCollision((ColliderComponent*)collider)) {
|
if (!collider->owner->dead && TestCollision((ColliderComponent*)collider)) {
|
||||||
#endif
|
#endif
|
||||||
if (last_collision_door_ != collider->owner) {
|
if (last_collision_door_ != collider->owner) {
|
||||||
bool is_terminator_airdrop_box = false;
|
|
||||||
if (obstacle->IsEntitySubType(EST_RoomObstacle)) {
|
|
||||||
is_terminator_airdrop_box = ((RoomObstacle*)obstacle)->is_terminator_airdrop_box;
|
|
||||||
}
|
|
||||||
if (!obstacle->IsDead(room) &&
|
if (!obstacle->IsDead(room) &&
|
||||||
obstacle->Attackable() &&
|
obstacle->Attackable() &&
|
||||||
obstacle->meta->i->drop() != 0 &&
|
obstacle->meta->i->drop() != 0 &&
|
||||||
room->GetGasData().gas_mode != GasInactive &&
|
room->GetGasData().gas_mode != GasInactive &&
|
||||||
(!is_terminator_airdrop_box || GetRace() == kHumanRace)
|
(!obstacle->IsTerminatorAirDropBox(room) || GetRace() == kHumanRace)
|
||||||
) {
|
) {
|
||||||
obstacle->Die(room);
|
obstacle->Die(room);
|
||||||
if (obstacle->IsDead(room)) {
|
if (obstacle->IsDead(room)) {
|
||||||
@ -547,7 +543,7 @@ bool Human::IsCollisionInMapService()
|
|||||||
DropItems(obstacle);
|
DropItems(obstacle);
|
||||||
}
|
}
|
||||||
obstacle->BroadcastFullState(room);
|
obstacle->BroadcastFullState(room);
|
||||||
if (is_terminator_airdrop_box && GetRace() == kHumanRace) {
|
if (obstacle->IsTerminatorAirDropBox(room) && GetRace() == kHumanRace) {
|
||||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID);
|
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(TERMINATOR_BUFF_ID);
|
||||||
if (buff_meta) {
|
if (buff_meta) {
|
||||||
AddBuff(this, buff_meta, 1);
|
AddBuff(this, buff_meta, 1);
|
||||||
|
@ -301,7 +301,9 @@ void Obstacle::Explosion(Bullet* bullet)
|
|||||||
case ET_Obstacle:
|
case ET_Obstacle:
|
||||||
{
|
{
|
||||||
Obstacle* obstacle = (Obstacle*)target;
|
Obstacle* obstacle = (Obstacle*)target;
|
||||||
if (!obstacle->IsDead(room) && obstacle->Attackable()) {
|
if (!obstacle->IsDead(room) &&
|
||||||
|
obstacle->Attackable() &&
|
||||||
|
!obstacle->IsTerminatorAirDropBox(room)) {
|
||||||
float dmg = meta->i->damage();
|
float dmg = meta->i->damage();
|
||||||
float def = 0;
|
float def = 0;
|
||||||
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
|
float finaly_dmg = dmg * (1 - def/MetaMgr::Instance()->K);
|
||||||
|
@ -36,6 +36,7 @@ class Obstacle : public Entity
|
|||||||
virtual bool IsDead(Room* room) override;
|
virtual bool IsDead(Room* room) override;
|
||||||
virtual long long GetDeadFrameNo(Room* room) override;
|
virtual long long GetDeadFrameNo(Room* room) override;
|
||||||
virtual void OnPreCollision(Room* room) override;
|
virtual void OnPreCollision(Room* room) override;
|
||||||
|
virtual bool IsTerminatorAirDropBox(Room* room) { return false; }
|
||||||
void Explosion(Bullet* bullet);
|
void Explosion(Bullet* bullet);
|
||||||
void SetDoorInfo(Building* building, int door_id_x);
|
void SetDoorInfo(Building* building, int door_id_x);
|
||||||
bool IsDoor();
|
bool IsDoor();
|
||||||
|
@ -13,6 +13,7 @@ class RoomObstacle : public Obstacle
|
|||||||
virtual ~RoomObstacle() override;
|
virtual ~RoomObstacle() override;
|
||||||
virtual void Initialize() override;
|
virtual void Initialize() override;
|
||||||
virtual void RecalcSelfCollider() override;
|
virtual void RecalcSelfCollider() override;
|
||||||
|
virtual bool IsTerminatorAirDropBox(Room* room) override { return is_terminator_airdrop_box; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RoomObstacle();
|
RoomObstacle();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user