mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
size control implant
This commit is contained in:
@@ -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("'" = "",">" = "","<" = "","(" = "",")" = "", "~" = "")
|
||||
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("'" = "",">" = "","<" = "","(" = "",")" = "", "~" = "")
|
||||
message = replace_characters(message, replacechars)
|
||||
var/static/regex/say_in_me = new/regex("(")(.*?)(&#)", "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
|
||||
//////////////////////////////
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user