Merge branch 'master' into upstream-merge-9974

This commit is contained in:
Nadyr
2021-03-26 03:57:31 -04:00
committed by GitHub
265 changed files with 7060 additions and 3394 deletions
+9 -2
View File
@@ -356,6 +356,10 @@
playsound(src, pickup_sound, 20, preference = /datum/client_preference/pickup_sounds)
return
// As above but for items being equipped to an active module on a robot.
/obj/item/proc/equipped_robot(var/mob/user)
return
//Defines which slots correspond to which slot flags
var/list/global/slot_flags_enumeration = list(
"[slot_wear_mask]" = SLOT_MASK,
@@ -788,7 +792,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
drop_sound = 'sound/items/drop/device.ogg'
//Worn icon generation for on-mob sprites
/obj/item/proc/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer,var/icon/clip_mask = null) //VOREStation edit - add 'clip mask' argument.
/obj/item/proc/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer,var/icon/clip_mask = null)
//Get the required information about the base icon
var/icon/icon2use = get_worn_icon_file(body_type = body_type, slot_name = slot_name, default_icon = default_icon, inhands = inhands)
var/state2use = get_worn_icon_state(slot_name = slot_name)
@@ -818,6 +822,9 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
if(istype(clip_mask)) //VOREStation Edit - For taur bodies/tails clipping off parts of uniforms and suits.
standing.filters += filter(type = "alpha", icon = clip_mask)
if(istype(clip_mask)) //For taur bodies/tails clipping off parts of uniforms and suits.
standing.filters += filter(type = "alpha", icon = clip_mask)
//Apply any special features
if(!inhands)
apply_blood(standing) //Some items show blood when bloodied
@@ -949,4 +956,4 @@ 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()
@@ -40,7 +40,7 @@
var/list/feeds = list()
for(var/datum/feed_channel/channel in news_network.network_channels)
var/list/messages = list()
if(!channel.censored)
if(!channel.censored && channel.channel_name != "Vir News Network") //Do not load the 'IC news' channel as it is simply too long.
var/index = 0
for(var/datum/feed_message/FM in channel.messages)
index++
@@ -1,5 +1,5 @@
/obj/item/device/floor_painter
name = "floor painter"
name = "paint sprayer"
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
@@ -43,6 +43,10 @@
if(!proximity)
return
if(istype(A, /mob/living/silicon/robot/platform))
var/mob/living/silicon/robot/platform/robit = A
return robit.try_paint(src, user)
var/turf/simulated/floor/F = A
if(!istype(F))
to_chat(user, "<span class='warning'>\The [src] can only be used on station flooring.</span>")
@@ -115,20 +119,20 @@
/obj/item/device/floor_painter/verb/choose_colour()
set name = "Choose Colour"
set desc = "Choose a floor painter colour."
set desc = "Choose a paint colour."
set category = "Object"
set src in usr
if(usr.incapacitated())
return
var/new_colour = input(usr, "Choose a colour.", "Floor painter", paint_colour) as color|null
var/new_colour = input(usr, "Choose a colour.", name, paint_colour) as color|null
if(new_colour && new_colour != paint_colour)
paint_colour = new_colour
to_chat(usr, "<span class='notice'>You set \the [src] to paint with <font color='[paint_colour]'>a new colour</font>.</span>")
/obj/item/device/floor_painter/verb/choose_decal()
set name = "Choose Decal"
set desc = "Choose a floor painter decal."
set desc = "Choose a painting decal."
set category = "Object"
set src in usr
@@ -142,7 +146,7 @@
/obj/item/device/floor_painter/verb/choose_direction()
set name = "Choose Direction"
set desc = "Choose a floor painter direction."
set desc = "Choose a painting direction."
set category = "Object"
set src in usr
+18 -15
View File
@@ -67,6 +67,10 @@ var/list/GPS_list = list()
. = ..()
update_holder()
/obj/item/device/gps/equipped_robot()
. = ..()
update_holder()
/obj/item/device/gps/equipped()
. = ..()
update_holder()
@@ -107,6 +111,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/proc/update_compass(var/update_compass_icon)
compass.hide_waypoints(FALSE)
var/turf/my_turf = get_turf(src)
for(var/thing in tracking_devices)
var/obj/item/device/gps/gps = locate(thing)
if(!istype(gps) || QDELETED(gps))
@@ -119,7 +124,7 @@ var/list/GPS_list = list()
compass.set_waypoint("\ref[gps]", gps_tag, gps_turf.x, gps_turf.y, gps_turf.z, LAZYACCESS(tracking_devices, "\ref[gps]"))
else
compass.set_waypoint("\ref[gps]", gps_tag, 0, 0, 0, LAZYACCESS(tracking_devices, "\ref[gps]"))
if(can_track(gps))
if(can_track(gps) && gps_turf && my_turf && gps_turf.z == my_turf.z)
compass.show_waypoint("\ref[gps]")
compass.rebuild_overlay_lists(update_compass_icon)
@@ -183,11 +188,11 @@ var/list/GPS_list = list()
var/turf/curr = get_turf(src)
var/area/my_area = get_area(src)
dat["my_area_name"] = my_area.name
dat["my_area_name"] = strip_improper(my_area.name)
dat["curr_x"] = curr.x
dat["curr_y"] = curr.y
dat["curr_z"] = curr.z
dat["curr_z_name"] = using_map.get_zlevel_name(curr.z)
dat["curr_z_name"] = strip_improper(using_map.get_zlevel_name(curr.z))
dat["gps_list"] = list()
dat["z_level_detection"] = using_map.get_map_levels(curr.z, long_range)
@@ -201,10 +206,10 @@ var/list/GPS_list = list()
gps_data["gps_tag"] = G.gps_tag
var/area/A = get_area(G)
gps_data["area_name"] = A.get_name()
gps_data["area_name"] = strip_improper(A.get_name())
var/turf/T = get_turf(G)
gps_data["z_name"] = using_map.get_zlevel_name(T.z)
gps_data["z_name"] = strip_improper(using_map.get_zlevel_name(T.z))
gps_data["direction"] = get_adir(curr, T)
gps_data["degrees"] = round(Get_Angle(curr,T))
gps_data["distX"] = T.x - curr.x
@@ -221,7 +226,7 @@ var/list/GPS_list = list()
/obj/item/device/gps/proc/display(mob/user)
if(emped)
to_chat(user, "It's busted!")
to_chat(user, SPAN_WARNING("It's busted!"))
return
var/list/dat = list()
@@ -229,9 +234,9 @@ var/list/GPS_list = list()
dat += "<table width = '100%'>"
if(!tracking)
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch On]\]</a></tr>"
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch On\]</a></tr>"
else
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch Off]\]</a></tr>"
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch Off\]</a></tr>"
dat += "<tr><td colspan = 2><b>Current location</b></td><td colspan = 2>[gps_data["my_area_name"]]</td><td colspan = 2><b>([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])</b></td></tr>"
dat += "<tr><td colspan = 4>[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.</td>"
dat += "<td><a href='?src=\ref[src];tag=1'>\[Change Tag\]</a><a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a>[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]</td></tr>"
@@ -244,13 +249,12 @@ var/list/GPS_list = list()
dat += "<td>[gps["gps_tag"]]</td><td>[gps["area_name"]]</td>"
if(istype(gps_data["ref"], /obj/item/device/gps/internal/poi))
dat += "<td>[gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "in \the [gps["z_name"]]"]</td>"
dat += "<td>[gps["local"] ? "[gps["direction"]] Dist: [round(gps["distance"], 10)]m" : "[gps["z_name"]]"]</td>"
else
dat += "<td>([gps["x"]], [gps["y"]], [gps["z_name"]])</td>"
if(gps["local"])
dat += "<td>[gps["distance"]]m</td>"
dat += "<td>[gps["degrees"]]° ([gps["direction"]])</td>"
dat += "<td>[gps["distance"]]m</td><td>[gps["direction"]]</td>"
else
dat += "<td colspan = 2>Non-local signal.</td>"
@@ -471,9 +475,9 @@ var/list/GPS_list = list()
dat += "<table width = '100%'>"
if(!tracking)
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch On]\]</a></tr>"
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch On\]</a></tr>"
else
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch Off]\]</a></tr>"
dat += "<tr><td colspan = 6></td><a href='?src=\ref[src];toggle_power=1'>\[Switch Off\]</a></tr>"
dat += "<tr><td colspan = 2><b>Current location</b></td><td colspan = 2>[gps_data["my_area_name"]]</td><td colspan = 2><b>([gps_data["curr_x"]], [gps_data["curr_y"]], [gps_data["curr_z_name"]])</b></td></tr>"
dat += "<tr><td colspan = 4>[hide_signal ? "Tagged" : "Broadcasting"] as '[gps_tag]'.</td>"
dat += "<td><a href='?src=\ref[src];tag=1'>\[Change Tag\]</a><a href='?src=\ref[src];range=1'>\[Toggle Scan Range\]</a>[can_hide_signal ? "<a href='?src=\ref[src];hide=1'>\[Toggle Signal Visibility\]</a>":""]</td></tr>"
@@ -485,8 +489,7 @@ var/list/GPS_list = list()
var/gps_ref = "\ref[gps["ref"]]"
dat += "<td>[gps["gps_tag"]]</td><td>[gps["area_name"]] ([gps["x"]], [gps["y"]], [gps["z_name"]])</td>"
if(gps["local"])
dat += "<td>[gps["distance"]]m</td>"
dat += "<td>[gps["degrees"]]° ([gps["direction"]])</td>"
dat += "<td>[gps["distance"]]m</td><td>[gps["direction"]]</td>"
else
dat += "<td colspan = 2>Non-local signal.</td>"
if(LAZYACCESS(tracking_devices, gps_ref))
@@ -484,34 +484,70 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/smokable/cigarette/joint
name = "joint"
desc = "This probably shouldn't ever show up."
desc = "A joint lovingly rolled and crafted with care. Blaze it."
icon_state = "joint"
max_smoketime = 400
smoketime = 400
chem_volume = 25
/obj/item/clothing/mask/smokable/cigarette/joint/blunt
name = "blunt"
desc = "A blunt lovingly rolled and crafted with care. Blaze it."
icon_state = "cigar"
max_smoketime = 500
smoketime = 500
nicotine_amt = 0
nicotine_amt = 4
chem_volume = 45
/obj/item/weapon/rollingpaper
/obj/item/weapon/reagent_containers/rollingpaper
name = "rolling paper"
desc = "A small, thin piece of easily flammable paper, commonly used for rolling and smoking various dried plants."
description_fluff = "The legalization of certain substances propelled the sale of rolling papers through the roof. Now almost every Trans-stellar produces a variety, often of questionable quality."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cig paper"
volume = 25
var/obj/item/clothing/mask/smokable/cigarette/crafted_type = /obj/item/clothing/mask/smokable/cigarette/joint
/obj/item/weapon/rollingpaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/weapon/reagent_containers/rollingpaper/blunt
name = "blunt wrap"
desc = "A small piece of easily flammable paper similar to that which encases cigars. It's made out of tobacco, bigger than a standard rolling paper, and will last longer."
icon_state = "blunt paper"
volume = 45
crafted_type = /obj/item/clothing/mask/smokable/cigarette/joint/blunt
/obj/item/weapon/reagent_containers/rollingpaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W
if (!G.dry)
to_chat(user, "<span class='notice'>[G] must be dried before you roll it into [src].</span>")
if (!G.dry) //This prevents people from just stuffing cheeseburgers into their joint
to_chat(user, "<span class='notice'>[G.name] must be dried before you add it to [src].</span>")
return
var/obj/item/clothing/mask/smokable/cigarette/joint/J = new /obj/item/clothing/mask/smokable/cigarette/joint(user.loc)
to_chat(usr, "<span class='notice'>You roll the [G.name] into a joint!</span>")
J.add_fingerprint(user)
if (G.reagents.total_volume + src.reagents.total_volume > src.reagents.maximum_volume) //Check that we don't have too much already in the paper before adding things
to_chat(user, "<span class='warning'>The [src] is too full to add [G.name].</span>")
return
if (src.reagents.total_volume == 0)
if (istype(src, /obj/item/weapon/reagent_containers/rollingpaper/blunt)) //update the icon if this is the first thing we're adding to the paper
src.icon_state = "blunt_full"
else
src.icon_state = "paper_full"
to_chat(user, "<span class='notice'>You add the [G.name] to the [src.name].</span>")
src.add_fingerprint(user)
if(G.reagents)
G.reagents.trans_to_obj(J, G.reagents.total_volume)
J.name = "[G.name] joint"
J.desc = "A joint lovingly rolled and filled with [G.name]. Blaze it."
G.reagents.trans_to_obj(src, G.reagents.total_volume) //adds the reagents from the plant into the paper
user.drop_from_inventory(G)
qdel(G)
qdel(src)
/obj/item/weapon/reagent_containers/rollingpaper/attack_self(mob/living/user)
if(!src.reagents) //don't roll an empty joint
to_chat(user, "<span class='warning'>There is nothing in [src]. Add something to it first.</span>")
return
var/obj/item/clothing/mask/smokable/cigarette/J = new crafted_type()
to_chat(user,"<span class='notice'>You roll the [src] into a blunt!</span>")
J.add_fingerprint(user)
if(src.reagents)
src.reagents.trans_to_obj(J, src.reagents.total_volume)
user.drop_from_inventory(src)
user.put_in_hands(J)
qdel(src)
/////////
//ZIPPO//
@@ -157,6 +157,18 @@
. = ..()
access = get_all_station_access().Copy() + access_synth
/obj/item/weapon/card/id/platform
name = "\improper Support Platform ID"
desc = "Access module for support platforms."
icon_state = "id-robot"
item_state = "tdgreen"
assignment = "Synthetic"
access = list(
access_synth, access_mining, access_mining_station, access_mining_office, access_research,
access_xenoarch, access_xenobiology, access_external_airlocks, access_robotics, access_tox,
access_tox_storage, access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot
)
/obj/item/weapon/card/id/centcom
name = "\improper CentCom. ID"
desc = "An ID straight from Central Command."
@@ -177,4 +177,15 @@
default_material = "DEFAULT_WALL_MATERIAL"
fragile = 0
sharp = 1
edge = 0
edge = 0
/obj/item/weapon/material/twohanded/riding_crop
name = "riding crop"
desc = "A rod, a little over a foot long with a widened grip and a thick, leather patch at the end. Used since the dawn of the West to control animals."
force_divisor = 0.05 //Required in order for the X attacks Y message to pop up.
unwielded_force_divisor = 1 // One here, too.
applies_material_colour = 1
unbreakable = 1
base_icon = "riding_crop"
icon_state = "riding_crop0"
attack_verb = list("cropped","spanked","swatted","smacked","peppered")
@@ -0,0 +1,9 @@
//1R1S: Malady Blanche
/obj/item/weapon/material/twohanded/riding_crop/malady
name = "Malady's riding crop"
icon = 'icons/vore/custom_items_vr.dmi'
item_icons = list(
slot_l_hand_str = 'icons/vore/custom_items_left_hand_vr.dmi',
slot_r_hand_str = 'icons/vore/custom_items_right_hand_vr.dmi',
)
desc = "An infernum made riding crop with Malady Blanche engraved in the shaft. It's a little worn from how many butts it has spanked."
@@ -354,8 +354,16 @@
throwforce = 2
slot_flags = SLOT_BELT
storage_slots = 14
can_hold = list(/obj/item/weapon/rollingpaper)
starts_with = list(/obj/item/weapon/rollingpaper = 14)
can_hold = list(/obj/item/weapon/reagent_containers/rollingpaper)
starts_with = list(/obj/item/weapon/reagent_containers/rollingpaper = 14)
/obj/item/weapon/storage/rollingpapers/blunt
name = "blunt wrap pack"
desc = "A small cardboard pack containing several folded blunt wraps."
icon_state = "bluntbox"
storage_slots = 7
can_hold = list(/obj/item/weapon/reagent_containers/rollingpaper/blunt)
starts_with = list(/obj/item/weapon/reagent_containers/rollingpaper/blunt = 7)
/*
* Vial Box
-3
View File
@@ -165,9 +165,6 @@
/obj/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
return
/obj/proc/get_cell()
return
// Used to mark a turf as containing objects that are dangerous to step onto.
/obj/proc/register_dangerous_to_step()
var/turf/T = get_turf(src)
+1
View File
@@ -362,6 +362,7 @@
/obj/item/weapon/reagent_containers/food/drinks/bottle/peppermintschnapps,
/obj/item/weapon/reagent_containers/food/drinks/bottle/peachschnapps,
/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonadeschnapps,
/obj/item/weapon/reagent_containers/food/drinks/bottle/jager,
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/cider,
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/litebeer,
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer,
@@ -46,7 +46,7 @@
starts_with = null
if(!opened) // if closed, any item at the crate's loc is put in the contents
if(istype(loc, /mob/living)) return //VOREStation Edit - No collecting mob organs if spawned inside mob
if(istype(loc, /mob/living)) return
var/obj/item/I
for(I in loc)
if(I.density || I.anchored || I == src) continue
@@ -38,7 +38,7 @@
break
if(choice)
finalized = alert(M, "Are you sure you want to play as [choice]?","Confirmation","No","Yes")
finalized = alert(M, "Are you sure you want to play as [choice]? By clicking yes you should expect to be treated as vore predator and possibly killed. Do not attack other players. You will have minimal OOC pref protections.","Confirmation","No","Yes")
if(randomize)
choice = pick(possible_mobs)
@@ -99,4 +99,4 @@
qdel(src)
/obj/structure/ghost_pod/ghost_activated/morphspawn/no_announce
announce_prob = 0
announce_prob = 0