diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index ca35552dfa..816c1cbb7e 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -200,7 +200,7 @@ message.maptext_height = mheight message.maptext_x = (CHAT_MESSAGE_WIDTH - owner.bound_width) * -0.5 message.maptext = MAPTEXT(complete_text) - message.pixel_x = -owner.pixel_x //Dogborgs and other wide boys have a pixel offset. This accounts for that + message.pixel_x = -target.pixel_x //Dogborgs and other wide boys have a pixel offset. This accounts for that // View the message LAZYADDASSOC(owned_by.seen_messages, message_loc, src) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index bd7ae64e16..92040e3647 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -61,13 +61,16 @@ /obj/machinery/computer/aifixer/proc/Fix() use_power(1000) - occupier.adjustOxyLoss(-1, 0) - occupier.adjustFireLoss(-1, 0) - occupier.adjustToxLoss(-1, 0) - occupier.adjustBruteLoss(-1, 0) + occupier.adjustOxyLoss(-1, FALSE, FALSE) + occupier.adjustFireLoss(-1, FALSE, FALSE) + occupier.adjustBruteLoss(-5, FALSE) + occupier.updatehealth() if(occupier.health >= 0 && occupier.stat == DEAD) - occupier.revive() + occupier.revive(full_heal = FALSE, admin_revive = FALSE) + if(!occupier.radio_enabled) + occupier.radio_enabled = TRUE + to_chat(occupier, span_warning("Your Subspace Transceiver has been enabled!")) return occupier.health < 100 /obj/machinery/computer/aifixer/process() diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index f3868f703f..0a626a0558 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -440,6 +440,16 @@ icon_state = "cowboyhat_sec" item_state= "cowboyhat_sec" +/obj/item/clothing/head/cowboyhat/polychromic + name = "polychromic cowboy hat" + desc = "A polychromic cowboy hat, perfect for your indecisive rancher" + icon_state = "cowboyhat_poly" + item_state= "cowboyhat_poly" + +/obj/item/clothing/head/cowboyhat/polychromic/ComponentInitialize() + . = ..() + AddElement(/datum/element/polychromic, list("#5F5F5F", "#DDDDDD"), 2) + /obj/item/clothing/head/squatter_hat name = "slav squatter hat" icon_state = "squatter_hat" diff --git a/code/modules/mob/living/silicon/damage_procs.dm b/code/modules/mob/living/silicon/damage_procs.dm index f49c5933bb..b50aeb5f48 100644 --- a/code/modules/mob/living/silicon/damage_procs.dm +++ b/code/modules/mob/living/silicon/damage_procs.dm @@ -9,9 +9,6 @@ adjustBruteLoss(damage_amount, forced = forced) if(BURN) adjustFireLoss(damage_amount, forced = forced) - if(OXY) - if(damage < 0 || forced) //we shouldn't be taking oxygen damage through this proc, but we'll let it heal. - adjustOxyLoss(damage_amount, forced = forced) return 1 @@ -30,7 +27,7 @@ /mob/living/silicon/setCloneLoss(amount, updating_health = TRUE, forced = FALSE) return FALSE -/mob/living/silicon/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE)//immune to stamina damage. +/mob/living/silicon/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE) //immune to stamina damage. return FALSE /mob/living/silicon/setStaminaLoss(amount, updating_health = 1) @@ -41,3 +38,15 @@ /mob/living/silicon/setOrganLoss(slot, amount) return FALSE + +/mob/living/silicon/adjustOxyLoss(amount, updating_health = TRUE, forced = FALSE) //immune to oxygen damage + if(istype(src, /mob/living/silicon/ai)) //ais are snowflakes and use oxyloss for being in AI cards and having no battery + return ..() + + return FALSE + +/mob/living/silicon/setOxyLoss(amount, updating_health = TRUE, forced = FALSE) + if(istype(src, /mob/living/silicon/ai)) //ditto + return ..() + + return FALSE diff --git a/code/modules/mob/living/silicon/pai/pai_defense.dm b/code/modules/mob/living/silicon/pai/pai_defense.dm index 9e81725731..e54d5e05b7 100644 --- a/code/modules/mob/living/silicon/pai/pai_defense.dm +++ b/code/modules/mob/living/silicon/pai/pai_defense.dm @@ -85,15 +85,6 @@ /mob/living/silicon/pai/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, only_robotic = FALSE, only_organic = TRUE) return take_holo_damage(amount) -/mob/living/silicon/pai/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE, toxins_type = TOX_DEFAULT) - return FALSE - -/mob/living/silicon/pai/adjustOxyLoss(amount, updating_health = TRUE, forced = FALSE) - return FALSE - -/mob/living/silicon/pai/adjustCloneLoss(amount, updating_health = TRUE, forced = FALSE) - return FALSE - /mob/living/silicon/pai/adjustStaminaLoss(amount, updating_health, forced = FALSE) if(forced) take_holo_damage(amount) @@ -108,27 +99,3 @@ /mob/living/silicon/pai/getFireLoss() return emittermaxhealth - emitterhealth - -/mob/living/silicon/pai/getToxLoss(toxins_type = TOX_OMNI) - return FALSE - -/mob/living/silicon/pai/getOxyLoss() - return FALSE - -/mob/living/silicon/pai/getCloneLoss() - return FALSE - -/mob/living/silicon/pai/getStaminaLoss() - return FALSE - -/mob/living/silicon/pai/setCloneLoss() - return FALSE - -/mob/living/silicon/pai/setStaminaLoss() - return FALSE - -/mob/living/silicon/pai/setToxLoss(toxins_type = TOX_OMNI) - return FALSE - -/mob/living/silicon/pai/setOxyLoss() - return FALSE diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index e902d57ddd..8a0b8def51 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -1,7 +1,6 @@ /mob/living/silicon/robot/BiologicalLife(delta_time, times_fired) if(!(. = ..())) return - adjustOxyLoss(-10) //we're a robot! handle_robot_hud_updates() handle_robot_cell() diff --git a/code/modules/mob/living/silicon/robot/update_icons.dm b/code/modules/mob/living/silicon/robot/update_icons.dm index 088c93cff1..59c3c1794c 100644 --- a/code/modules/mob/living/silicon/robot/update_icons.dm +++ b/code/modules/mob/living/silicon/robot/update_icons.dm @@ -17,12 +17,16 @@ icon_state = "[module.cyborg_base_icon]-wreck" if(module.cyborg_pixel_offset) - pixel_x = module.cyborg_pixel_offset + var/matrix/M = transform + M.c = module.cyborg_pixel_offset + transform = M //End of citadel changes if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' - pixel_x = initial(pixel_x) + var/matrix/M = transform + M.c = 0 // Cyborg's initial x offset is very likely to be 0 + transform = M if(stat != DEAD && !(IsUnconscious() || IsStun() || IsParalyzed() || low_power_mode)) //Not dead, not stunned. if(!eye_lights) eye_lights = new() diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index a87c0a81ab..e1a179ea52 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -45,14 +45,6 @@ adjustBruteLoss(damage) if(BURN) adjustFireLoss(damage) - if(TOX) - adjustToxLoss(damage) - if(OXY) - adjustOxyLoss(damage) - if(CLONE) - adjustCloneLoss(damage) - if(STAMINA) - adjustStaminaLoss(damage) /mob/living/silicon/attack_paw(mob/living/user) return attack_hand(user) diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm index 4f181c0e34..ff5240306b 100644 --- a/code/modules/modular_computers/file_system/programs/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/airestorer.dm @@ -75,9 +75,8 @@ restoring = FALSE return ai_slot.locked = TRUE - A.adjustOxyLoss(-5, FALSE) - A.adjustFireLoss(-5, FALSE) - A.adjustToxLoss(-5, FALSE) + A.adjustOxyLoss(-5, FALSE, FALSE) + A.adjustFireLoss(-5, FALSE, FALSE) A.adjustBruteLoss(-5, FALSE) // Please don't forget to update health, otherwise the below if statements will probably always fail. diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index fb0246e6e3..26a8b1808f 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 6e8ea50d39..0831f7be2f 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/head.dm b/modular_citadel/code/modules/client/loadout/head.dm index d0563d2986..58dd6e9fc3 100644 --- a/modular_citadel/code/modules/client/loadout/head.dm +++ b/modular_citadel/code/modules/client/loadout/head.dm @@ -195,6 +195,12 @@ restricted_desc = "Security" restricted_roles = list("Warden","Detective","Security Officer","Head of Security") +/datum/gear/head/cowboyhat/polychromic + name = "Cowboy Hat, Polychromic" + path = /obj/item/clothing/head/cowboyhat/polychromic + loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC + loadout_initial_colors = list("#5F5F5F", "#DDDDDD") + /datum/gear/head/wkepi name = "white kepi" path = /obj/item/clothing/head/kepi