Oh god what is it doing
This commit is contained in:
Sym
2021-02-05 00:02:34 -05:00
344 changed files with 23410 additions and 19619 deletions

View File

@@ -0,0 +1,98 @@
//Created the autolathe entries here to keep stuff organized and also compact so the files aren't too spread out.
/datum/category_item/autolathe/arms/smg_mp5
name = "mp5 magazine(9x19mm standard)"
path = /obj/item/ammo_magazine/mp5mag
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_ap
name = "mp5 magazine(9x19mm armor-piercing)"
path = /obj/item/ammo_magazine/mp5mag/ap
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_hp
name = "mp5 magazine(9x19mm hollow-point)"
path = /obj/item/ammo_magazine/mp5mag/hp
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_rubber
name = "mp5 magazine(9x19mm rubber)"
path = /obj/item/ammo_magazine/mp5mag/rubber
/datum/category_item/autolathe/arms/pistol_fiveseven
name = "five-seven magazine(5.7x28mm standard)"
path = /obj/item/ammo_magazine/a57
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_ap
name = "five-seven magazine(5.7x28mm armor-piercing)"
path = /obj/item/ammo_magazine/a57/ap
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_hp
name = "five-seven magazine(5.7x28mm hollow-point)"
path = /obj/item/ammo_magazine/a57/hp
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_rubber
name = "five-seven magazine(5.7x28mm rubber)"
path = /obj/item/ammo_magazine/a57/rubber
/datum/category_item/autolathe/arms/smg_p90
name = "large capacity top mounted magazine (5.7x28mm armor-piercing)"
path = /obj/item/ammo_magazine/m9mmp90
hidden = 1
/datum/category_item/autolathe/arms/svd_762
name = "SVD magazine (7.62x54mmR)"
path = /obj/item/ammo_magazine/m762svd
hidden = 1
/datum/category_item/autolathe/arms/svd_762_ap
name = "SVD magazine (7.62x54mmR armor-piercing)"
path = /obj/item/ammo_magazine/m762svd/ap
hidden = 1
/datum/category_item/autolathe/arms/asval_9x39
name = "AS-Val magazine(9x39mm standard)"
path = /obj/item/ammo_magazine/asval
hidden = 1
/datum/category_item/autolathe/arms/asval_9x39_ap
name = "AS-Val magazine(9x39mm armor-piercing)"
path = /obj/item/ammo_magazine/asval/ap
hidden = 1
/datum/category_item/autolathe/arms/akm_762x39
name = "AKM magazine (7.62x39mm standard)"
path = /obj/item/ammo_magazine/akm
hidden = 1
/datum/category_item/autolathe/arms/akm_762x39_ap
name = "AKM magazine (7.62x39mm armor-piercing)"
path = /obj/item/ammo_magazine/akm/ap
hidden = 1
/datum/category_item/autolathe/arms/akm_762x39_hp
name = "AKM magazine (7.62x39mm hollow-point)"
path = /obj/item/ammo_magazine/akm/hp
hidden = 1
/datum/category_item/autolathe/arms/m16_556
name = "M16 magazine (5.56x45mm standard)"
path = /obj/item/ammo_magazine/m16
hidden = 1
/datum/category_item/autolathe/arms/m16_556_ap
name = "M16 magazine (5.56x45mm armor-piercing)"
path = /obj/item/ammo_magazine/m16/ap
hidden = 1
/datum/category_item/autolathe/arms/m16_556_hp
name = "M16 magazine (5.56x45mm hollow-point)"
path = /obj/item/ammo_magazine/m16/hp
hidden = 1
/datum/category_item/autolathe/arms/sks_762
name = "SKS Clip (10x 7.62x39 standard)"
path = /obj/item/ammo_magazine/clip/sks
hidden = 1

View File

@@ -0,0 +1,140 @@
//Overrides
/obj/item/ammo_magazine/m9mmp90 //congratulations you are now being converted 5.7x28mm, a.k.a the round the p90 actually uses.
name = "large capacity top mounted magazine (5.7x28mm armor-piercing)" //Ugh, we'll leave it AP I guess
ammo_type = /obj/item/ammo_casing/a57/ap
caliber = "5.7x28mm"
/obj/item/ammo_magazine/m762svd //You are now being converted to 7.62x54mmR :3
name = "\improper SVD magazine (7.62x54mmR)"
caliber = "7.62x54mmR"
ammo_type = /obj/item/ammo_casing/a762x54
/obj/item/ammo_magazine/m762svd/ap
name = "\improper SVD magazine (7.62x54mmR armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762x54/ap
//New stuff
/obj/item/ammo_magazine/a57
name = "five-seven magazine(5.7x28mm standard)"
icon_state = "fiveseven"
max_ammo = 20
mag_type = MAGAZINE
caliber= "5.7x28mm"
matter = list(DEFAULT_WALL_MATERIAL = 800)
multiple_sprites = 0
ammo_type = /obj/item/ammo_casing/a57
/obj/item/ammo_magazine/a57/ap
name = "five-seven magazine(5.7x28mm armor-piercing)"
matter = list(DEFAULT_WALL_MATERIAL = 900)
ammo_type = /obj/item/ammo_casing/a57/ap
/obj/item/ammo_magazine/a57/hp
name = "five-seven magazine(5.7x28mm hollow-point)"
matter = list(DEFAULT_WALL_MATERIAL = 900)
ammo_type = /obj/item/ammo_casing/a57/hp
/obj/item/ammo_magazine/a57/rubber
name = "five-seven magazine(5.7x28mm rubber)"
ammo_type = /obj/item/ammo_casing/a57/rubber
/obj/item/ammo_magazine/mp5mag
name = "mp5 magazine(9x19mm standard)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "smg"
max_ammo = 30
mag_type = MAGAZINE
caliber = "9mm"
matter = list(DEFAULT_WALL_MATERIAL = 800)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a9mm
/obj/item/ammo_magazine/mp5mag/ap
name = "mp5 magazine(9x19mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
matter = list(DEFAULT_WALL_MATERIAL = 900)
/obj/item/ammo_magazine/mp5mag/hp
name = "mp5 magazine(9x19mm hollow-point)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
/obj/item/ammo_magazine/mp5mag/rubber
name = "mp5 magazine(9x19mm rubber)"
ammo_type = /obj/item/ammo_casing/a9mm/rubber
/obj/item/ammo_magazine/asval
name = "AS-Val magazine(9x39mm standard)"
icon = 'icons/obj/ammo_ch.dmi'
icon_state = "sts35"
max_ammo = 20
mag_type = MAGAZINE
caliber = "9x39mm"
matter = list(DEFAULT_WALL_MATERIAL = 1000)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a9x39
/obj/item/ammo_magazine/asval/ap
name = "AS-Val magazine(9x39mm armor-piercing)"
matter = list(DEFAULT_WALL_MATERIAL = 1200)
ammo_type = /obj/item/ammo_casing/a9x39/ap
/obj/item/ammo_magazine/akm
name = "AKM magazine (7.62x39mm standard)"
icon = 'icons/obj/ammo_ch.dmi'
icon_state = "762mag"
max_ammo = 30
mag_type = MAGAZINE
caliber = "7.62x39mm"
matter = list(DEFAULT_WALL_MATERIAL = 1600)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a762x39
/obj/item/ammo_magazine/akm/ap
name = "AKM magazine (7.62x39mm armor-piercing)"
matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762x39/ap
/obj/item/ammo_magazine/akm/hp
name = "AKM magazine (7.62x39mm hollow-point)"
matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762x39/hp
/obj/item/ammo_magazine/m16
name = "M16 magazine (5.56x45mm standard)"
icon = 'icons/obj/ammo_ch.dmi'
icon_state = "556mag"
max_ammo = 30
mag_type = MAGAZINE
caliber = "5.56x45mm"
matter = list(DEFAULT_WALL_MATERIAL = 1400)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a556
/obj/item/ammo_magazine/m16/ap
name = "M16 magazine (5.56x45mm armor-piercing)"
matter = list(DEFAULT_WALL_MATERIAL = 1700)
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/m16/hp
name = "M16 magazine (5.56x45mm hollow-point)"
matter = list(DEFAULT_WALL_MATERIAL = 1700)
ammo_type = /obj/item/ammo_casing/a556/hp
/obj/item/ammo_magazine/m41
name = "M41A magazine (10x24mm standard)"
icon = 'icons/obj/ammo_ch.dmi'
icon_state = "m41mag"
max_ammo = 40
mag_type = MAGAZINE
caliber = "5.56x45mm"
matter = list(DEFAULT_WALL_MATERIAL = 10000)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a10x24
/obj/item/ammo_magazine/clip/sks
name = "Ammo clip(7.62x39mm)"
icon_state = "gclip"
max_ammo = 10
caliber = "7.62x39mm"
matter = list(DEFAULT_WALL_MATERIAL = 400)

View File

@@ -0,0 +1,86 @@
//Overrides
/obj/item/ammo_casing/a10mm
projectile_type = /obj/item/projectile/bullet/a10mm
/obj/item/ammo_casing/a38
projectile_type = /obj/item/projectile/bullet/a38
/obj/item/ammo_casing/a380
projectile_type = /obj/item/projectile/bullet/a380
/obj/item/ammo_casing/a357
projectile_type = /obj/item/projectile/bullet/a357
/obj/item/ammo_casing/a12g/pellet
name = "shotgun buckshot shell"
desc = "A 12 gauge buckshot shell."
icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/shotgun/buckshot/shell
//New stuff
/obj/item/ammo_casing/a57
desc = "A standard 5.7x28mm round"
caliber = "5.7x28mm"
projectile_type = /obj/item/projectile/bullet/a57
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a57/ap
desc = "An armor piercing 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/a57/ap
/obj/item/ammo_casing/a57/hp
desc = "A hollow point 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/a57/ap
/obj/item/ammo_casing/a57/rubber
desc = "A rubber 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a762x54
desc = "A standard 7.62x54mmR round"
caliber = "7.62x54mmR"
projectile_type = /obj/item/projectile/bullet/rifle/a762x54
matter = list(DEFAULT_WALL_MATERIAL = 160)
/obj/item/ammo_casing/a762x54/ap
desc = "An armor piercing 7.62x54mmR round"
projectile_type = /obj/item/projectile/bullet/rifle/a762x54/ap
/obj/item/ammo_casing/a9x39
desc = "A standard 9x39mm round"
caliber = "9x39mm"
projectile_type = /obj/item/projectile/bullet/rifle/a9x39
/obj/item/ammo_casing/a9x39/ap
desc = "An armor piercing 9x39mm round"
projectile_type = /obj/item/projectile/bullet/rifle/a9x39/ap
/obj/item/ammo_casing/a762x39
desc = "A standard 7.62x39mm round"
caliber = "7.62x39mm"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39
/obj/item/ammo_casing/a762x39/ap
desc = "An armor piercing 7.62x39mm round"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39/ap
/obj/item/ammo_casing/a762x39/hp
desc = "A hollow point 7.62x39mm round"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39/hp
/obj/item/ammo_casing/a556
desc = "A standard 5.56x45mm round"
caliber = "5.56x45mm"
projectile_type = /obj/item/projectile/bullet/rifle/a556
/obj/item/ammo_casing/a556/ap
desc = "An armor piercing 5.56x45mm round"
projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
/obj/item/ammo_casing/a556/hp
desc = "A hollow point 5.56x45mm round"
projectile_type = /obj/item/projectile/bullet/rifle/a556/hp
/obj/item/ammo_casing/a10x24
desc = "A standard 10x24mm caseless round"
projectile_type = /obj/item/projectile/bullet/rifle/a10x24

View File

@@ -159,7 +159,7 @@
w_class = ITEMSIZE_HUGE //CHOMP Edit. Lol a cannon used to be just large size? Are you kidding me? A CANNON.
one_handed_penalty = 90 // The thing's heavy and huge.
accuracy = 45
charge_cost = 600
charge_cost = 400 //CHOMP Edit. Let's give this thing some more shots, seeing as it needs to be recharged at a charger.
/obj/item/weapon/gun/energy/lasercannon/mounted
name = "mounted laser cannon"
@@ -196,14 +196,16 @@
projectile_type = /obj/item/projectile/beam/sniper
slot_flags = SLOT_BACK
action_button_name = "Use Scope"
battery_lock = 1
charge_cost = 600
fire_delay = 35
//Begin CHOMPstation Edit for making this thing not trash
//battery_lock = 0
charge_cost = 360
fire_delay = 40
force = 10
w_class = ITEMSIZE_HUGE // So it can't fit in a backpack.
accuracy = -45 //shooting at the hip
scoped_accuracy = 50
accuracy = -30 //shooting at the hip
scoped_accuracy = 100
one_handed_penalty = 60 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
//End CHOMP Edit.
/obj/item/weapon/gun/energy/sniperrifle/ui_action_click()
scope()
@@ -302,4 +304,5 @@
origin_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 1, TECH_MATERIAL = 4)
projectile_type = /obj/item/projectile/scatter/laser
w_class = ITEMSIZE_HUGE //CHOMP Edit.
w_class = ITEMSIZE_HUGE //CHOMP Edit.
slot_flags = SLOT_BELT|SLOT_BACK //CHOMP Edit because you can still holster it despite it not fitting in a backpack.

View File

@@ -213,6 +213,7 @@
list(mode_name="lethal", fire_delay=12, projectile_type=/obj/item/projectile/beam/phaser, charge_cost = 300),
list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/phaser/light, charge_cost = 60),
)
recoil_mode = 0 //CHOMP Addition: Removes recoil for micros.
/obj/item/weapon/gun/energy/locked/frontier/unload_ammo(var/mob/user)
if(recharging)

View File

@@ -31,6 +31,7 @@
charge_cost = 100
force = 8
w_class = ITEMSIZE_HUGE //Probably gonna make it a rifle sooner or later //CHOMP Edit, and so I did.
slot_flags = SLOT_BELT|SLOT_BACK //CHOMP Edit. Let's make it so that if it doesn't fit in a backpack, it doesn't fit in a holster either.
fire_delay = 6
projectile_type = /obj/item/projectile/beam/stun/weak

View File

@@ -59,7 +59,7 @@
modifystate = "x01stun"
firemodes = list(
list(mode_name="stun", fire_delay = 8, projectile_type= /obj/item/projectile/energy/electrode/x01stunshot, modifystate="x01stun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
list(mode_name="stun", fire_delay = 8, projectile_type= /obj/item/projectile/beam/stun, modifystate="x01stun", fire_sound='sound/weapons/Taser.ogg', charge_cost = 240),
list(mode_name="laser", fire_delay = 8, projectile_type=/obj/item/projectile/beam, modifystate="x01laser", fire_sound='sound/weapons/Laser.ogg', charge_cost = 480),
list(mode_name="gauss", fire_delay=15, projectile_type=/obj/item/projectile/energy/gauss, modifystate="x01gauss", fire_sound='sound/weapons/gauss_shoot.ogg', charge_cost = 360)
)

View File

@@ -23,6 +23,7 @@
charge_cost = 200 //slightly more shots than lasers
var/safetycatch = 0 //if 1, won't let you fire in pressurised environment, rather than malfunctioning
var/obj/item/pressurelock/attached_safety
recoil_mode = 0 //CHOMP Addition: Removes recoil for micros.
/obj/item/weapon/gun/energy/particle/advanced //particle equivalent of AEG

View File

@@ -11,6 +11,7 @@
charge_cost = 240
projectile_type = /obj/item/projectile/energy/phase
one_handed_penalty = 15
recoil_mode = 0 //CHOMP Addition: Removes recoil for micros.
/obj/item/weapon/gun/energy/phasegun/pistol
name = "phase pistol"
@@ -56,4 +57,4 @@ obj/item/weapon/gun/energy/phasegun/rifle
charge_cost = 100
projectile_type = /obj/item/projectile/energy/phase/heavy/cannon
accuracy = 15
one_handed_penalty = 65
one_handed_penalty = 65

View File

@@ -15,10 +15,10 @@
load_type = /obj/item/weapon/rcd_ammo
projectile_type = /obj/item/projectile/bullet/magnetic/slug
cell = /obj/item/weapon/cell/hyper
cell = /obj/item/weapon/cell/device/weapon //CHOMP Edit.
capacitor = /obj/item/weapon/stock_parts/capacitor/adv
loaded = /obj/item/weapon/rcd_ammo/large
removable_components = FALSE
removable_components = TRUE //CHOMP Edit.
var/slowdown_held = 2
var/slowdown_worn = 1
@@ -83,11 +83,13 @@
icon_state = "flechette_gun"
item_state = "z8carbine"
cell = /obj/item/weapon/cell/hyper
cell = /obj/item/weapon/cell/device/weapon //CHOMP Edit.
capacitor = /obj/item/weapon/stock_parts/capacitor/adv
removable_components = TRUE //CHOMP Edit.
fire_delay = 0
w_class = ITEMSIZE_HUGE //CHOMP Edit.
slot_flags = SLOT_BACK
slowdown = 0
@@ -98,6 +100,7 @@
load_type = /obj/item/weapon/magnetic_ammo
projectile_type = /obj/item/projectile/bullet/magnetic/flechette
loaded = /obj/item/weapon/magnetic_ammo
removable_components = TRUE //CHOMP Edit.
empty_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
@@ -114,8 +117,9 @@
item_state = "combatrevolver"
w_class = ITEMSIZE_SMALL
cell = /obj/item/weapon/cell/super
cell = /obj/item/weapon/cell/device/weapon //CHOMP Edit.
capacitor = /obj/item/weapon/stock_parts/capacitor
removable_components = TRUE //CHOMPstation Edit
fire_delay = 0
@@ -129,7 +133,6 @@
load_type = /obj/item/weapon/magnetic_ammo/pistol
projectile_type = /obj/item/projectile/bullet/magnetic/flechette/small
loaded = /obj/item/weapon/magnetic_ammo/pistol
removable_components = TRUE
empty_sound = 'sound/weapons/smg_empty_alarm.ogg'
firemodes = list(
@@ -145,14 +148,14 @@
icon_state = "railgun_sec"
item_state = "cshotgun"
removable_components = TRUE
cell = /obj/item/weapon/cell/device/weapon
capacitor = /obj/item/weapon/stock_parts/capacitor
removable_components = TRUE //CHOMPstation Edit
fire_delay = 8
slot_flags = SLOT_BACK
w_class = ITEMSIZE_HUGE //CHOMP Edit.
slowdown = 0
slowdown_held = 0.3
@@ -182,6 +185,7 @@
cell = /obj/item/weapon/cell/device/weapon
capacitor = /obj/item/weapon/stock_parts/capacitor
removable_components = TRUE //CHOMPstation Edit
slot_flags = SLOT_BELT|SLOT_HOLSTER
@@ -209,10 +213,11 @@
icon_state = "railgun_sifguard"
item_state = "z8carbine"
cell = /obj/item/weapon/cell/high
cell = /obj/item/weapon/cell/device/weapon //CHOMP Edit.
capacitor = /obj/item/weapon/stock_parts/capacitor/adv
removable_components = TRUE //CHOMPstation Edit.
slot_flags = SLOT_BACK
slot_flags = SLOT_BELT|SLOT_BACK //CHOMPstation Edit. This is a carbine.
slowdown_held = 0.3

View File

@@ -17,6 +17,9 @@
/obj/item/weapon/gun/projectile/fiveseven/update_icon()
icon_state = ammo_magazine ? "[initial(icon_state)]" : "[initial(icon_state)]-e"
//Was originally expecting to be able to have 64x64 guns and just shrink them but that's just like not a thing because code doesn't allow it
//And Kasssc kinda explained to me that even if the code did allow it, it wouldn't look right.
//So, we have the mp5 as the only one that does have this, and it just uses filters to convert the 64x64 sprite into 32x32 for now.
/obj/item/weapon/gun/projectile/automatic/cballistic
name = "I AM NOT SUPPOSED TO EXIST"
desc = "Yes hello I'm not supposed to exist, I'm just a weird code artefact thing please contact a developer."
@@ -55,6 +58,190 @@
load_method = MAGAZINE
muzzle_velocity = 400
//Following guns are thanks to Serdy/Przyjaciel for the sprites and lore for WKHM. Naming the classes after him in honor <3
/obj/item/weapon/gun/projectile/automatic/serdy
name = "I AM NOT SUPPOSED TO EXIST"
desc = "Yes hello I'm not supposed to exist, I'm just a weird code artefact thing please contact a developer."
icon = 'icons/obj/64x32guns_ch.dmi'
icon_state = "asval"
icon_expected_height = 32
icon_expected_width = 64
/obj/item/weapon/gun/projectile/automatic/serdy/Initialize()
. = ..()
update_transform()
/obj/item/weapon/gun/projectile/automatic/serdy/update_transform()
. = ..()
transform = transform.Translate(-16,0)
//AK Variants
/obj/item/weapon/gun/projectile/automatic/serdy/asval
name = "AS-VAL"
desc = "A somewhat competent remake of an ancient russian assault rifle. Commonly found in the hands of criminals, and on pan-slavic rimworlds. Integrally suppressed, chambered in 7.62x39mm."
caliber = "9x39mm"
magazine_type = /obj/item/ammo_magazine/asval
allowed_magazines = list(/obj/item/ammo_magazine/asval)
icon_state = "asval"
projectile_type = /obj/item/projectile/bullet/rifle/a9x39
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK
muzzle_velocity = 295
w_class = ITEMSIZE_HUGE
/obj/item/weapon/gun/projectile/automatic/serdy/krinkov
name = "Krinkov"
desc = "A professionally cut down AKM made to be easily concealable. With a 12 inch barrel, this is a very loud short barrel rifle. Illegal pretty much everywhere, and easy to get a hold of, these classic russian firearms are a mainstay amidst the various criminal organizations across the galaxy."
caliber = "7.62x39mm"
magazine_type = /obj/item/ammo_magazine/akm
allowed_magazines = list(/obj/item/ammo_magazine/akm)
icon_state = "krinkov"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK
muzzle_velocity = 680
/obj/item/weapon/gun/projectile/automatic/serdy/akm
name = "AKM"
desc = "The tried and true, old fashioned chatterbox. Ivan's favorite. Best used while at least somewhat inebriated. Chambered in 7.62x39mm."
caliber = "7.62x39mm"
magazine_type = /obj/item/ammo_magazine/akm
allowed_magazines = list(/obj/item/ammo_magazine/akm)
icon_state = "akm"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK
muzzle_velocity = 715
w_class = ITEMSIZE_HUGE
/obj/item/weapon/gun/projectile/automatic/serdy/scrapak
name = "AKM"
desc = "The 'Stalingrad Special'. This rickety old AKM has seen better days. Better bring some vodka, because every shot this gun manages to squeeze off without blowing up in your face is worthy of celebration. Chambered in 7.62x39mm"
caliber = "7.62x39mm"
magazine_type = /obj/item/ammo_magazine/akm
allowed_magazines = list(/obj/item/ammo_magazine/akm)
icon_state = "scrapak"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
auto_loading_type = CLOSED_BOLT | LOCK_MANUAL_LOCK
muzzle_velocity = 700
w_class = ITEMSIZE_HUGE
// AR Variants
/obj/item/weapon/gun/projectile/automatic/serdy/m16a2
name = "M16A2"
desc = "A favorite service rifle everywhere, even today. It might be a reproduction, but Eugene Stoner smiles upon every man or woman who wields this beautiful democracy dispensing machine, even if it's never seen the soil of Terra, and never will. Chambered in 5.56x45mm."
caliber = "5.56x45mm"
magazine_type = /obj/item/ammo_magazine/m16
allowed_magazines = list(/obj/item/ammo_magazine/m16)
icon_state="m16"
projectile_type = /obj/item/projectile/bullet/rifle/a556
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE
muzzle_velocity = 960
w_class = ITEMSIZE_HUGE
/obj/item/weapon/gun/projectile/automatic/serdy/m4a1
name = "M4A1"
desc = "The M16's shorter, more lightweight little brother. An old terran flag is stamped into the receiver. These guns can be found just about everywhere. A favorite on the rimworlds due to its simplicity to produce, and reliability. Chambered in 5.56x45mm."
caliber = "5.56x45mm"
magazine_type = /obj/item/ammo_magazine/m16
allowed_magazines = list(/obj/item/ammo_magazine/m16)
icon_state="m4"
projectile_type = /obj/item/projectile/bullet/rifle/a556
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE
load_method = MAGAZINE
muzzle_velocity = 910
w_class = ITEMSIZE_HUGE
/obj/item/weapon/gun/projectile/automatic/serdy/patriot
name = "Patriot"
desc = "I raised you, and loved you, I've given you weapons, taught you techniques, endowed you with knowledge. There's nothing more for me to give you. All that's left for you to take is my life. 'Still in a dream' is stamped into the receiver, and it has no serial number. Chambered in 5.56x45mm."
caliber = "5.56x45mm"
magazine_type = /obj/item/ammo_magazine/m16
allowed_magazines = list(/obj/item/ammo_magazine/m16)
icon_state="patriot"
projectile_type = /obj/item/projectile/bullet/rifle/a556
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY | LOCK_SLAPPABLE
load_method = MAGAZINE
muzzle_velocity = 960
w_class = ITEMSIZE_HUGE
//Other rifles
/obj/item/weapon/gun/projectile/automatic/serdy/m41ab //This gun is pretty overpowered. Leaving it as an admin spawn. Might even interfere with lore.
name = "M41A/2"
desc = "The Armat M41A Pulse Rifle is a pulse-action assault rifle chambered for 10×24mm Caseless ammunition. This one is a rare, and fairly competent replica of the original by Scarborough Arms, with some minor design improvements over the original. The aluminium chassis is painted steel blue, and it has 'Scarborough Arms - Per falcis, per pravitas' inscribed on the stock."
caliber = "10x24mm caseless"
magazine_type = /obj/item/ammo_magazine/m41
allowed_magazines = list(/obj/item/ammo_magazine/m41)
icon_state="m41ab"
projectile_type = /obj/item/projectile/bullet/rifle/a10x24
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
muzzle_velocity = 840
/obj/item/weapon/gun/projectile/automatic/serdy/m41a //This gun is pretty overpowered. Leaving it as an admin spawn. Might even interfere with lore.
name = "M41A"
desc = "A tried and true original. The Armat M41A Pulse Rifle is a pulse-action assault rifle chambered for 10×24mm Caseless ammunition. 'PEACE THROUGH SUPERIOR FIREPOWER' is stamped into the side of the aluminium chassis."
caliber = "10x24mm caseless"
magazine_type = /obj/item/ammo_magazine/m41
allowed_magazines = list(/obj/item/ammo_magazine/m41)
icon_state="m41a"
projectile_type = /obj/item/projectile/bullet/rifle/a10x24
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=4, burst_accuracy=list(0,-10,-10), dispersion=list(0.0, 0.3, 0.6))
)
load_method = MAGAZINE
muzzle_velocity = 840
/obj/item/weapon/gun/projectile/automatic/serdy/sks //Reminder to myself to make sure this works and also to make sure that people are able to empty the internal mag
name = "SKS"
desc = "Just looking at it makes you want to buy a tacticool turtleneck, go into the woods, and -operate-. Chambered in 7.62x39mm."
caliber = "7.62x39mm"
auto_loading_type = CLOSED_BOLT | LOCK_OPEN_EMPTY
load_method = SINGLE_CASING|SPEEDLOADER
icon_state = "sks"
projectile_type = /obj/item/projectile/bullet/rifle/a762x39
muzzle_velocity = 735
max_shells = 10
ammo_type = /obj/item/ammo_casing/a762x39
//Time to give all these existing guns some new properties.
//automatic.dm
/obj/item/weapon/gun/projectile/automatic

View File

@@ -690,7 +690,7 @@
//admin logs
if(!no_attack_log)
if(istype(firer, /mob) && istype(target_mob))
add_attack_logs(firer,target_mob,"Shot with \a [src.type] projectile")
add_attack_logs(firer,target_mob,"Shot with \a [src.type] projectile",use_async=FALSE) //CHOMPEdit
//sometimes bullet_act() will want the projectile to continue flying
if (result == PROJECTILE_CONTINUE)

View File

@@ -1,276 +1,281 @@
/obj/item/projectile/beam
name = "laser"
icon_state = "laser"
fire_sound = 'sound/weapons/Laser.ogg'
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 40
damage_type = BURN
check_armour = "laser"
eyeblur = 4
var/frequency = 1
hitscan = 1
embed_chance = 0
invisibility = 99 //beam projectiles are invisible as they are rendered by the effect engine
light_range = 2
light_power = 0.5
light_color = "#FF0D00"
hitsound = 'sound/weapons/sear.ogg'
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
muzzle_type = /obj/effect/projectile/muzzle/laser
tracer_type = /obj/effect/projectile/tracer/laser
impact_type = /obj/effect/projectile/impact/laser
/obj/item/projectile/beam/practice
name = "laser"
icon_state = "laser"
damage = 0
damage_type = BURN
check_armour = "laser"
eyeblur = 2
/obj/item/projectile/beam/weaklaser
name = "weak laser"
icon_state = "laser"
damage = 15
/obj/item/projectile/beam/smalllaser
damage = 25
/obj/item/projectile/beam/burstlaser
damage = 30
armor_penetration = 10
/obj/item/projectile/beam/midlaser
damage = 40
armor_penetration = 10
/obj/item/projectile/beam/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
fire_sound = 'sound/weapons/lasercannonfire.ogg'
damage = 60
armor_penetration = 30
light_range = 3
light_power = 1
light_color = "#FF0D00"
muzzle_type = /obj/effect/projectile/muzzle/laser_heavy
tracer_type = /obj/effect/projectile/tracer/laser_heavy
impact_type = /obj/effect/projectile/impact/laser_heavy
/obj/item/projectile/beam/heavylaser/fakeemitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
light_color = "#00CC33"
excavation_amount = 140 // 2 shots to dig a standard rock turf. Superior due to being a mounted tool beam, to make it actually viable.
muzzle_type = /obj/effect/projectile/muzzle/emitter
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
/obj/item/projectile/beam/heavylaser/cannon
damage = 80
armor_penetration = 50
light_color = "#FF0D00"
/obj/item/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 25
armor_penetration = 50
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/gamma
name = "gamma beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 10
armor_penetration = 90
irradiate = 20
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/cyan
name = "cyan beam"
icon_state = "cyan"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 40
light_color = "#00C6FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now.
damage = 100 //Badmin toy, don't care
armor_penetration = 100
light_color = "#0066FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_pulse
tracer_type = /obj/effect/projectile/tracer/laser_pulse
impact_type = /obj/effect/projectile/impact/laser_pulse
/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target))
target.ex_act(2)
..()
/obj/item/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm
light_color = "#00CC33"
excavation_amount = 70 // 3 shots to mine a turf
muzzle_type = /obj/effect/projectile/muzzle/emitter
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
/obj/item/projectile/beam/lasertag
name = "lasertag beam"
damage = 0
eyeblur = 0
no_attack_log = 1
damage_type = BURN
check_armour = "laser"
combustion = FALSE
/obj/item/projectile/beam/lasertag/blue
icon_state = "bluelaser"
light_color = "#0066FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
tracer_type = /obj/effect/projectile/tracer/laser_blue
impact_type = /obj/effect/projectile/impact/laser_blue
/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
M.Weaken(5)
return 1
/obj/item/projectile/beam/lasertag/red
icon_state = "laser"
light_color = "#FF0D00"
/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
M.Weaken(5)
return 1
/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE
icon_state = "omnilaser"
light_color = "#00C6FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag)))
M.Weaken(5)
return 1
/obj/item/projectile/beam/sniper
name = "sniper beam"
icon_state = "xray"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
damage = 50
armor_penetration = 10
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/stun
name = "stun beam"
icon_state = "stun"
fire_sound = 'sound/weapons/Taser.ogg'
nodamage = 1
taser_effect = 1
agony = 40
damage_type = HALLOSS
light_color = "#FFFFFF"
hitsound = 'sound/weapons/zapbang.ogg'
combustion = FALSE
muzzle_type = /obj/effect/projectile/muzzle/stun
tracer_type = /obj/effect/projectile/tracer/stun
impact_type = /obj/effect/projectile/impact/stun
/obj/item/projectile/beam/stun/weak
name = "weak stun beam"
icon_state = "stun"
agony = 25
/obj/item/projectile/beam/stun/med
name = "stun beam"
icon_state = "stun"
agony = 30
/obj/item/projectile/beam/stun/disabler
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone)
. = ..(target, blocked, def_zone)
if(. && istype(target, /mob/living/silicon/robot) && prob(agony))
var/mob/living/silicon/robot/R = target
var/drainamt = agony * (rand(5, 15) / 10)
R.drain_power(0, 0, drainamt)
if(istype(firer, /mob/living/silicon/robot)) // Mischevious sappers, the swarm drones are.
var/mob/living/silicon/robot/A = firer
if(A.cell)
A.cell.give(drainamt * 2)
/obj/item/projectile/beam/shock
name = "shock beam"
icon_state = "lightning"
damage_type = ELECTROCUTE
muzzle_type = /obj/effect/projectile/muzzle/lightning
tracer_type = /obj/effect/projectile/tracer/lightning
impact_type = /obj/effect/projectile/impact/lightning
damage = 30
agony = 15
eyeblur = 2
hitsound = 'sound/weapons/zapbang.ogg'
/obj/item/projectile/beam/precursor //CHOMPedit added Precursor beam
name = "precursor beam"
icon_state = "alien beam"
fire_sound = 'sound/weapons/MediumLaser.ogg'
light_color = "#FF0099"
muzzle_type = /obj/effect/projectile/muzzle/precursor
tracer_type = /obj/effect/projectile/tracer/precursor
impact_type = /obj/effect/projectile/impact/precursor
damage = 48
armor_penetration = 10
/obj/item/projectile/beam
name = "laser"
icon_state = "laser"
fire_sound = 'sound/weapons/Laser.ogg'
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
damage = 40
damage_type = BURN
check_armour = "laser"
eyeblur = 4
var/frequency = 1
hitscan = 1
embed_chance = 0
invisibility = 99 //beam projectiles are invisible as they are rendered by the effect engine
light_range = 2
light_power = 0.5
light_color = "#FF0D00"
hitsound = 'sound/weapons/sear.ogg'
hitsound_wall = 'sound/weapons/effects/searwall.ogg'
muzzle_type = /obj/effect/projectile/muzzle/laser
tracer_type = /obj/effect/projectile/tracer/laser
impact_type = /obj/effect/projectile/impact/laser
/obj/item/projectile/beam/practice
name = "laser"
icon_state = "laser"
damage = 0
damage_type = BURN
check_armour = "laser"
eyeblur = 2
/obj/item/projectile/beam/weaklaser
name = "weak laser"
icon_state = "laser"
damage = 15
/obj/item/projectile/beam/smalllaser
damage = 25
/obj/item/projectile/beam/burstlaser
damage = 30
armor_penetration = 10
/obj/item/projectile/beam/midlaser
damage = 40
armor_penetration = 10
/obj/item/projectile/beam/heavylaser
name = "heavy laser"
icon_state = "heavylaser"
fire_sound = 'sound/weapons/lasercannonfire.ogg'
damage = 60
armor_penetration = 30
light_range = 3
light_power = 1
light_color = "#FF0D00"
muzzle_type = /obj/effect/projectile/muzzle/laser_heavy
tracer_type = /obj/effect/projectile/tracer/laser_heavy
impact_type = /obj/effect/projectile/impact/laser_heavy
/obj/item/projectile/beam/heavylaser/fakeemitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
light_color = "#00CC33"
excavation_amount = 140 // 2 shots to dig a standard rock turf. Superior due to being a mounted tool beam, to make it actually viable.
muzzle_type = /obj/effect/projectile/muzzle/emitter
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
/obj/item/projectile/beam/heavylaser/cannon
damage = 80
armor_penetration = 50
light_color = "#FF0D00"
/obj/item/projectile/beam/xray
name = "xray beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 25
armor_penetration = 50
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/gamma
name = "gamma beam"
icon_state = "xray"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 12 //CHOMPedit
armor_penetration = 90
irradiate = 20
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/cyan
name = "cyan beam"
icon_state = "cyan"
fire_sound = 'sound/weapons/eluger.ogg'
damage = 40
light_color = "#00C6FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
fire_sound='sound/weapons/gauss_shoot.ogg' // Needs a more meaty sound than what pulse.ogg currently is; this will be a placeholder for now.
damage = 100 //Badmin toy, don't care
armor_penetration = 100
light_color = "#0066FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_pulse
tracer_type = /obj/effect/projectile/tracer/laser_pulse
impact_type = /obj/effect/projectile/impact/laser_pulse
/obj/item/projectile/beam/pulse/on_hit(var/atom/target, var/blocked = 0)
if(isturf(target))
target.ex_act(2)
..()
/obj/item/projectile/beam/emitter
name = "emitter beam"
icon_state = "emitter"
fire_sound = 'sound/weapons/emitter.ogg'
damage = 0 // The actual damage is computed in /code/modules/power/singularity/emitter.dm
light_color = "#00CC33"
excavation_amount = 70 // 3 shots to mine a turf
muzzle_type = /obj/effect/projectile/muzzle/emitter
tracer_type = /obj/effect/projectile/tracer/emitter
impact_type = /obj/effect/projectile/impact/emitter
/obj/item/projectile/beam/lasertag
name = "lasertag beam"
damage = 0
eyeblur = 0
no_attack_log = 1
damage_type = BURN
check_armour = "laser"
combustion = FALSE
/obj/item/projectile/beam/lasertag/blue
icon_state = "bluelaser"
light_color = "#0066FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
tracer_type = /obj/effect/projectile/tracer/laser_blue
impact_type = /obj/effect/projectile/impact/laser_blue
/obj/item/projectile/beam/lasertag/blue/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/redtag))
M.Weaken(5)
return 1
/obj/item/projectile/beam/lasertag/red
icon_state = "laser"
light_color = "#FF0D00"
/obj/item/projectile/beam/lasertag/red/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if(istype(M.wear_suit, /obj/item/clothing/suit/bluetag))
M.Weaken(5)
return 1
/obj/item/projectile/beam/lasertag/omni//A laser tag bolt that stuns EVERYONE
icon_state = "omnilaser"
light_color = "#00C6FF"
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/lasertag/omni/on_hit(var/atom/target, var/blocked = 0)
if(ishuman(target))
var/mob/living/carbon/human/M = target
if((istype(M.wear_suit, /obj/item/clothing/suit/bluetag))||(istype(M.wear_suit, /obj/item/clothing/suit/redtag)))
M.Weaken(5)
return 1
/obj/item/projectile/beam/sniper
name = "sniper beam"
icon_state = "xray"
fire_sound = 'sound/weapons/gauss_shoot.ogg'
damage = 50
armor_penetration = 10
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/muzzle/xray
tracer_type = /obj/effect/projectile/tracer/xray
impact_type = /obj/effect/projectile/impact/xray
/obj/item/projectile/beam/stun
name = "stun beam"
icon_state = "stun"
fire_sound = 'sound/weapons/Taser.ogg'
nodamage = 1
taser_effect = 1
agony = 40
damage_type = HALLOSS
light_color = "#FFFFFF"
hitsound = 'sound/weapons/zapbang.ogg'
combustion = FALSE
muzzle_type = /obj/effect/projectile/muzzle/stun
tracer_type = /obj/effect/projectile/tracer/stun
impact_type = /obj/effect/projectile/impact/stun
/obj/item/projectile/beam/stun/weak
name = "weak stun beam"
icon_state = "stun"
agony = 25
/obj/item/projectile/beam/stun/med
name = "stun beam"
icon_state = "stun"
agony = 30
/obj/item/projectile/beam/stun/disabler
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
tracer_type = /obj/effect/projectile/tracer/laser_omni
impact_type = /obj/effect/projectile/impact/laser_omni
/obj/item/projectile/beam/stun/disabler/on_hit(atom/target, blocked = 0, def_zone)
. = ..(target, blocked, def_zone)
if(. && istype(target, /mob/living/silicon/robot) && prob(agony))
var/mob/living/silicon/robot/R = target
var/drainamt = agony * (rand(5, 15) / 10)
R.drain_power(0, 0, drainamt)
if(istype(firer, /mob/living/silicon/robot)) // Mischevious sappers, the swarm drones are.
var/mob/living/silicon/robot/A = firer
if(A.cell)
A.cell.give(drainamt * 2)
/obj/item/projectile/beam/shock
name = "shock beam"
icon_state = "lightning"
damage_type = ELECTROCUTE
muzzle_type = /obj/effect/projectile/muzzle/lightning
tracer_type = /obj/effect/projectile/tracer/lightning
impact_type = /obj/effect/projectile/impact/lightning
damage = 30
agony = 15
eyeblur = 2
hitsound = 'sound/weapons/zapbang.ogg'
/obj/item/projectile/beam/precursor //CHOMPedit added Precursor beam
name = "precursor beam"
icon_state = "alien beam"
fire_sound = 'sound/weapons/MediumLaser.ogg'
light_color = "#FF0099"
muzzle_type = /obj/effect/projectile/muzzle/precursor
tracer_type = /obj/effect/projectile/tracer/precursor
impact_type = /obj/effect/projectile/impact/precursor
damage = 48
armor_penetration = 10
/obj/item/projectile/beam/shock/weak
damage = 5
agony = 10

View File

@@ -2,12 +2,21 @@
/obj/item/projectile/bullet
var/diam = 9 //mm
var/energy_add = 0
var/energy_add = 0 //See note below. Adds velocity, basically.
var/velocity = 500 //Meters per second
var/hollow_point = FALSE
var/hollow_point = FALSE //Determines if the round leaves additional shrapnel in the wound
var/grains = 115 //I hope the unit is obvious
var/energy //Joules
var/old_bullet_act = FALSE
var/old_bullet_act = FALSE //This makes it so that the game ignores the new ballistic stuff and uses old damage system for the bullet.
/*energy_add
Pretty much, when a bullet is a fired from a gun, it replaces the default muzzle velocity of the round with it's own muzzle velocity,
so if you want a certain round to have extra velocity, you have the option to add energy. For example,
if I have an AP round that shoots 650 m/s and the base round only shoots 600 m/s, I need to take the weight of the round in grains (say 60),
convert it to kilograms (divide by 15432 or some wacky number like that, just google grains to kilograms), then multiply the weight in kilograms by
the velocity squared for both the 650, and 600, and subtract the result for 650 from the result for 600, then that number is what I would put there.
If you want to be lazy, or you can't find more specific numbers for the AP/HP versions of a round, then just don't bother with changing any of that and
only use the hollow_point and armor_penetration values.*/
/obj/item/projectile/bullet/launch_projectile(atom/target, target_zone, mob/user, params, angle_override, forced_spread = 0)
energy = 0.5 * velocity * velocity * (grains / GRAINS_PER_KG) + energy_add
@@ -154,6 +163,22 @@
velocity = 343
armor_penetration = -50
hollow_point = TRUE
/obj/item/projectile/bullet/a22lr
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
grains = 40
diam = 5.7
velocity = 370
/obj/item/projectile/bullet/a22lr/ap
grains = 31
velocity = 530
armor_penetration = 15
/obj/item/projectile/bullet/a22lr/hp
grains = 38
velocity = 380
hollow_point = TRUE
//Shotgun projectiles
@@ -176,19 +201,13 @@
submunition_spread_max = 67.5
submunitions = list(/obj/item/projectile/bullet/shotgun/buckshot = 8)
/obj/item/ammo_casing/a12g/pellet
name = "shotgun buckshot shell"
desc = "A 12 gauge buckshot shell."
icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/shotgun/buckshot/shell
//Rifle projectiles
/obj/item/projectile/bullet/rifle
armor_penetration = 0 //No. Rifle rounds don't get extra AP by default, their nature already makes them more armor penetrating.
/obj/item/projectile/bullet/rifle/a762 //7.62x51 NATO
fire_sound = 'sound/weapons/ballistics/a762.ogg'
diam = 7.62
diam = 7.82
grains = 147
velocity = 850
@@ -204,9 +223,25 @@
armor_penetration = -50
hollow_point = TRUE
/obj/item/projectile/bullet/rifle/a762x39 //7.62x39 Soviet
fire_sound = 'sound/weapons/ballistics/a762.ogg'
diam = 7.85
grains = 122
velocity = 730
/obj/item/projectile/bullet/rifle/a762x39/ap
grains = 123
velocity = 740
energy_add = 117.16
armor_penetration = 50
/obj/item/projectile/bullet/rifle/a762x39/hp
hollow_point = TRUE
armor_penetration = -50
/obj/item/projectile/bullet/rifle/a545
fire_sound = 'sound/weapons/ballistics/a545.ogg'
diam = 5.45
diam = 5.6
grains = 53
velocity = 880
@@ -219,8 +254,24 @@
hollow_point = TRUE
armor_penetration = -50
/obj/item/projectile/bullet/rifle/a556 //5.56x45mm NATO
diam = 5.7
grains = 62
velocity = 961
/obj/item/projectile/bullet/rifle/a556/ap
grains = 52
velocity = 1030
energy_add = 462.92
armor_penetration = 50
/obj/item/projectile/bullet/rifle/a556/hp
hollow_point = TRUE
armor_penetration = -50
/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm
fire_sound = 'sound/weapons/ballistics/a145.ogg'
diam = 14.88
grains = 921
velocity = 1000
@@ -240,6 +291,22 @@
grains = 310
velocity = 365
/obj/item/projectile/bullet/rifle/a9x39 //We also have actual 9x39mm
fire_sound = 'sound/weapons/ballistics/a545.ogg'
diam = 9.25
grains = 259
velocity = 280
/obj/item/projectile/bullet/rifle/a9x39/ap
grains = 267
armor_penetration = 25
/obj/item/projectile/bullet/rifle/a10x24
fire_sound = 'sound/weapons/ballistics/a762.ogg'
grains = 210
diam = 10.2
velocity = 840
/obj/item/projectile/bullet/rifle/a762/lmg //This is actually 7.92x57 ffs
diam = 7.92
grains = 181
@@ -247,7 +314,7 @@
/obj/item/projectile/bullet/rifle/a762x54
fire_sound = 'sound/weapons/ballistics/a762x54.ogg'
diam = 7.62
diam = 7.92
grains = 151
velocity = 830
hitscan = 1
@@ -255,160 +322,7 @@
/obj/item/projectile/bullet/rifle/a762x54/ap
armor_penetration = 50
//Time to replace projectiles with their proper counterparts now that we have added them.
/obj/item/ammo_casing/a10mm
projectile_type = /obj/item/projectile/bullet/a10mm
/obj/item/ammo_casing/a38
projectile_type = /obj/item/projectile/bullet/a38
/obj/item/ammo_casing/a380
projectile_type = /obj/item/projectile/bullet/a380
/obj/item/ammo_casing/a357
projectile_type = /obj/item/projectile/bullet/a357
/obj/item/ammo_casing/a57
desc = "A standard 5.7x28mm round"
caliber = "5.7x28mm"
projectile_type = /obj/item/projectile/bullet/a57
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a57/ap
desc = "An armor piercing 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/a57/ap
/obj/item/ammo_casing/a57/hp
desc = "A hollow point 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/a57/ap
/obj/item/ammo_casing/a57/rubber
desc = "A rubber 5.7x28mm round"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_magazine/m9mmp90 //congratulations you are now being converted 5.7x28mm, a.k.a the round the p90 actually uses.
name = "large capacity top mounted magazine (5.7x28mm armor-piercing)" //Ugh, we'll leave it AP I guess
ammo_type = /obj/item/ammo_casing/a57/ap
caliber = "5.7x28mm"
/obj/item/ammo_casing/a762x54
desc = "A standard 7.62x54mmR round"
caliber = "7.62x54mmR"
projectile_type = /obj/item/projectile/bullet/rifle/a762x54
matter = list(DEFAULT_WALL_MATERIAL = 160)
/obj/item/ammo_casing/a762x54/ap
desc = "An armor piercing 7.62x54mmR round"
projectile_type = /obj/item/projectile/bullet/rifle/a762x54/ap
/obj/item/ammo_magazine/m762svd //You are now being converted to 7.62x54mmR :3
name = "\improper SVD magazine (7.62x54mmR)"
caliber = "7.62x54mmR"
ammo_type = /obj/item/ammo_casing/a762x54
/obj/item/ammo_magazine/m762svd/ap
name = "\improper SVD magazine (7.62x54mmR armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762x54/ap
//New magazines
/obj/item/ammo_magazine/a57
name = "five-seven magazine(5.7x28mm standard)"
icon_state = "fiveseven"
max_ammo = 20
mag_type = MAGAZINE
caliber= "5.7x28mm"
matter = list(DEFAULT_WALL_MATERIAL = 800)
multiple_sprites = 0
ammo_type = /obj/item/ammo_casing/a57
/obj/item/ammo_magazine/a57/ap
name = "five-seven magazine(5.7x28mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a57/ap
/obj/item/ammo_magazine/a57/hp
name = "five-seven magazine(5.7x28mm hollow-point)"
ammo_type = /obj/item/ammo_casing/a57/hp
/obj/item/ammo_magazine/a57/rubber
name = "five-seven magazine(5.7x28mm rubber)"
ammo_type = /obj/item/ammo_casing/a57/rubber
/obj/item/ammo_magazine/mp5mag
name = "mp5 magazine(9x19mm standard)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "smg"
max_ammo = 30
mag_type = MAGAZINE
caliber = "9mm"
matter = list(DEFAULT_WALL_MATERIAL = 800)
multiple_sprites = 1
ammo_type = /obj/item/ammo_casing/a9mm
/obj/item/ammo_magazine/mp5mag/ap
name = "mp5 magazine(9x19mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
/obj/item/ammo_magazine/mp5mag/hp
name = "mp5 magazine(9x19mm hollow-point)"
ammo_type = /obj/item/ammo_casing/a9mm/ap
/obj/item/ammo_magazine/mp5mag/rubber
name = "mp5 magazine(9x19mm rubber)"
ammo_type = /obj/item/ammo_casing/a9mm/rubber
//Add some autolathe entries for the new converted mags
/datum/category_item/autolathe/arms/smg_mp5
name = "mp5 magazine(9x19mm standard)"
path = /obj/item/ammo_magazine/mp5mag
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_ap
name = "mp5 magazine(9x19mm armor-piercing)"
path = /obj/item/ammo_magazine/mp5mag/ap
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_hp
name = "mp5 magazine(9x19mm hollow-point)"
path = /obj/item/ammo_magazine/mp5mag/hp
hidden = 1
/datum/category_item/autolathe/arms/smg_mp5_rubber
name = "mp5 magazine(9x19mm rubber)"
path = /obj/item/ammo_magazine/mp5mag/rubber
/datum/category_item/autolathe/arms/pistol_fiveseven
name = "five-seven magazine(5.7x28mm standard)"
path = /obj/item/ammo_magazine/a57
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_ap
name = "five-seven magazine(5.7x28mm armor-piercing)"
path = /obj/item/ammo_magazine/a57/ap
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_hp
name = "five-seven magazine(5.7x28mm hollow-point)"
path = /obj/item/ammo_magazine/a57/hp
hidden = 1
/datum/category_item/autolathe/arms/pistol_fiveseven_rubber
name = "five-seven magazine(5.7x28mm rubber)"
path = /obj/item/ammo_magazine/a57/rubber
/datum/category_item/autolathe/arms/smg_p90
name = "large capacity top mounted magazine (5.7x28mm armor-piercing)"
path = /obj/item/ammo_magazine/m9mmp90
hidden = 1
/datum/category_item/autolathe/arms/svd_762
name = "SVD magazine (7.62x54mmR)"
path = /obj/item/ammo_magazine/m762svd
hidden = 1
/datum/category_item/autolathe/arms/svd_762_ap
name = "SVD magazine (7.62x54mmR armor-piercing)"
path = /obj/item/ammo_magazine/m762svd/ap
hidden = 1
//NOTE: Ammo casings and magazines used to be in this part of the file. They have been moved to respective files in the projectiles/ammunition folder.
//Various "We're not dealing with this shit because of how bad it is" (Some of these may be implemented into the new system with later updates)
/obj/item/projectile/bullet/magnetic
@@ -451,4 +365,4 @@
old_bullet_act = TRUE
/obj/item/projectile/bullet/gyro
old_bullet_act = TRUE
old_bullet_act = TRUE