diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 8a3fd82cb9..ccc5d97cf8 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -254,7 +254,6 @@ if(icon_update) update_body() update_hair() - update_body_parts() update_mutations_overlay()// no lizard with human hulk overlay please. diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index c5308cf0c0..dcec31e5c2 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -392,6 +392,12 @@ dynamic_requirement = 50 dynamic_cost = 10 +/datum/spellbook_entry/item/plasmafist + name = "Plasma Fist" + desc = "A forbidden martial art designed on the surging power of plasma. Use it to harness the ancient power." + item_path = /obj/item/book/granter/martial/plasma_fist + cost = 3 + /datum/spellbook_entry/item/guardian name = "Guardian Deck" desc = "A deck of guardian tarot cards, capable of binding a personal guardian to your body. There are multiple types of guardian available, but all of them will transfer some amount of damage to you. \ diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index e91d379ddd..c476e5a310 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -241,7 +241,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/ShowChoices(mob/user) if(!user || !user.client) return - update_preview_icon() + update_preview_icon(current_tab != 2) var/list/dat = list("
"
dat += "Flavor Text" dat += "Set Examine Text" @@ -1565,10 +1564,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor"] = pref_species.default_color - update_preview_icon() else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor"] = sanitize_hexcolor(new_mutantcolor) - update_preview_icon() else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -1578,10 +1575,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor2"] = pref_species.default_color - update_preview_icon() else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor2"] = sanitize_hexcolor(new_mutantcolor) - update_preview_icon() else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -1591,10 +1586,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/temp_hsv = RGBtoHSV(new_mutantcolor) if(new_mutantcolor == "#000000") features["mcolor3"] = pref_species.default_color - update_preview_icon() else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3]) // mutantcolors must be bright, but only if they affect the skin features["mcolor3"] = sanitize_hexcolor(new_mutantcolor) - update_preview_icon() else to_chat(user, "Invalid color. Your color is not bright enough.") @@ -1736,14 +1729,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["body_markings"] = new_body_markings if(new_body_markings != "None") features["mam_body_markings"] = "None" - update_preview_icon() if("legs") var/new_legs new_legs = input(user, "Choose your character's legs:", "Character Preference") as null|anything in GLOB.legs_list if(new_legs) features["legs"] = new_legs - update_preview_icon() if("insect_wings") var/new_insect_wings @@ -1829,7 +1820,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) else if(new_mam_body_markings == "None") features["mam_body_markings"] = "Plain" features["body_markings"] = "None" - update_preview_icon() //Xeno Bodyparts if("xenohead")//Head or caste type @@ -2307,8 +2297,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species = new /datum/species/human save_character() - character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE) character.dna.features = features.Copy() + character.set_species(chosen_species, icon_update = FALSE, pref_load = TRUE) character.dna.real_name = character.real_name character.dna.nameless = character.nameless character.dna.custom_species = character.custom_species @@ -2337,7 +2327,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(icon_updates) character.update_body() character.update_hair() - character.update_body_parts() /datum/preferences/proc/get_default_name(name_id) switch(name_id) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index d54b8256a9..7aae26526e 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -25,7 +25,7 @@ features = random_features() age = rand(AGE_MIN,AGE_MAX) -/datum/preferences/proc/update_preview_icon() +/datum/preferences/proc/update_preview_icon(equip_job = TRUE) // Determine what job is marked as 'High' priority, and dress them up as such. var/datum/job/previewJob var/highest_pref = 0 @@ -45,12 +45,11 @@ // Set up the dummy for its photoshoot var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES) - mannequin.cut_overlays() // Apply the Dummy's preview background first so we properly layer everything else on top of it. mannequin.add_overlay(mutable_appearance('modular_citadel/icons/ui/backgrounds.dmi', bgstate, layer = SPACE_LAYER)) copy_to(mannequin) - if(previewJob) + if(previewJob && equip_job) mannequin.job = previewJob.title previewJob.equip(mannequin, TRUE, preference_source = parent) diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 6da188dd2d..74593a20a0 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -17,6 +17,7 @@ INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) /mob/living/carbon/human/dummy/proc/wipe_state() delete_equipment() + icon_render_key = null cut_overlays(TRUE) //Inefficient pooling/caching way. diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f9fa5d84da..362a4aaa9d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -388,43 +388,34 @@ return var/b_loss = 0 var/f_loss = 0 - var/bomb_armor = getarmor(null, "bomb") + var/bomb_armor = max(0,(100-getarmor(null, "bomb"))/100) switch (severity) if (1) - if(prob(bomb_armor)) - b_loss = 500 + if(bomb_armor) + b_loss = 500*bomb_armor var/atom/throw_target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) throw_at(throw_target, 200, 4) - damage_clothes(400 - bomb_armor, BRUTE, "bomb") + damage_clothes(400*bomb_armor, BRUTE, "bomb") else - for(var/I in contents) - var/atom/A = I - A.ex_act(severity) + damage_clothes(400,BRUTE,"bomb") gib() return if (2) - b_loss = 60 - f_loss = 60 - if(bomb_armor) - b_loss = 30*(2 - round(bomb_armor*0.01, 0.05)) - f_loss = b_loss - damage_clothes(200 - bomb_armor, BRUTE, "bomb") + b_loss = 60*bomb_armor + f_loss = 60*bomb_armor + damage_clothes(200*bomb_armor, BRUTE, "bomb") if (!istype(ears, /obj/item/clothing/ears/earmuffs)) adjustEarDamage(30, 120) - if (prob(max(70 - (bomb_armor * 0.5), 0))) - Unconscious(200) + Unconscious(200*bomb_armor) if(3) - b_loss = 30 - if(bomb_armor) - b_loss = 15*(2 - round(bomb_armor*0.01, 0.05)) + b_loss = 30*bomb_armor damage_clothes(max(50 - bomb_armor, 0), BRUTE, "bomb") if (!istype(ears, /obj/item/clothing/ears/earmuffs)) adjustEarDamage(15,60) - if (prob(max(50 - (bomb_armor * 0.5), 0))) - Unconscious(160) + Unconscious(100*bomb_armor) take_overall_damage(b_loss,f_loss) diff --git a/html/changelogs/AutoChangeLog-pr-10121.yml b/html/changelogs/AutoChangeLog-pr-10121.yml new file mode 100644 index 0000000000..38a91fcc01 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10121.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - rscadd: "plasmafist to wizard" diff --git a/html/changelogs/AutoChangeLog-pr-10137.yml b/html/changelogs/AutoChangeLog-pr-10137.yml new file mode 100644 index 0000000000..63678d4425 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10137.yml @@ -0,0 +1,4 @@ +author: "KeRSedChaplain" +delete-after: True +changes: + - soundadd: "Extends the file \"deltakalaxon.ogg\" to a 38 second .ogg." diff --git a/html/changelogs/AutoChangeLog-pr-10156.yml b/html/changelogs/AutoChangeLog-pr-10156.yml new file mode 100644 index 0000000000..ec08642b3f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10156.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed character setup preview bodyparts not displaying correctly most of times." + - bugfix: "Fixed character appearance preview displaying the mannequin in job attire instead of undergarments." diff --git a/html/changelogs/AutoChangeLog-pr-9894.yml b/html/changelogs/AutoChangeLog-pr-9894.yml new file mode 100644 index 0000000000..6e4b5c09d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9894.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - balance: "Bomb armor now acts like other armor types." + - balance: "Devastation-level explosions on armorless people no longer destroys everything in their bags." diff --git a/sound/misc/deltakalaxon.ogg b/sound/misc/deltakalaxon.ogg index cc489526dd..7a9522c1ff 100644 Binary files a/sound/misc/deltakalaxon.ogg and b/sound/misc/deltakalaxon.ogg differ |