diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index db178396e50..57a6c9f460f 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -34,6 +34,7 @@ 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), \ + new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \ /* new/datum/stack_recipe("sandstone wall", ???), \ new/datum/stack_recipe("sandstone floor", ???),\ */ ) @@ -61,6 +62,9 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ 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), \ new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \ + 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), \ ) /obj/item/stack/sheet/mineral/diamond/New(var/loc, var/amount=null) @@ -87,6 +91,8 @@ var/global/list/datum/stack_recipe/diamond_recipes = list ( \ 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), \ new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \ + 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), \ ) /obj/item/stack/sheet/mineral/uranium/New(var/loc, var/amount=null) @@ -113,6 +119,7 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \ 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), \ new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \ + new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/mineral/plasma/New(var/loc, var/amount=null) @@ -139,6 +146,11 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \ var/global/list/datum/stack_recipe/gold_recipes = list ( \ new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \ + 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), \ ) /obj/item/stack/sheet/mineral/gold/New(var/loc, var/amount=null) @@ -165,6 +177,11 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \ 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), \ new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \ + new/datum/stack_recipe("Med Officer Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \ + 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 Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/mineral/silver/New(var/loc, var/amount=null) @@ -190,9 +207,11 @@ var/global/list/datum/stack_recipe/silver_recipes = list ( \ var/global/list/datum/stack_recipe/clown_recipes = list ( \ new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \ + new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/mineral/clown/New(var/loc, var/amount=null) + recipes = clown_recipes pixel_x = rand(0,4)-4 pixel_y = rand(0,4)-4 ..() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm new file mode 100644 index 00000000000..ba98fa3d0de --- /dev/null +++ b/code/game/objects/structures/statues.dm @@ -0,0 +1,276 @@ + + + +/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 = 1 + var/hardness = 1 + var/oreAmount = 7 + var/mineralType = "metal" + var/last_event = 0 + var/active = null + var/spam_flag = 0 + +/obj/structure/statue/Destroy() + density = 0 + ..() + +/obj/structure/statue/attackby(obj/item/weapon/W, mob/user) + hardness -= W.force/100 + user << "You hit the [name] with your [W.name]!" + CheckHardness() + +/obj/structure/statue/attack_hand(mob/user) + visible_message("[user] rubs 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(1) + +/obj/structure/statue/proc/Dismantle(devastated = 0) + if(!devastated) + if (mineralType == "metal") + var/ore = /obj/item/stack/sheet/metal + for(var/i = 1, i <= oreAmount, i++) + new ore(get_turf(src)) + else + var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]") + for(var/i = 1, i <= oreAmount, i++) + new ore(get_turf(src)) + else + if (mineralType == "metal") + var/ore = /obj/item/stack/sheet/metal + for(var/i = 3, i <= oreAmount, i++) + new ore(get_turf(src)) + else + var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]") + for(var/i = 3, i <= oreAmount, i++) + new ore(get_turf(src)) + qdel(src) + +/obj/structure/statue/ex_act(severity = 1) + switch(severity) + if(1) + Dismantle(1) + if(2) + if(prob(20)) + Dismantle(1) + else + hardness-- + CheckHardness() + if(3) + hardness -= 0.1 + CheckHardness() + return + +//////////////////////////////////////STATUES///////////////////////////////////////////////////////////// +////////////////////////uranium/////////////////////////////////// + +/obj/structure/statue/uranium + hardness = 3 + luminosity = 2 + mineralType = "uranium" + +/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) + radiate() + ..() + +/obj/structure/statue/uranium/Bumped(atom/user) + radiate() + +/obj/structure/statue/uranium/attack_hand(mob/user) + radiate() + ..() + +/obj/structure/statue/uranium/attack_paw(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 + +////////////////////////////plasma/////////////////////////////////////////////////////////////////////// + +/obj/structure/statue/plasma + hardness = 2 + mineralType = "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/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + + +/obj/structure/statue/plasma/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj,/obj/item/projectile/beam)) + PlasmaBurn(2500) + else if(istype(Proj,/obj/item/projectile/ion)) + PlasmaBurn(500) + ..() + +/obj/structure/statue/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite + message_admins("Plasma statue ignited by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) + log_game("Plasma statue ignited by [user.ckey]([user]) in ([x],[y],[z])") + ignite(is_hot(W)) + return + ..() + +/obj/structure/statue/plasma/proc/PlasmaBurn() + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400) + hardness = 0 + CheckHardness() + +/obj/structure/statue/plasma/proc/ignite(exposed_temperature) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) + +//////////////////////gold/////////////////////////////////////// + +/obj/structure/statue/gold + hardness = 3 + mineralType = "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" + +//////////////////////////silver/////////////////////////////////////// + +/obj/structure/statue/silver + hardness = 3 + mineralType = "silver" + desc = "This is a valuable statue made from silver." + +/obj/structure/statue/silver/md + name = "Statue of a Medical Officer" + 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" + +/////////////////////////diamond///////////////////////////////////////// + +/obj/structure/statue/diamond + hardness = 10 + mineralType = "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" + +////////////////////////bananium/////////////////////////////////////// + +/obj/structure/statue/bananium + hardness = 3 + mineralType = "clown" + desc = "A bananium statue with a small engraving:'HOOOOOOONK'." + +/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) + honk() + ..() + +/obj/structure/statue/bananium/attack_hand(mob/user) + honk() + ..() + +/obj/structure/statue/bananium/attack_paw(mob/user) + honk() + +/obj/structure/statue/bananium/proc/honk() + if(spam_flag == 0) + spam_flag = 1 + playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1) + spawn(20) + spam_flag = 0 + +/////////////////////sandstone///////////////////////////////////////// + +/obj/structure/statue/sandstone + hardness = 0.5 + mineralType = "sandstone" + +/obj/structure/statue/sandstone/assistant + name = "Statue of an assistant" + desc = "A cheap statue of sandstone for a greyshirt." + icon_state = "assist" diff --git a/icons/obj/statue.dmi b/icons/obj/statue.dmi index 46dec2a0033..e598551ae84 100644 Binary files a/icons/obj/statue.dmi and b/icons/obj/statue.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 706f9161bf8..1ac3e68d812 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -630,6 +630,7 @@ #include "code\game\objects\structures\OpTable.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\signs.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"