mirror of
				https://github.com/luanti-org/minetest_game.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	TNT: Fix multiple explosions erasing drops
Any second explosion near a first TNT explosion will punch all entities found nearby, including item drops. This causes the item pickup code to think the item was picked up, but by a `nil` player, thus removing the item. We query for the immortal entity group, and if the item is in the immortal group, do not punch the item.
This commit is contained in:
		@@ -160,10 +160,12 @@ local function entity_physics(pos, radius)
 | 
			
		||||
			local obj_vel = obj:getvelocity()
 | 
			
		||||
			obj:setvelocity(calc_velocity(pos, obj_pos,
 | 
			
		||||
					obj_vel, radius * 10))
 | 
			
		||||
			obj:punch(obj, 1.0, {
 | 
			
		||||
				full_punch_interval = 1.0,
 | 
			
		||||
				damage_groups = {fleshy = damage},
 | 
			
		||||
			}, nil)
 | 
			
		||||
			if not obj:get_armor_groups().immortal then
 | 
			
		||||
				obj:punch(obj, 1.0, {
 | 
			
		||||
					full_punch_interval = 1.0,
 | 
			
		||||
					damage_groups = {fleshy = damage},
 | 
			
		||||
				}, nil)
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user