mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
571 lines
14 KiB
Plaintext
571 lines
14 KiB
Plaintext
#define GRAINS_PER_KG 15432.4
|
||
|
||
/obj/item/projectile/bullet
|
||
var/diam = 9 //mm
|
||
var/energy_add = 0 //See note below. Adds velocity, basically.
|
||
var/velocity = 500 //Meters per second
|
||
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 = TRUE //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
|
||
sub_energy(0)
|
||
return ..()
|
||
|
||
/obj/item/projectile/bullet/proc/sub_velocity(var/amount)
|
||
velocity = max(0,velocity - amount)
|
||
energy = 0.5 * velocity * velocity * (grains / GRAINS_PER_KG)
|
||
|
||
/obj/item/projectile/bullet/proc/sub_energy(var/amount)
|
||
energy = max(0,energy - amount)
|
||
velocity = sqrt(2*energy/(grains / GRAINS_PER_KG))
|
||
|
||
//Pistol projectiles
|
||
/obj/item/projectile/bullet/pistol //9x19mm
|
||
fire_sound = 'sound/weapons/ballistics/a9mm.ogg'
|
||
diam = 9
|
||
grains = 108
|
||
velocity = 381
|
||
|
||
/obj/item/projectile/bullet/pistol/ap
|
||
grains = 66
|
||
energy_add = 893
|
||
velocity = 595
|
||
armor_penetration = 15
|
||
|
||
/obj/item/projectile/bullet/pistol/hp
|
||
grains = 131
|
||
velocity = 350
|
||
energy_add = -96.18
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
|
||
/obj/item/projectile/bullet/pistol/medium //.45
|
||
fire_sound = 'sound/weapons/ballistics/a45.ogg'
|
||
diam = 11.43
|
||
grains = 230
|
||
velocity = 295
|
||
|
||
/obj/item/projectile/bullet/pistol/medium/ap
|
||
grains = 173
|
||
energy_add = 374
|
||
velocity = 347
|
||
armor_penetration = 15
|
||
|
||
/obj/item/projectile/bullet/pistol/medium/hp
|
||
grains = 230
|
||
velocity = 286
|
||
armor_penetration = -10
|
||
|
||
/obj/item/projectile/bullet/pistol/strong //.357 and .44 are grouped because ftw //Time to fix that ffs, this is just .44 now.
|
||
diam = 10.9
|
||
grains = 240
|
||
velocity = 360
|
||
|
||
/obj/item/projectile/bullet/a57
|
||
fire_sound = 'modular_chomp/sound/weapons/ballistics/smg_heavy.ogg'
|
||
diam = 5.7
|
||
grains = 31
|
||
velocity = 716
|
||
damage = 10
|
||
armor_penetration = 15 //Unfortunately my penetration code doesn't recognize the glory of 5.7x28 FN, so we must show it the wae.
|
||
hud_state = "smg_light"
|
||
|
||
/obj/item/projectile/bullet/a57/ap
|
||
grains = 23
|
||
energy_add = 312.75
|
||
velocity = 850
|
||
damage = 15
|
||
armor_penetration = 25 //Also, no, this isn't as high as it looks because of the formulas I was using. This would have around a 35% chance of piercing combat armor(50 bullet armor)
|
||
hud_state = "smg_ap"
|
||
|
||
/obj/item/projectile/bullet/a57/hp
|
||
hollow_point = TRUE
|
||
damage = 15
|
||
armor_penetration = -10
|
||
hud_state = "smg"
|
||
|
||
/obj/item/projectile/bullet/a357
|
||
fire_sound = 'sound/weapons/gunshot4.ogg'
|
||
diam = 9.1
|
||
grains = 125
|
||
velocity = 440
|
||
damage = 20
|
||
hud_state = "revolver"
|
||
|
||
/obj/item/projectile/bullet/a357/ap
|
||
energy_add = 298.07
|
||
velocity = 480
|
||
armor_penetration = 15
|
||
hud_state = "revolver_heavy"
|
||
|
||
/obj/item/projectile/bullet/a357/hp
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
hud_state = "revolver_slim"
|
||
|
||
/obj/item/projectile/bullet/a38
|
||
fire_sound = 'sound/weapons/gunshot2.ogg'
|
||
diam = 9.1
|
||
grains = 147
|
||
velocity = 270
|
||
hud_state = "revolver_small"
|
||
|
||
/obj/item/projectile/bullet/a38/ap
|
||
grains = 125
|
||
energy_add = 138
|
||
velocity = 300
|
||
armor_penetration = 15
|
||
hud_state = "pistol_lightap"
|
||
|
||
/obj/item/projectile/bullet/a38/hp
|
||
grains = 158
|
||
energy_add = 175.07
|
||
velocity = 297
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
hud_state = "pistol_hollow"
|
||
|
||
/obj/item/projectile/bullet/a762x25
|
||
fire_sound = 'sound/weapons/gunshot2.ogg'
|
||
diam = 7.92
|
||
grains = 85
|
||
velocity = 469
|
||
hud_state = "pistol_light"
|
||
|
||
/obj/item/projectile/bullet/a9x18
|
||
fire_sound = 'sound/weapons/gunshot2.ogg'
|
||
diam = 9.27
|
||
grains = 95
|
||
velocity = 319
|
||
hud_state = "pistol"
|
||
|
||
/obj/item/projectile/bullet/a9x18/rubber
|
||
armor_penetration = -10
|
||
grains = 102
|
||
velocity = 301
|
||
damage = 10
|
||
agony = 40
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/a10mm
|
||
fire_sound = 'sound/weapons/gunshot2.ogg'
|
||
diam = 10.17
|
||
grains = 180
|
||
velocity = 400
|
||
hud_state = "pistol"
|
||
damage = 20
|
||
|
||
/obj/item/projectile/bullet/a10mm/ap
|
||
grains = 200
|
||
energy_add = 435
|
||
velocity = 440
|
||
armor_penetration = 15
|
||
hud_state = "pistol_ap"
|
||
|
||
/obj/item/projectile/bullet/a10mm/hp
|
||
grains = 135
|
||
energy_add = 700.7
|
||
velocity = 490
|
||
armor_penetration = -10
|
||
hollow_point = TRUE
|
||
hud_state = "pistol_hollow"
|
||
|
||
/obj/item/projectile/bullet/a10mm/rubber
|
||
armor_penetration = -10
|
||
grains = 142
|
||
velocity = 301
|
||
damage = 10
|
||
agony = 50
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/a380
|
||
fire_sound = 'sound/weapons/gunshot2.ogg'
|
||
diam = 9
|
||
grains= 95
|
||
velocity = 300
|
||
hud_state = "pistol_light"
|
||
|
||
/obj/item/projectile/bullet/a380/ap
|
||
grains = 45
|
||
energy_add = 648.74
|
||
velocity = 559
|
||
armor_penetration = 15
|
||
hud_state = "pistol_lightap"
|
||
|
||
/obj/item/projectile/bullet/a380/hp
|
||
grains = 95
|
||
energy_add = 170
|
||
velocity = 343
|
||
armor_penetration = -10
|
||
hollow_point = TRUE
|
||
hud_state = "pistol_hollow"
|
||
|
||
/obj/item/projectile/bullet/a22lr
|
||
fire_sound = 'sound/weapons/gunshot_pathetic.ogg'
|
||
grains = 40
|
||
diam = 5.7
|
||
velocity = 370
|
||
hud_state = "pistol_light"
|
||
|
||
/obj/item/projectile/bullet/a22lr/ap
|
||
grains = 31
|
||
velocity = 530
|
||
armor_penetration = 15
|
||
hud_state = "pistol_ap"
|
||
|
||
/obj/item/projectile/bullet/a22lr/hp
|
||
grains = 38
|
||
velocity = 380
|
||
hollow_point = TRUE
|
||
armor_penetration = -5
|
||
hud_state = "pistol_hollow"
|
||
|
||
//Shotgun projectiles
|
||
|
||
/obj/item/projectile/bullet/shotgun //Slug
|
||
fire_sound = 'sound/weapons/ballistics/a12g.ogg'
|
||
grains = 657
|
||
velocity = 489
|
||
armor_penetration = -15 //Slugs needed a nerf. Will probably fix the stats for shotguns in general in future updates.
|
||
|
||
/obj/item/projectile/bullet/shotgun/buckshot //#00 Buckshot
|
||
damage = 13
|
||
name = "buckshot pellet"
|
||
diam = 8.38
|
||
grains = 53.8
|
||
velocity = 489
|
||
armor_penetration = 0
|
||
|
||
/obj/item/projectile/bullet/shotgun/buckshot/shell
|
||
use_submunitions = TRUE
|
||
submunition_spread_max = 67.5
|
||
submunitions = list(/obj/item/projectile/bullet/shotgun/buckshot = 8)
|
||
hud_state = "shotgun_buckshot"
|
||
|
||
//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.82
|
||
grains = 147
|
||
velocity = 850
|
||
|
||
/obj/item/projectile/bullet/rifle/a762/ap
|
||
grains = 150.5
|
||
velocity = 854.6
|
||
armor_penetration = 25
|
||
|
||
/obj/item/projectile/bullet/rifle/a762/hp
|
||
grains = 175
|
||
energy_add = -539.978
|
||
velocity = 792
|
||
armor_penetration = -10
|
||
hollow_point = TRUE
|
||
|
||
/obj/item/projectile/bullet/rifle/a762/rubber
|
||
armor_penetration = -10
|
||
grains = 142
|
||
velocity = 661
|
||
damage = 25 //this still hurts like a motherfucker
|
||
agony = 100
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x39 //7.62x39 Soviet
|
||
fire_sound = 'sound/weapons/ballistics/a762.ogg'
|
||
diam = 7.85
|
||
grains = 122
|
||
velocity = 730
|
||
hud_state = "rifle"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x39/ap
|
||
grains = 123
|
||
velocity = 740
|
||
energy_add = 117.16
|
||
armor_penetration = 25
|
||
hud_state = "rifle_ap"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x39/hp
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
hud_state = "hivelo_iff"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x39/rubber
|
||
armor_penetration = -10
|
||
grains = 142
|
||
velocity = 661
|
||
damage = 15 //this still hurts like a motherfucker
|
||
agony = 70
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a545
|
||
fire_sound = 'sound/weapons/ballistics/a545.ogg'
|
||
diam = 5.6
|
||
grains = 53
|
||
velocity = 880
|
||
|
||
/obj/item/projectile/bullet/rifle/a545/ap
|
||
grains = 57
|
||
velocity = 890
|
||
armor_penetration = 15
|
||
|
||
/obj/item/projectile/bullet/rifle/a545/rubber
|
||
armor_penetration = -10
|
||
grains = 82
|
||
velocity = 761
|
||
damage = 15
|
||
agony = 60
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a545/hp
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
|
||
/obj/item/projectile/bullet/rifle/a556 //5.56x45mm NATO
|
||
diam = 5.7
|
||
grains = 62
|
||
velocity = 961
|
||
hud_state = "rifle"
|
||
|
||
/obj/item/projectile/bullet/rifle/a556/ap
|
||
grains = 52
|
||
velocity = 1030
|
||
energy_add = 462.92
|
||
armor_penetration = 25
|
||
hud_state = "rifle_ap"
|
||
|
||
/obj/item/projectile/bullet/rifle/a556/hp
|
||
hollow_point = TRUE
|
||
armor_penetration = -10
|
||
hud_state = "hivelo_iff"
|
||
|
||
/obj/item/projectile/bullet/rifle/a556/rubber
|
||
armor_penetration = -10
|
||
grains = 82
|
||
velocity = 861
|
||
damage = 15
|
||
agony = 60
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a145 // 14.5×114mm
|
||
fire_sound = 'sound/weapons/ballistics/a145.ogg'
|
||
diam = 14.88
|
||
grains = 921
|
||
velocity = 1000
|
||
|
||
/obj/item/projectile/bullet/rifle/a145/highvel
|
||
grains = 700
|
||
energy_add = 9979
|
||
velocity = 1200
|
||
|
||
/obj/item/projectile/bullet/rifle/a44rifle
|
||
fire_sound = 'sound/weapons/ballistics/a44rifle.ogg'
|
||
diam = 10.9
|
||
grains = 240
|
||
velocity = 536.448
|
||
|
||
/obj/item/projectile/bullet/rifle/a95 //I hate you. There is no real world analog for 9.5x40mm, I will guestimate from the 9x39mm russian round and give it some bonus for future points or whatever
|
||
diam = 9.5
|
||
grains = 310
|
||
velocity = 365 //cadyn cope above, beware ^^
|
||
hud_state = "rifle"
|
||
|
||
//beware of cadyn cope above ^^ - Ocelot
|
||
|
||
/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
|
||
hud_state = "smartgun"
|
||
|
||
/obj/item/projectile/bullet/rifle/a9x39/ap
|
||
grains = 267
|
||
armor_penetration = 25
|
||
hud_state = "minigun"
|
||
|
||
/obj/item/projectile/bullet/rifle/a9x39/rubber
|
||
armor_penetration = -10
|
||
grains = 282
|
||
velocity = 161
|
||
damage = 20
|
||
agony = 70
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a10x24
|
||
grains = 210
|
||
diam = 10.2
|
||
velocity = 840
|
||
hud_state = "rifle"
|
||
|
||
/obj/item/projectile/bullet/rifle/a10x24/rubber
|
||
armor_penetration = -10
|
||
grains = 280
|
||
velocity = 400
|
||
damage = 20
|
||
agony = 80
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762/lmg //This is actually 7.92x57 ffs
|
||
diam = 7.92
|
||
grains = 181
|
||
velocity = 820
|
||
hud_state = "rifle"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x54
|
||
fire_sound = 'sound/weapons/ballistics/a762x54.ogg'
|
||
diam = 7.92
|
||
grains = 151
|
||
velocity = 830
|
||
hitscan = 1
|
||
hud_state = "sniper_crude"
|
||
|
||
/obj/item/projectile/bullet/rifle/a762x54/ap
|
||
armor_penetration = 35
|
||
hud_state = "sniper_supersonic"
|
||
|
||
/obj/item/projectile/bullet/rifle/a338
|
||
fire_sound = 'sound/weapons/ballistics/a762x54.ogg'
|
||
damage = 45
|
||
diam = 8.61
|
||
grains = 250
|
||
velocity = 921
|
||
hitscan = 1
|
||
penetrating = 2
|
||
hud_state = "sniper_crude"
|
||
|
||
/obj/item/projectile/bullet/rifle/a338/ap
|
||
armor_penetration = 50
|
||
hud_state = "sniper_supersonic"
|
||
|
||
/obj/item/projectile/bullet/rifle/a50bmg
|
||
fire_sound = 'sound/weapons/ballistics/a145.ogg'
|
||
damage = 65
|
||
diam = 13
|
||
grains = 750
|
||
velocity = 860
|
||
hitscan = 1
|
||
penetrating = 2
|
||
hud_state = "sniper_supersonic"
|
||
|
||
/obj/item/projectile/bullet/rifle/a50bmg/ap
|
||
armor_penetration = 50
|
||
|
||
/obj/item/projectile/bullet/rifle/a127x108 //Bigass fuckoff LMG round, bigger than 50 BMG
|
||
fire_sound = 'sound/weapons/serdy/strela.ogg'
|
||
damage = 60
|
||
diam = 13
|
||
grains = 855
|
||
velocity = 820
|
||
penetrating = 2
|
||
armor_penetration=30
|
||
hud_state = "sniper_fire"
|
||
|
||
/obj/item/projectile/bullet/rifle/a45lc //yee haw
|
||
diam = 11.43
|
||
grains = 250
|
||
velocity = 600
|
||
|
||
/obj/item/projectile/bullet/rifle/a45lc/rifle
|
||
grains = 267
|
||
velocity = 800
|
||
armor_penetration = 15
|
||
|
||
/obj/item/projectile/bullet/rifle/a45lc/rubber
|
||
armor_penetration = -10
|
||
grains = 282
|
||
velocity = 200
|
||
damage = 20
|
||
agony = 70
|
||
embed_chance = 0
|
||
sharp = FALSE
|
||
check_armour = "melee"
|
||
|
||
//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
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/pellet
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/pellet/shotgun/flak
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/rifle/a762/hunter
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/rifle/a545/hunter
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/suffocationbullet
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/cyanideround
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/burstbullet
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/incendiary
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/practice
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/blank
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/srmrocket
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/chemdart
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/gyro
|
||
old_bullet_act = TRUE
|
||
|
||
/obj/item/projectile/bullet/pistol/medium/ap/suppressor // adminspawn only
|
||
name = "suppressor bullet" // this guy is Important and also Hates You
|
||
fire_sound = 'sound/weapons/doompistol.ogg' // converted from .wavs extracted from doom 2
|
||
damage = 10 // high rof kinda fucked up lets be real
|
||
agony = 10 // brute easily heals, agony not so much
|
||
armor_penetration = 30 // reduces shield blockchance
|
||
accuracy = -20 // he do miss actually
|
||
speed = 0.4 // if the pathfinder gets a funny burst rifle, they deserve a rival
|
||
// that's 2x projectile speed btw
|
||
hud_state = "monkey"
|
||
|
||
/obj/item/projectile/bullet/pistol/medium/ap/suppressor/turbo // spicy boys
|
||
speed = 0.2 // this is 4x projectile speed
|
||
hud_state = "monkey" |