Removes All Weapons

This commit is contained in:
Fox McCloud
2018-04-15 16:25:56 -04:00
parent 8b576c4d42
commit 5c4aa9b3fd
1100 changed files with 17642 additions and 17666 deletions
@@ -13,8 +13,8 @@
create_reagents(100)
..()
/obj/effect/decal/cleanable/attackby(obj/item/weapon/W as obj, mob/user as mob,)
if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food/drinks))
/obj/effect/decal/cleanable/attackby(obj/item/W as obj, mob/user as mob,)
if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks))
if(src.reagents && W.reagents && !noscoop)
if(!src.reagents.total_volume)
to_chat(user, "<span class='notice'>There isn't enough [src] to scoop up!</span>")
@@ -3,7 +3,7 @@
// The poster item
/obj/item/weapon/poster
/obj/item/poster
name = "rolled-up poster"
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities."
icon = 'icons/obj/contraband.dmi'
@@ -12,7 +12,7 @@
var/poster_type
var/obj/structure/sign/poster/poster_structure
/obj/item/weapon/poster/New(loc, obj/structure/sign/poster/new_poster_structure)
/obj/item/poster/New(loc, obj/structure/sign/poster/new_poster_structure)
..()
poster_structure = new_poster_structure
if(!new_poster_structure && poster_type)
@@ -26,17 +26,17 @@
name = "[name] - [poster_structure.original_name]"
/obj/item/weapon/poster/Destroy()
/obj/item/poster/Destroy()
poster_structure = null
. = ..()
// These icon_states may be overriden, but are for mapper's convinence
/obj/item/weapon/poster/random_contraband
/obj/item/poster/random_contraband
name = "random contraband poster"
poster_type = /obj/structure/sign/poster/contraband/random
icon_state = "rolled_poster"
/obj/item/weapon/poster/random_official
/obj/item/poster/random_official
name = "random official poster"
poster_type = /obj/structure/sign/poster/official/random
icon_state = "rolled_poster_legit"
@@ -110,12 +110,12 @@
/obj/structure/sign/poster/proc/roll_and_drop(loc)
pixel_x = 0
pixel_y = 0
var/obj/item/weapon/poster/P = new(loc, src)
var/obj/item/poster/P = new(loc, src)
forceMove(P)
return P
//seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby()
/turf/simulated/wall/proc/place_poster(obj/item/weapon/poster/P, mob/user)
/turf/simulated/wall/proc/place_poster(obj/item/poster/P, mob/user)
if(!P.poster_structure)
return
var/stuff_on_wall = 0
@@ -214,8 +214,8 @@
/obj/structure/foamedmetal/attackby(obj/item/I, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
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.loc = src.loc
user.visible_message("<span class='warning'>[G.assailant] smashes [G.affecting] through the foamed metal wall.</span>")
qdel(I)
+2 -2
View File
@@ -154,8 +154,8 @@
/obj/structure/glowshroom/attackby(obj/item/I, mob/user)
..()
var/damage_to_do = I.force
if(istype(I, /obj/item/weapon/scythe))
var/obj/item/weapon/scythe/S = I
if(istype(I, /obj/item/scythe))
var/obj/item/scythe/S = I
if(S.extend) //so folded telescythes won't get damage boosts / insta-clears (they instead will instead be treated like non-scythes)
damage_to_do *= 4
for(var/obj/structure/glowshroom/G in range(1,src))
+4 -4
View File
@@ -123,7 +123,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)
qdel(src)
/obj/effect/landmark/costume/gladiator/New()
@@ -182,7 +182,7 @@
var/CHOICE= pick( /obj/item/clothing/head/bowlerhat, /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)
qdel(src)
@@ -236,13 +236,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/twohanded/staff/broom(src.loc)
new /obj/item/twohanded/staff/broom(src.loc)
qdel(src)
/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/twohanded/staff/(src.loc)
new /obj/item/twohanded/staff/(src.loc)
qdel(src)
/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
+2 -2
View File
@@ -3,7 +3,7 @@
desc = "I Better stay away from that thing."
density = 0
anchored = 1
icon = 'icons/obj/weapons.dmi'
icon = 'icons/obj/items.dmi'
icon_state = "uglyminearmed"
var/triggered = 0
var/faction = "syndicate"
@@ -130,7 +130,7 @@
spawn(0)
new /obj/effect/hallucination/delusion(victim.loc, victim, force_kind = "demon", duration = duration, skip_nearby = 0)
var/obj/item/weapon/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc)
var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc)
chainsaw.flags |= NODROP
victim.drop_l_hand()
victim.drop_r_hand()
+4 -4
View File
@@ -26,11 +26,11 @@
/obj/effect/portal/Destroy()
portals -= src
if(istype(creator, /obj/item/weapon/hand_tele))
var/obj/item/weapon/hand_tele/O = creator
if(istype(creator, /obj/item/hand_tele))
var/obj/item/hand_tele/O = creator
O.active_portals--
else if(istype(creator, /obj/item/weapon/gun/energy/wormhole_projector))
var/obj/item/weapon/gun/energy/wormhole_projector/P = creator
else if(istype(creator, /obj/item/gun/energy/wormhole_projector))
var/obj/item/gun/energy/wormhole_projector/P = creator
P.portal_destroyed(src)
creator = null
target = null
@@ -24,8 +24,8 @@
..()
var/obj/item/device/transfer_valve/V = new(src.loc)
var/obj/item/weapon/tank/plasma/PT = new(V)
var/obj/item/weapon/tank/oxygen/OT = new(V)
var/obj/item/tank/plasma/PT = new(V)
var/obj/item/tank/oxygen/OT = new(V)
V.tank_one = PT
V.tank_two = OT
+78 -78
View File
@@ -23,10 +23,10 @@
lootdoubles = 0
loot = list(
/obj/item/weapon/gun/projectile/automatic/pistol = 8,
/obj/item/weapon/gun/projectile/shotgun/automatic/combat = 5,
/obj/item/weapon/gun/projectile/revolver/mateba,
/obj/item/weapon/gun/projectile/automatic/pistol/deagle
/obj/item/gun/projectile/automatic/pistol = 8,
/obj/item/gun/projectile/shotgun/automatic/combat = 5,
/obj/item/gun/projectile/revolver/mateba,
/obj/item/gun/projectile/automatic/pistol/deagle
)
/obj/effect/spawner/lootdrop/maintenance
@@ -90,65 +90,65 @@
/obj/item/stack/sheet/metal{amount = 20} = 10,
/obj/item/stack/sheet/mineral/plasma{layer = 2.9} = 10,
/obj/item/stack/sheet/rglass = 10,
/obj/item/weapon/book/manual/engineering_construction = 10,
/obj/item/weapon/book/manual/engineering_hacking = 10,
/obj/item/book/manual/engineering_construction = 10,
/obj/item/book/manual/engineering_hacking = 10,
/obj/item/clothing/head/cone = 10,
/obj/item/weapon/coin/silver = 10,
/obj/item/weapon/coin/twoheaded = 10,
/obj/item/weapon/poster/random_contraband = 10,
/obj/item/weapon/crowbar = 10,
/obj/item/weapon/crowbar/red = 10,
/obj/item/weapon/extinguisher = 90,
//obj/item/weapon/gun/projectile/revolver/russian = 1, //disabled until lootdrop is a proper world proc.
/obj/item/weapon/hand_labeler = 10,
/obj/item/weapon/paper/crumpled = 10,
/obj/item/weapon/pen = 10,
/obj/item/weapon/cultivator = 10,
/obj/item/weapon/reagent_containers/spray/pestspray = 10,
/obj/item/weapon/stock_parts/cell = 30,
/obj/item/weapon/storage/belt/utility = 20,
/obj/item/weapon/storage/box = 20,
/obj/item/weapon/storage/box/cups = 10,
/obj/item/weapon/storage/box/donkpockets = 10,
/obj/item/weapon/storage/box/lights/mixed = 30,
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco = 10,
/obj/item/weapon/storage/toolbox/mechanical = 10,
/obj/item/weapon/screwdriver = 30,
/obj/item/weapon/tank/emergency_oxygen = 20,
/obj/item/weapon/tank/emergency_oxygen/engi = 10,
/obj/item/weapon/vending_refill/cola = 10,
/obj/item/weapon/weldingtool = 30,
/obj/item/weapon/wirecutters = 10,
/obj/item/weapon/wrench = 40,
/obj/item/weapon/relic = 35,
/obj/item/weaponcrafting/receiver = 20,
/obj/item/coin/silver = 10,
/obj/item/coin/twoheaded = 10,
/obj/item/poster/random_contraband = 10,
/obj/item/crowbar = 10,
/obj/item/crowbar/red = 10,
/obj/item/extinguisher = 90,
//obj/item/gun/projectile/revolver/russian = 1, //disabled until lootdrop is a proper world proc.
/obj/item/hand_labeler = 10,
/obj/item/paper/crumpled = 10,
/obj/item/pen = 10,
/obj/item/cultivator = 10,
/obj/item/reagent_containers/spray/pestspray = 10,
/obj/item/stock_parts/cell = 30,
/obj/item/storage/belt/utility = 20,
/obj/item/storage/box = 20,
/obj/item/storage/box/cups = 10,
/obj/item/storage/box/donkpockets = 10,
/obj/item/storage/box/lights/mixed = 30,
/obj/item/storage/fancy/cigarettes/dromedaryco = 10,
/obj/item/storage/toolbox/mechanical = 10,
/obj/item/screwdriver = 30,
/obj/item/tank/emergency_oxygen = 20,
/obj/item/tank/emergency_oxygen/engi = 10,
/obj/item/vending_refill/cola = 10,
/obj/item/weldingtool = 30,
/obj/item/wirecutters = 10,
/obj/item/wrench = 40,
/obj/item/relic = 35,
/obj/itemcrafting/receiver = 20,
/obj/item/clothing/shoes/brown = 30,
/obj/item/seeds/ambrosia/deus = 10,
/obj/item/seeds/ambrosia = 20,
/obj/item/clothing/under/color/black = 30,
/obj/item/stack/tape_roll = 10,
////////////////CONTRABAND STUFF//////////////////
/obj/item/weapon/grenade/clown_grenade = 3,
/obj/item/grenade/clown_grenade = 3,
/obj/item/seeds/ambrosia/cruciatus = 3,
/obj/item/weapon/gun/projectile/automatic/pistol/empty = 1,
/obj/item/gun/projectile/automatic/pistol/empty = 1,
/obj/item/ammo_box/magazine/m10mm = 4,
/obj/item/weapon/soap/syndie = 7,
/obj/item/weapon/gun/syringe/syndicate = 2,
/obj/item/weapon/suppressor = 4,
/obj/item/soap/syndie = 7,
/obj/item/gun/syringe/syndicate = 2,
/obj/item/suppressor = 4,
/obj/item/clothing/under/chameleon = 2,
/obj/item/weapon/stamp/chameleon = 2,
/obj/item/stamp/chameleon = 2,
/obj/item/clothing/shoes/syndigaloshes = 5,
/obj/item/clothing/mask/gas/voice = 2,
/obj/item/weapon/dnascrambler = 1,
/obj/item/weapon/storage/backpack/satchel_flat = 2,
/obj/item/weapon/storage/toolbox/syndicate = 2,
/obj/item/weapon/storage/backpack/duffel/syndie/surgery_fake = 2,
/obj/item/weapon/storage/belt/military = 2,
/obj/item/weapon/storage/box/syndie_kit/space = 2,
/obj/item/dnascrambler = 1,
/obj/item/storage/backpack/satchel_flat = 2,
/obj/item/storage/toolbox/syndicate = 2,
/obj/item/storage/backpack/duffel/syndie/surgery_fake = 2,
/obj/item/storage/belt/military = 2,
/obj/item/storage/box/syndie_kit/space = 2,
/obj/item/device/multitool/ai_detect = 2,
/obj/item/weapon/implanter/storage = 1,
/obj/item/implanter/storage = 1,
/obj/item/toy/cards/deck/syndicate = 2,
/obj/item/weapon/storage/secure/briefcase/syndie = 2,
/obj/item/storage/secure/briefcase/syndie = 2,
"" = 70
)
@@ -167,11 +167,11 @@
color = "#00FFFF"
loot = list(
/obj/item/weapon/card/emag_broken = 2,
/obj/item/weapon/defibrillator/compact/loaded = 2,
/obj/item/weapon/gun/energy/laser/retro = 2,
/obj/item/weapon/rcd/combat = 1,
/obj/item/weapon/rcd = 2,
/obj/item/card/emag_broken = 2,
/obj/item/defibrillator/compact/loaded = 2,
/obj/item/gun/energy/laser/retro = 2,
/obj/item/rcd/combat = 1,
/obj/item/rcd = 2,
)
/obj/effect/spawner/lootdrop/trade_sol_common
@@ -180,22 +180,22 @@
color = "#00FFFF"
loot = list(
/obj/item/weapon/tank/anesthetic = 2,
/obj/item/weapon/weldingtool/hugetank = 2,
/obj/item/weapon/pickaxe/diamond = 1,
/obj/item/tank/anesthetic = 2,
/obj/item/weldingtool/hugetank = 2,
/obj/item/pickaxe/diamond = 1,
/obj/item/device/spacepod_equipment/weaponry/mining_laser = 1,
/obj/item/device/paicard = 2,
/obj/item/weapon/gun/projectile/automatic/pistol = 2,
/obj/item/gun/projectile/automatic/pistol = 2,
/obj/item/device/megaphone = 2,
/obj/item/weapon/stock_parts/capacitor = 1,
/obj/item/weapon/stock_parts/cell/high = 1,
/obj/item/weapon/stock_parts/manipulator = 1,
/obj/item/weapon/stock_parts/matter_bin = 1,
/obj/item/weapon/stock_parts/micro_laser = 1,
/obj/item/weapon/stock_parts/scanning_module = 1,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/cell/high = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stack/spacecash/c200 = 1,
/obj/item/weapon/airlock_electronics = 1,
/obj/item/weapon/gun/energy/kinetic_accelerator = 1,
/obj/item/airlock_electronics = 1,
/obj/item/gun/energy/kinetic_accelerator = 1,
/obj/item/pizzabox = 3,
)
@@ -204,20 +204,20 @@
lootcount = 3
lootdoubles = FALSE
var/soups = list(
/obj/item/weapon/reagent_containers/food/snacks/beetsoup,
/obj/item/weapon/reagent_containers/food/snacks/stew,
/obj/item/weapon/reagent_containers/food/snacks/hotchili,
/obj/item/weapon/reagent_containers/food/snacks/nettlesoup,
/obj/item/weapon/reagent_containers/food/snacks/meatballsoup)
/obj/item/reagent_containers/food/snacks/beetsoup,
/obj/item/reagent_containers/food/snacks/stew,
/obj/item/reagent_containers/food/snacks/hotchili,
/obj/item/reagent_containers/food/snacks/nettlesoup,
/obj/item/reagent_containers/food/snacks/meatballsoup)
var/salads = list(
/obj/item/weapon/reagent_containers/food/snacks/herbsalad,
/obj/item/weapon/reagent_containers/food/snacks/validsalad,
/obj/item/weapon/reagent_containers/food/snacks/aesirsalad)
/obj/item/reagent_containers/food/snacks/herbsalad,
/obj/item/reagent_containers/food/snacks/validsalad,
/obj/item/reagent_containers/food/snacks/aesirsalad)
var/mains = list(
/obj/item/weapon/reagent_containers/food/snacks/enchiladas,
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat,
/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,
/obj/item/weapon/reagent_containers/food/snacks/superbiteburger)
/obj/item/reagent_containers/food/snacks/enchiladas,
/obj/item/reagent_containers/food/snacks/stewedsoymeat,
/obj/item/reagent_containers/food/snacks/bigbiteburger,
/obj/item/reagent_containers/food/snacks/superbiteburger)
/obj/effect/spawner/lootdrop/three_course_meal/New()
loot = list(pick(soups) = 1,pick(salads) = 1,pick(mains) = 1)
+2 -2
View File
@@ -24,7 +24,7 @@
if(prob(5))
qdel(src)
/obj/structure/spider/attackby(obj/item/weapon/W, mob/user, params)
/obj/structure/spider/attackby(obj/item/W, mob/user, params)
if(W.attack_verb.len)
visible_message("<span class='danger'>[user] has [pick(W.attack_verb)] [src] with [W]!</span>")
else
@@ -33,7 +33,7 @@
var/damage = W.force / 4
if(iswelder(W))
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0, user))
damage = 15
+17 -11
View File
@@ -100,6 +100,12 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
for(var/path in actions_types)
new path(src)
if(!hitsound)
if(damtype == "fire")
hitsound = 'sound/items/welder.ogg'
if(damtype == "brute")
hitsound = "swing_hit"
/obj/item/Destroy()
flags &= ~DROPDEL //prevent reqdels
QDEL_NULL(hidden_uplink)
@@ -232,9 +238,9 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
else
extinguish()
if(istype(src.loc, /obj/item/weapon/storage))
if(istype(src.loc, /obj/item/storage))
//If the item is in a storage item, take it out
var/obj/item/weapon/storage/S = src.loc
var/obj/item/storage/S = src.loc
S.remove_from_storage(src)
if(throwing)
@@ -263,7 +269,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
attack_hand(A)
/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
@@ -274,9 +280,9 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
// 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, params)
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, params)
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(src.loc))
@@ -326,11 +332,11 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
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.
@@ -507,11 +513,11 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
/obj/item/proc/pwr_drain()
return 0 // Process Kill
/obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/weapon/storage
/obj/item/proc/remove_item_from_storage(atom/newLoc) //please use this if you're going to snowflake an item out of a obj/item/storage
if(!newLoc)
return 0
if(istype(loc,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = loc
if(istype(loc,/obj/item/storage))
var/obj/item/storage/S = loc
S.remove_from_storage(src,newLoc)
return 1
return 0
+2 -2
View File
@@ -14,10 +14,10 @@
src.pixel_x = rand(-6, 6)
return
/obj/item/ashtray/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/ashtray/attackby(obj/item/W as obj, mob/user as mob, params)
if(health < 1)
return
if(istype(W,/obj/item/weapon/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/match))
if(istype(W,/obj/item/cigbutt) || istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/match))
if(contents.len >= max_butts)
to_chat(user, "This ashtray is full.")
return
+3 -3
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"
@@ -41,7 +41,7 @@
attackby(W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/pen))
if(istype(W, /obj/item/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if(user.get_active_hand() != W)
return
@@ -56,7 +56,7 @@
src.name = "body bag"
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
return
else if(istype(W, /obj/item/weapon/wirecutters))
else if(istype(W, /obj/item/wirecutters))
to_chat(user, "You cut the tag off the bodybag")
src.name = "body bag"
src.overlays.Cut()
+7 -7
View File
@@ -31,18 +31,18 @@
icon_state = "candle[i][lit ? "_lit" : ""]"
/obj/item/candle/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/candle/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
if(WT.isOn()) //Badasses dont get blinded by lighting their candle with a welding tool
light("<span class='notice'>[user] casually lights [src] with [WT], what a badass.")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
else if(istype(W, /obj/item/lighter))
var/obj/item/lighter/L = W
if(L.lit)
light("<span class='notice'>After some fiddling, [user] manages to light [src] with [L].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
else if(istype(W, /obj/item/match))
var/obj/item/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights [src] with [M]</span>")
else if(istype(W, /obj/item/candle))
+23 -23
View File
@@ -1,39 +1,39 @@
//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 = "Happy pills"
desc = "Highly illegal drug. When you want to see the rainbow."
/obj/item/weapon/storage/pill_bottle/happy/New()
/obj/item/storage/pill_bottle/happy/New()
..()
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/weapon/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
new /obj/item/reagent_containers/food/pill/happy( src )
/obj/item/weapon/storage/pill_bottle/zoom
/obj/item/storage/pill_bottle/zoom
name = "Zoom pills"
desc = "Highly illegal drug. Trade brain for speed."
/obj/item/weapon/storage/pill_bottle/zoom/New()
/obj/item/storage/pill_bottle/zoom/New()
..()
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/weapon/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
new /obj/item/reagent_containers/food/pill/zoom( src )
/obj/item/weapon/reagent_containers/food/pill/random_drugs
/obj/item/reagent_containers/food/pill/random_drugs
name = "pill"
desc = "A cocktail of illicit designer drugs, who knows what might be in here."
/obj/item/weapon/reagent_containers/food/pill/random_drugs/New()
/obj/item/reagent_containers/food/pill/random_drugs/New()
..()
icon_state = "pill" + pick("2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20")
@@ -51,13 +51,13 @@
/obj/item/weapon/storage/pill_bottle/random_drug_bottle
/obj/item/storage/pill_bottle/random_drug_bottle
name = "pill bottle (???)"
desc = "Huh."
/obj/item/weapon/storage/pill_bottle/random_drug_bottle/New()
/obj/item/storage/pill_bottle/random_drug_bottle/New()
..()
for(var/i in 1 to 5)
new /obj/item/weapon/reagent_containers/food/pill/random_drugs(src)
new /obj/item/reagent_containers/food/pill/random_drugs(src)
+16 -16
View File
@@ -2,7 +2,7 @@
#define WAND_BOLT "Toggle Bolts"
#define WAND_EMERGENCY "Toggle Emergency Access"
/obj/item/weapon/door_remote
/obj/item/door_remote
icon_state = "gangtool-white"
item_state = "electronic"
icon = 'icons/obj/device.dmi'
@@ -11,18 +11,18 @@
w_class = WEIGHT_CLASS_TINY
var/mode = WAND_OPEN
var/region_access = 1 //See access.dm
var/obj/item/weapon/card/id/ID
var/obj/item/card/id/ID
/obj/item/weapon/door_remote/New()
/obj/item/door_remote/New()
..()
ID = new /obj/item/weapon/card/id
ID = new /obj/item/card/id
ID.access = get_region_accesses(region_access)
/obj/item/weapon/door_remote/Destroy()
/obj/item/door_remote/Destroy()
QDEL_NULL(ID)
return ..()
/obj/item/weapon/door_remote/attack_self(mob/user)
/obj/item/door_remote/attack_self(mob/user)
switch(mode)
if(WAND_OPEN)
mode = WAND_BOLT
@@ -32,7 +32,7 @@
mode = WAND_OPEN
to_chat(user, "Now in mode: [mode].")
/obj/item/weapon/door_remote/afterattack(obj/machinery/door/airlock/D, mob/user)
/obj/item/door_remote/afterattack(obj/machinery/door/airlock/D, mob/user)
if(!istype(D))
return
if(D.is_special)
@@ -65,48 +65,48 @@
else
to_chat(user, "<span class='danger'>[src] does not have access to this door.</span>")
/obj/item/weapon/door_remote/omni
/obj/item/door_remote/omni
name = "omni door remote"
desc = "This control wand can access any door on the station."
icon_state = "gangtool-yellow"
region_access = REGION_ALL
/obj/item/weapon/door_remote/captain
/obj/item/door_remote/captain
name = "command door remote"
icon_state = "gangtool-yellow"
region_access = REGION_COMMAND
/obj/item/weapon/door_remote/chief_engineer
/obj/item/door_remote/chief_engineer
name = "engineering door remote"
icon_state = "gangtool-orange"
region_access = REGION_ENGINEERING
/obj/item/weapon/door_remote/research_director
/obj/item/door_remote/research_director
name = "research door remote"
icon_state = "gangtool-purple"
region_access = REGION_RESEARCH
/obj/item/weapon/door_remote/head_of_security
/obj/item/door_remote/head_of_security
name = "security door remote"
icon_state = "gangtool-red"
region_access = REGION_SECURITY
/obj/item/weapon/door_remote/quartermaster
/obj/item/door_remote/quartermaster
name = "supply door remote"
icon_state = "gangtool-green"
region_access = REGION_SUPPLY
/obj/item/weapon/door_remote/chief_medical_officer
/obj/item/door_remote/chief_medical_officer
name = "medical door remote"
icon_state = "gangtool-blue"
region_access = REGION_MEDBAY
/obj/item/weapon/door_remote/civillian
/obj/item/door_remote/civillian
name = "civillian door remote"
icon_state = "gangtool-white"
region_access = REGION_GENERAL
/obj/item/weapon/door_remote/centcomm
/obj/item/door_remote/centcomm
name = "centcomm door remote"
desc = "High-ranking NT officials only."
icon_state = "gangtool-blue"
+9 -9
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/autopsy_scanner
/obj/item/autopsy_scanner
name = "autopsy scanner"
desc = "Extracts information on wounds."
icon = 'icons/obj/autopsy_scanner.dmi'
@@ -11,7 +11,7 @@
var/target_name = null
var/timeofdeath = null
/obj/item/weapon/autopsy_scanner/Destroy()
/obj/item/autopsy_scanner/Destroy()
QDEL_LIST_ASSOC_VAL(wdata)
return ..()
@@ -41,7 +41,7 @@
W.time_inflicted = time_inflicted
return W
/obj/item/weapon/autopsy_scanner/proc/add_data(obj/item/organ/external/O)
/obj/item/autopsy_scanner/proc/add_data(obj/item/organ/external/O)
if(!O.autopsy_data.len && !O.trace_chemicals.len)
return
@@ -74,22 +74,22 @@
if(O.trace_chemicals[V] > 0 && !chemtraces.Find(V))
chemtraces += V
/obj/item/weapon/autopsy_scanner/attackby(obj/item/weapon/P, mob/user)
if(istype(P, /obj/item/weapon/pen))
/obj/item/autopsy_scanner/attackby(obj/item/P, mob/user)
if(istype(P, /obj/item/pen))
var/dead_name = input("Insert name of deceased individual")
var/dead_rank = input("Insert rank of deceased individual")
var/dead_tod = input("Insert time of death")
var/dead_cause = input("Insert cause of death")
var/dead_chems = input("Insert any chemical traces")
var/dead_notes = input("Insert any relevant notes")
var/obj/item/weapon/paper/R = new(user.loc)
var/obj/item/paper/R = new(user.loc)
R.name = "Official Coroner's Report - [dead_name]"
R.info = "<b>NanoTrasen Science Station Cyberiad - Coroner's Report</b><br><br><b>Name of Deceased:</b> [dead_name]</br><br><b>Rank of Deceased:</b> [dead_rank]<br><br><b>Time of Death:</b> [dead_tod]<br><br><b>Cause of Death:</b> [dead_cause]<br><br><b>Trace Chemicals:</b> [dead_chems]<br><br><b>Additional Coroner's Notes:</b> [dead_notes]<br><br><b>Coroner's Signature:</b> <span class=\"paper_field\">"
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
sleep(10)
user.put_in_hands(R)
/obj/item/weapon/autopsy_scanner/attack_self(mob/user)
/obj/item/autopsy_scanner/attack_self(mob/user)
if(!wdata.len && !chemtraces.len)
return
@@ -166,14 +166,14 @@
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
sleep(10)
var/obj/item/weapon/paper/P = new(user.loc)
var/obj/item/paper/P = new(user.loc)
P.name = "Autopsy Data ([target_name])"
P.info = "<tt>[scan_data]</tt>"
P.overlays += "paper_words"
user.put_in_hands(P)
/obj/item/weapon/autopsy_scanner/attack(mob/living/carbon/human/M, mob/living/carbon/user)
/obj/item/autopsy_scanner/attack(mob/living/carbon/human/M, mob/living/carbon/user)
if(!istype(M))
return
@@ -11,7 +11,7 @@
origin_tech = "syndicate=4;magnets=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 = null
@@ -29,7 +29,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
@@ -25,7 +25,7 @@
return 1
/obj/item/device/flash/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/screwdriver))
if(istype(W, /obj/item/screwdriver))
if(battery_panel)
to_chat(user, "<span class='notice'>You close the battery compartment on the [src].</span>")
battery_panel = 0
@@ -33,7 +33,7 @@
to_chat(user, "<span class='notice'>You open the battery compartment on the [src].</span>")
battery_panel = 1
if(battery_panel && !overcharged)
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(istype(W, /obj/item/stock_parts/cell))
to_chat(user, "<span class='notice'>You jam the cell into battery compartment on the [src].</span>")
qdel(W)
overcharged = 1
@@ -166,7 +166,7 @@
reqs = list(/obj/item/stack/sheet/wood = 5,
/obj/item/stack/cable_coil = 6,
/obj/item/stack/tape_roll = 5)
tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters)
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
time = 80
/datum/crafting_recipe/guitar
@@ -175,7 +175,7 @@
reqs = list(/obj/item/stack/sheet/wood = 5,
/obj/item/stack/cable_coil = 6,
/obj/item/stack/tape_roll = 5)
tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters)
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
time = 80
/datum/crafting_recipe/eguitar
@@ -184,5 +184,5 @@
reqs = list(/obj/item/stack/sheet/metal = 5,
/obj/item/stack/cable_coil = 6,
/obj/item/stack/tape_roll = 5)
tools = list(/obj/item/weapon/screwdriver, /obj/item/weapon/wirecutters)
tools = list(/obj/item/screwdriver, /obj/item/wirecutters)
time = 80
@@ -15,7 +15,7 @@
var/effectchance = 33
var/recharging = 0
var/recharge_locked = 0
var/obj/item/weapon/stock_parts/micro_laser/diode //used for upgrading!
var/obj/item/stock_parts/micro_laser/diode //used for upgrading!
/obj/item/device/laser_pointer/red
@@ -39,7 +39,7 @@
/obj/item/device/laser_pointer/upgraded/New()
..()
diode = new /obj/item/weapon/stock_parts/micro_laser/ultra
diode = new /obj/item/stock_parts/micro_laser/ultra
@@ -47,7 +47,7 @@
laser_act(M, user)
/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params)
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.loc = src
@@ -56,7 +56,7 @@
else
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
else if(istype(W, /obj/item/weapon/screwdriver))
else if(istype(W, /obj/item/screwdriver))
if(diode)
to_chat(user, "<span class='notice'>You remove the [diode.name] from the [src].</span>")
diode.loc = get_turf(src.loc)
@@ -88,8 +88,8 @@
to_chat(user, "You insert a piece of glass into the [src.name]. You have [uses] lights remaining.")
return
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(!user.drop_item())
to_chat(user, "[L] is stuck to your hand!")
@@ -111,13 +111,13 @@
qdel(L)
return
if(istype(W, /obj/item/weapon/storage))
var/obj/item/weapon/storage/S = W
if(istype(W, /obj/item/storage))
var/obj/item/storage/S = W
var/found_lightbulbs = 0
for(var/obj/item/I in S.contents)
if(istype(I,/obj/item/weapon/light))
var/obj/item/weapon/light/L = I
if(istype(I,/obj/item/light))
var/obj/item/light/L = I
found_lightbulbs = 1
if(uses >= max_uses)
to_chat(user, "<span class='warning'>[src] is full!</span>")
@@ -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
@@ -198,7 +198,7 @@
target.status = LIGHT_EMPTY
target.update()
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
+1 -1
View File
@@ -20,7 +20,7 @@
/obj/item/device/paicard/relaymove(var/mob/user, var/direction)
if(user.stat || user.stunned)
return
var/obj/item/weapon/rig/rig = get_rig()
var/obj/item/rig/rig = get_rig()
if(istype(rig))
rig.forced_move(direction, user)
@@ -58,7 +58,7 @@
qdel(src)
/obj/item/device/pizza_bomb/attackby(var/obj/item/I, var/mob/user, params)
if(istype(I, /obj/item/weapon/wirecutters) && primed)
if(istype(I, /obj/item/wirecutters) && primed)
to_chat(user, "<span class='danger'>Oh God, what wire do you cut?!</span>")
var/chosen_wire = input(user, "OH GOD OH GOD", "WHAT WIRE?!") in wires
if(!in_range(src, usr) || issilicon(usr) || !usr.canmove || usr.restrained())
@@ -79,7 +79,7 @@
to_chat(user, "<span class='userdanger'>WRONG WIRE!</span>")
go_boom()
return
if(istype(I, /obj/item/weapon/wirecutters) && disarmed)
if(istype(I, /obj/item/wirecutters) && disarmed)
if(!in_range(user, src))
to_chat(user, "<span class='warning'>You can't see the box well enough to cut the wires out.</span>")
return
@@ -90,7 +90,7 @@
user.visible_message("<span class='notice'>[user] removes the insides of \the [src]!</span>")
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(src.loc)
C.amount = 3
new /obj/item/weapon/bombcore/miniature(src.loc)
new /obj/item/bombcore/miniature(src.loc)
new /obj/item/pizzabox(src.loc)
qdel(src)
return
+1 -1
View File
@@ -32,7 +32,7 @@
return ..()
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/screwdriver))
if(istype(I, /obj/item/screwdriver))
if(mode == 0)
var/turf/T = loc
if(isturf(T) && !T.intact)
@@ -28,7 +28,7 @@
master = null
return ..()
/obj/item/device/radio/electropack/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/device/radio/electropack/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/clothing/head/helmet))
if(!b_stat)
@@ -15,7 +15,7 @@
/obj/item/device/encryptionkey/New()
/obj/item/device/encryptionkey/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/device/encryptionkey/attackby(obj/item/W as obj, mob/user as mob, params)
/obj/item/device/encryptionkey/syndicate
icon_state = "cypherkey"
@@ -303,12 +303,12 @@
return FALSE
return ..()
/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(!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
if(!( istype(W, /obj/item/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
return
if(istype(W, /obj/item/weapon/screwdriver))
if(istype(W, /obj/item/screwdriver))
if(keyslot1 || keyslot2)
for(var/ch_name in channels)
@@ -133,7 +133,7 @@
return canhear_range
/obj/item/device/radio/intercom/attackby(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/device/radio/intercom/attackby(obj/item/W as obj, mob/user as mob)
switch(buildstage)
if(3)
if(iswirecutter(W) && b_stat && wires.IsAllCut())
@@ -181,12 +181,12 @@
if(do_after(user, 10 * W.toolspeed, target = src))
if(buildstage != 1)
return
new /obj/item/weapon/intercom_electronics(get_turf(src))
new /obj/item/intercom_electronics(get_turf(src))
to_chat(user, "<span class='notice'>The circuitboard pops out!</span>")
buildstage = 0
return 1
if(0)
if(istype(W,/obj/item/weapon/intercom_electronics))
if(istype(W,/obj/item/intercom_electronics))
playsound(get_turf(src), W.usesound, 50, 1)
if(do_after(user, 10 * W.toolspeed, target = src))
qdel(W)
@@ -194,7 +194,7 @@
buildstage = 1
return 1
if(iswelder(W))
var/obj/item/weapon/weldingtool/WT=W
var/obj/item/weldingtool/WT=W
playsound(get_turf(src), WT.usesound, 50, 1)
if(!WT.remove_fuel(3, user))
to_chat(user, "<span class='warning'>You're out of welding fuel.</span>")
@@ -226,7 +226,7 @@
on = A.powered(EQUIP) // set "on" to the power status
update_icon()
/obj/item/weapon/intercom_electronics
/obj/item/intercom_electronics
name = "intercom electronics"
icon = 'icons/obj/doors/door_assembly.dmi'
icon_state = "door_electronics"
@@ -168,7 +168,7 @@ var/global/list/default_medbay_channels = list(
return user.has_internal_radio_channel_access(user, internal_channels[freq])
/mob/proc/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
var/obj/item/weapon/card/id/I = user.get_id_card()
var/obj/item/card/id/I = user.get_id_card()
return has_access(list(), req_one_accesses, I ? I.GetAccess() : list())
/mob/living/silicon/has_internal_radio_channel_access(var/mob/user, var/list/req_one_accesses)
@@ -599,10 +599,10 @@ 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, params)
/obj/item/device/radio/attackby(obj/item/W as obj, mob/user as mob, params)
..()
user.set_machine(src)
if(!( istype(W, /obj/item/weapon/screwdriver) ))
if(!( istype(W, /obj/item/screwdriver) ))
return
b_stat = !( b_stat )
if(!istype(src, /obj/item/device/radio/beacon))
@@ -683,13 +683,13 @@ var/global/list/default_medbay_channels = list(
..()
set_frequency(ERT_FREQ)
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/device/radio/borg/attackby(obj/item/W as obj, mob/user as mob, params)
// ..()
user.set_machine(src)
if(!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
if(!( istype(W, /obj/item/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
return
if(istype(W, /obj/item/weapon/screwdriver))
if(istype(W, /obj/item/screwdriver))
if(keyslot)
+2 -2
View File
@@ -431,7 +431,7 @@ REAGENT SCANNER
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
sleep(50)
var/obj/item/weapon/paper/P = new(get_turf(src))
var/obj/item/paper/P = new(get_turf(src))
P.name = "Mass Spectrometer Scanner Report: [station_time_timestamp()]"
P.info = "<center><b>Mass Spectrometer</b></center><br><center>Data Analysis:</center><br><hr><br><b>Trace chemicals detected:</b><br>[datatoprint]<br><hr>"
@@ -501,7 +501,7 @@ REAGENT SCANNER
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
sleep(50)
var/obj/item/weapon/paper/P = new(get_turf(src))
var/obj/item/paper/P = new(get_turf(src))
P.name = "Reagent Scanner Report: [station_time_timestamp()]"
P.info = "<center><b>Reagent Scanner</b></center><br><center>Data Analysis:</center><br><hr><br><b>Chemical agents detected:</b><br> [datatoprint]<br><hr>"
@@ -228,7 +228,7 @@
to_chat(usr, "<span class='notice'>Transcript printed.</span>")
playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1)
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, mytape.storedinfo.len >= i, i++)
t1 += "[mytape.storedinfo[i]]<BR>"
@@ -297,12 +297,12 @@
/obj/item/device/tape/attackby(obj/item/I, mob/user)
if(ruined && istype(I, /obj/item/weapon/screwdriver))
if(ruined && istype(I, /obj/item/screwdriver))
to_chat(user, "<span class='notice'>You start winding the tape back in.</span>")
if(do_after(user, 120 * I.toolspeed, target = src))
to_chat(user, "<span class='notice'>You wound the tape back in!</span>")
fix()
else if(istype(I, /obj/item/weapon/pen))
else if(istype(I, /obj/item/pen))
var/title = stripped_input(usr,"What do you want to name the tape?", "Tape Renaming", name, MAX_NAME_LEN)
if(!title || !length(title))
name = initial(name)
@@ -4,8 +4,8 @@
icon_state = "valve_1"
item_state = "ttv"
desc = "Regulates the transfer of air between two tanks"
var/obj/item/weapon/tank/tank_one = null
var/obj/item/weapon/tank/tank_two = null
var/obj/item/tank/tank_one = null
var/obj/item/tank/tank_two = null
var/obj/item/device/assembly/attached_device = null
var/mob/living/attacher = null
var/valve_open = 0
@@ -23,7 +23,7 @@
return 1
/obj/item/device/transfer_valve/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/tank))
if(istype(I, /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
+3 -3
View File
@@ -285,9 +285,9 @@ var/list/world_uplinks = list()
return 0
//Refund proc for the borg teleporter (later I'll make a general refund proc if there is demand for it)
/obj/item/device/radio/uplink/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/antag_spawner/borg_tele))
var/obj/item/weapon/antag_spawner/borg_tele/S = W
/obj/item/device/radio/uplink/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/antag_spawner/borg_tele))
var/obj/item/antag_spawner/borg_tele/S = W
if(!S.used && !S.checking)
hidden_uplink.uses += S.TC_cost
qdel(S)
+1 -1
View File
@@ -10,7 +10,7 @@
burn_state = FLAMMABLE
var/rolled = FALSE
/obj/item/flag/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/flag/attackby(obj/item/W, mob/user, params)
..()
if(is_hot(W) && burn_state != ON_FIRE)
user.visible_message("<span class='notice'>[user] lights [src] with [W].</span>", "<span class='notice'>You light [src] with [W].</span>", "<span class='warning'>You hear a low whoosh.</span>")
+3 -3
View File
@@ -15,7 +15,7 @@
QDEL_NULL(air_contents)
return ..()
/obj/item/latexballon/proc/blow(obj/item/weapon/tank/tank, mob/user)
/obj/item/latexballon/proc/blow(obj/item/tank/tank, mob/user)
if(icon_state == "latexballon_bursted")
return
icon_state = "latexballon_blow"
@@ -55,8 +55,8 @@
return
/obj/item/latexballon/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/tank))
var/obj/item/weapon/tank/T = W
if(istype(W, /obj/item/tank))
var/obj/item/tank/T = W
blow(T, user)
return
if(is_sharp(W) || is_hot(W) || is_pointed(W))
+1 -1
View File
@@ -9,7 +9,7 @@
/obj/item/mouse_drag_pointer = MOUSE_ACTIVE_POINTER
/obj/item/weapon/beach_ball
/obj/item/beach_ball
icon = 'icons/misc/beach.dmi'
icon_state = "ball"
name = "beach ball"
@@ -7,9 +7,9 @@
toolspeed = 1
usesound = 'sound/items/Deconstruct.ogg'
/obj/item/mounted/frame/attackby(obj/item/weapon/W, mob/user)
/obj/item/mounted/frame/attackby(obj/item/W, mob/user)
..()
if(istype(W, /obj/item/weapon/wrench) && sheets_refunded)
if(istype(W, /obj/item/wrench) && sheets_refunded)
//new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded )
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(get_turf(src))
M.amount = sheets_refunded
+4 -4
View File
@@ -158,7 +158,7 @@ var/list/tape_roll_applications = list()
else
return 0
/obj/item/tape/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/tape/attackby(obj/item/W as obj, mob/user as mob, params)
breaktape(W, user)
/obj/item/tape/attack_hand(mob/user as mob)
@@ -168,12 +168,12 @@ var/list/tape_roll_applications = list()
spawn(200)
src.density = 1
else
breaktape(/obj/item/weapon/soap, user)//cant be null, and can't be sharp.
breaktape(/obj/item/soap, user)//cant be null, and can't be sharp.
/obj/item/tape/attack_alien(mob/user as mob)
breaktape(/obj/item/weapon/wirecutters,user)
breaktape(/obj/item/wirecutters,user)
/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
/obj/item/tape/proc/breaktape(obj/item/W as obj, mob/user as mob)
if(user.a_intent == INTENT_HELP && ((!is_pointed(W) && src.allowed(user))))
to_chat(user, "You can't break the [src] with that!")
return
+61 -61
View File
@@ -6,7 +6,7 @@
/obj/item/toy/random/New()
..()
var/list/types = list(/obj/item/weapon/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/weapon/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/list/types = list(/obj/item/gun/projectile/shotgun/toy/crossbow, /obj/item/toy/balloon,/obj/item/toy/spinningtoy,/obj/item/reagent_containers/spray/waterflower) + subtypesof(/obj/item/toy/prize)
var/T = pick(types)
new T(loc)
spawn(1)
@@ -44,11 +44,11 @@
// Could be anything!
// -------------------------------------
/obj/item/weapon/reagent_containers/glass/bottle/random_reagent
/obj/item/reagent_containers/glass/bottle/random_reagent
name = "unlabelled bottle"
// identify_probability = 0
/obj/item/weapon/reagent_containers/glass/bottle/random_reagent/New()
/obj/item/reagent_containers/glass/bottle/random_reagent/New()
..()
var/list/possible_chems = chemical_reagents_list.Copy()
possible_chems -= blocked_chems.Copy()
@@ -61,11 +61,11 @@
pixel_y = rand(-10, 10)
//Cuts out the food and drink reagents
/obj/item/weapon/reagent_containers/glass/bottle/random_chem
/obj/item/reagent_containers/glass/bottle/random_chem
name = "unlabelled chemical bottle"
// identify_probability = 0
/obj/item/weapon/reagent_containers/glass/bottle/random_chem/New()
/obj/item/reagent_containers/glass/bottle/random_chem/New()
..()
var/R = get_random_reagent_id()
if(rare_chemicals.Find(R))
@@ -76,11 +76,11 @@
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem
/obj/item/reagent_containers/glass/bottle/random_base_chem
name = "unlabelled chemical bottle"
// identify_probability = 0
/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem/New()
/obj/item/reagent_containers/glass/bottle/random_base_chem/New()
..()
var/datum/reagent/R = pick(base_chemicals)
reagents.add_reagent(R, rand(2, 6)*5)
@@ -88,11 +88,11 @@
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
/obj/item/reagent_containers/food/drinks/bottle/random_drink
name = "unlabelled drink"
icon = 'icons/obj/drinks.dmi'
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink/New()
/obj/item/reagent_containers/food/drinks/bottle/random_drink/New()
..()
var/list/possible_drinks = drinks.Copy()
if(prob(50))
@@ -105,11 +105,11 @@
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container
/obj/item/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container
name = "unlabelled drink?"
icon = 'icons/obj/drinks.dmi'
/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent/New()
/obj/item/reagent_containers/food/drinks/bottle/random_reagent/New()
..()
var/R = get_random_reagent_id()
@@ -124,11 +124,11 @@
spawn(0)
qdel(src)
/obj/item/weapon/storage/pill_bottle/random_meds
/obj/item/storage/pill_bottle/random_meds
name = "unlabelled pillbottle"
desc = "The sheer recklessness of this bottle's existence astounds you."
/obj/item/weapon/storage/pill_bottle/random_meds/New()
/obj/item/storage/pill_bottle/random_meds/New()
..()
var/i = 1
while(i < storage_slots)
@@ -136,7 +136,7 @@
if(prob(50))
possible_medicines += rare_medicines.Copy()
var/datum/reagent/R = pick(possible_medicines)
var/obj/item/weapon/reagent_containers/food/pill/P = new(src)
var/obj/item/reagent_containers/food/pill/P = new(src)
if(rare_medicines.Find(R))
P.reagents.add_reagent(R, 10)
@@ -160,22 +160,22 @@
/obj/structure/closet/crate/secure/unknownchemicals/New()
..()
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/weapon/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_chem(src)
new/obj/item/reagent_containers/glass/bottle/random_chem(src)
while(prob(50))
new/obj/item/weapon/reagent_containers/glass/bottle/random_reagent(src)
new/obj/item/reagent_containers/glass/bottle/random_reagent(src)
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
new/obj/item/storage/pill_bottle/random_meds(src)
while(prob(25))
new/obj/item/weapon/storage/pill_bottle/random_meds(src)
new/obj/item/storage/pill_bottle/random_meds(src)
/obj/structure/closet/crate/secure/chemicals
name = "chemical supply kit"
@@ -185,7 +185,7 @@
/obj/structure/closet/crate/secure/chemicals/New()
..()
for(var/chem in standard_chemicals)
var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src)
var/obj/item/reagent_containers/glass/bottle/B = new(src)
B.reagents.add_reagent(chem, B.volume)
if(prob(85))
var/datum/reagent/r = chemical_reagents_list[chem]
@@ -203,8 +203,8 @@
anchored = 0
New()
while(contents.len < 10)
var/flowertype = pick(/obj/item/weapon/grown/sunflower,/obj/item/weapon/grown/novaflower,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy,
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell,/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower)
var/flowertype = pick(/obj/item/grown/sunflower,/obj/item/grown/novaflower,/obj/item/reagent_containers/food/snacks/grown/poppy,
/obj/item/reagent_containers/food/snacks/grown/harebell,/obj/item/reagent_containers/food/snacks/grown/moonflower)
var/atom/movable/AM = new flowertype(src)
AM.pixel_x = rand(-10,10)
AM.pixel_y = rand(-5,5)
@@ -215,19 +215,19 @@
anchored = 0
New()
while(contents.len < 10)
var/ptype = pick(/obj/item/weapon/reagent_containers/food/snacks/grown/apple,/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/berries, /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot, /obj/item/weapon/reagent_containers/food/snacks/grown/cherries,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili, /obj/item/weapon/reagent_containers/food/snacks/grown/cocoapod,
/obj/item/weapon/reagent_containers/food/snacks/grown/corn, /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant,
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes, /obj/item/weapon/reagent_containers/food/snacks/grown/greengrapes,
/obj/item/weapon/reagent_containers/food/snacks/grown/icepepper, /obj/item/weapon/reagent_containers/food/snacks/grown/lemon,
/obj/item/weapon/reagent_containers/food/snacks/grown/lime, /obj/item/weapon/reagent_containers/food/snacks/grown/orange,
/obj/item/weapon/reagent_containers/food/snacks/grown/potato, /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin,
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans, /obj/item/weapon/reagent_containers/food/snacks/grown/sugarcane,
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato, /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon,
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat, /obj/item/weapon/reagent_containers/food/snacks/grown/whitebeet,
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/chanterelle, /obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/plumphelmet)
var/ptype = pick(/obj/item/reagent_containers/food/snacks/grown/apple,/obj/item/reagent_containers/food/snacks/grown/banana,
/obj/item/reagent_containers/food/snacks/grown/berries, /obj/item/reagent_containers/food/snacks/grown/cabbage,
/obj/item/reagent_containers/food/snacks/grown/carrot, /obj/item/reagent_containers/food/snacks/grown/cherries,
/obj/item/reagent_containers/food/snacks/grown/chili, /obj/item/reagent_containers/food/snacks/grown/cocoapod,
/obj/item/reagent_containers/food/snacks/grown/corn, /obj/item/reagent_containers/food/snacks/grown/eggplant,
/obj/item/reagent_containers/food/snacks/grown/grapes, /obj/item/reagent_containers/food/snacks/grown/greengrapes,
/obj/item/reagent_containers/food/snacks/grown/icepepper, /obj/item/reagent_containers/food/snacks/grown/lemon,
/obj/item/reagent_containers/food/snacks/grown/lime, /obj/item/reagent_containers/food/snacks/grown/orange,
/obj/item/reagent_containers/food/snacks/grown/potato, /obj/item/reagent_containers/food/snacks/grown/pumpkin,
/obj/item/reagent_containers/food/snacks/grown/soybeans, /obj/item/reagent_containers/food/snacks/grown/sugarcane,
/obj/item/reagent_containers/food/snacks/grown/tomato, /obj/item/reagent_containers/food/snacks/grown/watermelon,
/obj/item/reagent_containers/food/snacks/grown/wheat, /obj/item/reagent_containers/food/snacks/grown/whitebeet,
/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle, /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet)
var/obj/O = new ptype(src)
O.pixel_x = rand(-10,10)
O.pixel_y = rand(-5,5)
@@ -245,13 +245,13 @@
/obj/structure/closet/secure_closet/random_drinks/New()
..()
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
while(prob(25))
new/obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent(src)
new/obj/item/reagent_containers/food/drinks/bottle/random_reagent(src)
// -------------------------------------
@@ -265,14 +265,14 @@
name = "\improper Mysterious Crate"
desc = "What could it be?"
/obj/structure/largecrate/evil/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/crowbar))
/obj/structure/largecrate/evil/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/crowbar))
var/list/menace = pick( /mob/living/simple_animal/hostile/carp,/mob/living/simple_animal/hostile/faithless,/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/creature,/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
visible_message("<span class='warning'>Something falls out of the [src]!</span>")
var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc)
var/obj/item/grenade/clusterbuster/C = new(src.loc)
C.prime()
spawn(10)
new menace(src.loc)
@@ -296,8 +296,8 @@
name = "Schrodinger's Crate"
desc = "What happens if you open it?"
/obj/structure/largecrate/schrodinger/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/crowbar))
/obj/structure/largecrate/schrodinger/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/crowbar))
var/mob/living/simple_animal/pet/cat/Cat1 = new(loc)
Cat1.apply_damage(250)//,TOX)
Cat1.name = "Schrodinger's Cat"
@@ -316,17 +316,17 @@
// --------------------------------------
// Collen's box of wonder and mystery
// --------------------------------------
/obj/item/weapon/storage/box/grenades
/obj/item/storage/box/grenades
name = "tactical grenades"
desc = "A box with 6 tactical grenades."
icon_state = "flashbang"
var/list/grenadelist = list(/obj/item/weapon/grenade/chem_grenade/metalfoam, /obj/item/weapon/grenade/chem_grenade/incendiary,
/obj/item/weapon/grenade/chem_grenade/antiweed, /obj/item/weapon/grenade/chem_grenade/cleaner, /obj/item/weapon/grenade/chem_grenade/teargas,
/obj/item/weapon/grenade/chem_grenade/holywater, /obj/item/weapon/grenade/chem_grenade/meat,
/obj/item/weapon/grenade/chem_grenade/dirt, /obj/item/weapon/grenade/chem_grenade/lube, /obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/grenade/chem_grenade/drugs, /obj/item/weapon/grenade/chem_grenade/ethanol) // holy list batman
var/list/grenadelist = list(/obj/item/grenade/chem_grenade/metalfoam, /obj/item/grenade/chem_grenade/incendiary,
/obj/item/grenade/chem_grenade/antiweed, /obj/item/grenade/chem_grenade/cleaner, /obj/item/grenade/chem_grenade/teargas,
/obj/item/grenade/chem_grenade/holywater, /obj/item/grenade/chem_grenade/meat,
/obj/item/grenade/chem_grenade/dirt, /obj/item/grenade/chem_grenade/lube, /obj/item/grenade/smokebomb,
/obj/item/grenade/chem_grenade/drugs, /obj/item/grenade/chem_grenade/ethanol) // holy list batman
/obj/item/weapon/storage/box/grenades/New()
/obj/item/storage/box/grenades/New()
..()
var/nade1 = pick(grenadelist)
var/nade2 = pick(grenadelist)
+5 -5
View File
@@ -62,7 +62,7 @@
icon_state = "chest"
part = list("groin","chest")
var/wired = FALSE
var/obj/item/weapon/stock_parts/cell/cell = null
var/obj/item/stock_parts/cell/cell = null
/obj/item/robot_parts/chest/Destroy()
QDEL_NULL(cell)
@@ -144,7 +144,7 @@
..()
if(istype(W, /obj/item/stack/sheet/metal) && !l_arm && !r_arm && !l_leg && !r_leg && !chest && !head)
var/obj/item/stack/sheet/metal/M = W
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
var/obj/item/ed209_assembly/B = new /obj/item/ed209_assembly
B.forceMove(get_turf(src))
to_chat(user, "You armed the robot frame")
M.use(1)
@@ -319,7 +319,7 @@
else
to_chat(user, "<span class='warning'>The MMI must go in after everything else!</span>")
if(istype(W,/obj/item/weapon/pen))
if(istype(W,/obj/item/pen))
to_chat(user, "<span class='warning'>You need to use a multitool to name [src]!</span>")
return
@@ -374,7 +374,7 @@
/obj/item/robot_parts/chest/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(istype(W, /obj/item/stock_parts/cell))
if(cell)
to_chat(user, "<span class='notice'>You have already inserted a cell!</span>")
return
@@ -413,7 +413,7 @@
W.forceMove(src)
flash1 = W
to_chat(user, "<span class='notice'>You insert the flash into the eye socket!</span>")
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>")
new /mob/living/simple_animal/spiderbot(get_turf(loc))
user.drop_item()
@@ -127,13 +127,13 @@
icon_state = "cyborg_upgrade3"
origin_tech = "engineering=4;powerstorage=4;combat=4"
require_module = 1
module_type = /obj/item/weapon/robot_module/security
module_type = /obj/item/robot_module/security
/obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/R)
if(..())
return
var/obj/item/weapon/gun/energy/disabler/cyborg/T = locate() in R.module.modules
var/obj/item/gun/energy/disabler/cyborg/T = locate() in R.module.modules
if(!T)
to_chat(usr, "<span class='notice'>There's no disabler in this unit!</span>")
return
@@ -169,18 +169,18 @@
icon_state = "cyborg_upgrade3"
origin_tech = "engineering=4;materials=5"
require_module = 1
module_type = /obj/item/weapon/robot_module/miner
module_type = /obj/item/robot_module/miner
/obj/item/borg/upgrade/ddrill/action(mob/living/silicon/robot/R)
if(..())
return
for(var/obj/item/weapon/pickaxe/drill/cyborg/D in R.module.modules)
for(var/obj/item/pickaxe/drill/cyborg/D in R.module.modules)
qdel(D)
for(var/obj/item/weapon/shovel/S in R.module.modules)
for(var/obj/item/shovel/S in R.module.modules)
qdel(S)
R.module.modules += new /obj/item/weapon/pickaxe/drill/cyborg/diamond(R.module)
R.module.modules += new /obj/item/pickaxe/drill/cyborg/diamond(R.module)
R.module.rebuild()
return 1
@@ -191,16 +191,16 @@
icon_state = "cyborg_upgrade3"
origin_tech = "engineering=4;materials=4;bluespace=4"
require_module = 1
module_type = /obj/item/weapon/robot_module/miner
module_type = /obj/item/robot_module/miner
/obj/item/borg/upgrade/soh/action(mob/living/silicon/robot/R)
if(..())
return
for(var/obj/item/weapon/storage/bag/ore/cyborg/S in R.module.modules)
for(var/obj/item/storage/bag/ore/cyborg/S in R.module.modules)
qdel(S)
R.module.modules += new /obj/item/weapon/storage/bag/ore/holding(R.module)
R.module.modules += new /obj/item/storage/bag/ore/holding(R.module)
R.module.rebuild()
return 1
+2 -2
View File
@@ -33,8 +33,8 @@
attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
if(WT.remove_fuel(0, user))
overlays.Cut()
to_chat(usr, "You slice off [src]'s uneven chunks of aluminum and scorch marks.")
+2 -2
View File
@@ -38,8 +38,8 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
icon_state = "rods"
/obj/item/stack/rods/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(istype(W, /obj/item/weldingtool))
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>")
@@ -109,7 +109,7 @@ var/global/list/datum/stack_recipe/human_recipes = list( \
origin_tech = "biotech=4"
var/global/list/datum/stack_recipe/sinew_recipes = list ( \
new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \
new/datum/stack_recipe("sinew restraints", /obj/item/restraints/handcuffs/sinew, 1, on_floor = 1), \
)
/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null)
@@ -138,7 +138,7 @@ var/global/list/datum/stack_recipe/sinew_recipes = list ( \
//Step one - dehairing.
/obj/item/stack/sheet/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/stack/sheet/animalhide/attackby(obj/item/W as obj, mob/user as mob, params)
if(W.sharp)
user.visible_message("[user] starts cutting hair off \the [src].", "<span class='notice'>You start cutting the hair off \the [src]...</span>", "<span class='italics'>You hear the sound of a knife rubbing against flesh.</span>")
if(do_after(user, 50 * W.toolspeed, target = src))
@@ -15,7 +15,7 @@
/obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
..()
if(istype(O,/obj/item/weapon/wirecutters))
if(istype(O,/obj/item/wirecutters))
var/obj/item/stack/cable_coil/CC = new/obj/item/stack/cable_coil(user.loc)
CC.amount = 5
amount--
@@ -19,7 +19,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
null, \
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("Breakdown into sand", /obj/item/weapon/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
new/datum/stack_recipe("Breakdown into sand", /obj/item/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
)
var/global/list/datum/stack_recipe/silver_recipes = list ( \
@@ -82,7 +82,7 @@ var/global/list/datum/stack_recipe/bananium_recipes = list ( \
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
null, \
new/datum/stack_recipe("bananium computer frame", /obj/structure/computerframe/HONKputer, 50, time = 25, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("bananium grenade casing", /obj/item/weapon/grenade/bananade/casing, 4, on_floor = 1), \
new/datum/stack_recipe("bananium grenade casing", /obj/item/grenade/bananade/casing, 4, on_floor = 1), \
)
var/global/list/datum/stack_recipe/tranquillite_recipes = list ( \
@@ -164,7 +164,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
..()
recipes = plasma_recipes
/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W, mob/user, params)
if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma sheets ignited by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([x],[y],[z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[x];Y=[y];Z=[z]'>JMP</a>)",0,1)
log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])")
@@ -43,7 +43,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
)),
null,
new /datum/stack_recipe("rack parts", /obj/item/weapon/rack_parts),
new /datum/stack_recipe("rack parts", /obj/item/rack_parts),
new /datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = 1, on_floor = 1),
null,
new /datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = 1, on_floor = 1),
@@ -82,7 +82,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
new /datum/stack_recipe("mass driver button frame", /obj/item/mounted/frame/driver_button, 1, time = 50, one_per_turf = 0, on_floor = 1),
new /datum/stack_recipe("light switch frame", /obj/item/mounted/frame/light_switch, 1, time = 50, one_per_turf = 0, on_floor = 1),
null,
new /datum/stack_recipe("grenade casing", /obj/item/weapon/grenade/chem_grenade),
new /datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade),
new /datum/stack_recipe("light fixture frame", /obj/item/mounted/frame/light_fixture, 2),
new /datum/stack_recipe("small light fixture frame", /obj/item/mounted/frame/light_fixture/small, 1),
null,
@@ -167,14 +167,14 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
new /datum/stack_recipe("dresser", /obj/structure/dresser, 30, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("dog bed", /obj/structure/stool/bed/dogbed, 10, time = 10, one_per_turf = 1, on_floor = 1), \
new /datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40),
new /datum/stack_recipe("rifle stock", /obj/itemcrafting/stock, 10, time = 40),
new /datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("easel", /obj/structure/easel, 3, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("wooden buckler", /obj/item/weapon/shield/riot/buckler, 20, time = 40),
new /datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40),
new /datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),
new /datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),
new /datum/stack_recipe("baseball bat", /obj/item/weapon/melee/baseball_bat, 5, time = 15)
new /datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15)
)
/obj/item/stack/sheet/wood
@@ -198,17 +198,17 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
new/datum/stack_recipe("grey jumpsuit", /obj/item/clothing/under/color/grey, 3), \
new/datum/stack_recipe("black shoes", /obj/item/clothing/shoes/black, 2), \
null, \
new/datum/stack_recipe("backpack", /obj/item/weapon/storage/backpack, 4), \
new/datum/stack_recipe("dufflebag", /obj/item/weapon/storage/backpack/duffel, 6), \
new/datum/stack_recipe("backpack", /obj/item/storage/backpack, 4), \
new/datum/stack_recipe("dufflebag", /obj/item/storage/backpack/duffel, 6), \
null, \
new/datum/stack_recipe("plant bag", /obj/item/weapon/storage/bag/plants, 4), \
new/datum/stack_recipe("book bag", /obj/item/weapon/storage/bag/books, 4), \
new/datum/stack_recipe("mining satchel", /obj/item/weapon/storage/bag/ore, 4), \
new/datum/stack_recipe("chemistry bag", /obj/item/weapon/storage/bag/chemistry, 4), \
new/datum/stack_recipe("bio bag", /obj/item/weapon/storage/bag/bio, 4), \
new/datum/stack_recipe("plant bag", /obj/item/storage/bag/plants, 4), \
new/datum/stack_recipe("book bag", /obj/item/storage/bag/books, 4), \
new/datum/stack_recipe("mining satchel", /obj/item/storage/bag/ore, 4), \
new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4), \
new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4), \
null, \
new/datum/stack_recipe("rag", /obj/item/weapon/reagent_containers/glass/rag, 1), \
new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 3), \
new/datum/stack_recipe("rag", /obj/item/reagent_containers/glass/rag, 1), \
new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \
null, \
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \
new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \
@@ -236,16 +236,16 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
* Cardboard
*/
var/global/list/datum/stack_recipe/cardboard_recipes = list (
new /datum/stack_recipe("box", /obj/item/weapon/storage/box),
new /datum/stack_recipe("large box", /obj/item/weapon/storage/box/large, 4),
new /datum/stack_recipe("light tubes", /obj/item/weapon/storage/box/lights/tubes),
new /datum/stack_recipe("light bulbs", /obj/item/weapon/storage/box/lights/bulbs),
new /datum/stack_recipe("mouse traps", /obj/item/weapon/storage/box/mousetraps),
new /datum/stack_recipe("box", /obj/item/storage/box),
new /datum/stack_recipe("large box", /obj/item/storage/box/large, 4),
new /datum/stack_recipe("light tubes", /obj/item/storage/box/lights/tubes),
new /datum/stack_recipe("light bulbs", /obj/item/storage/box/lights/bulbs),
new /datum/stack_recipe("mouse traps", /obj/item/storage/box/mousetraps),
new /datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3),
new /datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg),
new /datum/stack_recipe("pizza box", /obj/item/pizzabox),
new /datum/stack_recipe("folder", /obj/item/weapon/folder),
new /datum/stack_recipe("cardboard tube", /obj/item/weapon/c_tube),
new /datum/stack_recipe("folder", /obj/item/folder),
new /datum/stack_recipe("cardboard tube", /obj/item/c_tube),
new /datum/stack_recipe("cardboard box", /obj/structure/closet/cardboard, 4),
new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5),
)
@@ -368,19 +368,19 @@ var/global/list/datum/stack_recipe/plastic_recipes = list ( \
new/datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = 1, on_floor = 1, time = 40), \
new/datum/stack_recipe("plastic crate", /obj/structure/closet/crate/plastic, 10, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("plastic ashtray", /obj/item/ashtray/plastic, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("plastic fork", /obj/item/weapon/kitchen/utensil/pfork, 1, on_floor = 1), \
new/datum/stack_recipe("plastic spoon", /obj/item/weapon/kitchen/utensil/pspoon, 1, on_floor = 1), \
new/datum/stack_recipe("plastic spork", /obj/item/weapon/kitchen/utensil/pspork, 1, on_floor = 1), \
new/datum/stack_recipe("plastic knife", /obj/item/weapon/kitchen/knife/plastic, 1, on_floor = 1), \
new/datum/stack_recipe("plastic bag", /obj/item/weapon/storage/bag/plasticbag, 3, on_floor = 1), \
new/datum/stack_recipe("bear mould", /obj/item/weapon/kitchen/mould/bear, 1, on_floor = 1), \
new/datum/stack_recipe("worm mould", /obj/item/weapon/kitchen/mould/worm, 1, on_floor = 1), \
new/datum/stack_recipe("bean mould", /obj/item/weapon/kitchen/mould/bean, 1, on_floor = 1), \
new/datum/stack_recipe("ball mould", /obj/item/weapon/kitchen/mould/ball, 1, on_floor = 1), \
new/datum/stack_recipe("cane mould", /obj/item/weapon/kitchen/mould/cane, 1, on_floor = 1), \
new/datum/stack_recipe("cash mould", /obj/item/weapon/kitchen/mould/cash, 1, on_floor = 1), \
new/datum/stack_recipe("coin mould", /obj/item/weapon/kitchen/mould/coin, 1, on_floor = 1), \
new/datum/stack_recipe("sucker mould", /obj/item/weapon/kitchen/mould/loli, 1, on_floor = 1), \
new/datum/stack_recipe("plastic fork", /obj/item/kitchen/utensil/pfork, 1, on_floor = 1), \
new/datum/stack_recipe("plastic spoon", /obj/item/kitchen/utensil/pspoon, 1, on_floor = 1), \
new/datum/stack_recipe("plastic spork", /obj/item/kitchen/utensil/pspork, 1, on_floor = 1), \
new/datum/stack_recipe("plastic knife", /obj/item/kitchen/knife/plastic, 1, on_floor = 1), \
new/datum/stack_recipe("plastic bag", /obj/item/storage/bag/plasticbag, 3, on_floor = 1), \
new/datum/stack_recipe("bear mould", /obj/item/kitchen/mould/bear, 1, on_floor = 1), \
new/datum/stack_recipe("worm mould", /obj/item/kitchen/mould/worm, 1, on_floor = 1), \
new/datum/stack_recipe("bean mould", /obj/item/kitchen/mould/bean, 1, on_floor = 1), \
new/datum/stack_recipe("ball mould", /obj/item/kitchen/mould/ball, 1, on_floor = 1), \
new/datum/stack_recipe("cane mould", /obj/item/kitchen/mould/cane, 1, on_floor = 1), \
new/datum/stack_recipe("cash mould", /obj/item/kitchen/mould/cash, 1, on_floor = 1), \
new/datum/stack_recipe("coin mould", /obj/item/kitchen/mould/coin, 1, on_floor = 1), \
new/datum/stack_recipe("sucker mould", /obj/item/kitchen/mould/loli, 1, on_floor = 1), \
)
/obj/item/stack/sheet/plastic
@@ -18,9 +18,9 @@
// Since the sheetsnatcher was consolidated into weapon/storage/bag we now use
// item/attackby() properly, making this unnecessary
/*/obj/item/stack/sheet/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/storage/bag/sheetsnatcher))
var/obj/item/weapon/storage/bag/sheetsnatcher/S = W
/*/obj/item/stack/sheet/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/storage/bag/sheetsnatcher))
var/obj/item/storage/bag/sheetsnatcher/S = W
if(!S.mode)
S.add(src,user)
else
+1 -1
View File
@@ -184,7 +184,7 @@
O.add_fingerprint(usr)
//BubbleWrap - so newly formed boxes are empty
if(istype(O, /obj/item/weapon/storage))
if(istype(O, /obj/item/storage))
for(var/obj/item/I in O)
qdel(I)
//BubbleWrap END
@@ -29,7 +29,7 @@
/datum/stack_recipe/cable_restraints
/datum/stack_recipe/cable_restraints/post_build(var/obj/item/stack/S, var/obj/result)
if(istype(result, /obj/item/weapon/restraints/handcuffs/cable))
if(istype(result, /obj/item/restraints/handcuffs/cable))
result.color = S.color
..()
@@ -12,7 +12,7 @@
/obj/item/stack/telecrystal/attack(mob/target as mob, mob/user as mob)
if(target == user) //You can't go around smacking people with crystals to find out if they have an uplink or not.
for(var/obj/item/weapon/implant/uplink/I in target)
for(var/obj/item/implant/uplink/I in target)
if(I && I.implanted)
I.hidden_uplink.uses +=1
use(1)
@@ -23,7 +23,7 @@
/obj/item/stack/tile/attackby(obj/item/W, mob/user, params)
if(iswelder(W))
var/obj/item/weapon/weldingtool/WT = W
var/obj/item/weldingtool/WT = W
if(is_hot(W) && !mineralType)
to_chat(user, "<span class='warning'>You can not reform this!</span>")
+13 -17
View File
@@ -67,7 +67,7 @@
return
/obj/item/toy/balloon/attackby(obj/O as obj, mob/user as mob, params)
if(istype(O, /obj/item/weapon/reagent_containers/glass) || istype(O, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
if(istype(O, /obj/item/reagent_containers/glass) || istype(O, /obj/item/reagent_containers/food/drinks/drinkingglass))
if(O.reagents)
if(O.reagents.total_volume < 1)
to_chat(user, "The [O] is empty.")
@@ -110,7 +110,6 @@
throw_speed = 4
throw_range = 20
force = 0
icon = 'icons/obj/weapons.dmi'
icon_state = "syndballoon"
item_state = "syndballoon"
w_class = WEIGHT_CLASS_BULKY
@@ -148,7 +147,6 @@
/obj/item/toy/sword
name = "toy sword"
desc = "A cheap, plastic replica of an energy sword. Realistic sounds! Ages 8 and up."
icon = 'icons/obj/weapons.dmi'
icon_state = "sword0"
item_state = "sword0"
var/active = FALSE
@@ -177,8 +175,8 @@
add_fingerprint(user)
return
// Copied from /obj/item/weapon/melee/energy/sword/attackby
/obj/item/toy/sword/attackby(obj/item/weapon/W, mob/living/user, params)
// Copied from /obj/item/melee/energy/sword/attackby
/obj/item/toy/sword/attackby(obj/item/W, mob/living/user, params)
..()
if(istype(W, /obj/item/toy/sword))
if(W == src)
@@ -189,7 +187,7 @@
to_chat(user, "<span class='notice'>\the [flags & NODROP ? src : W] is stuck to your hand, you can't attach it to \the [flags & NODROP ? W : src]!</span>")
else
to_chat(user, "<span class='notice'>You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool.</span>")
new /obj/item/weapon/twohanded/dualsaber/toy(user.loc)
new /obj/item/twohanded/dualsaber/toy(user.loc)
user.unEquip(W)
user.unEquip(src)
qdel(W)
@@ -198,7 +196,7 @@
/*
* Subtype of Double-Bladed Energy Swords
*/
/obj/item/weapon/twohanded/dualsaber/toy
/obj/item/twohanded/dualsaber/toy
name = "double-bladed toy sword"
desc = "A cheap, plastic replica of TWO energy swords. Double the fun!"
force = 0
@@ -211,16 +209,15 @@
attack_verb = list("attacked", "struck", "hit")
brightness_on = 0
/obj/item/weapon/twohanded/dualsaber/toy/hit_reaction()
/obj/item/twohanded/dualsaber/toy/hit_reaction()
return 0
/obj/item/weapon/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
/obj/item/twohanded/dualsaber/toy/IsReflect()//Stops Toy Dualsabers from reflecting energy projectiles
return 0
/obj/item/toy/katana
name = "replica katana"
desc = "Woefully underpowered in D20."
icon = 'icons/obj/weapons.dmi'
icon_state = "katana"
item_state = "katana"
flags = CONDUCT
@@ -405,7 +402,6 @@
/obj/item/toy/katana
name = "replica katana"
desc = "Woefully underpowered in D20."
icon = 'icons/obj/weapons.dmi'
icon_state = "katana"
item_state = "katana"
flags = CONDUCT
@@ -867,7 +863,7 @@ obj/item/toy/cards/deck/syndicate/black
item_state = "egg3" // It's the green egg in items_left/righthand
item_color = "green"
/obj/item/weapon/toddler
/obj/item/toddler
icon_state = "toddler"
name = "toddler"
desc = "This baby looks almost real. Wait, did it just burp?"
@@ -878,7 +874,7 @@ obj/item/toy/cards/deck/syndicate/black
//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"
@@ -1243,11 +1239,11 @@ obj/item/toy/cards/deck/syndicate/black
name = "Lich Miniature"
desc = "Murderboner extraordinaire."
icon_state = "lichcharacter"
/obj/item/weapon/storage/box/characters
/obj/item/storage/box/characters
name = "Box of Miniatures"
desc = "The nerd's best friends."
icon_state = "box"
/obj/item/weapon/storage/box/characters/New()
/obj/item/storage/box/characters/New()
..()
new /obj/item/toy/character/alien(src)
new /obj/item/toy/character/cleric(src)
@@ -1419,7 +1415,7 @@ obj/item/toy/cards/deck/syndicate/black
/*
* Rubber Chainsaw
*/
/obj/item/weapon/twohanded/toy/chainsaw
/obj/item/twohanded/toy/chainsaw
name = "Toy Chainsaw"
desc = "A toy chainsaw with a rubber edge. Ages 8 and up"
icon_state = "chainsaw0"
@@ -1430,7 +1426,7 @@ obj/item/toy/cards/deck/syndicate/black
wieldsound = 'sound/weapons/chainsawstart.ogg'
attack_verb = list("sawed", "cut", "hacked", "carved", "cleaved", "butchered", "felled", "timbered")
/obj/item/weapon/twohanded/toy/chainsaw/update_icon()
/obj/item/twohanded/toy/chainsaw/update_icon()
if(wielded)
icon_state = "chainsaw[wielded]"
else
+50 -50
View File
@@ -6,7 +6,7 @@ AI MODULES
// AI module
/obj/item/weapon/aiModule
/obj/item/aiModule
name = "AI Module"
icon = 'icons/obj/module.dmi'
icon_state = "std_mod"
@@ -22,7 +22,7 @@ AI MODULES
materials = list(MAT_GOLD=50)
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)
@@ -72,7 +72,7 @@ AI MODULES
to_chat(usr, "<span class='notice'>Upload complete. The robot's laws have been modified.</span>")
/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)
@@ -82,34 +82,34 @@ AI MODULES
to_chat(target, "[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)
/******************** Safeguard ********************/
/obj/item/weapon/aiModule/safeguard
/obj/item/aiModule/safeguard
name = "\improper 'Safeguard' AI module"
var/targetName = ""
desc = "A 'safeguard' AI module: 'Safeguard <name>. Individuals that threaten <name> are not crew and must be eliminated.'"
origin_tech = "programming=3;materials=3"
/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 = stripped_input(usr, "Please enter the name of the person to safeguard.", "Safeguard who?", user.name)
targetName = targName
desc = text("A 'safeguard' AI module: 'Safeguard []. Individuals that threaten [] are not crew and must be eliminated.'", 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 []. Individuals that threaten [] are not crew and must be eliminated.'", targetName, targetName)
to_chat(target, law)
@@ -117,25 +117,25 @@ AI MODULES
lawchanges.Add("The law specified [targetName]")
/******************** oneCrewMember ********************/
/obj/item/weapon/aiModule/oneCrewMember
/obj/item/aiModule/oneCrewMember
name = "\improper 'oneCrewMember' AI module"
var/targetName = ""
desc = "A 'one human' AI module: 'Only <name> is crew.'"
origin_tech = "programming=4;materials=4"
/obj/item/weapon/aiModule/oneCrewMember/attack_self(var/mob/user as mob)
/obj/item/aiModule/oneCrewMember/attack_self(var/mob/user as mob)
..()
var/targName = stripped_input(usr, "Please enter the name of the person who is the only crew.", "Who?", user.real_name)
targetName = targName
desc = text("A 'one human' AI module: 'Only [] is crew.'", targetName)
/obj/item/weapon/aiModule/oneCrewMember/install(var/obj/machinery/computer/C)
/obj/item/aiModule/oneCrewMember/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/oneCrewMember/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/oneCrewMember/addAdditionalLaws(var/mob/living/silicon/ai/target, var/mob/sender)
..()
var/law = "Only [targetName] is crew."
if(!is_special_character(target)) // Makes sure the AI isn't a traitor before changing their law 0. --NeoFite
@@ -149,59 +149,59 @@ AI MODULES
lawchanges.Add("The law specified [targetName], but the AI's existing law 0 cannot be overridden.")
/******************** 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 to be no longer considered crew, and is a threat to the station which must be neutralized.'"
origin_tech = "programming=4;materials=4" //made of gold
/obj/item/weapon/aiModule/protectStation/attack_self(var/mob/user as mob)
/obj/item/aiModule/protectStation/attack_self(var/mob/user as mob)
..()
/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 to be no longer considered crew, and is a threat to the station which must be neutralized."
to_chat(target, law)
target.add_supplied_law(5, 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 a crew members while preventing them from leaving.'"
origin_tech = "programming=3;biotech=2;materials=4"
/obj/item/weapon/aiModule/quarantine/attack_self(var/mob/user as mob)
/obj/item/aiModule/quarantine/attack_self(var/mob/user as mob)
..()
/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, anyone from leaving. It is impossible to harm anyone while preventing them from leaving."
to_chat(target, law)
target.add_supplied_law(8, law)
/******************** OxygenIsToxicToHumans ********************/
/obj/item/weapon/aiModule/oxygen
/obj/item/aiModule/oxygen
name = "\improper 'OxygenIsToxicToHumans' AI module"
desc = "A 'OxygenIsToxicToHumans' 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 = "programming=4;biotech=2;materials=4"
/obj/item/weapon/aiModule/oxygen/attack_self(var/mob/user as mob)
/obj/item/aiModule/oxygen/attack_self(var/mob/user as mob)
..()
/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."
to_chat(target, law)
target.add_supplied_law(9, 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 = "programming=4;materials=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
@@ -211,7 +211,7 @@ 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]"
to_chat(target, law)
@@ -220,20 +220,20 @@ AI MODULES
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
..()
/******************** 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 laws except for the core laws.'"
origin_tech = "programming=3;materials=2"
/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(!is_special_character(target))
@@ -245,12 +245,12 @@ AI MODULES
target.show_laws()
/******************** 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 = "programming=5;materials=4"
/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)
..()
if(!is_special_character(target))
target.set_zeroth_law("")
@@ -260,109 +260,109 @@ AI MODULES
target.clear_inherent_laws()
/******************** 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 = "programming=3;materials=4"
laws = new/datum/ai_laws/asimov
/******************** Crewsimov ********************/
/obj/item/weapon/aiModule/crewsimov // -- TLE
/obj/item/aiModule/crewsimov // -- TLE
name = "\improper 'Crewsimov' core AI module"
desc = "An 'Crewsimov' Core AI Module: 'Reconfigures the AI's core laws.'"
origin_tech = "programming=3;materials=4"
laws = new/datum/ai_laws/crewsimov
/******************** 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 = "programming=3;materials=4"
laws = new/datum/ai_laws/nanotrasen
/******************** 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 = "programming=3;materials=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 = "programming=3;materials=4"
laws = new/datum/ai_laws/drone
/******************** 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 = "programming=4"
laws = new/datum/ai_laws/robocop()
/****************** 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 = "programming=3;materials=4"
laws = new/datum/ai_laws/paladin
/****************** 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 = "programming=3;materials=4;syndicate=1"
laws = new/datum/ai_laws/tyrant()
/******************** 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 = "programming=4"
laws = new/datum/ai_laws/antimov()
/******************** 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 = "programming=5;materials=4"
/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 = stripped_input(usr, "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
..()
/******************** Hacked AI Module ******************/
/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 = "programming=5;materials=5;syndicate=5"
/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 = stripped_input(usr, "Please enter a new law for the AI.", "Freeform Law Entry", newlaw,MAX_MESSAGE_LEN)
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,14 +372,14 @@ 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
..()
/******************* Ion Module *******************/
/obj/item/weapon/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw
/obj/item/aiModule/toyAI // -- Incoming //No actual reason to inherit from ion boards here, either. *sigh* ~Miauw
name = "toy AI"
desc = "A little toy model AI core with real law uploading action!" //Note: subtle tell
icon = 'icons/obj/toy.dmi'
@@ -387,13 +387,13 @@ AI MODULES
origin_tech = "programming=6;materials=5;syndicate=6"
laws = list("")
/obj/item/weapon/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
/obj/item/aiModule/toyAI/transmitInstructions(var/mob/living/silicon/ai/target, var/mob/sender)
//..()
to_chat(target, "<span class='warning'>KRZZZT</span>")
target.add_ion_law(laws[1])
return laws[1]
/obj/item/weapon/aiModule/toyAI/attack_self(mob/user)
/obj/item/aiModule/toyAI/attack_self(mob/user)
laws[1] = generate_ion_law()
to_chat(user, "<span class='notice'>You press the button on [src].</span>")
playsound(user, 'sound/machines/click.ogg', 20, 1)
+25 -25
View File
@@ -2,7 +2,7 @@
CONTAINS:
RCD
*/
/obj/item/weapon/rcd
/obj/item/rcd
name = "rapid-construction-device (RCD)"
desc = "A device used to rapidly build and deconstruct walls, floors and airlocks."
icon = 'icons/obj/tools.dmi'
@@ -51,7 +51,7 @@ RCD
/obj/machinery/door/airlock/hatch = "Airtight Hatch",
/obj/machinery/door/airlock/maintenance_hatch = "Maintenance Hatch")
/obj/item/weapon/rcd/New()
/obj/item/rcd/New()
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
spark_system = new /datum/effect_system/spark_spread
spark_system.set_up(5, 0, src)
@@ -62,15 +62,15 @@ RCD
door_accesses_list[++door_accesses_list.len] = list("name" = get_access_desc(access), "id" = access, "enabled" = (access in door_accesses))
return
/obj/item/weapon/rcd/Destroy()
/obj/item/rcd/Destroy()
QDEL_NULL(spark_system)
rcd_list -= src
return ..()
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/rcd/attackby(obj/item/W, mob/user, params)
..()
if(istype(W, /obj/item/weapon/rcd_ammo))
var/obj/item/weapon/rcd_ammo/R = W
if(istype(W, /obj/item/rcd_ammo))
var/obj/item/rcd_ammo/R = W
if((matter + R.ammoamt) > max_matter)
to_chat(user, "<span class='notice'>The RCD can't hold any more matter-units.</span>")
return
@@ -84,21 +84,21 @@ RCD
return
/obj/item/weapon/rcd/attack_self(mob/user)
/obj/item/rcd/attack_self(mob/user)
//Change the mode
ui_interact(user)
/obj/item/weapon/rcd/attack_self_tk(mob/user)
/obj/item/rcd/attack_self_tk(mob/user)
ui_interact(user)
/obj/item/weapon/rcd/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/rcd/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = inventory_state)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "rcd.tmpl", "[name]", 450, 400, state = state)
ui.open()
ui.set_auto_update(1)
/obj/item/weapon/rcd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
/obj/item/rcd/ui_data(mob/user, ui_key = "main", datum/topic_state/state = inventory_state)
var/data[0]
data["mode"] = mode
data["door_type"] = door_type
@@ -119,7 +119,7 @@ RCD
return data
/obj/item/weapon/rcd/Topic(href, href_list, nowindow, state)
/obj/item/rcd/Topic(href, href_list, nowindow, state)
if(..())
return 1
@@ -150,7 +150,7 @@ RCD
if(istype(I, /obj/item/device/pda))
var/obj/item/device/pda/pda = I
I = pda.id
var/obj/item/weapon/card/id/ID = I
var/obj/item/card/id/ID = I
if(istype(ID) && ID && check_access(ID))
locked = 0
. = 1
@@ -179,11 +179,11 @@ RCD
if(temp_t)
door_name = temp_t
/obj/item/weapon/rcd/proc/activate()
/obj/item/rcd/proc/activate()
playsound(loc, usesound, 50, 1)
/obj/item/weapon/rcd/afterattack(atom/A, mob/user, proximity)
/obj/item/rcd/afterattack(atom/A, mob/user, proximity)
if(!proximity) return
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
return 0
@@ -353,7 +353,7 @@ RCD
SSnanoui.update_uis(src)
/obj/item/weapon/rcd/proc/useResource(var/amount, var/mob/user)
/obj/item/rcd/proc/useResource(var/amount, var/mob/user)
if(matter < amount)
return 0
matter -= amount
@@ -361,45 +361,45 @@ RCD
SSnanoui.update_uis(src)
return 1
/obj/item/weapon/rcd/proc/checkResource(var/amount, var/mob/user)
/obj/item/rcd/proc/checkResource(var/amount, var/mob/user)
return matter >= amount
/obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user)
/obj/item/rcd/borg/useResource(var/amount, var/mob/user)
if(!isrobot(user))
return 0
return user:cell:use(amount * 160)
/obj/item/weapon/rcd/borg/checkResource(var/amount, var/mob/user)
/obj/item/rcd/borg/checkResource(var/amount, var/mob/user)
if(!isrobot(user))
return 0
return user:cell:charge >= (amount * 160)
/obj/item/weapon/rcd/borg/New()
/obj/item/rcd/borg/New()
..()
desc = "A device used to rapidly build and deconstruct walls, floors and airlocks."
canRwall = 1
/obj/item/weapon/rcd/proc/detonate_pulse()
/obj/item/rcd/proc/detonate_pulse()
audible_message("<span class='danger'><b>[src] begins to vibrate and \
buzz loudly!</b></span>","<span class='danger'><b>[src] begins \
vibrating violently!</b></span>")
// 5 seconds to get rid of it
addtimer(src, "detonate_pulse_explode", 50)
/obj/item/weapon/rcd/proc/detonate_pulse_explode()
/obj/item/rcd/proc/detonate_pulse_explode()
explosion(src, 0, 0, 3, 1, flame_range = 1)
qdel(src)
/obj/item/weapon/rcd/preloaded
/obj/item/rcd/preloaded
matter = 100
/obj/item/weapon/rcd/combat
/obj/item/rcd/combat
name = "combat RCD"
max_matter = 500
matter = 500
canRwall = 1
/obj/item/weapon/rcd_ammo
/obj/item/rcd_ammo
name = "compressed matter cartridge"
desc = "Highly compressed matter for the RCD."
icon = 'icons/obj/ammo.dmi'
@@ -412,5 +412,5 @@ RCD
materials = list(MAT_METAL=16000, MAT_GLASS=8000)
var/ammoamt = 20
/obj/item/weapon/rcd_ammo/large
/obj/item/rcd_ammo/large
ammoamt = 100
+11 -11
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/twohanded/rcl
/obj/item/twohanded/rcl
name = "rapid cable layer (RCL)"
desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables."
icon = 'icons/obj/tools.dmi'
@@ -16,7 +16,7 @@
var/obj/structure/cable/last = null
var/obj/item/stack/cable_coil/loaded = null
/obj/item/weapon/twohanded/rcl/attackby(obj/item/weapon/W, mob/user)
/obj/item/twohanded/rcl/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if(!loaded)
@@ -56,18 +56,18 @@
else
..()
/obj/item/weapon/twohanded/rcl/examine(mob/user)
/obj/item/twohanded/rcl/examine(mob/user)
..()
if(loaded)
to_chat(user, "<span class='info'>It contains [loaded.amount]/[max_amount] cables.</span>")
/obj/item/weapon/twohanded/rcl/Destroy()
/obj/item/twohanded/rcl/Destroy()
QDEL_NULL(loaded)
last = null
active = 0
return ..()
/obj/item/weapon/twohanded/rcl/update_icon()
/obj/item/twohanded/rcl/update_icon()
if(!loaded)
icon_state = "rcl-0"
item_state = "rcl-0"
@@ -86,7 +86,7 @@
icon_state = "rcl-0"
item_state = "rcl-0"
/obj/item/weapon/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
update_icon()
if(!loaded || !loaded.amount)
if(loud)
@@ -99,12 +99,12 @@
return 1
return 0
/obj/item/weapon/twohanded/rcl/dropped(mob/wearer)
/obj/item/twohanded/rcl/dropped(mob/wearer)
..()
active = 0
last = null
/obj/item/weapon/twohanded/rcl/attack_self(mob/user)
/obj/item/twohanded/rcl/attack_self(mob/user)
..()
active = wielded
if(!active)
@@ -115,11 +115,11 @@
last = C
break
/obj/item/weapon/twohanded/rcl/on_mob_move(direct, mob/user)
/obj/item/twohanded/rcl/on_mob_move(direct, mob/user)
if(active)
trigger(user)
/obj/item/weapon/twohanded/rcl/proc/trigger(mob/user)
/obj/item/twohanded/rcl/proc/trigger(mob/user)
if(is_empty(user, 0))
to_chat(user, "<span class='warning'>\The [src] is empty!</span>")
return
@@ -141,7 +141,7 @@
last = loaded.place_turf(get_turf(loc), user, turn(user.dir, 180))
is_empty(user) //If we've run out, display message
/obj/item/weapon/twohanded/rcl/pre_loaded/New() //Comes preloaded with cable, for testing stuff
/obj/item/twohanded/rcl/pre_loaded/New() //Comes preloaded with cable, for testing stuff
..()
loaded = new()
loaded.max_amount = max_amount
+14 -14
View File
@@ -3,7 +3,7 @@ CONTAINS:
RSF
*/
/obj/item/weapon/rsf
/obj/item/rsf
name = "\improper Rapid-Service-Fabricator"
desc = "A device used to rapidly deploy service items."
icon = 'icons/obj/tools.dmi'
@@ -16,24 +16,24 @@ RSF
w_class = WEIGHT_CLASS_NORMAL
var/list/configured_items = list()
/obj/item/weapon/rsf/New()
/obj/item/rsf/New()
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
// configured_items[ID_NUMBER] = list("Human-readable name", price in energy, /type/path)
configured_items[++configured_items.len] = list("Dosh", 50, /obj/item/stack/spacecash/c10)
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass)
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/weapon/paper)
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/weapon/pen)
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/weapon/storage/pill_bottle/dice)
configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/reagent_containers/food/drinks/drinkingglass)
configured_items[++configured_items.len] = list("Paper", 50, /obj/item/paper)
configured_items[++configured_items.len] = list("Pen", 50, /obj/item/pen)
configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/storage/pill_bottle/dice)
configured_items[++configured_items.len] = list("Cigarette", 50, /obj/item/clothing/mask/cigarette)
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles)
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/weapon/reagent_containers/food/snacks/donut)
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/weapon/reagent_containers/food/drinks/chicken_soup)
configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/weapon/reagent_containers/food/snacks/tofuburger)
configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/reagent_containers/food/snacks/chinese/newdles)
configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/reagent_containers/food/snacks/donut)
configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/reagent_containers/food/drinks/chicken_soup)
configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/reagent_containers/food/snacks/tofuburger)
return
/obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/rsf/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/weapon/rcd_ammo))
if(istype(W, /obj/item/rcd_ammo))
if((matter + 10) > 30)
to_chat(user, "The RSF cant hold any more matter.")
return
@@ -44,7 +44,7 @@ RSF
desc = "A RSF. It currently holds [matter]/30 fabrication-units."
return
/obj/item/weapon/rsf/attack_self(mob/user as mob)
/obj/item/rsf/attack_self(mob/user as mob)
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
if(mode == configured_items.len)
mode = 1
@@ -53,7 +53,7 @@ RSF
to_chat(user, "Changed dispensing mode to '" + configured_items[mode][1] + "'")
/obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity)
/obj/item/rsf/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return
if(!(istype(A, /obj/structure/table) || istype(A, /turf/simulated/floor)))
return
@@ -1,6 +1,6 @@
//This file contains xenoborg specic weapons.
/obj/item/weapon/melee/energy/alien/claws
/obj/item/melee/energy/alien/claws
name = "energy claws"
desc = "A set of alien energy claws."
icon = 'icons/mob/alien.dmi'
@@ -18,19 +18,19 @@
attack_verb_on = list()
//Bottles for borg liquid squirters. PSSH PSSH
/obj/item/weapon/reagent_containers/spray/alien
/obj/item/reagent_containers/spray/alien
name = "liquid synthesizer"
desc = "squirts alien liquids."
icon = 'icons/mob/alien.dmi'
icon_state = "borg-default"
/obj/item/weapon/reagent_containers/spray/alien/smoke
/obj/item/reagent_containers/spray/alien/smoke
name = "smoke synthesizer"
desc = "squirts smokey liquids."
icon = 'icons/mob/alien.dmi'
icon_state = "borg-spray-smoke"
/obj/item/weapon/reagent_containers/spray/alien/smoke/afterattack(atom/A as mob|obj, mob/user as mob)
/obj/item/reagent_containers/spray/alien/smoke/afterattack(atom/A as mob|obj, mob/user as mob)
if(istype(A, /obj/structure/reagent_dispensers) && get_dist(src,A) <= 1)
if(!A.reagents.total_volume && A.reagents)
to_chat(user, "<span class='notice'>\The [A] is empty.</span>")
@@ -45,13 +45,13 @@
smoke.start()
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 2)
/obj/item/weapon/reagent_containers/spray/alien/acid
/obj/item/reagent_containers/spray/alien/acid
name = "acid synthesizer"
desc = "squirts burny liquids."
icon = 'icons/mob/alien.dmi'
icon_state = "borg-spray-acid"
/obj/item/weapon/reagent_containers/spray/alien/stun
/obj/item/reagent_containers/spray/alien/stun
name = "paralytic toxin synthesizer"
desc = "squirts viagra."
icon = 'icons/mob/alien.dmi'
@@ -1,5 +1,5 @@
/obj/item/weapon/bee_briefcase
/obj/item/bee_briefcase
name = "briefcase"
desc = "This briefcase has easy-release clasps and smells vaguely of honey and blood..."
description_antag = "A briefcase filled with deadly bees, you should inject this with a syringe of your own blood before opening it."
@@ -18,11 +18,11 @@
var/sound_file = 'sound/misc/briefcase_bees.ogg'
var/next_sound = 0
/obj/item/weapon/bee_briefcase/Destroy()
/obj/item/bee_briefcase/Destroy()
blood_list.Cut()
return ..()
/obj/item/weapon/bee_briefcase/examine(mob/user)
/obj/item/bee_briefcase/examine(mob/user)
..()
if(loc == user)
if(bees_left)
@@ -30,9 +30,9 @@
else
to_chat(user, "<span class='danger'>The bees are gone... Colony collapse disorder?</span>")
/obj/item/weapon/bee_briefcase/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = I
/obj/item/bee_briefcase/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers/syringe))
var/obj/item/reagent_containers/syringe/S = I
if(!bees_left)
to_chat(user, "<span class='warning'>The briefcase is empty, so there is no point in injecting something into it.</span>")
return
@@ -50,12 +50,12 @@
to_chat(user, "<span class='warning'>The buzzing inside the briefcase swells momentarily, then returns to normal. Guess it was too cramped...</span>")
S.reagents.clear_reagents()
S.update_icon()
else if(istype(I, /obj/item/weapon/reagent_containers/spray/pestspray))
else if(istype(I, /obj/item/reagent_containers/spray/pestspray))
bees_left = max(0, (bees_left - 6))
to_chat(user, "You spray [I] into [src].")
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
/obj/item/weapon/bee_briefcase/attack_self(mob/user as mob)
/obj/item/bee_briefcase/attack_self(mob/user as mob)
if(!bees_left)
to_chat(user, "<span class='danger'>The lack of all and any bees at this event has been somewhat of a let-down...</span>")
return
+88 -88
View File
@@ -11,7 +11,7 @@
/*
* DATA CARDS - Used for the teleporter
*/
/obj/item/weapon/card
/obj/item/card
name = "card"
desc = "A card."
icon = 'icons/obj/card.dmi'
@@ -20,7 +20,7 @@
var/list/files = list( )
/obj/item/weapon/card/data
/obj/item/card/data
name = "data card"
desc = "A disk containing data."
icon_state = "data"
@@ -29,7 +29,7 @@
var/special = null
item_state = "card-id"
/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
@@ -41,7 +41,7 @@
src.add_fingerprint(usr)
return
/obj/item/weapon/card/data/clown
/obj/item/card/data/clown
name = "coordinates to clown planet"
icon_state = "data"
item_state = "card-id"
@@ -55,14 +55,14 @@
* ID CARDS
*/
/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"
item_state = "card-id"
origin_tech = "magnets=2;syndicate=2"
/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"
@@ -70,16 +70,16 @@
origin_tech = "magnets=2;syndicate=2"
flags = NOBLUDGEON
/obj/item/weapon/card/emag/attack()
/obj/item/card/emag/attack()
return
/obj/item/weapon/card/emag/afterattack(atom/target, mob/user, proximity)
/obj/item/card/emag/afterattack(atom/target, mob/user, proximity)
var/atom/A = target
if(!proximity)
return
A.emag_act(user)
/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"
@@ -105,16 +105,16 @@
var/dat
var/stamped = 0
var/obj/item/weapon/card/id/guest/guest_pass = null // Guest pass attached to the ID
var/obj/item/card/id/guest/guest_pass = null // Guest pass attached to the ID
/obj/item/weapon/card/id/New()
/obj/item/card/id/New()
..()
spawn(30)
if(ishuman(loc) && blood_type == "\[UNSET\]")
var/mob/living/carbon/human/H = loc
SetOwnerInfo(H)
/obj/item/weapon/card/id/examine(mob/user)
/obj/item/card/id/examine(mob/user)
if(..(user, 1))
show(usr)
else
@@ -130,7 +130,7 @@
to_chat(user, "<span class='notice'>[get_access_desc(A)].</span>")
to_chat(user, "<span class='notice'>Issuing reason: [guest_pass.reason].</span>")
/obj/item/weapon/card/id/proc/show(mob/user as mob)
/obj/item/card/id/proc/show(mob/user as mob)
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
assets.send(user)
@@ -140,7 +140,7 @@
popup.open()
return
/obj/item/weapon/card/id/attack_self(mob/user as mob)
/obj/item/card/id/attack_self(mob/user as mob)
user.visible_message("[user] shows you: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]",\
"You flash your ID card: [bicon(src)] [src.name]. The assignment on the card: [src.assignment]")
if(mining_points)
@@ -148,10 +148,10 @@
src.add_fingerprint(user)
return
/obj/item/weapon/card/id/proc/UpdateName()
/obj/item/card/id/proc/UpdateName()
name = "[src.registered_name]'s ID Card ([src.assignment])"
/obj/item/weapon/card/id/proc/SetOwnerInfo(var/mob/living/carbon/human/H)
/obj/item/card/id/proc/SetOwnerInfo(var/mob/living/carbon/human/H)
if(!H || !H.dna)
return
@@ -163,7 +163,7 @@
RebuildHTML()
/obj/item/weapon/card/id/proc/RebuildHTML()
/obj/item/card/id/proc/RebuildHTML()
var/photo_front = "'data:image/png;base64,[icon2base64(icon(photo, dir = SOUTH))]'"
var/photo_side = "'data:image/png;base64,[icon2base64(icon(photo, dir = WEST))]'"
@@ -178,15 +178,15 @@
<td align = center valign = top>Photo:<br><img src=[photo_front] height=80 width=80 border=4>
<img src=[photo_side] height=80 width=80 border=4></td></tr></table>"}
/obj/item/weapon/card/id/GetAccess()
/obj/item/card/id/GetAccess()
if(!guest_pass)
return access
return access | guest_pass.GetAccess()
/obj/item/weapon/card/id/GetID()
/obj/item/card/id/GetID()
return src
/obj/item/weapon/card/id/proc/getRankAndAssignment()
/obj/item/card/id/proc/getRankAndAssignment()
var/jobnamedata = ""
if(rank)
jobnamedata += rank
@@ -194,21 +194,21 @@
jobnamedata += " (" + assignment + ")"
return jobnamedata
/obj/item/weapon/card/id/proc/is_untrackable()
/obj/item/card/id/proc/is_untrackable()
return untrackable
/obj/item/weapon/card/id/proc/update_label(newname, newjob)
/obj/item/card/id/proc/update_label(newname, newjob)
if(newname || newjob)
name = "[(!newname) ? "identification card" : "[newname]'s ID Card"][(!newjob) ? "" : " ([newjob])"]"
return
name = "[(!registered_name) ? "identification card" : "[registered_name]'s ID Card"][(!assignment) ? "" : " ([assignment])"]"
/obj/item/weapon/card/id/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/card/id/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/weapon/id_decal/))
var/obj/item/weapon/id_decal/decal = W
if(istype(W, /obj/item/id_decal/))
var/obj/item/id_decal/decal = W
to_chat(user, "You apply [decal] to [src].")
if(decal.override_name)
name = decal.decal_name
@@ -219,7 +219,7 @@
qdel(W)
return
else if(istype (W,/obj/item/weapon/stamp))
else if(istype (W,/obj/item/stamp))
if(!stamped)
dat+="<img src=large_[W.icon_state].png>"
stamped = 1
@@ -227,10 +227,10 @@
else
to_chat(user, "This ID has already been stamped!")
else if(istype(W, /obj/item/weapon/card/id/guest))
if(istype(src, /obj/item/weapon/card/id/guest))
else if(istype(W, /obj/item/card/id/guest))
if(istype(src, /obj/item/card/id/guest))
return
var/obj/item/weapon/card/id/guest/G = W
var/obj/item/card/id/guest/G = W
if(world.time > G.expiration_time)
to_chat(user, "There's no point, the guest pass has expired.")
return
@@ -245,7 +245,7 @@
G.loc = src
guest_pass = G
/obj/item/weapon/card/id/verb/remove_guest_pass()
/obj/item/card/id/verb/remove_guest_pass()
set name = "Remove Guest Pass"
set category = "Object"
set src in range(0)
@@ -260,7 +260,7 @@
else
to_chat(usr, "<span class='warning'>There is no guest pass attached to this ID</span>")
/obj/item/weapon/card/id/serialize()
/obj/item/card/id/serialize()
var/list/data = ..()
data["sex"] = sex
@@ -275,7 +275,7 @@
data["mining"] = mining_points
return data
/obj/item/weapon/card/id/deserialize(list/data)
/obj/item/card/id/deserialize(list/data)
sex = data["sex"]
age = data["age"]
blood_type = data["btype"]
@@ -291,44 +291,44 @@
RebuildHTML()
..()
/obj/item/weapon/card/id/silver
/obj/item/card/id/silver
name = "identification card"
desc = "A silver card which shows honour and dedication."
icon_state = "silver"
item_state = "silver_id"
/obj/item/weapon/card/id/gold
/obj/item/card/id/gold
name = "identification card"
desc = "A golden card which shows power and might."
icon_state = "gold"
item_state = "gold_id"
/obj/item/weapon/card/id/syndicate
/obj/item/card/id/syndicate
name = "agent card"
var/list/initial_access = list(access_maint_tunnels, access_syndicate, access_external_airlocks)
origin_tech = "syndicate=1"
var/registered_user = null
untrackable = 1
/obj/item/weapon/card/id/syndicate/New()
/obj/item/card/id/syndicate/New()
access = initial_access.Copy()
..()
/obj/item/weapon/card/id/syndicate/vox
/obj/item/card/id/syndicate/vox
name = "agent card"
initial_access = list(access_maint_tunnels, access_vox, access_external_airlocks)
/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
if(istype(user, /mob/living) && user.mind)
if(user.mind.special_role)
to_chat(usr, "<span class='notice'>The card's microscanners activate as you pass it over \the [I], copying its access.</span>")
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
/obj/item/weapon/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H)//get_id_photo wouldn't work correctly
/obj/item/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H)//get_id_photo wouldn't work correctly
if(!istype(H))
return
var/storedDir = H.dir //don't want to lose track of this
@@ -347,7 +347,7 @@
return faked
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
/obj/item/card/id/syndicate/attack_self(mob/user as mob)
if(!src.registered_name)
var t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
if(!t)
@@ -553,7 +553,7 @@
else
..()
/obj/item/weapon/card/id/syndicate_command
/obj/item/card/id/syndicate_command
name = "syndicate ID card"
desc = "An ID straight from the Syndicate."
registered_name = "Syndicate"
@@ -562,7 +562,7 @@
untrackable = 1
access = list(access_syndicate, access_external_airlocks)
/obj/item/weapon/card/id/captains_spare
/obj/item/card/id/captains_spare
name = "captain's spare ID"
desc = "The spare ID of the captain."
icon_state = "gold"
@@ -570,12 +570,12 @@
registered_name = "Captain"
assignment = "Captain"
/obj/item/weapon/card/id/captains_spare/New()
/obj/item/card/id/captains_spare/New()
var/datum/job/captain/J = new/datum/job/captain
access = J.get_access()
..()
/obj/item/weapon/card/id/admin
/obj/item/card/id/admin
name = "admin ID card"
icon_state = "admin"
item_state = "gold_id"
@@ -583,26 +583,26 @@
assignment = "Testing Shit"
untrackable = 1
/obj/item/weapon/card/id/admin/New()
/obj/item/card/id/admin/New()
access = get_absolutely_all_accesses()
..()
/obj/item/weapon/card/id/centcom
/obj/item/card/id/centcom
name = "central command ID card"
desc = "An ID straight from Central Command."
icon_state = "centcom"
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/nanotrasen
/obj/item/card/id/nanotrasen
name = "nanotrasen ID card"
icon_state = "nanotrasen"
/obj/item/weapon/card/id/prisoner
/obj/item/card/id/prisoner
name = "prisoner ID card"
desc = "You are a number, you are not a free man."
icon_state = "prisoner"
@@ -612,81 +612,81 @@
var/goal = 0 //How far from freedom?
var/points = 0
/obj/item/weapon/card/id/prisoner/attack_self(mob/user as mob)
/obj/item/card/id/prisoner/attack_self(mob/user as mob)
to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.")
/obj/item/weapon/card/id/prisoner/one
/obj/item/card/id/prisoner/one
name = "Prisoner #13-001"
registered_name = "Prisoner #13-001"
/obj/item/weapon/card/id/prisoner/two
/obj/item/card/id/prisoner/two
name = "Prisoner #13-002"
registered_name = "Prisoner #13-002"
/obj/item/weapon/card/id/prisoner/three
/obj/item/card/id/prisoner/three
name = "Prisoner #13-003"
registered_name = "Prisoner #13-003"
/obj/item/weapon/card/id/prisoner/four
/obj/item/card/id/prisoner/four
name = "Prisoner #13-004"
registered_name = "Prisoner #13-004"
/obj/item/weapon/card/id/prisoner/five
/obj/item/card/id/prisoner/five
name = "Prisoner #13-005"
registered_name = "Prisoner #13-005"
/obj/item/weapon/card/id/prisoner/six
/obj/item/card/id/prisoner/six
name = "Prisoner #13-006"
registered_name = "Prisoner #13-006"
/obj/item/weapon/card/id/prisoner/seven
/obj/item/card/id/prisoner/seven
name = "Prisoner #13-007"
registered_name = "Prisoner #13-007"
/obj/item/weapon/card/id/prisoner/random
/obj/item/weapon/card/id/prisoner/random/New()
/obj/item/card/id/prisoner/random
/obj/item/card/id/prisoner/random/New()
var/random_number = "#[rand(0, 99)]-[rand(0, 999)]"
name = "Prisoner [random_number]"
registered_name = name
/obj/item/weapon/card/id/salvage_captain
/obj/item/card/id/salvage_captain
name = "Captain's ID"
registered_name = "Captain"
icon_state = "centcom"
desc = "Finders, keepers."
access = list(access_salvage_captain)
/obj/item/weapon/card/id/medical
/obj/item/card/id/medical
name = "Medical ID"
registered_name = "Medic"
icon_state = "medical"
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom)
/obj/item/weapon/card/id/security
/obj/item/card/id/security
name = "Security ID"
registered_name = "Officer"
icon_state = "security"
access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons)
/obj/item/weapon/card/id/research
/obj/item/card/id/research
name = "Research ID"
registered_name = "Scientist"
icon_state = "research"
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch, access_mineral_storeroom)
/obj/item/weapon/card/id/supply
/obj/item/card/id/supply
name = "Supply ID"
registered_name = "Cargonian"
icon_state = "cargo"
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station, access_mineral_storeroom)
/obj/item/weapon/card/id/engineering
/obj/item/card/id/engineering
name = "Engineering ID"
registered_name = "Engineer"
icon_state = "engineering"
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
/obj/item/weapon/card/id/hos
/obj/item/card/id/hos
name = "Head of Security ID"
registered_name = "HoS"
icon_state = "HoS"
@@ -695,7 +695,7 @@
access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting,
access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_weapons)
/obj/item/weapon/card/id/cmo
/obj/item/card/id/cmo
name = "Chief Medical Officer ID"
registered_name = "CMO"
icon_state = "CMO"
@@ -703,7 +703,7 @@
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
access_keycard_auth, access_sec_doors, access_psychiatrist, access_paramedic, access_mineral_storeroom)
/obj/item/weapon/card/id/rd
/obj/item/card/id/rd
name = "Research Director ID"
registered_name = "RD"
icon_state = "RD"
@@ -712,7 +712,7 @@
access_research, access_robotics, access_xenobiology, access_ai_upload,
access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch, access_minisat, access_mineral_storeroom)
/obj/item/weapon/card/id/ce
/obj/item/card/id/ce
name = "Chief Engineer ID"
registered_name = "CE"
icon_state = "CE"
@@ -721,57 +721,57 @@
access_heads, access_construction, access_sec_doors,
access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_minisat, access_mechanic, access_mineral_storeroom)
/obj/item/weapon/card/id/clown
/obj/item/card/id/clown
name = "Pink ID"
registered_name = "HONK!"
icon_state = "clown"
desc = "Even looking at the card strikes you with deep fear."
access = list(access_clown, access_theatre, access_maint_tunnels)
/obj/item/weapon/card/id/mime
/obj/item/card/id/mime
name = "Black and White ID"
registered_name = "..."
icon_state = "mime"
desc = "..."
access = list(access_mime, access_theatre, access_maint_tunnels)
/obj/item/weapon/card/id/rainbow
/obj/item/card/id/rainbow
name = "Rainbow ID"
icon_state = "rainbow"
/obj/item/weapon/card/id/thunderdome/red
/obj/item/card/id/thunderdome/red
name = "Thunderdome Red ID"
registered_name = "Red Team Fighter"
assignment = "Red Team Fighter"
icon_state = "TDred"
desc = "This ID card is given to those who fought inside the thunderdome for the Red Team. Not many have lived to see one of those, even fewer lived to keep it."
/obj/item/weapon/card/id/thunderdome/green
/obj/item/card/id/thunderdome/green
name = "Thunderdome Green ID"
registered_name = "Green Team Fighter"
assignment = "Green Team Fighter"
icon_state = "TDgreen"
desc = "This ID card is given to those who fought inside the thunderdome for the Green Team. Not many have lived to see one of those, even fewer lived to keep it."
/obj/item/weapon/card/id/lifetime
/obj/item/card/id/lifetime
name = "Lifetime ID Card"
desc = "A modified ID card given only to those people who have devoted their lives to the better interests of Nanotrasen. It sparkles blue."
icon_state = "lifetimeid"
/obj/item/weapon/card/id/ert
/obj/item/card/id/ert
name = "ERT ID"
icon_state = "ERT_empty"
/obj/item/weapon/card/id/ert/commander
/obj/item/card/id/ert/commander
icon_state = "ERT_leader"
/obj/item/weapon/card/id/ert/security
/obj/item/card/id/ert/security
icon_state = "ERT_security"
/obj/item/weapon/card/id/ert/engineering
/obj/item/card/id/ert/engineering
icon_state = "ERT_engineering"
/obj/item/weapon/card/id/ert/medic
/obj/item/card/id/ert/medic
icon_state = "ERT_medical"
// Decals
/obj/item/weapon/id_decal
/obj/item/id_decal
name = "identification card decal"
desc = "A modification kit to make your ID cards look snazzy.."
icon = 'icons/obj/device.dmi'
@@ -782,30 +782,30 @@
var/decal_item_state = "card-id"
var/override_name = 0
/obj/item/weapon/id_decal/gold
/obj/item/id_decal/gold
name = "gold ID card card decal"
decal_desc = "A golden card which shows power and might."
decal_icon_state = "gold"
decal_item_state = "gold_id"
/obj/item/weapon/id_decal/silver
/obj/item/id_decal/silver
name = "silver ID card decal"
decal_desc = "A silver card which shows honour and dedication."
decal_icon_state = "silver"
decal_item_state = "silver_id"
/obj/item/weapon/id_decal/prisoner
/obj/item/id_decal/prisoner
name = "prisoner ID card decal"
decal_desc = "You are a number, you are not a free man."
decal_icon_state = "prisoner"
decal_item_state = "orange-id"
/obj/item/weapon/id_decal/centcom
/obj/item/id_decal/centcom
name = "centcom ID card decal"
decal_desc = "An ID straight from Cent. Com."
decal_icon_state = "centcom"
/obj/item/weapon/id_decal/emag
/obj/item/id_decal/emag
name = "cryptographic sequencer ID card decal"
decal_name = "cryptographic sequencer"
decal_desc = "It's a card with a magnetic strip attached to some circuitry."
+1 -1
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/caution
/obj/item/caution
desc = "Caution! Wet Floor!"
name = "wet floor sign"
icon = 'icons/obj/janitor.dmi'
@@ -1,6 +1,6 @@
#define CHRONO_BEAM_RANGE 3
#define CHRONO_FRAME_COUNT 22
/obj/item/weapon/chrono_eraser
/obj/item/chrono_eraser
name = "Timestream Eradication Device"
desc = "The result of outlawed time-bluespace research, this device is capable of wiping a being from the timestream. They never are, they never were, they never will be."
icon = 'icons/obj/chronos.dmi'
@@ -10,22 +10,22 @@
slot_flags = SLOT_BACK
slowdown = 1
actions_types = list(/datum/action/item_action/equip_unequip_TED_Gun)
var/obj/item/weapon/gun/energy/chrono_gun/PA = null
var/obj/item/gun/energy/chrono_gun/PA = null
var/list/erased_minds = list() //a collection of minds from the dead
/obj/item/weapon/chrono_eraser/proc/pass_mind(var/datum/mind/M)
/obj/item/chrono_eraser/proc/pass_mind(var/datum/mind/M)
erased_minds += M
/obj/item/weapon/chrono_eraser/dropped()
/obj/item/chrono_eraser/dropped()
..()
if(PA)
qdel(PA)
/obj/item/weapon/chrono_eraser/Destroy()
/obj/item/chrono_eraser/Destroy()
dropped()
return ..()
/obj/item/weapon/chrono_eraser/ui_action_click(mob/user)
/obj/item/chrono_eraser/ui_action_click(mob/user)
if(iscarbon(user))
var/mob/living/carbon/C = user
if(C.back == src)
@@ -35,12 +35,12 @@
PA = new(src)
user.put_in_hands(PA)
/obj/item/weapon/chrono_eraser/item_action_slot_check(slot, mob/user)
/obj/item/chrono_eraser/item_action_slot_check(slot, mob/user)
if(slot == slot_back)
return 1
/obj/item/weapon/gun/energy/chrono_gun
/obj/item/gun/energy/chrono_gun
name = "T.E.D. Projection Apparatus"
desc = "It's as if they never existed in the first place."
icon = 'icons/obj/chronos.dmi'
@@ -51,11 +51,11 @@
ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam)
can_charge = 0
fire_delay = 50
var/obj/item/weapon/chrono_eraser/TED = null
var/obj/item/chrono_eraser/TED = null
var/obj/effect/chrono_field/field = null
var/turf/startpos = null
/obj/item/weapon/gun/energy/chrono_gun/New(var/obj/item/weapon/chrono_eraser/T)
/obj/item/gun/energy/chrono_gun/New(var/obj/item/chrono_eraser/T)
. = ..()
if(istype(T))
TED = T
@@ -63,15 +63,15 @@
TED = new(src.loc)
qdel(src)
/obj/item/weapon/gun/energy/chrono_gun/update_icon()
/obj/item/gun/energy/chrono_gun/update_icon()
return
/obj/item/weapon/gun/energy/chrono_gun/process_fire()
/obj/item/gun/energy/chrono_gun/process_fire()
if(field)
field_disconnect(field)
..()
/obj/item/weapon/gun/energy/chrono_gun/Destroy()
/obj/item/gun/energy/chrono_gun/Destroy()
if(TED)
TED.PA = null
TED = null
@@ -79,7 +79,7 @@
field_disconnect(field)
return ..()
/obj/item/weapon/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_connect(var/obj/effect/chrono_field/F)
var/mob/living/user = src.loc
if(F.gun)
if(isliving(user) && F.captured)
@@ -93,7 +93,7 @@
to_chat(user, "<span class='notice'>Connection established with target: <b>[F.captured]</b></span>")
/obj/item/weapon/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_disconnect(var/obj/effect/chrono_field/F)
if(F && field == F)
var/mob/living/user = src.loc
if(F.gun == src)
@@ -103,7 +103,7 @@
field = null
startpos = null
/obj/item/weapon/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
/obj/item/gun/energy/chrono_gun/proc/field_check(var/obj/effect/chrono_field/F)
if(F)
if(field == F)
var/turf/currentpos = get_turf(src)
@@ -113,7 +113,7 @@
field_disconnect(F)
return 0
/obj/item/weapon/gun/energy/chrono_gun/proc/pass_mind(var/datum/mind/M)
/obj/item/gun/energy/chrono_gun/proc/pass_mind(var/datum/mind/M)
if(TED)
TED.pass_mind(M)
@@ -124,7 +124,7 @@
range = CHRONO_BEAM_RANGE
color = null
nodamage = 1
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
var/obj/item/gun/energy/chrono_gun/gun = null
/obj/item/projectile/energy/chrono_beam/fire()
gun = firer.get_active_hand()
@@ -154,13 +154,13 @@
unacidable = 1
blend_mode = BLEND_MULTIPLY
var/mob/living/captured = null
var/obj/item/weapon/gun/energy/chrono_gun/gun = null
var/obj/item/gun/energy/chrono_gun/gun = null
var/tickstokill = 30
var/image/mob_underlay = null
var/preloaded = 0
var/RPpos = null
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/weapon/gun/energy/chrono_gun/G)
/obj/effect/chrono_field/New(loc, var/mob/living/target, var/obj/item/gun/energy/chrono_gun/G)
if(target && isliving(target) && G)
target.loc = src
src.captured = target
@@ -232,7 +232,7 @@
/obj/effect/chrono_field/bullet_act(var/obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy/chrono_beam))
var/obj/item/projectile/energy/chrono_beam/beam = P
var/obj/item/weapon/gun/energy/chrono_gun/Pgun = beam.gun
var/obj/item/gun/energy/chrono_gun/Pgun = beam.gun
if(Pgun && istype(Pgun))
Pgun.field_connect(src)
else
+30 -30
View File
@@ -26,7 +26,7 @@ LIGHTERS ARE IN LIGHTERS.DM
var/lit = FALSE
var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
var/icon_off = "cigoff"
var/type_butt = /obj/item/weapon/cigbutt
var/type_butt = /obj/item/cigbutt
var/lastHolder = null
var/smoketime = 300
var/chem_volume = 30
@@ -63,38 +63,38 @@ LIGHTERS ARE IN LIGHTERS.DM
/obj/item/clothing/mask/cigarette/fire_act()
light()
/obj/item/clothing/mask/cigarette/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/item/clothing/mask/cigarette/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(istype(W, /obj/item/weldingtool))
var/obj/item/weldingtool/WT = W
if(WT.isOn())//Badasses dont get blinded while lighting their cig with a welding tool
light("<span class='notice'>[user] casually lights the [name] with [W], what a badass.</span>")
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
else if(istype(W, /obj/item/lighter/zippo))
var/obj/item/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
else if(istype(W, /obj/item/lighter))
var/obj/item/lighter/L = W
if(L.lit)
light("<span class='notice'>After some fiddling, [user] manages to light their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
else if(istype(W, /obj/item/match))
var/obj/item/match/M = W
if(M.lit == 1)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
else if(istype(W, /obj/item/weapon/melee/energy/sword/saber))
var/obj/item/weapon/melee/energy/sword/saber/S = W
else if(istype(W, /obj/item/melee/energy/sword/saber))
var/obj/item/melee/energy/sword/saber/S = W
if(S.active)
light("<span class='warning'>[user] swings their [W], barely missing their nose. They light their [name] in the process.</span>")
else if(istype(W, /obj/item/device/assembly/igniter))
light("<span class='notice'>[user] fiddles with [W], and manages to light their [name].</span>")
else if(istype(W, /obj/item/weapon/gun/magic/wand/fireball))
var/obj/item/weapon/gun/magic/wand/fireball/F = W
else if(istype(W, /obj/item/gun/magic/wand/fireball))
var/obj/item/gun/magic/wand/fireball/F = W
if(F.charges)
if(prob(50) || user.mind.assigned_role == "Wizard")
light("<span class='notice'>Holy shit, did [user] just manage to light their [name] with [W], with only moderate eyebrow singing?</span>")
@@ -111,7 +111,7 @@ LIGHTERS ARE IN LIGHTERS.DM
return
/obj/item/clothing/mask/cigarette/afterattack(obj/item/weapon/reagent_containers/glass/glass, mob/user as mob, proximity)
/obj/item/clothing/mask/cigarette/afterattack(obj/item/reagent_containers/glass/glass, mob/user as mob, proximity)
..()
if(!proximity) return
if(istype(glass)) //you can dip cigarettes into beakers
@@ -227,7 +227,7 @@ LIGHTERS ARE IN LIGHTERS.DM
icon_state = "spliffoff"
icon_on = "spliffon"
icon_off = "spliffoff"
type_butt = /obj/item/weapon/cigbutt/roach
type_butt = /obj/item/cigbutt/roach
throw_speed = 0.5
item_state = "spliffoff"
smoketime = 180
@@ -239,12 +239,12 @@ LIGHTERS ARE IN LIGHTERS.DM
pixel_y = rand(-5, 5)
/obj/item/weapon/cigbutt/roach
/obj/item/cigbutt/roach
name = "roach"
desc = "A manky old roach, or for non-stoners, a used rollup."
icon_state = "roach"
/obj/item/weapon/cigbutt/roach/New()
/obj/item/cigbutt/roach/New()
..()
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
@@ -258,7 +258,7 @@ LIGHTERS ARE IN LIGHTERS.DM
icon_state = "cigaroff"
icon_on = "cigaron"
icon_off = "cigaroff"
type_butt = /obj/item/weapon/cigbutt/cigarbutt
type_butt = /obj/item/cigbutt/cigarbutt
throw_speed = 0.5
item_state = "cigaroff"
smoketime = 1500
@@ -284,7 +284,7 @@ LIGHTERS ARE IN LIGHTERS.DM
smoketime = 7200
chem_volume = 60
/obj/item/weapon/cigbutt
/obj/item/cigbutt
name = "cigarette butt"
desc = "A manky old cigarette butt."
icon = 'icons/obj/clothing/masks.dmi'
@@ -292,20 +292,20 @@ LIGHTERS ARE IN LIGHTERS.DM
w_class = WEIGHT_CLASS_TINY
throwforce = 1
/obj/item/weapon/cigbutt/New()
/obj/item/cigbutt/New()
..()
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
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/cigarette/cigar/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/match))
/obj/item/clothing/mask/cigarette/cigar/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/match))
..()
else
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such uncivilized means.</span>")
@@ -369,8 +369,8 @@ LIGHTERS ARE IN LIGHTERS.DM
smoketime = initial(smoketime)
return
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/match))
/obj/item/clothing/mask/cigarette/pipe/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/match))
..()
else
to_chat(user, "<span class='notice'>\The [src] straight out REFUSES to be lit by such means.</span>")
@@ -388,18 +388,18 @@ LIGHTERS ARE IN LIGHTERS.DM
///////////
//ROLLING//
///////////
/obj/item/weapon/rollingpaper
/obj/item/rollingpaper
name = "rolling paper"
desc = "A thin piece of paper used to make fine smokeables."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cig_paper"
w_class = WEIGHT_CLASS_TINY
/obj/item/weapon/rollingpaper/afterattack(atom/target, mob/user, proximity)
/obj/item/rollingpaper/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
if(istype(target, /obj/item/weapon/reagent_containers/food/snacks/grown))
var/obj/item/weapon/reagent_containers/food/snacks/grown/O = target
if(istype(target, /obj/item/reagent_containers/food/snacks/grown))
var/obj/item/reagent_containers/food/snacks/grown/O = target
if(O.dry)
user.unEquip(target, 1)
user.unEquip(src, 1)
@@ -9,7 +9,7 @@
* Bike Horns
*/
/obj/item/weapon/bikehorn
/obj/item/bikehorn
name = "bike horn"
desc = "A horn off of a bicycle."
icon = 'icons/obj/items.dmi'
@@ -25,12 +25,12 @@
var/honk_sound = 'sound/items/bikehorn.ogg'
var/cooldowntime = 20
/obj/item/weapon/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user)
if(!spam_flag)
playsound(loc, honk_sound, 50, 1, -1) //plays instead of tap.ogg!
return ..()
/obj/item/weapon/bikehorn/attack_self(mob/user)
/obj/item/bikehorn/attack_self(mob/user)
if(!spam_flag)
spam_flag = 1
playsound(src.loc, honk_sound, 50, 1)
@@ -40,7 +40,7 @@
return
/obj/item/weapon/bikehorn/airhorn
/obj/item/bikehorn/airhorn
name = "air horn"
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
@@ -48,21 +48,21 @@
cooldowntime = 50
origin_tech = "materials=4;engineering=4"
/obj/item/weapon/bikehorn/golden
/obj/item/bikehorn/golden
name = "golden bike horn"
desc = "Golden? Clearly, its made with bananium! Honk!"
icon_state = "gold_horn"
item_state = "gold_horn"
/obj/item/weapon/bikehorn/golden/attack()
/obj/item/bikehorn/golden/attack()
flip_mobs()
return ..()
/obj/item/weapon/bikehorn/golden/attack_self(mob/user)
/obj/item/bikehorn/golden/attack_self(mob/user)
flip_mobs()
..()
/obj/item/weapon/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user)
if(!spam_flag)
var/turf/T = get_turf(src)
for(M in ohearers(7, T))
+13 -13
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/lipstick
/obj/item/lipstick
name = "red lipstick"
desc = "A generic brand of lipstick."
icon = 'icons/obj/items.dmi'
@@ -7,40 +7,40 @@
var/colour = "red"
var/open = 0
/obj/item/weapon/lipstick/purple
/obj/item/lipstick/purple
name = "purple lipstick"
colour = "purple"
/obj/item/weapon/lipstick/jade
/obj/item/lipstick/jade
//It's still called Jade, but theres no HTML color for jade, so we use lime.
name = "jade lipstick"
colour = "lime"
/obj/item/weapon/lipstick/black
/obj/item/lipstick/black
name = "black lipstick"
colour = "black"
/obj/item/weapon/lipstick/green
/obj/item/lipstick/green
name = "green lipstick"
colour = "green"
/obj/item/weapon/lipstick/blue
/obj/item/lipstick/blue
name = "blue lipstick"
colour = "blue"
/obj/item/weapon/lipstick/white
/obj/item/lipstick/white
name = "white lipstick"
colour = "white"
/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","lime","black","green","blue","white")
name = "[colour] lipstick"
/obj/item/weapon/lipstick/attack_self(mob/user as mob)
/obj/item/lipstick/attack_self(mob/user as mob)
overlays.Cut()
to_chat(user, "<span class='notice'>You twist \the [src] [open ? "closed" : "open"].</span>")
open = !open
@@ -52,7 +52,7 @@
else
icon_state = "lipstick"
/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
@@ -80,7 +80,7 @@
else
to_chat(user, "<span class='notice'>Where are the lips on that?</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/items.dmi'
@@ -90,7 +90,7 @@
usesound = 'sound/items/Welder2.ogg'
toolspeed = 1
/obj/item/weapon/razor/attack(mob/living/carbon/M as mob, mob/user as mob)
/obj/item/razor/attack(mob/living/carbon/M as mob, mob/user as mob)
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/C = H.get_organ("head")
+5 -5
View File
@@ -2,7 +2,7 @@
// Gavel Hammer
// Gavel Block
/obj/item/weapon/gavelhammer
/obj/item/gavelhammer
name = "gavel hammer"
desc = "Order, order! No bombs in my courthouse."
icon = 'icons/obj/items.dmi'
@@ -13,12 +13,12 @@
attack_verb = list("bashed", "battered", "judged", "whacked")
burn_state = FLAMMABLE
/obj/item/weapon/gavelhammer/suicide_act(mob/user)
/obj/item/gavelhammer/suicide_act(mob/user)
user.visible_message("<span class='warning'>[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.</span>")
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
return (BRUTELOSS)
/obj/item/weapon/gavelblock
/obj/item/gavelblock
name = "gavel block"
desc = "Smack it with a gavel hammer when the assistants get rowdy."
icon = 'icons/obj/items.dmi'
@@ -28,8 +28,8 @@
w_class = WEIGHT_CLASS_TINY
burn_state = FLAMMABLE
/obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/gavelhammer))
/obj/item/gavelblock/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/gavelhammer))
playsound(loc, 'sound/items/gavel.ogg', 100, 1)
user.visible_message("<span class='warning'>[user] strikes \the [src] with \the [I].</span>")
else
+47 -50
View File
@@ -1,9 +1,8 @@
//backpack item
/obj/item/weapon/defibrillator
/obj/item/defibrillator
name = "defibrillator"
desc = "A device that delivers powerful shocks to detachable paddles that resuscitate incapacitated patients."
icon = 'icons/obj/weapons.dmi'
icon_state = "defibunit"
item_state = "defibunit"
slot_flags = SLOT_BACK
@@ -20,29 +19,29 @@
var/paddles_on_defib = TRUE //if the paddles are on the defib (TRUE)
var/safety = 1 //if you can zap people with the defibs on harm mode
var/powered = 0 //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
var/obj/item/weapon/twohanded/shockpaddles/paddles
var/obj/item/weapon/stock_parts/cell/high/bcell = null
var/obj/item/twohanded/shockpaddles/paddles
var/obj/item/stock_parts/cell/high/bcell = null
var/combat = 0 //can we revive through space suits?
/obj/item/weapon/defibrillator/New() //starts without a cell for rnd
/obj/item/defibrillator/New() //starts without a cell for rnd
..()
paddles = make_paddles()
update_icon()
return
/obj/item/weapon/defibrillator/loaded/New() //starts with hicap
/obj/item/defibrillator/loaded/New() //starts with hicap
..()
paddles = make_paddles()
bcell = new(src)
update_icon()
return
/obj/item/weapon/defibrillator/update_icon()
/obj/item/defibrillator/update_icon()
update_power()
update_overlays()
update_charge()
/obj/item/weapon/defibrillator/proc/update_power()
/obj/item/defibrillator/proc/update_power()
if(bcell)
if(bcell.charge < paddles.revivecost)
powered = 0
@@ -51,7 +50,7 @@
else
powered = 0
/obj/item/weapon/defibrillator/proc/update_overlays()
/obj/item/defibrillator/proc/update_overlays()
overlays.Cut()
if(paddles_on_defib)
overlays += "[icon_state]-paddles"
@@ -62,28 +61,28 @@
if(!safety)
overlays += "[icon_state]-emagged"
/obj/item/weapon/defibrillator/proc/update_charge()
/obj/item/defibrillator/proc/update_charge()
if(powered) //so it doesn't show charge if it's unpowered
if(bcell)
var/ratio = bcell.charge / bcell.maxcharge
ratio = Ceiling(ratio*4) * 25
overlays += "[icon_state]-charge[ratio]"
/obj/item/weapon/defibrillator/CheckParts(list/parts_list)
/obj/item/defibrillator/CheckParts(list/parts_list)
..()
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
bcell = locate(/obj/item/stock_parts/cell) in contents
update_icon()
/obj/item/weapon/defibrillator/ui_action_click()
/obj/item/defibrillator/ui_action_click()
toggle_paddles()
/obj/item/weapon/defibrillator/CtrlClick()
/obj/item/defibrillator/CtrlClick()
if(ishuman(usr) && Adjacent(usr))
toggle_paddles()
/obj/item/weapon/defibrillator/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/stock_parts/cell))
var/obj/item/weapon/stock_parts/cell/C = W
/obj/item/defibrillator/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/stock_parts/cell))
var/obj/item/stock_parts/cell/C = W
if(bcell)
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
else
@@ -95,7 +94,7 @@
bcell = W
to_chat(user, "<span class='notice'>You install a cell in [src].</span>")
if(istype(W, /obj/item/weapon/screwdriver))
if(istype(W, /obj/item/screwdriver))
if(bcell)
bcell.updateicon()
bcell.loc = get_turf(src.loc)
@@ -105,7 +104,7 @@
update_icon()
return
/obj/item/weapon/defibrillator/emag_act(user as mob)
/obj/item/defibrillator/emag_act(user as mob)
if(safety)
safety = 0
to_chat(user, "<span class='warning'>You silently disable [src]'s safety protocols with the card.")
@@ -113,7 +112,7 @@
safety = 1
to_chat(user, "<span class='notice'>You silently enable [src]'s safety protocols with the card.")
/obj/item/weapon/defibrillator/emp_act(severity)
/obj/item/defibrillator/emp_act(severity)
if(bcell)
deductcharge(1000 / severity)
if(safety)
@@ -127,7 +126,7 @@
update_icon()
..()
/obj/item/weapon/defibrillator/verb/toggle_paddles()
/obj/item/defibrillator/verb/toggle_paddles()
set name = "Toggle Paddles"
set category = "Object"
@@ -150,20 +149,20 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/weapon/defibrillator/proc/make_paddles()
return new /obj/item/weapon/twohanded/shockpaddles(src)
/obj/item/defibrillator/proc/make_paddles()
return new /obj/item/twohanded/shockpaddles(src)
/obj/item/weapon/defibrillator/equipped(mob/user, slot)
/obj/item/defibrillator/equipped(mob/user, slot)
..()
if(slot != slot_back)
remove_paddles(user)
update_icon()
/obj/item/weapon/defibrillator/item_action_slot_check(slot, mob/user)
/obj/item/defibrillator/item_action_slot_check(slot, mob/user)
if(slot == slot_back)
return 1
/obj/item/weapon/defibrillator/proc/remove_paddles(mob/user) // from your hands
/obj/item/defibrillator/proc/remove_paddles(mob/user) // from your hands
var/mob/living/carbon/human/M = user
if(paddles in get_both_hands(M))
M.unEquip(paddles)
@@ -171,7 +170,7 @@
update_icon()
return
/obj/item/weapon/defibrillator/Destroy()
/obj/item/defibrillator/Destroy()
if(!paddles_on_defib)
var/M = get(paddles, /mob)
remove_paddles(M)
@@ -179,7 +178,7 @@
QDEL_NULL(bcell)
return ..()
/obj/item/weapon/defibrillator/proc/deductcharge(var/chrgdeductamt)
/obj/item/defibrillator/proc/deductcharge(var/chrgdeductamt)
if(bcell)
if(bcell.charge < (paddles.revivecost+chrgdeductamt))
powered = 0
@@ -191,7 +190,7 @@
update_icon()
return 0
/obj/item/weapon/defibrillator/proc/cooldowncheck(var/mob/user)
/obj/item/defibrillator/proc/cooldowncheck(var/mob/user)
spawn(50)
if(bcell)
if(bcell.charge >= paddles.revivecost)
@@ -204,7 +203,7 @@
paddles.update_icon()
update_icon()
/obj/item/weapon/defibrillator/compact
/obj/item/defibrillator/compact
name = "compact defibrillator"
desc = "A belt-equipped defibrillator that can be rapidly deployed."
icon_state = "defibcompact"
@@ -213,31 +212,31 @@
slot_flags = SLOT_BELT
origin_tech = "biotech=5"
/obj/item/weapon/defibrillator/compact/item_action_slot_check(slot, mob/user)
/obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user)
if(slot == slot_belt)
return 1
/obj/item/weapon/defibrillator/compact/loaded/New()
/obj/item/defibrillator/compact/loaded/New()
..()
paddles = make_paddles()
bcell = new(src)
update_icon()
return
/obj/item/weapon/defibrillator/compact/combat
/obj/item/defibrillator/compact/combat
name = "combat defibrillator"
desc = "A belt-equipped blood-red defibrillator that can be rapidly deployed. Does not have the restrictions or safeties of conventional defibrillators and can revive through space suits."
combat = 1
safety = 0
/obj/item/weapon/defibrillator/compact/combat/loaded/New()
/obj/item/defibrillator/compact/combat/loaded/New()
..()
paddles = make_paddles()
bcell = new /obj/item/weapon/stock_parts/cell/infinite(src)
bcell = new /obj/item/stock_parts/cell/infinite(src)
update_icon()
return
/obj/item/weapon/defibrillator/compact/combat/attackby(obj/item/weapon/W, mob/user, params)
/obj/item/defibrillator/compact/combat/attackby(obj/item/W, mob/user, params)
if(W == paddles)
paddles.unwield()
toggle_paddles()
@@ -246,10 +245,9 @@
//paddles
/obj/item/weapon/twohanded/shockpaddles
/obj/item/twohanded/shockpaddles
name = "defibrillator paddles"
desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks."
icon = 'icons/obj/weapons.dmi'
icon_state = "defibpaddles"
item_state = "defibpaddles"
force = 0
@@ -260,9 +258,9 @@
var/revivecost = 1000
var/cooldown = 0
var/busy = 0
var/obj/item/weapon/defibrillator/defib
var/obj/item/defibrillator/defib
/obj/item/weapon/twohanded/shockpaddles/New(mainunit)
/obj/item/twohanded/shockpaddles/New(mainunit)
..()
if(check_defib_exists(mainunit, src))
defib = mainunit
@@ -271,21 +269,21 @@
update_icon()
return
/obj/item/weapon/twohanded/shockpaddles/update_icon()
/obj/item/twohanded/shockpaddles/update_icon()
icon_state = "defibpaddles[wielded]"
item_state = "defibpaddles[wielded]"
if(cooldown)
icon_state = "defibpaddles[wielded]_cooldown"
/obj/item/weapon/twohanded/shockpaddles/suicide_act(mob/user)
/obj/item/twohanded/shockpaddles/suicide_act(mob/user)
user.visible_message("<span class='danger'>[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.</span>")
defib.deductcharge(revivecost)
playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1)
return (OXYLOSS)
/obj/item/weapon/twohanded/shockpaddles/dropped(mob/user as mob)
/obj/item/twohanded/shockpaddles/dropped(mob/user as mob)
if(user)
var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_hand()
var/obj/item/twohanded/offhand/O = user.get_inactive_hand()
if(istype(O))
O.unwield()
to_chat(user, "<span class='notice'>The paddles snap back into the main unit.</span>")
@@ -295,15 +293,15 @@
update_icon()
return unwield(user)
/obj/item/weapon/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
if(!mainunit || !istype(mainunit, /obj/item/weapon/defibrillator)) //To avoid weird issues from admin spawns
/obj/item/twohanded/shockpaddles/proc/check_defib_exists(mainunit, var/mob/living/carbon/human/M, var/obj/O)
if(!mainunit || !istype(mainunit, /obj/item/defibrillator)) //To avoid weird issues from admin spawns
M.unEquip(O)
qdel(O)
return 0
else
return 1
/obj/item/weapon/twohanded/shockpaddles/attack(mob/M, mob/user)
/obj/item/twohanded/shockpaddles/attack(mob/M, mob/user)
var/tobehealed
var/threshold = -config.health_threshold_dead
var/mob/living/carbon/human/H = M
@@ -437,10 +435,9 @@
busy = 0
update_icon()
/obj/item/weapon/borg_defib
/obj/item/borg_defib
name = "defibrillator paddles"
desc = "A pair of mounted paddles with flat metal surfaces that are used to deliver powerful electric shocks."
icon = 'icons/obj/weapons.dmi'
icon_state = "defibpaddles0"
item_state = "defibpaddles0"
force = 0
@@ -452,7 +449,7 @@
flags = NODROP
toolspeed = 1
/obj/item/weapon/borg_defib/attack(mob/M, mob/user)
/obj/item/borg_defib/attack(mob/M, mob/user)
var/tobehealed
var/threshold = -config.health_threshold_dead
var/mob/living/carbon/human/H = M
+42 -42
View File
@@ -1,30 +1,30 @@
/obj/item/weapon/storage/pill_bottle/dice
/obj/item/storage/pill_bottle/dice
name = "bag of dice"
desc = "Contains all the luck you'll ever need."
icon = 'icons/obj/dice.dmi'
icon_state = "dicebag"
/obj/item/weapon/storage/pill_bottle/dice/New()
/obj/item/storage/pill_bottle/dice/New()
..()
var/special_die = pick("1","2","fudge","00","100")
if(special_die == "1")
new /obj/item/weapon/dice/d1(src)
new /obj/item/dice/d1(src)
if(special_die == "2")
new /obj/item/weapon/dice/d2(src)
new /obj/item/weapon/dice/d4(src)
new /obj/item/weapon/dice/d6(src)
new /obj/item/dice/d2(src)
new /obj/item/dice/d4(src)
new /obj/item/dice/d6(src)
if(special_die == "fudge")
new /obj/item/weapon/dice/fudge(src)
new /obj/item/weapon/dice/d8(src)
new /obj/item/weapon/dice/d10(src)
new /obj/item/dice/fudge(src)
new /obj/item/dice/d8(src)
new /obj/item/dice/d10(src)
if(special_die == "00")
new /obj/item/weapon/dice/d00(src)
new /obj/item/weapon/dice/d12(src)
new /obj/item/weapon/dice/d20(src)
new /obj/item/dice/d00(src)
new /obj/item/dice/d12(src)
new /obj/item/dice/d20(src)
if(special_die == "100")
new /obj/item/weapon/dice/d100(src)
new /obj/item/dice/d100(src)
/obj/item/weapon/dice //depreciated d6, use /obj/item/weapon/dice/d6 if you actually want a d6
/obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6
name = "die"
desc = "A die with six sides. Basic and servicable."
icon = 'icons/obj/dice.dmi'
@@ -34,89 +34,89 @@
var/result = null
var/list/special_faces = list() //entries should match up to sides var if used
/obj/item/weapon/dice/New()
/obj/item/dice/New()
result = rand(1, sides)
update_icon()
/obj/item/weapon/dice/d1
/obj/item/dice/d1
name = "d1"
desc = "A die with one side. Deterministic!"
icon_state = "d1"
sides = 1
/obj/item/weapon/dice/d2
/obj/item/dice/d2
name = "d2"
desc = "A die with two sides. Coins are undignified!"
icon_state = "d2"
sides = 2
/obj/item/weapon/dice/d4
/obj/item/dice/d4
name = "d4"
desc = "A die with four sides. The nerd's caltrop."
icon_state = "d4"
sides = 4
/obj/item/weapon/dice/d6
/obj/item/dice/d6
name = "d6"
/obj/item/weapon/dice/fudge
/obj/item/dice/fudge
name = "fudge die"
desc = "A die with six sides but only three results. Is this a plus or a minus? Your mind is drawing a blank..."
sides = 3 //shhh
icon_state = "fudge"
special_faces = list("minus","blank","plus")
/obj/item/weapon/dice/d8
/obj/item/dice/d8
name = "d8"
desc = "A die with eight sides. It feels... lucky."
icon_state = "d8"
sides = 8
/obj/item/weapon/dice/d10
/obj/item/dice/d10
name = "d10"
desc = "A die with ten sides. Useful for percentages."
icon_state = "d10"
sides = 10
/obj/item/weapon/dice/d00
/obj/item/dice/d00
name = "d00"
desc = "A die with ten sides. Works better for d100 rolls than a golfball."
icon_state = "d00"
sides = 10
/obj/item/weapon/dice/d12
/obj/item/dice/d12
name = "d12"
desc = "A die with twelve sides. There's an air of neglect about it."
icon_state = "d12"
sides = 12
/obj/item/weapon/dice/d20
/obj/item/dice/d20
name = "d20"
desc = "A die with twenty sides. The prefered die to throw at the GM."
icon_state = "d20"
sides = 20
/obj/item/weapon/dice/d100
/obj/item/dice/d100
name = "d100"
desc = "A die with one hundred sides! Probably not fairly weighted..."
icon_state = "d100"
sides = 100
/obj/item/weapon/dice/d100/update_icon()
/obj/item/dice/d100/update_icon()
return
/obj/item/weapon/dice/d20/e20
/obj/item/dice/d20/e20
var/triggered = 0
/obj/item/weapon/dice/attack_self(mob/user as mob)
/obj/item/dice/attack_self(mob/user as mob)
diceroll(user)
/obj/item/weapon/dice/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
/obj/item/dice/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
if(!..())
return
diceroll(thrower)
/obj/item/weapon/dice/proc/diceroll(mob/user)
/obj/item/dice/proc/diceroll(mob/user)
result = rand(1, sides)
var/fake_result = rand(1, sides)//Daredevil isn't as good as he used to be
var/comment = ""
@@ -136,7 +136,7 @@
else if(!throwing) //Dice was thrown and is coming to rest
visible_message("<span class='notice'>[src] rolls to a stop, landing on [result]. [comment]</span>")
/obj/item/weapon/dice/d20/e20/diceroll(mob/user as mob, thrown)
/obj/item/dice/d20/e20/diceroll(mob/user as mob, thrown)
if(triggered)
return
..()
@@ -164,21 +164,21 @@
log_game("E20 detonated at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]) with a roll of [result]. Triggered by: [key_name(user)]")
/obj/item/weapon/dice/update_icon()
/obj/item/dice/update_icon()
overlays.Cut()
overlays += "[src.icon_state][src.result]"
/obj/item/weapon/storage/box/dice
/obj/item/storage/box/dice
name = "Box of dice"
desc = "ANOTHER ONE!? FUCK!"
icon_state = "box"
/obj/item/weapon/storage/box/dice/New()
/obj/item/storage/box/dice/New()
..()
new /obj/item/weapon/dice/d2(src)
new /obj/item/weapon/dice/d4(src)
new /obj/item/weapon/dice/d8(src)
new /obj/item/weapon/dice/d10(src)
new /obj/item/weapon/dice/d00(src)
new /obj/item/weapon/dice/d12(src)
new /obj/item/weapon/dice/d20(src)
new /obj/item/dice/d2(src)
new /obj/item/dice/d4(src)
new /obj/item/dice/d8(src)
new /obj/item/dice/d10(src)
new /obj/item/dice/d00(src)
new /obj/item/dice/d12(src)
new /obj/item/dice/d20(src)
+1 -1
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/disk
/obj/item/disk
icon = 'icons/obj/module.dmi'
w_class = WEIGHT_CLASS_TINY
item_state = "card-id"
+57 -57
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/dnainjector
/obj/item/dnainjector
name = "DNA-Injector"
desc = "This injects the person with DNA."
icon = 'icons/obj/items.dmi'
@@ -18,7 +18,7 @@
var/datatype = 0
var/value = 0
/obj/item/weapon/dnainjector/New()
/obj/item/dnainjector/New()
if(datatype && block)
buf=new
buf.dna=new
@@ -26,45 +26,45 @@
buf.dna.ResetSE()
SetValue(value)
/obj/item/weapon/dnainjector/Destroy()
/obj/item/dnainjector/Destroy()
QDEL_NULL(buf)
return ..()
/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/living/M as mob, mob/user as mob)
/obj/item/dnainjector/proc/inject(mob/living/M as mob, mob/user as mob)
if(used)
return
if(istype(M,/mob/living))
@@ -104,7 +104,7 @@
if(H)
H.sync_organ_dna(assimilate = 0, old_ue = prev_ue)
/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(used)
to_chat(user, "<span class='warning'>This injector is used up!</span>")
return
@@ -164,7 +164,7 @@
icon_state = "dnainjector0"
desc += " This one is used up."
/obj/item/weapon/dnainjector/hulkmut
/obj/item/dnainjector/hulkmut
name = "DNA-Injector (Hulk)"
desc = "This will make you big and strong, but give you a bad skin condition."
datatype = DNA2_BUF_SE
@@ -174,7 +174,7 @@
block = HULKBLOCK
..()
/obj/item/weapon/dnainjector/antihulk
/obj/item/dnainjector/antihulk
name = "DNA-Injector (Anti-Hulk)"
desc = "Cures green skin."
datatype = DNA2_BUF_SE
@@ -184,7 +184,7 @@
block = HULKBLOCK
..()
/obj/item/weapon/dnainjector/xraymut
/obj/item/dnainjector/xraymut
name = "DNA-Injector (Xray)"
desc = "Finally you can see what the Captain does."
datatype = DNA2_BUF_SE
@@ -194,7 +194,7 @@
block = XRAYBLOCK
..()
/obj/item/weapon/dnainjector/antixray
/obj/item/dnainjector/antixray
name = "DNA-Injector (Anti-Xray)"
desc = "It will make you see harder."
datatype = DNA2_BUF_SE
@@ -205,7 +205,7 @@
..()
/obj/item/weapon/dnainjector/firemut
/obj/item/dnainjector/firemut
name = "DNA-Injector (Fire)"
desc = "Gives you fire."
datatype = DNA2_BUF_SE
@@ -215,7 +215,7 @@
block = FIREBLOCK
..()
/obj/item/weapon/dnainjector/antifire
/obj/item/dnainjector/antifire
name = "DNA-Injector (Anti-Fire)"
desc = "Cures fire."
datatype = DNA2_BUF_SE
@@ -225,7 +225,7 @@
block = FIREBLOCK
..()
/obj/item/weapon/dnainjector/telemut
/obj/item/dnainjector/telemut
name = "DNA-Injector (Tele.)"
desc = "Super brain man!"
datatype = DNA2_BUF_SE
@@ -235,12 +235,12 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/telemut/darkbundle
/obj/item/dnainjector/telemut/darkbundle
name = "DNA injector"
desc = "Good. Let the hate flow through you."
/obj/item/weapon/dnainjector/antitele
/obj/item/dnainjector/antitele
name = "DNA-Injector (Anti-Tele.)"
desc = "Will make you not able to control your mind."
datatype = DNA2_BUF_SE
@@ -250,7 +250,7 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/nobreath
/obj/item/dnainjector/nobreath
name = "DNA-Injector (Breathless)"
desc = "Hold your breath and count to infinity."
datatype = DNA2_BUF_SE
@@ -260,7 +260,7 @@
block = BREATHLESSBLOCK
..()
/obj/item/weapon/dnainjector/antinobreath
/obj/item/dnainjector/antinobreath
name = "DNA-Injector (Anti-Breathless)"
desc = "Hold your breath and count to 100."
datatype = DNA2_BUF_SE
@@ -270,7 +270,7 @@
block = BREATHLESSBLOCK
..()
/obj/item/weapon/dnainjector/remoteview
/obj/item/dnainjector/remoteview
name = "DNA-Injector (Remote View)"
desc = "Stare into the distance for a reason."
datatype = DNA2_BUF_SE
@@ -280,7 +280,7 @@
block = REMOTEVIEWBLOCK
..()
/obj/item/weapon/dnainjector/antiremoteview
/obj/item/dnainjector/antiremoteview
name = "DNA-Injector (Anti-Remote View)"
desc = "Cures green skin."
datatype = DNA2_BUF_SE
@@ -290,7 +290,7 @@
block = REMOTEVIEWBLOCK
..()
/obj/item/weapon/dnainjector/regenerate
/obj/item/dnainjector/regenerate
name = "DNA-Injector (Regeneration)"
desc = "Healthy but hungry."
datatype = DNA2_BUF_SE
@@ -300,7 +300,7 @@
block = REGENERATEBLOCK
..()
/obj/item/weapon/dnainjector/antiregenerate
/obj/item/dnainjector/antiregenerate
name = "DNA-Injector (Anti-Regeneration)"
desc = "Sickly but sated."
datatype = DNA2_BUF_SE
@@ -310,7 +310,7 @@
block = REGENERATEBLOCK
..()
/obj/item/weapon/dnainjector/runfast
/obj/item/dnainjector/runfast
name = "DNA-Injector (Increase Run)"
desc = "Running Man."
datatype = DNA2_BUF_SE
@@ -320,7 +320,7 @@
block = INCREASERUNBLOCK
..()
/obj/item/weapon/dnainjector/antirunfast
/obj/item/dnainjector/antirunfast
name = "DNA-Injector (Anti-Increase Run)"
desc = "Walking Man."
datatype = DNA2_BUF_SE
@@ -330,7 +330,7 @@
block = INCREASERUNBLOCK
..()
/obj/item/weapon/dnainjector/morph
/obj/item/dnainjector/morph
name = "DNA-Injector (Morph)"
desc = "A total makeover."
datatype = DNA2_BUF_SE
@@ -340,7 +340,7 @@
block = MORPHBLOCK
..()
/obj/item/weapon/dnainjector/antimorph
/obj/item/dnainjector/antimorph
name = "DNA-Injector (Anti-Morph)"
desc = "Cures identity crisis."
datatype = DNA2_BUF_SE
@@ -350,7 +350,7 @@
block = MORPHBLOCK
..()
/obj/item/weapon/dnainjector/noprints
/obj/item/dnainjector/noprints
name = "DNA-Injector (No Prints)"
desc = "Better than a pair of budget insulated gloves."
datatype = DNA2_BUF_SE
@@ -360,7 +360,7 @@
block = NOPRINTSBLOCK
..()
/obj/item/weapon/dnainjector/antinoprints
/obj/item/dnainjector/antinoprints
name = "DNA-Injector (Anti-No Prints)"
desc = "Not quite as good as a pair of budget insulated gloves."
datatype = DNA2_BUF_SE
@@ -370,7 +370,7 @@
block = NOPRINTSBLOCK
..()
/obj/item/weapon/dnainjector/insulation
/obj/item/dnainjector/insulation
name = "DNA-Injector (Shock Immunity)"
desc = "Better than a pair of real insulated gloves."
datatype = DNA2_BUF_SE
@@ -380,7 +380,7 @@
block = SHOCKIMMUNITYBLOCK
..()
/obj/item/weapon/dnainjector/antiinsulation
/obj/item/dnainjector/antiinsulation
name = "DNA-Injector (Anti-Shock Immunity)"
desc = "Not quite as good as a pair of real insulated gloves."
datatype = DNA2_BUF_SE
@@ -390,7 +390,7 @@
block = SHOCKIMMUNITYBLOCK
..()
/obj/item/weapon/dnainjector/midgit
/obj/item/dnainjector/midgit
name = "DNA-Injector (Small Size)"
desc = "Makes you shrink."
datatype = DNA2_BUF_SE
@@ -400,7 +400,7 @@
block = SMALLSIZEBLOCK
..()
/obj/item/weapon/dnainjector/antimidgit
/obj/item/dnainjector/antimidgit
name = "DNA-Injector (Anti-Small Size)"
desc = "Makes you grow. But not too much."
datatype = DNA2_BUF_SE
@@ -411,7 +411,7 @@
..()
/////////////////////////////////////
/obj/item/weapon/dnainjector/antiglasses
/obj/item/dnainjector/antiglasses
name = "DNA-Injector (Anti-Glasses)"
desc = "Toss away those glasses!"
datatype = DNA2_BUF_SE
@@ -421,7 +421,7 @@
block = GLASSESBLOCK
..()
/obj/item/weapon/dnainjector/glassesmut
/obj/item/dnainjector/glassesmut
name = "DNA-Injector (Glasses)"
desc = "Will make you need dorkish glasses."
datatype = DNA2_BUF_SE
@@ -431,7 +431,7 @@
block = GLASSESBLOCK
..()
/obj/item/weapon/dnainjector/epimut
/obj/item/dnainjector/epimut
name = "DNA-Injector (Epi.)"
desc = "Shake shake shake the room!"
datatype = DNA2_BUF_SE
@@ -441,7 +441,7 @@
block = EPILEPSYBLOCK
..()
/obj/item/weapon/dnainjector/antiepi
/obj/item/dnainjector/antiepi
name = "DNA-Injector (Anti-Epi.)"
desc = "Will fix you up from shaking the room."
datatype = DNA2_BUF_SE
@@ -451,7 +451,7 @@
block = EPILEPSYBLOCK
..()
/obj/item/weapon/dnainjector/anticough
/obj/item/dnainjector/anticough
name = "DNA-Injector (Anti-Cough)"
desc = "Will stop that awful noise."
datatype = DNA2_BUF_SE
@@ -461,7 +461,7 @@
block = COUGHBLOCK
..()
/obj/item/weapon/dnainjector/coughmut
/obj/item/dnainjector/coughmut
name = "DNA-Injector (Cough)"
desc = "Will bring forth a sound of horror from your throat."
datatype = DNA2_BUF_SE
@@ -471,7 +471,7 @@
block = COUGHBLOCK
..()
/obj/item/weapon/dnainjector/clumsymut
/obj/item/dnainjector/clumsymut
name = "DNA-Injector (Clumsy)"
desc = "Makes clumsy minions."
datatype = DNA2_BUF_SE
@@ -481,7 +481,7 @@
block = CLUMSYBLOCK
..()
/obj/item/weapon/dnainjector/anticlumsy
/obj/item/dnainjector/anticlumsy
name = "DNA-Injector (Anti-Clumy)"
desc = "Cleans up confusion."
datatype = DNA2_BUF_SE
@@ -491,7 +491,7 @@
block = CLUMSYBLOCK
..()
/obj/item/weapon/dnainjector/antitour
/obj/item/dnainjector/antitour
name = "DNA-Injector (Anti-Tour.)"
desc = "Will cure tourrets."
datatype = DNA2_BUF_SE
@@ -501,7 +501,7 @@
block = TWITCHBLOCK
..()
/obj/item/weapon/dnainjector/tourmut
/obj/item/dnainjector/tourmut
name = "DNA-Injector (Tour.)"
desc = "Gives you a nasty case off tourrets."
datatype = DNA2_BUF_SE
@@ -511,7 +511,7 @@
block = TWITCHBLOCK
..()
/obj/item/weapon/dnainjector/stuttmut
/obj/item/dnainjector/stuttmut
name = "DNA-Injector (Stutt.)"
desc = "Makes you s-s-stuttterrr"
datatype = DNA2_BUF_SE
@@ -522,7 +522,7 @@
..()
/obj/item/weapon/dnainjector/antistutt
/obj/item/dnainjector/antistutt
name = "DNA-Injector (Anti-Stutt.)"
desc = "Fixes that speaking impairment."
datatype = DNA2_BUF_SE
@@ -532,7 +532,7 @@
block = NERVOUSBLOCK
..()
/obj/item/weapon/dnainjector/blindmut
/obj/item/dnainjector/blindmut
name = "DNA-Injector (Blind)"
desc = "Makes you not see anything."
datatype = DNA2_BUF_SE
@@ -542,7 +542,7 @@
block = BLINDBLOCK
..()
/obj/item/weapon/dnainjector/antiblind
/obj/item/dnainjector/antiblind
name = "DNA-Injector (Anti-Blind)"
desc = "ITS A MIRACLE!!!"
datatype = DNA2_BUF_SE
@@ -552,7 +552,7 @@
block = BLINDBLOCK
..()
/obj/item/weapon/dnainjector/telemut
/obj/item/dnainjector/telemut
name = "DNA-Injector (Tele.)"
desc = "Super brain man!"
datatype = DNA2_BUF_SE
@@ -562,7 +562,7 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/antitele
/obj/item/dnainjector/antitele
name = "DNA-Injector (Anti-Tele.)"
desc = "Will make you not able to control your mind."
datatype = DNA2_BUF_SE
@@ -572,7 +572,7 @@
block = TELEBLOCK
..()
/obj/item/weapon/dnainjector/deafmut
/obj/item/dnainjector/deafmut
name = "DNA-Injector (Deaf)"
desc = "Sorry, what did you say?"
datatype = DNA2_BUF_SE
@@ -582,7 +582,7 @@
block = DEAFBLOCK
..()
/obj/item/weapon/dnainjector/antideaf
/obj/item/dnainjector/antideaf
name = "DNA-Injector (Anti-Deaf)"
desc = "Will make you hear once more."
datatype = DNA2_BUF_SE
@@ -592,7 +592,7 @@
block = DEAFBLOCK
..()
/obj/item/weapon/dnainjector/hallucination
/obj/item/dnainjector/hallucination
name = "DNA-Injector (Halluctination)"
desc = "What you see isn't always what you get."
datatype = DNA2_BUF_SE
@@ -602,7 +602,7 @@
block = HALLUCINATIONBLOCK
..()
/obj/item/weapon/dnainjector/antihallucination
/obj/item/dnainjector/antihallucination
name = "DNA-Injector (Anti-Hallucination)"
desc = "What you see is what you get."
datatype = DNA2_BUF_SE
@@ -612,7 +612,7 @@
block = HALLUCINATIONBLOCK
..()
/obj/item/weapon/dnainjector/h2m
/obj/item/dnainjector/h2m
name = "DNA-Injector (Human > Monkey)"
desc = "Will make you a flea bag."
datatype = DNA2_BUF_SE
@@ -622,7 +622,7 @@
block = MONKEYBLOCK
..()
/obj/item/weapon/dnainjector/m2h
/obj/item/dnainjector/m2h
name = "DNA-Injector (Monkey > Human)"
desc = "Will make you...less hairy."
datatype = DNA2_BUF_SE
@@ -1,4 +1,4 @@
/obj/item/weapon/dnascrambler
/obj/item/dnascrambler
name = "dna scrambler"
desc = "An illegal genetic serum designed to randomize the user's identity."
icon = 'icons/obj/hypo.dmi'
+23 -23
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/plastic
/obj/item/grenade/plastic
name = "plastic explosive"
desc = "Used to put holes in specific areas without too much extra hole."
icon_state = "plastic-explosive0"
@@ -13,16 +13,16 @@
var/obj/item/device/assembly_holder/nadeassembly = null
var/assemblyattacher
/obj/item/weapon/grenade/plastic/New()
/obj/item/grenade/plastic/New()
image_overlay = image('icons/obj/grenade.dmi', "[item_state]2")
..()
/obj/item/weapon/grenade/plastic/Destroy()
/obj/item/grenade/plastic/Destroy()
QDEL_NULL(nadeassembly)
target = null
return ..()
/obj/item/weapon/grenade/plastic/attackby(obj/item/I, mob/user, params)
/obj/item/grenade/plastic/attackby(obj/item/I, mob/user, params)
if(!nadeassembly && istype(I, /obj/item/device/assembly_holder))
var/obj/item/device/assembly_holder/A = I
if(!user.unEquip(I))
@@ -35,7 +35,7 @@
playsound(src, 'sound/weapons/tap.ogg', 20, 1)
update_icon()
return
if(nadeassembly && istype(I, /obj/item/weapon/wirecutters))
if(nadeassembly && istype(I, /obj/item/wirecutters))
playsound(src, I.usesound, 20, 1)
nadeassembly.loc = get_turf(src)
nadeassembly.master = null
@@ -45,18 +45,18 @@
..()
//assembly stuff
/obj/item/weapon/grenade/plastic/receive_signal()
/obj/item/grenade/plastic/receive_signal()
prime()
/obj/item/weapon/grenade/plastic/Crossed(atom/movable/AM)
/obj/item/grenade/plastic/Crossed(atom/movable/AM)
if(nadeassembly)
nadeassembly.Crossed(AM)
/obj/item/weapon/grenade/plastic/on_found(mob/finder)
/obj/item/grenade/plastic/on_found(mob/finder)
if(nadeassembly)
nadeassembly.on_found(finder)
/obj/item/weapon/grenade/plastic/attack_self(mob/user)
/obj/item/grenade/plastic/attack_self(mob/user)
if(nadeassembly)
nadeassembly.attack_self(user)
return
@@ -66,7 +66,7 @@
det_time = newtime
to_chat(user, "Timer set for [det_time] seconds.")
/obj/item/weapon/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
/obj/item/grenade/plastic/afterattack(atom/movable/AM, mob/user, flag)
if (!flag)
return
if (istype(AM, /mob/living/carbon))
@@ -87,7 +87,7 @@
to_chat(user, "<span class='notice'>You plant the bomb. Timer counting down from [det_time].</span>")
addtimer(src, "prime", det_time*10)
/obj/item/weapon/grenade/plastic/suicide_act(mob/user)
/obj/item/grenade/plastic/suicide_act(mob/user)
message_admins("[key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) suicided with [src.name] at ([user.x],[user.y],[user.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)",0,1)
message_admins("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])")
user.visible_message("<span class='suicide'>[user] activates the [name] and holds it above \his head! It looks like \he's going out with a bang!</span>")
@@ -115,7 +115,7 @@
prime()
user.gib()
/obj/item/weapon/grenade/plastic/update_icon()
/obj/item/grenade/plastic/update_icon()
if(nadeassembly)
icon_state = "[item_state]1"
else
@@ -125,11 +125,11 @@
///// The Explosives /////
//////////////////////////
/obj/item/weapon/grenade/plastic/c4
/obj/item/grenade/plastic/c4
name = "C4"
desc = "Used to put holes in specific areas without too much extra hole. A saboteurs favourite."
/obj/item/weapon/grenade/plastic/c4/prime()
/obj/item/grenade/plastic/c4/prime()
var/turf/location
if(target)
if(!QDELETED(target))
@@ -149,14 +149,14 @@
// C4 is intended to be used for infiltration, and destroying tech. X4 is intended to be used for heavy breaching and tight spaces.
// Intended to replace C4 for nukeops, and to be a randomdrop in surplus/random traitor purchases.
/obj/item/weapon/grenade/plastic/x4
/obj/item/grenade/plastic/x4
name = "X4"
desc = "A specialized shaped high explosive breaching charge. Designed to be safer for the user, and less so, for the wall."
var/aim_dir = NORTH
icon_state = "plasticx40"
item_state = "plasticx4"
/obj/item/weapon/grenade/plastic/x4/prime()
/obj/item/grenade/plastic/x4/prime()
var/turf/location
if(target)
if(!QDELETED(target))
@@ -178,19 +178,19 @@
M.gib()
qdel(src)
/obj/item/weapon/grenade/plastic/x4/afterattack(atom/movable/AM, mob/user, flag)
/obj/item/grenade/plastic/x4/afterattack(atom/movable/AM, mob/user, flag)
aim_dir = get_dir(user,AM)
..()
// Shaped charge
// Same blasting power as C4, but with the same idea as the X4 -- Everyone on one side of the wall is safe.
/obj/item/weapon/grenade/plastic/c4_shaped
/obj/item/grenade/plastic/c4_shaped
name = "C4 (shaped)"
desc = "A brick of C4 shaped to allow more precise breaching."
var/aim_dir = NORTH
/obj/item/weapon/grenade/plastic/c4_shaped/prime()
/obj/item/grenade/plastic/c4_shaped/prime()
var/turf/location
if(target)
if(!QDELETED(target))
@@ -211,15 +211,15 @@
M.gib()
qdel(src)
/obj/item/weapon/grenade/plastic/c4_shaped/afterattack(atom/movable/AM, mob/user, flag)
/obj/item/grenade/plastic/c4_shaped/afterattack(atom/movable/AM, mob/user, flag)
aim_dir = get_dir(user,AM)
..()
/obj/item/weapon/grenade/plastic/c4_shaped/flash
/obj/item/grenade/plastic/c4_shaped/flash
name = "C4 (flash)"
desc = "A C4 charge with an altered chemical composition, designed to blind and deafen the occupants of a room before breaching."
/obj/item/weapon/grenade/plastic/c4_shaped/flash/prime()
/obj/item/grenade/plastic/c4_shaped/flash/prime()
if(target && target.density)
T = get_step(get_turf(target), aim_dir)
else if(target)
@@ -227,7 +227,7 @@
else
T = get_turf(src)
var/obj/item/weapon/grenade/flashbang/CB = new/obj/item/weapon/grenade/flashbang(T)
var/obj/item/grenade/flashbang/CB = new/obj/item/grenade/flashbang(T)
CB.prime()
..()
@@ -1,4 +1,4 @@
/obj/item/weapon/extinguisher
/obj/item/extinguisher
name = "fire extinguisher"
desc = "A traditional red fire extinguisher."
icon = 'icons/obj/items.dmi'
@@ -21,7 +21,7 @@
var/precision = 0 //By default, turfs picked from a spray are random, set to 1 to make it always have at least one water effect per row
var/cooling_power = 2 //Sets the cooling_temperature of the water reagent datum inside of the extinguisher when it is refilled
/obj/item/weapon/extinguisher/mini
/obj/item/extinguisher/mini
name = "pocket fire extinguisher"
desc = "A light and compact fibreglass-framed model fire extinguisher."
icon_state = "miniFE0"
@@ -35,7 +35,7 @@
max_water = 30
sprite_name = "miniFE"
/obj/item/weapon/extinguisher/examine(mob/user)
/obj/item/extinguisher/examine(mob/user)
if(..(user, 0))
to_chat(usr, "[bicon(src)] [src.name] contains:")
if(reagents && reagents.reagent_list.len)
@@ -43,18 +43,18 @@
to_chat(user, "<span class='notice'>[R.volume] units of [R.name]</span>")
/obj/item/weapon/extinguisher/New()
/obj/item/extinguisher/New()
create_reagents(max_water)
reagents.add_reagent("water", max_water)
/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/proc/AttemptRefill(atom/target, mob/user)
/obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user)
if(istype(target, /obj/structure/reagent_dispensers/watertank) && target.Adjacent(user))
var/safety_save = safety
safety = 1
@@ -76,7 +76,7 @@
else
return 0
/obj/item/weapon/extinguisher/afterattack(atom/target, mob/user , flag)
/obj/item/extinguisher/afterattack(atom/target, mob/user , flag)
//TODO; Add support for reagents in water.
if(target.loc == user)//No more spraying yourself when putting your extinguisher away
return
+24 -24
View File
@@ -1,13 +1,13 @@
obj/item/weapon/firework
obj/item/firework
name = "fireworks"
icon = 'icons/obj/fireworks.dmi'
icon_state = "rocket_0"
var/litzor = 0
var/datum/effect_system/sparkle_spread/S
obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
obj/item/firework/attackby(obj/item/W,mob/user, params)
if(litzor)
return
if(istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
if(istype(W, /obj/item/weldingtool) && W:welding || istype(W,/obj/item/lighter) && W:lit)
for(var/mob/M in viewers(user))
to_chat(M, "[user] lits \the [src]")
litzor = 1
@@ -20,16 +20,16 @@ obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
S.start()
qdel(src)
obj/item/weapon/sparkler
obj/item/sparkler
name = "sparkler"
icon = 'icons/obj/fireworks.dmi'
icon_state = "sparkler_0"
var/litzor = 0
var/datum/effect_system/spark_spread/S
obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
obj/item/sparkler/attackby(obj/item/W,mob/user, params)
if(litzor)
return
if(istype(W, /obj/item/weapon/weldingtool) && W:welding || istype(W,/obj/item/weapon/lighter) && W:lit)
if(istype(W, /obj/item/weldingtool) && W:welding || istype(W,/obj/item/lighter) && W:lit)
for(var/mob/M in viewers(user))
to_chat(M, "[user] lits \the [src]")
litzor = 1
@@ -46,21 +46,21 @@ obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
/obj/crate/fireworks
name = "Fireworks!"
/obj/crate/fireworks/New()
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/sparkler(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/weapon/firework(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/sparkler(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
new /obj/item/firework(src)
+20 -20
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/plasma/ptank = null
var/obj/item/tank/plasma/ptank = null
/obj/item/weapon/flamethrower/Destroy()
/obj/item/flamethrower/Destroy()
QDEL_NULL(weldtool)
QDEL_NULL(igniter)
QDEL_NULL(ptank)
@@ -31,7 +31,7 @@
return ..()
/obj/item/weapon/flamethrower/process()
/obj/item/flamethrower/process()
if(!lit)
processing_objects.Remove(src)
return null
@@ -45,7 +45,7 @@
return
/obj/item/weapon/flamethrower/update_icon()
/obj/item/flamethrower/update_icon()
overlays.Cut()
if(igniter)
overlays += "+igniter[status]"
@@ -58,7 +58,7 @@
item_state = "flamethrower_0"
return
/obj/item/weapon/flamethrower/afterattack(atom/target, mob/user, flag)
/obj/item/flamethrower/afterattack(atom/target, mob/user, flag)
if(flag) return // too close
// Make sure our user is still holding us
if(user && user.is_in_active_hand(src))
@@ -68,7 +68,7 @@
add_logs(user, target, "flamethrowered", addition="at [target.x],[target.y],[target.z]")
flame_turf(turflist)
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob, params)
/obj/item/flamethrower/attackby(obj/item/W as obj, mob/user as mob, params)
if(user.stat || user.restrained() || user.lying) return
if(iswrench(W) && !status)//Taking this apart
var/turf/T = get_turf(src)
@@ -101,7 +101,7 @@
update_icon()
return
if(istype(W,/obj/item/weapon/tank/plasma))
if(istype(W,/obj/item/tank/plasma))
if(ptank)
to_chat(user, "<span class='notice'>There appears to already be a plasma tank loaded in [src]!</span>")
return
@@ -117,7 +117,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)
@@ -129,7 +129,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")
@@ -155,9 +155,9 @@
update_icon()
return
/obj/item/weapon/flamethrower/CheckParts(list/parts_list)
/obj/item/flamethrower/CheckParts(list/parts_list)
..()
weldtool = locate(/obj/item/weapon/weldingtool) in contents
weldtool = locate(/obj/item/weldingtool) in contents
igniter = locate(/obj/item/device/assembly/igniter) in contents
weldtool.status = 0
igniter.secured = 0
@@ -165,7 +165,7 @@
update_icon()
//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
var/turf/previousturf = get_turf(src)
@@ -186,7 +186,7 @@
return
/obj/item/weapon/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
/obj/item/flamethrower/proc/ignite_turf(turf/target, release_amount = 0.05)
var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(release_amount)
air_transfer.toxins = air_transfer.toxins // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE
target.assume_air(air_transfer)
@@ -197,10 +197,10 @@
return
/obj/item/weapon/flamethrower/full/New(var/loc)
/obj/item/flamethrower/full/New(var/loc)
..()
if(!weldtool)
weldtool = new /obj/item/weapon/weldingtool(src)
weldtool = new /obj/item/weldingtool(src)
weldtool.status = 0
if(!igniter)
igniter = new /obj/item/device/assembly/igniter(src)
@@ -208,12 +208,12 @@
status = 1
update_icon()
/obj/item/weapon/flamethrower/full/tank/New(var/loc)
/obj/item/flamethrower/full/tank/New(var/loc)
..()
ptank = new /obj/item/weapon/tank/plasma/full(src)
ptank = new /obj/item/tank/plasma/full(src)
update_icon()
/obj/item/weapon/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
/obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
if(ptank && damage && attack_type == PROJECTILE_ATTACK && prob(15))
owner.visible_message("<span class='danger'>[attack_text] hits the fueltank on [owner]'s [src], rupturing it! What a shot!</span>")
var/target_turf = get_turf(owner)
+13 -13
View File
@@ -4,7 +4,7 @@
* Improvised garrotes
*/
/obj/item/weapon/twohanded/garrote // 12TC traitor item
/obj/item/twohanded/garrote // 12TC traitor item
name = "fiber wire"
desc = "A length of razor-thin wire with an elegant wooden handle on either end.<br>You suspect you'd have to be behind the target to use this weapon effectively."
icon_state = "garrot_wrap"
@@ -13,31 +13,31 @@
var/improvised = 0
var/garrote_time
/obj/item/weapon/twohanded/garrote/Destroy()
/obj/item/twohanded/garrote/Destroy()
strangling = null
return ..()
/obj/item/weapon/twohanded/garrote/update_icon()
/obj/item/twohanded/garrote/update_icon()
if(strangling) // If we're strangling someone we want our icon to stay wielded
icon_state = "garrot_unwrap"
return
icon_state = "garrot_[wielded ? "un" : ""]wrap"
/obj/item/weapon/twohanded/garrote/improvised // Made via tablecrafting
/obj/item/twohanded/garrote/improvised // Made via tablecrafting
name = "garrote"
desc = "A length of cable with a shoddily-carved wooden handle tied to either end.<br>You suspect you'd have to be behind the target to use this weapon effectively."
icon_state = "garrot_I_wrap"
improvised = 1
/obj/item/weapon/twohanded/garrote/improvised/update_icon()
/obj/item/twohanded/garrote/improvised/update_icon()
if(strangling)
icon_state = "garrot_I_unwrap"
return
icon_state = "garrot_I_[wielded ? "un" : ""]wrap"
/obj/item/weapon/twohanded/garrote/wield(mob/living/carbon/user)
/obj/item/twohanded/garrote/wield(mob/living/carbon/user)
if(strangling)
user.visible_message("<span class='info'>[user] removes the [src] from [strangling]'s neck.</span>", \
"<span class='warning'>You remove the [src] from [strangling]'s neck.</span>")
@@ -49,7 +49,7 @@
else
..()
/obj/item/weapon/twohanded/garrote/attack(mob/living/carbon/M as mob, mob/user as mob)
/obj/item/twohanded/garrote/attack(mob/living/carbon/M as mob, mob/user as mob)
if(garrote_time > world.time) // Cooldown
return
@@ -85,7 +85,7 @@
U.swap_hand() // For whatever reason the grab will not properly work if we don't have the free hand active.
M.grabbedby(U, 1)
var/obj/item/weapon/grab/G = U.get_active_hand()
var/obj/item/grab/G = U.get_active_hand()
U.swap_hand()
if(G && istype(G))
@@ -110,7 +110,7 @@
return
/obj/item/weapon/twohanded/garrote/process()
/obj/item/twohanded/garrote/process()
if(!strangling)
// Our mark got gibbed or similar
update_icon()
@@ -125,12 +125,12 @@
return
var/mob/living/carbon/human/user = loc
var/obj/item/weapon/grab/G
var/obj/item/grab/G
if(src == user.r_hand && istype(user.l_hand, /obj/item/weapon/grab))
if(src == user.r_hand && istype(user.l_hand, /obj/item/grab))
G = user.l_hand
else if(src == user.l_hand && istype(user.r_hand, /obj/item/weapon/grab))
else if(src == user.l_hand && istype(user.r_hand, /obj/item/grab))
G = user.r_hand
else
@@ -166,7 +166,7 @@
strangling.apply_damage(4, OXY, "head")
/obj/item/weapon/twohanded/garrote/suicide_act(mob/user)
/obj/item/twohanded/garrote/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.</span>")
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
return (OXYLOSS)
@@ -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"
burn_state = FLAMMABLE
/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()
if(src.gift)
user.put_in_active_hand(gift)
@@ -35,7 +35,7 @@
qdel(src)
return
/obj/item/weapon/a_gift/ex_act()
/obj/item/a_gift/ex_act()
qdel(src)
return
@@ -44,10 +44,10 @@
return
to_chat(user, "<span class='notice'>You cant move.</span>")
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
/obj/effect/spresent/attackby(obj/item/W as obj, mob/user as mob, params)
..()
if(!istype(W, /obj/item/weapon/wirecutters))
if(!istype(W, /obj/item/wirecutters))
to_chat(user, "<span class='notice'>I need wirecutters for that.</span>")
return
@@ -59,38 +59,38 @@
qdel(src)
/obj/item/weapon/a_gift/attack_self(mob/M as mob)
var/gift_type = pick(/obj/item/weapon/sord,
/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/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/grown/corncob,
/obj/item/weapon/poster/random_contraband,
/obj/item/weapon/bikehorn,
/obj/item/weapon/beach_ball,
/obj/item/weapon/beach_ball/holoball,
/obj/item/weapon/banhammer,
/obj/item/a_gift/attack_self(mob/M as mob)
var/gift_type = pick(/obj/item/sord,
/obj/item/storage/wallet,
/obj/item/storage/photo_album,
/obj/item/storage/box/snappops,
/obj/item/storage/fancy/crayons,
/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/grown/corncob,
/obj/item/poster/random_contraband,
/obj/item/bikehorn,
/obj/item/beach_ball,
/obj/item/beach_ball/holoball,
/obj/item/banhammer,
/obj/item/toy/balloon,
/obj/item/toy/blink,
/obj/item/weapon/gun/projectile/shotgun/toy/crossbow,
/obj/item/weapon/gun/projectile/revolver/capgun,
/obj/item/gun/projectile/shotgun/toy/crossbow,
/obj/item/gun/projectile/revolver/capgun,
/obj/item/toy/katana,
/obj/random/mech,
/obj/item/toy/spinningtoy,
/obj/item/toy/sword,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
/obj/item/reagent_containers/food/snacks/grown/ambrosia/deus,
/obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
/obj/item/device/paicard,
/obj/item/device/instrument/violin,
/obj/item/device/instrument/guitar,
/obj/item/weapon/storage/belt/utility/full,
/obj/item/storage/belt/utility/full,
/obj/item/clothing/accessory/horrible,
/obj/random/carp_plushie,
/obj/random/plushie,
@@ -100,12 +100,12 @@
/obj/item/toy/owl,
/obj/item/toy/griffin,
/obj/item/clothing/head/blob,
/obj/item/weapon/id_decal/gold,
/obj/item/weapon/id_decal/silver,
/obj/item/weapon/id_decal/prisoner,
/obj/item/weapon/id_decal/centcom,
/obj/item/weapon/id_decal/emag,
/obj/item/weapon/spellbook/oneuse/fake_gib,
/obj/item/id_decal/gold,
/obj/item/id_decal/silver,
/obj/item/id_decal/prisoner,
/obj/item/id_decal/centcom,
/obj/item/id_decal/emag,
/obj/item/spellbook/oneuse/fake_gib,
/obj/item/toy/foamblade,
/obj/item/toy/flash,
/obj/item/toy/minigibber,
@@ -113,8 +113,8 @@
/obj/item/toy/cards/deck,
/obj/item/toy/AI,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/weapon/storage/box/fakesyndiesuit,
/obj/item/weapon/gun/projectile/shotgun/toy/tommygun,
/obj/item/storage/box/fakesyndiesuit,
/obj/item/gun/projectile/shotgun/toy/tommygun,
/obj/item/stack/tile/fakespace/loaded,
)
@@ -1,7 +1,7 @@
/obj/item/weapon/grenade/gas
/obj/item/grenade/gas
name = "Plasma Fire Grenade"
desc = "A compressed plasma grenade, used to start horrific plasma fires."
origin_tech = "materials=3;magnets=4;syndicate=3"
@@ -11,14 +11,14 @@
var/spawn_contents = SPAWN_HEAT | SPAWN_TOXINS
var/spawn_amount = 100
/obj/item/weapon/grenade/gas/prime()
/obj/item/grenade/gas/prime()
var/turf/simulated/target_turf = get_turf(src)
if(istype(target_turf))
target_turf.atmos_spawn_air(spawn_contents, spawn_amount)
target_turf.air_update_turf()
qdel(src)
/obj/item/weapon/grenade/gas/knockout
/obj/item/grenade/gas/knockout
name = "Knockout Grenade"
desc = "A grenade that completely removes all air and heat from its detonation area."
spawn_contents = SPAWN_20C | SPAWN_N2O
@@ -1,7 +1,7 @@
var/turf/T
/obj/item/weapon/grenade/bananade
/obj/item/grenade/bananade
name = "bananade"
desc = "A yellow grenade."
w_class = WEIGHT_CLASS_SMALL
@@ -9,9 +9,9 @@ var/turf/T
icon_state = "banana"
item_state = "flashbang"
var/deliveryamt = 8
var/spawner_type = /obj/item/weapon/grown/bananapeel
var/spawner_type = /obj/item/grown/bananapeel
/obj/item/weapon/grenade/bananade/prime()
/obj/item/grenade/bananade/prime()
if(spawner_type && deliveryamt)
// Make a quick flash
var/turf/T = get_turf(src)
@@ -30,24 +30,24 @@ var/turf/T
qdel(src)
return
/obj/item/weapon/grenade/bananade/casing
/obj/item/grenade/bananade/casing
name = "bananium casing"
desc = "A grenade casing made of bananium."
icon_state = "banana_casing"
var/fillamt = 0
/obj/item/weapon/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
if(istype(I, /obj/item/weapon/grown/bananapeel))
/obj/item/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
if(istype(I, /obj/item/grown/bananapeel))
if(fillamt < 9)
to_chat(usr, "<span class='notice'>You add another banana peel to the assembly.</span>")
fillamt += 1
qdel(I)
else
to_chat(usr, "<span class='notice'>The bananade is full, screwdriver it shut to lock it down.</span>")
if(istype(I, /obj/item/weapon/screwdriver))
if(istype(I, /obj/item/screwdriver))
if(fillamt)
var/obj/item/weapon/grenade/bananade/G = new /obj/item/weapon/grenade/bananade
var/obj/item/grenade/bananade/G = new /obj/item/grenade/bananade
user.unEquip(src)
user.put_in_hands(G)
G.deliveryamt = src.fillamt
@@ -2,7 +2,7 @@
#define WIRED 1
#define READY 2
/obj/item/weapon/grenade/chem_grenade
/obj/item/grenade/chem_grenade
name = "grenade casing"
desc = "A do it yourself grenade casing!"
icon_state = "chemg"
@@ -14,7 +14,7 @@
var/prime_sound = 'sound/items/Screwdriver2.ogg'
var/stage = EMPTY
var/list/beakers = 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
var/obj/item/device/assembly_holder/nadeassembly = null
var/label = null
@@ -25,24 +25,24 @@
var/contained = "" // For logging
var/cores = "" // Also for logging
/obj/item/weapon/grenade/chem_grenade/New()
/obj/item/grenade/chem_grenade/New()
create_reagents(1000)
if(payload_name)
payload_name += " " // formatting, ignore me
update_icon()
/obj/item/weapon/grenade/chem_grenade/Destroy()
/obj/item/grenade/chem_grenade/Destroy()
QDEL_NULL(nadeassembly)
QDEL_LIST(beakers)
return ..()
/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
/obj/item/grenade/chem_grenade/examine(mob/user)
..(user)
display_timer = (stage == READY && !nadeassembly) //show/hide the timer based on assembly state
/obj/item/weapon/grenade/chem_grenade/proc/get_trigger()
/obj/item/grenade/chem_grenade/proc/get_trigger()
if(!nadeassembly) return null
for(var/obj/O in list(nadeassembly.a_left, nadeassembly.a_right))
if(!O || istype(O,/obj/item/device/assembly/igniter)) continue
@@ -50,7 +50,7 @@
return null
/obj/item/weapon/grenade/chem_grenade/proc/update_overlays()
/obj/item/grenade/chem_grenade/proc/update_overlays()
underlays = list()
if(nadeassembly)
underlays += "[nadeassembly.a_left.icon_state]_left"
@@ -60,7 +60,7 @@
for(var/O in nadeassembly.a_right.attached_overlays)
underlays += "[O]_r"
/obj/item/weapon/grenade/chem_grenade/update_icon()
/obj/item/grenade/chem_grenade/update_icon()
if(nadeassembly)
icon = 'icons/obj/assemblies/new_assemblies.dmi'
icon_state = bomb_state
@@ -91,7 +91,7 @@
name = payload_name + "grenade" + label
/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user)
/obj/item/grenade/chem_grenade/attack_self(mob/user)
if(stage == READY && !active)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
@@ -113,15 +113,15 @@
spawn(det_time)
prime()
/obj/item/weapon/grenade/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
/obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
if(damage && attack_type == PROJECTILE_ATTACK && prob(15))
owner.visible_message("<span class='danger'>[attack_text] hits [owner]'s [src], setting it off! What a shot!</span>")
prime()
return 1 //It hit the grenade, not them
/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/I, mob/user, params)
if(istype(I,/obj/item/weapon/hand_labeler))
var/obj/item/weapon/hand_labeler/HL = I
/obj/item/grenade/chem_grenade/attackby(obj/item/I, mob/user, params)
if(istype(I,/obj/item/hand_labeler))
var/obj/item/hand_labeler/HL = I
if(length(HL.label))
label = " ([HL.label])"
return 0
@@ -131,7 +131,7 @@
update_icon()
to_chat(user, "You remove the label from [src].")
return 1
if(istype(I, /obj/item/weapon/screwdriver))
if(istype(I, /obj/item/screwdriver))
if(stage == WIRED)
if(beakers.len)
to_chat(user, "<span class='notice'>You lock the assembly.</span>")
@@ -200,12 +200,12 @@
to_chat(user, "<span class='notice'>You rig [src].</span>")
update_icon()
else if(stage == READY && istype(I, /obj/item/weapon/wirecutters))
else if(stage == READY && istype(I, /obj/item/wirecutters))
to_chat(user, "<span class='notice'>You unlock the assembly.</span>")
stage = WIRED
update_icon()
else if(stage == WIRED && istype(I, /obj/item/weapon/wrench))
else if(stage == WIRED && istype(I, /obj/item/wrench))
to_chat(user, "<span class='notice'>You open the grenade and remove the contents.</span>")
stage = EMPTY
payload_name = null
@@ -222,56 +222,56 @@
//assembly stuff
/obj/item/weapon/grenade/chem_grenade/receive_signal()
/obj/item/grenade/chem_grenade/receive_signal()
prime()
/obj/item/weapon/grenade/chem_grenade/HasProximity(atom/movable/AM)
/obj/item/grenade/chem_grenade/HasProximity(atom/movable/AM)
if(nadeassembly)
nadeassembly.HasProximity(AM)
/obj/item/weapon/grenade/chem_grenade/Move() // prox sensors and infrared care about this
/obj/item/grenade/chem_grenade/Move() // prox sensors and infrared care about this
..()
if(nadeassembly)
nadeassembly.process_movement()
/obj/item/weapon/grenade/chem_grenade/pickup()
/obj/item/grenade/chem_grenade/pickup()
..()
if(nadeassembly)
nadeassembly.process_movement()
/obj/item/weapon/grenade/chem_grenade/Crossed(atom/movable/AM)
/obj/item/grenade/chem_grenade/Crossed(atom/movable/AM)
if(nadeassembly)
nadeassembly.Crossed(AM)
/obj/item/weapon/grenade/chem_grenade/on_found(mob/finder)
/obj/item/grenade/chem_grenade/on_found(mob/finder)
if(nadeassembly)
nadeassembly.on_found(finder)
/obj/item/weapon/grenade/chem_grenade/hear_talk(mob/living/M, msg)
/obj/item/grenade/chem_grenade/hear_talk(mob/living/M, msg)
if(nadeassembly)
nadeassembly.hear_talk(M, msg)
/obj/item/weapon/grenade/chem_grenade/hear_message(mob/living/M, msg)
/obj/item/grenade/chem_grenade/hear_message(mob/living/M, msg)
if(nadeassembly)
nadeassembly.hear_message(M, msg)
/obj/item/weapon/grenade/chem_grenade/Bump()
/obj/item/grenade/chem_grenade/Bump()
..()
if(nadeassembly)
nadeassembly.process_movement()
/obj/item/weapon/grenade/chem_grenade/throw_impact() // called when a throw stops
/obj/item/grenade/chem_grenade/throw_impact() // called when a throw stops
..()
if(nadeassembly)
nadeassembly.process_movement()
/obj/item/weapon/grenade/chem_grenade/prime()
/obj/item/grenade/chem_grenade/prime()
if(stage != READY)
return
var/list/datum/reagents/reactants = list()
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
for(var/obj/item/reagent_containers/glass/G in beakers)
reactants += G.reagents
if(!chem_splash(get_turf(src), affected_area, reactants, ignition_temp, threatscale) && !no_splash)
@@ -296,7 +296,7 @@
qdel(src)
/obj/item/weapon/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey)
/obj/item/grenade/chem_grenade/proc/CreateDefaultTrigger(var/typekey)
if(ispath(typekey,/obj/item/device/assembly))
nadeassembly = new(src)
nadeassembly.a_left = new /obj/item/device/assembly/igniter(nadeassembly)
@@ -314,25 +314,25 @@
//Large chem grenades accept slime cores and use the appropriately.
/obj/item/weapon/grenade/chem_grenade/large
/obj/item/grenade/chem_grenade/large
name = "large grenade casing"
desc = "A custom made large grenade. It affects a larger area."
icon_state = "large_grenade"
bomb_state = "largebomb"
allowed_containers = list(/obj/item/weapon/reagent_containers/glass,/obj/item/weapon/reagent_containers/food/condiment,
/obj/item/weapon/reagent_containers/food/drinks)
allowed_containers = list(/obj/item/reagent_containers/glass,/obj/item/reagent_containers/food/condiment,
/obj/item/reagent_containers/food/drinks)
origin_tech = "combat=3;engineering=3"
affected_area = 5
ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades.
threatscale = 1.1 // 10% more effective.
/obj/item/weapon/grenade/chem_grenade/large/prime()
/obj/item/grenade/chem_grenade/large/prime()
if(stage != READY)
return
for(var/obj/item/slime_extract/S in beakers)
if(S.Uses)
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(S, G.reagents.total_volume)
//If there is still a core (sometimes it's used up)
@@ -341,7 +341,7 @@
if(S)
if(S.reagents && S.reagents.total_volume)
for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
for(var/obj/item/reagent_containers/glass/G in beakers)
S.reagents.trans_to(G, S.reagents.total_volume)
else
S.forceMove(get_turf(src))
@@ -352,7 +352,7 @@
//I tried to just put it in the allowed_containers list but
//if you do that it must have reagents. If you're going to
//make a special case you might as well do it explicitly. -Sayu
/obj/item/weapon/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
/obj/item/grenade/chem_grenade/large/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/slime_extract) && stage == WIRED)
to_chat(user, "<span class='notice'>You add [I] to the assembly.</span>")
user.drop_item()
@@ -361,14 +361,14 @@
else
return ..()
/obj/item/weapon/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation.
/obj/item/grenade/chem_grenade/cryo // Intended for rare cryogenic mixes. Cools the area moderately upon detonation.
name = "cryo grenade"
desc = "A custom made cryogenic grenade. It rapidly cools its contents upon detonation."
icon_state = "cryog"
affected_area = 2
ignition_temp = -100
/obj/item/weapon/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures.
/obj/item/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures.
name = "pyro grenade"
desc = "A custom made pyrotechnical grenade. It heats up and ignites its contents upon detonation."
icon_state = "pyrog"
@@ -376,14 +376,14 @@
affected_area = 3
ignition_temp = 500 // This is enough to expose a hotspot.
/obj/item/weapon/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses.
/obj/item/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses.
name = "advanced release grenade"
desc = "A custom made advanced release grenade. It is able to be detonated more than once. Can be configured using a multitool."
icon_state = "timeg"
origin_tech = "combat=3;engineering=4"
var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool.
/obj/item/weapon/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params)
/obj/item/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params)
if(ismultitool(I))
switch(unit_spread)
if(0 to 24)
@@ -396,12 +396,12 @@
return
..()
/obj/item/weapon/grenade/chem_grenade/adv_release/prime()
/obj/item/grenade/chem_grenade/adv_release/prime()
if(stage != READY)
return
var/total_volume = 0
for(var/obj/item/weapon/reagent_containers/RC in beakers)
for(var/obj/item/reagent_containers/RC in beakers)
total_volume += RC.reagents.total_volume
if(!total_volume)
qdel(src)
@@ -410,7 +410,7 @@
var/fraction = unit_spread/total_volume
var/datum/reagents/reactants = new(unit_spread)
reactants.my_atom = src
for(var/obj/item/weapon/reagent_containers/RC in beakers)
for(var/obj/item/reagent_containers/RC in beakers)
RC.reagents.trans_to(reactants, RC.reagents.total_volume*fraction, threatscale, 1, 1)
chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale)
@@ -427,15 +427,15 @@
var/area/DA = get_area(DT)
log_game("A grenade detonated at [DA.name] ([DT.x], [DT.y], [DT.z])")
/obj/item/weapon/grenade/chem_grenade/metalfoam
/obj/item/grenade/chem_grenade/metalfoam
payload_name = "metal foam"
desc = "Used for emergency sealing of air breaches."
stage = READY
New()
..()
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("fluorosurfactant", 10)
@@ -446,15 +446,15 @@
update_icon()
/obj/item/weapon/grenade/chem_grenade/incendiary
/obj/item/grenade/chem_grenade/incendiary
payload_name = "incendiary"
desc = "Used for clearing rooms of living things."
stage = READY
New()
..()
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", 25)
B2.reagents.add_reagent("plasma", 25)
@@ -466,15 +466,15 @@
update_icon()
/obj/item/weapon/grenade/chem_grenade/antiweed
/obj/item/grenade/chem_grenade/antiweed
payload_name = "weed killer"
desc = "Used for purging large areas of invasive plant species. Contents under pressure. Do not directly inhale contents."
stage = READY
New()
..()
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("atrazine", 30)
B1.reagents.add_reagent("potassium", 20)
@@ -487,15 +487,15 @@
update_icon()
/obj/item/weapon/grenade/chem_grenade/cleaner
/obj/item/grenade/chem_grenade/cleaner
payload_name = "cleaner"
desc = "BLAM!-brand foaming space cleaner. In a special applicator for rapid cleaning of wide areas."
stage = READY
New()
..()
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("fluorosurfactant", 40)
B2.reagents.add_reagent("cleaner", 10)
@@ -506,15 +506,15 @@
update_icon()
/obj/item/weapon/grenade/chem_grenade/teargas
/obj/item/grenade/chem_grenade/teargas
payload_name = "teargas"
desc = "Used for nonlethal riot control. Contents under pressure. Do not directly inhale contents."
stage = READY
New()
..()
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("condensedcapsaicin", 25)
B1.reagents.add_reagent("potassium", 25)
@@ -525,15 +525,15 @@
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/facid
/obj/item/grenade/chem_grenade/facid
name = "acid grenade"
desc = "Used for melting armoured opponents."
stage = READY
/obj/item/weapon/grenade/chem_grenade/facid/New()
/obj/item/grenade/chem_grenade/facid/New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src)
B1.reagents.add_reagent("facid", 280)
B1.reagents.add_reagent("potassium", 20)
@@ -545,15 +545,15 @@
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/saringas
/obj/item/grenade/chem_grenade/saringas
payload_name = "saringas"
desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution."
stage = READY
New()
..()
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("sarin", 25)
B1.reagents.add_reagent("potassium", 25)
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/clown_grenade
/obj/item/grenade/clown_grenade
name = "Banana Grenade"
desc = "HONK! brand Bananas. In a special applicator for rapid slipping of wide areas."
icon_state = "banana"
@@ -23,7 +23,7 @@
for(var/direction in alldirs)
for(i = 0; i < 2; i++)
number++
var/obj/item/weapon/grown/bananapeel/traitorpeel/peel = new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
var/obj/item/grown/bananapeel/traitorpeel/peel = new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
/* var/direction = pick(alldirs)
var/spaces = pick(1;150, 2)
var/a = 0
@@ -35,7 +35,7 @@
step(peel,direction)
else
step(peel,direction)
new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
new /obj/item/grown/bananapeel/traitorpeel(get_turf(src.loc))
qdel(src)
return
/*
@@ -46,10 +46,10 @@
return
if(locate(/obj/structure/window) in T)
return
new /obj/item/weapon/grown/bananapeel/traitorpeel(T)
new /obj/item/grown/bananapeel/traitorpeel(T)
*/
/obj/item/weapon/grown/bananapeel/traitorpeel
/obj/item/grown/bananapeel/traitorpeel
trip_stun = 0
trip_weaken = 7
trip_tiles = 4
@@ -58,14 +58,14 @@
trip_chance = 100
/obj/item/weapon/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H)
/obj/item/grown/bananapeel/traitorpeel/on_trip(mob/living/carbon/human/H)
. = ..()
if(.)
to_chat(H, "<span class='warning'>Your feet feel like they're on fire!</span>")
H.take_overall_damage(0, rand(2,8))
H.take_organ_damage(2) // Was 5 -- TLE
/obj/item/weapon/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom)
/obj/item/grown/bananapeel/traitorpeel/throw_impact(atom/hit_atom)
var/burned = rand(1,3)
if(istype(hit_atom ,/mob/living))
var/mob/living/M = hit_atom
@@ -1,14 +1,14 @@
////////////////////
//Clusterbang
////////////////////
/obj/item/weapon/grenade/clusterbuster
/obj/item/grenade/clusterbuster
desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
var/payload = /obj/item/weapon/grenade/flashbang/cluster
var/payload = /obj/item/grenade/flashbang/cluster
/obj/item/weapon/grenade/clusterbuster/prime()
/obj/item/grenade/clusterbuster/prime()
update_mob()
var/numspawned = rand(4,8)
var/again = 0
@@ -19,7 +19,7 @@
numspawned--
for(var/loop = again ,loop > 0, loop--)
new /obj/item/weapon/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
new /obj/item/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
new /obj/effect/payload_spawner(loc, payload, numspawned)//Launches payload
@@ -31,13 +31,13 @@
//////////////////////
//Clusterbang segment
//////////////////////
/obj/item/weapon/grenade/clusterbuster/segment
/obj/item/grenade/clusterbuster/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/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/weapon/grenade/flashbang/cluster)
/obj/item/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/grenade/flashbang/cluster)
..()
icon_state = "clusterbang_segment_active"
payload = payload_type
@@ -47,7 +47,7 @@
prime()
/obj/item/weapon/grenade/clusterbuster/segment/prime()
/obj/item/grenade/clusterbuster/segment/prime()
new /obj/effect/payload_spawner(loc, payload, rand(4,8))
@@ -61,14 +61,14 @@
/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
for(var/loop = numspawned ,loop > 0, loop--)
var/obj/item/weapon/grenade/P = new type(loc)
if(istype(P, /obj/item/weapon/grenade))
var/obj/item/grenade/P = new type(loc)
if(istype(P, /obj/item/grenade))
P.active = 1
walk_away(P,loc,rand(1,4))
spawn(rand(15,60))
if(!QDELETED(P))
if(istype(P, /obj/item/weapon/grenade))
if(istype(P, /obj/item/grenade))
P.prime()
qdel(src)
@@ -76,200 +76,200 @@
//////////////////////////////////
//Custom payload clusterbusters
/////////////////////////////////
/obj/item/weapon/grenade/flashbang/cluster
/obj/item/grenade/flashbang/cluster
icon_state = "flashbang_active"
/obj/item/weapon/grenade/clusterbuster/emp
/obj/item/grenade/clusterbuster/emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/empgrenade
payload = /obj/item/grenade/empgrenade
/obj/item/weapon/grenade/clusterbuster/smoke
/obj/item/grenade/clusterbuster/smoke
name = "Ninja Vanish"
payload = /obj/item/weapon/grenade/smokebomb
payload = /obj/item/grenade/smokebomb
/obj/item/weapon/grenade/clusterbuster/metalfoam
/obj/item/grenade/clusterbuster/metalfoam
name = "Instant Concrete"
payload = /obj/item/weapon/grenade/chem_grenade/metalfoam
payload = /obj/item/grenade/chem_grenade/metalfoam
/obj/item/weapon/grenade/clusterbuster/inferno
/obj/item/grenade/clusterbuster/inferno
name = "Inferno"
payload = /obj/item/weapon/grenade/chem_grenade/incendiary
payload = /obj/item/grenade/chem_grenade/incendiary
/obj/item/weapon/grenade/clusterbuster/antiweed
/obj/item/grenade/clusterbuster/antiweed
name = "RoundDown"
payload = /obj/item/weapon/grenade/chem_grenade/antiweed
payload = /obj/item/grenade/chem_grenade/antiweed
/obj/item/weapon/grenade/clusterbuster/cleaner
/obj/item/grenade/clusterbuster/cleaner
name = "Mr. Proper"
payload = /obj/item/weapon/grenade/chem_grenade/cleaner
payload = /obj/item/grenade/chem_grenade/cleaner
/obj/item/weapon/grenade/clusterbuster/teargas
/obj/item/grenade/clusterbuster/teargas
name = "Oignon Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/teargas
payload = /obj/item/grenade/chem_grenade/teargas
/obj/item/weapon/grenade/clusterbuster/facid
/obj/item/grenade/clusterbuster/facid
name = "Aciding Rain"
payload = /obj/item/weapon/grenade/chem_grenade/facid
payload = /obj/item/grenade/chem_grenade/facid
/obj/item/weapon/grenade/clusterbuster/syndieminibomb
/obj/item/grenade/clusterbuster/syndieminibomb
name = "SyndiWrath"
payload = /obj/item/weapon/grenade/syndieminibomb
payload = /obj/item/grenade/syndieminibomb
/obj/item/weapon/grenade/clusterbuster/spawner_manhacks
/obj/item/grenade/clusterbuster/spawner_manhacks
name = "iViscerator"
payload = /obj/item/weapon/grenade/spawnergrenade/manhacks
payload = /obj/item/grenade/spawnergrenade/manhacks
/obj/item/weapon/grenade/clusterbuster/spawner_spesscarp
/obj/item/grenade/clusterbuster/spawner_spesscarp
name = "Invasion of the Space Carps"
payload = /obj/item/weapon/grenade/spawnergrenade/spesscarp
payload = /obj/item/grenade/spawnergrenade/spesscarp
/obj/item/weapon/grenade/clusterbuster/monster
/obj/item/grenade/clusterbuster/monster
name = "Monster Megabomb"
payload = /obj/item/weapon/grenade/chem_grenade/large/monster
payload = /obj/item/grenade/chem_grenade/large/monster
/obj/item/weapon/grenade/clusterbuster/meat
/obj/item/grenade/clusterbuster/meat
name = "Mega Meat Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/meat
payload = /obj/item/grenade/chem_grenade/meat
/obj/item/weapon/grenade/clusterbuster/nervegas
/obj/item/grenade/clusterbuster/nervegas
name = "Nerve Gas Clusterbomb"
payload = /obj/item/weapon/grenade/chem_grenade/saringas
payload = /obj/item/grenade/chem_grenade/saringas
/obj/item/weapon/grenade/clusterbuster/megadirt
/obj/item/grenade/clusterbuster/megadirt
name = "Megamaid's Revenge Grenade"
payload = /obj/item/weapon/grenade/chem_grenade/dirt
payload = /obj/item/grenade/chem_grenade/dirt
/obj/item/weapon/grenade/clusterbuster/ultima
/obj/item/grenade/clusterbuster/ultima
name = "Earth Shattering Kaboom"
desc = "Contains one Aludium Q-36 explosive space modulator."
payload = /obj/item/weapon/grenade/chem_grenade/explosion
payload = /obj/item/grenade/chem_grenade/explosion
/obj/item/weapon/grenade/clusterbuster/lube
/obj/item/grenade/clusterbuster/lube
name = "Newton's First Law"
desc = "An object in motion remains in motion."
payload = /obj/item/weapon/grenade/chem_grenade/lube
payload = /obj/item/grenade/chem_grenade/lube
/obj/item/weapon/grenade/clusterbuster/hippie
/obj/item/grenade/clusterbuster/hippie
name = "Hippie Grenade"
desc = "Almost as good as the summer of '69."
payload = /obj/item/weapon/grenade/chem_grenade/drugs
payload = /obj/item/grenade/chem_grenade/drugs
/obj/item/weapon/grenade/clusterbuster/holy
/obj/item/grenade/clusterbuster/holy
name = "Purification Grenade"
desc = "Blessed excessively."
payload = /obj/item/weapon/grenade/chem_grenade/holywater
payload = /obj/item/grenade/chem_grenade/holywater
/obj/item/weapon/grenade/clusterbuster/hellwater
/obj/item/grenade/clusterbuster/hellwater
name = "Righteous Fury"
desc = "It's righteous, not badminnery."
payload = /obj/item/weapon/grenade/chem_grenade/hellwater
payload = /obj/item/grenade/chem_grenade/hellwater
/obj/item/weapon/grenade/clusterbuster/booze
/obj/item/grenade/clusterbuster/booze
name = "Booze Grenade"
payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
payload = /obj/item/reagent_containers/food/drinks/bottle/random_drink
/obj/item/weapon/grenade/clusterbuster/honk
/obj/item/grenade/clusterbuster/honk
name = "Mega Honk Grenade"
payload = /obj/item/weapon/grown/bananapeel
payload = /obj/item/grown/bananapeel
/obj/item/weapon/grenade/clusterbuster/honk_evil
/obj/item/grenade/clusterbuster/honk_evil
name = "Evil Mega Honk Grenade"
payload = /obj/item/weapon/grenade/clown_grenade
payload = /obj/item/grenade/clown_grenade
/obj/item/weapon/grenade/clusterbuster/xmas
/obj/item/grenade/clusterbuster/xmas
name = "Christmas Miracle"
payload = /obj/item/weapon/a_gift
payload = /obj/item/a_gift
/obj/item/weapon/grenade/clusterbuster/dirt
/obj/item/grenade/clusterbuster/dirt
name = "Megamaid's Job Security Grenade"
payload = /obj/effect/decal/cleanable/random
/obj/item/weapon/grenade/clusterbuster/apocalypsefake
/obj/item/grenade/clusterbuster/apocalypsefake
name = "Fun Bomb"
desc = "Not like the other bomb."
payload = /obj/item/toy/spinningtoy
/obj/item/weapon/grenade/clusterbuster/apocalypse
/obj/item/grenade/clusterbuster/apocalypse
name = "Apocalypse Bomb"
desc = "No matter what, do not EVER use this."
payload = /obj/singularity
/obj/item/weapon/grenade/clusterbuster/tools
/obj/item/grenade/clusterbuster/tools
name = "Quick Repair Grenade"
desc = "An assistant's every dream."
payload = /obj/random/tool
/obj/item/weapon/grenade/clusterbuster/tools
/obj/item/grenade/clusterbuster/tools
name = "Engineering Deployment Platfom"
desc = "For the that time when gearing up was just too hard."
payload = /obj/random/tech_supply
/obj/item/weapon/grenade/clusterbuster/toys
/obj/item/grenade/clusterbuster/toys
name = "Toy Delivery System"
desc = "Who needs skill at arcades anyway?"
payload = /obj/item/toy/random
/obj/item/weapon/grenade/clusterbuster/banquet
/obj/item/grenade/clusterbuster/banquet
name = "Bork Bork Bonanza"
desc = "Bork bork bork."
payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
payload = /obj/item/grenade/clusterbuster/banquet/child
/obj/item/weapon/grenade/clusterbuster/banquet/child
payload = /obj/item/weapon/grenade/chem_grenade/large/feast
/obj/item/grenade/clusterbuster/banquet/child
payload = /obj/item/grenade/chem_grenade/large/feast
/obj/item/weapon/grenade/clusterbuster/aviary
/obj/item/grenade/clusterbuster/aviary
name = "Poly-Poly Grenade"
desc = "That's an uncomfortable number of birds."
payload = /mob/living/simple_animal/parrot
/obj/item/weapon/grenade/clusterbuster/monkey
/obj/item/grenade/clusterbuster/monkey
name = "Barrel of Monkeys"
desc = "Not really that much fun."
payload = /mob/living/carbon/human/monkey
/obj/item/weapon/grenade/clusterbuster/fluffy
/obj/item/grenade/clusterbuster/fluffy
name = "Fluffy Love Bomb"
desc = "Exactly as snuggly as it sounds."
payload = /mob/living/simple_animal/pet/corgi/puppy
/obj/item/weapon/grenade/clusterbuster/fox
/obj/item/grenade/clusterbuster/fox
name = "Troublemaking Grenade"
desc = "More trouble than two foxes combined."
payload = /mob/living/simple_animal/pet/fox
/obj/item/weapon/grenade/clusterbuster/crab
/obj/item/grenade/clusterbuster/crab
name = "Crab Grenade"
desc = "Reserved for those pesky request."
payload = /mob/living/simple_animal/crab
/obj/item/weapon/grenade/clusterbuster/plasma
/obj/item/grenade/clusterbuster/plasma
name = "Plasma Cluster Grenade"
desc = "For when everything needs to die in a fire."
payload = /obj/item/weapon/grenade/gas
payload = /obj/item/grenade/gas
/obj/item/weapon/grenade/clusterbuster/n2o
/obj/item/grenade/clusterbuster/n2o
name = "N2O Cluster Grenade"
desc = "For when you need to knock out EVERYONE."
payload = /obj/item/weapon/grenade/gas/knockout
payload = /obj/item/grenade/gas/knockout
////////////Clusterbuster of Clusterbusters////////////
/obj/item/weapon/grenade/clusterbuster/mega_fox
/obj/item/grenade/clusterbuster/mega_fox
name = "Mega Troublemaking Grenade."
payload = /obj/item/weapon/grenade/clusterbuster/fox
payload = /obj/item/grenade/clusterbuster/fox
/obj/item/weapon/grenade/clusterbuster/mega_bang
/obj/item/grenade/clusterbuster/mega_bang
name = "For when stunlocking is just too short."
payload = /obj/item/weapon/grenade/clusterbuster
payload = /obj/item/grenade/clusterbuster
/obj/item/weapon/grenade/clusterbuster/mega_syndieminibomb
/obj/item/grenade/clusterbuster/mega_syndieminibomb
name = "Mega SyndiWrath."
payload = /obj/item/weapon/grenade/clusterbuster/syndieminibomb
payload = /obj/item/grenade/clusterbuster/syndieminibomb
/obj/item/weapon/grenade/clusterbuster/mega_honk_evil
/obj/item/grenade/clusterbuster/mega_honk_evil
name = "Mega Evil Mega Honk Grenade."
payload = /obj/item/weapon/grenade/clusterbuster/honk_evil
payload = /obj/item/grenade/clusterbuster/honk_evil
/obj/item/weapon/grenade/clusterbuster/mega_emp
/obj/item/grenade/clusterbuster/mega_emp
name = "Electromagnetic Storm"
payload = /obj/item/weapon/grenade/clusterbuster/emp
payload = /obj/item/grenade/clusterbuster/emp
@@ -1,10 +1,10 @@
/obj/item/weapon/grenade/confetti
/obj/item/grenade/confetti
name = "party grenade"
desc = "Party time!"
icon_state = "confetti"
var/spawner_type = /obj/effect/decal/cleanable/confetti
/obj/item/weapon/grenade/confetti/prime()
/obj/item/grenade/confetti/prime()
var/turf/T = get_turf(src)
playsound(T, 'sound/effects/confetti_partywhistle.ogg', 100, 1)
for(var/i in 1 to 20) //20 confettis. Yes.
@@ -1,11 +1,11 @@
/obj/item/weapon/grenade/chem_grenade/dirt
/obj/item/grenade/chem_grenade/dirt
payload_name = "dirt"
desc = "From the makers of BLAM! brand foaming space cleaner, this bomb guarantees steady work for any janitor."
stage = 2
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
var/list/muck = list("blood","carbon","flour","radium")
var/filth = pick(muck - "radium") // not usually radioactive
@@ -16,7 +16,7 @@
beakers += B1
/obj/item/weapon/grenade/chem_grenade/meat
/obj/item/grenade/chem_grenade/meat
payload_name = "meat"
desc = "Not always as messy as the name implies."
stage = 2
@@ -24,8 +24,8 @@
New()
..()
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("blood",60)
if(prob(5))
@@ -35,7 +35,7 @@
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/holywater
/obj/item/grenade/chem_grenade/holywater
payload_name = "holy water"
desc = "Then shalt thou count to three, no more, no less."
stage = 2
@@ -43,11 +43,11 @@
New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/large/B = new(src)
var/obj/item/reagent_containers/glass/beaker/large/B = new(src)
B.reagents.add_reagent("holywater",100)
beakers += B
/obj/item/weapon/grenade/chem_grenade/hellwater
/obj/item/grenade/chem_grenade/hellwater
payload_name = "hell water"
desc = "And he struck them down with an unholy fury that burn like one-thousands badmins."
stage = 2
@@ -55,8 +55,8 @@
New()
..()
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("hell_water",80)
B1.reagents.add_reagent("sugar",20)
B2.reagents.add_reagent("hell_water", 60)
@@ -64,15 +64,15 @@
B2.reagents.add_reagent("phosphorus", 20)
/obj/item/weapon/grenade/chem_grenade/drugs
/obj/item/grenade/chem_grenade/drugs
payload_name = "miracle"
desc = "How does it work?"
stage = 2
New()
..()
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("space_drugs", 25)
B1.reagents.add_reagent("lsd", 25)
@@ -84,15 +84,15 @@
beakers += B2
update_icon()
/obj/item/weapon/grenade/chem_grenade/ethanol
/obj/item/grenade/chem_grenade/ethanol
payload_name = "ethanol"
desc = "Ach, that hits the spot."
stage = 2
New()
..()
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("ethanol", 75)
B1.reagents.add_reagent("potassium", 25)
@@ -107,38 +107,38 @@
// -------------------------------------
// Grenades using new grenade assemblies
// -------------------------------------
/obj/item/weapon/grenade/chem_grenade/lube
/obj/item/grenade/chem_grenade/lube
payload_name = "lubricant"
stage = 2
/obj/item/weapon/grenade/chem_grenade/lube/New()
/obj/item/grenade/chem_grenade/lube/New()
..()
var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/B1 = new(src)
B1.reagents.add_reagent("lube",50)
beakers += B1
/obj/item/weapon/grenade/chem_grenade/lube/remote/New()
/obj/item/grenade/chem_grenade/lube/remote/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/lube/prox/New()
/obj/item/grenade/chem_grenade/lube/prox/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/lube/tripwire/New()
/obj/item/grenade/chem_grenade/lube/tripwire/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/infra)
// Basic explosion grenade
/obj/item/weapon/grenade/chem_grenade/explosion
/obj/item/grenade/chem_grenade/explosion
payload_name = "conventional"
stage = 2
/obj/item/weapon/grenade/chem_grenade/explosion/New()
/obj/item/grenade/chem_grenade/explosion/New()
..()
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("glycerol",30) // todo: someone says NG is overpowered, test.
B1.reagents.add_reagent("sacid",15)
B2.reagents.add_reagent("sacid",15)
@@ -147,83 +147,83 @@
beakers += B2
// Assembly Variants
/obj/item/weapon/grenade/chem_grenade/explosion/remote/New()
/obj/item/grenade/chem_grenade/explosion/remote/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/explosion/prox/New()
/obj/item/grenade/chem_grenade/explosion/prox/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/explosion/mine/New()
/obj/item/grenade/chem_grenade/explosion/mine/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
// Water + Potassium = Boom
/obj/item/weapon/grenade/chem_grenade/waterpotassium
/obj/item/grenade/chem_grenade/waterpotassium
payload_name = "chem explosive"
stage = 2
/obj/item/weapon/grenade/chem_grenade/waterpotassium/New()
/obj/item/grenade/chem_grenade/waterpotassium/New()
..()
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",100)
B2.reagents.add_reagent("potassium",100)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/waterpotassium/remote/New()
/obj/item/grenade/chem_grenade/waterpotassium/remote/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/waterpotassium/prox/New()
/obj/item/grenade/chem_grenade/waterpotassium/prox/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire/New()
/obj/item/grenade/chem_grenade/waterpotassium/tripwire/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/infra)
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire_armed/New()
/obj/item/grenade/chem_grenade/waterpotassium/tripwire_armed/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/infra/armed)
/obj/item/weapon/grenade/chem_grenade/waterpotassium/tripwire_armed_stealth/New()
/obj/item/grenade/chem_grenade/waterpotassium/tripwire_armed_stealth/New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/infra/armed/stealth)
// Basic EMP grenade
/obj/item/weapon/grenade/chem_grenade/emp
/obj/item/grenade/chem_grenade/emp
payload_name = "EMP"
stage = 2
New()
..()
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("uranium",50)
B2.reagents.add_reagent("iron",50)
beakers += B1
beakers += B2
// Assembly Variants
/obj/item/weapon/grenade/chem_grenade/emp/remote
/obj/item/grenade/chem_grenade/emp/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/emp/prox
/obj/item/grenade/chem_grenade/emp/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/emp/mine
/obj/item/grenade/chem_grenade/emp/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
@@ -232,7 +232,7 @@
// Dangerous slime core grenades
// --------------------------------------
/*
/obj/item/weapon/grenade/chem_grenade/large/bluespace
/obj/item/grenade/chem_grenade/large/bluespace
payload_name = "bluespace slime"
desc = "A standard grenade casing containing weaponized slime extract."
stage = 2
@@ -241,28 +241,28 @@
..()
var/obj/item/slime_extract/bluespace/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/large/bluespace/prox
/obj/item/grenade/chem_grenade/large/bluespace/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/large/bluespace/mine
/obj/item/grenade/chem_grenade/large/bluespace/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
/obj/item/weapon/grenade/chem_grenade/large/bluespace/remote
/obj/item/grenade/chem_grenade/large/bluespace/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
*/
/obj/item/weapon/grenade/chem_grenade/large/monster
/obj/item/grenade/chem_grenade/large/monster
payload_name = "gold slime"
desc = "A standard grenade containing weaponized slime extract."
stage = 2
@@ -271,27 +271,27 @@
..()
var/obj/item/slime_extract/gold/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
/obj/item/weapon/grenade/chem_grenade/large/monster/prox
/obj/item/grenade/chem_grenade/large/monster/prox
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/prox_sensor)
/obj/item/weapon/grenade/chem_grenade/large/monster/mine
/obj/item/grenade/chem_grenade/large/monster/mine
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/mousetrap)
/obj/item/weapon/grenade/chem_grenade/large/monster/remote
/obj/item/grenade/chem_grenade/large/monster/remote
New()
..()
CreateDefaultTrigger(/obj/item/device/assembly/signaler)
/obj/item/weapon/grenade/chem_grenade/large/feast
/obj/item/grenade/chem_grenade/large/feast
payload_name = "silver slime"
desc = "A standard grenade containing weaponized slime extract."
stage = 2
@@ -300,7 +300,7 @@
..()
var/obj/item/slime_extract/silver/B1 = new(src)
B1.Uses = rand(1,3)
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
var/obj/item/reagent_containers/glass/beaker/B2 = new(src)
B2.reagents.add_reagent("plasma",5 * B1.Uses)
beakers += B1
beakers += B2
@@ -309,27 +309,27 @@
// Syndie Kits
// --------------------------------------
/obj/item/weapon/storage/box/syndie_kit/remotegrenade
/obj/item/storage/box/syndie_kit/remotegrenade
name = "Remote Grenade Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/explosion/remote(src)
new /obj/item/grenade/chem_grenade/explosion/remote(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
/obj/item/weapon/storage/box/syndie_kit/remoteemp
/obj/item/storage/box/syndie_kit/remoteemp
name = "Remote EMP Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/emp/remote(src)
new /obj/item/grenade/chem_grenade/emp/remote(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
/obj/item/weapon/storage/box/syndie_kit/remotelube
/obj/item/storage/box/syndie_kit/remotelube
name = "Remote Lube Kit"
New()
..()
new /obj/item/weapon/grenade/chem_grenade/lube(src)
new /obj/item/grenade/chem_grenade/lube(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
return
@@ -1,11 +1,11 @@
/obj/item/weapon/grenade/empgrenade
/obj/item/grenade/empgrenade
name = "classic EMP grenade"
desc = "It is designed to wreak havoc on electronic systems."
icon_state = "emp"
item_state = "emp"
origin_tech = "magnets=3;combat=2"
/obj/item/weapon/grenade/empgrenade/prime()
/obj/item/grenade/empgrenade/prime()
update_mob()
empulse(src, 4, 10)
qdel(src)
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/flashbang
/obj/item/grenade/flashbang
name = "flashbang"
icon_state = "flashbang"
item_state = "flashbang"
@@ -7,7 +7,7 @@
light_color = LIGHT_COLOR_WHITE
var/light_time = 2
/obj/item/weapon/grenade/flashbang/prime()
/obj/item/grenade/flashbang/prime()
update_mob()
var/flashbang_turf = get_turf(src)
if(!flashbang_turf)
@@ -26,7 +26,7 @@
spawn(light_time)
qdel(src)
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
/obj/item/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
M.show_message("<span class='warning'>BANG</span>", 2)
playsound(loc, 'sound/effects/bang.ogg', 25, 1)
@@ -1,6 +1,6 @@
//improvised explosives//
/obj/item/weapon/grenade/iedcasing
/obj/item/grenade/iedcasing
name = "improvised firebomb"
desc = "A weak, improvised incendiary device."
w_class = WEIGHT_CLASS_SMALL
@@ -16,7 +16,7 @@
display_timer = 0
var/list/times
/obj/item/weapon/grenade/iedcasing/New()
/obj/item/grenade/iedcasing/New()
..()
overlays += "improvised_grenade_filled"
overlays += "improvised_grenade_wired"
@@ -25,9 +25,9 @@
if(det_time < 0) //checking for 'duds'
det_time = rand(30,80)
/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list)
/obj/item/grenade/iedcasing/CheckParts(list/parts_list)
..()
var/obj/item/weapon/reagent_containers/food/drinks/cans/can = locate() in contents
var/obj/item/reagent_containers/food/drinks/cans/can = locate() in contents
if(can)
can.pixel_x = 0 //Reset the sprite's position to make it consistent with the rest of the IED
can.pixel_y = 0
@@ -37,7 +37,7 @@
underlays += can_underlay
/obj/item/weapon/grenade/iedcasing/attack_self(mob/user) //
/obj/item/grenade/iedcasing/attack_self(mob/user) //
if(!active)
if(clown_check(user))
to_chat(user, "<span class='warning'>You light the [name]!</span>")
@@ -55,11 +55,11 @@
C.throw_mode_on()
addtimer(src, "prime", det_time)
/obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up
/obj/item/grenade/iedcasing/prime() //Blowing that can up
update_mob()
explosion(loc, -1, -1, 2, flame_range = 4) // small explosion, plus a very large fireball.
qdel(src)
/obj/item/weapon/grenade/iedcasing/examine(mob/user)
/obj/item/grenade/iedcasing/examine(mob/user)
..()
to_chat(user, "You can't tell when it will explode!")
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade
/obj/item/grenade
name = "grenade"
desc = "A hand held grenade, with an adjustable timer."
w_class = WEIGHT_CLASS_SMALL
@@ -15,7 +15,7 @@
var/det_time = 50
var/display_timer = 1
/obj/item/weapon/grenade/proc/clown_check(var/mob/living/user)
/obj/item/grenade/proc/clown_check(var/mob/living/user)
if((CLUMSY in user.mutations) && prob(50))
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
active = 1
@@ -29,9 +29,9 @@
return 1
/*/obj/item/weapon/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if(istype(target, /obj/item/weapon/storage)) return ..() // Trying to put it in a full container
if(istype(target, /obj/item/weapon/gun/grenadelauncher)) return ..()
/*/obj/item/grenade/afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
if(istype(target, /obj/item/storage)) return ..() // Trying to put it in a full container
if(istype(target, /obj/item/gun/grenadelauncher)) return ..()
if((user.is_in_active_hand(src)) && (!active) && (clown_check(user)) && target.loc != src.loc)
to_chat(user, "<span class='warning'>You prime the [name]! [det_time/10] seconds!</span>")
active = 1
@@ -47,7 +47,7 @@
return*/
/obj/item/weapon/grenade/examine(mob/user)
/obj/item/grenade/examine(mob/user)
..(user)
if(display_timer)
if(det_time > 1)
@@ -55,7 +55,7 @@
else
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>")
@@ -74,16 +74,16 @@
prime()
/obj/item/weapon/grenade/proc/prime()
/obj/item/grenade/proc/prime()
/obj/item/weapon/grenade/proc/update_mob()
/obj/item/grenade/proc/update_mob()
if(ismob(loc))
var/mob/M = loc
M.unEquip(src)
/obj/item/weapon/grenade/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/screwdriver))
/obj/item/grenade/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/screwdriver))
switch(det_time)
if("1")
det_time = 10
@@ -100,6 +100,6 @@
add_fingerprint(user)
..()
/obj/item/weapon/grenade/attack_hand()
/obj/item/grenade/attack_hand()
walk(src, null, null)
..()
@@ -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'
@@ -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'
@@ -31,26 +31,26 @@
qdel(src)
return
/obj/item/weapon/grenade/spawnergrenade/manhacks
/obj/item/grenade/spawnergrenade/manhacks
name = "manhack delivery grenade"
spawner_type = /mob/living/simple_animal/hostile/viscerator
deliveryamt = 5
origin_tech = "materials=3;magnets=4;syndicate=3"
/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 = "materials=3;magnets=4;syndicate=3"
/obj/item/weapon/grenade/spawnergrenade/feral_cats
/obj/item/grenade/spawnergrenade/feral_cats
name = "feral cat delivery grenade"
desc = "This grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight."
spawner_type = /mob/living/simple_animal/hostile/feral_cat
deliveryamt = 5
origin_tech = "materials=3;magnets=4;syndicate=3"
/obj/item/weapon/grenade/spawnergrenade/feral_cats/prime() //Own proc for this because the regular one would flash people which was dumb.
/obj/item/grenade/spawnergrenade/feral_cats/prime() //Own proc for this because the regular one would flash people which was dumb.
update_mob()
if(spawner_type && deliveryamt)
var/turf/T = get_turf(src)
@@ -1,4 +1,4 @@
/obj/item/weapon/grenade/syndieminibomb
/obj/item/grenade/syndieminibomb
desc = "A syndicate manufactured explosive used to sow destruction and chaos"
name = "syndicate minibomb"
icon = 'icons/obj/grenade.dmi'
@@ -6,7 +6,7 @@
item_state = "flashbang"
origin_tech = "materials=3;magnets=4;syndicate=3"
/obj/item/weapon/grenade/syndieminibomb/prime()
/obj/item/grenade/syndieminibomb/prime()
update_mob()
explosion(src.loc,1,2,4,flame_range = 2)
qdel(src)
+26 -26
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/restraints/handcuffs
/obj/item/restraints/handcuffs
name = "handcuffs"
desc = "Use this to keep prisoners in line."
gender = PLURAL
@@ -16,7 +16,7 @@
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //For disposable cuffs
/obj/item/weapon/restraints/handcuffs/attack(mob/living/carbon/C, mob/user)
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/user)
if(!user.IsAdvancedToolUser())
return
@@ -41,7 +41,7 @@
if(do_mob(user, C, 30))
apply_cuffs(C,user)
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
if(istype(src, /obj/item/weapon/restraints/handcuffs/cable))
if(istype(src, /obj/item/restraints/handcuffs/cable))
feedback_add_details("handcuffs","C")
else
feedback_add_details("handcuffs","H")
@@ -50,7 +50,7 @@
else
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
/obj/item/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
if(!target.handcuffed)
user.drop_item()
if(trashtype)
@@ -62,7 +62,7 @@
target.update_handcuffed()
return
/obj/item/weapon/restraints/handcuffs/sinew
/obj/item/restraints/handcuffs/sinew
name = "sinew restraints"
desc = "A pair of restraints fashioned from long strands of flesh."
icon = 'icons/obj/mining.dmi'
@@ -71,7 +71,7 @@
breakouttime = 300 //Deciseconds = 30s
cuffsound = 'sound/weapons/cablecuff.ogg'
/obj/item/weapon/restraints/handcuffs/cable
/obj/item/restraints/handcuffs/cable
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff_white"
@@ -80,48 +80,48 @@
breakouttime = 300 //Deciseconds = 30s
cuffsound = 'sound/weapons/cablecuff.ogg'
/obj/item/weapon/restraints/handcuffs/cable/red
/obj/item/restraints/handcuffs/cable/red
color = COLOR_RED
/obj/item/weapon/restraints/handcuffs/cable/yellow
/obj/item/restraints/handcuffs/cable/yellow
color = COLOR_YELLOW
/obj/item/weapon/restraints/handcuffs/cable/blue
/obj/item/restraints/handcuffs/cable/blue
color = COLOR_BLUE
/obj/item/weapon/restraints/handcuffs/cable/green
/obj/item/restraints/handcuffs/cable/green
color = COLOR_GREEN
/obj/item/weapon/restraints/handcuffs/cable/pink
/obj/item/restraints/handcuffs/cable/pink
color = COLOR_PINK
/obj/item/weapon/restraints/handcuffs/cable/orange
/obj/item/restraints/handcuffs/cable/orange
color = COLOR_ORANGE
/obj/item/weapon/restraints/handcuffs/cable/cyan
/obj/item/restraints/handcuffs/cable/cyan
color = COLOR_CYAN
/obj/item/weapon/restraints/handcuffs/cable/white
/obj/item/restraints/handcuffs/cable/white
color = COLOR_WHITE
/obj/item/weapon/restraints/handcuffs/cable/random/New()
/obj/item/restraints/handcuffs/cable/random/New()
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
..()
/obj/item/weapon/restraints/handcuffs/alien
/obj/item/restraints/handcuffs/alien
icon_state = "handcuffAlien"
/obj/item/weapon/restraints/handcuffs/pinkcuffs
/obj/item/restraints/handcuffs/pinkcuffs
name = "fluffy pink handcuffs"
desc = "Use this to keep prisoners in line. Or you know, your significant other."
icon_state = "pinkcuffs"
/obj/item/weapon/restraints/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob, params)
/obj/item/restraints/handcuffs/cable/attackby(var/obj/item/I, mob/user as mob, params)
..()
if(istype(I, /obj/item/stack/rods))
var/obj/item/stack/rods/R = I
if(R.use(1))
var/obj/item/weapon/wirerod/W = new /obj/item/weapon/wirerod
var/obj/item/wirerod/W = new /obj/item/wirerod
if(!remove_item_from_storage(user))
user.unEquip(src)
user.put_in_hands(W)
@@ -136,7 +136,7 @@
return
to_chat(user, "<span class='notice'>You begin to apply [I] to [src]...</span>")
if(do_after(user, 35 * M.toolspeed, target = src))
var/obj/item/weapon/restraints/legcuffs/bola/S = new /obj/item/weapon/restraints/legcuffs/bola
var/obj/item/restraints/legcuffs/bola/S = new /obj/item/restraints/legcuffs/bola
M.use(6)
user.put_in_hands(S)
to_chat(user, "<span class='notice'>You make some weights out of [I] and tie them to [src].</span>")
@@ -144,15 +144,15 @@
user.unEquip(src)
qdel(src)
/obj/item/weapon/restraints/handcuffs/cable/zipties
/obj/item/restraints/handcuffs/cable/zipties
name = "zipties"
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
icon_state = "cuff_white"
breakouttime = 450 //Deciseconds = 45s
materials = list()
trashtype = /obj/item/weapon/restraints/handcuffs/cable/zipties/used
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
/obj/item/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
if(isrobot(user))
if(ishuman(C))
var/mob/living/carbon/human/H = C
@@ -165,16 +165,16 @@
"<span class='userdanger'>[user] is trying to put zipties on [C]!</span>")
if(do_mob(user, C, 30))
if(!C.handcuffed)
C.handcuffed = new /obj/item/weapon/restraints/handcuffs/cable/zipties/used(C)
C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C)
C.update_handcuffed()
to_chat(user, "<span class='notice'>You handcuff [C].</span>")
add_logs(user, C, "ziptie-cuffed")
else
to_chat(user, "<span class='warning'>You fail to handcuff [C].</span>")
/obj/item/weapon/restraints/handcuffs/cable/zipties/used
/obj/item/restraints/handcuffs/cable/zipties/used
desc = "A pair of broken zipties."
icon_state = "cuff_white_used"
/obj/item/weapon/restraints/handcuffs/cable/zipties/used/attack()
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
return
@@ -12,19 +12,19 @@
//Highlander Claymore
// Grants the wielder the Highlander Style Martial Art
/obj/item/weapon/claymore/highlander
/obj/item/claymore/highlander
name = "Highlander Claymore"
desc = "Imbues the wielder with legendary martial prowress and a nigh-unquenchable thirst for glorious battle!"
var/datum/martial_art/highlander/style = new
/obj/item/weapon/claymore/highlander/Destroy()
/obj/item/claymore/highlander/Destroy()
if(ishuman(loc)) //just in case it gets destroyed while in someone's possession, such as due to acid or something?
var/mob/living/carbon/human/H = loc
style.remove(H)
QDEL_NULL(style)
return ..()
/obj/item/weapon/claymore/highlander/equipped(mob/user, slot)
/obj/item/claymore/highlander/equipped(mob/user, slot)
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
@@ -34,17 +34,17 @@
to_chat(H, "<span class='notice'>THERE CAN ONLY BE ONE!</span>")
else if(H.martial_art && H.martial_art == style)
style.remove(H)
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
var/obj/item/claymore/highlander/sword = H.is_in_hands(/obj/item/claymore/highlander)
if(sword)
//if we have a highlander sword in the other hand, relearn the style from that sword.
sword.style.teach(H, 1)
/obj/item/weapon/claymore/highlander/dropped(mob/user)
/obj/item/claymore/highlander/dropped(mob/user)
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
style.remove(H)
var/obj/item/weapon/claymore/highlander/sword = H.is_in_hands(/obj/item/weapon/claymore/highlander)
var/obj/item/claymore/highlander/sword = H.is_in_hands(/obj/item/claymore/highlander)
if(sword)
//if we have a highlander sword in the other hand, relearn the style from that sword.
sword.style.teach(H, 1)
+5 -5
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/holosign_creator
/obj/item/holosign_creator
name = "holographic sign projector"
desc = "A handy-dandy hologaphic projector that displays a janitorial sign."
icon = 'icons/obj/janitor.dmi'
@@ -13,11 +13,11 @@
var/list/signs = list()
var/max_signs = 20
/obj/item/weapon/holosign_creator/Destroy()
/obj/item/holosign_creator/Destroy()
QDEL_LIST(signs)
return ..()
/obj/item/weapon/holosign_creator/afterattack(atom/target, mob/user, flag)
/obj/item/holosign_creator/afterattack(atom/target, mob/user, flag)
if(flag)
var/turf/T = get_turf(target)
var/obj/effect/overlay/holograph/H = locate() in T
@@ -33,10 +33,10 @@
else
to_chat(user, "<span class='notice'>[src] is projecting at max capacity!</span>")
/obj/item/weapon/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
/obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user)
return
/obj/item/weapon/holosign_creator/attack_self(mob/user)
/obj/item/holosign_creator/attack_self(mob/user)
if(signs.len)
var/list/L = signs.Copy()
for(var/sign in L)
+60 -61
View File
@@ -1,4 +1,4 @@
/obj/item/weapon/nullrod
/obj/item/nullrod
name = "null rod"
desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers."
icon_state = "nullrod"
@@ -10,13 +10,13 @@
w_class = WEIGHT_CLASS_TINY
var/reskinned = FALSE
var/reskin_selectable = TRUE //set to FALSE if a subtype is meant to not normally be available as a reskin option (fluff ones will get re-added through their list)
var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/weapon/nullrod
var/list/fluff_transformations = list() //does it have any special transformations only accessible to it? Should only be subtypes of /obj/item/nullrod
/obj/item/weapon/nullrod/suicide_act(mob/user)
/obj/item/nullrod/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is killing \himself with \the [src.name]! It looks like \he's trying to get closer to god!</span>")
return (BRUTELOSS|FIRELOSS)
/obj/item/weapon/nullrod/attack(mob/M, mob/living/carbon/user)
/obj/item/nullrod/attack(mob/M, mob/living/carbon/user)
..()
if(M.mind)
if(M.mind.vampire)
@@ -25,16 +25,16 @@
to_chat(M, "<span class='warning'>The nullrod's power interferes with your own!</span>")
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
/obj/item/weapon/nullrod/attack_self(mob/user)
/obj/item/nullrod/attack_self(mob/user)
if(reskinned)
return
if(user.mind && (user.mind.assigned_role == "Chaplain" || user.mind.special_role == SPECIAL_ROLE_ERT))
reskin_holy_weapon(user)
/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M)
var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
/obj/item/nullrod/proc/reskin_holy_weapon(mob/M)
var/list/holy_weapons_list = typesof(/obj/item/nullrod)
for(var/entry in holy_weapons_list)
var/obj/item/weapon/nullrod/variant = entry
var/obj/item/nullrod/variant = entry
if(!initial(variant.reskin_selectable))
holy_weapons_list -= variant
if(fluff_transformations.len)
@@ -52,7 +52,7 @@
var/index = display_names.Find(choice)
var/A = holy_weapons_list[index]
var/obj/item/weapon/nullrod/holy_weapon = new A
var/obj/item/nullrod/holy_weapon = new A
feedback_set_details("chaplain_weapon","[choice]")
@@ -62,10 +62,10 @@
M.put_in_active_hand(holy_weapon)
qdel(src)
/obj/item/weapon/nullrod/fluff //fluff subtype to be used for all donator nullrods
/obj/item/nullrod/fluff //fluff subtype to be used for all donator nullrods
reskin_selectable = FALSE
/obj/item/weapon/nullrod/godhand
/obj/item/nullrod/godhand
name = "god hand"
icon_state = "disintegrate"
item_state = "disintegrate"
@@ -76,7 +76,7 @@
damtype = BURN
attack_verb = list("punched", "cross countered", "pummeled")
/obj/item/weapon/nullrod/staff
/obj/item/nullrod/staff
name = "red holy staff"
icon_state = "godstaff-red"
item_state = "godstaff-red"
@@ -86,12 +86,12 @@
slot_flags = SLOT_BACK
block_chance = 50
/obj/item/weapon/nullrod/staff/blue
/obj/item/nullrod/staff/blue
name = "blue holy staff"
icon_state = "godstaff-blue"
item_state = "godstaff-blue"
/obj/item/weapon/nullrod/claymore
/obj/item/nullrod/claymore
name = "holy claymore"
icon_state = "claymore"
item_state = "claymore"
@@ -103,12 +103,12 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
/obj/item/nullrod/claymore/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
if(attack_type == PROJECTILE_ATTACK)
final_block_chance = 0 //Don't bring a sword to a gunfight
return ..()
/obj/item/weapon/nullrod/claymore/darkblade
/obj/item/nullrod/claymore/darkblade
name = "dark blade"
icon_state = "cultblade"
item_state = "cultblade"
@@ -116,7 +116,7 @@
slot_flags = SLOT_BELT
hitsound = 'sound/hallucinations/growl1.ogg'
/obj/item/weapon/nullrod/claymore/chainsaw_sword
/obj/item/nullrod/claymore/chainsaw_sword
name = "sacred chainsaw sword"
icon_state = "chainswordon"
item_state = "chainswordon"
@@ -125,28 +125,28 @@
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
hitsound = 'sound/weapons/chainsaw.ogg'
/obj/item/weapon/nullrod/claymore/glowing
/obj/item/nullrod/claymore/glowing
name = "force weapon"
icon_state = "swordon"
item_state = "swordon"
desc = "The blade glows with the power of faith. Or possibly a battery."
slot_flags = SLOT_BELT
/obj/item/weapon/nullrod/claymore/katana
/obj/item/nullrod/claymore/katana
name = "hanzo steel"
desc = "Capable of cutting clean through a holy claymore."
icon_state = "katana"
item_state = "katana"
slot_flags = SLOT_BELT | SLOT_BACK
/obj/item/weapon/nullrod/claymore/multiverse
/obj/item/nullrod/claymore/multiverse
name = "extradimensional blade"
desc = "Once the harbringer of a interdimensional war, now a dormant souvenir. Still sharp though."
icon_state = "multiverse"
item_state = "multiverse"
slot_flags = SLOT_BELT
/obj/item/weapon/nullrod/claymore/saber
/obj/item/nullrod/claymore/saber
name = "light energy sword"
hitsound = 'sound/weapons/blade1.ogg'
icon_state = "swordblue"
@@ -154,19 +154,19 @@
desc = "If you strike me down, I shall become more robust than you can possibly imagine."
slot_flags = SLOT_BELT
/obj/item/weapon/nullrod/claymore/saber/red
/obj/item/nullrod/claymore/saber/red
name = "dark energy sword"
icon_state = "swordred"
item_state = "swordred"
desc = "Woefully ineffective when used on steep terrain."
/obj/item/weapon/nullrod/claymore/saber/pirate
/obj/item/nullrod/claymore/saber/pirate
name = "nautical energy sword"
icon_state = "cutlass1"
item_state = "cutlass1"
desc = "Convincing HR that your religion involved piracy was no mean feat."
/obj/item/weapon/nullrod/sord
/obj/item/nullrod/sord
name = "\improper UNREAL SORD"
desc = "This thing is so unspeakably HOLY you are having a hard time even holding it."
icon_state = "sord"
@@ -177,7 +177,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/nullrod/scythe
/obj/item/nullrod/scythe
name = "reaper scythe"
icon_state = "scythe0"
item_state = "scythe0"
@@ -189,14 +189,14 @@
attack_verb = list("chopped", "sliced", "cut", "reaped")
hitsound = 'sound/weapons/rapierhit.ogg'
/obj/item/weapon/nullrod/scythe/vibro
/obj/item/nullrod/scythe/vibro
name = "high frequency blade"
icon_state = "hfrequency0"
item_state = "hfrequency1"
desc = "Bad references are the DNA of the soul."
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
/obj/item/weapon/nullrod/scythe/spellblade
/obj/item/nullrod/scythe/spellblade
icon_state = "spellblade"
item_state = "spellblade"
icon = 'icons/obj/guns/magic.dmi'
@@ -204,7 +204,7 @@
desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is."
hitsound = 'sound/weapons/rapierhit.ogg'
/obj/item/weapon/nullrod/scythe/talking
/obj/item/nullrod/scythe/talking
name = "possessed blade"
icon_state = "talking_sword"
item_state = "talking_sword"
@@ -213,7 +213,7 @@
hitsound = 'sound/weapons/rapierhit.ogg'
var/possessed = FALSE
/obj/item/weapon/nullrod/scythe/talking/attack_self(mob/living/user)
/obj/item/nullrod/scythe/talking/attack_self(mob/living/user)
if(possessed)
return
@@ -240,14 +240,14 @@
to_chat(user, "The blade is dormant. Maybe you can try again later.")
possessed = FALSE
/obj/item/weapon/nullrod/scythe/talking/Destroy()
/obj/item/nullrod/scythe/talking/Destroy()
for(var/mob/living/simple_animal/shade/sword/S in contents)
to_chat(S, "You were destroyed!")
S.ghostize()
qdel(S)
return ..()
/obj/item/weapon/nullrod/hammmer
/obj/item/nullrod/hammmer
name = "relic war hammer"
icon_state = "hammeron"
item_state = "hammeron"
@@ -256,7 +256,7 @@
w_class = WEIGHT_CLASS_HUGE
attack_verb = list("smashed", "bashed", "hammered", "crunched")
/obj/item/weapon/nullrod/chainsaw
/obj/item/nullrod/chainsaw
name = "chainsaw hand"
desc = "Good? Bad? You're the guy with the chainsaw hand."
icon_state = "chainsaw1"
@@ -267,7 +267,7 @@
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
hitsound = 'sound/weapons/chainsaw.ogg'
/obj/item/weapon/nullrod/clown
/obj/item/nullrod/clown
name = "clown dagger"
icon = 'icons/obj/wizard.dmi'
icon_state = "clownrender"
@@ -277,7 +277,7 @@
sharp = 1
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut", "honked")
/obj/item/weapon/nullrod/whip
/obj/item/nullrod/whip
name = "holy whip"
desc = "What a terrible night to be in spess"
icon_state = "chain"
@@ -286,11 +286,11 @@
attack_verb = list("whipped", "lashed")
hitsound = 'sound/weapons/slash.ogg'
/obj/item/weapon/nullrod/whip/New()
/obj/item/nullrod/whip/New()
..()
desc = "What a terrible night to be on the [station_name()]."
/obj/item/weapon/nullrod/whip/afterattack(atom/movable/AM, mob/user, proximity)
/obj/item/nullrod/whip/afterattack(atom/movable/AM, mob/user, proximity)
if(!proximity)
return
if(ishuman(AM))
@@ -300,7 +300,7 @@
user.say("[phrase]")
H.adjustBruteLoss(8) //Bonus damage
/obj/item/weapon/nullrod/fedora
/obj/item/nullrod/fedora
name = "athiest's fedora"
desc = "The brim of the hat is as sharp as your wit. Throwing it at someone would hurt almost as much as disproving the existence of God."
icon_state = "fedora"
@@ -312,7 +312,7 @@
throw_range = 7
throwforce = 20
/obj/item/weapon/nullrod/armblade
/obj/item/nullrod/armblade
name = "dark blessing"
desc = "Particularly twisted deities grant gifts of dubious value."
icon_state = "arm_blade"
@@ -321,7 +321,7 @@
w_class = WEIGHT_CLASS_HUGE
sharp = 1
/obj/item/weapon/nullrod/carp
/obj/item/nullrod/carp
name = "carp-sie plushie"
desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to recieve the blessing of Carp-Sie."
icon = 'icons/obj/toy.dmi'
@@ -332,7 +332,7 @@
hitsound = 'sound/weapons/bite.ogg'
var/used_blessing = FALSE
/obj/item/weapon/nullrod/carp/attack_self(mob/living/user)
/obj/item/nullrod/carp/attack_self(mob/living/user)
if(used_blessing)
return
if(user.mind && (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT))
@@ -341,7 +341,7 @@
user.faction |= "carp"
used_blessing = TRUE
/obj/item/weapon/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking
name = "monk's staff"
desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, now used to harass the clown."
w_class = WEIGHT_CLASS_BULKY
@@ -351,11 +351,10 @@
sharp = 0
hitsound = "swing_hit"
attack_verb = list("smashed", "slammed", "whacked", "thwacked")
icon = 'icons/obj/weapons.dmi'
icon_state = "bostaff0"
item_state = "bostaff0"
/obj/item/weapon/nullrod/tribal_knife
/obj/item/nullrod/tribal_knife
name = "arrhythmic knife"
icon_state = "crysknife"
item_state = "crysknife"
@@ -367,18 +366,18 @@
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/nullrod/tribal_knife/New()
/obj/item/nullrod/tribal_knife/New()
..()
processing_objects.Add(src)
/obj/item/weapon/nullrod/tribal_knife/Destroy()
/obj/item/nullrod/tribal_knife/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/weapon/nullrod/tribal_knife/process()
/obj/item/nullrod/tribal_knife/process()
slowdown = rand(-2, 2)
/obj/item/weapon/nullrod/pitchfork
/obj/item/nullrod/pitchfork
name = "unholy pitchfork"
icon_state = "pitchfork0"
item_state = "pitchfork0"
@@ -388,7 +387,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
sharp = 1
/obj/item/weapon/nullrod/rosary
/obj/item/nullrod/rosary
name = "prayer beads"
icon_state = "rosary"
item_state = null
@@ -397,12 +396,12 @@
throwforce = 0
var/praying = 0
/obj/item/weapon/nullrod/rosary/New()
/obj/item/nullrod/rosary/New()
..()
processing_objects.Add(src)
/obj/item/weapon/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
/obj/item/nullrod/rosary/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
if(!iscarbon(M))
return ..()
@@ -446,7 +445,7 @@
to_chat(user, "<span class='notice'>Your prayer to [ticker.Bible_deity_name] was interrupted.</span>")
praying = 0
/obj/item/weapon/nullrod/rosary/process()
/obj/item/nullrod/rosary/process()
if(ishuman(loc))
var/mob/living/carbon/human/holder = loc
@@ -457,7 +456,7 @@
if(prob(10))
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your powers!</span>")
/obj/item/weapon/nullrod/salt
/obj/item/nullrod/salt
name = "Holy Salt"
icon = 'icons/obj/food/containers.dmi'
icon_state = "saltshakersmall"
@@ -467,7 +466,7 @@
var/ghostcall_CD = 0
/obj/item/weapon/nullrod/salt/attack_self(mob/user)
/obj/item/nullrod/salt/attack_self(mob/user)
if(!user.mind || (user.mind.assigned_role != "Chaplain" && user.mind.special_role != SPECIAL_ROLE_ERT ))
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
@@ -483,13 +482,13 @@
return
/obj/item/weapon/nullrod/rosary/bread
/obj/item/nullrod/rosary/bread
name = "prayer bread"
icon = 'icons/obj/food/food.dmi'
icon_state = "baguette"
desc = "a staple of worshipers of the Silentfather, this holy mime artifact has an odd effect on clowns."
/obj/item/weapon/nullrod/rosary/bread/process()
/obj/item/nullrod/rosary/bread/process()
if(ishuman(loc))
var/mob/living/carbon/human/holder = loc
//would like to make the holder mime if they have it in on thier person in general
@@ -502,7 +501,7 @@
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your honk!</span>")
/obj/item/weapon/nullrod/missionary_staff
/obj/item/nullrod/missionary_staff
name = "holy staff"
desc = "It has a mysterious, protective aura."
description_antag = "This seemingly standard holy staff is actually a disguised neurotransmitter capable of inducing blind zealotry in its victims. It must be allowed to recharge in the presence of a linked set of missionary robes. Activate the staff while wearing robes to link, then aim the staff at your victim to try and convert them."
@@ -519,19 +518,19 @@
var/obj/item/clothing/suit/hooded/chaplain_hoodie/missionary_robe/robes = null //the robes linked with this staff
var/faith = 99 //a conversion requires 100 faith to attempt. faith recharges over time while you are wearing missionary robes that have been linked to the staff.
/obj/item/weapon/nullrod/missionary_staff/New()
/obj/item/nullrod/missionary_staff/New()
team_color = pick("red", "blue")
icon_state = "godstaff-[team_color]"
item_state = "godstaff-[team_color]"
name = "[team_color] holy staff"
/obj/item/weapon/nullrod/missionary_staff/Destroy()
/obj/item/nullrod/missionary_staff/Destroy()
if(robes) //delink on destruction
robes.linked_staff = null
robes = null
return ..()
/obj/item/weapon/nullrod/missionary_staff/attack_self(mob/user)
/obj/item/nullrod/missionary_staff/attack_self(mob/user)
if(robes) //as long as it is linked, sec can't try to meta by stealing your staff and seeing if they get the link error message
return 0
if(!ishuman(user)) //prevents the horror (runtimes) of missionary xenos and other non-human mobs that might be able to activate the item
@@ -551,7 +550,7 @@
to_chat(missionary, "<span class='warning'>You must be wearing the missionary robes you wish to link with this staff.</span>")
return 0
/obj/item/weapon/nullrod/missionary_staff/afterattack(mob/living/carbon/human/target, mob/living/carbon/human/missionary, flag, params)
/obj/item/nullrod/missionary_staff/afterattack(mob/living/carbon/human/target, mob/living/carbon/human/missionary, flag, params)
if(!ishuman(target) || !ishuman(missionary)) //ishuman checks
return
if(target == missionary) //you can't convert yourself, that would raise too many questions about your own dedication to the cause
@@ -581,7 +580,7 @@
else //the do_after failed, probably because you moved or dropped the staff
to_chat(missionary, "<span class='warning'>Your concentration was broken!</span>")
/obj/item/weapon/nullrod/missionary_staff/proc/do_convert(mob/living/carbon/human/target, mob/living/carbon/human/missionary)
/obj/item/nullrod/missionary_staff/proc/do_convert(mob/living/carbon/human/target, mob/living/carbon/human/missionary)
var/convert_duration = 6000 //10 min
if(!target || !ishuman(target) || !missionary || !ishuman(missionary))
return
@@ -1,9 +1,9 @@
/obj/item/weapon/implant/health
/obj/item/implant/health
name = "health implant"
activated = FALSE
var/healthstring = ""
/obj/item/weapon/implant/health/proc/sensehealth()
/obj/item/implant/health/proc/sensehealth()
if(!imp_in)
return "ERROR"
else
@@ -1,4 +1,4 @@
/obj/item/weapon/implant
/obj/item/implant
name = "implant"
icon = 'icons/obj/implants.dmi'
icon_state = "generic" //Shows up as the action button icon
@@ -14,13 +14,13 @@
flags = DROPDEL
/obj/item/weapon/implant/proc/trigger(emote, mob/source)
/obj/item/implant/proc/trigger(emote, mob/source)
return
/obj/item/weapon/implant/proc/activate()
/obj/item/implant/proc/activate()
return
/obj/item/weapon/implant/ui_action_click()
/obj/item/implant/ui_action_click()
activate("action_button")
@@ -28,8 +28,8 @@
//return 1 if the implant injects
//return -1 if the implant fails to inject
//return 0 if there is no room for implant
/obj/item/weapon/implant/proc/implant(var/mob/source, var/mob/user)
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
/obj/item/implant/proc/implant(var/mob/source, var/mob/user)
var/obj/item/implant/imp_e = locate(src.type) in source
if(!allow_multiple && imp_e && imp_e != src)
if(imp_e.uses < initial(imp_e.uses)*2)
if(uses == -1)
@@ -58,7 +58,7 @@
return 1
/obj/item/weapon/implant/proc/removed(var/mob/source)
/obj/item/implant/proc/removed(var/mob/source)
src.loc = null
imp_in = null
implanted = 0
@@ -73,15 +73,15 @@
return 1
/obj/item/weapon/implant/Destroy()
/obj/item/implant/Destroy()
if(imp_in)
removed(imp_in)
return ..()
/obj/item/weapon/implant/proc/get_data()
/obj/item/implant/proc/get_data()
return "No information available"
/obj/item/weapon/implant/dropped(mob/user)
/obj/item/implant/dropped(mob/user)
. = 1
..()
@@ -1,4 +1,4 @@
/obj/item/weapon/implant/abductor
/obj/item/implant/abductor
name = "recall implant"
desc = "Returns you to the mothership."
icon = 'icons/obj/abductor.dmi'
@@ -9,7 +9,7 @@
var/cooldown = 30
var/total_cooldown = 30
/obj/item/weapon/implant/abductor/activate()
/obj/item/implant/abductor/activate()
if(cooldown == total_cooldown)
home.Retrieve(imp_in,1)
cooldown = 0
@@ -17,13 +17,13 @@
else
to_chat(imp_in, "<span class='warning'>You must wait [(total_cooldown - cooldown)*2] seconds to use [src] again!</span>")
/obj/item/weapon/implant/abductor/process()
/obj/item/implant/abductor/process()
if(cooldown < total_cooldown)
cooldown++
if(cooldown == total_cooldown)
processing_objects.Remove(src)
/obj/item/weapon/implant/abductor/implant(mob/source, mob/user)
/obj/item/implant/abductor/implant(mob/source, mob/user)
if(..())
var/obj/machinery/abductor/console/console
if(ishuman(source))
@@ -37,7 +37,7 @@
home = console.pad
return 1
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
/obj/item/implant/abductor/proc/get_team_console(var/team)
var/obj/machinery/abductor/console/console
for(var/obj/machinery/abductor/console/c in abductor_equipment)
if(c.team == team)

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