diff --git a/baystation12.dme b/baystation12.dme index 77596a3129..e7a6e23203 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -271,6 +271,9 @@ #include "code\game\gamemodes\cult\ritual.dm" #include "code\game\gamemodes\cult\runes.dm" #include "code\game\gamemodes\cult\talisman.dm" +#include "code\game\gamemodes\cult\cultify\mob.dm" +#include "code\game\gamemodes\cult\cultify\obj.dm" +#include "code\game\gamemodes\cult\cultify\turf.dm" #include "code\game\gamemodes\events\black_hole.dm" #include "code\game\gamemodes\events\clang.dm" #include "code\game\gamemodes\events\dust.dm" diff --git a/code/defines/obj.dm b/code/defines/obj.dm index 2647354c96..e105d67a5b 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -319,6 +319,3 @@ var/global/ManifestJSON /obj/effect/spawner name = "object spawner" - -/obj/proc/cultify() - qdel(src) diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index 3968418e02..8fd4f3cd80 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -29,6 +29,7 @@ var/datum/antagonist/cultist/cult var/list/startwords = list("blood","join","self","hell") var/list/allwords = list("travel","self","see","hell","blood","join","tech","destroy", "other", "hide") var/list/sacrificed = list() + var/list/harvested = list() /datum/antagonist/cultist/New() ..() diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index f2f5f96de7..a17c030b11 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -8,6 +8,8 @@ throwforce = 10 attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") +/obj/item/weapon/melee/cultblade/cultify() + return /obj/item/weapon/melee/cultblade/attack(mob/living/target as mob, mob/living/carbon/human/user as mob) if(iscultist(user)) @@ -40,15 +42,22 @@ min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE siemens_coefficient = 0 +/obj/item/clothing/head/culthood/cultify() + return + +/obj/item/clothing/head/culthood/magus + name = "magus helm" + icon_state = "magus" + item_state = "magus" + desc = "A helm worn by the followers of Nar-Sie." + flags_inv = HIDEFACE + flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR + body_parts_covered = HEAD|FACE|EYES /obj/item/clothing/head/culthood/alt icon_state = "cult_hoodalt" item_state = "cult_hoodalt" -/obj/item/clothing/suit/cultrobes/alt - icon_state = "cultrobesalt" - item_state = "cultrobesalt" - /obj/item/clothing/suit/cultrobes name = "cult robes" desc = "A set of armored robes worn by the followers of Nar-Sie" @@ -60,27 +69,20 @@ flags_inv = HIDEJUMPSUIT siemens_coefficient = 0 -/obj/item/clothing/head/magus - name = "magus helm" - icon_state = "magus" - item_state = "magus" - desc = "A helm worn by the followers of Nar-Sie." - flags_inv = HIDEFACE - flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR - body_parts_covered = HEAD|FACE|EYES - armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0 +/obj/item/clothing/suit/cultrobes/cultify() + return -/obj/item/clothing/suit/magusred +/obj/item/clothing/suit/cultrobes/alt + icon_state = "cultrobesalt" + item_state = "cultrobesalt" + +/obj/item/clothing/suit/cultrobes/magusred name = "magus robes" desc = "A set of armored robes worn by the followers of Nar-Sie" icon_state = "magusred" item_state = "magusred" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/weapon/book/tome,/obj/item/weapon/melee/cultblade) - armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - siemens_coefficient = 0 /obj/item/clothing/head/helmet/space/cult name = "cult helmet" @@ -90,6 +92,8 @@ armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 +/obj/item/clothing/head/helmet/space/cult/cultify() + return /obj/item/clothing/suit/space/cult name = "cult armour" @@ -101,4 +105,7 @@ slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) siemens_coefficient = 0 - body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS \ No newline at end of file + body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS + +/obj/item/clothing/suit/space/cult/cultify() + return diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index f78d7109c4..517c8728ed 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -3,6 +3,9 @@ anchored = 1 icon = 'icons/obj/cult.dmi' +/obj/structure/cult/cultify() + return + /obj/structure/cult/talisman name = "Altar" desc = "A bloodstained altar dedicated to Nar-Sie" @@ -98,4 +101,4 @@ /obj/effect/gateway/Crossed(AM as mob|obj) spawn(0) return - return \ No newline at end of file + return diff --git a/code/game/gamemodes/cult/cultify/mob.dm b/code/game/gamemodes/cult/cultify/mob.dm new file mode 100644 index 0000000000..15233dc43b --- /dev/null +++ b/code/game/gamemodes/cult/cultify/mob.dm @@ -0,0 +1,28 @@ +/mob/proc/cultify() + return + +/mob/dead/cultify() + if(icon_state != "ghost-narsie") + icon = 'icons/mob/mob.dmi' + icon_state = "ghost-narsie" + overlays = 0 + invisibility = 0 + src << "Even as a non-corporal being, you can feel Nar-Sie's presence altering you. You are now visible to everyone." + +/mob/living/cultify() + if(iscultist(src) && client) + var/mob/living/simple_animal/construct/harvester/C = new(get_turf(src)) + mind.transfer_to(C) + C << "The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.
Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.
You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.
" + dust() + else if(client) + var/mob/dead/G = (ghostize()) + G.icon = 'icons/mob/mob.dmi' + G.icon_state = "ghost-narsie" + G.overlays = 0 + G.invisibility = 0 + G << "You feel relieved as what's left of your soul finally escapes its prison of flesh." + + cult.harvested += G.mind + else + dust() diff --git a/code/game/gamemodes/cult/cultify/obj.dm b/code/game/gamemodes/cult/cultify/obj.dm new file mode 100644 index 0000000000..188f5cb5b0 --- /dev/null +++ b/code/game/gamemodes/cult/cultify/obj.dm @@ -0,0 +1,145 @@ +/obj/proc/cultify() + qdel(src) + +/obj/effect/decal/cleanable/blood/cultify() + return + +/obj/effect/decal/remains/cultify() + return + +/obj/effect/overlay/cultify() + return + +/obj/item/device/flashlight/lamp/cultify() + new /obj/structure/cult/pylon(loc) + ..() + +/obj/item/stack/sheet/wood/cultify() + return + +/obj/item/weapon/book/cultify() + new /obj/item/weapon/book/tome(loc) + ..() + +/obj/item/weapon/claymore/cultify() + new /obj/item/weapon/melee/cultblade(loc) + ..() + +/obj/item/weapon/storage/backpack/cultify() + new /obj/item/weapon/storage/backpack/cultpack(loc) + ..() + +/obj/item/weapon/storage/backpack/cultpack/cultify() + return + +/obj/item/weapon/table_parts/cultify() + new /obj/item/weapon/table_parts/wood(loc) + ..() + +/obj/item/weapon/table_parts/wood/cultify() + return + +/obj/machinery/cultify() + // We keep the number of cultified machines down by only converting those that are dense + // The alternative is to keep a separate file of exceptions. + if(density) + var/list/random_structure = list( + /obj/structure/cult/talisman, + /obj/structure/cult/forge, + /obj/structure/cult/tome + ) + var/I = pick(random_structure) + new I(loc) + ..() + +/obj/machinery/power/apc/cultify() + return + +/obj/machinery/atmospherics/cultify() + if(src.invisibility != INVISIBILITY_MAXIMUM) + src.invisibility = INVISIBILITY_MAXIMUM + +/obj/machinery/cooking/cultify() + new /obj/structure/cult/talisman(loc) + qdel(src) + +/obj/machinery/computer/cultify() + new /obj/structure/cult/tome(loc) + qdel(src) + +/obj/machinery/door/cultify() + new /obj/structure/mineral_door/wood(loc) + icon_state = "null" + density = 0 + c_animation = new /atom/movable/overlay(src.loc) + c_animation.name = "cultification" + c_animation.density = 0 + c_animation.anchored = 1 + c_animation.icon = 'icons/effects/effects.dmi' + c_animation.layer = 5 + c_animation.master = src.loc + c_animation.icon_state = "breakdoor" + flick("cultification",c_animation) + spawn(10) + del(c_animation) + qdel(src) + +/obj/machinery/light/cultify() + new /obj/structure/cult/pylon(loc) + qdel(src) + +/obj/machinery/vending/cultify() + new /obj/structure/cult/forge(loc) + qdel(src) + +/obj/structure/bed/chair/cultify() + var/obj/structure/bed/chair/wood/wings/I = new(loc) + I.dir = dir + ..() + +/obj/structure/bed/chair/wood/cultify() + return + +/obj/structure/bookcase/cultify() + return + +/obj/structure/grille/cultify() + new /obj/structure/grille/cult(get_turf(src)) + ..() + +/obj/structure/grille/cult/cultify() + return + +/obj/structure/mineral_door/cultify() + new /obj/structure/mineral_door/wood(loc) + ..() + +/obj/structure/mineral_door/wood/cultify() + return + +/obj/machinery/singularity/cultify() + var/dist = max((current_size - 2), 1) + explosion(get_turf(src), dist, dist * 2, dist * 4) + qdel(src) + +/obj/structure/shuttle/engine/heater/cultify() + new /obj/structure/cult/pylon(loc) + ..() + +/obj/structure/shuttle/engine/propulsion/cultify() + var/turf/T = get_turf(src) + if(T) + T.ChangeTurf(/turf/simulated/wall/cult) + ..() + +/obj/structure/stool/cultify() + var/obj/structure/bed/chair/wood/wings/I = new(loc) + I.dir = dir + ..() + +/obj/structure/table/cultify() + new /obj/structure/table/woodentable(loc) + ..() + +/obj/structure/table/woodentable/cultify() + return diff --git a/code/game/gamemodes/cult/cultify/turf.dm b/code/game/gamemodes/cult/cultify/turf.dm new file mode 100644 index 0000000000..0005298c42 --- /dev/null +++ b/code/game/gamemodes/cult/cultify/turf.dm @@ -0,0 +1,43 @@ +/turf/proc/cultify() + ChangeTurf(/turf/space) + return + +/turf/simulated/floor/cultify() + cultify_floor() + +/turf/simulated/floor/carpet/cultify() + return + +/turf/simulated/shuttle/floor/cultify() + cultify_floor() + +/turf/simulated/shuttle/floor4/cultify() + cultify_floor() + +/turf/simulated/shuttle/wall/cultify() + cultify_wall() + +/turf/simulated/wall/cultify() + cultify_wall() + +/turf/simulated/wall/cult/cultify() + return + +/turf/unsimulated/beach/cultify() + return + +/turf/unsimulated/floor/cultify() + cultify_floor() + +/turf/unsimulated/wall/cultify() + cultify_wall() + +/turf/proc/cultify_floor() + if((icon_state != "cult")&&(icon_state != "cult-narsie")) + name = "engraved floor" + icon_state = "cult" + turf_animation('icons/effects/effects.dmi',"cultfloor",0,0,MOB_LAYER-1) + +/turf/proc/cultify_wall() + ChangeTurf(/turf/unsimulated/wall/cult) + turf_animation('icons/effects/effects.dmi',"cultwall",0,0,MOB_LAYER-1) diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 662e5d0080..7024f025d3 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -498,6 +498,9 @@ var/global/list/rnwords = list("ire","ego","nahlizet","certum","veri","jatkaa"," else user << "The scriptures of Nar-Sie, The One Who Sees, The Geometer of Blood. Contains the details of every ritual his followers could think of. Most of these are useless, though." +/obj/item/weapon/book/tome/cultify() + return + /obj/item/weapon/book/tome/imbued //admin tome, spawns working runes without waiting w_class = 2.0 var/cultistsonly = 1 diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 21a06ec8b8..46bca99bc6 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -1,5 +1,8 @@ var/list/sacrificed = list() +/obj/effect/rune/cultify() + return + /obj/effect/rune /////////////////////////////////////////FIRST RUNE diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 639609cb91..900b6b09f0 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -34,6 +34,9 @@ dir = EAST var/width = 1 + // turf animation + var/atom/movable/overlay/c_animation = null + /obj/machinery/door/attack_generic(var/mob/user, var/damage) if(damage >= 10) visible_message("\The [user] smashes into the [src]!") diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index daa67c4449..4be7f6e7f7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -146,7 +146,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \ new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts/wood, 2), \ - new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("wooden chair", /obj/structure/bed/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("crossbow frame", /obj/item/weapon/crossbowframe, 5, time = 25, one_per_turf = 0, on_floor = 0), \ new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index 68681f081a..04eeaa5d99 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -2,6 +2,7 @@ icon = 'icons/obj/barsigns.dmi' icon_state = "empty" anchored = 1 + var/cult = 0 New() ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead", "whiskeyimplant", "carpecarp", "robustroadhouse", "greytide", "theredshirt")) return @@ -12,6 +13,9 @@ return /obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user) + if(cult) + return + if(istype(I, /obj/item/weapon/card/id)) var/obj/item/weapon/card/id/card = I if(access_bar in card.GetAccess()) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index b6407fd376..1e3f67fb07 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -215,3 +215,16 @@ health -= damage spawn(1) healthcheck() return 1 + +/obj/structure/grille/cult + name = "cult grille" + desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it" + icon_state = "grillecult" + health = 40 //Make it strong enough to avoid people breaking in too easily + +/obj/structure/grille/cult/CanPass(atom/movable/mover, turf/target, height = 1.5, air_group = 0) + if(air_group) + return 0 //Make sure air doesn't drain + ..() + + diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 5c4728313b..c8746e1919 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -67,15 +67,13 @@ return // Chair types -/obj/structure/bed/chair/wood/normal +/obj/structure/bed/chair/wood icon_state = "wooden_chair" name = "wooden chair" desc = "Old is never too old to not be in fashion." /obj/structure/bed/chair/wood/wings icon_state = "wooden_chair_wings" - name = "wooden chair" - desc = "Old is never too old to not be in fashion." /obj/structure/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/wrench)) diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 4c4682c5c5..e0ba3b7f4d 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -74,6 +74,8 @@ name = "engraved floor" icon_state = "cult" +/turf/simulated/floor/engine/cult/cultify() + return /turf/simulated/floor/engine/n20 New() diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm index b1a06f6e88..fdc5d92995 100644 --- a/code/game/turfs/simulated/walls_misc.dm +++ b/code/game/turfs/simulated/walls_misc.dm @@ -2,4 +2,7 @@ name = "wall" desc = "The patterns engraved on the wall seem to shift as you try to focus on them. You feel sick" icon_state = "cult" - walltype = "cult" \ No newline at end of file + walltype = "cult" + +/turf/unsimulated/wall/cult/cultify() + return diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 234de0cb4f..c30424111b 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -107,6 +107,9 @@ max_heat_protection_temperature = SHOE_MAX_HEAT_PROTECTION_TEMPERATURE species_restricted = null +/obj/item/clothing/shoes/cult/cultify() + return + /obj/item/clothing/shoes/cyborg name = "cyborg boots" desc = "Shoes for a cyborg costume" diff --git a/code/modules/mob/living/simple_animal/constructs/constructs.dm b/code/modules/mob/living/simple_animal/constructs/constructs.dm index 4a64e1412e..2aa5054dc7 100644 --- a/code/modules/mob/living/simple_animal/constructs/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs/constructs.dm @@ -1,4 +1,3 @@ - /mob/living/simple_animal/construct name = "Construct" real_name = "Construct" @@ -35,6 +34,9 @@ var/list/construct_spells = list() +/mob/living/simple_animal/construct/cultify() + return + /mob/living/simple_animal/construct/New() ..() name = text("[initial(name)] ([rand(1, 1000)])") diff --git a/code/modules/mob/living/simple_animal/constructs/soulstone.dm b/code/modules/mob/living/simple_animal/constructs/soulstone.dm index 4a7e00c0c2..502b7dd3dd 100644 --- a/code/modules/mob/living/simple_animal/constructs/soulstone.dm +++ b/code/modules/mob/living/simple_animal/constructs/soulstone.dm @@ -1,3 +1,6 @@ +/obj/item/device/soulstone/cultify() + return + /obj/item/device/soulstone name = "Soul Stone Shard" icon = 'icons/obj/wizard.dmi' @@ -9,7 +12,6 @@ origin_tech = "bluespace=4;materials=4" var/imprinted = "empty" - //////////////////////////////Capturing//////////////////////////////////////////////////////// attack(mob/living/carbon/human/M as mob, mob/user as mob) diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index d0d148aa2a..c284f7ad3c 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -28,6 +28,9 @@ faction = "cult" status_flags = CANPUSH +/mob/living/simple_animal/shade/cultify() + return + /mob/living/simple_animal/shade/Life() ..() OnDeathInLife() diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm index 117fd66418..6748aea41e 100644 --- a/code/modules/research/xenoarchaeology/finds/finds.dm +++ b/code/modules/research/xenoarchaeology/finds/finds.dm @@ -301,7 +301,7 @@ //arcane clothing apply_prefix = 0 var/list/possible_spawns = list(/obj/item/clothing/head/culthood, - /obj/item/clothing/head/magus, + /obj/item/clothing/head/culthood/magus, /obj/item/clothing/head/culthood/alt, /obj/item/clothing/head/helmet/space/cult) diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 67a1c2ce29..416f2b5d6c 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 6623ca98fa..bfee242faa 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index a46f12357a..6c96827f4b 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index a02adb87f0..859c6e7681 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 3c2d77e20a..67b9a67155 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi index db3ac690da..bc3b9e68fc 100644 Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ