diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index f2a0746d5d..f041c43bba 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -436,7 +436,7 @@
var/blood_id = get_blood_id()
if(!(blood_id in GLOB.blood_reagent_types))
return
- return list("color" = list(BLOOD_COLOR_HUMAN), "ANIMAL DNA" = "Y-")
+ return list("color" = BLOOD_COLOR_HUMAN, "ANIMAL DNA" = "Y-")
/mob/living/carbon/get_blood_dna_list()
var/blood_id = get_blood_id()
@@ -444,15 +444,15 @@
return
var/list/blood_dna = list()
if(dna)
- blood_dna["color"] = list(dna.species.exotic_blood_color) //so when combined, the list grows with the number of colors
+ blood_dna["color"] = dna.species.exotic_blood_color //so when combined, the list grows with the number of colors
blood_dna[dna.unique_enzymes] = dna.blood_type
else
- blood_dna["color"] = list(BLOOD_COLOR_HUMAN)
+ blood_dna["color"] = BLOOD_COLOR_HUMAN
blood_dna["UNKNOWN DNA"] = "X*"
return blood_dna
/mob/living/carbon/alien/get_blood_dna_list()
- return list("color" = list(BLOOD_COLOR_XENO), "UNKNOWN DNA" = "X*")
+ return list("color" = BLOOD_COLOR_XENO, "UNKNOWN DNA" = "X*")
//to add a mob's dna info into an object's blood_DNA list.
/atom/proc/transfer_mob_blood_dna(mob/living/L)
@@ -461,25 +461,35 @@
if(!new_blood_dna)
return FALSE
LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it.
- LAZYINITLIST(blood_DNA["color"])
var/old_length = blood_DNA.len
blood_DNA |= new_blood_dna
- blood_DNA["color"] += new_blood_dna["color"]
+ var/changed = FALSE
+ if(!blood_DNA["color"])
+ blood_DNA["color"] = new_blood_dna["color"]
+ changed = TRUE
+ else
+ var/old = blood_DNA["color"]
+ blood_DNA["color"] = BlendRGB(blood_DNA["color"], new_blood_dna["color"])
+ changed = old != blood_DNA["color"]
if(blood_DNA.len == old_length)
return FALSE
- return TRUE
+ return changed
//to add blood dna info to the object's blood_DNA list
/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases)
LAZYINITLIST(blood_DNA)
- LAZYINITLIST(blood_dna["color"])
var/old_length = blood_DNA.len
blood_DNA |= blood_dna
if(blood_DNA.len > old_length)
- blood_DNA["color"] += blood_dna["color"]
- return TRUE
+ . = TRUE
//some new blood DNA was added
+ if(!blood_dna["color"])
+ return
+ if(!blood_DNA["color"])
+ blood_DNA["color"] = blood_dna["color"]
+ else
+ blood_DNA["color"] = BlendRGB(blood_DNA["color"], blood_dna["color"])
//to add blood from a mob onto something, and transfer their dna info
/atom/proc/add_mob_blood(mob/living/M)
@@ -548,27 +558,7 @@
return TRUE
/atom/proc/blood_DNA_to_color()
- var/list/colors = list()//first we make a list of all bloodtypes present
- for(var/blood_color in blood_DNA["color"])
- if(colors[blood_color])
- colors[blood_color]++
- else
- colors[blood_color] = 1
-
- var/final_rgb = BLOOD_COLOR_HUMAN //a default so we don't have white blood graphics if something messed up
- if(colors.len)
- var/sum = 0 //this is all shitcode, but it works; trust me
- final_rgb = colors[1]
- sum = colors[colors[1]]
- if(colors.len > 1)
- var/i = 2
- while(i <= colors.len)
- var/tmp = colors[colors[i]]
- final_rgb = BlendRGB(final_rgb, colors[i], tmp/(tmp+sum))
- sum += tmp
- i++
-
- return final_rgb
+ return (blood_DNA && blood_DNA["color"]) || BLOOD_COLOR_HUMAN
/atom/proc/clean_blood()
. = blood_DNA? TRUE : FALSE
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 240b275084..2efc7f8cd3 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2737,13 +2737,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
character.dna.update_body_size(old_size)
//speech stuff
- var/new_tongue = GLOB.roundstart_tongues[custom_tongue]
- if(new_tongue)
- var/obj/item/organ/tongue/T = character.getorganslot(ORGAN_SLOT_TONGUE)
- if(T)
- qdel(T)
- var/obj/item/organ/tongue/new_custom_tongue = new new_tongue
- new_custom_tongue.Insert(character)
+ if(custom_tongue != "default")
+ var/new_tongue = GLOB.roundstart_tongues[custom_tongue]
+ if(new_tongue)
+ var/obj/item/organ/tongue/T = character.getorganslot(ORGAN_SLOT_TONGUE)
+ if(T)
+ qdel(T)
+ var/obj/item/organ/tongue/new_custom_tongue = new new_tongue
+ new_custom_tongue.Insert(character)
if(custom_speech_verb != "default")
character.dna.species.say_mod = custom_speech_verb
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index efcba9bd3e..3a8e7582cb 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -325,7 +325,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
modless_key_bindings = sanitize_islist(modless_key_bindings, list())
verify_keybindings_valid() // one of these days this will runtime and you'll be glad that i put it in a different proc so no one gets their saves wiped
- sanitize_speech_and_tongue()
return 1
@@ -347,12 +346,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(!GLOB.keybindings_by_name[bindname])
modless_key_bindings -= key
-/datum/preferences/proc/sanitize_speech_and_tongue()
- if(!(custom_speech_verb in GLOB.speech_verbs))
- custom_speech_verb = GLOB.speech_verbs[1]
- if(!(custom_tongue in GLOB.roundstart_tongues))
- custom_tongue = GLOB.roundstart_tongues[1]
-
/datum/preferences/proc/save_preferences()
if(!path)
return 0
@@ -702,6 +695,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["balls_visibility"] = sanitize_inlist(features["balls_visibility"], safe_visibilities, GEN_VISIBLE_NO_UNDIES)
features["vag_visibility"] = sanitize_inlist(features["vag_visibility"], safe_visibilities, GEN_VISIBLE_NO_UNDIES)
+ custom_speech_verb = sanitize_inlist(custom_speech_verb, GLOB.speech_verbs, "default")
+ custom_tongue = sanitize_inlist(custom_tongue, GLOB.roundstart_tongues, "default")
features["flavor_text"] = copytext(features["flavor_text"], 1, MAX_FLAVOR_LEN)
features["silicon_flavor_text"] = copytext(features["silicon_flavor_text"], 1, MAX_FLAVOR_LEN)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 21199ca4c0..f7da4a2636 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -154,8 +154,12 @@
dat += "
| |
"
- dat += "| Exosuit: | [(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "Empty"] |
"
+ dat += "| Exosuit: | [(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "Empty"]"
if(wear_suit)
+ if(istype(wear_suit, /obj/item/clothing/suit/space/hardsuit))
+ var/hardsuit_head = head && istype(head, /obj/item/clothing/head/helmet/space/hardsuit)
+ dat += " [hardsuit_head ? "Retract Helmet" : "Extend Helmet"]"
+ dat += " |
"
dat += "| ↳Suit Storage: | [(s_store && !(s_store.item_flags & ABSTRACT)) ? s_store : "Empty"]"
if(has_breathable_mask && istype(s_store, /obj/item/tank))
dat += " [internal ? "Disable Internals" : "Set Internals"]"
@@ -224,13 +228,26 @@
return
SEND_SIGNAL(src, COMSIG_CARBON_EMBED_RIP, I, L)
return
-
+ if(href_list["toggle_helmet"])
+ var/hardsuit_head = head && istype(head, /obj/item/clothing/head/helmet/space/hardsuit)
+ visible_message("[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.", \
+ "[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.", \
+ target = usr, target_message = "You try to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.")
+ if(!do_mob(usr, src, POCKET_STRIP_DELAY))
+ return
+ visible_message("[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \
+ "[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet", \
+ target = usr, target_message = "You [hardsuit_head ? "retract" : "extend"] [src]'s helmet.")
+ if(!istype(wear_suit, /obj/item/clothing/suit/space/hardsuit))
+ return
+ var/obj/item/clothing/suit/space/hardsuit/hardsuit = wear_suit //This should be an hardsuit given all our checks
+ hardsuit.ToggleHelmet()
+ return
if(href_list["item"])
var/slot = text2num(href_list["item"])
if(slot in check_obscured_slots())
to_chat(usr, "You can't reach that! Something is covering it.")
- return
-
+ return
if(href_list["pockets"])
var/strip_mod = 1
var/strip_silence = FALSE
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index ec19cec055..0579c23120 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -85,8 +85,11 @@
FP.entered_dirs |= dir
FP.bloodiness = S.bloody_shoes[S.blood_state]
if(S.last_bloodtype)
- FP.blood_DNA += list(S.last_blood_DNA = S.last_bloodtype)
- FP.blood_DNA["color"] += S.last_blood_color
+ FP.blood_DNA[S.last_blood_DNA] = S.last_bloodtype
+ if(!FP.blood_DNA["color"])
+ FP.blood_DNA["color"] = S.last_blood_color
+ else
+ FP.blood_DNA["color"] = BlendRGB(FP.blood_DNA["color"], S.last_blood_color)
FP.update_icon()
update_inv_shoes()
//End bloody footprints
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index f197a41cce..dcee2ae3c5 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -32,7 +32,7 @@
for (var/x in 1 to PILL_STYLE_COUNT)
var/list/SL = list()
SL["id"] = x
- SL["htmltag"] = assets.icon_class_name("pill[x]")
+ SL["className"] = assets.icon_class_name("pill[x]")
pillStyles += list(SL)
. = ..()
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 93842a16c2..f3cba53727 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -71,7 +71,9 @@
if(data["blood_DNA"])
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
if(!B.blood_DNA["color"])
- B.blood_DNA["color"] = list(data["bloodcolor"])
+ B.blood_DNA["color"] = data["bloodcolor"]
+ else
+ B.blood_DNA["color"] = BlendRGB(B.blood_DNA["color"], data["bloodcolor"])
if(B.reagents)
B.reagents.add_reagent(type, reac_volume)
B.update_icon()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 97555b7248..a7b266fc0e 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -219,6 +219,8 @@ Nothing else in the console has ID requirements.
/obj/machinery/computer/rdconsole/proc/ui_header()
var/list/l = list()
+ var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/research_designs)
+ l += "[sheet.css_tag()][RDSCREEN_NOBREAK]"
l += "[stored_research.organization] Research and Development Network"
l += "Available points: [techweb_point_display_rdconsole(stored_research.research_points, stored_research.last_bitcoins)]"
l += "Security protocols: [obj_flags & EMAGGED ? " Disabled" : " Enabled"]"
diff --git a/html/changelog.html b/html/changelog.html
index 66f8141f28..cbda6271e6 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -50,6 +50,44 @@
-->
+ 03 July 2020
+ Arturlang updated:
+
+ - You can now toggle hardsuit helmets from the strip menu
+
+ Ghommie updated:
+
+ - fixed custom speech/tongue stuff.
+ - Lowered shaft miners' paycheck, they have other ways to make cash.
+ - You can't (un)equip garments on/from obscured inventory slots anymore.
+ - The stamina cost multiplier for swinging melee weapons against mobs has been brought back to 1 from 0.8
+ - The stamina cost for throwing mobs now scales with their mob size variable.
+
+ LetterN updated:
+
+ - Ported some tags from tgui-3.0 to Vending.js
+ - vending icons
+ - r&d icons
+ - chem master icons
+
+ Onule updated:
+
+ - titanium wall man good
+
+ Sonic121x updated:
+
+ - Bringback the ChemMaster pill type button.
+ - Fix Technode icon.
+
+ bunny232 updated:
+
+ - Witchhunter hat no longer obscures mask ears ,eyes, face and mouth
+
+ timothyteakettle updated:
+
+ - bloodpacks initialise correctly now
+
+
02 July 2020
Ghommie updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 921f9ce233..1faabc7eea 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -26208,3 +26208,27 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
How lazy!
silicons:
- bugfix: bohbombing is a thing now
+2020-07-03:
+ Arturlang:
+ - rscadd: You can now toggle hardsuit helmets from the strip menu
+ Ghommie:
+ - bugfix: fixed custom speech/tongue stuff.
+ - balance: Lowered shaft miners' paycheck, they have other ways to make cash.
+ - rscadd: You can't (un)equip garments on/from obscured inventory slots anymore.
+ - balance: The stamina cost multiplier for swinging melee weapons against mobs has
+ been brought back to 1 from 0.8
+ - balance: The stamina cost for throwing mobs now scales with their mob size variable.
+ LetterN:
+ - tweak: Ported some tags from tgui-3.0 to Vending.js
+ - bugfix: vending icons
+ - bugfix: r&d icons
+ - bugfix: chem master icons
+ Onule:
+ - tweak: titanium wall man good
+ Sonic121x:
+ - bugfix: Bringback the ChemMaster pill type button.
+ - bugfix: Fix Technode icon.
+ bunny232:
+ - tweak: Witchhunter hat no longer obscures mask ears ,eyes, face and mouth
+ timothyteakettle:
+ - bugfix: bloodpacks initialise correctly now
diff --git a/html/changelogs/AutoChangeLog-pr-12630.yml b/html/changelogs/AutoChangeLog-pr-12630.yml
deleted file mode 100644
index 2692d13c99..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12630.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - rscadd: "You can't (un)equip garments on/from obscured inventory slots anymore."
diff --git a/html/changelogs/AutoChangeLog-pr-12631.yml b/html/changelogs/AutoChangeLog-pr-12631.yml
deleted file mode 100644
index 5ecdfbcaf0..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12631.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - balance: "Lowered shaft miners' paycheck, they have other ways to make cash."
diff --git a/html/changelogs/AutoChangeLog-pr-12632.yml b/html/changelogs/AutoChangeLog-pr-12632.yml
deleted file mode 100644
index 8343205ac9..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12632.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: "Ghommie"
-delete-after: True
-changes:
- - balance: "The stamina cost multiplier for swinging melee weapons against mobs has been brought back to 1 from 0.8"
- - balance: "The stamina cost for throwing mobs now scales with their mob size variable."
diff --git a/html/changelogs/AutoChangeLog-pr-12657.yml b/html/changelogs/AutoChangeLog-pr-12657.yml
deleted file mode 100644
index bf14281695..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12657.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "bunny232"
-delete-after: True
-changes:
- - tweak: "Witchhunter hat no longer obscures mask ears ,eyes, face and mouth"
diff --git a/html/changelogs/AutoChangeLog-pr-12661.yml b/html/changelogs/AutoChangeLog-pr-12661.yml
deleted file mode 100644
index 832d0fcd24..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12661.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-author: "LetterN"
-delete-after: True
-changes:
- - tweak: "Ported some tags from tgui-3.0 to Vending.js"
- - bugfix: "vending icons"
- - bugfix: "r&d icons"
- - bugfix: "chem master icons"
diff --git a/html/changelogs/AutoChangeLog-pr-12666.yml b/html/changelogs/AutoChangeLog-pr-12666.yml
deleted file mode 100644
index 00542d519d..0000000000
--- a/html/changelogs/AutoChangeLog-pr-12666.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: "timothyteakettle"
-delete-after: True
-changes:
- - bugfix: "bloodpacks initialise correctly now"
diff --git a/html/changelogs/AutoChangeLog-pr-12683.yml b/html/changelogs/AutoChangeLog-pr-12683.yml
new file mode 100644
index 0000000000..34986f29d7
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-12683.yml
@@ -0,0 +1,4 @@
+author: "silicons"
+delete-after: True
+changes:
+ - refactor: "blood_DNA[\"color\"] is now a single variable instead of a list"
diff --git a/icons/obj/doors/airlocks/shuttle/overlays.dmi b/icons/obj/doors/airlocks/shuttle/overlays.dmi
index b2bb2cfa04..70df610212 100644
Binary files a/icons/obj/doors/airlocks/shuttle/overlays.dmi and b/icons/obj/doors/airlocks/shuttle/overlays.dmi differ
diff --git a/icons/obj/doors/airlocks/shuttle/shuttle.dmi b/icons/obj/doors/airlocks/shuttle/shuttle.dmi
index 0e05597163..b4b998e4bc 100644
Binary files a/icons/obj/doors/airlocks/shuttle/shuttle.dmi and b/icons/obj/doors/airlocks/shuttle/shuttle.dmi differ
diff --git a/icons/obj/smooth_structures/shuttle_window.dmi b/icons/obj/smooth_structures/shuttle_window.dmi
index 2fbf93f703..cb07225a76 100644
Binary files a/icons/obj/smooth_structures/shuttle_window.dmi and b/icons/obj/smooth_structures/shuttle_window.dmi differ
diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi
index 5f4d709d0c..196373dea7 100644
Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ
diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi
index df080ce3e6..38d153e261 100644
Binary files a/icons/obj/tiles.dmi and b/icons/obj/tiles.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 20963e7fbe..83dd4f5df8 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/icons/turf/walls/shuttle_wall.dmi b/icons/turf/walls/shuttle_wall.dmi
index cce97b2458..d9c904c336 100644
Binary files a/icons/turf/walls/shuttle_wall.dmi and b/icons/turf/walls/shuttle_wall.dmi differ
|