Some KS13 improvements (#46879)

About The Pull Request

Having observed a bit of how people play the derelict drones after #45965, I got a few additions and changes to the derelict to make it more enjoyable.

    Power cable into the AI core/vault area was hard to find under an rwall, have run an additional one into the room to give easier access to pre-smes power.
    Added a derelict drone printer, so more friends can be printed. Starts without materials
    Added mother drone core lawset to secure storage. This was intended in the last PR, but forgotten.
    Added a dronespeak manual that drones can use to teach other drones or silicons the drone language. Works like the codespeak manual.

Why It's Good For The Game

KS13 is frequently made great again.
Changelog

cl Skoglol
tweak: Slight mapping improvement to KS13
add: KS13 now has mother drone board, a dronespeak granter and a drone printer.
/cl
This commit is contained in:
skoglol
2019-10-06 22:36:55 +13:00
committed by oranges
parent 9d84f4890b
commit 46b68598d3
4 changed files with 85 additions and 19 deletions
@@ -164,3 +164,42 @@
if(C.tool_behaviour == TOOL_SCREWDRIVER)
return
..()
// So drones can teach borgs and AI dronespeak. For best effect, combine with mother drone lawset.
/obj/item/dronespeak_manual
name = "dronespeak manual"
desc = "The book's cover reads: \"Understanding Dronespeak - An exercise in futility.\""
icon = 'icons/obj/library.dmi'
icon_state = "book2"
/obj/item/dronespeak_manual/attack_self(mob/living/user)
..()
if(isdrone(user) || issilicon(user))
if(user.has_language(/datum/language/drone))
to_chat(user, "<span class='boldannounce'>You start skimming through [src], but you already know dronespeak.</span>")
else
to_chat(user, "<span class='boldannounce'>You start skimming through [src], and suddenly the drone chittering makes sense.</span>")
user.grant_language(/datum/language/drone)
return
if(user.has_language(/datum/language/drone))
to_chat(user, "<span class='boldannounce'>You start skimming through [src], but you already know dronespeak.</span>")
else
to_chat(user, "<span class='boldannounce'>You start skimming through [src], but you can't make any sense of the contents.</span>")
/obj/item/dronespeak_manual/attack(mob/living/M, mob/living/user)
if(!istype(M) || !istype(user))
return
if(M == user)
attack_self(user)
return
playsound(loc, "punch", 25, TRUE, -1)
if(isdrone(M) || issilicon(M))
if(M.has_language(/datum/language/drone))
M.visible_message("<span class='danger'>[user] beats [M] over the head with [src]!</span>", "<span class='userdanger'>[user] beats you over the head with [src]!</span>", "<span class='hear'>You hear smacking.</span>")
else
M.visible_message("<span class='notice'>[user] teaches [M] by beating [M.p_them()] over the head with [src]!</span>", "<span class='boldnotice'>As [user] hits you with [src], chitters resonate in your mind.</span>", "<span class='hear'>You hear smacking.</span>")
M.grant_language(/datum/language/drone)
return