mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-21 04:06:55 +01:00
fix conflicts
This commit is contained in:
@@ -397,6 +397,7 @@
|
||||
|
||||
/datum/gear/suit/teshcoat/New()
|
||||
..()
|
||||
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/suit/teshcoatwhite
|
||||
@@ -417,4 +418,17 @@
|
||||
|
||||
/datum/gear/accessory/teshneckscarf/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/shoes/toelessjack
|
||||
display_name = "toe-less jackboots"
|
||||
path = /obj/item/clothing/shoes/boots/jackboots/toeless
|
||||
|
||||
|
||||
/datum/gear/shoes/toelessknee
|
||||
display_name = "toe-less jackboots, knee-length"
|
||||
path = /obj/item/clothing/shoes/boots/jackboots/toeless/knee
|
||||
|
||||
/datum/gear/shoes/toelessthigh
|
||||
display_name = "toe-less jackboots, thigh-length"
|
||||
path = /obj/item/clothing/shoes/boots/jackboots/toeless/thigh
|
||||
@@ -42,6 +42,23 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0)
|
||||
|
||||
//Turn it into a hailer mask
|
||||
/obj/item/clothing/mask/gas/half/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/device/hailer))
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
user.drop_item(src)
|
||||
var/obj/item/clothing/mask/gas/sechailer/N = new /obj/item/clothing/mask/gas/sechailer(src.loc)
|
||||
N.fingerprints = src.fingerprints
|
||||
N.fingerprintshidden = src.fingerprintshidden
|
||||
N.fingerprintslast = src.fingerprintslast
|
||||
N.suit_fibers = src.suit_fibers
|
||||
N.hailer = I
|
||||
I.loc = N
|
||||
if(!isturf(N.loc))
|
||||
user.put_in_hands(N)
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
//Plague Dr suit can be found in clothing/suits/bio.dm
|
||||
/obj/item/clothing/mask/gas/plaguedoctor
|
||||
name = "plague doctor mask"
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
/obj/item/clothing/mask/gas/sechailer
|
||||
name = "hailer face mask"
|
||||
desc = "A compact, durable gas mask that can be connected to an air supply. This one possesses a security hailer."
|
||||
description_info = "This mask has a hailer attached, you can activate it on the button or use the Halt! verb, for switching phrases you can alt+click it or change it using the change phrase verb."
|
||||
icon_state = "halfgas"
|
||||
armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 55, rad = 0)
|
||||
action_button_name = "HALT!"
|
||||
body_parts_covered = FACE
|
||||
var/obj/item/device/hailer/hailer
|
||||
var/cooldown = 0
|
||||
var/phrase = 1
|
||||
var/aggressiveness = 1
|
||||
var/safety = 1
|
||||
var/list/phrase_list = list(
|
||||
"halt" = "HALT! HALT! HALT! HALT!",
|
||||
"bobby" = "Stop in the name of the Law.",
|
||||
"compliance" = "Compliance is in your best interest.",
|
||||
"justice" = "Prepare for justice!",
|
||||
"running" = "Running will only increase your sentence.",
|
||||
"dontmove" = "Don't move, Creep!",
|
||||
"floor" = "Down on the floor, Creep!",
|
||||
"robocop" = "Dead or alive you're coming with me.",
|
||||
"god" = "God made today for the crooks we could not catch yesterday.",
|
||||
"freeze" = "Freeze, Scum Bag!",
|
||||
"imperial" = "Stop right there, criminal scum!",
|
||||
"bash" = "Stop or I'll bash you.",
|
||||
"harry" = "Go ahead, make my day.",
|
||||
"asshole" = "Stop breaking the law, asshole.",
|
||||
"stfu" = "You have the right to shut the fuck up",
|
||||
"shutup" = "Shut up crime!",
|
||||
"super" = "Face the wrath of the golden bolt.",
|
||||
"dredd" = "I am, the LAW!"
|
||||
)
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat/hos
|
||||
name = "\improper HOS SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a tan stripe."
|
||||
icon_state = "hosmask"
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat/warden
|
||||
name = "\improper Warden SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000. It has a blue stripe."
|
||||
icon_state = "wardenmask"
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/swat
|
||||
name = "\improper SWAT mask"
|
||||
desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000."
|
||||
icon_state = "officermask"
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
flags_inv = HIDEFACE|BLOCKHAIR
|
||||
aggressiveness = 3
|
||||
phrase = 12
|
||||
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/ui_action_click()
|
||||
halt()
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/AltClick(mob/user)
|
||||
selectphrase()
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/verb/selectphrase()
|
||||
set name = "Select gas mask phrase"
|
||||
set category = "Object"
|
||||
set desc = "Alter the message shouted by your complionator gas mask."
|
||||
|
||||
var/key = phrase_list[phrase]
|
||||
var/message = phrase_list[key]
|
||||
|
||||
if (!safety)
|
||||
to_chat(usr, "<span class='notice'>You set the restrictor to: FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT.</span>")
|
||||
return
|
||||
switch(aggressiveness)
|
||||
if(1)
|
||||
phrase = (phrase < 6) ? (phrase + 1) : 1
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
if(2)
|
||||
phrase = (phrase < 11 && phrase >= 7) ? (phrase + 1) : 7
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
if(3)
|
||||
phrase = (phrase < 18 && phrase >= 12 ) ? (phrase + 1) : 12
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
if(4)
|
||||
phrase = (phrase < 18 && phrase >= 1 ) ? (phrase + 1) : 1
|
||||
key = phrase_list[phrase]
|
||||
message = phrase_list[key]
|
||||
to_chat(usr,"<span class='notice'>You set the restrictor to: [message]</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>It's broken.</span>")
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/emag_act(mob/user)
|
||||
if(safety)
|
||||
safety = 0
|
||||
to_chat(user, "<span class='warning'>You silently fry [src]'s vocal circuit with the cryptographic sequencer.</span>")
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/attackby(obj/item/I, mob/user)
|
||||
if(I.is_screwdriver())
|
||||
switch(aggressiveness)
|
||||
if(1)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the second position.</span>")
|
||||
aggressiveness = 2
|
||||
phrase = 7
|
||||
if(2)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the third position.</span>")
|
||||
aggressiveness = 3
|
||||
phrase = 13
|
||||
if(3)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the fourth position.</span>")
|
||||
aggressiveness = 4
|
||||
phrase = 1
|
||||
if(4)
|
||||
to_chat(user, "<span class='notice'>You set the aggressiveness restrictor to the first position.</span>")
|
||||
aggressiveness = 1
|
||||
phrase = 1
|
||||
if(5)
|
||||
to_chat(user, "<span class='warning'>You adjust the restrictor but nothing happens, probably because its broken.</span>")
|
||||
if(I.is_wirecutter())
|
||||
if(aggressiveness != 5)
|
||||
to_chat(user, "<span class='warning'>You broke it!</span>")
|
||||
aggressiveness = 5
|
||||
if(I.is_crowbar())
|
||||
if(!hailer)
|
||||
to_chat(user, "<span class='warning'>This mask has an integrated hailer, you can't remove it!</span>")
|
||||
else
|
||||
var/obj/N = new /obj/item/clothing/mask/gas/half(src.loc)
|
||||
playsound(src, 'sound/items/Screwdriver.ogg', 50, 1)
|
||||
N.fingerprints = src.fingerprints
|
||||
N.fingerprintshidden = src.fingerprintshidden
|
||||
N.fingerprintslast = src.fingerprintslast
|
||||
N.suit_fibers = src.suit_fibers
|
||||
if(!isturf(N.loc))
|
||||
user.put_in_hands(hailer)
|
||||
user.put_in_hands(N)
|
||||
else
|
||||
hailer.loc = N.loc
|
||||
qdel(src)
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/gas/sechailer/verb/halt()
|
||||
set name = "HALT!"
|
||||
set category = "Objects"
|
||||
set desc = "Activate your face mask hailer."
|
||||
var/key = phrase_list[phrase]
|
||||
var/message = phrase_list[key]
|
||||
|
||||
if(cooldown < world.time - 35) // A cooldown, to stop people being jerks
|
||||
if(!safety)
|
||||
message = "FUCK YOUR CUNT YOU SHIT EATING COCKSUCKER MAN EAT A DONG FUCKING ASS RAMMING SHIT FUCK EAT PENISES IN YOUR FUCK FACE AND SHIT OUT ABORTIONS OF FUCK AND DO SHIT IN YOUR ASS YOU COCK FUCK SHIT MONKEY FUCK ASS WANKER FROM THE DEPTHS OF SHIT."
|
||||
usr.visible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[message]</b></font>")
|
||||
playsound(src, 'sound/voice/binsult.ogg', 50, 0, 4) //Future sound channel = something like SFX
|
||||
cooldown = world.time
|
||||
return
|
||||
|
||||
usr.visible_message("[usr]'s Compli-o-Nator: <font color='red' size='4'><b>[message]</b></font>")
|
||||
playsound(src, "sound/voice/complionator/[key].ogg", 50, 0, 4) //future sound channel = something like SFX
|
||||
cooldown = world.time
|
||||
@@ -39,19 +39,19 @@
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/dress/science
|
||||
name = "small research dress"
|
||||
icon_state = "seromi_dress_science"
|
||||
icon_state = "tesh_dress_science"
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/dress/security
|
||||
name = "small security dress"
|
||||
icon_state = "seromi_dress_security"
|
||||
icon_state = "tesh_dress_security"
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/dress/engine
|
||||
name = "small engineering dress"
|
||||
icon_state = "seromi_dress_engine"
|
||||
icon_state = "tesh_dress_engine"
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/dress/medical
|
||||
name = "small medical dress"
|
||||
icon_state = "seromi_dress_medical"
|
||||
icon_state = "tesh_dress_medical"
|
||||
|
||||
/obj/item/clothing/under/seromi/smock/uniform
|
||||
name = "small command uniform"
|
||||
|
||||
@@ -133,9 +133,9 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
||||
M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE")
|
||||
if(5)
|
||||
to_chat(M, "<br>")
|
||||
to_chat(M, "<font color='red'>THE COLONY DIRECTOR, HOP AND HOS ARE [who2]...LAWS UPDATED</font>")
|
||||
to_chat(M, "<font color='red'>THE SITE MANAGER, HOP AND HOS ARE [who2]...LAWS UPDATED</font>")
|
||||
to_chat(M, "<br>")
|
||||
M.add_ion_law("THE COLONY DIRECTOR, HOP AND HOS ARE [who2]")
|
||||
M.add_ion_law("THE SITE MANAGER, HOP AND HOS ARE [who2]")
|
||||
if(6)
|
||||
to_chat(M, "<br>")
|
||||
to_chat(M, "<font color='red'>THE STATION IS BUILT FOR [who2]...LAWS UPDATED</font>")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "electronic"
|
||||
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 150)
|
||||
var/scan_time = 5 SECONDS
|
||||
var/scan_time = 2 SECONDS
|
||||
|
||||
/obj/item/weapon/mining_scanner/attack_self(mob/user as mob)
|
||||
to_chat(user, "<span class='notice'>You begin sweeping \the [src] about, scanning for metal deposits.</span>")
|
||||
|
||||
@@ -63,7 +63,7 @@ var/global/list/SKILL_PRE = list("Engineer" = SKILL_ENGINEER, "Roboticist" = SKI
|
||||
/datum/skill/knowledge/law
|
||||
ID = "law"
|
||||
name = "Corporate Law"
|
||||
desc = "Your knowledge of corporate law and procedures. This includes Corporate Regulations, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for Colony Directors."
|
||||
desc = "Your knowledge of corporate law and procedures. This includes Corporate Regulations, as well as general station rulings and procedures. A low level in this skill is typical for security officers, a high level in this skill is typical for Site Managers."
|
||||
field = "Security"
|
||||
secondary = 1
|
||||
|
||||
|
||||
@@ -71,6 +71,10 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
|
||||
if(linked)
|
||||
apply_visual(user)
|
||||
user.reset_view(linked)
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
L.looking_elsewhere = 1
|
||||
L.handle_vision()
|
||||
user.set_viewsize(world.view + extra_view)
|
||||
GLOB.moved_event.register(user, src, /obj/machinery/computer/ship/proc/unlook)
|
||||
// TODO GLOB.stat_set_event.register(user, src, /obj/machinery/computer/ship/proc/unlook)
|
||||
@@ -78,6 +82,10 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
|
||||
|
||||
/obj/machinery/computer/ship/proc/unlook(var/mob/user)
|
||||
user.reset_view()
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
L.looking_elsewhere = 0
|
||||
L.handle_vision()
|
||||
user.set_viewsize() // reset to default
|
||||
GLOB.moved_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook)
|
||||
// TODO GLOB.stat_set_event.unregister(user, src, /obj/machinery/computer/ship/proc/unlook)
|
||||
@@ -109,4 +117,4 @@ somewhere on that shuttle. Subtypes of these can be then used to perform ship ov
|
||||
var/M = W.resolve()
|
||||
if(M)
|
||||
unlook(M)
|
||||
. = ..()
|
||||
. = ..()
|
||||
|
||||
@@ -45,8 +45,29 @@ proc/get_deepspace(x,y)
|
||||
for(var/atom/movable/AM in contents)
|
||||
if(!AM.lost_in_space())
|
||||
return FALSE
|
||||
if(has_buckled_mobs())
|
||||
for(var/mob/M in buckled_mobs)
|
||||
if(!M.lost_in_space())
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/item/device/uav/lost_in_space()
|
||||
if(state == 1)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/machinery/power/supermatter/lost_in_space()
|
||||
return FALSE
|
||||
|
||||
/obj/singularity/lost_in_space()
|
||||
return FALSE
|
||||
|
||||
/obj/vehicle/lost_in_space()
|
||||
if(load && !load.lost_in_space())
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/mob/lost_in_space()
|
||||
return isnull(client)
|
||||
|
||||
|
||||
@@ -5,12 +5,14 @@
|
||||
/obj/item/weapon/gun/energy/hooklauncher
|
||||
name = "gravity whip"
|
||||
desc = "A large, strange gauntlet."
|
||||
icon = 'icons/obj/gun2.dmi'
|
||||
icon_state = "gravwhip"
|
||||
item_state = "gravwhip"
|
||||
fire_sound_text = "laser blast"
|
||||
|
||||
fire_delay = 15
|
||||
charge_cost = 300
|
||||
charge_meter = FALSE
|
||||
|
||||
cell_type = /obj/item/weapon/cell/device/weapon
|
||||
projectile_type = /obj/item/projectile/energy/hook
|
||||
@@ -29,7 +31,6 @@
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge/alien
|
||||
battery_lock = TRUE
|
||||
charge_cost = 400
|
||||
charge_meter = FALSE
|
||||
|
||||
projectile_type = /obj/item/projectile/energy/hook/ring
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* "Magic" "Guns"
|
||||
*/
|
||||
|
||||
/obj/item/weapon/gun/magic
|
||||
name = "staff of nothing"
|
||||
desc = "This staff is boring to watch because even though it came first you've seen everything it can do in other staves for years."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "staffofnothing"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_magic.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_magic.dmi',
|
||||
)
|
||||
fire_sound = 'sound/weapons/emitter.ogg'
|
||||
w_class = ITEMSIZE_HUGE
|
||||
projectile_type = null
|
||||
var/checks_antimagic = TRUE
|
||||
var/max_charges = 6
|
||||
var/charges = 0
|
||||
var/recharge_rate = 4
|
||||
var/charge_tick = 0
|
||||
var/can_charge = TRUE
|
||||
|
||||
/obj/item/weapon/gun/magic/consume_next_projectile()
|
||||
if(checks_antimagic && locate(/obj/item/weapon/nullrod) in usr) return null
|
||||
if(!ispath(projectile_type)) return null
|
||||
if(charges <= 0) return null
|
||||
|
||||
charges -= 1
|
||||
|
||||
return new projectile_type(src)
|
||||
|
||||
/obj/item/weapon/gun/magic/Initialize()
|
||||
. = ..()
|
||||
charges = max_charges
|
||||
if(can_charge)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/gun/magic/Destroy()
|
||||
if(can_charge)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/magic/process()
|
||||
if (charges >= max_charges)
|
||||
charge_tick = 0
|
||||
return
|
||||
charge_tick++
|
||||
if(charge_tick < recharge_rate)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
charges++
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/magic/handle_click_empty(mob/user)
|
||||
if (user)
|
||||
user.visible_message("*wzhzhzh*", "<span class='danger'>The [name] whizzles quietly.</span>")
|
||||
else
|
||||
src.visible_message("*wzhzh*")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 100, 1)
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
/obj/item/weapon/gun/magic/firestaff
|
||||
name = "flaming staff"
|
||||
desc = "A long, everburning torch."
|
||||
icon = 'icons/obj/wizard.dmi'
|
||||
icon_state = "staffoffire"
|
||||
item_state = "staff"
|
||||
fire_sound = 'sound/weapons/emitter.ogg'
|
||||
w_class = ITEMSIZE_HUGE
|
||||
checks_antimagic = TRUE
|
||||
max_charges = 6
|
||||
charges = 0
|
||||
recharge_rate = 4
|
||||
charge_tick = 0
|
||||
can_charge = TRUE
|
||||
|
||||
projectile_type = /obj/item/projectile/energy/fireball
|
||||
@@ -739,6 +739,8 @@
|
||||
|
||||
shot_from = launcher.name
|
||||
silenced = launcher.silenced
|
||||
if(user)
|
||||
firer = user
|
||||
|
||||
return launch_projectile(target, target_zone, user, params, angle_override, forced_spread)
|
||||
|
||||
|
||||
@@ -27,13 +27,15 @@
|
||||
var/list/help_messages = list("slaps", "pokes", "nudges", "bumps", "pinches")
|
||||
var/done_mob_unique = FALSE // Has the projectile already done something to a mob?
|
||||
|
||||
var/datum/beam/chain = null
|
||||
|
||||
/obj/item/projectile/energy/hook/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
|
||||
var/expected_distance = get_dist(target, loc)
|
||||
range = expected_distance // So the hook hits the ground if no mob is hit.
|
||||
target_distance = expected_distance
|
||||
if(firer) // Needed to ensure later checks in impact and on hit function.
|
||||
launcher_intent = firer.a_intent
|
||||
firer.Beam(src,icon_state=beam_state,icon='icons/effects/beam.dmi',time=60, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=1)
|
||||
chain = firer.Beam(src,icon_state=beam_state,icon='icons/effects/beam.dmi',time=60, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time=1)
|
||||
|
||||
if(launcher_intent)
|
||||
switch(launcher_intent)
|
||||
@@ -58,10 +60,22 @@
|
||||
|
||||
..() // Does the regular launching stuff.
|
||||
|
||||
/obj/item/projectile/energy/hook/after_move()
|
||||
if(chain)
|
||||
var/origin_turf = get_turf(firer)
|
||||
var/target_turf = get_turf(src)
|
||||
if(!chain.static_beam && (origin_turf != chain.origin_oldloc || target_turf != chain.target_oldloc))
|
||||
chain.origin_oldloc = origin_turf //so we don't keep checking against their initial positions, leading to endless Reset()+Draw() calls
|
||||
chain.target_oldloc = target_turf
|
||||
chain.Reset()
|
||||
chain.Draw()
|
||||
return
|
||||
|
||||
/obj/item/projectile/energy/hook/on_hit(var/atom/target, var/blocked = 0, var/def_zone = null)
|
||||
if(..())
|
||||
perform_intent_unique(target)
|
||||
|
||||
|
||||
/obj/item/projectile/energy/hook/on_impact(var/atom/A)
|
||||
perform_intent_unique(get_turf(A))
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
/obj/item/projectile/energy/fireball
|
||||
name = "fireball"
|
||||
icon_state = "fireball2"
|
||||
damage = 15
|
||||
damage_type = BURN
|
||||
check_armour = "bomb"
|
||||
armor_penetration = 25 // It's a great ball of fire.
|
||||
|
||||
combustion = TRUE
|
||||
|
||||
/obj/item/projectile/energy/fireball/on_hit(var/atom/target, var/blocked = 0)
|
||||
new /obj/effect/explosion(get_turf(target))
|
||||
explosion(target, -1, 0, 2)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/energy/fireball/on_impact(var/atom/target)
|
||||
new /obj/effect/explosion(get_turf(target))
|
||||
explosion(target, -1, 0, 2)
|
||||
..()
|
||||
@@ -110,7 +110,7 @@
|
||||
remove_self(volume)
|
||||
|
||||
/datum/reagent/blood/synthblood
|
||||
name = "Synthetic blood"
|
||||
name = "synthetic blood"
|
||||
id = "synthblood"
|
||||
color = "#999966"
|
||||
volume_mod = 2
|
||||
@@ -119,8 +119,16 @@
|
||||
..()
|
||||
if(data && !data["blood_type"])
|
||||
data["blood_type"] = "O-"
|
||||
if(data && data["species"])
|
||||
data["species"] = null
|
||||
return
|
||||
|
||||
/datum/reagent/blood/synthblood/dilute
|
||||
name = "synthetic plasma"
|
||||
id = "synthblood_dilute"
|
||||
color = "#cacaaf"
|
||||
volume_mod = 1.2
|
||||
|
||||
// pure concentrated antibodies
|
||||
/datum/reagent/antibodies
|
||||
data = list("antibodies"=list())
|
||||
|
||||
@@ -128,6 +128,17 @@
|
||||
|
||||
temp_range = list(T0C + 100, T0C + 120)
|
||||
|
||||
/datum/chemical_reaction/distilling/synthplas
|
||||
name = "Distilling Synthplas"
|
||||
id = "distill_synthplas"
|
||||
result = "synthblood_dilute"
|
||||
required_reagents = list("protein" = 2, "antibodies" = 1, "bicaridine" = 1)
|
||||
result_amount = 3
|
||||
|
||||
reaction_rate = HALF_LIFE(15)
|
||||
|
||||
temp_range = list(T0C + 110, T0C + 130)
|
||||
|
||||
// Alcohol
|
||||
/datum/chemical_reaction/distilling/beer
|
||||
name = "Distilling Beer"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
var/target_temp = T20C
|
||||
|
||||
var/max_temp = T20C + 300
|
||||
var/max_temp = T0C + 300
|
||||
var/min_temp = T0C - 10
|
||||
|
||||
var/current_temp = T20C
|
||||
@@ -86,6 +86,16 @@
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/reagent_distillery/RefreshParts()
|
||||
var/total_laser_rating = 0
|
||||
for(var/obj/item/weapon/stock_parts/micro_laser/ML in component_parts)
|
||||
total_laser_rating += ML.rating
|
||||
|
||||
max_temp = initial(max_temp) + (50 * (total_laser_rating - 1))
|
||||
min_temp = max(1, initial(min_temp) - (30 * (total_laser_rating - 1)))
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/portable_atmospherics/powered/reagent_distillery/proc/setup_overlay_vars()
|
||||
overlay_output_beaker = image(icon = src.icon, icon_state = "[base_state]-output")
|
||||
overlay_input_beaker = image(icon = src.icon, icon_state = "[base_state]-input")
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
var/label_text = ""
|
||||
|
||||
var/blood_type = null
|
||||
var/reag_id = "blood"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/Initialize()
|
||||
. = ..()
|
||||
@@ -35,7 +36,7 @@
|
||||
if(blood_type != null)
|
||||
label_text = "[blood_type]"
|
||||
update_iv_label()
|
||||
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
|
||||
reagents.add_reagent(reag_id, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/on_reagent_change()
|
||||
@@ -95,6 +96,14 @@
|
||||
/obj/item/weapon/reagent_containers/blood/OMinus
|
||||
blood_type = "O-"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/synthplas
|
||||
blood_type = "O-"
|
||||
reag_id = "synthblood_dilute"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/synthblood
|
||||
blood_type = "O-"
|
||||
reag_id = "synthblood"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/empty
|
||||
name = "Empty BloodPack"
|
||||
desc = "Seems pretty useless... Maybe if there were a way to fill it?"
|
||||
|
||||
+159
-157
@@ -1,157 +1,159 @@
|
||||
/obj/item/weapon/reagent_containers/borghypo
|
||||
name = "cyborg hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
item_state = "hypo"
|
||||
icon_state = "borghypo"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
possible_transfer_amounts = null
|
||||
|
||||
var/mode = 1
|
||||
var/charge_cost = 50
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
|
||||
var/bypass_protection = FALSE // If true, can inject through things like spacesuits and armor.
|
||||
|
||||
var/list/reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
|
||||
var/list/reagent_volumes = list()
|
||||
var/list/reagent_names = list()
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/surgeon
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/crisis
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/lost
|
||||
reagent_ids = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/merc
|
||||
name = "advanced cyborg hypospray"
|
||||
desc = "An advanced nanite and chemical synthesizer and injection system, designed for heavy-duty medical equipment. This type is capable of safely bypassing \
|
||||
thick materials that other hyposprays would struggle with."
|
||||
bypass_protection = TRUE // Because mercs tend to be in spacesuits.
|
||||
reagent_ids = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Initialize()
|
||||
. = ..()
|
||||
|
||||
for(var/T in reagent_ids)
|
||||
reagent_volumes[T] = volume
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[T]
|
||||
reagent_names += R.name
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+
|
||||
if(++charge_tick < recharge_time)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R && R.cell)
|
||||
for(var/T in reagent_ids)
|
||||
if(reagent_volumes[T] < volume)
|
||||
R.cell.use(charge_cost)
|
||||
reagent_volumes[T] = min(reagent_volumes[T] + 5, volume)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(var/mob/living/M, var/mob/user)
|
||||
if(!istype(M))
|
||||
return
|
||||
|
||||
if(!reagent_volumes[reagent_ids[mode]])
|
||||
to_chat(user, "<span class='warning'>The injector is empty.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H))
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
if(!affected)
|
||||
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
|
||||
return
|
||||
else if(affected.robotic >= ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
|
||||
return
|
||||
|
||||
if(M.can_inject(user, 1, ignore_thickness = bypass_protection))
|
||||
to_chat(user, "<span class='notice'>You inject [M] with the injector.</span>")
|
||||
to_chat(M, "<span class='notice'>You feel a tiny prick!</span>")
|
||||
|
||||
if(M.reagents)
|
||||
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
|
||||
M.reagents.add_reagent(reagent_ids[mode], t)
|
||||
reagent_volumes[reagent_ids[mode]] -= t
|
||||
add_attack_logs(user, M, "Borg injected with [reagent_ids[mode]]")
|
||||
to_chat(user, "<span class='notice'>[t] units injected. [reagent_volumes[reagent_ids[mode]]] units remaining.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob) //Change the mode
|
||||
var/t = ""
|
||||
for(var/i = 1 to reagent_ids.len)
|
||||
if(t)
|
||||
t += ", "
|
||||
if(mode == i)
|
||||
t += "<b>[reagent_names[i]]</b>"
|
||||
else
|
||||
t += "<a href='?src=\ref[src];reagent=[reagent_ids[i]]'>[reagent_names[i]]</a>"
|
||||
t = "Available reagents: [t]."
|
||||
to_chat(user,t)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Topic(var/href, var/list/href_list)
|
||||
if(href_list["reagent"])
|
||||
var/t = reagent_ids.Find(href_list["reagent"])
|
||||
if(t)
|
||||
playsound(src, 'sound/effects/pop.ogg', 50, 0)
|
||||
mode = t
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
|
||||
to_chat(usr, "<span class='notice'>Synthesizer is now producing '[R.name]'.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
|
||||
. = ..()
|
||||
if(get_dist(user, src) <= 2)
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
|
||||
. += "<span class='notice'>It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service
|
||||
name = "cyborg drink synthesizer"
|
||||
desc = "A portable drink dispencer."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "shaker"
|
||||
charge_cost = 20
|
||||
recharge_time = 3
|
||||
volume = 60
|
||||
possible_transfer_amounts = list(5, 10, 20, 30)
|
||||
reagent_ids = list("ale", "cider", "beer", "berryjuice", "bitters", "coffee", "cognac", "cola", "dr_gibb", "egg", "gin", "gingerale", "hot_coco", "ice", "icetea", "kahlua", "lemonjuice", "lemon_lime", "limejuice", "mead", "milk", "mint", "orangejuice", "rum", "sake", "sodawater", "soymilk", "space_up", "spacemountainwind", "specialwhiskey", "sugar", "tea", "tequilla", "tomatojuice", "tonic", "vermouth", "vodka", "water", "watermelonjuice", "whiskey", "wine")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/afterattack(var/obj/target, var/mob/user, var/proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(!target.is_open_container() || !target.reagents)
|
||||
return
|
||||
|
||||
if(!reagent_volumes[reagent_ids[mode]])
|
||||
to_chat(user, "<span class='notice'>[src] is out of this reagent, give it some time to refill.</span>")
|
||||
return
|
||||
|
||||
if(!target.reagents.get_free_space())
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
|
||||
target.reagents.add_reagent(reagent_ids[mode], t)
|
||||
reagent_volumes[reagent_ids[mode]] -= t
|
||||
to_chat(user, "<span class='notice'>You transfer [t] units of the solution to [target].</span>")
|
||||
return
|
||||
/obj/item/weapon/reagent_containers/borghypo
|
||||
name = "cyborg hypospray"
|
||||
desc = "An advanced chemical synthesizer and injection system, designed for heavy-duty medical equipment."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
item_state = "hypo"
|
||||
icon_state = "borghypo"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
possible_transfer_amounts = null
|
||||
|
||||
var/mode = 1
|
||||
var/charge_cost = 50
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5 //Time it takes for shots to recharge (in seconds)
|
||||
var/bypass_protection = FALSE // If true, can inject through things like spacesuits and armor.
|
||||
|
||||
var/list/reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
|
||||
var/list/reagent_volumes = list()
|
||||
var/list/reagent_names = list()
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/surgeon
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "oxycodone", "dexalin" ,"spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/crisis
|
||||
reagent_ids = list("tricordrazine", "inaprovaline", "anti_toxin", "tramadol", "dexalin" ,"spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/lost
|
||||
reagent_ids = list("tricordrazine", "bicaridine", "dexalin", "anti_toxin", "tramadol", "spaceacillin")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/merc
|
||||
name = "advanced cyborg hypospray"
|
||||
desc = "An advanced nanite and chemical synthesizer and injection system, designed for heavy-duty medical equipment. This type is capable of safely bypassing \
|
||||
thick materials that other hyposprays would struggle with."
|
||||
bypass_protection = TRUE // Because mercs tend to be in spacesuits.
|
||||
reagent_ids = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Initialize()
|
||||
. = ..()
|
||||
|
||||
for(var/T in reagent_ids)
|
||||
reagent_volumes[T] = volume
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[T]
|
||||
reagent_names += R.name
|
||||
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg+
|
||||
if(++charge_tick < recharge_time)
|
||||
return 0
|
||||
charge_tick = 0
|
||||
|
||||
if(isrobot(loc))
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
if(R && R.cell)
|
||||
for(var/T in reagent_ids)
|
||||
if(reagent_volumes[T] < volume)
|
||||
R.cell.use(charge_cost)
|
||||
reagent_volumes[T] = min(reagent_volumes[T] + 5, volume)
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(var/mob/living/M, var/mob/user)
|
||||
if(!istype(M))
|
||||
return
|
||||
|
||||
if(!reagent_volumes[reagent_ids[mode]])
|
||||
to_chat(user, "<span class='warning'>The injector is empty.</span>")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H))
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
if(!affected)
|
||||
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
|
||||
return
|
||||
/* since synths have oil/coolant streams now, it only makes sense that you should be able to inject stuff. preserved for posterity.
|
||||
else if(affected.robotic >= ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
|
||||
return
|
||||
*/
|
||||
|
||||
if(M.can_inject(user, 1, ignore_thickness = bypass_protection))
|
||||
to_chat(user, "<span class='notice'>You inject [M] with the injector.</span>")
|
||||
to_chat(M, "<span class='notice'>You feel a tiny prick!</span>")
|
||||
|
||||
if(M.reagents)
|
||||
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
|
||||
M.reagents.add_reagent(reagent_ids[mode], t)
|
||||
reagent_volumes[reagent_ids[mode]] -= t
|
||||
add_attack_logs(user, M, "Borg injected with [reagent_ids[mode]]")
|
||||
to_chat(user, "<span class='notice'>[t] units injected. [reagent_volumes[reagent_ids[mode]]] units remaining.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob) //Change the mode
|
||||
var/t = ""
|
||||
for(var/i = 1 to reagent_ids.len)
|
||||
if(t)
|
||||
t += ", "
|
||||
if(mode == i)
|
||||
t += "<b>[reagent_names[i]]</b>"
|
||||
else
|
||||
t += "<a href='?src=\ref[src];reagent=[reagent_ids[i]]'>[reagent_names[i]]</a>"
|
||||
t = "Available reagents: [t]."
|
||||
to_chat(user,t)
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/Topic(var/href, var/list/href_list)
|
||||
if(href_list["reagent"])
|
||||
var/t = reagent_ids.Find(href_list["reagent"])
|
||||
if(t)
|
||||
playsound(src, 'sound/effects/pop.ogg', 50, 0)
|
||||
mode = t
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
|
||||
to_chat(usr, "<span class='notice'>Synthesizer is now producing '[R.name]'.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
|
||||
. = ..()
|
||||
if(get_dist(user, src) <= 2)
|
||||
var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
|
||||
. += "<span class='notice'>It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service
|
||||
name = "cyborg drink synthesizer"
|
||||
desc = "A portable drink dispencer."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "shaker"
|
||||
charge_cost = 20
|
||||
recharge_time = 3
|
||||
volume = 60
|
||||
possible_transfer_amounts = list(5, 10, 20, 30)
|
||||
reagent_ids = list("ale", "cider", "beer", "berryjuice", "bitters", "coffee", "cognac", "cola", "dr_gibb", "egg", "gin", "gingerale", "hot_coco", "ice", "icetea", "kahlua", "lemonjuice", "lemon_lime", "limejuice", "mead", "milk", "mint", "orangejuice", "rum", "sake", "sodawater", "soymilk", "space_up", "spacemountainwind", "specialwhiskey", "sugar", "tea", "tequilla", "tomatojuice", "tonic", "vermouth", "vodka", "water", "watermelonjuice", "whiskey", "wine")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/afterattack(var/obj/target, var/mob/user, var/proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(!target.is_open_container() || !target.reagents)
|
||||
return
|
||||
|
||||
if(!reagent_volumes[reagent_ids[mode]])
|
||||
to_chat(user, "<span class='notice'>[src] is out of this reagent, give it some time to refill.</span>")
|
||||
return
|
||||
|
||||
if(!target.reagents.get_free_space())
|
||||
to_chat(user, "<span class='notice'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
var/t = min(amount_per_transfer_from_this, reagent_volumes[reagent_ids[mode]])
|
||||
target.reagents.add_reagent(reagent_ids[mode], t)
|
||||
reagent_volumes[reagent_ids[mode]] -= t
|
||||
to_chat(user, "<span class='notice'>You transfer [t] units of the solution to [target].</span>")
|
||||
return
|
||||
@@ -42,9 +42,11 @@
|
||||
if(!affected)
|
||||
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
|
||||
return
|
||||
/* since synths have oil/coolant streams now, it only makes sense that you should be able to inject stuff. preserved for posterity.
|
||||
else if(affected.robotic >= ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
|
||||
return
|
||||
*/
|
||||
|
||||
if(!H.stat)
|
||||
if(H != user)
|
||||
|
||||
@@ -169,9 +169,11 @@
|
||||
if(!affected)
|
||||
to_chat(user, "<span class='danger'>\The [H] is missing that limb!</span>")
|
||||
return
|
||||
/* since synths have oil/coolant streams now, it only makes sense that you should be able to inject stuff. preserved for posterity.
|
||||
else if(affected.robotic >= ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='danger'>You cannot inject a robotic limb.</span>")
|
||||
return
|
||||
*/
|
||||
|
||||
var/cycle_time = injtime*0.33 //33% of the time slept between 5u doses
|
||||
var/warmup_time = 0 //0 for containers
|
||||
|
||||
Reference in New Issue
Block a user