From 0a613a8f4279329eeffc856306018400d031d5b0 Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Tue, 17 Jul 2018 18:18:16 -0400 Subject: [PATCH] fixes --- code/game/dna/dna2.dm | 2 +- code/game/dna/genes/monkey.dm | 10 ++++++---- code/game/gamemodes/changeling/evolution_menu.dm | 2 +- code/game/gamemodes/changeling/powers/humanform.dm | 4 ++-- code/game/gamemodes/changeling/powers/lesserform.dm | 4 ---- code/game/gamemodes/changeling/powers/tiny_prick.dm | 6 +++--- code/game/gamemodes/changeling/powers/transform.dm | 4 ++-- code/game/gamemodes/miniantags/abduction/gland.dm | 2 +- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/machinery/cloning.dm | 2 +- code/game/machinery/transformer.dm | 4 ++-- code/modules/food_and_drinks/food/snacks.dm | 2 +- code/modules/mob/living/carbon/human/appearance.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 9 ++++++--- .../mob/living/carbon/human/interactive/interactive.dm | 2 +- code/modules/nano/modules/human_appearance.dm | 3 ++- code/modules/vr/vr_controller.dm | 2 +- 17 files changed, 32 insertions(+), 30 deletions(-) diff --git a/code/game/dna/dna2.dm b/code/game/dna/dna2.dm index cf335b5f7d6..f7c36929432 100644 --- a/code/game/dna/dna2.dm +++ b/code/game/dna/dna2.dm @@ -420,7 +420,7 @@ var/global/list/bad_blocks[0] data["UE"] = unique_enzymes data["SE"] = SE.Copy() // This is probably too lazy for my own good data["UI"] = UI.Copy() - data["species"] = species.type // This works because `species` is a string, not a datum + data["species"] = species.type // Because old DNA coders were insane or something data["b_type"] = b_type data["real_name"] = real_name diff --git a/code/game/dna/genes/monkey.dm b/code/game/dna/genes/monkey.dm index c79e4168490..38caf8eda74 100644 --- a/code/game/dna/genes/monkey.dm +++ b/code/game/dna/genes/monkey.dm @@ -7,8 +7,8 @@ /datum/dna/gene/monkey/can_activate(var/mob/M,var/flags) return ishuman(M) -/datum/dna/gene/monkey/activate(var/mob/living/carbon/human/H, var/connected, var/flags) - if(!istype(H,/mob/living/carbon/human)) +/datum/dna/gene/monkey/activate(mob/living/carbon/human/H, connected, flags) + if(!istype(H)) return if(issmall(H)) return @@ -41,13 +41,14 @@ if(H.client) H.hud_used = new /datum/hud/monkey(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha) + H.hud_used.show_hud(H.hud_used.hud_version) to_chat(H, "You are now a [H.dna.species.name].") return H -/datum/dna/gene/monkey/deactivate(var/mob/living/carbon/human/H, var/connected, var/flags) - if(!istype(H,/mob/living/carbon/human)) +/datum/dna/gene/monkey/deactivate(mob/living/carbon/human/H, connected, flags) + if(!istype(H)) return for(var/obj/item/W in H) if(W == H.w_uniform) // will be torn @@ -81,6 +82,7 @@ if(H.client) H.hud_used = new /datum/hud/human(H, ui_style2icon(H.client.prefs.UI_style), H.client.prefs.UI_style_color, H.client.prefs.UI_style_alpha) + H.hud_used.show_hud(H.hud_used.hud_version) to_chat(H, "You are now a [H.dna.species.name].") diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index a7af2b94482..befdf899253 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -375,7 +375,7 @@ var/list/sting_paths path.on_purchase(src) var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste - mind.changeling.absorbed_dna |= C.dna + mind.changeling.absorbed_dna |= C.dna.Clone() mind.changeling.trim_dna() return 1 diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm index fb3012cd274..72b0e821e66 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/game/gamemodes/changeling/powers/humanform.dm @@ -26,10 +26,10 @@ to_chat(user, "We transform our appearance.") user.dna.SetSEState(MONKEYBLOCK,0,1) genemutcheck(user,MONKEYBLOCK,null,MUTCHK_FORCED) + if(istype(user)) + user.set_species(chosen_dna.species.type) user.dna = chosen_dna.Clone() user.real_name = chosen_dna.real_name - if(istype(user)) - user.set_species(chosen_dna.species) domutcheck(user,null,MUTCHK_FORCED) user.flavor_text = "" user.dna.UpdateSE() diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index d6b4870c50a..2197163cbd5 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -21,13 +21,9 @@ to_chat(H, "We cannot perform this ability in this form!") return - user.dna = user.dna.Clone() H.visible_message("[H] transforms!") changeling.geneticdamage = 30 to_chat(H, "Our genes cry out!") - var/list/implants = list() //Try to preserve implants. - for(var/obj/item/implant/W in H) - implants += W H.monkeyize() changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) feedback_add_details("changeling_powers","LF") diff --git a/code/game/gamemodes/changeling/powers/tiny_prick.dm b/code/game/gamemodes/changeling/powers/tiny_prick.dm index 082ec9bbe54..bb216ddad35 100644 --- a/code/game/gamemodes/changeling/powers/tiny_prick.dm +++ b/code/game/gamemodes/changeling/powers/tiny_prick.dm @@ -111,11 +111,11 @@ target.visible_message("[target] begins to violenty convulse!","You feel a tiny prick and a begin to uncontrollably convulse!") spawn(10) + if(ishuman(target)) + var/mob/living/carbon/human/H = target + H.set_species(NewDNA.species.type) target.dna = NewDNA.Clone() target.real_name = NewDNA.real_name - var/mob/living/carbon/human/H = target - if(istype(H)) - H.set_species(NewDNA.species) target.UpdateAppearance() domutcheck(target, null) feedback_add_details("changeling_powers","TS") diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index b7c8abefd1d..bacdc8b0d8b 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -14,10 +14,10 @@ if(!chosen_dna) return + if(ishuman(user)) + user.set_species(chosen_dna.species.type) user.dna = chosen_dna.Clone() user.real_name = chosen_dna.real_name - if(ishuman(user)) - user.set_species(chosen_dna.species) domutcheck(user, null, MUTCHK_FORCED) //Ensures species that get powers by the species proc handle_dna keep them user.flavor_text = "" user.dna.UpdateSE() diff --git a/code/game/gamemodes/miniantags/abduction/gland.dm b/code/game/gamemodes/miniantags/abduction/gland.dm index 9b03311d88c..a8c6398fa95 100644 --- a/code/game/gamemodes/miniantags/abduction/gland.dm +++ b/code/game/gamemodes/miniantags/abduction/gland.dm @@ -217,8 +217,8 @@ var/mob/living/carbon/human/interactive/greytide/clone = new(src) var/datum/dna/owner_dna = H.dna clone.rename_character(clone.name, owner_dna.real_name) + clone.set_species(H.dna.species.type) clone.dna = owner_dna.Clone() - clone.set_species(H.dna.species) clone.body_accessory = H.body_accessory domutcheck(clone) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index 91c36356fd9..801eb6cb33c 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -321,7 +321,7 @@ var/global/list/multiverse = list() to_chat(M, "You are an alternate version of [user.real_name] from another universe! Help [user.p_them()] accomplish [user.p_their()] goals at all costs.") M.faction = list("[user.real_name]") if(duplicate_self) - M.set_species(user.dna.species) //duplicate the sword user's species. + M.set_species(user.dna.species.type) //duplicate the sword user's species. else if(prob(50)) var/list/list_all_species = list(/datum/species/human, /datum/species/unathi, /datum/species/skrell, /datum/species/tajaran, /datum/species/kidan, /datum/species/golem, /datum/species/diona, /datum/species/machine, /datum/species/slime, /datum/species/grey, /datum/species/vulpkanin) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 881136dbd58..798a01f2bda 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -231,7 +231,7 @@ R.dna = new /datum/dna() var/mob/living/carbon/human/H = new /mob/living/carbon/human(src) - H.set_species(R.dna.species) + H.set_species(R.dna.species.type) occupant = H if(!R.dna.real_name) //to prevent null names diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index e5dc8f7db00..5e99a954650 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -300,7 +300,7 @@ /obj/machinery/transformer/transmogrifier/do_transform(mob/living/carbon/human/H) if(!istype(H)) return - if(!istype(target_species)) + if(!ispath(target_species)) to_chat(H, "'[target_species]' is not a valid species!") return H.set_species(target_species) @@ -336,7 +336,7 @@ to_chat(H, "No genetic template configured!") return var/prev_ue = H.dna.unique_enzymes - H.set_species(template.species) + H.set_species(template.species.type) H.dna = template.Clone() H.real_name = template.real_name H.sync_organ_dna(assimilate = 0, old_ue = prev_ue) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 2105ae712d0..64b856628ab 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -1252,7 +1252,7 @@ icon_state = "monkeycube" bitesize = 12 filling_color = "#ADAC7F" - var/monkey_type = "Monkey" + var/datum/species/monkey_type = /datum/species/monkey list_reagents = list("nutriment" = 2) /obj/item/reagent_containers/food/snacks/monkeycube/water_act(volume, temperature) diff --git a/code/modules/mob/living/carbon/human/appearance.dm b/code/modules/mob/living/carbon/human/appearance.dm index 07fc623952c..3f79b90628d 100644 --- a/code/modules/mob/living/carbon/human/appearance.dm +++ b/code/modules/mob/living/carbon/human/appearance.dm @@ -4,7 +4,7 @@ AC.ui_interact(user, state = state) /mob/living/carbon/human/proc/change_species(datum/species/new_species) - if(!new_species || dna.species.type == new_species || !(initial(new_species.name) in all_species)) + if(!new_species || dna.species.type == new_species || !ispath(new_species, /datum/species)) return FALSE set_species(new_species, null, TRUE) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d5ef581f4cb..64ecd8d2699 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -16,7 +16,7 @@ dna = new /datum/dna(null) // Species name is handled by set_species() - set_species(new_species, 1, delay_icon_update = 1) + set_species(new_species, 1, delay_icon_update = 1, skip_same_check = TRUE) ..() @@ -1274,7 +1274,10 @@ else to_chat(usr, "[self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)].") -/mob/living/carbon/human/proc/set_species(datum/species/new_species, default_colour, delay_icon_update = FALSE) +/mob/living/carbon/human/proc/set_species(datum/species/new_species, default_colour, delay_icon_update = FALSE, skip_same_check = FALSE) + if(!skip_same_check) + if(dna.species.name == initial(new_species.name)) + return var/datum/species/oldspecies = dna.species if(oldspecies) @@ -1934,7 +1937,7 @@ Eyes need to have significantly high darksight to shine unless the mob has the X dna.deserialize(data["dna"]) real_name = dna.real_name name = real_name - set_species(dna.species) + set_species(dna.species.type, skip_same_check = TRUE) age = data["age"] undershirt = data["ushirt"] underwear = data["uwear"] diff --git a/code/modules/mob/living/carbon/human/interactive/interactive.dm b/code/modules/mob/living/carbon/human/interactive/interactive.dm index e88def0ebad..30451bc9562 100644 --- a/code/modules/mob/living/carbon/human/interactive/interactive.dm +++ b/code/modules/mob/living/carbon/human/interactive/interactive.dm @@ -208,8 +208,8 @@ var/datum/dna/toDoppel = chosen.dna T.real_name = toDoppel.real_name + T.set_species(chosen.dna.species.type) T.dna = toDoppel.Clone() - T.set_species(chosen.dna.species) T.body_accessory = chosen.body_accessory T.UpdateAppearance() domutcheck(T) diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm index dea188e1eb7..880553a63bc 100644 --- a/code/modules/nano/modules/human_appearance.dm +++ b/code/modules/nano/modules/human_appearance.dm @@ -31,7 +31,8 @@ if(href_list["race"]) if(can_change(APPEARANCE_RACE) && (href_list["race"] in valid_species)) - if(owner.change_species(href_list["race"])) + var/datum/species/S = all_species[href_list["race"]] + if(owner.change_species(S.type)) cut_and_generate_data() // Species change creates new organs - runtimes ahoy if we forget this head_organ = owner.get_organ("head") diff --git a/code/modules/vr/vr_controller.dm b/code/modules/vr/vr_controller.dm index c0fc61be587..564291b2999 100644 --- a/code/modules/vr/vr_controller.dm +++ b/code/modules/vr/vr_controller.dm @@ -36,8 +36,8 @@ proc/build_virtual_avatar(mob/living/carbon/human/H, location, datum/map_templat vr_avatar.real_me = V.real_me else vr_avatar.real_me = H + vr_avatar.set_species(H.dna.species.type) vr_avatar.dna = H.dna.Clone() - vr_avatar.set_species(H.dna.species) vr_avatar.name = H.name vr_avatar.real_name = H.real_name vr_avatar.undershirt = H.undershirt