size control implant

This commit is contained in:
Zap-zapper
2018-12-06 00:17:41 +07:00
parent 4a27ffb35a
commit 3b2258ce38
4 changed files with 109 additions and 0 deletions

View File

@@ -337,6 +337,90 @@ Implant Specifics:<BR>"}
explosion(get_turf(imp_in), -1, -1, 1, 3)
qdel(src)
//////////////////////////////
// Size Control Implant
//////////////////////////////
/obj/item/weapon/implant/sizecontrol
name = "size control implant"
desc = "Implant which allows to control host size via voice commands."
icon_state = "implant_evil"
var/owner
var/active = TRUE
/obj/item/weapon/implant/sizecontrol/get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b>L3-WD Size Controlling Implant<BR>
<b>Life:</b>1-2 weeks after implanting<BR>
<HR>
<b>Function:</b> Resizes the host whenever specific verbal command is received<BR>"}
return dat
/obj/item/weapon/implant/sizecontrol/hear_talk(mob/M, msg)
if(M == imp_in)
return
if(owner)
if(M != owner)
return
if(findtext(msg,"ignore"))
return
var/list/replacechars = list("&#39;" = "",">" = "","<" = "","(" = "",")" = "", "~" = "")
msg = replace_characters(msg, replacechars)
hear(msg)
return
/obj/item/weapon/implant/sizecontrol/see_emote(mob/living/M, message, m_type)
if(M == imp_in)
return
if(owner)
if(M != owner)
return
var/list/replacechars = list("&#39;" = "",">" = "","<" = "","(" = "",")" = "", "~" = "")
message = replace_characters(message, replacechars)
var/static/regex/say_in_me = new/regex("(&#34;)(.*?)(&#)", "g")
while(say_in_me.Find(message))
if(findtext(say_in_me.match,"ignore"))
return
hear(say_in_me.group[2])
/obj/item/weapon/implant/sizecontrol/hear(var/msg)
if (malfunction)
return
if(istype(imp_in, /mob/living))
var/mob/living/H = imp_in
if(findtext(msg,"implant-toggle"))
active = !active
if(active)
if(findtext(msg,"grow"))
H.resize(min(H.size_multiplier*1.5, 2))
else if(findtext(msg,"shrink"))
H.resize(max(H.size_multiplier*0.5, 0.25))
else if(findtext(msg, "resize"))
var/static/regex/size_mult = new/regex("\\d+")
if(size_mult.Find(msg))
var/resizing_value = text2num(size_mult.match)
if(findtext(msg, "centimeter")) //Because metric system rules
H.resize(Clamp(resizing_value/170 , 0.25, 2)) //170 cm is average crewmember, I think
else
H.resize(Clamp(resizing_value , 0.25, 2))
/obj/item/weapon/implant/sizecontrol/post_implant(mob/source, mob/living/user = usr)
if(source != user)
owner = user
/obj/item/weapon/implant/sizecontrol/emp_act(severity)
if(istype(imp_in, /mob/living))
var/newsize = pick(RESIZE_HUGE,RESIZE_BIG,RESIZE_NORMAL,RESIZE_SMALL,RESIZE_TINY,RESIZE_A_HUGEBIG,RESIZE_A_BIGNORMAL,RESIZE_A_NORMALSMALL,RESIZE_A_SMALLTINY)
var/mob/living/H = imp_in
H.resize(newsize)
//////////////////////////////
// Chemical Implant
//////////////////////////////

View File

@@ -88,6 +88,22 @@
update()
return
/obj/item/weapon/implanter/sizecontrol
name = "size control implant"
desc = "Implant which allows to control host size via voice commands."
description_info = {"Only accessable by those who implanted the victim. Self-implanting allows everyone to change host size. The following special commands are available:
'Shrink' - host size decreases.
'Grow' - host size increases.
'Resize (NUMBER)' or 'Resize (NUMBER) centimeter(s)' - for accurate size control.
'Ignore' - keywords in the speech won't have any effect.
'Implant-toggle' - toggles implant."}
/obj/item/weapon/implanter/sizecontrol/New()
src.imp = new /obj/item/weapon/implant/sizecontrol( src )
..()
update()
return
/obj/item/weapon/implanter/adrenalin
name = "implanter-adrenalin"

View File

@@ -221,6 +221,7 @@
prob(4);/obj/item/weapon/storage/pill_bottle/happy,
prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
prob(4);/obj/item/weapon/gun/energy/sizegun,
prob(3);/obj/item/weapon/implanter/sizecontrol,
prob(3);/obj/item/weapon/material/butterfly,
prob(3);/obj/item/weapon/material/butterfly/switchblade,
prob(3);/obj/item/clothing/gloves/knuckledusters,

View File

@@ -13,6 +13,14 @@
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
build_path = /obj/item/weapon/implantcase/backup
/datum/design/item/implant/sizecontrol
name = "Size control implant"
id = "implant_size"
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3)
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "silver" = 3000)
build_path = /obj/item/weapon/implanter/sizecontrol
sort_string = "TAAAA"
/datum/design/item/weapon/sizegun
name = "Size gun"
id = "sizegun"