This commit is contained in:
Darkmight9
2019-01-06 19:06:04 -05:00
345 changed files with 6959 additions and 5172 deletions
+1 -1
View File
@@ -279,7 +279,7 @@
/obj/item/flash/armimplant
name = "photon projector"
desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocals fix the flashbulb if it ever burns out."
desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocols fix the flashbulb if it ever burns out."
var/flashcd = 20
var/overheat = 0
var/obj/item/organ/internal/cyberimp/arm/flash/I = null
+88 -105
View File
@@ -11,6 +11,7 @@
actions_types = list(/datum/action/item_action/toggle_light)
var/on = FALSE
var/brightness_on = 4 //luminosity when on
var/togglesound = 'sound/weapons/empty.ogg'
/obj/item/flashlight/Initialize()
. = ..()
@@ -35,7 +36,7 @@
return 0
on = !on
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
playsound(user, togglesound, 100, 1)
update_brightness(user)
for(var/X in actions)
var/datum/action/A = X
@@ -153,22 +154,24 @@ obj/item/flashlight/lamp/bananalamp
/obj/item/flashlight/flare
name = "flare"
desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'."
w_class = WEIGHT_CLASS_SMALL
brightness_on = 8 // Made it brighter (from 7 to 8).
light_color = "#ff0000" // changed colour to a more brighter red.
brightness_on = 8
light_color = "#ff0000"
icon_state = "flare"
item_state = "flare"
togglesound = 'sound/goonstation/misc/matchstick_light.ogg'
var/fuel = 0
var/on_damage = 7
var/produce_heat = 1500
var/fuel_lower = 800
var/fuel_upp = 1000
/obj/item/flashlight/flare/New()
fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds.
fuel = rand(fuel_lower, fuel_upp)
..()
/obj/item/flashlight/flare/process()
var/turf/pos = get_turf(src)
if(pos)
if(pos && produce_heat)
pos.hotspot_expose(produce_heat, 5)
fuel = max(fuel - 1, 0)
if(!fuel || !on)
@@ -177,6 +180,10 @@ obj/item/flashlight/lamp/bananalamp
src.icon_state = "[initial(icon_state)]-empty"
processing_objects -= src
/obj/item/flashlight/flare/Destroy()
processing_objects.Remove(src)
..()
/obj/item/flashlight/flare/proc/turn_off()
on = 0
src.force = initial(src.force)
@@ -207,11 +214,84 @@ obj/item/flashlight/lamp/bananalamp
. = ..()
// All good, turn it on.
if(.)
user.visible_message("<span class='notice'>[user] activates the flare.</span>", "<span class='notice'>You pull the cord on the flare, activating it!</span>")
user.visible_message("<span class='notice'>[user] activates [src].</span>", "<span class='notice'>You activate [src].</span>")
src.force = on_damage
src.damtype = "fire"
processing_objects += src
// GLOWSTICKS
/obj/item/flashlight/flare/glowstick
name = "green glowstick"
desc = "A military-grade glowstick."
brightness_on = 4
color = LIGHT_COLOR_GREEN
icon_state = "glowstick"
item_state = "glowstick"
togglesound = 'sound/effects/bone_break_1.ogg'
produce_heat = 0
fuel_lower = 1600
fuel_upp = 2000
/obj/item/flashlight/flare/glowstick/Initialize()
light_color = color
..()
/obj/item/flashlight/flare/glowstick/update_icon()
item_state = "glowstick"
cut_overlays()
if(!fuel)
icon_state = "glowstick-empty"
cut_overlays()
update_brightness(0)
else if(on)
var/mutable_appearance/glowstick_overlay = mutable_appearance(icon, "glowstick-glow")
glowstick_overlay.color = color
add_overlay(glowstick_overlay)
item_state = "glowstick-on"
update_brightness(brightness_on)
else
icon_state = "glowstick"
cut_overlays()
/obj/item/flashlight/flare/glowstick/red
name = "red glowstick"
color = LIGHT_COLOR_RED
/obj/item/flashlight/flare/glowstick/blue
name = "blue glowstick"
color = LIGHT_COLOR_BLUE
/obj/item/flashlight/flare/glowstick/orange
name = "orange glowstick"
color = LIGHT_COLOR_ORANGE
/obj/item/flashlight/flare/glowstick/yellow
name = "yellow glowstick"
color = LIGHT_COLOR_YELLOW
/obj/item/flashlight/flare/glowstick/pink
name = "pink glowstick"
color = LIGHT_COLOR_PINK
/obj/item/flashlight/flare/glowstick/emergency
name = "emergency glowstick"
desc = "A cheap looking, mass produced glowstick. You can practically feel it was made on a tight budget."
color = LIGHT_COLOR_BLUE
fuel_lower = 30
fuel_upp = 90
/obj/item/flashlight/flare/glowstick/random
name = "random colored glowstick"
icon_state = "random_glowstick"
color = null
/obj/item/flashlight/flare/glowstick/random/Initialize()
..()
var/T = pick(typesof(/obj/item/flashlight/flare/glowstick) - /obj/item/flashlight/flare/glowstick/random - /obj/item/flashlight/flare/glowstick/emergency)
new T(loc)
return INITIALIZE_HINT_QDEL
/obj/item/flashlight/flare/torch
name = "torch"
desc = "A torch fashioned from some leaves and a log."
@@ -301,101 +381,4 @@ obj/item/flashlight/lamp/bananalamp
anchored = TRUE
var/range = null
unacidable = TRUE
burn_state = LAVA_PROOF
/obj/item/flashlight/glowstick
name = "green glowstick"
desc = "A military-grade glowstick."
w_class = WEIGHT_CLASS_SMALL
brightness_on = 4
color = LIGHT_COLOR_GREEN
icon_state = "glowstick"
item_state = "glowstick"
var/fuel = 0
/obj/item/flashlight/glowstick/Initialize()
fuel = rand(1600, 2000)
light_color = color
. = ..()
/obj/item/flashlight/glowstick/Destroy()
processing_objects.Remove(src)
. = ..()
/obj/item/flashlight/glowstick/process()
fuel = max(fuel - 1, 0)
if(!fuel)
turn_off()
processing_objects.Remove(src)
update_icon()
/obj/item/flashlight/glowstick/proc/turn_off()
on = FALSE
update_icon()
/obj/item/flashlight/glowstick/update_icon()
item_state = "glowstick"
cut_overlays()
if(!fuel)
icon_state = "glowstick-empty"
cut_overlays()
update_brightness(0)
else if(on)
var/mutable_appearance/glowstick_overlay = mutable_appearance(icon, "glowstick-glow")
glowstick_overlay.color = color
add_overlay(glowstick_overlay)
item_state = "glowstick-on"
update_brightness(brightness_on)
else
icon_state = "glowstick"
cut_overlays()
/obj/item/flashlight/glowstick/attack_self(mob/user)
if(!fuel)
to_chat(user, "<span class='notice'>[src] is spent.</span>")
return
if(on)
to_chat(user, "<span class='notice'>[src] is already lit.</span>")
return
. = ..()
if(.)
user.visible_message("<span class='notice'>[user] cracks and shakes [src].</span>", "<span class='notice'>You crack and shake [src], turning it on!</span>")
activate()
/obj/item/flashlight/glowstick/proc/activate()
if(!on)
on = TRUE
processing_objects.Add(src)
update_icon()
/obj/item/flashlight/glowstick/red
name = "red glowstick"
color = LIGHT_COLOR_RED
/obj/item/flashlight/glowstick/blue
name = "blue glowstick"
color = LIGHT_COLOR_BLUE
/obj/item/flashlight/glowstick/orange
name = "orange glowstick"
color = LIGHT_COLOR_ORANGE
/obj/item/flashlight/glowstick/yellow
name = "yellow glowstick"
color = LIGHT_COLOR_YELLOW
/obj/item/flashlight/glowstick/pink
name = "pink glowstick"
color = LIGHT_COLOR_PINK
/obj/item/flashlight/glowstick/random
name = "random colored glowstick"
icon_state = "random_glowstick"
color = null
/obj/item/flashlight/glowstick/random/Initialize()
..()
var/T = pick(typesof(/obj/item/flashlight/glowstick) - /obj/item/flashlight/glowstick/random)
new T(loc)
return INITIALIZE_HINT_QDEL
burn_state = LAVA_PROOF
@@ -102,4 +102,4 @@
/obj/item/pizza_bomb/autoarm
timer_set = 1
timer = 10
timer = 30 // 3 seconds
@@ -8,6 +8,7 @@
var/emagged = 0
var/syndicate = 0
var/area_bypass = FALSE
var/cc_beacon = FALSE //set if allowed to teleport to even if on zlevel2
/obj/item/radio/beacon/New()
..()
@@ -1,5 +1,5 @@
/obj/item/encryptionkey/
/obj/item/encryptionkey
name = "Standard Encryption Key"
desc = "An encyption key for a radio headset. Contains cypherkeys."
icon = 'icons/obj/radio.dmi'
@@ -256,9 +256,10 @@ var/global/list/default_medbay_channels = list(
break
if(jammed)
message = Gibberish(message, 100)
var/list/message_pieces = message_to_multilingual(message)
Broadcast_Message(connection, A,
0, "*garbled automated announcement*", src,
message, from, "Automated Announcement", from, "synthesized voice",
message_pieces, from, "Automated Announcement", from, "synthesized voice",
4, 0, zlevel, connection.frequency, follow_target = follow_target)
qdel(A)
+22 -4
View File
@@ -24,6 +24,8 @@ var/list/world_uplinks = list()
var/job = null
var/show_descriptions = 0
var/temp_category
var/uplink_type = "traitor"
/obj/item/uplink/nano_host()
return loc
@@ -233,6 +235,7 @@ var/list/world_uplinks = list()
if(!nanoui_items)
generate_items(user)
data["nano_items"] = nanoui_items
data["category_choice"] = temp_category
data += nanoui_data
return data
@@ -260,9 +263,6 @@ var/list/world_uplinks = list()
hidden_crystals = 0
ui.close()
return 1
if(href_list["return"])
nanoui_menu = round(nanoui_menu/10)
update_nano_data()
if(href_list["menu"])
nanoui_menu = text2num(href_list["menu"])
update_nano_data(href_list["id"])
@@ -272,6 +272,9 @@ var/list/world_uplinks = list()
if(href_list["descriptions"])
show_descriptions = !show_descriptions
update_nano_data()
if(href_list["category"])
temp_category = href_list["category"]
update_nano_data()
SSnanoui.update_uis(src)
return 1
@@ -325,6 +328,21 @@ var/list/world_uplinks = list()
if(hidden_uplink)
hidden_uplink.trigger(user)
/obj/item/radio/uplink/nuclear/New()
..()
if(hidden_uplink)
hidden_uplink.uplink_type = "nuclear"
GLOB.nuclear_uplink_list += src
/obj/item/radio/uplink/nuclear/Destroy()
GLOB.nuclear_uplink_list -= src
return ..()
/obj/item/radio/uplink/sst/New()
..()
if(hidden_uplink)
hidden_uplink.uplink_type = "sst"
/obj/item/multitool/uplink/New()
hidden_uplink = new(src)
@@ -338,4 +356,4 @@ var/list/world_uplinks = list()
/obj/item/radio/headset/uplink/New()
..()
hidden_uplink = new(src)
hidden_uplink.uses = 20
hidden_uplink.uses = 20
+29 -56
View File
@@ -9,8 +9,7 @@
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)
qdel(src)
qdel(src)
// -------------------------------------
// Random cleanables, clearly this makes sense
@@ -24,8 +23,7 @@
var/list/list = subtypesof(/obj/effect/decal/cleanable) - list(/obj/effect/decal/cleanable/random,/obj/effect/decal/cleanable/cobweb,/obj/effect/decal/cleanable/cobweb2)
var/T = pick(list)
new T(loc)
spawn(0)
qdel(src)
qdel(src)
/obj/item/stack/sheet/animalhide/random
@@ -33,11 +31,10 @@
/obj/item/stack/sheet/animalhide/random/New()
..()
spawn(1)
var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey)
var/obj/item/stack/S = new htype(loc)
S.amount = amount
qdel(src)
var/htype = pick(/obj/item/stack/sheet/animalhide/cat,/obj/item/stack/sheet/animalhide/corgi,/obj/item/stack/sheet/animalhide/human,/obj/item/stack/sheet/animalhide/lizard,/obj/item/stack/sheet/animalhide/monkey)
var/obj/item/stack/S = new htype(loc)
S.amount = amount
qdel(src)
// -------------------------------------
// Not yet identified chemical.
@@ -121,8 +118,7 @@
icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red")
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
spawn(0)
qdel(src)
qdel(src)
/obj/item/storage/pill_bottle/random_meds
name = "unlabelled pillbottle"
@@ -158,16 +154,10 @@
/obj/structure/closet/crate/secure/unknownchemicals/New()
..()
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)
for(var/i in 1 to 7)
new/obj/item/reagent_containers/glass/bottle/random_base_chem(src)
for(var/i in 1 to 3)
new/obj/item/reagent_containers/glass/bottle/random_chem(src)
while(prob(50))
new/obj/item/reagent_containers/glass/bottle/random_reagent(src)
@@ -193,7 +183,7 @@
B.name = "unlabelled bottle"
B.desc = "Looks like the label fell off."
// B.identify_probability = 0
//
/*
/obj/structure/closet/crate/bin/flowers
name = "flower barrel"
@@ -243,11 +233,8 @@
/obj/structure/closet/secure_closet/random_drinks/New()
..()
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)
for(var/i in 1 to 5)
new/obj/item/reagent_containers/food/drinks/bottle/random_drink(src)
while(prob(25))
new/obj/item/reagent_containers/food/drinks/bottle/random_reagent(src)
@@ -272,12 +259,12 @@
visible_message("<span class='warning'>Something falls out of the [src]!</span>")
var/obj/item/grenade/clusterbuster/C = new(src.loc)
C.prime()
spawn(10)
new menace(src.loc)
while(prob(15))
new menace(get_step_rand(src.loc))
..()
return 1
sleep(10)
new menace(src.loc)
while(prob(15))
new menace(get_step_rand(src.loc))
..()
return TRUE
else
return ..()
@@ -296,19 +283,15 @@
/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"
Cat1.desc = "It seems it's been dead for a while."
var/mob/living/simple_animal/pet/cat/Cat2 = new(loc)
Cat2.name = "Schrodinger's Cat"
Cat2.desc = "It's was alive the whole time!"
sleep(2)
var/mob/living/simple_animal/pet/cat/Cat = new(loc)
Cat.name = "Schrodinger's Cat"
if(prob(50))
qdel(Cat1)
Cat.apply_damage(250,TOX)
Cat.desc = "It seems it's been dead for a while."
else
qdel(Cat2)
Cat.desc = "It was alive the whole time!"
return ..()
// --------------------------------------
@@ -326,16 +309,6 @@
/obj/item/storage/box/grenades/New()
..()
var/nade1 = pick(grenadelist)
var/nade2 = pick(grenadelist)
var/nade3 = pick(grenadelist)
var/nade4 = pick(grenadelist)
var/nade5 = pick(grenadelist)
var/nade6 = pick(grenadelist)
new nade1(src)
new nade2(src)
new nade3(src)
new nade4(src)
new nade5(src)
new nade6(src)
for(var/i in 1 to 6)
var/nade = pick(grenadelist)
new nade(src)
@@ -58,6 +58,7 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
new /datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 50, one_per_turf = 1, on_floor = 1), \
new /datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 25, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 25, one_per_turf = 1, on_floor = 1),
null,
new /datum/stack_recipe_list("airlock assemblies", list(
new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1),
@@ -38,4 +38,7 @@
amount = 5
/obj/item/stack/telecrystal/twenty
amount = 20
amount = 20
/obj/item/stack/telecrystal/fifty
amount = 50
+10
View File
@@ -1650,3 +1650,13 @@ obj/item/toy/cards/deck/syndicate/black
icon_state = "conch"
use_action = "pulls the string"
possible_answers = list("Yes.", "No.", "Try asking again.", "Nothing.", "I don't think so.", "Neither.", "Maybe someday.")
/*
*Fake cuffs (honk honk)
*/
/obj/item/restraints/handcuffs/toy
desc = "Toy handcuffs. Plastic and extremely cheaply made."
throwforce = 0
breakouttime = 0
ignoresClumsy = TRUE
+1
View File
@@ -85,6 +85,7 @@
else
icon_state = "rcl-0"
item_state = "rcl-0"
..()
/obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1)
update_icon()
@@ -319,6 +319,10 @@
name = "agent card"
initial_access = list(access_maint_tunnels, access_vox, access_external_airlocks)
/obj/item/card/id/syndicate/command
initial_access = list(access_maint_tunnels, access_syndicate, access_syndicate_leader, access_syndicate_command, access_external_airlocks)
icon_state = "commander"
/obj/item/card/id/syndicate/afterattack(var/obj/item/O as obj, mob/user as mob, proximity)
if(!proximity)
return
+2 -2
View File
@@ -196,7 +196,7 @@ LIGHTERS ARE IN LIGHTERS.DM
if(is_being_smoked) // if it's being smoked, transfer reagents to the mob
var/mob/living/carbon/C = loc
for (var/datum/reagent/R in reagents.reagent_list)
reagents.trans_to(C, REAGENTS_METABOLISM)
reagents.trans_id_to(C, R.id, max(REAGENTS_METABOLISM / reagents.reagent_list.len, 0.1)) //transfer at least .1 of each chem
if(!reagents.total_volume) // There were reagents, but now they're gone
to_chat(C, "<span class='notice'>Your [name] loses its flavor.</span>")
else // else just remove some of the reagents
@@ -232,7 +232,7 @@ LIGHTERS ARE IN LIGHTERS.DM
type_butt = /obj/item/cigbutt/roach
throw_speed = 0.5
item_state = "spliffoff"
smoketime = 180
smoketime = 250
chem_volume = 100
/obj/item/clothing/mask/cigarette/rollie/New()
@@ -32,7 +32,7 @@
desc = "Damn son, where'd you find this?"
icon_state = "air_horn"
origin_tech = "materials=4;engineering=4"
honk_sounds = list('sound/items/airhorn2.ogg' = 1)
honk_sounds = list('sound/items/Airhorn2.ogg' = 1)
/obj/item/bikehorn/golden
name = "golden bike horn"
@@ -2,7 +2,7 @@
/obj/item/grenade/gas
name = "Plasma Fire Grenade"
name = "plasma fire grenade"
desc = "A compressed plasma grenade, used to start horrific plasma fires."
origin_tech = "materials=3;magnets=4;syndicate=3"
icon = 'icons/obj/grenade.dmi'
@@ -18,7 +18,33 @@
target_turf.air_update_turf()
qdel(src)
/obj/item/grenade/gas/plasma
icon_state = "plasma"
/obj/item/grenade/gas/knockout
name = "Knockout Grenade"
name = "knockout grenade"
desc = "A grenade that completely removes all air and heat from its detonation area."
spawn_contents = SPAWN_20C | SPAWN_N2O
spawn_contents = SPAWN_20C | SPAWN_N2O
/obj/item/grenade/gluon
desc = "An advanced grenade that releases a harmful stream of gluons inducing radiation in those nearby. These gluon streams will also make victims feel exhausted, and induce shivering. This extreme coldness will also wet any nearby floors."
name = "gluon grenade"
icon = 'icons/obj/grenade.dmi'
icon_state = "gluon"
item_state = "flashbang"
var/range = 4
var/rad_damage = 60
var/stamina_damage = 30
/obj/item/grenade/gluon/prime()
update_mob()
playsound(loc, 'sound/effects/empulse.ogg', 50, 1)
for(var/turf/T in view(range, loc))
if(isfloorturf(T))
var/turf/simulated/F = T
F.MakeSlippery(TURF_WET_PERMAFROST)
for(var/mob/living/carbon/L in T)
L.adjustStaminaLoss(stamina_damage)
L.apply_effect(rad_damage, IRRADIATE)
L.adjust_bodytemperature(-230)
qdel(src)
@@ -526,20 +526,20 @@
update_icon()
/obj/item/grenade/chem_grenade/facid
name = "acid grenade"
desc = "Used for melting armoured opponents."
payload_name = "acid smoke"
desc = "Use to chew up opponents from the inside out."
stage = READY
/obj/item/grenade/chem_grenade/facid/New()
..()
var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src)
var/obj/item/reagent_containers/glass/beaker/bluespace/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("facid", 280)
B1.reagents.add_reagent("facid", 80)
B1.reagents.add_reagent("potassium", 20)
B2.reagents.add_reagent("phosphorus", 20)
B2.reagents.add_reagent("sugar", 20)
B2.reagents.add_reagent("facid", 260)
B2.reagents.add_reagent("facid", 60)
beakers += B1
beakers += B2
@@ -53,7 +53,7 @@
//Bang
if((loc == M) || loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
if(get_turf(M) == get_turf(src))//Holding on person or being exactly where lies is significantly more dangerous and voids protection
M.Stun(10)
M.Weaken(10)
if(!ear_safety)
@@ -0,0 +1,50 @@
/obj/item/grenade/frag
name = "frag grenade"
desc = "Fire in the hole."
icon_state = "frag"
item_state = "flashbang"
origin_tech = "materials=3;magnets=4"
var/range = 5
var/max_shrapnel = 4
var/embed_prob = 100 //reduced by armor
var/embedded_type = /obj/item/embedded/shrapnel
/obj/item/grenade/frag/prime()
update_mob()
var/turf/epicenter = get_turf(src)
for(var/mob/living/carbon/human/H in epicenter)
if(H.resting) //grenade is jumped on but get real fucked up
embed_shrapnel(H, max_shrapnel)
range = 1
explosion(loc, 0, 1, range, breach = FALSE)
for(var/turf/T in view(range, loc))
for(var/mob/living/carbon/human/H in T)
var/shrapnel_amount = max_shrapnel - T.Distance(epicenter)
if(shrapnel_amount > 0)
embed_shrapnel(H, shrapnel_amount)
qdel(src)
/obj/item/grenade/frag/proc/embed_shrapnel(mob/living/carbon/human/H, amount)
for(var/i = 0, i < amount, i++)
if(prob(embed_prob - H.getarmor(null, "bomb")))
var/obj/item/embedded/S = new embedded_type(src)
H.hitby(S, skipcatch = 1)
S.throwforce = 1
S.throw_speed = 1
S.sharp = FALSE
else
to_chat(H, "<span class='warning'>Shrapnel bounces off your armor!</span>")
/obj/item/embedded/shrapnel
name = "shrapnel"
icon = 'icons/obj/shards.dmi'
throwforce = 10
throw_speed = EMBED_THROWSPEED_THRESHOLD
embed_chance = 100
embedded_fall_chance = 0
w_class = WEIGHT_CLASS_SMALL
sharp = TRUE
hitsound = 'sound/weapons/pierce.ogg'
/obj/item/embedded/shrapnel/New()
icon_state = pick("shrapnel1", "shrapnel2", "shrapnel3")
@@ -8,5 +8,5 @@
/obj/item/grenade/syndieminibomb/prime()
update_mob()
explosion(src.loc,1,2,4,flame_range = 2)
qdel(src)
explosion(loc, 1, 2, 4, flame_range = 2)
qdel(src)
+2 -1
View File
@@ -15,6 +15,7 @@
breakouttime = 600 //Deciseconds = 60s = 1 minutes
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //For disposable cuffs
var/ignoresClumsy = FALSE
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/user)
if(!user.IsAdvancedToolUser())
@@ -23,7 +24,7 @@
if(!istype(C))
return
if(CLUMSY in user.mutations && prob(50))
if((CLUMSY in user.mutations) && prob(50) && (!ignoresClumsy))
to_chat(user, "<span class='warning'>Uh... how do those things work?!</span>")
apply_cuffs(user,user)
@@ -448,6 +448,7 @@
if(praying)
to_chat(user, "<span class='notice'>You are already using [src].</span>")
return
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [ticker.Bible_deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [ticker.Bible_deity_name].</span>")
@@ -10,6 +10,16 @@
hidden_uplink.uses = 10
..()
/obj/item/implant/uplink/sit/New()
..()
if(hidden_uplink)
hidden_uplink.uplink_type = "sit"
/obj/item/implant/uplink/admin/New()
..()
if(hidden_uplink)
hidden_uplink.uplink_type = "admin"
/obj/item/implant/uplink/implant(mob/source)
var/obj/item/implant/imp_e = locate(src.type) in source
if(imp_e && imp_e != src)
@@ -8,6 +8,7 @@
* Butcher's cleaver
* Rolling Pins
* Candy Moulds
* Sushi Mat
*/
/obj/item/kitchen
@@ -249,3 +250,17 @@
name = "sucker mould"
desc = "It has the shape of a sucker imprinted into it."
icon_state = "mould_loli"
/*
* Sushi Mat
*/
/obj/item/kitchen/sushimat
name = "Sushi Mat"
desc = "A wooden mat used for efficient sushi crafting."
icon_state = "sushi_mat"
force = 5
throwforce = 5
throw_speed = 3
throw_range = 3
w_class = WEIGHT_CLASS_SMALL
attack_verb = list("rolled", "cracked", "battered", "thrashed")
+23 -3
View File
@@ -30,6 +30,9 @@
var/whatdpipe = PIPE_DISPOSALS_STRAIGHT //What kind of disposals pipe is it?
var/spawndelay = RPD_COOLDOWN_TIME
var/walldelay = RPD_WALLBUILD_TIME
var/ranged = FALSE
var/primary_sound = 'sound/machines/click.ogg'
var/alt_sound = null
/obj/item/rpd/New()
..()
@@ -41,11 +44,24 @@
QDEL_NULL(spark_system)
return ..()
/obj/item/rpd/bluespace
name = "bluespace rapid pipe dispenser"
desc = "This device can rapidly dispense atmospherics and disposals piping, manipulate loose piping, and recycle any detached pipes it is applied to, at any range."
icon_state = "brpd"
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500, MAT_SILVER = 3000)
origin_tech = "engineering=4;materials=2;bluespace=3"
ranged = TRUE
primary_sound = 'sound/items/PSHOOM.ogg'
alt_sound = 'sound/items/PSHOOM_2.ogg'
//Procs
/obj/item/rpd/proc/activate_rpd(delay) //Maybe makes sparks and activates cooldown if there is a delay
playsound(loc, "sound/machines/click.ogg", 50, 1)
if(prob(15))
if(alt_sound && prob(3))
playsound(src, alt_sound, 50, 1)
else
playsound(src, primary_sound, 50, 1)
if(prob(15) && !ranged)
spark_system.start()
if(delay)
lastused = world.time
@@ -188,7 +204,7 @@ var/list/pipemenu = list(
..()
if(loc != user)
return
if(!proximity)
if(!proximity && !ranged)
return
if(world.time < lastused + spawndelay)
return
@@ -201,6 +217,8 @@ var/list/pipemenu = list(
if(target.rpd_act(user, src) == TRUE)
// If the object we are clicking on has a valid RPD interaction for just that specific object, do that and nothing else.
// Example: clicking on a pipe with a RPD in rotate mode should rotate that pipe and ignore everything else on the tile.
if(ranged)
user.Beam(T, icon_state="rped_upgrade", icon='icons/effects/effects.dmi', time=5)
return
// If we get this far, we have to check every object in the tile, to make sure that none of them block RPD usage on this tile.
@@ -212,6 +230,8 @@ var/list/pipemenu = list(
return
// If we get here, then we're effectively acting on the turf, probably placing a pipe.
if(ranged) //woosh beam if bluespaced at a distance
user.Beam(T,icon_state="rped_upgrade", icon='icons/effects/effects.dmi', time=5)
T.rpd_act(user, src)
#undef RPD_COOLDOWN_TIME
@@ -47,7 +47,7 @@
/obj/item/storage/backpack/holding/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/storage/backpack/holding))
var/response = alert(user, "Are you sure you want to put the bag of holding inside another bag of holding?","Are you sure you want to die?","Yes","No")
var/response = alert(user, "This creates a singularity, destroying you and much of the station. Are you SURE?","IMMINENT DEATH!", "No", "Yes")
if(response == "Yes")
user.visible_message("<span class='warning'>[user] grins as [user.p_they()] begin[user.p_s()] to put a Bag of Holding into a Bag of Holding!</span>", "<span class='warning'>You begin to put the Bag of Holding into the Bag of Holding!</span>")
if(do_after(user, 30, target=src))
@@ -98,6 +98,7 @@
new /obj/item/clothing/mask/gas/voice/clown(src)
new /obj/item/radio/headset/headset_service(src)
new /obj/item/pda/clown(src)
new /obj/item/storage/box/survival(src)
new /obj/item/reagent_containers/food/snacks/grown/banana(src)
new /obj/item/stamp/clown(src)
new /obj/item/toy/crayon/rainbow(src)
@@ -88,7 +88,7 @@
update_icon()
/obj/item/storage/belt/utility/chief
name = "Chief Engineer's toolbelt"
name = "advanced toolbelt"
desc = "Holds tools, looks snazzy"
icon_state = "utilitybelt_ce"
item_state = "utility_ce"
@@ -139,7 +139,7 @@
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 17
use_to_pickup = 1
name = "Surgical Belt"
name = "surgical belt"
desc = "Can hold various surgical tools."
storage_slots = 9
use_item_overlays = 1
@@ -302,6 +302,48 @@
item_state = "utility"
use_item_overlays = 1 // So it will still show tools in it in case sec get lazy and just glance at it.
/obj/item/storage/belt/grenade
name = "grenadier belt"
desc = "A belt for holding grenades."
icon_state = "assaultbelt"
item_state = "assault"
storage_slots = 30
max_combined_w_class = 60
display_contents_with_number = 1
can_hold = list(
/obj/item/grenade,
/obj/item/lighter,
/obj/item/reagent_containers/food/drinks/bottle/molotov
)
/obj/item/storage/belt/grenade/full/New()
..()
new /obj/item/grenade/smokebomb(src) //4
new /obj/item/grenade/smokebomb(src)
new /obj/item/grenade/smokebomb(src)
new /obj/item/grenade/smokebomb(src)
new /obj/item/grenade/empgrenade(src) //2
new /obj/item/grenade/empgrenade(src)
new /obj/item/grenade/gluon(src) //4
new /obj/item/grenade/gluon(src)
new /obj/item/grenade/gluon(src)
new /obj/item/grenade/gluon(src)
new /obj/item/grenade/chem_grenade/facid(src) //1
new /obj/item/grenade/gas/plasma(src) //2
new /obj/item/grenade/gas/plasma(src)
new /obj/item/grenade/frag(src) //10
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/frag(src)
new /obj/item/grenade/syndieminibomb(src) //2
new /obj/item/grenade/syndieminibomb(src)
/obj/item/storage/belt/military/abductor
name = "agent belt"
desc = "A belt used by abductor agents."
@@ -72,8 +72,31 @@
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/survival_vox
icon_state = "box_vox"
/obj/item/storage/box/survival_vox/New()
..()
contents = list()
new /obj/item/clothing/mask/breath/vox(src)
new /obj/item/tank/emergency_oxygen/nitrogen(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
/obj/item/storage/box/survival_plasmaman
icon_state = "box_plasma"
/obj/item/storage/box/survival_plasmaman/New()
..()
contents = list()
new /obj/item/clothing/mask/breath(src)
new /obj/item/tank/emergency_oxygen/plasma(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
/obj/item/storage/box/engineer
icon_state = "box_eng"
New()
@@ -82,6 +105,7 @@
new /obj/item/clothing/mask/breath( src )
new /obj/item/tank/emergency_oxygen/engi( src )
new /obj/item/reagent_containers/hypospray/autoinjector( src )
new /obj/item/flashlight/flare/glowstick/emergency( src )
return
/obj/item/storage/box/survival_mining
@@ -93,6 +117,18 @@
new /obj/item/tank/emergency_oxygen/engi(src)
new /obj/item/crowbar/red(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/flashlight/flare/glowstick/emergency(src)
/obj/item/storage/box/survival_syndi
icon_state = "box_syndi"
New()
..()
contents = list()
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
new /obj/item/reagent_containers/hypospray/autoinjector(src)
new /obj/item/reagent_containers/food/pill/initropidril(src)
new /obj/item/flashlight/flare/glowstick/red(src)
/obj/item/storage/box/gloves
name = "box of latex gloves"
@@ -330,3 +330,9 @@
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
new /obj/item/reagent_containers/food/pill/salicylic(src)
/obj/item/storage/pill_bottle/fakedeath/New()
..()
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
new /obj/item/reagent_containers/food/pill/fakedeath(src)
@@ -94,15 +94,11 @@
new /obj/item/multitool(src)
new /obj/item/clothing/gloves/combat(src)
/obj/item/storage/toolbox/syndicate/trapped
name = "suspicious looking toolbox"
desc = "Danger. Very robust. Has a small red marker by the handle."
/obj/item/storage/toolbox/syndicate/trapped/New()
..()
new /obj/item/grenade/chem_grenade/explosion/mine_armed(src)
/obj/item/storage/toolbox/fakesyndi
name = "suspicous looking toolbox"
icon_state = "syndicate"
item_state = "toolbox_syndi"
desc = "Danger. Very Robust. The paint is still wet."
/obj/item/storage/toolbox/drone
name = "mechanical toolbox"
@@ -207,12 +207,12 @@
/obj/item/storage/box/syndie_kit/caneshotgun/New()
..()
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/dart/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/ammo_casing/shotgun/assassination(src)
new /obj/item/gun/projectile/revolver/doublebarrel/improvised/cane(src)
/obj/item/storage/box/syndie_kit/mimery
@@ -283,4 +283,4 @@ To apply, hold the injector a short distance away from the outer thigh before ap
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/balaclava(src)
new /obj/item/clothing/accessory/stethoscope(src)
new /obj/item/book/manual/engineering_hacking(src)
new /obj/item/book/manual/engineering_hacking(src)
@@ -27,6 +27,9 @@
to_chat(user, text("<span class='danger'>The meter on the [src.name] indicates you are almost out of air!</span>"))
//playsound(usr, 'sound/effects/alert.ogg', 50, 1)
obj/item/tank/oxygen/empty/New()
..()
air_contents.oxygen = null
/obj/item/tank/oxygen/yellow
desc = "A tank of oxygen, this one is yellow."
@@ -142,11 +145,19 @@
to_chat(user, text("<span class='danger'>The meter on the [src.name] indicates you are almost out of air!</span>"))
user << sound('sound/effects/alert.ogg')
obj/item/tank/emergency_oxygen/empty/New()
..()
air_contents.oxygen = null
/obj/item/tank/emergency_oxygen/engi
name = "extended-capacity emergency oxygen tank"
icon_state = "emergency_engi"
volume = 6
obj/item/tank/emergency_oxygen/engi/empty/New()
..()
air_contents.oxygen = null
/obj/item/tank/emergency_oxygen/syndi
name = "suspicious emergency oxygen tank"
icon_state = "emergency_syndi"
@@ -158,6 +169,10 @@
icon_state = "emergency_double"
volume = 10
obj/item/tank/emergency_oxygen/double/empty/New()
..()
air_contents.oxygen = null
/obj/item/tank/emergency_oxygen/double/full
name = "pressurized double emergency oxygen tank"
desc = "Used for \"emergencies,\" it actually contains a fair amount of oxygen."
+27 -113
View File
@@ -5,59 +5,42 @@
icon_state = "taperoll"
singular_name = "tape roll"
w_class = WEIGHT_CLASS_TINY
amount = 10
max_amount = 10
amount = 25
max_amount = 25
/obj/item/stack/tape_roll/New(var/loc, var/amount=null)
..()
update_icon()
/obj/item/stack/tape_roll/attack(mob/living/carbon/human/M as mob, mob/living/user as mob)
/obj/item/stack/tape_roll/attack(mob/living/carbon/human/M, mob/living/user)
if(!istype(M)) //What good is a duct tape mask if you are unable to speak?
return
if(M.wear_mask)
to_chat(user, "Remove [M.p_their()] mask first!")
else if(amount < 2)
to_chat(user, "You'll need more tape for this!")
else if(!M.check_has_mouth())
to_chat(user, "[M.p_they(TRUE)] [M.p_have()] no mouth to tape over!")
else
if(M == user)
to_chat(user, "You try to tape your own mouth shut.")
else
to_chat(user, "You try to tape [M]'s mouth shut.")
M.visible_message("<span class='warning'>[user] tries to tape [M]'s mouth closed!</span>")
if(do_after(user, 50, target = M))
if(M == user)
to_chat(user, "You cover your own mouth with a piece of duct tape.")
else
to_chat(user, "You cover [M]'s mouth with a piece of duct tape. That will shut [M.p_them()] up!")
M.visible_message("<span class='warning'>[user] tapes [M]'s mouth shut!</span>")
var/obj/item/clothing/mask/muzzle/G = new /obj/item/clothing/mask/muzzle/tapegag
M.equip_to_slot(G, slot_wear_mask)
G.add_fingerprint(user)
amount = amount - 2
if(amount <= 0)
user.unEquip(src, 1)
qdel(src)
/* -- Disabled for now until it has a use --
/obj/item/stack/tape_roll/attack_self(mob/user as mob)
to_chat(user, "You remove a length of tape from [src].")
var/obj/item/ducttape/tape = new()
user.put_in_hands(tape)
*/
/obj/item/stack/tape_roll/proc/stick(var/obj/item/W, mob/user)
if(!istype(W, /obj/item/paper))
return
user.unEquip(W)
var/obj/item/ducttape/tape = new(get_turf(src))
tape.attach(W)
user.put_in_hands(tape)
if(amount < 2)
to_chat(user, "You'll need more tape for this!")
return
if(!M.check_has_mouth())
to_chat(user, "[M.p_they(TRUE)] [M.p_have()] no mouth to tape over!")
return
user.visible_message("<span class='warning'>[user] is taping [M]'s mouth closed!</span>",
"<span class='notice'>You try to tape [M == user ? "your own" : "[M]'s"] mouth shut!</span>",
"<span class='warning'>You hear tape ripping.</span>")
if(!do_after(user, 50, target = M))
return
if(!use(2))
to_chat(user, "<span class='notice'>You don't have enough tape!</span>")
return
if(M.wear_mask)
to_chat(user, "<span class='notice'>[M == user ? user : M]'s mouth is already covered!</span>")
return
user.visible_message("<span class='warning'>[user] tapes [M]'s mouth shut!</span>",
"<span class='notice'>You cover [M == user ? "your own" : "[M]'s"] mouth with a piece of duct tape.[M == user ? null : " That will shut them up."]</span>")
var/obj/item/clothing/mask/muzzle/G = new /obj/item/clothing/mask/muzzle/tapegag
M.equip_to_slot(G, slot_wear_mask)
G.add_fingerprint(user)
/obj/item/stack/tape_roll/update_icon()
var/amount = get_amount()
@@ -71,73 +54,4 @@
icon_state = "taperoll-4"
else
icon_state = "taperoll-4"
/obj/item/ducttape
name = "tape"
desc = "A piece of sticky tape."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "tape"
w_class = WEIGHT_CLASS_TINY
layer = 4
anchored = 1 //it's sticky, no you cant move it
var/obj/item/stuck = null
/obj/item/ducttape/New()
..()
flags |= NOBLUDGEON
/obj/item/ducttape/examine(mob/user)
return stuck.examine(user)
/obj/item/ducttape/proc/attach(var/obj/item/W)
stuck = W
W.forceMove(src)
icon_state = W.icon_state + "_taped"
name = W.name + " (taped)"
overlays = W.overlays
/obj/item/ducttape/attack_self(mob/user)
if(!stuck)
return
to_chat(user, "You remove \the [initial(name)] from [stuck].")
user.unEquip(src)
stuck.forceMove(get_turf(src))
user.put_in_hands(stuck)
stuck = null
overlays = null
qdel(src)
/obj/item/ducttape/afterattack(var/A, mob/user, flag, params)
if(!in_range(user, A) || istype(A, /obj/machinery/door) || !stuck)
return
var/turf/target_turf = get_turf(A)
var/turf/source_turf = get_turf(user)
var/dir_offset = 0
if(target_turf != source_turf)
dir_offset = get_dir(source_turf, target_turf)
if(!(dir_offset in cardinal))
to_chat(user, "You cannot reach that from here.")// can only place stuck papers in cardinal directions, to
return // reduce papers around corners issue.
user.unEquip(src)
forceMove(source_turf)
if(params)
var/list/mouse_control = params2list(params)
if(mouse_control["icon-x"])
pixel_x = text2num(mouse_control["icon-x"]) - 16
if(dir_offset & EAST)
pixel_x += 32
else if(dir_offset & WEST)
pixel_x -= 32
if(mouse_control["icon-y"])
pixel_y = text2num(mouse_control["icon-y"]) - 16
if(dir_offset & NORTH)
pixel_y += 32
else if(dir_offset & SOUTH)
pixel_y -= 32
+1
View File
@@ -368,6 +368,7 @@
else
icon_state = "[initial(icon_state)][ratio]"
update_torch()
..()
/obj/item/weldingtool/process()
switch(welding)
+11 -3
View File
@@ -91,9 +91,6 @@
O.unwield(user)
return unwield(user)
/obj/item/twohanded/update_icon()
return
/obj/item/twohanded/attack_self(mob/user)
..()
if(wielded) //Trying to unwield it
@@ -182,6 +179,7 @@
/obj/item/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "fireaxe[wielded]"
..()
/obj/item/twohanded/fireaxe/afterattack(atom/A, mob/user, proximity)
if(!proximity)
@@ -208,6 +206,7 @@
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
var/w_class_on = WEIGHT_CLASS_BULKY
force_unwielded = 3
force_wielded = 34
wieldsound = 'sound/weapons/saberon.ogg'
@@ -232,6 +231,7 @@
else
icon_state = "dualsaber0"
set_light(0)
..()
/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/user)
if(HULK in user.mutations)
@@ -278,6 +278,7 @@
/obj/item/twohanded/dualsaber/unwield()
..()
hitsound = "swing_hit"
w_class = initial(w_class)
/obj/item/twohanded/dualsaber/IsReflect()
if(wielded)
@@ -289,6 +290,7 @@
return
..()
hitsound = 'sound/weapons/blade1.ogg'
w_class = w_class_on
/obj/item/twohanded/dualsaber/attackby(obj/item/W, mob/user, params)
if(ismultitool(W))
@@ -327,6 +329,7 @@
icon_state = "spearbomb[wielded]"
else
icon_state = "spearglass[wielded]"
..()
/obj/item/twohanded/spear/afterattack(atom/movable/AM, mob/user, proximity)
if(!proximity)
@@ -509,6 +512,7 @@
icon_state = "chainsaw[wielded]"
else
icon_state = "chainsaw0"
..()
/obj/item/twohanded/chainsaw/attack(mob/target, mob/living/user)
if(wielded)
@@ -565,6 +569,7 @@
/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
..()
/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
for(var/atom/movable/X in orange(5, pull))
@@ -640,6 +645,7 @@
/obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "mjollnir[wielded]"
..()
/obj/item/twohanded/knighthammer
name = "singuloth knight's hammer"
@@ -670,6 +676,7 @@
/obj/item/twohanded/knighthammer/update_icon() //Currently only here to fuck with the on-mob icons.
icon_state = "knighthammer[wielded]"
..()
/obj/item/twohanded/knighthammer/afterattack(atom/A, mob/user, proximity)
if(!proximity)
@@ -725,6 +732,7 @@
icon_state = "fireaxe2"
else
icon_state = "fireaxe0"
..()
/obj/item/twohanded/energizedfireaxe/afterattack(atom/A, mob/user, proximity)
if(!proximity)