mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-25 06:07:22 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2018-01-19
# Conflicts: # code/_onclick/hud/hud.dm # code/modules/clothing/glasses/glasses.dm # code/modules/mob/living/carbon/human/update_icons.dm # maps/southern_cross/southern_cross-1.dmm # maps/southern_cross/southern_cross-3.dmm # maps/southern_cross/southern_cross-6.dmm # vorestation.dme
This commit is contained in:
@@ -517,11 +517,15 @@
|
||||
E.state = 2
|
||||
E.connect_to_network()
|
||||
E.active = TRUE
|
||||
|
||||
for(var/obj/machinery/field_generator/F in world)
|
||||
if(istype(get_area(F), /area/space))
|
||||
F.Varedit_start = 1
|
||||
|
||||
for(var/obj/machinery/power/grounding_rod/GR in world)
|
||||
GR.anchored = TRUE
|
||||
GR.update_icon()
|
||||
for(var/obj/machinery/power/tesla_coil/TC in world)
|
||||
TC.anchored = TRUE
|
||||
TC.update_icon()
|
||||
for(var/obj/structure/particle_accelerator/PA in world)
|
||||
PA.anchored = TRUE
|
||||
PA.construction_state = 3
|
||||
@@ -531,25 +535,6 @@
|
||||
PA.construction_state = 3
|
||||
PA.update_icon()
|
||||
|
||||
spawn(30)
|
||||
for(var/obj/machinery/the_singularitygen/G in world)
|
||||
if(G.anchored)
|
||||
var/obj/singularity/S = new /obj/singularity(get_turf(G), 50)
|
||||
spawn(0)
|
||||
qdel(G)
|
||||
S.energy = 1750
|
||||
S.current_size = 7
|
||||
S.icon = 'icons/effects/224x224.dmi'
|
||||
S.icon_state = "singularity_s7"
|
||||
S.pixel_x = -96
|
||||
S.pixel_y = -96
|
||||
S.grav_pull = 0
|
||||
//S.consume_range = 3
|
||||
S.dissipate = 0
|
||||
//S.dissipate_delay = 10
|
||||
//S.dissipate_track = 0
|
||||
//S.dissipate_strength = 10
|
||||
|
||||
for(var/obj/machinery/power/rad_collector/Rad in world)
|
||||
if(Rad.anchored)
|
||||
if(!Rad.P)
|
||||
|
||||
@@ -9,10 +9,19 @@
|
||||
path = /obj/item/weapon/clipboard
|
||||
|
||||
/datum/gear/utility/communicator
|
||||
display_name = "personal communicator"
|
||||
display_name = "communicator selection"
|
||||
path = /obj/item/device/communicator
|
||||
cost = 0
|
||||
|
||||
display_name = "communicator watch"
|
||||
/datum/gear/utility/communicator/New()
|
||||
..()
|
||||
var/list/communicators = list()
|
||||
for(var/communicator in typesof(/obj/item/device/communicator) - list(/obj/item/device/communicator/integrated))
|
||||
var/obj/item/device/communicator_type = communicator
|
||||
communicators[initial(communicator_type.name)] = communicator_type
|
||||
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(communicators))
|
||||
|
||||
/datum/gear/utility/camera
|
||||
display_name = "camera"
|
||||
path = /obj/item/device/camera
|
||||
|
||||
@@ -191,7 +191,7 @@ BLIND // can't see anything
|
||||
vision_flags = SEE_OBJS
|
||||
enables_planes = list(VIS_FULLBRIGHT)
|
||||
|
||||
/obj/item/clothing/glasses/material/New() //VOREStation Edit - There's a Polaris PR for this. Maybe they'll accept someday.
|
||||
/obj/item/clothing/glasses/material/New()
|
||||
..()
|
||||
overlay = global_hud.material
|
||||
|
||||
|
||||
@@ -125,6 +125,42 @@
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/mask/shark
|
||||
name = "shark mask"
|
||||
desc = "A rubber shark mask."
|
||||
icon_state = "shark"
|
||||
flags_inv = HIDEFACE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/mask/dolphin
|
||||
name = "dolphin mask"
|
||||
desc = "A rubber dolphin mask."
|
||||
icon_state = "dolphin"
|
||||
flags_inv = HIDEFACE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/mask/goblin
|
||||
name = "goblin mask"
|
||||
desc = "A rubber goblin mask."
|
||||
icon_state = "goblin"
|
||||
flags_inv = HIDEFACE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/mask/demon
|
||||
name = "demon mask"
|
||||
desc = "A rubber demon mask."
|
||||
icon_state = "demon"
|
||||
flags_inv = HIDEFACE
|
||||
w_class = ITEMSIZE_SMALL
|
||||
siemens_coefficient = 0.9
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
/obj/item/clothing/mask/horsehead
|
||||
name = "horse head mask"
|
||||
desc = "A mask made of soft vinyl and latex, representing the head of a horse."
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/obj/item/clothing/accessory/locket
|
||||
name = "silver locket"
|
||||
desc = "This oval shaped, argentium sterling silver locket hangs on an incredibly fine, refractive string, almost thin as hair and microweaved from links to a deceptive strength, of similar material. The edges are engraved very delicately with an elegant curving design, but overall the main is unmarked and smooth to the touch, leaving room for either remaining as a stolid piece or future alterations. There is an obvious internal place for a picture or lock of some sort, but even behind that is a very thin compartment unhinged with the pinch of a thumb and forefinger."
|
||||
desc = "A small locket of high-quality metal."
|
||||
icon_state = "locket"
|
||||
slot_flags = 0
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
seed_name = "apple"
|
||||
display_name = "apple tree"
|
||||
mutants = list("poisonapple","goldapple")
|
||||
chems = list("nutriment" = list(1,10))
|
||||
chems = list("nutriment" = list(1,10),"applejuice" = list(10,20))
|
||||
kitchen_tag = "apple"
|
||||
|
||||
/datum/seed/apple/New()
|
||||
|
||||
@@ -208,7 +208,7 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
M.Scale(desired_scale)
|
||||
M.Translate(1,-6)
|
||||
ma.transform = M
|
||||
ma.layer = MOB_LAYER -0.1 // Fix for a byond bug where turf entry order no longer matters
|
||||
ma.layer = MOB_LAYER -0.01 // Fix for a byond bug where turf entry order no longer matters
|
||||
else
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(desired_scale)
|
||||
|
||||
@@ -138,6 +138,14 @@
|
||||
..()
|
||||
return
|
||||
|
||||
// Power machinery should also connect/disconnect from the network.
|
||||
/obj/machinery/power/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/wrench/W, var/time = 20)
|
||||
if((. = ..()))
|
||||
if(anchored)
|
||||
connect_to_network()
|
||||
else
|
||||
disconnect_from_network()
|
||||
|
||||
// Used for power spikes by the engine, has specific effects on different machines.
|
||||
/obj/machinery/power/proc/overload(var/obj/machinery/power/source)
|
||||
return
|
||||
|
||||
@@ -8,11 +8,12 @@
|
||||
density = 1
|
||||
use_power = 0
|
||||
var/energy = 0
|
||||
var/creation_type = /obj/singularity
|
||||
|
||||
/obj/machinery/the_singularitygen/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if(src.energy >= 200)
|
||||
new /obj/singularity/(T, 50)
|
||||
new creation_type(T, 50)
|
||||
if(src) qdel(src)
|
||||
|
||||
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
|
||||
|
||||
@@ -29,15 +29,11 @@
|
||||
|
||||
var/chained = 0//Adminbus chain-grab
|
||||
|
||||
/obj/singularity/New(loc, var/starting_energy = 50, var/temp = 0)
|
||||
/obj/singularity/New(loc, var/starting_energy = 50)
|
||||
//CARN: admin-alert for chuckle-fuckery.
|
||||
admin_investigate_setup()
|
||||
energy = starting_energy
|
||||
|
||||
if (temp)
|
||||
spawn (temp)
|
||||
qdel(src)
|
||||
|
||||
..()
|
||||
processing_objects += src
|
||||
for(var/obj/machinery/power/singularity_beacon/singubeacon in machines)
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
/obj/machinery/power/tesla_coil
|
||||
name = "tesla coil"
|
||||
desc = "For the union!"
|
||||
icon = 'icons/obj/tesla_engine/tesla_coil.dmi'
|
||||
icon_state = "coil0"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
|
||||
// Executing a traitor caught releasing tesla was never this fun!
|
||||
can_buckle = TRUE
|
||||
buckle_lying = FALSE
|
||||
|
||||
circuit = /obj/item/weapon/circuitboard/tesla_coil
|
||||
|
||||
var/power_loss = 2
|
||||
var/input_power_multiplier = 1
|
||||
var/zap_cooldown = 100
|
||||
var/last_zap = 0
|
||||
var/datum/wires/tesla_coil/wires = null
|
||||
|
||||
/obj/machinery/power/tesla_coil/New()
|
||||
..()
|
||||
wires = new(src)
|
||||
|
||||
/obj/machinery/power/tesla_coil/initialize()
|
||||
. = ..()
|
||||
default_apply_parts()
|
||||
|
||||
/obj/machinery/power/tesla_coil/Destroy()
|
||||
qdel_null(wires)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/tesla_coil/RefreshParts()
|
||||
var/power_multiplier = 0
|
||||
zap_cooldown = 100
|
||||
for(var/obj/item/weapon/stock_parts/capacitor/C in component_parts)
|
||||
power_multiplier += C.rating
|
||||
zap_cooldown -= (C.rating * 20)
|
||||
input_power_multiplier = power_multiplier
|
||||
|
||||
|
||||
/obj/machinery/power/tesla_coil/update_icon()
|
||||
if(panel_open)
|
||||
icon_state = "coil_open[anchored]"
|
||||
else
|
||||
icon_state = "coil[anchored]"
|
||||
|
||||
/obj/machinery/power/tesla_coil/attackby(obj/item/W, mob/user, params)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
//if(default_deconstruction_screwdriver(user, "coil_open[anchored]", "coil[anchored]", W))
|
||||
if(default_deconstruction_screwdriver(user, W))
|
||||
return
|
||||
if(default_part_replacement(user, W))
|
||||
return
|
||||
if(default_unfasten_wrench(user, W))
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
if(is_wire_tool(W))
|
||||
return wires.Interact(user)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/tesla_coil/attack_hand(mob/user)
|
||||
if(user.a_intent == I_GRAB && user_buckle_mob(user.pulling, user))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/power/tesla_coil/tesla_act(var/power)
|
||||
if(anchored && !panel_open)
|
||||
being_shocked = TRUE
|
||||
//don't lose arc power when it's not connected to anything
|
||||
//please place tesla coils all around the station to maximize effectiveness
|
||||
var/power_produced = powernet ? power / power_loss : power
|
||||
add_avail(power_produced*input_power_multiplier)
|
||||
flick("coilhit", src)
|
||||
playsound(src.loc, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
|
||||
tesla_zap(src, 5, power_produced)
|
||||
//addtimer(CALLBACK(src, .proc/reset_shocked), 10)
|
||||
spawn(10) reset_shocked()
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/power/tesla_coil/proc/zap()
|
||||
if((last_zap + zap_cooldown) > world.time || !powernet)
|
||||
return FALSE
|
||||
last_zap = world.time
|
||||
var/coeff = (20 - ((input_power_multiplier - 1) * 3))
|
||||
coeff = max(coeff, 10)
|
||||
var/power = (powernet.avail/2)
|
||||
draw_power(power)
|
||||
playsound(src.loc, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5)
|
||||
tesla_zap(src, 10, power/(coeff/2))
|
||||
|
||||
/obj/machinery/power/grounding_rod
|
||||
name = "grounding rod"
|
||||
desc = "Keep an area from being fried from Edison's Bane."
|
||||
icon = 'icons/obj/tesla_engine/tesla_coil.dmi'
|
||||
icon_state = "grounding_rod0"
|
||||
anchored = FALSE
|
||||
density = TRUE
|
||||
|
||||
can_buckle = TRUE
|
||||
buckle_lying = FALSE
|
||||
|
||||
/obj/machinery/power/grounding_rod/update_icon()
|
||||
if(panel_open)
|
||||
icon_state = "grounding_rod_open[anchored]"
|
||||
else
|
||||
icon_state = "grounding_rod[anchored]"
|
||||
|
||||
/obj/machinery/power/grounding_rod/attackby(obj/item/W, mob/user, params)
|
||||
//if(default_deconstruction_screwdriver(user, "grounding_rod_open[anchored]", "grounding_rod[anchored]", W))
|
||||
if(default_deconstruction_screwdriver(user, W))
|
||||
return
|
||||
if(default_part_replacement(user, W))
|
||||
return
|
||||
if(default_unfasten_wrench(user, W))
|
||||
return
|
||||
if(default_deconstruction_crowbar(user, W))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/grounding_rod/attack_hand(mob/user)
|
||||
if(user.a_intent == I_GRAB && user_buckle_mob(user.pulling, user))
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/power/grounding_rod/tesla_act(var/power)
|
||||
if(anchored && !panel_open)
|
||||
flick("grounding_rodhit", src)
|
||||
else
|
||||
..()
|
||||
@@ -0,0 +1,298 @@
|
||||
#define TESLA_DEFAULT_POWER 1738260
|
||||
#define TESLA_MINI_POWER 869130
|
||||
|
||||
/obj/singularity/energy_ball
|
||||
name = "energy ball"
|
||||
desc = "An energy ball."
|
||||
icon = 'icons/obj/tesla_engine/energy_ball.dmi'
|
||||
icon_state = "energy_ball"
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
current_size = STAGE_TWO
|
||||
move_self = 1
|
||||
grav_pull = 0
|
||||
contained = 0
|
||||
density = TRUE
|
||||
energy = 0
|
||||
dissipate = 1
|
||||
dissipate_delay = 5
|
||||
dissipate_strength = 1
|
||||
var/list/orbiting_balls = list()
|
||||
var/miniball = FALSE
|
||||
var/produced_power
|
||||
var/energy_to_raise = 32
|
||||
var/energy_to_lower = -20
|
||||
|
||||
/obj/singularity/energy_ball/New(loc, starting_energy = 50, is_miniball = FALSE)
|
||||
..()
|
||||
miniball = is_miniball
|
||||
|
||||
/obj/singularity/energy_ball/initialize()
|
||||
. = ..()
|
||||
if(!miniball)
|
||||
set_light(10, 7, "#EEEEFF")
|
||||
|
||||
/obj/singularity/energy_ball/ex_act(severity, target)
|
||||
return
|
||||
|
||||
/obj/singularity/energy_ball/Destroy()
|
||||
if(orbiting && istype(orbiting.orbiting, /obj/singularity/energy_ball))
|
||||
var/obj/singularity/energy_ball/EB = orbiting.orbiting
|
||||
EB.orbiting_balls -= src
|
||||
|
||||
for(var/ball in orbiting_balls)
|
||||
var/obj/singularity/energy_ball/EB = ball
|
||||
qdel(EB)
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/singularity/energy_ball/admin_investigate_setup()
|
||||
if(miniball)
|
||||
return //don't annnounce miniballs
|
||||
..()
|
||||
|
||||
|
||||
/obj/singularity/energy_ball/process(var/wait = 20)
|
||||
set waitfor = FALSE
|
||||
if(!orbiting)
|
||||
handle_energy()
|
||||
|
||||
move_the_basket_ball(max(wait - 5, 4 + orbiting_balls.len * 1.5))
|
||||
|
||||
playsound(src.loc, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30)
|
||||
|
||||
set_dir(tesla_zap(src.loc, 7, TESLA_DEFAULT_POWER, TRUE))
|
||||
|
||||
for (var/ball in orbiting_balls)
|
||||
var/range = rand(1, Clamp(orbiting_balls.len, 3, 7))
|
||||
tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TRUE)
|
||||
else
|
||||
energy = 0 // ensure we dont have miniballs of miniballs
|
||||
|
||||
/obj/singularity/energy_ball/examine(mob/user)
|
||||
..()
|
||||
if(orbiting_balls.len)
|
||||
to_chat(user, "The amount of orbiting mini-balls is [orbiting_balls.len].")
|
||||
|
||||
|
||||
/obj/singularity/energy_ball/proc/move_the_basket_ball(var/move_amount)
|
||||
//we face the last thing we zapped, so this lets us favor that direction a bit
|
||||
var/move_bias = dir
|
||||
for(var/i in 0 to move_amount)
|
||||
var/move_dir = pick(global.alldirs + move_bias) //ensures large-ball teslas don't just sit around
|
||||
if(target && prob(10))
|
||||
move_dir = get_dir(src,target)
|
||||
var/turf/T = get_step(src, move_dir)
|
||||
if(can_move(T))
|
||||
forceMove(T)
|
||||
set_dir(move_dir)
|
||||
for(var/mob/living/carbon/C in loc)
|
||||
dust_mobs(C)
|
||||
sleep(1) // So movement is smooth
|
||||
|
||||
/obj/singularity/energy_ball/proc/handle_energy()
|
||||
if(energy >= energy_to_raise)
|
||||
energy_to_lower = energy_to_raise - 20
|
||||
energy_to_raise = energy_to_raise * 1.25
|
||||
|
||||
playsound(src.loc, 'sound/effects/lightning_chargeup.ogg', 100, 1, extrarange = 30)
|
||||
//addtimer(CALLBACK(src, .proc/new_mini_ball), 100)
|
||||
spawn(100) new_mini_ball()
|
||||
|
||||
else if(energy < energy_to_lower && orbiting_balls.len)
|
||||
energy_to_raise = energy_to_raise / 1.25
|
||||
energy_to_lower = (energy_to_raise / 1.25) - 20
|
||||
|
||||
var/Orchiectomy_target = pick(orbiting_balls)
|
||||
qdel(Orchiectomy_target)
|
||||
|
||||
else if(orbiting_balls.len)
|
||||
dissipate() //sing code has a much better system.
|
||||
|
||||
/obj/singularity/energy_ball/proc/new_mini_ball()
|
||||
if(!loc)
|
||||
return
|
||||
var/obj/singularity/energy_ball/EB = new(loc, 0, TRUE)
|
||||
|
||||
EB.transform *= pick(0.3, 0.4, 0.5, 0.6, 0.7)
|
||||
var/icon/I = icon(icon,icon_state,dir)
|
||||
|
||||
var/orbitsize = (I.Width() + I.Height()) * pick(0.4, 0.5, 0.6, 0.7, 0.8)
|
||||
orbitsize -= (orbitsize / world.icon_size) * (world.icon_size * 0.25)
|
||||
|
||||
EB.orbit(src, orbitsize, pick(FALSE, TRUE), rand(10, 25), pick(3, 4, 5, 6, 36))
|
||||
|
||||
|
||||
/obj/singularity/energy_ball/Bump(atom/A)
|
||||
dust_mobs(A)
|
||||
|
||||
/obj/singularity/energy_ball/Bumped(atom/movable/AM)
|
||||
dust_mobs(AM)
|
||||
|
||||
/obj/singularity/energy_ball/orbit(obj/singularity/energy_ball/target)
|
||||
if (istype(target))
|
||||
target.orbiting_balls += src
|
||||
//TODO-LESH-DEL global.poi_list -= src
|
||||
target.dissipate_strength = target.orbiting_balls.len
|
||||
|
||||
. = ..()
|
||||
/obj/singularity/energy_ball/stop_orbit()
|
||||
if (orbiting && istype(orbiting.orbiting, /obj/singularity/energy_ball))
|
||||
var/obj/singularity/energy_ball/orbitingball = orbiting.orbiting
|
||||
orbitingball.orbiting_balls -= src
|
||||
orbitingball.dissipate_strength = orbitingball.orbiting_balls.len
|
||||
..()
|
||||
if (!loc && !QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/singularity/energy_ball/proc/dust_mobs(atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(L.incorporeal_move)
|
||||
return
|
||||
if(!iscarbon(A))
|
||||
return
|
||||
for(var/obj/machinery/power/grounding_rod/GR in orange(src, 2))
|
||||
if(GR.anchored)
|
||||
return
|
||||
var/mob/living/carbon/C = A
|
||||
// C.dust() - Changing to do fatal elecrocution instead
|
||||
C.electrocute_act(500, src, def_zone = BP_TORSO)
|
||||
|
||||
/proc/tesla_zap(atom/source, zap_range = 3, power, explosive = FALSE, stun_mobs = TRUE)
|
||||
. = source.dir
|
||||
if(power < 1000)
|
||||
return
|
||||
|
||||
var/closest_dist = 0
|
||||
var/closest_atom
|
||||
var/obj/machinery/power/tesla_coil/closest_tesla_coil
|
||||
var/obj/machinery/power/grounding_rod/closest_grounding_rod
|
||||
var/mob/living/closest_mob
|
||||
var/obj/machinery/closest_machine
|
||||
var/obj/structure/closest_structure
|
||||
var/obj/structure/blob/closest_blob
|
||||
var/static/things_to_shock = typecacheof(list(/obj/machinery, /mob/living, /obj/structure))
|
||||
var/static/blacklisted_tesla_types = typecacheof(list(
|
||||
/obj/machinery/atmospherics,
|
||||
/obj/machinery/power/emitter,
|
||||
/obj/machinery/field_generator,
|
||||
/mob/living/simple_animal,
|
||||
/obj/machinery/door/blast,
|
||||
/obj/machinery/particle_accelerator/control_box,
|
||||
/obj/structure/particle_accelerator/fuel_chamber,
|
||||
/obj/structure/particle_accelerator/particle_emitter/center,
|
||||
/obj/structure/particle_accelerator/particle_emitter/left,
|
||||
/obj/structure/particle_accelerator/particle_emitter/right,
|
||||
/obj/structure/particle_accelerator/power_box,
|
||||
/obj/structure/particle_accelerator/end_cap,
|
||||
/obj/machinery/containment_field,
|
||||
/obj/structure/disposalpipe,
|
||||
/obj/structure/sign,
|
||||
/obj/machinery/gateway,
|
||||
/obj/structure/lattice,
|
||||
/obj/structure/grille,
|
||||
/obj/machinery/the_singularitygen/tesla))
|
||||
|
||||
for(var/A in typecache_filter_multi_list_exclusion(oview(source, zap_range+2), things_to_shock, blacklisted_tesla_types))
|
||||
if(istype(A, /obj/machinery/power/tesla_coil))
|
||||
var/dist = get_dist(source, A)
|
||||
var/obj/machinery/power/tesla_coil/C = A
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !C.being_shocked)
|
||||
closest_dist = dist
|
||||
|
||||
//we use both of these to save on istype and typecasting overhead later on
|
||||
//while still allowing common code to run before hand
|
||||
closest_tesla_coil = C
|
||||
closest_atom = C
|
||||
|
||||
|
||||
else if(closest_tesla_coil)
|
||||
continue //no need checking these other things
|
||||
|
||||
else if(istype(A, /obj/machinery/power/grounding_rod))
|
||||
var/dist = get_dist(source, A)-2
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_grounding_rod))
|
||||
closest_grounding_rod = A
|
||||
closest_atom = A
|
||||
closest_dist = dist
|
||||
|
||||
else if(closest_grounding_rod)
|
||||
continue
|
||||
|
||||
else if(isliving(A))
|
||||
var/dist = get_dist(source, A)
|
||||
var/mob/living/L = A
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_mob) && L.stat != DEAD && !(L.status_flags & GODMODE))
|
||||
closest_mob = L
|
||||
closest_atom = A
|
||||
closest_dist = dist
|
||||
|
||||
else if(closest_mob)
|
||||
continue
|
||||
|
||||
else if(istype(A, /obj/machinery))
|
||||
var/obj/machinery/M = A
|
||||
var/dist = get_dist(source, A)
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !M.being_shocked)
|
||||
closest_machine = M
|
||||
closest_atom = A
|
||||
closest_dist = dist
|
||||
|
||||
else if(closest_mob)
|
||||
continue
|
||||
|
||||
else if(istype(A, /obj/structure/blob))
|
||||
var/obj/structure/blob/B = A
|
||||
var/dist = get_dist(source, A)
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !B.being_shocked)
|
||||
closest_blob = B
|
||||
closest_atom = A
|
||||
closest_dist = dist
|
||||
|
||||
else if(closest_blob)
|
||||
continue
|
||||
|
||||
else if(istype(A, /obj/structure))
|
||||
var/obj/structure/S = A
|
||||
var/dist = get_dist(source, A)
|
||||
if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !S.being_shocked)
|
||||
closest_structure = S
|
||||
closest_atom = A
|
||||
closest_dist = dist
|
||||
|
||||
//Alright, we've done our loop, now lets see if was anything interesting in range
|
||||
if(closest_atom)
|
||||
//common stuff
|
||||
source.Beam(closest_atom, icon_state="lightning[rand(1,12)]", time=5, maxdistance = INFINITY)
|
||||
var/zapdir = get_dir(source, closest_atom)
|
||||
if(zapdir)
|
||||
. = zapdir
|
||||
|
||||
//per type stuff:
|
||||
if(closest_tesla_coil)
|
||||
closest_tesla_coil.tesla_act(power, explosive, stun_mobs)
|
||||
|
||||
else if(closest_grounding_rod)
|
||||
closest_grounding_rod.tesla_act(power, explosive, stun_mobs)
|
||||
|
||||
else if(closest_mob)
|
||||
var/shock_damage = Clamp(round(power/400), 10, 90) + rand(-5, 5)
|
||||
closest_mob.electrocute_act(shock_damage, source, 1/*, tesla_shock = 1, stun = stun_mobs*/)
|
||||
if(issilicon(closest_mob))
|
||||
var/mob/living/silicon/S = closest_mob
|
||||
if(stun_mobs)
|
||||
S.emp_act(3 /*EMP_LIGHT*/)
|
||||
tesla_zap(closest_mob, 7, power / 1.5, explosive, stun_mobs) // metallic folks bounce it further
|
||||
else
|
||||
tesla_zap(closest_mob, 5, power / 1.5, explosive, stun_mobs)
|
||||
|
||||
else if(closest_machine)
|
||||
closest_machine.tesla_act(power, explosive, stun_mobs)
|
||||
|
||||
else if(closest_blob)
|
||||
closest_blob.tesla_act(power, explosive, stun_mobs)
|
||||
|
||||
else if(closest_structure)
|
||||
closest_structure.tesla_act(power, explosive, stun_mobs)
|
||||
@@ -0,0 +1,10 @@
|
||||
/obj/machinery/the_singularitygen/tesla
|
||||
name = "energy ball generator"
|
||||
desc = "Makes the wardenclyffe look like a child's plaything when shot with a particle accelerator."
|
||||
icon = 'icons/obj/tesla_engine/tesla_generator.dmi'
|
||||
icon_state = "TheSingGen"
|
||||
creation_type = /obj/singularity/energy_ball
|
||||
|
||||
/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE)
|
||||
if(explosive)
|
||||
energy += power
|
||||
@@ -0,0 +1,31 @@
|
||||
//////////////////////////
|
||||
// Circuits and Research
|
||||
//////////////////////////
|
||||
|
||||
// Tesla coils are built as machines using a circuit researchable in RnD
|
||||
/obj/item/weapon/circuitboard/tesla_coil
|
||||
name = T_BOARD("tesla coil")
|
||||
build_path = /obj/machinery/power/tesla_coil
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
origin_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
|
||||
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
|
||||
|
||||
/datum/design/circuit/tesla_coil
|
||||
name = "Machine Design (Tesla Coil Board)"
|
||||
desc = "The circuit board for a tesla coil."
|
||||
id = "tesla_coil"
|
||||
build_path = /obj/item/weapon/circuitboard/tesla_coil
|
||||
req_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
|
||||
sort_string = "MAAAC"
|
||||
|
||||
// Grounding rods can be built as machines using a circuit made in an autolathe.
|
||||
/obj/item/weapon/circuitboard/grounding_rod
|
||||
name = T_BOARD("grounding rod")
|
||||
build_path = /obj/machinery/power/grounding_rod
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list()
|
||||
|
||||
/datum/category_item/autolathe/engineering/grounding_rod
|
||||
name = "grounding rod electronics"
|
||||
path = /obj/item/weapon/circuitboard/grounding_rod
|
||||
@@ -0,0 +1,68 @@
|
||||
////////////////////////////////////////
|
||||
// Vars and Default tesla_act behavior
|
||||
////////////////////////////////////////
|
||||
|
||||
/obj
|
||||
var/being_shocked = FALSE
|
||||
|
||||
/obj/proc/tesla_act(var/power)
|
||||
being_shocked = TRUE
|
||||
var/power_bounced = power / 2
|
||||
tesla_zap(src, 3, power_bounced)
|
||||
//addtimer(CALLBACK(src, .proc/reset_shocked), 10)
|
||||
//schedule_task_with_source_in(10, src, .proc/reset_shocked)
|
||||
spawn(10) reset_shocked()
|
||||
|
||||
/obj/proc/reset_shocked()
|
||||
being_shocked = FALSE
|
||||
|
||||
// Overrides for behavior on specific types
|
||||
|
||||
/obj/structure/blob/tesla_act(power)
|
||||
..()
|
||||
adjust_integrity(-power/400)
|
||||
|
||||
/obj/machinery/nuclearbomb/tesla_act(power, explosive)
|
||||
..()
|
||||
if(explosive)
|
||||
qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over
|
||||
|
||||
/obj/machinery/tesla_act(power, explosive = FALSE)
|
||||
..()
|
||||
if(prob(85) && explosive)
|
||||
explosion(loc, 1, 2, 4, /*flame_range = 2,*/ adminlog = FALSE/*, smoke = FALSE*/)
|
||||
else if(prob(50))
|
||||
emp_act(2)
|
||||
else
|
||||
ex_act(2)
|
||||
|
||||
/obj/machinery/camera/tesla_act(var/power)//EMP proof upgrade also makes it tesla immune
|
||||
if(isEmpProof())
|
||||
return
|
||||
..()
|
||||
qdel(src) //to prevent bomb testing camera from exploding over and over forever
|
||||
|
||||
/obj/machinery/light/tesla_act(power, explosive = FALSE)
|
||||
if(explosive)
|
||||
explosion(loc, 0, 0, 0/*, flame_range = 5*/, adminlog = FALSE)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/closet/tesla_act(var/power)
|
||||
..() //extend the zap
|
||||
visible_message("<span class='danger'>[src] is blown apart by the bolt of electricity!</span>", "<span class='danger'>You hear a metallic screeching sound.</span>")
|
||||
dump_contents()
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/tesla_act()
|
||||
..() //extend the zap
|
||||
explode()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -524,6 +524,17 @@
|
||||
glass_name = "lemon juice"
|
||||
glass_desc = "Sour..."
|
||||
|
||||
/datum/reagent/drink/juice/apple
|
||||
name = "Apple Juice"
|
||||
id = "applejuice"
|
||||
description = "The most basic juice."
|
||||
taste_description = "crispness"
|
||||
taste_mult = 1.1
|
||||
color = "#E2A55F"
|
||||
|
||||
glass_name = "apple juice"
|
||||
glass_desc = "An earth favorite."
|
||||
|
||||
/datum/reagent/drink/juice/lime
|
||||
name = "Lime Juice"
|
||||
id = "limejuice"
|
||||
@@ -1327,7 +1338,7 @@
|
||||
|
||||
glass_name = "Ent's Draught"
|
||||
glass_desc = "You can almost smell the tranquility emanating from this."
|
||||
|
||||
|
||||
/datum/reagent/drink/lovepotion
|
||||
name = "Love Potion"
|
||||
id = "lovepotion"
|
||||
@@ -2783,7 +2794,7 @@
|
||||
|
||||
glass_name = "Pisco Sour"
|
||||
glass_desc = "South American bliss, served ice cold."
|
||||
|
||||
|
||||
/datum/reagent/ethanol/coldfront
|
||||
name = "Cold Front"
|
||||
id = "coldfront"
|
||||
@@ -2793,10 +2804,10 @@
|
||||
strength = 30
|
||||
adj_temp = -20
|
||||
targ_temp = 220 //Dangerous to certain races. Drink in moderation.
|
||||
|
||||
|
||||
glass_name = "Cold Front"
|
||||
glass_desc = "Minty, rich, and painfully cold. It's a blizzard in a cup."
|
||||
|
||||
|
||||
/datum/reagent/ethanol/mintjulep
|
||||
name = "Mint Julep"
|
||||
id = "mintjulep"
|
||||
@@ -2805,6 +2816,6 @@
|
||||
color = "#bbfc8a" // rgb(187, 252, 138)
|
||||
strength = 25
|
||||
adj_temp = -5
|
||||
|
||||
|
||||
glass_name = "Mint Julep"
|
||||
glass_desc = "Minty and refreshing, perfect for a hot day."
|
||||
@@ -90,6 +90,9 @@ Drinks Data
|
||||
/datum/reagent/drink/juice/lemon
|
||||
glass_icon_state = "lemonjuice"
|
||||
|
||||
/datum/reagent/drink/juice/apple
|
||||
glass_icon_state = "applejuice"
|
||||
|
||||
/datum/reagent/drink/juice/lime
|
||||
glass_icon_state = "glass_green"
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
var/label_text = ""
|
||||
|
||||
var/list/prefill = null //Reagents to fill the container with on New(), formatted as "reagentID" = quantity
|
||||
|
||||
var/list/can_be_placed_into = list(
|
||||
/obj/machinery/chem_master/,
|
||||
/obj/machinery/chemical_dispenser,
|
||||
@@ -47,6 +49,11 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/New()
|
||||
..()
|
||||
if(LAZYLEN(prefill))
|
||||
for(var/R in prefill)
|
||||
reagents.add_reagent(R,prefill[R])
|
||||
prefill = null
|
||||
update_icon()
|
||||
base_name = name
|
||||
base_desc = desc
|
||||
|
||||
@@ -222,18 +229,14 @@
|
||||
volume = 30
|
||||
w_class = ITEMSIZE_TINY
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,25)
|
||||
possible_transfer_amounts = list(5,10,15,30)
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone/New()
|
||||
..()
|
||||
reagents.add_reagent("cryoxadone", 30)
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
||||
prefill = list("cryoxadone" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric/New()
|
||||
..()
|
||||
reagents.add_reagent("sacid", 60)
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
|
||||
prefill = list("sacid" = 60)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket
|
||||
desc = "It's a bucket."
|
||||
|
||||
@@ -61,11 +61,7 @@
|
||||
desc = "A small bottle. Contains inaprovaline - used to stabilize patients."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline/New()
|
||||
..()
|
||||
reagents.add_reagent("inaprovaline", 60)
|
||||
update_icon()
|
||||
prefill = list("inaprovaline" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin
|
||||
@@ -73,11 +69,7 @@
|
||||
desc = "A small bottle of toxins. Do not drink, it is poisonous."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-3"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin/New()
|
||||
..()
|
||||
reagents.add_reagent("toxin", 60)
|
||||
update_icon()
|
||||
prefill = list("toxin" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
|
||||
@@ -85,23 +77,15 @@
|
||||
desc = "A small bottle of cyanide. Bitter almonds?"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-3"
|
||||
prefill = list("cyanide" = 30) //volume changed to match chloral
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cyanide/New()
|
||||
..()
|
||||
reagents.add_reagent("cyanide", 30) //volume changed to match chloral
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/stoxin
|
||||
name = "soporific bottle"
|
||||
desc = "A small bottle of soporific. Just the fumes make you sleepy."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-3"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/stoxin/New()
|
||||
..()
|
||||
reagents.add_reagent("stoxin", 60)
|
||||
update_icon()
|
||||
prefill = list("stoxin" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate
|
||||
@@ -109,11 +93,7 @@
|
||||
desc = "A small bottle of Choral Hydrate. Mickey's Favorite!"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-3"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate/New()
|
||||
..()
|
||||
reagents.add_reagent("chloralhydrate", 30) //Intentionally low since it is so strong. Still enough to knock someone out.
|
||||
update_icon()
|
||||
prefill = list("chloralhydrate" = 30) //Intentionally low since it is so strong. Still enough to knock someone out.
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin
|
||||
@@ -121,11 +101,7 @@
|
||||
desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/antitoxin/New()
|
||||
..()
|
||||
reagents.add_reagent("anti_toxin", 60)
|
||||
update_icon()
|
||||
prefill = list("anti_toxin" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/mutagen
|
||||
@@ -133,11 +109,7 @@
|
||||
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-1"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/mutagen/New()
|
||||
..()
|
||||
reagents.add_reagent("mutagen", 60)
|
||||
update_icon()
|
||||
prefill = list("mutagen" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
|
||||
@@ -145,11 +117,7 @@
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-1"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ammonia/New()
|
||||
..()
|
||||
reagents.add_reagent("ammonia", 60)
|
||||
update_icon()
|
||||
prefill = list("ammonia" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient
|
||||
@@ -157,11 +125,7 @@
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/eznutrient/New()
|
||||
..()
|
||||
reagents.add_reagent("eznutrient", 60)
|
||||
update_icon()
|
||||
prefill = list("eznutrient" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/left4zed
|
||||
@@ -169,11 +133,7 @@
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/left4zed/New()
|
||||
..()
|
||||
reagents.add_reagent("left4zed", 60)
|
||||
update_icon()
|
||||
prefill = list("left4zed" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robustharvest
|
||||
@@ -181,11 +141,7 @@
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robustharvest/New()
|
||||
..()
|
||||
reagents.add_reagent("robustharvest", 60)
|
||||
update_icon()
|
||||
prefill = list("robustharvest" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
|
||||
@@ -193,23 +149,14 @@
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine/New()
|
||||
..()
|
||||
reagents.add_reagent("diethylamine", 60)
|
||||
update_icon()
|
||||
|
||||
prefill = list("diethylamine" = 60)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid
|
||||
name = "Polytrinic Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Polytrinic Acid"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pacid/New()
|
||||
..()
|
||||
reagents.add_reagent("pacid", 60)
|
||||
update_icon()
|
||||
prefill = list("pacid" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
|
||||
@@ -217,12 +164,7 @@
|
||||
desc = "A small bottle. Contains the liquid essence of the gods."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "holyflask"
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine/New()
|
||||
..()
|
||||
reagents.add_reagent("adminordrazine", 60)
|
||||
update_icon()
|
||||
prefill = list("adminordrazine" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
|
||||
@@ -230,11 +172,7 @@
|
||||
desc = "A small bottle. Contains hot sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin/New()
|
||||
..()
|
||||
reagents.add_reagent("capsaicin", 60)
|
||||
update_icon()
|
||||
prefill = list("capsaicin" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
|
||||
@@ -242,8 +180,4 @@
|
||||
desc = "A small bottle. Contains cold sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil/New()
|
||||
..()
|
||||
reagents.add_reagent("frostoil", 60)
|
||||
update_icon()
|
||||
prefill = list("frostoil" = 60)
|
||||
|
||||
@@ -13,11 +13,7 @@
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
reagent = "inaprovaline"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline/New()
|
||||
..()
|
||||
reagents.add_reagent("inaprovaline", 60)
|
||||
update_icon()
|
||||
prefill = list("inaprovaline" = 60)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin
|
||||
@@ -26,9 +22,4 @@
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
reagent = "anti_toxin"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin/New()
|
||||
..()
|
||||
reagents.add_reagent("anti_toxin", 60)
|
||||
update_icon()
|
||||
|
||||
prefill = list("anti_toxin" = 60)
|
||||
|
||||
@@ -141,11 +141,7 @@
|
||||
desc = "A small bottle. Contains some really weird liquid metal."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/metamorphic/New()
|
||||
..()
|
||||
reagents.add_reagent("metamorphic", 60)
|
||||
update_icon()
|
||||
prefill = list("metamorphic" = 60)
|
||||
|
||||
|
||||
// This is kind of a waste since iron is in the chem dispenser but it would be inconsistent if this wasn't here.
|
||||
@@ -216,11 +212,7 @@
|
||||
desc = "A small bottle. Contains some really weird liquid metal."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle-4"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/binding/New()
|
||||
..()
|
||||
reagents.add_reagent("binding", 60)
|
||||
update_icon()
|
||||
prefill = list("binding" = 60)
|
||||
|
||||
|
||||
/datum/chemical_reaction/binding
|
||||
|
||||
Reference in New Issue
Block a user