mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-23 05:06:50 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into food2021
This commit is contained in:
@@ -110,3 +110,10 @@
|
||||
plane = PLANE_LIGHTING_ABOVE
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
|
||||
/obj/effect/overlay/closet_door
|
||||
anchored = TRUE
|
||||
plane = FLOAT_PLANE
|
||||
layer = FLOAT_LAYER
|
||||
vis_flags = VIS_INHERIT_ID
|
||||
appearance_flags = KEEP_TOGETHER | LONG_GLIDE | PIXEL_SCALE
|
||||
@@ -84,7 +84,7 @@
|
||||
// Works similarly to worn sprite_sheets, except the alternate sprites are used when the clothing/refit_for_species() proc is called.
|
||||
var/list/sprite_sheets_obj = list()
|
||||
|
||||
var/toolspeed = 1.0 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast.
|
||||
var/toolspeed = 1 // This is a multipler on how 'fast' a tool works. e.g. setting this to 0.5 will make the tool work twice as fast.
|
||||
var/attackspeed = DEFAULT_ATTACK_COOLDOWN // How long click delay will be when using this, in 1/10ths of a second. Checked in the user's get_attack_speed().
|
||||
var/reach = 1 // Length of tiles it can reach, 1 is adjacent.
|
||||
var/addblends // Icon overlay for ADD highlights when applicable.
|
||||
@@ -925,4 +925,8 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
|
||||
|
||||
// Like the above, but used for RPED sorting of parts.
|
||||
/obj/item/proc/rped_rating()
|
||||
return get_rating()
|
||||
return get_rating()
|
||||
|
||||
// this gets called when the item gets chucked by the vending machine
|
||||
/obj/item/proc/vendor_action(var/obj/machinery/vending/V)
|
||||
return
|
||||
@@ -26,6 +26,7 @@
|
||||
closet_appearance = null
|
||||
open_sound = 'sound/items/zip.ogg'
|
||||
close_sound = 'sound/items/zip.ogg'
|
||||
door_anim_time = 0 //Unsupported
|
||||
var/item_path = /obj/item/bodybag
|
||||
density = 0
|
||||
storage_capacity = (MOB_MEDIUM * 2) - 1
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/obj/item/device/encryptionkey/keyslot2 = null
|
||||
var/ks1type = null
|
||||
var/ks2type = null
|
||||
|
||||
|
||||
drop_sound = 'sound/items/drop/component.ogg'
|
||||
pickup_sound = 'sound/items/pickup/component.ogg'
|
||||
|
||||
@@ -62,10 +62,12 @@
|
||||
|
||||
/obj/item/device/radio/headset/receive_range(freq, level, aiOverride = 0)
|
||||
if (aiOverride)
|
||||
playsound(loc, 'sound/effects/radio_common.ogg', 25, 1, 1)
|
||||
return ..(freq, level)
|
||||
if(ishuman(src.loc))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
if(H.l_ear == src || H.r_ear == src)
|
||||
playsound(loc, 'sound/effects/radio_common.ogg', 25, 1, 1)
|
||||
return ..(freq, level)
|
||||
return -1
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
/obj/item/tabloid
|
||||
name = "tabloid magazine"
|
||||
desc = "It's one of those trashy tabloid magazines. It looks pretty out of date."
|
||||
icon = 'icons/obj/magazine.dmi'
|
||||
icon_state = "magazine"
|
||||
|
||||
var/headline
|
||||
var/static/list/tabloid_states = icon_states('icons/obj/magazine.dmi')
|
||||
var/static/list/tabloid_publishers = list(
|
||||
"\improper Solar Enquirer",
|
||||
"\improper Stellar Examiner",
|
||||
"\improper Antares Daily",
|
||||
"\improper Weekly Galactic News",
|
||||
"\improper Spiral"
|
||||
)
|
||||
|
||||
var/static/list/tabloid_headlines = list(
|
||||
"NARCOALGORITHMS: ARE YOUR CHILDREN SAFE?",
|
||||
"ARE GMO HUMANS POISONOUS IN BED?",
|
||||
"TOP 10 REASONS WHY OTHER SPECIES ARE A HOAX",
|
||||
"CENTENNIAL POSITRONIC EXTENDS LIFESPAN WITH 1 SIMPLE TRICK",
|
||||
"TOP 10 DANGEROUS FOODS WITH CHEMICALS",
|
||||
"NEW TERRIFYING TEEN TREND: SUN-DIVING",
|
||||
"HAS YOUR SPOUSE BEEN REPLACED BY AN ALIEN IMPOSTER? STUDIES SUGGEST YES!",
|
||||
"SPACE CAUSES CANCER: DOCTORS CONFIRM",
|
||||
"ARE BODY SCANNERS TOO INVASIVE? FIND OUT INSIDE!",
|
||||
"HAS SCIENCE GONE TOO FAR? LOCAL SCIENTIST DEBUNKS ALIEN THEORY, DECRIES THEM AS TUBE EXPERIMENTS GONE WRONG",
|
||||
"100 DELICIOUS RECIPES LETHAL TO CARBON-BASED LIFE",
|
||||
"TOP FIVE SPECIES WE DROVE TO EXTINCTION; NUMBER TWO WILL SHOCK YOU",
|
||||
"LOCAL MAN HAS SEIZURE AFTER SAYING SKRELLIAN NAME; FORCED ASSIMILATION SOON?",
|
||||
"RELIGION WAS RIGHT? SHOCK FINDINGS SHOW ALIEN SIMILARITY TO ANIMALS, EXISTENCE OF BOATS",
|
||||
"TOP TEN REASONS WHY ONLY HUMANS ARE SENTIENT",
|
||||
"LOCAL UNATHI SYMPATHIZER: 'I really think you should stop with these spacebaiting articles.'",
|
||||
"DO UNATHI SYMPATHIZERS HATE THE HUMAN RACE?",
|
||||
"WHICH PLANET HAS THE BEST LOVERS? THIS AND MORE INSIDE!",
|
||||
"SHE SAID WE SHOULD SEE OTHER PEOPLE, SO I MARRIED A TESHARI PACK: FULL STORY INSIDE",
|
||||
"LOSE WEIGHT THREE TIMES FASTER WITH THESE LOW-G MANEUVERS!",
|
||||
"SHOCKING FIGURES REVEAL MORE TEENS DIE TO UNATHI HONOUR DUELS THAN GUN VIOLENCE",
|
||||
"MY DAUGHTER JOINED A NEURAL COLLECTIVE AND NOW SHE CAN TASTE SPACETIME: FULL STORY INSIDE",
|
||||
"WERE THE NAZIS PSYCHIC? ONE HISTORIAN TELLS ALL",
|
||||
"TAJARANS: CUTE AND CUDDLY, OR INFILTRATING THE GOVERNMENT? FIND OUT MORE INSIDE",
|
||||
"IS THE SOLAR GOVERNMENT CREATING AN AI SUPERINTELLIGENCE NEAR MERCURY? ONE EXPERT REVEALS SHOCKING INSIDER DETAILS!",
|
||||
"TOP TEN HISTORICAL FIGURES THAT WERE TWO PROMETHEANS IN A TRENCHCOAT",
|
||||
"ZADDAT: FACT OR FICTION?",
|
||||
"TOP 10 SECRET AUGMENTS THE GOVERNMENT DOESN'T WANT YOU TO GET",
|
||||
"ENLARGE YOUR MENTAL FACULTIES WITH THIS 1 WEIRD HAT",
|
||||
"'HELP, MY SON THINKS HE'S A 20TH CENTURY VID CHARACTER CALLED SPOCK' AND MORE SHOCKING TALES INSIDE",
|
||||
"18 RADICAL HIP IMPLANTS ALL THE KIDS ARE GETTING!",
|
||||
"PRESERVED HEAD OF 21ST CENTURY CAPITALIST INSISTS THAT 'DYSON WALL' ONLY SANE SOLUTION TO RIMWARD MALCONTENTS",
|
||||
"50 SHADES OF GREEN; BESTSELLING MULTISPECIES ROMANCE COMING TO CINEMAS",
|
||||
"PLUTO: DWARF PLANET, OR SECRET RAMPANT AI FACILITY HELL-BENT ON CORRUPTING YOUR CHILDREN?",
|
||||
"TOP TEN ANIME ALIENS. NUMBER 3 WILL SICKEN YOU",
|
||||
"OCTUBER X'RALLBRE EXPOSED; NUDE PHOTOSHOOT LEAKS",
|
||||
"WAR ON MARS AFTER NAKED MAN WAS FOUND; WERE THE ROMANS RIGHT?",
|
||||
"REAL ALIENS ARGUE EARTH MOVIES RACIST!",
|
||||
"HELP! I MARRIED A HEGEMONOUS SWARM INTELLIGENCE AND MY SON THINKS HE'S A ROUTER!",
|
||||
"POSITRONICS: HUMAN INGENUITY AND GENEROSITY, OR A HORRIBLE MISTAKE? FIND OUT INSIDE!",
|
||||
"TENTACLES OF TERROR: SKRELL BLACK OPS SEIGE NYX NAVAL DEPOT. SHOCKING PHOTOGRAPHS INSIDE!",
|
||||
"THE FREE TRADER UNION: NEITHER FREE NOR A UNION. SHOCKING EXPOSE!",
|
||||
"HAS THE FREE MARKET GONE TOO FAR? LUNA GLITTERPOP STAR AUCTIONS THIRD TESTICLE FOR TRANS-ORBITAL SHIPPING BONDS",
|
||||
"THEY SAID IT WAS CANCER, BUT I KNEW IT WAS A TINY, SELF-REPLICATING CLONE OF RAY KURZWEIL: FULL STORY INSIDE",
|
||||
"WHAT HAS TECHNOLOGY DONE? INDUSTRY BILLIONAIRE MARRIES OWN INFORMORPH MIND-COPY",
|
||||
"REPTILLIAN ICE WARRIORS FROM ANOTHER WORLD LIVE INSIDE YOUR AIR DUCTS: HERE'S HOW TO GET RID OF THEM",
|
||||
"10 CRITICAL THINGS YOU NEED TO KNOW ABOUT 'DRONEGATE'",
|
||||
"THEY CALL THEM JUMPGATES BUT I'VE NEVER SEEN THEM JUMP: AN INDUSTRY INSIDER SPEAKS FOR THE FIRST TIME",
|
||||
"EMERGENT INTELLIGENCES ARE STEALING YOUR BANK DETAILS, FETISHES: FOIL HAT RECIPE INSIDE",
|
||||
"TIME TRAVELLERS ARE STEALING YOUR WIFI: 5 TIPS FOR DEFEATING HACKERS FROM THE FUTURE",
|
||||
"'My mother was an alien spy': THIS CELEBRITY REVEAL WILL SHOCK AND AMAZE YOU",
|
||||
"LUMINARY SCIENTIST SPEAKS: DIABETES IS A HYPERCORP RETROVIRUS!",
|
||||
"'I REROUTED MY NEURAL CIRCUITRY SO THAT PAIN TASTES OF STRAWBERRIES' AND FIFTEEN OTHER CRAZY ALMACH STORIES",
|
||||
"JOINING THE NAVY? HERE'S 15 EXPERT TIPS FOR AVOIDING BRAIN PARASITES"
|
||||
)
|
||||
|
||||
/obj/item/tabloid/Initialize()
|
||||
. = ..()
|
||||
|
||||
pixel_x = 5-rand(10)
|
||||
pixel_x = 5-rand(10)
|
||||
|
||||
icon_state = pick(tabloid_states)
|
||||
headline = pick(tabloid_headlines)
|
||||
name = pick(tabloid_publishers)
|
||||
|
||||
/obj/item/tabloid/examine(mob/user, distance)
|
||||
. = ..()
|
||||
if(headline)
|
||||
to_chat(user, "The headline screams, \"[headline]\"")
|
||||
|
||||
/obj/item/tabloid/attack_self(mob/user)
|
||||
user.visible_message(SPAN_NOTICE("\The [user] leafs idly through \the [src]."))
|
||||
if(headline)
|
||||
to_chat(user, "Most of it is the usual tabloid garbage, but the headline story, \"[headline]\", holds your attention for awhile.")
|
||||
if(tabloid_headlines[headline])
|
||||
to_chat(user, tabloid_headlines[headline])
|
||||
else
|
||||
to_chat(user, "Most of it is the usual tabloid garbage. You find nothing of interest.")
|
||||
return TRUE
|
||||
@@ -65,6 +65,7 @@
|
||||
closet_appearance = null
|
||||
catalogue_data = list(/datum/category_item/catalogue/information/objects/oldreactor)
|
||||
climbable = 0
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/fuel_assembly/deuterium = 6)
|
||||
|
||||
@@ -1257,11 +1257,11 @@
|
||||
icon_state = "therapygreen"
|
||||
item_state = "egg3" // It's the green egg in items_left/righthand
|
||||
|
||||
/obj/structure/plushie/fumo
|
||||
/obj/item/toy/plushie/fumo
|
||||
name = "Fumo"
|
||||
desc = "A plushie of a....?."
|
||||
icon_state = "fumoplushie"
|
||||
phrase = "I just don't think about losing."
|
||||
pokephrase = "I just don't think about losing."
|
||||
|
||||
//Toy cult sword
|
||||
/obj/item/toy/cultsword
|
||||
|
||||
@@ -112,3 +112,6 @@
|
||||
walk(src, null, null)
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/grenade/vendor_action(var/obj/machinery/vending/V)
|
||||
activate(V)
|
||||
@@ -24,6 +24,18 @@
|
||||
drop_sound = 'sound/items/drop/axe.ogg'
|
||||
pickup_sound = 'sound/items/pickup/axe.ogg'
|
||||
|
||||
/obj/item/weapon/material/knife/machete/hatchet/stone
|
||||
name = "sharp rock"
|
||||
desc = "The secret is to bang the rocks together, guys."
|
||||
force_divisor = 0.2
|
||||
icon_state = "rock"
|
||||
item_state = "rock"
|
||||
attack_verb = list("chopped", "torn", "cut")
|
||||
|
||||
/obj/item/weapon/material/knife/machete/hatchet/stone/set_material(var/new_material)
|
||||
var/old_name = name
|
||||
. = ..()
|
||||
name = old_name
|
||||
/obj/item/weapon/material/knife/machete/hatchet/unathiknife
|
||||
name = "duelling knife"
|
||||
desc = "A length of leather-bound wood studded with razor-sharp teeth. How crude."
|
||||
|
||||
@@ -163,6 +163,7 @@
|
||||
/obj/item/weapon/melee/baton,
|
||||
/obj/item/weapon/gun/energy/taser,
|
||||
/obj/item/weapon/gun/energy/stunrevolver,
|
||||
/obj/item/weapon/gun/energy/stunrevolver/vintage,
|
||||
/obj/item/weapon/gun/magnetic/railgun/heater/pistol,
|
||||
/obj/item/weapon/gun/energy/gun,
|
||||
/obj/item/weapon/flame/lighter,
|
||||
|
||||
@@ -49,7 +49,7 @@ var/list/random_weighted_donuts = list(
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/box/donut/update_icon()
|
||||
overlays.Cut()
|
||||
cut_overlays()
|
||||
var/x_offset = 0
|
||||
for(var/obj/item/weapon/reagent_containers/food/snacks/donut/D in contents)
|
||||
var/mutable_appearance/ma = mutable_appearance(icon = icon, icon_state = D.overlay_state)
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
prob(4);/obj/item/weapon/gun/energy/taser,
|
||||
prob(2);/obj/item/weapon/gun/energy/crossbow/largecrossbow,
|
||||
prob(4);/obj/item/weapon/gun/energy/stunrevolver,
|
||||
prob(2);/obj/item/weapon/gun/energy/stunrevolver/vintage,
|
||||
prob(3);/obj/item/weapon/gun/energy/gun/compact)
|
||||
|
||||
/obj/random/energy/sec
|
||||
|
||||
@@ -64,6 +64,52 @@
|
||||
/obj/structure/closet/crate/engineering,
|
||||
/obj/structure/closet/crate)
|
||||
|
||||
/obj/random/vendorall //Fully random selection of consumer vendors
|
||||
name = "random vending machine"
|
||||
desc = "This is a random vending machine"
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "radren-off"
|
||||
|
||||
/obj/random/vendorall/item_to_spawn()
|
||||
return pick (/obj/machinery/vending/coffee,
|
||||
/obj/machinery/vending/snack,
|
||||
/obj/machinery/vending/cola,
|
||||
/obj/machinery/vending/fitness,
|
||||
/obj/machinery/vending/cigarette,
|
||||
/obj/machinery/vending/giftvendor,
|
||||
/obj/machinery/vending/hotfood,
|
||||
/obj/machinery/vending/weeb,
|
||||
/obj/machinery/vending/sol,
|
||||
/obj/machinery/vending/snix,
|
||||
/obj/machinery/vending/snlvend,
|
||||
/obj/machinery/vending/sovietsoda,
|
||||
/obj/machinery/vending/sovietvend,
|
||||
/obj/machinery/vending/radren)
|
||||
|
||||
/obj/random/vendorfood //Random food vendors for station use
|
||||
name = "random snack vending machine"
|
||||
desc = "This is a random food vending machine"
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "snack"
|
||||
|
||||
/obj/random/vendorfood/item_to_spawn()
|
||||
return pick (/obj/machinery/vending/snack,
|
||||
/obj/machinery/vending/weeb,
|
||||
/obj/machinery/vending/sol,
|
||||
/obj/machinery/vending/snix,
|
||||
/obj/machinery/vending/snlvend)
|
||||
|
||||
/obj/random/vendordrink //Random drink vendors for station use
|
||||
name = "random drink vending machine"
|
||||
desc = "This is a random drink vending machine"
|
||||
icon = 'icons/obj/vending.dmi'
|
||||
icon_state = "Cola_Machine"
|
||||
|
||||
/obj/random/vendordrink/item_to_spawn() //Not including coffee as it's more specific in usage.
|
||||
return pick (/obj/machinery/vending/cola,
|
||||
/obj/machinery/vending/sovietsoda,
|
||||
/obj/machinery/vending/radren)
|
||||
|
||||
/obj/random/obstruction //Large objects to block things off in maintenance
|
||||
name = "random obstruction"
|
||||
desc = "This is a random obstruction."
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
density = 1
|
||||
w_class = ITEMSIZE_HUGE
|
||||
layer = UNDER_JUNK_LAYER
|
||||
|
||||
|
||||
var/opened = 0
|
||||
var/sealed = 0
|
||||
|
||||
|
||||
var/seal_tool = /obj/item/weapon/weldingtool //Tool used to seal the closet, defaults to welder
|
||||
var/wall_mounted = 0 //never solid (You can always pass over it)
|
||||
var/health = 100
|
||||
@@ -35,6 +35,19 @@
|
||||
|
||||
var/closet_appearance = /decl/closet_appearance // The /decl that defines what decals we end up with, that makes our look unique
|
||||
|
||||
/// Currently animating the door transform
|
||||
var/is_animating_door = FALSE
|
||||
/// Length of time (ds) to animate the door transform
|
||||
var/door_anim_time = 2.0
|
||||
/// Amount to 'squish' the full width of the door by
|
||||
var/door_anim_squish = 0.30
|
||||
/// Virtual angle at which the door is opened to (136 by default, so not a full 180)
|
||||
var/door_anim_angle = 136
|
||||
/// Offset for the door hinge location from centerline
|
||||
var/door_hinge = -6.5
|
||||
/// Our visual object for the closet door
|
||||
var/obj/effect/overlay/closet_door/door_obj
|
||||
|
||||
/obj/structure/closet/Initialize()
|
||||
..()
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
@@ -65,6 +78,10 @@
|
||||
color = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/Destroy()
|
||||
. = ..()
|
||||
qdel_null(door_obj)
|
||||
|
||||
/obj/structure/closet/examine(mob/user)
|
||||
. = ..()
|
||||
if(Adjacent(user) || isobserver(user))
|
||||
@@ -133,7 +150,7 @@
|
||||
playsound(src, open_sound, 15, 1, -3)
|
||||
if(initial(density))
|
||||
density = !density
|
||||
update_icon()
|
||||
animate_door()
|
||||
return 1
|
||||
|
||||
/obj/structure/closet/proc/close()
|
||||
@@ -158,7 +175,7 @@
|
||||
playsound(src, close_sound, 15, 1, -3)
|
||||
if(initial(density))
|
||||
density = !density
|
||||
update_icon()
|
||||
animate_door(TRUE)
|
||||
return 1
|
||||
|
||||
//Cham Projector Exception
|
||||
@@ -213,10 +230,11 @@
|
||||
|
||||
|
||||
/obj/structure/closet/proc/toggle(mob/user as mob)
|
||||
if(is_animating_door)
|
||||
return
|
||||
if(!(opened ? close() : open()))
|
||||
to_chat(user, "<span class='notice'>It won't budge!</span>")
|
||||
return
|
||||
update_icon()
|
||||
|
||||
// this should probably use dump_contents()
|
||||
/obj/structure/closet/ex_act(severity)
|
||||
@@ -480,8 +498,45 @@
|
||||
spawn(1) qdel(src)
|
||||
return 1
|
||||
|
||||
// Just a generic cabinet for mappers to use
|
||||
/obj/structure/closet/cabinet
|
||||
name = "cabinet"
|
||||
icon = 'icons/obj/closets/bases/cabinet.dmi'
|
||||
closet_appearance = /decl/closet_appearance/cabinet
|
||||
/obj/structure/closet/proc/animate_door(closing = FALSE)
|
||||
if(!door_anim_time)
|
||||
update_icon()
|
||||
return
|
||||
if(!door_obj)
|
||||
door_obj = new
|
||||
vis_contents |= door_obj
|
||||
door_obj.icon = icon
|
||||
door_obj.icon_state = "door_front"
|
||||
is_animating_door = TRUE
|
||||
if(!closing)
|
||||
update_icon()
|
||||
var/num_steps = door_anim_time / world.tick_lag
|
||||
for(var/I in 0 to num_steps)
|
||||
var/angle = door_anim_angle * (closing ? 1 - (I/num_steps) : (I/num_steps))
|
||||
var/matrix/M = get_door_transform(angle)
|
||||
var/door_state = angle >= 90 ? "door_back" : "door_front"
|
||||
var/door_layer = angle >= 90 ? FLOAT_LAYER : ABOVE_MOB_LAYER
|
||||
|
||||
if(I == 0)
|
||||
door_obj.transform = M
|
||||
door_obj.icon_state = door_state
|
||||
door_obj.layer = door_layer
|
||||
else if(I == 1)
|
||||
animate(door_obj, transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag, flags = ANIMATION_END_NOW)
|
||||
else
|
||||
animate(transform = M, icon_state = door_state, layer = door_layer, time = world.tick_lag)
|
||||
addtimer(CALLBACK(src,.proc/end_door_animation,closing),door_anim_time,TIMER_UNIQUE|TIMER_OVERRIDE)
|
||||
|
||||
/obj/structure/closet/proc/end_door_animation(closing = FALSE)
|
||||
is_animating_door = FALSE
|
||||
if(closing)
|
||||
// There's not really harm in leaving it on, but, one less atom to send to clients to render when lockers are closed
|
||||
vis_contents -= door_obj
|
||||
update_icon()
|
||||
|
||||
/obj/structure/closet/proc/get_door_transform(angle)
|
||||
var/matrix/M = matrix()
|
||||
M.Translate(-door_hinge, 0)
|
||||
M.Multiply(matrix(cos(angle), 0, 0, -sin(angle) * door_anim_squish, 1, 0))
|
||||
M.Translate(door_hinge, 0)
|
||||
return M
|
||||
@@ -33,6 +33,8 @@
|
||||
var/icon/closed_locked_welded_icon
|
||||
var/icon/closed_unlocked_icon
|
||||
var/icon/closed_unlocked_welded_icon
|
||||
var/icon/door_front_icon
|
||||
var/icon/door_back_icon
|
||||
|
||||
// Create open icon.
|
||||
var/icon/new_icon = new
|
||||
@@ -40,6 +42,8 @@
|
||||
open_icon.Blend(icon(base_icon, "open"), ICON_OVERLAY)
|
||||
open_icon.Blend(color, BLEND_ADD)
|
||||
open_icon.Blend(icon(base_icon, "interior"), ICON_OVERLAY)
|
||||
door_back_icon = icon(base_icon, "door_back")
|
||||
door_back_icon.Blend(color, BLEND_ADD)
|
||||
if(decal_icon)
|
||||
for(var/thing in decals)
|
||||
var/icon/this_decal_icon = icon(decal_icon, "[thing]_open")
|
||||
@@ -47,6 +51,8 @@
|
||||
open_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
|
||||
// Generate basic closed icons.
|
||||
door_front_icon = icon(base_icon, "door_front")
|
||||
door_front_icon.Blend(color, BLEND_ADD)
|
||||
closed_emagged_icon = icon(base_icon, "base")
|
||||
if(can_lock)
|
||||
closed_emagged_icon.Blend(icon(base_icon, "lock"), ICON_OVERLAY)
|
||||
@@ -56,6 +62,10 @@
|
||||
var/icon/this_decal_icon = icon(decal_icon, thing)
|
||||
this_decal_icon.Blend(decals[thing], BLEND_ADD)
|
||||
closed_emagged_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
door_front_icon.Blend(this_decal_icon, ICON_OVERLAY)
|
||||
|
||||
door_front_icon.AddAlphaMask(icon(base_icon, "door_front")) // Remove pesky 'more than just door' decals
|
||||
|
||||
closed_locked_icon = icon(closed_emagged_icon)
|
||||
closed_unlocked_icon = icon(closed_emagged_icon)
|
||||
|
||||
@@ -90,6 +100,8 @@
|
||||
new_icon.Insert(closed_locked_welded_icon, "closed_locked_welded")
|
||||
new_icon.Insert(closed_unlocked_icon, "closed_unlocked")
|
||||
new_icon.Insert(closed_unlocked_welded_icon, "closed_unlocked_welded")
|
||||
new_icon.Insert(door_front_icon, "door_front")
|
||||
new_icon.Insert(door_back_icon, "door_back")
|
||||
|
||||
// Set icon!
|
||||
icon = new_icon
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
name = "coffin"
|
||||
desc = "It's a burial receptacle for the dearly departed."
|
||||
icon = 'icons/obj/closets/coffin.dmi'
|
||||
|
||||
|
||||
icon_state = "closed_unlocked"
|
||||
seal_tool = /obj/item/weapon/tool/screwdriver
|
||||
breakout_sound = 'sound/weapons/tablehit1.ogg'
|
||||
closet_appearance = null // Special icon for us
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/* Graves */
|
||||
/obj/structure/closet/grave
|
||||
@@ -20,6 +21,7 @@
|
||||
max_closets = 1
|
||||
opened = 1
|
||||
closet_appearance = null // Special icon for us
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/obj/structure/closet/grave/attack_hand(mob/user as mob)
|
||||
if(opened)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/obj/structure/closet/crate/critter
|
||||
name = "critter crate"
|
||||
desc = "A crate which can sustain life for a while."
|
||||
closet_appearance = /decl/closet_appearance/large_crate/critter
|
||||
closet_appearance = /decl/closet_appearance/large_crate/critter
|
||||
door_anim_time = 0 //Unsupported
|
||||
@@ -1,7 +1,9 @@
|
||||
/obj/structure/closet/cabinet
|
||||
name = "cabinet"
|
||||
desc = "Old will forever be in fashion."
|
||||
icon = 'icons/obj/closets/bases/cabinet.dmi'
|
||||
closet_appearance = /decl/closet_appearance/cabinet
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
/obj/structure/closet/acloset
|
||||
name = "strange closet"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/structure/closet/secure_closet/freezer/kitchen
|
||||
name = "kitchen cabinet"
|
||||
req_access = list(access_kitchen)
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour = 7,
|
||||
@@ -16,6 +17,7 @@
|
||||
name = "meat fridge"
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey = 10)
|
||||
@@ -25,6 +27,7 @@
|
||||
name = "refrigerator"
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/drinks/milk = 6,
|
||||
@@ -38,6 +41,7 @@
|
||||
icon = 'icons/obj/closets/fridge.dmi'
|
||||
closet_appearance = null
|
||||
req_access = list(access_heads_vault)
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
|
||||
starts_with = list(
|
||||
|
||||
@@ -227,6 +227,7 @@
|
||||
wall_mounted = 1
|
||||
req_access = list(access_medical_equip)
|
||||
closet_appearance = /decl/closet_appearance/wall/medical
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
/obj/structure/closet/secure_closet/medical_wall/pills
|
||||
name = "pill cabinet"
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
/obj/structure/closet/secure_closet/personal/cabinet
|
||||
closet_appearance = /decl/closet_appearance/cabinet/secure
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/backpack/satchel/withwallet,
|
||||
|
||||
@@ -223,11 +223,13 @@
|
||||
name = "detective's cabinet"
|
||||
req_access = list(access_forensics_lockers)
|
||||
closet_appearance = /decl/closet_appearance/cabinet/secure
|
||||
door_anim_time = 0 //Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/accessory/badge/holo/detective,
|
||||
/obj/item/clothing/gloves/black,
|
||||
/obj/item/gunbox,
|
||||
/obj/item/weapon/gun/energy/stunrevolver/vintage,
|
||||
/obj/item/weapon/storage/belt/detective,
|
||||
/obj/item/weapon/storage/box/evidence,
|
||||
/obj/item/device/radio/headset/headset_sec,
|
||||
@@ -294,6 +296,5 @@ GLOBAL_LIST_BOILERPLATE(all_brig_closets, /obj/structure/closet/secure_closet/br
|
||||
req_access = list(access_security)
|
||||
closet_appearance = /decl/closet_appearance/wall
|
||||
density = 1
|
||||
|
||||
//too small to put a man in
|
||||
large = 0
|
||||
door_anim_time = 0 // Unsupported
|
||||
large = 0 //too small to put a man in
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
health = 0 //destroying the statue kills the mob within
|
||||
door_anim_time = 0 // Why is this a closet??
|
||||
var/intialTox = 0 //these are here to keep the mob from taking damage from things that logically wouldn't affect a rock
|
||||
var/intialFire = 0 //it's a little sloppy I know but it was this or the GODMODE flag. Lesser of two evils.
|
||||
var/intialBrute = 0
|
||||
@@ -43,7 +44,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
START_PROCESSING(SSobj, src)
|
||||
..()
|
||||
|
||||
/obj/structure/closet/statue/process()
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
anchored = 1
|
||||
density = 0
|
||||
wall_mounted = 1
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
anchored = 1
|
||||
store_mobs = 0
|
||||
wall_mounted = 1
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
//spawns 2 sets of breathmask, emergency oxy tank and crowbar
|
||||
|
||||
@@ -68,6 +69,7 @@
|
||||
wall_mounted = 1
|
||||
plane = TURF_PLANE
|
||||
layer = ABOVE_TURF_LAYER
|
||||
door_anim_time = 0 // Unsupported
|
||||
|
||||
/obj/structure/closet/walllocker_double/north
|
||||
pixel_y = 32
|
||||
@@ -108,7 +110,7 @@
|
||||
/obj/structure/closet/walllocker_double/kitchen/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
|
||||
|
||||
/obj/structure/closet/walllocker_double/medical
|
||||
name = "Medical Cabinet"
|
||||
desc = "A wall mounted medical supply cabinet. Probably full of drugs!" //not actually full of drugs, sorry!
|
||||
@@ -129,7 +131,7 @@
|
||||
/obj/structure/closet/walllocker_double/medical/east
|
||||
pixel_x = 32
|
||||
dir = EAST
|
||||
|
||||
|
||||
/obj/structure/closet/walllocker_double/hydrant
|
||||
name = "fire-safety closet"
|
||||
desc = "It's a storage cabinet packed with fire-fighting supplies."
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
closet_appearance = /decl/closet_appearance/crate
|
||||
climbable = 1
|
||||
dir = 4 //Spawn facing 'forward' by default.
|
||||
door_anim_time = 0 //Unsupported until appropriate sprites are available
|
||||
var/points_per_crate = 5
|
||||
var/rigged = 0
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
var/min_x_scale = 0.9
|
||||
var/min_y_scale = 0.9
|
||||
|
||||
var/removal_tool = /obj/item/weapon/shovel
|
||||
var/harvest_tool = null // The type of item used to harvest the plant.
|
||||
var/harvest_count = 0
|
||||
|
||||
@@ -39,21 +40,34 @@
|
||||
. = ..()
|
||||
if(harvest_count < max_harvests)
|
||||
. += get_harvestable_desc()
|
||||
if(harvest_tool)
|
||||
var/obj/item/tool = harvest_tool
|
||||
. += SPAN_NOTICE("\The [src] can be harvested with \a [initial(tool.name)].")
|
||||
|
||||
if(removal_tool)
|
||||
var/obj/item/tool = removal_tool
|
||||
. += SPAN_NOTICE("\The [src] can be removed with \a [initial(tool.name)].")
|
||||
|
||||
/obj/structure/flora/proc/get_harvestable_desc()
|
||||
return "<span class='notice'>\The [src] seems to have something hanging from it.</span>"
|
||||
|
||||
/obj/structure/flora/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
|
||||
if(can_harvest(W))
|
||||
var/harvest_spawn = pickweight(harvest_loot)
|
||||
var/atom/movable/AM = spawn_harvest(harvest_spawn, user)
|
||||
|
||||
if(!AM)
|
||||
to_chat(user, "<span class='notice'>You fail to harvest anything from \the [src].</span>")
|
||||
|
||||
if(AM)
|
||||
to_chat(user, SPAN_NOTICE("You harvest \the [AM] from \the [src]."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You harvest \the [AM] from \the [src].</span>")
|
||||
return
|
||||
to_chat(user, SPAN_NOTICE("You fail to harvest anything from \the [src]."))
|
||||
return
|
||||
|
||||
if(removal_tool && istype(W, removal_tool))
|
||||
to_chat(user, SPAN_WARNING("You start uprooting \the [src]..."))
|
||||
if(do_after(user, 30))
|
||||
visible_message(SPAN_NOTICE("\The [user] uproots and discards \the [src]!"))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
..(W, user)
|
||||
|
||||
@@ -408,19 +422,28 @@
|
||||
desc = "This is a tiny well lit decorative christmas tree."
|
||||
icon_state = "plant-xmas"
|
||||
|
||||
/obj/structure/flora/mushroom
|
||||
name = "mushroom"
|
||||
desc = "Hey, this one seems like a fun guy."
|
||||
icon_state = "mush1"
|
||||
icon = 'icons/obj/flora/mushrooms.dmi'
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/mushroomslice = 1)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
|
||||
/obj/structure/flora/mushroom/Initialize()
|
||||
. = ..()
|
||||
icon_state = "mush[rand(1,4)]"
|
||||
if(prob(50))
|
||||
adjust_scale(-1, 1)
|
||||
pixel_x = rand(-4, 4)
|
||||
|
||||
/obj/structure/flora/sif
|
||||
icon = 'icons/obj/flora/sifflora.dmi'
|
||||
|
||||
/obj/structure/flora/sif/attack_hand(mob/user)
|
||||
if (user.a_intent == I_HURT)
|
||||
if(do_after(user, 5 SECONDS))
|
||||
user.visible_message("<span class='filter_notice'>\The [user] digs up \the [src.name].", "You dig up \the [src.name].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user.visible_message("<span class='filter_notice'>\The [user] pokes \the [src.name].", "You poke \the [src.name].</span>")
|
||||
|
||||
/datum/category_item/catalogue/flora/subterranean_bulbs
|
||||
name = "Sivian Flora - Subterranean Bulbs"
|
||||
name = "Sivian Flora - Cavebulbs"
|
||||
desc = "A plant which is native to Sif, it continues the trend of being a bioluminescent specimen. These plants \
|
||||
are generally suited for conditions experienced in caverns, which are generally dark and cold. It is not \
|
||||
known why this plant evolved to be bioluminescent, however this property has, unintentionally, allowed for \
|
||||
@@ -433,19 +456,22 @@
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/subterranean
|
||||
name = "subterranean plant"
|
||||
name = "subterranean bulbs"
|
||||
desc = "This is a subterranean plant. It's bulbous ends glow faintly."
|
||||
icon_state = "glowplant"
|
||||
light_range = 2
|
||||
light_power = 0.6
|
||||
light_color = "#FF6633"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/subterranean_bulbs)
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/cavebulbs = 1)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
|
||||
/obj/structure/flora/sif/subterranean/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,2)]"
|
||||
. = ..()
|
||||
|
||||
|
||||
/datum/category_item/catalogue/flora/eyebulbs
|
||||
name = "Sivian Flora - Eyebulbs"
|
||||
desc = "A plant native to Sif. On the end of its stems are bulbs which visually resemble \
|
||||
@@ -454,10 +480,14 @@
|
||||
value = CATALOGUER_REWARD_EASY
|
||||
|
||||
/obj/structure/flora/sif/eyes
|
||||
name = "mysterious bulbs"
|
||||
desc = "This is a mysterious looking plant. They kind of look like eyeballs. Creepy."
|
||||
name = "eyebulbs"
|
||||
desc = "This is a mysterious-looking plant. They kind of look like eyeballs. Creepy."
|
||||
icon_state = "eyeplant"
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/eyebulbs)
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = 0
|
||||
harvest_loot = list(/obj/item/weapon/reagent_containers/food/snacks/grown/sif/eyebulbs = 1)
|
||||
|
||||
/obj/structure/flora/sif/eyes/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
@@ -471,20 +501,20 @@
|
||||
value = CATALOGUER_REWARD_TRIVIAL
|
||||
|
||||
/obj/structure/flora/sif/tendrils
|
||||
name = "stocky tendrils"
|
||||
name = "wabback tendrils"
|
||||
desc = "A 'plant' made up of hardened moss. It has tiny hairs that bunch together to look like snow."
|
||||
icon_state = "grass"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/mosstendrils)
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 1
|
||||
min_harvests = -4
|
||||
max_harvests = 3
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/seeds/wabback = 15,
|
||||
/obj/item/seeds/blackwabback = 1,
|
||||
/obj/item/seeds/wildwabback = 30
|
||||
)
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wabback = 15,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/blackwabback = 1,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/wildwabback = 30
|
||||
)
|
||||
|
||||
/obj/structure/flora/sif/tendrils/Initialize()
|
||||
icon_state = "[initial(icon_state)][rand(1,3)]"
|
||||
@@ -503,26 +533,24 @@
|
||||
value = CATALOGUER_REWARD_HARD
|
||||
|
||||
/obj/structure/flora/sif/frostbelle
|
||||
name = "gnarly shrub"
|
||||
name = "frostbelle shrub"
|
||||
desc = "A stocky plant with fins bearing luminescent veins along its branches."
|
||||
icon_state = "grass"
|
||||
icon_state = "frostbelle"
|
||||
randomize_size = TRUE
|
||||
catalogue_data = list(/datum/category_item/catalogue/flora/frostbelle)
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = -4
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/frostbelle = 1
|
||||
)
|
||||
)
|
||||
|
||||
var/variantnum = null
|
||||
|
||||
/obj/structure/flora/sif/frostbelle/Initialize()
|
||||
. = ..()
|
||||
|
||||
variantnum = rand(1,3)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/structure/flora/sif/frostbelle/update_icon()
|
||||
@@ -530,7 +558,6 @@
|
||||
|
||||
if(max_harvests > 0 && harvest_count < max_harvests)
|
||||
icon_state = "[initial(icon_state)][variantnum]"
|
||||
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
|
||||
@@ -271,12 +271,12 @@
|
||||
|
||||
harvest_tool = /obj/item/weapon/material/knife
|
||||
max_harvests = 2
|
||||
min_harvests = -4
|
||||
min_harvests = 0
|
||||
harvest_loot = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/siffruit = 20,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sifpod = 5,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/sif/sifpod = 5,
|
||||
/obj/item/seeds/sifbulb = 1
|
||||
)
|
||||
)
|
||||
|
||||
var/light_shift = 0
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/obj/structure/prop/esoteric
|
||||
name = "some esoteric thing"
|
||||
desc = "Perhaps it's of ritual significance?"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
|
||||
/obj/structure/prop/esoteric/nt_pedestal0_old
|
||||
name = "pedestal"
|
||||
desc = "A pedestal with a mysterious slot at its center."
|
||||
icon_state = "nt_pedestal0_old"
|
||||
|
||||
/obj/structure/prop/esoteric/nt_pedestal1_old
|
||||
name = "pedestal"
|
||||
desc = "A pedestal with some kind of sword slotted securely in the center."
|
||||
icon_state = "nt_pedestal1_old"
|
||||
|
||||
// eye of the protector from Eris
|
||||
/obj/structure/prop/esoteric/eotp
|
||||
icon = 'icons/obj/props/decor32x64.dmi'
|
||||
icon_state = "eotp"
|
||||
|
||||
// neotheology cruciform reader from Eris
|
||||
/obj/structure/prop/esoteric/reader
|
||||
name = "electronic altar"
|
||||
desc = "It looks like you're meant to scan something here."
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "nt_reader_off"
|
||||
|
||||
/obj/structure/prop/esoteric/reader/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "nt_reader_off"
|
||||
if("on")
|
||||
icon_state = "nt_reader_on"
|
||||
if("no_cruciform")
|
||||
cut_overlay("nt_reader_c_green")
|
||||
cut_overlay("nt_reader_c_red")
|
||||
if("red_cruciform")
|
||||
cut_overlay("nt_reader_c_green")
|
||||
cut_overlay("nt_reader_c_red")
|
||||
add_overlay("nt_reader_c_red")
|
||||
if("green_cruciform")
|
||||
cut_overlay("nt_reader_c_red")
|
||||
cut_overlay("nt_reader_c_green")
|
||||
add_overlay("nt_reader_c_green")
|
||||
if("panel_open")
|
||||
cut_overlay("nt_reader_panel")
|
||||
add_overlay("nt_reader_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("nt_reader_panel")
|
||||
@@ -0,0 +1,7 @@
|
||||
// fences from TGMC
|
||||
// You'll need to 'create instances from icon_states' in an editor to use these well
|
||||
/obj/structure/prop/fence
|
||||
name = "fence"
|
||||
desc = "It's a fence! Not much else to say about it."
|
||||
icon = 'icons/obj/props/decor_fences.dmi'
|
||||
|
||||
@@ -0,0 +1,564 @@
|
||||
/obj/structure/prop/machine
|
||||
name = "doodad"
|
||||
desc = "Some kind of machine."
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
|
||||
//Eris Bluespace Beacon
|
||||
|
||||
/obj/structure/prop/machine/bsb_off
|
||||
name = "beacon"
|
||||
icon_state = "bsb_off"
|
||||
|
||||
/obj/structure/prop/machine/bsb_on
|
||||
name = "beacon"
|
||||
icon_state = "bsb_on"
|
||||
|
||||
/obj/structure/prop/machine/biosyphon
|
||||
icon_state = "biosyphon"
|
||||
|
||||
/obj/structure/prop/machine/von_krabin
|
||||
icon_state = "von_krabin"
|
||||
|
||||
/obj/structure/prop/machine/last_shelter
|
||||
icon_state = "last_shelter"
|
||||
|
||||
/obj/structure/prop/machine/complicator
|
||||
icon_state = "complicator"
|
||||
|
||||
/obj/structure/prop/machine/random_radio
|
||||
name = "radio"
|
||||
icon_state = "random_radio"
|
||||
|
||||
// vatgrowing thing from /tg/
|
||||
/obj/structure/prop/machine/green_egg
|
||||
icon_state = "gel_cocoon"
|
||||
|
||||
// gravity generator from Eris
|
||||
/obj/structure/prop/machine/gravygen
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "bigdice"
|
||||
bound_width = 64
|
||||
bound_height = 64
|
||||
|
||||
// dna vault from /tg/
|
||||
/obj/structure/prop/dna_vault
|
||||
icon = 'icons/obj/props/decor96x96.dmi'
|
||||
icon_state = "vault"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Looks boring and off
|
||||
* on: candles lit and stuff
|
||||
* no_cruciform: No cruciform (the little triangle thing) inserted
|
||||
* red_cruciform: Red light cruciform inserted
|
||||
* green_cruciform: Green light cruciform inserted
|
||||
* panel_open: The panel is open (wiring)
|
||||
* panel_closed: The panel is closed
|
||||
*/
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* panel_open: The panel is opened
|
||||
* panel_closed: The panel is closed
|
||||
*/
|
||||
// neotheology cloning biocan from Eris
|
||||
/obj/structure/prop/machine/nt_biocan
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "nt_biocan"
|
||||
|
||||
/obj/structure/prop/nt_biocan/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("panel_open")
|
||||
cut_overlay("nt_biocan_panel")
|
||||
add_overlay("nt_biocan_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("nt_biocan_panel")
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* blue, red, orange, yellow, green, purple: Set that color
|
||||
* damaged: add damage overlay
|
||||
* undamaged: remove damage overlay
|
||||
* broken: become damaged
|
||||
* plain: undamaged white version, otherwise use a color
|
||||
*/
|
||||
// dominator console from /tg/
|
||||
/obj/structure/prop/dominator
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "dominator"
|
||||
|
||||
/obj/structure/prop/dominator/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("blue")
|
||||
icon_state = "dominator-blue"
|
||||
if("red")
|
||||
icon_state = "dominator-red"
|
||||
if("orange")
|
||||
icon_state = "dominator-orange"
|
||||
if("yellow")
|
||||
icon_state = "dominator-yellow"
|
||||
if("green")
|
||||
icon_state = "dominator-green"
|
||||
if("purple")
|
||||
icon_state = "dominator-purple"
|
||||
if("damaged")
|
||||
add_overlay("dom_damage")
|
||||
if("undamaged")
|
||||
cut_overlay("dom_damage")
|
||||
if("broken")
|
||||
icon_state = "dominator-broken"
|
||||
if("plain")
|
||||
icon_state = "dominator"
|
||||
|
||||
/obj/structure/prop/dominator/blue
|
||||
icon_state = "dominator-blue"
|
||||
/obj/structure/prop/dominator/red
|
||||
icon_state = "dominator-red"
|
||||
/obj/structure/prop/dominator/orange
|
||||
icon_state = "dominator-orange"
|
||||
/obj/structure/prop/dominator/yellow
|
||||
icon_state = "dominator-yellow"
|
||||
/obj/structure/prop/dominator/green
|
||||
icon_state = "dominator-green"
|
||||
/obj/structure/prop/dominator/purple
|
||||
icon_state = "dominator-purple"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Pumping or something
|
||||
*/
|
||||
// some neotheology thing from Eris
|
||||
/obj/structure/prop/machine/solifier
|
||||
icon_state = "nt_solidifier"
|
||||
|
||||
/obj/structure/prop/machine/solifier/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "nt_solidifier"
|
||||
if("on")
|
||||
icon_state = "nt_solidifier_on"
|
||||
|
||||
/obj/structure/prop/machine/solifier/starts_on
|
||||
icon_state = "nt_solidifier_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Boring, round
|
||||
* on: Spinny glowy
|
||||
*/
|
||||
// conduit of soul from Eris
|
||||
/obj/structure/prop/machine/conduit
|
||||
icon_state = "conduit_off"
|
||||
|
||||
/obj/structure/prop/machine/conduit/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("on")
|
||||
icon_state = "conduit_spin"
|
||||
flick("conduit_starting", src)
|
||||
if("off")
|
||||
icon_state = "conduit_off"
|
||||
flick("conduit_stopping", src)
|
||||
|
||||
/obj/structure/prop/machine/conduit/starts_on
|
||||
icon_state = "conduit_spin"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* on: Doing some kinda worky thing
|
||||
* off: Not doing much of anything
|
||||
* empty: No blue crystal thingy
|
||||
* loaded: off but without the animation
|
||||
*/
|
||||
// some kinda NT thing from Eris
|
||||
/obj/structure/prop/machine/core
|
||||
icon_state = "core_inactive"
|
||||
|
||||
/obj/structure/prop/machine/core/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("on")
|
||||
icon_state = "core_active"
|
||||
flick("core_warmup", src)
|
||||
if("off")
|
||||
icon_state = "core_inactive"
|
||||
flick("core_shutdown", src)
|
||||
if("empty")
|
||||
icon_state = "core_empty"
|
||||
if("loaded")
|
||||
icon_state = "core_inactive"
|
||||
|
||||
/obj/structure/prop/machine/core/starts_on
|
||||
icon_state = "core_active"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* down: In the ground, glowing
|
||||
* up: Out of the ground, open
|
||||
*/
|
||||
// experimental science destructor from /tg/
|
||||
/obj/structure/prop/machine/tube
|
||||
icon = 'icons/obj/props/decor32x64.dmi'
|
||||
icon_state = "tube_open"
|
||||
|
||||
/obj/structure/prop/machine/tube/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("down")
|
||||
icon_state = "tube_on"
|
||||
flick("tube_down", src)
|
||||
if("up")
|
||||
icon_state = "tube_open"
|
||||
flick("tube_up", src)
|
||||
|
||||
/obj/structure/prop/machine/tube/starts_down
|
||||
icon_state = "tube_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Boring, static
|
||||
* on: Turny and blinky
|
||||
*/
|
||||
// experimental science destructor from /tg/
|
||||
/obj/structure/prop/machine/comm_tower
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon = 'icons/obj/props/decor96x96.dmi'
|
||||
icon_state = "comm_tower"
|
||||
|
||||
/obj/structure/prop/machine/comm_tower/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("on")
|
||||
icon_state = "comm_tower_on"
|
||||
if("off")
|
||||
icon_state = "comm_tower"
|
||||
|
||||
/obj/structure/prop/machine/comm_tower/starts_on
|
||||
icon_state = "comm_tower_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Not doing much
|
||||
* on: Stamping mysterious substances
|
||||
*/
|
||||
// sheetizer from /tg/
|
||||
/obj/structure/prop/machine/stamper
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "stamper"
|
||||
|
||||
/obj/structure/prop/machine/stamper/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
cut_overlays()
|
||||
if("on")
|
||||
add_overlay("stamper_proc")
|
||||
add_overlay("stamper_but")
|
||||
|
||||
/obj/structure/prop/machine/stamper/starts_on
|
||||
icon_state = "stamper_on"
|
||||
|
||||
/obj/structure/prop/machine/stamper/starts_on/Initialize()
|
||||
add_overlay("stamper_proc")
|
||||
add_overlay("stamper_but")
|
||||
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* whole: Not doing much
|
||||
* broken: Stamping mysterious substances
|
||||
*/
|
||||
// alien autopsy thing from TGMC
|
||||
/obj/structure/prop/machine/alien_tank
|
||||
icon_state = "tank_larva"
|
||||
|
||||
/obj/structure/prop/machine/alien_tank/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("whole")
|
||||
icon_state = "tank_larva"
|
||||
if("broken")
|
||||
icon_state = "tank_broken"
|
||||
|
||||
/obj/structure/prop/machine/alien_tank/starts_broken
|
||||
icon_state = "tank_broken"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* idle: The default look
|
||||
* active: Glowy lights underneath
|
||||
* panel_open: Opened panel (wiring)
|
||||
* panel_closed: Closed panel
|
||||
*/
|
||||
// neotheology optable from Eris
|
||||
/obj/structure/prop/machine/nt_optable
|
||||
icon_state = "nt_optable-idle"
|
||||
|
||||
/obj/structure/prop/machine/nt_optable/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("idle")
|
||||
icon_state = "nt_optable-idle"
|
||||
if("active")
|
||||
icon_state = "nt_optable-active"
|
||||
if("panel_open")
|
||||
cut_overlay("nt_optable_panel")
|
||||
add_overlay("nt_optable_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("nt_optable_panel")
|
||||
|
||||
/obj/structure/prop/nt_optable/starts_active
|
||||
icon_state = "nt_optable-active"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* idle: The default look
|
||||
* active: Glowy lights in the center
|
||||
* panel_open: Opened panel (wiring)
|
||||
* panel_closed: Closed panel
|
||||
*/
|
||||
// trade beacon from Eris
|
||||
/obj/structure/prop/machine/tradebeacon
|
||||
icon_state = "tradebeacon"
|
||||
|
||||
/obj/structure/prop/machine/tradebeacon/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("idle")
|
||||
icon_state = "tradebeacon"
|
||||
if("active")
|
||||
icon_state = "tradebeacon_active"
|
||||
if("panel_open")
|
||||
cut_overlay("tradebeacon_panel")
|
||||
add_overlay("tradebeacon_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("tradebeacon_panel")
|
||||
|
||||
/obj/structure/prop/machine/tradebeacon/starts_active
|
||||
icon_state = "tradebeacon_active"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* idle: The default look
|
||||
* active: Glowy lights in the center
|
||||
* panel_open: Opened panel (wiring)
|
||||
* panel_closed: Closed panel
|
||||
*/
|
||||
// another trade beacon from Eris
|
||||
/obj/structure/prop/machine/tradebeacon2
|
||||
icon_state = "tradebeacon"
|
||||
|
||||
/obj/structure/prop/machine/tradebeacon2/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("idle")
|
||||
icon_state = "tradebeacon_sending"
|
||||
if("active")
|
||||
icon_state = "tradebeacon_sending_active"
|
||||
if("panel_open")
|
||||
cut_overlay("tradebeacon_sending_panel")
|
||||
add_overlay("tradebeacon_sending_panel")
|
||||
if("panel_closed")
|
||||
cut_overlay("tradebeacon_sending_panel")
|
||||
|
||||
/obj/structure/prop/machine/tradebeacon2/starts_active
|
||||
icon_state = "tradebeacon_sending_active"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Non-spinny
|
||||
* on: Spinny and floaty
|
||||
*/
|
||||
// neotheology decorative(?) obelisk from Eris
|
||||
/obj/structure/prop/machine/nt_obelisk
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "nt_obelisk"
|
||||
|
||||
/obj/structure/prop/machine/nt_obelisk/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "nt_obelisk"
|
||||
if("on")
|
||||
icon_state = "nt_obelisk_on"
|
||||
|
||||
/obj/structure/prop/machine/nt_obelisk/starts_on
|
||||
icon_state = "nt_obelisk_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Inert
|
||||
* on: Hand destroying machinery
|
||||
*/
|
||||
// 'sorter' from Eris
|
||||
/obj/structure/prop/machine/sorter
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "sorter"
|
||||
|
||||
/obj/structure/prop/machine/sorter/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "sorter"
|
||||
if("on")
|
||||
icon_state = "sorter-process"
|
||||
|
||||
/obj/structure/prop/machine/sorter/starts_on
|
||||
icon_state = "sorter-process"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Inert
|
||||
* on: Hand destroying machinery
|
||||
*/
|
||||
// 'smelter' from Eris
|
||||
/obj/structure/prop/machine/smelter
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "smelter"
|
||||
|
||||
/obj/structure/prop/machine/smelter/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "smelter"
|
||||
if("on")
|
||||
icon_state = "smelter-process"
|
||||
|
||||
/obj/structure/prop/machine/smelter/starts_on
|
||||
icon_state = "smelter-process"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* idle: Not doing anything, with yellow template exposed
|
||||
* work: busy doing work
|
||||
* pause: paused work
|
||||
*/
|
||||
// cruciform forge from Eris
|
||||
/obj/structure/prop/machine/nt_cruciforge
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "nt_cruciforge"
|
||||
|
||||
/obj/structure/prop/machine/nt_cruciforge/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("idle")
|
||||
icon_state = "nt_cruciforge"
|
||||
flick("nt_cruciforge_finish", src) // 8ds
|
||||
if("work")
|
||||
icon_state = "nt_cruciforge_work"
|
||||
flick("nt_cruciforge_start", src) // 8ds
|
||||
if("pause")
|
||||
icon_state = "nt_cruciforge_pause"
|
||||
|
||||
/obj/structure/prop/machine/nt_cruciforge/starts_working
|
||||
icon_state = "nt_cruciforge_work"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Showing a display/powered up
|
||||
*/
|
||||
// A console from TGMC
|
||||
/obj/structure/prop/machine/tgmc_console1
|
||||
name = "console"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "tgmc_console1"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console1/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "tgmc_console1"
|
||||
if("on")
|
||||
icon_state = "tgmc_console1_on"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console1/starts_on
|
||||
icon_state = "tgmc_console1_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Showing a display/powered up
|
||||
*/
|
||||
// A console from TGMC
|
||||
/obj/structure/prop/machine/tgmc_console2
|
||||
name = "console"
|
||||
icon_state = "tgmc_console2"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console2/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "tgmc_console2"
|
||||
if("on")
|
||||
icon_state = "tgmc_console2_on"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console2/starts_on
|
||||
icon_state = "tgmc_console2_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Showing a display/powered up
|
||||
*/
|
||||
// A console from TGMC
|
||||
/obj/structure/prop/machine/tgmc_console3
|
||||
name = "console"
|
||||
icon_state = "tgmc_console3"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console3/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "tgmc_console3"
|
||||
if("on")
|
||||
icon_state = "tgmc_console3_on"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console3/starts_on
|
||||
icon_state = "tgmc_console3_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Showing a display/powered up
|
||||
*/
|
||||
// A console from TGMC
|
||||
/obj/structure/prop/machine/tgmc_console4
|
||||
name = "console"
|
||||
icon_state = "tgmc_console4"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console4/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "tgmc_console4"
|
||||
if("on")
|
||||
icon_state = "tgmc_console4_on"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console4/starts_on
|
||||
icon_state = "tgmc_console4_on"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* off: Default, boring
|
||||
* on: Showing a display/powered up
|
||||
*/
|
||||
// A console from TGMC
|
||||
/obj/structure/prop/machine/tgmc_console5
|
||||
name = "console"
|
||||
icon_state = "tgmc_console5"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console5/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("off")
|
||||
icon_state = "tgmc_console5"
|
||||
if("on")
|
||||
icon_state = "tgmc_console5_on"
|
||||
|
||||
/obj/structure/prop/machine/tgmc_console5/starts_on
|
||||
icon_state = "tgmc_console5_on"
|
||||
@@ -1,13 +1,26 @@
|
||||
//The base 'prop' for PoIs or other large junk.
|
||||
/**
|
||||
* Decorative items for PoIs etc.
|
||||
* These are generally sprites ported from other servers, which don't have any unique code.
|
||||
* They can be used by mappers for decorating their maps. They're mostly here so people who aren't
|
||||
* rummaging around in the sprites can be aware of some neat sprites they can use.
|
||||
*
|
||||
* Obviously you can swipe the sprites for real structures and add code, but please don't add any code
|
||||
* (beyond decorative things like maybe light) directly to these types or this file!
|
||||
* Take the icon and state and make your own type under /obj/structure.
|
||||
*
|
||||
* Some of these do have a SMIDGE of code to allow a mapper to twirl them through states/animations without
|
||||
* much effort, but beyond 'visuals logic', I'd rather keep all the logic out of here.
|
||||
*/
|
||||
|
||||
/obj/structure/prop
|
||||
name = "something"
|
||||
desc = "My description is broken, bug a developer."
|
||||
name = "mysterious structure"
|
||||
desc = "You're not sure what this is."
|
||||
icon = 'icons/obj/structures.dmi'
|
||||
icon_state = "safe"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
var/interaction_message = null
|
||||
var/state
|
||||
|
||||
/obj/structure/prop/attack_hand(mob/living/user) // Used to tell the player that this isn't useful for anything.
|
||||
if(!istype(user))
|
||||
@@ -16,3 +29,41 @@
|
||||
return ..()
|
||||
else
|
||||
to_chat(user, interaction_message)
|
||||
|
||||
/obj/structure/prop/proc/change_state(state)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
src.state = state
|
||||
|
||||
/// Helper so admins can varedit the state easily.
|
||||
/obj/structure/prop/vv_edit_var(var_name, var_value)
|
||||
if(var_name == "state")
|
||||
change_state(var_value)
|
||||
|
||||
|
||||
//Misc stuff that fits no category
|
||||
|
||||
// ship memorial from TGMC
|
||||
/obj/structure/prop/memorial
|
||||
name = "engraved wall"
|
||||
desc = "A finely engraved list on dark stone."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "ship_memorial"
|
||||
bound_width = 64
|
||||
|
||||
/**
|
||||
*
|
||||
Notes on change_state
|
||||
*
|
||||
* tl;dr "You can varedit 'state' on these to the things in the comments below to get cool animations"
|
||||
*
|
||||
* These items have some logic to handle some fun animations on them. Mappers can call the 'change_state(state)' proc
|
||||
* while referring to the comments here for what states they can use. You'll notice some crazy overlay handling,
|
||||
* and that's because I don't want to add any vars to these mappers think they can fiddle with, which requires
|
||||
* more logic than I'm willing to do at the moment. So we get crazy cut/add operations instead.
|
||||
*
|
||||
* There's also a VV helper so if you varedit 'state' to these during the game, you can get that to work.
|
||||
*
|
||||
* Like, I don't want to add a state machine to decorative objects. You can if you want.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
@@ -38,4 +38,15 @@
|
||||
density = FALSE
|
||||
|
||||
/obj/structure/prop/rock/small/wateralt
|
||||
icon_state = "waterrocks2"
|
||||
icon_state = "waterrocks2"
|
||||
|
||||
// bluespace crystal from Eris
|
||||
/obj/structure/prop/crystal
|
||||
name = "crystal"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "bsc"
|
||||
|
||||
/obj/structure/prop/crystal_dust
|
||||
name = "crystal dust"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "bsc_dust"
|
||||
@@ -0,0 +1,65 @@
|
||||
//Eris statues
|
||||
|
||||
/obj/structure/prop/statue
|
||||
name = "statue"
|
||||
desc = "It's art!"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "artwork_statue"
|
||||
|
||||
/obj/structure/prop/statue/statue1
|
||||
icon_state = "artwork_statue_1"
|
||||
|
||||
/obj/structure/prop/statue/statue2
|
||||
icon_state = "artwork_statue_2"
|
||||
|
||||
/obj/structure/prop/statue/statue3
|
||||
icon_state = "artwork_statue_3"
|
||||
|
||||
/obj/structure/prop/statue/statue4
|
||||
icon_state = "artwork_statue_4"
|
||||
|
||||
/obj/structure/prop/statue/statue5
|
||||
icon_state = "artwork_statue_5"
|
||||
|
||||
//TGMC Ship Mast
|
||||
|
||||
/obj/structure/prop/statue/stump_plaque
|
||||
name = "commemorative stump"
|
||||
desc = "A wooden stump adorned with a little plaque."
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "stump"
|
||||
|
||||
//World Server statues
|
||||
|
||||
/obj/structure/prop/statue
|
||||
name = "statue"
|
||||
desc = "A statue."
|
||||
icon = 'icons/obj/props/decor32x64.dmi'
|
||||
icon_state = "venus"
|
||||
|
||||
/obj/structure/prop/statue/lion
|
||||
icon_state = "lion"
|
||||
|
||||
/obj/structure/prop/statue/angel
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
icon_state = "angel"
|
||||
|
||||
/obj/structure/prop/statue/phoron
|
||||
name = "phoronic cascade"
|
||||
desc = "A sculpture made of pure phoron. It is covered in a lacquer that prevents erosion and renders it fireproof. It's safe. Probably."
|
||||
icon_state = "phoronic"
|
||||
layer = ABOVE_WINDOW_LAYER
|
||||
interaction_message = "<span class = 'notice'>Cool to touch and unbelievable smooth. You can almost see your reflection in it.</span>"
|
||||
|
||||
/obj/structure/prop/statue/phoron/New()
|
||||
set_light(2, 3, "#cc66ff")
|
||||
|
||||
/obj/structure/prop/statue/pillar
|
||||
name = "pillar"
|
||||
desc = "A pillar."
|
||||
icon_state = "pillar"
|
||||
|
||||
/obj/structure/prop/statue/pillar/dark
|
||||
name = "pillar"
|
||||
desc = "A dark pillar."
|
||||
icon_state = "dark_pillar"
|
||||
@@ -0,0 +1,167 @@
|
||||
/obj/structure/prop/war
|
||||
name = "military hardware"
|
||||
desc = "What is it good for?"
|
||||
icon = 'icons/obj/props/decor.dmi'
|
||||
|
||||
// warheads from TGMC
|
||||
/obj/structure/prop/war/warhead1
|
||||
name = "nuclear warhead"
|
||||
icon_state = "ob_warhead_1"
|
||||
|
||||
/obj/structure/prop/war/warhead2
|
||||
name = "incindiary warhead"
|
||||
icon_state = "ob_warhead_2"
|
||||
|
||||
/obj/structure/prop/war/warhead3
|
||||
name = "bluespace warhead"
|
||||
icon_state = "ob_warhead_3"
|
||||
|
||||
/obj/structure/prop/war/warhead4
|
||||
name = "phoron warhead"
|
||||
icon_state = "ob_warhead_4"
|
||||
|
||||
// minirocket pod from TGMC
|
||||
/obj/structure/prop/war/minirocket_pod
|
||||
name = "rocket pod"
|
||||
icon_state = "minirocket_pod"
|
||||
|
||||
// sentry console from TGMC
|
||||
/obj/structure/prop/war/sentry_control
|
||||
name = "portable sentry gun"
|
||||
desc = "Needs a dispenser."
|
||||
icon_state = "tgmc_sentry"
|
||||
|
||||
// various weapons from TGMC
|
||||
/obj/structure/prop/war/tgmc_missile
|
||||
name = "missile"
|
||||
desc = "It seems to be some sort of spacecraft-tier ordinance."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "single"
|
||||
bound_width = 64
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile/double
|
||||
icon_state = "widowmaker"
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile/banshee
|
||||
icon_state = "banshee"
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile/keeper
|
||||
icon_state = "keeper"
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile/fatty
|
||||
icon_state = "fatty"
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile/napalm
|
||||
icon_state = "napalm"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* empty, single, banshee, keeper, fatty, napalm
|
||||
*/
|
||||
// ship weapons from TGMC
|
||||
/obj/structure/prop/tgmc_missile_rack
|
||||
name = "missile launcher"
|
||||
desc = "Some sort of spacecraft-tier missile weapon."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "rocket_pod"
|
||||
bound_height = 64
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile_rack/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("empty")
|
||||
icon_state = "rocket_pod"
|
||||
if("single")
|
||||
icon_state = "rocket_pod_loaded"
|
||||
if("banshee")
|
||||
icon_state = "rocket_pod_loadedb"
|
||||
if("keeper")
|
||||
icon_state = "rocket_pod_loadedk"
|
||||
if("fatty")
|
||||
icon_state = "rocket_pod_loadedf"
|
||||
if("napalm")
|
||||
icon_state = "rocket_pod_loadedn"
|
||||
|
||||
/obj/structure/prop/war/tgmc_missile_rack/single
|
||||
icon_state = "rocket_pod_loaded"
|
||||
/obj/structure/prop/war/tgmc_missile_rack/banshee
|
||||
icon_state = "rocket_pod_loadedb"
|
||||
/obj/structure/prop/war/tgmc_missile_rack/keeper
|
||||
icon_state = "rocket_pod_loadedk"
|
||||
/obj/structure/prop/war/tgmc_missile_rack/fatty
|
||||
icon_state = "rocket_pod_loadedf"
|
||||
/obj/structure/prop/war/tgmc_missile_rack/napalm
|
||||
icon_state = "rocket_pod_loadedn"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* empty, loaded
|
||||
*/
|
||||
// ship weapons from TGMC
|
||||
/obj/structure/prop/war/tgmc_minirockets
|
||||
name = "rocket pod"
|
||||
desc = "Some sort of spacecraft-tier rocket weapon."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "minirocket_pod"
|
||||
bound_height = 64
|
||||
|
||||
/obj/structure/prop/war/tgmc_minirockets/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("empty")
|
||||
icon_state = "minirocket_pod"
|
||||
if("loaded")
|
||||
icon_state = "minirocket_pod_loaded"
|
||||
|
||||
/obj/structure/prop/war/tgmc_minirockets/loaded
|
||||
icon_state = "minirocket_pod_loaded"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* empty, loaded
|
||||
*/
|
||||
// ship weapons from TGMC
|
||||
/obj/structure/prop/war/tgmc_laser
|
||||
name = "laser cannon"
|
||||
desc = "Some sort of spacecraft-tier energy weapon."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "laser_beam"
|
||||
bound_height = 64
|
||||
|
||||
/obj/structure/prop/war/tgmc_laser/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("empty")
|
||||
icon_state = "laser_beam"
|
||||
if("loaded")
|
||||
icon_state = "laser_beam_loaded"
|
||||
|
||||
/obj/structure/prop/war/tgmc_laser/loaded
|
||||
icon_state = "laser_beam_loaded"
|
||||
|
||||
/**
|
||||
* Possible 'state' options for change_state(state) are:
|
||||
* empty, loaded, loadedempty
|
||||
*/
|
||||
// ship weapons from TGMC
|
||||
/obj/structure/prop/war/tgmc_30mm
|
||||
name = "30mm cannon"
|
||||
desc = "Some sort of spacecraft-tier rotary cannon weapon."
|
||||
icon = 'icons/obj/props/decor64x64.dmi'
|
||||
icon_state = "30mm_cannon"
|
||||
bound_height = 64
|
||||
|
||||
/obj/structure/prop/war/tgmc_30mm/change_state(state)
|
||||
. = ..()
|
||||
switch(state)
|
||||
if("empty")
|
||||
icon_state = "30mm_cannon"
|
||||
if("loaded")
|
||||
icon_state = "30mm_cannon_loaded1"
|
||||
if("loadedempty")
|
||||
icon_state = "30mm_cannon_loaded0"
|
||||
|
||||
/obj/structure/prop/war/tgmc_30mm/loaded
|
||||
icon_state = "30mm_cannon_loaded1"
|
||||
/obj/structure/prop/war/tgmc_30mm/loadedempty
|
||||
icon_state = "30mm_cannon_loaded0"
|
||||
@@ -126,6 +126,13 @@
|
||||
playsound(src, W.usesound, 100, 1)
|
||||
remove_padding()
|
||||
|
||||
else if(istype(W, /obj/item/weapon/disk) || (istype(W, /obj/item/toy/plushie)))
|
||||
user.drop_from_inventory(W, get_turf(src))
|
||||
W.pixel_x = 10 //make sure they reach the pillow
|
||||
W.pixel_y = -6
|
||||
if(istype(W, /obj/item/weapon/disk))
|
||||
user.visible_message("<span class='notice'>[src] sleeps soundly. Sleep tight, disky.</span>")
|
||||
|
||||
else if(istype(W, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = W
|
||||
var/mob/living/affecting = G.affecting
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/structure/toilet/update_icon()
|
||||
icon_state = "toilet[initial(icon_state)][open][cistern]"
|
||||
icon_state = "[initial(icon_state)][open][cistern]"
|
||||
|
||||
/obj/structure/toilet/attackby(obj/item/I as obj, mob/living/user as mob)
|
||||
if(I.is_crowbar())
|
||||
|
||||
Reference in New Issue
Block a user