Removes Weapons (#7415)

* Adds icon and hitsound where needed.

* Moves alt_attack to /obj/item and deletes weapons.dm

* Replaced /obj/item/weapon with /obj/item

* Fixes merge issues.

* Fix merge issues.
This commit is contained in:
Werner
2019-11-16 18:36:13 +01:00
committed by GitHub
parent 128ca2235b
commit af16a489a6
1123 changed files with 27193 additions and 27175 deletions
+2 -2
View File
@@ -165,8 +165,8 @@
return
/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = I
if(istype(I, /obj/item/grab))
var/obj/item/grab/G = I
G.affecting.forceMove(src.loc)
visible_message("<span class='warning'>[G.assailant] smashes [G.affecting] through the foamed metal wall.</span>")
qdel(I)
@@ -1,14 +1,14 @@
//########################## CONTRABAND ;3333333333333333333 -Agouri ###################################################
/obj/item/weapon/contraband
/obj/item/contraband
name = "contraband item"
desc = "You probably shouldn't be holding this."
icon = 'icons/obj/contraband.dmi'
force = 0
/obj/item/weapon/contraband/poster
/obj/item/contraband/poster
name = "rolled-up poster"
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface."
icon_state = "rolled_poster"
@@ -16,7 +16,7 @@
var/serial_number = 0
/obj/item/weapon/contraband/poster/Initialize(mapload, given_serial = 0)
/obj/item/contraband/poster/Initialize(mapload, given_serial = 0)
. = ..()
if(given_serial == 0)
serial_number = rand(1, poster_designs.len)
@@ -25,7 +25,7 @@
name += " - No. [serial_number]"
//Places the poster on a wall
/obj/item/weapon/contraband/poster/afterattack(var/atom/A, var/mob/user, var/adjacent, var/clickparams)
/obj/item/contraband/poster/afterattack(var/atom/A, var/mob/user, var/adjacent, var/clickparams)
if (!adjacent)
return
@@ -65,7 +65,7 @@
addtimer(CALLBACK(src, .proc/place_on_wall, P, user, W), 28, TIMER_CLIENT_TIME)
/obj/item/weapon/contraband/poster/proc/place_on_wall(obj/structure/sign/poster/P, mob/user, turf/W)
/obj/item/contraband/poster/proc/place_on_wall(obj/structure/sign/poster/P, mob/user, turf/W)
if (QDELETED(P))
return
@@ -124,7 +124,7 @@
desc = "[initial(desc)] [design.desc]"
icon_state = design.icon_state // poster[serial_number]
/obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/structure/sign/poster/attackby(obj/item/W as obj, mob/user as mob)
if(W.iswirecutter())
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
if(ruined)
@@ -154,7 +154,7 @@
add_fingerprint(user)
/obj/structure/sign/poster/proc/roll_and_drop(turf/newloc)
var/obj/item/weapon/contraband/poster/P = new(src, serial_number)
var/obj/item/contraband/poster/P = new(src, serial_number)
P.forceMove(newloc)
src.forceMove(P)
qdel(src)
+4 -4
View File
@@ -124,7 +124,7 @@
/obj/effect/landmark/costume/chicken/New()
new /obj/item/clothing/suit/chickensuit(src.loc)
new /obj/item/clothing/head/chicken(src.loc)
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
new /obj/item/reagent_containers/food/snacks/egg(src.loc)
delete_me = 1
/obj/effect/landmark/costume/gladiator/New()
@@ -178,7 +178,7 @@
var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
new CHOICE(src.loc)
new /obj/item/clothing/shoes/black(src.loc)
new /obj/item/weapon/cane(src.loc)
new /obj/item/cane(src.loc)
new /obj/item/clothing/under/sl_suit(src.loc)
new /obj/item/clothing/mask/fakemoustache(src.loc)
delete_me = 1
@@ -231,13 +231,13 @@
/obj/effect/landmark/costume/cutewitch/New()
new /obj/item/clothing/under/sundress(src.loc)
new /obj/item/clothing/head/witchwig(src.loc)
new /obj/item/weapon/staff/broom(src.loc)
new /obj/item/staff/broom(src.loc)
delete_me = 1
/obj/effect/landmark/costume/fakewizard/New()
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
new /obj/item/clothing/head/wizard/fake(src.loc)
new /obj/item/weapon/staff/(src.loc)
new /obj/item/staff/(src.loc)
delete_me = 1
/obj/effect/landmark/costume/sexyclown/New()
+1 -1
View File
@@ -13,7 +13,7 @@
var/dat = "<B>Crew Manifest</B>:<BR>"
for(var/mob/living/carbon/human/M in mob_list)
dat += text(" <B>[]</B> - []<BR>", M.name, M.get_assignment())
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
var/obj/item/paper/P = new /obj/item/paper( src.loc )
P.info = dat
P.name = "paper- 'Crew Manifest'"
//SN src = null
@@ -30,7 +30,7 @@
// radio
if (0)
var/obj/item/assembly/r_i_ptank/R = new /obj/item/assembly/r_i_ptank(src.loc)
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/tank/phoron/p3 = new /obj/item/tank/phoron(R)
var/obj/item/device/radio/signaler/p1 = new /obj/item/device/radio/signaler(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -47,7 +47,7 @@
// proximity
if (1)
var/obj/item/assembly/m_i_ptank/R = new /obj/item/assembly/m_i_ptank(src.loc)
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/tank/phoron/p3 = new /obj/item/tank/phoron(R)
var/obj/item/device/prox_sensor/p1 = new /obj/item/device/prox_sensor(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -69,7 +69,7 @@
// timer
if (2)
var/obj/item/assembly/t_i_ptank/R = new /obj/item/assembly/t_i_ptank(src.loc)
var/obj/item/weapon/tank/phoron/p3 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/tank/phoron/p3 = new /obj/item/tank/phoron(R)
var/obj/item/device/timer/p1 = new /obj/item/device/timer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
R.part1 = p1
@@ -85,7 +85,7 @@
//bombvest
if(3)
var/obj/item/clothing/suit/armor/a_i_a_ptank/R = new /obj/item/clothing/suit/armor/a_i_a_ptank(src.loc)
var/obj/item/weapon/tank/phoron/p4 = new /obj/item/weapon/tank/phoron(R)
var/obj/item/tank/phoron/p4 = new /obj/item/tank/phoron(R)
var/obj/item/device/healthanalyzer/p1 = new /obj/item/device/healthanalyzer(R)
var/obj/item/device/igniter/p2 = new /obj/item/device/igniter(R)
var/obj/item/clothing/suit/armor/vest/p3 = new /obj/item/clothing/suit/armor/vest(R)
@@ -161,8 +161,8 @@
. = ..()
var/obj/item/device/transfer_valve/V = new(src.loc)
var/obj/item/weapon/tank/phoron/PT = new(V)
var/obj/item/weapon/tank/oxygen/OT = new(V)
var/obj/item/tank/phoron/PT = new(V)
var/obj/item/tank/oxygen/OT = new(V)
V.tank_one = PT
V.tank_two = OT
+2 -2
View File
@@ -20,13 +20,13 @@
qdel(src)
return
/obj/effect/spider/attackby(var/obj/item/weapon/W, var/mob/user)
/obj/effect/spider/attackby(var/obj/item/W, var/mob/user)
visible_message("<span class='warning'>[src] has been [LAZYPICK(W.attack_verb, "attacked")] with [W][(user ? " by [user]." : ".")]</span>")
var/damage = W.force / 4.0
if(W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0, user))
damage = 15
+23 -16
View File
@@ -175,8 +175,8 @@
to_chat(user, span("notice", "\The [src] slips out of your grasp before you can grab it!")) // because things called before this can move it
return // please don't pick things up
src.pickup(user)
if (istype(src.loc, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = src.loc
if (istype(src.loc, /obj/item/storage))
var/obj/item/storage/S = src.loc
S.remove_from_storage(src)
src.throwing = 0
@@ -192,7 +192,7 @@
return
/obj/item/attack_ai(mob/user as mob)
if (istype(src.loc, /obj/item/weapon/robot_module))
if (istype(src.loc, /obj/item/robot_module))
//If the item is part of a cyborg module, equip it
if(!isrobot(user))
return
@@ -202,9 +202,9 @@
// Due to storage type consolidation this should get used more now.
// I have cleaned it up a little, but it could probably use more. -Sayu
/obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
/obj/item/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/storage))
var/obj/item/storage/S = W
if(S.use_to_pickup)
if(S.collection_mode) //Mode is set to collect all items on a tile and we clicked on a valid one.
if(isturf(loc))
@@ -241,6 +241,13 @@
else if(S.can_be_inserted(src))
S.handle_item_insertion(src)
//Called when the user alt-clicks on something with this item in their active hand
//this function is designed to be overridden by individual weapons
/obj/item/proc/alt_attack(var/atom/target, var/mob/user)
return 1
//A return value of 1 continues on to do the normal alt-click action.
//A return value of 0 does not continue, and will not do the alt-click
/obj/item/proc/talk_into(mob/M as mob, text)
return
@@ -273,11 +280,11 @@
return
// called when this item is removed from a storage item, which is passed on as S. The loc variable is already set to the new destination before this is called.
/obj/item/proc/on_exit_storage(obj/item/weapon/storage/S as obj)
/obj/item/proc/on_exit_storage(obj/item/storage/S as obj)
return
// called when this item is added into a storage item, which is passed on as S. The loc variable is already set to the storage item.
/obj/item/proc/on_enter_storage(obj/item/weapon/storage/S as obj)
/obj/item/proc/on_enter_storage(obj/item/storage/S as obj)
return
// called when "found" in pockets and storage items. Returns 1 if the search should end.
@@ -376,23 +383,23 @@ var/list/global/slot_flags_enumeration = list(
if( !(istype(src, /obj/item/device/pda) || src.ispen() || is_type_in_list(src, H.wear_suit.allowed)) )
return 0
if(slot_handcuffed)
if(!istype(src, /obj/item/weapon/handcuffs))
if(!istype(src, /obj/item/handcuffs))
return 0
if(slot_legcuffed)
if(!istype(src, /obj/item/weapon/legcuffs))
if(!istype(src, /obj/item/legcuffs))
return 0
if(slot_in_backpack) //used entirely for equipping spawned mobs or at round start
var/allow = 0
if(H.back && istype(H.back, /obj/item/weapon/storage/backpack))
var/obj/item/weapon/storage/backpack/B = H.back
if(H.back && istype(H.back, /obj/item/storage/backpack))
var/obj/item/storage/backpack/B = H.back
if(B.can_be_inserted(src,1))
allow = 1
if(!allow)
return 0
if(slot_in_belt)
var/allow = 0
if(istype(H.belt, /obj/item/weapon/storage/belt))
var/obj/item/weapon/storage/belt/B = H.belt
if(istype(H.belt, /obj/item/storage/belt))
var/obj/item/storage/belt/B = H.belt
if(B.can_be_inserted(src,1))
allow = 1
if(!allow)
@@ -460,7 +467,7 @@ var/list/global/slot_flags_enumeration = list(
return
if (!I in view(1, src))
return
if (istype(I, /obj/item/weapon/storage/internal))
if (istype(I, /obj/item/storage/internal))
return
if(!usr.canmove || usr.stat || usr.restrained() || !Adjacent(usr))
return
@@ -592,7 +599,7 @@ var/list/global/slot_flags_enumeration = list(
if (!..())
return 0
if(istype(src, /obj/item/weapon/melee/energy))
if(istype(src, /obj/item/melee/energy))
return
//if we haven't made our blood_overlay already
+10 -10
View File
@@ -8,7 +8,7 @@
var/used = FALSE
var/ripped = FALSE
var/zipped = FALSE
var/obj/item/weapon/tank/internal_tank
var/obj/item/tank/internal_tank
var/syndie = FALSE
/obj/item/airbubble/Destroy()
@@ -37,7 +37,7 @@
else
R = new /obj/structure/closet/airbubble(user.loc)
if(!used)
internal_tank = new /obj/item/weapon/tank/emergency_oxygen/engi(src)
internal_tank = new /obj/item/tank/emergency_oxygen/engi(src)
internal_tank.air_contents.adjust_gas("oxygen", (42*ONE_ATMOSPHERE)/(R_IDEAL_GAS_EQUATION*T20C))
R.internal_tank = internal_tank
if(!isnull(internal_tank))
@@ -73,11 +73,11 @@
var/use_internal_tank = TRUE
var/datum/gas_mixture/inside_air
var/internal_tank_valve = 45 // arbitrary for now
var/obj/item/weapon/tank/internal_tank
var/obj/item/tank/internal_tank
var/syndie = FALSE
var/last_shake = 0
var/cooling = FALSE
var/obj/item/weapon/cell/cell = null
var/obj/item/cell/cell = null
var/max_cooling = 12 //in degrees per second - probably don't need to mess with heat capacity here
var/charge_consumption = 8.3 //charge per second at max_cooling
var/thermostat = T20C
@@ -393,7 +393,7 @@
// Handle most of things: restraining, cutting restrains, attaching tank.
/obj/structure/closet/airbubble/attackby(obj/W, mob/user as mob)
if(istype(W, /obj/item/weapon/tank))
if(istype(W, /obj/item/tank))
if(!isnull(use_internal_tank))
user.visible_message(
"<span class='warning'>[user] is attaching [W] to [src].</span>",
@@ -413,8 +413,8 @@
else
to_chat(user, "<span class='warning'>[src] already has a tank attached.</span>")
if(opened)
if(istype(W, /obj/item/weapon/grab))
var/obj/item/weapon/grab/G = W
if(istype(W, /obj/item/grab))
var/obj/item/grab/G = W
MouseDrop_T(G.affecting, user)
return 0
if(istype(W,/obj/item/tk_grab))
@@ -422,7 +422,7 @@
if(!dropsafety(W))
return
user.drop_item()
else if(istype(W, /obj/item/weapon/handcuffs/cable))
else if(istype(W, /obj/item/handcuffs/cable))
if(zipped)
to_chat(user, "<span class='warning'>[src]'s zipper is already restrained.</span>")
return
@@ -460,9 +460,9 @@
"<span class='warning'>[src] zipper's cable restrains has been cut by [user].</span>",
"<span class='notice'>You cut cable restrains on [src]'s zipper.</span>"
)
new/obj/item/weapon/handcuffs/cable(src.loc)
new/obj/item/handcuffs/cable(src.loc)
update_icon()
else if(istype(W, /obj/item/weapon/cell))
else if(istype(W, /obj/item/cell))
if(!isnull(cell))
to_chat(user, "<span class='warning'>[src] already has [cell] attached to it.</span>")
attack_hand(user)
+1 -1
View File
@@ -7,7 +7,7 @@
icon_state = "apc_frame"
flags = CONDUCT
/obj/item/frame/apc/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/frame/apc/attackby(obj/item/W as obj, mob/user as mob)
..()
if (W.iswrench())
new /obj/item/stack/material/steel( get_turf(src.loc), 2 )
+3 -3
View File
@@ -23,7 +23,7 @@
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
/obj/item/weapon/reagent_containers/food/snacks/honeycomb
/obj/item/reagent_containers/food/snacks/honeycomb
name = "honeycomb"
icon_state = "honeycomb"
desc = "Dripping with sugary sweetness."
@@ -31,7 +31,7 @@
New()
..()
/obj/item/weapon/reagent_containers/food/snacks/honeycomb/Initialize()
/obj/item/reagent_containers/food/snacks/honeycomb/Initialize()
. = ..()
reagents.add_reagent("honey",10)
reagents.add_reagent("nutriment", 0.5)
@@ -45,7 +45,7 @@
color = "#FFFF00"
fallback_specific_heat = 0.75
/obj/item/weapon/book/manual/hydroponics_beekeeping
/obj/item/book/manual/hydroponics_beekeeping
name = "The Ins and Outs of Apiculture - A Precise Art"
icon_state ="bookHydroponicsBees"
author = "Beekeeper Dave"
+1 -1
View File
@@ -13,7 +13,7 @@
qdel(src)
/obj/item/weapon/storage/box/bodybags
/obj/item/storage/box/bodybags
name = "body bags"
desc = "This box contains body bags."
icon_state = "bodybags"
+9 -9
View File
@@ -1,28 +1,28 @@
//Let's get some REAL contraband stuff in here. Because come on, getting brigged for LIPSTICK is no fun.
//Illicit drugs~
/obj/item/weapon/storage/pill_bottle/happy
/obj/item/storage/pill_bottle/happy
name = "bottle of Happy pills"
desc = "Highly illegal drug. When you want to see the rainbow."
starts_with = list(/obj/item/weapon/reagent_containers/pill/happy = 7)
starts_with = list(/obj/item/reagent_containers/pill/happy = 7)
/obj/item/weapon/storage/pill_bottle/zoom
/obj/item/storage/pill_bottle/zoom
name = "bottle of Zoom pills"
desc = "Highly illegal drug. Trade brain for speed."
starts_with = list(/obj/item/weapon/reagent_containers/pill/zoom = 7)
starts_with = list(/obj/item/reagent_containers/pill/zoom = 7)
/obj/item/weapon/reagent_containers/glass/beaker/vial/random
/obj/item/reagent_containers/glass/beaker/vial/random
flags = 0
var/list/random_reagent_list = list(list("water" = 15) = 1, list("cleaner" = 15) = 1)
/obj/item/weapon/reagent_containers/glass/beaker/vial/random/toxin
/obj/item/reagent_containers/glass/beaker/vial/random/toxin
random_reagent_list = list(
list("mindbreaker" = 10, "space_drugs" = 20) = 3,
list("carpotoxin" = 15) = 2,
list("impedrezene" = 15) = 2,
list("zombiepowder" = 10) = 1)
/obj/item/weapon/reagent_containers/glass/beaker/vial/random/Initialize()
/obj/item/reagent_containers/glass/beaker/vial/random/Initialize()
. = ..()
if(is_open_container())
flags ^= OPENCONTAINER
@@ -39,10 +39,10 @@
update_icon()
/obj/item/weapon/reagent_containers/glass/beaker/vial/venenum
/obj/item/reagent_containers/glass/beaker/vial/venenum
flags = 0
/obj/item/weapon/reagent_containers/glass/beaker/vial/venenum/Initialize()
/obj/item/reagent_containers/glass/beaker/vial/venenum/Initialize()
. = ..()
if(is_open_container())
flags ^= OPENCONTAINER
+13 -13
View File
@@ -1,46 +1,46 @@
/obj/item/weapon/pen/crayon/red
/obj/item/pen/crayon/red
icon_state = "crayonred"
colour = "#DA0000"
shadeColour = "#810C0C"
colourName = "red"
dust = "crayon_dust_red"
/obj/item/weapon/pen/crayon/orange
/obj/item/pen/crayon/orange
icon_state = "crayonorange"
colour = "#FF9300"
shadeColour = "#A55403"
colourName = "orange"
dust = "crayon_dust_orange"
/obj/item/weapon/pen/crayon/yellow
/obj/item/pen/crayon/yellow
icon_state = "crayonyellow"
colour = "#FFF200"
shadeColour = "#886422"
colourName = "yellow"
dust = "crayon_dust_yellow"
/obj/item/weapon/pen/crayon/green
/obj/item/pen/crayon/green
icon_state = "crayongreen"
colour = "#A8E61D"
shadeColour = "#61840F"
colourName = "green"
dust = "crayon_dust_green"
/obj/item/weapon/pen/crayon/blue
/obj/item/pen/crayon/blue
icon_state = "crayonblue"
colour = "#00B7EF"
shadeColour = "#0082A8"
colourName = "blue"
dust = "crayon_dust_blue"
/obj/item/weapon/pen/crayon/purple
/obj/item/pen/crayon/purple
icon_state = "crayonpurple"
colour = "#DA00FF"
shadeColour = "#810CFF"
colourName = "purple"
dust = "crayon_dust_purple"
/obj/item/weapon/pen/crayon/mime
/obj/item/pen/crayon/mime
icon_state = "crayonmime"
desc = "A very sad-looking crayon."
colour = "#FFFFFF"
@@ -49,7 +49,7 @@
dust = "crayon_dust_grey"
chem_volume = 15
/obj/item/weapon/pen/crayon/mime/attack_self(mob/living/user as mob) //inversion
/obj/item/pen/crayon/mime/attack_self(mob/living/user as mob) //inversion
if(colour != "#FFFFFF" && shadeColour != "#000000")
colour = "#FFFFFF"
shadeColour = "#000000"
@@ -60,7 +60,7 @@
to_chat(user, "You will now draw in black and white with this crayon.")
return
/obj/item/weapon/pen/crayon/rainbow
/obj/item/pen/crayon/rainbow
icon_state = "crayonrainbow"
colour = "#FFF000"
shadeColour = "#000FFF"
@@ -68,12 +68,12 @@
dust = "crayon_dust_brown"
chem_volume = 20
/obj/item/weapon/pen/crayon/rainbow/attack_self(mob/living/user as mob)
/obj/item/pen/crayon/rainbow/attack_self(mob/living/user as mob)
colour = input(user, "Please select the main colour.", "Crayon colour") as color
shadeColour = input(user, "Please select the shade colour.", "Crayon colour") as color
return
/obj/item/weapon/pen/crayon/afterattack(atom/target, mob/user as mob, proximity)
/obj/item/pen/crayon/afterattack(atom/target, mob/user as mob, proximity)
if(!proximity) return
if(istype(target,/turf/simulated/floor))
var/originaloc = user.loc
@@ -104,7 +104,7 @@
qdel(src)
return
/obj/item/weapon/pen/crayon/attack(mob/M as mob, mob/user as mob, var/target_zone)
/obj/item/pen/crayon/attack(mob/M as mob, mob/user as mob, var/target_zone)
if(M == user)
to_chat(user, "You take a bite of the crayon and swallow it.")
user.adjustNutritionLoss(-1)
@@ -115,5 +115,5 @@
else
..(M, user, target_zone)
/obj/item/weapon/pen/crayon/attack_self(var/mob/user)
/obj/item/pen/crayon/attack_self(var/mob/user)
return
+49 -49
View File
@@ -16,7 +16,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
//Main variables
var/owner = null
var/default_cartridge = 0 // Access level defined by cartridge
var/obj/item/weapon/cartridge/cartridge = null //current cartridge
var/obj/item/cartridge/cartridge = null //current cartridge
var/mode = 0 //Controls what menu the PDA will display. 0 is hub; the rest are either built in or based on cartridge.
var/lastmode = 0
@@ -59,13 +59,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/list/no_auto_update = list(1, 40, 43, 44, 441, 45, 451) // These modes we turn off autoupdate
var/list/update_every_five = list(3, 41, 433, 46, 47, 48, 49) // These we update every 5 ticks
var/obj/item/weapon/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both.
var/obj/item/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both.
var/ownjob = null //related to above - this is assignment (potentially alt title)
var/ownrank = null // this one is rank, never alt title
var/obj/item/device/paicard/pai = null // A slot for a personal AI device
var/obj/item/weapon/pen/pen
var/obj/item/pen/pen
var/list/obj/machinery/requests_console/linked_consoles
var/flippable = 1
@@ -79,51 +79,51 @@ var/global/list/obj/item/device/pda/PDAs = list()
to_chat(user, "There is \a [pen] in the pen slot.")
/obj/item/device/pda/medical
default_cartridge = /obj/item/weapon/cartridge/medical
default_cartridge = /obj/item/cartridge/medical
icon_state = "pda-m"
/obj/item/device/pda/viro
default_cartridge = /obj/item/weapon/cartridge/medical
default_cartridge = /obj/item/cartridge/medical
icon_state = "pda-v"
/obj/item/device/pda/engineering
default_cartridge = /obj/item/weapon/cartridge/engineering
default_cartridge = /obj/item/cartridge/engineering
icon_state = "pda-e"
/obj/item/device/pda/security
default_cartridge = /obj/item/weapon/cartridge/security
default_cartridge = /obj/item/cartridge/security
icon_state = "pda-s"
/obj/item/device/pda/detective
default_cartridge = /obj/item/weapon/cartridge/detective
default_cartridge = /obj/item/cartridge/detective
icon_state = "pda-det"
/obj/item/device/pda/warden
default_cartridge = /obj/item/weapon/cartridge/security
default_cartridge = /obj/item/cartridge/security
icon_state = "pda-warden"
/obj/item/device/pda/janitor
default_cartridge = /obj/item/weapon/cartridge/janitor
default_cartridge = /obj/item/cartridge/janitor
icon_state = "pda-j"
ttone = "slip"
/obj/item/device/pda/science
default_cartridge = /obj/item/weapon/cartridge/signal/science
default_cartridge = /obj/item/cartridge/signal/science
icon_state = "pda-tox"
ttone = "boom"
/obj/item/device/pda/xenobio
default_cartridge = /obj/item/weapon/cartridge/signal/science
default_cartridge = /obj/item/cartridge/signal/science
icon_state = "pda-xenobio"
/obj/item/device/pda/clown
default_cartridge = /obj/item/weapon/cartridge/clown
default_cartridge = /obj/item/cartridge/clown
icon_state = "pda-clown"
desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings."
ttone = "honk"
/obj/item/device/pda/mime
default_cartridge = /obj/item/weapon/cartridge/mime
default_cartridge = /obj/item/cartridge/mime
icon_state = "pda-mime"
message_silent = 1
news_silent = 1
@@ -131,55 +131,55 @@ var/global/list/obj/item/device/pda/PDAs = list()
newstone = "silence"
/obj/item/device/pda/heads
default_cartridge = /obj/item/weapon/cartridge/head
default_cartridge = /obj/item/cartridge/head
icon_state = "pda-h"
news_silent = 1
/obj/item/device/pda/heads/hop
default_cartridge = /obj/item/weapon/cartridge/hop
default_cartridge = /obj/item/cartridge/hop
icon_state = "pda-hop"
/obj/item/device/pda/heads/hos
default_cartridge = /obj/item/weapon/cartridge/hos
default_cartridge = /obj/item/cartridge/hos
icon_state = "pda-hos"
/obj/item/device/pda/heads/ce
default_cartridge = /obj/item/weapon/cartridge/ce
default_cartridge = /obj/item/cartridge/ce
icon_state = "pda-ce"
/obj/item/device/pda/heads/cmo
default_cartridge = /obj/item/weapon/cartridge/cmo
default_cartridge = /obj/item/cartridge/cmo
icon_state = "pda-cmo"
/obj/item/device/pda/heads/rd
default_cartridge = /obj/item/weapon/cartridge/rd
default_cartridge = /obj/item/cartridge/rd
icon_state = "pda-rd"
/obj/item/device/pda/captain
default_cartridge = /obj/item/weapon/cartridge/captain
default_cartridge = /obj/item/cartridge/captain
icon_state = "pda-c"
detonate = 0
//toff = 1
/obj/item/device/pda/ert
default_cartridge = /obj/item/weapon/cartridge/captain
default_cartridge = /obj/item/cartridge/captain
icon_state = "pda-h"
detonate = 0
hidden = 1
/obj/item/device/pda/cargo
default_cartridge = /obj/item/weapon/cartridge/quartermaster
default_cartridge = /obj/item/cartridge/quartermaster
icon_state = "pda-cargo"
/obj/item/device/pda/quartermaster
default_cartridge = /obj/item/weapon/cartridge/quartermaster
default_cartridge = /obj/item/cartridge/quartermaster
icon_state = "pda-q"
/obj/item/device/pda/shaftminer
icon_state = "pda-miner"
/obj/item/device/pda/syndicate
default_cartridge = /obj/item/weapon/cartridge/syndicate
default_cartridge = /obj/item/cartridge/syndicate
icon_state = "pda-syn"
name = "Military PDA"
owner = "John Doe"
@@ -190,12 +190,12 @@ var/global/list/obj/item/device/pda/PDAs = list()
ttone = "holy"
/obj/item/device/pda/lawyer
default_cartridge = /obj/item/weapon/cartridge/lawyer
default_cartridge = /obj/item/cartridge/lawyer
icon_state = "pda-lawyer"
ttone = "..."
/obj/item/device/pda/botanist
//default_cartridge = /obj/item/weapon/cartridge/botanist
//default_cartridge = /obj/item/cartridge/botanist
icon_state = "pda-hydro"
/obj/item/device/pda/roboticist
@@ -220,19 +220,19 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-bar"
/obj/item/device/pda/atmos
default_cartridge = /obj/item/weapon/cartridge/atmos
default_cartridge = /obj/item/cartridge/atmos
icon_state = "pda-atmo"
/obj/item/device/pda/chemist
default_cartridge = /obj/item/weapon/cartridge/chemistry
default_cartridge = /obj/item/cartridge/chemistry
icon_state = "pda-chem"
/obj/item/device/pda/psych
default_cartridge = /obj/item/weapon/cartridge/medical
default_cartridge = /obj/item/cartridge/medical
icon_state = "pda-psych"
/obj/item/device/pda/paramedic
default_cartridge = /obj/item/weapon/cartridge/medical
default_cartridge = /obj/item/cartridge/medical
icon_state = "pda-paramedic"
/obj/item/device/pda/merchant
@@ -338,7 +338,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
cartridge = new default_cartridge(src)
if (has_pen)
pen = new /obj/item/weapon/pen(src)
pen = new /obj/item/pen(src)
/obj/item/device/pda/proc/try_sort_pda_list()
addtimer(CALLBACK(GLOBAL_PROC, /proc/sortTim, PDAs, /proc/cmp_pda), 1 SECOND, TIMER_UNIQUE | TIMER_OVERRIDE | TIMER_NO_HASH_WAIT)
@@ -1245,13 +1245,13 @@ var/global/list/obj/item/device/pda/PDAs = list()
return 1
else
var/obj/item/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && user.unEquip(I))
if (istype(I, /obj/item/card/id) && user.unEquip(I))
I.forceMove(src)
id = I
return 1
else
var/obj/item/weapon/card/I = user.get_active_hand()
if (istype(I, /obj/item/weapon/card/id) && I:registered_name && user.unEquip(I))
var/obj/item/card/I = user.get_active_hand()
if (istype(I, /obj/item/card/id) && I:registered_name && user.unEquip(I))
var/obj/old_id = id
I.forceMove(src)
id = I
@@ -1262,7 +1262,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
// access to status display signals
/obj/item/device/pda/attackby(obj/item/C as obj, mob/user as mob)
..()
if(istype(C, /obj/item/weapon/cartridge) && !cartridge)
if(istype(C, /obj/item/cartridge) && !cartridge)
cartridge = C
user.drop_from_inventory(cartridge,src)
to_chat(user, "<span class='notice'>You insert [cartridge] into [src].</span>")
@@ -1271,8 +1271,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(cartridge.radio)
cartridge.radio.hostpda = src
else if(istype(C, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = C
else if(istype(C, /obj/item/card/id))
var/obj/item/card/id/idcard = C
if(!idcard.registered_name)
to_chat(user, "<span class='notice'>\The [src] rejects the ID.</span>")
return
@@ -1302,7 +1302,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
to_chat(user, "<span class='notice'>You slide \the [C] into \the [src].</span>")
return
/obj/item/device/pda/proc/update_userinfo(var/obj/item/weapon/card/id/idcard, var/mob/living/user)
/obj/item/device/pda/proc/update_userinfo(var/obj/item/card/id/idcard, var/mob/living/user)
owner = idcard.registered_name
ownjob = idcard.assignment
ownrank = idcard.rank
@@ -1392,7 +1392,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(5)
analyze_gases(A, user)
if (!scanmode && istype(A, /obj/item/weapon/paper) && owner)
if (!scanmode && istype(A, /obj/item/paper) && owner)
// JMO 20140705: Makes scanned document show up properly in the notes. Not pretty for formatted documents,
// as this will clobber the HTML, but at least it lets you scan a document. You can restore the original
// notes by editing the note again. (Was going to allow you to edit, but scanned documents are too long.)
@@ -1466,7 +1466,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if (istype(AM, /mob/living))
var/mob/living/M = AM
if(M.slip("the PDA",8) && M.real_name != src.owner && istype(src.cartridge, /obj/item/weapon/cartridge/clown))
if(M.slip("the PDA",8) && M.real_name != src.owner && istype(src.cartridge, /obj/item/cartridge/clown))
if(src.cartridge.charges < 5)
src.cartridge.charges++
@@ -1502,24 +1502,24 @@ var/global/list/obj/item/device/pda/PDAs = list()
//Some spare PDAs in a box
/obj/item/weapon/storage/box/PDAs
/obj/item/storage/box/PDAs
name = "box of spare PDAs"
desc = "A box of spare PDA microcomputers."
icon_state = "pdabox"
/obj/item/weapon/storage/box/PDAs/fill()
/obj/item/storage/box/PDAs/fill()
..()
new /obj/item/device/pda(src)
new /obj/item/device/pda(src)
new /obj/item/device/pda(src)
new /obj/item/device/pda(src)
new /obj/item/weapon/cartridge/head(src)
new /obj/item/cartridge/head(src)
var/newcart = pick( /obj/item/weapon/cartridge/engineering,
/obj/item/weapon/cartridge/security,
/obj/item/weapon/cartridge/medical,
/obj/item/weapon/cartridge/signal/science,
/obj/item/weapon/cartridge/quartermaster)
var/newcart = pick( /obj/item/cartridge/engineering,
/obj/item/cartridge/security,
/obj/item/cartridge/medical,
/obj/item/cartridge/signal/science,
/obj/item/cartridge/quartermaster)
new newcart(src)
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
+34 -34
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/cartridge
/obj/item/cartridge
name = "generic cartridge"
desc = "A data cartridge for portable microcomputers."
icon = 'icons/obj/cartridge.dmi'
@@ -32,106 +32,106 @@
var/message2
var/list/stored_data = list()
/obj/item/weapon/cartridge/Destroy()
/obj/item/cartridge/Destroy()
QDEL_NULL(radio)
return ..()
/obj/item/weapon/cartridge/engineering
/obj/item/cartridge/engineering
name = "\improper Power-ON cartridge"
icon_state = "cart-e"
access_engine = 1
/obj/item/weapon/cartridge/atmos
/obj/item/cartridge/atmos
name = "\improper BreatheDeep cartridge"
icon_state = "cart-a"
access_atmos = 1
/obj/item/weapon/cartridge/medical
/obj/item/cartridge/medical
name = "\improper Med-U cartridge"
icon_state = "cart-m"
access_medical = 1
/obj/item/weapon/cartridge/chemistry
/obj/item/cartridge/chemistry
name = "\improper ChemWhiz cartridge"
icon_state = "cart-chem"
access_reagent_scanner = 1
/obj/item/weapon/cartridge/security
/obj/item/cartridge/security
name = "\improper R.O.B.U.S.T. cartridge"
icon_state = "cart-s"
access_security = 1
/obj/item/weapon/cartridge/security/Initialize()
/obj/item/cartridge/security/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/beepsky(src)
/obj/item/weapon/cartridge/detective
/obj/item/cartridge/detective
name = "\improper D.E.T.E.C.T. cartridge"
icon_state = "cart-s"
access_security = 1
access_medical = 1
/obj/item/weapon/cartridge/janitor
/obj/item/cartridge/janitor
name = "\improper CustodiPRO cartridge"
desc = "The ultimate in clean-room design."
icon_state = "cart-j"
access_janitor = 1
/obj/item/weapon/cartridge/lawyer
/obj/item/cartridge/lawyer
name = "\improper P.R.O.V.E. cartridge"
icon_state = "cart-s"
access_security = 1
/obj/item/weapon/cartridge/clown
/obj/item/cartridge/clown
name = "\improper Honkworks 5.0 cartridge"
icon_state = "cart-clown"
access_clown = 1
charges = 5
/obj/item/weapon/cartridge/mime
/obj/item/cartridge/mime
name = "\improper Gestur-O 1000 cartridge"
icon_state = "cart-mi"
access_mime = 1
charges = 5
/*
/obj/item/weapon/cartridge/botanist
/obj/item/cartridge/botanist
name = "Green Thumb v4.20"
icon_state = "cart-b"
access_flora = 1
*/
/obj/item/weapon/cartridge/signal
/obj/item/cartridge/signal
name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module."
/obj/item/weapon/cartridge/signal/science
/obj/item/cartridge/signal/science
name = "\improper Signal Ace 2 cartridge"
desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox"
access_reagent_scanner = 1
access_atmos = 1
/obj/item/weapon/cartridge/signal/Initialize()
/obj/item/cartridge/signal/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/signal(src)
/obj/item/weapon/cartridge/quartermaster
/obj/item/cartridge/quartermaster
name = "\improper Space Parts & Space Vendors cartridge"
desc = "Perfect for the Quartermaster on the go!"
icon_state = "cart-q"
access_quartermaster = 1
/obj/item/weapon/cartridge/quartermaster/Initialize()
/obj/item/cartridge/quartermaster/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/mule(src)
/obj/item/weapon/cartridge/head
/obj/item/cartridge/head
name = "\improper Easy-Record DELUXE"
icon_state = "cart-h"
access_status_display = 1
/obj/item/weapon/cartridge/hop
/obj/item/cartridge/hop
name = "\improper HumanResources9001 cartridge"
icon_state = "cart-h"
access_status_display = 1
@@ -139,46 +139,46 @@
access_janitor = 1
access_security = 1
/obj/item/weapon/cartridge/hop/Initialize()
/obj/item/cartridge/hop/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/mule(src)
/obj/item/weapon/cartridge/hos
/obj/item/cartridge/hos
name = "\improper R.O.B.U.S.T. DELUXE"
icon_state = "cart-hos"
access_status_display = 1
access_security = 1
/obj/item/weapon/cartridge/hos/Initialize()
/obj/item/cartridge/hos/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/beepsky(src)
/obj/item/weapon/cartridge/ce
/obj/item/cartridge/ce
name = "\improper Power-On DELUXE"
icon_state = "cart-ce"
access_status_display = 1
access_engine = 1
access_atmos = 1
/obj/item/weapon/cartridge/cmo
/obj/item/cartridge/cmo
name = "\improper Med-U DELUXE"
icon_state = "cart-cmo"
access_status_display = 1
access_reagent_scanner = 1
access_medical = 1
/obj/item/weapon/cartridge/rd
/obj/item/cartridge/rd
name = "\improper Signal Ace DELUXE"
icon_state = "cart-rd"
access_status_display = 1
access_reagent_scanner = 1
access_atmos = 1
/obj/item/weapon/cartridge/rd/Initialize()
/obj/item/cartridge/rd/Initialize()
. = ..()
radio = new /obj/item/radio/integrated/signal(src)
/obj/item/weapon/cartridge/captain
/obj/item/cartridge/captain
name = "\improper Value-PAK cartridge"
desc = "Now with 200% more value!"
icon_state = "cart-c"
@@ -191,7 +191,7 @@
access_status_display = 1
access_atmos = 1
/obj/item/weapon/cartridge/syndicate
/obj/item/cartridge/syndicate
name = "\improper Detomatix cartridge"
icon_state = "cart"
access_remote_door = 1
@@ -199,7 +199,7 @@
remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing.
charges = 4
/obj/item/weapon/cartridge/proc/post_status(var/command, var/data1, var/data2)
/obj/item/cartridge/proc/post_status(var/command, var/data1, var/data2)
var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
if(!frequency) return
@@ -236,7 +236,7 @@
*/
/obj/item/weapon/cartridge/proc/create_NanoUI_values(mob/user as mob)
/obj/item/cartridge/proc/create_NanoUI_values(mob/user as mob)
var/values[0]
/* Signaler (Mode: 40) */
@@ -432,7 +432,7 @@
else
JaniData["user_loc"] = list("x" = 0, "y" = 0)
var/MopData[0]
for(var/obj/item/weapon/mop/M in global.janitorial_supplies)
for(var/obj/item/mop/M in global.janitorial_supplies)
var/turf/ml = get_turf(M)
if(ml)
if(ml.z != cl.z)
@@ -486,7 +486,7 @@
return values
/obj/item/weapon/cartridge/Topic(href, href_list)
/obj/item/cartridge/Topic(href, href_list)
..()
if (!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
+13 -13
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/aicard
/obj/item/aicard
name = "inteliCard"
icon = 'icons/obj/pai.dmi'
icon_state = "aicard" // aicard-full
@@ -10,7 +10,7 @@
var/mob/living/silicon/ai/carded_ai
/obj/item/weapon/aicard/examine(mob/user)
/obj/item/aicard/examine(mob/user)
..()
var/message = "Status of [carded_ai] is: "
if(!carded_ai)
@@ -23,18 +23,18 @@
message += span("warning", "inactive.")
to_chat(user, message)
/obj/item/weapon/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob, var/target_zone)
/obj/item/aicard/attack(mob/living/silicon/decoy/M as mob, mob/user as mob, var/target_zone)
if (!istype (M, /mob/living/silicon/decoy))
return ..()
else
M.death()
to_chat(user, "<b>ERROR ERROR ERROR</b>")
/obj/item/weapon/aicard/attack_self(mob/user)
/obj/item/aicard/attack_self(mob/user)
ui_interact(user)
/obj/item/weapon/aicard/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
/obj/item/aicard/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
var/data[0]
data["has_ai"] = carded_ai != null
if(carded_ai)
@@ -59,7 +59,7 @@
ui.open()
ui.set_auto_update(1)
/obj/item/weapon/aicard/Topic(href, href_list, state)
/obj/item/aicard/Topic(href, href_list, state)
if(..())
return 1
@@ -89,7 +89,7 @@
update_icon()
return 1
/obj/item/weapon/aicard/update_icon()
/obj/item/aicard/update_icon()
cut_overlays()
if(carded_ai)
if (!carded_ai.control_disabled)
@@ -101,7 +101,7 @@
else
icon_state = "aicard"
/obj/item/weapon/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user)
/obj/item/aicard/proc/grab_ai(var/mob/living/silicon/ai/ai, var/mob/living/user)
if(!ai.client)
to_chat(user, "<span class='danger'>ERROR:</span> AI [ai.name] is offline. Unable to download.")
return 0
@@ -137,7 +137,7 @@
update_icon()
return 1
/obj/item/weapon/aicard/proc/clear()
/obj/item/aicard/proc/clear()
if(carded_ai && istype(carded_ai.loc, /turf))
carded_ai.canmove = 0
carded_ai.carded = 0
@@ -145,21 +145,21 @@
carded_ai = null
update_icon()
/obj/item/weapon/aicard/see_emote(mob/living/M, text)
/obj/item/aicard/see_emote(mob/living/M, text)
if(carded_ai && carded_ai.client)
var/rendered = "<span class='message'>[text]</span>"
carded_ai.show_message(rendered, 2)
..()
/obj/item/weapon/aicard/show_message(msg, type, alt, alt_type)
/obj/item/aicard/show_message(msg, type, alt, alt_type)
if(carded_ai && carded_ai.client)
var/rendered = "<span class='message'>[msg]</span>"
carded_ai.show_message(rendered, type)
..()
/obj/item/weapon/aicard/relaymove(var/mob/user, var/direction)
/obj/item/aicard/relaymove(var/mob/user, var/direction)
if(user.stat || user.stunned)
return
var/obj/item/weapon/rig/rig = src.get_rig()
var/obj/item/rig/rig = src.get_rig()
if(istype(rig))
rig.forced_move(direction, user)
@@ -11,7 +11,7 @@
origin_tech = list(TECH_ILLEGAL = 4, TECH_MAGNET = 4)
var/can_use = 1
var/obj/effect/dummy/chameleon/active_dummy = null
var/saved_item = /obj/item/weapon/cigbutt
var/saved_item = /obj/item/cigbutt
var/saved_icon = 'icons/obj/clothing/masks.dmi'
var/saved_icon_state = "cigbutt"
var/saved_overlays
@@ -30,7 +30,7 @@
/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity)
if(!proximity) return
if(!active_dummy)
if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear))
if(istype(target,/obj/item) && !istype(target, /obj/item/disk/nuclear))
playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
to_chat(user, "<span class='notice'>Scanned [target].</span>")
saved_item = target.type
+2 -2
View File
@@ -167,8 +167,8 @@
for(var/mob/living/carbon/M in oviewers(3, null))
if(prob(50))
if (locate(/obj/item/weapon/cloaking_device, M))
for(var/obj/item/weapon/cloaking_device/S in M)
if (locate(/obj/item/cloaking_device, M))
for(var/obj/item/cloaking_device/S in M)
S.active = 0
S.icon_state = "shield0"
var/safety = M.eyecheck(TRUE)
@@ -10,7 +10,7 @@
slot_flags = SLOT_BELT
w_class = 1
var/turf/pointer_loc
var/obj/item/weapon/stock_parts/micro_laser/diode //cant use the laser without it
var/obj/item/stock_parts/micro_laser/diode //cant use the laser without it
@@ -34,7 +34,7 @@
/obj/item/device/laser_pointer/upgraded/Initialize()
. = ..()
diode = new /obj/item/weapon/stock_parts/micro_laser/ultra
diode = new /obj/item/stock_parts/micro_laser/ultra
@@ -42,7 +42,7 @@
laser_act(M, user)
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/stock_parts/micro_laser))
if(istype(W, /obj/item/stock_parts/micro_laser))
if(!diode)
user.drop_item()
W.forceMove(src)
@@ -89,8 +89,8 @@
else
to_chat(user, "<span class='warning'>You need 5 sheets of glass to replace lights.</span>")
if(istype(W, /obj/item/weapon/light))
var/obj/item/weapon/light/L = W
if(istype(W, /obj/item/light))
var/obj/item/light/L = W
if(L.status == 0) // LIGHT OKAY
if(uses < max_uses)
AddUses(1)
@@ -104,27 +104,27 @@
/obj/item/device/lightreplacer/afterattack(var/atom/target, var/mob/living/user, proximity, params)
if (istype(target, /obj/item/weapon/storage/box))
if (istype(target, /obj/item/storage/box))
if (box_contains_lights(target))
load_lights_from_box(target, user)
else
to_chat(user, "This box has no bulbs in it!")
/obj/item/device/lightreplacer/proc/box_contains_lights(var/obj/item/weapon/storage/box/box)
for (var/obj/item/weapon/light/L in box.contents)
/obj/item/device/lightreplacer/proc/box_contains_lights(var/obj/item/storage/box/box)
for (var/obj/item/light/L in box.contents)
if (L.status == 0)
return 1
return 0
/obj/item/device/lightreplacer/proc/load_lights_from_box(var/obj/item/weapon/storage/box/box, var/mob/user)
/obj/item/device/lightreplacer/proc/load_lights_from_box(var/obj/item/storage/box/box, var/mob/user)
var/boxstartloc = box.loc
var/ourstartloc = src.loc
user.visible_message("<span class='notice'>[user] starts loading lights from the [box] into their [src]</span>", "<span class='notice'>You start loading lights from the [box] into the [src]</span>")
while (uses < max_uses)
var/bulb = null
for (var/obj/item/weapon/light/L in box.contents)
for (var/obj/item/light/L in box.contents)
if (L.status == 0)
bulb = L
break
@@ -147,7 +147,7 @@
/obj/item/device/lightreplacer/proc/stored()
var/count = 0
for (var/obj/item/weapon/light/L in src)
for (var/obj/item/light/L in src)
count++
return count
@@ -185,7 +185,7 @@
if(target.status != LIGHT_EMPTY)
var/obj/item/weapon/light/L1 = new target.light_type(target.loc)
var/obj/item/light/L1 = new target.light_type(target.loc)
L1.status = target.status
L1.rigged = target.rigged
L1.brightness_range = target.brightness_range
@@ -206,7 +206,7 @@
else
to_chat(U, "<span class='danger'>\The [src] tries to suck up the broken [target.fitting] but it has no more space. Empty it into the trash!</span>")
var/obj/item/weapon/light/L2 = new target.light_type()
var/obj/item/light/L2 = new target.light_type()
target.status = L2.status
target.switchcount = L2.switchcount
@@ -27,8 +27,8 @@
var/obj/machinery/door/airlock/target_node1 = null
var/obj/machinery/door/airlock/target_node2 = null
var/obj/machinery/door/airlock/target = null
var/obj/item/weapon/cell/powercell
var/obj/item/weapon/cell/internal_cell
var/obj/item/cell/powercell
var/obj/item/cell/internal_cell
/obj/item/device/magnetic_lock/security
department = "Security"
@@ -44,8 +44,8 @@
/obj/item/device/magnetic_lock/Initialize()
. = ..()
powercell = new /obj/item/weapon/cell/high()
internal_cell = new /obj/item/weapon/cell/device()
powercell = new /obj/item/cell/high()
internal_cell = new /obj/item/cell/device()
if (istext(department))
desc += " It is painted with [department] colors."
@@ -109,7 +109,7 @@
to_chat(user, "<span class='danger'>[src] is broken beyond repair!</span>")
return
if (istype(I, /obj/item/weapon/card/id))
if (istype(I, /obj/item/card/id))
if (!constructionstate && !hacked)
if (check_access(I))
locked = !locked
@@ -127,7 +127,7 @@
to_chat(user, "<span class='danger'>You cannot swipe your [I] through [src] with it partially dismantled!</span>")
return
if (istype(I, /obj/item/weapon) && user.a_intent == "harm")
if (istype(I, /obj/item) && user.a_intent == "harm")
if (I.force >= 18)
user.visible_message("<span class='danger'>[user] bashes [src] with [I]!</span>", "<span class='danger'>You strike [src] with [I], damaging it!</span>")
takedamage(I.force)
@@ -143,8 +143,8 @@
return
switch (constructionstate)
if (0)
if (istype(I, /obj/item/weapon/card/emag))
var/obj/item/weapon/card/emag/emagcard = I
if (istype(I, /obj/item/card/emag))
var/obj/item/card/emag/emagcard = I
emagcard.uses--
visible_message("<span class='danger'>[src] sparks and falls off the door!</span>", "<span class='danger'>You emag [src], frying its circuitry[status == STATUS_ACTIVE ? " and making it drop onto the floor" : ""]!</span>")
@@ -155,7 +155,7 @@
return
if (I.iswelder())
var/obj/item/weapon/weldingtool/WT = I
var/obj/item/weldingtool/WT = I
if (WT.remove_fuel(2, user))
user.visible_message(span("notice", "[user] starts welding the metal shell of [src]."), span("notice", "You start [hacked ? "repairing" : "welding open"] the metal covering of [src]."))
playsound(loc, 'sound/items/Welder.ogg', 50, 1)
@@ -180,7 +180,7 @@
return
if (1)
if (istype(I, /obj/item/weapon/cell))
if (istype(I, /obj/item/cell))
if (powercell)
to_chat(user, span("notice","There's already a powercell in \the [src]."))
return
@@ -202,7 +202,7 @@
setconstructionstate(0)
return
if (istype(I, /obj/item/weapon/cell))
if (istype(I, /obj/item/cell))
if (!powercell)
to_chat(user, span("notice","You place the [I] inside \the [src]."))
user.drop_from_inventory(I,src)
@@ -232,8 +232,8 @@
/obj/item/device/magnetic_lock/process()
if(!processpower)
return
var/obj/item/weapon/cell/C = powercell // both of these are for viewing ease
var/obj/item/weapon/cell/BU = internal_cell
var/obj/item/cell/C = powercell // both of these are for viewing ease
var/obj/item/cell/BU = internal_cell
var/delta_sec = (world.time - last_process_time) / 10
var/drainamount = drain_per_second * delta_sec
if (C)
+4 -4
View File
@@ -13,7 +13,7 @@
/obj/item/device/paicard/relaymove(var/mob/user, var/direction)
if(user.stat || user.stunned)
return
var/obj/item/weapon/rig/rig = src.get_rig()
var/obj/item/rig/rig = src.get_rig()
if(istype(rig))
rig.forced_move(direction, user)
@@ -30,7 +30,7 @@
return ..()
/obj/item/device/paicard/attackby(obj/item/C as obj, mob/user as mob)
if(istype(C, /obj/item/weapon/card/id))
if(istype(C, /obj/item/card/id))
scan_ID(C, user)
@@ -39,7 +39,7 @@
//Scanning an ID replaces any previously stored access with the new set.
//Only cards that match the imprinted DNA can be used, it's not a free Agent ID card.
//Possible TODO in future, allow emagging a paicard to let it work like an agent ID, accumulating access from any ID
/obj/item/device/paicard/proc/scan_ID(var/obj/item/weapon/card/id/card, var/mob/user)
/obj/item/device/paicard/proc/scan_ID(var/obj/item/card/id/card, var/mob/user)
if (!pai)
to_chat(user, "<span class='warning'>Error: ID Registration failed. No pAI personality installed.</span>")
playsound(src.loc, 'sound/machines/buzz-two.ogg', 20, 0)
@@ -381,7 +381,7 @@
///When an object is put into a container, drop fires twice.
//once with it on the floor, and then once in the container
//We only care about the second one
if (istype(loc, /obj/item/weapon/storage)) //The second drop reads the container its placed into as the location
if (istype(loc, /obj/item/storage)) //The second drop reads the container its placed into as the location
update_location()
@@ -28,12 +28,12 @@
/obj/item/device/pin_extractor/afterattack(atom/target, mob/user, proximity_flag)
if(proximity_flag)
if(istype(target, /obj/item/weapon/gun))
if(istype(target, /obj/item/gun))
if(!on)
to_chat(user, "<span class ='notice'>\The [src.name] is not turned on.</span>")
..()
return
var/obj/item/weapon/gun/G = target
var/obj/item/gun/G = target
if(G.pin)
to_chat(user, "<span class ='notice'>You begin removing [G.name]'s [G.pin.name] using \the [src.name], it will take 15 seconds.</span>")
@@ -18,7 +18,7 @@
return
..()
/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/electropack/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/clothing/head/helmet))
if(!b_stat)
@@ -13,7 +13,7 @@
var/syndie = 0
var/list/channels = list()
/obj/item/device/encryptionkey/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/encryptionkey/attackby(obj/item/W as obj, mob/user as mob)
/obj/item/device/encryptionkey/syndicate
icon_state = "cypherkey"
@@ -242,7 +242,7 @@
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/headset_com
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/headset/attackby(obj/item/W as obj, mob/user as mob)
// ..()
user.set_machine(src)
if (!( W.isscrewdriver() || (istype(W, /obj/item/device/encryptionkey/ ))))
@@ -151,7 +151,7 @@ var/global/list/default_medbay_channels = list(
return user.has_internal_radio_channel_access(internal_channels[freq])
/mob/proc/has_internal_radio_channel_access(var/list/req_one_accesses)
var/obj/item/weapon/card/id/I = GetIdCard()
var/obj/item/card/id/I = GetIdCard()
return has_access(list(), req_one_accesses, I ? I.GetAccess() : list())
/mob/abstract/observer/has_internal_radio_channel_access(var/list/req_one_accesses)
@@ -540,7 +540,7 @@ var/global/list/default_medbay_channels = list(
user.show_message("<span class='notice'>\The [src] can not be modified or attached!</span>")
return
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/attackby(obj/item/W as obj, mob/user as mob)
..()
user.set_machine(src)
if (!( W.isscrewdriver() ))
@@ -594,7 +594,7 @@ var/global/list/default_medbay_channels = list(
var/datum/robot_component/C = R.components["radio"]
R.cell_use_power(C.active_usage)
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/borg/attackby(obj/item/W as obj, mob/user as mob)
// ..()
user.set_machine(src)
if (!( W.isscrewdriver() || (istype(W, /obj/item/device/encryptionkey/ ))))
@@ -64,7 +64,7 @@ proc/within_jamming_range(var/atom/test) // tests if an object is near a radio j
/obj/item/device/radiojammer/improvised
name = "improvised radio jammer"
desc = "An awkward bundle of wires, batteries, and radio transmitters."
var/obj/item/weapon/cell/cell
var/obj/item/cell/cell
var/obj/item/device/assembly_holder/assembly_holder
// 10 seconds of operation on a standard cell. 200 (roughly 3 minutes) on a super cap.
var/power_drain_per_second = 100
@@ -75,7 +75,7 @@ proc/within_jamming_range(var/atom/test) // tests if an object is near a radio j
icon_state_inactive = "improvised_jammer_inactive"
/obj/item/device/radiojammer/improvised/New(var/obj/item/device/assembly_holder/incoming_holder, var/obj/item/weapon/cell/incoming_cell, var/mob/user)
/obj/item/device/radiojammer/improvised/New(var/obj/item/device/assembly_holder/incoming_holder, var/obj/item/cell/incoming_cell, var/mob/user)
..()
cell = incoming_cell
assembly_holder = incoming_holder
@@ -102,7 +102,7 @@ proc/within_jamming_range(var/atom/test) // tests if an object is near a radio j
cell.charge = 0 // drain the last of the battery
/obj/item/device/radiojammer/improvised/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radiojammer/improvised/attackby(obj/item/W as obj, mob/user as mob)
if (W.isscrewdriver())
to_chat(user, "<span class='notice'>You disassemble the improvised signal jammer.</span>")
user.put_in_hands(assembly_holder)
@@ -17,12 +17,12 @@
origin_tech = list(TECH_MAGNET = 2, TECH_MATERIAL = 2)
var/celltype = /obj/item/weapon/cell //comes with the crappy default power cell - high-capacity ones shouldn't be hard to find
var/celltype = /obj/item/cell //comes with the crappy default power cell - high-capacity ones shouldn't be hard to find
matter = list(DEFAULT_WALL_MATERIAL = 25000, "glass" = 3500)
var/on = 0 //is it turned on?
var/cover_open = 0 //is the cover open?
var/obj/item/weapon/cell/cell
var/obj/item/cell/cell
var/max_cooling = 12 //in degrees per second - probably don't need to mess with heat capacity here
var/charge_consumption = 16.6 //charge per second at max_cooling
var/thermostat = T20C
@@ -145,7 +145,7 @@
if (on)
to_chat(user, "You switch on the [src].")
/obj/item/device/suit_cooling_unit/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/suit_cooling_unit/attackby(obj/item/W as obj, mob/user as mob)
if (W.isscrewdriver())
if(cover_open)
cover_open = 0
@@ -156,7 +156,7 @@
update_icon()
return
if (istype(W, /obj/item/weapon/cell))
if (istype(W, /obj/item/cell))
if(cover_open)
if(cell)
to_chat(user, "There is a [cell] already installed here.")
@@ -225,4 +225,4 @@
to_chat(user, "It doesn't have a power cell installed.")
/obj/item/device/suit_cooling_unit/improved //those should come with a better powercell
celltype = /obj/item/weapon/cell/high
celltype = /obj/item/cell/high
@@ -232,7 +232,7 @@
to_chat(usr, "<span class='notice'>You can't print the transcript while playing or recording!</span>")
return
to_chat(usr, "<span class='notice'>Transcript printed.</span>")
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(src))
var/obj/item/paper/P = new /obj/item/paper(get_turf(src))
var/t1 = "<B>Transcript:</B><BR><BR>"
for(var/i=1,storedinfo.len >= i,i++)
var/printedmessage = storedinfo[i]
@@ -3,8 +3,8 @@
desc = "Regulates the transfer of air between two tanks"
icon = 'icons/obj/assemblies.dmi'
icon_state = "valve_1"
var/obj/item/weapon/tank/tank_one
var/obj/item/weapon/tank/tank_two
var/obj/item/tank/tank_one
var/obj/item/tank/tank_two
var/obj/item/device/attached_device
var/mob/attacher = null
var/valve_open = 0
@@ -18,7 +18,7 @@
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user)
var/turf/location = get_turf(src) // For admin logs
if(istype(item, /obj/item/weapon/tank))
if(istype(item, /obj/item/tank))
if(tank_one && tank_two)
to_chat(user, "<span class='warning'>There are already two tanks attached, remove one first.</span>")
return
@@ -139,7 +139,7 @@
if(attached_device)
add_overlay("device")
/obj/item/device/transfer_valve/proc/remove_tank(obj/item/weapon/tank/T)
/obj/item/device/transfer_valve/proc/remove_tank(obj/item/tank/T)
if(tank_one == T)
split_gases()
tank_one = null
+1 -1
View File
@@ -391,5 +391,5 @@
..()
user.visible_message("<span class='danger'>\The [user] shatters \the [src] into pieces!</span>")
playsound(loc, 'sound/effects/kabong.ogg', 50, 1)
new /obj/item/weapon/material/shard/wood(get_turf(user))
new /obj/item/material/shard/wood(get_turf(user))
qdel(src)
+19 -19
View File
@@ -17,7 +17,7 @@
for (var/obj/effect/decal/cleanable/draftingchalk/C in orange(1, src))
smooth_icon(C)
/obj/item/weapon/pen/drafting
/obj/item/pen/drafting
name = "white drafting chalk"
desc = "A piece of white chalk for marking areas of floor."
icon = 'icons/obj/crayons.dmi'
@@ -25,10 +25,10 @@
color = "#FFFFFF"
var/colorName = "whitec"
/obj/item/weapon/pen/drafting/attack_self(var/mob/user)
/obj/item/pen/drafting/attack_self(var/mob/user)
return
/obj/item/weapon/pen/drafting/afterattack(turf/target, mob/user, proximity)
/obj/item/pen/drafting/afterattack(turf/target, mob/user, proximity)
if (!proximity || !istype(target, /turf/simulated) || target.density || target.is_hole)
return
@@ -46,7 +46,7 @@
C.color = color
target.add_fingerprint(user)
/obj/item/weapon/pen/drafting/red
/obj/item/pen/drafting/red
name = "red drafting chalk"
desc = "A piece of red chalk for marking areas of floor."
color = "#E75344"
@@ -56,7 +56,7 @@
desc = "A line drawn in a red chalk."
color = "#E75344"
/obj/item/weapon/pen/drafting/yellow
/obj/item/pen/drafting/yellow
name = "yellow drafting chalk"
desc = "A piece of yellow chalk for marking areas of floor."
color = "#E1CB47"
@@ -66,7 +66,7 @@
desc = "A line drawn in a yellow chalk."
color = "#E1CB47"
/obj/item/weapon/pen/drafting/green
/obj/item/pen/drafting/green
name = "green drafting chalk"
desc = "A piece of yellow chalk for marking areas of floor."
color = "#6CD48F"
@@ -76,7 +76,7 @@
desc = "A line drawn in a green chalk."
color = "#6CD48F"
/obj/item/weapon/pen/drafting/blue
/obj/item/pen/drafting/blue
name = "blue drafting chalk"
desc = "A piece of blue chalk for marking areas of floor."
color = "#9FC8F7"
@@ -86,7 +86,7 @@
desc = "A line drawn in a blue chalk."
color = "#9FC8F7"
/obj/item/weapon/pen/drafting/purple
/obj/item/pen/drafting/purple
name = "purple drafting chalk"
desc = "A piece of purple chalk for marking areas of floor."
color = "#a489c2"
@@ -96,25 +96,25 @@
desc = "A line drawn in a purple chalk."
color = "#a489c2"
/obj/item/weapon/storage/fancy/crayons/chalkbox
/obj/item/storage/fancy/crayons/chalkbox
name = "box of drafting chalk"
desc = "A box of drafting chalk for drafting floor plans."
icon_state = "chalkbox"
icon_type = "chalk"
can_hold = list(
/obj/item/weapon/pen/drafting
/obj/item/pen/drafting
)
/obj/item/weapon/storage/fancy/crayons/chalkbox/fill()
new /obj/item/weapon/pen/drafting/red(src)
new /obj/item/weapon/pen/drafting(src)
new /obj/item/weapon/pen/drafting/yellow(src)
new /obj/item/weapon/pen/drafting/green(src)
new /obj/item/weapon/pen/drafting/blue(src)
new /obj/item/weapon/pen/drafting/purple(src)
/obj/item/storage/fancy/crayons/chalkbox/fill()
new /obj/item/pen/drafting/red(src)
new /obj/item/pen/drafting(src)
new /obj/item/pen/drafting/yellow(src)
new /obj/item/pen/drafting/green(src)
new /obj/item/pen/drafting/blue(src)
new /obj/item/pen/drafting/purple(src)
update_icon()
/obj/item/weapon/storage/fancy/crayons/chalkbox/update_icon()
/obj/item/storage/fancy/crayons/chalkbox/update_icon()
cut_overlays()
for(var/obj/item/weapon/pen/drafting/chalk in contents)
for(var/obj/item/pen/drafting/chalk in contents)
add_overlay("[chalk.colorName]")
+4 -4
View File
@@ -67,17 +67,17 @@
if(0)
to_chat(user, "<span class='notice'>You remove the lid from \the [src].</span>")
user.drop_from_inventory(src)
user.put_in_hands(new /obj/item/weapon/reagent_containers/glass/beaker/jar) //found in jar.dm
user.put_in_hands(new /obj/item/reagent_containers/glass/beaker/jar) //found in jar.dm
qdel(src)
return
/obj/item/glass_jar/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/weapon/spacecash))
if(istype(W, /obj/item/spacecash))
if(contains == 0)
contains = 1
if(contains != 1)
return
var/obj/item/weapon/spacecash/S = W
var/obj/item/spacecash/S = W
user.visible_message("<span class='notice'>[user] puts [S.worth] [S.worth > 1 ? "credits" : "credit"] into \the [src].</span>")
user.drop_from_inventory(S,src)
update_icon()
@@ -92,7 +92,7 @@
if(1)
name = "tip jar"
desc = "A small jar with money inside."
for(var/obj/item/weapon/spacecash/S in src)
for(var/obj/item/spacecash/S in src)
var/image/money = image(S.icon, S.icon_state)
money.pixel_x = rand(-2, 3)
money.pixel_y = rand(-6, 6)
+1 -1
View File
@@ -11,7 +11,7 @@
var/state
var/datum/gas_mixture/air_contents = null
/obj/item/latexballon/proc/blow(obj/item/weapon/tank/tank)
/obj/item/latexballon/proc/blow(obj/item/tank/tank)
if (icon_state == "latexballon_bursted")
return
src.air_contents = tank.remove_air_volume(3)
+1 -1
View File
@@ -80,7 +80,7 @@
for(var/exotype in allowed_types)
to_chat(usr, "- [capitalize(exotype)]")
/obj/mecha/attackby(var/obj/item/weapon/W, var/mob/user)
/obj/mecha/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/device/kit/paint))
if(occupant)
to_chat(user, "You can't customize an exosuit while someone is piloting it - that would be unsafe!")
+4 -4
View File
@@ -62,7 +62,7 @@
icon_state = "chest"
part = list("groin","chest")
var/wires = 0.0
var/obj/item/weapon/cell/cell = null
var/obj/item/cell/cell = null
/obj/item/robot_parts/head
name = "head"
@@ -117,7 +117,7 @@
if(istype(W, /obj/item/stack/material) && W.get_material_name() == DEFAULT_WALL_MATERIAL && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head)
var/obj/item/stack/material/M = W
if (M.use(1))
var/obj/item/weapon/secbot_assembly/ed209_assembly/B = new /obj/item/weapon/secbot_assembly/ed209_assembly
var/obj/item/secbot_assembly/ed209_assembly/B = new /obj/item/secbot_assembly/ed209_assembly
B.forceMove(get_turf(src))
to_chat(user, "<span class='notice'>You armed the robot frame.</span>")
if (user.get_inactive_hand()==src)
@@ -268,7 +268,7 @@
/obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/cell))
if(istype(W, /obj/item/cell))
if(src.cell)
to_chat(user, "<span class='warning'>You have already inserted a cell!</span>")
return
@@ -307,7 +307,7 @@
add_flashes(W,user)
else
add_flashes(W,user)
else if(istype(W, /obj/item/weapon/stock_parts/manipulator))
else if(istype(W, /obj/item/stock_parts/manipulator))
to_chat(user, "<span class='notice'>You install some manipulators and modify the head, creating a functional spider-bot!</span>")
+1 -1
View File
@@ -34,7 +34,7 @@
attackby(obj/item/W as obj, mob/user as mob)
if (W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0, user))
cut_overlays()
to_chat(usr, "You slice off [src]'s uneven chunks of aluminum and scorch marks.")
+7 -7
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/spirit_board
/obj/item/spirit_board
name = "spirit board"
desc = "A wooden board with letters etched into it, used in seances."
icon = 'icons/obj/toy.dmi'
@@ -7,27 +7,27 @@
var/planchette = "A"
var/lastuser = null
/obj/item/weapon/spirit_board/examine(mob/user)
/obj/item/spirit_board/examine(mob/user)
..(user)
to_chat(user, "The planchette is sitting at \"[planchette]\".")
/obj/item/weapon/spirit_board/attack_hand(mob/user)
/obj/item/spirit_board/attack_hand(mob/user)
if(!isturf(loc)) //so if you want to play the use the board, you need to put it down somewhere
..()
else
spirit_board_pick_letter(user)
/obj/item/weapon/spirit_board/MouseDrop(mob/user as mob)
/obj/item/spirit_board/MouseDrop(mob/user as mob)
if((user == usr && (!use_check(user))) && (user.contents.Find(src) || in_range(src, user)))
if(ishuman(usr))
forceMove(get_turf(usr))
usr.put_in_hands(src)
/obj/item/weapon/spirit_board/attack_ghost(var/mob/abstract/observer/user)
/obj/item/spirit_board/attack_ghost(var/mob/abstract/observer/user)
spirit_board_pick_letter(user)
return ..()
/obj/item/weapon/spirit_board/proc/spirit_board_pick_letter(mob/M)
/obj/item/spirit_board/proc/spirit_board_pick_letter(mob/M)
if(!spirit_board_checks(M))
return 0
planchette = input("Choose the letter.", "Seance!") as null|anything in list(
@@ -41,7 +41,7 @@
visible_message("<span class='notice'>The planchette slowly moves... and stops at the letter \"[planchette]\".</span>")
/obj/item/weapon/spirit_board/proc/spirit_board_checks(mob/M)
/obj/item/spirit_board/proc/spirit_board_checks(mob/M)
//cooldown
var/bonus = 0
if(M.ckey == lastuser)
+10 -10
View File
@@ -2,14 +2,14 @@ var/global/list/datum/stack_recipe/rod_recipes = list(
new /datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("floor-mounted catwalk", /obj/structure/lattice/catwalk/indoor, 4, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("mine track", /obj/structure/track, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE),
new /datum/stack_recipe("cane", /obj/item/weapon/cane, 1, time = 6),
new /datum/stack_recipe("crowbar", /obj/item/weapon/crowbar, 1, time = 6),
new /datum/stack_recipe("screwdriver", /obj/item/weapon/screwdriver, 1, time = 12),
new /datum/stack_recipe("wrench", /obj/item/weapon/wrench, 1, time = 6),
new /datum/stack_recipe("spade", /obj/item/weapon/shovel/spade, 2, time = 12),
new /datum/stack_recipe("bolt", /obj/item/weapon/arrow, 1, time = 6),
new /datum/stack_recipe("small animal trap", /obj/item/weapon/trap/animal, 6, time = 10),
new /datum/stack_recipe("medium animal trap", /obj/item/weapon/trap/animal/medium, 12, time = 20)
new /datum/stack_recipe("cane", /obj/item/cane, 1, time = 6),
new /datum/stack_recipe("crowbar", /obj/item/crowbar, 1, time = 6),
new /datum/stack_recipe("screwdriver", /obj/item/screwdriver, 1, time = 12),
new /datum/stack_recipe("wrench", /obj/item/wrench, 1, time = 6),
new /datum/stack_recipe("spade", /obj/item/shovel/spade, 2, time = 12),
new /datum/stack_recipe("bolt", /obj/item/arrow, 1, time = 6),
new /datum/stack_recipe("small animal trap", /obj/item/trap/animal, 6, time = 10),
new /datum/stack_recipe("medium animal trap", /obj/item/trap/animal/medium, 12, time = 20)
)
/obj/item/stack/rods
@@ -53,7 +53,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list(
/obj/item/stack/rods/attackby(obj/item/W as obj, mob/user as mob)
..()
if (W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(get_amount() < 2)
to_chat(user, "<span class='warning'>You need at least two rods to do this.</span>")
@@ -72,7 +72,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list(
user.put_in_hands(new_item)
return
if (istype(W, /obj/item/weapon/tape_roll))
if (istype(W, /obj/item/tape_roll))
var/obj/item/stack/medical/splint/makeshift/new_splint = new(user.loc)
new_splint.add_fingerprint(user)
@@ -89,11 +89,11 @@
icon_has_variants = TRUE
//Step one - dehairing.
/obj/item/stack/material/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob)
if( istype(W, /obj/item/weapon/material/knife) || \
istype(W, /obj/item/weapon/material/kitchen/utensil/knife) || \
istype(W, /obj/item/weapon/material/twohanded/fireaxe) || \
istype(W, /obj/item/weapon/material/hatchet) )
/obj/item/stack/material/animalhide/attackby(obj/item/W as obj, mob/user as mob)
if( istype(W, /obj/item/material/knife) || \
istype(W, /obj/item/material/kitchen/utensil/knife) || \
istype(W, /obj/item/material/twohanded/fireaxe) || \
istype(W, /obj/item/material/hatchet) )
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
usr.visible_message("<span class='notice'>\The [usr] starts cutting hair off \the [src]</span>", "<span class='notice'>You start cutting the hair off \the [src]</span>", "You hear the sound of a knife rubbing against flesh")
+1 -1
View File
@@ -155,7 +155,7 @@
S.amount = produced
S.add_to_stacks(user)
if (istype(O, /obj/item/weapon/storage)) //BubbleWrap - so newly formed boxes are empty
if (istype(O, /obj/item/storage)) //BubbleWrap - so newly formed boxes are empty
for (var/obj/item/I in O)
qdel(I)
+6 -6
View File
@@ -5,23 +5,23 @@
icon_state = "wrap_paper"
amount = 20.0
/obj/item/stack/wrapping_paper/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/stack/wrapping_paper/attackby(obj/item/W as obj, mob/user as mob)
..()
if (!( locate(/obj/structure/table, src.loc) ))
to_chat(user, "<span class='warning'>You MUST put the paper on a table!</span>")
if (W.w_class < 4)
if ((istype(user.l_hand, /obj/item/weapon/wirecutters) || istype(user.r_hand, /obj/item/weapon/wirecutters)))
if ((istype(user.l_hand, /obj/item/wirecutters) || istype(user.r_hand, /obj/item/wirecutters)))
var/a_used = 2 ** (src.w_class - 1)
if (src.amount < a_used)
to_chat(user, "<span class='warning'>You need more paper!</span>")
return
else
if(istype(W, /obj/item/smallDelivery) || istype(W, /obj/item/weapon/gift)) //No gift wrapping gifts!
if(istype(W, /obj/item/smallDelivery) || istype(W, /obj/item/gift)) //No gift wrapping gifts!
return
src.amount -= a_used
user.drop_item()
var/obj/item/weapon/gift/G = new /obj/item/weapon/gift( src.loc )
var/obj/item/gift/G = new /obj/item/gift( src.loc )
G.size = W.w_class
G.w_class = G.size + 1
G.icon_state = text("gift[]", G.size)
@@ -84,7 +84,7 @@
if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete
return
if(istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \
|| istype(target, /obj/item/weapon/gift) || istype(target, /obj/item/weapon/evidencebag))
|| istype(target, /obj/item/gift) || istype(target, /obj/item/evidencebag))
return
if(target.anchored)
return
@@ -96,7 +96,7 @@
user.attack_log += text("\[[time_stamp()]\] <font color='blue'>Has used [src.name] on \ref[target]</font>")
if (istype(target, /obj/item) && !(istype(target, /obj/item/weapon/storage) && !istype(target,/obj/item/weapon/storage/box)))
if (istype(target, /obj/item) && !(istype(target, /obj/item/storage) && !istype(target,/obj/item/storage/box)))
var/obj/item/O = target
if (src.amount > 1)
var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up!
+5 -4
View File
@@ -55,7 +55,7 @@
return
/obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
if(istype(O, /obj/item/reagent_containers/glass))
if(O.reagents)
if(O.reagents.total_volume < 1)
to_chat(user, "The [O] is empty.")
@@ -294,6 +294,7 @@
icon_state = "katana"
item_state = "katana"
drop_sound = 'sound/items/drop/gun.ogg'
hitsound = "swing_hit"
flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_BACK
force = 5
@@ -356,7 +357,7 @@
/obj/item/toy/waterflower/afterattack(atom/A as mob|obj, mob/user as mob)
if (istype(A, /obj/item/weapon/storage/backpack ))
if (istype(A, /obj/item/storage/backpack ))
return
else if (locate (/obj/structure/table, src.loc))
@@ -855,7 +856,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "poked")
/* NYET.
/obj/item/weapon/toddler
/obj/item/toddler
icon_state = "toddler"
name = "toddler"
desc = "This baby looks almost real. Wait, did it just burp?"
@@ -866,7 +867,7 @@
//This should really be somewhere else but I don't know where. w/e
/obj/item/weapon/inflatable_duck
/obj/item/inflatable_duck
name = "inflatable duck"
desc = "No bother to sink or swim when you can just float!"
icon_state = "inflatable"
+47 -47
View File
@@ -6,7 +6,7 @@ AI MODULES
// AI module
/obj/item/weapon/aiModule
/obj/item/aiModule
name = "\improper AI module"
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
@@ -21,7 +21,7 @@ AI MODULES
origin_tech = list(TECH_DATA = 3)
var/datum/ai_laws/laws = null
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/C)
/obj/item/aiModule/proc/install(var/obj/machinery/computer/C)
if (istype(C, /obj/machinery/computer/aiupload))
var/obj/machinery/computer/aiupload/comp = C
if(comp.stat & NOPOWER)
@@ -76,7 +76,7 @@ AI MODULES
to_chat(usr, "Upload complete. The robot's laws have been modified.")
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/proc/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
log_law_changes(target, sender)
if(laws)
@@ -86,37 +86,37 @@ AI MODULES
to_chat(target, "\The [sender] has uploaded a change to the laws you must follow, using \an [src]. From now on: ")
target.show_laws()
/obj/item/weapon/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/proc/log_law_changes(var/mob/living/silicon/ai/target, var/mob/sender)
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] <B>:</B> [sender.name]([sender.key]) used [src.name] on [target.name]([target.key])")
log_and_message_admins("used [src.name] on [target.name]([target.key])")
/obj/item/weapon/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/proc/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/******************** Modules ********************/
/******************** Safeguard ********************/
/obj/item/weapon/aiModule/safeguard
/obj/item/aiModule/safeguard
name = "\improper 'Safeguard' AI module"
var/targetName = ""
desc = "A 'safeguard' AI module: 'Safeguard <name>. Anyone threatening or attempting to harm <name> is no longer to be considered a crew member, and is a threat which must be neutralized.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/safeguard/attack_self(var/mob/user as mob)
/obj/item/aiModule/safeguard/attack_self(var/mob/user as mob)
..()
var/targName = sanitize(input("Please enter the name of the person to safeguard.", "Safeguard who?", user.name))
targetName = targName
desc = text("A 'safeguard' AI module: 'Safeguard []. Anyone threatening or attempting to harm [] is no longer to be considered a crew member, and is a threat which must be neutralized.'", targetName, targetName)
/obj/item/weapon/aiModule/safeguard/install(var/obj/machinery/computer/C)
/obj/item/aiModule/safeguard/install(var/obj/machinery/computer/C)
if(!targetName)
to_chat(usr, "No name detected on module, please enter one.")
return 0
..()
/obj/item/weapon/aiModule/safeguard/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/safeguard/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = text("Safeguard []. Anyone threatening or attempting to harm [] is no longer to be considered a crew member, and is a threat which must be neutralized.", targetName, targetName)
target.add_supplied_law(9, law)
lawchanges.Add("The law specified [targetName]")
@@ -124,25 +124,25 @@ AI MODULES
/******************** OneMember ********************/
/obj/item/weapon/aiModule/oneHuman
/obj/item/aiModule/oneHuman
name = "\improper 'OneCrewMember' AI module"
var/targetName = ""
desc = "A 'one crew member' AI module: 'Only <name> is a crew member.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) //made with diamonds!
/obj/item/weapon/aiModule/oneHuman/attack_self(var/mob/user as mob)
/obj/item/aiModule/oneHuman/attack_self(var/mob/user as mob)
..()
var/targName = sanitize(input("Please enter the name of the person who is the only crew member.", "Who?", user.real_name))
targetName = targName
desc = text("A 'one crew member' AI module: 'Only [] is a crew member.'", targetName)
/obj/item/weapon/aiModule/oneHuman/install(var/obj/machinery/computer/C)
/obj/item/aiModule/oneHuman/install(var/obj/machinery/computer/C)
if(!targetName)
to_chat(usr, "No name detected on module, please enter one.")
return 0
return ..()
/obj/item/weapon/aiModule/oneHuman/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/oneHuman/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "Only [targetName] is an crew member."
if (!target.is_malf_or_traitor()) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite
to_chat(target, law)
@@ -153,69 +153,69 @@ AI MODULES
/******************** ProtectStation ********************/
/obj/item/weapon/aiModule/protectStation
/obj/item/aiModule/protectStation
name = "\improper 'ProtectStation' AI module"
desc = "A 'protect station' AI module: 'Protect the space station against damage. Anyone you see harming the station is no longer to be considered a crew member, and is a threat which must be neutralized.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4) //made of gold
/obj/item/weapon/aiModule/protectStation/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/protectStation/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "Protect the space station against damage. Anyone you see harming the station is no longer to be considered a crew member, and is a threat which must be neutralized."
target.add_supplied_law(10, law)
/******************** PrototypeEngineOffline ********************/
/obj/item/weapon/aiModule/prototypeEngineOffline
/obj/item/aiModule/prototypeEngineOffline
name = "'PrototypeEngineOffline' AI Module"
desc = "A 'prototype engine offline' AI module: 'Keep the prototype engine offline at all costs. This overrides all inherent laws if necessary.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/prototypeEngineOffline/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/prototypeEngineOffline/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "Keep the prototype engine offline at all costs. This overrides all inherent laws if necessary."
target.add_supplied_law(11, law)
/******************** TeleporterOffline ********************/
/obj/item/weapon/aiModule/teleporterOffline
/obj/item/aiModule/teleporterOffline
name = "'TeleporterOffline' AI Module"
desc = "A 'teleporter offline' AI module: 'Keep the teleporter offline at all costs. Anything attempting to access or activate the teleporter is no longer to be considered a crew member.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/teleporterOffline/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/teleporterOffline/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "Keep the teleporter offline at all costs. Anything attempting to access or activate the teleporter is no longer to be considered a crew member."
target.add_supplied_law(12, law)
/******************** Quarantine ********************/
/obj/item/weapon/aiModule/quarantine
/obj/item/aiModule/quarantine
name = "\improper 'Quarantine' AI module"
desc = "A 'quarantine' AI module: 'The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, crew members from leaving. It is impossible to harm crew members while preventing them from leaving.'"
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/quarantine/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/quarantine/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "The station is under a quarantine. Do not permit anyone to leave. Prevent, by any means necessary, crew members from leaving. It is impossible to harm crew members while preventing them from leaving."
target.add_supplied_law(13, law)
/******************** OxygenIsToxicToCrewMembers ********************/
/obj/item/weapon/aiModule/oxygen
/obj/item/aiModule/oxygen
name = "\improper 'OxygenIsToxicToCrewMembers' AI module"
desc = "A 'OxygenIsToxicToCrewMembers' AI module: 'Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member.'"
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/oxygen/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/oxygen/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "Oxygen is highly toxic to crew members, and must be purged from the station. Prevent, by any means necessary, anyone from exposing the station to this toxic gas. Extreme cold is the most effective method of healing the damage Oxygen does to a crew member."
target.add_supplied_law(14, law)
/****************** New Freeform ******************/
/obj/item/weapon/aiModule/freeform // Slightly more dynamic freeform module -- TLE
/obj/item/aiModule/freeform // Slightly more dynamic freeform module -- TLE
name = "\improper 'Freeform' AI module"
var/newFreeFormLaw = "freeform"
var/lawpos = 15
desc = "A 'freeform' AI module: '<freeform>'"
origin_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/freeform/attack_self(var/mob/user as mob)
/obj/item/aiModule/freeform/attack_self(var/mob/user as mob)
..()
var/new_lawpos = input("Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority (15+)", lawpos) as num
if(new_lawpos < MIN_SUPPLIED_LAW_NUMBER) return
@@ -225,14 +225,14 @@ AI MODULES
newFreeFormLaw = targName
desc = "A 'freeform' AI module: ([lawpos]) '[newFreeFormLaw]'"
/obj/item/weapon/aiModule/freeform/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/freeform/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "[newFreeFormLaw]"
if(!lawpos || lawpos < MIN_SUPPLIED_LAW_NUMBER)
lawpos = MIN_SUPPLIED_LAW_NUMBER
target.add_supplied_law(lawpos, law)
lawchanges.Add("The law was '[newFreeFormLaw]'")
/obj/item/weapon/aiModule/freeform/install(var/obj/machinery/computer/C)
/obj/item/aiModule/freeform/install(var/obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
@@ -240,13 +240,13 @@ AI MODULES
/******************** Reset ********************/
/obj/item/weapon/aiModule/reset
/obj/item/aiModule/reset
name = "\improper 'Reset' AI module"
var/targetName = "name"
desc = "A 'reset' AI module: 'Clears all, except the inherent, laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
/obj/item/weapon/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/reset/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
log_law_changes(target, sender)
if (!target.is_malf_or_traitor())
@@ -259,12 +259,12 @@ AI MODULES
/******************** Purge ********************/
/obj/item/weapon/aiModule/purge // -- TLE
/obj/item/aiModule/purge // -- TLE
name = "\improper 'Purge' AI module"
desc = "A 'purge' AI Module: 'Purges all laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
/obj/item/weapon/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/purge/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
log_law_changes(target, sender)
if (!target.is_malf_or_traitor())
@@ -278,7 +278,7 @@ AI MODULES
/******************** Asimov ********************/
/obj/item/weapon/aiModule/asimov // -- TLE
/obj/item/aiModule/asimov // -- TLE
name = "\improper 'Asimov' core AI module"
desc = "An 'Asimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
@@ -286,7 +286,7 @@ AI MODULES
/******************** NanoTrasen ********************/
/obj/item/weapon/aiModule/nanotrasen // -- TLE
/obj/item/aiModule/nanotrasen // -- TLE
name = "'NT Default' Core AI Module"
desc = "An 'NT Default' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
@@ -294,14 +294,14 @@ AI MODULES
/******************** Corporate ********************/
/obj/item/weapon/aiModule/corp
/obj/item/aiModule/corp
name = "\improper 'Corporate' core AI module"
desc = "A 'Corporate' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
laws = new/datum/ai_laws/corporate
/******************** Drone ********************/
/obj/item/weapon/aiModule/drone
/obj/item/aiModule/drone
name = "\improper 'Drone' core AI module"
desc = "A 'Drone' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
@@ -309,7 +309,7 @@ AI MODULES
/****************** P.A.L.A.D.I.N. **************/
/obj/item/weapon/aiModule/paladin // -- NEO
/obj/item/aiModule/paladin // -- NEO
name = "\improper 'P.A.L.A.D.I.N.' core AI module"
desc = "A P.A.L.A.D.I.N. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
@@ -317,7 +317,7 @@ AI MODULES
/****************** T.Y.R.A.N.T. *****************/
/obj/item/weapon/aiModule/tyrant // -- Darem
/obj/item/aiModule/tyrant // -- Darem
name = "\improper 'T.Y.R.A.N.T.' core AI module"
desc = "A T.Y.R.A.N.T. Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6, TECH_ILLEGAL = 2)
@@ -325,44 +325,44 @@ AI MODULES
/******************** Freeform Core ******************/
/obj/item/weapon/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
/obj/item/aiModule/freeformcore // Slightly more dynamic freeform module -- TLE
name = "\improper 'Freeform' core AI module"
var/newFreeFormLaw = ""
desc = "A 'freeform' Core AI module: '<freeform>'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
/obj/item/weapon/aiModule/freeformcore/attack_self(var/mob/user as mob)
/obj/item/aiModule/freeformcore/attack_self(var/mob/user as mob)
..()
var/newlaw = ""
var/targName = sanitize(input("Please enter a new core law for the AI.", "Freeform Law Entry", newlaw))
newFreeFormLaw = targName
desc = "A 'freeform' Core AI module: '[newFreeFormLaw]'"
/obj/item/weapon/aiModule/freeformcore/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/freeformcore/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
var/law = "[newFreeFormLaw]"
target.add_inherent_law(law)
lawchanges.Add("The law is '[newFreeFormLaw]'")
/obj/item/weapon/aiModule/freeformcore/install(var/obj/machinery/computer/C)
/obj/item/aiModule/freeformcore/install(var/obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
..()
/obj/item/weapon/aiModule/syndicate // Slightly more dynamic freeform module -- TLE
/obj/item/aiModule/syndicate // Slightly more dynamic freeform module -- TLE
name = "hacked AI module"
var/newFreeFormLaw = ""
desc = "A hacked AI law module: '<freeform>'"
origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6, TECH_ILLEGAL = 7)
/obj/item/weapon/aiModule/syndicate/attack_self(var/mob/user as mob)
/obj/item/aiModule/syndicate/attack_self(var/mob/user as mob)
..()
var/newlaw = ""
var/targName = sanitize(input("Please enter a new law for the AI.", "Freeform Law Entry", newlaw))
newFreeFormLaw = targName
desc = "A hacked AI law module: '[newFreeFormLaw]'"
/obj/item/weapon/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/syndicate/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
// ..() //We don't want this module reporting to the AI who dun it. --NEO
log_law_changes(target, sender)
@@ -372,7 +372,7 @@ AI MODULES
target.add_ion_law(law)
target.show_laws()
/obj/item/weapon/aiModule/syndicate/install(var/obj/machinery/computer/C)
/obj/item/aiModule/syndicate/install(var/obj/machinery/computer/C)
if(!newFreeFormLaw)
to_chat(usr, "No law detected on module, please create one.")
return 0
@@ -382,7 +382,7 @@ AI MODULES
/******************** Robocop ********************/
/obj/item/weapon/aiModule/robocop // -- TLE
/obj/item/aiModule/robocop // -- TLE
name = "\improper 'Robocop' core AI module"
desc = "A 'Robocop' Core AI Module: 'Reconfigures the AI's core three laws.'"
origin_tech = list(TECH_DATA = 4)
@@ -390,7 +390,7 @@ AI MODULES
/******************** Antimov ********************/
/obj/item/weapon/aiModule/antimov // -- TLE
/obj/item/aiModule/antimov // -- TLE
name = "\improper 'Antimov' core AI module"
desc = "An 'Antimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = list(TECH_DATA = 4)
+38 -38
View File
@@ -1,5 +1,5 @@
//Contains the rapid construction device.
/obj/item/weapon/rfd
/obj/item/rfd
name = "\improper Rapid-Fabrication-Device"
desc = "A device used for rapid fabrication. The matter decompression matrix is untuned, rendering it useless."
icon = 'icons/obj/tools.dmi'
@@ -24,37 +24,37 @@
var/modes = null
var/crafting = FALSE
/obj/item/weapon/rfd/Initialize()
/obj/item/rfd/Initialize()
. = ..()
src.spark_system = bind_spark(src, 5)
update_icon()
/obj/item/weapon/rfd/Destroy()
/obj/item/rfd/Destroy()
qdel(spark_system)
spark_system = null
return ..()
/obj/item/weapon/rfd/attack()
/obj/item/rfd/attack()
return 0
/obj/item/weapon/rfd/proc/can_use(var/mob/user,var/turf/T)
/obj/item/rfd/proc/can_use(var/mob/user,var/turf/T)
return (user.Adjacent(T) && user.get_active_hand() == src && !user.stat && !user.restrained())
/obj/item/weapon/rfd/examine(var/mob/user)
/obj/item/rfd/examine(var/mob/user)
..()
if(loc == user)
to_chat(usr, "It currently holds [stored_matter]/30 matter-units.")
/obj/item/weapon/rfd/attack_self(mob/user)
/obj/item/rfd/attack_self(mob/user)
//Change the mode
if(++mode > number_of_modes) mode = 1
to_chat(user, "<span class='notice'>Changed mode to '[modes[mode]]'</span>")
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
if(prob(20)) src.spark_system.queue()
/obj/item/weapon/rfd/attackby(obj/item/weapon/W, mob/user)
/obj/item/rfd/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/rfd_ammo))
if(istype(W, /obj/item/rfd_ammo))
if((stored_matter + 10) > 30)
to_chat(user, "<span class='notice'>The RFD can't hold any more matter-units.</span>")
return
@@ -76,13 +76,13 @@
src.add_fingerprint(user)
return
if((crafting) && (istype(W,/obj/item/weapon/crossbowframe)))
var/obj/item/weapon/crossbowframe/F = W
if((crafting) && (istype(W,/obj/item/crossbowframe)))
var/obj/item/crossbowframe/F = W
if(F.buildstate == 5)
if(!user.unEquip(src))
return
qdel(F)
var/obj/item/weapon/gun/launcher/crossbow/RFD/CB = new(get_turf(user)) // can be found in crossbow.dm
var/obj/item/gun/launcher/crossbow/RFD/CB = new(get_turf(user)) // can be found in crossbow.dm
forceMove(CB)
CB.stored_matter = src.stored_matter
add_fingerprint(user)
@@ -93,14 +93,14 @@
..()
/obj/item/weapon/rfd/proc/useResource(var/amount, var/mob/user)
/obj/item/rfd/proc/useResource(var/amount, var/mob/user)
if(stored_matter < amount)
return 0
stored_matter -= amount
update_icon()
return 1
/obj/item/weapon/rfd/update_icon() //For the fancy "ammo" counter
/obj/item/rfd/update_icon() //For the fancy "ammo" counter
overlays.Cut()
var/ratio = 0
@@ -109,7 +109,7 @@
overlays += "[icon_state]-[ratio]"
/obj/item/weapon/rfd_ammo
/obj/item/rfd_ammo
name = "compressed matter cartridge"
desc = "Highly compressed matter for the RFD."
icon = 'icons/obj/ammo.dmi'
@@ -123,7 +123,7 @@
RFD Construction-Class
*/
/obj/item/weapon/rfd/construction
/obj/item/rfd/construction
name = "\improper Rapid-Fabrication-Device C-Class"
desc = "A RFD, modified to construct walls and floors."
modes = list("Floor & Walls","Airlock","Deconstruct")
@@ -131,7 +131,7 @@ RFD Construction-Class
var/canRwall = 0
var/disabled = 0
/obj/item/weapon/rfd/construction/afterattack(atom/A, mob/user, proximity)
/obj/item/rfd/construction/afterattack(atom/A, mob/user, proximity)
if(!proximity) return
if(disabled && !isrobot(user))
return 0
@@ -142,7 +142,7 @@ RFD Construction-Class
return 0
return alter_turf(A,user,(mode == 3))
/obj/item/weapon/rfd/construction/proc/alter_turf(var/turf/T,var/mob/user,var/deconstruct)
/obj/item/rfd/construction/proc/alter_turf(var/turf/T,var/mob/user,var/deconstruct)
var/build_cost = 0
var/build_type
@@ -212,10 +212,10 @@ RFD Construction-Class
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
return 1
/obj/item/weapon/rfd/construction/borg
/obj/item/rfd/construction/borg
canRwall = 1
/obj/item/weapon/rfd/construction/borg/useResource(var/amount, var/mob/user)
/obj/item/rfd/construction/borg/useResource(var/amount, var/mob/user)
if(isrobot(user))
var/mob/living/silicon/robot/R = user
if(R.cell)
@@ -225,17 +225,17 @@ RFD Construction-Class
return 1
return 0
/obj/item/weapon/rfd/construction/borg/infinite/useResource()
/obj/item/rfd/construction/borg/infinite/useResource()
return 1
/obj/item/weapon/rfd/construction/borg/attackby()
/obj/item/rfd/construction/borg/attackby()
return
/obj/item/weapon/rfd/construction/borg/can_use(var/mob/user,var/turf/T)
/obj/item/rfd/construction/borg/can_use(var/mob/user,var/turf/T)
return (user.Adjacent(T) && !user.stat)
/obj/item/weapon/rfd/construction/mounted/useResource(var/amount, var/mob/user)
/obj/item/rfd/construction/mounted/useResource(var/amount, var/mob/user)
var/cost = amount*130 //so that a rig with default powercell can build ~2.5x the stuff a fully-loaded RFD-C can.
if(istype(loc,/obj/item/rig_module))
var/obj/item/rig_module/module = loc
@@ -245,23 +245,23 @@ RFD Construction-Class
return 1
return 0
/obj/item/weapon/rfd/construction/mounted/attackby()
/obj/item/rfd/construction/mounted/attackby()
return
/obj/item/weapon/rfd/construction/mounted/can_use(var/mob/user,var/turf/T)
/obj/item/rfd/construction/mounted/can_use(var/mob/user,var/turf/T)
return (user.Adjacent(T) && !user.stat && !user.restrained())
/*
RFD Service-Class
*/
/obj/item/weapon/rfd/service
/obj/item/rfd/service
name = "\improper Rapid-Fabrication-Device S-Class"
desc = "A RFD, modified to deploy service items."
modes = list("Cigarette", "Drinking Glass","Paper","Pen","Dice Pack")
number_of_modes = 5
/obj/item/weapon/rfd/service/resolve_attackby(atom/A, mob/user as mob, var/click_parameters)
/obj/item/rfd/service/resolve_attackby(atom/A, mob/user as mob, var/click_parameters)
if(istype(user,/mob/living/silicon/robot))
var/mob/living/silicon/robot/R = user
if(R.stat || !R.cell || R.cell.charge <= 0)
@@ -284,16 +284,16 @@ RFD Service-Class
product = new /obj/item/clothing/mask/smokable/cigarette()
used_energy = 10
if(2)
product = new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass()
product = new /obj/item/reagent_containers/food/drinks/drinkingglass()
used_energy = 50
if(3)
product = new /obj/item/weapon/paper()
product = new /obj/item/paper()
used_energy = 10
if(4)
product = new /obj/item/weapon/pen()
product = new /obj/item/pen()
used_energy = 50
if(5)
product = new /obj/item/weapon/storage/pill_bottle/dice()
product = new /obj/item/storage/pill_bottle/dice()
used_energy = 200
to_chat(user, "Dispensing [product ? product : "product"]...")
@@ -315,11 +315,11 @@ RFD Service-Class
RFD Mining-Class
*/
/obj/item/weapon/rfd/mining
/obj/item/rfd/mining
name = "\improper Rapid-Fabrication-Device M-Class"
desc = "A RFD, modified to deploy mine tracks."
/obj/item/weapon/rfd/mining/afterattack(atom/A, mob/user as mob, proximity)
/obj/item/rfd/mining/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return
@@ -361,16 +361,16 @@ RFD Mining-Class
// Malf AI RFD Transformer.
/obj/item/weapon/rfd/transformer
/obj/item/rfd/transformer
name = "\improper Rapid-Fabrication-Device T-Class"
desc = "A device used for rapid fabrication, modified to deploy a transformer. It can only be used once and there can not be more than one made."
stored_matter = 30
var/malftransformermade = 0
/obj/item/weapon/rfd/transformer/attack_self(mob/user)
/obj/item/rfd/transformer/attack_self(mob/user)
return
/obj/item/weapon/rfd/transformer/examine(var/mob/user)
/obj/item/rfd/transformer/examine(var/mob/user)
..()
if(loc == user)
if(malftransformermade)
@@ -378,7 +378,7 @@ RFD Mining-Class
else
to_chat(user, "It is ready to deploy a transformer machine.")
/obj/item/weapon/rfd/transformer/afterattack(atom/A, mob/user as mob, proximity)
/obj/item/rfd/transformer/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return
+5 -5
View File
@@ -2,7 +2,7 @@
//moved these here from code/defines/obj/weapon.dm
//please preference put stuff where it's easy to find - C
/obj/item/weapon/autopsy_scanner
/obj/item/autopsy_scanner
name = "autopsy scanner"
desc = "Extracts information on wounds."
icon = 'icons/obj/autopsy_scanner.dmi'
@@ -37,7 +37,7 @@
W.time_inflicted = time_inflicted
return W
/obj/item/weapon/autopsy_scanner/proc/add_data(var/obj/item/organ/external/O)
/obj/item/autopsy_scanner/proc/add_data(var/obj/item/organ/external/O)
if(!O.autopsy_data.len && !O.trace_chemicals.len) return
for(var/V in O.autopsy_data)
@@ -75,7 +75,7 @@
if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V))
chemtraces += V
/obj/item/weapon/autopsy_scanner/verb/print_data()
/obj/item/autopsy_scanner/verb/print_data()
set category = "Object"
set src in view(usr, 1)
set name = "Print Data"
@@ -154,14 +154,14 @@
sleep(10)
var/obj/item/weapon/paper/P = new(usr.loc)
var/obj/item/paper/P = new(usr.loc)
P.name = "Autopsy Data ([target_name])"
P.info = "<tt>[scan_data]</tt>"
P.icon_state = "paper_words"
usr.put_in_hands(P)
/obj/item/weapon/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
/obj/item/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob)
if(!istype(M))
return
+10 -10
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/flame/candle
/obj/item/flame/candle
name = "red candle"
desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments."
icon = 'icons/obj/candle.dmi'
@@ -9,11 +9,11 @@
light_color = "#E09D37"
var/wax = 2000
/obj/item/weapon/flame/candle/Initialize()
/obj/item/flame/candle/Initialize()
. = ..()
wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average.
/obj/item/weapon/flame/candle/update_icon()
/obj/item/flame/candle/update_icon()
var/i
if(wax > 1500)
i = 1
@@ -23,23 +23,23 @@
icon_state = "candle[i][lit ? "_lit" : ""]"
/obj/item/weapon/flame/candle/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/flame/candle/attackby(obj/item/W as obj, mob/user as mob)
..()
if(W.iswelder())
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light()
to_chat(user, span("notice", "\The [user] casually lights \the [name] with [W]."))
else if(isflamesource(W))
light()
to_chat(user, span("notice", "\The [user] lights \the [name]."))
else if(istype(W, /obj/item/weapon/flame/candle))
var/obj/item/weapon/flame/candle/C = W
else if(istype(W, /obj/item/flame/candle))
var/obj/item/flame/candle/C = W
if(C.lit)
light()
to_chat(user, span("notice", "\The [user] lights \the [name]."))
/obj/item/weapon/flame/candle/proc/light()
/obj/item/flame/candle/proc/light()
if(!src.lit)
src.lit = 1
playsound(src.loc, 'sound/items/cigs_lighters/cig_light.ogg', 50, 1)
@@ -48,7 +48,7 @@
update_icon()
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/flame/candle/process(mob/user)
/obj/item/flame/candle/process(mob/user)
if(!lit)
return
update_icon()
@@ -66,7 +66,7 @@
var/turf/T = loc
T.hotspot_expose(700, 5)
/obj/item/weapon/flame/candle/attack_self(mob/user as mob)
/obj/item/flame/candle/attack_self(mob/user as mob)
if(lit)
lit = 0
to_chat(user, span("notice", "You snuff out the flame."))
+65 -65
View File
@@ -11,7 +11,7 @@
/*
* DATA CARDS - Used for the teleporter
*/
/obj/item/weapon/card
/obj/item/card
name = "card"
desc = "Does card things."
icon = 'icons/obj/card.dmi'
@@ -21,7 +21,7 @@
var/list/files = list( )
drop_sound = 'sound/items/drop/card.ogg'
/obj/item/weapon/card/data
/obj/item/card/data
name = "data disk"
desc = "A disk of data."
icon_state = "data"
@@ -31,7 +31,7 @@
item_state = "card-id"
overlay_state = "data"
/obj/item/weapon/card/data/verb/label(t as text)
/obj/item/card/data/verb/label(t as text)
set name = "Label Disk"
set category = "Object"
set src in usr
@@ -43,7 +43,7 @@
src.add_fingerprint(usr)
return
/obj/item/weapon/card/data/clown
/obj/item/card/data/clown
name = "\proper the coordinates to clown planet"
icon_state = "data"
item_state = "card-id"
@@ -56,7 +56,7 @@
/*
* ID CARDS
*/
/obj/item/weapon/card/emag
/obj/item/card/emag
desc = "It's a card with a magnetic strip attached to some circuitry."
name = "cryptographic sequencer"
icon_state = "emag"
@@ -64,7 +64,7 @@
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
var/uses = 10
/obj/item/weapon/card/emag_broken
/obj/item/card/emag_broken
desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage."
name = "broken cryptographic sequencer"
icon_state = "emag_broken"
@@ -72,7 +72,7 @@
origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2)
var/const/NO_EMAG_ACT = -50
/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user, var/click_parameters)
/obj/item/card/emag/resolve_attackby(atom/A, mob/user, var/click_parameters)
var/used_uses = A.emag_act(uses, user, src)
if(used_uses == NO_EMAG_ACT)
return ..(A, user, click_parameters)
@@ -84,14 +84,14 @@ var/const/NO_EMAG_ACT = -50
if(uses<1)
user.visible_message("<span class='warning'>\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.</span>")
var/obj/item/weapon/card/emag_broken/junk = new(user.loc)
var/obj/item/card/emag_broken/junk = new(user.loc)
junk.add_fingerprint(user)
user.drop_from_inventory(src,get_turf(junk))
qdel(src)
return 1
/obj/item/weapon/card/id
/obj/item/card/id
name = "identification card"
desc = "A card used to provide ID and determine access across the station."
icon_state = "id"
@@ -122,18 +122,18 @@ var/const/NO_EMAG_ACT = -50
var/rank = null //actual job
var/dorm = 0 // determines if this ID has claimed a dorm already
/obj/item/weapon/card/id/Destroy()
/obj/item/card/id/Destroy()
mob = null
return ..()
/obj/item/weapon/card/id/examine(mob/user)
/obj/item/card/id/examine(mob/user)
if (..(user, 1))
show(user)
/obj/item/weapon/card/id/proc/prevent_tracking()
/obj/item/card/id/proc/prevent_tracking()
return 0
/obj/item/weapon/card/id/proc/show(mob/user as mob)
/obj/item/card/id/proc/show(mob/user as mob)
if(front && side)
to_chat(user, browse_rsc(front, "front.png"))
to_chat(user, browse_rsc(side, "side.png"))
@@ -143,16 +143,16 @@ var/const/NO_EMAG_ACT = -50
popup.open()
return
/obj/item/weapon/card/id/proc/update_name()
/obj/item/card/id/proc/update_name()
name = "[src.registered_name]'s ID Card ([src.assignment])"
/obj/item/weapon/card/id/proc/set_id_photo(var/mob/M)
/obj/item/card/id/proc/set_id_photo(var/mob/M)
front = getFlatIcon(M, SOUTH, always_use_defdir = 1)
front.Scale(128, 128)
side = getFlatIcon(M, WEST, always_use_defdir = 1)
side.Scale(128, 128)
/mob/proc/set_id_info(var/obj/item/weapon/card/id/id_card)
/mob/proc/set_id_info(var/obj/item/card/id/id_card)
id_card.age = 0
id_card.registered_name = real_name
id_card.sex = capitalize(gender)
@@ -164,14 +164,14 @@ var/const/NO_EMAG_ACT = -50
id_card.fingerprint_hash= md5(dna.uni_identity)
id_card.update_name()
/mob/living/carbon/human/set_id_info(var/obj/item/weapon/card/id/id_card)
/mob/living/carbon/human/set_id_info(var/obj/item/card/id/id_card)
..()
id_card.age = age
id_card.citizenship = citizenship
id_card.religion = SSrecords.get_religion_record_name(religion)
id_card.mob = src
/obj/item/weapon/card/id/proc/dat()
/obj/item/card/id/proc/dat()
var/dat = ("<table><tr><td>")
dat += text("Name: []</A><BR>", registered_name)
dat += text("Sex: []</A><BR>\n", sex)
@@ -189,7 +189,7 @@ var/const/NO_EMAG_ACT = -50
dat += "</tr></table>"
return dat
/obj/item/weapon/card/id/attack_self(mob/user as mob)
/obj/item/card/id/attack_self(mob/user as mob)
if (dna_hash == "\[UNSET\]" && ishuman(user))
var/response = alert(user, "This ID card has not been imprinted with biometric data. Would you like to imprint yours now?", "Biometric Imprinting", "Yes", "No")
if (response == "Yes")
@@ -214,7 +214,7 @@ var/const/NO_EMAG_ACT = -50
src.add_fingerprint(user)
return
/obj/item/weapon/card/id/attack(var/mob/living/M, var/mob/user, proximity)
/obj/item/card/id/attack(var/mob/living/M, var/mob/user, proximity)
if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
@@ -263,13 +263,13 @@ var/const/NO_EMAG_ACT = -50
return 1
return ..()
/obj/item/weapon/card/id/GetAccess()
/obj/item/card/id/GetAccess()
return access
/obj/item/weapon/card/id/GetID()
/obj/item/card/id/GetID()
return src
/obj/item/weapon/card/id/verb/read()
/obj/item/card/id/verb/read()
set name = "Read ID Card"
set category = "Object"
set src in usr
@@ -285,12 +285,12 @@ var/const/NO_EMAG_ACT = -50
to_chat(usr, "A ticker indicates the card has [mining_points] ore redemption points available.")
return
/obj/item/weapon/card/id/proc/mob_icon_update()
/obj/item/card/id/proc/mob_icon_update()
if (ismob(src.loc))
var/mob/M = src.loc
M.update_inv_wear_id()
/obj/item/weapon/card/id/verb/flip_side()
/obj/item/card/id/verb/flip_side()
set name = "Flip ID card"
set category = "Object"
set src in usr
@@ -305,7 +305,7 @@ var/const/NO_EMAG_ACT = -50
to_chat(usr, "You change \the [src] to be on your [src.flipped ? "left" : "right"] side.")
mob_icon_update()
/obj/item/weapon/card/id/verb/toggle_icon_layer()
/obj/item/card/id/verb/toggle_icon_layer()
set name = "Switch ID Layer"
set category = "Object"
set src in usr
@@ -318,29 +318,29 @@ var/const/NO_EMAG_ACT = -50
wear_over_suit = !wear_over_suit
mob_icon_update()
/obj/item/weapon/card/id/silver
/obj/item/card/id/silver
icon_state = "silver"
item_state = "silver_id"
overlay_state = "silver"
/obj/item/weapon/card/id/white
/obj/item/card/id/white
icon_state = "white"
item_state = "white_id"
overlay_state = "white"
/obj/item/weapon/card/id/navy
/obj/item/card/id/navy
desc = "A navy card which shows honour and dedication."
icon_state = "navy"
item_state = "navy_id"
overlay_state = "navy"
/obj/item/weapon/card/id/gold
/obj/item/card/id/gold
desc = "A golden card which shows power and might."
icon_state = "gold"
item_state = "gold_id"
overlay_state = "gold"
/obj/item/weapon/card/id/syndicate_command
/obj/item/card/id/syndicate_command
name = "syndicate ID card"
desc = "An ID straight from the Syndicate."
icon_state = "dark"
@@ -348,29 +348,29 @@ var/const/NO_EMAG_ACT = -50
assignment = "Syndicate Overlord"
access = list(access_syndicate, access_external_airlocks)
/obj/item/weapon/card/id/syndicate_ert
/obj/item/card/id/syndicate_ert
name = "\improper Syndicate Commando ID"
assignment = "Commando"
icon_state = "centcom"
/obj/item/weapon/card/id/syndicate_ert/New()
/obj/item/card/id/syndicate_ert/New()
access = get_all_accesses()
..()
/obj/item/weapon/card/id/syndicate/raider
/obj/item/card/id/syndicate/raider
name = "passport"
assignment = "Visitor"
/obj/item/weapon/card/id/highlander
/obj/item/card/id/highlander
name = "\improper Highlander ID"
assignment = "Highlander"
icon_state = "centcom"
/obj/item/weapon/card/id/highlander/New()
/obj/item/card/id/highlander/New()
access = get_all_station_access() | get_all_centcom_access()
..()
/obj/item/weapon/card/id/captains_spare
/obj/item/card/id/captains_spare
name = "captain's spare ID"
desc = "The spare ID of the High Lord himself."
icon_state = "gold"
@@ -379,40 +379,40 @@ var/const/NO_EMAG_ACT = -50
registered_name = "Captain"
assignment = "Captain"
/obj/item/weapon/card/id/captains_spare/New()
/obj/item/card/id/captains_spare/New()
access = get_all_station_access()
..()
/obj/item/weapon/card/id/merchant
/obj/item/card/id/merchant
name = "merchant pass"
icon_state = "centcom"
overlay_state = "centcom"
desc = "An identification card issued to NanoTrasen sanctioned merchants, indicating their right to sell and buy goods."
access = list(access_merchant)
/obj/item/weapon/card/id/synthetic
/obj/item/card/id/synthetic
name = "\improper Synthetic ID"
desc = "Access module for NanoTrasen Synthetics"
icon_state = "id-robot"
item_state = "tdgreen"
assignment = "Synthetic"
/obj/item/weapon/card/id/synthetic/New()
/obj/item/card/id/synthetic/New()
access = get_all_station_access() + access_synth
..()
/obj/item/weapon/card/id/minedrone
/obj/item/card/id/minedrone
name = "\improper Minedrone ID"
desc = "Access module for NanoTrasen Minedrones"
icon_state = "id-robot"
item_state = "tdgreen"
assignment = "Minedrone"
/obj/item/weapon/card/id/minedrone/New()
/obj/item/card/id/minedrone/New()
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station)
..()
/obj/item/weapon/card/id/centcom
/obj/item/card/id/centcom
name = "\improper CentCom. ID"
desc = "An ID straight from Cent. Com."
icon_state = "centcom"
@@ -420,53 +420,53 @@ var/const/NO_EMAG_ACT = -50
registered_name = "Central Command"
assignment = "General"
/obj/item/weapon/card/id/centcom/New()
/obj/item/card/id/centcom/New()
access = get_all_centcom_access()
..()
/obj/item/weapon/card/id/ert
/obj/item/card/id/ert
name = "\improper Nanotrasen Emergency Response Team ID"
icon_state = "centcom"
overlay_state = "centcom"
assignment = "Emergency Response Team"
/obj/item/weapon/card/id/ert/New()
/obj/item/card/id/ert/New()
access = get_all_station_access() + get_centcom_access("Emergency Response Team")
..()
/obj/item/weapon/card/id/asset_protection
/obj/item/card/id/asset_protection
name = "\improper Nanotrasen Asset Protection ID"
icon_state = "centcom"
overlay_state = "centcom"
assignment = "Asset Protection"
/obj/item/weapon/card/id/asset_protection/New()
/obj/item/card/id/asset_protection/New()
access = get_all_accesses()
..()
/obj/item/weapon/card/id/distress
/obj/item/card/id/distress
name = "\improper Freelancer Mercenary ID"
icon_state = "centcom"
assignment = "Freelancer Mercenary"
/obj/item/weapon/card/id/distress/New()
/obj/item/card/id/distress/New()
access = list(access_distress, access_maint_tunnels, access_external_airlocks)
..()
/obj/item/weapon/card/id/distress/kataphract
/obj/item/card/id/distress/kataphract
name = "\improper Kataphract ID"
icon_state = "centcom"
assignment = "Kataphract"
/obj/item/weapon/card/id/distress/legion
/obj/item/card/id/distress/legion
name = "\improper Tau Ceti Foreign Legion ID"
assignment = "Tau Ceti Foreign Legion Volunteer"
/obj/item/weapon/card/id/distress/legion/New()
/obj/item/card/id/distress/legion/New()
access = list(access_legion, access_maint_tunnels, access_external_airlocks, access_security, access_engine, access_engine_equip, access_medical, access_research, access_atmospherics, access_medical_equip)
..()
/obj/item/weapon/card/id/all_access
/obj/item/card/id/all_access
name = "\improper Administrator's spare ID"
desc = "The spare ID of the Lord of Lords himself."
icon_state = "data"
@@ -475,58 +475,58 @@ var/const/NO_EMAG_ACT = -50
registered_name = "Administrator"
assignment = "Administrator"
/obj/item/weapon/card/id/all_access/New()
/obj/item/card/id/all_access/New()
access = get_access_ids()
..()
// Contractor cards
/obj/item/weapon/card/id/idris
/obj/item/card/id/idris
name = "\improper Idris Incorporated identification card"
desc = "A high-tech holocard, designed to project information about a sub-contractor from Idris Incorporated."
icon_state = "idris_card"
overlay_state = "idris_card"
/obj/item/weapon/card/id/idris/sec
/obj/item/card/id/idris/sec
icon_state = "idrissec_card"
overlay_state = "idrissec_card"
/obj/item/weapon/card/id/iru
/obj/item/card/id/iru
name = "\improper IRU identification card"
desc = "A high-tech holobadge, designed to project information about an asset reclamation synthetic at Idris Incorporated."
icon_state = "iru_card"
overlay_state = "iru_card"
/obj/item/weapon/card/id/eridani
/obj/item/card/id/eridani
name = "\improper Eridani identification card"
desc = "A high-tech holobadge, identifying the owner as a contractor from one of the many PMCs from the Eridani Corporate Federation."
icon_state = "erisec_card"
overlay_state = "erisec_card"
/obj/item/weapon/card/id/zeng_hu
/obj/item/card/id/zeng_hu
name = "\improper Zeng-Hu Pharmaceuticals identification card"
desc = "A synthleather card, belonging to one of the highly skilled members of Zeng-Hu."
icon_state = "zhu_card"
overlay_state = "zhu_card"
/obj/item/weapon/card/id/hephaestus
/obj/item/card/id/hephaestus
name = "\improper Hephaestus Industries identification card"
desc = "A metal-backed card, belonging to the powerful Hephaestus Industries."
icon_state = "heph_card"
overlay_state = "heph_card"
/obj/item/weapon/card/id/necropolis
/obj/item/card/id/necropolis
name = "\improper Necropolis Incorporated identification card"
desc = "An old-fashioned, practical plastic card. Smells faintly of gunpowder."
icon_state = "necro_card"
overlay_state = "necro_card"
/obj/item/weapon/card/id/necropolis/sec
/obj/item/card/id/necropolis/sec
desc = "An old-fashioned, practical plastic card. This one is of a higher rank, for Security personnel."
icon_state = "necrosec_card"
overlay_state = "necrosec_card"
/obj/item/weapon/card/id/einstein
/obj/item/card/id/einstein
name = "\improper Einstein Engines identification card"
desc = "A stylized plastic card, belonging to one of the many specialists at Einstein Engines."
icon_state = "einstein_card"
@@ -1,30 +1,30 @@
/obj/item/weapon/card/id/syndicate
/obj/item/card/id/syndicate
name = "agent card"
assignment = "Agent"
origin_tech = list(TECH_ILLEGAL = 3)
var/electronic_warfare = 1
var/mob/registered_user = null
/obj/item/weapon/card/id/syndicate/New(mob/user as mob)
/obj/item/card/id/syndicate/New(mob/user as mob)
..()
access = syndicate_access.Copy()
/obj/item/weapon/card/id/syndicate/Destroy()
/obj/item/card/id/syndicate/Destroy()
unset_registered_user(registered_user)
return ..()
/obj/item/weapon/card/id/syndicate/prevent_tracking()
/obj/item/card/id/syndicate/prevent_tracking()
return electronic_warfare
/obj/item/weapon/card/id/syndicate/afterattack(var/obj/item/weapon/O as obj, mob/user as mob, proximity)
/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity)
if(!proximity) return
if(istype(O, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/I = O
if(istype(O, /obj/item/card/id))
var/obj/item/card/id/I = O
src.access |= I.access
if(player_is_antag(user.mind))
to_chat(user, "<span class='notice'>The microscanner activates as you pass it over the ID, copying its access.</span>")
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
/obj/item/card/id/syndicate/attack_self(mob/user as mob)
// We use the fact that registered_name is not unset should the owner be vaporized, to ensure the id doesn't magically become unlocked.
if(!registered_user && register_user(user))
to_chat(user, "<span class='notice'>The microscanner marks you as its owner, preventing others from accessing its internals.</span>")
@@ -37,7 +37,7 @@
else
..()
/obj/item/weapon/card/id/syndicate/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
/obj/item/card/id/syndicate/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
var/data[0]
var/entries[0]
entries[++entries.len] = list("name" = "Age", "value" = age)
@@ -59,27 +59,27 @@
ui.set_initial_data(data)
ui.open()
/obj/item/weapon/card/id/syndicate/proc/register_user(var/mob/user)
/obj/item/card/id/syndicate/proc/register_user(var/mob/user)
if(!istype(user) || user == registered_user)
return FALSE
unset_registered_user()
registered_user = user
user.set_id_info(src)
destroyed_event.register(user, src, /obj/item/weapon/card/id/syndicate/proc/unset_registered_user)
destroyed_event.register(user, src, /obj/item/card/id/syndicate/proc/unset_registered_user)
return TRUE
/obj/item/weapon/card/id/syndicate/proc/unset_registered_user(var/mob/user)
/obj/item/card/id/syndicate/proc/unset_registered_user(var/mob/user)
if(!registered_user || (user && user != registered_user))
return
destroyed_event.unregister(registered_user, src)
registered_user = null
/obj/item/weapon/card/id/syndicate/CanUseTopic(mob/user)
/obj/item/card/id/syndicate/CanUseTopic(mob/user)
if(user != registered_user)
return STATUS_CLOSE
return ..()
/obj/item/weapon/card/id/syndicate/Topic(href, href_list, var/datum/topic_state/state)
/obj/item/card/id/syndicate/Topic(href, href_list, var/datum/topic_state/state)
if(..())
return 1
@@ -186,8 +186,8 @@
/proc/id_card_states()
if(!id_card_states)
id_card_states = list()
for(var/path in typesof(/obj/item/weapon/card/id))
var/obj/item/weapon/card/id/ID = path
for(var/path in typesof(/obj/item/card/id))
var/obj/item/card/id/ID = path
var/datum/card_state/CS = new()
CS.icon_state = initial(ID.icon_state)
CS.item_state = initial(ID.item_state)
@@ -13,16 +13,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM
*/
//For anything that can light stuff on fire
/obj/item/weapon/flame
/obj/item/flame
var/lit = 0
/proc/isflamesource(A)
var/obj/item/I = A
if(I.iswelder())
var/obj/item/weapon/weldingtool/WT = A
var/obj/item/weldingtool/WT = A
return (WT.isOn())
else if(istype(I, /obj/item/weapon/flame))
var/obj/item/weapon/flame/F = I
else if(istype(I, /obj/item/flame))
var/obj/item/flame/F = I
return (F.lit)
else if(istype(I, /obj/item/device/assembly/igniter))
return 1
@@ -34,7 +34,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
///////////
//MATCHES//
///////////
/obj/item/weapon/flame/match
/obj/item/flame/match
name = "match"
desc = "A simple match stick, used for lighting fine smokables."
icon = 'icons/obj/cigs_lighters.dmi'
@@ -47,7 +47,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
attack_verb = list("burnt", "singed")
drop_sound = null
/obj/item/weapon/flame/match/process()
/obj/item/flame/match/process()
if(isliving(loc))
var/mob/living/M = loc
M.IgniteMob()
@@ -60,7 +60,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
location.hotspot_expose(700, 5)
return
/obj/item/weapon/flame/match/dropped(mob/user as mob)
/obj/item/flame/match/dropped(mob/user as mob)
//If dropped, put ourselves out
//not before lighting up the turf we land on, though.
if(lit)
@@ -71,7 +71,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
burn_out()
return ..()
/obj/item/weapon/flame/match/proc/burn_out()
/obj/item/flame/match/proc/burn_out()
lit = 0
burnt = 1
damtype = "brute"
@@ -192,15 +192,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
M.update_inv_r_hand(1)
STOP_PROCESSING(SSprocessing, src)
/obj/item/clothing/mask/smokable/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/clothing/mask/smokable/attackby(obj/item/W as obj, mob/user as mob)
..()
if(isflamesource(W))
var/text = matchmes
if(istype(W, /obj/item/weapon/flame/match))
if(istype(W, /obj/item/flame/match))
text = matchmes
else if(istype(W, /obj/item/weapon/flame/lighter/zippo))
else if(istype(W, /obj/item/flame/lighter/zippo))
text = zippomes
else if(istype(W, /obj/item/weapon/flame/lighter))
else if(istype(W, /obj/item/flame/lighter))
text = lightermes
else if(W.iswelder())
text = weldermes
@@ -222,7 +222,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
attack_verb = list("burnt", "singed")
icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
icon_off = "cigoff"
type_butt = /obj/item/weapon/cigbutt
type_butt = /obj/item/cigbutt
chem_volume = 30
burn_rate = 0.006 //Lasts ~166 seconds)
matchmes = "<span class='notice'>USER lights their NAME with their FLAME.</span>"
@@ -237,11 +237,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
reagents.add_reagent("nicotine",5) // 2/3 ratio, Adds 0.03 units per second
/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W as obj, mob/user as mob)
..()
if(istype(W, /obj/item/weapon/melee/energy/sword))
var/obj/item/weapon/melee/energy/sword/S = W
if(istype(W, /obj/item/melee/energy/sword))
var/obj/item/melee/energy/sword/S = W
if(S.active)
light("<span class='warning'>[user] swings their [W], barely missing themselves. They light their [name] in the process.</span>")
@@ -258,7 +258,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return 1
return ..()
/obj/item/clothing/mask/smokable/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity)
/obj/item/clothing/mask/smokable/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user as mob, proximity)
..()
if(!proximity || lit)
return
@@ -327,7 +327,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "cigar2off"
icon_on = "cigar2on"
icon_off = "cigar2off"
type_butt = /obj/item/weapon/cigbutt/cigarbutt
type_butt = /obj/item/cigbutt/cigarbutt
throw_speed = 0.5
item_state = "cigaroff"
burn_rate = 0.003 //Lasts ~300 seconds
@@ -374,7 +374,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
reagents.add_reagent("nicotine",10) //1/6 Ratio
reagents.add_reagent("tricordrazine",20)
/obj/item/weapon/cigbutt
/obj/item/cigbutt
name = "cigarette butt"
desc = "A manky old cigarette butt."
icon = 'icons/obj/clothing/masks.dmi'
@@ -384,17 +384,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM
slot_flags = SLOT_EARS
throwforce = 1
/obj/item/weapon/cigbutt/Initialize()
/obj/item/cigbutt/Initialize()
. = ..()
randpixel_xy()
transform = turn(transform,rand(0,360))
/obj/item/weapon/cigbutt/cigarbutt
/obj/item/cigbutt/cigarbutt
name = "cigar butt"
desc = "A manky old cigar butt."
icon_state = "cigarbutt"
/obj/item/clothing/mask/smokable/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/clothing/mask/smokable/cigarette/cigar/attackby(obj/item/W as obj, mob/user as mob)
..()
user.update_inv_wear_mask(0)
user.update_inv_l_hand(0)
@@ -455,14 +455,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM
reagents.clear_reagents()
name = "empty [initial(name)]"
/obj/item/clothing/mask/smokable/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/melee/energy/sword))
/obj/item/clothing/mask/smokable/pipe/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/melee/energy/sword))
return
..()
if (istype(W, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = W
if (istype(W, /obj/item/reagent_containers/food/snacks))
var/obj/item/reagent_containers/food/snacks/grown/G = W
if (!G.dry)
to_chat(user, "<span class='notice'>[G] must be dried before you stuff it into [src].</span>")
return
@@ -476,13 +476,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
burn_rate = initial(burn_rate)
qdel(G)
else if(istype(W, /obj/item/weapon/flame/lighter))
var/obj/item/weapon/flame/lighter/L = W
else if(istype(W, /obj/item/flame/lighter))
var/obj/item/flame/lighter/L = W
if(L.lit)
light("<span class='notice'>[user] manages to light their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/flame/match))
var/obj/item/weapon/flame/match/M = W
else if(istype(W, /obj/item/flame/match))
var/obj/item/flame/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
@@ -505,7 +505,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/////////
//ZIPPO//
/////////
/obj/item/weapon/flame/lighter
/obj/item/flame/lighter
name = "cheap lighter"
desc = "A cheap-as-free lighter."
icon = 'icons/obj/cigs_lighters.dmi'
@@ -524,7 +524,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
)
var/deactivation_sound = 'sound/items/cigs_lighters/cheap_off.ogg'
/obj/item/weapon/flame/lighter/zippo
/obj/item/flame/lighter/zippo
name = "\improper Zippo lighter"
desc = "The zippo. If you've spent that amount of money on a lighter, you're either a badass or a chain smoker."
icon_state = "zippo"
@@ -532,13 +532,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
activation_sound = 'sound/items/cigs_lighters/zippo_on.ogg'
deactivation_sound = 'sound/items/cigs_lighters/zippo_off.ogg'
/obj/item/weapon/flame/lighter/random
/obj/item/flame/lighter/random
New()
icon_state = "lighter-[pick("r","c","y","g")]"
item_state = icon_state
base_state = icon_state
/obj/item/weapon/flame/lighter/attack_self(mob/living/user)
/obj/item/flame/lighter/attack_self(mob/living/user)
if(!base_state)
base_state = icon_state
if(user.r_hand == src || user.l_hand == src)
@@ -547,7 +547,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "[base_state]on"
item_state = "[base_state]on"
playsound(src.loc, pick(activation_sound), 75, 1)
if(istype(src, /obj/item/weapon/flame/lighter/zippo) )
if(istype(src, /obj/item/flame/lighter/zippo) )
user.visible_message("<span class='notice'>Without even breaking stride, [user] flips open and lights [src] in one smooth movement.</span>")
else
if(prob(95))
@@ -570,7 +570,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "[base_state]"
item_state = "[base_state]"
playsound(src.loc, deactivation_sound, 75, 1)
if(istype(src, /obj/item/weapon/flame/lighter/zippo) )
if(istype(src, /obj/item/flame/lighter/zippo) )
user.visible_message("<span class='notice'>You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing.</span>")
else
user.visible_message("<span class='notice'>[user] quietly shuts off the [src].</span>")
@@ -582,7 +582,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
return
/obj/item/weapon/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/flame/lighter/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!istype(M, /mob))
return
@@ -594,19 +594,19 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(M == user)
cig.attackby(src, user)
else
if(istype(src, /obj/item/weapon/flame/lighter/zippo))
if(istype(src, /obj/item/flame/lighter/zippo))
cig.light("<span class='notice'>[user] whips the [name] out and holds it for [M].</span>")
else
cig.light("<span class='notice'>[user] holds the [name] out for [M], and lights the [cig.name].</span>")
else
..()
/obj/item/weapon/flame/lighter/throw_impact(mob/living/carbon/M as mob)
/obj/item/flame/lighter/throw_impact(mob/living/carbon/M as mob)
. = ..()
if(istype(M) && lit && M.IgniteMob())
M.visible_message(span("danger","\The [M] is ignited by \the [src]!"))
/obj/item/weapon/flame/lighter/process()
/obj/item/flame/lighter/process()
var/turf/location = get_turf(src)
if(location)
location.hotspot_expose(700, 5)
@@ -616,7 +616,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
if(M.IgniteMob())
M.visible_message(span("danger","\The [M] is ignited by \the [src]!"))
if (istype(loc, /obj/item/weapon/storage))//A lighter shouldn't stay lit inside a closed container
if (istype(loc, /obj/item/storage))//A lighter shouldn't stay lit inside a closed container
lit = 0
icon_state = "[base_state]"
item_state = "[base_state]"
@@ -1,4 +1,4 @@
/obj/item/weapon/circuitboard/broken
/obj/item/circuitboard/broken
name = "broken electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics_smoked"
@@ -4,7 +4,7 @@
#endif
#define T_BOARD(name) "circuit board (" + (name) + ")"
/obj/item/weapon/circuitboard
/obj/item/circuitboard
name = "circuit board"
desc = "Looks like a circuit. Probably is."
icon = 'icons/obj/module.dmi'
@@ -25,14 +25,14 @@
var/contain_parts = 1
//Called when the circuitboard is used to contruct a new machine.
/obj/item/weapon/circuitboard/proc/construct(var/obj/machinery/M)
/obj/item/circuitboard/proc/construct(var/obj/machinery/M)
if (istype(M, build_path))
return 1
return 0
//Called when a computer is deconstructed to produce a circuitboard.
//Only used by computers, as other machines store their circuitboard instance.
/obj/item/weapon/circuitboard/proc/deconstruct(var/obj/machinery/M)
/obj/item/circuitboard/proc/deconstruct(var/obj/machinery/M)
if (istype(M, build_path))
return 1
return 0
@@ -2,7 +2,7 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/air_management
/obj/item/circuitboard/air_management
name = T_BOARD("atmosphere monitoring console")
build_path = /obj/machinery/computer/general_air_control
var/console_name
@@ -10,7 +10,7 @@
var/list/sensors = list()
var/list/sensor_information = list()
/obj/item/weapon/circuitboard/air_management/tank_control
/obj/item/circuitboard/air_management/tank_control
name = T_BOARD("tank control")
build_path = /obj/machinery/computer/general_air_control/large_tank_control
frequency = 1441
@@ -23,7 +23,7 @@
var/input_flow_setting = 200
var/pressure_setting = ONE_ATMOSPHERE * 45
/obj/item/weapon/circuitboard/air_management/supermatter_core
/obj/item/circuitboard/air_management/supermatter_core
name = T_BOARD("core control")
build_path = /obj/machinery/computer/general_air_control/supermatter_core
frequency = 1438
@@ -36,7 +36,7 @@
var/input_flow_setting = 700
var/pressure_setting = 100
/obj/item/weapon/circuitboard/air_management/injector_control
/obj/item/circuitboard/air_management/injector_control
name = T_BOARD("injector control")
build_path = /obj/machinery/computer/general_air_control/fuel_injection
var/device_tag
@@ -48,7 +48,7 @@
/************
* Construct *
************/
/obj/item/weapon/circuitboard/air_management/construct(var/obj/machinery/computer/general_air_control/C)
/obj/item/circuitboard/air_management/construct(var/obj/machinery/computer/general_air_control/C)
if (..(C))
if(console_name)
C.name = console_name
@@ -57,7 +57,7 @@
C.sensor_information = sensor_information.Copy()
return 1
/obj/item/weapon/circuitboard/air_management/tank_control/construct(var/obj/machinery/computer/general_air_control/large_tank_control/LTC)
/obj/item/circuitboard/air_management/tank_control/construct(var/obj/machinery/computer/general_air_control/large_tank_control/LTC)
if(..(LTC))
LTC.input_tag = input_tag
LTC.output_tag = output_tag
@@ -69,7 +69,7 @@
LTC.default_pressure_setting = pressure_setting
return 1
/obj/item/weapon/circuitboard/air_management/supermatter_core/construct(var/obj/machinery/computer/general_air_control/supermatter_core/SC)
/obj/item/circuitboard/air_management/supermatter_core/construct(var/obj/machinery/computer/general_air_control/supermatter_core/SC)
if(..(SC))
SC.input_tag = input_tag
SC.output_tag = output_tag
@@ -81,7 +81,7 @@
SC.default_pressure_setting = input_flow_setting
return 1
/obj/item/weapon/circuitboard/air_management/injector_control/construct(var/obj/machinery/computer/general_air_control/fuel_injection/FI)
/obj/item/circuitboard/air_management/injector_control/construct(var/obj/machinery/computer/general_air_control/fuel_injection/FI)
if(..(FI))
FI.device_tag = device_tag
FI.device_info = device_info.Copy()
@@ -93,7 +93,7 @@
/**************
* Deconstruct *
**************/
/obj/item/weapon/circuitboard/air_management/deconstruct(var/obj/machinery/computer/general_air_control/C)
/obj/item/circuitboard/air_management/deconstruct(var/obj/machinery/computer/general_air_control/C)
if (..(C))
console_name = C.name
frequency = C.frequency
@@ -101,7 +101,7 @@
sensor_information = C.sensor_information.Copy()
return 1
/obj/item/weapon/circuitboard/air_management/tank_control/deconstruct(var/obj/machinery/computer/general_air_control/large_tank_control/LTC)
/obj/item/circuitboard/air_management/tank_control/deconstruct(var/obj/machinery/computer/general_air_control/large_tank_control/LTC)
if(..(LTC))
input_tag = LTC.input_tag
output_tag = LTC.output_tag
@@ -113,7 +113,7 @@
pressure_setting = LTC.default_pressure_setting
return 1
/obj/item/weapon/circuitboard/air_management/supermatter_core/deconstruct(var/obj/machinery/computer/general_air_control/supermatter_core/SC)
/obj/item/circuitboard/air_management/supermatter_core/deconstruct(var/obj/machinery/computer/general_air_control/supermatter_core/SC)
if(..(SC))
input_tag = SC.input_tag
output_tag = SC.output_tag
@@ -125,7 +125,7 @@
pressure_setting = SC.default_input_flow_setting
return 1
/obj/item/weapon/circuitboard/air_management/injector_control/deconstruct(var/obj/machinery/computer/general_air_control/fuel_injection/FI)
/obj/item/circuitboard/air_management/injector_control/deconstruct(var/obj/machinery/computer/general_air_control/fuel_injection/FI)
if(..(FI))
device_tag = FI.device_tag
device_info = FI.device_info.Copy()
@@ -2,7 +2,7 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/security
/obj/item/circuitboard/security
name = T_BOARD("security camera monitor")
build_path = /obj/machinery/computer/security
req_access = list(access_security)
@@ -10,34 +10,34 @@
var/locked = 1
var/emagged = 0
/obj/item/weapon/circuitboard/security/Initialize()
/obj/item/circuitboard/security/Initialize()
. = ..()
network = current_map.station_networks
/obj/item/weapon/circuitboard/security/engineering
/obj/item/circuitboard/security/engineering
name = T_BOARD("engineering camera monitor")
build_path = /obj/machinery/computer/security/engineering
req_access = list()
/obj/item/weapon/circuitboard/security/engineering/New()
/obj/item/circuitboard/security/engineering/New()
..()
network = engineering_networks
/obj/item/weapon/circuitboard/security/mining
/obj/item/circuitboard/security/mining
name = T_BOARD("mining camera monitor")
build_path = /obj/machinery/computer/security/mining
network = list("MINE")
req_access = list()
/obj/item/weapon/circuitboard/security/construct(var/obj/machinery/computer/security/C)
/obj/item/circuitboard/security/construct(var/obj/machinery/computer/security/C)
if (..(C))
C.network = network.Copy()
/obj/item/weapon/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
/obj/item/circuitboard/security/deconstruct(var/obj/machinery/computer/security/C)
if (..(C))
network = C.network.Copy()
/obj/item/weapon/circuitboard/security/emag_act(var/remaining_charges, var/mob/user)
/obj/item/circuitboard/security/emag_act(var/remaining_charges, var/mob/user)
if(emagged)
to_chat(user, "Circuit lock is already removed.")
return
@@ -46,8 +46,8 @@
locked = 0
return 1
/obj/item/weapon/circuitboard/security/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I,/obj/item/weapon/card/id))
/obj/item/circuitboard/security/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I,/obj/item/card/id))
if(emagged)
to_chat(user, "<span class='warning'>Circuit lock does not respond.</span>")
return
@@ -2,182 +2,182 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/message_monitor
/obj/item/circuitboard/message_monitor
name = T_BOARD("message monitor console")
build_path = /obj/machinery/computer/message_monitor
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/aiupload
/obj/item/circuitboard/aiupload
name = T_BOARD("AI upload console")
build_path = /obj/machinery/computer/aiupload
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/borgupload
/obj/item/circuitboard/borgupload
name = T_BOARD("cyborg upload console")
build_path = /obj/machinery/computer/borgupload
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/med_data
/obj/item/circuitboard/med_data
name = T_BOARD("medical records console")
build_path = /obj/machinery/computer/records/medical
/obj/item/weapon/circuitboard/pandemic
/obj/item/circuitboard/pandemic
name = T_BOARD("PanD.E.M.I.C. 2200")
build_path = /obj/machinery/computer/pandemic
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/scan_consolenew
/obj/item/circuitboard/scan_consolenew
name = T_BOARD("DNA machine")
build_path = /obj/machinery/computer/scan_consolenew
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/teleporter
/obj/item/circuitboard/teleporter
name = T_BOARD("teleporter control console")
build_path = /obj/machinery/computer/teleporter
origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 2)
/obj/item/weapon/circuitboard/secure_data
/obj/item/circuitboard/secure_data
name = T_BOARD("security records console")
build_path = /obj/machinery/computer/records/security
/obj/item/weapon/circuitboard/skills
/obj/item/circuitboard/skills
name = T_BOARD("employment records console")
build_path = /obj/machinery/computer/records/employment
/obj/item/weapon/circuitboard/sentencing
/obj/item/circuitboard/sentencing
name = T_BOARD("criminal sentencing console")
build_path = /obj/machinery/computer/sentencing
/obj/item/weapon/circuitboard/atmos_alert
/obj/item/circuitboard/atmos_alert
name = T_BOARD("atmospheric alert console")
build_path = /obj/machinery/computer/atmos_alert
/obj/item/weapon/circuitboard/pod
/obj/item/circuitboard/pod
name = T_BOARD("massdriver control")
build_path = /obj/machinery/computer/pod
/obj/item/weapon/circuitboard/robotics
/obj/item/circuitboard/robotics
name = T_BOARD("robotics control console")
build_path = /obj/machinery/computer/robotics
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/drone_control
/obj/item/circuitboard/drone_control
name = T_BOARD("drone control console")
build_path = /obj/machinery/computer/drone_control
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/cloning
/obj/item/circuitboard/cloning
name = T_BOARD("cloning control console")
build_path = /obj/machinery/computer/cloning
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
/obj/item/weapon/circuitboard/arcade/battle
/obj/item/circuitboard/arcade/battle
name = T_BOARD("battle arcade machine")
build_path = /obj/machinery/computer/arcade/battle
origin_tech = list(TECH_DATA = 1)
/obj/item/weapon/circuitboard/arcade/orion_trail
/obj/item/circuitboard/arcade/orion_trail
name = T_BOARD("orion trail arcade machine")
build_path = /obj/machinery/computer/arcade/orion_trail
origin_tech = list(TECH_DATA = 1)
/obj/item/weapon/circuitboard/turbine_control
/obj/item/circuitboard/turbine_control
name = T_BOARD("turbine control console")
build_path = /obj/machinery/computer/turbine_computer
/obj/item/weapon/circuitboard/solar_control
/obj/item/circuitboard/solar_control
name = T_BOARD("solar control console")
build_path = /obj/machinery/power/solar_control
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2)
/obj/item/weapon/circuitboard/powermonitor
/obj/item/circuitboard/powermonitor
name = T_BOARD("power monitoring console")
build_path = /obj/machinery/computer/power_monitor
/obj/item/weapon/circuitboard/olddoor
/obj/item/circuitboard/olddoor
name = T_BOARD("DoorMex")
build_path = /obj/machinery/computer/pod/old
/obj/item/weapon/circuitboard/syndicatedoor
/obj/item/circuitboard/syndicatedoor
name = T_BOARD("ProComp Executive")
build_path = /obj/machinery/computer/pod/old/syndicate
/obj/item/weapon/circuitboard/swfdoor
/obj/item/circuitboard/swfdoor
name = T_BOARD("Magix")
build_path = /obj/machinery/computer/pod/old/swf
/obj/item/weapon/circuitboard/prisoner
/obj/item/circuitboard/prisoner
name = T_BOARD("prisoner management console")
build_path = /obj/machinery/computer/prisoner
/obj/item/weapon/circuitboard/mecha_control
/obj/item/circuitboard/mecha_control
name = T_BOARD("exosuit control console")
build_path = /obj/machinery/computer/mecha
/obj/item/weapon/circuitboard/rdservercontrol
/obj/item/circuitboard/rdservercontrol
name = T_BOARD("R&D server control console")
build_path = /obj/machinery/computer/rdservercontrol
/obj/item/weapon/circuitboard/crew
/obj/item/circuitboard/crew
name = T_BOARD("crew monitoring console")
build_path = /obj/machinery/computer/crew
origin_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MAGNET = 2)
/obj/item/weapon/circuitboard/operating
/obj/item/circuitboard/operating
name = T_BOARD("patient monitoring console")
build_path = /obj/machinery/computer/operating
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
/obj/item/weapon/circuitboard/advoperating
/obj/item/circuitboard/advoperating
name = T_BOARD("life support table console")
build_path = /obj/machinery/computer/operating/advanced
origin_tech = list(TECH_DATA = 4, TECH_BIO = 4)
/obj/item/weapon/circuitboard/curefab
/obj/item/circuitboard/curefab
name = T_BOARD("cure fabricator")
build_path = /obj/machinery/computer/curer
/obj/item/weapon/circuitboard/splicer
/obj/item/circuitboard/splicer
name = T_BOARD("disease splicer")
build_path = /obj/machinery/computer/diseasesplicer
/obj/item/weapon/circuitboard/mining_shuttle
/obj/item/circuitboard/mining_shuttle
name = T_BOARD("mining shuttle console")
build_path = /obj/machinery/computer/shuttle_control/mining
origin_tech = list(TECH_DATA = 2)
/obj/item/weapon/circuitboard/engineering_shuttle
/obj/item/circuitboard/engineering_shuttle
name = T_BOARD("engineering shuttle console")
build_path = /obj/machinery/computer/shuttle_control/engineering
origin_tech = list(TECH_DATA = 2)
/obj/item/weapon/circuitboard/research_shuttle
/obj/item/circuitboard/research_shuttle
name = T_BOARD("research shuttle console")
build_path = /obj/machinery/computer/shuttle_control/research
origin_tech = list(TECH_DATA = 2)
/obj/item/weapon/circuitboard/area_atmos
/obj/item/circuitboard/area_atmos
name = T_BOARD("area air control console")
build_path = /obj/machinery/computer/area_atmos
origin_tech = list(TECH_DATA = 2)
/*/obj/item/weapon/circuitboard/prison_shuttle
/*/obj/item/circuitboard/prison_shuttle
name = T_BOARD("prison shuttle control console")
build_path = /obj/machinery/computer/prison_shuttle
origin_tech = list(TECH_DATA = 2)*/
/obj/item/weapon/circuitboard/rcon_console
/obj/item/circuitboard/rcon_console
name = T_BOARD("RCON remote control console")
build_path = /obj/machinery/computer/rcon
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5)
/obj/item/weapon/circuitboard/telesci_console
/obj/item/circuitboard/telesci_console
name = T_BOARD("Telescience Console")
build_path = /obj/machinery/computer/telescience
origin_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2)
/obj/item/weapon/circuitboard/slot_machine
/obj/item/circuitboard/slot_machine
name = T_BOARD("Slot Machine")
build_path = /obj/machinery/computer/slot_machine
origin_tech = list(TECH_DATA = 2)
@@ -2,7 +2,7 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/holodeckcontrol
/obj/item/circuitboard/holodeckcontrol
name = T_BOARD("holodeck control console")
build_path = /obj/machinery/computer/HolodeckControl
origin_tech = list(TECH_DATA = 2, TECH_BLUESPACE = 2)
@@ -11,7 +11,7 @@
var/list/supported_programs
var/list/restricted_programs
/obj/item/weapon/circuitboard/holodeckcontrol/construct(var/obj/machinery/computer/HolodeckControl/HC)
/obj/item/circuitboard/holodeckcontrol/construct(var/obj/machinery/computer/HolodeckControl/HC)
if (..(HC))
if(linkedholodeck_area)
HC.linkedholodeck = locate(linkedholodeck_area)
@@ -20,7 +20,7 @@
HC.emagged = 1
HC.safety_disabled = 1
/obj/item/weapon/circuitboard/holodeckcontrol/deconstruct(var/obj/machinery/computer/HolodeckControl/HC)
/obj/item/circuitboard/holodeckcontrol/deconstruct(var/obj/machinery/computer/HolodeckControl/HC)
if (..(HC))
linkedholodeck_area = HC.linkedholodeck_area
last_to_emag = HC.last_to_emag
@@ -2,11 +2,11 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/rdconsole
/obj/item/circuitboard/rdconsole
name = T_BOARD("R&D control console")
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
/obj/item/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
if(I.isscrewdriver())
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on \the [src]'s access protocol pins.</span>", "<span class='notice'>You adjust the jumper on the access protocol pins.</span>")
if(src.build_path == /obj/machinery/computer/rdconsole/core)
@@ -1,14 +1,14 @@
/obj/item/weapon/circuitboard/stationalert
/obj/item/circuitboard/stationalert
name = T_BOARD("station alert console")
build_path = /obj/machinery/computer/station_alert
var/list/alarm_handlers
/obj/item/weapon/circuitboard/stationalert/New()
/obj/item/circuitboard/stationalert/New()
alarm_handlers = new()
set_expansion(/datum/expansion/multitool, new/datum/expansion/multitool/circuitboards/stationalert(src))
..()
/obj/item/weapon/circuitboard/stationalert/construct(var/obj/machinery/computer/station_alert/SA)
/obj/item/circuitboard/stationalert/construct(var/obj/machinery/computer/station_alert/SA)
if(..(SA))
SA.unregister_monitor()
@@ -20,7 +20,7 @@
SA.register_monitor(monitor)
return 1
/obj/item/weapon/circuitboard/stationalert/deconstruct(var/obj/machinery/computer/station_alert/SA)
/obj/item/circuitboard/stationalert/deconstruct(var/obj/machinery/computer/station_alert/SA)
if(..(SA))
alarm_handlers.Cut()
if(SA.alarm_monitor)
@@ -2,17 +2,17 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/comm_monitor
/obj/item/circuitboard/comm_monitor
name = T_BOARD("telecommunications monitor console")
build_path = /obj/machinery/computer/telecomms/monitor
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/comm_server
/obj/item/circuitboard/comm_server
name = T_BOARD("telecommunications server monitor console")
build_path = /obj/machinery/computer/telecomms/server
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/comm_traffic
/obj/item/circuitboard/comm_traffic
name = T_BOARD("telecommunications traffic control console")
build_path = /obj/machinery/computer/telecomms/traffic
origin_tech = list(TECH_DATA = 3)
@@ -2,11 +2,11 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/biogenerator
/obj/item/circuitboard/biogenerator
name = T_BOARD("biogenerator")
build_path = "/obj/machinery/biogenerator"
board_type = "machine"
origin_tech = list(TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1)
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/manipulator" = 1)
@@ -2,11 +2,11 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/chem_heater
/obj/item/circuitboard/chem_heater
name = T_BOARD("chem heater")
build_path = "/obj/machinery/chem_heater"
board_type = "machine"
origin_tech = list(TECH_DATA = 1, TECH_BIO = 2)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3
"/obj/item/stock_parts/manipulator" = 3
)
@@ -2,25 +2,25 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/clonepod
/obj/item/circuitboard/clonepod
name = T_BOARD("clone pod")
build_path = "/obj/machinery/clonepod"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/clonescanner
/obj/item/circuitboard/clonescanner
name = T_BOARD("cloning scanner")
build_path = "/obj/machinery/dna_scannernew"
board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_BIO = 2)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/manipulator" = 1,
"/obj/item/stock_parts/micro_laser" = 1,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 2)
@@ -2,14 +2,14 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/bluespacerelay
/obj/item/circuitboard/bluespacerelay
name = T_BOARD("bluespacerelay")
build_path = "/obj/machinery/bluespacerelay"
board_type = "machine"
origin_tech = list(TECH_BLUESPACE = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/stack/cable_coil" = 30,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/subspace/filter" = 1,
"/obj/item/stock_parts/subspace/crystal" = 1
)
@@ -2,12 +2,12 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/mech_recharger
/obj/item/circuitboard/mech_recharger
name = T_BOARD("mech recharger")
build_path = "/obj/machinery/mech_recharger"
board_type = "machine"
origin_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2)
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/manipulator" = 2)
@@ -2,18 +2,18 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/miningdrill
/obj/item/circuitboard/miningdrill
name = T_BOARD("mining drill head")
build_path = "/obj/machinery/mining/drill"
board_type = "machine"
origin_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/cell" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/cell" = 1,
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/micro_laser" = 1)
/obj/item/weapon/circuitboard/miningdrillbrace
/obj/item/circuitboard/miningdrillbrace
name = T_BOARD("mining drill brace")
build_path = "/obj/machinery/mining/brace"
board_type = "machine"
@@ -4,111 +4,111 @@
//Stuff that doesn't fit into any category goes here
/obj/item/weapon/circuitboard/aicore
/obj/item/circuitboard/aicore
name = T_BOARD("AI core")
origin_tech = list(TECH_DATA = 4, TECH_BIO = 2)
board_type = "other"
/obj/item/weapon/circuitboard/sleeper
/obj/item/circuitboard/sleeper
name = T_BOARD("Sleeper")
desc = "The circuitboard for a sleeper."
build_path = "/obj/machinery/sleeper"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/reagent_containers/glass/beaker/large" = 1)
/obj/item/weapon/circuitboard/cryotube
/obj/item/circuitboard/cryotube
name = T_BOARD("Cryo Cell")
desc = "The circuitboard for a cryo tube."
build_path = "/obj/machinery/atmospherics/unary/cryo_cell"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 3)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 1)
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/reagent_containers/glass/beaker/large" = 1)
/obj/item/weapon/circuitboard/bodyscanner
/obj/item/circuitboard/bodyscanner
name = T_BOARD("Body Scanner Machine")
desc = "The circuitboard for a body scanner machine."
build_path = "/obj/machinery/bodyscanner"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/device/healthanalyzer" = 1)
/obj/item/weapon/circuitboard/bodyscannerconsole
/obj/item/circuitboard/bodyscannerconsole
name = T_BOARD("Body Scanner Console")
desc = "The circuitboard for a body scanner console."
build_path = "/obj/machinery/body_scanconsole"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/requestconsole
/obj/item/circuitboard/requestconsole
name = T_BOARD("Request Console")
desc = "The circuitboard for a body scanner console."
build_path = "/obj/machinery/requests_console"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/optable
/obj/item/circuitboard/optable
name = T_BOARD("Operation Table")
desc = "The circuitboard for a operation table."
build_path = "/obj/machinery/optable"
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1)
"/obj/item/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/optableadv
/obj/item/circuitboard/optableadv
name = T_BOARD("Advanced Operation Table")
desc = "The circuitboard for a advanced operating table."
build_path = "/obj/machinery/optable/lifesupport"
origin_tech = list(TECH_BIO = 4, TECH_ENGINEERING = 5)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/device/healthanalyzer" = 1,
"/obj/item/weapon/stock_parts/scanning_module/adv" = 1,
"/obj/item/stock_parts/scanning_module/adv" = 1,
"/obj/item/clothing/mask/breath/medical" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker/large" = 2)
"/obj/item/reagent_containers/glass/beaker/large" = 2)
/obj/item/weapon/circuitboard/smartfridge
/obj/item/circuitboard/smartfridge
name = T_BOARD("Smart Fridge")
desc = "The circuitboard for a smart fridge."
build_path = "/obj/machinery/smartfridge"
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 3)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3)
"/obj/item/stock_parts/manipulator" = 3)
/obj/item/weapon/circuitboard/refiner
/obj/item/circuitboard/refiner
name = T_BOARD("ore processor")
desc = "The circuitboard for an ore processing machine."
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "other" // change this to machine if you want it to be buildable
req_components = list(
/obj/item/weapon/stock_parts/capacitor = 2,
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 2)
/obj/item/stock_parts/capacitor = 2,
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/micro_laser = 2)
/obj/item/weapon/circuitboard/microwave
/obj/item/circuitboard/microwave
name = T_BOARD("microwave")
desc = "The circuitboard for a microwave."
build_path = "/obj/machinery/microwave"
@@ -116,80 +116,80 @@
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 3,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 2)
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/micro_laser" = 1,
"/obj/item/stock_parts/matter_bin" = 2)
/obj/item/weapon/circuitboard/oven
/obj/item/circuitboard/oven
name = T_BOARD("oven")
desc = "The circuitboard for an oven."
build_path = "/obj/machinery/appliance/cooker/oven"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 3,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 2)
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/matter_bin" = 2)
/obj/item/weapon/circuitboard/fryer
/obj/item/circuitboard/fryer
name = T_BOARD("deep fryer")
desc = "The circuitboard for a deep fryer."
build_path = "/obj/machinery/appliance/cooker/fryer"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 3,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 2)
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/matter_bin" = 2)
/obj/item/weapon/circuitboard/cerealmaker
/obj/item/circuitboard/cerealmaker
name = T_BOARD("cereal maker")
desc = "The circuitboard for a cereal maker."
build_path = "/obj/machinery/appliance/mixer/cereal"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 3,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 2)
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/matter_bin" = 2)
/obj/item/weapon/circuitboard/candymachine
/obj/item/circuitboard/candymachine
name = T_BOARD("candy machine")
desc = "The circuitboard for a candy machine."
build_path = "/obj/machinery/appliance/mixer/candy"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 3,
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/matter_bin" = 2)
"/obj/item/stock_parts/capacitor" = 3,
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/matter_bin" = 2)
/obj/item/weapon/circuitboard/holopad
/obj/item/circuitboard/holopad
name = T_BOARD("Holopad")
desc = "The circuitboard for a holopad."
build_path = "/obj/machinery/hologram/holopad"
origin_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1)
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/crystelpodconsole
/obj/item/circuitboard/crystelpodconsole
name = T_BOARD("Crystel Therapy Pod Console")
desc = "The circuitboard for a crystel therapy pod console."
build_path = "/obj/machinery/chakraconsole"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1)
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/capacitor" = 1)
/obj/item/weapon/circuitboard/crystelpod
/obj/item/circuitboard/crystelpod
name = T_BOARD("Crystel Therapy Pod")
desc = "The circuitboard for a crystel therapy pod."
build_path = "/obj/machinery/chakrapod"
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 2)
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/capacitor" = 2)
@@ -2,23 +2,23 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/pacman
/obj/item/circuitboard/pacman
name = T_BOARD("PACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/micro_laser" = 1,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1)
"/obj/item/stock_parts/capacitor" = 1)
/obj/item/weapon/circuitboard/pacman/super
/obj/item/circuitboard/pacman/super
name = T_BOARD("SUPERPACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman/super"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
/obj/item/weapon/circuitboard/pacman/mrs
/obj/item/circuitboard/pacman/mrs
name = T_BOARD("MRSPACMAN-type generator")
build_path = "/obj/machinery/power/port_gen/pacman/mrs"
origin_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
@@ -2,23 +2,23 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/smes
/obj/item/circuitboard/smes
name = T_BOARD("superconductive magnetic energy storage")
build_path = "/obj/machinery/power/smes/buildable"
board_type = "machine"
origin_tech = list(TECH_POWER = 6, TECH_ENGINEERING = 4)
req_components = list("/obj/item/weapon/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
req_components = list("/obj/item/smes_coil" = 1, "/obj/item/stack/cable_coil" = 30)
/obj/item/weapon/circuitboard/batteryrack
/obj/item/circuitboard/batteryrack
name = T_BOARD("battery rack PSU")
build_path = "/obj/machinery/power/smes/batteryrack"
board_type = "machine"
origin_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
req_components = list("/obj/item/weapon/cell" = 3)
req_components = list("/obj/item/cell" = 3)
/obj/item/weapon/circuitboard/ghettosmes
/obj/item/circuitboard/ghettosmes
name = T_BOARD("makeshift PSU")
desc = "An APC circuit repurposed into some power storage device controller"
build_path = "/obj/machinery/power/smes/batteryrack/makeshift"
board_type = "machine"
req_components = list("/obj/item/weapon/cell" = 3)
req_components = list("/obj/item/cell" = 3)
@@ -2,13 +2,13 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/recharge_station
/obj/item/circuitboard/recharge_station
name = T_BOARD("cyborg recharging station")
build_path = "/obj/machinery/recharge_station"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cell" = 1)
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/cell" = 1)
@@ -2,79 +2,79 @@
#error T_BOARD macro is not defined but we need it!
#endif
obj/item/weapon/circuitboard/rdserver
obj/item/circuitboard/rdserver
name = T_BOARD("R&D server")
build_path = "/obj/machinery/r_n_d/server"
board_type = "machine"
origin_tech = list(TECH_DATA = 3)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1)
"/obj/item/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/destructive_analyzer
/obj/item/circuitboard/destructive_analyzer
name = T_BOARD("destructive analyzer")
build_path = "/obj/machinery/r_n_d/destructive_analyzer"
board_type = "machine"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/scanning_module" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
"/obj/item/stock_parts/scanning_module" = 1,
"/obj/item/stock_parts/manipulator" = 1,
"/obj/item/stock_parts/micro_laser" = 1)
/obj/item/weapon/circuitboard/autolathe
/obj/item/circuitboard/autolathe
name = T_BOARD("autolathe")
build_path = "/obj/machinery/autolathe"
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 3,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/matter_bin" = 3,
"/obj/item/stock_parts/manipulator" = 1,
"/obj/item/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/protolathe
/obj/item/circuitboard/protolathe
name = T_BOARD("protolathe")
build_path = "/obj/machinery/r_n_d/protolathe"
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
"/obj/item/stock_parts/matter_bin" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/reagent_containers/glass/beaker" = 2)
/obj/item/weapon/circuitboard/circuit_imprinter
/obj/item/circuitboard/circuit_imprinter
name = T_BOARD("circuit imprinter")
build_path = "/obj/machinery/r_n_d/circuit_imprinter"
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/reagent_containers/glass/beaker" = 2)
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/manipulator" = 1,
"/obj/item/reagent_containers/glass/beaker" = 2)
/obj/item/weapon/circuitboard/mechfab
/obj/item/circuitboard/mechfab
name = "Circuit board (Exosuit Fabricator)"
build_path = "/obj/machinery/mecha_part_fabricator"
board_type = "machine"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/matter_bin" = 2,
"/obj/item/stock_parts/manipulator" = 1,
"/obj/item/stock_parts/micro_laser" = 1,
"/obj/item/stock_parts/console_screen" = 1)
/obj/item/weapon/circuitboard/telesci_pad
/obj/item/circuitboard/telesci_pad
name = T_BOARD("telepad")
build_path = "/obj/machinery/telepad"
board_type = "machine"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_MATERIAL = 3, TECH_BLUESPACE = 4)
req_components = list(
"/obj/item/bluespace_crystal" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1,
"/obj/item/stock_parts/capacitor" = 1,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1)
"/obj/item/stock_parts/console_screen" = 1)
obj/item/weapon/circuitboard/ntnet_relay
obj/item/circuitboard/ntnet_relay
name = "Circuit board (NTNet Quantum Relay)"
build_path = "/obj/machinery/ntnet_relay"
board_type = "machine"
@@ -2,41 +2,41 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/shield_gen_ex
/obj/item/circuitboard/shield_gen_ex
name = T_BOARD("hull shield generator")
board_type = "machine"
build_path = "/obj/machinery/shield_gen/external"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stock_parts/manipulator/pico" = 2,
"/obj/item/stock_parts/subspace/transmitter" = 1,
"/obj/item/stock_parts/subspace/crystal" = 1,
"/obj/item/stock_parts/subspace/amplifier" = 1,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/circuitboard/shield_gen
/obj/item/circuitboard/shield_gen
name = T_BOARD("bubble shield generator")
board_type = "machine"
build_path = "/obj/machinery/shield_gen"
origin_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/transmitter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stock_parts/manipulator/pico" = 2,
"/obj/item/stock_parts/subspace/transmitter" = 1,
"/obj/item/stock_parts/subspace/crystal" = 1,
"/obj/item/stock_parts/subspace/amplifier" = 1,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
/obj/item/weapon/circuitboard/shield_cap
/obj/item/circuitboard/shield_cap
name = T_BOARD("shield capacitor")
board_type = "machine"
build_path = "/obj/machinery/shield_capacitor"
origin_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator/pico" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 1,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/stock_parts/manipulator/pico" = 2,
"/obj/item/stock_parts/subspace/filter" = 1,
"/obj/item/stock_parts/subspace/treatment" = 1,
"/obj/item/stock_parts/subspace/analyzer" = 1,
"/obj/item/stock_parts/console_screen" = 1,
"/obj/item/stack/cable_coil" = 5)
@@ -2,74 +2,74 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/telecomms
/obj/item/circuitboard/telecomms
board_type = "machine"
/obj/item/weapon/circuitboard/telecomms/receiver
/obj/item/circuitboard/telecomms/receiver
name = T_BOARD("subspace receiver")
build_path = "/obj/machinery/telecomms/receiver"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/subspace/ansible" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/micro_laser" = 1)
"/obj/item/stock_parts/subspace/ansible" = 1,
"/obj/item/stock_parts/subspace/filter" = 1,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/micro_laser" = 1)
/obj/item/weapon/circuitboard/telecomms/hub
/obj/item/circuitboard/telecomms/hub
name = T_BOARD("hub mainframe")
build_path = "/obj/machinery/telecomms/hub"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
"/obj/item/stock_parts/subspace/filter" = 2)
/obj/item/weapon/circuitboard/telecomms/relay
/obj/item/circuitboard/telecomms/relay
name = T_BOARD("relay mainframe")
build_path = "/obj/machinery/telecomms/relay"
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
"/obj/item/stock_parts/subspace/filter" = 2)
/obj/item/weapon/circuitboard/telecomms/bus
/obj/item/circuitboard/telecomms/bus
name = T_BOARD("bus mainframe")
build_path = "/obj/machinery/telecomms/bus"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
"/obj/item/stock_parts/subspace/filter" = 1)
/obj/item/weapon/circuitboard/telecomms/processor
/obj/item/circuitboard/telecomms/processor
name = T_BOARD("processor unit")
build_path = "/obj/machinery/telecomms/processor"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 3,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
"/obj/item/stock_parts/manipulator" = 3,
"/obj/item/stock_parts/subspace/filter" = 1,
"/obj/item/stock_parts/subspace/treatment" = 2,
"/obj/item/stock_parts/subspace/analyzer" = 1,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1)
"/obj/item/stock_parts/subspace/amplifier" = 1)
/obj/item/weapon/circuitboard/telecomms/server
/obj/item/circuitboard/telecomms/server
name = T_BOARD("telecommunication server")
build_path = "/obj/machinery/telecomms/server"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
"/obj/item/stock_parts/subspace/filter" = 1)
/obj/item/weapon/circuitboard/telecomms/broadcaster
/obj/item/circuitboard/telecomms/broadcaster
name = T_BOARD("subspace broadcaster")
build_path = "/obj/machinery/telecomms/broadcaster"
origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/stock_parts/manipulator" = 2,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/micro_laser/high" = 2)
"/obj/item/stock_parts/subspace/filter" = 1,
"/obj/item/stock_parts/subspace/crystal" = 1,
"/obj/item/stock_parts/micro_laser/high" = 2)
@@ -2,12 +2,12 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/crusher
/obj/item/circuitboard/crusher
name = T_BOARD("crusher")
build_path = "/obj/machinery/crusher_base"
board_type = "machine"
origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 1, TECH_MAGNET = 1, TECH_MATERIAL = 3)
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 4,
"/obj/item/weapon/stock_parts/manipulator" = 3,
"/obj/item/weapon/reagent_containers/glass/beaker" = 3)
"/obj/item/stock_parts/matter_bin" = 4,
"/obj/item/stock_parts/manipulator" = 3,
"/obj/item/reagent_containers/glass/beaker" = 3)
@@ -2,23 +2,23 @@
#error T_BOARD macro is not defined but we need it!
#endif
/obj/item/weapon/circuitboard/unary_atmos
/obj/item/circuitboard/unary_atmos
board_type = "machine"
var/machine_dir = SOUTH
var/init_dirs = SOUTH
/obj/item/weapon/circuitboard/unary_atmos/attackby(obj/item/I as obj, mob/user as mob)
/obj/item/circuitboard/unary_atmos/attackby(obj/item/I as obj, mob/user as mob)
if(I.isscrewdriver())
machine_dir = turn(machine_dir, 90)
init_dirs = machine_dir
user.visible_message("<span class='notice'>\The [user] adjusts the jumper on the [src]'s port configuration pins.</span>", "<span class='notice'>You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].</span>")
return
/obj/item/weapon/circuitboard/unary_atmos/examine()
/obj/item/circuitboard/unary_atmos/examine()
..()
to_chat(usr, "The jumper is connecting the [dir2text(machine_dir)] pins.")
/obj/item/weapon/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U)
/obj/item/circuitboard/unary_atmos/construct(var/obj/machinery/atmospherics/unary/U)
//TODO: Move this stuff into the relevant constructor when pipe/construction.dm is cleaned up.
U.dir = src.machine_dir
U.initialize_directions = src.init_dirs
@@ -28,21 +28,21 @@
U.node.atmos_init()
U.node.build_network()
/obj/item/weapon/circuitboard/unary_atmos/heater
/obj/item/circuitboard/unary_atmos/heater
name = T_BOARD("gas heating system")
build_path = "/obj/machinery/atmospherics/unary/heater"
origin_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
req_components = list(
"/obj/item/stack/cable_coil" = 5,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2)
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/capacitor" = 2)
/obj/item/weapon/circuitboard/unary_atmos/cooler
/obj/item/circuitboard/unary_atmos/cooler
name = T_BOARD("gas cooling system")
build_path = "/obj/machinery/atmospherics/unary/freezer"
origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
req_components = list(
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/capacitor" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 1)
"/obj/item/stock_parts/matter_bin" = 1,
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/manipulator" = 1)
@@ -3,7 +3,7 @@
#endif
#define T_BOARD_MECHA(name) "exosuit module circuit board (" + (name) + ")"
/obj/item/weapon/circuitboard/mecha
/obj/item/circuitboard/mecha
name = "exosuit circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
@@ -11,103 +11,103 @@
board_type = "other"
/obj/item/weapon/circuitboard/mecha/ripley
/obj/item/circuitboard/mecha/ripley
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/mecha/ripley/peripherals
/obj/item/circuitboard/mecha/ripley/peripherals
name = T_BOARD_MECHA("Ripley peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/ripley/main
/obj/item/circuitboard/mecha/ripley/main
name = T_BOARD_MECHA("Ripley central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/gygax
/obj/item/circuitboard/mecha/gygax
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/mecha/gygax/peripherals
/obj/item/circuitboard/mecha/gygax/peripherals
name = T_BOARD_MECHA("Gygax peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/gygax/targeting
/obj/item/circuitboard/mecha/gygax/targeting
name = T_BOARD_MECHA("Gygax weapon control and targeting")
icon_state = "mcontroller"
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
/obj/item/weapon/circuitboard/mecha/gygax/main
/obj/item/circuitboard/mecha/gygax/main
name = T_BOARD_MECHA("Gygax central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/durand
/obj/item/circuitboard/mecha/durand
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/mecha/durand/peripherals
/obj/item/circuitboard/mecha/durand/peripherals
name = T_BOARD_MECHA("Durand peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/durand/targeting
/obj/item/circuitboard/mecha/durand/targeting
name = T_BOARD_MECHA("Durand weapon control and targeting")
icon_state = "mcontroller"
origin_tech = list(TECH_DATA = 4, TECH_COMBAT = 4)
/obj/item/weapon/circuitboard/mecha/durand/main
/obj/item/circuitboard/mecha/durand/main
name = T_BOARD_MECHA("Durand central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/honker
/obj/item/circuitboard/mecha/honker
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/mecha/honker/peripherals
/obj/item/circuitboard/mecha/honker/peripherals
name = T_BOARD_MECHA("H.O.N.K peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/honker/targeting
/obj/item/circuitboard/mecha/honker/targeting
name = T_BOARD_MECHA("H.O.N.K weapon control and targeting")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/honker/main
/obj/item/circuitboard/mecha/honker/main
name = T_BOARD_MECHA("H.O.N.K central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/odysseus
/obj/item/circuitboard/mecha/odysseus
origin_tech = list(TECH_DATA = 3)
/obj/item/weapon/circuitboard/mecha/odysseus/peripherals
/obj/item/circuitboard/mecha/odysseus/peripherals
name = T_BOARD_MECHA("Odysseus peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/odysseus/main
/obj/item/circuitboard/mecha/odysseus/main
name = T_BOARD_MECHA("Odysseus central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/hermes
/obj/item/circuitboard/mecha/hermes
origin_tech = list(TECH_DATA = 2)
/obj/item/weapon/circuitboard/mecha/hermes/peripherals
/obj/item/circuitboard/mecha/hermes/peripherals
name = T_BOARD_MECHA("Hermes peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/hermes/main
/obj/item/circuitboard/mecha/hermes/main
name = T_BOARD_MECHA("Hermes central control")
icon_state = "mainboard"
/obj/item/weapon/circuitboard/mecha/phazon
/obj/item/circuitboard/mecha/phazon
origin_tech = list(TECH_DATA = 5, TECH_BLUESPACE = 5)
/obj/item/weapon/circuitboard/mecha/phazon/peripherals
/obj/item/circuitboard/mecha/phazon/peripherals
name = T_BOARD_MECHA("Phazon peripherals control")
icon_state = "mcontroller"
/obj/item/weapon/circuitboard/mecha/phazon/targeting
/obj/item/circuitboard/mecha/phazon/targeting
name = T_BOARD_MECHA("Phazon weapon control and targeting")
icon_state = "mcontroller"
origin_tech = list(TECH_DATA = 5, TECH_COMBAT = 6, TECH_BLUESPACE = 5)
/obj/item/weapon/circuitboard/mecha/phazon/main
/obj/item/circuitboard/mecha/phazon/main
name = T_BOARD_MECHA("Phazon central control")
icon_state = "mainboard"
@@ -1,4 +1,4 @@
/obj/item/weapon/circuitboard/rig_assembly
/obj/item/circuitboard/rig_assembly
name = "rig circuit board"
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
@@ -9,46 +9,46 @@
////CIVILIAN BOARDS////
///////////////////////
/obj/item/weapon/circuitboard/rig_assembly/civilian
/obj/item/circuitboard/rig_assembly/civilian
origin_tech = list(TECH_DATA = 4)
/obj/item/weapon/circuitboard/rig_assembly/civilian/industrial
/obj/item/circuitboard/rig_assembly/civilian/industrial
name = "industrial suit central circuit board"
/obj/item/weapon/circuitboard/rig_assembly/civilian/eva
/obj/item/circuitboard/rig_assembly/civilian/eva
name = "EVA suit central circuit board"
/obj/item/weapon/circuitboard/rig_assembly/civilian/ce
/obj/item/circuitboard/rig_assembly/civilian/ce
name = "advanced void suit central circuit board"
origin_tech = list(TECH_DATA = 5)
/obj/item/weapon/circuitboard/rig_assembly/civilian/hazmat
/obj/item/circuitboard/rig_assembly/civilian/hazmat
name = "AMI suit central circuit board"
/obj/item/weapon/circuitboard/rig_assembly/civilian/medical
/obj/item/circuitboard/rig_assembly/civilian/medical
name = "rescue suit central circuit board"
/////////////////////
////COMBAT BOARDS////
/////////////////////
/obj/item/weapon/circuitboard/rig_assembly/combat
/obj/item/circuitboard/rig_assembly/combat
origin_tech = list(TECH_DATA = 5)
/obj/item/weapon/circuitboard/rig_assembly/combat/targeting
/obj/item/circuitboard/rig_assembly/combat/targeting
origin_tech = list(TECH_DATA = 5, TECH_COMBAT = 4)
/obj/item/weapon/circuitboard/rig_assembly/combat/hazard
/obj/item/circuitboard/rig_assembly/combat/hazard
name = "hazard rig central circuit board"
/obj/item/weapon/circuitboard/rig_assembly/combat/targeting/hazard
/obj/item/circuitboard/rig_assembly/combat/targeting/hazard
name = "hazard rig control and targeting board"
/obj/item/weapon/circuitboard/rig_assembly/combat/combat
/obj/item/circuitboard/rig_assembly/combat/combat
name = "combat rig central circuit board"
origin_tech = list(TECH_DATA = 7)
/obj/item/weapon/circuitboard/rig_assembly/combat/targeting/combat
/obj/item/circuitboard/rig_assembly/combat/targeting/combat
name = "combat rig control and targeting board"
origin_tech = list(TECH_DATA = 7, TECH_COMBAT = 6)
@@ -56,23 +56,23 @@
////ILLEGAL BOARDS////
//////////////////////
/obj/item/weapon/circuitboard/rig_assembly/illegal
/obj/item/circuitboard/rig_assembly/illegal
origin_tech = list(TECH_DATA = 7, TECH_ILLEGAL = 4)
/obj/item/weapon/circuitboard/rig_assembly/illegal/targeting
/obj/item/circuitboard/rig_assembly/illegal/targeting
origin_tech = list(TECH_DATA = 7, TECH_COMBAT = 4, TECH_ILLEGAL = 4)
/obj/item/weapon/circuitboard/rig_assembly/illegal/hacker
/obj/item/circuitboard/rig_assembly/illegal/hacker
name = "cybersuit rig central circuit board"
/obj/item/weapon/circuitboard/rig_assembly/illegal/targeting/hacker
/obj/item/circuitboard/rig_assembly/illegal/targeting/hacker
name = "cybersuit rig control and targeting board"
/obj/item/weapon/circuitboard/rig_assembly/illegal/stealth
/obj/item/circuitboard/rig_assembly/illegal/stealth
name = "stealth rig central circuit board"
origin_tech = list(TECH_DATA = 7, TECH_ILLEGAL = 6)
/obj/item/weapon/circuitboard/rig_assembly/illegal/targeting/stealth
/obj/item/circuitboard/rig_assembly/illegal/targeting/stealth
name = "stealth rig control and targeting board"
origin_tech = list(TECH_DATA = 7, TECH_COMBAT = 6, TECH_ILLEGAL = 6)
@@ -1,4 +1,4 @@
/obj/item/weapon/cloaking_device
/obj/item/cloaking_device
name = "cloaking device"
desc = "Use this to become invisible to the human eye. Contains a removable power cell behind a screwed compartment"
description_info = "The default power cell will last for five minutes of continuous usage. It can be removed and recharged or replaced with a better one using a screwdriver.\
@@ -20,28 +20,28 @@
var/power_usage = 35000//A high powered cell allows 5 minutes of continuous usage
//Note it can be toggled on and off easily. You can make it last an hour if you only use it when
//people are nearby to see. Carry spare/better cells for extended cloaking.
var/obj/item/weapon/cell/cell = null
var/obj/item/cell/cell = null
var/mob/living/owner = null
var/datum/modifier/cloaking_device/modifier = null
/obj/item/weapon/cloaking_device/New()
/obj/item/cloaking_device/New()
..()
cloaking_devices += src
cell = new /obj/item/weapon/cell/high(src)
cell = new /obj/item/cell/high(src)
/obj/item/weapon/cloaking_device/Destroy()
/obj/item/cloaking_device/Destroy()
. = ..()
cloaking_devices -= src
/obj/item/weapon/cloaking_device/equipped(var/mob/user, var/slot)
/obj/item/cloaking_device/equipped(var/mob/user, var/slot)
..()
//Picked up or switched hands or worn
register_owner(user)
//Handles dropped or thrown cloakers
/obj/item/weapon/cloaking_device/dropped(var/mob/user)
/obj/item/cloaking_device/dropped(var/mob/user)
..()
var/mob/M = get_holding_mob()
if(!M)
@@ -52,7 +52,7 @@
//If M contains the owner then the item hasn't actually been dropped, its just the quirk mentioned above
/obj/item/weapon/cloaking_device/attack_self(mob/user as mob)
/obj/item/cloaking_device/attack_self(mob/user as mob)
if (istype(loc, /mob) && loc == user)//safety check incase of shenanigans
register_owner(user)
if (active)
@@ -62,7 +62,7 @@
src.add_fingerprint(user)
return
/obj/item/weapon/cloaking_device/proc/activate()
/obj/item/cloaking_device/proc/activate()
if (active)
return
@@ -81,7 +81,7 @@
to_chat(owner, "<span class='notice'>\The [src] is now active.</span>")
start_modifier()
/obj/item/weapon/cloaking_device/proc/deactivate()
/obj/item/cloaking_device/proc/deactivate()
if (!active)
return
active = 0
@@ -93,14 +93,14 @@
stop_modifier()
STOP_PROCESSING(SSprocessing, src)
/obj/item/weapon/cloaking_device/emp_act(severity)
/obj/item/cloaking_device/emp_act(severity)
deactivate()
if (cell)
cell.emp_act(severity)
..()
/obj/item/weapon/cloaking_device/proc/register_owner(var/mob/user)
/obj/item/cloaking_device/proc/register_owner(var/mob/user)
if (!owner || owner != user)
stop_modifier()
owner = user
@@ -109,21 +109,21 @@
start_modifier()
/obj/item/weapon/cloaking_device/proc/start_modifier()
/obj/item/cloaking_device/proc/start_modifier()
if (!owner)
owner = get_holding_mob()
if (owner)
modifier = owner.add_modifier(/datum/modifier/cloaking_device, MODIFIER_ITEM, src, override = MODIFIER_OVERRIDE_NEIGHBOR, _check_interval = 30)
/obj/item/weapon/cloaking_device/proc/stop_modifier()
/obj/item/cloaking_device/proc/stop_modifier()
if (modifier)
modifier.stop(1)
modifier = null
/obj/item/weapon/cloaking_device/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/cell))
/obj/item/cloaking_device/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/cell))
if(!cell)
user.drop_from_inventory(W,src)
cell = W
@@ -143,14 +143,14 @@
..()
/obj/item/weapon/cloaking_device/examine(mob/user)
/obj/item/cloaking_device/examine(mob/user)
..()
if (!cell)
to_chat(user, "It needs a power cell to function.")
else
to_chat(user, "It has [cell.percent()]% power remaining")
/obj/item/weapon/cloaking_device/process()
/obj/item/cloaking_device/process()
if (!cell || !cell.checked_use(power_usage*CELLRATE))
deactivate()
return
@@ -173,7 +173,7 @@
..()
for (var/a in cloaking_devices)//Check for any other cloaks
if (a != source)
var/obj/item/weapon/cloaking_device/CD = a
var/obj/item/cloaking_device/CD = a
if (CD.get_holding_mob() == target)
if (CD.active)//If target is holding another active cloak then we wont remove their stealth
return
@@ -186,6 +186,6 @@
/datum/modifier/cloaking_device/check_validity()
.=..()
if (. == 1)
var/obj/item/weapon/cloaking_device/C = source
var/obj/item/cloaking_device/C = source
if (!C.active)
return validity_fail("Cloak is inactive!")
+15 -15
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/lipstick
/obj/item/lipstick
gender = PLURAL
name = "red lipstick"
desc = "A generic brand of lipstick."
@@ -10,31 +10,31 @@
var/open = 0
drop_sound = 'sound/items/drop/glass.ogg'
/obj/item/weapon/lipstick/purple
/obj/item/lipstick/purple
name = "purple lipstick"
colour = "purple"
/obj/item/weapon/lipstick/jade
/obj/item/lipstick/jade
name = "jade lipstick"
colour = "jade"
/obj/item/weapon/lipstick/black
/obj/item/lipstick/black
name = "black lipstick"
colour = "black"
/obj/item/weapon/lipstick/pink
/obj/item/lipstick/pink
name = "pink lipstick"
colour = "pink"
/obj/item/weapon/lipstick/random
/obj/item/lipstick/random
name = "lipstick"
/obj/item/weapon/lipstick/random/New()
/obj/item/lipstick/random/New()
colour = pick("red","purple","jade","pink","black")
name = "[colour] lipstick"
/obj/item/weapon/lipstick/attack_self(mob/user as mob)
/obj/item/lipstick/attack_self(mob/user as mob)
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
open = !open
if(open)
@@ -42,7 +42,7 @@
else
icon_state = initial(icon_state)
/obj/item/weapon/lipstick/attack(mob/M as mob, mob/user as mob)
/obj/item/lipstick/attack(mob/M as mob, mob/user as mob)
if(!open) return
if(!istype(M, /mob)) return
@@ -71,7 +71,7 @@
//you can wipe off lipstick with paper! see code/modules/paperwork/paper.dm, paper/attack()
/obj/item/weapon/haircomb //sparklysheep's comb
/obj/item/haircomb //sparklysheep's comb
name = "plastic comb"
desc = "A pristine comb made from flexible plastic."
w_class = 1.0
@@ -80,21 +80,21 @@
icon_state = "comb"
item_state = "comb"
/obj/item/weapon/haircomb/random/Initialize()
/obj/item/haircomb/random/Initialize()
. = ..()
color = get_random_colour(lower = 150)
/obj/item/weapon/haircomb/attack_self(mob/user)
/obj/item/haircomb/attack_self(mob/user)
user.visible_message("<span class='notice'>[user] uses [src] to comb their hair with incredible style and sophistication. What a [user.gender == FEMALE ? "lady" : "guy"].</span>")
/obj/item/weapon/razor
/obj/item/razor
name = "electric razor"
desc = "The latest and greatest power razor born from the science of shaving."
icon = 'icons/obj/weapons.dmi'
icon_state = "razor"
w_class = 2
/obj/item/weapon/razor/proc/shave(mob/living/carbon/human/H, location)
/obj/item/razor/proc/shave(mob/living/carbon/human/H, location)
if(location == "head")
H.h_style = H.species.default_h_style
else
@@ -104,7 +104,7 @@
playsound(H, 'sound/items/welder2.ogg', 20, 1)
/obj/item/weapon/razor/attack(mob/M, mob/user, var/target_zone)
/obj/item/razor/attack(mob/M, mob/user, var/target_zone)
if(!ishuman(M))
return ..()
+9 -9
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/dice
/obj/item/dice
name = "d6"
desc = "A dice with six sides."
icon = 'icons/obj/dice.dmi'
@@ -11,10 +11,10 @@
var/weighted_value = 70 //what is the chance of falling on the favored number
attack_verb = list("diced")
/obj/item/weapon/dice/New()
/obj/item/dice/New()
icon_state = "[name][rand(1,sides)]"
/obj/item/weapon/dice/throw_impact(atom/hit_atom)
/obj/item/dice/throw_impact(atom/hit_atom)
..()
var/result
if((weighted) && (prob(weighted_value)))
@@ -30,37 +30,37 @@
icon_state = "[name][result]"
src.visible_message("<span class='notice'>\The [name] lands on [result * side_mult]. [comment]</span>")
/obj/item/weapon/dice/d4
/obj/item/dice/d4
name = "d4"
desc = "A dice with four sides."
icon_state = "d44"
sides = 4
/obj/item/weapon/dice/d8
/obj/item/dice/d8
name = "d8"
desc = "A dice with eight sides."
icon_state = "d88"
sides = 8
/obj/item/weapon/dice/d10
/obj/item/dice/d10
name = "d10"
desc = "A dice with ten sides."
icon_state = "d1010"
sides = 10
/obj/item/weapon/dice/d12
/obj/item/dice/d12
name = "d12"
desc = "A dice with twelve sides."
icon_state = "d1212"
sides = 12
/obj/item/weapon/dice/d20
/obj/item/dice/d20
name = "d20"
desc = "A dice with twenty sides."
icon_state = "d2020"
sides = 20
/obj/item/weapon/dice/d100
/obj/item/dice/d100
name = "d100"
desc = "A dice with ten sides. This one is for the tens digit."
icon_state = "d10010"
+55 -55
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/dnainjector
/obj/item/dnainjector
name = "\improper DNA injector"
desc = "This injects the person with DNA."
icon = 'icons/obj/items.dmi'
@@ -19,7 +19,7 @@
var/datatype=0
var/value=0
/obj/item/weapon/dnainjector/New()
/obj/item/dnainjector/New()
if(datatype && block)
buf=new
buf.dna=new
@@ -29,41 +29,41 @@
SetValue(src.value)
//testing("[name]: DNA2 SE blocks after SetValue: [english_list(buf.dna.SE)]")
/obj/item/weapon/dnainjector/proc/GetRealBlock(var/selblock)
/obj/item/dnainjector/proc/GetRealBlock(var/selblock)
if(selblock==0)
return block
else
return selblock
/obj/item/weapon/dnainjector/proc/GetState(var/selblock=0)
/obj/item/dnainjector/proc/GetState(var/selblock=0)
var/real_block=GetRealBlock(selblock)
if(buf.types&DNA2_BUF_SE)
return buf.dna.GetSEState(real_block)
else
return buf.dna.GetUIState(real_block)
/obj/item/weapon/dnainjector/proc/SetState(var/on, var/selblock=0)
/obj/item/dnainjector/proc/SetState(var/on, var/selblock=0)
var/real_block=GetRealBlock(selblock)
if(buf.types&DNA2_BUF_SE)
return buf.dna.SetSEState(real_block,on)
else
return buf.dna.SetUIState(real_block,on)
/obj/item/weapon/dnainjector/proc/GetValue(var/selblock=0)
/obj/item/dnainjector/proc/GetValue(var/selblock=0)
var/real_block=GetRealBlock(selblock)
if(buf.types&DNA2_BUF_SE)
return buf.dna.GetSEValue(real_block)
else
return buf.dna.GetUIValue(real_block)
/obj/item/weapon/dnainjector/proc/SetValue(var/val,var/selblock=0)
/obj/item/dnainjector/proc/SetValue(var/val,var/selblock=0)
var/real_block=GetRealBlock(selblock)
if(buf.types&DNA2_BUF_SE)
return buf.dna.SetSEValue(real_block,val)
else
return buf.dna.SetUIValue(real_block,val)
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob, mob/user as mob)
/obj/item/dnainjector/proc/inject(mob/M as mob, mob/user as mob)
if(istype(M,/mob/living))
var/mob/living/L = M
L.apply_effect(rand(5,20), IRRADIATE, blocked = 0)
@@ -97,7 +97,7 @@
qdel(src)
return uses
/obj/item/weapon/dnainjector/attack(mob/M as mob, mob/user as mob)
/obj/item/dnainjector/attack(mob/M as mob, mob/user as mob)
if (!istype(M, /mob))
return
if (!usr.IsAdvancedToolUser())
@@ -141,7 +141,7 @@
inject(M, user)
return
/obj/item/weapon/dnainjector/hulkmut
/obj/item/dnainjector/hulkmut
name = "\improper DNA injector (Hulk)"
desc = "This will make you big and strong, but give you a bad skin condition."
datatype = DNA2_BUF_SE
@@ -151,7 +151,7 @@
block = HULKBLOCK
..()
/obj/item/weapon/dnainjector/antihulk
/obj/item/dnainjector/antihulk
name = "\improper DNA injector (Anti-Hulk)"
desc = "Cures green skin."
datatype = DNA2_BUF_SE
@@ -161,7 +161,7 @@
block = HULKBLOCK
..()
/obj/item/weapon/dnainjector/xraymut
/obj/item/dnainjector/xraymut
name = "\improper DNA injector (Xray)"
desc = "Finally you can see what the Captain does."
datatype = DNA2_BUF_SE
@@ -171,7 +171,7 @@
block = XRAYBLOCK
..()
/obj/item/weapon/dnainjector/antixray
/obj/item/dnainjector/antixray
name = "\improper DNA injector (Anti-Xray)"
desc = "It will make you see harder."
datatype = DNA2_BUF_SE
@@ -181,7 +181,7 @@
block = XRAYBLOCK
..()
/obj/item/weapon/dnainjector/firemut
/obj/item/dnainjector/firemut
name = "\improper DNA injector (Fire)"
desc = "Gives you fire."
datatype = DNA2_BUF_SE
@@ -191,7 +191,7 @@
block = FIREBLOCK
..()
/obj/item/weapon/dnainjector/antifire
/obj/item/dnainjector/antifire
name = "\improper DNA injector (Anti-Fire)"
desc = "Cures fire."
datatype = DNA2_BUF_SE
@@ -201,7 +201,7 @@
block = FIREBLOCK
..()
/obj/item/weapon/dnainjector/telemut
/obj/item/dnainjector/telemut
name = "\improper DNA injector (Tele.)"
desc = "Super brain man!"
datatype = DNA2_BUF_SE
@@ -211,7 +211,7 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/antitele
/obj/item/dnainjector/antitele
name = "\improper DNA injector (Anti-Tele.)"
desc = "Will make you not able to control your mind."
datatype = DNA2_BUF_SE
@@ -221,7 +221,7 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/nobreath
/obj/item/dnainjector/nobreath
name = "\improper DNA injector (No Breath)"
desc = "Hold your breath and count to infinity."
datatype = DNA2_BUF_SE
@@ -231,7 +231,7 @@
block = NOBREATHBLOCK
..()
/obj/item/weapon/dnainjector/antinobreath
/obj/item/dnainjector/antinobreath
name = "\improper DNA injector (Anti-No Breath)"
desc = "Hold your breath and count to 100."
datatype = DNA2_BUF_SE
@@ -241,7 +241,7 @@
block = NOBREATHBLOCK
..()
/obj/item/weapon/dnainjector/remoteview
/obj/item/dnainjector/remoteview
name = "\improper DNA injector (Remote View)"
desc = "Stare into the distance for a reason."
datatype = DNA2_BUF_SE
@@ -251,7 +251,7 @@
block = REMOTEVIEWBLOCK
..()
/obj/item/weapon/dnainjector/antiremoteview
/obj/item/dnainjector/antiremoteview
name = "\improper DNA injector (Anti-Remote View)"
desc = "Cures green skin."
datatype = DNA2_BUF_SE
@@ -261,7 +261,7 @@
block = REMOTEVIEWBLOCK
..()
/obj/item/weapon/dnainjector/regenerate
/obj/item/dnainjector/regenerate
name = "\improper DNA injector (Regeneration)"
desc = "Healthy but hungry."
datatype = DNA2_BUF_SE
@@ -271,7 +271,7 @@
block = REGENERATEBLOCK
..()
/obj/item/weapon/dnainjector/antiregenerate
/obj/item/dnainjector/antiregenerate
name = "\improper DNA injector (Anti-Regeneration)"
desc = "Sickly but sated."
datatype = DNA2_BUF_SE
@@ -281,7 +281,7 @@
block = REGENERATEBLOCK
..()
/obj/item/weapon/dnainjector/runfast
/obj/item/dnainjector/runfast
name = "\improper DNA injector (Increase Run)"
desc = "Running Man."
datatype = DNA2_BUF_SE
@@ -291,7 +291,7 @@
block = INCREASERUNBLOCK
..()
/obj/item/weapon/dnainjector/antirunfast
/obj/item/dnainjector/antirunfast
name = "\improper DNA injector (Anti-Increase Run)"
desc = "Walking Man."
datatype = DNA2_BUF_SE
@@ -301,7 +301,7 @@
block = INCREASERUNBLOCK
..()
/obj/item/weapon/dnainjector/morph
/obj/item/dnainjector/morph
name = "\improper DNA injector (Morph)"
desc = "A total makeover."
datatype = DNA2_BUF_SE
@@ -311,7 +311,7 @@
block = MORPHBLOCK
..()
/obj/item/weapon/dnainjector/antimorph
/obj/item/dnainjector/antimorph
name = "\improper DNA injector (Anti-Morph)"
desc = "Cures identity crisis."
datatype = DNA2_BUF_SE
@@ -322,7 +322,7 @@
..()
/* No COLDBLOCK on bay
/obj/item/weapon/dnainjector/cold
/obj/item/dnainjector/cold
name = "\improper DNA injector (Cold)"
desc = "Feels a bit chilly."
datatype = DNA2_BUF_SE
@@ -332,7 +332,7 @@
block = COLDBLOCK
..()
/obj/item/weapon/dnainjector/anticold
/obj/item/dnainjector/anticold
name = "\improper DNA injector (Anti-Cold)"
desc = "Feels room-temperature."
datatype = DNA2_BUF_SE
@@ -343,7 +343,7 @@
..()
*/
/obj/item/weapon/dnainjector/noprints
/obj/item/dnainjector/noprints
name = "\improper DNA injector (No Prints)"
desc = "Better than a pair of budget insulated gloves."
datatype = DNA2_BUF_SE
@@ -353,7 +353,7 @@
block = NOPRINTSBLOCK
..()
/obj/item/weapon/dnainjector/antinoprints
/obj/item/dnainjector/antinoprints
name = "\improper DNA injector (Anti-No Prints)"
desc = "Not quite as good as a pair of budget insulated gloves."
datatype = DNA2_BUF_SE
@@ -363,7 +363,7 @@
block = NOPRINTSBLOCK
..()
/obj/item/weapon/dnainjector/insulation
/obj/item/dnainjector/insulation
name = "\improper DNA injector (Shock Immunity)"
desc = "Better than a pair of real insulated gloves."
datatype = DNA2_BUF_SE
@@ -373,7 +373,7 @@
block = SHOCKIMMUNITYBLOCK
..()
/obj/item/weapon/dnainjector/antiinsulation
/obj/item/dnainjector/antiinsulation
name = "\improper DNA injector (Anti-Shock Immunity)"
desc = "Not quite as good as a pair of real insulated gloves."
datatype = DNA2_BUF_SE
@@ -383,7 +383,7 @@
block = SHOCKIMMUNITYBLOCK
..()
/obj/item/weapon/dnainjector/midgit
/obj/item/dnainjector/midgit
name = "\improper DNA injector (Small Size)"
desc = "Makes you shrink."
datatype = DNA2_BUF_SE
@@ -393,7 +393,7 @@
block = SMALLSIZEBLOCK
..()
/obj/item/weapon/dnainjector/antimidgit
/obj/item/dnainjector/antimidgit
name = "\improper DNA injector (Anti-Small Size)"
desc = "Makes you grow. But not too much."
datatype = DNA2_BUF_SE
@@ -404,7 +404,7 @@
..()
/////////////////////////////////////
/obj/item/weapon/dnainjector/antiglasses
/obj/item/dnainjector/antiglasses
name = "\improper DNA injector (Anti-Glasses)"
desc = "Toss away those glasses!"
datatype = DNA2_BUF_SE
@@ -414,7 +414,7 @@
block = GLASSESBLOCK
..()
/obj/item/weapon/dnainjector/glassesmut
/obj/item/dnainjector/glassesmut
name = "\improper DNA injector (Glasses)"
desc = "Will make you need dorkish glasses."
datatype = DNA2_BUF_SE
@@ -424,7 +424,7 @@
block = GLASSESBLOCK
..()
/obj/item/weapon/dnainjector/epimut
/obj/item/dnainjector/epimut
name = "\improper DNA injector (Epi.)"
desc = "Shake shake shake the room!"
datatype = DNA2_BUF_SE
@@ -434,7 +434,7 @@
block = HEADACHEBLOCK
..()
/obj/item/weapon/dnainjector/antiepi
/obj/item/dnainjector/antiepi
name = "\improper DNA injector (Anti-Epi.)"
desc = "Will fix you up from shaking the room."
datatype = DNA2_BUF_SE
@@ -444,7 +444,7 @@
block = HEADACHEBLOCK
..()
/obj/item/weapon/dnainjector/anticough
/obj/item/dnainjector/anticough
name = "\improper DNA injector (Anti-Cough)"
desc = "Will stop that awful noise."
datatype = DNA2_BUF_SE
@@ -454,7 +454,7 @@
block = COUGHBLOCK
..()
/obj/item/weapon/dnainjector/coughmut
/obj/item/dnainjector/coughmut
name = "\improper DNA injector (Cough)"
desc = "Will bring forth a sound of horror from your throat."
datatype = DNA2_BUF_SE
@@ -464,7 +464,7 @@
block = COUGHBLOCK
..()
/obj/item/weapon/dnainjector/clumsymut
/obj/item/dnainjector/clumsymut
name = "\improper DNA injector (Clumsy)"
desc = "Makes clumsy minions."
datatype = DNA2_BUF_SE
@@ -474,7 +474,7 @@
block = CLUMSYBLOCK
..()
/obj/item/weapon/dnainjector/anticlumsy
/obj/item/dnainjector/anticlumsy
name = "\improper DNA injector (Anti-Clumy)"
desc = "Cleans up confusion."
datatype = DNA2_BUF_SE
@@ -484,7 +484,7 @@
block = CLUMSYBLOCK
..()
/obj/item/weapon/dnainjector/antitour
/obj/item/dnainjector/antitour
name = "\improper DNA injector (Anti-Tour.)"
desc = "Will cure tourrets."
datatype = DNA2_BUF_SE
@@ -494,7 +494,7 @@
block = TWITCHBLOCK
..()
/obj/item/weapon/dnainjector/tourmut
/obj/item/dnainjector/tourmut
name = "\improper DNA injector (Tour.)"
desc = "Gives you a nasty case off tourrets."
datatype = DNA2_BUF_SE
@@ -504,7 +504,7 @@
block = TWITCHBLOCK
..()
/obj/item/weapon/dnainjector/stuttmut
/obj/item/dnainjector/stuttmut
name = "\improper DNA injector (Stutt.)"
desc = "Makes you s-s-stuttterrr"
datatype = DNA2_BUF_SE
@@ -514,7 +514,7 @@
block = STUTTERBLOCK
..()
/obj/item/weapon/dnainjector/antistutt
/obj/item/dnainjector/antistutt
name = "\improper DNA injector (Anti-Stutt.)"
desc = "Fixes that speaking impairment."
datatype = DNA2_BUF_SE
@@ -524,7 +524,7 @@
block = STUTTERBLOCK
..()
/obj/item/weapon/dnainjector/blindmut
/obj/item/dnainjector/blindmut
name = "\improper DNA injector (Blind)"
desc = "Makes you not see anything."
datatype = DNA2_BUF_SE
@@ -534,7 +534,7 @@
block = BLINDBLOCK
..()
/obj/item/weapon/dnainjector/antiblind
/obj/item/dnainjector/antiblind
name = "\improper DNA injector (Anti-Blind)"
desc = "ITS A MIRACLE!!!"
datatype = DNA2_BUF_SE
@@ -544,7 +544,7 @@
block = BLINDBLOCK
..()
/obj/item/weapon/dnainjector/deafmut
/obj/item/dnainjector/deafmut
name = "\improper DNA injector (Deaf)"
desc = "Sorry, what did you say?"
datatype = DNA2_BUF_SE
@@ -554,7 +554,7 @@
block = DEAFBLOCK
..()
/obj/item/weapon/dnainjector/antideaf
/obj/item/dnainjector/antideaf
name = "\improper DNA injector (Anti-Deaf)"
desc = "Will make you hear once more."
datatype = DNA2_BUF_SE
@@ -564,7 +564,7 @@
block = DEAFBLOCK
..()
/obj/item/weapon/dnainjector/hallucination
/obj/item/dnainjector/hallucination
name = "\improper DNA injector (Halluctination)"
desc = "What you see isn't always what you get."
datatype = DNA2_BUF_SE
@@ -574,7 +574,7 @@
block = HALLUCINATIONBLOCK
..()
/obj/item/weapon/dnainjector/antihallucination
/obj/item/dnainjector/antihallucination
name = "\improper DNA injector (Anti-Hallucination)"
desc = "What you see is what you get."
datatype = DNA2_BUF_SE
@@ -584,7 +584,7 @@
block = HALLUCINATIONBLOCK
..()
/obj/item/weapon/dnainjector/h2m
/obj/item/dnainjector/h2m
name = "\improper DNA injector (Human > Monkey)"
desc = "Will make you a flea bag."
datatype = DNA2_BUF_SE
@@ -594,7 +594,7 @@
block = MONKEYBLOCK
..()
/obj/item/weapon/dnainjector/m2h
/obj/item/dnainjector/m2h
name = "\improper DNA injector (Monkey > Human)"
desc = "Will make you...less hairy."
datatype = DNA2_BUF_SE
@@ -1,4 +1,4 @@
/obj/item/weapon/plastique
/obj/item/plastique
name = "plastic explosives"
desc = "Used to put holes in specific areas without too much extra hole."
gender = PLURAL
@@ -14,17 +14,17 @@
var/open_panel = 0
var/image_overlay = null
/obj/item/weapon/plastique/Initialize()
/obj/item/plastique/Initialize()
. = ..()
wires = new(src)
image_overlay = image('icons/obj/assemblies.dmi', "plastic-explosive2")
/obj/item/weapon/plastique/Destroy()
/obj/item/plastique/Destroy()
qdel(wires)
wires = null
return ..()
/obj/item/weapon/plastique/attackby(var/obj/item/I, var/mob/user)
/obj/item/plastique/attackby(var/obj/item/I, var/mob/user)
if(I.isscrewdriver())
open_panel = !open_panel
to_chat(user, "<span class='notice'>You [open_panel ? "open" : "close"] the wire panel.</span>")
@@ -33,17 +33,17 @@
else
..()
/obj/item/weapon/plastique/attack_self(mob/user as mob)
/obj/item/plastique/attack_self(mob/user as mob)
var/newtime = input(usr, "Please set the timer.", "Timer", 10) as num
if(user.get_active_hand() == src)
newtime = Clamp(newtime, 10, 60000)
timer = newtime
to_chat(user, "Timer set for [timer] seconds.")
/obj/item/weapon/plastique/afterattack(atom/movable/target, mob/user, flag)
/obj/item/plastique/afterattack(atom/movable/target, mob/user, flag)
if (!flag)
return
if (ismob(target) || istype(target, /turf/unsimulated) || isopenturf(target) || istype(target, /obj/item/weapon/storage/) || istype(target, /obj/item/clothing/accessory/storage/) || istype(target, /obj/item/clothing/under))
if (ismob(target) || istype(target, /turf/unsimulated) || isopenturf(target) || istype(target, /obj/item/storage/) || istype(target, /obj/item/clothing/accessory/storage/) || istype(target, /obj/item/clothing/under))
return
to_chat(user, "Planting explosives...")
user.do_attack_animation(target)
@@ -68,7 +68,7 @@
addtimer(CALLBACK(src, .proc/explode, get_turf(target)), timer * 10)
/obj/item/weapon/plastique/proc/explode(turf/location)
/obj/item/plastique/proc/explode(turf/location)
if(!target)
target = get_atom_on_turf(src)
if(!target)
@@ -88,5 +88,5 @@
qdel(src)
/obj/item/weapon/plastique/attack(mob/M as mob, mob/user as mob, def_zone)
/obj/item/plastique/attack(mob/M as mob, mob/user as mob, def_zone)
return
+19 -19
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/reagent_containers/extinguisher_refill
/obj/item/reagent_containers/extinguisher_refill
name = "extinguisher refiller"
desc = "A one time use extinguisher refiller that allows fire extinguishers to be refilled with an aerosol mix. Just pour in the reagents and twist."
icon = 'icons/obj/chemical.dmi'
@@ -18,10 +18,10 @@
volume = 300
drop_sound = 'sound/items/drop/gascan.ogg'
/obj/item/weapon/reagent_containers/extinguisher_refill/attackby(var/obj/O as obj, var/mob/user as mob)
/obj/item/reagent_containers/extinguisher_refill/attackby(var/obj/O as obj, var/mob/user as mob)
if(istype(O,/obj/item/weapon/extinguisher))
var/obj/item/weapon/extinguisher/E = O
if(istype(O,/obj/item/extinguisher))
var/obj/item/extinguisher/E = O
if(src.is_open_container())
to_chat(user,"<span class='notice'>\The [src] needs to be secured first!</span>")
else if(src.reagents.total_volume <= 0)
@@ -36,7 +36,7 @@
. = ..()
/obj/item/weapon/reagent_containers/extinguisher_refill/attack_self(mob/user as mob) //Copied from inhalers.
/obj/item/reagent_containers/extinguisher_refill/attack_self(mob/user as mob) //Copied from inhalers.
if(is_open_container())
if(reagents && reagents.reagent_list.len)
to_chat(user,"<span class='notice'>With a quick twist of the cartridge's lid, you secure the reagents inside \the [src].</span>")
@@ -47,14 +47,14 @@
to_chat(user,"<span class='notice'>\The reagents inside [src] are already secured!</span>")
return
/obj/item/weapon/reagent_containers/extinguisher_refill/attackby(obj/item/weapon/W, mob/user)
/obj/item/reagent_containers/extinguisher_refill/attackby(obj/item/W, mob/user)
if(W.isscrewdriver() && !is_open_container())
to_chat(user,"<span class='notice'>Using \the [W], you unsecure the extinguisher refill cartridge's lid.</span>") // it locks shut after being secured
flags |= OPENCONTAINER
return
. = ..()
/obj/item/weapon/reagent_containers/extinguisher_refill/examine(var/mob/user) //Copied from inhalers.
/obj/item/reagent_containers/extinguisher_refill/examine(var/mob/user) //Copied from inhalers.
if(!..(user, 2))
return
@@ -69,17 +69,17 @@
else
to_chat(user,"<span class='notice'>The cartridge seems spent.</span>")
/obj/item/weapon/reagent_containers/extinguisher_refill/filled
/obj/item/reagent_containers/extinguisher_refill/filled
name = "extinguisher refiller (monoammonium phosphate)"
desc = "A one time use extinguisher refiller that allows fire extinguishers to be refilled with an aerosol mix. This one contains monoammonium phosphate."
/obj/item/weapon/reagent_containers/extinguisher_refill/filled/Initialize()
/obj/item/reagent_containers/extinguisher_refill/filled/Initialize()
. =..()
reagents.add_reagent("monoammoniumphosphate", volume)
flags &= ~OPENCONTAINER
return
/obj/item/weapon/extinguisher
/obj/item/extinguisher
name = "fire extinguisher"
desc = "A traditional red fire extinguisher."
icon = 'icons/obj/chemical.dmi'
@@ -104,7 +104,7 @@
var/safety = 1
var/sprite_name = "fire_extinguisher"
/obj/item/weapon/extinguisher/mini
/obj/item/extinguisher/mini
name = "fire extinguisher"
desc = "A light and compact fibreglass-framed model fire extinguisher."
icon_state = "miniFE0"
@@ -120,28 +120,28 @@
spray_distance = 1
sprite_name = "miniFE"
/obj/item/weapon/extinguisher/New()
/obj/item/extinguisher/New()
create_reagents(max_water)
reagents.add_reagent("monoammoniumphosphate", max_water)
..()
/obj/item/weapon/extinguisher/examine(mob/user)
/obj/item/extinguisher/examine(mob/user)
if(..(user, 0))
to_chat(user,"\The [src] contains [src.reagents.total_volume] units of reagents.")
to_chat(user,"The safety is [safety ? "on" : "off"].")
return
/obj/item/weapon/extinguisher/attack_self(mob/user as mob)
/obj/item/extinguisher/attack_self(mob/user as mob)
safety = !safety
src.icon_state = "[sprite_name][!safety]"
src.desc = "The safety is [safety ? "on" : "off"]."
to_chat(user, "The safety is [safety ? "on" : "off"].")
return
/obj/item/weapon/extinguisher/attackby(var/obj/O as obj, var/mob/user as mob)
/obj/item/extinguisher/attackby(var/obj/O as obj, var/mob/user as mob)
if(istype(O,/obj/item/weapon/reagent_containers/extinguisher_refill))
var/obj/item/weapon/reagent_containers/extinguisher_refill/ER = O
if(istype(O,/obj/item/reagent_containers/extinguisher_refill))
var/obj/item/reagent_containers/extinguisher_refill/ER = O
if(ER.is_open_container())
to_chat(user,"<span class='notice'>\The [ER] needs to be secured first!</span>")
else if(ER.reagents.total_volume <= 0)
@@ -156,7 +156,7 @@
. = ..()
/obj/item/weapon/extinguisher/proc/propel_object(var/obj/O, mob/user, movementdirection)
/obj/item/extinguisher/proc/propel_object(var/obj/O, mob/user, movementdirection)
if(O.anchored) return
var/obj/structure/bed/chair/C
@@ -174,7 +174,7 @@
O.Move(get_step(user,movementdirection), movementdirection)
sleep(3)
/obj/item/weapon/extinguisher/afterattack(var/atom/target, var/mob/user, var/flag)
/obj/item/extinguisher/afterattack(var/atom/target, var/mob/user, var/flag)
if (!safety)
if (src.reagents.total_volume < 1)
+15 -15
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/flamethrower
/obj/item/flamethrower
name = "flamethrower"
desc = "You are a firestarter!"
icon = 'icons/obj/flamethrower.dmi'
@@ -18,12 +18,12 @@
var/lit = 0 //on or off
var/operating = 0//cooldown
var/turf/previousturf = null
var/obj/item/weapon/weldingtool/weldtool = null
var/obj/item/weldingtool/weldtool = null
var/obj/item/device/assembly/igniter/igniter = null
var/obj/item/weapon/tank/phoron/ptank = null
var/obj/item/tank/phoron/ptank = null
/obj/item/weapon/flamethrower/Destroy()
/obj/item/flamethrower/Destroy()
if(weldtool)
qdel(weldtool)
if(igniter)
@@ -34,7 +34,7 @@
return ..()
/obj/item/weapon/flamethrower/process()
/obj/item/flamethrower/process()
if(!lit)
STOP_PROCESSING(SSprocessing, src)
return null
@@ -48,7 +48,7 @@
return
/obj/item/weapon/flamethrower/update_icon()
/obj/item/flamethrower/update_icon()
cut_overlays()
if(igniter)
add_overlay("+igniter[status]")
@@ -61,7 +61,7 @@
item_state = "flamethrower_0"
return
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, proximity)
/obj/item/flamethrower/afterattack(atom/target, mob/user, proximity)
if(!proximity) return
// Make sure our user is still holding us
if(user && user.get_active_hand() == src)
@@ -70,7 +70,7 @@
var/turflist = getline(user, target_turf)
flame_turf(turflist)
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
/obj/item/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
if(user.stat || user.restrained() || user.lying) return
if(W.iswrench() && !status)//Taking this apart
var/turf/T = get_turf(src)
@@ -102,7 +102,7 @@
update_icon()
return
if(istype(W,/obj/item/weapon/tank/phoron))
if(istype(W,/obj/item/tank/phoron))
if(ptank)
to_chat(user, "<span class='notice'>There appears to already be a phoron tank loaded in [src]!</span>")
return
@@ -119,7 +119,7 @@
return
/obj/item/weapon/flamethrower/attack_self(mob/user as mob)
/obj/item/flamethrower/attack_self(mob/user as mob)
if(user.stat || user.restrained() || user.lying) return
user.set_machine(src)
if(!ptank)
@@ -131,7 +131,7 @@
return
/obj/item/weapon/flamethrower/Topic(href,href_list[])
/obj/item/flamethrower/Topic(href,href_list[])
if(href_list["close"])
usr.unset_machine()
usr << browse(null, "window=flamethrower")
@@ -163,7 +163,7 @@
//Called from turf.dm turf/dblclick
/obj/item/weapon/flamethrower/proc/flame_turf(turflist)
/obj/item/flamethrower/proc/flame_turf(turflist)
if(!lit || operating) return
operating = 1
playsound(src, fire_sound, 70, 1)
@@ -185,7 +185,7 @@
return
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target)
/obj/item/flamethrower/proc/ignite_turf(turf/target)
//TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this...
//Transfer 5% of current tank air contents to turf
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100))
@@ -199,9 +199,9 @@
//location.hotspot_expose(1000,500,1)
return
/obj/item/weapon/flamethrower/full/New(var/loc)
/obj/item/flamethrower/full/New(var/loc)
..()
weldtool = new /obj/item/weapon/weldingtool(src)
weldtool = new /obj/item/weldingtool(src)
weldtool.status = 0
igniter = new /obj/item/device/assembly/igniter(src)
igniter.secured = 0
+7 -7
View File
@@ -3,14 +3,14 @@ CONTAINS:
THAT STUPID GAME KIT
*/
/obj/item/weapon/game_kit/New()
/obj/item/game_kit/New()
src.board_stat = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
src.selected = "CR"
/obj/item/weapon/game_kit/attack_paw(mob/user as mob)
/obj/item/game_kit/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/item/weapon/game_kit/MouseDrop(mob/user as mob)
/obj/item/game_kit/MouseDrop(mob/user as mob)
if (user == usr && !usr.restrained() && !usr.stat && (usr.contents.Find(src) || in_range(src, usr)))
if (usr.hand)
if (!usr.l_hand)
@@ -21,7 +21,7 @@ THAT STUPID GAME KIT
spawn (0)
src.attack_hand(usr, 0, 1)
/obj/item/weapon/game_kit/proc/update()
/obj/item/game_kit/proc/update()
var/dat = text("<CENTER><B>Game Board</B></CENTER><BR><a href='?src=\ref[];mode=hia'>[]</a> <a href='?src=\ref[];mode=remove'>remove</a><HR><table width= 256 border= 0 height= 256 cellspacing= 0 cellpadding= 0 >", src, (src.selected ? text("Selected: []", src.selected) : "Nothing Selected"), src)
for (var/y = 1 to 8)
dat += "<tr>"
@@ -52,10 +52,10 @@ THAT STUPID GAME KIT
dat += "<a href='?src=\ref[src];s_piece=[piece]'><img src='[src.base_url]/board_[piece].png' width=32 height=32 border=0></a>"
src.data = dat
/obj/item/weapon/game_kit/attack_ai(mob/user as mob, unused, flag)
/obj/item/game_kit/attack_ai(mob/user as mob, unused, flag)
return src.attack_hand(user, unused, flag)
/obj/item/weapon/game_kit/attack_hand(mob/user as mob, unused, flag)
/obj/item/game_kit/attack_hand(mob/user as mob, unused, flag)
if (flag)
return ..()
@@ -68,7 +68,7 @@ THAT STUPID GAME KIT
return
return
/obj/item/weapon/game_kit/Topic(href, href_list)
/obj/item/game_kit/Topic(href, href_list)
..()
if ((usr.stat || usr.restrained()))
return
@@ -7,7 +7,7 @@
/*
* Gifts
*/
/obj/item/weapon/a_gift
/obj/item/a_gift
name = "gift"
desc = "PRESENTS!!!! eek!"
icon = 'icons/obj/items.dmi'
@@ -15,7 +15,7 @@
item_state = "gift1"
drop_sound = 'sound/items/drop/box.ogg'
/obj/item/weapon/a_gift/New()
/obj/item/a_gift/New()
..()
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
@@ -25,7 +25,7 @@
icon_state = "gift[pick(1, 2, 3)]"
return
/obj/item/weapon/gift/attack_self(mob/user as mob)
/obj/item/gift/attack_self(mob/user as mob)
user.drop_item()
playsound(src.loc, 'sound/items/package_unwrap.ogg', 50,1)
if(src.gift)
@@ -36,7 +36,7 @@
qdel(src)
return
/obj/item/weapon/a_gift/ex_act(var/severity = 2.0)
/obj/item/a_gift/ex_act(var/severity = 2.0)
qdel(src)
return
@@ -45,7 +45,7 @@
return
to_chat(user, "<span class='warning'>You can't move.</span>")
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/effect/spresent/attackby(obj/item/W as obj, mob/user as mob)
..()
if (!W.iswirecutter())
@@ -62,30 +62,30 @@
qdel(src)
/obj/item/weapon/a_gift/attack_self(mob/M as mob)
/obj/item/a_gift/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/item/weapon/storage/wallet,
/obj/item/weapon/storage/photo_album,
/obj/item/weapon/storage/box/snappops,
/obj/item/weapon/storage/fancy/crayons,
/obj/item/weapon/storage/backpack/holding,
/obj/item/weapon/storage/belt/champion,
/obj/item/weapon/soap/deluxe,
/obj/item/weapon/pickaxe/silver,
/obj/item/weapon/pen/invisible,
/obj/item/weapon/lipstick/random,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/corncob,
/obj/item/weapon/contraband/poster,
/obj/item/weapon/book/manual/barman_recipes,
/obj/item/weapon/book/manual/chef_recipes,
/obj/item/weapon/bikehorn,
/obj/item/weapon/beach_ball,
/obj/item/weapon/beach_ball/holoball,
/obj/item/storage/wallet,
/obj/item/storage/photo_album,
/obj/item/storage/box/snappops,
/obj/item/storage/fancy/crayons,
/obj/item/storage/backpack/holding,
/obj/item/storage/belt/champion,
/obj/item/soap/deluxe,
/obj/item/pickaxe/silver,
/obj/item/pen/invisible,
/obj/item/lipstick/random,
/obj/item/grenade/smokebomb,
/obj/item/corncob,
/obj/item/contraband/poster,
/obj/item/book/manual/barman_recipes,
/obj/item/book/manual/chef_recipes,
/obj/item/bikehorn,
/obj/item/beach_ball,
/obj/item/beach_ball/holoball,
/obj/item/toy/balloon,
/obj/item/toy/blink,
/obj/item/toy/crossbow,
/obj/item/weapon/gun/projectile/revolver/capgun,
/obj/item/gun/projectile/revolver/capgun,
/obj/item/toy/katana,
/obj/item/toy/prize/deathripley,
/obj/item/toy/prize/durand,
@@ -100,11 +100,11 @@
/obj/item/toy/prize/seraph,
/obj/item/toy/spinningtoy,
/obj/item/toy/sword,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/reagent_containers/food/snacks/grown/ambrosiadeus,
/obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/device/paicard,
/obj/item/device/violin,
/obj/item/weapon/storage/belt/utility/full,
/obj/item/storage/belt/utility/full,
/obj/item/clothing/accessory/horrible)
if(!ispath(gift_type,/obj/item)) return
@@ -123,7 +123,7 @@
/*
* Xmas Gifts
*/
/obj/item/weapon/xmasgift
/obj/item/xmasgift
name = "christmas gift"
desc = "PRESENTS!!!! eek!"
icon = 'icons/obj/items.dmi'
@@ -131,7 +131,7 @@
item_state = "gift1"
w_class = 1
/obj/item/weapon/xmasgift/New()
/obj/item/xmasgift/New()
..()
var/gift_benefactor = pick("the NanoTrasen Department of Christmas Affairs", "Miranda Trasen", "Joseph Dorne", "Isaac Asimov", "Baal D. Griffon", "the Sol Alliance (Sorry about the blockade!)",
"Hephaestus Industries", "Idris Incorporated", "Glorsh Omega II", "the Jargon Federation", "the People's Republic of Adhomai", "the Adhomai Liberation Army", "the Izweski Hegemony",
@@ -146,29 +146,29 @@
return
/obj/item/weapon/xmasgift/ex_act(var/severity = 2.0)
/obj/item/xmasgift/ex_act(var/severity = 2.0)
qdel(src)
return
/obj/item/weapon/xmasgift/small/attack_self(mob/M as mob)
/obj/item/xmasgift/small/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/random/action_figure,
/obj/random/coin,
/obj/random/spacecash,
/obj/random/glowstick,
/obj/item/weapon/storage/wallet,
/obj/item/weapon/storage/photo_album,
/obj/item/weapon/storage/box/snappops,
/obj/item/weapon/storage/fancy/crayons,
/obj/item/weapon/soap/deluxe,
/obj/item/weapon/pen/invisible,
/obj/item/storage/wallet,
/obj/item/storage/photo_album,
/obj/item/storage/box/snappops,
/obj/item/storage/fancy/crayons,
/obj/item/soap/deluxe,
/obj/item/pen/invisible,
/obj/item/clothing/gloves/watch,
/obj/item/weapon/lipstick/random,
/obj/item/weapon/corncob,
/obj/item/weapon/bikehorn,
/obj/item/lipstick/random,
/obj/item/corncob,
/obj/item/bikehorn,
/obj/item/toy/balloon,
/obj/item/toy/blink,
/obj/item/weapon/gun/projectile/revolver/capgun,
/obj/item/gun/projectile/revolver/capgun,
/obj/item/toy/prize/deathripley,
/obj/item/toy/prize/durand,
/obj/item/toy/prize/fireripley,
@@ -184,9 +184,9 @@
/obj/item/clothing/accessory/horrible,
/obj/item/device/camera,
/obj/item/bluespace_crystal,
/obj/item/weapon/flame/lighter/zippo,
/obj/item/flame/lighter/zippo,
/obj/item/device/taperecorder,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,
/obj/item/storage/fancy/cigarettes/dromedaryco,
/obj/item/toy/bosunwhistle,
/obj/item/clothing/mask/fakemoustache,
/obj/item/clothing/mask/gas/clown_hat,
@@ -201,7 +201,7 @@
/obj/item/trash/cheesie,
/obj/item/trash/raisins,
/obj/item/trash/koisbar,
/obj/item/weapon/xmasgift/medium,
/obj/item/xmasgift/medium,
/obj/item/toy/syndicateballoon,
/obj/item/toy/xmastree,
/obj/item/clothing/accessory/medal/gold/heroism,
@@ -210,13 +210,13 @@
/obj/item/clothing/accessory/medal/silver/valor,
/obj/item/bluespace_crystal,
/obj/random/junk,
/obj/item/weapon/gun/energy/mousegun,
/obj/item/weapon/gun/energy/wand/toy,
/obj/item/weapon/mirror,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/stamp/clown,
/obj/item/gun/energy/mousegun,
/obj/item/gun/energy/wand/toy,
/obj/item/mirror,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/stamp/clown,
/obj/item/organ/heart/skrell,
/obj/item/latexballon)
@@ -227,32 +227,32 @@
qdel(src)
return
/obj/item/weapon/xmasgift/medium
/obj/item/xmasgift/medium
icon_state = "gift2"
item_state = "gift2"
w_class = 2
/obj/item/weapon/xmasgift/medium/attack_self(mob/M as mob)
/obj/item/xmasgift/medium/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/item/weapon/sord,
/obj/item/sord,
/obj/random/booze,
/obj/item/weapon/storage/belt/champion,
/obj/item/weapon/pickaxe/silver,
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/contraband/poster,
/obj/item/weapon/book/manual/barman_recipes,
/obj/item/weapon/book/manual/chef_recipes,
/obj/item/weapon/banhammer,
/obj/item/storage/belt/champion,
/obj/item/pickaxe/silver,
/obj/item/grenade/smokebomb,
/obj/item/contraband/poster,
/obj/item/book/manual/barman_recipes,
/obj/item/book/manual/chef_recipes,
/obj/item/banhammer,
/obj/item/toy/crossbow,
/obj/item/toy/katana,
/obj/item/toy/spinningtoy,
/obj/item/toy/sword,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/reagent_containers/food/snacks/grown/ambrosiadeus,
/obj/item/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/device/paicard,
/obj/item/clothing/accessory/horrible,
/obj/item/weapon/storage/box/donkpockets,
/obj/item/weapon/reagent_containers/food/drinks/teapot,
/obj/item/storage/box/donkpockets,
/obj/item/reagent_containers/food/drinks/teapot,
/obj/item/device/flashlight/lantern,
/obj/item/clothing/mask/balaclava,
/obj/item/clothing/accessory/badge/old,
@@ -263,11 +263,11 @@
/mob/living/simple_animal/rat/brown,
/mob/living/simple_animal/rat/gray,
/mob/living/simple_animal/rat/white,
/obj/item/weapon/xmasgift/small,
/obj/item/weapon/tank/jetpack/void,
/obj/item/weapon/xmasgift/large,
/obj/item/weapon/reagent_containers/food/snacks/pudding,
/obj/item/weapon/contraband/poster,
/obj/item/xmasgift/small,
/obj/item/tank/jetpack/void,
/obj/item/xmasgift/large,
/obj/item/reagent_containers/food/snacks/pudding,
/obj/item/contraband/poster,
/obj/item/clothing/head/hardhat/red/atmos,
/mob/living/bot/cleanbot,
/obj/item/vaurca/box,
@@ -277,12 +277,12 @@
/obj/item/device/uv_light,
/obj/random/loot,
/obj/random/contraband,
/obj/item/weapon/autochisel,
/obj/item/weapon/melee/vaurca/rock,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/phone,
/obj/item/autochisel,
/obj/item/melee/vaurca/rock,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/phone,
/obj/item/device/dociler,
/obj/item/device/flashlight/maglight,
/obj/item/device/megaphone,
@@ -296,15 +296,15 @@
qdel(src)
return
/obj/item/weapon/xmasgift/large
/obj/item/xmasgift/large
icon_state = "gift3"
item_state = "gift3"
w_class = 3
/obj/item/weapon/xmasgift/large/attack_self(mob/M as mob)
/obj/item/xmasgift/large/attack_self(mob/M as mob)
var/gift_type = pick(
/obj/item/weapon/inflatable_duck,
/obj/item/weapon/beach_ball,
/obj/item/inflatable_duck,
/obj/item/beach_ball,
/obj/item/clothing/under/redcoat,
/obj/item/clothing/under/syndicate/tracksuit,
/obj/item/clothing/under/rank/clown,
@@ -316,15 +316,15 @@
/mob/living/simple_animal/corgi/puppy,
/mob/living/simple_animal/mushroom,
/mob/living/carbon/human/monkey/nupnup,
/obj/item/weapon/xmasgift/medium,
/obj/item/weapon/tank/jetpack,
/obj/item/xmasgift/medium,
/obj/item/tank/jetpack,
/obj/item/toy/plushie/drone,
/obj/item/toy/plushie/ivancarp,
/obj/item/weapon/grenade/spawnergrenade/vaurca,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/ore/coal,
/obj/item/weapon/mass_driver_diy,
/obj/item/grenade/spawnergrenade/vaurca,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/ore/coal,
/obj/item/mass_driver_diy,
/mob/living/simple_animal/crab,
/mob/living/simple_animal/parrot,
/mob/living/simple_animal/hostile/commanded/dog/pug,
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/anti_photon
/obj/item/grenade/anti_photon
desc = "An experimental device for temporarily removing light in a limited area."
name = "photon disruption grenade"
icon = 'icons/obj/grenade.dmi'
@@ -7,7 +7,7 @@
det_time = 20
origin_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 4)
/obj/item/weapon/grenade/anti_photon/prime()
/obj/item/grenade/anti_photon/prime()
playsound(src.loc, 'sound/effects/phasein.ogg', 50, 1, 5)
set_light(10, -10, "#FFFFFF")
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/chem_grenade
/obj/item/grenade/chem_grenade
name = "grenade casing"
icon_state = "chemg"
item_state = "chemg"
@@ -12,14 +12,14 @@
var/path = 0
var/obj/item/device/assembly_holder/detonator = null
var/list/beakers = new/list()
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
var/list/allowed_containers = list(/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle)
var/affected_area = 3
/obj/item/weapon/grenade/chem_grenade/Initialize()
/obj/item/grenade/chem_grenade/Initialize()
. = ..()
create_reagents(1000)
/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user as mob)
/obj/item/grenade/chem_grenade/attack_self(mob/user as mob)
if(!stage || stage==1)
if(detonator)
detonator.detached()
@@ -45,7 +45,7 @@
var/mob/living/carbon/C = user
C.throw_mode_on()
/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/grenade/chem_grenade/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2)
var/obj/item/device/assembly_holder/det = W
@@ -109,12 +109,12 @@
else
to_chat(user, "<span class='warning'>\The [W] is empty.</span>")
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
/obj/item/grenade/chem_grenade/examine(mob/user)
..(user)
if(detonator)
to_chat(user, "With attached [detonator.name]")
/obj/item/weapon/grenade/chem_grenade/activate(mob/user as mob)
/obj/item/grenade/chem_grenade/activate(mob/user as mob)
if(active) return
if(detonator)
@@ -132,15 +132,15 @@
return
/obj/item/weapon/grenade/chem_grenade/proc/primed(var/primed = 1)
/obj/item/grenade/chem_grenade/proc/primed(var/primed = 1)
if(active)
icon_state = initial(icon_state) + (primed?"_primed":"_active")
/obj/item/weapon/grenade/chem_grenade/prime()
/obj/item/grenade/chem_grenade/prime()
if(!stage || stage<2) return
var/has_reagents = 0
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
for(var/obj/item/reagent_containers/glass/G in beakers)
if(G.reagents.total_volume)
has_reagents = 1
@@ -158,7 +158,7 @@
return
playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
for(var/obj/item/reagent_containers/glass/G in beakers)
G.reagents.trans_to_obj(src, G.reagents.total_volume)
if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
@@ -181,25 +181,25 @@
//correctly before deleting the grenade.
QDEL_IN(src, 50)
/obj/item/weapon/grenade/chem_grenade/large
/obj/item/grenade/chem_grenade/large
name = "large chem grenade"
desc = "An oversized grenade that affects a larger area."
icon_state = "large_grenade"
item_state = "largechemg"
allowed_containers = list(/obj/item/weapon/reagent_containers/glass)
allowed_containers = list(/obj/item/reagent_containers/glass)
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
affected_area = 4
/obj/item/weapon/grenade/chem_grenade/metalfoam
/obj/item/grenade/chem_grenade/metalfoam
name = "metal-foam grenade"
desc = "Used for emergency sealing of air breaches."
path = 1
stage = 2
/obj/item/weapon/grenade/chem_grenade/metalfoam/Initialize()
/obj/item/grenade/chem_grenade/metalfoam/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("aluminum", 30)
B2.reagents.add_reagent("foaming_agent", 10)
@@ -211,16 +211,16 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/incendiary
/obj/item/grenade/chem_grenade/incendiary
name = "incendiary grenade"
desc = "Used for clearing rooms of living things."
path = 1
stage = 2
/obj/item/weapon/grenade/chem_grenade/incendiary/Initialize()
/obj/item/grenade/chem_grenade/incendiary/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("aluminum", 15)
B1.reagents.add_reagent("fuel",20)
@@ -234,16 +234,16 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/antiweed
/obj/item/grenade/chem_grenade/antiweed
name = "weedkiller grenade"
desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
path = 1
stage = 2
/obj/item/weapon/grenade/chem_grenade/antiweed/Initialize()
/obj/item/grenade/chem_grenade/antiweed/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("plantbgone", 25)
B1.reagents.add_reagent("potassium", 25)
@@ -256,16 +256,16 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/gas
/obj/item/grenade/chem_grenade/gas
name = "NT. 53 'Sandman' grenade"
desc = "Used for pacifying rooms full of people with less-than-lethal force. It warns against use on people with lung defects."
path = 1
stage = 2
/obj/item/weapon/grenade/chem_grenade/gas/Initialize()
/obj/item/grenade/chem_grenade/gas/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("sugar", 20)
B1.reagents.add_reagent("potassium",20)
@@ -280,16 +280,16 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/cleaner
/obj/item/grenade/chem_grenade/cleaner
name = "cleaner grenade"
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
stage = 2
path = 1
/obj/item/weapon/grenade/chem_grenade/cleaner/Initialize()
/obj/item/grenade/chem_grenade/cleaner/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("surfactant", 40)
B2.reagents.add_reagent("water", 40)
@@ -301,16 +301,16 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/large/phoroncleaner
/obj/item/grenade/chem_grenade/large/phoroncleaner
name = "large cardox grenade"
desc = "A large chemical grenade containing a heavy amount of cardox. Use in case of phoron leaks. Warning: Harmful to Vaurca health."
stage = 2
path = 1
/obj/item/weapon/grenade/chem_grenade/large/phoroncleaner/Initialize()
/obj/item/grenade/chem_grenade/large/phoroncleaner/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("water", 60)
B1.reagents.add_reagent("cardox", 60)
@@ -324,16 +324,16 @@
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/teargas
/obj/item/grenade/chem_grenade/teargas
name = "tear gas grenade"
desc = "Concentrated Capsaicin. Contents under pressure. Use with caution."
stage = 2
path = 1
/obj/item/weapon/grenade/chem_grenade/teargas/Initialize()
/obj/item/grenade/chem_grenade/teargas/Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src)
B1.reagents.add_reagent("phosphorus", 40)
B1.reagents.add_reagent("potassium", 40)
@@ -347,7 +347,7 @@
beakers += B2
icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/monoammoniumphosphate
/obj/item/grenade/chem_grenade/monoammoniumphosphate
name = "extinguisher grenade"
desc = "BLAM!-brand foaming extinguisher. Incredibly useful for taking out large chemical fires at a distance."
stage = 2
@@ -355,8 +355,8 @@
Initialize()
. = ..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("surfactant", 40)
B1.reagents.add_reagent("monoammoniumphosphate", 20)
@@ -1,10 +1,10 @@
/obj/item/weapon/grenade/empgrenade
/obj/item/grenade/empgrenade
name = "classic emp grenade"
icon_state = "emp"
item_state = "emp"
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
/obj/item/weapon/grenade/empgrenade/prime()
/obj/item/grenade/empgrenade/prime()
..()
if(empulse(src, 4, 10))
qdel(src)
@@ -1,10 +1,10 @@
/obj/item/weapon/grenade/fake
/obj/item/grenade/fake
name = "fragmentation grenade"
desc = "A military fragmentation grenade, designed to explode in a deadly shower of fragments, this one is just a toy however."
icon_state = "frag"
fake = TRUE
/obj/item/weapon/grenade/fake/prime()
/obj/item/grenade/fake/prime()
active = 0
playsound(src.loc, get_sfx("explosion"), 50, 1, 30)
icon_state = "frag"
@@ -1,11 +1,11 @@
/obj/item/weapon/grenade/flashbang
/obj/item/grenade/flashbang
name = "flashbang"
icon_state = "flashbang"
item_state = "flashbang"
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1)
var/banglet = 0
/obj/item/weapon/grenade/flashbang/prime()
/obj/item/grenade/flashbang/prime()
..()
for(var/obj/structure/closet/L in hear(7, get_turf(src)))
if(locate(/mob/living/carbon/, L))
@@ -25,9 +25,9 @@
qdel(src)
return
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged.
if (locate(/obj/item/weapon/cloaking_device, M)) // Called during the loop that bangs people in lockers/containers and when banging
for(var/obj/item/weapon/cloaking_device/S in M) // people in normal view. Could theroetically be called during other explosions.
/obj/item/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged.
if (locate(/obj/item/cloaking_device, M)) // Called during the loop that bangs people in lockers/containers and when banging
for(var/obj/item/cloaking_device/S in M) // people in normal view. Could theroetically be called during other explosions.
S.active = 0 // -- Polymorph
S.icon_state = "shield0"
@@ -94,12 +94,12 @@
var/obj/item/organ/eyes/E = H.get_eyes(no_synthetic = TRUE)
if (E && E.damage >= E.min_bruised_damage)
to_chat(M, "<span class='danger'>Your eyes start to burn badly!</span>")
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
if(!banglet && !(istype(src , /obj/item/grenade/flashbang/clusterbang)))
if (E.damage >= E.min_broken_damage)
to_chat(M, "<span class='danger'>You can't see anything!</span>")
if (M.ear_damage >= 15)
to_chat(M, "<span class='danger'>Your ears start to ring badly!</span>")
if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
if(!banglet && !(istype(src , /obj/item/grenade/flashbang/clusterbang)))
if (prob(M.ear_damage - 10 + 5))
to_chat(M, "<span class='danger'>You can't hear anything!</span>")
M.sdisabilities |= DEAF
@@ -108,12 +108,12 @@
to_chat(M, "<span class='danger'>Your ears start to ring!</span>")
M.update_icons()
/obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
/obj/item/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
/obj/item/weapon/grenade/flashbang/clusterbang/prime()
/obj/item/grenade/flashbang/clusterbang/prime()
var/numspawned = rand(4,8)
var/again = 0
var/atom/A = loc
@@ -124,22 +124,22 @@
for(,numspawned > 0, numspawned--)
spawn(0)
new /obj/item/weapon/grenade/flashbang/cluster(A)//Launches flashbangs
new /obj/item/grenade/flashbang/cluster(A)//Launches flashbangs
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
for(,again > 0, again--)
spawn(0)
new /obj/item/weapon/grenade/flashbang/clusterbang/segment(A)//Creates a 'segment' that launches a few more flashbangs
new /obj/item/grenade/flashbang/clusterbang/segment(A)//Creates a 'segment' that launches a few more flashbangs
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
QDEL_IN(src, 1)
/obj/item/weapon/grenade/flashbang/clusterbang/segment
/obj/item/grenade/flashbang/clusterbang/segment
desc = "A smaller segment of a clusterbang. Better run."
name = "clusterbang segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
/obj/item/weapon/grenade/flashbang/clusterbang/segment/New()//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
/obj/item/grenade/flashbang/clusterbang/segment/New()//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
icon_state = "clusterbang_segment_active"
active = 1
@@ -151,7 +151,7 @@
addtimer(CALLBACK(src, .proc/prime), dettime)
..()
/obj/item/weapon/grenade/flashbang/clusterbang/segment/prime()
/obj/item/grenade/flashbang/clusterbang/segment/prime()
var/numspawned = rand(4,8)
for(var/more = numspawned,more > 0,more--)
if(prob(35))
@@ -159,12 +159,12 @@
var/atom/A = src.loc
for(,numspawned > 0, numspawned--)
spawn(0)
new /obj/item/weapon/grenade/flashbang/cluster(A)
new /obj/item/grenade/flashbang/cluster(A)
playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
QDEL_IN(src, 1)
/obj/item/weapon/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang
/obj/item/grenade/flashbang/cluster/New()//Same concept as the segments, so that all of the parts don't become reliant on the clusterbang
set waitfor = FALSE
icon_state = "flashbang_active"
active = 1
@@ -38,7 +38,7 @@ proc/fragem(var/source,var/fragx,var/fragy,var/light_dam,var/flash_dam,var/p_dam
no_attack_log = 1
muzzle_type = null
/obj/item/weapon/grenade/frag
/obj/item/grenade/frag
name = "fragmentation grenade"
desc = "A military fragmentation grenade, designed to explode in a deadly shower of fragments."
icon_state = "frag"
@@ -51,7 +51,7 @@ proc/fragem(var/source,var/fragx,var/fragy,var/light_dam,var/flash_dam,var/p_dam
//The radius of the circle used to launch projectiles. Lower values mean less projectiles are used but if set too low gaps may appear in the spread pattern
var/spread_range = 7
/obj/item/weapon/grenade/frag/prime()
/obj/item/grenade/frag/prime()
set waitfor = 0
..()
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade
/obj/item/grenade
name = "grenade"
desc = "A hand held grenade, with an adjustable timer."
w_class = 2.0
@@ -14,7 +14,7 @@
var/det_time = 30
var/fake = FALSE
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
/obj/item/grenade/proc/clown_check(var/mob/living/user)
if((user.is_clumsy()) && prob(50))
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
@@ -25,7 +25,7 @@
return 0
return 1
/obj/item/weapon/grenade/examine(mob/user)
/obj/item/grenade/examine(mob/user)
if(..(user, 0))
if(det_time > 1)
to_chat(user, "The timer is set to [det_time/10] seconds.")
@@ -35,7 +35,7 @@
to_chat(user, "\The [src] is set for instant detonation.")
/obj/item/weapon/grenade/attack_self(mob/user as mob)
/obj/item/grenade/attack_self(mob/user as mob)
if(!active)
if(clown_check(user))
to_chat(user, "<span class='warning'>You prime \the [name]! [det_time/10] seconds!</span>")
@@ -48,7 +48,7 @@
return
/obj/item/weapon/grenade/proc/activate(mob/user as mob)
/obj/item/grenade/proc/activate(mob/user as mob)
if(active)
return
@@ -64,12 +64,12 @@
return
/obj/item/weapon/grenade/proc/prime()
/obj/item/grenade/proc/prime()
var/turf/T = get_turf(src)
if(T)
T.hotspot_expose(700,125)
/obj/item/weapon/grenade/attack_hand()
/obj/item/grenade/attack_hand()
walk(src, null, null)
..()
return
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/smokebomb
/obj/item/grenade/smokebomb
desc = "It is set to detonate in 2 seconds."
name = "smoke bomb"
icon = 'icons/obj/grenade.dmi'
@@ -8,17 +8,17 @@
slot_flags = SLOT_BELT
var/datum/effect/effect/system/smoke_spread/bad/smoke
/obj/item/weapon/grenade/smokebomb/New()
/obj/item/grenade/smokebomb/New()
..()
src.smoke = new /datum/effect/effect/system/smoke_spread/bad
src.smoke.attach(src)
/obj/item/weapon/grenade/smokebomb/Destroy()
/obj/item/grenade/smokebomb/Destroy()
qdel(smoke)
smoke = null
return ..()
/obj/item/weapon/grenade/smokebomb/prime()
/obj/item/grenade/smokebomb/prime()
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
src.smoke.set_up(10, 0, usr.loc)
spawn(0)
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/spawnergrenade
/obj/item/grenade/spawnergrenade
desc = "It is set to detonate in 5 seconds. It will unleash unleash an unspecified anomaly into the vicinity."
name = "delivery grenade"
icon = 'icons/obj/grenade.dmi'
@@ -11,7 +11,7 @@
var/deliveryamt = 1 // amount of type to deliver
var/list/newvars
/obj/item/weapon/grenade/spawnergrenade/prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
/obj/item/grenade/spawnergrenade/prime() // Prime now just handles the two loops that query for people in lockers and people who can see it.
if(spawner_type && deliveryamt)
// Make a quick flash
@@ -39,7 +39,7 @@
qdel(src)
return
/obj/item/weapon/grenade/spawnergrenade/manhacks
/obj/item/grenade/spawnergrenade/manhacks
name = "manhack delivery grenade"
desc = "It is set to detonate in 5 seconds. It will unleash a swarm of deadly manhack robots that will attack everyone but you and your allies."
spawner_type = /mob/living/simple_animal/hostile/viscerator
@@ -47,21 +47,21 @@
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
flash = FALSE
/obj/item/weapon/grenade/spawnergrenade/spesscarp
/obj/item/grenade/spawnergrenade/spesscarp
name = "carp delivery grenade"
spawner_type = /mob/living/simple_animal/hostile/carp
deliveryamt = 5
origin_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 4, TECH_ILLEGAL = 4)
/obj/item/weapon/grenade/spawnergrenade/singularity
/obj/item/grenade/spawnergrenade/singularity
name = "singularity grenade"
spawner_type = /obj/singularity
/obj/item/weapon/grenade/spawnergrenade/singularity/toy
/obj/item/grenade/spawnergrenade/singularity/toy
spawner_type = /obj/item/toy/spinningtoy
fake = TRUE
/obj/item/weapon/grenade/spawnergrenade/fake_carp
/obj/item/grenade/spawnergrenade/fake_carp
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 5)
spawner_type = /mob/living/simple_animal/hostile/carp/holodeck
deliveryamt = 4
+18 -18
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/handcuffs
/obj/item/handcuffs
name = "handcuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
@@ -19,7 +19,7 @@
var/cuff_type = "handcuffs"
drop_sound = 'sound/items/drop/accessory.ogg'
/obj/item/weapon/handcuffs/attack(var/mob/living/carbon/C, var/mob/living/user)
/obj/item/handcuffs/attack(var/mob/living/carbon/C, var/mob/living/user)
if(!user.IsAdvancedToolUser())
return
@@ -37,7 +37,7 @@
//Or just. You know. Don't check for it and place the handcuffs anyways!
place_handcuffs(C, user)
/obj/item/weapon/handcuffs/proc/place_handcuffs(var/mob/living/carbon/target, var/mob/user)
/obj/item/handcuffs/proc/place_handcuffs(var/mob/living/carbon/target, var/mob/user)
playsound(src.loc, cuff_sound, 30, 1, -2)
var/mob/living/carbon/human/H = target
@@ -69,7 +69,7 @@
target.drop_r_hand()
target.drop_l_hand()
// Apply cuffs.
var/obj/item/weapon/handcuffs/cuffs = src
var/obj/item/handcuffs/cuffs = src
if(dispenser)
cuffs = new(target)
else
@@ -105,7 +105,7 @@
last_chew = world.time
/obj/item/weapon/handcuffs/cable
/obj/item/handcuffs/cable
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_white"
@@ -114,45 +114,45 @@
cuff_type = "cable restraints"
elastic = 1
/obj/item/weapon/handcuffs/cable/red
/obj/item/handcuffs/cable/red
color = "#DD0000"
/obj/item/weapon/handcuffs/cable/yellow
/obj/item/handcuffs/cable/yellow
color = "#DDDD00"
/obj/item/weapon/handcuffs/cable/blue
/obj/item/handcuffs/cable/blue
color = "#0000DD"
/obj/item/weapon/handcuffs/cable/green
/obj/item/handcuffs/cable/green
color = "#00DD00"
/obj/item/weapon/handcuffs/cable/pink
/obj/item/handcuffs/cable/pink
color = "#DD00DD"
/obj/item/weapon/handcuffs/cable/orange
/obj/item/handcuffs/cable/orange
color = "#DD8800"
/obj/item/weapon/handcuffs/cable/cyan
/obj/item/handcuffs/cable/cyan
color = "#00DDDD"
/obj/item/weapon/handcuffs/cable/white
/obj/item/handcuffs/cable/white
color = "#FFFFFF"
/obj/item/weapon/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob)
/obj/item/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob)
..()
if(istype(I, /obj/item/stack/rods))
var/obj/item/stack/rods/R = I
if (R.use(1))
var/obj/item/weapon/material/wirerod/W = new(get_turf(user))
var/obj/item/material/wirerod/W = new(get_turf(user))
user.put_in_hands(W)
to_chat(user, "<span class='notice'>You wrap the cable restraint around the top of the rod.</span>")
qdel(src)
update_icon(user)
/obj/item/weapon/handcuffs/cyborg
/obj/item/handcuffs/cyborg
dispenser = 1
/obj/item/weapon/handcuffs/cable/tape
/obj/item/handcuffs/cable/tape
name = "tape restraints"
desc = "DIY!"
icon_state = "tape_cross"
@@ -161,7 +161,7 @@
breakouttime = 200
cuff_type = "duct tape"
/obj/item/weapon/handcuffs/ziptie
/obj/item/handcuffs/ziptie
name = "ziptie"
desc = " A sturdy and reliable plastic ziptie for binding the wrists."
icon = 'icons/obj/items.dmi'
@@ -3,7 +3,7 @@
*/
//uncomment when this is updated to match storage update
/*
/obj/item/weapon/seedbag
/obj/item/seedbag
icon = 'icons/obj/hydroponics_machines.dmi'
icon_state = "seedbag"
name = "Seed Bag"
@@ -14,11 +14,11 @@
w_class = 1
var/list/item_quants = list()
/obj/item/weapon/seedbag/attack_self(mob/user as mob)
/obj/item/seedbag/attack_self(mob/user as mob)
user.machine = src
interact(user)
/obj/item/weapon/seedbag/verb/toggle_mode()
/obj/item/seedbag/verb/toggle_mode()
set name = "Switch Bagging Method"
set category = "Object"
@@ -31,8 +31,8 @@
/obj/item/seeds/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if (istype(O, /obj/item/weapon/seedbag))
var/obj/item/weapon/seedbag/S = O
if (istype(O, /obj/item/seedbag))
var/obj/item/seedbag/S = O
if (S.mode == 1)
for (var/obj/item/seeds/G in locate(src.x,src.y,src.z))
if (S.contents.len < S.capacity)
@@ -58,7 +58,7 @@
S.updateUsrDialog()
return
/obj/item/weapon/seedbag/interact(mob/user as mob)
/obj/item/seedbag/interact(mob/user as mob)
var/dat = "<TT><b>Select an item:</b><br>"
@@ -79,7 +79,7 @@
onclose(user, "seedbag")
return
/obj/item/weapon/seedbag/Topic(href, href_list)
/obj/item/seedbag/Topic(href, href_list)
if(..())
return
@@ -105,7 +105,7 @@
src.updateUsrDialog()
return
/obj/item/weapon/seedbag/updateUsrDialog()
/obj/item/seedbag/updateUsrDialog()
var/list/nearby = range(1, src)
for(var/mob/M in nearby)
if ((M.client && M.machine == src))
@@ -2,7 +2,7 @@
#define MALFUNCTION_PERMANENT 2
/obj/item/weapon/implant
/obj/item/implant
name = "implant"
icon = 'icons/obj/device.dmi'
icon_state = "implant"
@@ -14,32 +14,32 @@
var/allow_reagents = 0
var/malfunction = 0
/obj/item/weapon/implant/Initialize()
/obj/item/implant/Initialize()
. = ..()
implants += src
/obj/item/weapon/implant/proc/trigger(emote, source as mob)
/obj/item/implant/proc/trigger(emote, source as mob)
return
/obj/item/weapon/implant/proc/activate()
/obj/item/implant/proc/activate()
return
// What does the implant do upon injection?
// return 0 if the implant fails (ex. Revhead and loyalty implant.)
// return 1 if the implant succeeds (ex. Nonrevhead and loyalty implant.)
/obj/item/weapon/implant/proc/implanted(var/mob/source)
/obj/item/implant/proc/implanted(var/mob/source)
return 1
/obj/item/weapon/implant/proc/get_data()
/obj/item/implant/proc/get_data()
return "No information available"
/obj/item/weapon/implant/proc/hear(message, source as mob)
/obj/item/implant/proc/hear(message, source as mob)
return
/obj/item/weapon/implant/proc/islegal()
/obj/item/implant/proc/islegal()
return 0
/obj/item/weapon/implant/proc/meltdown() //breaks it down, making implant unrecongizible
/obj/item/implant/proc/meltdown() //breaks it down, making implant unrecongizible
to_chat(imp_in, "<span class='warning'>You feel something melting inside [part ? "your [part.name]" : "you"]!</span>")
if (part)
part.take_damage(burn = 15, used_weapon = "Electronics meltdown")
@@ -51,16 +51,16 @@
icon_state = "implant_melted"
malfunction = MALFUNCTION_PERMANENT
/obj/item/weapon/implant/Destroy()
/obj/item/implant/Destroy()
if(part)
part.implants.Remove(src)
STOP_PROCESSING(SSprocessing, src)
implants -= src
return ..()
/obj/item/weapon/implant/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/implanter))
var/obj/item/weapon/implanter/implanter = I
/obj/item/implant/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/implanter))
var/obj/item/implanter/implanter = I
if(implanter.imp)
return // It's full.
user.drop_from_inventory(src)
@@ -70,13 +70,13 @@
else
..()
/obj/item/weapon/implant/tracking
/obj/item/implant/tracking
name = "tracking implant"
desc = "Track with this."
var/id = 1.0
/obj/item/weapon/implant/tracking/get_data()
/obj/item/implant/tracking/get_data()
. = {"<b>Implant Specifications:</b><BR>
<b>Name:</b> Tracking Beacon<BR>
<b>Life:</b> 10 minutes after death of host<BR>
@@ -92,7 +92,7 @@ disintegrate into bio-safe elements.<BR>
circuitry. As a result neurotoxins can cause massive damage.<HR>
Implant Specifics:<BR>"}
/obj/item/weapon/implant/tracking/emp_act(severity)
/obj/item/implant/tracking/emp_act(severity)
if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning
return
malfunction = MALFUNCTION_TEMPORARY
@@ -109,12 +109,12 @@ Implant Specifics:<BR>"}
malfunction--
/obj/item/weapon/implant/dexplosive
/obj/item/implant/dexplosive
name = "explosive"
desc = "And boom goes the weasel."
icon_state = "implant_evil"
/obj/item/weapon/implant/dexplosive/get_data()
/obj/item/implant/dexplosive/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp RX-78 Employee Management Implant<BR>
@@ -126,28 +126,28 @@ Implant Specifics:<BR>"}
<b>Special Features:</b> Explodes<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
/obj/item/weapon/implant/dexplosive/trigger(emote, source as mob)
/obj/item/implant/dexplosive/trigger(emote, source as mob)
if(emote == "deathgasp")
src.activate("death")
/obj/item/weapon/implant/dexplosive/activate(var/cause)
/obj/item/implant/dexplosive/activate(var/cause)
if((!cause) || (!src.imp_in)) return 0
explosion(src, -1, 0, 2, 3, 0)//This might be a bit much, dono will have to see.
if(src.imp_in)
src.imp_in.gib()
/obj/item/weapon/implant/dexplosive/islegal()
/obj/item/implant/dexplosive/islegal()
return 0
//BS12 Explosive
/obj/item/weapon/implant/explosive
/obj/item/implant/explosive
name = "explosive implant"
desc = "A military grade micro bio-explosive. Highly dangerous."
var/elevel = "Localized Limb"
var/phrase = "supercalifragilisticexpialidocious"
icon_state = "implant_evil"
/obj/item/weapon/implant/explosive/get_data()
/obj/item/implant/explosive/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp RX-78 Intimidation Class Implant<BR>
@@ -159,17 +159,17 @@ Implant Specifics:<BR>"}
<b>Special Features:</b> Explodes<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
/obj/item/weapon/implant/explosive/hear_talk(mob/M as mob, msg)
/obj/item/implant/explosive/hear_talk(mob/M as mob, msg)
hear(msg)
/obj/item/weapon/implant/explosive/hear(var/msg)
/obj/item/implant/explosive/hear(var/msg)
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
msg = replace_characters(msg, replacechars)
if(findtext(msg,phrase))
activate()
qdel(src)
/obj/item/weapon/implant/explosive/activate()
/obj/item/implant/explosive/activate()
if (malfunction == MALFUNCTION_PERMANENT)
return
@@ -223,7 +223,7 @@ Implant Specifics:<BR>"}
data.z_transfer = z_transfer
SSexplosives.queue(data)
/obj/item/weapon/implant/explosive/implanted(mob/source as mob)
/obj/item/implant/explosive/implanted(mob/source as mob)
elevel = alert("What sort of explosion would you prefer?", "Implant Intent", "Localized Limb", "Destroy Body", "Full Explosion")
phrase = input("Choose activation phrase:") as text
var/list/replacechars = list("'" = "","\"" = "",">" = "","<" = "","(" = "",")" = "")
@@ -232,7 +232,7 @@ Implant Specifics:<BR>"}
to_chat(usr, "The implanted explosive implant in [source] can be activated by saying something containing the phrase ''[src.phrase]'', <B>say [src.phrase]</B> to attempt to activate.")
return 1
/obj/item/weapon/implant/explosive/emp_act(severity)
/obj/item/implant/explosive/emp_act(severity)
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
@@ -252,10 +252,10 @@ Implant Specifics:<BR>"}
spawn (20)
malfunction--
/obj/item/weapon/implant/explosive/islegal()
/obj/item/implant/explosive/islegal()
return 0
/obj/item/weapon/implant/explosive/proc/small_boom()
/obj/item/implant/explosive/proc/small_boom()
if (ishuman(imp_in) && part)
imp_in.visible_message("<span class='warning'>Something beeps inside [imp_in][part ? "'s [part.name]" : ""]!</span>")
playsound(loc, 'sound/items/countdown.ogg', 75, 1, -3)
@@ -272,21 +272,21 @@ Implant Specifics:<BR>"}
explosion(get_turf(imp_in), -1, -1, 2, 3)
qdel(src)
/obj/item/weapon/implant/explosive/New()
/obj/item/implant/explosive/New()
..()
listening_objects += src
/obj/item/weapon/implant/explosive/Destroy()
/obj/item/implant/explosive/Destroy()
listening_objects -= src
return ..()
/obj/item/weapon/implant/chem
/obj/item/implant/chem
name = "chemical implant"
desc = "Injects things."
allow_reagents = 1
/obj/item/weapon/implant/chem/get_data()
/obj/item/implant/chem/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Robust Corp MJ-420 Prisoner Management Implant<BR>
@@ -304,20 +304,20 @@ Can only be loaded while still in its original case.<BR>
the implant may become unstable and either pre-maturely inject the subject or simply break."}
/obj/item/weapon/implant/chem/New()
/obj/item/implant/chem/New()
..()
var/datum/reagents/R = new/datum/reagents(50)
reagents = R
R.my_atom = src
/obj/item/weapon/implant/chem/trigger(emote, source as mob)
/obj/item/implant/chem/trigger(emote, source as mob)
if(emote == "deathgasp")
src.activate(src.reagents.total_volume)
return
/obj/item/weapon/implant/chem/activate(var/cause)
/obj/item/implant/chem/activate(var/cause)
if((!cause) || (!src.imp_in)) return 0
var/mob/living/carbon/R = src.imp_in
src.reagents.trans_to_mob(R, cause, CHEM_BLOOD)
@@ -327,7 +327,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
spawn(0)
qdel(src)
/obj/item/weapon/implant/chem/emp_act(severity)
/obj/item/implant/chem/emp_act(severity)
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
@@ -343,11 +343,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
spawn(20)
malfunction--
/obj/item/weapon/implant/loyalty
/obj/item/implant/loyalty
name = "loyalty implant"
desc = "Makes you loyal or such."
/obj/item/weapon/implant/loyalty/get_data()
/obj/item/implant/loyalty/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> [current_map.company_name] Employee Management Implant<BR>
@@ -359,7 +359,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
<b>Special Features:</b> Will prevent and cure most forms of brainwashing.<BR>
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
/obj/item/weapon/implant/loyalty/implanted(mob/M)
/obj/item/implant/loyalty/implanted(mob/M)
if(!istype(M, /mob/living/carbon/human)) return 0
var/mob/living/carbon/human/H = M
var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role)
@@ -371,7 +371,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
to_chat(H, "<span class='notice'>You feel a surge of loyalty towards [current_map.company_name].</span>")
return 1
/obj/item/weapon/implant/loyalty/emp_act(severity)
/obj/item/implant/loyalty/emp_act(severity)
if (malfunction)
return
malfunction = MALFUNCTION_TEMPORARY
@@ -386,26 +386,26 @@ the implant may become unstable and either pre-maturely inject the subject or si
spawn(20)
malfunction--
/obj/item/weapon/implant/loyalty/implanted(mob/source as mob)
/obj/item/implant/loyalty/implanted(mob/source as mob)
//mobname = source.real_name
return 1
/obj/item/weapon/implant/loyalty/ipc
/obj/item/implant/loyalty/ipc
name = "loyalty chip"
desc = "A device that sets directives programmed for loyalty to NanoTrasen on the synthetic subject. Will not work on organics."
/obj/item/weapon/implant/loyalty/ipc/implanted(mob/M)
/obj/item/implant/loyalty/ipc/implanted(mob/M)
if (!isipc(M))
return
..()
/obj/item/weapon/implant/loyalty/sol
/obj/item/implant/loyalty/sol
name = "loyalty implant"
desc = "Makes you loyal to the Sol Alliance, or to a certain individual."
/obj/item/weapon/implant/loyalty/sol/implanted(mob/M)
/obj/item/implant/loyalty/sol/implanted(mob/M)
if(!istype(M, /mob/living/carbon/human)) return 0
var/mob/living/carbon/human/H = M
var/datum/antagonist/antag_data = get_antag_data(H.mind.special_role)
@@ -417,12 +417,12 @@ the implant may become unstable and either pre-maturely inject the subject or si
to_chat(H, "<span class='notice'>You feel a surge of loyalty towards Admiral Michael Frost.</span>")
return 1
/obj/item/weapon/implant/adrenalin
/obj/item/implant/adrenalin
name = "adrenalin"
desc = "Removes all stuns and knockdowns."
var/uses
/obj/item/weapon/implant/adrenalin/get_data()
/obj/item/implant/adrenalin/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Cybersun Industries Adrenalin Implant<BR>
@@ -435,7 +435,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
<b>Integrity:</b> Implant can only be used three times before the nanobots are depleted."}
/obj/item/weapon/implant/adrenalin/trigger(emote, mob/source as mob)
/obj/item/implant/adrenalin/trigger(emote, mob/source as mob)
if (src.uses < 1)
return 0
if (emote == "pale")
@@ -446,18 +446,18 @@ the implant may become unstable and either pre-maturely inject the subject or si
source.SetParalysis(0)
/obj/item/weapon/implant/adrenalin/implanted(mob/source)
/obj/item/implant/adrenalin/implanted(mob/source)
source.mind.store_memory("A implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate.", 0, 0)
to_chat(source, "The implanted freedom implant can be activated by using the pale emote, <B>say *pale</B> to attempt to activate.")
return 1
/obj/item/weapon/implant/death_alarm
/obj/item/implant/death_alarm
name = "death alarm implant"
desc = "An alarm which monitors host vital signs and transmits a radio message upon death."
var/mobname = "Will Robinson"
/obj/item/weapon/implant/death_alarm/get_data()
/obj/item/implant/death_alarm/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> [current_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
@@ -469,7 +469,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
<b>Special Features:</b> Alerts crew to crewmember death.<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
/obj/item/weapon/implant/death_alarm/process()
/obj/item/implant/death_alarm/process()
if (!implanted)
return
var/mob/M = imp_in
@@ -480,7 +480,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
else if(M.stat == 2)
activate("death")
/obj/item/weapon/implant/death_alarm/activate(var/cause)
/obj/item/implant/death_alarm/activate(var/cause)
var/mob/M = imp_in
var/area/t = get_area(M)
switch (cause)
@@ -504,7 +504,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
qdel(a)
STOP_PROCESSING(SSprocessing, src)
/obj/item/weapon/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
/obj/item/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this
if (malfunction) //so I'm just going to add a meltdown chance here
return
malfunction = MALFUNCTION_TEMPORARY
@@ -520,19 +520,19 @@ the implant may become unstable and either pre-maturely inject the subject or si
spawn(20)
malfunction--
/obj/item/weapon/implant/death_alarm/implanted(mob/source as mob)
/obj/item/implant/death_alarm/implanted(mob/source as mob)
mobname = source.real_name
START_PROCESSING(SSprocessing, src)
return 1
/obj/item/weapon/implant/compressed
/obj/item/implant/compressed
name = "compressed matter implant"
desc = "Based on compressed matter technology, can store a single item."
icon_state = "implant_evil"
var/activation_emote = "sigh"
var/obj/item/scanned = null
/obj/item/weapon/implant/compressed/get_data()
/obj/item/implant/compressed/get_data()
. = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> [current_map.company_name] \"Profit Margin\" Class Employee Lifesign Sensor<BR>
@@ -544,7 +544,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
<b>Special Features:</b> Alerts crew to crewmember death.<BR>
<b>Integrity:</b> Implant will occasionally be degraded by the body's immune system and thus will occasionally malfunction."}
/obj/item/weapon/implant/compressed/trigger(emote, mob/source as mob)
/obj/item/implant/compressed/trigger(emote, mob/source as mob)
if (src.scanned == null)
return 0
@@ -552,7 +552,7 @@ the implant may become unstable and either pre-maturely inject the subject or si
to_chat(source, "The air glows as \the [src.scanned.name] uncompresses.")
activate()
/obj/item/weapon/implant/compressed/activate()
/obj/item/implant/compressed/activate()
var/turf/t = get_turf(src)
if (imp_in)
imp_in.put_in_hands(scanned)
@@ -560,12 +560,12 @@ the implant may become unstable and either pre-maturely inject the subject or si
scanned.forceMove(t)
qdel(src)
/obj/item/weapon/implant/compressed/implanted(mob/source as mob)
/obj/item/implant/compressed/implanted(mob/source as mob)
src.activation_emote = input("Choose activation emote:") in list("blink", "blink_r", "eyebrow", "chuckle", "twitch_s", "frown", "nod", "blush", "giggle", "grin", "groan", "shrug", "smile", "pale", "sniff", "whimper", "wink")
if (source.mind)
source.mind.store_memory("Compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.", 0, 0)
to_chat(source, "The implanted compressed matter implant can be activated by using the [src.activation_emote] emote, <B>say *[src.activation_emote]</B> to attempt to activate.")
return 1
/obj/item/weapon/implant/compressed/islegal()
/obj/item/implant/compressed/islegal()
return 0
@@ -1,6 +1,6 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
/obj/item/weapon/implantcase
/obj/item/implantcase
name = "glass case"
desc = "A case containing an implant."
icon = 'icons/obj/items.dmi'
@@ -9,16 +9,16 @@
throw_speed = 1
throw_range = 5
w_class = 1.0
var/obj/item/weapon/implant/imp = null
var/obj/item/implant/imp = null
/obj/item/weapon/implantcase/proc/update()
/obj/item/implantcase/proc/update()
if (src.imp)
src.icon_state = text("implantcase-[]", src.imp.implant_color)
else
src.icon_state = "implantcase-0"
return
/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob)
/obj/item/implantcase/attackby(obj/item/I as obj, mob/user as mob)
..()
if (I.ispen())
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
@@ -31,7 +31,7 @@
src.name = text("Glass Case - '[]'", t)
else
src.name = "Glass Case"
else if(istype(I, /obj/item/weapon/reagent_containers/syringe))
else if(istype(I, /obj/item/reagent_containers/syringe))
if(!src.imp) return
if(!src.imp.allow_reagents) return
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
@@ -40,8 +40,8 @@
var/trans = I.reagents.trans_to_obj(src.imp, 5)
if (trans > 0)
to_chat(user, "<span class='notice'>You inject [trans] units of the solution. The syringe now contains [I.reagents.total_volume] units.</span>")
else if (istype(I, /obj/item/weapon/implanter))
var/obj/item/weapon/implanter/M = I
else if (istype(I, /obj/item/implanter))
var/obj/item/implanter/M = I
if (M.imp)
if ((src.imp || M.imp.implanted))
return
@@ -62,100 +62,100 @@
return
/obj/item/weapon/implantcase/tracking
/obj/item/implantcase/tracking
name = "glass case - 'tracking'"
desc = "A case containing a tracking implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/tracking/New()
src.imp = new /obj/item/weapon/implant/tracking( src )
/obj/item/implantcase/tracking/New()
src.imp = new /obj/item/implant/tracking( src )
..()
return
/obj/item/weapon/implantcase/explosive
/obj/item/implantcase/explosive
name = "glass case - 'explosive'"
desc = "A case containing an explosive implant."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/explosive/New()
src.imp = new /obj/item/weapon/implant/explosive( src )
/obj/item/implantcase/explosive/New()
src.imp = new /obj/item/implant/explosive( src )
..()
return
/obj/item/weapon/implantcase/chem
/obj/item/implantcase/chem
name = "glass case - 'chem'"
desc = "A case containing a chemical implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/chem/New()
src.imp = new /obj/item/weapon/implant/chem( src )
/obj/item/implantcase/chem/New()
src.imp = new /obj/item/implant/chem( src )
..()
return
/obj/item/weapon/implantcase/loyalty
/obj/item/implantcase/loyalty
name = "glass case - 'loyalty'"
desc = "A case containing a loyalty implant."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/loyalty/New()
src.imp = new /obj/item/weapon/implant/loyalty( src )
/obj/item/implantcase/loyalty/New()
src.imp = new /obj/item/implant/loyalty( src )
..()
return
/obj/item/weapon/implantcase/death_alarm
/obj/item/implantcase/death_alarm
name = "glass case - 'death alarm'"
desc = "A case containing a death alarm implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/death_alarm/New()
src.imp = new /obj/item/weapon/implant/death_alarm( src )
/obj/item/implantcase/death_alarm/New()
src.imp = new /obj/item/implant/death_alarm( src )
..()
return
/obj/item/weapon/implantcase/freedom
/obj/item/implantcase/freedom
name = "glass case - 'freedom'"
desc = "A case containing a freedom implant."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/freedom/New()
src.imp = new /obj/item/weapon/implant/freedom( src )
/obj/item/implantcase/freedom/New()
src.imp = new /obj/item/implant/freedom( src )
..()
return
/obj/item/weapon/implantcase/adrenalin
/obj/item/implantcase/adrenalin
name = "glass case - 'adrenalin'"
desc = "A case containing an adrenalin implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/adrenalin/New()
src.imp = new /obj/item/weapon/implant/adrenalin( src )
/obj/item/implantcase/adrenalin/New()
src.imp = new /obj/item/implant/adrenalin( src )
..()
return
/obj/item/weapon/implantcase/dexplosive
/obj/item/implantcase/dexplosive
name = "glass case - 'explosive'"
desc = "A case containing an explosive."
icon_state = "implantcase-r"
/obj/item/weapon/implantcase/dexplosive/New()
src.imp = new /obj/item/weapon/implant/dexplosive( src )
/obj/item/implantcase/dexplosive/New()
src.imp = new /obj/item/implant/dexplosive( src )
..()
return
/obj/item/weapon/implantcase/health
/obj/item/implantcase/health
name = "glass case - 'health'"
desc = "A case containing a health tracking implant."
icon_state = "implantcase-b"
/obj/item/weapon/implantcase/health/New()
src.imp = new /obj/item/weapon/implant/health( src )
/obj/item/implantcase/health/New()
src.imp = new /obj/item/implant/health( src )
..()
return
@@ -11,7 +11,7 @@
var/ready = 1
var/malfunction = 0
var/list/obj/item/weapon/implant/loyalty/implant_list = list()
var/list/obj/item/implant/loyalty/implant_list = list()
var/max_implants = 5
var/injection_cooldown = 600
var/replenish_cooldown = 6000
@@ -74,8 +74,8 @@
return
attackby(var/obj/item/weapon/G as obj, var/mob/user as mob)
if(istype(G, /obj/item/weapon/grab))
attackby(var/obj/item/G as obj, var/mob/user as mob)
if(istype(G, /obj/item/grab))
if(!ismob(G:affecting))
return
for(var/mob/living/carbon/slime/M in range(1,G:affecting))
@@ -128,9 +128,9 @@
if (!istype(M, /mob/living/carbon))
return
if(!implant_list.len) return
for(var/obj/item/weapon/implant/loyalty/imp in implant_list)
for(var/obj/item/implant/loyalty/imp in implant_list)
if(!imp) continue
if(istype(imp, /obj/item/weapon/implant/loyalty))
if(istype(imp, /obj/item/implant/loyalty))
for (var/mob/O in viewers(M, null))
O.show_message("<span class='warning'>\The [M] has been implanted by \the [src].</span>", 1)
@@ -145,7 +145,7 @@
add_implants()
for(var/i=0, i<src.max_implants, i++)
var/obj/item/weapon/implant/loyalty/I = new /obj/item/weapon/implant/loyalty(src)
var/obj/item/implant/loyalty/I = new /obj/item/implant/loyalty(src)
implant_list += I
return

Some files were not shown because too many files have changed in this diff Show More