TNT Spawns Pickups
Fixes FS#397.
This commit is contained in:
parent
cb9ccb36ac
commit
442c428f5b
@ -12,6 +12,7 @@
|
|||||||
#include "BlockArea.h"
|
#include "BlockArea.h"
|
||||||
#include "PluginManager.h"
|
#include "PluginManager.h"
|
||||||
#include "Entities/TNTEntity.h"
|
#include "Entities/TNTEntity.h"
|
||||||
|
#include "Blocks/BlockHandler.h"
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <cstdlib> // abs
|
#include <cstdlib> // abs
|
||||||
@ -1608,7 +1609,9 @@ void cChunkMap::DoExplosionAt(double a_ExplosionSize, double a_BlockX, double a_
|
|||||||
// Too far away
|
// Too far away
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
switch (area.GetBlockType(bx + x, by + y, bz + z))
|
|
||||||
|
BLOCKTYPE Block = area.GetBlockType(bx + x, by + y, bz + z);
|
||||||
|
switch (Block)
|
||||||
{
|
{
|
||||||
case E_BLOCK_TNT:
|
case E_BLOCK_TNT:
|
||||||
{
|
{
|
||||||
@ -1644,6 +1647,17 @@ void cChunkMap::DoExplosionAt(double a_ExplosionSize, double a_BlockX, double a_
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
if (Block != E_BLOCK_AIR) // No pickups for air
|
||||||
|
{
|
||||||
|
if (m_World->GetTickRandomNumber(10) == 5)
|
||||||
|
{
|
||||||
|
cItems Drops;
|
||||||
|
cBlockHandler * Handler = BlockHandler(Block);
|
||||||
|
|
||||||
|
Handler->ConvertToPickups(Drops, area.GetBlockMeta(bx + x, by + y, bz + z)); // Saves us from a massive switch
|
||||||
|
m_World->SpawnItemPickups(Drops, bx + x, by + y, bz + z);
|
||||||
|
}
|
||||||
|
}
|
||||||
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_AIR);
|
area.SetBlockType(bx + x, by + y, bz + z, E_BLOCK_AIR);
|
||||||
a_BlocksAffected.push_back(Vector3i(bx + x, by + y, bz + z));
|
a_BlocksAffected.push_back(Vector3i(bx + x, by + y, bz + z));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user