diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 532fcd6f9bc..9b71924acaf 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -1809,7 +1809,7 @@ "aIO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/auxsolarport) "aIP" = (/obj/structure/closet/secure_closet/clown,/turf/simulated/floor/wood,/area/clownoffice) "aIQ" = (/obj/structure/table/woodentable,/obj/item/weapon/stamp/clown,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/clownoffice) -"aIR" = (/obj/structure/clownstatue,/turf/simulated/floor/wood,/area/clownoffice) +"aIR" = (/obj/structure/statue/bananium/clown,/turf/simulated/floor/wood,/area/clownoffice) "aIS" = (/obj/item/flag/clown,/turf/simulated/floor/wood,/area/clownoffice) "aIT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/wood,/area/clownoffice) "aIU" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/flag/mime,/turf/simulated/floor/wood,/area/mimeoffice) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 7612d3a88ad..e77c665f040 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -17,24 +17,41 @@ Mineral Sheets var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \ + null, \ + new/datum/stack_recipe("Breakdown into sand", /obj/item/weapon/ore/glass, 1, one_per_turf = 0, on_floor = 1), \ ) var/global/list/datum/stack_recipe/silver_recipes = list ( \ new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \ + null, \ + new/datum/stack_recipe("Janitor Statue", /obj/structure/statue/silver/janitor, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Sec Officer Statue", /obj/structure/statue/silver/sec, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Sec Borg Statue", /obj/structure/statue/silver/secborg, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Med Doctor Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \ ) var/global/list/datum/stack_recipe/diamond_recipes = list ( \ new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \ + null, \ + new/datum/stack_recipe("Captain Statue", /obj/structure/statue/diamond/captain, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("AI Hologram Statue", /obj/structure/statue/diamond/ai1, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \ ) var/global/list/datum/stack_recipe/uranium_recipes = list ( \ new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \ + null, \ + new/datum/stack_recipe("Nuke Statue", /obj/structure/statue/uranium/nuke, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \ ) var/global/list/datum/stack_recipe/gold_recipes = list ( \ @@ -42,6 +59,12 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \ null, \ new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \ null, \ + new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("HoP Statue", /obj/structure/statue/gold/hop, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("CE Statue", /obj/structure/statue/gold/ce, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("RD Statue", /obj/structure/statue/gold/rd, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \ + null, \ new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \ ) @@ -49,6 +72,9 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \ new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \ null, \ new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \ + null, \ + new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("Xenomorph Statue", /obj/structure/statue/plasma/xeno, 5, one_per_turf = 1, on_floor = 1), \ ) var/global/list/datum/stack_recipe/plastic_recipes = list ( \ @@ -71,6 +97,8 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \ var/global/list/datum/stack_recipe/bananium_recipes = list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ null, \ + new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \ + null, \ new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("bananium grenade casing", /obj/item/weapon/grenade/bananade/casing, 4, on_floor = 1), \ ) @@ -79,6 +107,8 @@ var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \ new/datum/stack_recipe("invisible wall", /obj/structure/barricade/mime, 5, one_per_turf = 1, on_floor = 1, time = 50), \ null, \ new/datum/stack_recipe("silent tile", /obj/item/stack/tile/mineral/tranquillite, 1, 4, 20), \ + null, \ + new/datum/stack_recipe("Mime Statue", /obj/structure/statue/tranquillite/mime, 5, one_per_turf = 1, on_floor = 1), \ ) var/global/list/datum/stack_recipe/abductor_recipes = list ( \ diff --git a/code/game/objects/structures/crates_lockers/closets/statue.dm b/code/game/objects/structures/crates_lockers/closets/statue.dm index 3c198e4dd08..b176908431a 100644 --- a/code/game/objects/structures/crates_lockers/closets/statue.dm +++ b/code/game/objects/structures/crates_lockers/closets/statue.dm @@ -71,7 +71,7 @@ M.forceMove(loc) M.disabilities -= MUTE M.take_overall_damage((M.health - health - 100),0) //any new damage the statue incurred is transfered to the mob - + ..() /obj/structure/closet/statue/open() @@ -138,18 +138,3 @@ dump_contents() visible_message("\red [src] shatters!. ") qdel(src) - - -/obj/structure/statue - name = "statue" - desc = "An incredibly lifelike marble carving" - icon = 'icons/obj/statue.dmi' - icon_state = "human_male" - density = 1 - anchored = 1 - -obj/structure/statue/angel - icon_state = "angelseen" - -obj/structure/statue/corgi - icon_state = "corgi" \ No newline at end of file diff --git a/code/game/objects/structures/statue.dm b/code/game/objects/structures/statue.dm deleted file mode 100644 index 094ca2d5774..00000000000 --- a/code/game/objects/structures/statue.dm +++ /dev/null @@ -1,32 +0,0 @@ -/obj/structure/snowman - name = "snowman" - desc = "Seems someone made a snowman here." - icon = 'icons/obj/stationobjs.dmi' - icon_state = "snowman" - anchored = 1 - density = 1 - -/obj/structure/kidanstatue - name = "Obsidian Kidan warrior statue" - desc = "A beautifully carved and menacing statue of a Kidan warrior made out of obsidian. It looks very heavy." - icon = 'icons/obj/decorations.dmi' - icon_state = "kidanstatue" - anchored = 1 - density = 1 - -/obj/structure/chickenstatue - name = "Bronze Chickenman Statue" - desc = "An antique and oriental-looking statue of a Chickenman made of bronze." - icon = 'icons/obj/decorations.dmi' - icon_state = "chickenstatue" - anchored = 1 - density = 1 - - -/obj/structure/clownstatue - name = "Bananium Clown Statue" - desc = "A golden statue made of bananium, commemorating the coronation of King Squiggles the Eighth." - icon = 'icons/obj/decorations.dmi' - icon_state = "clownstatue" - anchored = 1 - density = 1 \ No newline at end of file diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm new file mode 100644 index 00000000000..dd515dbe4dd --- /dev/null +++ b/code/game/objects/structures/statues.dm @@ -0,0 +1,364 @@ +/obj/structure/statue + name = "statue" + desc = "Placeholder. Yell at Firecage if you SOMEHOW see this." + icon = 'icons/obj/statue.dmi' + icon_state = "" + density = 1 + anchored = 0 + var/hardness = 1 + var/oreAmount = 5 + var/material_drop_type = /obj/item/stack/sheet/metal + +/obj/structure/statue/attackby(obj/item/weapon/W, mob/living/user, params) + add_fingerprint(user) + user.changeNext_move(CLICK_CD_MELEE) + if(iswrench(W)) + if(anchored) + playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) + user.visible_message("[user] is loosening the [name]'s bolts.", \ + "You are loosening the [name]'s bolts...") + if(do_after(user, 40, target = src)) + if(!loc || !anchored) + return + user.visible_message("[user] loosened the [name]'s bolts!", \ + "You loosen the [name]'s bolts!") + anchored = 0 + else + if(!isfloorturf(loc)) + user.visible_message("A floor must be present to secure the [name]!") + return + playsound(loc, 'sound/items/Ratchet.ogg', 100, 1) + user.visible_message("[user] is securing the [name]'s bolts...", \ + "You are securing the [name]'s bolts...") + if(do_after(user, 40, target = src)) + if(!loc || anchored) + return + user.visible_message("[user] has secured the [name]'s bolts.", \ + "You have secured the [name]'s bolts.") + anchored = 1 + + else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter)) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + user.visible_message("[user] is slicing apart the [name]...", \ + "You are slicing apart the [name]...") + if(do_after(user, 40, target = src)) + if(!loc) + return + user.visible_message("[user] slices apart the [name].", \ + "You slice apart the [name].") + Dismantle(TRUE) + + else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) + var/obj/item/weapon/pickaxe/drill/jackhammer/D = W + if(!loc) + return + user.visible_message("[user] destroys the [name]!", \ + "You destroy the [name].") + D.playDigSound() + qdel(src) + + else if(iswelder(W) && !anchored) + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + user.visible_message("[user] is slicing apart the [name].", \ + "You are slicing apart the [name]...") + if(do_after(user, 40, target = src)) + if(!loc) + return + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + user.visible_message("[user] slices apart the [name].", \ + "You slice apart the [name]!") + Dismantle(TRUE) + else + hardness -= W.force/100 + ..() + CheckHardness() + return ..() + +/obj/structure/statue/attack_hand(mob/living/user) + user.changeNext_move(CLICK_CD_MELEE) + add_fingerprint(user) + user.visible_message("[user] rubs some dust off from the [name]'s surface.", \ + "You rub some dust off from the [name]'s surface.") + +/obj/structure/statue/CanAtmosPass() + return !density + +/obj/structure/statue/bullet_act(obj/item/projectile/Proj) + hardness -= Proj.damage + ..() + CheckHardness() + return + +/obj/structure/statue/proc/CheckHardness() + if(hardness <= 0) + Dismantle(TRUE) + +/obj/structure/statue/proc/Dismantle(disassembled = TRUE) + if(material_drop_type) + var/drop_amt = oreAmount + if(!disassembled) + drop_amt -= 2 + if(drop_amt > 0) + new material_drop_type(get_turf(src), drop_amt) + qdel(src) + +/obj/structure/statue/ex_act(severity = 1) + switch(severity) + if(1) + Dismantle(TRUE) + if(2) + if(prob(20)) + Dismantle(TRUE) + else + hardness-- + CheckHardness() + if(3) + hardness -= 0.1 + CheckHardness() + return + +/obj/structure/statue/uranium + hardness = 3 + luminosity = 2 + material_drop_type = /obj/item/stack/sheet/mineral/uranium + var/last_event = 0 + var/active = null + +/obj/structure/statue/uranium/nuke + name = "statue of a nuclear fission explosive" + desc = "This is a grand statue of a Nuclear Explosive. It has a sickening green colour." + icon_state = "nuke" + +/obj/structure/statue/uranium/eng + name = "statue of an engineer" + desc = "This statue has a sickening green colour." + icon_state = "eng" + +/obj/structure/statue/uranium/attackby(obj/item/weapon/W, mob/user, params) + radiate() + ..() + +/obj/structure/statue/uranium/Bumped(atom/user) + radiate() + ..() + +/obj/structure/statue/uranium/attack_hand(mob/user) + radiate() + ..() + +/obj/structure/statue/uranium/proc/radiate() + if(!active) + if(world.time > last_event+15) + active = 1 + for(var/mob/living/L in range(3,src)) + L.apply_effect(12,IRRADIATE,0) + last_event = world.time + active = null + return + return + +/obj/structure/statue/plasma + hardness = 2 + material_drop_type = /obj/item/stack/sheet/mineral/plasma + desc = "This statue is suitably made from plasma." + +/obj/structure/statue/plasma/scientist + name = "statue of a scientist" + icon_state = "sci" + +/obj/structure/statue/plasma/xeno + name = "statue of a xenomorph" + icon_state = "xeno" + +/obj/structure/statue/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj) + var/burn = FALSE + if(istype(Proj,/obj/item/projectile/beam)) + PlasmaBurn(2500) + burn = TRUE + else if(istype(Proj,/obj/item/projectile/ion)) + PlasmaBurn(500) + burn = TRUE + if(burn) + if(Proj.firer) + message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])") + else + message_admins("Plasma statue ignited by [Proj]. No known firer.(?) (FLW) in ([x],[y],[z] - JMP)",0,1) + log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.") + ..() + +/obj/structure/statue/plasma/attackby(obj/item/weapon/W, mob/user, params) + if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite + message_admins("Plasma statue ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") + ignite(is_hot(W)) + return + ..() + +/obj/structure/statue/plasma/proc/PlasmaBurn() + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 160) + Dismantle(FALSE) + +/obj/structure/statue/plasma/proc/ignite(exposed_temperature) + if(exposed_temperature > 300) + PlasmaBurn() + +/obj/structure/statue/gold + hardness = 3 + material_drop_type = /obj/item/stack/sheet/mineral/gold + desc = "This is a highly valuable statue made from gold." + +/obj/structure/statue/gold/hos + name = "statue of the head of security" + icon_state = "hos" + +/obj/structure/statue/gold/hop + name = "statue of the head of personnel" + icon_state = "hop" + +/obj/structure/statue/gold/cmo + name = "statue of the chief medical officer" + icon_state = "cmo" + +/obj/structure/statue/gold/ce + name = "statue of the chief engineer" + icon_state = "ce" + +/obj/structure/statue/gold/rd + name = "statue of the research director" + icon_state = "rd" + +/obj/structure/statue/silver + hardness = 3 + material_drop_type = /obj/item/stack/sheet/mineral/silver + desc = "This is a valuable statue made from silver." + +/obj/structure/statue/silver/md + name = "statue of a medical doctor" + icon_state = "md" + +/obj/structure/statue/silver/janitor + name = "statue of a janitor" + icon_state = "jani" + +/obj/structure/statue/silver/sec + name = "statue of a security officer" + icon_state = "sec" + +/obj/structure/statue/silver/secborg + name = "statue of a security cyborg" + icon_state = "secborg" + +/obj/structure/statue/silver/medborg + name = "statue of a medical cyborg" + icon_state = "medborg" + +/obj/structure/statue/diamond + hardness = 10 + material_drop_type = /obj/item/stack/sheet/mineral/diamond + desc = "This is a very expensive diamond statue" + +/obj/structure/statue/diamond/captain + name = "statue of THE captain." + icon_state = "cap" + +/obj/structure/statue/diamond/ai1 + name = "statue of the AI hologram." + icon_state = "ai1" + +/obj/structure/statue/diamond/ai2 + name = "statue of the AI core." + icon_state = "ai2" + +/obj/structure/statue/bananium + hardness = 3 + material_drop_type = /obj/item/stack/sheet/mineral/bananium + desc = "A bananium statue with a small engraving:'HOOOOOOONK'." + var/spam_flag = 0 + +/obj/structure/statue/bananium/clown + name = "statue of a clown" + icon_state = "clown" + +/obj/structure/statue/bananium/Bumped(atom/user) + honk() + ..() + +/obj/structure/statue/bananium/attackby(obj/item/weapon/W, mob/user, params) + honk() + ..() + +/obj/structure/statue/bananium/attack_hand(mob/user) + honk() + ..() + +/obj/structure/statue/bananium/proc/honk() + if(!spam_flag) + spam_flag = 1 + playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) + spawn(20) + spam_flag = 0 + +/obj/structure/statue/sandstone + hardness = 0.5 + material_drop_type = /obj/item/stack/sheet/mineral/sandstone + +/obj/structure/statue/sandstone/assistant + name = "statue of an assistant" + desc = "A cheap statue of sandstone for a greyshirt." + icon_state = "assist" + +/obj/structure/statue/sandstone/venus //call me when we add marble i guess + name = "statue of a pure maiden" + desc = "An ancient marble statue. The subject is depicted with a floor-length braid and is wielding a toolbox. By Jove, it's easily the most gorgeous depiction of a woman you've ever seen. The artist must truly be a master of his craft. Shame about the broken arm, though." + icon = 'icons/obj/statuelarge.dmi' + icon_state = "venus" + +/* +/obj/structure/statue/snow + hardness = 0.5 + material_drop_type = /obj/item/stack/sheet/mineral/snow + +/obj/structure/statue/snow/snowman + name = "snowman" + desc = "Several lumps of snow put together to form a snowman." + icon_state = "snowman" +*/ + +/obj/structure/statue/tranquillite + hardness = 0.5 + material_drop_type = /obj/item/stack/sheet/mineral/tranquillite + desc = "..." + +/obj/structure/statue/tranquillite/mime + name = "statue of a mime" + icon_state = "mime" + +//////////////////////////////// +/obj/structure/snowman + name = "snowman" + desc = "Seems someone made a snowman here." + icon = 'icons/obj/stationobjs.dmi' + icon_state = "snowman" + anchored = 1 + density = 1 + +/obj/structure/kidanstatue + name = "Obsidian Kidan warrior statue" + desc = "A beautifully carved and menacing statue of a Kidan warrior made out of obsidian. It looks very heavy." + icon = 'icons/obj/decorations.dmi' + icon_state = "kidanstatue" + anchored = 1 + density = 1 + +/obj/structure/chickenstatue + name = "Bronze Chickenman Statue" + desc = "An antique and oriental-looking statue of a Chickenman made of bronze." + icon = 'icons/obj/decorations.dmi' + icon_state = "chickenstatue" + anchored = 1 + density = 1 diff --git a/icons/obj/decorations.dmi b/icons/obj/decorations.dmi index 02916e632f0..a3b7f9dcd20 100644 Binary files a/icons/obj/decorations.dmi and b/icons/obj/decorations.dmi differ diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index 74febfe53bc..e5deb9a0ec4 100644 Binary files a/icons/obj/statue.dmi and b/icons/obj/statue.dmi differ diff --git a/icons/obj/statuelarge.dmi b/icons/obj/statuelarge.dmi new file mode 100644 index 00000000000..e45afb8db8a Binary files /dev/null and b/icons/obj/statuelarge.dmi differ diff --git a/paradise.dme b/paradise.dme index 566614547bc..3657ec45c4e 100644 --- a/paradise.dme +++ b/paradise.dme @@ -913,7 +913,7 @@ #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\signs.dm" #include "code\game\objects\structures\spirit_board.dm" -#include "code\game\objects\structures\statue.dm" +#include "code\game\objects\structures\statues.dm" #include "code\game\objects\structures\tables_racks.dm" #include "code\game\objects\structures\tank_dispenser.dm" #include "code\game\objects\structures\target_stake.dm"