Drone Uprising Event (#10766)

This commit is contained in:
Geeves
2020-12-19 13:59:42 +01:00
committed by GitHub
parent 0a759d3666
commit e1deb0a277
7 changed files with 109 additions and 1 deletions
@@ -0,0 +1,55 @@
/mob/living/simple_animal/hostile/rogue_drone
name = "maintenance drone"
desc = "A small robot. It looks angry."
icon = 'icons/mob/robots.dmi'
icon_state = "repairbot"
blood_type = "#000000"
speak = list("Removing organic waste.", "Pest control in progress.", "Engaging self-preservation protocols.", "Moving to eject unauthorized personnel.")
speak_emote = list("blares", "buzzes", "beeps")
speak_chance = 1
density = FALSE
health = 50
maxHealth = 50
melee_damage_lower = 5
melee_damage_upper = 8
attacktext = "sliced"
faction = "silicon"
min_oxy = 0
minbodytemp = 0
speed = 4
mob_size = MOB_TINY
var/image/eye_overlay
/mob/living/simple_animal/hostile/rogue_drone/Initialize()
. = ..()
name = "[initial(name)] ([rand(100, 999)])"
eye_overlay = image(icon, "eyes-[icon_state]-emag", layer = EFFECTS_ABOVE_LIGHTING_LAYER)
eye_overlay.appearance_flags = KEEP_APART
add_overlay(eye_overlay)
/mob/living/simple_animal/hostile/rogue_drone/CanPass(atom/movable/mover, turf/target, height, air_group)
. = ..()
if(.)
if(istype(mover, /mob/living/simple_animal/hostile/rogue_drone))
return FALSE
/mob/living/simple_animal/hostile/rogue_drone/death()
..(null, "blows apart!")
var/T = get_turf(src)
new /obj/effect/gibspawner/robot(T)
spark(T, 1, alldirs)
qdel(src)
/mob/living/simple_animal/hostile/rogue_drone/validator_living(var/mob/living/L, var/atom/current)
. = ..()
if(.)
if(issilicon(L))
return FALSE
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(H.isSynthetic() && !H.isShell())
return FALSE
if(istype(H.head, /obj/item/holder/drone))
return FALSE
if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg) && istype(H.head, /obj/item/clothing/head/cardborg))
return FALSE
+3
View File
@@ -19,6 +19,9 @@
/mob/living/carbon/human/proc/isFBP()
return species && (species.appearance_flags & HAS_FBP)
/mob/living/carbon/human/proc/isShell()
return species && (species.name in list(SPECIES_IPC_SHELL, SPECIES_IPC_SHELL_ROGUE))
/proc/isMMI(A)
if(isbrain(A))
var/mob/living/carbon/brain/B = A