Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/items/StarMaterialItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/items/StarMaterialItem.cpp')
-rw-r--r--source/game/items/StarMaterialItem.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/game/items/StarMaterialItem.cpp b/source/game/items/StarMaterialItem.cpp
index 2740eb7..42f2973 100644
--- a/source/game/items/StarMaterialItem.cpp
+++ b/source/game/items/StarMaterialItem.cpp
@@ -190,6 +190,10 @@ void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) {
steps = (unsigned)ceil(magnitude * (Constants::pi / 2));
}
+ CollisionKind collisionKind = m_collisionOverride != TileCollisionOverride::None
+ ? collisionKindFromOverride(m_collisionOverride)
+ : Root::singleton().materialDatabase()->materialCollisionKind(m_material);
+
size_t total = 0;
for (int i = 0; i != steps; ++i) {
auto placementOrigin = aimPosition + diff * (1.0f - ((float)i / steps));
@@ -202,7 +206,7 @@ void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) {
// Make sure not to make any more modifications than we have consumables.
if (modifications.size() > count())
modifications.resize(count());
- size_t failed = world()->applyTileModifications(modifications, false).size();
+ size_t failed = world()->applyTileModifications(modifications, collisionKind <= CollisionKind::Platform).size();
if (failed < modifications.size()) {
size_t placed = modifications.size() - failed;
consume(placed);