Merge branch 'upstream-master' into placeholder

This commit is contained in:
Werner
2021-09-07 00:00:37 +02:00
213 changed files with 2832 additions and 947 deletions
@@ -177,6 +177,8 @@
/obj/item/device/radio/headset/alt/double
name = "soundproof headset"
desc = "A sound isolating version of the common radio headset."
desc_info = "This radio doubles as a pair of earmuffs by providing sound protection."
icon_state = "earset"
item_state = "earset"
item_flags = SOUNDPROTECTION
@@ -184,6 +186,8 @@
/obj/item/device/radio/headset/wrist
name = "wristbound radio"
desc = "A radio designed to fit on the wrist. Often known for broadcasting loudly enough that those closeby might overhear it."
desc_info = "This radio can be heard by people standing next to the one wearing it."
icon_state = "wristset"
item_state = "wristset"
slot_flags = SLOT_WRISTS
+1 -1
View File
@@ -639,7 +639,7 @@ BREATH ANALYZER
name = "zeng-hu body analyzer"
desc = "An expensive and varied-use health analyzer that prints full-body scans after a short scanning delay."
icon_state = "zh-analyzer"
item_state = "healthanalyzer"
item_state = "zh-analyzer"
slot_flags = SLOT_BELT
w_class = ITEMSIZE_NORMAL
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 3)
+1
View File
@@ -10,6 +10,7 @@
/obj/structure/easel/Initialize(ml, _mat, _reinf_mat)
. = ..()
moved_event.register(src, src, /obj/structure/easel/proc/move_painting)
material = SSmaterials.get_material_by_name(MATERIAL_WOOD)
/obj/structure/easel/Destroy()
painting = null
@@ -21,6 +21,7 @@
icon_state = "[initial(icon_state)]-[amount]"
else
icon_state = "[initial(icon_state)]-empty"
check_maptext(SMALL_FONTS(7, amount))
/obj/item/stack/nanopaste/attack(atom/M, mob/user, var/target_zone)
if(!ismob(M) || !istype(user))
+1
View File
@@ -61,6 +61,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list(
icon_state = "rods-[amount]"
else
icon_state = "rods"
check_maptext(SMALL_FONTS(7, amount))
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
..()
+9
View File
@@ -12,6 +12,7 @@
/obj/item/stack
gender = PLURAL
origin_tech = list(TECH_MATERIAL = 1)
flags = HELDMAPTEXT
var/list/datum/stack_recipe/recipes
var/singular_name
var/amount = 1
@@ -43,6 +44,10 @@
item_state = icon_state
update_icon()
return INITIALIZE_HINT_LATELOAD
/obj/item/stack/LateInitialize()
check_maptext(SMALL_FONTS(7, get_amount()))
/obj/item/stack/Destroy()
if (src && usr && usr.machine == src)
@@ -50,6 +55,8 @@
return ..()
/obj/item/stack/update_icon()
check_maptext(SMALL_FONTS(7, get_amount()))
if (!icon_has_variants)
return ..()
@@ -212,6 +219,7 @@
var/datum/matter_synth/S = synths[i]
if(!S.use_charge(charge_costs[i] * used)) // Doesn't need to be deleted
return 0
check_maptext(SMALL_FONTS(7, get_amount()))
return 1
/obj/item/stack/proc/add(var/extra)
@@ -228,6 +236,7 @@
for(var/i = 1 to uses_charge)
var/datum/matter_synth/S = synths[i]
S.add_charge(charge_costs[i] * extra)
check_maptext(SMALL_FONTS(7, get_amount()))
/*
The transfer and split procs work differently than use() and add().
+4
View File
@@ -233,3 +233,7 @@
/obj/item/trash/vkrexitaffy
name = "V'krexi Snax"
icon_state = "vkrexitaffy"
/obj/item/trash/broken_electronics
name = "broken electronics"
icon_state = "door_electronics_smoked"
+8 -4
View File
@@ -121,6 +121,8 @@ var/const/NO_EMAG_ACT = -50
var/dorm = 0 // determines if this ID has claimed a dorm already
var/datum/ntnet_user/chat_user
var/iff_faction = IFF_DEFAULT
/obj/item/card/id/Destroy()
mob = null
return ..()
@@ -367,7 +369,7 @@ var/const/NO_EMAG_ACT = -50
item_state = "gold_id"
overlay_state = "gold"
/obj/item/card/id/syndicate_command
/obj/item/card/id/syndicate/command
name = "syndicate ID card"
desc = "An ID straight from the Syndicate."
icon_state = "dark"
@@ -375,14 +377,14 @@ var/const/NO_EMAG_ACT = -50
assignment = "Syndicate Overlord"
access = list(access_syndicate, access_external_airlocks)
/obj/item/card/id/syndicate_ert
/obj/item/card/id/syndicate/ert
name = "\improper Syndicate Commando ID"
assignment = "Commando"
icon_state = "centcom"
/obj/item/card/id/syndicate_ert/New()
/obj/item/card/id/syndicate/ert/Initialize()
. = ..()
access = get_all_accesses()
..()
/obj/item/card/id/syndicate/raider
name = "passport"
@@ -602,12 +604,14 @@ var/const/NO_EMAG_ACT = -50
desc = "A stylized plastic card, belonging to one of the many specialists at Einstein Engines."
icon_state = "einstein_card"
overlay_state = "einstein_card"
iff_faction = IFF_EE
/obj/item/card/id/bluespace
name = "bluespace identification card"
desc = "A bizarre imitation of Nanotrasen identification cards. It seems to function normally as well."
desc_antag = "Access can be copied from other ID cards by clicking on them."
icon_state = "crystalid"
iff_faction = IFF_BLUESPACE
/obj/item/card/id/bluespace/update_name()
return
@@ -2,6 +2,7 @@
name = "agent card"
assignment = "Agent"
origin_tech = list(TECH_ILLEGAL = 3)
iff_faction = IFF_SYNDICATE
can_copy_access = TRUE
access_copy_msg = "The microscanner activates as you pass it over the ID, copying its access."
var/charge = 10000
@@ -64,6 +65,8 @@
entries[++entries.len] = list("name" = "Name", "value" = registered_name)
entries[++entries.len] = list("name" = "Photo", "value" = "Update")
entries[++entries.len] = list("name" = "Sex", "value" = sex)
entries[++entries.len] = list("name" = "Citizenship", "value" = citizenship)
entries[++entries.len] = list("name" = "Religion", "value" = religion)
entries[++entries.len] = list("name" = "Factory Reset", "value" = "Use With Care")
data["electronic_warfare"] = electronic_warfare
data["entries"] = entries
@@ -214,12 +217,25 @@
src.sex = new_sex
to_chat(user, "<span class='notice'>Sex changed to '[new_sex]'.</span>")
. = 1
if("Citizenship")
var/new_citizenship = sanitize(input(user,"Which citizenship would you like to put on this card?","Agent Card Citizenship", citizenship) as null|text)
if(!isnull(new_citizenship) && CanUseTopic(user,state))
src.citizenship = new_citizenship
to_chat(user, SPAN_NOTICE("Citizenship changed to '[new_citizenship]'."))
. = 1
if("Religion")
var/new_religion = sanitize(input(user,"What religion would you like to put on this card?","Agent Card Religion", religion) as null|text)
if(!isnull(new_religion) && CanUseTopic(user,state))
src.religion = new_religion
to_chat(user, SPAN_NOTICE("Religion changed to '[new_religion]'."))
. = 1
if("Factory Reset")
if(alert("This will factory reset the card, including access and owner. Continue?", "Factory Reset", "No", "Yes") == "Yes" && CanUseTopic(user, state))
age = initial(age)
access = syndicate_access.Copy()
assignment = initial(assignment)
blood_type = initial(blood_type)
citizenship = initial(citizenship)
dna_hash = initial(dna_hash)
electronic_warfare = initial(electronic_warfare)
fingerprint_hash = initial(fingerprint_hash)
@@ -227,6 +243,7 @@
name = initial(name)
registered_name = initial(registered_name)
unset_registered_user()
religion = initial(religion)
sex = initial(sex)
to_chat(user, "<span class='notice'>All information has been deleted from \the [src].</span>")
. = 1
@@ -1,6 +0,0 @@
/obj/item/circuitboard/broken
name = "broken electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics_smoked"
origin_tech = null
board_type = "other"
@@ -23,7 +23,7 @@
var/loaded //Descriptive string for currently loaded food object.
var/is_liquid = FALSE //whether you've got liquid on your utensil
var/scoop_food = 1
var/transfer_amt = 5
var/transfer_amt = 1
var/list/bite_sizes = list(1,2,3,4,5)
/obj/item/material/kitchen/utensil/Initialize(newloc, material_key)
+11 -11
View File
@@ -1,16 +1,25 @@
var/list/tape_roll_applications = list()
//Define all tape types in policetape.dm
/obj/item/taperoll
name = "tape roll"
icon = 'icons/policetape.dmi'
icon_state = "tape"
w_class = ITEMSIZE_SMALL
var/static/list/hazard_overlays
var/turf/start
var/turf/end
var/tape_type = /obj/item/tape
var/icon_base
var/list/image/hazard_overlays
var/list/tape_roll_applications = list()
/obj/item/taperoll/Initialize()
. = ..()
if(!hazard_overlays)
hazard_overlays = list()
hazard_overlays["[NORTH]"] = image('icons/effects/warning_stripes.dmi', icon_state = "N")
hazard_overlays["[EAST]"] = image('icons/effects/warning_stripes.dmi', icon_state = "E")
hazard_overlays["[SOUTH]"] = image('icons/effects/warning_stripes.dmi', icon_state = "S")
hazard_overlays["[WEST]"] = image('icons/effects/warning_stripes.dmi', icon_state = "W")
/obj/item/tape
name = "tape"
@@ -26,15 +35,6 @@ var/list/tape_roll_applications = list()
if(LAZYLEN(crumplers) && Adjacent(user))
to_chat(user, SPAN_WARNING("\The [initial(name)] has been crumpled by [english_list(crumplers)]."))
/obj/item/tape/New()
..()
if(!hazard_overlays)
hazard_overlays = list()
hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N")
hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E")
hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S")
hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W")
/obj/item/taperoll/police
name = "police tape"
desc = "A roll of police tape used to block off crime scenes from the public."
@@ -924,3 +924,77 @@
/obj/item/storage/box/folders/blue
starts_with = list(/obj/item/folder/sec = 5)
/obj/item/storage/box/papersack
name = "paper sack"
desc = "A neatly sack crafted out of paper."
item_icons = list(
slot_l_hand_str = 'icons/mob/items/lefthand.dmi',
slot_r_hand_str = 'icons/mob/items/righthand.dmi',
)
item_state = "papersack"
icon_state = "paperbag_None"
use_sound = 'sound/bureaucracy/papercrumple.ogg'
drop_sound = 'sound/items/drop/paper.ogg'
pickup_sound = 'sound/items/storage/wrapper.ogg'
foldable = null
max_w_class = ITEMSIZE_NORMAL
max_storage_space = 8
use_to_pickup = TRUE
chewable = TRUE
var/opened = TRUE
var/static/list/papersack_designs
var/choice = "None"
/obj/item/storage/box/papersack/update_icon()
. = ..()
if(length(contents) == 0)
icon_state = "paperbag_[choice]"
else if(length(contents) < 8)
icon_state = "paperbag_[choice]-food"
/obj/item/storage/box/papersack/attackby(obj/item/O, mob/user)
if(O.ispen())
if(!papersack_designs)
papersack_designs = sortList(list(
"None" = image(icon = src.icon, icon_state = "paperbag_None"),
"NanotrasenStandard" = image(icon = src.icon, icon_state = "paperbag_NanotrasenStandard"),
"Idris" = image(icon = src.icon, icon_state = "paperbag_Idris"),
"Heart" = image(icon = src.icon, icon_state = "paperbag_Heart"),
"SmileyFace" = image(icon = src.icon, icon_state = "paperbag_SmileyFace")
))
choice = show_radial_menu(user, src, papersack_designs, radius = 42, tooltips = TRUE)
if(!choice)
return
switch(choice)
if("None")
desc = "A sack neatly crafted out of paper."
if("NanotrasenStandard")
desc = "A standard Nanotrasen paper lunch sack for loyal employees on the go."
if("Idris")
desc = "A premium paper bag produced by Idris Incorporated."
if("Heart")
desc = "A paper sack with a heart etched onto the side."
if("SmileyFace")
desc = "A paper sack with a crude smile etched onto the side."
else
return
to_chat(user, SPAN_NOTICE("You make some modifications to [src] using your pen."))
update_icon()
return
else if(O.isscrewdriver())
if(length(contents) == 0)
to_chat(user, SPAN_NOTICE("You begin poking holes in \the [src]."))
if (do_after(user, 10/O.toolspeed, act_target = src))
if(choice == "SmileyFace")
var/obj/item/clothing/head/papersack/smiley/S = new()
user.put_in_hands(S)
else
var/obj/item/clothing/head/papersack/PS = new()
user.put_in_hands(PS)
qdel(src)
else
to_chat(user, SPAN_WARNING("\The [src] needs to be empty before you can do that!"))
else
..()
@@ -77,7 +77,7 @@
and hunting. It is a common practice for armies to confiscate villages productions, something that can cause resentment among farmers when their lands are occupied by the liberation \
army, to feed their soldiers."
/obj/item/storage/field_ration/dpraa/create_ration()
/obj/item/storage/field_ration/dpra/create_ration()
new /obj/item/reagent_containers/food/snacks/explorer_ration(src)
new /obj/item/reagent_containers/food/snacks/tajaran_bread(src)
new /obj/item/reagent_containers/food/drinks/cans/adhomai_milk(src)
@@ -280,4 +280,13 @@
item_state = "swimstars_xana"
/obj/item/storage/toolbox/lunchbox/swimstars_xana/filled
filled = TRUE
/obj/item/storage/toolbox/lunchbox/sedantis
name = "Sedantis lunchbox"
desc = "A little lunchbox, displaying a proud Sedantis flag."
icon_state = "lunchbox_sedantis"
item_state = "lunchbox_sedantis"
/obj/item/storage/toolbox/lunchbox/sedantis/filled
filled = TRUE
@@ -172,17 +172,16 @@
icon_state = initial(icon_state)
ion_trail.stop()
if (ismob(usr))
var/mob/M = usr
M.update_inv_back()
to_chat(usr, "You toggle the thrusters [on? "on":"off"].")
to_chat(usr, SPAN_NOTICE("You toggle the thrusters [on ? "on" : "off"]."))
stabilization_on = !stabilization_on
to_chat(usr, SPAN_NOTICE("You toggle the stabilization [stabilization_on ? "on" : "off"]."))
/obj/item/tank/jetpack/carbondioxide/synthetic/verb/toggle_stabilizer()
set name = "Toggle Jetpack Stabilization"
set category = "Robot Commands"
src.stabilization_on = !( src.stabilization_on )
to_chat(usr, "You toggle the stabilization [stabilization_on? "on":"off"].")
stabilization_on = !stabilization_on
to_chat(usr, SPAN_NOTICE("You toggle the stabilization [stabilization_on ? "on" : "off"]."))
/obj/item/tank/jetpack/rig
name = "hardsuit jetpack"
@@ -189,6 +189,7 @@
force = 15
throwforce = 30
w_class = ITEMSIZE_LARGE
var/seed = /datum/seed/koisspore
/obj/item/grenade/spawnergrenade/vaurca/prime()
@@ -200,11 +201,17 @@
M.flash_eyes()
for(var/i=1, i<=deliveryamt, i++)
var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/x = new spawner_type(T, new /datum/seed/koisspore())
var/obj/machinery/portable_atmospherics/hydroponics/soil/invisible/x = new spawner_type(T, new seed())
x.tumble(4)
qdel(src)
return
/obj/item/grenade/spawnergrenade/vaurca/liidra
name = "Black K'ois delivery pod"
desc = "A device made for rapid spread of black k'ois."
icon_state = "liibeacon"
seed = /datum/seed/koisspore/black
/obj/item/clothing/suit/space/void/vaurca
name = "voidsuit"
contained_sprite = 1