diff --git a/_maps/map_files/MetaStation/MetaStation.v40D.dmm b/_maps/map_files/MetaStation/MetaStation.v40D.dmm
index 328d3e8e007..db480a267f4 100644
--- a/_maps/map_files/MetaStation/MetaStation.v40D.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v40D.dmm
@@ -3896,7 +3896,7 @@
"bwV" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
"bwW" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/device/radio/intercom{dir = 2; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -28},/obj/machinery/hologram/holopad,/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
"bwX" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
-"bwY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
+"bwY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
"bwZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
"bxa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor/fancy/carpet,/area/bridge)
"bxb" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/showcase{desc = "A slightly battered looking TV. Vaious Nanotrasen infomercials play on a loop, accompanied by a jaunty tune."; dir = 1; icon = 'icons/obj/computer.dmi'; icon_state = "security_det"; name = "NanoTrasen corporate newsfeed"; pixel_x = 2; pixel_y = 3},/obj/structure/table/wood,/turf/simulated/floor/fancy/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
@@ -4229,7 +4229,7 @@
"bDq" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/pump,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway - Atmospherics"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "arrival"; dir = 8},/area/hallway/primary/starboard)
"bDr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"bDs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/hallway/primary/starboard)
-"bDt" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/mob/living/simple_animal/fox/Renault,/turf/simulated/floor/fancy/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
+"bDt" = (/obj/machinery/light,/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat","tcomm"); pixel_x = 0; pixel_y = -29},/mob/living/simple_animal/pet/fox/Renault,/turf/simulated/floor/fancy/carpet{tag = "icon-carpetside"; icon_state = "carpetside"},/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bDu" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/checkpoint/science{name = "Security Post - Research Division"})
"bDv" = (/obj/machinery/space_heater,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/atmos)
"bDw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/atmos)
@@ -4606,7 +4606,7 @@
"bKD" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/green/visible,/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 4},/turf/simulated/floor/plating,/area/atmos)
"bKE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/maintcentral{name = "Central Maintenance"})
"bKF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/engine,/area/toxins/explab)
-"bKG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/mob/living/simple_animal/pug{desc = "It's Pugley III, the loveable four-legged test subject."; dir = 8; name = "Pugley III"; real_name = "Pugley III"},/turf/simulated/floor/engine,/area/toxins/explab)
+"bKG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_Toxins = 0},/mob/living/simple_animal/pet/pug{desc = "It's Pugley III, the loveable four-legged test subject."; dir = 8; name = "Pugley III"; real_name = "Pugley III"},/turf/simulated/floor/engine,/area/toxins/explab)
"bKH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/floor/plating,/area/maintenance/incinerator)
"bKI" = (/obj/item/stack/cable_coil,/obj/structure/lattice/catwalk,/turf/space,/area/solar/port)
"bKJ" = (/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bottle/epinephrine,/obj/item/weapon/reagent_containers/glass/bottle/charcoal{pixel_x = 7; pixel_y = 4},/obj/item/weapon/storage/pill_bottle/epinephrine{pixel_x = 3},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry)
@@ -6423,7 +6423,7 @@
"ctA" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
"ctB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/medical/medbay{name = "Medbay Central"})
"ctC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
-"ctD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/mob/living/simple_animal/cat/Runtime,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
+"ctD" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/mob/living/simple_animal/pet/cat/Runtime,/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"ctE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"ctF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/medical/cmo)
"ctG" = (/obj/structure/closet/secure_closet/scientist,/obj/item/weapon/storage/backpack/satchel_tox,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/explab)
diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm
index ba976b45402..26440cffee6 100644
--- a/_maps/map_files/MiniStation/MiniStation.dmm
+++ b/_maps/map_files/MiniStation/MiniStation.dmm
@@ -1021,7 +1021,7 @@
"tG" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Head of Personnel"},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
"tH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
"tI" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
-"tJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
+"tJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
"tK" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel,/area/crew_quarters/heads{name = "\improper Job Assignment"})
"tL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/crew_quarters/heads{name = "\improper Job Assignment"})
"tM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/hallway/primary/central)
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index be76146f855..04d20e82fe0 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -3492,7 +3492,7 @@
"bpl" = (/obj/machinery/computer/card,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/crew_quarters/heads)
"bpm" = (/turf/simulated/floor/plasteel,/area/crew_quarters/heads)
"bpn" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
-"bpo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/corgi/Ian,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
+"bpo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/pet/corgi/Ian,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/heads)
"bpp" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/heads)
"bpq" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Gravity Generator APC"; pixel_x = -25; pixel_y = 1},/obj/structure/table,/obj/item/weapon/paper/gravity_gen{layer = 3},/obj/item/weapon/pen/blue,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/simulated/floor/plasteel,/area/engine/gravity_generator)
"bpr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/engine/gravity_generator)
@@ -4199,7 +4199,7 @@
"bCR" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/medical/cmo)
"bCS" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
"bCT" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
-"bCU" = (/obj/structure/table/glass,/obj/item/weapon/pen,/obj/item/clothing/tie/stethoscope,/mob/living/simple_animal/cat/Runtime,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
+"bCU" = (/obj/structure/table/glass,/obj/item/weapon/pen,/obj/item/clothing/tie/stethoscope,/mob/living/simple_animal/pet/cat/Runtime,/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
"bCV" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{pixel_x = 25},/obj/machinery/camera{c_tag = "Chief Medical Office"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = -22},/turf/simulated/floor/plasteel{icon_state = "barber"},/area/medical/cmo)
"bCW" = (/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bCX" = (/obj/machinery/camera{c_tag = "Xenobiology Test Chamber"; dir = 2; network = list("Xeno","RD"); pixel_x = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm
index 2aaea111eb1..55dfc5b593a 100644
--- a/code/datums/diseases/transformation.dm
+++ b/code/datums/diseases/transformation.dm
@@ -215,7 +215,7 @@
stage3 = list("Must... eat... chocolate....", "YAP")
stage4 = list("Visions of washing machines assail your mind!")
stage5 = list("AUUUUUU!!!")
- new_form = /mob/living/simple_animal/corgi
+ new_form = /mob/living/simple_animal/pet/corgi
/datum/disease/transformation/corgi/stage_act()
..()
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 75aad149dbb..36b4880b61e 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -1392,7 +1392,7 @@
mind.assigned_role = "Animal"
mind.special_role = "Animal"
-/mob/living/simple_animal/corgi/mind_initialize()
+/mob/living/simple_animal/pet/corgi/mind_initialize()
..()
mind.assigned_role = "Corgi"
mind.special_role = "Corgi"
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 3b5ca3a4ae9..4b2b44a65ee 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -801,24 +801,28 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
name = "Corgi Crate"
cost = 50
containertype = /obj/structure/closet/critter/corgi
+ contains = list(/obj/item/clothing/tie/petcollar)
containername = "corgi crate"
/datum/supply_packs/organic/cat
name = "Cat Crate"
cost = 50 //Cats are worth as much as corgis.
containertype = /obj/structure/closet/critter/cat
+ contains = list(/obj/item/clothing/tie/petcollar)
containername = "cat crate"
/datum/supply_packs/organic/pug
name = "Pug Crate"
cost = 50
containertype = /obj/structure/closet/critter/pug
+ contains = list(/obj/item/clothing/tie/petcollar)
containername = "pug crate"
/datum/supply_packs/organic/fox
name = "Fox Crate"
cost = 55 //Foxes are cool.
containertype = /obj/structure/closet/critter/fox
+ contains = list(/obj/item/clothing/tie/petcollar)
containername = "fox crate"
/datum/supply_packs/organic/butterfly
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index a50dc6945b6..babeb58ab51 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -703,7 +703,7 @@ var/list/sacrificed = list()
if(prob(30))
ticker.mode.grant_runeword(usr)
stone_or_gib(M)
- for(var/mob/victim in src.loc) //TO-DO: Move the shite above into the mob's own sac_act - see /mob/living/simple_animal/corgi/sac_act for an example
+ for(var/mob/victim in src.loc) //TO-DO: Move the shite above into the mob's own sac_act - see /mob/living/simple_animal/pet/corgi/sac_act for an example
victim.sac_act(src, victim) //Sacrifice procs are now seperate per mob, this allows us to allow sacrifice on as many mob types as we want without making an already clunky system worse
/* for(var/mob/living/carbon/alien/A)
for(var/mob/K in cultsinrange)
diff --git a/code/game/objects/structures/crates_lockers/closets/crittercrate.dm b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm
index efebaa75f45..82fd942e368 100644
--- a/code/game/objects/structures/crates_lockers/closets/crittercrate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/crittercrate.dm
@@ -44,11 +44,11 @@
/obj/structure/closet/critter/corgi
name = "corgi crate"
- content_mob = /mob/living/simple_animal/corgi
+ content_mob = /mob/living/simple_animal/pet/corgi
/obj/structure/closet/critter/corgi/New()
if(prob(50))
- content_mob = /mob/living/simple_animal/corgi/Lisa
+ content_mob = /mob/living/simple_animal/pet/corgi/Lisa
..()
/obj/structure/closet/critter/cow
@@ -69,20 +69,20 @@
/obj/structure/closet/critter/cat
name = "cat crate"
- content_mob = /mob/living/simple_animal/cat
+ content_mob = /mob/living/simple_animal/pet/cat
/obj/structure/closet/critter/cat/New()
if(prob(50))
- content_mob = /mob/living/simple_animal/cat/Proc
+ content_mob = /mob/living/simple_animal/pet/cat/Proc
..()
/obj/structure/closet/critter/pug
name = "pug crate"
- content_mob = /mob/living/simple_animal/pug
+ content_mob = /mob/living/simple_animal/pet/pug
/obj/structure/closet/critter/fox
name = "fox crate"
- content_mob = /mob/living/simple_animal/fox
+ content_mob = /mob/living/simple_animal/pet/fox
/obj/structure/closet/critter/butterfly
name = "butterflies crate"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index fba2113450e..115a165649d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -55,6 +55,7 @@
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/weapon/mining_voucher(src)
new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/clothing/tie/petcollar(src)
return
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index dc6c8757dff..348920560fb 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -268,10 +268,10 @@
if("slime") M.change_mob_type( /mob/living/carbon/slime , null, null, delmob )
if("monkey") M.change_mob_type( /mob/living/carbon/monkey , null, null, delmob )
if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob )
- if("cat") M.change_mob_type( /mob/living/simple_animal/cat , null, null, delmob )
- if("runtime") M.change_mob_type( /mob/living/simple_animal/cat/Runtime , null, null, delmob )
- if("corgi") M.change_mob_type( /mob/living/simple_animal/corgi , null, null, delmob )
- if("ian") M.change_mob_type( /mob/living/simple_animal/corgi/Ian , null, null, delmob )
+ if("cat") M.change_mob_type( /mob/living/simple_animal/pet/cat , null, null, delmob )
+ if("runtime") M.change_mob_type( /mob/living/simple_animal/pet/cat/Runtime , null, null, delmob )
+ if("corgi") M.change_mob_type( /mob/living/simple_animal/pet/corgi , null, null, delmob )
+ if("ian") M.change_mob_type( /mob/living/simple_animal/pet/corgi/Ian , null, null, delmob )
if("crab") M.change_mob_type( /mob/living/simple_animal/crab , null, null, delmob )
if("coffee") M.change_mob_type( /mob/living/simple_animal/crab/Coffee , null, null, delmob )
if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob )
diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm
index 1520f2cfcf7..17c224df9a3 100644
--- a/code/modules/clothing/under/ties.dm
+++ b/code/modules/clothing/under/ties.dm
@@ -277,3 +277,13 @@
name = "striped blue scarf"
icon_state = "stripedbluescarf"
item_color = "stripedbluescarf"
+
+/obj/item/clothing/tie/petcollar //don't really wear this though please c'mon seriously guys
+ name = "pet collar"
+ icon_state = "petcollar"
+ item_color = "petcollar"
+ var/tagname = null
+
+/obj/item/clothing/tie/petcollar/attack_self(mob/user as mob)
+ tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN)
+ name = "[initial(name)] - [tagname]"
\ No newline at end of file
diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm
index 5e8996a8c1d..d08eebb919e 100644
--- a/code/modules/events/holiday/halloween.dm
+++ b/code/modules/events/holiday/halloween.dm
@@ -17,7 +17,7 @@
else
hardset_dna(H, null, null, null, null, /datum/species/zombie)
- for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list)
+ for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in mob_list)
Ian.place_on_head(new /obj/item/weapon/bedsheet(Ian))
/datum/round_event/spooky/announce()
diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm
index 98d41c96b72..f7f3d202206 100644
--- a/code/modules/events/holiday/xmas.dm
+++ b/code/modules/events/holiday/xmas.dm
@@ -29,7 +29,7 @@
for(var/turf/simulated/floor/T in orange(1,xmas))
for(var/i=1,i<=rand(1,5),i++)
new /obj/item/weapon/a_gift(T)
- for(var/mob/living/simple_animal/corgi/Ian/Ian in mob_list)
+ for(var/mob/living/simple_animal/pet/corgi/Ian/Ian in mob_list)
Ian.place_on_head(new /obj/item/clothing/head/helmet/space/santahat(Ian))
for(var/obj/machinery/computer/security/telescreen/entertainment/Monitor in machines)
Monitor.icon_state = "entertainment_xmas"
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index 2a50fbf7b9f..c30b431f3ec 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -145,7 +145,7 @@ var/const/MAX_ACTIVE_TIME = 400
if(!sterile) L.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
else if (iscorgi(M))
- var/mob/living/simple_animal/corgi/C = M
+ var/mob/living/simple_animal/pet/corgi/C = M
loc = C
C.facehugger = src
@@ -178,7 +178,7 @@ var/const/MAX_ACTIVE_TIME = 400
if(iscorgi(target))
- var/mob/living/simple_animal/corgi/C = target
+ var/mob/living/simple_animal/pet/corgi/C = target
src.loc = get_turf(C)
C.facehugger = null
else
diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm
index 0725fe6a4ee..16d35c5a486 100644
--- a/code/modules/mob/living/simple_animal/friendly/cat.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cat.dm
@@ -1,7 +1,8 @@
//Cat
-/mob/living/simple_animal/cat
+/mob/living/simple_animal/pet/cat
name = "cat"
desc = "Kitty!!"
+ icon = 'icons/mob/pets.dmi'
icon_state = "cat2"
icon_living = "cat2"
icon_dead = "cat2_dead"
@@ -13,8 +14,8 @@
speak_chance = 1
turns_per_move = 5
see_in_dark = 6
- species = /mob/living/simple_animal/cat
- childtype = /mob/living/simple_animal/cat/kitten
+ species = /mob/living/simple_animal/pet/cat
+ childtype = /mob/living/simple_animal/pet/cat/kitten
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 3
response_help = "pets"
@@ -22,7 +23,7 @@
response_harm = "kicks"
//RUNTIME IS ALIVE! SQUEEEEEEEE~
-/mob/living/simple_animal/cat/Runtime
+/mob/living/simple_animal/pet/cat/Runtime
name = "Runtime"
desc = "GCAT"
icon_state = "cat"
@@ -31,8 +32,9 @@
gender = FEMALE
var/turns_since_scan = 0
var/mob/living/simple_animal/mouse/movement_target
+ pcollar = /obj/item/clothing/tie/petcollar
-/mob/living/simple_animal/cat/Runtime/Life()
+/mob/living/simple_animal/pet/cat/Runtime/Life()
//MICE!
if((src.loc) && isturf(src.loc))
if(!stat && !resting && !buckled)
@@ -67,10 +69,10 @@
stop_automated_movement = 1
walk_to(src,movement_target,0,3)
-/mob/living/simple_animal/cat/Proc
+/mob/living/simple_animal/pet/cat/Proc
name = "Proc"
-/mob/living/simple_animal/cat/kitten
+/mob/living/simple_animal/pet/cat/kitten
name = "kitten"
desc = "D'aaawwww"
icon_state = "kitten"
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 175e46fe17e..4c5633207aa 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -1,5 +1,42 @@
//Corgi
-/mob/living/simple_animal/corgi
+/mob/living/simple_animal/pet
+ icon = 'icons/mob/pets.dmi'
+ var/obj/item/clothing/tie/petcollar/pcollar = null
+ var/image/collar = null
+ var/image/pettag = null
+ var/accept_collar = 1
+
+/mob/living/simple_animal/pet/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+ if(istype(O, /obj/item/clothing/tie/petcollar) && accept_collar && !pcollar)
+ var/obj/item/clothing/tie/petcollar/P = O
+ pcollar = P
+ update_collar()
+ if(P.tagname)
+ name = P.tagname
+ user << "You put the [P] around [src]'s neck."
+ qdel(P)
+ else
+ ..()
+
+/mob/living/simple_animal/pet/New()
+ ..()
+ if(pcollar)
+ pcollar = new(src)
+ update_collar()
+
+/mob/living/simple_animal/pet/Die()
+ ..()
+ update_collar()
+
+/mob/living/simple_animal/pet/proc/update_collar()
+ overlays.Cut()
+ collar = image('icons/mob/pets.dmi', src, "[icon_state]collar")
+ pettag = image('icons/mob/pets.dmi', src, "[icon_state]tag")
+ overlays += collar
+ overlays += pettag
+
+
+/mob/living/simple_animal/pet/corgi
name = "\improper corgi"
real_name = "corgi"
desc = "It's a corgi."
@@ -19,31 +56,32 @@
response_disarm = "bops"
response_harm = "kicks"
see_in_dark = 5
- childtype = /mob/living/simple_animal/corgi/puppy
- species = /mob/living/simple_animal/corgi
+ childtype = /mob/living/simple_animal/pet/corgi/puppy
+ species = /mob/living/simple_animal/pet/corgi
var/obj/item/inventory_head
var/obj/item/inventory_back
var/facehugger
+ accept_collar = 0 //corgis have their own item handling
-/mob/living/simple_animal/corgi/New()
+/mob/living/simple_animal/pet/corgi/New()
..()
regenerate_icons()
-/mob/living/simple_animal/corgi/Die()
+/mob/living/simple_animal/pet/corgi/Die()
..()
regenerate_icons()
-/mob/living/simple_animal/corgi/revive()
+/mob/living/simple_animal/pet/corgi/revive()
..()
regenerate_icons()
-/mob/living/simple_animal/corgi/sac_act(var/obj/effect/rune/R, victim)
+/mob/living/simple_animal/pet/corgi/sac_act(var/obj/effect/rune/R, victim)
usr << "Even dark gods from another plane have standards, sicko."
usr.reagents.add_reagent("hell_water", 2)
R.stone_or_gib(victim)
-/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
+/mob/living/simple_animal/pet/corgi/show_inv(mob/user as mob)
user.set_machine(src)
if(user.stat) return
@@ -61,7 +99,7 @@
onclose(user, "mob[real_name]")
return
-/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
+/mob/living/simple_animal/pet/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(inventory_head && inventory_back)
//helmet and armor = 100% protection
if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) )
@@ -86,7 +124,7 @@
..()
-/mob/living/simple_animal/corgi/Topic(href, href_list)
+/mob/living/simple_animal/pet/corgi/Topic(href, href_list)
if(usr.stat) return
//Removing from inventory
@@ -156,7 +194,8 @@
/obj/item/clothing/suit/cardborg,
/obj/item/weapon/tank/internals/oxygen,
/obj/item/weapon/tank/internals/air,
- /obj/item/weapon/extinguisher
+ /obj/item/weapon/extinguisher,
+ /obj/item/clothing/tie/petcollar
)
if( ! ( item_to_add.type in allowed_types ) )
@@ -184,7 +223,7 @@
//Corgis are supposed to be simpler, so only a select few objects can actually be put
//to be compatible with them. The objects are below.
//Many hats added, Some will probably be removed, just want to see which ones are popular.
-/mob/living/simple_animal/corgi/proc/place_on_head(obj/item/item_to_add, var/mob/user as mob)
+/mob/living/simple_animal/pet/corgi/proc/place_on_head(obj/item/item_to_add, var/mob/user as mob)
if(istype(item_to_add,/obj/item/weapon/c4)) // last thing he ever wears, I guess
item_to_add.afterattack(src,user,1)
@@ -361,7 +400,7 @@
//IAN! SQUEEEEEEEEE~
-/mob/living/simple_animal/corgi/Ian
+/mob/living/simple_animal/pet/corgi/Ian
name = "Ian"
real_name = "Ian" //Intended to hold the name without altering it.
gender = MALE
@@ -372,7 +411,7 @@
response_disarm = "bops"
response_harm = "kicks"
-/mob/living/simple_animal/corgi/Ian/Life()
+/mob/living/simple_animal/pet/corgi/Ian/Life()
..()
//Feeding, chasing food, FOOOOODDDD
@@ -428,7 +467,7 @@
-/mob/living/simple_animal/corgi/regenerate_icons()
+/mob/living/simple_animal/pet/corgi/regenerate_icons()
overlays.Cut()
if(inventory_head)
@@ -452,7 +491,7 @@
overlays += back_icon
if(facehugger)
- if(istype(src, /mob/living/simple_animal/corgi/puppy))
+ if(istype(src, /mob/living/simple_animal/pet/corgi/puppy))
overlays += image('icons/mob/mask.dmi',"facehugger_corgipuppy")
else
overlays += image('icons/mob/mask.dmi',"facehugger_corgi")
@@ -461,7 +500,7 @@
-/mob/living/simple_animal/corgi/puppy
+/mob/living/simple_animal/pet/corgi/puppy
name = "\improper corgi puppy"
real_name = "corgi"
desc = "It's a corgi puppy."
@@ -469,9 +508,10 @@
icon_living = "puppy"
icon_dead = "puppy_dead"
mob_size = MOB_SIZE_SMALL
+ accept_collar = 1
//puppies cannot wear anything.
-/mob/living/simple_animal/corgi/puppy/Topic(href, href_list)
+/mob/living/simple_animal/pet/corgi/puppy/Topic(href, href_list)
if(href_list["remove_inv"] || href_list["add_inv"])
usr << "You can't fit this on [src]"
return
@@ -479,7 +519,7 @@
//LISA! SQUEEEEEEEEE~
-/mob/living/simple_animal/corgi/Lisa
+/mob/living/simple_animal/pet/corgi/Lisa
name = "Lisa"
real_name = "Lisa"
gender = FEMALE
@@ -492,15 +532,16 @@
response_harm = "kicks"
var/turns_since_scan = 0
var/puppies = 0
+ accept_collar = 1
//Lisa already has a cute bow!
-/mob/living/simple_animal/corgi/Lisa/Topic(href, href_list)
+/mob/living/simple_animal/pet/corgi/Lisa/Topic(href, href_list)
if(href_list["remove_inv"] || href_list["add_inv"])
usr << "[src] already has a cute bow!"
return
..()
-/mob/living/simple_animal/corgi/Lisa/Life()
+/mob/living/simple_animal/pet/corgi/Lisa/Life()
..()
make_babies()
@@ -513,13 +554,13 @@
dir = i
sleep(1)
-/mob/living/simple_animal/corgi/attack_hand(mob/living/carbon/human/M)
+/mob/living/simple_animal/pet/corgi/attack_hand(mob/living/carbon/human/M)
. = ..()
switch(M.a_intent)
if("help") wuv(1,M)
if("harm") wuv(-1,M)
-/mob/living/simple_animal/corgi/proc/wuv(change, mob/M)
+/mob/living/simple_animal/pet/corgi/proc/wuv(change, mob/M)
if(change)
if(change > 0)
if(M && stat != DEAD) // Added check to see if this mob (the corgi) is dead to fix issue 2454
diff --git a/code/modules/mob/living/simple_animal/friendly/fox.dm b/code/modules/mob/living/simple_animal/friendly/fox.dm
index dc614d5665c..d9322aa283d 100644
--- a/code/modules/mob/living/simple_animal/friendly/fox.dm
+++ b/code/modules/mob/living/simple_animal/friendly/fox.dm
@@ -1,7 +1,8 @@
//Foxxy
-/mob/living/simple_animal/fox
+/mob/living/simple_animal/pet/fox
name = "fox"
desc = "It's a fox. I wonder what it says?"
+ icon = 'icons/mob/pets.dmi'
icon_state = "fox"
icon_living = "fox"
icon_dead = "fox_dead"
@@ -18,6 +19,7 @@
response_harm = "kicks"
//Captain fox
-/mob/living/simple_animal/fox/Renault
+/mob/living/simple_animal/pet/fox/Renault
name = "Renault"
- desc = "Renault, the Captain's trustworthy fox. I wonder what it says?"
\ No newline at end of file
+ desc = "Renault, the Captain's trustworthy fox. I wonder what it says?"
+ pcollar = /obj/item/clothing/tie/petcollar
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm
index f685428fa4d..5d0359f7478 100644
--- a/code/modules/mob/living/simple_animal/friendly/pug.dm
+++ b/code/modules/mob/living/simple_animal/friendly/pug.dm
@@ -1,8 +1,8 @@
-//Corgi //best comment 2014
-/mob/living/simple_animal/pug
+/mob/living/simple_animal/pet/pug
name = "\improper pug"
real_name = "pug"
desc = "It's a pug."
+ icon = 'icons/mob/pets.dmi'
icon_state = "pug"
icon_living = "pug"
icon_dead = "pug_dead"
@@ -19,7 +19,7 @@
response_harm = "kicks"
see_in_dark = 5
-/mob/living/simple_animal/pug/Life()
+/mob/living/simple_animal/pet/pug/Life()
..()
if(!stat && !resting && !buckled)
@@ -30,7 +30,7 @@
dir = i
sleep(1)
-/mob/living/simple_animal/pug/attackby(var/obj/item/O as obj, var/mob/user as mob, params) //Marker -Agouri
+/mob/living/simple_animal/pet/pug/attackby(var/obj/item/O as obj, var/mob/user as mob, params) //Marker -Agouri
if(istype(O, /obj/item/weapon/newspaper))
if(!stat)
user.visible_message("[user] baps [name] on the nose with the rolled up [O]")
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index b8d73c2e266..bf994d1512b 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -46,7 +46,7 @@
return 0
/proc/iscorgi(A)
- if(istype(A, /mob/living/simple_animal/corgi))
+ if(istype(A, /mob/living/simple_animal/pet/corgi))
return 1
return 0
@@ -56,7 +56,7 @@
return 0
/proc/iscat(A)
- if(istype(A, /mob/living/simple_animal/cat))
+ if(istype(A, /mob/living/simple_animal/pet/cat))
return 1
return 0
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 00cbe4f88c1..4db29adc40f 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -420,7 +420,7 @@
for(var/t in organs) //this really should not be necessary
qdel(t)
- var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc)
+ var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc)
new_corgi.a_intent = "harm"
new_corgi.key = key
@@ -494,9 +494,9 @@
return 0 //Verbs do not appear for players.
//Good mobs!
- if(ispath(MP, /mob/living/simple_animal/cat))
+ if(ispath(MP, /mob/living/simple_animal/pet/cat))
return 1
- if(ispath(MP, /mob/living/simple_animal/corgi))
+ if(ispath(MP, /mob/living/simple_animal/pet/corgi))
return 1
if(ispath(MP, /mob/living/simple_animal/crab))
return 1
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 845f914ac15..adfb3b75eee 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -203,15 +203,15 @@ proc/wabbajack(mob/living/M)
var/animal = pick("parrot","corgi","crab","pug","cat","mouse","chicken","cow","lizard","chick","fox","butterfly")
switch(animal)
if("parrot") new_mob = new /mob/living/simple_animal/parrot(M.loc)
- if("corgi") new_mob = new /mob/living/simple_animal/corgi(M.loc)
+ if("corgi") new_mob = new /mob/living/simple_animal/pet/corgi(M.loc)
if("crab") new_mob = new /mob/living/simple_animal/crab(M.loc)
- if("pug") new_mob = new /mob/living/simple_animal/pug(M.loc)
- if("cat") new_mob = new /mob/living/simple_animal/cat(M.loc)
+ if("pug") new_mob = new /mob/living/simple_animal/pet/pug(M.loc)
+ if("cat") new_mob = new /mob/living/simple_animal/pet/cat(M.loc)
if("mouse") new_mob = new /mob/living/simple_animal/mouse(M.loc)
if("chicken") new_mob = new /mob/living/simple_animal/chicken(M.loc)
if("cow") new_mob = new /mob/living/simple_animal/cow(M.loc)
if("lizard") new_mob = new /mob/living/simple_animal/lizard(M.loc)
- if("fox") new_mob = new /mob/living/simple_animal/fox(M.loc)
+ if("fox") new_mob = new /mob/living/simple_animal/pet/fox(M.loc)
if("butterfly") new_mob = new /mob/living/simple_animal/butterfly(M.loc)
else new_mob = new /mob/living/simple_animal/chick(M.loc)
new_mob.languages |= HUMAN
diff --git a/code/modules/reagents/Chemistry-Goon-Other.dm b/code/modules/reagents/Chemistry-Goon-Other.dm
index c31e102b20f..bda6a4441d8 100644
--- a/code/modules/reagents/Chemistry-Goon-Other.dm
+++ b/code/modules/reagents/Chemistry-Goon-Other.dm
@@ -209,7 +209,7 @@ datum/reagent/corgium
/datum/chemical_reaction/corgium/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
- new /mob/living/simple_animal/corgi(location)
+ new /mob/living/simple_animal/pet/corgi(location)
..()
return
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index 324f335fc12..b9113455466 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -92,8 +92,8 @@
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(src)
- trackedIan = locate(/mob/living/simple_animal/corgi/Ian) in mob_list
- trackedRuntime = locate(/mob/living/simple_animal/cat/Runtime) in mob_list
+ trackedIan = locate(/mob/living/simple_animal/pet/corgi/Ian) in mob_list
+ trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list
SetTypeReactions()
RefreshParts()
@@ -510,7 +510,7 @@
trackedIan.loc = src.loc
investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it...
else
- new /mob/living/simple_animal/corgi(src.loc)
+ new /mob/living/simple_animal/pet/corgi(src.loc)
investigate_log("Experimentor has spawned a new corgi.", "experimentor")
ejectItem(TRUE)
if(globalMalf > 36 && globalMalf < 50)
@@ -532,7 +532,7 @@
trackedRuntime.loc = src.loc
investigate_log("Experimentor has stolen Runtime!", "experimentor")
else
- new /mob/living/simple_animal/cat(src.loc)
+ new /mob/living/simple_animal/pet/cat(src.loc)
investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", "experimentor")
ejectItem(TRUE)
if(globalMalf > 76)
@@ -656,7 +656,7 @@
/obj/item/weapon/relic/proc/corgicannon(var/mob/user)
playsound(src.loc, "sparks", rand(25,50), 1)
- var/mob/living/simple_animal/corgi/C = new/mob/living/simple_animal/corgi(get_turf(user))
+ var/mob/living/simple_animal/pet/corgi/C = new/mob/living/simple_animal/pet/corgi(get_turf(user))
C.throw_at(pick(oview(10,user)),10,rand(3,8))
throwSmoke(get_turf(C))
warn_admins(user, "Corgi Cannon", 0)
@@ -679,7 +679,7 @@
user << message
var/animals = rand(1,25)
var/counter
- var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/cat,/mob/living/simple_animal/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp)
+ var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp)
for(counter = 1; counter < animals; counter++)
var/mobType = pick(valid_animals)
new mobType(get_turf(src))
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 29d459c6260..43e9e41da87 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi
index c3a34d66566..657a7c01a54 100644
Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ
diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi
new file mode 100644
index 00000000000..8179f08d362
Binary files /dev/null and b/icons/mob/pets.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index bab5533b140..51baed09306 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi
index 7be081f9579..c3a27ecee84 100644
Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ