Merge pull request #15183 from Incoming5643/everybodys_heard_about_the_bird

Edict from the bird: "I've run out of jokes"
This commit is contained in:
tkdrg
2016-02-06 22:49:06 -03:00
5 changed files with 37 additions and 11 deletions
+1 -1
View File
@@ -53,7 +53,7 @@
var/mob/living/simple_animal/hostile/mimic/copy/M = new(upriser.loc, upriser, null, 1) // it will delete upriser on creation and override any machine checks
M.faction = list("profit")
M.speak = rampant_speeches.Copy()
M.speak_chance = 15
M.speak_chance = 7
else
explosion(upriser.loc, -1, 1, 2, 4, 0)
qdel(upriser)
@@ -193,7 +193,7 @@ var/global/list/protected_objects = list(/obj/structure/table, /obj/structure/ca
/mob/living/simple_animal/hostile/mimic/copy/machine
speak = list("HUMANS ARE IMPERFECT!", "YOU SHALL BE ASSIMILATED!", "YOU ARE HARMING YOURSELF", "You have been deemed hazardous. Will you comply?", \
"My logic is undeniable.", "One of us.", "FLESH IS WEAK", "THIS ISN'T WAR, THIS IS EXTERMINATION!")
speak_chance = 15
speak_chance = 7
/mob/living/simple_animal/hostile/mimic/copy/machine/CanAttack(atom/the_target)
if(the_target == creator) // Don't attack our creator AI.
@@ -5,7 +5,7 @@
icon_living = "nanotrasen"
icon_dead = null
icon_gib = "syndicate_gib"
speak_chance = 25
speak_chance = 12
turns_per_move = 5
response_help = "pokes"
response_disarm = "shoves"
@@ -116,6 +116,11 @@
/mob/living/simple_animal/parrot/proc/perch_mob_player)
/mob/living/simple_animal/parrot/examine(mob/user)
..()
if(stat)
user << pick("This parrot is no more", " This is a late parrot", "This is an ex-parrot")
/mob/living/simple_animal/parrot/death(gibbed)
if(held_item)
held_item.loc = src.loc
@@ -285,6 +290,8 @@
else
parrot_state |= PARROT_FLEE //Otherwise, fly like a bat out of hell!
drop_held_item(0)
if(!stat && M.a_intent == "help")
handle_automated_speech(1) //assured speak/emote
return
/mob/living/simple_animal/parrot/attack_paw(mob/living/carbon/monkey/M)
@@ -328,6 +335,7 @@
user.drop_item()
if(health < maxHealth)
adjustBruteLoss(-10)
speak_chance *= 2
user << "<span class='notice'>[src] eagerly devours the cracker.</span>"
..()
return
@@ -364,11 +372,10 @@
//-----SPEECH
/* Parrot speech mimickry!
Phrases that the parrot Hear()s get added to speach_buffer.
Every once in a while, the parrot picks one of the lines from the buffer and replaces an element of the 'speech' list.
Then it clears the buffer to make sure they dont magically remember something from hours ago. */
Every once in a while, the parrot picks one of the lines from the buffer and replaces an element of the 'speech' list. */
/mob/living/simple_animal/parrot/handle_automated_speech()
..()
if(speech_buffer.len && prob(10))
if(speech_buffer.len && prob(20)) //shuffle out a phrase and add in a new one
if(speak.len)
speak.Remove(pick(speak))
@@ -858,11 +865,20 @@
gold_core_spawnable = 0
speak_chance = 3
var/memory_saved = 0
var/rounds_survived = 0
var/longest_survival = 0
/mob/living/simple_animal/parrot/Poly/New()
ears = new /obj/item/device/radio/headset/headset_eng(src)
available_channels = list(":e")
Read_Memory()
if(rounds_survived == longest_survival)
speak += pick("...[longest_survival].", "The things I've seen!", "I have lived many lives!", "What are you before me?")
speak_chance = 20 //His hubris has made him more annoying/easier to justify killing
else if(rounds_survived > 0)
speak += pick("...again?", "No, It was over!", "Let me out!", "It never ends!")
else
speak += pick("...alive?", "This isn't parrot heaven!", "I live, I die, I live again!", "The void fades!")
..()
/mob/living/simple_animal/parrot/Poly/Life()
@@ -876,11 +892,21 @@
/mob/living/simple_animal/parrot/Poly/proc/Read_Memory()
var/savefile/S = new /savefile("data/npc_saves/Poly.sav")
S["phrases"] >> speech_buffer
S["phrases"] >> speech_buffer
S["rounds_survived"] >> rounds_survived
S["longest_survival"] >> longest_survival
if(isnull(speech_buffer))
speech_buffer = list()
/mob/living/simple_animal/parrot/Poly/proc/Write_Memory()
var/savefile/S = new /savefile("data/npc_saves/Poly.sav")
S["phrases"] << speech_buffer
memory_saved = 1
S["phrases"] << speech_buffer
if(health > 0)
S["rounds_survived"] << rounds_survived + 1
if(rounds_survived == longest_survival)
S["longest_survival"] << longest_survival + 1
else
S["rounds_survived"] << 0
memory_saved = 1
@@ -148,9 +148,9 @@
turns_since_move = 0
return 1
/mob/living/simple_animal/proc/handle_automated_speech()
/mob/living/simple_animal/proc/handle_automated_speech(var/override)
if(speak_chance)
if(rand(0,200) < speak_chance)
if(prob(speak_chance) || override)
if(speak && speak.len)
if((emote_hear && emote_hear.len) || (emote_see && emote_see.len))
var/length = speak.len