mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 08:08:49 +01:00
@@ -1863,9 +1863,7 @@
|
||||
if(isrobot(L))
|
||||
var/mob/living/silicon/robot/R = L
|
||||
if(R.module)
|
||||
R.module.modules += I
|
||||
I.loc = R.module
|
||||
R.module.rebuild()
|
||||
R.module.add_module(I)
|
||||
R.activate_module(I)
|
||||
|
||||
|
||||
|
||||
@@ -1,24 +1,27 @@
|
||||
/mob/living/silicon/robot/examine(mob/user)
|
||||
var/msg = "<span class='info'>*---------*\nThis is \icon[src] \a <EM>[src]</EM>!\n"
|
||||
if(desc)
|
||||
msg += "[desc]\n"
|
||||
|
||||
var/obj/act_module = get_active_hand()
|
||||
if(act_module)
|
||||
msg += "It is holding \icon[act_module] \a [act_module].\n"
|
||||
msg += "<span class='warning'>"
|
||||
if (src.getBruteLoss())
|
||||
if (src.getBruteLoss() < 60)
|
||||
if (src.getBruteLoss() < maxHealth*0.5)
|
||||
msg += "It looks slightly dented.\n"
|
||||
else
|
||||
msg += "<B>It looks severely dented!</B>\n"
|
||||
if (src.getFireLoss())
|
||||
if (src.getFireLoss() < 60)
|
||||
if (src.getFireLoss() < maxHealth*0.5)
|
||||
msg += "It looks slightly charred.\n"
|
||||
else
|
||||
msg += "<B>It looks severely burnt and heat-warped!</B>\n"
|
||||
if (src.health < -50)
|
||||
if (src.health < -maxHealth*0.5)
|
||||
msg += "It looks barely operational.\n"
|
||||
if (src.fire_stacks < 0)
|
||||
msg += "It's covered in water.\n"
|
||||
if (src.fire_stacks > 0)
|
||||
else if (src.fire_stacks > 0)
|
||||
msg += "It's coated in something flammable.\n"
|
||||
msg += "</span>"
|
||||
|
||||
|
||||
@@ -42,21 +42,21 @@
|
||||
|
||||
if (..()) //Alive.
|
||||
|
||||
if(health <= config.health_threshold_dead) //die only once
|
||||
if(health <= -maxHealth) //die only once
|
||||
death()
|
||||
return
|
||||
|
||||
if(health < 50) //Gradual break down of modules as more damage is sustained
|
||||
if(health < maxHealth*0.5) //Gradual break down of modules as more damage is sustained
|
||||
if(uneq_module(module_state_3))
|
||||
src << "<span class='warning'>SYSTEM ERROR: Module 3 OFFLINE.</span>"
|
||||
if(health < 0)
|
||||
if(uneq_module(module_state_2))
|
||||
src << "<span class='warning'>SYSTEM ERROR: Module 2 OFFLINE.</span>"
|
||||
if(health < -50)
|
||||
if(health < -maxHealth*0.5)
|
||||
if(uneq_module(module_state_1))
|
||||
src << "<span class='warning'>CRITICAL ERROR: All modules OFFLINE.</span>"
|
||||
|
||||
if(getOxyLoss() > 50)
|
||||
if(getOxyLoss() > maxHealth*0.5)
|
||||
Paralyse(3)
|
||||
|
||||
if (paralysis || stunned || weakened) //Stunned etc.
|
||||
@@ -131,25 +131,24 @@
|
||||
/mob/living/silicon/robot/handle_hud_icons_health()
|
||||
if (healths)
|
||||
if (stat != DEAD)
|
||||
switch(health)
|
||||
if(100 to INFINITY)
|
||||
healths.icon_state = "health0"
|
||||
if(50 to 100)
|
||||
healths.icon_state = "health2"
|
||||
if(0 to 50)
|
||||
healths.icon_state = "health3"
|
||||
if(-50 to 0)
|
||||
healths.icon_state = "health4"
|
||||
if(config.health_threshold_dead to -50)
|
||||
healths.icon_state = "health5"
|
||||
else
|
||||
healths.icon_state = "health6"
|
||||
if(health >= maxHealth)
|
||||
healths.icon_state = "health0"
|
||||
else if(health > maxHealth*0.5)
|
||||
healths.icon_state = "health2"
|
||||
else if(health > 0)
|
||||
healths.icon_state = "health3"
|
||||
else if(health > -maxHealth*0.5)
|
||||
healths.icon_state = "health4"
|
||||
else if(health > -maxHealth)
|
||||
healths.icon_state = "health5"
|
||||
else
|
||||
healths.icon_state = "health6"
|
||||
else
|
||||
healths.icon_state = "health7"
|
||||
|
||||
/mob/living/silicon/robot/proc/update_cell()
|
||||
if (cell)
|
||||
var/cellcharge = src.cell.charge/src.cell.maxcharge
|
||||
var/cellcharge = cell.charge/cell.maxcharge
|
||||
switch(cellcharge)
|
||||
if(0.75 to INFINITY)
|
||||
clear_alert("charge")
|
||||
|
||||
@@ -328,20 +328,20 @@
|
||||
stat(null, "Time left: [max(malf.AI_win_timeleft/malf.apcs, 0)]")
|
||||
|
||||
if(cell)
|
||||
stat(null, text("Charge Left: [cell.charge]/[cell.maxcharge]"))
|
||||
stat("Charge Left:", "[cell.charge]/[cell.maxcharge]")
|
||||
else
|
||||
stat(null, text("No Cell Inserted!"))
|
||||
|
||||
stat(null, "Station Time: [worldtime2text()]")
|
||||
stat("Station Time:", worldtime2text())
|
||||
if(module)
|
||||
internal = locate(/obj/item/weapon/tank/jetpack) in module.modules
|
||||
if(internal)
|
||||
stat("Internal Atmosphere Info", internal.name)
|
||||
stat("Tank Pressure", internal.air_contents.return_pressure())
|
||||
for (var/datum/robot_energy_storage/st in module.storages)
|
||||
stat("[st.name]: [st.energy]/[st.max_energy]")
|
||||
stat("Internal Atmosphere Info:", internal.name)
|
||||
stat("Tank Pressure:", internal.air_contents.return_pressure())
|
||||
for(var/datum/robot_energy_storage/st in module.storages)
|
||||
stat("[st.name]:", "[st.energy]/[st.max_energy]")
|
||||
if(connected_ai)
|
||||
stat(null, text("Master AI: [connected_ai.name]"))
|
||||
stat("Master AI:", connected_ai.name)
|
||||
|
||||
/mob/living/silicon/robot/restrained()
|
||||
return 0
|
||||
@@ -418,20 +418,22 @@
|
||||
if (istype(W, /obj/item/weapon/restraints/handcuffs)) // fuck i don't even know why isrobot() in handcuff code isn't working so this will have to do
|
||||
return
|
||||
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
|
||||
if (istype(W, /obj/item/weapon/weldingtool) && (user.a_intent != "harm" || user == src))
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
var/obj/item/weapon/weldingtool/WT = W
|
||||
if (src == user)
|
||||
user << "<span class='warning'>You lack the reach to be able to repair yourself!</span>"
|
||||
return
|
||||
if (src.health >= src.maxHealth)
|
||||
if (!getBruteLoss())
|
||||
user << "<span class='warning'>[src] is already in good condition!</span>"
|
||||
return
|
||||
if (WT.remove_fuel(0, user)) //The welder has 1u of fuel consumed by it's afterattack, so we don't need to worry about taking any away.
|
||||
if(src == user)
|
||||
user << "<span class='notice'>You start fixing youself...</span>"
|
||||
if(!do_after(user, 50, target = src))
|
||||
return
|
||||
|
||||
adjustBruteLoss(-30)
|
||||
updatehealth()
|
||||
add_fingerprint(user)
|
||||
visible_message("[user] has fixed some of the dents on [src].")
|
||||
visible_message("<span class='notice'>[user] has fixed some of the dents on [src].</span>")
|
||||
return
|
||||
else
|
||||
user << "<span class='warning'>The welder must be on for this task!</span>"
|
||||
@@ -439,7 +441,11 @@
|
||||
|
||||
else if(istype(W, /obj/item/stack/cable_coil) && wiresexposed)
|
||||
var/obj/item/stack/cable_coil/coil = W
|
||||
if (fireloss > 0)
|
||||
if (getFireLoss() > 0)
|
||||
if(src == user)
|
||||
user << "<span class='notice'>You start fixing youself...</span>"
|
||||
if(!do_after(user, 50, target = src))
|
||||
return
|
||||
if (coil.use(1))
|
||||
adjustFireLoss(-30)
|
||||
updatehealth()
|
||||
@@ -753,7 +759,6 @@
|
||||
return update_icons()
|
||||
|
||||
/mob/living/silicon/robot/update_icons()
|
||||
|
||||
overlays.Cut()
|
||||
if(stat != DEAD && !(paralysis || stunned || weakened)) //Not dead, not stunned.
|
||||
var/state_name = icon_state //For easy conversion and/or different names
|
||||
|
||||
@@ -38,6 +38,45 @@
|
||||
if((m != R.module_state_1) && (m != R.module_state_2) && (m != R.module_state_3))
|
||||
. += m
|
||||
|
||||
/obj/item/weapon/robot_module/proc/get_or_create_estorage(var/storage_type)
|
||||
for(var/datum/robot_energy_storage/S in storages)
|
||||
if(istype(S, storage_type))
|
||||
return S
|
||||
|
||||
return new storage_type(src)
|
||||
|
||||
/obj/item/weapon/robot_module/proc/add_module(var/obj/item/I)
|
||||
if(istype(I, /obj/item/stack))
|
||||
var/obj/item/stack/S = I
|
||||
|
||||
if(is_type_in_list(S, list(/obj/item/stack/sheet/metal, /obj/item/stack/rods, /obj/item/stack/tile/plasteel)))
|
||||
if(S.materials[MAT_METAL])
|
||||
S.cost = S.materials[MAT_METAL] * 0.25
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/metal)
|
||||
|
||||
else if(istype(S, /obj/item/stack/sheet/glass))
|
||||
S.cost = 500
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/glass)
|
||||
|
||||
else if(istype(S, /obj/item/stack/medical))
|
||||
S.cost = 250
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/medical)
|
||||
|
||||
else if(istype(S, /obj/item/stack/cable_coil))
|
||||
S.cost = 1
|
||||
S.source = get_or_create_estorage(/datum/robot_energy_storage/wire)
|
||||
|
||||
if(S && S.source)
|
||||
S.materials = list()
|
||||
S.is_cyborg = 1
|
||||
|
||||
if(istype(I, /obj/item/weapon/restraints/handcuffs/cable))
|
||||
var/obj/item/weapon/restraints/handcuffs/cable/C = I
|
||||
C.wirestorage = get_or_create_estorage(/datum/robot_energy_storage/wire)
|
||||
|
||||
I.loc = src
|
||||
modules += I
|
||||
rebuild()
|
||||
|
||||
/obj/item/weapon/robot_module/New()
|
||||
modules += new /obj/item/device/assembly/flash/cyborg(src)
|
||||
@@ -46,7 +85,20 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R)
|
||||
/obj/item/weapon/robot_module/proc/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
|
||||
for(var/datum/robot_energy_storage/st in storages)
|
||||
st.energy = min(st.max_energy, st.energy + coeff * st.recharge_rate)
|
||||
|
||||
for(var/obj/item/I in get_usable_modules())
|
||||
if(istype(I, /obj/item/device/assembly/flash))
|
||||
var/obj/item/device/assembly/flash/F = I
|
||||
F.times_used = 0
|
||||
F.crit_fail = 0
|
||||
F.update_icon()
|
||||
if(istype(I, /obj/item/weapon/melee/baton))
|
||||
var/obj/item/weapon/melee/baton/B = I
|
||||
if(B.bcell)
|
||||
B.bcell.charge = B.bcell.maxcharge
|
||||
return
|
||||
|
||||
/obj/item/weapon/robot_module/proc/rebuild()//Rebuilds the list so it's possible to add/remove items from the module
|
||||
@@ -83,6 +135,7 @@
|
||||
fix_modules()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/medical
|
||||
name = "medical robot module"
|
||||
|
||||
@@ -102,22 +155,20 @@
|
||||
modules += new /obj/item/weapon/circular_saw(src)
|
||||
modules += new /obj/item/weapon/extinguisher/mini(src)
|
||||
modules += new /obj/item/roller/robo(src)
|
||||
emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
|
||||
add_module(new /obj/item/stack/medical/gauze/cyborg())
|
||||
|
||||
emag = new /obj/item/weapon/reagent_containers/spray(src)
|
||||
emag.reagents.add_reagent("facid", 250)
|
||||
emag.name = "Fluacid spray"
|
||||
|
||||
|
||||
var/datum/robot_energy_storage/gauze/gauzestore = new /datum/robot_energy_storage/gauze(src)
|
||||
|
||||
var/obj/item/stack/medical/gauze/cyborg/G = new /obj/item/stack/medical/gauze/cyborg(src)
|
||||
G.source = gauzestore
|
||||
modules += G
|
||||
|
||||
storages += gauzestore
|
||||
|
||||
fix_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/medical/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
|
||||
..()
|
||||
if(R.emagged && istype(emag, /obj/item/weapon/reagent_containers/spray))
|
||||
emag.reagents.add_reagent("facid", 2 * coeff)
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/engineering
|
||||
@@ -139,40 +190,22 @@
|
||||
modules += new /obj/item/device/t_scanner(src)
|
||||
modules += new /obj/item/device/analyzer(src)
|
||||
|
||||
var/datum/robot_energy_storage/metal/metstore = new /datum/robot_energy_storage/metal(src)
|
||||
var/datum/robot_energy_storage/glass/glastore = new /datum/robot_energy_storage/glass(src)
|
||||
var/datum/robot_energy_storage/wire/wirestore = new /datum/robot_energy_storage/wire(src)
|
||||
|
||||
var/obj/item/stack/sheet/metal/cyborg/M = new /obj/item/stack/sheet/metal/cyborg(src)
|
||||
M.source = metstore
|
||||
modules += M
|
||||
|
||||
var/obj/item/stack/sheet/glass/cyborg/Q = new /obj/item/stack/sheet/glass/cyborg(src)
|
||||
Q.source = glastore
|
||||
modules += Q
|
||||
add_module(new /obj/item/stack/sheet/metal/cyborg())
|
||||
add_module(new /obj/item/stack/sheet/glass/cyborg())
|
||||
|
||||
var/obj/item/stack/sheet/rglass/cyborg/G = new /obj/item/stack/sheet/rglass/cyborg(src)
|
||||
G.metsource = metstore
|
||||
G.glasource = glastore
|
||||
modules += G
|
||||
G.metsource = get_or_create_estorage(/datum/robot_energy_storage/metal)
|
||||
G.glasource = get_or_create_estorage(/datum/robot_energy_storage/glass)
|
||||
add_module(G)
|
||||
|
||||
var/obj/item/stack/rods/cyborg/R = new /obj/item/stack/rods/cyborg(src)
|
||||
R.source = metstore
|
||||
modules += R
|
||||
add_module(new /obj/item/stack/rods/cyborg())
|
||||
add_module(new /obj/item/stack/tile/plasteel/cyborg())
|
||||
add_module(new /obj/item/stack/cable_coil/cyborg(src,MAXCOIL,"red"))
|
||||
|
||||
var/obj/item/stack/cable_coil/cyborg/W = new /obj/item/stack/cable_coil/cyborg(src,MAXCOIL,pick("red","yellow","green","blue","pink","orange","cyan","white"))
|
||||
W.source = wirestore
|
||||
modules += W
|
||||
|
||||
var/obj/item/stack/tile/plasteel/cyborg/F = new /obj/item/stack/tile/plasteel/cyborg(src) //"Plasteel" is the normal metal floor tile, Don't be confused - RR
|
||||
F.source = metstore
|
||||
modules += F //'F' for floor tile - RR(src)
|
||||
|
||||
storages += metstore
|
||||
storages += glastore
|
||||
storages += wirestore
|
||||
fix_modules()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/security
|
||||
name = "security robot module"
|
||||
|
||||
@@ -185,6 +218,18 @@
|
||||
emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
|
||||
fix_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/security/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
|
||||
..()
|
||||
var/obj/item/weapon/gun/energy/gun/advtaser/cyborg/T = locate(/obj/item/weapon/gun/energy/gun/advtaser/cyborg) in get_usable_modules()
|
||||
if(T)
|
||||
if(T.power_supply.charge < T.power_supply.maxcharge)
|
||||
var/obj/item/ammo_casing/energy/S = T.ammo_type[T.select]
|
||||
T.power_supply.give(S.e_cost * coeff)
|
||||
T.update_icon()
|
||||
else
|
||||
T.charge_tick = 0
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/janitor
|
||||
name = "janitorial robot module"
|
||||
@@ -202,6 +247,16 @@
|
||||
emag.name = "lube spray"
|
||||
fix_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/janitor/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
|
||||
..()
|
||||
var/obj/item/device/lightreplacer/LR = locate(/obj/item/device/lightreplacer) in get_usable_modules()
|
||||
if(LR)
|
||||
for(var/i = 1, i <= coeff, i++)
|
||||
LR.Charge(R)
|
||||
|
||||
if(R.emagged && istype(emag, /obj/item/weapon/reagent_containers/spray))
|
||||
emag.reagents.add_reagent("lube", 2 * coeff)
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/butler
|
||||
name = "service robot module"
|
||||
@@ -214,22 +269,20 @@
|
||||
modules += new /obj/item/weapon/razor(src)
|
||||
modules += new /obj/item/device/instrument/violin(src)
|
||||
modules += new /obj/item/device/instrument/guitar(src)
|
||||
|
||||
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
|
||||
M.matter = 30
|
||||
modules += M
|
||||
|
||||
modules += new /obj/item/weapon/rsf{matter = 30}(src)
|
||||
modules += new /obj/item/weapon/reagent_containers/dropper(src)
|
||||
|
||||
var/obj/item/weapon/lighter/L = new /obj/item/weapon/lighter(src)
|
||||
L.lit = 1
|
||||
modules += L
|
||||
|
||||
modules += new /obj/item/weapon/lighter{lit = 1}(src)
|
||||
modules += new /obj/item/weapon/storage/bag/tray(src)
|
||||
modules += new /obj/item/weapon/reagent_containers/borghypo/borgshaker(src)
|
||||
emag = new /obj/item/weapon/reagent_containers/borghypo/borgshaker/hacked(src)
|
||||
fix_modules()
|
||||
|
||||
/obj/item/weapon/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1)
|
||||
..()
|
||||
|
||||
var/obj/item/weapon/reagent_containers/O = locate(/obj/item/weapon/reagent_containers/food/condiment/enzyme) in get_usable_modules()
|
||||
if(O)
|
||||
O.reagents.add_reagent("enzyme", 2 * coeff)
|
||||
|
||||
/obj/item/weapon/robot_module/miner
|
||||
name = "miner robot module"
|
||||
@@ -247,6 +300,7 @@
|
||||
fix_modules()
|
||||
|
||||
|
||||
|
||||
/obj/item/weapon/robot_module/syndicate
|
||||
name = "syndicate assault robot module"
|
||||
|
||||
@@ -257,7 +311,7 @@
|
||||
modules += new /obj/item/weapon/gun/projectile/revolver/grenadelauncher/cyborg(src)
|
||||
modules += new /obj/item/weapon/card/emag(src)
|
||||
modules += new /obj/item/weapon/tank/jetpack/carbondioxide(src)
|
||||
modules += new /obj/item/weapon/crowbar(src)
|
||||
modules += new /obj/item/weapon/crowbar/red(src)
|
||||
modules += new /obj/item/weapon/pinpointer/operative(src)
|
||||
emag = null
|
||||
fix_modules()
|
||||
@@ -283,13 +337,8 @@
|
||||
modules += new /obj/item/weapon/pinpointer/operative(src)
|
||||
emag = null
|
||||
|
||||
var/datum/robot_energy_storage/gauze/gauzestore = new /datum/robot_energy_storage/gauze(src)
|
||||
|
||||
var/obj/item/stack/medical/gauze/cyborg/G = new /obj/item/stack/medical/gauze/cyborg(src)
|
||||
G.source = gauzestore
|
||||
modules += G
|
||||
|
||||
storages += gauzestore
|
||||
add_module(new /obj/item/stack/medical/gauze/cyborg())
|
||||
|
||||
fix_modules()
|
||||
|
||||
@@ -299,8 +348,10 @@
|
||||
var/recharge_rate = 1000
|
||||
var/energy
|
||||
|
||||
/datum/robot_energy_storage/New()
|
||||
/datum/robot_energy_storage/New(var/obj/item/weapon/robot_module/R = null)
|
||||
energy = max_energy
|
||||
if(R)
|
||||
R.storages |= src
|
||||
return
|
||||
|
||||
/datum/robot_energy_storage/proc/use_charge(amount)
|
||||
@@ -326,7 +377,7 @@
|
||||
recharge_rate = 2
|
||||
name = "Wire Synthesizer"
|
||||
|
||||
/datum/robot_energy_storage/gauze
|
||||
/datum/robot_energy_storage/medical
|
||||
max_energy = 2500
|
||||
recharge_rate = 250
|
||||
name = "Gauze Synthesizer"
|
||||
name = "Medical Synthesizer"
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/cyborg
|
||||
can_charge = 0
|
||||
desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?"
|
||||
|
||||
/obj/item/weapon/gun/energy/laser/cyborg/newshot()
|
||||
|
||||
@@ -290,6 +290,7 @@
|
||||
icon = 'icons/obj/guns/projectile.dmi'
|
||||
cell_type = "/obj/item/weapon/stock_parts/cell/secborg"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/c3dbullet)
|
||||
can_charge = 0
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 5
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
var/charge_tick = 0
|
||||
var/recharge_time = 10
|
||||
can_flashlight = 0
|
||||
can_charge = 0
|
||||
|
||||
/obj/item/weapon/gun/energy/gun/advtaser/cyborg/New()
|
||||
..()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
return
|
||||
if(!istype(M))
|
||||
if(!iscarbon(M))
|
||||
return
|
||||
|
||||
if(reagents.total_volume && (ignore_flags || M.can_inject(user, 1))) // Ignore flag should be checked first or there will be an error message.
|
||||
@@ -69,19 +69,23 @@
|
||||
flags = null
|
||||
list_reagents = list("epinephrine" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/New()
|
||||
..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/attack(mob/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
user << "<span class='warning'>[src] is empty!</span>"
|
||||
return
|
||||
..()
|
||||
update_icon()
|
||||
spawn(80)
|
||||
if(isrobot(user) && !reagents.total_volume)
|
||||
var/mob/living/silicon/robot/R = user
|
||||
if(R.cell.use(100))
|
||||
reagents.add_reagent_list(list_reagents)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/update_icon()
|
||||
if(reagents.total_volume > 0)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
|
||||
@@ -100,6 +104,10 @@
|
||||
amount_per_transfer_from_this = 20
|
||||
list_reagents = list("ephedrine" = 10, "coffee" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/stimpack/traitor
|
||||
desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect."
|
||||
list_reagents = list("stimulants" = 10, "omnizine" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/medipen/morphine
|
||||
name = "morphine medipen"
|
||||
desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though."
|
||||
|
||||
Reference in New Issue
Block a user