Merge branch 'master' of https://github.com/Yawn-Wider/YWPolarisVore into August2020UpstreamPull

August2020UpstreamPull
This commit is contained in:
Razgriz
2020-08-09 02:58:18 -07:00
915 changed files with 253357 additions and 90809 deletions
@@ -5,6 +5,8 @@
plane = DIRTY_PLANE
anchored = 1
var/amount = 1
generic_filth = TRUE
persistent = FALSE
/obj/effect/decal/cleanable/liquid_fuel/New(turf/newLoc,amt=1,nologs=1)
if(!nologs)
@@ -20,6 +20,8 @@ var/global/list/image/splatter_cache=list()
var/synthblood = 0
var/list/datum/disease2/disease/virus2 = list()
var/amount = 5
generic_filth = TRUE
persistent = FALSE
/obj/effect/decal/cleanable/blood/reveal_blood()
if(!fluorescent)
@@ -5,6 +5,8 @@
icon_state = "gib1"
basecolor = SYNTH_BLOOD_COLOUR
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6", "gib7")
generic_filth = FALSE
persistent = FALSE
/obj/effect/decal/cleanable/blood/gibs/robot/update_icon()
color = "#FFFFFF"
@@ -39,6 +41,8 @@
/obj/effect/decal/cleanable/blood/oil
basecolor = SYNTH_BLOOD_COLOUR
generic_filth = FALSE
persistent = FALSE
/obj/effect/decal/cleanable/blood/oil/dry()
return
@@ -1,7 +1,22 @@
/obj/effect/decal/cleanable
plane = DIRTY_PLANE
var/persistent = FALSE
var/generic_filth = FALSE
var/age = 0
var/list/random_icon_states = list()
/obj/effect/decal/cleanable/Initialize(var/ml, var/_age)
if(!isnull(_age))
age = _age
if(random_icon_states && length(src.random_icon_states) > 0)
src.icon_state = pick(src.random_icon_states)
SSpersistence.track_value(src, /datum/persistent/filth)
. = ..()
/obj/effect/decal/cleanable/Destroy()
SSpersistence.forget_value(src, /datum/persistent/filth)
. = ..()
/obj/effect/decal/cleanable/clean_blood(var/ignore = 0)
if(!ignore)
qdel(src)
@@ -22,10 +22,6 @@
icon_state = "sbsposter6"
name = "Mawletta"
desc = "The best view in the system."
/datum/poster/vore_7
icon_state = "sbsposter7"
name = "Sam FEAR"
desc = "A poster of the most dangerous cat working for NT."
/datum/poster/vore_8
icon_state = "sbsposter8"
name = "Shitty Timbs"
@@ -34,10 +30,6 @@
icon_state = "sbsposter9"
name = "Shitty Tim"
desc = "A Shitty Tim concert poster."
/datum/poster/vore_10
icon_state = "sbsposter10"
name = "Kitty Kisuke"
desc = "A poster of famous redspace researcher, Kisuke Gema."
/datum/poster/vore_11
icon_state = "sbsposter11"
name = "Fear"
+51
View File
@@ -0,0 +1,51 @@
/obj/item/toy/tennis
name = "tennis ball"
desc = "A classic tennis ball; a hollow rubber sphere covered in felt. This one has seen better days, and seems to have lost most of its bounce."
icon = 'icons/obj/balls_vr.dmi'
icon_state = "tennis_classic"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/righthand_balls_vr.dmi',
slot_r_hand_str = 'icons/mob/items/lefthand_balls_vr.dmi',
slot_wear_mask_str = 'icons/mob/mouthball_vr.dmi',
)
item_state = "tennis_classic"
slot_flags = SLOT_MASK
throw_range = 14
w_class = ITEMSIZE_SMALL
/obj/item/toy/tennis/red
name = "red tennis ball"
desc = "A red tennis ball. It goes twice as fast!"
icon_state = "tennis_red"
item_state = "tennis_red"
throw_speed = 8 //base throw_speed is 4, and that's already super fast
/obj/item/toy/tennis/yellow
name = "yellow tennis ball"
desc = "A yellow tennis ball. Or is it orange? Orangey-yellow?"
icon_state = "tennis_yellow"
item_state = "tennis_yellow"
/obj/item/toy/tennis/green
name = "green tennis ball"
desc = "A bright green tennis ball. Tastes faintly of lime... or maybe soap."
icon_state = "tennis_green"
item_state = "tennis_green"
/obj/item/toy/tennis/cyan
name = "cyan tennis ball"
desc = "A cyan tennis ball. What a curious color choice."
icon_state = "tennis_cyan"
item_state = "tennis_cyan"
/obj/item/toy/tennis/blue
name = "blue tennis ball"
desc = "A blue tennis ball. Who makes blue tennis balls anyway?"
icon_state = "tennis_blue"
item_state = "tennis_blue"
/obj/item/toy/tennis/purple
name = "purple tennis ball"
desc = "A purple tennis ball. Now you've seen everything. Purple, seriously?"
icon_state = "tennis_purple"
item_state = "tennis_purple"
+4 -1
View File
@@ -519,7 +519,10 @@ var/list/civilian_cartridges = list(
if(bl.z != cl.z)
continue
var/direction = get_dir(src,B)
CartData[++CartData.len] = list("x" = bl.x, "y" = bl.y, "dir" = uppertext(dir2text(direction)), "status" = B.reagents.total_volume/100)
var/status = "No Bucket"
if(B.mybucket)
status = B.mybucket.reagents.total_volume / 100
CartData[++CartData.len] = list("x" = bl.x, "y" = bl.y, "dir" = uppertext(dir2text(direction)), "status" = status)
if(!CartData.len)
CartData[++CartData.len] = list("x" = 0, "y" = 0, dir=null, status = null)
@@ -10,7 +10,7 @@
origin_tech = list(TECH_ILLEGAL = 4, TECH_MAGNET = 4)
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
var/saved_item = /obj/item/weapon/cigbutt
var/saved_item = /obj/item/trash/cigbutt
var/saved_icon = 'icons/obj/clothing/masks.dmi'
var/saved_icon_state = "cigbutt"
var/saved_overlays
+4 -4
View File
@@ -271,8 +271,8 @@
//Checks for various conditions to see if the mob is revivable
/obj/item/weapon/shockpaddles/proc/can_defib(mob/living/carbon/human/H) //This is checked before doing the defib operation
if((H.species.flags & NO_SCAN))
return "buzzes, \"Unrecogized physiology. Operation aborted.\""
if((H.species.flags & NO_DEFIB))
return "buzzes, \"Incompatible physiology. Operation aborted.\""
else if(H.isSynthetic() && !use_on_synthetic)
return "buzzes, \"Synthetic Body. Operation aborted.\""
else if(!H.isSynthetic() && use_on_synthetic)
@@ -338,14 +338,14 @@
if(!heart)
return TRUE
var/blood_volume = round((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100)
var/blood_volume = H.vessel.get_reagent_amount("blood")
if(!heart || heart.is_broken())
blood_volume *= 0.3
else if(heart.is_bruised())
blood_volume *= 0.7
else if(heart.damage > 1)
blood_volume *= 0.8
return blood_volume < BLOOD_VOLUME_SURVIVE
return blood_volume < H.species.blood_volume*H.species.blood_level_fatal
/obj/item/weapon/shockpaddles/proc/check_charge(var/charge_amt)
return 0
+1 -1
View File
@@ -138,7 +138,7 @@
for(var/mob/living/carbon/M in oviewers(4, T))
if(M.get_ear_protection() >= 2)
continue
M.sleeping = 0
M.SetSleeping(0)
M.stuttering += 20
M.ear_deaf += 30
M.Weaken(3)
+6 -12
View File
@@ -155,8 +155,8 @@ var/global/list/default_medbay_channels = list(
data["freq"] = format_frequency(frequency)
data["rawfreq"] = num2text(frequency)
data["mic_cut"] = (wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL))
data["spk_cut"] = (wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL))
data["mic_cut"] = (wires.is_cut(WIRE_RADIO_TRANSMIT) || wires.is_cut(WIRE_RADIO_SIGNAL))
data["spk_cut"] = (wires.is_cut(WIRE_RADIO_RECEIVER) || wires.is_cut(WIRE_RADIO_SIGNAL))
var/list/chanlist = list_channels(user)
if(islist(chanlist) && chanlist.len)
@@ -215,12 +215,6 @@ var/global/list/default_medbay_channels = list(
/mob/observer/dead/has_internal_radio_channel_access(var/list/req_one_accesses)
return can_admin_interact()
/obj/item/device/radio/proc/text_wires()
if (b_stat)
return wires.GetInteractWindow()
return
/obj/item/device/radio/proc/text_sec_channel(var/chan_name, var/chan_stat)
var/list = !!(chan_stat&FREQ_LISTENING)!=0
return {"
@@ -229,10 +223,10 @@ var/global/list/default_medbay_channels = list(
"}
/obj/item/device/radio/proc/ToggleBroadcast()
broadcasting = !broadcasting && !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL))
broadcasting = !broadcasting && !(wires.is_cut(WIRE_RADIO_TRANSMIT) || wires.is_cut(WIRE_RADIO_SIGNAL))
/obj/item/device/radio/proc/ToggleReception()
listening = !listening && !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL))
listening = !listening && !(wires.is_cut(WIRE_RADIO_RECEIVER) || wires.is_cut(WIRE_RADIO_SIGNAL))
/obj/item/device/radio/CanUseTopic()
if(!on)
@@ -337,7 +331,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
// Uncommenting this. To the above comment:
// The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom
if(wires.IsIndexCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact
if(wires.is_cut(WIRE_RADIO_TRANSMIT)) // The device has to have all its wires and shit intact
return FALSE
if(!radio_connection)
@@ -541,7 +535,7 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
// check if this radio can receive on the given frequency, and if so,
// what the range is in which mobs will hear the radio
// returns: -1 if can't receive, range otherwise
if(wires.IsIndexCut(WIRE_RECEIVE))
if(wires.is_cut(WIRE_RADIO_RECEIVER))
return -1
if(!listening)
return -1
@@ -0,0 +1,7 @@
/obj/item/device/bluespaceradio/cryogaia_prelinked
name = "bluespace radio (Cryogaia)"
handset = /obj/item/device/radio/bluespacehandset/linked/cryogaia_prelinked
/obj/item/device/radio/bluespacehandset/linked/cryogaia_prelinked
bs_tx_preload_id = "cryogaia_rx" //Transmit to a receiver
bs_rx_preload_id = "cryogaia_tx" //Recveive from a transmitter
@@ -128,7 +128,7 @@
//Only care about megabroadcasts or things that are targeted at us
if(!(0 in level))
return -1
if(wires.IsIndexCut(WIRE_RECEIVE))
if(wires.is_cut(WIRE_RADIO_RECEIVER))
return -1
if(!listening)
return -1
+4 -2
View File
@@ -272,9 +272,11 @@ HALOGEN COUNTER - Radcount on mobs
var/blood_volume = H.vessel.get_reagent_amount("blood")
var/blood_percent = round((blood_volume / H.species.blood_volume)*100)
var/blood_type = H.dna.b_type
if(blood_percent <= BLOOD_VOLUME_BAD)
if(blood_volume <= H.species.blood_volume*H.species.blood_level_danger)
dat += "<span class='danger'><i>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
else if(blood_percent <= BLOOD_VOLUME_SAFE)
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_warning)
dat += "<span class='danger'><i>Warning: Blood Level VERY LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</i></span><br>"
else if(blood_volume <= H.species.blood_volume*H.species.blood_level_safe)
dat += "<span class='danger'>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
else
dat += "<span class='notice'>Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]</span><br>"
@@ -326,7 +326,7 @@
var/televored = FALSE
if(isbelly(real_dest))
var/obj/belly/B = real_dest
if(!target.can_be_drop_prey && B.owner != user)
if(!(target.can_be_drop_prey) && B.owner != user)
to_chat(target,"<span class='warning'>\The [src] narrowly avoids teleporting you right into \a [lowertext(real_dest.name)]!</span>")
real_dest = dT //Nevermind!
else
+121 -16
View File
@@ -1,3 +1,9 @@
#define JAR_NOTHING 0
#define JAR_MONEY 1
#define JAR_ANIMAL 2
#define JAR_SPIDER 3
/obj/item/glass_jar
name = "glass jar"
desc = "A small empty jar."
@@ -27,7 +33,7 @@
var/mob/L = A
user.visible_message("<span class='notice'>[user] scoops [L] into \the [src].</span>", "<span class='notice'>You scoop [L] into \the [src].</span>")
L.loc = src
contains = 2
contains = JAR_ANIMAL
update_icon()
return
else if(istype(A, /obj/effect/spider/spiderling))
@@ -35,40 +41,40 @@
user.visible_message("<span class='notice'>[user] scoops [S] into \the [src].</span>", "<span class='notice'>You scoop [S] into \the [src].</span>")
S.loc = src
STOP_PROCESSING(SSobj, S) // No growing inside jars
contains = 3
contains = JAR_SPIDER
update_icon()
return
/obj/item/glass_jar/attack_self(var/mob/user)
switch(contains)
if(1)
if(JAR_MONEY)
for(var/obj/O in src)
O.loc = user.loc
to_chat(user, "<span class='notice'>You take money out of \the [src].</span>")
contains = 0
contains = JAR_NOTHING
update_icon()
return
if(2)
if(JAR_ANIMAL)
for(var/mob/M in src)
M.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [M] from \the [src].</span>", "<span class='notice'>You release [M] from \the [src].</span>")
contains = 0
contains = JAR_NOTHING
update_icon()
return
if(3)
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
S.loc = user.loc
user.visible_message("<span class='notice'>[user] releases [S] from \the [src].</span>", "<span class='notice'>You release [S] from \the [src].</span>")
START_PROCESSING(SSobj, S) // They can grow after being let out though
contains = 0
contains = JAR_NOTHING
update_icon()
return
/obj/item/glass_jar/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/weapon/spacecash))
if(contains == 0)
contains = 1
if(contains != 1)
if(contains == JAR_NOTHING)
contains = JAR_MONEY
if(contains != JAR_MONEY)
return
var/obj/item/weapon/spacecash/S = W
user.visible_message("<span class='notice'>[user] puts [S.worth] [S.worth > 1 ? "thalers" : "thaler"] into \the [src].</span>")
@@ -80,10 +86,10 @@
underlays.Cut()
overlays.Cut()
switch(contains)
if(0)
if(JAR_NOTHING)
name = initial(name)
desc = initial(desc)
if(1)
if(JAR_MONEY)
name = "tip jar"
desc = "A small jar with money inside."
for(var/obj/item/weapon/spacecash/S in src)
@@ -92,7 +98,7 @@
money.pixel_y = rand(-6, 6)
money.transform *= 0.6
underlays += money
if(2)
if(JAR_ANIMAL)
for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state)
victim.pixel_y = 6
@@ -105,10 +111,109 @@
underlays += victim
name = "glass jar with [M]"
desc = "A small jar with [M] inside."
if(3)
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
var/image/victim = image(S.icon, S.icon_state)
underlays += victim
name = "glass jar with [S]"
desc = "A small jar with [S] inside."
return
return
/obj/item/glass_jar/fish
name = "glass tank"
desc = "A large glass tank."
var/filled = FALSE
w_class = ITEMSIZE_NORMAL
accept_mobs = list(/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/mouse, /mob/living/simple_mob/animal/sif/leech, /mob/living/simple_mob/animal/sif/frostfly, /mob/living/simple_mob/animal/sif/glitterfly, /mob/living/simple_mob/animal/passive/fish)
/obj/item/glass_jar/fish/plastic
name = "plastic tank"
desc = "A large plastic tank."
matter = list("plastic" = 4000)
/obj/item/glass_jar/fish/update_icon() // Also updates name and desc
underlays.Cut()
overlays.Cut()
if(filled)
underlays += image(icon, "[icon_state]_water")
switch(contains)
if(JAR_NOTHING)
name = initial(name)
desc = initial(desc)
if(JAR_MONEY)
name = "tip tank"
desc = "A large [name] with money inside."
for(var/obj/item/weapon/spacecash/S in src)
var/image/money = image(S.icon, S.icon_state)
money.pixel_x = rand(-2, 3)
money.pixel_y = rand(-6, 6)
money.transform *= 0.6
underlays += money
if(JAR_ANIMAL)
for(var/mob/M in src)
var/image/victim = image(M.icon, M.icon_state)
var/initial_x_scale = M.icon_scale_x
var/initial_y_scale = M.icon_scale_y
M.adjust_scale(0.7)
victim.appearance = M.appearance
M.adjust_scale(initial_x_scale, initial_y_scale)
victim.pixel_y = 4
underlays += victim
name = "[name] with [M]"
desc = "A large [name] with [M] inside."
if(JAR_SPIDER)
for(var/obj/effect/spider/spiderling/S in src)
var/image/victim = image(S.icon, S.icon_state)
underlays += victim
name = "[name] with [S]"
desc = "A large tank with [S] inside."
if(filled)
desc = "[desc] It contains water."
return
/obj/item/glass_jar/fish/afterattack(var/atom/A, var/mob/user, var/proximity)
if(!filled)
if(istype(A, /obj/structure/sink) || istype(A, /turf/simulated/floor/water))
if(contains && user.a_intent == "help")
to_chat(user, "<span class='warning'>That probably isn't the best idea.</span>")
return
to_chat(user, "<span class='notice'>You fill \the [src] with water!</span>")
filled = TRUE
update_icon()
return
return ..()
/obj/item/glass_jar/fish/attack_self(var/mob/user)
if(filled)
if(contains == JAR_ANIMAL)
if(user.a_intent == "help")
to_chat(user, "<span class='notice'>Maybe you shouldn't empty the water...</span>")
return
else
filled = FALSE
user.visible_message("<span class='warning'>[user] dumps out \the [src]'s water!</span>")
update_icon()
return
else
user.visible_message("<span class='notice'>[user] dumps \the [src]'s water.</span>")
filled = FALSE
update_icon()
return
return ..()
#undef JAR_NOTHING
#undef JAR_MONEY
#undef JAR_ANIMAL
#undef JAR_SPIDER
+4 -2
View File
@@ -25,7 +25,9 @@
user.visible_message("<span class='notice'>[user] presses a button on [src]!</span>")
desc = desc + " This one seems to be used-up."
spent = TRUE
user.visible_message("<span class='notice'>A small bluespace rift opens just above your head and spits out a pizza box!</span>")
user.visible_message("<span class='notice'>A small bluespace rift opens just above [user]'s head and spits out a pizza box!</span>",
"<span class='notice'>A small bluespace rift opens just above your head and spits out a pizza box!</span>",
"<span class='notice'>You hear a fwoosh followed by a thump.</span>")
if(special_delivery)
command_announcement.Announce("SPECIAL DELIVERY PIZZA ORDER #[rand(1000,9999)]-[rand(100,999)] HAS BEEN RECIEVED. SHIPMENT DISPATCHED VIA EXTRA-POWERFUL BALLISTIC LAUNCHERS FOR IMMEDIATE DELIVERY! THANK YOU AND ENJOY YOUR PIZZA!", "WE ALWAYS DELIVER!")
new /obj/effect/falling_effect/pizza_delivery/special(user.loc)
@@ -59,4 +61,4 @@
return INITIALIZE_HINT_LATELOAD
/obj/effect/falling_effect/pizza_delivery/special
crushing = TRUE
crushing = TRUE
@@ -6,7 +6,8 @@
R.add_language(LANGUAGE_ECUREUILIAN, 1)
R.add_language(LANGUAGE_DAEMON, 1)
R.add_language(LANGUAGE_ENOCHIAN, 1)
R.add_language(LANGUAGE_SLAVIC, 1)
R.add_language(LANGUAGE_SLAVIC, 1)
R.add_language(LANGUAGE_DRUDAKAR, 1)
return 1
else
return 0
+74
View File
@@ -1445,3 +1445,77 @@
force = 1
throwforce = 1
drop_sound = 'sound/items/drop/box.ogg'
//////////////////////////////////////////////////////
// Chess Pieces //
//////////////////////////////////////////////////////
/obj/item/toy/chess
name = "chess piece"
desc = "This should never display."
icon = 'icons/obj/chess.dmi'
w_class = ITEMSIZE_SMALL
force = 1
throwforce = 1
drop_sound = 'sound/items/drop/glass.ogg'
/obj/item/toy/chess/pawn_white
name = "blue pawn"
desc = "A large pawn piece for playing chess. It's made of a blue-colored glass."
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
icon_state = "w-pawn"
/obj/item/toy/chess/pawn_black
name = "purple pawn"
desc = "A large pawn piece for playing chess. It's made of a purple-colored glass."
description_info = "Pawns can move forward one square, if that square is unoccupied. If the pawn has not yet moved, it has the option of moving two squares forward provided both squares in front of the pawn are unoccupied. A pawn cannot move backward. They can only capture an enemy piece on either of the two tiles diagonally in front of them, but not the tile directly in front of them."
icon_state = "b-pawn"
/obj/item/toy/chess/rook_white
name = "blue rook"
desc = "A large rook piece for playing chess. It's made of a blue-colored glass."
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
icon_state = "w-rook"
/obj/item/toy/chess/rook_black
name = "purple rook"
desc = "A large rook piece for playing chess. It's made of a purple-colored glass."
description_info = "The Rook can move any number of vacant squares vertically or horizontally."
icon_state = "b-rook"
/obj/item/toy/chess/knight_white
name = "blue knight"
desc = "A large knight piece for playing chess. It's made of a blue-colored glass. Sadly, you can't ride it."
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
icon_state = "w-knight"
/obj/item/toy/chess/knight_black
name = "purple knight"
desc = "A large knight piece for playing chess. It's made of a purple-colored glass. 'Just a flesh wound.'"
description_info = "The Knight can either move two squares horizontally and one square vertically or two squares vertically and one square horizontally. The knight's movement can also be viewed as an 'L' laid out at any horizontal or vertical angle."
icon_state = "b-knight"
/obj/item/toy/chess/bishop_white
name = "blue bishop"
desc = "A large bishop piece for playing chess. It's made of a blue-colored glass."
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
icon_state = "w-bishop"
/obj/item/toy/chess/bishop_black
name = "purple bishop"
desc = "A large bishop piece for playing chess. It's made of a purple-colored glass."
description_info = "The Bishop can move any number of vacant squares in any diagonal direction."
icon_state = "b-bishop"
/obj/item/toy/chess/queen_white
name = "blue queen"
desc = "A large queen piece for playing chess. It's made of a blue-colored glass."
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
icon_state = "w-queen"
/obj/item/toy/chess/queen_black
name = "purple queen"
desc = "A large queen piece for playing chess. It's made of a purple-colored glass."
description_info = "The Queen can move any number of vacant squares diagonally, horizontally, or vertically."
icon_state = "b-queen"
/obj/item/toy/chess/king_white
name = "blue king"
desc = "A large king piece for playing chess. It's made of a blue-colored glass."
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
icon_state = "w-king"
/obj/item/toy/chess/king_black
name = "purple king"
desc = "A large king piece for playing chess. It's made of a purple-colored glass."
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
icon_state = "b-king"
+8
View File
@@ -14,6 +14,14 @@
drop_sound = 'sound/voice/weh.ogg'
attack_verb = list("raided", "kobolded", "weh'd")
/obj/item/toy/plushie/lizardplushie/resh
name = "security unathi plushie"
desc = "An adorable stuffed toy that resembles an unathi wearing a head of security uniform. Perfect example of a monitor lizard."
icon = 'icons/obj/toy_vr.dmi'
icon_state = "marketable_resh"
pokephrase = "Halt! Sssecurity!" //"Butts!" would be too obvious
attack_verb = list("valided", "justiced", "batoned")
/obj/item/toy/plushie/slimeplushie
name = "slime plushie"
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
+14
View File
@@ -7,6 +7,20 @@
w_class = ITEMSIZE_SMALL
desc = "This is rubbish."
drop_sound = 'sound/items/drop/wrapper.ogg'
var/age = 0
/obj/item/trash/New(var/newloc, var/_age)
..(newloc)
if(!isnull(_age))
age = _age
/obj/item/trash/Initialize()
SSpersistence.track_value(src, /datum/persistent/filth/trash)
. = ..()
/obj/item/trash/Destroy()
SSpersistence.forget_value(src, /datum/persistent/filth/trash)
. = ..()
/obj/item/trash/raisins
name = "\improper 4no raisins"
+3 -3
View File
@@ -33,7 +33,7 @@
var/datum/pipe_recipe/recipe = null // pipe recipie selected for display/construction //YW edit, added = null
var/static/datum/pipe_recipe/first_atmos
var/static/datum/pipe_recipe/first_disposal
var/static/datum/asset/iconsheet/pipes/icon_assets
var/static/datum/asset/spritesheet/pipes/icon_assets
var/static/list/pipe_layers = list(
"Regular" = PIPING_LAYER_REGULAR,
"Supply" = PIPING_LAYER_SUPPLY,
@@ -80,7 +80,7 @@
/obj/item/weapon/pipe_dispenser/interact(mob/user)
SetupPipes()
if(!icon_assets)
icon_assets = get_asset_datum(/datum/asset/iconsheet/pipes)
icon_assets = get_asset_datum(/datum/asset/spritesheet/pipes)
icon_assets.send(user)
var/list/lines = list()
@@ -370,7 +370,7 @@
if(_dir == p_dir && flipped == p_flipped)
attrs += " class=\"linkOn\""
if(icon_state)
var/img_tag = icon_assets.icon_tag(icon_state, _dir)
var/img_tag = icon_assets.icon_tag("[dirtext]-[icon_state]")
return "<a href=\"?src=\ref[src];dir=[dirtext];flipped=[flipped]\" title=\"[title]\"[attrs]>[img_tag]</a>"
else
return "<a href=\"?src=\ref[src];dir=[dirtext];flipped=[flipped]\" title=\"[title]\"[attrs]>[noimg]</a>"
@@ -150,7 +150,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/examine(mob/user)
. = ..()
if(!is_pipe)
var/smoke_percent = round((smoketime / max_smoketime) * 100)
switch(smoke_percent)
@@ -283,7 +283,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
w_class = ITEMSIZE_TINY
slot_flags = SLOT_EARS | SLOT_MASK
attack_verb = list("burnt", "singed")
type_butt = /obj/item/weapon/cigbutt
type_butt = /obj/item/trash/cigbutt
chem_volume = 15
max_smoketime = 300
smoketime = 300
@@ -341,7 +341,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "premium cigar"
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
icon_state = "cigar2"
type_butt = /obj/item/weapon/cigbutt/cigarbutt
type_butt = /obj/item/trash/cigbutt/cigarbutt
throw_speed = 0.5
item_state = "cigar"
max_smoketime = 1500
@@ -369,7 +369,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
chem_volume = 30
nicotine_amt = 10
/obj/item/weapon/cigbutt
/obj/item/trash/cigbutt
name = "cigarette butt"
desc = "A manky old cigarette butt."
icon = 'icons/obj/clothing/masks.dmi'
@@ -379,12 +379,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
slot_flags = SLOT_EARS
throwforce = 1
/obj/item/weapon/cigbutt/Initialize()
/obj/item/trash/cigbutt/Initialize()
. = ..()
randpixel_xy()
transform = turn(transform,rand(0,360))
/obj/item/weapon/cigbutt/cigarbutt
/obj/item/trash/cigbutt/cigarbutt
name = "cigar butt"
desc = "A manky old cigar butt."
icon_state = "cigarbutt"
@@ -12,7 +12,6 @@
/obj/item/weapon/circuitboard/security/New()
..()
network = using_map.station_networks
/obj/item/weapon/circuitboard/security/tv
name = T_BOARD("security camera monitor - television")
@@ -45,7 +44,7 @@
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
if (..(C))
C.network = network.Copy()
C.set_network(network.Copy())
/obj/item/weapon/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
if (..(C))
+22 -1
View File
@@ -9,6 +9,7 @@
/obj/item/weapon/book/manual/engineering_construction
name = "Station Repairs and Construction"
icon_state ="bookEngineering"
item_state = "book3"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Station Repairs and Construction"
@@ -30,6 +31,7 @@
/obj/item/weapon/book/manual/engineering_particle_accelerator
name = "Particle Accelerator User's Guide"
icon_state ="bookParticleAccelerator"
item_state = "book15"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Particle Accelerator User's Guide"
@@ -77,6 +79,7 @@
/obj/item/weapon/book/manual/supermatter_engine
name = "Supermatter Engine Operating Manual"
icon_state = "bookSupermatter"
item_state = "book15"
author = "Central Engineering Division"
title = "Supermatter Engine Operating Manual"
@@ -160,6 +163,7 @@
/obj/item/weapon/book/manual/tesla_engine
name = "Tesla Operating Manual"
icon_state ="bookTesla"
item_state = "book15"
author = "Engineering Encyclopedia"
title = "Tesla Engine User's Guide"
dat = {"<html>
@@ -229,7 +233,8 @@
/obj/item/weapon/book/manual/rust_engine
name = "R-UST Operating Manual"
icon_state = "bookSupermatter"
author = "Yumi Kruik"
item_state = "book15"
author = "Cindy Crawfish"
title = "R-UST Operating Manual"
//R-UST guide Re-Writen by Gozulio to reflect how the R-UST actually operates.
@@ -280,6 +285,7 @@
/obj/item/weapon/book/manual/engineering_hacking
name = "Hacking"
icon_state ="bookHacking"
item_state = "book2"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Hacking"
@@ -302,6 +308,7 @@
/obj/item/weapon/book/manual/engineering_singularity_safety
name = "Singularity Safety in Special Circumstances"
icon_state ="bookEngineeringSingularitySafety"
item_state = "book15"
author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Singularity Safety in Special Circumstances"
@@ -354,6 +361,7 @@
/obj/item/weapon/book/manual/hydroponics_pod_people
name = "The Diona Harvest - From Seed to Market"
icon_state ="bookHydroponicsPodPeople"
item_state = "book5"
author = "Farmer John"
title = "The Diona Harvest - From Seed to Market"
@@ -392,6 +400,7 @@
/obj/item/weapon/book/manual/medical_cloning
name = "Cloning Techniques of the 26th Century"
icon_state ="bookCloning"
item_state = "book9"
author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "Cloning Techniques of the 26th Century"
@@ -485,6 +494,7 @@
/obj/item/weapon/book/manual/ripley_build_and_repair
name = "APLU \"Ripley\" Construction and Operation Manual"
icon_state ="book"
item_state = "book"
author = "Randall Varn, Einstein Engines Senior Mechanic" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
title = "APLU \"Ripley\" Construction and Operation Manual"
@@ -562,6 +572,7 @@
/obj/item/weapon/book/manual/research_and_development
name = "Research and Development 101"
icon_state = "rdbook"
item_state = "book7"
author = "Dr. L. Ight"
title = "Research and Development 101"
@@ -631,6 +642,7 @@
/obj/item/weapon/book/manual/robotics_cyborgs
name = "Cyborgs for Dummies"
icon_state = "borgbook"
item_state = "book1"
author = "XISC"
title = "Cyborgs for Dummies"
@@ -837,6 +849,7 @@
name = "Corporate Regulations"
desc = "A set of corporate guidelines for keeping law and order on privately-owned space stations."
icon_state = "bookSpaceLaw"
item_state = "book13"
author = "The Company"
title = "Corporate Regulations"
@@ -861,6 +874,7 @@
name = "Medical Diagnostics Manual"
desc = "First, do no harm. A detailed medical practitioner's guide."
icon_state = "bookMedical"
item_state = "book12"
author = "Medical Department"
title = "Medical Diagnostics Manual"
@@ -908,6 +922,7 @@
/obj/item/weapon/book/manual/engineering_guide
name = "Engineering Textbook"
icon_state ="bookEngineering2"
item_state = "book3"
author = "Engineering Encyclopedia"
title = "Engineering Textbook"
@@ -929,6 +944,7 @@
/obj/item/weapon/book/manual/chef_recipes
name = "Chef Recipes"
icon_state = "cooked_book"
item_state = "book16"
author = "Victoria Ponsonby"
title = "Chef Recipes"
@@ -989,6 +1005,7 @@
name = "Barman Recipes"
desc = "For the enterprising drink server."
icon_state = "barbook"
item_state = "book14"
author = "Sir John Rose"
title = "Barman Recipes"
@@ -1044,6 +1061,7 @@
/obj/item/weapon/book/manual/detective
name = "The Film Noir: Proper Procedures for Investigations"
icon_state ="bookDetective"
item_state = "book8"
author = "The Company"
title = "The Film Noir: Proper Procedures for Investigations"
@@ -1087,6 +1105,7 @@
/obj/item/weapon/book/manual/nuclear
name = "Fission Mailed: Nuclear Sabotage 101"
icon_state ="bookNuclear"
item_state = "book8"
author = "Syndicate"
title = "Fission Mailed: Nuclear Sabotage 101"
@@ -1138,6 +1157,7 @@
/obj/item/weapon/book/manual/atmospipes
name = "Pipes and You: Getting To Know Your Scary Tools"
icon_state = "pipingbook"
item_state = "book3"
author = "Maria Crash, Senior Atmospherics Technician"
title = "Pipes and You: Getting To Know Your Scary Tools"
dat = {"<html>
@@ -1246,6 +1266,7 @@
/obj/item/weapon/book/manual/evaguide
name = "EVA Gear and You: Not Spending All Day Inside, 2nd Edition"
icon_state = "evabook"
item_state = "book14"
author = "Maria Crash, Senior Atmospherics Technician"
title = "EVA Gear and You: Not Spending All Day Inside, 2nd Edition"
dat = {"<html>
@@ -46,7 +46,7 @@ var/global/list/ashtray_cache = list()
/obj/item/weapon/material/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (health <= 0)
return
if (istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match))
if (istype(W,/obj/item/trash/cigbutt) || istype(W,/obj/item/clothing/mask/smokable/cigarette) || istype(W, /obj/item/weapon/flame/match))
if (contents.len >= max_butts)
to_chat(user, "\The [src] is full.")
return
@@ -12,13 +12,13 @@ obj/item/weapon/chainsaw
var/active_force = 55
var/inactive_force = 10
obj/item/weapon/chainsaw/New()
obj/item/weapon/chainsaw/Initialize() //YW edit - replaced New with Initialize so chainsaws can be mapped in
. = ..()
var/datum/reagents/R = new/datum/reagents(max_fuel)
reagents = R
R.my_atom = src
R.add_reagent("fuel", max_fuel)
START_PROCESSING(SSobj, src)
..()
obj/item/weapon/chainsaw/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -3,6 +3,10 @@
desc = "A scroll for moving around."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_books.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_books.dmi'
)
var/uses = 4.0
w_class = ITEMSIZE_TINY
item_state = "paper"
@@ -33,7 +33,7 @@
base_block_chance = 40
slot_flags = SLOT_BACK
var/brightness_on
brightness_on = 4
brightness_on = 6
var/on = 0
var/light_applied
//var/light_overlay
@@ -13,10 +13,6 @@
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
if(istype(H) && istype(H.tail_style, taurtype))
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
else
to_chat(H, "<span class='warning'>[no_message]</span>")
@@ -44,66 +40,20 @@
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
var/datum/sprite_accessory/tail/taur/TT = H.tail_style
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/horse))
item_state = "[icon_base]_Horse"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/wolf))
item_state = "[icon_base]_Wolf"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/cow))
item_state = "[icon_base]_Cow"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/lizard))
item_state = "[icon_base]_Lizard"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/feline))
item_state = "[icon_base]_Feline"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/drake))
item_state = "[icon_base]_Drake"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/otie))
item_state = "[icon_base]_Otie"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/taur/deer))
item_state = "[icon_base]_Deer"
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro?
slowdown = 0
else
slowdown = initial(slowdown)
return 1
if(!istype(H))//Error, non HUMAN.
log_runtime("[H] was not a valid human!")
return
if(H.size_multiplier >= RESIZE_BIG) //Are they a macro? If yes, they get no slowdown.
slowdown = 0
else
to_chat(H, "<span class='warning'>[no_message]</span>")
return 0
slowdown = initial(slowdown)
var/datum/sprite_accessory/tail/taur/TT = H.tail_style
item_state = "[icon_base]_[TT.icon_sprite_tag]" //icon_sprite_tag is something like "deer"
return 1
/obj/item/weapon/storage/backpack/saddlebag_common/robust //Shared bag for other taurs with sturdy backs
name = "Robust Saddlebags"
@@ -116,7 +66,7 @@
/obj/item/weapon/storage/backpack/saddlebag_common/vest //Shared bag for other taurs with sturdy backs
name = "Taur Duty Vest"
desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though."
desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though. Holds less than a saddle."
icon = 'icons/obj/clothing/backpack_vr.dmi'
icon_override = 'icons/mob/back_vr.dmi'
item_state = "taurvest"
@@ -145,6 +95,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "satchel-explorer"
icon_state = "satchel-explorer"
/obj/item/weapon/storage/backpack/explorer
name = "explorer backpack"
desc = "A backpack for carrying a large number of supplies easily."
@@ -152,6 +103,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "explorerpack"
icon_state = "explorerpack"
/obj/item/weapon/storage/backpack/satchel/roboticist
name = "roboticist satchel"
desc = "A satchel for carrying a large number of spare parts easily."
@@ -159,6 +111,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "satchel-robo"
icon_state = "satchel-robo"
/obj/item/weapon/storage/backpack/roboticist
name = "roboticist backpack"
desc = "A backpack for carrying a large number of spare parts easily."
@@ -166,6 +119,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "backpack-robo"
icon_state = "backpack-robo"
/obj/item/weapon/storage/backpack/vietnam
name = "vietnam backpack"
desc = "There are tangos in the trees! We need napalm right now! Why is my gun jammed?"
@@ -173,6 +127,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "nambackpack"
icon_state = "nambackpack"
/obj/item/weapon/storage/backpack/russian
name = "russian backpack"
desc = "Useful for carrying large quantities of vodka."
@@ -180,6 +135,7 @@
icon_override = 'icons/mob/back_vr.dmi'
item_state = "ru_rucksack"
icon_state = "ru_rucksack"
/obj/item/weapon/storage/backpack/korean
name = "korean backpack"
desc = "Insert witty description here."
@@ -2,6 +2,11 @@
name = "bible"
desc = "Apply to head repeatedly."
icon_state ="bible"
item_state = "bible"
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_books.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_books.dmi'
)
throw_speed = 1
throw_range = 5
w_class = ITEMSIZE_NORMAL
@@ -209,7 +209,7 @@
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 6
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/weapon/cigbutt)
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/trash/cigbutt)
icon_type = "cigarette"
starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6)
var/brand = "\improper Trans-Stellar Duty-free"
@@ -316,7 +316,7 @@
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 7
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/cigbutt/cigarbutt)
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/trash/cigbutt/cigarbutt)
icon_type = "cigar"
starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7)
@@ -14,7 +14,7 @@
/obj/item/weapon/storage/firstaid/regular
starts_with = list(
/obj/item/stack/medical/bruise_pack,
/obj/item/device/healthanalyzer, /*YW EDIT*/
/obj/item/stack/medical/bruise_pack,
/obj/item/stack/medical/bruise_pack,
/obj/item/stack/medical/bruise_pack,
+1 -1
View File
@@ -126,7 +126,7 @@
return 1
/obj/item/weapon/tape_roll/proc/stick(var/obj/item/weapon/W, mob/user)
if(!istype(W, /obj/item/weapon/paper))
if(!istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/paper/sticky) || !user.unEquip(W))
return
user.drop_from_inventory(W)
var/obj/item/weapon/ducttape/tape = new(get_turf(src))
+1
View File
@@ -136,6 +136,7 @@
/obj/attack_ghost(mob/user)
ui_interact(user)
tgui_interact(user)
..()
/obj/proc/interact(mob/user)
-1
View File
@@ -48,7 +48,6 @@ var/list/random_useful_
if(prob(70)) // Misc. junk
if(!random_junk_)
random_junk_ = subtypesof(/obj/item/trash)
random_junk_ += typesof(/obj/item/weapon/cigbutt)
random_junk_ += /obj/effect/decal/cleanable/spiderling_remains
random_junk_ += /obj/effect/decal/remains/mouse
random_junk_ += /obj/effect/decal/remains/robot
+19 -1
View File
@@ -16,6 +16,7 @@
/obj/random/energy/item_to_spawn()
return pick(prob(3);/obj/item/weapon/gun/energy/laser,
prob(3);/obj/item/weapon/gun/energy/laser/sleek,
prob(4);/obj/item/weapon/gun/energy/gun,
prob(3);/obj/item/weapon/gun/energy/gun/burst,
prob(1);/obj/item/weapon/gun/energy/gun/nuclear,
@@ -29,7 +30,8 @@
prob(3);/obj/item/weapon/gun/energy/toxgun,
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(4);/obj/item/weapon/gun/energy/stunrevolver,
prob(3);/obj/item/weapon/gun/energy/gun/compact)
/obj/random/energy/sec
name = "Random Security Energy Weapon"
@@ -54,6 +56,7 @@
prob(2);/obj/item/weapon/gun/projectile/automatic/c20r,
prob(2);/obj/item/weapon/gun/projectile/automatic/sts35,
prob(2);/obj/item/weapon/gun/projectile/automatic/z8,
prob(2);/obj/item/weapon/gun/projectile/automatic/combatsmg,
prob(4);/obj/item/weapon/gun/projectile/colt,
prob(2);/obj/item/weapon/gun/projectile/deagle,
prob(1);/obj/item/weapon/gun/projectile/deagle/camo,
@@ -193,6 +196,11 @@
prob(1);list(
/obj/item/weapon/gun/projectile/automatic/p90,
/obj/item/ammo_magazine/m9mmp90
),
prob(3);list(
/obj/item/weapon/gun/projectile/automatic/combatsmg,
/obj/item/ammo_magazine/m9mmt,
/obj/item/ammo_magazine/m9mmt
)
)
@@ -231,10 +239,20 @@
/obj/item/ammo_magazine/m762garand,
/obj/item/ammo_magazine/m762garand
),
prob(1);list(
/obj/item/weapon/gun/projectile/revolvingrifle,
/obj/item/ammo_magazine/s44/rifle,
/obj/item/ammo_magazine/s44/rifle
),
prob(1);list(
/obj/item/weapon/gun/projectile/automatic/bullpup,
/obj/item/ammo_magazine/m762,
/obj/item/ammo_magazine/m762
),
prob(1);list(
/obj/item/weapon/gun/projectile/caseless/prototype,
/obj/item/ammo_magazine/m5mmcaseless,
/obj/item/ammo_magazine/m5mmcaseless
)
)
+11 -1
View File
@@ -107,7 +107,17 @@ something, make sure it's not in one of the other lists.*/
prob(2);/obj/item/device/camera,
prob(3);/obj/item/device/pda,
prob(3);/obj/item/device/radio/headset,
prob(1);/obj/item/pizzavoucher)
/* VOREStation Edit Start */
prob(2);/obj/item/toy/tennis,
prob(2);/obj/item/toy/tennis/red,
prob(2);/obj/item/toy/tennis/yellow,
prob(2);/obj/item/toy/tennis/green,
prob(2);/obj/item/toy/tennis/cyan,
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
prob(1);/obj/item/pizzavoucher
/* VOREStation Edit End */
)
/obj/random/maintenance/security
/*Maintenance loot list. This one is for around security areas*/
+30
View File
@@ -34,6 +34,36 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/remains/robot)
/obj/random/crate //Random 'standard' crates for variety in maintenance spawns.
name = "random crate"
desc = "This is a random crate"
icon = 'icons/obj/closets/bases/crate.dmi'
icon_state = "base"
/obj/random/crate/item_to_spawn() //General crates, excludes some more high-grade and medical brands
return pick (/obj/structure/closet/crate/plastic,
/obj/structure/closet/crate/aether,
/obj/structure/closet/crate/centauri,
/obj/structure/closet/crate/einstein,
/obj/structure/closet/crate/focalpoint,
/obj/structure/closet/crate/gilthari,
/obj/structure/closet/crate/grayson,
/obj/structure/closet/crate/nanotrasen,
/obj/structure/closet/crate/nanothreads,
/obj/structure/closet/crate/oculum,
/obj/structure/closet/crate/ward,
/obj/structure/closet/crate/xion,
/obj/structure/closet/crate/zenghu,
/obj/structure/closet/crate/allico,
/obj/structure/closet/crate/carp,
/obj/structure/closet/crate/galaksi,
/obj/structure/closet/crate/thinktronic,
/obj/structure/closet/crate/ummarcar,
/obj/structure/closet/crate/unathi,
/obj/structure/closet/crate/hydroponics,
/obj/structure/closet/crate/engineering,
/obj/structure/closet/crate)
/obj/random/obstruction //Large objects to block things off in maintenance
name = "random obstruction"
desc = "This is a random obstruction."
+56
View File
@@ -0,0 +1,56 @@
/obj/random/mech
name = "random mech"
desc = "This is a random single mech."
icon = 'icons/mecha/mecha.dmi'
icon_state = "old_durand"
drop_get_turf = FALSE
//This list includes the phazon, gorilla and mauler. You might want to use something else if balance is a concern.
/obj/random/mech/item_to_spawn()
return pick(/obj/mecha/combat/gygax,
/obj/mecha/combat/gygax/serenity,
/obj/mecha/combat/gygax/dark,
/obj/mecha/combat/marauder,
/obj/mecha/combat/marauder/seraph,
/obj/mecha/combat/marauder/mauler,
/obj/mecha/medical/odysseus,
/obj/mecha/combat/phazon,
/obj/mecha/combat/phazon/janus,
/obj/mecha/combat/durand,
/obj/mecha/working/ripley,
/obj/mecha/working/ripley/firefighter,
/obj/mecha/working/ripley/deathripley,
/obj/mecha/working/ripley/mining)
/obj/random/mech/weaker
name = "random mech"
desc = "This is a random single mech. Those are less potent and more common."
icon = 'icons/mecha/mecha.dmi'
icon_state = "old_durand"
drop_get_turf = FALSE
/obj/random/mech/weaker/item_to_spawn()
return pick(/obj/mecha/combat/gygax,
/obj/mecha/combat/gygax/serenity,
/obj/mecha/medical/odysseus,
/obj/mecha/combat/durand,
/obj/mecha/working/ripley,
/obj/mecha/working/ripley/firefighter,
/obj/mecha/working/ripley/deathripley,
/obj/mecha/working/ripley/mining)
/obj/random/mech/old
name = "random mech"
desc = "This is a random single old mech."
icon = 'icons/mecha/mecha.dmi'
icon_state = "old_durand"
drop_get_turf = FALSE
//Note that all of those are worn out and have slightly less maximal health than the standard.
/obj/random/mech/old/item_to_spawn()
return pick(prob(10);/obj/mecha/combat/gygax/old,
prob(1);/obj/mecha/combat/marauder/old,
prob(1);/obj/mecha/combat/phazon/old,
prob(10);/obj/mecha/combat/durand/old,
prob(15);/obj/mecha/medical/odysseus/old,
prob(20);/obj/mecha/working/ripley/mining/old)
+3 -2
View File
@@ -473,6 +473,7 @@
//VOREStation Add Start
/obj/item/toy/plushie/lizardplushie,
/obj/item/toy/plushie/lizardplushie/kobold,
/obj/item/toy/plushie/lizardplushie/resh,
/obj/item/toy/plushie/slimeplushie,
/obj/item/toy/plushie/box,
/obj/item/toy/plushie/borgplushie,
@@ -542,8 +543,8 @@
/obj/item/device/assembly/mousetrap/armed,
/obj/effect/decal/cleanable/spiderling_remains,
/obj/effect/decal/cleanable/ash,
/obj/item/weapon/cigbutt,
/obj/item/weapon/cigbutt/cigarbutt,
/obj/item/trash/cigbutt,
/obj/item/trash/cigbutt/cigarbutt,
/obj/effect/decal/remains/mouse)
/obj/random/janusmodule
@@ -761,8 +761,210 @@
"lid_stripes" = COLOR_NT_RED
)
// Freezers
/decl/closet_appearance/crate/freezer
color = COLOR_OFF_WHITE
/decl/closet_appearance/crate/freezer/centauri
color = COLOR_BABY_BLUE
extra_decals = list(
"centauri" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/freezer/nanotrasen
color = COLOR_BABY_BLUE
extra_decals = list(
"nano" = COLOR_OFF_WHITE
)
// Corporate Branding
/decl/closet_appearance/crate/aether
color = COLOR_YELLOW_GRAY
decals = list(
"crate_stripes" = COLOR_BLUE_LIGHT,
"aether" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/allico
color = COLOR_LIGHT_VIOLET
decals = list(
"crate_stripe" = COLOR_AMBER
)
/decl/closet_appearance/crate/carp
color = COLOR_PURPLE
decals = list(
"toptext" = COLOR_OFF_WHITE,
"crate_reticle" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/centauri
color = COLOR_BABY_BLUE
decals = list(
"crate_stripe" = COLOR_LUMINOL
)
extra_decals = list(
"centauri" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/cybersolutions
color = COLOR_ALUMINIUM
extra_decals = list(
"hazard" = COLOR_DARK_GOLD,
"toptext" = COLOR_DARK_GOLD
)
/decl/closet_appearance/crate/einstein
color = COLOR_DARK_BLUE_GRAY
extra_decals = list(
"crate_stripe_left" = COLOR_BEIGE,
"crate_stripe_right" = COLOR_BEIGE,
"einstein" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/focalpoint
color = COLOR_GOLD
extra_decals = list(
"crate_stripe_left" = COLOR_NAVY_BLUE,
"crate_stripe_right" = COLOR_NAVY_BLUE,
"focal" = COLOR_OFF_WHITE,
"hazard" = COLOR_NAVY_BLUE
)
/decl/closet_appearance/crate/galaksi
color = COLOR_OFF_WHITE
decals = list(
"lid_stripes" = COLOR_HULL,
"galaksi" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/gilthari
color = COLOR_GRAY20
extra_decals = list(
"crate_stripe_left" = COLOR_GOLD,
"crate_stripe_right" = COLOR_GOLD,
"gilthari" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/grayson
color = COLOR_STEEL
extra_decals = list(
"crate_stripe_left" = COLOR_MAROON,
"crate_stripe_right" = COLOR_MAROON,
"grayson" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/heph
color = COLOR_GRAY20
extra_decals = list(
"crate_stripe_left" = COLOR_NT_RED,
"crate_stripe_right" = COLOR_NT_RED,
"heph" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/morpheus
color = COLOR_ALUMINIUM
extra_decals = list(
"hazard" = COLOR_GUNMETAL,
"toptext" = COLOR_GUNMETAL
)
/decl/closet_appearance/crate/nanotrasen
color = COLOR_NT_RED
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/nanotrasenclothing
color = COLOR_NT_RED
extra_decals = list(
"crate_stripe_left" = COLOR_SEDONA,
"crate_stripe_right" = COLOR_SEDONA,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/nanotrasenmedical
color = COLOR_OFF_WHITE
extra_decals = list(
"crate_stripe" = COLOR_NT_RED,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/oculum
color = COLOR_SURGERY_BLUE
decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"oculum" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/saare
color = COLOR_ALUMINIUM
extra_decals = list(
"hazard" = COLOR_RED,
"xion" = COLOR_GRAY40
)
/decl/closet_appearance/crate/thinktronic
color = COLOR_PALE_PURPLE_GRAY
decals = list(
"toptext" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/ummarcar
color = COLOR_BEIGE
decals = list(
"crate_stripes" = COLOR_OFF_WHITE,
"toptext" = COLOR_GRAY20
)
/decl/closet_appearance/crate/unathiimport
color = COLOR_SILVER
decals = list(
"crate_stripe" = COLOR_RED,
"crate_reticle" = COLOR_RED_GRAY
)
/decl/closet_appearance/crate/veymed
color = COLOR_OFF_WHITE
decals = list(
"crate_stripe" = COLOR_PALE_BTL_GREEN
)
extra_decals = list(
"lid_stripes" = COLOR_RED,
"crate_cross" = COLOR_GREEN
)
/decl/closet_appearance/crate/ward
color = COLOR_OFF_WHITE
extra_decals = list(
"crate_stripe_left" = COLOR_COMMAND_BLUE,
"crate_stripe_right" = COLOR_COMMAND_BLUE,
"hazard" = COLOR_OFF_WHITE,
"wt" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/xion
color = COLOR_ORANGE
extra_decals = list(
"crate_stripes" = COLOR_OFF_WHITE,
"xion" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/zenghu
color = COLOR_OFF_WHITE
extra_decals = list(
"crate_stripes" = COLOR_RED,
"zenghu" = COLOR_OFF_WHITE
)
// Secure Crates
/decl/closet_appearance/crate/secure
can_lock = TRUE
@@ -775,7 +977,8 @@
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"toxin" = COLOR_OFF_WHITE
"toxin" = COLOR_OFF_WHITE,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/weapon
@@ -789,6 +992,219 @@
"hazard" = COLOR_OFF_WHITE
)
// Secure corporate branding
/decl/closet_appearance/crate/secure/aether
color = COLOR_YELLOW_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripes" = COLOR_BLUE_LIGHT,
"aether" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/bishop
color = COLOR_OFF_WHITE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_SKY_BLUE,
"crate_stripe_right" = COLOR_SKY_BLUE,
"bishop" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/cybersolutions
color = COLOR_ALUMINIUM
decals = list(
"crate_bracing"
)
extra_decals = list(
"hazard" = COLOR_DARK_GOLD,
"toptext" = COLOR_DARK_GOLD
)
/decl/closet_appearance/crate/secure/einstein
color = COLOR_DARK_BLUE_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_BEIGE,
"crate_stripe_right" = COLOR_BEIGE,
"einstein" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/focalpoint
color = COLOR_GOLD
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_NAVY_BLUE,
"crate_stripe_right" = COLOR_NAVY_BLUE,
"focal" = COLOR_OFF_WHITE,
"hazard" = COLOR_NAVY_BLUE
)
/decl/closet_appearance/crate/secure/gilthari
color = COLOR_GRAY20
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_GOLD,
"crate_stripe_right" = COLOR_GOLD,
"hazard" = COLOR_OFF_WHITE,
"gilthari" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/grayson
color = COLOR_STEEL
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_MAROON,
"crate_stripe_right" = COLOR_MAROON,
"grayson" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/hedberg
color = COLOR_GREEN_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE,
"hedberg" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/heph
color = COLOR_GRAY20
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_NT_RED,
"crate_stripe_right" = COLOR_NT_RED,
"hazard" = COLOR_OFF_WHITE,
"heph" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/lawson
color = COLOR_SAN_MARINO_BLUE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE,
"lawson" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/morpheus
color = COLOR_ALUMINIUM
decals = list(
"crate_bracing"
)
extra_decals = list(
"hazard" = COLOR_GUNMETAL,
"toptext" = COLOR_GUNMETAL
)
/decl/closet_appearance/crate/secure/nanotrasen
color = COLOR_NT_RED
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripe_right" = COLOR_OFF_WHITE,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/nanotrasenmedical
color = COLOR_OFF_WHITE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe" = COLOR_NT_RED,
"nano" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/saare
color = COLOR_ALUMINIUM
decals = list(
"crate_bracing"
)
extra_decals = list(
"hazard" = COLOR_RED,
"xion" = COLOR_GRAY40
)
/decl/closet_appearance/crate/secure/solgov
color = COLOR_SAN_MARINO_BLUE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_OFF_WHITE,
"crate_stripes" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE,
"scg" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/veymed
color = COLOR_OFF_WHITE
decals = list(
"crate_bracing",
"crate_stripe" = COLOR_PALE_BTL_GREEN
)
extra_decals = list(
"lid_stripes" = COLOR_RED,
"crate_cross" = COLOR_GREEN
)
/decl/closet_appearance/crate/secure/ward
color = COLOR_OFF_WHITE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripe_left" = COLOR_COMMAND_BLUE,
"crate_stripe_right" = COLOR_COMMAND_BLUE,
"hazard" = COLOR_OFF_WHITE,
"wt" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/xion
color = COLOR_ORANGE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripes" = COLOR_OFF_WHITE,
"xion" = COLOR_OFF_WHITE,
"hazard" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/zenghu
color = COLOR_OFF_WHITE
decals = list(
"crate_bracing"
)
extra_decals = list(
"crate_stripes" = COLOR_RED,
"zenghu" = COLOR_OFF_WHITE
)
/decl/closet_appearance/crate/secure/hydroponics
extra_decals = list(
"crate_stripe_left" = COLOR_GREEN_GRAY,
@@ -809,6 +1225,7 @@
extra_decals = null
/decl/closet_appearance/large_crate/critter
color = COLOR_BEIGE
decals = list(
"airholes"
)
@@ -822,6 +1239,42 @@
"text" = COLOR_GREEN_GRAY
)
/decl/closet_appearance/large_crate/aether
color = COLOR_YELLOW_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"text" = COLOR_BLUE_LIGHT
)
/decl/closet_appearance/large_crate/einstein
color = COLOR_DARK_BLUE_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"text" = COLOR_BEIGE
)
/decl/closet_appearance/large_crate/nanotrasen
color = COLOR_NT_RED
decals = list(
"crate_bracing"
)
extra_decals = list(
"text" = COLOR_OFF_WHITE
)
/decl/closet_appearance/large_crate/xion
color = COLOR_ORANGE
decals = list(
"crate_bracing"
)
extra_decals = list(
"text" = COLOR_OFF_WHITE
)
/decl/closet_appearance/large_crate/secure
can_lock = TRUE
@@ -835,6 +1288,46 @@
"text_upper" = COLOR_OFF_WHITE
)
/decl/closet_appearance/large_crate/secure/aether
color = COLOR_YELLOW_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"marking" = COLOR_OFF_WHITE,
"text_upper" = COLOR_BLUE_LIGHT
)
/decl/closet_appearance/large_crate/secure/einstein
color = COLOR_DARK_BLUE_GRAY
decals = list(
"crate_bracing"
)
extra_decals = list(
"marking" = COLOR_OFF_WHITE,
"text_upper" = COLOR_BEIGE
)
/decl/closet_appearance/large_crate/secure/heph
color = COLOR_GRAY20
decals = list(
"crate_bracing"
)
extra_decals = list(
"marking" = COLOR_NT_RED,
"text_upper" = COLOR_NT_RED
)
/decl/closet_appearance/large_crate/secure/xion
color = COLOR_ORANGE
decals = list(
"crate_bracing"
)
extra_decals = list(
"marking" = COLOR_OFF_WHITE,
"text_upper" = COLOR_OFF_WHITE
)
// Cabinets.
/decl/closet_appearance/cabinet
base_icon = 'icons/obj/closets/bases/cabinet.dmi'
@@ -1,3 +1,11 @@
/decl/closet_appearance/medical_yw
color = COLOR_OFF_WHITE
decals = null
extra_decals = list(
"circle" = COLOR_BLUE_GRAY,
"stripes_horizontal" = COLOR_BLUE_GRAY
)
/decl/closet_appearance/wall/autolok/shuttleemerg
color = COLOR_YELLOW_GRAY
decals = list(
@@ -7,6 +7,7 @@
var/icon_closed = "egg"
var/icon_opened = "egg_open"
var/icon_locked = "egg"
closet_appearance = null
open_sound = 'sound/vore/schlorp.ogg'
close_sound = 'sound/vore/schlorp.ogg'
opened = 0
@@ -1,6 +1,6 @@
/obj/structure/closet/secure_closet/blueshield
name = "blueshield's closet"
req_access = list(access_blueshield)
req_access = list(access_blueshield_exclusive)
closet_appearance = /decl/closet_appearance/secure_closet/blueshield
storage_capacity = 2.5 * MOB_MEDIUM
@@ -12,7 +12,6 @@
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 2,
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 2)
/obj/structure/closet/secure_closet/medical2
name = "anesthetics closet"
desc = "Used to knock people out."
@@ -65,7 +65,6 @@
/obj/structure/closet/secure_closet/hos
name = "head of security's locker"
req_access = list(access_hos)
req_access = list(access_hos)
storage_capacity = 2.5 * MOB_MEDIUM
closet_appearance = /decl/closet_appearance/secure_closet/security/hos
@@ -15,4 +15,9 @@
/obj/item/weapon/tank/oxygen/red,
/obj/item/weapon/storage/briefcase/inflatable,
/obj/item/clothing/head/helmet/space/emergency,
/obj/item/clothing/suit/space/emergency)
/obj/item/clothing/suit/space/emergency)
/obj/structure/closet/medical
name = "medical supply closet"
desc = "May or may not contain medical junk."
closet_appearance = /decl/closet_appearance/medical_yw
@@ -6,6 +6,7 @@
icon = 'icons/obj/closets/bases/crate.dmi'
closet_appearance = /decl/closet_appearance/crate
climbable = 1
dir = 4 //Spawn facing 'forward' by default.
var/points_per_crate = 5
var/rigged = 0
@@ -65,6 +66,26 @@
update_icon()
return 1
/obj/structure/closet/crate/verb/rotate_clockwise()
set name = "Rotate Crate Clockwise"
set category = "Object"
set src in oview(1)
if (usr.stat || usr.restrained() || anchored)
return
src.set_dir(turn(src.dir, 270))
/obj/structure/closet/crate/verb/rotate_counterclockwise()
set category = "Object"
set name = "Rotate Crate Counterclockwise"
set src in view(1)
if (usr.stat || usr.restrained() || anchored)
return
src.set_dir(turn(src.dir, 90))
/obj/structure/closet/crate/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(opened)
if(isrobot(user))
@@ -280,6 +301,14 @@
var/target_temp = T0C - 40
var/cooling_power = 40
/obj/structure/closet/crate/freezer/centauri
desc = "A freezer stamped with the logo of Centauri Provisions."
closet_appearance = /decl/closet_appearance/crate/freezer/centauri
/obj/structure/closet/crate/freezer/nanotrasen
desc = "A freezer stamped with the logo of NanoTrasen."
closet_appearance = /decl/closet_appearance/crate/freezer/nanotrasen
/obj/structure/closet/crate/freezer/return_air()
var/datum/gas_mixture/gas = (..())
if(!gas) return null
@@ -309,6 +338,11 @@
organ.preserved = 0
..()
/obj/structure/closet/crate/weapon
name = "weapons crate"
desc = "A barely secured weapons crate."
closet_appearance = /decl/closet_appearance/crate/secure/weapon
/obj/structure/closet/crate/freezer/rations //Fpr use in the escape shuttle
name = "emergency rations"
desc = "A crate of emergency rations."
@@ -316,21 +350,12 @@
starts_with = list(
/obj/random/mre = 6)
/obj/structure/closet/crate/freezer/meat //Fpr use in the escape shuttle
name = "Bonfire storage"
desc = "A crate of emergency rations."
starts_with = list(
/obj/item/weapon/reagent_containers/food/snacks/meat = 6)
/obj/structure/closet/crate/bin
name = "large bin"
desc = "A large bin."
closet_appearance = null
icon = 'icons/obj/closets/largebin.dmi'
/obj/structure/closet/crate/radiation
name = "radioactive gear crate"
desc = "A crate with a radiation sign on it."
@@ -340,45 +365,221 @@
/obj/item/clothing/suit/radiation = 4,
/obj/item/clothing/head/radiation = 4)
//TSCs
/obj/structure/closet/crate/aether
desc = "A crate painted in the colours of Aether Atmospherics and Recycling."
closet_appearance = /decl/closet_appearance/crate/aether
/obj/structure/closet/crate/centauri
desc = "A crate decorated with the logo of Centauri Provisions."
closet_appearance = /decl/closet_appearance/crate/centauri
/obj/structure/closet/crate/einstein
desc = "A crate labelled with an Einstein Engines sticker."
closet_appearance = /decl/closet_appearance/crate/einstein
/obj/structure/closet/crate/focalpoint
desc = "A crate marked with the decal of Focal Point Energistics."
closet_appearance = /decl/closet_appearance/crate/focalpoint
/obj/structure/closet/crate/gilthari
desc = "A crate embossed with the logo of Gilthari Exports."
closet_appearance = /decl/closet_appearance/crate/gilthari
/obj/structure/closet/crate/grayson
desc = "A bare metal crate spraypainted with Grayson Manufactories decals."
closet_appearance = /decl/closet_appearance/crate/grayson
/obj/structure/closet/crate/heph
desc = "A sturdy crate marked with the logo of Hephaestus Industries."
closet_appearance = /decl/closet_appearance/crate/heph
/obj/structure/closet/crate/morpheus
desc = "A crate crudely imprinted with 'MORPHEUS CYBERKINETICS'."
closet_appearance = /decl/closet_appearance/crate/morpheus
/obj/structure/closet/crate/nanotrasen
desc = "A crate emblazoned with the standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/crate/nanotrasen
/obj/structure/closet/crate/nanothreads
desc = "A crate emblazoned with the NanoThreads Garments livery, a subsidary of the NanoTrasen Corporation."
closet_appearance = /decl/closet_appearance/crate/nanotrasenclothing
/obj/structure/closet/crate/nanocare
desc = "A crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation."
closet_appearance = /decl/closet_appearance/crate/nanotrasenmedical
/obj/structure/closet/crate/oculum
desc = "A crate minimally decorated with the logo of media giant Oculum Broadcast."
closet_appearance = /decl/closet_appearance/crate/oculum
/obj/structure/closet/crate/veymed
desc = "A sterile crate extensively detailed in Veymed colours."
closet_appearance = /decl/closet_appearance/crate/veymed
/obj/structure/closet/crate/ward
desc = "A crate decaled with the logo of Ward-Takahashi."
closet_appearance = /decl/closet_appearance/crate/ward
/obj/structure/closet/crate/xion
desc = "A crate painted in Xion Manufacturing Group orange."
closet_appearance = /decl/closet_appearance/crate/xion
/obj/structure/closet/crate/zenghu
desc = "A sterile crate marked with the logo of Zeng-Hu Pharmaceuticals."
closet_appearance = /decl/closet_appearance/crate/zenghu
// Brands/subsidiaries
/obj/structure/closet/crate/allico
desc = "A crate painted in the distinctive cheerful colours of AlliCo. Ltd."
closet_appearance = /decl/closet_appearance/crate/allico
/obj/structure/closet/crate/carp
desc = "A crate painted with the garish livery of Consolidated Agricultural Resources Plc."
closet_appearance = /decl/closet_appearance/crate/carp
/obj/structure/closet/crate/hedberg
name = "weapons crate"
desc = "A weapons crate stamped with the logo of Hedberg-Hammarstrom and the lock conspicuously absent."
closet_appearance = /decl/closet_appearance/crate/secure/hedberg
/obj/structure/closet/crate/galaksi
desc = "A crate printed with the markings of Ward-Takahashi's Galaksi Appliance branding."
closet_appearance = /decl/closet_appearance/crate/galaksi
/obj/structure/closet/crate/thinktronic
desc = "A crate printed with the markings of Thinktronic Systems."
closet_appearance = /decl/closet_appearance/crate/thinktronic
/obj/structure/closet/crate/ummarcar
desc = "A flimsy crate marked labelled 'UmMarcar Office Supply'."
closet_appearance = /decl/closet_appearance/crate/ummarcar
/obj/structure/closet/crate/unathi
name = "import crate"
desc = "A crate painted with the markings of Moghes Imported Sissalik Jerky."
closet_appearance = /decl/closet_appearance/crate/unathiimport
// Secure Crates
/obj/structure/closet/crate/secure/weapon
name = "weapons crate"
desc = "A secure weapons crate."
closet_appearance = /decl/closet_appearance/crate/secure/weapon
/obj/structure/closet/crate/secure/aether
desc = "A secure crate painted in the colours of Aether Atmospherics and Recycling."
closet_appearance = /decl/closet_appearance/crate/secure/aether
/obj/structure/closet/crate/secure/bishop
desc = "A secure crate finely decorated with the emblem of Bishop Cybernetics."
closet_appearance = /decl/closet_appearance/crate/secure/bishop
/obj/structure/closet/crate/secure/cybersolutions
desc = "An unadorned secure metal crate labelled 'Cyber Solutions'."
closet_appearance = /decl/closet_appearance/crate/secure/cybersolutions
/obj/structure/closet/crate/secure/einstein
desc = "A secure crate labelled with an Einstein Engines sticker."
closet_appearance = /decl/closet_appearance/crate/secure/einstein
/obj/structure/closet/crate/secure/focalpoint
desc = "A secure crate marked with the decal of Focal Point Energistics."
closet_appearance = /decl/closet_appearance/crate/secure/focalpoint
/obj/structure/closet/crate/secure/gilthari
desc = "A secure crate embossed with the logo of Gilthari Exports."
closet_appearance = /decl/closet_appearance/crate/secure/gilthari
/obj/structure/closet/crate/secure/grayson
desc = "A secure bare metal crate spraypainted with Grayson Manufactories decals."
closet_appearance = /decl/closet_appearance/crate/secure/grayson
/obj/structure/closet/crate/secure/hedberg
name = "weapons crate"
desc = "A secure weapons crate stamped with the logo of Hedberg-Hammarstrom."
closet_appearance = /decl/closet_appearance/crate/secure/hedberg
/obj/structure/closet/crate/secure/heph
name = "weapons crate"
desc = "A secure weapons crate marked with the logo of Hephaestus Industries."
closet_appearance = /decl/closet_appearance/crate/secure/heph
/obj/structure/closet/crate/secure/lawson
name = "weapons crate"
desc = "A secure weapons crate marked with the logo of Lawson Arms."
closet_appearance = /decl/closet_appearance/crate/secure/lawson
/obj/structure/closet/crate/secure/morpheus
desc = "A secure crate crudely imprinted with 'MORPHEUS CYBERKINETICS'."
closet_appearance = /decl/closet_appearance/crate/secure/morpheus
/obj/structure/closet/crate/secure/nanotrasen
desc = "A secure crate emblazoned with the standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/crate/secure/nanotrasen
/obj/structure/closet/crate/secure/nanocare
desc = "A secure crate emblazoned with the NanoCare Medical livery, a subsidary of the NanoTrasen Corporation."
closet_appearance = /decl/closet_appearance/crate/secure/nanotrasenmedical
/obj/structure/closet/crate/secure/scg
name = "weapons crate"
desc = "A secure crate in the official colours of the Solar Confederate Government."
closet_appearance = /decl/closet_appearance/crate/secure/solgov
/obj/structure/closet/crate/secure/saare
name = "weapons crate"
desc = "A secure weapons crate plainly stamped with the logo of Stealth Assault Enterprises."
closet_appearance = /decl/closet_appearance/crate/secure/saare
/obj/structure/closet/crate/secure/veymed
desc = "A secure sterile crate extensively detailed in Veymed colours."
closet_appearance = /decl/closet_appearance/crate/secure/veymed
/obj/structure/closet/crate/secure/ward
desc = "A secure crate decaled with the logo of Ward-Takahashi."
closet_appearance = /decl/closet_appearance/crate/secure/ward
/obj/structure/closet/crate/secure/xion
desc = "A secure crate painted in Xion Manufacturing Group orange."
closet_appearance = /decl/closet_appearance/crate/secure/xion
/obj/structure/closet/crate/secure/zenghu
desc = "A secure sterile crate marked with the logo of Zeng-Hu Pharmaceuticals."
closet_appearance = /decl/closet_appearance/crate/secure/zenghu
/obj/structure/closet/crate/secure/phoron
name = "phoron crate"
desc = "A secure phoron crate."
desc = "A secure phoron crate painted in standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/crate/secure/hazard
/obj/structure/closet/crate/secure/gear
name = "gear crate"
desc = "A secure gear crate."
closet_appearance = /decl/closet_appearance/crate/secure/weapon
/obj/structure/closet/crate/secure/hydrosec
name = "secure hydroponics crate"
desc = "A crate with a lock on it, painted in the scheme of the station's botanists."
closet_appearance = /decl/closet_appearance/crate/secure/hydroponics
/obj/structure/closet/crate/secure/engineering
desc = "A crate with a lock on it, painted in the scheme of the station's engineers."
name = "secure engineering crate"
/obj/structure/closet/crate/secure/science
name = "secure science crate"
desc = "A crate with a lock on it, painted in the scheme of the station's scientists."
/obj/structure/closet/crate/secure/bin
name = "secure bin"
desc = "A secure bin."
// Large crates
/obj/structure/closet/crate/large
name = "large crate"
@@ -404,6 +605,30 @@
break
return
/obj/structure/closet/crate/large/critter
name = "animal crate"
desc = "A hefty crate for hauling animals."
closet_appearance = /decl/closet_appearance/large_crate/critter
/obj/structure/closet/crate/large/aether
name = "large atmospherics crate"
desc = "A hefty metal crate, painted in Aether Atmospherics and Recycling colours."
closet_appearance = /decl/closet_appearance/large_crate/aether
/obj/structure/closet/crate/large/einstein
name = "large crate"
desc = "A hefty metal crate, painted in Einstein Engines colours."
closet_appearance = /decl/closet_appearance/large_crate/einstein
/obj/structure/closet/crate/large/nanotrasen
name = "large crate"
desc = "A hefty metal crate, painted in standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/large_crate/nanotrasen
/obj/structure/closet/crate/large/xion
name = "large crate"
desc = "A hefty metal crate, painted in Xion Manufacturing Group orange."
closet_appearance = /decl/closet_appearance/large_crate/xion
/obj/structure/closet/crate/secure/large
name = "large crate"
@@ -431,10 +656,30 @@
return
//fluff variant
/obj/structure/closet/crate/secure/large/reinforced
desc = "A hefty, reinforced metal crate with an electronic locking system."
/obj/structure/closet/crate/secure/large/aether
name = "secure atmospherics crate"
desc = "A hefty metal crate with an electronic locking system, painted in Aether Atmospherics and Recycling colours."
closet_appearance = /decl/closet_appearance/large_crate/secure/aether
/obj/structure/closet/crate/secure/large/einstein
desc = "A hefty metal crate with an electronic locking system, painted in Einstein Engines colours."
closet_appearance = /decl/closet_appearance/large_crate/secure/einstein
/obj/structure/closet/crate/large/secure/heph
desc = "A hefty metal crate with an electronic locking system, marked with Hephaestus Industries colours."
closet_appearance = /decl/closet_appearance/large_crate/secure/heph
/obj/structure/closet/crate/secure/large/nanotrasen
desc = "A hefty metal crate with an electronic locking system, painted in standard NanoTrasen livery."
closet_appearance = /decl/closet_appearance/large_crate/secure/hazard
/obj/structure/closet/crate/large/secure/xion
desc = "A hefty metal crate with an electronic locking system, painted in Xion Manufacturing Group orange."
closet_appearance = /decl/closet_appearance/large_crate/secure/xion
/obj/structure/closet/crate/engineering
name = "engineering crate"
@@ -1,7 +1,7 @@
/obj/structure/largecrate
name = "large crate"
desc = "A hefty wooden crate."
icon = 'icons/obj/storage_vr.dmi' //VOREStation Edit
icon = 'icons/obj/storage.dmi'
icon_state = "densecrate"
density = 1
var/list/starts_with
@@ -44,8 +44,8 @@
/obj/structure/largecrate/hoverpod
name = "\improper Hoverpod assembly crate"
desc = "It comes in a box for the fabricator's sake. Where does the wood come from? ... And why is it lighter?"
icon_state = "mulecrate"
desc = "You aren't sure how this crate is so light, but the Wulf Aeronautics logo might be a hint."
icon_state = "vehiclecrate"
/obj/structure/largecrate/hoverpod/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.is_crowbar())
@@ -60,7 +60,7 @@
/obj/structure/largecrate/vehicle
name = "vehicle crate"
desc = "It comes in a box for the consumer's sake. ..How is this lighter?"
desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?"
icon_state = "vehiclecrate"
/obj/structure/largecrate/vehicle/Initialize()
@@ -74,18 +74,22 @@
/obj/structure/largecrate/vehicle/quadbike
name = "\improper ATV crate"
desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division."
starts_with = list(/obj/structure/vehiclecage/quadbike)
/obj/structure/largecrate/vehicle/quadtrailer
name = "\improper ATV trailer crate"
desc = "A hefty wooden crate proudly displaying the logo of Ward-Takahashi's automotive division."
starts_with = list(/obj/structure/vehiclecage/quadtrailer)
/obj/structure/largecrate/animal
icon_state = "lisacrate" //VOREStation Edit
icon_state = "crittercrate"
desc = "A hefty wooden crate with air holes. It is marked with the logo of NanoTrasen Pastures and the slogan, '90% less cloning defects* than competing brands**, or your money back***!'"
/obj/structure/largecrate/animal/mulebot
name = "Mulebot crate"
icon_state = "mulecrate" //VOREStation Edit
desc = "A hefty wooden crate labelled 'Proud Product of the Xion Manufacturing Group'"
icon_state = "mulecrate"
starts_with = list(/mob/living/bot/mulebot)
/obj/structure/largecrate/animal/corgi
@@ -423,7 +423,7 @@
return
// If the human is losing too much blood, beep.
if(((H.vessel.get_reagent_amount("blood")/H.species.blood_volume)*100) < BLOOD_VOLUME_SAFE)
if(H.vessel.get_reagent_amount("blood") < H.species.blood_volume*H.species.blood_level_safe)
visible_message("\The [src] beeps loudly.")
var/datum/reagent/B = H.take_blood(beaker,amount)
@@ -1,98 +0,0 @@
/obj/structure/noticeboard
name = "notice board"
desc = "A board for pinning important notices upon."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "nboard00"
density = 0
anchored = 1
var/notices = 0
/obj/structure/noticeboard/New(var/loc, var/dir, var/building = 0)
..()
if(building)
if(loc)
src.loc = loc
pixel_x = (dir & 3)? 0 : (dir == 4 ? -32 : 32)
pixel_y = (dir & 3)? (dir ==1 ? -27 : 27) : 0
update_icon()
return
/obj/structure/noticeboard/Initialize()
for(var/obj/item/I in loc)
if(notices > 4) break
if(istype(I, /obj/item/weapon/paper))
I.loc = src
notices++
icon_state = "nboard0[notices]"
. = ..()
//attaching papers!!
/obj/structure/noticeboard/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/paper))
if(notices < 5)
O.add_fingerprint(user)
add_fingerprint(user)
user.drop_from_inventory(O)
O.loc = src
notices++
icon_state = "nboard0[notices]" //update sprite
to_chat(user, "<span class='notice'>You pin the paper to the noticeboard.</span>")
else
to_chat(user, "<span class='notice'>You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached.</span>")
if(O.is_wrench())
to_chat(user, "<span class='notice'>You start to unwrench the noticeboard.</span>")
playsound(src, O.usesound, 50, 1)
if(do_after(user, 15 * O.toolspeed))
to_chat(user, "<span class='notice'>You unwrench the noticeboard.</span>")
new /obj/item/frame/noticeboard( src.loc )
qdel(src)
return
/obj/structure/noticeboard/attack_hand(var/mob/user)
user.examinate(src)
// Since Topic() never seems to interact with usr on more than a superficial
// level, it should be fine to let anyone mess with the board other than ghosts.
/obj/structure/noticeboard/examine(var/mob/user)
. = ..()
if(Adjacent(user))
var/dat = "<B>Noticeboard</B><BR>"
for(var/obj/item/weapon/paper/P in src)
dat += "<A href='?src=\ref[src];read=\ref[P]'>[P.name]</A> <A href='?src=\ref[src];write=\ref[P]'>Write</A> <A href='?src=\ref[src];remove=\ref[P]'>Remove</A><BR>"
user << browse("<HEAD><TITLE>Notices</TITLE></HEAD>[dat]","window=noticeboard")
onclose(user, "noticeboard")
/obj/structure/noticeboard/Topic(href, href_list)
..()
usr.set_machine(src)
if(href_list["remove"])
if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open
return
var/obj/item/P = locate(href_list["remove"])
if(P && P.loc == src)
P.loc = get_turf(src) //dump paper on the floor because you're a clumsy fuck
P.add_fingerprint(usr)
add_fingerprint(usr)
notices--
icon_state = "nboard0[notices]"
if(href_list["write"])
if((usr.stat || usr.restrained())) //For when a player is handcuffed while they have the notice window open
return
var/obj/item/P = locate(href_list["write"])
if((P && P.loc == src)) //ifthe paper's on the board
var/mob/living/M = usr
if(istype(M))
var/obj/item/weapon/pen/E = M.get_type_in_hands(/obj/item/weapon/pen)
if(E)
add_fingerprint(M)
P.attackby(E, usr)
else
to_chat(M, "<span class='notice'>You'll need something to write with!</span>")
if(href_list["read"])
var/obj/item/weapon/paper/P = locate(href_list["read"])
if((P && P.loc == src))
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY><TT>[P.info]</TT></BODY></HTML>", "window=[P.name]")
onclose(usr, "[P.name]")
return
@@ -192,6 +192,13 @@
prob(2);/obj/item/weapon/storage/box/sinpockets,
prob(2);/obj/item/weapon/storage/secure/briefcase,
prob(2);/obj/item/clothing/under/fluff/latexmaid,
prob(2);/obj/item/toy/tennis,
prob(2);/obj/item/toy/tennis/red,
prob(2);/obj/item/toy/tennis/yellow,
prob(2);/obj/item/toy/tennis/green,
prob(2);/obj/item/toy/tennis/cyan,
prob(2);/obj/item/toy/tennis/blue,
prob(2);/obj/item/toy/tennis/purple,
prob(1);/obj/item/clothing/glasses/sunglasses,
prob(1);/obj/item/clothing/glasses/welding,
prob(1);/obj/item/clothing/gloves/yellow,