mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-24 13:47:33 +01:00
New bullet types, projectile rewrite
* Refactors projectile Bump() * Converts projectile_type var strings to paths * Reorganizes bullet projectile paths * Made a pass through all the bullet_act() definitions. Mainly ensured that damage_type is checked when dealing damage to certain objects. Removed stupid /turf bullet_act() override, replaced with on_hit() overrides on the relevant projectiles. * Adds shotgun pellets projectile. Adds Raptor's shotgun slug sprite. * Gives stunshots more of their own identity, refluffs them as taser cartridges for shotguns. They still aren't obtainable anywhere unless spawned. * Makes projectiles pass through girders and cultgirders with a certain probability, unless the girder itself was clicked. * Projectiles are also able to pass through grilles. Low damage projectiles have a chance to be blocked by grilles. High damage projectiles have a chance to have some damage absorbed by the grille. * Makes projectiles for blanks invisible. * Adds flash bullet types * Adds support for 'penetrating' projectiles * Swaps .45 and 9mm projectile types. .45s hit slightly harder, 9mils have more ammo capacity.
This commit is contained in:
@@ -73,7 +73,7 @@
|
||||
recoil = 1
|
||||
|
||||
force = 10
|
||||
projectile_type = "/obj/item/projectile/energy/sonic"
|
||||
projectile_type = /obj/item/projectile/energy/sonic
|
||||
cell_type = "/obj/item/weapon/cell/super"
|
||||
fire_delay = 40
|
||||
fire_sound = 'sound/effects/basscannon.ogg'
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
var/obj/item/weapon/cell/power_supply //What type of power cell this uses
|
||||
var/charge_cost = 100 //How much energy is needed to fire.
|
||||
var/cell_type = "/obj/item/weapon/cell"
|
||||
var/projectile_type = "/obj/item/projectile/beam/practice"
|
||||
var/projectile_type = /obj/item/projectile/beam/practice
|
||||
var/modifystate
|
||||
|
||||
emp_act(severity)
|
||||
@@ -30,7 +30,7 @@
|
||||
if(in_chamber) return 1
|
||||
if(!power_supply) return 0
|
||||
if(!power_supply.use(charge_cost)) return 0
|
||||
if(!projectile_type) return 0
|
||||
if(!ispath(projectile_type)) return 0
|
||||
in_chamber = new projectile_type(src)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
|
||||
charge_cost = 100 //How much energy is needed to fire.
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
origin_tech = "combat=3;magnets=2"
|
||||
modifystate = "energystun"
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
charge_cost = 100
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
user << "\red [src.name] is now set to kill."
|
||||
projectile_type = "/obj/item/projectile/beam"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
modifystate = "energykill"
|
||||
if(1)
|
||||
mode = 0
|
||||
charge_cost = 100
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
user << "\red [src.name] is now set to stun."
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
modifystate = "energystun"
|
||||
update_icon()
|
||||
if(user.l_hand == src)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
force = 10
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
charge_cost = 200
|
||||
projectile_type = "/obj/item/projectile/beam/pulse"
|
||||
projectile_type = /obj/item/projectile/beam/pulse
|
||||
cell_type = "/obj/item/weapon/cell/super"
|
||||
var/mode = 2
|
||||
fire_delay = 25
|
||||
@@ -18,19 +18,19 @@
|
||||
charge_cost = 100
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
user << "\red [src.name] is now set to stun."
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
if(0)
|
||||
mode = 1
|
||||
charge_cost = 100
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
user << "\red [src.name] is now set to kill."
|
||||
projectile_type = "/obj/item/projectile/beam"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
if(1)
|
||||
mode = 2
|
||||
charge_cost = 200
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
user << "\red [src.name] is now set to DESTROY."
|
||||
projectile_type = "/obj/item/projectile/beam/pulse"
|
||||
projectile_type = /obj/item/projectile/beam/pulse
|
||||
return
|
||||
|
||||
isHandgun()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
charge_cost = 100
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
cell_type = "/obj/item/weapon/cell/crap"
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/cyborg
|
||||
@@ -47,7 +47,7 @@
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
origin_tech = "combat=3;materials=3;powerstorage=2"
|
||||
charge_cost = 125
|
||||
projectile_type = "/obj/item/projectile/beam/stun"
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
cell_type = "/obj/item/weapon/cell"
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
origin_tech = "combat=2;magnets=2;syndicate=5"
|
||||
silenced = 1
|
||||
fire_sound = 'sound/weapons/Genhit.ogg'
|
||||
projectile_type = "/obj/item/projectile/energy/bolt"
|
||||
projectile_type = /obj/item/projectile/energy/bolt
|
||||
cell_type = "/obj/item/weapon/cell/crap"
|
||||
var/charge_tick = 0
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/ninja
|
||||
name = "energy dart thrower"
|
||||
projectile_type = "/obj/item/projectile/energy/dart"
|
||||
projectile_type = /obj/item/projectile/energy/dart
|
||||
|
||||
/obj/item/weapon/gun/energy/crossbow/largecrossbow
|
||||
name = "Energy Crossbow"
|
||||
@@ -99,4 +99,4 @@
|
||||
w_class = 4.0
|
||||
force = 10
|
||||
matter = list("metal" = 200000)
|
||||
projectile_type = "/obj/item/projectile/energy/bolt/large"
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile
|
||||
name = "revolver"
|
||||
desc = "A classic revolver. Uses 357 ammo"
|
||||
desc = "A classic revolver. Uses .357 ammo"
|
||||
icon_state = "revolver"
|
||||
caliber = "357"
|
||||
origin_tech = "combat=2;materials=2"
|
||||
@@ -16,12 +16,14 @@
|
||||
var/max_shells = 7
|
||||
var/load_method = SPEEDLOADER //0 = Single shells or quick loader, 1 = box, 2 = magazine
|
||||
var/obj/item/ammo_magazine/empty_mag = null
|
||||
|
||||
var/mag_type = null
|
||||
|
||||
/obj/item/weapon/gun/projectile/New()
|
||||
..()
|
||||
for(var/i = 1, i <= max_shells, i++)
|
||||
loaded += new ammo_type(src)
|
||||
if(load_method == MAGAZINE)
|
||||
empty_mag = new mag_type(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A lightweight, fast firing gun. Uses 9mm rounds."
|
||||
icon_state = "saber" //ugly
|
||||
w_class = 3.0
|
||||
max_shells = 18
|
||||
max_shells = 22
|
||||
caliber = "9mm"
|
||||
origin_tech = "combat=4;materials=2"
|
||||
ammo_type = "/obj/item/ammo_casing/c9mm"
|
||||
@@ -14,6 +14,9 @@
|
||||
isHandgun()
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/test
|
||||
name = "test gun"
|
||||
ammo_type = "/obj/item/ammo_casing/a145"
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/mini_uzi
|
||||
name = "\improper Uzi"
|
||||
@@ -40,15 +43,8 @@
|
||||
origin_tech = "combat=5;materials=2;syndicate=8"
|
||||
ammo_type = "/obj/item/ammo_casing/a12mm"
|
||||
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
load_method = 2
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
empty_mag = new /obj/item/ammo_magazine/a12mm/empty(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
load_method = MAGAZINE
|
||||
mag_type = /obj/item/ammo_magazine/a12mm/empty
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
..()
|
||||
@@ -80,7 +76,7 @@
|
||||
origin_tech = "combat=5;materials=1;syndicate=2"
|
||||
ammo_type = "/obj/item/ammo_casing/a762"
|
||||
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
|
||||
load_method = 2
|
||||
load_method = MAGAZINE
|
||||
var/cover_open = 0
|
||||
var/mag_inserted = 1
|
||||
|
||||
|
||||
@@ -19,13 +19,8 @@
|
||||
max_shells = 7
|
||||
caliber = ".50"
|
||||
ammo_type ="/obj/item/ammo_casing/a50"
|
||||
load_method = 2
|
||||
New()
|
||||
..()
|
||||
empty_mag = new /obj/item/ammo_magazine/a50/empty(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
load_method = MAGAZINE
|
||||
mag_type = /obj/item/ammo_magazine/a50/empty
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
..()
|
||||
@@ -59,13 +54,8 @@
|
||||
fire_sound = 'sound/effects/Explosion1.ogg'
|
||||
origin_tech = "combat=3"
|
||||
ammo_type = "/obj/item/ammo_casing/a75"
|
||||
load_method = 2
|
||||
New()
|
||||
..()
|
||||
empty_mag = new /obj/item/ammo_magazine/a75/empty(src)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
load_method = MAGAZINE
|
||||
mag_type = /obj/item/ammo_magazine/a75/empty
|
||||
|
||||
afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
..()
|
||||
@@ -89,17 +79,13 @@
|
||||
desc = "A small, easily concealable gun. Uses 9mm rounds."
|
||||
icon_state = "pistol"
|
||||
w_class = 2
|
||||
max_shells = 8
|
||||
max_shells = 10
|
||||
caliber = "9mm"
|
||||
silenced = 0
|
||||
origin_tech = "combat=2;materials=2;syndicate=2"
|
||||
ammo_type = "/obj/item/ammo_casing/c9mm"
|
||||
load_method = 2
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/New()
|
||||
..()
|
||||
empty_mag = new /obj/item/ammo_magazine/mc9mm/empty(src)
|
||||
return
|
||||
load_method = MAGAZINE
|
||||
mag_type = /obj/item/ammo_magazine/mc9mm/empty
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
..()
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
origin_tech = "combat=2;materials=2"
|
||||
ammo_type = "/obj/item/ammo_casing/c38"
|
||||
|
||||
|
||||
special_check(var/mob/living/carbon/human/M)
|
||||
if(caliber == initial(caliber))
|
||||
return 1
|
||||
@@ -77,12 +76,8 @@
|
||||
max_shells = 7
|
||||
caliber = ".45"
|
||||
ammo_type = "/obj/item/ammo_casing/c45r"
|
||||
load_method = 2
|
||||
|
||||
/obj/item/weapon/gun/projectile/detective/semiauto/New()
|
||||
..()
|
||||
empty_mag = new /obj/item/ammo_magazine/c45r/empty(src)
|
||||
return
|
||||
load_method = MAGAZINE
|
||||
mag_type = /obj/item/ammo_magazine/c45r/empty
|
||||
|
||||
/obj/item/weapon/gun/projectile/detective/semiauto/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag)
|
||||
..()
|
||||
@@ -130,7 +125,7 @@
|
||||
var/num_loaded = 0
|
||||
if(istype(A, /obj/item/ammo_magazine))
|
||||
|
||||
if((load_method == 2) && loaded.len) return
|
||||
if((load_method == MAGAZINE) && loaded.len) return
|
||||
var/obj/item/ammo_magazine/AM = A
|
||||
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
|
||||
if(getAmmo() > 0 || loaded.len >= max_shells)
|
||||
|
||||
Reference in New Issue
Block a user