Skip to content

Commit

Permalink
KS-29, M120
Browse files Browse the repository at this point in the history
- MK221 is now the M120
- M120 UGL now uses functional sprites
- Type-23 becomes KS-29/4 and KS-29; riot and tactical variants available
- Removed Type23/riot_control in favour of Type23/riot
- Removed excess Type23 variants
  • Loading branch information
AmoryBlaine committed Aug 27, 2024
1 parent bb804fc commit f36ffda
Show file tree
Hide file tree
Showing 20 changed files with 151 additions and 231 deletions.
100 changes: 59 additions & 41 deletions code/datums/ammo/bullet/shotgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.apply_effect(3.5, WEAKEN)
target.apply_effect(4, SUPERSLOW)
target.apply_effect(6, SLOW)
target.KnockDown(3.5)
target.Stun(3.5)
target.Slow(5)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.apply_effect(1, SUPERSLOW)
living_mob.apply_effect(3.5, WEAKEN)
living_mob.apply_effect(2, SLOW)
living_mob.KnockDown(2)
living_mob.Stun(2)
living_mob.Superslow(5)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

Expand All @@ -44,11 +44,9 @@
handful_state = "beanbag_slug"
icon_state = "beanbag"
flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST
sound_override = 'sound/weapons/gun_shotgun_riot.ogg'

max_range = 12
shrapnel_chance = 0
damage = 0
damage = 20
stamina_damage = 45
accuracy = HIT_ACCURACY_TIER_3
shell_speed = AMMO_SPEED_TIER_3
Expand Down Expand Up @@ -148,14 +146,14 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.apply_effect(2.5, WEAKEN)
target.apply_effect(2, SUPERSLOW)
target.apply_effect(5, SLOW)
target.KnockDown(2.5)
target.Stun(2.5)
target.Slow(4)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.apply_effect(1, SUPERSLOW)
living_mob.apply_effect(2, WEAKEN)
living_mob.apply_effect(2, SLOW)
living_mob.KnockDown(3)
living_mob.Stun(3)
living_mob.Slow(5)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

Expand Down Expand Up @@ -216,14 +214,14 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.apply_effect(2, WEAKEN)
target.apply_effect(2, SUPERSLOW)
target.apply_effect(5, SLOW)
target.KnockDown(2.5)
target.Stun(2.5)
target.Slow(4)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.apply_effect(2, WEAKEN)
living_mob.apply_effect(1, SUPERSLOW)
living_mob.apply_effect(2, SLOW)
living_mob.KnockDown(3)
living_mob.Stun(3)
living_mob.Slow(5)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

Expand Down Expand Up @@ -260,14 +258,14 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.apply_effect(4, WEAKEN)
target.apply_effect(1, SUPERSLOW)
target.apply_effect(2, SLOW)
target.KnockDown(5)
target.Stun(5)
target.Slow(8)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.apply_effect(1, SUPERSLOW)
living_mob.apply_effect(3, WEAKEN)
living_mob.apply_effect(2, SLOW)
living_mob.KnockDown(2)
living_mob.Stun(2)
living_mob.Slow(2)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

Expand All @@ -277,6 +275,21 @@
scatter = SCATTER_AMOUNT_TIER_1
bonus_projectiles_amount = 0

/datum/ammo/bullet/shotgun/heavy/buckshot/spread/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile)
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.KnockDown(5)
target.Stun(5)
target.Slow(8)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.KnockDown(2)
living_mob.Stun(2)
living_mob.Slow(2)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

/datum/ammo/bullet/shotgun/heavy/buckshot/special
bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/spread/special
bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_8
Expand All @@ -301,9 +314,15 @@
multiple_handful_name = TRUE
damage_type = BURN
damage = 60
accurate_range = 3
max_range = 4
bonus_projectiles_type = /datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread
accurate_range = 4
max_range = 6
bonus_projectiles_type = list(
/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread,/datum/ammo/bullet/shotgun/heavy/buckshot/spread)
bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_8
accuracy_var_low = PROJECTILE_VARIANCE_TIER_6
accuracy_var_high = PROJECTILE_VARIANCE_TIER_6
damage_var_low = PROJECTILE_VARIANCE_TIER_8
damage_var_high = PROJECTILE_VARIANCE_TIER_8

/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/set_bullet_traits()
. = ..()
Expand All @@ -314,7 +333,7 @@
/datum/ammo/bullet/shotgun/heavy/buckshot/dragonsbreath/spread
name = "additional dragon's breath"
bonus_projectiles_amount = 0
shell_speed = AMMO_SPEED_TIER_4 // so they hit before the main shell stuns
shell_speed = AMMO_SPEED_TIER_4


/datum/ammo/bullet/shotgun/heavy/slug
Expand All @@ -334,14 +353,14 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
target.apply_effect(6, WEAKEN)
target.apply_effect(4, SUPERSLOW)
target.apply_effect(10, SLOW)
target.KnockDown(7)
target.Stun(7)
target.Slow(10)
else
if(!isyautja(living_mob)) //Not predators.
living_mob.apply_effect(1, SUPERSLOW)
living_mob.apply_effect(3.5, WEAKEN)
living_mob.apply_effect(2, SLOW)
living_mob.KnockDown(8)
living_mob.Stun(8)
living_mob.Superslow(15)
to_chat(living_mob, SPAN_HIGHDANGER("The impact knocks you off-balance!"))
living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET)

Expand All @@ -351,14 +370,13 @@
headshot_state = HEADSHOT_OVERLAY_MEDIUM
handful_state = "heavy_beanbag"
flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_RESIST
sound_override = 'sound/weapons/gun_shotgun_riot.ogg'

max_range = 7
shrapnel_chance = 0
damage = 0
damage = 25
stamina_damage = 100
accuracy = HIT_ACCURACY_TIER_2
shell_speed = AMMO_SPEED_TIER_2
accuracy = HIT_ACCURACY_TIER_6
shell_speed = 3

/datum/ammo/bullet/shotgun/heavy/beanbag/on_hit_mob(mob/M, obj/projectile/P)
if(!M || M == P.firer)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/supply_packs/black_market.dm
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related.
new /obj/item/ammo_magazine/smg/mac15(src)
new /obj/item/ammo_magazine/smg/mac15(src)
if(4) //upp
new /obj/item/weapon/gun/shotgun/type23/riot_control(src)
new /obj/item/weapon/gun/shotgun/type23/riot(src)
new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_chief_engineer, list(
list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR),

list("PRIMARY FIREARMS (CHOOSE 1)", 0, null, null, null),
list("MK221 Tactical Shotgun", 0, /obj/item/storage/box/guncase/shotguncombat, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR),
list("M120 Tactical Shotgun", 0, /obj/item/storage/box/guncase/shotguncombat, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR),
list("M41A Pulse Rifle MK2", 0, /obj/item/storage/box/guncase/m41a, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR),
list("M240 Incinerator Unit", 0, /obj/item/storage/box/guncase/flamer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_REGULAR),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,10 @@
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/weapon/gun/launcher/grenade/m81/riot(src, TRUE)
new /obj/item/storage/box/nade_box/tear_gas(src)
new /obj/item/clothing/mask/gas(src)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/weapon/shield/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag/riot(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/ammo_magazine/shotgun/beanbag(src)
new /obj/item/weapon/gun/launcher/grenade/m81/riot(src, TRUE)
new /obj/item/storage/box/nade_box/tear_gas(src)
new /obj/item/clothing/mask/gas(src)
Expand Down
4 changes: 2 additions & 2 deletions code/modules/cm_marines/equipment/guncases.dm
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,8 @@

//------------
/obj/item/storage/box/guncase/shotguncombat
name = "\improper MK221 tactical shotgun case"
desc = "A gun case containing an unloaded MK221 tactical shotgun, two boxes of 12 gauge buckshot, and one box of 12 gauge slug."
name = "\improper M120 tactical shotgun case"
desc = "A gun case containing an unloaded M120 tactical shotgun, two boxes of 12 gauge buckshot, and one box of 12 gauge slug."
icon_state = "guncase"
storage_slots = 3
can_hold = list(/obj/item/weapon/gun/shotgun/combat, /obj/item/ammo_magazine/shotgun/buckshot, /obj/item/ammo_magazine/shotgun/slugs)
Expand Down
19 changes: 5 additions & 14 deletions code/modules/gear_presets/_select_equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1050,20 +1050,11 @@ var/list/rebel_rifles = list(
)

/datum/equipment_preset/proc/load_upp_shotgun(mob/living/carbon/human/new_human)
var/random_shotgun = rand(1,3)
switch(random_shotgun)
if(1)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE)
if(2)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher/slug, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyslug, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyslug, WEAR_R_STORE)
if(3)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/breacher/flechette, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyflechette, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavyflechette, WEAR_R_STORE)

new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE)


/datum/equipment_preset/proc/add_upp_weapon(mob/living/carbon/human/new_human)
var/random_gun = rand(1,5)
Expand Down
11 changes: 7 additions & 4 deletions code/modules/gear_presets/upp.dm
Original file line number Diff line number Diff line change
Expand Up @@ -127,15 +127,18 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/box/m94, WEAR_IN_BACK) //4.25
//waist
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST)
load_upp_shotgun(new_human)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/heavybuck, WEAR_R_STORE)



/datum/equipment_preset/upp/soldier/proc/load_upp_double(mob/living/carbon/human/new_human, obj/item/clothing/under/marine/veteran/UPP/UPP)
//back
var/rifle = prob(50) ? /obj/item/weapon/gun/rifle/type71/dual : /obj/item/weapon/gun/rifle/type71/carbine/dual
new_human.equip_to_slot_or_del(new rifle, WEAR_BACK)
//body
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dual, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE)
//waist
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp/full, WEAR_WAIST)
//pockets
Expand Down Expand Up @@ -567,7 +570,7 @@
UPP.attach_accessory(new_human, W)
for(var/i in 1 to W.hold.storage_slots)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath, WEAR_IN_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dragon, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath, WEAR_IN_JACKET)
//waist
var/uppvetsidearm = prob(50) ? /obj/item/storage/belt/gun/type47/t73 : /obj/item/storage/belt/gun/type47/np92
Expand Down Expand Up @@ -2572,7 +2575,7 @@
new_human.equip_to_slot_or_del(UPP, WEAR_BODY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dual, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23, WEAR_J_STORE)
//waist
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun/upp/heavybuck(new_human), WEAR_WAIST)
//limb
Expand Down
39 changes: 33 additions & 6 deletions code/modules/projectiles/gun_attachables.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1727,8 +1727,8 @@ Defined in conflicts.dm of the #defines folder.
icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi'

/obj/item/attachable/stock/shotgun
name = "\improper M37 wooden stock"
desc = "A non-standard heavy wooden stock for the M37 Shotgun. More cumbersome than the standard issue stakeout, but reduces recoil and improves accuracy. Allegedly makes a pretty good club in a fight too."
name = "\improper Ithaca 37 wooden stock"
desc = "A standard wooden stock for the Ithaca pump-action shotgun. More cumbersome than the standard issue stakeout, but reduces recoil and improves accuracy. Allegedly makes a pretty good club in a fight too."
slot = "stock"
icon_state = "stock"
wield_delay_mod = WIELD_DELAY_FAST
Expand Down Expand Up @@ -1824,8 +1824,8 @@ Defined in conflicts.dm of the #defines folder.
// Doesn't give any stat additions due to the gun already having really good ones, and this is unremovable from the gun itself

/obj/item/attachable/stock/tactical
name = "\improper MK221 tactical stock"
desc = "A metal stock made for the MK221 tactical shotgun."
name = "\improper M120 tactical stock"
desc = "A metal stock made for the M120 tactical shotgun."
icon_state = "tactical_stock"
hud_offset_mod = 6

Expand Down Expand Up @@ -1859,6 +1859,33 @@ Defined in conflicts.dm of the #defines folder.
recoil_unwielded_mod = -RECOIL_AMOUNT_TIER_5
scatter_unwielded_mod = -SCATTER_AMOUNT_TIER_10

/obj/item/attachable/stock/type23/wood
name = "\improper KS-29 wooden stock"
desc = "A standard heavy wooden stock for the KS-29 riot shotgun. Allegedly makes a pretty good club in a fight too."
slot = "stock"
icon_state = "type23_wood"
wield_delay_mod = WIELD_DELAY_FAST
pixel_shift_x = 32
pixel_shift_y = 15
hud_offset_mod = 6 //*Very* long sprite.
flags_attach_features = NO_FLAGS

/obj/item/attachable/stock/type23/wood/New()
..()
//it makes stuff much better when two-handed
accuracy_mod = HIT_ACCURACY_MULT_TIER_4
recoil_mod = -RECOIL_AMOUNT_TIER_4
scatter_mod = -SCATTER_AMOUNT_TIER_8
movement_onehanded_acc_penalty_mod = -MOVEMENT_ACCURACY_PENALTY_MULT_TIER_5
//it makes stuff much worse when one handed
accuracy_unwielded_mod = -HIT_ACCURACY_MULT_TIER_3
recoil_unwielded_mod = RECOIL_AMOUNT_TIER_4
scatter_unwielded_mod = SCATTER_AMOUNT_TIER_8
//but at the same time you are slow when 2 handed
aim_speed_mod = CONFIG_GET(number/slowdown_med)

matter = list("wood" = 2000)

/obj/item/attachable/stock/slavic
name = "wooden stock"
desc = "A non-standard heavy wooden stock for Slavic firearms."
Expand Down Expand Up @@ -2664,8 +2691,8 @@ Defined in conflicts.dm of the #defines folder.
/obj/item/attachable/attached_gun/grenade
name = "U1 grenade launcher"
desc = "A weapon-mounted, reloadable grenade launcher."
icon_state = "grenade"
attach_icon = "grenade_a"
icon_state = "grenade-mk1"
attach_icon = "grenade-mk1_a"
w_class = SIZE_MEDIUM
current_rounds = 0
max_rounds = 3
Expand Down
Loading

0 comments on commit f36ffda

Please sign in to comment.