diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index b6fc160a6f6..4cf0cb53b33 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -947,7 +947,7 @@
icon_deny = "sec-deny"
req_access_txt = "1"
products = list(/obj/item/weapon/restraints/handcuffs = 8,/obj/item/weapon/restraints/handcuffs/cable/zipties = 8,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash = 5,
- /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4)
+ /obj/item/weapon/reagent_containers/food/snacks/donut/normal = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4,/obj/item/weapon/restraints/legcuffs/bola/energy = 7)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2,/obj/item/device/hailer = 5)
/obj/machinery/vending/hydronutrients
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 6660692ce62..00d2fcef75b 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -413,10 +413,10 @@
do_after_cooldown()
return
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas
- name = "PCMK-6 Bolas Launcher"
- icon_state = "mecha_bolas"
- projectile = /obj/item/weapon/legcuffs/bolas
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bola
+ name = "PCMK-6 Bola Launcher"
+ icon_state = "mecha_bola"
+ projectile = /obj/item/weapon/restraints/legcuffs/bola
fire_sound = 'sound/weapons/whip.ogg'
projectiles = 10
missile_speed = 1
@@ -424,19 +424,18 @@
projectile_energy_cost = 50
equip_cooldown = 10
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas/can_attach(obj/mecha/combat/gygax/M as obj)
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bola/can_attach(obj/mecha/combat/gygax/M as obj)
if(..())
if(istype(M))
return 1
return 0
-/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas/action(target, params)
+/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bola/action(target, params)
if(!action_checks(target))
return
set_ready_state(0)
- var/obj/item/weapon/legcuffs/bolas/M = new projectile(chassis.loc)
+ var/obj/item/weapon/restraints/legcuffs/bola/M = new projectile(chassis.loc)
playsound(chassis, fire_sound, 50, 1)
- M.thrown_from = src
M.throw_at(target, missile_range, missile_speed)
projectiles--
log_message("Fired from [name], targeting [target].")
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 51f892ac50b..ff509982d10 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -114,8 +114,21 @@
to_chat(user, "You wrap the cable restraint around the top of the rod.")
qdel(src)
else
- to_chat(user, "You need one rod to make a wired rod.")
+ to_chat(user, "You need one rod to make a wired rod!")
+ else if(istype(I, /obj/item/stack/sheet/metal))
+ var/obj/item/stack/sheet/metal/M = I
+ if(M.amount < 6)
+ to_chat(user, "You need at least six metal sheets to make good enough weights!")
return
+ to_chat(user, "You begin to apply [I] to [src]...")
+ if(do_after(user, 35, target = src))
+ var/obj/item/weapon/restraints/legcuffs/bola/S = new /obj/item/weapon/restraints/legcuffs/bola
+ M.use(6)
+ user.put_in_hands(S)
+ to_chat(user, "You make some weights out of [I] and tie them to [src].")
+ if(!remove_item_from_storage(user))
+ user.unEquip(src)
+ qdel(src)
/obj/item/weapon/restraints/handcuffs/cable/zipties
name = "zipties"
diff --git a/code/game/objects/items/weapons/legcuffs.dm b/code/game/objects/items/weapons/legcuffs.dm
index 3e6c4f835f5..6876394bea3 100644
--- a/code/game/objects/items/weapons/legcuffs.dm
+++ b/code/game/objects/items/weapons/legcuffs.dm
@@ -15,12 +15,17 @@
name = "bear trap"
throw_speed = 1
throw_range = 1
- icon_state = "beartrap0"
+ icon_state = "beartrap"
desc = "A trap used to catch bears and other legged creatures."
var/armed = 0
+ var/trap_damage = 20
var/obj/item/weapon/grenade/iedcasing/IED = null
var/obj/item/device/assembly/signaler/sig = null
+/obj/item/weapon/restraints/legcuffs/beartrap/New()
+ ..()
+ icon_state = "[initial(icon_state)][armed]"
+
/obj/item/weapon/restraints/legcuffs/beartrap/Destroy()
if(IED)
qdel(IED)
@@ -35,14 +40,14 @@
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return (BRUTELOSS)
-/obj/item/weapon/restraints/legcuffs/beartrap/attack_self(mob/user as mob)
+/obj/item/weapon/restraints/legcuffs/beartrap/attack_self(mob/user)
..()
if(ishuman(user) && !user.stat && !user.restrained())
armed = !armed
- icon_state = "beartrap[armed]"
+ icon_state = "[initial(icon_state)][armed]"
to_chat(user, "[src] is now [armed ? "armed" : "disarmed"]")
-/obj/item/weapon/restraints/legcuffs/beartrap/attackby(var/obj/item/I, mob/user as mob) //Let's get explosive.
+/obj/item/weapon/restraints/legcuffs/beartrap/attackby(obj/item/I, mob/user) //Let's get explosive.
if(istype(I, /obj/item/weapon/grenade/iedcasing))
if(IED)
to_chat(user, "This beartrap already has an IED hooked up to it!")
@@ -101,7 +106,7 @@
if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
var/mob/living/L = AM
armed = 0
- icon_state = "beartrap0"
+ icon_state = "[initial(icon_state)][armed]"
playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
L.visible_message("[L] triggers \the [src].", \
"You trigger \the [src]!")
@@ -122,9 +127,9 @@
if(ishuman(AM))
var/mob/living/carbon/H = AM
if(H.lying)
- H.apply_damage(20,BRUTE,"chest")
+ H.apply_damage(trap_damage, BRUTE,"chest")
else
- H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
+ H.apply_damage(trap_damage, BRUTE,(pick("l_leg", "r_leg")))
if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
H.legcuffed = src
src.loc = H
@@ -132,95 +137,75 @@
feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
else
- L.apply_damage(20,BRUTE)
+ L.apply_damage(trap_damage, BRUTE)
..()
+/obj/item/weapon/restraints/legcuffs/beartrap/energy
+ name = "energy snare"
+ armed = 1
+ icon_state = "e_snare"
+ trap_damage = 0
-/obj/item/weapon/legcuffs/bolas
- name = "bolas"
- desc = "An entangling bolas. Throw at your foes to trip them and prevent them from running."
+/obj/item/weapon/restraints/legcuffs/beartrap/energy/New()
+ ..()
+ spawn(100)
+ if(!istype(loc, /mob))
+ var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
+ sparks.set_up(1, 1, src)
+ sparks.start()
+ qdel(src)
+
+/obj/item/weapon/restraints/legcuffs/beartrap/energy/dropped()
+ ..()
+ qdel(src)
+
+/obj/item/weapon/restraints/legcuffs/beartrap/energy/attack_hand(mob/user)
+ Crossed(user) //honk
+
+/obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg
+ breakouttime = 20 // Cyborgs shouldn't have a strong restraint
+
+/obj/item/weapon/restraints/legcuffs/bola
+ name = "bola"
+ desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly."
+ icon_state = "bola"
+ breakouttime = 35//easy to apply, easy to break out of
gender = NEUTER
- icon = 'icons/obj/weapons.dmi'
- icon_state = "bolas"
- slot_flags = SLOT_BELT
- throwforce = 2
+ origin_tech = "engineering=3;combat=1"
+ var/weaken = 0
+
+/obj/item/weapon/restraints/legcuffs/bola/throw_impact(atom/hit_atom)
+ if(..() || !iscarbon(hit_atom))//if it gets caught or the target can't be cuffed,
+ return//abort
+ var/mob/living/carbon/C = hit_atom
+ if(!C.legcuffed)
+ visible_message("\The [src] ensnares [C]!")
+ C.legcuffed = src
+ src.loc = C
+ C.update_inv_legcuffed()
+ feedback_add_details("handcuffs","B")
+ to_chat(C, "\The [src] ensnares you!")
+ C.Weaken(weaken)
+
+/obj/item/weapon/restraints/legcuffs/bola/tactical //traitor variant
+ name = "reinforced bola"
+ desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody."
+ icon_state = "bola_r"
+ breakouttime = 70
+ origin_tech = "engineering=4;combat=3"
+ weaken = 1
+
+/obj/item/weapon/restraints/legcuffs/bola/energy //For Security
+ name = "energy bola"
+ desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests."
+ icon_state = "ebola"
+ hitsound = 'sound/weapons/tase.ogg'
w_class = 2
- origin_tech = "materials=1"
- attack_verb = list("lashed", "bludgeoned", "whipped")
- force = 4
- breakouttime = 50 //10 seconds
- throw_speed = 1
- throw_range = 10
- var/dispenser = 0
- var/throw_sound = 'sound/weapons/whip.ogg'
- var/trip_prob = 60
- var/thrown_from
+ breakouttime = 60
-/obj/item/weapon/legcuffs/bolas/suicide_act(mob/living/user)
- to_chat(viewers(user), "[user] is wrapping the [src.name] around \his neck! It looks like \he's trying to commit suicide.")
- return(OXYLOSS)
-
-/obj/item/weapon/legcuffs/bolas/throw_at(var/atom/A, throw_range, throw_speed)
- if(usr && !istype(thrown_from, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas)) //if there is a user, but not a mech
- if(istype(usr, /mob/living/carbon/human)) //if the user is human
- var/mob/living/carbon/human/H = usr
- if((CLUMSY in H.mutations) && prob(50))
- to_chat(H, "You smack yourself in the face while swinging the [src]!")
- H.Stun(2)
- H.drop_item(src)
- return
- if(!thrown_from && usr) //if something hasn't set it already (like a mech does when it launches)
- thrown_from = usr //then the user must have thrown it
- if(!istype(thrown_from, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas))
- playsound(src, throw_sound, 20, 1) //because mechs play the sound anyways
- var/turf/target = get_turf(A)
- var/atom/movable/adjtarget = new /atom/movable
- var/xadjust = 0
- var/yadjust = 0
- var/scaler = 0 //used to changed the normalised vector to the proper size
- scaler = throw_range / max(abs(target.x - src.x), abs(target.y - src.y)) //whichever is larger magnitude is what we normalise to
- if(target.x - src.x != 0) //just to avoid fucking with math for no reason
- xadjust = round((target.x - src.x) * scaler) //normalised vector is now scaled up to throw_range
- adjtarget.x = src.x + xadjust //the new target at max range
- else
- adjtarget.x = src.x
- if(target.y - src.y != 0)
- yadjust = round((target.y - src.y) * scaler)
- adjtarget.y = src.y + yadjust
- else
- adjtarget.y = src.y
- // log_admin("Adjusted target of [adjtarget.x] and [adjtarget.y], adjusted with [xadjust] and [yadjust] from [scaler]")
- ..(get_turf(adjtarget), throw_range, throw_speed)
- thrown_from = null
-
-/obj/item/weapon/legcuffs/bolas/throw_impact(atom/hit_atom) //Pomf was right, I was wrong - Comic
- if(isliving(hit_atom) && hit_atom != usr) //if the target is a live creature other than the thrower
- var/mob/living/M = hit_atom
- if(ishuman(M)) //if they're a human species
- var/mob/living/carbon/human/H = M
- if(H.legcuffed) //if the target is already legcuffed (has to be walking)
- throw_failed()
- return
- if(prob(trip_prob)) //this probability is up for change and mostly a placeholder - Comic
- step(H, H.dir)
- H.visible_message("[H] was tripped by the bolas!","Your legs have been tangled!");
- H.Stun(2) //used instead of setting damage in vars to avoid non-human targets being affected
- H.Weaken(4)
- H.legcuffed = src //applies legcuff properties inherited through legcuffs
- src.loc = H
- H.update_inv_legcuffed()
- if(!H.legcuffed) //in case it didn't happen, we need a safety net
- throw_failed()
- else
- M.Stun(2) //minor stun damage to anything not human
- throw_failed()
- return
-
-/obj/item/weapon/legcuffs/bolas/proc/throw_failed() //called when the throw doesn't entangle
- //log_admin("Logged as [thrown_from]")
- if(!thrown_from || !istype(thrown_from, /mob/living)) //in essence, if we don't know whether a person threw it
- qdel(src) //destroy it, to stop infinite bolases
-
-/obj/item/weapon/legcuffs/bolas/Bump()
- ..()
- throw_failed() //allows a mech bolas to be destroyed
+/obj/item/weapon/restraints/legcuffs/bola/energy/throw_impact(atom/hit_atom)
+ if(iscarbon(hit_atom))
+ var/obj/item/weapon/restraints/legcuffs/beartrap/B = new /obj/item/weapon/restraints/legcuffs/beartrap/energy/cyborg(get_turf(hit_atom))
+ B.Crossed(hit_atom)
+ qdel(src)
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm
index 88d3f202ac6..d7c33164543 100644
--- a/code/game/objects/items/weapons/pneumaticCannon.dm
+++ b/code/game/objects/items/weapons/pneumaticCannon.dm
@@ -141,6 +141,7 @@
/obj/item/stack/packageWrap = 8,
/obj/item/pipe = 2)
time = 300
+ category = CAT_WEAPON
/obj/item/weapon/pneumatic_cannon/proc/updateTank(obj/item/weapon/tank/thetank, removing = 0, mob/living/carbon/human/user)
if(removing)
diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm
index 2155aeb69c6..00ac859528d 100644
--- a/code/game/objects/items/weapons/signs.dm
+++ b/code/game/objects/items/weapons/signs.dm
@@ -40,4 +40,5 @@
result = /obj/item/weapon/picket_sign
reqs = list(/obj/item/stack/rods = 1,
/obj/item/stack/sheet/cardboard = 2)
- time = 80
\ No newline at end of file
+ time = 80
+ category = CAT_MISC
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 43d0897b2f9..a0e3d4dd69e 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -181,8 +181,8 @@
"/obj/item/weapon/melee/classic_baton",
"/obj/item/device/flashlight/seclite",
"/obj/item/taperoll/police",
- "/obj/item/weapon/melee/classic_baton/telescopic"
- )
+ "/obj/item/weapon/melee/classic_baton/telescopic",
+ "/obj/item/weapon/restraints/legcuffs/bola")
/obj/item/weapon/storage/belt/security/sec/New()
..()
@@ -476,7 +476,7 @@
allow_quick_empty = 1
can_hold = list(
"/obj/item/weapon/grenade/smokebomb",
- "/obj/item/weapon/legcuffs/bolas"
+ "/obj/item/weapon/restraints/legcuffs/bola"
)
flags = NODROP
@@ -492,8 +492,8 @@
new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src)
new /obj/item/weapon/grenade/smokebomb(src)
- new /obj/item/weapon/legcuffs/bolas(src)
- new /obj/item/weapon/legcuffs/bolas(src)
+ new /obj/item/weapon/restraints/legcuffs/bola(src)
+ new /obj/item/weapon/restraints/legcuffs/bola(src)
processing_objects.Add(src)
cooldown = world.time
@@ -504,7 +504,7 @@
for(S in src)
smokecount++
bolacount = 0
- var/obj/item/weapon/legcuffs/bolas/B
+ var/obj/item/weapon/restraints/legcuffs/bola/B
for(B in src)
bolacount++
if(smokecount < 4)
@@ -513,7 +513,7 @@
smokecount++
if(bolacount < 2)
while(bolacount < 2)
- new /obj/item/weapon/legcuffs/bolas(src)
+ new /obj/item/weapon/restraints/legcuffs/bola(src)
bolacount++
cooldown = world.time
update_icon()
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 229daee5c93..2330f439547 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -177,12 +177,11 @@
/datum/crafting_recipe/shoe_rags
name = "Shoe Rags"
-
result = /obj/item/shoe_silencer
reqs = list(/obj/item/stack/tape_roll = 10)
tools = list(/obj/item/weapon/wirecutters)
-
time = 40
+ category = CAT_MISC
/obj/item/clothing/shoes/sandal/white
name = "White Sandals"
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 60d830a1c89..4a059158e2f 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -23,7 +23,7 @@
/obj/item/device/assembly/igniter = 1,
/obj/item/weapon/reagent_containers/food/drinks/cans = 1)
parts = list(/obj/item/weapon/reagent_containers/food/drinks/cans = 1)
- time = 80
+ time = 15
category = CAT_WEAPON
/datum/crafting_recipe/stunprod
@@ -33,10 +33,18 @@
/obj/item/stack/rods = 1,
/obj/item/weapon/wirecutters = 1,
/obj/item/weapon/stock_parts/cell = 1)
- time = 80
+ time = 40
parts = list(/obj/item/weapon/stock_parts/cell = 1)
category = CAT_WEAPON
+/datum/crafting_recipe/bola
+ name = "Bola"
+ result = /obj/item/weapon/restraints/legcuffs/bola
+ reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1,
+ /obj/item/stack/sheet/metal = 6)
+ time = 20//15 faster than crafting them by hand!
+ category= CAT_WEAPON
+
/datum/crafting_recipe/ed209
name = "ED209"
result = /mob/living/simple_animal/bot/ed209
@@ -52,7 +60,7 @@
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
tools = list(/obj/item/weapon/weldingtool, /obj/item/weapon/screwdriver)
- time = 120
+ time = 60
category = CAT_ROBOT
/datum/crafting_recipe/secbot
@@ -64,7 +72,7 @@
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
tools = list(/obj/item/weapon/weldingtool)
- time = 120
+ time = 60
category = CAT_ROBOT
/datum/crafting_recipe/cleanbot
@@ -73,7 +81,7 @@
reqs = list(/obj/item/weapon/reagent_containers/glass/bucket = 1,
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
- time = 80
+ time = 40
category = CAT_ROBOT
/datum/crafting_recipe/floorbot
@@ -83,7 +91,7 @@
/obj/item/stack/tile/plasteel = 1,
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
- time = 80
+ time = 40
category = CAT_ROBOT
/datum/crafting_recipe/medbot
@@ -93,7 +101,7 @@
/obj/item/weapon/storage/firstaid = 1,
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
- time = 80
+ time = 40
category = CAT_ROBOT
/datum/crafting_recipe/flamethrower
@@ -103,7 +111,7 @@
/obj/item/device/assembly/igniter = 1,
/obj/item/stack/rods = 2)
tools = list(/obj/item/weapon/screwdriver)
- time = 20
+ time = 10
category = CAT_WEAPON
/datum/crafting_recipe/meteorshot
@@ -171,7 +179,8 @@
name = "Overload Improvised Shell"
result = /obj/item/ammo_casing/shotgun/improvised/overload
reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1,
- /datum/reagent/blackpowder = 5)
+ /datum/reagent/blackpowder = 10,
+ /datum/reagent/plasma_dust = 20)
tools = list(/obj/item/weapon/screwdriver)
time = 5
category = CAT_AMMO
@@ -194,7 +203,16 @@
/obj/item/weaponcrafting/stock = 1,
/obj/item/stack/packageWrap = 5,)
tools = list(/obj/item/weapon/screwdriver)
- time = 200
+ time = 100
+ category = CAT_WEAPON
+
+/datum/crafting_recipe/spear
+ name = "Spear"
+ result = /obj/item/weapon/twohanded/spear
+ reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1,
+ /obj/item/weapon/shard = 1,
+ /obj/item/stack/rods = 1)
+ time = 40
category = CAT_WEAPON
/datum/crafting_recipe/spooky_camera
@@ -208,7 +226,7 @@
/datum/crafting_recipe/notreallysoap
name = "Homemade Soap"
result = /obj/item/weapon/soap/ducttape
- time = 100
+ time = 50
reqs = list(/obj/item/stack/tape_roll = 1,
/datum/reagent/liquidgibs = 10)
@@ -224,7 +242,7 @@
/datum/crafting_recipe/makeshift_bolt
name = "Makeshift Bolt"
result = /obj/item/weapon/arrow/rod
- time = 15
+ time = 5
reqs = list(/obj/item/stack/rods = 1)
tools = list(/obj/item/weapon/weldingtool)
category = CAT_AMMO
@@ -232,7 +250,7 @@
/datum/crafting_recipe/crossbow
name = "Powered Crossbow"
result = /obj/item/weapon/gun/throw/crossbow
- time = 300
+ time = 150
reqs = list(/obj/item/stack/rods = 3,
/obj/item/stack/cable_coil = 10,
/obj/item/stack/sheet/mineral/plastic = 3,
@@ -246,4 +264,4 @@
result = /obj/item/latexballon
time = 15
reqs = list(/obj/item/clothing/gloves/color/latex = 1,
- /obj/item/stack/cable_coil = 5)
+ /obj/item/stack/cable_coil = 5)
\ No newline at end of file
diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm
index a661c0e3701..2a893755589 100644
--- a/code/modules/projectiles/ammunition/ammo_casings.dm
+++ b/code/modules/projectiles/ammunition/ammo_casings.dm
@@ -99,6 +99,7 @@
projectile_type = /obj/item/projectile/bullet
materials = list(MAT_METAL=4000)
+
/obj/item/ammo_casing/shotgun/buckshot
name = "buckshot shell"
desc = "A 12 gauge buckshot shell."
@@ -116,6 +117,7 @@
variance = 25
materials = list(MAT_METAL=4000)
+
/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag slug"
desc = "A weak beanbag slug for riot control."
@@ -123,15 +125,17 @@
projectile_type = /obj/item/projectile/bullet/weakbullet/rubber
materials = list(MAT_METAL=250)
+
/obj/item/ammo_casing/shotgun/improvised
name = "improvised shell"
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
- icon_state = "gshell"
+ icon_state = "improvshell"
projectile_type = /obj/item/projectile/bullet/pellet/weak
materials = list(MAT_METAL=250)
- pellets = 5
+ pellets = 10
variance = 25
+
/obj/item/ammo_casing/shotgun/improvised/overload
name = "overloaded improvised shell"
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards. This one has been packed with even more \
@@ -139,12 +143,9 @@
icon_state = "improvshell"
projectile_type = /obj/item/projectile/bullet/pellet/overload
materials = list(MAT_METAL=250)
- pellets = 5
+ pellets = 4
variance = 40
-/obj/item/ammo_casing/shotgun/improvised/overload/New()
- ..()
- pellets = rand(3, 8)
/obj/item/ammo_casing/shotgun/stunslug
name = "taser slug"
@@ -153,6 +154,7 @@
projectile_type = /obj/item/projectile/bullet/stunshot
materials = list(MAT_METAL=250)
+
/obj/item/ammo_casing/shotgun/meteorshot
name = "meteorshot shell"
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
@@ -206,7 +208,7 @@
name = "laser slug"
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package."
icon_state = "lshell"
- projectile_type = /obj/item/projectile/beam
+ projectile_type = /obj/item/projectile/beam/laser
/obj/item/ammo_casing/shotgun/techshell
name = "unloaded technological shell"
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index 8f8809c504f..ecb54b9c1f0 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -59,7 +59,7 @@
..()
if(istype(target, /mob/living/carbon))
var/mob/living/carbon/M = target
- M.adjust_fire_stacks(1)
+ M.adjust_fire_stacks(4)
M.IgniteMob()
/obj/item/projectile/bullet/incendiary/firebullet
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 8f2b16626d3..f292209ac3e 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -837,13 +837,13 @@
construction_time = 100
category = list("Exosuit Equipment")
-/datum/design/mech_bolas
- name = "Exosuit Weapon Design (PCMK-6 Bolas Launcher)"
- desc = "Allows for the construction of PCMK-6 Bolas Launcher."
- id = "mech_bolas"
+/datum/design/mech_bola
+ name = "Exosuit Weapon Design (PCMK-6 Bola Launcher)"
+ desc = "Allows for the construction of PCMK-6 Bola Launcher."
+ id = "mech_bola"
build_type = MECHFAB
req_tech = list("combat" = 3)
- build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bolas
+ build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/bola
materials = list(MAT_METAL=10000)
construction_time = 100
category = list("Exosuit Equipment")
diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi
index f330c5a9b25..9c0d20bd898 100644
Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index a22bb625198..40ef753fb6f 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ