Files
Bubberstation/code/game/objects/items/weapons/tools.dm
pudl dd5c7db5ad in order to help doctors keep up, since they now need a lot more to heal people, the nanomeds have been stocked with a lot of extra stuff.
12x syringe
10x styptic patch
10x silver sulf patch
4x charcoal bottle
4x epinephrine bottle
4x morphine bottle
4x diphen bottle
3x potassium iodide bottle
5x salglu bottle
3x atropine bottle
6x spaceacillin syringe
10x calomel syringe
10x salbu pill
10x mannitol pill
5x mutadone pill
4x health analyzer
2x crew monitor
CONTRABAND:
all of the same except with 3 bottles of toxin

the two types of wallmed have been combined into one wallmed, which contains all of the above except halved. in instances where the number was odd, the higher of the two numbers was taken.

medical closet has been stocked with a lot of new stuff.
2x beakers
2x droppers
1x medical belt
1x syringe box
1x toxin bottle
2x morphine bottles
3x epi bottles
3x charcoal bottles
1x rxglasses box

this, of course, 3 new pills and 3 new bottles in code so they could be in the nanomed.

gives genetics a bottle of mutadone pills on box and eff3 and puts a public bottle of epinephrine on the medbay desk. adds a single syringe to boxstation's medical storage.

medkits now have some new equipment.

normal
2x styptic patch
2x sulf patch
1x salicyclic pill
1x health analyzer

fire
4x silver sulf patches
1x health analyzer
1x epipen
1x salicyclic pill

toxin is unchanged

oxygen
4x salbu pills
2x epipen
1x health analyzer

all maps and z levels are updated for this.

renames styptic patch to brute patch and silver sulf patch to burn patch. renames charcoal bottle to antitoxin bottle

adds myself to admins.txt
2015-01-20 22:26:13 -06:00

464 lines
13 KiB
Plaintext

//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/* Tools!
* Note: Multitools are /obj/item/device
*
* Contains:
* Wrench
* Screwdriver
* Wirecutters
* Welding Tool
* Crowbar
*/
/*
* Wrench
*/
/obj/item/weapon/wrench
name = "wrench"
desc = "A wrench with common uses. Can be found in your hand."
icon = 'icons/obj/items.dmi'
icon_state = "wrench"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 5.0
throwforce = 7.0
w_class = 2.0
m_amt = 150
origin_tech = "materials=1;engineering=1"
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
/*
* Screwdriver
*/
/obj/item/weapon/screwdriver
name = "screwdriver"
desc = "You can be totally screwy with this."
icon = 'icons/obj/items.dmi'
icon_state = "screwdriver"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 5.0
w_class = 1.0
throwforce = 5.0
throw_speed = 3
throw_range = 5
g_amt = 0
m_amt = 75
attack_verb = list("stabbed")
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/screwdriver/suicide_act(mob/user)
user.visible_message(pick("<span class='suicide'>[user] is stabbing the [src.name] into \his temple! It looks like \he's trying to commit suicide.</span>", \
"<span class='suicide'>[user] is stabbing the [src.name] into \his heart! It looks like \he's trying to commit suicide.</span>"))
return(BRUTELOSS)
/obj/item/weapon/screwdriver/New()
switch(pick("red","blue","purple","brown","green","cyan","yellow"))
if ("red")
icon_state = "screwdriver2"
item_state = "screwdriver"
if ("blue")
icon_state = "screwdriver"
item_state = "screwdriver_blue"
if ("purple")
icon_state = "screwdriver3"
item_state = "screwdriver_purple"
if ("brown")
icon_state = "screwdriver4"
item_state = "screwdriver_brown"
if ("green")
icon_state = "screwdriver5"
item_state = "screwdriver_green"
if ("cyan")
icon_state = "screwdriver6"
item_state = "screwdriver_cyan"
if ("yellow")
icon_state = "screwdriver7"
item_state = "screwdriver_yellow"
if (prob(75))
src.pixel_y = rand(0, 16)
return
/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M)) return ..()
if(user.zone_sel.selecting != "eyes" && user.zone_sel.selecting != "head")
return ..()
if(user.disabilities & CLUMSY && prob(50))
M = user
return eyestab(M,user)
/*
* Wirecutters
*/
/obj/item/weapon/wirecutters
name = "wirecutters"
desc = "This cuts wires."
icon = 'icons/obj/items.dmi'
icon_state = "cutters"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 6.0
throw_speed = 3
throw_range = 7
w_class = 2.0
m_amt = 80
origin_tech = "materials=1;engineering=1"
attack_verb = list("pinched", "nipped")
hitsound = 'sound/items/Wirecutter.ogg'
/obj/item/weapon/wirecutters/New()
if(prob(50))
icon_state = "cutters-y"
item_state = "cutters_yellow"
/obj/item/weapon/wirecutters/attack(mob/living/carbon/C, mob/user)
if(istype(C) && C.handcuffed && istype(C.handcuffed, /obj/item/weapon/restraints/handcuffs/cable))
user.visible_message("<span class='notice'>[user] cuts [C]'s restraints with [src]!</span>")
qdel(C.handcuffed)
C.handcuffed = null
if(C.buckled && C.buckled.buckle_requires_restraints)
C.buckled.unbuckle_mob()
C.update_inv_handcuffed(0)
return
else
..()
/*
* Welding Tool
*/
/obj/item/weapon/weldingtool
name = "welding tool"
icon = 'icons/obj/items.dmi'
icon_state = "welder"
item_state = "welder"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 3
throwforce = 5
hitsound = "swing_hit"
throw_speed = 3
throw_range = 5
w_class = 2
m_amt = 70
g_amt = 30
origin_tech = "engineering=1"
var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
var/max_fuel = 20 //The max amount of fuel the welder can hold
/obj/item/weapon/weldingtool/New()
..()
create_reagents(max_fuel)
reagents.add_reagent("fuel", max_fuel)
update_icon()
return
/obj/item/weapon/weldingtool/proc/update_torch()
if(welding)
src.overlays = 0
overlays += "["-won"]"
item_state = "welder1"
else
item_state = "welder"
/obj/item/weapon/weldingtool/update_icon()
src.overlays = 0
var/ratio = get_fuel() / max_fuel
ratio = Ceiling(ratio*4) * 25
icon_state = "[initial(icon_state)][ratio]"
update_torch()
return
/obj/item/weapon/weldingtool/examine(mob/user)
..()
user << "It contains [get_fuel()] unit\s of fuel out of [max_fuel]."
/obj/item/weapon/weldingtool/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver))
flamethrower_screwdriver(I, user)
if(istype(I, /obj/item/stack/rods))
flamethrower_rods(I, user)
..()
/obj/item/weapon/weldingtool/attack(mob/living/carbon/human/H, mob/user)
if(!istype(H))
return ..()
var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting))
if(affecting.status == ORGAN_ROBOTIC && user.a_intent != "harm")
if(src.remove_fuel(0))
item_heal_robotic(H, user, 30, 0)
return
else
return
else
return ..()
/obj/item/weapon/weldingtool/process()
switch(welding)
if(0)
force = 3
damtype = "brute"
update_icon()
SSobj.processing.Remove(src)
return
//Welders left on now use up fuel, but lets not have them run out quite that fast
if(1)
force = 15
damtype = "fire"
if(prob(5))
remove_fuel(1)
update_icon()
//This is to start fires. process() is only called if the welder is on.
var/turf/location = loc
if(ismob(location))
var/mob/M = location
if(M.l_hand == src || M.r_hand == src)
location = get_turf(M)
if(isturf(location))
location.hotspot_expose(700, 5)
/obj/item/weapon/weldingtool/afterattack(atom/O, mob/user, proximity)
if(!proximity) return
if(istype(O, /obj/structure/reagent_dispensers/fueltank) && in_range(src, O))
if(!welding)
O.reagents.trans_to(src, max_fuel)
user << "<span class='notice'>[src] refueled.</span>"
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
update_icon()
return
else
message_admins("[key_name_admin(user)] triggered a fueltank explosion.")
log_game("[key_name(user)] triggered a fueltank explosion.")
user << "<span class='warning'>That was stupid of you.</span>"
O.ex_act()
return
if(welding)
remove_fuel(1)
var/turf/location = get_turf(user)
location.hotspot_expose(700, 50, 1)
if(isliving(O))
var/mob/living/L = O
L.IgniteMob()
/obj/item/weapon/weldingtool/attack_self(mob/user)
toggle(user)
update_icon()
//Returns the amount of fuel in the welder
/obj/item/weapon/weldingtool/proc/get_fuel()
return reagents.get_reagent_amount("fuel")
//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
/obj/item/weapon/weldingtool/proc/remove_fuel(amount = 1, mob/M = null)
if(!welding || !check_fuel())
return 0
if(get_fuel() >= amount)
reagents.remove_reagent("fuel", amount)
check_fuel()
if(M)
eyecheck(M)
return 1
else
if(M)
M << "<span class='notice'>You need more welding fuel to complete this task.</span>"
return 0
//Returns whether or not the welding tool is currently on.
/obj/item/weapon/weldingtool/proc/isOn()
return welding
//Turns off the welder if there is no more fuel (does this really need to be its own proc?)
/obj/item/weapon/weldingtool/proc/check_fuel(mob/user)
if(get_fuel() <= 0 && welding)
toggle(user, 1)
update_icon()
//mob icon update
if(ismob(loc))
var/mob/M = loc
M.update_inv_r_hand(0)
M.update_inv_l_hand(0)
return 0
return 1
//Toggles the welder off and on
/obj/item/weapon/weldingtool/proc/toggle(mob/user, message = 0)
if(!status)
return
welding = !welding
if(welding)
if(remove_fuel(1))
user << "<span class='notice'>You switch [src] on.</span>"
force = 15
damtype = "fire"
hitsound = 'sound/items/welder.ogg'
icon_state = "welder1"
SSobj.processing.Add(src)
else
user << "<span class='notice'>You need more fuel.</span>"
welding = 0
else
if(!message)
user << "<span class='notice'>You switch [src] off.</span>"
else
user << "<span class='notice'>[src] shuts off!</span>"
force = 3
damtype = "brute"
hitsound = "swing_hit"
icon_state = "welder"
//Decides whether or not to damage a player's eyes based on what they're wearing as protection
//Note: This should probably be moved to mob
/obj/item/weapon/weldingtool/proc/eyecheck(mob/user)
if(!iscarbon(user))
return 1
var/mob/living/carbon/C = user
var/safety = C.eyecheck()
switch(safety)
if(1)
usr << "<span class='warning'>Your eyes sting a little.</span>"
user.eye_stat += rand(1, 2)
if(user.eye_stat > 12)
user.eye_blurry += rand(3, 6)
if(0)
usr << "<span class='warning'>Your eyes burn.</span>"
user.eye_stat += rand(2, 4)
if(user.eye_stat > 10)
user.eye_blurry += rand(4, 10)
if(-1)
usr << "<span class='warning'>Your thermals intensify the welder's glow. Your eyes itch and burn severely!</span>"
user.eye_blurry += rand(12, 20)
user.eye_stat += rand(12, 16)
if(user.eye_stat > 10 && safety < 2)
user << "<span class='warning'>Your eyes are really starting to hurt. This can't be good for you!</span>"
if (prob(user.eye_stat - 25 + 1))
user << "<span class='warning'>You go blind!</span>"
user.disabilities |= BLIND
else if(prob(user.eye_stat - 15 + 1))
user << "<span class='warning'>You go blind!</span>"
user.eye_blind = 5
user.eye_blurry = 5
user.disabilities |= NEARSIGHT
spawn(100)
user.disabilities &= ~NEARSIGHT
/obj/item/weapon/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user)
if(welding)
user << "<span class='notice'>Turn it off first.</span>"
return
status = !status
if(status)
user << "<span class='notice'>You resecure [src].</span>"
else
user << "<span class='notice'>[src] can now be attached and modified.</span>"
add_fingerprint(user)
/obj/item/weapon/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user)
if(!status)
var/obj/item/stack/rods/R = I
if (R.use(1))
var/obj/item/weapon/flamethrower/F = new /obj/item/weapon/flamethrower(user.loc)
user.unEquip(src)
loc = F
F.weldtool = src
add_fingerprint(user)
user << "<span class='notice'>You add a rod to a welder, starting to build a flamethrower.</span>"
user.put_in_hands(F)
else
user << "<span class='warning'>You need one rod to start building a flamethrower.</span>"
return
/obj/item/weapon/weldingtool/largetank
name = "industrial welding tool"
max_fuel = 40
m_amt = 70
g_amt = 60
origin_tech = "engineering=2"
/obj/item/weapon/weldingtool/largetank/cyborg
/obj/item/weapon/weldingtool/largetank/cyborg/flamethrower_screwdriver()
return
/obj/item/weapon/weldingtool/largetank/cyborg/flamethrower_rods()
return
/obj/item/weapon/weldingtool/hugetank
name = "upgraded welding tool"
max_fuel = 80
w_class = 3.0
m_amt = 70
g_amt = 120
origin_tech = "engineering=3"
/obj/item/weapon/weldingtool/experimental
name = "experimental welding tool"
max_fuel = 40
w_class = 3.0
m_amt = 70
g_amt = 120
origin_tech = "engineering=4;plasmatech=3"
var/last_gen = 0
//Proc to make the experimental welder generate fuel, optimized as fuck -Sieve
//i don't think this is actually used, yaaaaay -Pete
/obj/item/weapon/weldingtool/experimental/proc/fuel_gen()
var/gen_amount = (world.time - last_gen) / 25
reagents += gen_amount
if(reagents > max_fuel)
reagents = max_fuel
/*
* Crowbar
*/
/obj/item/weapon/crowbar
name = "pocket crowbar"
desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
icon = 'icons/obj/items.dmi'
icon_state = "crowbar"
flags = CONDUCT
slot_flags = SLOT_BELT
force = 5
throwforce = 7
item_state = "crowbar"
w_class = 2
m_amt = 50
origin_tech = "engineering=1"
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
/obj/item/weapon/crowbar/red
icon = 'icons/obj/items.dmi'
icon_state = "red_crowbar"
item_state = "crowbar_red"
/obj/item/weapon/crowbar/large
name = "crowbar"
desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big."
force = 12
w_class = 3
throw_speed = 3
throw_range = 3
m_amt = 66
icon_state = "crowbar_large"