Remove remaining arbitrary restrictions on has_fine_manip

This commit removes all (most) of the remaining code limiting xenomorphs
that have has_fine_manipulation on an entirely arbitrary basis. Xenomorphs
with has_fine_manipulation may now interact with NanoUI, and will only
break computers on non-help intent. The can also tear down walls, since
walls used an ishuman check in place of an isAdvancedToolUser check as
they should have.

Minor refactor to machinery.dm as well; Instead of the slightly
(completely) insane attack_hand restriction to humans and silicons (it was
a multi-line IF, why), it now checks user.IsAdvancedToolUser(); This means
restrictions on monkies will actually function properly now.
This commit is contained in:
Tigercat2000
2015-09-30 10:50:10 -07:00
parent 700baff0ff
commit c4fa813331
11 changed files with 37 additions and 30 deletions
@@ -1758,11 +1758,9 @@
return (health <= config.health_threshold_crit && stat == UNCONSCIOUS)
/mob/living/carbon/human/IsAdvancedToolUser(var/silent)
/mob/living/carbon/human/IsAdvancedToolUser()
if(species.has_fine_manipulation)
return 1
if(!silent)
src << "<span class='warning'>You don't have the dexterity to use that!<span>"
return 0
/mob/living/carbon/human/get_permeability_protection()
+8 -12
View File
@@ -18,23 +18,23 @@
var/speak_exclamation = "declares"
var/speak_query = "queries"
var/pose //Yes, now AIs can pose too.
var/sensor_mode = 0 //Determines the current HUD.
var/next_alarm_notice
var/list/datum/alarm/queued_alarms = new()
#define SEC_HUD 1 //Security HUD mode
#define MED_HUD 2 //Medical HUD mode
var/local_transmit //If set, can only speak to others of the same type within a short range.
var/obj/item/device/radio/common_radio
/mob/living/silicon/New()
silicon_mob_list |= src
..()
add_language("Galactic Common")
init_subsystems()
/mob/living/silicon/Destroy()
silicon_mob_list -= src
for(var/datum/alarm_handler/AH in alarm_handlers)
@@ -43,8 +43,8 @@
/mob/living/silicon/proc/SetName(pickedName as text)
real_name = pickedName
name = real_name
name = real_name
/mob/living/silicon/proc/show_laws()
return
@@ -267,9 +267,6 @@
sensor_mode = 0
src << "Sensor augmentations disabled."
/mob/living/silicon/IsAdvancedToolUser()
return 1
/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
if(!next_alarm_notice)
next_alarm_notice = world.time + SecondsToTicks(10)
@@ -310,7 +307,7 @@
reported = 1
src << "<span class='notice'>--- [AH.category] Cleared ---</span>"
src << "\The [A.alarm_name()]."
if(alarm_raised)
src << "<A HREF=?src=\ref[src];showalerts=1>\[Show Alerts\]</A>"
@@ -326,4 +323,3 @@
for(var/obj/machinery/camera/C in A.cameras())
cameratext += "[(cameratext == "")? "" : "|"]<A HREF=?src=\ref[src];switchcamera=\ref[C]>[C.c_tag]</A>"
src << "[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])"
+7
View File
@@ -102,3 +102,10 @@
. = min(., shared_living_nano_distance(src_object))
if(. == STATUS_UPDATE && (TK in mutations)) // If we have telekinesis and remain close enough, allow interaction.
return STATUS_INTERACTIVE
/mob/living/carbon/alien/default_can_use_topic(var/src_object)
. = shared_nano_interaction(src_object)
if(. != STATUS_CLOSE)
. = min(., shared_living_nano_distance(src_object))
if(!IsAdvancedToolUser())
. = STATUS_UPDATE