mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2026-08-29 23:57:10 +01:00
Merge branch 'master' of https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13 into modsuits
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
var/body_colors = "#e3ba84" //a default color just in case.
|
||||
var/gibs_reagent_id = /datum/reagent/liquidgibs
|
||||
var/gibs_bloodtype = "A+"
|
||||
turf_loc_check = FALSE
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases, list/blood_data)
|
||||
. = ..()
|
||||
@@ -22,6 +23,9 @@
|
||||
add_blood_DNA(list("Non-human DNA" = gibs_bloodtype), diseases)
|
||||
update_icon()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/replace_decal(obj/effect/decal/cleanable/C)
|
||||
return FALSE //Never fail to place us
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/update_icon()
|
||||
add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY)
|
||||
cut_overlays()
|
||||
|
||||
@@ -725,6 +725,26 @@
|
||||
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high)
|
||||
needs_anchored = FALSE
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/fullupgrade
|
||||
build_path = /obj/machinery/chem_dispenser/fullupgrade
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin/bluespace = 2,
|
||||
/obj/item/stock_parts/capacitor/quadratic = 2,
|
||||
/obj/item/stock_parts/manipulator/femto = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/cell/bluespace = 1,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/mutagensaltpeter
|
||||
build_path = /obj/machinery/chem_dispenser/mutagensaltpeter
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin/bluespace = 2,
|
||||
/obj/item/stock_parts/capacitor/quadratic = 2,
|
||||
/obj/item/stock_parts/manipulator/femto = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/cell/bluespace = 1,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/apothecary
|
||||
name = "Apotechary Chem Dispenser (Machine Board)"
|
||||
build_path = /obj/machinery/chem_dispenser/apothecary
|
||||
@@ -740,7 +760,13 @@
|
||||
name = "Reagent Synthesizer (Abductor Machine Board)"
|
||||
icon_state = "abductor_mod"
|
||||
build_path = /obj/machinery/chem_dispenser/abductor
|
||||
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high)
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin/bluespace = 2,
|
||||
/obj/item/stock_parts/capacitor/quadratic = 2,
|
||||
/obj/item/stock_parts/manipulator/femto = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/cell/bluespace = 1,
|
||||
)
|
||||
needs_anchored = FALSE
|
||||
|
||||
/obj/item/circuitboard/machine/chem_heater
|
||||
@@ -1175,11 +1201,31 @@
|
||||
icon_state = "service"
|
||||
build_path = /obj/machinery/chem_dispenser/drinks
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/drinks/fullupgrade
|
||||
build_path = /obj/machinery/chem_dispenser/drinks/fullupgrade
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin/bluespace = 2,
|
||||
/obj/item/stock_parts/capacitor/quadratic = 2,
|
||||
/obj/item/stock_parts/manipulator/femto = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/cell/bluespace = 1,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer
|
||||
name = "Booze Dispenser (Machine Board)"
|
||||
icon_state = "service"
|
||||
build_path = /obj/machinery/chem_dispenser/drinks/beer
|
||||
|
||||
/obj/item/circuitboard/machine/chem_dispenser/drinks/beer/fullupgrade
|
||||
build_path = /obj/machinery/chem_dispenser/drinks/beer/fullupgrade
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/matter_bin/bluespace = 2,
|
||||
/obj/item/stock_parts/capacitor/quadratic = 2,
|
||||
/obj/item/stock_parts/manipulator/femto = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/stock_parts/cell/bluespace = 1,
|
||||
)
|
||||
|
||||
/obj/item/circuitboard/machine/chem_master/condi
|
||||
name = "CondiMaster 3000 (Machine Board)"
|
||||
icon_state = "service"
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
var/static/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6")
|
||||
var/static/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED,
|
||||
RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER, RANDOM_SYMBOL, RANDOM_PUNCTUATION, RANDOM_DRAWING)
|
||||
var/static/list/graffiti_large_h = list("yiffhell", "secborg", "paint")
|
||||
var/static/list/graffiti_large_h = list("yiffhell", "furrypride", "secborg", "paint")
|
||||
|
||||
var/static/list/all_drawables = graffiti + symbols + drawings + oriented + runes + graffiti_large_h
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
icon_state = "beacon-off"
|
||||
|
||||
/obj/item/beacon/Destroy()
|
||||
GLOB.teleportbeacons.Remove(src)
|
||||
GLOB.teleportbeacons -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/beacon/attack_self(mob/user)
|
||||
@@ -27,7 +27,7 @@
|
||||
GLOB.teleportbeacons += src
|
||||
else
|
||||
icon_state = "beacon-off"
|
||||
GLOB.teleportbeacons.Remove(src)
|
||||
GLOB.teleportbeacons -= src
|
||||
to_chat(user, "<span class='notice'>You [enabled ? "enable" : "disable"] the beacon.</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -67,6 +67,9 @@
|
||||
// when we get this many shards, we get a free bulb.
|
||||
var/shards_required = 4
|
||||
|
||||
// whether it is "bluespace powered" (can be used at a range)
|
||||
var/bluespace_toggle = FALSE
|
||||
|
||||
/obj/item/lightreplacer/New()
|
||||
uses = max_uses / 2
|
||||
failmsg = "The [name]'s refill light blinks red."
|
||||
@@ -242,7 +245,7 @@
|
||||
|
||||
/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity)
|
||||
. = ..()
|
||||
if(!proximity)
|
||||
if(!proximity && !bluespace_toggle)
|
||||
return
|
||||
if(!isturf(T))
|
||||
return
|
||||
@@ -253,6 +256,18 @@
|
||||
break
|
||||
used = TRUE
|
||||
if(istype(A, /obj/machinery/light))
|
||||
if(!proximity && bluespace_toggle)
|
||||
// Set variable for target light
|
||||
var/obj/machinery/light/target = A
|
||||
|
||||
// Check light status before playing effects
|
||||
if(target.status != LIGHT_OK)
|
||||
// Display RPED beam
|
||||
U.Beam(A, icon_state = "rped_upgrade", time = 1 SECONDS)
|
||||
|
||||
// Play RPED sound
|
||||
playsound(src, 'sound/items/pshoom.ogg', 40, 1)
|
||||
|
||||
ReplaceLight(A, U)
|
||||
|
||||
if(!used)
|
||||
@@ -266,6 +281,15 @@
|
||||
/obj/item/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J)
|
||||
return
|
||||
|
||||
/obj/item/lightreplacer/blue
|
||||
name = "bluespace light replacer"
|
||||
desc = "A modified light replacer that zaps lights into place. Refill with broken or working lightbulbs, or sheets of glass."
|
||||
icon_state = "lightreplacer_blue"
|
||||
bluespace_toggle = TRUE
|
||||
|
||||
/obj/item/lightreplacer/blue/emag_act()
|
||||
return // balancing against longrange explosions
|
||||
|
||||
#undef LIGHT_OK
|
||||
#undef LIGHT_EMPTY
|
||||
#undef LIGHT_BROKEN
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
mytape = new starting_tape_type(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/taperecorder/Destroy()
|
||||
// QDEL_NULL(soundloop)
|
||||
QDEL_NULL(mytape)
|
||||
return ..()
|
||||
|
||||
/obj/item/taperecorder/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -193,34 +193,31 @@
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/saber
|
||||
possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
|
||||
unique_reskin = list("Sword" = "sword0", "Saber" = "esaber0")
|
||||
unique_reskin = list(
|
||||
"Sword" = list("icon_state" = "sword0"),
|
||||
"Saber" = list("icon_state" = "esaber0")
|
||||
)
|
||||
var/hacked = FALSE
|
||||
var/saber = FALSE
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/saber/transform_weapon(mob/living/user, supress_message_text)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(active)
|
||||
if(sword_color)
|
||||
if(saber)
|
||||
icon_state = "esaber[sword_color]"
|
||||
else
|
||||
icon_state = "sword[sword_color]"
|
||||
else
|
||||
if(saber)
|
||||
icon_state = "esaber0"
|
||||
switch(current_skin)
|
||||
if("Saber")
|
||||
icon_state = "esaber[active ? sword_color : "0"]"
|
||||
// No skin
|
||||
else
|
||||
icon_state = "sword0"
|
||||
icon_state = "sword[active ? sword_color : "0"]"
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/saber/reskin_obj(mob/M)
|
||||
. = ..()
|
||||
if(icon_state == "esaber0")
|
||||
saber = TRUE
|
||||
if(active)
|
||||
if(saber)
|
||||
icon_state = "esaber[sword_color]"
|
||||
else
|
||||
icon_state = "sword[sword_color]"
|
||||
if(!.)
|
||||
return
|
||||
switch(current_skin)
|
||||
if("Sword")
|
||||
icon_state = "sword[active ? sword_color : "0"]"
|
||||
if("Saber")
|
||||
icon_state = "esaber[active ? sword_color : "0"]"
|
||||
|
||||
/obj/item/melee/transforming/energy/sword/saber/set_sword_color(var/color_forced)
|
||||
if(color_forced) // wow i really do not like this at fucking all holy SHIT
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
name = "advanced mop"
|
||||
mopcap = 10
|
||||
icon_state = "advmop"
|
||||
item_state = "mop"
|
||||
item_state = "advmop"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
|
||||
force = 6
|
||||
|
||||
@@ -349,24 +349,31 @@
|
||||
reskin_obj(user)
|
||||
return TRUE
|
||||
|
||||
/// Reskins an object according to M's choice, modified to be overridable and supports different icons
|
||||
/obj/proc/reskin_obj(mob/M)
|
||||
if(!LAZYLEN(unique_reskin))
|
||||
return
|
||||
return FALSE
|
||||
|
||||
var/list/items = list()
|
||||
for(var/reskin_option in unique_reskin)
|
||||
var/image/item_image = image(icon = src.icon, icon_state = unique_reskin[reskin_option])
|
||||
var/image/item_image = image(
|
||||
icon = unique_reskin[reskin_option]["icon"] ? unique_reskin[reskin_option]["icon"] : icon,
|
||||
icon_state = unique_reskin[reskin_option]["icon_state"])
|
||||
items += list("[reskin_option]" = item_image)
|
||||
sortList(items)
|
||||
|
||||
var/pick = show_radial_menu(M, src, items, custom_check = CALLBACK(src, .proc/check_reskin_menu, M), radius = 38, require_near = TRUE)
|
||||
if(!pick)
|
||||
return
|
||||
if(!unique_reskin[pick])
|
||||
return
|
||||
return FALSE
|
||||
if(!unique_reskin[pick]["icon_state"])
|
||||
return FALSE
|
||||
current_skin = pick
|
||||
icon_state = unique_reskin[pick]
|
||||
var/has_icon = unique_reskin[pick]["icon"]
|
||||
if(has_icon)
|
||||
icon = has_icon
|
||||
icon_state = unique_reskin[pick]["icon_state"]
|
||||
to_chat(M, "[src] is now skinned as '[pick].'")
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
* Checks if we are allowed to interact with a radial menu for reskins
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
/obj/structure/closet/crate/freezer/Destroy()
|
||||
recursive_organ_check(src)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/structure/closet/crate/freezer/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
if(new_style)
|
||||
H.hair_style = new_style
|
||||
|
||||
H.update_mutant_bodyparts()
|
||||
H.update_hair()
|
||||
|
||||
/obj/structure/mirror/examine_status(mob/user)
|
||||
|
||||
Reference in New Issue
Block a user