conflicts!!!
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -154,8 +154,12 @@
|
||||
|
||||
dat += "<tr><td> </td></tr>"
|
||||
|
||||
dat += "<tr><td><B>Exosuit:</B></td><td><A href='?src=[REF(src)];item=[SLOT_WEAR_SUIT]'>[(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A></td></tr>"
|
||||
dat += "<tr><td><B>Exosuit:</B></td><td><A href='?src=[REF(src)];item=[SLOT_WEAR_SUIT]'>[(wear_suit && !(wear_suit.item_flags & ABSTRACT)) ? wear_suit : "<font color=grey>Empty</font>"]</A>"
|
||||
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 += " <A href='?src=[REF(src)];toggle_helmet=[SLOT_WEAR_SUIT]'>[hardsuit_head ? "Retract Helmet" : "Extend Helmet"]</A>"
|
||||
dat += "</td></tr>"
|
||||
dat += "<tr><td> ↳<B>Suit Storage:</B></td><td><A href='?src=[REF(src)];item=[SLOT_S_STORE]'>[(s_store && !(s_store.item_flags & ABSTRACT)) ? s_store : "<font color=grey>Empty</font>"]</A>"
|
||||
if(has_breathable_mask && istype(s_store, /obj/item/tank))
|
||||
dat += " <A href='?src=[REF(src)];internal=[SLOT_S_STORE]'>[internal ? "Disable Internals" : "Set Internals"]</A>"
|
||||
@@ -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("<span class='danger'>[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.</span>", \
|
||||
"<span class='userdanger'>[usr] tries to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.</span>", \
|
||||
target = usr, target_message = "<span class='danger'>You try to [hardsuit_head ? "retract" : "extend"] [src]'s helmet.</span>")
|
||||
if(!do_mob(usr, src, POCKET_STRIP_DELAY))
|
||||
return
|
||||
visible_message("<span class='danger'>[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet</span>", \
|
||||
"<span class='userdanger'>[usr] [hardsuit_head ? "retract" : "extend"] [src]'s helmet</span>", \
|
||||
target = usr, target_message = "<span class='danger'>You [hardsuit_head ? "retract" : "extend"] [src]'s helmet.</span>")
|
||||
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, "<span class='warning'>You can't reach that! Something is covering it.</span>")
|
||||
return
|
||||
|
||||
return
|
||||
if(href_list["pockets"])
|
||||
var/strip_mod = 1
|
||||
var/strip_silence = FALSE
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 += "<div class='statusDisplay'><b>[stored_research.organization] Research and Development Network</b>"
|
||||
l += "Available points: <BR>[techweb_point_display_rdconsole(stored_research.research_points, stored_research.last_bitcoins)]"
|
||||
l += "Security protocols: [obj_flags & EMAGGED ? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
|
||||
|
||||
@@ -50,6 +50,44 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">03 July 2020</h2>
|
||||
<h3 class="author">Arturlang updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">You can now toggle hardsuit helmets from the strip menu</li>
|
||||
</ul>
|
||||
<h3 class="author">Ghommie updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">fixed custom speech/tongue stuff.</li>
|
||||
<li class="balance">Lowered shaft miners' paycheck, they have other ways to make cash.</li>
|
||||
<li class="rscadd">You can't (un)equip garments on/from obscured inventory slots anymore.</li>
|
||||
<li class="balance">The stamina cost multiplier for swinging melee weapons against mobs has been brought back to 1 from 0.8</li>
|
||||
<li class="balance">The stamina cost for throwing mobs now scales with their mob size variable.</li>
|
||||
</ul>
|
||||
<h3 class="author">LetterN updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Ported some tags from tgui-3.0 to Vending.js</li>
|
||||
<li class="bugfix">vending icons</li>
|
||||
<li class="bugfix">r&d icons</li>
|
||||
<li class="bugfix">chem master icons</li>
|
||||
</ul>
|
||||
<h3 class="author">Onule updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">titanium wall man good</li>
|
||||
</ul>
|
||||
<h3 class="author">Sonic121x updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Bringback the ChemMaster pill type button.</li>
|
||||
<li class="bugfix">Fix Technode icon.</li>
|
||||
</ul>
|
||||
<h3 class="author">bunny232 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Witchhunter hat no longer obscures mask ears ,eyes, face and mouth</li>
|
||||
</ul>
|
||||
<h3 class="author">timothyteakettle updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">bloodpacks initialise correctly now</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">02 July 2020</h2>
|
||||
<h3 class="author">Ghommie updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "You can't (un)equip garments on/from obscured inventory slots anymore."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "Ghommie"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "Lowered shaft miners' paycheck, they have other ways to make cash."
|
||||
@@ -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."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "bunny232"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Witchhunter hat no longer obscures mask ears ,eyes, face and mouth"
|
||||
@@ -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"
|
||||
@@ -1,4 +0,0 @@
|
||||
author: "timothyteakettle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "bloodpacks initialise correctly now"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "silicons"
|
||||
delete-after: True
|
||||
changes:
|
||||
- refactor: "blood_DNA[\"color\"] is now a single variable instead of a list"
|
||||
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 333 KiB After Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 9.8 KiB |