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