Cabbage's Armory (#5757)

## Main Additions and Modifications
This PR adds in a quite a few new things.
### Overview
**WT-550 "Enhancements"** - made available via research. These
modifications retain the full-auto capability of the WT-550 to varying
degrees. Additionally a compressed WT550 magazine is available via
research. It contains 40 weaker bullets compared to the normal
magazine's 20. It is only allowed to contain compressed bullets to avoid
cheesing, and requires bluespace to fabricate. It is designed as a
sustained dps ammunition as opposed to a high dps ammunition
**WT-550-B** - Shoots in bursts with decent recoil and slightly higher
dps.
**WT-550-C** - Shoots slower but has a higher damage and projectile
velocity along with a scope.
**Sawn-off WT-550** - Is smaller but has egregious recoil and spread.
**.38 BR** - A simple but slightly less powerful alternative to the
NT-38 battle rifle. Craftable via a kit obtained from research.
**Stunstaff** - A weapon that is available via crafting and functions as
an alternative to a baton and riot shield. A heroic variant exists
within the code but the recipe can only be learned from a book that
sometimes spawns in the armory contraband closet.
**Advanced Energy SMG** - A hybrid of a disabler SMG, laser carbine, and
advanced energy gun. Does exactly what you think it does. Obtainable via
crafting.
**Stingballer** - A rifle that rapidly shoots stingballs. Direct damage
is lesser than a stingbang. Purchasable from cargo.
**Security Juggernaut Suit** - A heavily armoured suit that severely
cripples your mobility in exchange for very high protection. Crafting
kit is printable from a technode.
**Horizon Beam Rifle** - Damage is now 110 with 35 armor piercing, and a
demo mod of 2. Upon contact with walls, it destroys them like how a
pulse laser does.

### Crafting
WT-550 weapons can all be made with just the gun and the kit.
The sawn-off WT550 can be made by taking a saw to the WT550.
The .38 BR requires an NT-38 battle rifle along with a multitool and a
screwdriver.
The Advanced Energy SMG requires a disabler smg, laser carbine, and an
advanced energy gun.
The Stunstaff requires two security batons, some plasteel and some
cable, along with a welder and wrench.
The Heroic Stunstaff requires some other ingredients.
The Security Juggernaut suit requires a full toolbox of tools as well as
the armor plates, a full coil of cable, a pair of magboots, a swat
helmet, a swat suit, and two seclites.
Stingbangs can be prepared into stingball canisters with a screwdriver
and some wirecutters. Each contains 25 rounds are are used to fill the
stingballer.

### Cargo
**Stingballer** - Armory crate - Contains one stingballer. - 4500
credits.
**Grenade Launcher** - Armory crate - Contains one grenade launcher and
a box of flashbangs. - 15000 credits.
**Kiboko Grenade Launcher** - Armory crate - Contains one Kiboko grenade
launcher. - 7500 credits.

### R&D
The **"Ballisitic Research"** technode has been removed and dragon's
breath shells have been moved to the illegal technology node. The node
remains within the code though if more exotic ammunition is developed
and requires an additional research node for it.
New **"Advanced Ballistics"** technode contains the part kits for the
WT-550 modifications and NT-BR simplification kit and requires Exotic
Ammunition to research.
New **"Advanced Armor"** technode contains the Security Juggernaut
Plates and requires Riot Suppression and Gas Compression to research.

### Code
Adds to the buckling system where if something has TRAIT_NO_BUCKLE, it
cannot be buckled at all.
Adds to the vehicle system where if something has TRAIT_NO_VEHICLE, it
will be flung off the vehicle it attempts to move the vehicle
themselves.
Adds to the chair system where if something has TRAIT_NO_VEHICLE, it
will destroy the chair.
Adds to the movement system where if something has TRAIT_LARGE_CLOTHES,
TRAIT_BULKY_CLOTHES, or TRAIT_HUGE_CLOTHES, it will incur a 3, 4, and 5
move speed multiplier when pulling that thing. If anyone can help me do
this more modular, please reach out, I have no clue how.
Edits the equipment slowdown system to properly apply a special slowdown
that cannot be negated by anything. Requires the TRUE_IMMUTABLE_SLOW
bubber_obj_flag to be present. IMMUTABLE_SLOW is still required for red
potion immunity.

### Other Misc. Changes
The WT-551 has been effectively rendered impossible to get. This
decision stems from the fact that the WT-550 and the WT-551 were
functionally identical when used in-game. Instances of the 551 have been
replaced with the 550.
Skyrat's renaming of /tg/ bullets has been completely removed. Some
descriptions have been kept and altered because they were kinda neat.
.460 Ceres -> .45
.416 Stabilis -> .50 BMG
8mm Usurpator -> 4.6x30mm
.454 Trucidator -> .50 Action Express
.277 Aestus -> .223

## Statistics For New Additions
**Stunstaff**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/0e1c2a1a-20ba-47a9-91f1-e63ca11b5e43"
/>
- Two-handed, bulky. Fits on the back and an armor vest.
- 65 stamina damage
- 20 stun armour penetration
- 14 force
- 8 throw force
- 50 block chance
- 20 effective block vs tackles
- 10 effective block vs projectiles

**Heroic Stunstaff**
- 24 stamina damage
- 0.5 second stun
- 4 times the cell charge consumption
- No cooldown between stuns
- 35 stun armor penetration
- 15 force
- 10 throw force
- 75% throw stun chance
- Can be thrown like a boomerang
- 75 block chance
- 30 effective block vs tackles
- 50 effective block vs projectiles

**WT-550-B**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/56fea4dd-9b0c-4e06-93a7-b0389f3d32c9"
/>
- Bulky sized, small weapon weight, dual wielding.
- 2 round burst every 0.5 seconds
- 0.25 recoil
- 3 spread
- Can be suppressed

**WT-550-C**
<img width="48" height="32" alt="image"
src="https://github.com/user-attachments/assets/bd80570d-3e70-463d-8b6b-7cefcb1d54e6"
/>
- Bulky sized, heavy weapon weight, no dual wielding.
- Half fire rate of normal WT (0.6 compared to 0.3)
- 1.5x damage multiplier
- 1.5x projectile speed multiplier
- +5 projectile wound bonus
- Can be Suppressed
- Mediocre Scope

**Sawn-off WT-550**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/6d786022-2d93-42da-9dcc-fe6dfadbbce1"
/>
- Normal sized, light weapon weight, dual wielding
- 10 spread
- 20 dual wielded spread
- Sawn-off recoil (high)

**Compressed WT-550 magazine**
- 40 capacity
- 12 damage (20 for normal rounds)

**Stingballer**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/de30bda5-9e0b-44da-8097-ca9827d3d8c8"
/>
- Bulky sized, normal weapon weight, no dual wielding.
- 8 rounds per second
- 7.5 spread
- 50 round capacity
- 1.5 damage
- 4 stamina damage
- Embed chance at close range
- Bouncy projectile
- Low effective range

**.38 Battle Rifle**
<img width="48" height="32" alt="image"
src="https://github.com/user-attachments/assets/24a9a257-97fe-4313-ba39-93d17230f1b4"
/>
- Overall same statistics as the NT-38 Battle Rifle except for
- 1.0x damage multiplier (compared to 1.2x)
- 1.0x projectile speed multiplier (compared to 1.2x)
- 25.0% faster rate of fire (1.5 compared to 2)
- No degradation mechanics
- No scope

**Advanced Energy SMG**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/2671009a-a994-4054-92ff-4db2959501e8"
/>
- Bulky Size, no dual wielding.
- 0.8x damage multiplier (12 on kill, 12 on disable)
- 1.2x projectile speed multiplier
- 40 shots on kill, 40 shots on disable
- Charges about half as fast as the regular advanced energy gun.
- Same fire rate as the disabler SMG
- 2 spread

**Security Juggernaut Suit**
<img width="32" height="32" alt="image"
src="https://github.com/user-attachments/assets/5de0a084-4a07-4d8f-88a3-d9996de41010"
/>
- Built in helmet
- Helmet protects head from flashes, loud noises, impacts and
pepperspray
- Full temperature and pressure protection
- Helmet has powerful flashlight mounted
- Takes 12 seconds to put on, 15 to put on someone else
- Slows you down everywhere
- Slows you down when in-hand
- Slows down someone who's dragging you
- Prevents aggressive grabs against you when worn
- Prevents combat-mode pushing against you when worn
- Prevents shove knockdowns when worn
- Prevents gravity effects when worn
- Prevents buckling when worn
- Cannot be red potion'd.
- Does NOT protect against batons or knockdown.

Current Armor values:
- melee = 80
- bullet = 80
- laser = 70
- energy = 60
- bomb = 100
- bio = 100
- fire = 100
- acid = 100
- wound = 30

## Why It's Good For The Game

This PR adds in quite a few items that fill certain role archetypes
within security while allowing them to still use equipment that security
would already have.

## Proof Of Testing

Testing overall has been completed.

Testing left to do:
- [x] Cargo Orders

## Changelog
🆑
add: Added a bunch of alternative additional weapon and equipment
upgrade options to security, allowing a little bit of difference in the
late-game arsenal or general armament.
add: Adds the WT-550-B and WT-550-C, upgrades to the classic autorifle.
add: The WT550 can now also be sawn-off.
add: Adds the Stingballer, a close range weapon that rapidly shoots
stingballs.
add: Adds the Stunstaff, an aura-farming alternative to the classic
baton and shield.
add: Adds the Advanced Energy SMG, an a modified AEG that gains
rapid-fire capabilites.
add: Adds the Security Juggernaut suit, an impossibly slow suit that
hinders your movement but has some of the best armour you'll ever see.
add: Adds the .38 battle rifle, a simplified NT-38 Battle Rifle. Lacks
the combat improvements, but does not degrade.
balance: The Horizon Beam Rifle's performance has been tweaked. Damage
is now 110, with 35 armor penetration and a demolition mod of 2, as well
as the ability to destroy walls like pulse rifles.
add: The Kiboko and pneumatic grenade launcher can be bought from cargo
now.
del: The WT-551 has be completely removed and replaced with the WT-550
del: Any instances of Skyrat's ammunition naming system have been wiped.
Please report any inconsistencies you may find.
/🆑

---------

Co-authored-by: Cabbage <supredoode@gmail.com>
Co-authored-by: Mathilde <146444134+ibexgoetia@users.noreply.github.com>
Co-authored-by: Roxy <75404941+TealSeer@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
This commit is contained in:
Cabbage
2026-07-19 12:24:29 -07:00
committed by GitHub
co-authored by Cabbage Mathilde Roxy LT3
parent 4db3566a11
commit 6508994fdf
69 changed files with 978 additions and 199 deletions
@@ -0,0 +1,3 @@
DEFINE_BITFIELD(bubber_obj_flags, list(
"TRUE_IMMUTABLE_SLOW" = TRUE_IMMUTABLE_SLOW,
))
+3
View File
@@ -1,6 +1,9 @@
#define BLOOD_VOLUME_OVERSIZED 1120
#define PULL_OVERSIZED_SLOWDOWN 2
#define PULL_BIG_CLOTHES_SLOWDOWN 3
#define PULL_BULKY_CLOTHES_SLOWDOWN 4
#define PULL_HUGE_CLOTHES_SLOWDOWN 5
#define HUMAN_MAXHEALTH MAX_LIVING_HEALTH
@@ -0,0 +1 @@
#define TRUE_IMMUTABLE_SLOW (1<<22)
@@ -6,3 +6,6 @@
#define TECHWEB_NODE_MECHLAUNCHPAD "mechpad"
#define TECHWEB_NODE_BORG_RESEARCH "borg_research"
#define TECHWEB_NODE_BULLET_WEAPONS "bullet_weapons"
#define TECHWEB_NODE_ADVANCED_ARMOR "advanced_armor"
@@ -85,3 +85,14 @@
/// Trait used to block telepathy types (Genetics, Xenomorph, Revenant, Slime. Ideally should be all.)
#define TRAIT_PSIONIC_DAMPENER "psionic_dampener"
/// Induces a dragging slowdown to the person when applied.
#define TRAIT_BIG_CLOTHES "trait_big_clothes" // 3 slowdown
#define TRAIT_BULKY_CLOTHES "trait_bulky_clothes" // 4 slowdown
#define TRAIT_HUGE_CLOTHES "trait_huge_clothes" // 5 slowdown
/// Prevents a person from using vehicles.
#define TRAIT_NO_VEHICLE "trait_no_vehicle"
/// Prevents from being buckled to anything
#define TRAIT_NO_BUCKLE "trait_no_buckle"
@@ -29,7 +29,6 @@
if(z_move_flags & ZMOVE_FEEDBACK)
to_chat(rider, span_warning("You can't seem to hold onto [movable_parent] to move it..."))
return COMPONENT_RIDDEN_STOP_Z_MOVE
return COMPONENT_RIDDEN_ALLOW_Z_MOVE
/datum/component/riding/vehicle/driver_move(atom/movable/movable_parent, mob/living/user, direction)
@@ -79,8 +78,27 @@
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
//BUBBER EDIT
if(HAS_TRAIT(user, TRAIT_NO_VEHICLE))
if(ride_check_flags & UNBUCKLE_DISABLED_RIDER)
vehicle_parent.unbuckle_mob(user, TRUE)
user.visible_message(span_danger("[user] falls off \the [vehicle_parent]."),\
span_danger("You get thrown off \the [vehicle_parent] as you are incapable of operating it!"))
user.adjust_stamina_loss(35)
playsound(src, 'sound/effects/bang.ogg', 40, TRUE)
var/atom/throw_target = get_edge_target_turf(user, pick(GLOB.cardinals))
user.throw_at(throw_target, 1, 1)
user.Stun(2 SECONDS)
if(COOLDOWN_FINISHED(src, message_cooldown))
to_chat(user, span_warning("You cannot operate \the [vehicle_parent] right now!"))
COOLDOWN_START(src, message_cooldown, 5 SECONDS)
return COMPONENT_DRIVER_BLOCK_MOVE
handle_ride(user, direction)
return ..()
//BUBBER EDIT END
/// This handles the actual movement for vehicles once [/datum/component/riding/vehicle/proc/driver_move] has given us the green light
/datum/component/riding/vehicle/proc/handle_ride(mob/user, direction)
+6 -1
View File
@@ -269,7 +269,12 @@
//If buckling is forbidden for the target, cancel
if(!target.can_buckle_to && !force)
return FALSE
//Bubber Addition
//If the target has the TRAIT_NO_BUCKLE, preventing buckling
if(HAS_TRAIT(target, TRAIT_NO_BUCKLE))
to_chat(target, span_danger("You are unable to do that."))
return FALSE
//Bubber Addition End
return TRUE
/**
@@ -157,7 +157,7 @@
. = ..()
handle_layer()
//SKYRAT EDIT ADDITION
if(HAS_TRAIT(M, TRAIT_OVERSIZED))
if(HAS_TRAIT(M, TRAIT_OVERSIZED) || HAS_TRAIT(M, TRAIT_NO_VEHICLE))
visible_message(span_warning("[src] buckles under the weight of [M] causing it to break!"))
playsound(src, 'modular_skyrat/modules/oversized/sound/chair_break.ogg', 70, TRUE)
deconstruct()
@@ -100,6 +100,19 @@
add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_OVERSIZED_SLOWDOWN)
return
//SKYRAT EDIT END
//BUBBER EDIT
//Handles extra slowdown if the person has certain clothing traits. If someone can do this more modularily, be my guest.
if(HAS_TRAIT(L, TRAIT_BIG_CLOTHES))
add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_BIG_CLOTHES_SLOWDOWN)
return
if(HAS_TRAIT(L, TRAIT_BULKY_CLOTHES))
add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_BULKY_CLOTHES_SLOWDOWN)
return
if(HAS_TRAIT(L, TRAIT_HUGE_CLOTHES))
add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/bulky_drag, multiplicative_slowdown = PULL_HUGE_CLOTHES_SLOWDOWN)
return
//BUBBER EDIT END
if(!slowed_by_drag || L.body_position == STANDING_UP || L.buckled || grab_state >= GRAB_AGGRESSIVE)
remove_movespeed_modifier(/datum/movespeed_modifier/bulky_drag)
return
+17 -1
View File
@@ -1556,8 +1556,15 @@
/mob/proc/update_equipment_speed_mods()
var/speedies = 0
var/immutable_speedies = 0
//Bubber Addition
var/true_immute_speedies = 0
//Bubber Addition End
for(var/obj/item/thing in get_equipped_speed_mod_items())
if(thing.item_flags & IMMUTABLE_SLOW)
//Bubber Addition
if(thing.bubber_obj_flags & TRUE_IMMUTABLE_SLOW)
true_immute_speedies += thing.slowdown
//Bubber Addition End
else if(thing.item_flags & IMMUTABLE_SLOW)
immutable_speedies += thing.slowdown
else
speedies += thing.slowdown
@@ -1565,6 +1572,15 @@
//if we have TRAIT_STURDY_FRAME, we reduce our overall speed penalty UNLESS that penalty would be a negative value, and therefore a speed boost.
if(speedies > 0 && HAS_TRAIT(src, TRAIT_STURDY_FRAME))
speedies *= 0.2
//Bubber Addition
if(true_immute_speedies)
add_or_update_variable_movespeed_modifier(
/datum/movespeed_modifier/equipment_speedmod/true_immutable,
multiplicative_slowdown = true_immute_speedies,
)
else
remove_movespeed_modifier(/datum/movespeed_modifier/equipment_speedmod/true_immutable)
//Bubber Addition End
if(immutable_speedies)
add_or_update_variable_movespeed_modifier(
@@ -201,7 +201,7 @@
/obj/item/gun/ballistic/automatic/sniper_rifle/modular/syndicate
name = "'Caracal' anti-materiel rifle" //we flop out
desc = "A sleek, light bullpup .416 Stabilis sniper rifle with a reciprocating barrel, nicknamed 'Caracal' by Scarborough Arms. Its compact folding parts make it able to fit into a backpack, and its modular barrel can have a suppressor installed within it rather than as a muzzle extension. Its advanced scope accounts for all ballistic inaccuracies of a reciprocating barrel."
desc = "A sleek, light bullpup .50 BMG sniper rifle with a reciprocating barrel, nicknamed 'Caracal' by Scarborough Arms. Its compact folding parts make it able to fit into a backpack, and its modular barrel can have a suppressor installed within it rather than as a muzzle extension. Its advanced scope accounts for all ballistic inaccuracies of a reciprocating barrel."
icon_state = "sysniper"
fire_sound = 'modular_skyrat/modules/aesthetics/guns/sound/sniperrifle.ogg'
suppressed_sound = 'modular_skyrat/modules/aesthetics/guns/sound/sniperrifle_s.ogg'
@@ -238,7 +238,7 @@
/obj/item/gun/ballistic/automatic/ar/modular
name = "\improper NT ARG-63"
desc = "Nanotrasen's prime ballistic option based on the Stoner design, fitted with a light polymer frame and other tactical furniture, and chambered in .277 Aestus - nicknamed 'Boarder' by Special Operations teams."
desc = "Nanotrasen's prime ballistic option based on the Stoner design, fitted with a light polymer frame and other tactical furniture, and chambered in .223 - nicknamed 'Boarder' by Special Operations teams."
icon = 'modular_skyrat/modules/aesthetics/guns/icons/guns_gubman2.dmi'
icon_state = "arg"
inhand_icon_state = "arg"
@@ -258,102 +258,56 @@
name = "enchanted rifle round"
can_be_printed = FALSE // these are Really Really Better Rubbers
// overrides for tgcode's .223 (formerly 5.56), used in the M90-gl - renamed to .277 Aestus
/obj/item/ammo_casing/a223
name = ".277 Aestus casing"
desc = "A .277 bullet casing."
/obj/item/ammo_casing/a223/phasic
name = ".277 Aestus phasic casing"
desc = "A .277 Aestus bullet casing.\
<br><br>\
<i>PHASIC: Ignores all surfaces except organic matter.</i>"
advanced_print_req = TRUE
custom_materials = AMMO_MATS_PHASIC
// shotgun ammo overrides moved to modular_skyrat\modules\shotgunrebalance\code\shotgun.dm
// overrides for tgcode .50cal, used in their sniper/anti-materiel rifles
/obj/item/ammo_casing/p50
name = ".416 Stabilis casing"
desc = "A .416 bullet casing."
advanced_print_req = TRUE // you are NOT printing more ammo for this without effort.
// then again the offstations with ammo printers and sniper rifles come with an ammo disk anyway, so
/obj/item/ammo_casing/p50/surplus
name = ".416 Stabilis surplus casing"
desc = "A .416 bullet casing. Intentionally underloaded, but still quite painful to be shot with.\
desc = "A .50 BMG bullet casing. Intentionally underloaded, but still quite painful to be shot with.\
<br><br>\
<i>SURPLUS/UNDERLOAD: Lacks armor penetration capabilities, contact-stun, or innate dismemberment ability. Still incredibly painful to be hit by.</i>"
projectile_type = /obj/projectile/bullet/p50/surplus
/obj/item/ammo_casing/p50/disruptor
name = ".416 Stabilis disruptor casing"
desc = "A .416 bullet casing. Specializes in sending the target to sleep rather than hell, unless they're synthetic. Then they probably go to hell anyway.\
desc = "A .50 BMG bullet casing. Specializes in sending the target to sleep rather than hell, unless they're synthetic. Then they probably go to hell anyway.\
<br><br>\
<i>DISRUPTOR: Forces humanoid targets to sleep, does heavy damage against cyborgs, EMPs struck targets.</i>"
/obj/item/ammo_casing/p50/incendiary
name = ".416 Stabilis precision incendiary casing"
desc = "A .416 bullet casing. Made with an agitated-plasma tip, for making people regret being alive.\
desc = "A .50 BMG bullet casing. Made with an agitated-plasma tip, for making people regret being alive.\
<br><br>\
<i>PRECISION INCENDIARY: Lacks innate dismemberment ability and contact-stun, suffers against mechanized armor. Sets people on fire.</i>"
projectile_type = /obj/projectile/bullet/p50/incendiary
/obj/item/ammo_casing/p50/penetrator
name = ".416 Stabilis penetrator sabot casing"
desc = "A .416 bullet casing. Loaded with a hardened sabot and packed with extra propellant. \
desc = "A .50 BMG bullet casing. Loaded with a hardened sabot and packed with extra propellant. \
Designed to go through basically everything. A label warns of overpressure risk, and to not use the round if \
a given weapon cannot handle pressures greater than 85000 PSI.\
<br><br>\
<i>PENETRATOR: Goes through basically everything. Lacks innate dismemberment ability and contact-stun capabilities.</i>"
/obj/item/ammo_casing/p50/marksman
name = ".416 Stabilis marksman hyperkinetic casing"
desc = "A .416 bullet casing. Loaded with a hyperkinetic bullet that ignores mundane things like \"travel time\" \
desc = "A .50 BMG bullet casing. Loaded with a hyperkinetic bullet that ignores mundane things like \"travel time\" \
and a concerning amount of experimental propellant. A label warns of overpressure risk, and to not use the round if \
a given weapon cannot handle pressures greater than 95000 PSI.\
<br><br>\
<i>MARKSMAN: Bullets have <b>no</b> travel time, and can ricochet once. Does slightly less damage, lacks innate dismemberment and contact-stun capabilities.</i>"
projectile_type = /obj/projectile/bullet/p50/marksman
// overrides for tgcode 4.6x30mm, used in the WT-550
/obj/item/ammo_casing/c46x30mm
name = "8mm Usurpator bullet casing"
desc = "An 8mm bullet casing."
/obj/item/ammo_casing/c46x30mm/ap
name = "8mm Usurpator armor-piercing bullet casing"
desc = "An 8mm armor-piercing bullet casing.\
<br><br>\
<i>ARMOR PIERCING: Increased armor piercing capabilities. What did you expect?</i>"
custom_materials = AMMO_MATS_AP
advanced_print_req = TRUE
/obj/item/ammo_casing/c46x30mm/inc
name = "8mm Usurpator incendiary bullet casing"
desc = "An 8mm incendiary bullet casing.\
<br><br>\
<i>INCENDIARY: Leaves a trail of fire when shot, sets targets aflame.</i>"
custom_materials = AMMO_MATS_TEMP
advanced_print_req = TRUE
// overrides for tgcode .45, used in the M1911 and C20-r
/obj/item/ammo_casing/c45
name = ".460 Ceres bullet casing"
desc = "A .460 bullet casing."
/obj/item/ammo_casing/c45/ap
name = ".460 Ceres armor-piercing bullet casing"
desc = "An armor-piercing .460 bullet casing.\
desc = "An armor-piercing .45 bullet casing.\
<br><br>\
<i>ARMOR PIERCING: Increased armor piercing capabilities. What did you expect?</i>"
custom_materials = AMMO_MATS_AP
advanced_print_req = TRUE
/obj/item/ammo_casing/c45/inc
name = ".460 Ceres incendiary bullet casing"
desc = "An incendiary .460 bullet casing.\
desc = "An incendiary .45 bullet casing.\
<br><br>\
<i>INCENDIARY: Leaves a trail of fire when shot, sets targets aflame.</i>"
custom_materials = AMMO_MATS_TEMP
@@ -361,8 +315,7 @@
// overrides for .50AE, used in the deagle
/obj/item/ammo_casing/a50ae
name = ".454 Trucidator bullet casing"
desc = "A .454 Trucidator bullet casing. Extremely powerful.\
desc = "A .50 Action Express casing. Extremely powerful.\
<br><br>\
<i>HAND CANNON: Fired out of a handgun, deals disproportionately large damage.</i>"
@@ -413,12 +366,6 @@
// The ones above are the casings for the ammo, whereas the ones below are the actual projectiles that give you feedback when you're shot
/obj/projectile/bullet/a223
name = ".277 Aestus bullet"
/obj/projectile/bullet/a223/phasic
name = ".277 phasic bullet"
/obj/projectile/bullet/c9mm
name = "9x25mm bullet"
@@ -431,81 +378,5 @@
/obj/projectile/bullet/incendiary/c9mm
name = "9x25mm incendiary bullet"
/obj/projectile/bullet/c45
name = ".460 bullet"
/obj/projectile/bullet/c45/ap
name = ".460 armor-piercing bullet"
/obj/projectile/bullet/incendiary/c45
name = ".460 incendiary bullet"
/obj/projectile/bullet/c46x30mm
name = "8mm Usurpator bullet"
/obj/projectile/bullet/c46x30mm/ap
name = "8mm armor-piercing bullet"
/obj/projectile/bullet/incendiary/c46x30mm
name = "8mm incendiary bullet"
/obj/projectile/bullet/p50
name = ".416 Stabilis bullet"
/obj/projectile/bullet/p50/disruptor
name = ".416 disruptor bullet"
/obj/projectile/bullet/p50/penetrator
name = ".416 penetrator bullet"
/obj/projectile/bullet/a50ae
name = ".454 Trucidator bullet"
// MAGAZINES UPDATED TO MATCH STUFF
/obj/item/ammo_box/magazine/wt550m9
name = "\improper WT-550 magazine"
desc = "A 20-round toploaded 8mm Usurpator magazine that fits neatly in the WT-550."
/obj/item/ammo_box/magazine/wt550m9/wtap
name = "\improper WT-550 AP magazine"
/obj/item/ammo_box/magazine/wt550m9/wtic
name = "\improper WT-550 IND magazine"
/obj/item/ammo_box/magazine/smgm45
name = ".460 Ceres SMG magazine"
desc = "A magazine chambered for .460 meant to fit in submachine guns."
/obj/item/ammo_box/magazine/smgm45/ap
name = ".460 Ceres AP SMG magazine"
/obj/item/ammo_box/magazine/smgm45/incen
name = ".460 Ceres IND SMG magazine"
/obj/item/ammo_box/magazine/tommygunm45
name = "\improper Tommy Gun .460 Ceres drum"
desc = "A disc magazine chambered for .460 Ceres."
/obj/item/ammo_box/magazine/m556
name = ".277 Aestus toploading magazine"
desc = "A toploading magazine chambered for .277 Aestus."
/obj/item/ammo_box/magazine/m556/phasic
name = ".277 PHASE toploading magazine"
/obj/item/ammo_box/magazine/sniper_rounds
name = "anti-materiel rifle magazine"
desc = "A heavy magazine chambered for .416 Stabilis."
/obj/item/ammo_box/magazine/sniper_rounds/soporific
desc = "A magazine with soporific .416 Stabilis ammo, designed for happy days and dead quiet nights."
/obj/item/ammo_box/magazine/sniper_rounds/penetrator
name = "anti-materiel rifle ++P magazine"
desc = "A heavy magazine with over the top, overpressurized, and frankly over the top .416 penetrator ammo."
/obj/item/ammo_box/magazine/m50
name = ".454 Trucidator handcannon magazine"
desc = "An absurdly THICK magazine possibly meant for a heavy hitting pistol, if you can call it that."
/obj/item/ammo_box/magazine/sniper_rounds/soporific //this is just a regular 50 bmg mag I have no clue why the fuck this exists but some maps are dependant on it so I'm not getting rid of it
desc = "A magazine with .50 BMG ammo, designed for happy days and dead quiet nights."
@@ -1,10 +1,10 @@
/obj/projectile/bullet/a223/weak
name = "surplus .277 bullet"
name = "surplus .223 bullet"
damage = 25
armour_penetration = 10
wound_bonus = -40
/obj/item/ammo_casing/a223/weak
name = ".277 surplus bullet casing"
desc = "A .277 surplus bullet casing."
name = ".223 surplus bullet casing"
desc = "A .223 surplus bullet casing."
projectile_type = /obj/projectile/bullet/a223/weak
@@ -11,27 +11,25 @@
// whatever goblin decided to spread out bullets over like 3 files and god knows however many overrides i wish you a very stubbed toe
/*
* .460 Ceres (renamed tgcode .45)
* .45 bullets
*/
/obj/item/ammo_casing/c45/hp
name = ".460 Ceres hollow-point bullet casing"
desc = "A .460 hollow-point bullet casing. Very lethal against unarmored opponents. Suffers against armor."
desc = "A .45 hollow-point bullet casing. Very lethal against unarmored opponents. Suffers against armor."
projectile_type = /obj/projectile/bullet/c45/hp
advanced_print_req = TRUE
/obj/projectile/bullet/c45/hp
name = ".460 Ceres hollow-point bullet"
damage = 40
weak_against_armour = TRUE
/*
* .277 Aestus (renamed tgcode .223, used in the M-90gl)
* .223 bullets
*/
/obj/item/ammo_casing/a223/ap
name = ".277 Aestus armor-piercing bullet casing"
desc = "A .277 armor-piercing bullet casing.\
name = ".223 armor-piercing bullet casing"
desc = "A .223 armor-piercing bullet casing.\
<br><br>\
<i>ARMOR PIERCING: Increased armor piercing capabilities. What did you expect?"
projectile_type = /obj/projectile/bullet/a223/ap
@@ -39,7 +37,6 @@
custom_materials = AMMO_MATS_AP
/obj/projectile/bullet/a223/ap
name = ".277 armor-piercing bullet"
armour_penetration = 60
/*
@@ -14,15 +14,17 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/* Commenting this out due to the fact that we don't really have anything that falls under the category of 'even more exotic ammo'. The dragon's breath can be safely moved to illegal tech where it fits alongside the incendiary WT ammo.
/datum/techweb_node/magazineresearch
id = "storedmunition_tech"
display_name = "Ballisitic Research"
display_name = "Esoteric Ammunition"
description = "The daring do not stop at reaching the mountaintop, they go where no man has gone before" // and with that nice quote we have exotic ammo 2
prereq_ids = list("exotic_ammo")
design_ids = list(
"s12g_db"
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
*/
/datum/techweb_node/basic_arms/New()
design_ids += "s12c_fslug"
@@ -1 +1,4 @@
#define CALIBER_69MM "69mm"
///used by the stingball machine gun
#define CALIBER_STINGBALL "stingball"
@@ -26,3 +26,47 @@
)
time = 8 SECONDS
category = CAT_WEAPON_MELEE
/datum/crafting_recipe/stunstaff
name = "Stun Staff"
result = /obj/item/melee/baton/security/staff
reqs = list(
/obj/item/melee/baton/security = 2,
/obj/item/stack/sheet/plasteel = 3,
/obj/item/stack/cable_coil = 5
)
blacklist = list(
/obj/item/melee/baton/security/cattleprod,
/obj/item/melee/baton/security/cattleprod/telecrystalprod,
/obj/item/melee/baton/security/cattleprod/teleprod,
/obj/item/melee/baton/security/boomerang,
/obj/item/melee/baton/security/stunsword
)
tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH)
time = 15 SECONDS
category = CAT_WEAPON_MELEE
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY
/datum/crafting_recipe/stunstaff_prime
name = "Magna-staff"
result = /obj/item/melee/baton/security/staff/prime
reqs = list(
/obj/item/melee/baton/security/staff = 1,
/obj/item/stack/sheet/mineral/titanium = 10,
/obj/item/stack/sheet/mineral/plasma = 10,
/obj/item/stock_parts/capacitor/quadratic = 5,
/datum/reagent/consumable/ethanol/quintuple_sec = 30,
)
blacklist = list(
/obj/item/melee/baton/security/staff/prime
)
tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH)
tool_paths = list(
/obj/item/clothing/accessory/medal/silver/security,
)
machinery = list(
/obj/machinery/power/apc,
)
time = 15 SECONDS
category = CAT_WEAPON_MELEE
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY | CRAFT_MUST_BE_LEARNED
@@ -1,5 +1,45 @@
/obj/item/weaponcrafting/gunkit/wt550_burst
name = "WT-550 burst-fire modification parts kit"
desc = "A suitcase containing the necessary gun parts to modify a WT-550 into a burst-fire assault weapon."
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 3,
)
/obj/item/weaponcrafting/gunkit/wt550_long
name = "WT-550 long range operations parts kit"
desc = "A suitcase containing the necessary gun parts to construct a long range WT-550. Contains a long barrel, scope, and modified frame."
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5,
/datum/material/glass = SHEET_MATERIAL_AMOUNT * 3,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
)
/obj/item/weaponcrafting/gunkit/simple_battle_rifle
name = "NT-38 battle rifle simplification kit"
desc = "A suitcase containing the necessary gun parts to remove the advanced electronics and acceleration technology from a NT-38 battle rifle, reducing performance but maximizing reliability."
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2,
)
/obj/item/weaponcrafting/gunkit/regal_condor
name = "unnamed weapon parts case (viciously lethal)"
desc = "A suitcase containing the necessary gun parts to assemble a very powerful handgun. The case itself has a foreboding aura to it."
icon = 'modular_zubbers/icons/obj/weapons/improvised.dmi'
icon_state = "syndikitsuitcase"
/obj/item/weaponcrafting/juggernaut_suit
name = "advanced security suit armor plates"
desc = "A set of incredibly dense armor plates for use in constructing the advanced security suit."
icon = 'modular_zubbers/icons/obj/weapons/improvised.dmi'
icon_state = "jugg_plates"
w_class = WEIGHT_CLASS_HUGE
item_flags = SLOWS_WHILE_IN_HAND
slowdown = 3
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 40,
/datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 40,
)
@@ -13,7 +13,7 @@
)
/datum/crafting_recipe/deagle_prime_mag
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY //for the unit test, this recipe is has custom materials like the original.
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY | CRAFT_MUST_BE_LEARNED //for the unit test, this recipe is has custom materials like the original.
reqs = list(
/obj/item/stack/sheet/iron = 10,
/obj/item/stack/sheet/mineral/gold = 10,
@@ -22,3 +22,55 @@
/obj/item/stack/telecrystal = 1, //induces a limit on how many magazines you can make
/obj/item/food/donkpocket = 1,
)
/datum/crafting_recipe/wt550_burst
name = "WT-550-B Autoburstrifle"
result = /obj/item/gun/ballistic/automatic/wt550/burst
reqs = list(
/obj/item/gun/ballistic/automatic/wt550 = 1,
/obj/item/weaponcrafting/gunkit/wt550_burst = 1,
)
blacklist = list(
/obj/item/gun/ballistic/automatic/wt550/burst,
/obj/item/gun/ballistic/automatic/wt550/dmr,
)
time = 15 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/wt550_long
name = "WT-550-C Autorifle"
result = /obj/item/gun/ballistic/automatic/wt550/dmr
reqs = list(
/obj/item/gun/ballistic/automatic/wt550 = 1,
/obj/item/weaponcrafting/gunkit/wt550_long = 1,
)
blacklist = list(
/obj/item/gun/ballistic/automatic/wt550/burst,
/obj/item/gun/ballistic/automatic/wt550/dmr,
)
time = 15 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/simple_battle_rifle
name = "NT .38 Battle Rifle"
result = /obj/item/gun/ballistic/automatic/battle_rifle_basic
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL)
reqs = list(
/obj/item/gun/ballistic/automatic/battle_rifle = 1,
/obj/item/weaponcrafting/gunkit/simple_battle_rifle = 1,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY
/datum/crafting_recipe/nuclear_smg
name = "Advanced Energy SMG"
result = /obj/item/gun/energy/e_gun/nuclear_smg
tool_behaviors = list(TOOL_WIRECUTTER, TOOL_MULTITOOL)
reqs = list(
/obj/item/gun/energy/e_gun/nuclear = 1,
/obj/item/gun/energy/laser/carbine = 1,
/obj/item/gun/energy/disabler/smg = 1,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
@@ -113,3 +113,21 @@
reqs = list(/obj/item/stack/sheet/mineral/metal_hydrogen = 3,
/obj/item/clothing/head/utility/hardhat/welding/atmos = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/security_juggernaut
name = "Security Juggernaut Suit"
result = /obj/item/clothing/suit/hooded/secjuggernaut
time = 60
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER, TOOL_WELDER, TOOL_WRENCH, TOOL_CROWBAR, TOOL_MULTITOOL)
reqs = list(
/obj/item/weaponcrafting/juggernaut_suit = 1,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/flashlight/seclite = 2,
/obj/item/clothing/suit/armor/swat = 1,
/obj/item/clothing/head/helmet/swat = 1,
/obj/item/stack/cable_coil = 30,
)
blacklist = list(
/obj/item/clothing/shoes/magboots/advance
)
category = CAT_CLOTHING
@@ -0,0 +1,9 @@
/datum/crafting_recipe/stingballcan
name = "Stingball Canister"
result = /obj/item/ammo_box/stingball
reqs = list(
/obj/item/grenade/stingbang = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 1.0 SECONDS
category = CAT_WEAPON_AMMO
@@ -46,8 +46,7 @@
/obj/effect/spawner/random/armory/smg
loot = list(
/obj/item/gun/ballistic/automatic/wt550/security
)
/obj/item/gun/ballistic/automatic/wt550)
spawn_loot_count = 2
@@ -0,0 +1,12 @@
/obj/effect/spawner/random/contraband/armory
loot = list(
/obj/item/gun/ballistic/automatic/pistol/contraband = 80,
/obj/item/gun/ballistic/shotgun/automatic/combat = 50,
/obj/item/storage/box/syndie_kit/throwing_weapons = 30,
/obj/item/grenade/clusterbuster/teargas = 20,
/obj/item/grenade/clusterbuster = 20,
/obj/item/gun/ballistic/automatic/pistol/deagle/contraband,
/obj/item/gun/ballistic/revolver/mateba = 9,
/obj/item/gun/ballistic/revolver/reverse/mateba = 1,
/obj/item/book/granter/crafting_recipe/stunstaff_prime = 10,
)
@@ -0,0 +1,20 @@
/obj/item/book/granter/crafting_recipe/stunstaff_prime
name = "diary of a lonely warden"
desc = "A relatively clean diary. It reeks of pepperspray and copper."
crafting_recipe_types = list(
/datum/crafting_recipe/stunstaff_prime
)
icon_state = "book1"
remarks = list(
"It gets pretty lonely sitting in the brig all shift, doesn't it...?",
"With all that time on time on your hands, you're bound to come up with something.",
"A more effective way to apply police brutality...",
"Overcharge the capacitors... apply a titanium reinforcement...",
"Why not just use a gun instead?",
"Ah yes, jam the staff right into an APC. What could go wrong?",
"It recharges HOW fast between attacks?",
)
/obj/item/book/granter/crafting_recipe/stunstaff_prime/recoil(mob/living/user)
to_chat(user, span_warning("The book turns to dust in your hands."))
qdel(src)
@@ -0,0 +1,86 @@
/obj/item/melee/baton/security/staff
name = "stun staff"
desc = "An advanced Secure Apprehension Device in the form of a quarterstaff. Debatably more effective at incapacitating targets."
icon = 'modular_zubbers/icons/obj/weapons/baton.dmi'
icon_state = "stunstaff"
base_icon_state = "stunstaff"
lefthand_file = 'modular_zubbers/icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'modular_zubbers/icons/mob/inhands/weapons/staves_righthand.dmi'
inhand_icon_state = "stunstaff"
worn_icon = 'modular_zubbers/icons/mob/clothing/back.dmi'
worn_icon_state = "stunstaff"
slot_flags = ITEM_SLOT_BACK
w_class = WEIGHT_CLASS_BULKY
convertible = FALSE
block_chance = 50 //functionally a side-grade to a riot shield and baton, cannot block projectiles and is worse against tackles in exchange for being unbreakable and cool and marginally statistically better
block_sound = 'sound/items/weapons/genhit.ogg'
stamina_damage = 65 //marginally better at stamcritting
stun_armour_penetration = 20 //ditto
force = 14 //bigger batong, downs in ~8 instead of 10
throwforce = 8
/obj/item/melee/baton/security/staff/Initialize(mapload) //because it'd honestly be too much of a headache (for me) to make it activate/deactivate when wielded/unwielded especially since the way the game checks for the cell.
. = ..()
AddComponent(/datum/component/two_handed, require_twohands = TRUE)
/obj/item/melee/baton/security/staff/attack(mob/target, mob/living/carbon/human/user)
..()
if(prob(50))
INVOKE_ASYNC(src, PROC_REF(jedi_spin), user)
/obj/item/melee/baton/security/staff/proc/jedi_spin(mob/living/user)
dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip)))
/obj/item/melee/baton/security/staff/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == LEAP_ATTACK)
final_block_chance -= 30 //It's still worse than a shield and a baton but it's for the cool factor and to not make it that terrible in comparison
if(attack_type == PROJECTILE_ATTACK)
final_block_chance -= 40 //Don't rely on this.
if(attack_type == OVERWHELMING_ATTACK)
final_block_chance = 0 //Don't bring a staff to a road roller roller fight.
return ..()
/obj/item/melee/baton/security/staff/loaded
preload_cell_type = /obj/item/stock_parts/power_store/cell/high
/obj/item/melee/baton/security/staff/add_deep_lore()
return
/obj/item/melee/baton/security/staff/prime
name = "\improper Magna-staff"
desc = "An absolutely brutal feat of less-lethal engineering. The unique construction allows it to recharge between shocks incredibly quickly. Definitely more effective at incapacitating targets and posesses exceptional blocking capabilities."
icon_state = "stunstaff_prime"
base_icon_state = "stunstaff_prime"
inhand_icon_state = "stunstaff_prime"
worn_icon_state = "stunstaff_prime"
block_chance = 75 //security desword
block_sound = 'sound/items/weapons/genhit.ogg'
stamina_damage = 24 //way less stamina damage but oh lord it attacks fast
stun_armour_penetration = 35 //same as desword
force = 15
throwforce = 10
throw_stun_chance = 75
throw_range = 6
cell_hit_cost = STANDARD_CELL_CHARGE * 4 //guzzler. It's overcharged, what do you expect?
knockdown_time = 0.5 SECONDS //one tenth the knockdown
cooldown = 0 SECONDS //as fast as you can attack (probably)
light_color = LIGHT_COLOR_FLARE
/obj/item/melee/baton/security/staff/prime/Initialize(mapload)
. = ..()
AddComponent(/datum/component/boomerang, throw_range + 2, TRUE)
/obj/item/melee/baton/security/staff/prime/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
if(attack_type == LEAP_ATTACK)
final_block_chance -= 45 //effective 30
if(attack_type == PROJECTILE_ATTACK)
final_block_chance -= 25 //effective 50
if(attack_type == OVERWHELMING_ATTACK)
final_block_chance = 0
return ..()
/obj/item/melee/baton/security/staff/prime/loaded
preload_cell_type = /obj/item/stock_parts/power_store/cell/bluespace
@@ -0,0 +1,2 @@
/obj
var/bubber_obj_flags
@@ -1,7 +0,0 @@
/datum/export/weapon/wt550
exclude_types = list(/obj/item/gun/ballistic/automatic/wt550/security)
/datum/export/weapon/wt551
export_types = list(/obj/item/gun/ballistic/automatic/wt550/security)
cost = CARGO_CRATE_VALUE * 1.25
unit_name = "WT-551 automatic rifle"
@@ -10,15 +10,15 @@
contains = list(/obj/item/gun/energy/laser/carbine)
/datum/supply_pack/goody/wt550_single
name = "WT-551 Autorifle Single-Pack"
desc = "An NT-security grade autorifle, it comes with excellent heating and poses no health-related risks for the user. Comes as a single-pack with one WT-551 locked and loaded."
name = "WT-550 Autorifle Single-Pack"
desc = "A surplus-grade autorifle, it comes with excellent heating and poses no health-related risks for the user. Comes as a single-pack with one WT-550 locked and loaded."
cost = PAYCHECK_COMMAND * 8 //Nvm these are stronger than lasers in most scenarios so let's get them a bit of an edge. Plus gun price variety looks better
access_view = ACCESS_WEAPONS
contains = list(/obj/item/gun/ballistic/automatic/wt550/security)
contains = list(/obj/item/gun/ballistic/automatic/wt550)
/datum/supply_pack/goody/wt550_ammo
name = "WT-550/WT-551 Autorifle Magazine Single-Pack"
desc = "A single-pack magazine with lethal regular rounds for the WT-551."
name = "WT-550 Autorifle Magazine Single-Pack"
desc = "A single-pack magazine with lethal regular rounds for the WT-550."
cost = PAYCHECK_CREW * 5 //Scale it like all guns
contains = list(/obj/item/ammo_box/magazine/wt550m9 = 1)
@@ -1,13 +1,13 @@
/datum/supply_pack/security/armory/wt551
name = "WT-551 Autorifle Crate"
desc = "Contains a pair of WT-551 Autorifles pre-loaded with less-lethal rubber-tipped rounds. Additional ammo sold seperately. Backwards-compatible with WT-550 magazines. Nanotrasen reminds you that the other weapon is for a friend, and not for going guns akimbo."
/datum/supply_pack/security/armory/wt550
name = "WT-550 Autorifle Crate"
desc = "Contains a trifecta of pre-loaded WT-550 Autorifles. Additional ammo sold seperately."
cost = CARGO_CRATE_VALUE * 10
contains = list(/obj/item/gun/ballistic/automatic/wt550/security = 3)
contains = list(/obj/item/gun/ballistic/automatic/wt550 = 3)
crate_name = "wt-550 autorifle crate"
/datum/supply_pack/security/armory/wt550_ammo_regular
name = "WT-550/WT-551 Autorifle Ammo Crate (Regular)"
desc = "Contains 4 magazines with lethal regular rounds for the WT-551."
name = "WT-550 Autorifle Ammo Crate (Regular)"
desc = "Contains 4 magazines with lethal regular rounds for the WT-550."
cost = CARGO_CRATE_VALUE * 4 //these are printable, price can be lowered safely to 800ish
contains = list(/obj/item/ammo_box/magazine/wt550m9 = 4)
crate_name = "wt-550 magazine crate (regular)"
@@ -227,3 +227,31 @@
/obj/item/gun/energy/modular_laser_rifle/carbine,
/obj/item/gun/energy/modular_laser_rifle/carbine,
)
/datum/supply_pack/security/armory/stingballer
name = "Stingball Rifle crate"
crate_name = "stingball rifle crate"
desc = "A single unit of a prototype rifle designed to rapidly shoot stingball pellets. Comes preloaded, but additional ammunition is sold seperately."
cost = CARGO_CRATE_VALUE * 22.5
contains = list(
/obj/item/gun/ballistic/rifle/stingballer,
)
/datum/supply_pack/security/armory/kiboko
name = "Kiboko Grenade Launcher Crate"
crate_name = "Kiboko grenade launcher crate"
desc = "A brand-new loaded Kiboko grenade launcher just for you, in case you somehow lost the issued one."
cost = CARGO_CRATE_VALUE * 37.5
contains = list(
/obj/item/gun/ballistic/automatic/sol_grenade_launcher
)
/datum/supply_pack/security/armory/grenadelauncher
name = "Pneumatic Grenade Launcher Crate"
crate_name = "grenade launcher crate"
desc = "A truly diabolical weapon for rapid deployment of any standard grenade. Comes with a complimentary box of flashbangs."
cost = CARGO_CRATE_VALUE * 75
contains = list(
/obj/item/gun/grenadelauncher,
/obj/item/storage/box/flashbangs,
)
@@ -268,6 +268,136 @@
/obj/item/clothing/head/hooded/cultlain_hood
worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/head/helmet_teshari.dmi'
/obj/item/clothing/suit/hooded/secjuggernaut
name = "security juggernaut suit"
desc = "The Advanced Security Suit offers nigh-perfect protection of the wearer through an advanced layering of kevlar, titanium, and ceramic plates. \
The construction of the suit unfortunately renders it incredibly heavy and cumbersome, effectively slowing the user to a crawl and heavily limiting their mobility options. \
Only through recently developed micro-anti-gravitational generators can the suit actually be worn and moved in. \
Comes along with a built-in helmet for EVA action."
icon_state = "security_jugger"
icon = 'modular_zubbers/icons/obj/clothing/suits/armor.dmi'
worn_icon = 'modular_zubbers/icons/mob/clothing/suits/armor.dmi'
worn_icon_digi = 'modular_zubbers/icons/mob/clothing/suits/armor_digi.dmi'
worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/suits/armor_teshari.dmi'
inhand_icon_state = "swat_suit"
hoodtype = /obj/item/clothing/head/hooded/secjuggernaut
hood_up_affix = ""
armor_type = /datum/armor/secjuggernaut
w_class = WEIGHT_CLASS_HUGE
siemens_coefficient = 0
strip_delay = 25 SECONDS
equip_delay_self = 12 SECONDS
equip_delay_other = 15 SECONDS
resistance_flags = FIRE_PROOF | ACID_PROOF
item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT
bubber_obj_flags = TRUE_IMMUTABLE_SLOW
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
slowdown = 5
drag_slowdown = 5
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
clothing_traits = list(TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, TRAIT_PUSHIMMUNE, TRAIT_NEGATES_GRAVITY, TRAIT_NO_SLIP_WATER, TRAIT_NO_VEHICLE, TRAIT_HUGE_CLOTHES, TRAIT_NO_BUCKLE)
allowed = list(
/obj/item/tank/internals,
/obj/item/tank/jetpack/captain,
)
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 40.4,
/datum/material/alloy/plastitanium = SHEET_MATERIAL_AMOUNT * 40,
/datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.4
)
/obj/item/clothing/suit/hooded/secjuggernaut/examine(mob/user)
. = ..()
. += span_warning("Trying to buckle to anything while wearing this is impossible, whether it be a chair, cyborg, horse, or golf cart.")
/obj/item/clothing/suit/hooded/secjuggernaut/Initialize(mapload)
. = ..()
allowed += GLOB.security_vest_allowed
/obj/item/clothing/head/hooded/secjuggernaut
name = "security juggernaut helmet"
desc = "A helmet built into the Advanced Security Suit. It offers nigh-perfect protection with the drawback of being permanently affixed to an incredibly heavy suit. \
It is pressure resistant, flash-protected, and comes with a built-in seclite for visiblity in dark areas.\
While made of the same materials and having the same overall construction, built-in servos and actuators allow it to be easily put on compared to the suit it comes with."
icon_state = "security_jugger0"
icon = 'modular_zubbers/icons/obj/clothing/head/helmet.dmi'
worn_icon = 'modular_zubbers/icons/mob/clothing/head/helmet.dmi'
worn_icon_muzzled = 'modular_zubbers/icons/mob/clothing/head/helmet_muzzled.dmi'
worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/head/helmet_teshari.dmi'
armor_type = /datum/armor/secjuggernaut
flash_protect = FLASH_PROTECTION_WELDER
strip_delay = 15 SECONDS
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | HEADINTERNALS
bubber_obj_flags = TRUE_IMMUTABLE_SLOW
clothing_traits = list(TRAIT_HEAD_INJURY_BLOCKED)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
flags_inv = HIDEHAIR|HIDEFACE|HIDESNOUT|SHOWSPRITEEARS
flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH|PEPPERPROOF
resistance_flags = FIRE_PROOF | ACID_PROOF
actions_types = list(/datum/action/item_action/toggle_helmet_light)
light_system = OVERLAY_LIGHT_DIRECTIONAL
light_range = 7
light_power = 1.0
light_color = "#99ccff"
light_on = FALSE
var/on = FALSE
var/sound_on = 'sound/items/weapons/magin.ogg'
var/sound_off = 'sound/items/weapons/magout.ogg'
/obj/item/clothing/head/hooded/secjuggernaut/Initialize(mapload)
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
AddComponent(/datum/component/wearertargeting/earprotection)
/obj/item/clothing/head/hooded/secjuggernaut/proc/toggle_helmet_light(mob/living/user)
on = !on
if(on)
playsound(src, sound_on, 40, TRUE)
turn_on(user)
else
playsound(src, sound_off, 40, TRUE)
turn_off(user)
update_appearance()
/obj/item/clothing/head/hooded/secjuggernaut/update_icon_state()
icon_state = "security_jugger[on]"
return ..()
/obj/item/clothing/head/hooded/secjuggernaut/proc/turn_on(mob/user)
set_light_on(TRUE)
/obj/item/clothing/head/hooded/secjuggernaut/proc/turn_off(mob/user)
set_light_on(FALSE)
/obj/item/clothing/head/hooded/secjuggernaut/on_saboteur(datum/source, disrupt_duration)
. = ..()
if(on)
toggle_helmet_light()
return TRUE
/obj/item/clothing/head/hooded/secjuggernaut/attack_self(mob/living/user)
toggle_helmet_light(user)
/datum/armor/secjuggernaut
melee = 80
bullet = 80
laser = 70
energy = 40
bomb = 100
bio = 100
fire = 100
acid = 100
wound = 40
/obj/item/clothing/suit/armor/vest/blueshirt
worn_icon_teshari = 'modular_zubbers/icons/mob/clothing/suits/armor_teshari.dmi'
@@ -1,4 +1,3 @@
/datum/job/cargo_technician/New()
mail_goodies -= /obj/item/gun/ballistic/automatic/wt550
mail_goodies += /obj/item/gun/ballistic/automatic/wt550/security
. = ..()
@@ -1,3 +1,3 @@
/mob/living/basic/trooper/nanotrasen/ranged/smg
casingtype = /obj/item/ammo_casing/c46x30mm
r_hand = /obj/item/gun/ballistic/automatic/wt550/security
r_hand = /obj/item/gun/ballistic/automatic/wt550
@@ -0,0 +1,2 @@
/datum/movespeed_modifier/equipment_speedmod/true_immutable //will apply anywhere
blacklisted_movetypes = null
@@ -0,0 +1,4 @@
/obj/item/stock_parts/power_store/cell/laser_lmg
name = "laser machine gun power cell"
maxcharge = STANDARD_CELL_CHARGE * 3
chargerate = STANDARD_CELL_RATE * 0.5
@@ -1,2 +1,15 @@
/obj/item/ammo_casing/strilka310/phasic
can_be_printed = FALSE
/obj/item/ammo_casing/stingballer
name = "stingball pellet"
desc = "A small metal bearing."
icon = 'modular_zubbers/icons/obj/weapons/guns/ammo.dmi'
icon_state = "stingball"
caliber = CALIBER_STINGBALL
projectile_type = /obj/projectile/bullet/pellet/stingball
/obj/item/ammo_casing/stingballer/Initialize(mapload)
. = ..()
AddElement(/datum/element/caseless)
@@ -19,6 +19,14 @@
advanced_print_req = TRUE
custom_materials = AMMO_MATS_TEMP
/obj/item/ammo_casing/c46x30mm/compressed
name = "compressed 4.6x30mm bullet casing"
desc = "A compressed 4.6x30mm bullet casing."
projectile_type = /obj/projectile/bullet/c46x30mm/compressed
can_be_printed = TRUE
advanced_print_req = TRUE
custom_materials = AMMO_MATS_HOMING
/obj/item/ammo_casing/caseless/c22hl/ntmp5
projectile_type = /obj/projectile/bullet/c22hl/ntmp5
@@ -0,0 +1,5 @@
/obj/item/ammo_casing/energy/lasergun/carbine_old
projectile_type = /obj/projectile/beam/laser/carbine_old
e_cost = LASER_SHOTS(40, STANDARD_CELL_CHARGE)
select_name = "kill"
fire_sound = 'sound/items/weapons/laser2.ogg'
@@ -0,0 +1,5 @@
/obj/projectile/beam/laser/carbine_old
name = "carbine laser"
icon_state = "carbine_laser"
impact_effect_type = /obj/effect/temp_visual/impact_effect/yellow_laser
damage = 15
@@ -0,0 +1,9 @@
/obj/item/ammo_box/stingball
name = "stingball canister"
desc = "A cut open stingbang."
icon = 'modular_zubbers/icons/obj/weapons/guns/ammo.dmi'
icon_state = "stingball_mag"
ammo_type = /obj/item/ammo_casing/stingballer
max_ammo = 25
ammo_box_multiload = AMMO_BOX_MULTILOAD_ALL
custom_materials = null
@@ -2,11 +2,31 @@
name = "\improper WT-550 magazine"
/obj/item/ammo_box/magazine/wt550m9/wtap
name = "wt550 Armour-piercing magazine"
name = "wt550 armour-piercing magazine"
/obj/item/ammo_box/magazine/wt550m9/wtic
name = "wt550 incendiary magazine"
/obj/item/ammo_box/magazine/wt550m9/compressed //20% higher damage potential than the standard bullets, but DPS is lower
name = "compressed wt550 magazine"
ammo_type = /obj/item/ammo_casing/c46x30mm/compressed
ammo_band_color = "#00618E"
max_ammo = 40
caliber = null
multitype = FALSE //we don't want people loading these with normal or ap bullets do we
/obj/item/ammo_box/magazine/wt550m9/compressed/update_icon_state()
. = ..()
icon_state = "[base_icon_state]-[round(ammo_count()/2, 4)]"
/obj/item/ammo_box/magazine/wt550m9/compressed/super
name = "hyper compressed wt550 magazine"
ammo_band_color = "#072E40"
max_ammo = 60
/obj/item/ammo_box/magazine/wt550m9/compressed/super/update_icon_state()
. = ..()
icon_state = "[base_icon_state]-[round(ammo_count()/3, 4)]"
/obj/item/ammo_box/magazine/recharge/ntmp5
name = "large disabling power pack"
@@ -0,0 +1,9 @@
/obj/item/ammo_box/magazine/internal/stingballer
name = "stingball rifle internal magazine"
desc = "If you're reading this"
ammo_type = /obj/item/ammo_casing/stingballer
caliber = CALIBER_STINGBALL
max_ammo = 50
/obj/item/ammo_box/magazine/internal/stingballer/empty
start_empty = TRUE
@@ -1,18 +1,30 @@
/obj/item/gun/ballistic/automatic/wt550
can_suppress = FALSE
can_be_sawn_off = TRUE
/obj/item/gun/ballistic/automatic/wt550/sawoff(mob/user)
. = ..()
if(.)
desc = "why would you do this"
icon = 'modular_zubbers/icons/obj/weapons/guns/ballistic.dmi'
w_class = WEIGHT_CLASS_NORMAL
spread = 10
dual_wield_spread = 20
recoil = SAWN_OFF_RECOIL
update_appearance()
/obj/item/gun/ballistic/automatic/wt550/add_bayonet_point()
return
/obj/item/gun/ballistic/automatic/wt550/security
name = "\improper WT-551 Autorifle"
desc = "A heavier, bulkier automatic variant of the WT-550, and now with 99% less discombobulation! It's back, baby. Uses 4.6x30mm rounds. Recommended to hold with two hands."
icon = 'modular_zubbers/icons/obj/weapons/guns/wt551.dmi'
fire_sound = 'modular_zubbers/sound/weapons/gun/wt551/shot.ogg'
w_class = WEIGHT_CLASS_BULKY
fire_delay = 3
//18 damage per 0.3 seconds = 60 DPS
//Reference: Laser Gun 22 damage per 0.4 seconds = 55DPS
/obj/item/gun/ballistic/automatic/wt550/Initialize(mapload)
. = ..()
if(type != /obj/item/gun/ballistic/automatic/wt550)
return
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/wt550_burst, /datum/crafting_recipe/wt550_long)
AddElement(
/datum/element/slapcrafting,\
slapcraft_recipes = slapcraft_recipe_list,\
)
/obj/item/gun/ballistic/automatic/ntmp5
burst_size = 1
@@ -150,3 +162,104 @@
recoil = 0
spread = 5
update_appearance()
/obj/item/gun/ballistic/automatic/wt550/burst
name = "\improper WT-550-B Autoburstrifle"
desc = "Not so much of a rifle, being modified closer to a submachine gun, but still somehow just as bulky. Outfitted with a modified frame and barrel and a two-shot burst trigger mechanism. Performs overall better than the average autorifle, but kicks a bit more. Has a threaded barrel for suppressors. Uses 4.6x30mm rounds."
icon = 'modular_zubbers/icons/obj/weapons/guns/ballistic.dmi'
icon_state = "wt550b"
fire_sound = 'modular_zubbers/sound/weapons/gun/wt551/shot.ogg'
can_suppress = TRUE
can_be_sawn_off = FALSE
suppressor_x_offset = 4
spread = 3
recoil = 0.25
burst_delay = 1
burst_size = 2
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.5,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 3
)
/obj/item/gun/ballistic/automatic/wt550/burst/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.5 SECONDS)
/obj/item/gun/ballistic/automatic/wt550/burst/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
light_overlay = "flight", \
overlay_x = 17, \
overlay_y = 9)
/obj/item/gun/ballistic/automatic/wt550/dmr
name = "\improper WT-550-C Autorifle"
desc = "A longer range WT-550, assembled using an aftermarket kit and parts. Outfitted with the longest barrel and custom trigger to enhance performance at a distance. Equipped with a custom scope and a threaded barrel for suppressors. Uses 4.6x30mm rounds."
icon = 'modular_zubbers/icons/obj/weapons/guns/wide_guns.dmi'
worn_icon = 'icons/mob/clothing/belt.dmi'
worn_icon_state = "gun"
fire_sound = 'modular_zubbers/sound/weapons/gun/wt551/shot.ogg'
weapon_weight = WEAPON_HEAVY
can_suppress = TRUE
can_be_sawn_off = FALSE
suppressor_x_offset = 6
slot_flags = ITEM_SLOT_BACK
projectile_damage_multiplier = 1.50 // 30 damage base + wounding at half the firerate
projectile_speed_multiplier = 1.50
projectile_wound_bonus = 5
burst_delay = 6
burst_size = 1
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.5,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/glass = SHEET_MATERIAL_AMOUNT * 3
)
SET_BASE_PIXEL(-8, 0)
/obj/item/gun/ballistic/automatic/wt550/dmr/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.6 SECONDS)
AddComponent(/datum/component/scope, range_modifier = 2.0)
/obj/item/gun/ballistic/automatic/battle_rifle_basic
name = "\improper .38 battle rifle"
desc = "A lower-tech alternative version of Nanotrasen's latest prototype longarm, granting a different option to those who don't care for the NT-38. \
Technically a pistol-caliber carbine, despite the name and its use as a battle rifle. \
Forsaking the advanced electronics and integrated technological advantages allows it to perform infinitely more reliably."
icon = 'modular_zubbers/icons/obj/weapons/guns/wide_guns.dmi'
icon_state = "battle_rifle"
lefthand_file = 'modular_zubbers/icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'modular_zubbers/icons/mob/inhands/weapons/guns_righthand.dmi'
inhand_icon_state = "battle_rifle"
worn_icon = 'icons/mob/clothing/back.dmi'
worn_icon_state = "battle_rifle"
slot_flags = ITEM_SLOT_BACK
weapon_weight = WEAPON_HEAVY
accepted_magazine_type = /obj/item/ammo_box/magazine/m38
w_class = WEIGHT_CLASS_BULKY
force = 15
mag_display = TRUE
empty_indicator = TRUE
fire_delay = 1.5 DECISECONDS
burst_size = 1
actions_types = list()
fire_sound = 'sound/items/weapons/thermalpistol.ogg'
suppressor_x_offset = 0
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2,
)
SET_BASE_PIXEL(-8, 0)
/obj/item/gun/ballistic/automatic/battle_rifle_basic/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
light_overlay = "flight", \
overlay_x = 26, \
overlay_y = 10)
@@ -7,3 +7,35 @@
lefthand_file = 'modular_zubbers/icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'modular_zubbers/icons/mob/inhands/weapons/guns_righthand.dmi'
inhand_icon_state = "rebarxbowsyndie"
/obj/item/gun/ballistic/rifle/stingballer
name = "\improper S-K Stingball Rifle"
desc = "A pneumatic rifle designed to rapidly fire stingballs. Holds up to 50 rounds."
icon = 'modular_zubbers/icons/obj/weapons/guns/ballistic.dmi'
icon_state = "stingballer"
fire_sound = 'modular_zubbers/sound/weapons/gun/light_gunfire.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/stingballer
need_bolt_lock_to_interact = TRUE
semi_auto = TRUE
bolt_type = BOLT_TYPE_LOCKING
internal_magazine = TRUE
w_class = WEIGHT_CLASS_BULKY
weapon_weight = 2
mag_display_ammo = TRUE
spread = 7.5
projectile_damage_multiplier = 0.50
projectile_speed_multiplier = 1.25
/obj/item/gun/ballistic/rifle/stingballer/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.125 SECONDS)
/obj/item/gun/ballistic/rifle/stingballer/add_bayonet_point()
AddComponent(/datum/component/bayonet_attachable, offset_x = 26, offset_y = 12)
/obj/item/gun/ballistic/rifle/stingballer/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
light_overlay = "flight", \
overlay_x = 20, \
overlay_y = 10)
@@ -0,0 +1,13 @@
/obj/projectile/beam/event_horizon
damage = 110
armour_penetration = 30
demolition_mod = 2
/obj/projectile/beam/event_horizon/on_hit(atom/target, blocked = 0, pierce_hit) //breaks walls like a pulse rifle
. = ..()
if (!QDELETED(target) && (isturf(target) || isstructure(target)))
if(isobj(target))
SSexplosions.med_mov_atom += target
else
SSexplosions.medturf += target
return ..()
@@ -21,3 +21,37 @@
light_overlay = "flight", \
overlay_x = 15, \
overlay_y = 10)
/obj/item/gun/energy/e_gun/nuclear_smg
name = "advanced energy smg"
desc = "A self-charging dual-mode rapid-fire energy weapon created as a disgusting hybrid of a laser carbine, a disabler smg and an advanced energy gun. \
Modifications to the micro reactor have caused allowed a more stable, but less efficient generation of power. Comes with two settings: disable and kill."
icon = 'modular_zubbers/icons/obj/weapons/guns/energy.dmi'
icon_state = "nuclear_smg"
inhand_icon_state = "nucgun"
ammo_type = list(/obj/item/ammo_casing/energy/disabler/smg, /obj/item/ammo_casing/energy/lasergun/carbine_old)
spread = 2
ammo_x_offset = 1
projectile_damage_multiplier = 1.0
projectile_speed_multiplier = 1.2
selfcharge = 1
charge_delay = 7.5
self_charge_amount = STANDARD_ENERGY_GUN_SELF_CHARGE_RATE / 2
can_charge = TRUE
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8,
/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 1.5,
/datum/material/glass = SHEET_MATERIAL_AMOUNT,
/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT
)
/obj/item/gun/energy/e_gun/nuclear_smg/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.15 SECONDS, allow_akimbo = FALSE)
/obj/item/gun/energy/e_gun/nuclear_smg/add_seclight_point()
AddComponent(/datum/component/seclite_attachable, \
light_overlay_icon = 'icons/obj/weapons/guns/flashlights.dmi', \
light_overlay = "flight", \
overlay_x = 17, \
overlay_y = 8)
@@ -16,6 +16,10 @@
damage = 10
fire_stacks = 1
/obj/projectile/bullet/c46x30mm/compressed
name = "compressed 4.6x30mm bullet"
damage = 12
/obj/projectile/bullet/c45/lesser_reaper
name = ".45 reaper pellet"
icon = 'modular_zubbers/icons/obj/weapons/guns/projectiles.dmi'
@@ -214,8 +214,8 @@
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/m45_mag
name = ".460 Ceres Pistol Magazine(Lethal)"
desc = "A standard magazine for pistol using .460 Ceres."
name = ".45 Pistol Magazine(Lethal)"
desc = "A standard magazine for pistol using .45 rounds."
id = "m45_mag"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
@@ -286,3 +286,92 @@
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO,
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/wt550kit_burst
name = "WT-550 Burst-Fire Parts Kit"
desc = "A kit to modify a WT-550 to shoot burst-fire."
id = "wt550_burst"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 3,
)
build_path = /obj/item/weaponcrafting/gunkit/wt550_burst
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
autolathe_exportable = FALSE
/datum/design/wt550kit_long
name = "WT-550 Long-Range Parts Kit"
desc = "A kit to modify a WT-550 to be more effective at long ranges."
id = "wt550_long"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5,
/datum/material/glass = SHEET_MATERIAL_AMOUNT * 3,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5,
)
build_path = /obj/item/weaponcrafting/gunkit/wt550_long
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
autolathe_exportable = FALSE
/datum/design/wt550_ammo_compressed
name = "WT-550 Magazine (4.6x30mm Compressed) (Lethal)"
desc = "A magazine for the WT-550 Autorifle. Contains a high amount of lower power ammunition."
id = "wt550_ammo_compressed"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 1,
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1,
/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1,
/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 1,
/datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 3,
)
build_path = /obj/item/ammo_box/magazine/wt550m9/compressed
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
autolathe_exportable = FALSE
/datum/design/simple_battle_rifle
name = "NT-38 Battle Rifle Simplification Kit"
desc = "A kit to simplify an NT-38 Battle Rifle, making it much less complicated."
id = "battle_rifle_basic"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2,
)
build_path = /obj/item/weaponcrafting/gunkit/simple_battle_rifle
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_KITS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
autolathe_exportable = FALSE
/datum/design/juggernaut_suit_parts
name = "Security Juggernaut Plates"
desc = "An expensive set of incredibly dense armor plates."
id = "security_juggernaut"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 40,
/datum/material/titanium =SHEET_MATERIAL_AMOUNT * 40,
/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 40,
)
build_path = /obj/item/weaponcrafting/juggernaut_suit
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
autolathe_exportable = FALSE
@@ -170,6 +170,8 @@
"minesweeper",
)
// Security Tech
/datum/techweb_node/riot_supression/New()
design_ids += "s12g_rubber"
design_ids += "s12g_bslug"
@@ -186,13 +188,39 @@
/datum/techweb_node/exotic_ammo/New()
design_ids += "wt550_ammo_ap"
design_ids += "wt550_ammo_compressed"
. = ..()
/datum/techweb_node/syndicate_basic/New()
design_ids += "wt550_ammo_incendiary"
design_ids += "s12g_db"
design_ids += "mod_mind_transfer"
. = ..()
/datum/techweb_node/bullet_weapons //This is for advanced bullet weapon designs and upgrades
id = TECHWEB_NODE_BULLET_WEAPONS
display_name = "Advanced Ballistic Weaponry"
description = "As if shooting a bullet could get any more complicated."
prereq_ids = list(TECHWEB_NODE_EXOTIC_AMMO)
design_ids = list(
"wt550_burst",
"wt550_long",
"battle_rifle_basic",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/datum/techweb_node/advanced_armor //This is for advanced armor and shields
id = TECHWEB_NODE_ADVANCED_ARMOR
display_name = "Advanced Security Protection"
description = "If we can't hurt them, we can outlast them."
prereq_ids = list(TECHWEB_NODE_RIOT_SUPRESSION, TECHWEB_NODE_GAS_COMPRESSION)
design_ids = list(
"security_juggernaut"
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
// Modsuit tech
/datum/techweb_node/mod_equip/New()
. = ..()
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 849 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 B

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 433 B

After

Width:  |  Height:  |  Size: 810 B

@@ -1,6 +1,6 @@
/datum/design/wt550_ammo
name = "WT-550/WT-551 Magazine (4.6x30mm Regular) (Lethal)"
desc = "A magazine for the WT-550/WT-551 Autorifle. Contains lethal regular ammo."
name = "WT-550 Magazine (4.6x30mm Regular) (Lethal)"
desc = "A magazine for the WT-550 Autorifle. Contains lethal regular ammo."
id = "wt550_ammo_normal"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
@@ -11,8 +11,8 @@
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/wt550_ammo_ap
name = "WT-550/WT-551 Magazine (4.6x30mm Armor-Piercing) (Lethal)"
desc = "A magazine for the WT-550/WT-551 Autorifle. Contains lethal armor-piercing ammo. Nanotrasen prefers you didn't use these on your pressurized space station."
name = "WT-550 Magazine (4.6x30mm Armor-Piercing) (Lethal)"
desc = "A magazine for the WT-550 Autorifle. Contains lethal armor-piercing ammo. Nanotrasen prefers you didn't use these on your pressurized space station."
id = "wt550_ammo_ap"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
@@ -23,8 +23,8 @@
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design/wt550_ammo_incendiary
name = "WT-550/WT-551 Magazine (4.6x30mm Incendiary) (Extremely Lethal)"
desc = "A magazine for the WT-550/WT-551 Autorifle. Contains very lethal incendiary ammo. Consult your local laws for warcrime status before use."
name = "WT-550 Magazine (4.6x30mm Incendiary) (Extremely Lethal)"
desc = "A magazine for the WT-550 Autorifle. Contains very lethal incendiary ammo. Consult your local laws for warcrime status before use."
id = "wt550_ammo_incendiary"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT , /datum/material/glass = SHEET_MATERIAL_AMOUNT)
Binary file not shown.
+14 -1
View File
@@ -553,6 +553,7 @@
#include "code\__DEFINES\~~bubber_defines\mobs.dm"
#include "code\__DEFINES\~~bubber_defines\mood.dm"
#include "code\__DEFINES\~~bubber_defines\nanites.dm"
#include "code\__DEFINES\~~bubber_defines\obj_flags.dm"
#include "code\__DEFINES\~~bubber_defines\privacy_policy.dm"
#include "code\__DEFINES\~~bubber_defines\robot_defines.dm"
#include "code\__DEFINES\~~bubber_defines\role_preferences.dm"
@@ -567,6 +568,7 @@
#include "code\__DEFINES\~~bubber_defines\transport.dm"
#include "code\__DEFINES\~~bubber_defines\vehicles.dm"
#include "code\__DEFINES\~~bubber_defines\vomit.dm"
#include "code\__DEFINES\~~bubber_defines\_globalvars\bitfields.dm"
#include "code\__DEFINES\~~bubber_defines\_globalvars\lists\invalid_uplink_item.dm"
#include "code\__DEFINES\~~bubber_defines\atmospherics\atmos_mob_interaction.dm"
#include "code\__DEFINES\~~bubber_defines\research\research_categories.dm"
@@ -9151,6 +9153,7 @@
#include "modular_zubbers\code\datums\components\crafting\tailoring.dm"
#include "modular_zubbers\code\datums\components\crafting\tools.dm"
#include "modular_zubbers\code\datums\components\crafting\utility.dm"
#include "modular_zubbers\code\datums\components\crafting\weapon_ammo.dm"
#include "modular_zubbers\code\datums\components\crafting\crafting\melee_weapon.dm"
#include "modular_zubbers\code\datums\components\fantasy\weight_overrides.dm"
#include "modular_zubbers\code\datums\components\vore\_defines.dm"
@@ -9336,6 +9339,7 @@
#include "modular_zubbers\code\game\machinery\doors\firedoor.dm"
#include "modular_zubbers\code\game\machinery\pipe\construction.dm"
#include "modular_zubbers\code\game\machinery\telecomms\machines\relay.dm"
#include "modular_zubbers\code\game\objects\objs.dm"
#include "modular_zubbers\code\game\objects\effects\landmarks.dm"
#include "modular_zubbers\code\game\objects\effects\overlays.dm"
#include "modular_zubbers\code\game\objects\effects\shark_infested_waters.dm"
@@ -9345,6 +9349,7 @@
#include "modular_zubbers\code\game\objects\effects\decals\turfdecal\tilecoloring.dm"
#include "modular_zubbers\code\game\objects\effects\effects_system\effect_sparks.dm"
#include "modular_zubbers\code\game\objects\effects\spawners\random\armory.dm"
#include "modular_zubbers\code\game\objects\effects\spawners\random\contraband.dm"
#include "modular_zubbers\code\game\objects\effects\spawners\random\moonstation_random.dm"
#include "modular_zubbers\code\game\objects\effects\spawners\random\ntc_bluey_safes.dm"
#include "modular_zubbers\code\game\objects\effects\spawners\random\vending.dm"
@@ -9368,6 +9373,7 @@
#include "modular_zubbers\code\game\objects\items\food\meatslab.dm"
#include "modular_zubbers\code\game\objects\items\food\misc.dm"
#include "modular_zubbers\code\game\objects\items\food\sweets.dm"
#include "modular_zubbers\code\game\objects\items\granters\crafting\magnastaff.dm"
#include "modular_zubbers\code\game\objects\items\grenades\plastic.dm"
#include "modular_zubbers\code\game\objects\items\holotool\holotool.dm"
#include "modular_zubbers\code\game\objects\items\holotool\modes.dm"
@@ -9387,6 +9393,7 @@
#include "modular_zubbers\code\game\objects\items\tanks\tank_types.dm"
#include "modular_zubbers\code\game\objects\items\tools\engineering\crowbar.dm"
#include "modular_zubbers\code\game\objects\items\tools\engineering\weldingtool.dm"
#include "modular_zubbers\code\game\objects\items\weaponry\melee\baton.dm"
#include "modular_zubbers\code\game\objects\structures\aliens.dm"
#include "modular_zubbers\code\game\objects\structures\chalkboard.dm"
#include "modular_zubbers\code\game\objects\structures\engine_choice.dm"
@@ -9593,7 +9600,6 @@
#include "modular_zubbers\code\modules\cargo\bounties\assistant.dm"
#include "modular_zubbers\code\modules\cargo\bounties\blacksmith.dm"
#include "modular_zubbers\code\modules\cargo\bounties\prisoner.dm"
#include "modular_zubbers\code\modules\cargo\exports\weapons.dm"
#include "modular_zubbers\code\modules\cargo\markets\market_items\misc.dm"
#include "modular_zubbers\code\modules\cargo\packs\contraband.dm"
#include "modular_zubbers\code\modules\cargo\packs\general.dm"
@@ -10060,6 +10066,7 @@
#include "modular_zubbers\code\modules\modular_weapons\code\company_and_or_faction_based\szot_dynamica\pistol.dm"
#include "modular_zubbers\code\modules\more_renaming\renaming_overrides.dm"
#include "modular_zubbers\code\modules\movespeed\_movespeed_modifier.dm"
#include "modular_zubbers\code\modules\movespeed\modifiers\mobs.dm"
#include "modular_zubbers\code\modules\movespeed\modifiers\status_effects.dm"
#include "modular_zubbers\code\modules\nanites\designs.dm"
#include "modular_zubbers\code\modules\nanites\living.dm"
@@ -10104,6 +10111,7 @@
#include "modular_zubbers\code\modules\paperwork\stamps.dm"
#include "modular_zubbers\code\modules\pen_medipens\pen_medipens.dm"
#include "modular_zubbers\code\modules\power\cable.dm"
#include "modular_zubbers\code\modules\power\cell.dm"
#include "modular_zubbers\code\modules\power\powerator.dm"
#include "modular_zubbers\code\modules\power\singularity\emitter.dm"
#include "modular_zubbers\code\modules\power\supermatter\supermatter_delam.dm"
@@ -10111,14 +10119,18 @@
#include "modular_zubbers\code\modules\primitive_catgirls\code\spawner.dm"
#include "modular_zubbers\code\modules\primitive_structures\code\wall_torch.dm"
#include "modular_zubbers\code\modules\privacy_policy\privacy_policy.dm"
#include "modular_zubbers\code\modules\projectiles\beams.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\arrows.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\pistol.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\rifle.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\ballistic\smg.dm"
#include "modular_zubbers\code\modules\projectiles\ammunition\energy\laser.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\pistol.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\shotgun.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\external\smg.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\internal\revolver.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\internal\rifle.dm"
#include "modular_zubbers\code\modules\projectiles\boxes_magazines\internal\toy.dm"
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\automatic.dm"
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\bow.dm"
@@ -10128,6 +10140,7 @@
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\rifle.dm"
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\shotgun.dm"
#include "modular_zubbers\code\modules\projectiles\guns\ballistic\toy.dm"
#include "modular_zubbers\code\modules\projectiles\guns\energy\beam_rifle.dm"
#include "modular_zubbers\code\modules\projectiles\guns\energy\energyguns.dm"
#include "modular_zubbers\code\modules\projectiles\guns\energy\pulse.dm"
#include "modular_zubbers\code\modules\projectiles\projectile\bullets\lmg.dm"