diff --git a/source/game/healthman.cpp b/source/game/healthman.cpp index 92dc50d7c..814c24c9f 100644 --- a/source/game/healthman.cpp +++ b/source/game/healthman.cpp @@ -156,8 +156,10 @@ sItem *item=ItemList; void CHealthManager::think(int frames) { sItem *item=ItemList; +int mapHeight; CLayerCollision *ColLayer=CGameScene::getCollision(); + mapHeight=GameScene.GetLevel().getMapSize().vy*16; for (int i=0; iVel.vy>0) { int DistY = ColLayer->getHeightFromGround( item->ScrPos.vx, item->ScrPos.vy, 16 ); - if (DistY<=0) + int newBlock=ColLayer->getCollisionBlock(item->ScrPos.vx,item->ScrPos.vy)&COLLISION_TYPE_MASK; + if (DistY<=0&&newBlock!=COLLISION_TYPE_FLAG_DEATH_FALL ) { if (item->Vel.vy<0) { @@ -186,6 +189,11 @@ sItem *item=ItemList; item->Vel.vx>>=1; // item->Pos.vy-=DistY<<(HealthManShift-1); } + + if(item->ScrPos.vy>mapHeight) + { + item->Life=0; + } } int XOfs;