mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-15 12:42:50 +00:00
Ports tits from vorestation.
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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 )
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -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"
|
||||||
@@ -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
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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!
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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
BIN
icons/mob/birds.dmi
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 185 KiB |
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user