Merge pull request #2972 from Citadel-Station-13/upstream-merge-30856
[MIRROR] Adds Nars-Ian and clock hawks
This commit is contained in:
@@ -424,6 +424,41 @@
|
||||
setDir(i)
|
||||
sleep(1)
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act()
|
||||
playsound(src, 'sound/magic/demon_dies.ogg', 75, TRUE)
|
||||
var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc)
|
||||
N.setDir(dir)
|
||||
gib()
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/narsie
|
||||
name = "Nars-Ian"
|
||||
desc = "Ia! Ia!"
|
||||
icon_state = "narsian"
|
||||
icon_living = "narsian"
|
||||
icon_dead = "narsian_dead"
|
||||
faction = list("dog", "cult")
|
||||
gold_core_spawnable = FALSE
|
||||
nofur = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/narsie/Life()
|
||||
..()
|
||||
for(var/mob/living/simple_animal/pet/P in range(1, src))
|
||||
if(P != src && prob(5))
|
||||
visible_message("<span class='warning'>[src] devours [P]!</span>", \
|
||||
"<span class='cult big bold'>DELICIOUS SOULS</span>")
|
||||
playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE)
|
||||
narsie_act()
|
||||
P.gib()
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/narsie/update_corgi_fluff()
|
||||
..()
|
||||
speak = list("Tari'karat-pasnar!", "IA! IA!", "BRRUUURGHGHRHR")
|
||||
speak_emote = list("growls", "barks ominously")
|
||||
emote_hear = list("barks echoingly!", "woofs hauntingly!", "yaps in an eldritch manner.", "mutters something unspeakable.")
|
||||
emote_see = list("communes with the unnameable.", "ponders devouring some souls.", "shakes.")
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/narsie/narsie_act()
|
||||
adjustBruteLoss(-maxHealth)
|
||||
|
||||
|
||||
/mob/living/simple_animal/pet/dog/corgi/regenerate_icons()
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
icon_state = "parrot_fly"
|
||||
icon_living = "parrot_fly"
|
||||
icon_dead = "parrot_dead"
|
||||
var/icon_sit = "parrot_sit"
|
||||
density = FALSE
|
||||
health = 80
|
||||
maxHealth = 80
|
||||
@@ -284,7 +285,7 @@
|
||||
return
|
||||
if(!stat && M.a_intent == INTENT_HARM)
|
||||
|
||||
icon_state = "parrot_fly" //It is going to be flying regardless of whether it flees or attacks
|
||||
icon_state = icon_living //It is going to be flying regardless of whether it flees or attacks
|
||||
|
||||
if(parrot_state == PARROT_PERCH)
|
||||
parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched
|
||||
@@ -320,7 +321,7 @@
|
||||
if(M.melee_damage_upper > 0 && !stat)
|
||||
parrot_interest = M
|
||||
parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
|
||||
//Mobs with objects
|
||||
/mob/living/simple_animal/parrot/attackby(obj/item/O, mob/living/user, params)
|
||||
@@ -335,7 +336,7 @@
|
||||
parrot_state |= PARROT_ATTACK
|
||||
else
|
||||
parrot_state |= PARROT_FLEE
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
drop_held_item(0)
|
||||
else if(istype(O, /obj/item/reagent_containers/food/snacks/cracker)) //Poly wants a cracker.
|
||||
qdel(O)
|
||||
@@ -358,7 +359,7 @@
|
||||
parrot_interest = null
|
||||
parrot_state = PARROT_WANDER | PARROT_FLEE //Been shot and survived! RUN LIKE HELL!
|
||||
//parrot_been_shot += 5
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
drop_held_item(0)
|
||||
return
|
||||
|
||||
@@ -371,7 +372,7 @@
|
||||
|
||||
//Sprite update for when a parrot gets pulled
|
||||
if(pulledby && stat == CONSCIOUS)
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
if(!client)
|
||||
parrot_state = PARROT_WANDER
|
||||
return
|
||||
@@ -400,11 +401,11 @@
|
||||
if(parrot_perch && parrot_perch.loc != src.loc) //Make sure someone hasnt moved our perch on us
|
||||
if(parrot_perch in view(src))
|
||||
parrot_state = PARROT_SWOOP | PARROT_RETURN
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
return
|
||||
else
|
||||
parrot_state = PARROT_WANDER
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
return
|
||||
|
||||
if(--parrot_sleep_dur) //Zzz
|
||||
@@ -445,7 +446,7 @@
|
||||
if(parrot_interest)
|
||||
emote("me", 1, "looks in [parrot_interest]'s direction and takes flight.")
|
||||
parrot_state = PARROT_SWOOP | PARROT_STEAL
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
return
|
||||
|
||||
//-----WANDERING - This is basically a 'I dont know what to do yet' state
|
||||
@@ -530,7 +531,7 @@
|
||||
src.loc = parrot_perch.loc
|
||||
drop_held_item()
|
||||
parrot_state = PARROT_PERCH
|
||||
icon_state = "parrot_sit"
|
||||
icon_state = icon_sit
|
||||
return
|
||||
|
||||
walk_to(src, parrot_perch, 1, parrot_speed)
|
||||
@@ -603,8 +604,8 @@
|
||||
*/
|
||||
|
||||
/mob/living/simple_animal/parrot/movement_delay()
|
||||
if(client && stat == CONSCIOUS && parrot_state != "parrot_fly")
|
||||
icon_state = "parrot_fly"
|
||||
if(client && stat == CONSCIOUS && parrot_state != icon_living)
|
||||
icon_state = icon_living
|
||||
//Because the most appropriate place to set icon_state is movement_delay(), clearly
|
||||
return ..()
|
||||
|
||||
@@ -797,12 +798,12 @@
|
||||
if(stat || !client)
|
||||
return
|
||||
|
||||
if(icon_state == "parrot_fly")
|
||||
if(icon_state == icon_living)
|
||||
for(var/atom/movable/AM in view(src,1))
|
||||
for(var/perch_path in desired_perches)
|
||||
if(istype(AM, perch_path))
|
||||
src.loc = AM.loc
|
||||
icon_state = "parrot_sit"
|
||||
icon_state = icon_sit
|
||||
return
|
||||
to_chat(src, "<span class='warning'>There is no perch nearby to sit on!</span>")
|
||||
return
|
||||
@@ -816,7 +817,7 @@
|
||||
if(stat || !client)
|
||||
return
|
||||
|
||||
if(icon_state == "parrot_fly")
|
||||
if(icon_state == icon_living)
|
||||
for(var/mob/living/carbon/human/H in view(src,1))
|
||||
if(H.has_buckled_mobs() && H.buckled_mobs.len >= H.max_buckled_mobs) //Already has a parrot, or is being eaten by a slime
|
||||
continue
|
||||
@@ -824,7 +825,7 @@
|
||||
return
|
||||
to_chat(src, "<span class='warning'>There is nobody nearby that you can sit on!</span>")
|
||||
else
|
||||
icon_state = "parrot_fly"
|
||||
icon_state = icon_living
|
||||
parrot_state = PARROT_WANDER
|
||||
if(buckled)
|
||||
to_chat(src, "<span class='notice'>You are no longer sitting on [buckled]'s shoulder.</span>")
|
||||
@@ -842,7 +843,7 @@
|
||||
H.buckle_mob(src, force=1)
|
||||
pixel_y = 9
|
||||
pixel_x = pick(-8,8) //pick left or right shoulder
|
||||
icon_state = "parrot_sit"
|
||||
icon_state = icon_sit
|
||||
parrot_state = PARROT_PERCH
|
||||
to_chat(src, "<span class='notice'>You sit on [H]'s shoulder.</span>")
|
||||
|
||||
@@ -961,6 +962,12 @@
|
||||
fdel(json_file)
|
||||
WRITE_FILE(json_file, json_encode(file_data))
|
||||
|
||||
/mob/living/simple_animal/parrot/Poly/ratvar_act()
|
||||
playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 75, TRUE)
|
||||
var/mob/living/simple_animal/parrot/clock_hawk/H = new(loc)
|
||||
H.setDir(dir)
|
||||
dust()
|
||||
|
||||
/mob/living/simple_animal/parrot/Poly/ghost
|
||||
name = "The Ghost of Poly"
|
||||
desc = "Doomed to squawk the earth."
|
||||
@@ -996,4 +1003,23 @@
|
||||
loc = H
|
||||
H.ContractDisease(P)
|
||||
parrot_interest = null
|
||||
H.visible_message("<span class='danger'>[src] dive bombs into [H]'s chest and vanishes!</span>", "<span class='userdanger'>[src] dive bombs into your chest, vanishing! This can't be good!</span>")
|
||||
H.visible_message("<span class='danger'>[src] dive bombs into [H]'s chest and vanishes!</span>", "<span class='userdanger'>[src] dive bombs into your chest, vanishing! This can't be good!</span>")
|
||||
|
||||
|
||||
/mob/living/simple_animal/parrot/clock_hawk
|
||||
name = "clock hawk"
|
||||
desc = "Cbyl jnaan penpxre! Fdhnnnjx!"
|
||||
icon_state = "clock_hawk_fly"
|
||||
icon_living = "clock_hawk_fly"
|
||||
icon_sit = "clock_hawk_sit"
|
||||
speak = list("Penpxre!", "Ratvar vf n qhzo anzr naljnl!")
|
||||
speak_emote = list("squawks rustily", "says crassly", "yells brassly")
|
||||
emote_hear = list("squawks rustily.", "bawks metallically!")
|
||||
emote_see = list("flutters its metal wings.")
|
||||
faction = list("ratvar")
|
||||
gold_core_spawnable = FALSE
|
||||
del_on_death = TRUE
|
||||
death_sound = 'sound/magic/clockwork/anima_fragment_death.ogg'
|
||||
|
||||
/mob/living/simple_animal/parrot/clock_hawk/ratvar_act()
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user