From 7505061f4a2de0b370c16cb5e147af0879ae0ef6 Mon Sep 17 00:00:00 2001 From: LorenLuke Date: Sat, 15 Apr 2017 13:59:54 -0700 Subject: [PATCH 1/2] Fixes ventcrawling for spiderbots/implants/etc. --- code/modules/ventcrawl/ventcrawl.dm | 41 +++++++++++++---------- html/changelogs/LorenLuke - Ventcrawl.yml | 36 ++++++++++++++++++++ 2 files changed, 60 insertions(+), 17 deletions(-) create mode 100644 html/changelogs/LorenLuke - Ventcrawl.yml diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index 5c2db9f3deb..ea8acf7600f 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -44,26 +44,33 @@ var/list/ventcrawl_machinery = list( /mob/living/proc/is_allowed_vent_crawl_item(var/obj/item/carried_item) if(carried_item == ability_master) return 1 + var/list/allowed = list() + for(var/type in can_enter_vent_with) - if(istype(carried_item, can_enter_vent_with)) - return get_inventory_slot(carried_item) == 0 + var/list/types = typesof(type) + allowed += types + + if(carried_item.type in allowed) + if(get_inventory_slot(carried_item) == 0) + return 1 + + if(istype(src, /mob/living/carbon)) + var/mob/living/carbon/C = src + if(carried_item in C.internal_organs) + return 1 + + if(istype(src, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = C + if(carried_item in H.organs) + return 1 + + else if(istype(src, /mob/living/simple_animal/spiderbot)) + var/mob/living/simple_animal/spiderbot/S = src + if(carried_item == S.held_item) + return 1 + return 0 -/mob/living/carbon/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item in internal_organs) - return 1 - return ..() - -/mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item in organs) - return 1 - return ..() - -/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item == held_item) - return 1 - return ..() - /mob/living/proc/ventcrawl_carry() for(var/atom/A in contents) if(!is_allowed_vent_crawl_item(A)) diff --git a/html/changelogs/LorenLuke - Ventcrawl.yml b/html/changelogs/LorenLuke - Ventcrawl.yml new file mode 100644 index 00000000000..ad43257fdc6 --- /dev/null +++ b/html/changelogs/LorenLuke - Ventcrawl.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: LorenLuke + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixes ventcrawling for spiderbots/implants/etc." From 8ed7b72aed302414948c9f4f7a50bcb9eee6a8e3 Mon Sep 17 00:00:00 2001 From: LorenLuke Date: Wed, 19 Apr 2017 10:10:56 -0700 Subject: [PATCH 2/2] Splits item check back into mob-specific procs. --- code/modules/ventcrawl/ventcrawl.dm | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm index ea8acf7600f..1ece0248335 100644 --- a/code/modules/ventcrawl/ventcrawl.dm +++ b/code/modules/ventcrawl/ventcrawl.dm @@ -44,8 +44,8 @@ var/list/ventcrawl_machinery = list( /mob/living/proc/is_allowed_vent_crawl_item(var/obj/item/carried_item) if(carried_item == ability_master) return 1 - var/list/allowed = list() + var/list/allowed = list() for(var/type in can_enter_vent_with) var/list/types = typesof(type) allowed += types @@ -54,22 +54,20 @@ var/list/ventcrawl_machinery = list( if(get_inventory_slot(carried_item) == 0) return 1 - if(istype(src, /mob/living/carbon)) - var/mob/living/carbon/C = src - if(carried_item in C.internal_organs) - return 1 +/mob/living/carbon/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(carried_item in internal_organs) + return 1 + return ..() - if(istype(src, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = C - if(carried_item in H.organs) - return 1 +/mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(carried_item in organs) + return 1 + return ..() - else if(istype(src, /mob/living/simple_animal/spiderbot)) - var/mob/living/simple_animal/spiderbot/S = src - if(carried_item == S.held_item) - return 1 - - return 0 +/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(carried_item == held_item) + return 1 + return ..() /mob/living/proc/ventcrawl_carry() for(var/atom/A in contents)