From 477cf804af2f79ef5cfb2ce16d16725d1b9d6d6a Mon Sep 17 00:00:00 2001 From: Timothy Stiles Date: Sun, 7 Feb 2021 10:02:53 +1100 Subject: [PATCH] terraformer no longer overrides items --- js/tiletypes.js | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/js/tiletypes.js b/js/tiletypes.js index 1c21b38..a15e8b0 100644 --- a/js/tiletypes.js +++ b/js/tiletypes.js @@ -90,6 +90,7 @@ function _define_gate(key) { } function activate_terraformer(me, level, dx, dy) { + //decide if we're copying from our own tile (if we have an item) or the tile behind us (otherwise) let did_something = false; let item_only = false; let old_cell = level.cell(me.cell.x, me.cell.y); @@ -106,6 +107,7 @@ function activate_terraformer(me, level, dx, dy) { let new_cell = level.cell( (me.cell.x + dx + level.width) % level.width, (me.cell.y + dy + level.height) % level.height); + //copy terrain from the tile behind us, if we're looking at that tile if (!item_only) { let old_terrain = old_cell.get_terrain(); @@ -116,19 +118,12 @@ function activate_terraformer(me, level, dx, dy) { did_something = true; } } + //copy item from (the tile we chose) but only if the space in front of us is free let old_item = old_cell.get_item(); if (old_item != null) { let new_item = new_cell.get_item(); - if (new_item != null) - { - if (old_item.type.name != new_item.type.name) - { - level.transmute_tile(new_item, old_item.type.name) - did_something = true; - } - } - else + if (new_item == null) { let type = TILE_TYPES[old_item.type.name]; let tile = new old_item.constructor(type); @@ -141,14 +136,6 @@ function activate_terraformer(me, level, dx, dy) { { let new_item_mod = new_cell.get_item_mod(); if (new_item_mod != null) - { - if (old_item_mod.type.name != new_item_mod.type.name) - { - level.transmute_tile(new_item_mod, old_item_mod.type.name) - did_something = true; - } - } - else { let type = TILE_TYPES[old_item_mod.type.name]; let tile = new old_item_mod.constructor(type); @@ -156,6 +143,7 @@ function activate_terraformer(me, level, dx, dy) { did_something = true; } } + //animation if (did_something) { level.spawn_animation(new_cell, 'transmogrify_flash');