Files
Paradise/code/modules/mob/holder.dm
Krausus b37cecbeae Fixes various runtimes (squashed)
- Fixes runtime in pod lock busters
- Fixes possessed object examination runtime
- Fixes runtime when following a destroyed mob
- Fixes to_chat runtimes from involuntary emotes
- Fixes runtimes from invalid clothing IDs
- Fixes runtime caused by wirecutting non-humans
- Fixes runtime when setting up malf AI antaghuds
- Fixes runtimes in sensory destruction reagents
- Fixes runtime caused by clientless ghosts
- Fixes antag hud runtime in autotraitor generation
- Fixes welding tool shutoff runtime
- Fixes runtime in laptops' welcome program
- Fixes to_chat runtime from mech sound effect
- Fixes runtimes in camera-using NanoUIs
- Fixes to_chat runtimes in resisting held mobs
- Fixes headless mob skeletonizing/husking runtimes
- Fixes non-mob add_logs runtime
2016-07-05 23:30:01 -04:00

104 lines
2.6 KiB
Plaintext

//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/Destroy()
processing_objects.Remove(src)
return ..()
/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()
qdel(src)
/obj/item/weapon/holder/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
for(var/mob/M in src.contents)
M.attackby(W,user, params)
/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)
/obj/item/weapon/holder/emp_act(var/intensity)
for(var/mob/living/M in contents)
M.emp_act(intensity)
/obj/item/weapon/holder/ex_act(var/intensity)
for(var/mob/living/M in contents)
M.ex_act(intensity)
/obj/item/weapon/holder/container_resist(var/mob/living/L)
var/mob/M = src.loc //Get our mob holder (if any).
if(istype(M))
M.unEquip(src)
to_chat(M, "[src] wriggles out of your grip!")
to_chat(L, "You wriggle out of [M]'s grip!")
else if(istype(loc,/obj/item))
to_chat(L, "You struggle free of [loc].")
forceMove(get_turf(src))
if(istype(M))
for(var/atom/A in M.contents)
if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
return
M.status_flags &= ~PASSEMOTES
return
//Mob procs and vars for scooping up
/mob/living/var/holder_type
/mob/living/proc/get_scooped(var/mob/living/carbon/grabber)
if(!holder_type) return
var/obj/item/weapon/holder/H = new holder_type(loc)
src.forceMove(H)
H.name = name
if(istype(H, /obj/item/weapon/holder/mouse)) H.icon_state = icon_state
if(desc) H.desc = desc
H.attack_hand(grabber)
to_chat(grabber, "<span class='notice'>You scoop up \the [src].")
to_chat(src, "<span class='notice'>\The [grabber] scoops you up.</span>")
grabber.status_flags |= PASSEMOTES
return H
//Mob specific holders.
/obj/item/weapon/holder/diona
name = "diona nymph"
desc = "It's a tiny plant critter."
icon_state = "nymph"
/obj/item/weapon/holder/drone
name = "maintenance drone"
desc = "It's a small maintenance robot."
icon_state = "drone"
/obj/item/weapon/holder/pai
name = "pAI"
desc = "It's a little robot."
icon_state = "pai"
/obj/item/weapon/holder/mouse
name = "mouse"
desc = "It's a small, disease-ridden rodent."
icon = 'icons/mob/animal.dmi'
icon_state = "mouse_gray"