diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index d3bf0a4e00..2aebec1d21 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -78455,7 +78455,7 @@
/turf/open/floor/engine,
/area/science/xenobiology)
"dbq" = (
-/mob/living/simple_animal/hostile/retaliate/goose/vomit,
+/mob/living/simple_animal/hostile/retaliate/goose,
/turf/open/floor/wood{
icon_state = "wood-broken6"
},
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 3d15f887bd..1c9cea2c39 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -54388,7 +54388,7 @@
/turf/open/floor/plating,
/area/maintenance/department/cargo)
"ggg" = (
-/mob/living/simple_animal/hostile/retaliate/goose/vomit,
+/mob/living/simple_animal/hostile/retaliate/goose,
/turf/open/floor/wood,
/area/maintenance/department/crew_quarters/dorms)
"gih" = (
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 86a9c21f10..976d3eddcf 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -2237,13 +2237,6 @@
contains = list(/mob/living/simple_animal/hostile/retaliate/goose)
crate_name = "goose crate"
-/datum/supply_pack/critter/goose/vomit
- name = "Vomit Goose Crate"
- desc = "Angry and violent birds. Evil, evil creatures. This one pukes!"
- cost = 5000
- contains = list(/mob/living/simple_animal/hostile/retaliate/goose/vomit/cargo)
- crate_name = "vomit goose crate"
-
/datum/supply_pack/critter/monkey
name = "Monkey Cube Crate"
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
diff --git a/code/modules/mob/living/simple_animal/hostile/goose.dm b/code/modules/mob/living/simple_animal/hostile/goose.dm
index 50b8261c79..b67770fb4b 100644
--- a/code/modules/mob/living/simple_animal/hostile/goose.dm
+++ b/code/modules/mob/living/simple_animal/hostile/goose.dm
@@ -28,146 +28,8 @@
attack_same = TRUE
gold_core_spawnable = HOSTILE_SPAWN
var/random_retaliate = TRUE
- var/icon_vomit_start = "vomit_start"
- var/icon_vomit = "vomit"
- var/icon_vomit_end = "vomit_end"
/mob/living/simple_animal/hostile/retaliate/goose/handle_automated_movement()
. = ..()
if(prob(5) && random_retaliate == TRUE)
Retaliate()
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit
- name = "Birdboat"
- real_name = "Birdboat"
- desc = "It's a sick-looking goose, probably ate too much maintenance trash. Best not to move it around too much."
- gender = MALE
- response_help = "pets"
- response_disarm = "gently pushes aside"
- response_harm = "kicks"
- gold_core_spawnable = NO_SPAWN
- random_retaliate = FALSE
- var/vomiting = FALSE
- var/vomitCoefficient = 1
- var/vomitTimeBonus = 0
- var/datum/action/cooldown/vomit/goosevomit
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/cargo
- name = "Sickly Goose"
- real_name = "Sickly Goose"
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/Initialize()
- . = ..()
- goosevomit = new
- goosevomit.Grant(src)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/Destroy()
- QDEL_NULL(goosevomit)
- return ..()
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/examine(user)
- . = ..()
- . += "Somehow, it still looks hungry."
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/attacked_by(obj/item/O, mob/user)
- . = ..()
- feed(O)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/feed(obj/item/O)
- var/obj/item/reagent_containers/food/tasty = O
- if(!istype(O))
- return
- if (contents.len > GOOSE_SATIATED)
- visible_message("[src] looks too full to eat \the [tasty]!")
- return
- if (tasty.foodtype & GROSS)
- visible_message("[src] hungrily gobbles up \the [tasty]!")
- tasty.forceMove(src)
- playsound(src,'sound/items/eatfood.ogg', 70, 1)
- vomitCoefficient += 3
- vomitTimeBonus += 2
- else
- visible_message("[src] refuses to eat \the [tasty].")
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit()
- var/turf/T = get_turf(src)
- var/obj/item/reagent_containers/food/consumed = locate() in contents //Barf out a single food item from our guts
- if (prob(50) && consumed)
- barf_food(consumed)
- else
- playsound(T, 'sound/effects/splat.ogg', 50, 1)
- T.add_vomit_floor(src)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/barf_food(var/atom/A, var/hard = FALSE)
- if(!istype(A, /obj/item/reagent_containers/food))
- return
- var/turf/currentTurf = get_turf(src)
- var/obj/item/reagent_containers/food/consumed = A
- consumed.forceMove(currentTurf)
- var/destination = get_edge_target_turf(currentTurf, pick(GLOB.alldirs)) //Pick a random direction to toss them in
- var/throwRange = hard ? rand(2,8) : 1
- consumed.safe_throw_at(destination, throwRange, 2) //Thow the food at a random tile 1 spot away
- sleep(2)
- if (QDELETED(src) || QDELETED(consumed))
- return
- currentTurf = get_turf(consumed)
- currentTurf.add_vomit_floor(src)
- playsound(currentTurf, 'sound/effects/splat.ogg', 50, 1)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_prestart(duration)
- flick("vomit_start",src)
- addtimer(CALLBACK(src, .proc/vomit_start, duration), 13) //13 is the length of the vomit_start animation in gooseloose.dmi
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_start(duration)
- vomiting = TRUE
- icon_state = "vomit"
- vomit()
- addtimer(CALLBACK(src, .proc/vomit_preend), duration)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_preend()
- for (var/obj/item/consumed in contents) //Get rid of any food left in the poor thing
- barf_food(consumed, TRUE)
- sleep(1)
- if (QDELETED(src))
- return
- vomit_end()
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_end()
- flick("vomit_end",src)
- vomiting = FALSE
- icon_state = initial(icon_state)
-
-/mob/living/simple_animal/hostile/retaliate/goose/vomit/Moved(oldLoc, dir)
- . = ..()
- if(vomiting)
- vomit() // its supposed to keep vomiting if you move
- return
- var/turf/currentTurf = get_turf(src)
- while (currentTurf == get_turf(src))
- var/obj/item/reagent_containers/food/tasty = locate() in currentTurf
- if (tasty)
- feed(tasty)
- stoplag(20)
- if(prob(vomitCoefficient * 0.2))
- vomit_prestart(vomitTimeBonus + 25)
- vomitCoefficient = 1
- vomitTimeBonus = 0
-
-/datum/action/cooldown/vomit
- name = "Vomit"
- check_flags = AB_CHECK_CONSCIOUS
- button_icon_state = "vomit"
- icon_icon = 'icons/mob/animal.dmi'
- cooldown_time = 250
-
-/datum/action/cooldown/vomit/Trigger()
- if(!..())
- return FALSE
- if(!istype(owner, /mob/living/simple_animal/hostile/retaliate/goose/vomit))
- return FALSE
- var/mob/living/simple_animal/hostile/retaliate/goose/vomit/vomit = owner
- if(!vomit.vomiting)
- vomit.vomit_prestart(vomit.vomitTimeBonus + 25)
- vomit.vomitCoefficient = 1
- vomit.vomitTimeBonus = 0
- return TRUE