Merge branch 'master' into computer_tweaks

# Conflicts:
#	code/game/jobs/job/ship_crew.dm
This commit is contained in:
alberyk
2021-10-10 13:18:14 -03:00
229 changed files with 3237 additions and 502 deletions
+11 -1
View File
@@ -11,7 +11,10 @@
/obj/effect/landmark/New()
..()
tag = text("landmark*[]", name)
do_landmark_effect()
return 1
/obj/effect/landmark/proc/do_landmark_effect()
switch(name) //some of these are probably obsolete
if("monkey")
monkeystart += loc
@@ -93,7 +96,6 @@
return
landmarks_list += src
return 1
/obj/effect/landmark/proc/delete()
delete_me = 1
@@ -257,3 +259,11 @@
/obj/effect/landmark/distress_team_equipment
name = "distress equipment"
/obj/effect/landmark/force_spawnpoint
name = "force spawnpoint"
var/job_tag = "Anyone"
/obj/effect/landmark/force_spawnpoint/do_landmark_effect()
LAZYINITLIST(force_spawnpoints)
LAZYADD(force_spawnpoints[job_tag], loc)
+1 -1
View File
@@ -12,7 +12,7 @@
. = ..()
if(force || !istype(H) || slot != slot_wear_suit)
return
if(H.species.get_bodytype() in list(SPECIES_HUMAN, SPECIES_HUMAN_OFFWORLD, SPECIES_TAJARA, SPECIES_TAJARA_ZHAN, SPECIES_TAJARA_MSAI, SPECIES_SKRELL, SPECIES_UNATHI)) //gtfo stinky bugs
if(H.species.get_bodytype() in list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_SKRELL, BODYTYPE_UNATHI)) //gtfo stinky bugs
return
else
return FALSE
@@ -10,6 +10,7 @@
var/list/decals = list(
"quarter-turf" = list("path" = /obj/effect/floor_decal/corner, "precise" = 1, "coloured" = 1),
"full quarter-turf" = list("path" = /obj/effect/floor_decal/corner_full, "precise" = 1, "coloured" = 1),
"hazard stripes" = list("path" = /obj/effect/floor_decal/industrial/warning),
"corner, hazard" = list("path" = /obj/effect/floor_decal/industrial/warning/corner),
"hatched marking" = list("path" = /obj/effect/floor_decal/industrial/hatch, "coloured" = 1),
@@ -67,12 +67,12 @@
<br><small><i>This document serves as a notice and permits the sanctioned arrest of
the denoted employee of the NanoTrasen Civilian Branch of Operation by the
Security Department of the denoted facility. </br>
In accordance with Corporate Regulation, the denoted employee must be presented with signed and stamped or
digitally autorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff is expected to offer full co-operation.</br>
In accordance with Corporate Regulations, the denoted employee must be presented with a signed and stamped or
digitally authorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff are expected to offer full co-operation.</br>
In the event of the Suspect attempting to resist or flee, resisting arrest charges need to be applied !</br>
In the event of staff attempting to interfere with a lawful arrest, they are to be detained as an accomplice !</br>
In the event of no warrant being displayed <b>prior</b> to the arrest, security personell performing the arrest are subject to illegal detention charges !
In the event of no warrant being displayed <b>prior</b> to the arrest, security personnel performing the arrest are subject to illegal detention charges !
</i></small>
<br>
<br><b>Suspect's name: </b>
@@ -104,11 +104,11 @@
the Suspect's person/belongings/premises and/or Department for any items and materials
that could be connected to the suspected regulation violation described below,
pending an investigation in progress. </br>
The Security Officer(s) are obligated to remove any and all such items from the Suspects posession
The Security Officer(s) are obligated to remove any and all such items from the Suspect's posession
and/or Department and file it as evidence. </br>
In accordance with Corporate Regulation, the denoted employee must be presented with signed and stamped or
digitally autorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff is expected to offer full co-operation.</br>
In accordance with Corporate Regulations, the denoted employee must be presented with a signed and stamped or
digitally authorized warrant before the actions entailed can be conducted legally. </br>
The Suspect/Department staff are expected to offer full co-operation.</br>
In the event of the Suspect/Department staff attempting to resist/impede this search or flee, they must be taken into custody immediately! </br>
All confiscated items must be filed and taken to Evidence!</small></i></br>
<br><b>Suspect's/location name: </b>
@@ -63,3 +63,10 @@
/obj/item/device/flashlight/lamp/lava/yellow
light_color = COLOR_YELLOW
/obj/item/device/flashlight/lamp/stage
name = "stage lamp"
desc = "A portable, beautiful and flashy stage light!"
light_color = COLOR_ORANGE
icon_state = "stage"
item_state = "stage"
@@ -113,3 +113,9 @@
desc = "Something that should not exist."
icon_state = "megaphone_clown"
item_state = "megaphone_clown"
/obj/item/device/megaphone/stagemicrophone
name = "dazzling stage microphone"
desc = "A glamorous looking stage microphone, complete with running lights and holographic effects around it."
icon_state = "stagemicrophone"
item_state = "stagemicrophone"
+2 -2
View File
@@ -75,7 +75,7 @@
name = "voidsuit kit"
icon = 'icons/obj/device.dmi'
icon_state = "modkit"
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits a Himean voidsuit."
desc = "A simple cardboard box containing the requisition forms, permits, and decal kits for a Himean voidsuit."
desc_info = "In order to convert a voidsuit simply click on voidsuit or helmet with this item\
The same process can be used to convert the voidsuit back into a regular voidsuit. Make sure not to have a helmet or tank in the suit\
or else it will be deleted."
@@ -119,7 +119,7 @@
var/obj/item/P = new voidsuit_product(get_turf(W))
if(!reconverting)
to_chat(user, SPAN_NOTICE("Your permit for a [P] has been processed. Enjoy!"))
to_chat(user, SPAN_NOTICE("Your permit for [P] has been processed. Enjoy!"))
else
to_chat(user, SPAN_NOTICE("Your voidsuit part has been reconverted into [P]."))
+28 -7
View File
@@ -4,9 +4,13 @@ var/list/mob_icon_icon_states = list()
// If we don't actually need to offset this, don't bother with any of the generation/caching.
if(!mob_icon_icon_states[mob_icon])
mob_icon_icon_states[mob_icon] = icon_states(mob_icon)
if(LAZYLEN(H.species.equip_adjust) && H.species.equip_adjust[slot] && length(H.species.equip_adjust[slot]) && (mob_state in mob_icon_icon_states[mob_icon]))
var/needs_shift = !(H.species.bodytype in sprite_sheets)
if(!needs_shift && length(item_icons))
needs_shift = (slot in item_icons)
if(LAZYLEN(H.species.equip_adjust) && H.species.equip_adjust[slot] && length(H.species.equip_adjust[slot]) && (mob_state in mob_icon_icon_states[mob_icon]) && needs_shift)
// Check the cache for previously made icons.
var/image_key = "[mob_icon]-[mob_state]-[color]-[slot]"
var/image_key_mod = get_image_key_mod()
var/image_key = "[mob_icon]-[mob_state]-[color]-[slot][!isnull(image_key_mod) ? "-[image_key_mod]" : ""]"
if(!LAZYISIN(H.species.equip_overlays, image_key))
var/icon/final_I = new(H.species.icon_template ? H.species.icon_template : 'icons/mob/human.dmi',"blank")
var/list/shifts = H.species.equip_adjust[slot]
@@ -18,9 +22,7 @@ var/list/mob_icon_icon_states = list()
var/icon/equip = new(mob_icon, icon_state = mob_state, dir = use_dir)
var/icon/canvas = new(H.species.icon_template ? H.species.icon_template : 'icons/mob/human.dmi',"blank")
canvas.Blend(equip, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
if(build_from_parts)
var/icon/parts_icon = new(mob_icon, icon_state = "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", dir = use_dir)
canvas.Blend(parts_icon, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
canvas = build_shifted_additional_parts(H, mob_icon, slot, canvas, facing_list, use_dir)
final_I.Insert(canvas, dir = use_dir)
LAZYINITLIST(H.species.equip_overlays)
var/image/final_image = overlay_image(final_I, color = color, flags = RESET_COLOR|RESET_ALPHA)
@@ -29,6 +31,25 @@ var/list/mob_icon_icon_states = list()
I.appearance = H.species.equip_overlays[image_key]
return I
var/image/I = overlay_image(mob_icon, mob_state, color, RESET_COLOR|RESET_ALPHA)
if(build_from_parts)
I.add_overlay(overlay_image(mob_icon, "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", null, RESET_COLOR|RESET_ALPHA))
var/image/additional_parts = build_additional_parts(H, mob_icon)
if(additional_parts)
I.add_overlay(additional_parts)
return I
/obj/item/proc/get_image_key_mod()
return
/obj/item/proc/build_shifted_additional_parts(mob/living/carbon/human/H, mob_icon, slot, var/icon/canvas, var/list/facing_list, use_dir)
if(!canvas)
return
if(build_from_parts)
var/icon/parts_icon = new(mob_icon, icon_state = "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", dir = use_dir)
canvas.Blend(parts_icon, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1)
return canvas
/obj/item/proc/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
var/image/I
if(build_from_parts)
I = overlay_image(mob_icon, "[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_[worn_overlay]", null, RESET_COLOR|RESET_ALPHA)
return I
@@ -17,7 +17,7 @@
throwforce = 10
w_class = ITEMSIZE_SMALL
var/cooldown = 0 // floor tap cooldown
var/static/list/nullchoices = list("Null Rod" = /obj/item/nullrod/, "Null Staff" = /obj/item/nullrod/staff, "Null Orb" = /obj/item/nullrod/orb, "Null Athame" = /obj/item/nullrod/athame, "Tribunal Rod" = /obj/item/nullrod/dominia)
var/static/list/nullchoices = list("Null Rod" = /obj/item/nullrod/, "Null Staff" = /obj/item/nullrod/staff, "Null Orb" = /obj/item/nullrod/orb, "Null Athame" = /obj/item/nullrod/athame, "Tribunal Rod" = /obj/item/nullrod/dominia, "Tajaran charm" = /obj/item/nullrod/charm)
/obj/item/nullrod/dominia
name = "tribunalist purification rod"
@@ -49,6 +49,24 @@
icon_state = "nullathame"
item_state = "nullathame"
/obj/item/nullrod/charm
name = "obsidian charm"
desc = "A tajaran charm created from obsidian created to ward off the supernatural and bring good fortune."
desc_fluff = "Talismans and charms are common among religious and superstitious tajara, with many believing them to be able to bring good fortune or ward off raskara and other evils."
icon = 'icons/obj/tajara_items.dmi'
contained_sprite = TRUE
item_icons = null
icon_state = "stone_talisman"
item_state = "stone_talisman"
force = 4
throw_range = 7
throwforce = 2
slot_flags = SLOT_MASK | SLOT_WRISTS | SLOT_EARS | SLOT_TIE
w_class = ITEMSIZE_TINY
/obj/item/nullrod/charm/get_mask_examine_text(mob/user)
return "around [user.get_pronoun("his")] neck"
/obj/item/nullrod/obsidianshards
name = "obsidian shards"
desc = "A loose pile of obsidian shards, waiting to be assembled into a religious focus."
@@ -224,7 +224,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
set_light(2, 0.25, "#E38F46")
START_PROCESSING(SSprocessing, src)
/obj/item/clothing/mask/smokable/proc/die(var/no_message = 0)
/obj/item/clothing/mask/smokable/proc/die(var/no_message = FALSE, var/intentionally = FALSE)
var/turf/T = get_turf(src)
set_light(0)
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
@@ -235,15 +235,19 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/mob/living/M = loc
if(!no_message)
to_chat(M, SPAN_NOTICE("Your [name] goes out."))
if(M.wear_mask)
if(intentionally)
butt.loc = T
else if(M.wear_mask == src)
M.remove_from_mob(src) //un-equip it so the overlays can update
M.update_inv_wear_mask(0)
M.equip_to_slot_if_possible(butt, slot_wear_mask)
if(!(M.equip_to_slot_if_possible(butt, slot_wear_mask, ignore_blocked = TRUE)))
M.put_in_hands(butt) // In case the above somehow fails, ensure it is placed somewhere
else
M.remove_from_mob(src) // if it dies in your hand.
M.update_inv_l_hand(0)
M.update_inv_r_hand(1)
M.put_in_hands(butt)
STOP_PROCESSING(SSprocessing, src)
qdel(src)
else
@@ -359,7 +363,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(lit)
user.visible_message(SPAN_NOTICE("<b>[user]</b> calmly drops and treads on the lit [src], putting it out instantly."), SPAN_NOTICE("You calmly drop and tread on the lit [src], putting it out instantly."))
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
die(TRUE)
die(TRUE, TRUE)
else // Cigarette packing. For compulsive smokers.
user.visible_message(SPAN_NOTICE("<b>[user]</b> taps \the [src] against their palm."), SPAN_NOTICE("You tap \the [src] against your palm."))
return ..()
@@ -18,6 +18,9 @@
slot_l_hand_str = "backpack",
slot_r_hand_str = "backpack"
)
sprite_sheets = list(
BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/back.dmi'
)
w_class = ITEMSIZE_LARGE
slot_flags = SLOT_BACK
max_w_class = ITEMSIZE_NORMAL
@@ -498,7 +501,7 @@
/obj/item/storage/backpack/typec
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c wings"
name = "type c zo'ra wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings"
item_state = "wings"
@@ -509,6 +512,32 @@
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/typec_klax
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c k'lax wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings_klax"
item_state = "wings_klax"
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
max_storage_space = 12
canremove = 0
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/typec_cthur
icon = 'icons/mob/species/breeder/inventory.dmi'
name = "type c c'thur wings"
desc = "The wings of a CB Caste Vaurca. They are far too small at this stage to permit sustained periods of flight in most situations."
icon_state = "wings_cthur"
item_state = "wings_cthur"
w_class = ITEMSIZE_HUGE
slot_flags = SLOT_BACK
max_storage_space = 12
canremove = 0
species_restricted = list(BODYTYPE_VAURCA_BREEDER)
sprite_sheets = list(BODYTYPE_VAURCA_BREEDER = 'icons/mob/species/breeder/back.dmi')
/obj/item/storage/backpack/service
name = "idris service backpack"
desc = "The infamously Idris Service Standard refers to this monstrous, self-stabilizing back-mounted utensil and service item holder, not anything professional."
@@ -28,8 +28,10 @@
add_overlay(I.get_belt_overlay())
..()
/obj/item/storage/belt/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
/obj/item/storage/belt/build_additional_parts(H, mob_icon, slot)
var/image/I = ..()
if(!I)
I = image(null)
for(var/obj/item/i in contents)
var/c_state
var/c_icon
@@ -44,7 +44,8 @@
var/list/glove_types = list(
"Standard Gloves" = /obj/item/clothing/gloves/latex/nitrile,
"Unathi Gloves" = /obj/item/clothing/gloves/latex/nitrile/unathi,
"Tajara Gloves" = /obj/item/clothing/gloves/latex/nitrile/tajara
"Tajara Gloves" = /obj/item/clothing/gloves/latex/nitrile/tajara,
"Vaurca Gloves" = /obj/item/clothing/gloves/latex/nitrile/vaurca
)
var/chosen_type = input(user, "Which pair of gloves would you like?", capitalize_first_letters(name)) as null|anything in glove_types
if(!chosen_type)
@@ -17,7 +17,7 @@
desc = "A basic screw on filter attached beneath the mouthparts of the common Vaurca."
name = "filter port"
icon_state = "filterport"
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BREEDER)
species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BREEDER, BODYTYPE_VAURCA_BULWARK)
item_state = 0
/obj/item/clothing/head/shaper
@@ -16,7 +16,7 @@
new /obj/item/storage/backpack/satchel_cap(src)
// Armor
new /obj/item/clothing/head/helmet(src)
new /obj/item/clothing/suit/armor/carrier/generic(src)
new /obj/item/clothing/suit/armor/carrier/officer(src)
//Tools
new /obj/item/device/radio/headset/heads/captain(src)
new /obj/item/device/radio/headset/heads/captain/alt(src)
@@ -74,7 +74,7 @@
new /obj/item/storage/box/fancy/keypouch/service(src)
//Appearance
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/suit/armor/carrier/generic(src)
new /obj/item/clothing/suit/armor/carrier/officer(src)
new /obj/item/clothing/head/helmet(src)
new /obj/item/clothing/accessory/holster/waist(src)
//Tools
@@ -224,6 +224,7 @@
name = "roller bed"
icon = 'icons/obj/rollerbed.dmi'
icon_state = "standard_down"
item_state = "rollerbed"
anchored = FALSE
var/base_state = "standard"
var/item_bedpath = /obj/item/roller
@@ -418,7 +419,12 @@
name = "roller bed"
desc = "A collapsed roller bed that can be carried around."
icon = 'icons/obj/rollerbed.dmi'
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand_medical.dmi',
slot_r_hand_str = 'icons/mob/items/righthand_medical.dmi'
)
icon_state = "standard_folded"
item_state = "rollerbed"
drop_sound = 'sound/items/drop/axe.ogg'
pickup_sound = 'sound/items/pickup/axe.ogg'
center_of_mass = list("x" = 17,"y" = 7)