Files
goonstation-2016/code/obj/ToSplit/vials.dm
2016-03-06 20:52:14 +01:00

319 lines
7.7 KiB
Plaintext

//NOTE:
//This file contains the worst code ive ever written.
//I dont fucking care. It looks pretty awesome.
//////////////////////////////////////////////////////////
/obj/dummy/liquid
name = "water"
icon = 'icons/effects/effects.dmi'
icon_state = "nothing"
invisibility = 101
var/canmove = 1
density = 0
anchored = 1
//
/obj/item/reagent_containers/glass/vial
name = "glass test tube"
icon = 'icons/obj/chemical.dmi'
desc = "an incredibly fragile glass test tube"
icon_state = "vial0"
item_state = "vial"
throwforce = 3.0
throw_speed = 1
throw_range = 8
force = 3.0
w_class = 1.0
amount_per_transfer_from_this = 5
flags = FPRINT | TABLEPASS | OPENCONTAINER
var/contained = null
New()
var/datum/reagents/R = new/datum/reagents(30)
reagents = R
R.my_atom = src
/obj/item/reagent_containers/glass/vial/green
name = "glass test tube"
icon = 'icons/obj/chemical.dmi'
desc = "a glass vial filled with a strange green liquid"
icon_state = "vialgreen"
item_state = "vialgreen"
contained = /datum/ailment/disease/gbs
/obj/item/reagent_containers/glass/blue
name = "glass test tube"
icon = 'icons/obj/chemical.dmi'
desc = "a glass vial filled with a shimmering blue liquid"
icon_state = "vialblue"
item_state = "vialblue"
//This isn't a disease! I should make it one
// contained = new
//////////////////////////////////////////////////////////
///////////////////////////////////////////////////////***
/obj/item/reagent_containers/glass/vial/throw_impact(atom/hit_atom)
..(hit_atom)
src.shatter()
////////////////////////////////////////////////////////////////Generic Vial Shatter
/obj/item/reagent_containers/glass/vial/proc/shatter()
var/A = src
var/atom/sourceloc = get_turf(src.loc)
src = null
qdel(A)
var/obj/overlay/O = new /obj/overlay( sourceloc )
var/obj/overlay/O2 = new /obj/overlay( sourceloc )
O.name = "green liquid"
O.density = 0
O.anchored = 1
O.icon = 'icons/effects/effects.dmi'
O.icon_state = "greenshatter"
O2.name = "broken bits of glass"
O2.density = 0
O2.anchored = 1
O2.icon = 'icons/obj/objects.dmi'
O2.icon_state = "shards"
if(istype(src.contained,/datum/ailment/))
for(var/mob/living/carbon/H in view(5, sourceloc))
H.contract_disease(src.contained,null,null,0)
var/i
for(i=0, i<5, i++)
for(var/mob/living/carbon/H in view(5, sourceloc))
H.contract_disease(src.contained,null,null,0)
sleep(20)
flick("greenshatter2",O)
O.icon_state = "nothing"
sleep(5)
qdel(O)
return
//Generic Vial Drink
/obj/item/reagent_containers/glass/vial/proc/drink(user)
var/A = src
src = null
qdel(A)
if(istype(src.contained,/datum/ailment/))
var/mob/living/M = user
switch(pick(1,2))
if(1)
M.weakened += 5
M.contract_disease(src.contained,null,null,1)
if(2)
spawn(200)
M.contract_disease(src.contained,null,null,1)
return
/obj/item/reagent_containers/glass/vial/blue/drink(user)
var/A = src
var/atom/sourceloc = get_turf(src.loc)
src = null
qdel(A)
var/obj/overlay/O = new /obj/overlay( sourceloc )
var/obj/overlay/O2 = new /obj/overlay( sourceloc )
O.name = "green liquid"
O.density = 0
O.anchored = 1
O.icon = 'icons/effects/effects.dmi'
O.icon_state = "blueshatter"
O2.name = "broken bits of glass"
O2.density = 0
O2.anchored = 1
O2.icon = 'icons/obj/objects.dmi'
O2.icon_state = "shards"
liquify(user)
sleep(20)
flick("blueshatter2",O)
O.icon_state = "nothing"
sleep(5)
qdel(O)
/obj/item/reagent_containers/glass/vial/blue/shatter()
var/A = src
var/atom/sourceloc = get_turf(src.loc)
src = null
qdel(A)
var/obj/overlay/O = new /obj/overlay( sourceloc )
var/obj/overlay/O2 = new /obj/overlay( sourceloc )
O.name = "green liquid"
O.density = 0
O.anchored = 1
O.icon = 'icons/effects/effects.dmi'
O.icon_state = "blueshatter"
O2.name = "broken bits of glass"
O2.density = 0
O2.anchored = 1
O2.icon = 'icons/obj/objects.dmi'
O2.icon_state = "shards"
for(var/mob/living/carbon/human/H in view(1, sourceloc))
liquify(H)
sleep(20)
flick("blueshatter2",O)
O.icon_state = "nothing"
sleep(5)
qdel(O)
/mob/proc/drop_vial()
var/obj/item/reagent_containers/glass/vial/W = src.equipped()
if (W)
u_equip(W)
if (W)
W.set_loc(src.loc)
// W.dropped(src) Get rid of this as it would smash a vial
if (W)
W.layer = initial(W.layer)
var/turf/T = get_turf(src.loc)
T.Entered(W)
return
/proc/liquify(var/mob/H, time = 150)
if(H.stat) return
spawn(0)
var/mobloc = get_turf(H.loc)
var/obj/dummy/liquid/holder = new /obj/dummy/liquid( mobloc )
var/atom/movable/overlay/animation = new /atom/movable/overlay( mobloc )
animation.name = "water"
animation.density = 0
animation.anchored = 1
animation.icon = 'icons/mob/mob.dmi'
animation.icon_state = "liquify"
animation.layer = MOB_EFFECT_LAYER
animation.master = holder
flick("liquify",animation)
H.canmove = 0
sleep(4)
H.set_loc(holder)
H.canmove = 1
spawn(0)
var/i
for(i=0, i<10, i++)
spawn(0)
var/obj/effects/water/water1 = new /obj/effects/water( mobloc )
var/direction = pick(alldirs)
water1.name = "water"
water1.density = 0
water1.icon = 'icons/effects/water.dmi'
water1.icon_state = "extinguish"
for(i=0, i<pick(1,2,3), i++)
sleep(5)
step(water1,direction)
spawn(20)
qdel(water1)
sleep(time)
H.canmove = 0
mobloc = get_turf(H.loc)
animation.set_loc(mobloc)
var/b
for(b=0, b<10, b++)
spawn(0)
var/turf = mobloc
var/direction = pick(alldirs)
var/c
for(c=0, c<pick(1,2,3), c++)
turf = get_step(turf,direction)
var/obj/effects/water/water2 = new /obj/effects/water( turf )
water2.name = "water"
water2.icon = 'icons/effects/water.dmi'
water2.icon_state = "extinguish"
walk_to(water2,mobloc,-1,5)
sleep(20)
qdel(water2)
sleep(20)
flick("reappear",animation)
sleep(5)
H.set_loc(mobloc)
H.canmove = 1
qdel(animation)
qdel(holder)
/obj/dummy/liquid/relaymove(var/mob/user, direction)
if (!src.canmove) return
//writing my own movement because step is broken.
switch(direction)
if(NORTH)
src.y++
if(SOUTH)
src.y--
if(EAST)
src.x++
if(WEST)
src.x--
if(NORTHEAST)
src.y++
src.x++
if(NORTHWEST)
src.y++
src.x--
if(SOUTHEAST)
src.y--
src.x++
if(SOUTHWEST)
src.y--
src.x--
src.canmove = 0
spawn(20) canmove = 1
/obj/dummy/liquid/ex_act(blah)
return
/obj/dummy/liquid/bullet_act(blah,blah)
return
///atom/relaymove - change to obj to restore
/obj/relaymove(var/mob/user, direction) //testing something
//if(anchored) return
//step(src, direction)
/////////////////////////////////////////////////////blue
/*
/obj/testtuberack
name = "test tube rack"
icon = 'icons/obj/items.dmi'
icon_state = "clipboard00"
attackby(obj/item/W, mob/user as mob)
if (src.contents.len >= 7)
boutput(user, "<span style=\"color:blue\">The test tube rack is full</span>")
return
if(istype(W, /obj/item/reagent_containers/glass/vial))
boutput(user, "<span style=\"color:blue\">You insert the test tube into the test tube rack</span>")
user.drop_vial()
W.set_loc(src)
return
..()
return
attack_hand(mob/user as mob)
if(src.contents.len > 0)
boutput(user, "<span style=\"color:blue\">You slide a random test tube carefully out of the rack</span>")
var/obj/item/reagent_containers/glass/vial/V = pick(src.contents)
src.contents -= V
V.set_loc(src.loc)
else
boutput(user, "<span style=\"color:blue\">There are no test tubes in the rack</span>")
return
*/