diff --git a/source/pickups/pickup.cpp b/source/pickups/pickup.cpp index 1b74ccaf2..3cb8d9684 100644 --- a/source/pickups/pickup.cpp +++ b/source/pickups/pickup.cpp @@ -183,6 +183,7 @@ void CBasePickup::collidedWith(CThing *_thisThing) switch(_thisThing->getThingType()) { case TYPE_PLAYER: + case TYPE_NPC: collect((CPlayer*)_thisThing); CSoundMediator::playSfx(sfxToPlayWhenCollected()); break; diff --git a/source/thing/thing.cpp b/source/thing/thing.cpp index ee67e6ad2..ce67bd124 100644 --- a/source/thing/thing.cpp +++ b/source/thing/thing.cpp @@ -488,6 +488,22 @@ DVECTOR const &CamPos=CLevel::getCameraPos(); thing1=thing1->m_nextCollisionThing; } + // Friend -> Pickup collision + thing1=s_CollisionLists[CThing::TYPE_PICKUP]; + while(thing1) + { + thing2=s_CollisionLists[CThing::TYPE_NPC]; + while(thing2) + { + if(thing1->checkCollisionAgainst(thing2, _frames)) + { + thing1->collidedWith(thing2); + } + thing2=thing2->m_nextCollisionThing; + } + thing1=thing1->m_nextCollisionThing; + } + // Player -> Enemy collision thing1=s_CollisionLists[CThing::TYPE_ENEMY]; while(thing1)