diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index b85431b00af..8bfb8af3879 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -8,6 +8,8 @@ heat_protection = UPPER_TORSO|LOWER_TORSO max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE siemens_coefficient = 0.5 + + species_restricted = list("exclude", BODYTYPE_VAURCA_BREEDER, BODYTYPE_VAURCA_WARFORM, BODYTYPE_VAURCA_BULWARK) var/obj/item/storage/internal/pockets = /obj/item/storage/internal var/pocket_slots = 2 var/pocket_size = 2 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 53c3cec462f..4229446f993 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1873,7 +1873,7 @@ // For a blood pressure, e.g. 120/80 var/systolic_alert // this is the top number '120' -- highest pressure when heart beats var/diastolic_alert // this is the bottom number '80' -- lowest pressure when heart relaxes - + var/blood_pressure_systolic = bp_list[1] if (blood_pressure_systolic) if (blood_pressure_systolic >= (species.bp_base_systolic - BP_SYS_IDEAL_MOD) && blood_pressure_systolic <= (species.bp_base_systolic + HIGH_BP_MOD)) @@ -1981,6 +1981,9 @@ src.adjustToxLoss(-damage) to_chat(src, SPAN_NOTICE("You can feel flow of energy which makes you regenerate.")) + if(species.radiation_mod <= 0) + return + apply_damage((rand(15,30)), IRRADIATE, damage_flags = DAM_DISPERSED) if(prob(4)) apply_damage((rand(20,60)), IRRADIATE, damage_flags = DAM_DISPERSED) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 906e0b5f3e5..f9b9841e964 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -320,3 +320,15 @@ return TRUE else return FALSE + +/mob/living/carbon/human/get_talk_bubble() + if(!species || !species.talk_bubble_icon) + return ..() + return species.talk_bubble_icon + +/mob/living/carbon/human/get_floating_chat_x_offset() + if(!species) + return ..() + if(!isnull(species.floating_chat_x_offset)) + return species.floating_chat_x_offset + return species.icon_x_offset diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 9f014173d31..10b52752d04 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -24,6 +24,8 @@ var/preview_icon = 'icons/mob/human_races/human/human_preview.dmi' var/bandages_icon + var/talk_bubble_icon + // Damage overlay and masks. var/damage_overlays = 'icons/mob/human_races/masks/dam_human.dmi' var/damage_mask = 'icons/mob/human_races/masks/dam_mask_human.dmi' @@ -33,6 +35,7 @@ var/prone_icon // If set, draws this from icobase when mob is prone. var/icon_x_offset = 0 var/icon_y_offset = 0 + var/floating_chat_x_offset = null var/eyes = "eyes_s" // Icon for eyes. var/eyes_icons = 'icons/mob/human_face/eyes.dmi' // DMI file for eyes, mostly for none 32x32 species. var/has_floating_eyes // Eyes will overlay over darkness (glow) @@ -779,4 +782,4 @@ if(C?.can_support) stance_damage -=2 - return stance_damage \ No newline at end of file + return stance_damage diff --git a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm index d0e9a591d60..9b6c9e3aec2 100644 --- a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca_subspecies.dm @@ -181,10 +181,14 @@ icon_template = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' icobase = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' deform = 'icons/mob/human_races/vaurca/r_vaurcae.dmi' + talk_bubble_icon = 'icons/mob/talk_bulwark.dmi' + + bald = TRUE icon_x_offset = -9 healths_x = 22 healths_overlay_x = 9 + floating_chat_x_offset = 6 damage_overlays = 'icons/mob/human_races/masks/dam_mask_bulwark.dmi' damage_mask = 'icons/mob/human_races/masks/dam_mask_bulwark.dmi' @@ -238,4 +242,4 @@ Bulwarks are much larger and have significantly thicker carapaces than most Vaur slot_belt_str = list("[NORTH]" = list("x" = 9, "y" = 2), "[EAST]" = list("x" = 10, "y" = 1), "[SOUTH]" = list("x" = 9, "y" = 2), "[WEST]" = list("x" = 6, "y" = 1)), slot_wear_id_str = list("[NORTH]" = list("x" = 0, "y" = 0), "[EAST]" = list("x" = 12, "y" = 0), "[SOUTH]" = list("x" = 9, "y" = 0), "[WEST]" = list("x" = 0, "y" = 0)), slot_shoes_str = list("[NORTH]" = list("x" = 9, "y" = 0), "[EAST]" = list("x" = 8, "y" = 0), "[SOUTH]" = list("x" = 9, "y" = 0), "[WEST]" = list("x" = 8, "y" = 0)) - ) \ No newline at end of file + ) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 3aa888503e3..af1c6321500 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -150,7 +150,7 @@ listening_clients += M.client var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + var/image/speech_bubble = image(get_talk_bubble(),src,"h[speech_bubble_test]") INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, speech_bubble, listening_clients, 30) if (watching.len) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index c155e31aa1f..98e98be1608 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -306,7 +306,7 @@ proc/get_radio_key_from_channel(var/channel) hear_clients += M.client var/speech_bubble_test = say_test(message) - var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + var/image/speech_bubble = image(get_talk_bubble(),src,"h[speech_bubble_test]") speech_bubble.appearance_flags = RESET_COLOR|RESET_ALPHA INVOKE_ASYNC(GLOBAL_PROC, /proc/animate_speechbubble, speech_bubble, hear_clients, 30) do_animate_chat(message, speaking, italics, hear_clients, 30) @@ -351,4 +351,4 @@ proc/get_radio_key_from_channel(var/channel) var/mob/parent /mob/proc/GetVoice() - return name \ No newline at end of file + return name diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 861f9829027..3100575bd65 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -90,16 +90,18 @@ if(istype(A, /mob/living/carbon/human)) switch(A:get_species()) if(SPECIES_VAURCA_WORKER) - return 1 + return TRUE if(SPECIES_VAURCA_WARRIOR) - return 1 + return TRUE if(SPECIES_VAURCA_BREEDER) - return 1 + return TRUE + if(SPECIES_VAURCA_BULWARK) + return TRUE if(SPECIES_VAURCA_WARFORM) - return 1 + return TRUE if(SPECIES_MONKEY_VAURCA) - return 1 - return 0 + return TRUE + return FALSE /proc/isipc(A) . = 0 @@ -1277,3 +1279,6 @@ proc/is_blind(A) //We also need to update name of internal camera. if(camera) camera.c_tag = real_name + +/mob/proc/get_talk_bubble() + return 'icons/mob/talk.dmi' diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index 433d04f5b8e..c75dbd9f5e4 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -10,7 +10,7 @@ mob/var/obj/effect/decal/typing_indicator /mob/proc/set_typing_indicator(var/state) if(!typing_indicator) typing_indicator = new - typing_indicator.icon = 'icons/mob/talk.dmi' + typing_indicator.icon = get_talk_bubble() typing_indicator.icon_state = "typing" if(client && !stat) @@ -73,4 +73,4 @@ mob/var/obj/effect/decal/typing_indicator if(prefs.toggles & SHOW_TYPING) if(istype(mob)) mob.set_typing_indicator(0) - feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file + feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/html/changelogs/geeves-bulwark_fixes.yml b/html/changelogs/geeves-bulwark_fixes.yml new file mode 100644 index 00000000000..4c136de8c85 --- /dev/null +++ b/html/changelogs/geeves-bulwark_fixes.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Fixed various Bulwark bugs. They can no longer wear armor, their talk bubbles are no longer on their faces, their floating messages are centred, they are now properly bald, they now successfully pass isvaurca checks, their shoes no longer have a white dot, their vaurca clothes and hive cloak (one of them) have icons." + - bugfix: "Rad immune species no longer get radstorm radiation side-effects." \ No newline at end of file diff --git a/icons/mob/species/bulwark/shoes.dmi b/icons/mob/species/bulwark/shoes.dmi index 6e3994b812f..0ab7fffaee2 100644 Binary files a/icons/mob/species/bulwark/shoes.dmi and b/icons/mob/species/bulwark/shoes.dmi differ diff --git a/icons/mob/species/bulwark/suit.dmi b/icons/mob/species/bulwark/suit.dmi index 48901a33024..6cff3b70b95 100644 Binary files a/icons/mob/species/bulwark/suit.dmi and b/icons/mob/species/bulwark/suit.dmi differ diff --git a/icons/mob/species/bulwark/uniform.dmi b/icons/mob/species/bulwark/uniform.dmi index f32bf5905d4..449efd9e11c 100644 Binary files a/icons/mob/species/bulwark/uniform.dmi and b/icons/mob/species/bulwark/uniform.dmi differ diff --git a/icons/mob/talk_bulwark.dmi b/icons/mob/talk_bulwark.dmi new file mode 100644 index 00000000000..eeb036b01f2 Binary files /dev/null and b/icons/mob/talk_bulwark.dmi differ