diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 34b388833a5..a5e48acbb90 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -753,6 +753,7 @@ var/global/list/xenobio_gold_mobs_safe = list( /mob/living/simple_mob/vore/bee, /mob/living/simple_mob/vore/fennec, /mob/living/simple_mob/vore/fennix, + /mob/living/simple_mob/vore/seagull, /mob/living/simple_mob/vore/hippo, /mob/living/simple_mob/vore/horse, /mob/living/simple_mob/vore/jelly, diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index e72e7aa1608..f9785486d2d 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -43,6 +43,7 @@ var/vore_fullness = 0 // How "full" the belly is (controls icons) var/vore_icons = 0 // Bitfield for which fields we have vore icons for. var/vore_eyes = FALSE // For mobs with fullness specific eye overlays. + var/belly_size_multiplier = 1 var/life_disabled = 0 // For performance reasons var/mount_offset_x = 5 // Horizontal riding offset. @@ -73,6 +74,7 @@ for(var/mob/living/M in B) new_fullness += M.size_multiplier new_fullness = new_fullness / size_multiplier //Divided by pred's size so a macro mob won't get macro belly from a regular prey. + new_fullness = new_fullness * belly_size_multiplier // Some mobs are small even at 100% size. Let's account for that. new_fullness = round(new_fullness, 1) // Because intervals of 0.25 are going to make sprite artists cry. vore_fullness = min(vore_capacity, new_fullness) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm index ab56b07622f..82bbd33d49a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm @@ -77,8 +77,9 @@ . = ..() if(!.) return - if(vore_fullness == 0 && movement_cooldown == 50) + if(vore_fullness == 0 && movement_cooldown == 10) movement_cooldown = initial(movement_cooldown) + /mob/living/simple_mob/vore/alienanimals/dustjumper/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay) . = ..() movement_cooldown = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/seagull.dm b/code/modules/mob/living/simple_mob/subtypes/vore/seagull.dm new file mode 100644 index 00000000000..84b6f87efdd --- /dev/null +++ b/code/modules/mob/living/simple_mob/subtypes/vore/seagull.dm @@ -0,0 +1,60 @@ +/datum/category_item/catalogue/fauna/seagull // TODO: write actual lore if ever needed + name = "Wildlife - Seagull" + desc = "Classification: Larus brachyrhynchus\ +

\ + Gulls, or colloquially seagulls, are seabirds of the family Laridae in the suborder Lari. \ + They are most closely related to the terns and skimmers and only distantly related to auks, and even more distantly to waders." + value = CATALOGUER_REWARD_TRIVIAL + +/mob/living/simple_mob/vore/seagull + name = "seagull" + desc = "The most dangerous and hostile scavenger of seashores. Beware!" + tt_desc = "Larus brachyrhynchus" + catalogue_data = list(/datum/category_item/catalogue/fauna/seagull) + + icon_state = "seagull" + icon_living = "seagull" + icon_dead = "seagull_dead" + icon_rest = "seagull" + icon = 'icons/mob/vore.dmi' + + faction = "seagull" + maxHealth = 25 + health = 25 + + response_help = "pats" + response_disarm = "gently pushes aside" + response_harm = "hits" + + meat_amount = 2 + meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat/chicken + + harm_intent_damage = 3 + melee_damage_lower = 4 + melee_damage_upper = 6 + attacktext = list("pecked", "pinched", "wingslapped") + + say_list_type = /datum/say_list/seagull + ai_holder_type = /datum/ai_holder/simple_mob/passive + + vore_active = 1 + vore_capacity = 5 + vore_bump_chance = 25 + vore_bump_emote = "greedily dives at" + vore_pounce_chance = 70 + vore_default_mode = DM_HOLD + vore_icons = SA_ICON_LIVING + belly_size_multiplier = 2.5 + +/datum/say_list/seagull + speak = list("Ha-Ha-Ha!","Huoh-Huoh-Huoh!","Keow?") + emote_hear = list("screams!","chirps.") + emote_see = list("pecks at the ground","looks around hungrily") + +/mob/living/simple_mob/vore/seagull/update_icon() + . = ..() + + if(vore_fullness >= 2) + movement_cooldown = 10 + else if(movement_cooldown == 10) + movement_cooldown = initial(movement_cooldown) \ No newline at end of file diff --git a/icons/mob/vore.dmi b/icons/mob/vore.dmi index 4265bd359f3..74df3254001 100644 Binary files a/icons/mob/vore.dmi and b/icons/mob/vore.dmi differ diff --git a/maps/expedition_vr/beach/_beach.dm b/maps/expedition_vr/beach/_beach.dm index 9013936d50a..5b1d049fe15 100644 --- a/maps/expedition_vr/beach/_beach.dm +++ b/maps/expedition_vr/beach/_beach.dm @@ -85,6 +85,7 @@ //guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports)) mobs_to_pick_from = list( /mob/living/simple_mob/vore/fennec = 300, + /mob/living/simple_mob/vore/seagull = 200, /mob/living/simple_mob/animal/passive/snake/python = 100 ) diff --git a/vorestation.dme b/vorestation.dme index 9ee12f42771..34617aafbc7 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3241,6 +3241,7 @@ #include "code\modules\mob\living\simple_mob\subtypes\vore\rabbit.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\rat.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\redpanda.dm" +#include "code\modules\mob\living\simple_mob\subtypes\vore\seagull.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\sect_drone.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\sect_queen.dm" #include "code\modules\mob\living\simple_mob\subtypes\vore\sheep.dm"