mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 18:02:57 +00:00
Merge pull request #9658 from Ghommie/Ghommie-cit291
Fixing dogborg sleepers runtimes, how atrocious...
This commit is contained in:
@@ -6,8 +6,7 @@
|
|||||||
icon = 'icons/mob/dogborg.dmi'
|
icon = 'icons/mob/dogborg.dmi'
|
||||||
icon_state = "sleeper"
|
icon_state = "sleeper"
|
||||||
w_class = WEIGHT_CLASS_TINY
|
w_class = WEIGHT_CLASS_TINY
|
||||||
var/mob/living/carbon/patient = null
|
var/mob/living/carbon/patient
|
||||||
var/mob/living/silicon/robot/hound = null
|
|
||||||
var/inject_amount = 10
|
var/inject_amount = 10
|
||||||
var/min_health = -100
|
var/min_health = -100
|
||||||
var/cleaning = FALSE
|
var/cleaning = FALSE
|
||||||
@@ -61,8 +60,18 @@
|
|||||||
/obj/item/dogborg/sleeper/Exit(atom/movable/O)
|
/obj/item/dogborg/sleeper/Exit(atom/movable/O)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
/obj/item/dogborg/sleeper/proc/get_host()
|
||||||
|
if(!loc)
|
||||||
|
return
|
||||||
|
if(iscyborg(loc))
|
||||||
|
return loc
|
||||||
|
else if(iscyborg(loc.loc))
|
||||||
|
return loc.loc //cursed cyborg code
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity)
|
/obj/item/dogborg/sleeper/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity)
|
||||||
hound = loc
|
var/mob/living/silicon/robot/hound = get_host()
|
||||||
|
if(!hound)
|
||||||
|
return
|
||||||
if(!proximity)
|
if(!proximity)
|
||||||
return
|
return
|
||||||
if(!iscarbon(target))
|
if(!iscarbon(target))
|
||||||
@@ -82,7 +91,8 @@
|
|||||||
if(!in_range(src, target)) //Proximity is probably old news by now, do a new check.
|
if(!in_range(src, target)) //Proximity is probably old news by now, do a new check.
|
||||||
return //If they moved away, you can't eat them.
|
return //If they moved away, you can't eat them.
|
||||||
|
|
||||||
if(patient) return //If you try to eat two people at once, you can only eat one.
|
if(patient)
|
||||||
|
return //If you try to eat two people at once, you can only eat one.
|
||||||
|
|
||||||
else //If you don't have someone in you, proceed.
|
else //If you don't have someone in you, proceed.
|
||||||
if(!isjellyperson(target) && ("toxin" in injection_chems))
|
if(!isjellyperson(target) && ("toxin" in injection_chems))
|
||||||
@@ -94,14 +104,17 @@
|
|||||||
target.forceMove(src)
|
target.forceMove(src)
|
||||||
target.reset_perspective(src)
|
target.reset_perspective(src)
|
||||||
target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning.
|
target.ExtinguishMob() //The tongue already puts out fire stacks but being put into the sleeper shouldn't allow you to keep burning.
|
||||||
update_gut()
|
update_gut(hound)
|
||||||
user.visible_message("<span class='warning'>[voracious ? "[hound]'s [src.name] lights up and expands as [target] slips inside into their [src.name]." : "[hound]'s sleeper indicator lights up as [target] is scooped up into [hound.p_their()] [src]."]</span>", \
|
user.visible_message("<span class='warning'>[voracious ? "[hound]'s [src.name] lights up and expands as [target] slips inside into their [src.name]." : "[hound]'s sleeper indicator lights up as [target] is scooped up into [hound.p_their()] [src]."]</span>", \
|
||||||
"<span class='notice'>Your [voracious ? "[src.name] lights up as [target] slips into" : "sleeper indicator light shines brightly as [target] is scooped inside"] your [src]. Life support functions engaged.</span>")
|
"<span class='notice'>Your [voracious ? "[src.name] lights up as [target] slips into" : "sleeper indicator light shines brightly as [target] is scooped inside"] your [src]. Life support functions engaged.</span>")
|
||||||
message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]")
|
message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]")
|
||||||
playsound(hound, 'sound/effects/bin_close.ogg', 100, 1)
|
playsound(hound, 'sound/effects/bin_close.ogg', 100, 1)
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/container_resist(mob/living/user)
|
/obj/item/dogborg/sleeper/container_resist(mob/living/user)
|
||||||
hound = loc
|
var/mob/living/silicon/robot/hound = get_host()
|
||||||
|
if(!hound)
|
||||||
|
go_out(user)
|
||||||
|
return
|
||||||
user.changeNext_move(CLICK_CD_BREAKOUT)
|
user.changeNext_move(CLICK_CD_BREAKOUT)
|
||||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||||
if(user.a_intent == INTENT_HELP)
|
if(user.a_intent == INTENT_HELP)
|
||||||
@@ -113,55 +126,41 @@
|
|||||||
"<span class='notice'>[voracious ? "You start struggling inside of [src]'s tight, flexible confines," : "You start pounding against the metallic walls of [src],"] trying to trigger the release... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
"<span class='notice'>[voracious ? "You start struggling inside of [src]'s tight, flexible confines," : "You start pounding against the metallic walls of [src],"] trying to trigger the release... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
||||||
"<span class='italics'>You hear a [voracious ? "couple of thumps" : "loud banging noise"] coming from within [hound].</span>")
|
"<span class='italics'>You hear a [voracious ? "couple of thumps" : "loud banging noise"] coming from within [hound].</span>")
|
||||||
if(do_after(user, breakout_time, target = src))
|
if(do_after(user, breakout_time, target = src))
|
||||||
if(!user || user.stat != CONSCIOUS || user.loc != src )
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='warning'>[user] successfully broke out of [hound.name]!</span>", \
|
user.visible_message("<span class='warning'>[user] successfully broke out of [hound.name]!</span>", \
|
||||||
"<span class='notice'>You successfully break out of [hound.name]!</span>")
|
"<span class='notice'>You successfully break out of [hound.name]!</span>")
|
||||||
go_out()
|
go_out(user, hound)
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/proc/go_out(var/target)
|
/obj/item/dogborg/sleeper/proc/go_out(atom/movable/target, mob/living/silicon/robot/hound)
|
||||||
hound = loc
|
var/voracious = hound ? TRUE : FALSE
|
||||||
hound.setClickCooldown(50)
|
var/list/targets = target && hound ? list(target) : contents
|
||||||
var/voracious = TRUE
|
if(hound)
|
||||||
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
hound.setClickCooldown(50)
|
||||||
voracious = FALSE
|
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
||||||
else
|
voracious = FALSE
|
||||||
for(var/mob/M in contents)
|
|
||||||
if(!M.client || !(M.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
|
||||||
voracious = FALSE
|
|
||||||
if(length(contents) > 0)
|
|
||||||
hound.visible_message("<span class='warning'>[voracious ? "[hound] empties out [hound.p_their()] contents via [hound.p_their()] release port." : "[hound]'s underside slides open with an audible clunk before [hound.p_their()] [src] flips over, carelessly dumping its contents onto the ground below [hound.p_them()] before closing right back up again."]</span>", \
|
|
||||||
"<span class='notice'>[voracious ? "You empty your contents via your release port." : "You open your sleeper hatch, quickly releasing all of the contents within before closing it again."]</span>")
|
|
||||||
if(target)
|
|
||||||
if(iscarbon(target))
|
|
||||||
var/mob/living/carbon/person = target
|
|
||||||
person.forceMove(get_turf(src))
|
|
||||||
person.reset_perspective()
|
|
||||||
else
|
|
||||||
var/obj/T = target
|
|
||||||
T.loc = hound.loc
|
|
||||||
else
|
else
|
||||||
for(var/C in contents)
|
for(var/mob/M in targets)
|
||||||
if(iscarbon(C))
|
if(!M.client || !(M.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
||||||
var/mob/living/carbon/person = C
|
voracious = FALSE
|
||||||
person.forceMove(get_turf(src))
|
if(length(targets))
|
||||||
person.reset_perspective()
|
if(hound)
|
||||||
else
|
hound.visible_message("<span class='warning'>[voracious ? "[hound] empties out [hound.p_their()] contents via [hound.p_their()] release port." : "[hound]'s underside slides open with an audible clunk before [hound.p_their()] [src] flips over, carelessly dumping its contents onto the ground below [hound.p_them()] before closing right back up again."]</span>", \
|
||||||
var/obj/T = C
|
"<span class='notice'>[voracious ? "You empty your contents via your release port." : "You open your sleeper hatch, quickly releasing all of the contents within before closing it again."]</span>")
|
||||||
T.loc = hound.loc
|
for(var/a in contents)
|
||||||
items_preserved.Cut()
|
var/atom/movable/AM = a
|
||||||
update_gut()
|
AM.forceMove(get_turf(src))
|
||||||
cleaning = FALSE
|
if(ismob(AM))
|
||||||
|
var/mob/M = AM
|
||||||
|
M.reset_perspective()
|
||||||
playsound(loc, voracious ? 'sound/effects/splat.ogg' : 'sound/effects/bin_close.ogg', 50, 1)
|
playsound(loc, voracious ? 'sound/effects/splat.ogg' : 'sound/effects/bin_close.ogg', 50, 1)
|
||||||
|
items_preserved.Cut()
|
||||||
else //You clicked eject with nothing in you, let's just reset stuff to be sure.
|
cleaning = FALSE
|
||||||
items_preserved.Cut()
|
if(hound)
|
||||||
cleaning = FALSE
|
update_gut(hound)
|
||||||
update_gut()
|
|
||||||
|
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/attack_self(mob/user)
|
/obj/item/dogborg/sleeper/attack_self(mob/user)
|
||||||
if(..())
|
. = ..()
|
||||||
|
if(. || !iscyborg(user))
|
||||||
return
|
return
|
||||||
ui_interact(user)
|
ui_interact(user)
|
||||||
|
|
||||||
@@ -219,30 +218,31 @@
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/ui_act(action, params)
|
/obj/item/dogborg/sleeper/ui_act(action, params)
|
||||||
if(..())
|
. = ..()
|
||||||
|
if(. || !iscyborg(usr))
|
||||||
return
|
return
|
||||||
|
|
||||||
switch(action)
|
switch(action)
|
||||||
if("eject")
|
if("eject")
|
||||||
go_out()
|
go_out(null, usr)
|
||||||
. = TRUE
|
. = TRUE
|
||||||
if("inject")
|
if("inject")
|
||||||
var/chem = params["chem"]
|
var/chem = params["chem"]
|
||||||
if(!patient)
|
if(!patient)
|
||||||
return
|
return
|
||||||
inject_chem(chem)
|
inject_chem(chem, usr)
|
||||||
. = TRUE
|
. = TRUE
|
||||||
if("cleaning")
|
if("cleaning")
|
||||||
if(!contents)
|
if(!contents)
|
||||||
to_chat(src, "Your [src] is already cleaned.")
|
to_chat(src, "Your [src] is already cleaned.")
|
||||||
return
|
return
|
||||||
if(patient)
|
if(patient)
|
||||||
to_chat(patient, "<span class='danger'>[hound.name]'s [src] fills with caustic enzymes around you!</span>")
|
to_chat(patient, "<span class='danger'>[usr.name]'s [src] fills with caustic enzymes around you!</span>")
|
||||||
to_chat(src, "<span class='danger'>Cleaning process enabled.</span>")
|
to_chat(src, "<span class='danger'>Cleaning process enabled.</span>")
|
||||||
clean_cycle()
|
clean_cycle(usr)
|
||||||
. = TRUE
|
. = TRUE
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/proc/update_gut()
|
/obj/item/dogborg/sleeper/proc/update_gut(mob/living/silicon/robot/hound)
|
||||||
//Well, we HAD one, what happened to them?
|
//Well, we HAD one, what happened to them?
|
||||||
var/prociconupdate = FALSE
|
var/prociconupdate = FALSE
|
||||||
var/currentenvy = hound.sleeper_nv
|
var/currentenvy = hound.sleeper_nv
|
||||||
@@ -291,7 +291,7 @@
|
|||||||
|
|
||||||
//Update icon and return new patient
|
//Update icon and return new patient
|
||||||
hound.update_icons()
|
hound.update_icons()
|
||||||
return(C)
|
return
|
||||||
|
|
||||||
//Cleaning looks better with red on, even with nobody in it
|
//Cleaning looks better with red on, even with nobody in it
|
||||||
if(cleaning && !patient)
|
if(cleaning && !patient)
|
||||||
@@ -307,8 +307,10 @@
|
|||||||
hound.update_icons()
|
hound.update_icons()
|
||||||
|
|
||||||
//Gurgleborg process
|
//Gurgleborg process
|
||||||
/obj/item/dogborg/sleeper/proc/clean_cycle()
|
/obj/item/dogborg/sleeper/proc/clean_cycle(mob/living/silicon/robot/hound)
|
||||||
//Sanity
|
//Sanity
|
||||||
|
if(!hound)
|
||||||
|
return
|
||||||
for(var/I in items_preserved)
|
for(var/I in items_preserved)
|
||||||
if(!(I in contents))
|
if(!(I in contents))
|
||||||
items_preserved -= I
|
items_preserved -= I
|
||||||
@@ -320,13 +322,12 @@
|
|||||||
if(cleaning_cycles)
|
if(cleaning_cycles)
|
||||||
cleaning_cycles--
|
cleaning_cycles--
|
||||||
cleaning = TRUE
|
cleaning = TRUE
|
||||||
for(var/mob/living/carbon/human/T in (touchable_items))
|
for(var/mob/living/carbon/C in (touchable_items))
|
||||||
if((T.status_flags & GODMODE) || !T.digestable)
|
if((C.status_flags & GODMODE) || !C.digestable)
|
||||||
items_preserved += T
|
items_preserved += C
|
||||||
else
|
else
|
||||||
T.adjustBruteLoss(2)
|
C.adjustBruteLoss(2)
|
||||||
T.adjustFireLoss(3)
|
C.adjustFireLoss(3)
|
||||||
update_gut()
|
|
||||||
if(contents)
|
if(contents)
|
||||||
var/atom/target = pick(touchable_items)
|
var/atom/target = pick(touchable_items)
|
||||||
if(iscarbon(target)) //Handle the target being a mob
|
if(iscarbon(target)) //Handle the target being a mob
|
||||||
@@ -359,7 +360,6 @@
|
|||||||
if(!T.dropItemToGround(W))
|
if(!T.dropItemToGround(W))
|
||||||
qdel(W)
|
qdel(W)
|
||||||
qdel(T)
|
qdel(T)
|
||||||
update_gut()
|
|
||||||
//Handle the target being anything but a mob
|
//Handle the target being anything but a mob
|
||||||
else if(isobj(target))
|
else if(isobj(target))
|
||||||
var/obj/T = target
|
var/obj/T = target
|
||||||
@@ -374,12 +374,10 @@
|
|||||||
cleaning_cycles = initial(cleaning_cycles)
|
cleaning_cycles = initial(cleaning_cycles)
|
||||||
cleaning = FALSE
|
cleaning = FALSE
|
||||||
to_chat(hound, "<span class='notice'>Your [src] chimes it ends its self-cleaning cycle.</span>")//Belly is entirely empty
|
to_chat(hound, "<span class='notice'>Your [src] chimes it ends its self-cleaning cycle.</span>")//Belly is entirely empty
|
||||||
update_gut()
|
|
||||||
|
|
||||||
if(!length(contents))
|
if(!length(contents))
|
||||||
to_chat(hound, "<span class='notice'>Your [src] is now clean. Ending self-cleaning cycle.</span>")
|
to_chat(hound, "<span class='notice'>Your [src] is now clean. Ending self-cleaning cycle.</span>")
|
||||||
cleaning = FALSE
|
cleaning = FALSE
|
||||||
update_gut()
|
|
||||||
|
|
||||||
//sound effects
|
//sound effects
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
@@ -397,13 +395,17 @@
|
|||||||
else if(H in contents)
|
else if(H in contents)
|
||||||
H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
|
H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
|
||||||
|
|
||||||
|
update_gut(hound)
|
||||||
|
|
||||||
if(cleaning)
|
if(cleaning)
|
||||||
addtimer(CALLBACK(src, .proc/clean_cycle), 50)
|
addtimer(CALLBACK(src, .proc/clean_cycle, hound), 50)
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/proc/CheckAccepted(obj/item/I)
|
/obj/item/dogborg/sleeper/proc/CheckAccepted(obj/item/I)
|
||||||
return is_type_in_typecache(I, important_items)
|
return is_type_in_typecache(I, important_items)
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/proc/inject_chem(chem)
|
/obj/item/dogborg/sleeper/proc/inject_chem(chem, mob/living/silicon/robot/hound)
|
||||||
|
if(!hound)
|
||||||
|
return
|
||||||
if(hound.cell.charge <= 800) //This is so borgs don't kill themselves with it. Remember, 750 charge used every injection.
|
if(hound.cell.charge <= 800) //This is so borgs don't kill themselves with it. Remember, 750 charge used every injection.
|
||||||
to_chat(hound, "<span class='notice'>You don't have enough power to synthesize fluids.</span>")
|
to_chat(hound, "<span class='notice'>You don't have enough power to synthesize fluids.</span>")
|
||||||
return
|
return
|
||||||
@@ -438,40 +440,27 @@
|
|||||||
else
|
else
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/K9/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)
|
/obj/item/dogborg/sleeper/K9/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity)
|
||||||
hound = loc
|
var/mob/living/silicon/robot/hound = get_host()
|
||||||
|
if(!hound || !istype(target) || !proximity || target.anchored)
|
||||||
|
return
|
||||||
|
if (!target.devourable)
|
||||||
|
to_chat(user, "The target registers an error code. Unable to insert into [src].")
|
||||||
|
return
|
||||||
|
if(target)
|
||||||
|
to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>")
|
||||||
|
return
|
||||||
|
if(target.buckled)
|
||||||
|
to_chat(user,"<span class='warning'>[target] is buckled and can not be put into your [src].</span>")
|
||||||
|
return
|
||||||
|
user.visible_message("<span class='warning'>[hound.name] is ingesting [target] into their [src].</span>", "<span class='notice'>You start ingesting [target] into your [src.name]...</span>")
|
||||||
|
if(do_after(user, 30, target = target) && !patient && !target.buckled)
|
||||||
|
target.forceMove(src)
|
||||||
|
target.reset_perspective(src)
|
||||||
|
update_gut(hound)
|
||||||
|
user.visible_message("<span class='warning'>[hound.name]'s mobile brig clunks in series as [target] slips inside.</span>", "<span class='notice'>Your mobile brig groans lightly as [target] slips inside.</span>")
|
||||||
|
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots
|
||||||
|
|
||||||
if(!istype(target))
|
|
||||||
return
|
|
||||||
if(!proximity)
|
|
||||||
return
|
|
||||||
if(target.anchored)
|
|
||||||
return
|
|
||||||
if(isobj(target))
|
|
||||||
to_chat(user, "You are above putting such trash inside of yourself.")
|
|
||||||
return
|
|
||||||
if(iscarbon(target))
|
|
||||||
var/mob/living/carbon/brigman = target
|
|
||||||
if (!brigman.devourable)
|
|
||||||
to_chat(user, "The target registers an error code. Unable to insert into [src].")
|
|
||||||
return
|
|
||||||
if(patient)
|
|
||||||
to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>")
|
|
||||||
return
|
|
||||||
if(brigman.buckled)
|
|
||||||
to_chat(user,"<span class='warning'>[brigman] is buckled and can not be put into your [src].</span>")
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='warning'>[hound.name] is ingesting [brigman] into their [src].</span>", "<span class='notice'>You start ingesting [brigman] into your [src.name]...</span>")
|
|
||||||
if(do_after(user, 30, target = brigman) && !patient && !brigman.buckled)
|
|
||||||
if(!in_range(src, brigman)) //Proximity is probably old news by now, do a new check.
|
|
||||||
return //If they moved away, you can't eat them.
|
|
||||||
brigman.forceMove(src)
|
|
||||||
brigman.reset_perspective(src)
|
|
||||||
update_gut()
|
|
||||||
user.visible_message("<span class='warning'>[hound.name]'s mobile brig clunks in series as [brigman] slips inside.</span>", "<span class='notice'>Your mobile brig groans lightly as [brigman] slips inside.</span>")
|
|
||||||
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots
|
|
||||||
return
|
|
||||||
return
|
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/compactor //Janihound gut.
|
/obj/item/dogborg/sleeper/compactor //Janihound gut.
|
||||||
name = "garbage processor"
|
name = "garbage processor"
|
||||||
@@ -489,31 +478,25 @@
|
|||||||
else
|
else
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|
||||||
/obj/item/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS
|
/obj/item/dogborg/sleeper/compactor/afterattack(atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS
|
||||||
hound = loc
|
var/mob/living/silicon/robot/hound = get_host()
|
||||||
var/obj/item/target_obj = target
|
if(!hound || !istype(target) || !proximity || target.anchored)
|
||||||
if(!istype(target))
|
|
||||||
return
|
|
||||||
if(!proximity)
|
|
||||||
return
|
|
||||||
if(target.anchored)
|
|
||||||
return
|
return
|
||||||
if(length(contents) > (max_item_count - 1))
|
if(length(contents) > (max_item_count - 1))
|
||||||
to_chat(user,"<span class='warning'>Your [src] is full. Eject or process contents to continue.</span>")
|
to_chat(user,"<span class='warning'>Your [src] is full. Eject or process contents to continue.</span>")
|
||||||
return
|
return
|
||||||
if(isobj(target))
|
if(isitem(target))
|
||||||
if(CheckAccepted(target))
|
var/obj/item/I = target
|
||||||
to_chat(user,"<span class='warning'>\The [target] registers an error code to your [src]</span>")
|
if(CheckAccepted(I))
|
||||||
|
to_chat(user,"<span class='warning'>[I] registers an error code to your [src]</span>")
|
||||||
return
|
return
|
||||||
if(target_obj.w_class > WEIGHT_CLASS_NORMAL)
|
if(I.w_class > WEIGHT_CLASS_NORMAL)
|
||||||
to_chat(user,"<span class='warning'>\The [target] is too large to fit into your [src]</span>")
|
to_chat(user,"<span class='warning'>[I] is too large to fit into your [src]</span>")
|
||||||
return
|
return
|
||||||
user.visible_message("<span class='warning'>[hound.name] is ingesting [target.name] into their [src.name].</span>", "<span class='notice'>You start ingesting [target] into your [src.name]...</span>")
|
user.visible_message("<span class='warning'>[hound.name] is ingesting [I] into their [src.name].</span>", "<span class='notice'>You start ingesting [target] into your [src.name]...</span>")
|
||||||
if(do_after(user, 15, target = target) && length(contents) < max_item_count)
|
if(do_after(user, 15, target = target) && length(contents) < max_item_count)
|
||||||
if(!in_range(src, target)) //Proximity is probably old news by now, do a new check.
|
I.forceMove(src)
|
||||||
return //If they moved away, you can't eat them. This still applies to items, don't magically eat things I picked up already.
|
I.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [I] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [I] slips inside.</span>")
|
||||||
target.forceMove(src)
|
|
||||||
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [target.name] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [target] slips inside.</span>")
|
|
||||||
playsound(hound, 'sound/machines/disposalflush.ogg', 50, 1)
|
playsound(hound, 'sound/machines/disposalflush.ogg', 50, 1)
|
||||||
if(length(contents) > 11) //grow that tum after a certain junk amount
|
if(length(contents) > 11) //grow that tum after a certain junk amount
|
||||||
hound.sleeper_r = 1
|
hound.sleeper_r = 1
|
||||||
@@ -523,9 +506,9 @@
|
|||||||
hound.update_icons()
|
hound.update_icons()
|
||||||
return
|
return
|
||||||
|
|
||||||
else if(iscarbon(target))
|
if(iscarbon(target) || issilicon(target))
|
||||||
var/mob/living/carbon/trashman = target
|
var/mob/living/trashman = target
|
||||||
if (!trashman.devourable)
|
if(!trashman.devourable)
|
||||||
to_chat(user, "<span class='warning'>[target] registers an error code to your [src]</span>")
|
to_chat(user, "<span class='warning'>[target] registers an error code to your [src]</span>")
|
||||||
return
|
return
|
||||||
if(patient)
|
if(patient)
|
||||||
@@ -536,34 +519,8 @@
|
|||||||
return
|
return
|
||||||
user.visible_message("<span class='warning'>[hound.name] is ingesting [trashman] into their [src].</span>", "<span class='notice'>You start ingesting [trashman] into your [src.name]...</span>")
|
user.visible_message("<span class='warning'>[hound.name] is ingesting [trashman] into their [src].</span>", "<span class='notice'>You start ingesting [trashman] into your [src.name]...</span>")
|
||||||
if(do_after(user, 30, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
if(do_after(user, 30, target = trashman) && !patient && !trashman.buckled && length(contents) < max_item_count)
|
||||||
if(!in_range(src, trashman)) //Proximity is probably old news by now, do a new check.
|
|
||||||
return //If they moved away, you can't eat them.
|
|
||||||
trashman.forceMove(src)
|
trashman.forceMove(src)
|
||||||
trashman.reset_perspective(src)
|
trashman.reset_perspective(src)
|
||||||
update_gut()
|
update_gut()
|
||||||
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
|
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashman] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashman] slips inside.</span>")
|
||||||
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
|
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
|
||||||
return
|
|
||||||
else if(issilicon(target))
|
|
||||||
var/mob/living/silicon/trashbot = target
|
|
||||||
if (!trashbot.devourable)
|
|
||||||
to_chat(user, "<span class='warning'>[target] registers an error code to your [src]</span>")
|
|
||||||
return
|
|
||||||
if(patient)
|
|
||||||
to_chat(user,"<span class='warning'>Your [src] is already occupied.</span>")
|
|
||||||
return
|
|
||||||
if(trashbot.buckled)
|
|
||||||
to_chat(user,"<span class='warning'>[trashbot] is buckled and can not be put into your [src].</span>")
|
|
||||||
return
|
|
||||||
user.visible_message("<span class='warning'>[hound.name] is ingesting [trashbot] into their [src].</span>", "<span class='notice'>You start ingesting [trashbot] into your [src.name]...</span>")
|
|
||||||
if(do_after(user, 30, target = trashbot) && !patient && !trashbot.buckled && length(contents) < max_item_count)
|
|
||||||
if(!in_range(src, trashbot)) //Proximity is probably old news by now, do a new check.
|
|
||||||
return //If they moved away, you can't eat them.
|
|
||||||
trashbot.forceMove(src)
|
|
||||||
trashbot.reset_perspective(src)
|
|
||||||
update_gut()
|
|
||||||
user.visible_message("<span class='warning'>[hound.name]'s garbage processor groans lightly as [trashbot] slips inside.</span>", "<span class='notice'>Your garbage compactor groans lightly as [trashbot] slips inside.</span>")
|
|
||||||
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
|
|
||||||
return
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|||||||
Reference in New Issue
Block a user