Ports tits from vorestation.

This commit is contained in:
Neerti
2018-10-23 15:55:14 -04:00
parent f4b7c21f03
commit 244c3007c5
19 changed files with 357 additions and 30 deletions

View File

@@ -31,7 +31,7 @@
/mob/living/simple_mob/animal/passive/crab, /mob/living/simple_mob/animal/passive/crab,
/mob/living/simple_mob/animal/passive/lizard, /mob/living/simple_mob/animal/passive/lizard,
/mob/living/simple_mob/animal/passive/mouse, /mob/living/simple_mob/animal/passive/mouse,
/mob/living/simple_animal/parrot, /mob/living/simple_mob/animal/passive/bird/parrot,
/mob/living/simple_mob/slime, /mob/living/simple_mob/slime,
/mob/living/simple_mob/animal/passive/tindalos, /mob/living/simple_mob/animal/passive/tindalos,
/mob/living/simple_mob/animal/passive/yithian, /mob/living/simple_mob/animal/passive/yithian,

View File

@@ -21,7 +21,7 @@
"Chicken" = /mob/living/simple_mob/animal/passive/chicken, "Chicken" = /mob/living/simple_mob/animal/passive/chicken,
"Chick" = /mob/living/simple_mob/animal/passive/chick, "Chick" = /mob/living/simple_mob/animal/passive/chick,
"Crab" = /mob/living/simple_mob/animal/passive/crab, "Crab" = /mob/living/simple_mob/animal/passive/crab,
"Parrot" = /mob/living/simple_animal/parrot, "Parrot" = /mob/living/simple_mob/animal/passive/bird/parrot,
"Goat" = /mob/living/simple_mob/animal/goat, "Goat" = /mob/living/simple_mob/animal/goat,
"Cat" = /mob/living/simple_mob/animal/passive/cat, "Cat" = /mob/living/simple_mob/animal/passive/cat,
"Kitten" = /mob/living/simple_mob/animal/passive/cat/kitten, "Kitten" = /mob/living/simple_mob/animal/passive/cat/kitten,

View File

@@ -275,13 +275,6 @@
add_flashes(W,user) add_flashes(W,user)
else else
add_flashes(W,user) add_flashes(W,user)
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
to_chat(user, "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>")
new /mob/living/simple_animal/spiderbot(get_turf(loc))
user.drop_item()
qdel(W)
qdel(src)
return
return return
/obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta /obj/item/robot_parts/head/proc/add_flashes(obj/item/W as obj, mob/user as mob) //Made into a seperate proc to avoid copypasta

View File

@@ -34,7 +34,7 @@
prob(10);/mob/living/simple_mob/animal/passive/yithian, prob(10);/mob/living/simple_mob/animal/passive/yithian,
prob(10);/mob/living/simple_mob/animal/passive/tindalos, prob(10);/mob/living/simple_mob/animal/passive/tindalos,
prob(10);/mob/living/simple_mob/animal/passive/dog/tamaskan, prob(10);/mob/living/simple_mob/animal/passive/dog/tamaskan,
prob(3);/mob/living/simple_animal/parrot, prob(3);/mob/living/simple_mob/animal/passive/bird/parrot,
prob(1);/mob/living/simple_mob/animal/passive/crab) prob(1);/mob/living/simple_mob/animal/passive/crab)
/obj/random/mob/spawn_item() //These should only ever have simple mobs. /obj/random/mob/spawn_item() //These should only ever have simple mobs.

View File

@@ -289,8 +289,8 @@
if("ian") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi/Ian , null, null, delmob ) if("ian") M.change_mob_type( /mob/living/simple_mob/animal/passive/dog/corgi/Ian , null, null, delmob )
if("crab") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab , null, null, delmob ) if("crab") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab , null, null, delmob )
if("coffee") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab/Coffee , null, null, delmob ) if("coffee") M.change_mob_type( /mob/living/simple_mob/animal/passive/crab/Coffee , null, null, delmob )
if("parrot") M.change_mob_type( /mob/living/simple_animal/parrot , null, null, delmob ) if("parrot") M.change_mob_type( /mob/living/simple_mob/animal/passive/bird/parrot , null, null, delmob )
if("polyparrot") M.change_mob_type( /mob/living/simple_animal/parrot/Poly , null, null, delmob ) if("polyparrot") M.change_mob_type( /mob/living/simple_mob/animal/passive/bird/parrot/poly , null, null, delmob )
if("constructarmoured") M.change_mob_type( /mob/living/simple_mob/construct/juggernaut , null, null, delmob ) if("constructarmoured") M.change_mob_type( /mob/living/simple_mob/construct/juggernaut , null, null, delmob )
if("constructbuilder") M.change_mob_type( /mob/living/simple_mob/construct/artificer , null, null, delmob ) if("constructbuilder") M.change_mob_type( /mob/living/simple_mob/construct/artificer , null, null, delmob )
if("constructwraith") M.change_mob_type( /mob/living/simple_mob/construct/wraith , null, null, delmob ) if("constructwraith") M.change_mob_type( /mob/living/simple_mob/construct/wraith , null, null, delmob )

View File

@@ -14,6 +14,17 @@
hostile = FALSE hostile = FALSE
can_flee = TRUE can_flee = TRUE
// For parrots like Poly.
// They modify their say_list datum based on what their mob hears.
/datum/ai_holder/simple_mob/passive/parrot
speak_chance = 2
base_wander_delay = 8
/datum/ai_holder/simple_mob/passive/parrot/on_hear_say(mob/living/speaker, message)
if(holder.stat || !holder.say_list || !message)
return
var/datum/say_list/S = holder.say_list
S.speak += message
// Doesn't really act until told to by something on the outside. // Doesn't really act until told to by something on the outside.
/datum/ai_holder/simple_mob/inert /datum/ai_holder/simple_mob/inert

View File

@@ -33,7 +33,7 @@
last_threaten_time = world.time last_threaten_time = world.time
if(holder.say_list) if(holder.say_list)
holder.say(safepick(holder.say_list.say_threaten)) holder.ISay(safepick(holder.say_list.say_threaten))
playsound(holder.loc, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. playsound(holder.loc, holder.say_list.threaten_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target.
playsound(target.loc, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. playsound(target.loc, holder.say_list.threaten_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant.
else // Otherwise we are waiting for them to go away or to wait long enough for escalate. else // Otherwise we are waiting for them to go away or to wait long enough for escalate.
@@ -49,7 +49,7 @@
threatening = FALSE threatening = FALSE
set_stance(STANCE_APPROACH) set_stance(STANCE_APPROACH)
if(holder.say_list) if(holder.say_list)
holder.say(safepick(holder.say_list.say_escalate)) holder.ISay(safepick(holder.say_list.say_escalate))
else else
return // Wait a bit. return // Wait a bit.
@@ -57,7 +57,7 @@
threatening = FALSE threatening = FALSE
set_stance(STANCE_IDLE) set_stance(STANCE_IDLE)
if(holder.say_list) if(holder.say_list)
holder.say(safepick(holder.say_list.say_stand_down)) holder.ISay(safepick(holder.say_list.say_stand_down))
playsound(holder.loc, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target. playsound(holder.loc, holder.say_list.stand_down_sound, 50, 1) // We do this twice to make the sound -very- noticable to the target.
playsound(target.loc, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant. playsound(target.loc, holder.say_list.stand_down_sound, 50, 1) // Actual aim-mode also does that so at least it's consistant.
@@ -105,7 +105,7 @@
switch(pick(comm_types)) switch(pick(comm_types))
if(COMM_SAY) if(COMM_SAY)
holder.say(safepick(holder.say_list.speak)) holder.ISay(safepick(holder.say_list.speak))
if(COMM_AUDIBLE_EMOTE) if(COMM_AUDIBLE_EMOTE)
holder.audible_emote(safepick(holder.say_list.emote_hear)) holder.audible_emote(safepick(holder.say_list.emote_hear))
if(COMM_VISUAL_EMOTE) if(COMM_VISUAL_EMOTE)
@@ -128,4 +128,4 @@
if(speak_to) if(speak_to)
holder.face_atom(speak_to) holder.face_atom(speak_to)
holder.say(message) holder.ISay(message)

View File

@@ -44,6 +44,7 @@
return can_special_attack(A) && should_special_attack(A) // Just because we can doesn't mean we should. return can_special_attack(A) && should_special_attack(A) // Just because we can doesn't mean we should.
/mob/living/proc/ISay(message) /mob/living/proc/ISay(message)
return say(message)
/mob/living/proc/IIsAlly(mob/living/L) /mob/living/proc/IIsAlly(mob/living/L)
return src.faction == L.faction return src.faction == L.faction

View File

@@ -24,3 +24,4 @@
/mob/living/simple_mob/animal/passive/penguin/tux /mob/living/simple_mob/animal/passive/penguin/tux
name = "Tux" name = "Tux"
desc = "A penguin that has been known to associate with gnus." desc = "A penguin that has been known to associate with gnus."
speak_emote = list("interjects")

View File

@@ -0,0 +1,88 @@
// Base bird type.
/mob/living/simple_mob/animal/passive/bird
name = "bird"
desc = "A domesticated bird. Tweet tweet!"
player_msg = "You are able to fly."
icon = 'icons/mob/birds.dmi'
icon_state = "parrot"
item_state = null
icon_rest = "parrot-held"
icon_dead = "parrot-dead"
pass_flags = PASSTABLE
health = 30
maxHealth = 30
melee_damage_lower = 3
melee_damage_upper = 3
movement_cooldown = 0
hovering = TRUE // Birds can fly.
softfall = TRUE
parachuting = TRUE
attacktext = list("claws", "pecks")
speak_emote = list("chirps", "caws")
has_langs = list("Bird")
response_help = "pets"
response_disarm = "gently moves aside"
response_harm = "swats"
say_list_type = /datum/say_list/bird
holder_type = /obj/item/weapon/holder/bird
/datum/say_list/bird
speak = list("Chirp!","Caw!","Screech!","Squawk!")
emote_hear = list("chirps","caws")
emote_see = list("shakes their head", "ruffles their feathers")
/obj/item/weapon/holder/bird
name = "bird"
desc = "It's a bird!"
icon_state = null
item_icons = null
w_class = ITEMSIZE_SMALL
/obj/item/weapon/holder/bird/sync(var/mob/living/simple_mob/SM)
..()
icon_state = SM.icon_rest // Looks better if the bird isn't flapping constantly in the UI.
// Subtypes for birbs.
/mob/living/simple_mob/animal/passive/bird/black_bird
name = "common blackbird"
desc = "A species of bird, both the males and females are known to be territorial on their breeding grounds."
icon_state = "commonblackbird"
icon_dead = "commonblackbird-dead"
tt_desc = "E Turdus merula"
/mob/living/simple_mob/animal/passive/bird/azure_tit
name = "azure tit"
desc = "A species of bird, colored blue and white."
icon_state = "azuretit"
icon_dead = "azuretit-dead"
tt_desc = "E Cyanistes cyanus"
/mob/living/simple_mob/animal/passive/bird/european_robin
name = "european robin"
desc = "A species of bird, they have been studied for their sense of magnetoreception."
icon_state = "europeanrobin"
icon_dead = "europeanrobin-dead"
tt_desc = "E Erithacus rubecula"
/mob/living/simple_mob/animal/passive/bird/goldcrest
name = "goldcrest"
desc = "A species of bird, they were once called 'king of the birds' in ancient human folklore, for their golden crest. \
Today, their scientific name still elude towards this, with <i>regulus</i>, meaning petty king."
icon_state = "goldcrest"
icon_dead = "goldcrest-dead"
tt_desc = "E Regulus regulus"
/mob/living/simple_mob/animal/passive/bird/ringneck_dove
name = "ringneck dove"
desc = "A species of bird. They are also known as the barbary dove, and have a distinct ring-like shape around the back of their neck."
icon_state = "ringneckdove"
icon_dead = "ringneckdove-dead"
tt_desc = "E Streptopelia risoria" // This is actually disputed IRL but since we can't tell the future it'll stay the same for 500+ years.

View File

@@ -0,0 +1,239 @@
// Parrots can talk, and may repeat things it hears.
/mob/living/simple_mob/animal/passive/bird/parrot
name = "parrot"
description_info = "You can give it a headset by clicking on it with a headset. \
To remove it, click-drag the bird to you while adjacent to them."
has_langs = list("Galactic Common", "Bird")
ai_holder_type = /datum/ai_holder/simple_mob/passive/parrot
// A headset, so that talking parrots can yell at the crew over comms.
// If set to a type, on initialize it will be instantiated into that type.
var/obj/item/device/radio/headset/my_headset = null
/datum/say_list/bird/poly
speak = list(
"Poly wanna cracker!",
"Check the singulo, you chucklefucks!",
"Wire the solars, you lazy bums!",
"WHO TOOK THE DAMN HARDSUITS?",
"OH GOD ITS FREE CALL THE SHUTTLE",
"Danger! Crystal hyperstructure instability!",
"CRYSTAL DELAMINATION IMMINENT.",
"Tweet tweet, I'm a Teshari.",
"Chitters.",
"Meteors have been detected on a collision course with the station!"
)
// Let's the AI use headsets.
// Player-controlled parrots will need to do it manually.
/mob/living/simple_mob/animal/passive/bird/parrot/ISay(message)
if(my_headset && prob(50))
var/list/keys = list()
for(var/channel in my_headset.channels)
var/key = get_radio_key_from_channel(channel)
if(key)
keys += key
if(keys.len)
var/key_used = pick(keys)
return say("[key_used] [message]")
return say(message)
// Ugly saycode so parrots can use their headsets.
/mob/living/simple_mob/animal/passive/bird/parrot/handle_message_mode(message_mode, message, verb, speaking, used_radios, alt_name)
..()
if(message_mode)
if(my_headset && istype(my_headset, /obj/item/device/radio))
my_headset.talk_into(src, message, message_mode, verb, speaking)
used_radios += my_headset
// Clicked on while holding an object.
/mob/living/simple_mob/animal/passive/bird/parrot/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/device/radio/headset))
give_headset(I, user)
return
return ..()
// Clicked on by empty hand.
/mob/living/simple_mob/animal/passive/bird/parrot/attack_hand(mob/living/L)
if(L.a_intent == I_GRAB && my_headset)
remove_headset(L)
else
..()
/mob/living/simple_mob/animal/passive/bird/parrot/proc/give_headset(obj/item/device/radio/headset/new_headset, mob/living/user)
if(!istype(new_headset))
to_chat(user, span("warning", "\The [new_headset] isn't a headset."))
return
if(my_headset)
to_chat(user, span("warning", "\The [src] is already wearing \a [my_headset]."))
return
else
user.drop_item(new_headset)
my_headset = new_headset
new_headset.forceMove(src)
to_chat(user, span("warning", "You place \a [new_headset] on \the [src]. You monster."))
to_chat(src, span("notice", "\The [user] gives you \a [new_headset]. You should put it to good use immediately."))
return
/mob/living/simple_mob/animal/passive/bird/parrot/proc/remove_headset(mob/living/user)
if(!my_headset)
to_chat(user, "<span class='warning'>\The [src] doesn't have a headset to remove, thankfully.</span>")
else
ISay("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!")
my_headset.forceMove(get_turf(src))
user.put_in_hands(my_headset)
to_chat(user, span("notice", "You take away \the [src]'s [my_headset.name]. Finally."))
to_chat(src, span("warning", "\The [user] takes your [my_headset.name] away! How cruel!"))
my_headset = null
/mob/living/simple_mob/animal/passive/bird/parrot/examine(mob/user)
..()
if(my_headset)
to_chat(user, "It is wearing \a [my_headset].")
/mob/living/simple_mob/animal/passive/bird/parrot/initialize()
if(my_headset)
my_headset = new my_headset(src)
return ..()
// Subtypes.
// Best Bird
/mob/living/simple_mob/animal/passive/bird/parrot/poly
name = "Poly"
desc = "It's a parrot. An expert on quantum cracker theory."
icon_state = "poly"
icon_rest = "poly-held"
icon_dead = "poly-dead"
tt_desc = "E Ara macao"
my_headset = /obj/item/device/radio/headset/headset_eng
say_list_type = /datum/say_list/bird/poly
// Best Bird with best headset.
/mob/living/simple_mob/animal/passive/bird/parrot/poly/ultimate
my_headset = /obj/item/device/radio/headset/omni
/mob/living/simple_mob/animal/passive/bird/parrot/kea
name = "kea"
desc = "A species of parrot. On Earth, they are unique among other parrots for residing in alpine climates. \
They are known to be intelligent and curious, which has made some consider them a pest."
icon_state = "kea"
icon_rest = "kea-held"
icon_dead = "kea-dead"
tt_desc = "E Nestor notabilis"
/mob/living/simple_mob/animal/passive/bird/parrot/eclectus
name = "eclectus"
desc = "A species of parrot, this species features extreme sexual dimorphism in their plumage's colors. \
A male eclectus has emerald green plumage, where as a female eclectus has red and purple plumage."
icon_state = "eclectus"
icon_rest = "eclectus-held"
icon_dead = "eclectus-dead"
tt_desc = "E Eclectus roratus"
/mob/living/simple_mob/animal/passive/bird/parrot/eclectus/initialize()
gender = pick(MALE, FEMALE)
if(gender == FEMALE)
icon_state = "eclectusf"
icon_rest = "eclectusf-held"
icon_dead = "eclectusf-dead"
return ..()
/mob/living/simple_mob/animal/passive/bird/parrot/grey_parrot
name = "grey parrot"
desc = "A species of parrot. This one is predominantly grey, but has red tail feathers."
icon_state = "agrey"
icon_rest = "agrey-held"
icon_dead = "agrey-dead"
tt_desc = "E Psittacus erithacus"
/mob/living/simple_mob/animal/passive/bird/parrot/black_headed_caique
name = "black-headed caique"
desc = "A species of parrot, these birds have a distinct black color on their heads, distinguishing them from their relative Caiques."
icon_state = "bcaique"
icon_rest = "bcaique-held"
icon_dead = "bcaique-dead"
tt_desc = "E Pionites melanocephalus"
/mob/living/simple_mob/animal/passive/bird/parrot/white_caique
name = "white-bellied caique"
desc = "A species of parrot, they are also known as the Green-Thighed Parrot."
icon_state = "wcaique"
icon_rest = "wcaique-held"
icon_dead = "wcaique-dead"
tt_desc = "E Pionites leucogaster"
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar
name = "budgerigar"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one is has its natural colors of green and yellow."
icon_state = "gbudge"
icon_rest = "gbudge-held"
icon_dead = "gbudge-dead"
tt_desc = "E Melopsittacus undulatus"
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/blue
icon_state = "bbudge"
icon_rest = "bbudge-held"
icon_dead = "bbudge-dead"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one has a mutation which altered its color to be blue instead of green and yellow."
/mob/living/simple_mob/animal/passive/bird/parrot/budgerigar/bluegreen
icon_state = "bgbudge"
icon_rest = "bgbudge-held"
icon_dead = "bgbudge-dead"
desc = "A species of parrot, they are also known as the common parakeet, or in some circles, the budgie. \
This one has a mutation which altered its color to be a mix of blue and green."
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel
name = "cockatiel"
desc = "A species of parrot. This one has a highly visible crest."
icon_state = "tiel"
icon_rest = "tiel-held"
icon_dead = "tiel-dead"
tt_desc = "E Nymphicus hollandicus"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/white
icon_state = "wtiel"
icon_rest = "wtiel-held"
icon_dead = "wtiel-dead"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/yellowish
icon_state = "luttiel"
icon_rest = "luttiel-held"
icon_dead = "luttiel-dead"
/mob/living/simple_mob/animal/passive/bird/parrot/cockatiel/grey
icon_state = "blutiel" // idk why this is blu.
icon_rest = "blutiel-held"
icon_dead = "blutiel-dead"
// This actually might be the yellow-crested cockatoo but idk.
/mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo
name = "sulphur-crested cockatoo"
desc = "A species of parrot. This one has an expressive yellow crest. Their underwing and tail feathers are also yellow."
icon_state = "too"
icon_rest = "too-held"
icon_dead = "too-dead"
tt_desc = "E Cacatua galerita"
// This was originally called 'hooded_too', which might not mean the unbrella cockatoo but idk.
/mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo
name = "white cockatoo"
desc = "A species of parrot. This one is also known as the Umbrella Cockatoo, due to the semicircular shape of its crest."
icon_state = "utoo"
icon_rest = "utoo-held"
icon_dead = "utoo-dead"
tt_desc = "E Cacatua alba"
/mob/living/simple_mob/animal/passive/bird/parrot/pink_cockatoo
name = "pink cockatoo"
desc = "A species of parrot. This one is also known as Major Mitchell's cockatoo, \
in honor of a human surveyor and explorer who existed before humans fully explored their home planet."
icon_state = "mtoo"
icon_rest = "mtoo-held"
icon_dead = "mtoo-dead"
tt_desc = "E Lophochroa leadbeateri"

View File

@@ -154,10 +154,9 @@
adjustCloneLoss(-1) adjustCloneLoss(-1)
adjustBruteLoss(-1) adjustBruteLoss(-1)
// Clicked on by empty hand. // Clicked on by empty hand.
/mob/living/simple_mob/slime/attack_hand(mob/living/L) /mob/living/simple_mob/slime/attack_hand(mob/living/L)
if(L.a_intent == I_HELP && hat) if(L.a_intent == I_GRAB && hat)
remove_hat(L) remove_hat(L)
else else
..() ..()

View File

@@ -319,7 +319,7 @@
return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak) return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak)
if(ispath(MP, /mob/living/simple_mob/animal/space/bear)) if(ispath(MP, /mob/living/simple_mob/animal/space/bear))
return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak) return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak)
if(ispath(MP, /mob/living/simple_animal/parrot)) if(ispath(MP, /mob/living/simple_mob/animal/passive/bird/parrot))
return 1 //Parrots are no longer unfinished! -Nodrak return 1 //Parrots are no longer unfinished! -Nodrak
//Not in here? Must be untested! //Not in here? Must be untested!

View File

@@ -15,7 +15,7 @@
floor_type = /turf/simulated/floor/reinforced floor_type = /turf/simulated/floor/reinforced
var/list/supplied_drop_types = list() var/list/supplied_drop_types = list()
var/door_type = /obj/structure/droppod_door var/door_type = /obj/structure/droppod_door
var/drop_type = /mob/living/simple_animal/parrot var/drop_type = /mob/living/simple_mob/animal/passive/bird/parrot
var/auto_open_doors var/auto_open_doors
var/placement_explosion_dev = 1 var/placement_explosion_dev = 1

View File

@@ -69,11 +69,6 @@ var/list/ventcrawl_machinery = list(
return 1 return 1
return ..() return ..()
/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item)
if(carried_item == held_item)
return 1
return ..()
/mob/living/proc/ventcrawl_carry() /mob/living/proc/ventcrawl_carry()
for(var/atom/A in contents) for(var/atom/A in contents)
if(!is_allowed_vent_crawl_item(A)) if(!is_allowed_vent_crawl_item(A))

View File

@@ -34,7 +34,7 @@
/mob/living/simple_mob/animal/passive/dog/corgi/puppy, /mob/living/simple_mob/animal/passive/dog/corgi/puppy,
/mob/living/simple_mob/animal/passive/chicken, /mob/living/simple_mob/animal/passive/chicken,
/mob/living/simple_mob/animal/passive/cow, /mob/living/simple_mob/animal/passive/cow,
/mob/living/simple_animal/parrot, /mob/living/simple_mob/animal/passive/bird/parrot,
/mob/living/simple_mob/animal/passive/crab, /mob/living/simple_mob/animal/passive/crab,
/mob/living/simple_mob/animal/passive/mouse, /mob/living/simple_mob/animal/passive/mouse,
/mob/living/simple_mob/animal/goat) /mob/living/simple_mob/animal/goat)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 276 KiB

After

Width:  |  Height:  |  Size: 261 KiB

BIN
icons/mob/birds.dmi Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View File

@@ -1975,8 +1975,6 @@
#include "code\modules\mob\living\simple_animal\simple_hud.dm" #include "code\modules\mob\living\simple_animal\simple_hud.dm"
#include "code\modules\mob\living\simple_animal\aliens\mimic.dm" #include "code\modules\mob\living\simple_animal\aliens\mimic.dm"
#include "code\modules\mob\living\simple_animal\aliens\statue.dm" #include "code\modules\mob\living\simple_animal\aliens\statue.dm"
#include "code\modules\mob\living\simple_animal\animals\parrot.dm"
#include "code\modules\mob\living\simple_animal\animals\spiderbot.dm"
#include "code\modules\mob\living\simple_mob\appearance.dm" #include "code\modules\mob\living\simple_mob\appearance.dm"
#include "code\modules\mob\living\simple_mob\combat.dm" #include "code\modules\mob\living\simple_mob\combat.dm"
#include "code\modules\mob\living\simple_mob\defense.dm" #include "code\modules\mob\living\simple_mob\defense.dm"
@@ -2011,8 +2009,10 @@
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\parrot.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm"
#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm" #include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm"
@@ -2585,7 +2585,7 @@
#include "code\ZAS\Zone.dm" #include "code\ZAS\Zone.dm"
#include "interface\interface.dm" #include "interface\interface.dm"
#include "interface\skin.dmf" #include "interface\skin.dmf"
#include "maps\southern_cross\southern_cross.dm" #include "maps\example\example.dm"
#include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\space_submaps\space.dm"
#include "maps\submaps\surface_submaps\mountains\mountains.dm" #include "maps\submaps\surface_submaps\mountains\mountains.dm"
#include "maps\submaps\surface_submaps\mountains\mountains_areas.dm" #include "maps\submaps\surface_submaps\mountains\mountains_areas.dm"