diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm index c798f352189..e8436930726 100644 --- a/code/datums/dog_fashion.dm +++ b/code/datums/dog_fashion.dm @@ -45,6 +45,10 @@ /datum/dog_fashion/back icon_file = 'icons/mob/corgi_back.dmi' +/datum/dog_fashion/head/hardhat/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.set_light(4) + /datum/dog_fashion/head/helmet name = "Sergeant REAL_NAME" desc = "The ever-loyal, the ever-vigilant." @@ -149,6 +153,10 @@ emote_hear = list("lights the way!", "illuminates.", "yaps!") desc = "He has a very shiny nose." +/datum/dog_fashion/head/reindeer/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.set_light(2, 2, LIGHT_COLOR_RED) + /datum/dog_fashion/head/sombrero name = "Segnor REAL_NAME" desc = "You must respect Elder Dogname" @@ -174,3 +182,21 @@ /datum/dog_fashion/back/deathsquad name = "Trooper REAL_NAME" desc = "That's not red paint. That's real corgi blood." + +/datum/dog_fashion/head/not_ian + name = "Definitely Not REAL_NAME" + desc = "That's Definitely Not Dogname" + +/datum/dog_fashion/head/not_ian/New(mob/M) + ..() + desc = "That's Definitely Not [M.real_name]." + +/datum/dog_fashion/back/hardsuit + name = "Space Explorer REAL_NAME" + desc = "That's one small step for a corgi. One giant yap for corgikind." + +/datum/dog_fashion/back/hardsuit/apply(mob/living/simple_animal/pet/dog/D) + ..() + D.mutations.Add(BREATHLESS) + D.atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + D.minbodytemp = 0 \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index a181125caa1..fc4f3438aa1 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -70,7 +70,6 @@ obj/item/tank/oxygen/empty/New() desc = "Mixed anyone?" icon_state = "air" item_state = "air" - dog_fashion = /datum/dog_fashion/back /obj/item/tank/air/examine(mob/user) if(..(user, 0)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 92f2454957e..c1d3764db3e 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1832,10 +1832,8 @@ P.universal_understand = 1 P.can_collar = 1 P.faction = list("neutral") - var/obj/item/clothing/accessory/petcollar/C = new /obj/item/clothing/accessory/petcollar(P) - P.pcollar = C - C.equipped(P) - P.regenerate_icons() + var/obj/item/clothing/accessory/petcollar/C = new + P.add_collar(C) var/obj/item/card/id/I = H.wear_id if(I) var/obj/item/card/id/D = new /obj/item/card/id(C) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 7eb4f32ac3b..b5ac9aa405f 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -374,7 +374,6 @@ flash_protect = 2 tint = 3 //to make them blind prescription_upgradable = 0 - dog_fashion = /datum/dog_fashion/head /obj/item/clothing/glasses/sunglasses/prescription prescription = 1 diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 2939cca4cb1..2cfc2adccaf 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -38,6 +38,7 @@ desc = "A top hat worn by only the most prestigious hat collectors." icon_state = "tophat" item_state = "that" + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/head/collectable/captain name = "collectable captain's hat" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index fbda3788144..9109821937d 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -11,7 +11,7 @@ flags_inv = 0 actions_types = list(/datum/action/item_action/toggle_helmet_light) burn_state = FIRE_PROOF - dog_fashion = /datum/dog_fashion/head + dog_fashion = /datum/dog_fashion/head/hardhat sprite_sheets = list( "Grey" = 'icons/mob/species/grey/head.dmi' ) @@ -78,7 +78,7 @@ max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - dog_fashion = /datum/dog_fashion/head + dog_fashion = /datum/dog_fashion/head/hardhat /obj/item/clothing/head/hardhat/dblue icon_state = "hardhat0_dblue" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 3a1a2b05c4a..924179bdd4c 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -228,6 +228,7 @@ icon_state = "fake-moustache" flags_inv = HIDEFACE actions_types = list(/datum/action/item_action/pontificate) + dog_fashion = /datum/dog_fashion/head/not_ian sprite_sheets = list( "Vox" = 'icons/mob/species/vox/mask.dmi', diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index c085aea93da..b56d2122ee8 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -186,6 +186,7 @@ item_state = "eng_hardsuit" armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine + dog_fashion = /datum/dog_fashion/back/hardsuit //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -207,6 +208,7 @@ heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos + dog_fashion = null //Chief Engineer's hardsuit /obj/item/clothing/head/helmet/space/hardsuit/engine/elite @@ -229,6 +231,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/tank/jetpack/suit + dog_fashion = null //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 3bb9c2e3686..9b1a0dbc146 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -320,6 +320,7 @@ /obj/item/clothing/accessory/scarf // No overlay name = "scarf" desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks." + dog_fashion = /datum/dog_fashion/head /obj/item/clothing/accessory/scarf/red name = "red scarf" diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 0a093af4596..3d3f3c62ee2 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -21,7 +21,7 @@ . = ..(gibbed) if(!.) return - playsound(src, yelp_sound, 75, 1) + playsound(src, yelp_sound, 75, TRUE) /mob/living/simple_animal/pet/dog/emote(act, m_type = 1, message = null, force) if(!incapacitated()) @@ -44,11 +44,11 @@ if("bark") message = "[src] [pick(src.speak_emote)]!" m_type = 2 //audible - playsound(src, pick(src.bark_sound), 50, 0.85) + playsound(src, pick(src.bark_sound), 50, TRUE) if("yelp") message = "[src] yelps!" m_type = 2 //audible - playsound(src, yelp_sound, 50, 0.85) + playsound(src, yelp_sound, 75, TRUE) if("growl") message = "[src] growls!" m_type = 2 //audible @@ -69,7 +69,7 @@ if(change) if(change > 0) if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454 - new /obj/effect/temp_visual/heart(loc) + new /obj/effect/temp_visual/heart(src) custom_emote(1, "yaps happily!") else if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) @@ -155,16 +155,16 @@ /mob/living/simple_animal/pet/dog/corgi/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/razor)) - if (shaved) + if(shaved) to_chat(user, "You can't shave this corgi, it's already been shaved!") return - if (nofur) + if(nofur) to_chat(user, "You can't shave this corgi, it doesn't have a fur coat!") return user.visible_message("[user] starts to shave [src] using \the [O].", "You start to shave [src] using \the [O]...") if(do_after(user, 50, target = src)) user.visible_message("[user] shaves [src]'s hair using \the [O].") - playsound(loc, 'sound/items/welder2.ogg', 20, TRUE) + playsound(loc, O.usesound, 20, TRUE) shaved = TRUE icon_living = "[initial(icon_living)]_shaved" icon_dead = "[initial(icon_living)]_shaved_dead" @@ -190,6 +190,7 @@ if(inventory_head) if(inventory_head.flags & NODROP) to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + return usr.put_in_hands(inventory_head) inventory_head = null update_corgi_fluff() @@ -201,6 +202,7 @@ if(inventory_back) if(inventory_back.flags & NODROP) to_chat(usr, "\The [inventory_head] is stuck too hard to [src] for you to remove!") + return usr.put_in_hands(inventory_back) inventory_back = null update_corgi_fluff() @@ -266,7 +268,7 @@ return item_to_add.forceMove(src) - src.inventory_back = item_to_add + inventory_back = item_to_add update_corgi_fluff() regenerate_icons() @@ -313,7 +315,7 @@ "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags [p_their()] tail once and barks.", "You hear a friendly-sounding bark.") item_to_add.forceMove(src) - src.inventory_head = item_to_add + inventory_head = item_to_add update_corgi_fluff() regenerate_icons() else @@ -338,6 +340,9 @@ emote_see = list("shakes its head.", "chases its tail.","shivers.") desc = initial(desc) set_light(0) + atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0) + mutations.Remove(BREATHLESS) + minbodytemp = initial(minbodytemp) if(inventory_head && inventory_head.dog_fashion) var/datum/dog_fashion/DF = new inventory_head.dog_fashion(src) @@ -684,14 +689,10 @@ if(!emagged) emagged = 1 visible_message("[user] swipes a card through [src].", "You overload [src]s internal reactor.") - spawn (1000) - src.explode() + addtimer(CALLBACK(src, .proc/explode), 1000) /mob/living/simple_animal/pet/dog/corgi/borgi/proc/explode() - for(var/mob/M in viewers(src, null)) - if(M.client) - M.show_message("[src] makes an odd whining noise.") - sleep(10) + visible_message("[src] makes an odd whining noise.") explosion(get_turf(src), 0, 1, 4, 7) death() @@ -708,7 +709,6 @@ A.yo = U.y - T.y A.xo = U.x - T.x A.fire() - return /mob/living/simple_animal/pet/dog/corgi/borgi/Life(seconds, times_fired) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index d268e864d52..299be975def 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -590,14 +590,14 @@ /mob/living/simple_animal/proc/add_collar(obj/item/clothing/accessory/petcollar/P, mob/user) if(QDELETED(P) || pcollar) return - if(!user.unEquip(P)) + if(user && !user.unEquip(P)) return P.forceMove(src) P.equipped(src) pcollar = P regenerate_icons() if(user) - to_chat(user, "You put the [P] around [src]'s neck.") + to_chat(user, "You put [P] around [src]'s neck.") if(P.tagname && !unique_pet) name = P.tagname real_name = P.tagname diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 26fb3771e15..2adfc53abe4 100644 Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index de33d3fd692..df2f3a66d84 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ