diff --git a/baystation12.dme b/baystation12.dme index e36147b2c3f..7f1bb73cb7a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -989,6 +989,7 @@ #include "code\modules\mob\abilities.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" +#include "code\modules\mob\holder.dm" #include "code\modules\mob\inventory.dm" #include "code\modules\mob\language.dm" #include "code\modules\mob\login.dm" diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index c33732ed133..07e8d5c6dee 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -41,12 +41,30 @@ var/list/can_see = get_mobs_in_view(1,src) //Allows silicon & mmi mobs carried around to see the emotes of the person carrying them around. can_see |= viewers(src,null) for (var/mob/O in can_see) + + if(O.status_flags & PASSEMOTES) + + for(var/obj/item/weapon/holder/H in O.contents) + H.show_message(message, m_type) + + for(var/mob/living/M in O.contents) + M.show_message(message, m_type) + O.show_message(message, m_type) // Type 2 (Audible) emotes are sent to anyone in hear range // of the *LOCATION* -- this is important for pAIs to be heard else if (m_type & 2) for (var/mob/O in get_mobs_in_view(7,src)) + + if(O.status_flags & PASSEMOTES) + + for(var/obj/item/weapon/holder/H in O.contents) + H.show_message(message, m_type) + + for(var/mob/living/M in O.contents) + M.show_message(message, m_type) + O.show_message(message, m_type) /mob/proc/emote_dead(var/message) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm new file mode 100644 index 00000000000..a31c958b2c6 --- /dev/null +++ b/code/modules/mob/holder.dm @@ -0,0 +1,51 @@ +//Helper object for picking dionaea (and other creatures) up. +/obj/item/weapon/holder + name = "holder" + desc = "You shouldn't ever see this." + icon = 'icons/obj/objects.dmi' + slot_flags = SLOT_HEAD + +/obj/item/weapon/holder/New() + ..() + processing_objects.Add(src) + +/obj/item/weapon/holder/Del() + processing_objects.Remove(src) + ..() + +/obj/item/weapon/holder/process() + + if(istype(loc,/turf) || !(contents.len)) + + for(var/mob/M in contents) + + var/atom/movable/mob_container + mob_container = M + mob_container.forceMove(get_turf(src)) + M.reset_view() + + del(src) + +/obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob) + for(var/mob/M in src.contents) + M.attackby(W,user) + +/obj/item/weapon/holder/proc/show_message(var/message, var/m_type) + for(var/mob/living/M in contents) + M.show_message(message,m_type) + +//Mob specific holders. + +/obj/item/weapon/holder/diona + + name = "diona nymph" + desc = "It's a tiny plant critter." + icon_state = "nymph" + origin_tech = "magnets=3;biotech=5" + +/obj/item/weapon/holder/drone + + name = "maintenance drone" + desc = "It's a small maintenance robot." + icon_state = "drone" + origin_tech = "magnets=3;engineering=5" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/monkey/diona.dm b/code/modules/mob/living/carbon/monkey/diona.dm index 7e6ff87b3dc..c43213c3d40 100644 --- a/code/modules/mob/living/carbon/monkey/diona.dm +++ b/code/modules/mob/living/carbon/monkey/diona.dm @@ -2,45 +2,6 @@ Tiny babby plant critter plus procs. */ -//Helper object for picking dionaea (and other creatures) up. -/obj/item/weapon/holder - name = "holder" - desc = "You shouldn't ever see this." - -/obj/item/weapon/holder/diona - - name = "diona nymph" - desc = "It's a tiny plant critter." - icon = 'icons/obj/objects.dmi' - icon_state = "nymph" - slot_flags = SLOT_HEAD - origin_tech = "magnets=3;biotech=5" - -/obj/item/weapon/holder/New() - ..() - processing_objects.Add(src) - -/obj/item/weapon/holder/Del() - processing_objects.Remove(src) - ..() - -/obj/item/weapon/holder/process() - - if(istype(loc,/turf) || !(contents.len)) - - for(var/mob/M in contents) - - var/atom/movable/mob_container - mob_container = M - mob_container.forceMove(get_turf(src)) - M.reset_view() - - del(src) - -/obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob) - for(var/mob/M in src.contents) - M.attackby(W,user) - //Mob defines. /mob/living/carbon/monkey/diona name = "diona nymph" diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index 80324f18190..4c81b55cb16 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -33,18 +33,6 @@ layer = MOB_LAYER src << text("\blue You have stopped hiding.") -//DRONE PICKUP. -//Item holder. -/obj/item/weapon/holder/drone - - name = "maintenance drone" - desc = "It's a small maintenance robot." - icon = 'icons/obj/objects.dmi' - icon_state = "drone" - slot_flags = SLOT_HEAD - origin_tech = "magnets=3;engineering=5" - - //Actual picking-up event. /mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index d4a669520c1..f4c991332ca 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -395,20 +395,24 @@ mob/living/simple_animal/borer/proc/detatch() if(M in view(1, src)) src << "You wiggle into [M]'s ear." - if(!M.stat) - M << "Something disgusting and slimy wiggles into your ear!" + src.perform_infestation(M) + return + else + src << "They are no longer in range!" + return - src.host = M - src.loc = M +/mob/living/simple_animal/borer/proc/perform_infestation(var/mob/living/carbon/M) + src.host = M + src.loc = M - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - var/datum/organ/external/head = H.get_organ("head") - head.implants += src + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + var/datum/organ/external/head = H.get_organ("head") + head.implants += src - host_brain.name = M.name - host_brain.real_name = M.real_name - host.status_flags |= PASSEMOTES + host_brain.name = M.name + host_brain.real_name = M.real_name + host.status_flags |= PASSEMOTES /mob/living/simple_animal/borer/verb/ventcrawl() set name = "Crawl through Vent"