ABS and sleepers reject non-human mobs (#4433)

* ABS and sleepers reject non-human mobs

* No more slime procreation
This commit is contained in:
Atermonera
2017-12-12 17:27:36 -08:00
committed by Anewbe
parent f32361350b
commit 218ac6e630
2 changed files with 20 additions and 15 deletions

View File

@@ -247,7 +247,7 @@
add_fingerprint(usr) add_fingerprint(usr)
/obj/machinery/sleeper/MouseDrop_T(var/mob/target, var/mob/user) /obj/machinery/sleeper/MouseDrop_T(var/mob/target, var/mob/user)
if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user)|| !ishuman(target)) if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
return return
go_in(target, user) go_in(target, user)
@@ -281,7 +281,9 @@
if(occupant) if(occupant)
to_chat(user, "<span class='warning'>\The [src] is already occupied.</span>") to_chat(user, "<span class='warning'>\The [src] is already occupied.</span>")
return return
if(!ishuman(M))
to_chat(user, "<span class='warning'>\The [src] is not designed for that organism!</span>")
return
if(M == user) if(M == user)
visible_message("\The [user] starts climbing into \the [src].") visible_message("\The [user] starts climbing into \the [src].")
else else

View File

@@ -39,20 +39,23 @@
else if(istype(G, /obj/item/weapon/grab)) else if(istype(G, /obj/item/weapon/grab))
var/obj/item/weapon/grab/H = G var/obj/item/weapon/grab/H = G
if(panel_open) if(panel_open)
user << "<span class='notice'>Close the maintenance panel first.</span>" to_chat(user, "<span class='notice'>Close the maintenance panel first.</span>")
return return
if(!ismob(H.affecting)) if(!ismob(H.affecting))
return return
if(!ishuman(H.affecting))
to_chat(user, "<span class='warning'>\The [src] is not designed for that organism!</span>")
return
if(occupant) if(occupant)
user << "<span class='notice'>The scanner is already occupied!</span>" to_chat(user, "<span class='notice'>\The [src] is already occupied!</span>")
return return
for(var/mob/living/simple_animal/slime/M in range(1, H.affecting)) for(var/mob/living/simple_animal/slime/M in range(1, H.affecting))
if(M.victim == H.affecting) if(M.victim == H.affecting)
user << "<span class='danger'>[H.affecting.name] has a fucking slime attached to them, deal with that first.</span>" to_chat(user, "<span class='danger'>[H.affecting.name] has a slime attached to them, deal with that first.</span>")
return return
var/mob/M = H.affecting var/mob/M = H.affecting
if(M.abiotic()) if(M.abiotic())
user << "<span class='notice'>Subject cannot have abiotic items on.</span>" to_chat(user, "<span class='notice'>Subject cannot have abiotic items on.</span>")
return return
M.forceMove(src) M.forceMove(src)
occupant = M occupant = M
@@ -72,20 +75,20 @@
if(!ishuman(user) && !isrobot(user)) if(!ishuman(user) && !isrobot(user))
return 0 //not a borg or human return 0 //not a borg or human
if(panel_open) if(panel_open)
user << "<span class='notice'>Close the maintenance panel first.</span>" to_chat(user, "<span class='notice'>Close the maintenance panel first.</span>")
return 0 //panel open return 0 //panel open
if(occupant) if(occupant)
user << "<span class='notice'>\The [src] is already occupied.</span>" to_chat(user, "<span class='notice'>\The [src] is already occupied.</span>")
return 0 //occupied return 0 //occupied
if(O.buckled) if(O.buckled)
return 0 return 0
if(O.abiotic()) if(O.abiotic())
user << "<span class='notice'>Subject cannot have abiotic items on.</span>" to_chat(user, "<span class='notice'>Subject cannot have abiotic items on.</span>")
return 0 return 0
for(var/mob/living/simple_animal/slime/M in range(1, O)) for(var/mob/living/simple_animal/slime/M in range(1, O))
if(M.victim == O) if(M.victim == O)
user << "<span class='danger'>[O] has a fucking slime attached to them, deal with that first.</span>" to_chat(user, "<span class='danger'>[O] has a slime attached to them, deal with that first.</span>")
return 0 return 0
if(O == user) if(O == user)
@@ -185,9 +188,9 @@
var/obj/machinery/bodyscanner/C = P.connectable var/obj/machinery/bodyscanner/C = P.connectable
scanner = C scanner = C
C.console = src C.console = src
user << "<span class='warning'> You link the [src] to the [P.connectable]!</span>" to_chat(user, "<span class='warning'> You link the [src] to the [P.connectable]!</span>")
else else
user << "<span class='warning'> You store the [src] in the [P]'s buffer!</span>" to_chat(user, "<span class='warning'> You store the [src] in the [P]'s buffer!</span>")
P.connectable = src P.connectable = src
return return
else else
@@ -240,7 +243,7 @@
return return
if (scanner.panel_open) if (scanner.panel_open)
user << "<span class='notice'>Close the maintenance panel first.</span>" to_chat(user, "<span class='notice'>Close the maintenance panel first.</span>")
return return
if(!scanner) if(!scanner)
@@ -250,7 +253,7 @@
else if(scanner) else if(scanner)
return ui_interact(user) return ui_interact(user)
else else
user << "<span class='warning'>Scanner not found!</span>" to_chat(user, "<span class='warning'>Scanner not found!</span>")
/obj/machinery/body_scanconsole/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) /obj/machinery/body_scanconsole/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/data[0] var/data[0]
@@ -584,4 +587,4 @@
else else
dat = "<font color='red'> Error: No Body Scanner connected.</font>" dat = "<font color='red'> Error: No Body Scanner connected.</font>"
printing_text = dat printing_text = dat