diff --git a/assets/mods/basegame/blocks/176_emsv.tga b/assets/mods/basegame/blocks/176_emsv.tga index 492ffa27d..fe02eb355 100644 --- a/assets/mods/basegame/blocks/176_emsv.tga +++ b/assets/mods/basegame/blocks/176_emsv.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b5770cbb5dfcaeb3bf27a53bce604e4ba220f4616315b7242cd865c83a85d52 +oid sha256:3e387b096d767e3d08d322ac730333ab989492c240a464596bf654cd7a2d51f8 size 4114 diff --git a/src/net/torvald/terrarum/modulebasegame/ExplosionManager.kt b/src/net/torvald/terrarum/modulebasegame/ExplosionManager.kt index ec7ca60c3..345e48af2 100644 --- a/src/net/torvald/terrarum/modulebasegame/ExplosionManager.kt +++ b/src/net/torvald/terrarum/modulebasegame/ExplosionManager.kt @@ -2,6 +2,7 @@ package net.torvald.terrarum.modulebasegame import net.torvald.terrarum.BlockCodex import net.torvald.terrarum.ItemCodex +import net.torvald.terrarum.OreCodex import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.ceilToInt import net.torvald.terrarum.gameworld.BlockLayerI16 @@ -239,18 +240,16 @@ object ExplosionManager { val lx = wx - (tx - CALC_RADIUS - 1) val ly = wy - (ty - CALC_RADIUS - 1) world.inflictTerrainDamage(wx, wy, mapBoomPow[lx, ly].blastToDmg().toDouble()).let { (tile, ore) -> - if (ore != null) { - // drop ore - if (Math.random() < dropProbOre) { - PickaxeCore.dropItem(ore, wx, wy) + if (ore != null || tile != null) { + // drop item + val prob = if (ore != null) dropProbOre else dropProbNonOre + if (Math.random() < prob) { + val drop = if (ore != null) OreCodex[ore].item else BlockCodex[tile].drop + PickaxeCore.dropItem(drop, wx, wy) } } - else if (tile != null) { - // drop tile - if (Math.random() < dropProbNonOre) { - PickaxeCore.dropItem(tile, wx, wy) - } + if (tile != null) { PickaxeCore.makeDust(tile, wx, wy, 8 + (5 * Math.random()).toInt()) // drop random disc diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt index b7fe21b37..2ebb82761 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/AxeCore.kt @@ -105,10 +105,7 @@ object AxeCore { // tile busted if (tileBroken != null) { val drop = BlockCodex[tileBroken].drop - - if (drop.isNotBlank()) { - PickaxeCore.dropItem(drop, x, y) - } + PickaxeCore.dropItem(drop, x, y) PickaxeCore.makeDust(tile, x, y, 9) PickaxeCore.makeNoise(actor, tile) diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt index 362954449..f68d7ca85 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/PickaxeGeneric.kt @@ -95,19 +95,19 @@ object PickaxeCore { x, y, Calculate.pickaxePower(actor, item?.material) * swingDmgToFrameDmg ).let { (tileBroken, oreBroken) -> - + // drop ore if (oreBroken != null) { if (Math.random() < dropProbability) { val drop = OreCodex[oreBroken].item - if (drop.isNotBlank()) dropItem(drop, x, y) + dropItem(drop, x, y) } } // drop tile else if (tileBroken != null) { if (Math.random() < dropProbability) { val drop = BlockCodex[tileBroken].drop - if (drop.isNotBlank()) dropItem(drop, x, y) + dropItem(drop, x, y) } // temperary: drop random disc @@ -139,6 +139,7 @@ object PickaxeCore { } fun dropItem(item: ItemID, tx: Int, ty: Int) { + if (item.isBlank()) return INGAME.queueActorAddition( DroppedItem( item, diff --git a/src/net/torvald/terrarum/modulebasegame/gameitems/SledgehammerCore.kt b/src/net/torvald/terrarum/modulebasegame/gameitems/SledgehammerCore.kt index 4592da64a..09a4bc684 100644 --- a/src/net/torvald/terrarum/modulebasegame/gameitems/SledgehammerCore.kt +++ b/src/net/torvald/terrarum/modulebasegame/gameitems/SledgehammerCore.kt @@ -100,9 +100,8 @@ object SledgehammerCore { if (tileBroken != null) { if (Math.random() < dropProbability) { val drop = BlockCodex[tileBroken].drop - if (drop.isNotBlank()) { - PickaxeCore.dropItem("wall@$drop", x, y) - } + PickaxeCore.dropItem("wall@$drop", x, y) + PickaxeCore.makeDust(wall, x, y, 9, WALL_OVERLAY_COLOUR) PickaxeCore.makeNoise(actor, wall) }