mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-07 07:52:00 +00:00
Merge branch 'master' into development
This commit is contained in:
@@ -34,21 +34,24 @@
|
||||
var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
|
||||
|
||||
attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O,/obj/item/organ/brain) && !(istype(O,/obj/item/organ/brain/golem)) && !brainmob) //Time to stick a brain in it --NEO /MMI'ing a scroll of paper makes 0 sense
|
||||
|
||||
if(istype(O,/obj/item/organ/brain) && !brainmob) //Time to stick a brain in it --NEO
|
||||
var/obj/item/organ/brain/B = O
|
||||
if(B.health <= 0)
|
||||
user << "\red That brain is well and truly dead."
|
||||
user << "<span class='warning'>That brain is well and truly dead.</span>"
|
||||
return
|
||||
else if(!B.lobotomized && B.can_lobotomize)
|
||||
user << "<span class='warning'>The brain won't fit until you perform a lobotomy!</span>"
|
||||
return
|
||||
else if(!B.can_lobotomize)
|
||||
user << "<span class='warning'>The [B] is incompatible with [src]!</span>"
|
||||
else if(!B.brainmob)
|
||||
user << "\red You aren't sure where this brain came from, but you're pretty sure it's a useless brain."
|
||||
user << "<span class='warning'>You aren't sure where this brain came from, but you're pretty sure it's a useless brain.</span>"
|
||||
return
|
||||
|
||||
for(var/mob/V in viewers(src, null))
|
||||
V.show_message(text("\blue [user] sticks \a [O] into \the [src]."))
|
||||
user.visible_message("<span class='notice'>[user] sticks \a [B] into \the [src].</span>")
|
||||
|
||||
brainmob = O:brainmob
|
||||
O:brainmob = null
|
||||
brainmob = B.brainmob
|
||||
B.brainmob = null
|
||||
brainmob.loc = src
|
||||
brainmob.container = src
|
||||
brainmob.stat = 0
|
||||
@@ -56,7 +59,7 @@
|
||||
living_mob_list += brainmob
|
||||
|
||||
user.drop_item()
|
||||
brainobj = O
|
||||
brainobj = B
|
||||
brainobj.loc = src
|
||||
|
||||
name = "Man-Machine Interface: [brainmob.real_name]"
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
origin_tech = list(TECH_BIO = 3)
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
var/mob/living/carbon/brain/brainmob = null
|
||||
var/lobotomized = 0
|
||||
var/can_lobotomize = 1
|
||||
|
||||
/obj/item/organ/pariah_brain
|
||||
name = "brain remnants"
|
||||
@@ -90,12 +92,44 @@
|
||||
target.key = brainmob.key
|
||||
..()
|
||||
|
||||
/obj/item/organ/brain/proc/lobotomize(mob/user as mob)
|
||||
lobotomized = 1
|
||||
|
||||
if(owner)
|
||||
owner << "<span class='danger'>As part of your brain is drilled out, you feel your past self, your memories, your very being slip away...</span>"
|
||||
owner << "<b>You have been lobotomized. Your memories and your former life have been surgically removed from your brain, and while you are lobotomized you remember nothing that ever came before this moment.</b>"
|
||||
|
||||
else if(brainmob)
|
||||
brainmob << "<span class='danger'>As part of your brain is drilled out, you feel your past self, your memories, your very being slip away...</span>"
|
||||
brainmob << "<b>You have been lobotomized. Your memories and your former life have been surgically removed from your brain, and while you are lobotomized you remember nothing that ever came before this moment.</b>"
|
||||
|
||||
return
|
||||
|
||||
/obj/item/organ/brain/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/surgicaldrill))
|
||||
if(!lobotomized)
|
||||
user.visible_message("<span class='danger'>[user] drills [src] deftly with [W], severing part of the brain!</span>")
|
||||
lobotomize(user)
|
||||
else
|
||||
user << "<span class='notice'>The brain has already been operated on!</span>"
|
||||
..()
|
||||
|
||||
/obj/item/organ/brain/process()
|
||||
..()
|
||||
|
||||
if(!owner)
|
||||
return
|
||||
|
||||
if(lobotomized && (owner.getBrainLoss() < 50)) //lobotomized brains cannot be healed with chemistry. Part of the brain is irrevocably missing. Can be fixed magically with cloning, ofc.
|
||||
owner.setBrainLoss(50)
|
||||
|
||||
/obj/item/organ/brain/slime
|
||||
name = "slime core"
|
||||
desc = "A complex, organic knot of jelly and crystalline particles."
|
||||
robotic = 2
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "green slime extract"
|
||||
can_lobotomize = 0
|
||||
|
||||
/obj/item/organ/brain/golem
|
||||
name = "chelm"
|
||||
@@ -103,3 +137,4 @@
|
||||
robotic = 2
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "scroll"
|
||||
can_lobotomize = 0
|
||||
|
||||
@@ -225,10 +225,9 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
if (speech_sound)
|
||||
sound_vol *= 0.5
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
var/list/listening = list()
|
||||
var/list/listening_obj = list()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
if(T)
|
||||
//make sure the air can transmit speech - speaker's side
|
||||
@@ -241,26 +240,8 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
italics = 1
|
||||
sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact
|
||||
|
||||
var/list/hear = hear(message_range,T)
|
||||
var/list/hearturfs = list()
|
||||
get_mobs_and_objs_in_view_fast(T, message_range, listening, listening_obj)
|
||||
|
||||
for(var/I in hear)
|
||||
if(ismob(I))
|
||||
var/mob/M = I
|
||||
listening += M
|
||||
hearturfs += M.locs[1]
|
||||
else if(isobj(I))
|
||||
var/obj/O = I
|
||||
hearturfs += O.locs[1]
|
||||
listening_obj |= O
|
||||
|
||||
|
||||
for(var/mob/M in player_list)
|
||||
if(src.client && M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS))
|
||||
listening |= M
|
||||
continue
|
||||
if(M.loc && M.locs[1] in hearturfs)
|
||||
listening |= M
|
||||
|
||||
var/speech_bubble_test = say_test(message)
|
||||
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
|
||||
|
||||
@@ -163,6 +163,8 @@ var/list/ai_verbs_default = list(
|
||||
else
|
||||
if (B.brainmob.mind)
|
||||
B.brainmob.mind.transfer_to(src)
|
||||
if(B.brainobj)
|
||||
B.brainobj.lobotomized = 1
|
||||
|
||||
on_mob_init()
|
||||
|
||||
@@ -271,7 +273,7 @@ var/list/ai_verbs_default = list(
|
||||
aiPDA.ownjob = "AI"
|
||||
aiPDA.owner = pickedName
|
||||
aiPDA.name = pickedName + " (" + aiPDA.ownjob + ")"
|
||||
|
||||
|
||||
setup_icon() //this is because the ai custom name is related to the ai name, so, we just call the setup icon after someone named their ai
|
||||
|
||||
/*
|
||||
|
||||
@@ -128,6 +128,8 @@
|
||||
icontype = "Basic"
|
||||
updatename(modtype)
|
||||
updateicon()
|
||||
if(mmi && mmi.brainobj)
|
||||
mmi.brainobj.lobotomized = 1
|
||||
|
||||
radio = new /obj/item/device/radio/borg(src)
|
||||
common_radio = radio
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
//Corgi
|
||||
/mob/living/simple_animal/corgi
|
||||
name = "\improper corgi"
|
||||
name = "corgi"
|
||||
real_name = "corgi"
|
||||
desc = "It's a corgi."
|
||||
icon_state = "corgi"
|
||||
icon_living = "corgi"
|
||||
icon_dead = "corgi_dead"
|
||||
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
|
||||
speak = list("YAP!", "Woof!", "Bark!", "AUUUUUU!")
|
||||
speak_emote = list("barks", "woofs")
|
||||
emote_hear = list("barks", "woofs", "yaps","pants")
|
||||
emote_see = list("shakes its head", "shivers")
|
||||
@@ -19,7 +19,7 @@
|
||||
response_harm = "kicks"
|
||||
see_in_dark = 5
|
||||
mob_size = 5
|
||||
max_nutrition = 250//Dogs are insatiable eating monsters. This scales with their mob size too
|
||||
max_nutrition = 250 //Dogs are insatiable eating monsters. This scales with their mob size too
|
||||
stomach_size_mult = 30
|
||||
seek_speed = 6
|
||||
possession_candidate = 1
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/mob/living/simple_animal/corgi/New()
|
||||
..()
|
||||
nutrition = max_nutrition * 0.3//Ian doesn't start with a full belly so will be hungry at roundstart
|
||||
nutrition = max_nutrition * 0.3 //Ian doesn't start with a full belly so will be hungry at roundstart
|
||||
nutrition_step = mob_size * 0.12
|
||||
|
||||
//IAN! SQUEEEEEEEEE~
|
||||
@@ -55,12 +55,10 @@
|
||||
sleep(1)
|
||||
|
||||
|
||||
|
||||
/mob/living/simple_animal/corgi/beg(var/atom/thing, var/atom/holder)
|
||||
visible_emote("stares at the [thing] that [holder] has with sad puppy eyes.",0)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
|
||||
name = "Corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
//Foxxy
|
||||
/mob/living/simple_animal/corgi/fox
|
||||
name = "fox"
|
||||
real_name = "fox"
|
||||
desc = "It's a fox. I wonder what it says?"
|
||||
icon_state = "fox"
|
||||
icon_living = "fox"
|
||||
icon_dead = "fox_dead"
|
||||
speak = list("Ack-Ack","Ack-Ack-Ack-Ackawoooo","Geckers","Awoo","Tchoff")
|
||||
speak = list("Ack-Ack.", "Ack-Ack-Ack-Ackawoooo!", "Awoo!", "Tchoff.")
|
||||
speak_emote = list("geckers", "barks")
|
||||
emote_hear = list("howls","barks")
|
||||
emote_see = list("shakes its head", "shivers")
|
||||
@@ -18,8 +19,9 @@
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
mob_size = 4
|
||||
|
||||
//Captain fox
|
||||
/mob/living/simple_animal/corgi/fox/Chauncey
|
||||
name = "Chauncey"
|
||||
real_name = "Chauncey"
|
||||
desc = "Chauncey, the Captain's trustworthy fox. I wonder what it says?"
|
||||
|
||||
|
||||
@@ -158,21 +158,26 @@
|
||||
var/range = world.view
|
||||
if(hearing_distance)
|
||||
range = hearing_distance
|
||||
var/list/hear = get_mobs_or_objects_in_view(range,src)
|
||||
|
||||
for(var/I in hear)
|
||||
if(isobj(I))
|
||||
spawn(0)
|
||||
if(I) //It's possible that it could be deleted in the meantime.
|
||||
var/obj/O = I
|
||||
O.show_message( message, 2, deaf_message, 1)
|
||||
else if(ismob(I))
|
||||
var/mob/M = I
|
||||
var/msg = message
|
||||
if(self_message && M==src)
|
||||
msg = self_message
|
||||
M.show_message( msg, 2, deaf_message, 1)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
var/list/mobs = list()
|
||||
var/list/objs = list()
|
||||
get_mobs_and_objs_in_view_fast(T, range, mobs, objs)
|
||||
|
||||
|
||||
for(var/m in mobs)
|
||||
var/mob/M = m
|
||||
if(self_message && M==src)
|
||||
M.show_message(self_message,2,deaf_message,1)
|
||||
continue
|
||||
|
||||
M.show_message(message,2,deaf_message,1)
|
||||
|
||||
|
||||
for(var/o in objs)
|
||||
var/obj/O = o
|
||||
O.show_message(message,2,deaf_message,1)
|
||||
|
||||
/mob/proc/findname(msg)
|
||||
for(var/mob/M in mob_list)
|
||||
|
||||
Reference in New Issue
Block a user