[MIRROR] Splits projectiles into different files for readability (#5800)
* Splits projectiles into different files for readability * Update tgstation.dme * I love how the dme cleans itself up
This commit is contained in:
committed by
Poojawa
parent
6a688f2588
commit
c72201e605
@@ -0,0 +1,105 @@
|
||||
/obj/item/ammo_casing
|
||||
name = "bullet casing"
|
||||
desc = "A bullet casing."
|
||||
icon = 'icons/obj/ammo.dmi'
|
||||
icon_state = "s-casing"
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = SLOT_BELT
|
||||
throwforce = 0
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
var/fire_sound = null //What sound should play when this ammo is fired
|
||||
var/caliber = null //Which kind of guns it can be loaded into
|
||||
var/projectile_type = null //The bullet type to create when New() is called
|
||||
var/obj/item/projectile/BB = null //The loaded bullet
|
||||
var/pellets = 1 //Pellets for spreadshot
|
||||
var/variance = 0 //Variance for inaccuracy fundamental to the casing
|
||||
var/randomspread = 0 //Randomspread for automatics
|
||||
var/delay = 0 //Delay for energy weapons
|
||||
var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown.
|
||||
var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect //the visual effect appearing when the ammo is fired.
|
||||
var/heavy_metal = TRUE
|
||||
|
||||
|
||||
/obj/item/ammo_casing/Initialize()
|
||||
. = ..()
|
||||
if(projectile_type)
|
||||
BB = new projectile_type(src)
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
setDir(pick(GLOB.alldirs))
|
||||
update_icon()
|
||||
|
||||
/obj/item/ammo_casing/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)][BB ? "-live" : ""]"
|
||||
desc = "[initial(desc)][BB ? "" : " This one is spent"]"
|
||||
|
||||
//proc to magically refill a casing with a new projectile
|
||||
/obj/item/ammo_casing/proc/newshot() //For energy weapons, syringe gun, shotgun shells and wands (!).
|
||||
if(!BB)
|
||||
BB = new projectile_type(src)
|
||||
|
||||
/obj/item/ammo_casing/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/ammo_box))
|
||||
var/obj/item/ammo_box/box = I
|
||||
if(isturf(loc))
|
||||
var/boolets = 0
|
||||
for(var/obj/item/ammo_casing/bullet in loc)
|
||||
if (box.stored_ammo.len >= box.max_ammo)
|
||||
break
|
||||
if (bullet.BB)
|
||||
if (box.give_round(bullet, 0))
|
||||
boolets++
|
||||
else
|
||||
continue
|
||||
if (boolets > 0)
|
||||
box.update_icon()
|
||||
to_chat(user, "<span class='notice'>You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You fail to collect anything!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/ammo_casing/throw_impact(atom/A)
|
||||
if(heavy_metal)
|
||||
bounce_away(FALSE, NONE)
|
||||
. = ..()
|
||||
|
||||
/obj/item/ammo_casing/proc/bounce_away(still_warm = FALSE, delay = 3)
|
||||
SpinAnimation(10, 1)
|
||||
update_icon()
|
||||
var/turf/T = get_turf(src)
|
||||
if(still_warm && T && (is_type_in_typecache(T, GLOB.bullet_bounce_away_sizzle)))
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/items/welder.ogg', 20, 1), delay)
|
||||
else if(T && (!is_type_in_typecache(T, GLOB.bullet_bounce_away_blacklist)))
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/weapons/bulletremove.ogg', 60, 1), delay)
|
||||
|
||||
GLOBAL_LIST_INIT(bullet_bounce_away_sizzle, typecacheof(list(
|
||||
/turf/closed/indestructible/rock/snow,
|
||||
/turf/closed/wall/ice,
|
||||
/turf/closed/wall/mineral/snow,
|
||||
/turf/open/floor/grass/snow,
|
||||
/turf/open/floor/holofloor/snow,
|
||||
/turf/open/floor/plating/asteroid/snow,
|
||||
/turf/open/floor/plating/ice,
|
||||
/turf/open/water)))
|
||||
|
||||
GLOBAL_LIST_INIT(bullet_bounce_away_blacklist, typecacheof(list(
|
||||
/turf/closed/indestructible/rock/snow,
|
||||
/turf/closed/indestructible/splashscreen,
|
||||
/turf/closed/wall/mineral/snow,
|
||||
/turf/open/chasm,
|
||||
/turf/open/floor/carpet,
|
||||
/turf/open/floor/grass,
|
||||
/turf/open/floor/holofloor/beach,
|
||||
/turf/open/floor/holofloor/carpet,
|
||||
/turf/open/floor/holofloor/grass,
|
||||
/turf/open/floor/holofloor/hyperspace,
|
||||
/turf/open/floor/holofloor/snow,
|
||||
/turf/open/floor/plating/asteroid/snow,
|
||||
/turf/open/floor/plating/beach,
|
||||
/turf/open/indestructible/reebe_void,
|
||||
/turf/open/lava,
|
||||
/turf/open/space,
|
||||
/turf/open/water,
|
||||
/turf/template_noop)))
|
||||
@@ -0,0 +1,62 @@
|
||||
/obj/item/ammo_casing/proc/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
|
||||
distro += variance
|
||||
for (var/i = max(1, pellets), i > 0, i--)
|
||||
var/targloc = get_turf(target)
|
||||
ready_proj(target, user, quiet, zone_override)
|
||||
if(distro) //We have to spread a pixel-precision bullet. throw_proj was called before so angles should exist by now...
|
||||
if(randomspread)
|
||||
spread = round((rand() - 0.5) * distro)
|
||||
else //Smart spread
|
||||
spread = round((i / pellets - 0.5) * distro)
|
||||
if(!throw_proj(target, targloc, user, params, spread))
|
||||
return 0
|
||||
if(i > 1)
|
||||
newshot()
|
||||
if(click_cooldown_override)
|
||||
user.changeNext_move(click_cooldown_override)
|
||||
else
|
||||
user.changeNext_move(CLICK_CD_RANGE)
|
||||
user.newtonian_move(get_dir(target, user))
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if (!BB)
|
||||
return
|
||||
BB.original = target
|
||||
BB.firer = user
|
||||
if (zone_override)
|
||||
BB.def_zone = zone_override
|
||||
else
|
||||
BB.def_zone = user.zone_selected
|
||||
BB.suppressed = quiet
|
||||
|
||||
if(reagents && BB.reagents)
|
||||
reagents.trans_to(BB, reagents.total_volume) //For chemical darts/bullets
|
||||
qdel(reagents)
|
||||
|
||||
/obj/item/ammo_casing/proc/throw_proj(atom/target, turf/targloc, mob/living/user, params, spread)
|
||||
var/turf/curloc = get_turf(user)
|
||||
if (!istype(targloc) || !istype(curloc) || !BB)
|
||||
return 0
|
||||
|
||||
var/firing_dir
|
||||
if(BB.firer)
|
||||
firing_dir = BB.firer.dir
|
||||
if(!BB.suppressed && firing_effect_type)
|
||||
new firing_effect_type(get_turf(src), firing_dir)
|
||||
|
||||
var/direct_target
|
||||
if(targloc == curloc)
|
||||
if(target) //if the target is right on our location we'll skip the travelling code in the proj's fire()
|
||||
direct_target = target
|
||||
if(!direct_target)
|
||||
BB.preparePixelProjectile(target, user, params, spread)
|
||||
BB.fire(null, direct_target)
|
||||
BB = null
|
||||
return 1
|
||||
|
||||
/obj/item/ammo_casing/proc/spread(turf/target, turf/current, distro)
|
||||
var/dx = abs(target.x - current.x)
|
||||
var/dy = abs(target.y - current.y)
|
||||
return locate(target.x + round(gaussian(0, distro) * (dy+2)/8, 1), target.y + round(gaussian(0, distro) * (dx+2)/8, 1), target.z)
|
||||
@@ -1,314 +0,0 @@
|
||||
// .357 (Syndie Revolver)
|
||||
|
||||
/obj/item/ammo_casing/a357
|
||||
name = ".357 bullet casing"
|
||||
desc = "A .357 bullet casing."
|
||||
caliber = "357"
|
||||
projectile_type = /obj/item/projectile/bullet/a357
|
||||
|
||||
// 7.62 (Nagant Rifle)
|
||||
|
||||
/obj/item/ammo_casing/a762
|
||||
name = "7.62 bullet casing"
|
||||
desc = "A 7.62 bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "a762"
|
||||
projectile_type = /obj/item/projectile/bullet/a762
|
||||
|
||||
/obj/item/ammo_casing/a762/enchanted
|
||||
projectile_type = /obj/item/projectile/bullet/a762_enchanted
|
||||
|
||||
// 7.62x38mmR (Nagant Revolver)
|
||||
|
||||
/obj/item/ammo_casing/n762
|
||||
name = "7.62x38mmR bullet casing"
|
||||
desc = "A 7.62x38mmR bullet casing."
|
||||
caliber = "n762"
|
||||
projectile_type = /obj/item/projectile/bullet/n762
|
||||
|
||||
// .50AE (Desert Eagle)
|
||||
|
||||
/obj/item/ammo_casing/a50AE
|
||||
name = ".50AE bullet casing"
|
||||
desc = "A .50AE bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/a50AE
|
||||
|
||||
// .38 (Detective's Gun)
|
||||
|
||||
/obj/item/ammo_casing/c38
|
||||
name = ".38 bullet casing"
|
||||
desc = "A .38 bullet casing."
|
||||
caliber = "38"
|
||||
projectile_type = /obj/item/projectile/bullet/c38
|
||||
|
||||
// 10mm (Stechkin)
|
||||
|
||||
/obj/item/ammo_casing/c10mm
|
||||
name = ".10mm bullet casing"
|
||||
desc = "A 10mm bullet casing."
|
||||
caliber = "10mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm
|
||||
|
||||
/obj/item/ammo_casing/c10mm/ap
|
||||
name = ".10mm armor-piercing bullet casing"
|
||||
desc = "A 10mm armor-piercing bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c10mm/hp
|
||||
name = ".10mm hollow-point bullet casing"
|
||||
desc = "A 10mm hollow-point bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm_hp
|
||||
|
||||
/obj/item/ammo_casing/c10mm/fire
|
||||
name = ".10mm incendiary bullet casing"
|
||||
desc = "A 10mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c10mm
|
||||
|
||||
// 9mm (Stechkin APS)
|
||||
|
||||
/obj/item/ammo_casing/c9mm
|
||||
name = "9mm bullet casing"
|
||||
desc = "A 9mm bullet casing."
|
||||
caliber = "9mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c9mm
|
||||
|
||||
/obj/item/ammo_casing/c9mm/ap
|
||||
name = "9mm armor-piercing bullet casing"
|
||||
desc = "A 9mm armor-piercing bullet casing."
|
||||
projectile_type =/obj/item/projectile/bullet/c9mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c9mm/inc
|
||||
name = "9mm incendiary bullet casing"
|
||||
desc = "A 9mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c9mm
|
||||
|
||||
// 4.6x30mm (Autorifles)
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm
|
||||
name = "4.6x30mm bullet casing"
|
||||
desc = "A 4.6x30mm bullet casing."
|
||||
caliber = "4.6x30mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c46x30mm
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm/ap
|
||||
name = "4.6x30mm armor-piercing bullet casing"
|
||||
desc = "A 4.6x30mm armor-piercing bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c46x30mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm/inc
|
||||
name = "4.6x30mm incendiary bullet casing"
|
||||
desc = "A 4.6x30mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c46x30mm
|
||||
|
||||
// .45 (M1911 + C20r)
|
||||
|
||||
/obj/item/ammo_casing/c45
|
||||
name = ".45 bullet casing"
|
||||
desc = "A .45 bullet casing."
|
||||
caliber = ".45"
|
||||
projectile_type = /obj/item/projectile/bullet/c45
|
||||
|
||||
/obj/item/ammo_casing/c45/nostamina
|
||||
projectile_type = /obj/item/projectile/bullet/c45_nostamina
|
||||
|
||||
// 5.56mm (M-90gl Carbine)
|
||||
|
||||
/obj/item/ammo_casing/a556
|
||||
name = "5.56mm bullet casing"
|
||||
desc = "A 5.56mm bullet casing."
|
||||
caliber = "a556"
|
||||
projectile_type = /obj/item/projectile/bullet/a556
|
||||
|
||||
// 40mm (Grenade Launcher)
|
||||
|
||||
/obj/item/ammo_casing/a40mm
|
||||
name = "40mm HE shell"
|
||||
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
|
||||
caliber = "40mm"
|
||||
icon_state = "40mmHE"
|
||||
projectile_type = /obj/item/projectile/bullet/a40mm
|
||||
|
||||
// .50 (Sniper)
|
||||
|
||||
/obj/item/ammo_casing/p50
|
||||
name = ".50 bullet casing"
|
||||
desc = "A .50 bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/p50
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/ammo_casing/p50/soporific
|
||||
name = ".50 soporific bullet casing"
|
||||
desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell."
|
||||
projectile_type = /obj/item/projectile/bullet/p50/soporific
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/item/ammo_casing/p50/penetrator
|
||||
name = ".50 penetrator round bullet casing"
|
||||
desc = "A .50 caliber penetrator round casing."
|
||||
projectile_type = /obj/item/projectile/bullet/p50/penetrator
|
||||
|
||||
// 1.95x129mm (SAW)
|
||||
|
||||
/obj/item/ammo_casing/mm195x129
|
||||
name = "1.95x129mm bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "mm195129"
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/ap
|
||||
name = "1.95x129mm armor-piercing bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed with a hardened-tipped core to help penetrate armored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129_ap
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/hollow
|
||||
name = "1.95x129mm hollow-point bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129_hp
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/incen
|
||||
name = "1.95x129mm incendiary bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/mm195x129
|
||||
|
||||
// Shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun
|
||||
name = "shotgun slug"
|
||||
desc = "A 12 gauge lead slug."
|
||||
icon_state = "blshell"
|
||||
caliber = "shotgun"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_slug
|
||||
materials = list(MAT_METAL=4000)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/beanbag
|
||||
name = "beanbag slug"
|
||||
desc = "A weak beanbag slug for riot control."
|
||||
icon_state = "bshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_beanbag
|
||||
materials = list(MAT_METAL=250)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/incendiary
|
||||
name = "incendiary slug"
|
||||
desc = "An incendiary-coated shotgun slug."
|
||||
icon_state = "ishell"
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dragonsbreath
|
||||
name = "dragonsbreath shell"
|
||||
desc = "A shotgun shell which fires a spread of incendiary pellets."
|
||||
icon_state = "ishell2"
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath
|
||||
pellets = 4
|
||||
variance = 35
|
||||
|
||||
/obj/item/ammo_casing/shotgun/stunslug
|
||||
name = "taser slug"
|
||||
desc = "A stunning taser slug."
|
||||
icon_state = "stunshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_stunslug
|
||||
materials = list(MAT_METAL=250)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/meteorslug
|
||||
name = "meteorslug shell"
|
||||
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
|
||||
icon_state = "mshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_meteorslug
|
||||
|
||||
/obj/item/ammo_casing/shotgun/pulseslug
|
||||
name = "pulse slug"
|
||||
desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
|
||||
energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
|
||||
would have difficulty with."
|
||||
icon_state = "pshell"
|
||||
projectile_type = /obj/item/projectile/beam/pulse/shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun/frag12
|
||||
name = "FRAG-12 slug"
|
||||
desc = "A high explosive breaching round for a 12 gauge shotgun."
|
||||
icon_state = "heshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_frag12
|
||||
|
||||
/obj/item/ammo_casing/shotgun/buckshot
|
||||
name = "buckshot shell"
|
||||
desc = "A 12 gauge buckshot shell."
|
||||
icon_state = "gshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_buckshot
|
||||
pellets = 6
|
||||
variance = 25
|
||||
|
||||
/obj/item/ammo_casing/shotgun/rubbershot
|
||||
name = "rubber shot"
|
||||
desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
|
||||
icon_state = "bshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot
|
||||
pellets = 6
|
||||
variance = 25
|
||||
materials = list(MAT_METAL=4000)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/improvised
|
||||
name = "improvised shell"
|
||||
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
|
||||
icon_state = "improvshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised
|
||||
materials = list(MAT_METAL=250)
|
||||
pellets = 10
|
||||
variance = 25
|
||||
|
||||
/obj/item/ammo_casing/shotgun/ion
|
||||
name = "ion shell"
|
||||
desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \
|
||||
The unique properties of the crystal split the pulse into a spread of individually weaker bolts."
|
||||
icon_state = "ionshell"
|
||||
projectile_type = /obj/item/projectile/ion/weak
|
||||
pellets = 4
|
||||
variance = 35
|
||||
|
||||
/obj/item/ammo_casing/shotgun/laserslug
|
||||
name = "laser slug"
|
||||
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package."
|
||||
icon_state = "lshell"
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
|
||||
/obj/item/ammo_casing/shotgun/techshell
|
||||
name = "unloaded technological shell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
icon_state = "cshell"
|
||||
projectile_type = null
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart
|
||||
name = "shotgun dart"
|
||||
desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
|
||||
icon_state = "cshell"
|
||||
projectile_type = /obj/item/projectile/bullet/dart
|
||||
var/reagent_amount = 30
|
||||
var/reagent_react = TRUE
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/noreact
|
||||
name = "cryostasis shotgun dart"
|
||||
desc = "A dart for use in shotguns, using similar technolgoy as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical."
|
||||
icon_state = "cnrshell"
|
||||
reagent_amount = 10
|
||||
reagent_react = FALSE
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/Initialize()
|
||||
. = ..()
|
||||
container_type |= OPENCONTAINER
|
||||
create_reagents(reagent_amount)
|
||||
reagents.set_reacting(reagent_react)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/attackby()
|
||||
return
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/bioterror
|
||||
desc = "A shotgun dart filled with deadly toxins."
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("neurotoxin", 6)
|
||||
reagents.add_reagent("spore", 6)
|
||||
reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT
|
||||
reagents.add_reagent("coniine", 6)
|
||||
reagents.add_reagent("sodium_thiopental", 6)
|
||||
@@ -0,0 +1,23 @@
|
||||
// 1.95x129mm (SAW)
|
||||
|
||||
/obj/item/ammo_casing/mm195x129
|
||||
name = "1.95x129mm bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "mm195129"
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/ap
|
||||
name = "1.95x129mm armor-piercing bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed with a hardened-tipped core to help penetrate armored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129_ap
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/hollow
|
||||
name = "1.95x129mm hollow-point bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed to cause more damage to unarmored targets."
|
||||
projectile_type = /obj/item/projectile/bullet/mm195x129_hp
|
||||
|
||||
/obj/item/ammo_casing/mm195x129/incen
|
||||
name = "1.95x129mm incendiary bullet casing"
|
||||
desc = "A 1.95x129mm bullet casing designed with a chemical-filled capsule on the tip that when bursted, reacts with the atmosphere to produce a fireball, engulfing the target in flames."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/mm195x129
|
||||
@@ -0,0 +1,50 @@
|
||||
// 10mm (Stechkin)
|
||||
|
||||
/obj/item/ammo_casing/c10mm
|
||||
name = ".10mm bullet casing"
|
||||
desc = "A 10mm bullet casing."
|
||||
caliber = "10mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm
|
||||
|
||||
/obj/item/ammo_casing/c10mm/ap
|
||||
name = ".10mm armor-piercing bullet casing"
|
||||
desc = "A 10mm armor-piercing bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c10mm/hp
|
||||
name = ".10mm hollow-point bullet casing"
|
||||
desc = "A 10mm hollow-point bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c10mm_hp
|
||||
|
||||
/obj/item/ammo_casing/c10mm/fire
|
||||
name = ".10mm incendiary bullet casing"
|
||||
desc = "A 10mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c10mm
|
||||
|
||||
// 9mm (Stechkin APS)
|
||||
|
||||
/obj/item/ammo_casing/c9mm
|
||||
name = "9mm bullet casing"
|
||||
desc = "A 9mm bullet casing."
|
||||
caliber = "9mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c9mm
|
||||
|
||||
/obj/item/ammo_casing/c9mm/ap
|
||||
name = "9mm armor-piercing bullet casing"
|
||||
desc = "A 9mm armor-piercing bullet casing."
|
||||
projectile_type =/obj/item/projectile/bullet/c9mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c9mm/inc
|
||||
name = "9mm incendiary bullet casing"
|
||||
desc = "A 9mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c9mm
|
||||
|
||||
|
||||
// .50AE (Desert Eagle)
|
||||
|
||||
/obj/item/ammo_casing/a50AE
|
||||
name = ".50AE bullet casing"
|
||||
desc = "A .50AE bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/a50AE
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
// .357 (Syndie Revolver)
|
||||
|
||||
/obj/item/ammo_casing/a357
|
||||
name = ".357 bullet casing"
|
||||
desc = "A .357 bullet casing."
|
||||
caliber = "357"
|
||||
projectile_type = /obj/item/projectile/bullet/a357
|
||||
|
||||
// 7.62x38mmR (Nagant Revolver)
|
||||
|
||||
/obj/item/ammo_casing/n762
|
||||
name = "7.62x38mmR bullet casing"
|
||||
desc = "A 7.62x38mmR bullet casing."
|
||||
caliber = "n762"
|
||||
projectile_type = /obj/item/projectile/bullet/n762
|
||||
|
||||
// .38 (Detective's Gun)
|
||||
|
||||
/obj/item/ammo_casing/c38
|
||||
name = ".38 bullet casing"
|
||||
desc = "A .38 bullet casing."
|
||||
caliber = "38"
|
||||
projectile_type = /obj/item/projectile/bullet/c38
|
||||
@@ -0,0 +1,28 @@
|
||||
// 7.62 (Nagant Rifle)
|
||||
|
||||
/obj/item/ammo_casing/a762
|
||||
name = "7.62 bullet casing"
|
||||
desc = "A 7.62 bullet casing."
|
||||
icon_state = "762-casing"
|
||||
caliber = "a762"
|
||||
projectile_type = /obj/item/projectile/bullet/a762
|
||||
|
||||
/obj/item/ammo_casing/a762/enchanted
|
||||
projectile_type = /obj/item/projectile/bullet/a762_enchanted
|
||||
|
||||
// 5.56mm (M-90gl Carbine)
|
||||
|
||||
/obj/item/ammo_casing/a556
|
||||
name = "5.56mm bullet casing"
|
||||
desc = "A 5.56mm bullet casing."
|
||||
caliber = "a556"
|
||||
projectile_type = /obj/item/projectile/bullet/a556
|
||||
|
||||
// 40mm (Grenade Launcher)
|
||||
|
||||
/obj/item/ammo_casing/a40mm
|
||||
name = "40mm HE shell"
|
||||
desc = "A cased high explosive grenade that can only be activated once fired out of a grenade launcher."
|
||||
caliber = "40mm"
|
||||
icon_state = "40mmHE"
|
||||
projectile_type = /obj/item/projectile/bullet/a40mm
|
||||
@@ -0,0 +1,139 @@
|
||||
// Shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun
|
||||
name = "shotgun slug"
|
||||
desc = "A 12 gauge lead slug."
|
||||
icon_state = "blshell"
|
||||
caliber = "shotgun"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_slug
|
||||
materials = list(MAT_METAL=4000)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/beanbag
|
||||
name = "beanbag slug"
|
||||
desc = "A weak beanbag slug for riot control."
|
||||
icon_state = "bshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_beanbag
|
||||
materials = list(MAT_METAL=250)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/incendiary
|
||||
name = "incendiary slug"
|
||||
desc = "An incendiary-coated shotgun slug."
|
||||
icon_state = "ishell"
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dragonsbreath
|
||||
name = "dragonsbreath shell"
|
||||
desc = "A shotgun shell which fires a spread of incendiary pellets."
|
||||
icon_state = "ishell2"
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/shotgun/dragonsbreath
|
||||
pellets = 4
|
||||
variance = 35
|
||||
|
||||
/obj/item/ammo_casing/shotgun/stunslug
|
||||
name = "taser slug"
|
||||
desc = "A stunning taser slug."
|
||||
icon_state = "stunshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_stunslug
|
||||
materials = list(MAT_METAL=250)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/meteorslug
|
||||
name = "meteorslug shell"
|
||||
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
|
||||
icon_state = "mshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_meteorslug
|
||||
|
||||
/obj/item/ammo_casing/shotgun/pulseslug
|
||||
name = "pulse slug"
|
||||
desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
|
||||
energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
|
||||
would have difficulty with."
|
||||
icon_state = "pshell"
|
||||
projectile_type = /obj/item/projectile/beam/pulse/shotgun
|
||||
|
||||
/obj/item/ammo_casing/shotgun/frag12
|
||||
name = "FRAG-12 slug"
|
||||
desc = "A high explosive breaching round for a 12 gauge shotgun."
|
||||
icon_state = "heshell"
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun_frag12
|
||||
|
||||
/obj/item/ammo_casing/shotgun/buckshot
|
||||
name = "buckshot shell"
|
||||
desc = "A 12 gauge buckshot shell."
|
||||
icon_state = "gshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_buckshot
|
||||
pellets = 6
|
||||
variance = 25
|
||||
|
||||
/obj/item/ammo_casing/shotgun/rubbershot
|
||||
name = "rubber shot"
|
||||
desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
|
||||
icon_state = "bshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_rubbershot
|
||||
pellets = 6
|
||||
variance = 25
|
||||
materials = list(MAT_METAL=4000)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/improvised
|
||||
name = "improvised shell"
|
||||
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
|
||||
icon_state = "improvshell"
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun_improvised
|
||||
materials = list(MAT_METAL=250)
|
||||
pellets = 10
|
||||
variance = 25
|
||||
|
||||
/obj/item/ammo_casing/shotgun/ion
|
||||
name = "ion shell"
|
||||
desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \
|
||||
The unique properties of the crystal split the pulse into a spread of individually weaker bolts."
|
||||
icon_state = "ionshell"
|
||||
projectile_type = /obj/item/projectile/ion/weak
|
||||
pellets = 4
|
||||
variance = 35
|
||||
|
||||
/obj/item/ammo_casing/shotgun/laserslug
|
||||
name = "laser slug"
|
||||
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a laser weapon in a ballistic package."
|
||||
icon_state = "lshell"
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
|
||||
/obj/item/ammo_casing/shotgun/techshell
|
||||
name = "unloaded technological shell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
icon_state = "cshell"
|
||||
projectile_type = null
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart
|
||||
name = "shotgun dart"
|
||||
desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
|
||||
icon_state = "cshell"
|
||||
projectile_type = /obj/item/projectile/bullet/dart
|
||||
var/reagent_amount = 30
|
||||
var/reagent_react = TRUE
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/noreact
|
||||
name = "cryostasis shotgun dart"
|
||||
desc = "A dart for use in shotguns, using similar technolgoy as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical."
|
||||
icon_state = "cnrshell"
|
||||
reagent_amount = 10
|
||||
reagent_react = FALSE
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/Initialize()
|
||||
. = ..()
|
||||
container_type |= OPENCONTAINER
|
||||
create_reagents(reagent_amount)
|
||||
reagents.set_reacting(reagent_react)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/attackby()
|
||||
return
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/bioterror
|
||||
desc = "A shotgun dart filled with deadly toxins."
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("neurotoxin", 6)
|
||||
reagents.add_reagent("spore", 6)
|
||||
reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT
|
||||
reagents.add_reagent("coniine", 6)
|
||||
reagents.add_reagent("sodium_thiopental", 6)
|
||||
@@ -0,0 +1,28 @@
|
||||
// 4.6x30mm (Autorifles)
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm
|
||||
name = "4.6x30mm bullet casing"
|
||||
desc = "A 4.6x30mm bullet casing."
|
||||
caliber = "4.6x30mm"
|
||||
projectile_type = /obj/item/projectile/bullet/c46x30mm
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm/ap
|
||||
name = "4.6x30mm armor-piercing bullet casing"
|
||||
desc = "A 4.6x30mm armor-piercing bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/c46x30mm_ap
|
||||
|
||||
/obj/item/ammo_casing/c46x30mm/inc
|
||||
name = "4.6x30mm incendiary bullet casing"
|
||||
desc = "A 4.6x30mm incendiary bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/incendiary/c46x30mm
|
||||
|
||||
// .45 (M1911 + C20r)
|
||||
|
||||
/obj/item/ammo_casing/c45
|
||||
name = ".45 bullet casing"
|
||||
desc = "A .45 bullet casing."
|
||||
caliber = ".45"
|
||||
projectile_type = /obj/item/projectile/bullet/c45
|
||||
|
||||
/obj/item/ammo_casing/c45/nostamina
|
||||
projectile_type = /obj/item/projectile/bullet/c45_nostamina
|
||||
@@ -0,0 +1,19 @@
|
||||
// .50 (Sniper)
|
||||
|
||||
/obj/item/ammo_casing/p50
|
||||
name = ".50 bullet casing"
|
||||
desc = "A .50 bullet casing."
|
||||
caliber = ".50"
|
||||
projectile_type = /obj/item/projectile/bullet/p50
|
||||
icon_state = ".50"
|
||||
|
||||
/obj/item/ammo_casing/p50/soporific
|
||||
name = ".50 soporific bullet casing"
|
||||
desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell."
|
||||
projectile_type = /obj/item/projectile/bullet/p50/soporific
|
||||
icon_state = "sleeper"
|
||||
|
||||
/obj/item/ammo_casing/p50/penetrator
|
||||
name = ".50 penetrator round bullet casing"
|
||||
desc = "A .50 caliber penetrator round casing."
|
||||
projectile_type = /obj/item/projectile/bullet/p50/penetrator
|
||||
@@ -0,0 +1,15 @@
|
||||
/obj/item/ammo_casing/caseless
|
||||
desc = "A caseless bullet casing."
|
||||
firing_effect_type = null
|
||||
heavy_metal = FALSE
|
||||
|
||||
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
|
||||
if (..()) //successfully firing
|
||||
moveToNullspace()
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/ammo_casing/caseless/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)]"
|
||||
+61
-117
@@ -1,117 +1,61 @@
|
||||
|
||||
// Caseless Ammunition
|
||||
|
||||
/obj/item/ammo_casing/caseless
|
||||
desc = "A caseless bullet casing."
|
||||
firing_effect_type = null
|
||||
heavy_metal = FALSE
|
||||
|
||||
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
|
||||
if (..()) //successfully firing
|
||||
moveToNullspace()
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/ammo_casing/caseless/update_icon()
|
||||
..()
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
/obj/item/ammo_casing/caseless/a75
|
||||
desc = "A .75 bullet casing."
|
||||
caliber = "75"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/gyro
|
||||
|
||||
/obj/item/ammo_casing/caseless/a84mm
|
||||
desc = "An 84mm anti-armour rocket."
|
||||
caliber = "84mm"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/a84mm
|
||||
|
||||
/obj/item/ammo_casing/caseless/magspear
|
||||
name = "magnetic spear"
|
||||
desc = "A reusable spear that is typically loaded into kinetic spearguns."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/magspear
|
||||
caliber = "speargun"
|
||||
icon_state = "magspear"
|
||||
throwforce = 15 //still deadly when thrown
|
||||
throw_speed = 3
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser
|
||||
name = "laser casing"
|
||||
desc = "You shouldn't be seeing this."
|
||||
caliber = "laser"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser/gatling
|
||||
projectile_type = /obj/item/projectile/beam/weak
|
||||
variance = 0.8
|
||||
click_cooldown_override = 1
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart
|
||||
name = "foam dart"
|
||||
desc = "It's nerf or nothing! Ages 8 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart
|
||||
caliber = "foam_force"
|
||||
icon = 'icons/obj/guns/toy.dmi'
|
||||
icon_state = "foamdart"
|
||||
var/modified = 0
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/update_icon()
|
||||
..()
|
||||
if (modified)
|
||||
icon_state = "foamdart_empty"
|
||||
desc = "It's nerf or nothing! ... Although, this one doesn't look too safe."
|
||||
if(BB)
|
||||
BB.icon_state = "foamdart_empty"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
desc = "It's nerf or nothing! Ages 8 and up."
|
||||
if(BB)
|
||||
BB.icon_state = initial(BB.icon_state)
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params)
|
||||
var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
|
||||
if (istype(A, /obj/item/screwdriver) && !modified)
|
||||
modified = 1
|
||||
FD.modified = 1
|
||||
FD.damage_type = BRUTE
|
||||
to_chat(user, "<span class='notice'>You pop the safety cap off [src].</span>")
|
||||
update_icon()
|
||||
else if (istype(A, /obj/item/pen))
|
||||
if(modified)
|
||||
if(!FD.pen)
|
||||
if(!user.transferItemToLoc(A, FD))
|
||||
return
|
||||
FD.pen = A
|
||||
FD.damage = 5
|
||||
FD.nodamage = 0
|
||||
to_chat(user, "<span class='notice'>You insert [A] into [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There's already something in [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The safety cap prevents you from inserting [A] into [src].</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user)
|
||||
var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
|
||||
if(FD.pen)
|
||||
FD.damage = initial(FD.damage)
|
||||
FD.nodamage = initial(FD.nodamage)
|
||||
user.put_in_hands(FD.pen)
|
||||
to_chat(user, "<span class='notice'>You remove [FD.pen] from [src].</span>")
|
||||
FD.pen = null
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
|
||||
icon_state = "foamdart_riot"
|
||||
/obj/item/ammo_casing/caseless/foam_dart
|
||||
name = "foam dart"
|
||||
desc = "It's nerf or nothing! Ages 8 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart
|
||||
caliber = "foam_force"
|
||||
icon = 'icons/obj/guns/toy.dmi'
|
||||
icon_state = "foamdart"
|
||||
var/modified = 0
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/update_icon()
|
||||
..()
|
||||
if (modified)
|
||||
icon_state = "foamdart_empty"
|
||||
desc = "It's nerf or nothing! ... Although, this one doesn't look too safe."
|
||||
if(BB)
|
||||
BB.icon_state = "foamdart_empty"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
desc = "It's nerf or nothing! Ages 8 and up."
|
||||
if(BB)
|
||||
BB.icon_state = initial(BB.icon_state)
|
||||
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params)
|
||||
var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
|
||||
if (istype(A, /obj/item/screwdriver) && !modified)
|
||||
modified = 1
|
||||
FD.modified = 1
|
||||
FD.damage_type = BRUTE
|
||||
to_chat(user, "<span class='notice'>You pop the safety cap off [src].</span>")
|
||||
update_icon()
|
||||
else if (istype(A, /obj/item/pen))
|
||||
if(modified)
|
||||
if(!FD.pen)
|
||||
if(!user.transferItemToLoc(A, FD))
|
||||
return
|
||||
FD.pen = A
|
||||
FD.damage = 5
|
||||
FD.nodamage = 0
|
||||
to_chat(user, "<span class='notice'>You insert [A] into [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There's already something in [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The safety cap prevents you from inserting [A] into [src].</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user)
|
||||
var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB
|
||||
if(FD.pen)
|
||||
FD.damage = initial(FD.damage)
|
||||
FD.nodamage = initial(FD.nodamage)
|
||||
user.put_in_hands(FD.pen)
|
||||
to_chat(user, "<span class='notice'>You remove [FD.pen] from [src].</span>")
|
||||
FD.pen = null
|
||||
|
||||
/obj/item/ammo_casing/caseless/foam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot
|
||||
icon_state = "foamdart_riot"
|
||||
@@ -0,0 +1,22 @@
|
||||
/obj/item/ammo_casing/caseless/magspear
|
||||
name = "magnetic spear"
|
||||
desc = "A reusable spear that is typically loaded into kinetic spearguns."
|
||||
projectile_type = /obj/item/projectile/bullet/reusable/magspear
|
||||
caliber = "speargun"
|
||||
icon_state = "magspear"
|
||||
throwforce = 15 //still deadly when thrown
|
||||
throw_speed = 3
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser
|
||||
name = "laser casing"
|
||||
desc = "You shouldn't be seeing this."
|
||||
caliber = "laser"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/beam
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
|
||||
|
||||
/obj/item/ammo_casing/caseless/laser/gatling
|
||||
projectile_type = /obj/item/projectile/beam/weak
|
||||
variance = 0.8
|
||||
click_cooldown_override = 1
|
||||
@@ -0,0 +1,11 @@
|
||||
/obj/item/ammo_casing/caseless/a84mm
|
||||
desc = "An 84mm anti-armour rocket."
|
||||
caliber = "84mm"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/a84mm
|
||||
|
||||
/obj/item/ammo_casing/caseless/a75
|
||||
desc = "A .75 bullet casing."
|
||||
caliber = "75"
|
||||
icon_state = "s-casing-live"
|
||||
projectile_type = /obj/item/projectile/bullet/gyro
|
||||
@@ -1,258 +0,0 @@
|
||||
/obj/item/ammo_casing/energy
|
||||
name = "energy weapon lens"
|
||||
desc = "The part of the gun that makes the laser go pew."
|
||||
caliber = "energy"
|
||||
projectile_type = /obj/item/projectile/energy
|
||||
var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot.
|
||||
var/select_name = "energy"
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
|
||||
heavy_metal = FALSE
|
||||
|
||||
/obj/item/ammo_casing/energy/chameleon
|
||||
projectile_type = /obj/item/projectile/energy/chameleon
|
||||
e_cost = 0
|
||||
var/hitscan_mode = FALSE
|
||||
var/list/projectile_vars = list()
|
||||
|
||||
/obj/item/ammo_casing/energy/chameleon/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
. = ..()
|
||||
if(!BB)
|
||||
newshot()
|
||||
for(var/V in projectile_vars)
|
||||
if(BB.vars.Find(V))
|
||||
BB.vars[V] = projectile_vars[V]
|
||||
if(hitscan_mode)
|
||||
BB.hitscan = TRUE
|
||||
|
||||
/obj/item/ammo_casing/energy/laser
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/lasergun
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
e_cost = 83
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/lasergun/old
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
e_cost = 200
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/hos
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/practice
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
select_name = "practice"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/scatter
|
||||
projectile_type = /obj/item/projectile/beam/scatter
|
||||
pellets = 5
|
||||
variance = 25
|
||||
select_name = "scatter"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/scatter/disabler
|
||||
projectile_type = /obj/item/projectile/beam/disabler
|
||||
pellets = 3
|
||||
variance = 15
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/heavy
|
||||
projectile_type = /obj/item/projectile/beam/laser/heavylaser
|
||||
select_name = "anti-vehicle"
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/pulse
|
||||
projectile_type = /obj/item/projectile/beam/pulse
|
||||
e_cost = 200
|
||||
select_name = "DESTROY"
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/bluetag
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/bluetag
|
||||
select_name = "bluetag"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/bluetag/hitscan
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/bluetag/hitscan
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/redtag
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/redtag
|
||||
select_name = "redtag"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/redtag/hitscan
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/redtag/hitscan
|
||||
|
||||
/obj/item/ammo_casing/energy/xray
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
e_cost = 50
|
||||
fire_sound = 'sound/weapons/laser3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode
|
||||
projectile_type = /obj/item/projectile/energy/electrode
|
||||
select_name = "stun"
|
||||
fire_sound = 'sound/weapons/taser.ogg'
|
||||
e_cost = 200
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/spec
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/gun
|
||||
fire_sound = 'sound/weapons/gunshot.ogg'
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/hos
|
||||
e_cost = 200
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/old
|
||||
e_cost = 1000
|
||||
|
||||
/obj/item/ammo_casing/energy/ion
|
||||
projectile_type = /obj/item/projectile/ion
|
||||
select_name = "ion"
|
||||
fire_sound = 'sound/weapons/ionrifle.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/declone
|
||||
projectile_type = /obj/item/projectile/energy/declone
|
||||
select_name = "declone"
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/mindflayer
|
||||
projectile_type = /obj/item/projectile/beam/mindflayer
|
||||
select_name = "MINDFUCK"
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/flora
|
||||
fire_sound = 'sound/effects/stealthoff.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/flora/yield
|
||||
projectile_type = /obj/item/projectile/energy/florayield
|
||||
select_name = "yield"
|
||||
|
||||
/obj/item/ammo_casing/energy/flora/mut
|
||||
projectile_type = /obj/item/projectile/energy/floramut
|
||||
select_name = "mutation"
|
||||
|
||||
/obj/item/ammo_casing/energy/temp
|
||||
projectile_type = /obj/item/projectile/temp
|
||||
select_name = "freeze"
|
||||
e_cost = 250
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/temp/hot
|
||||
projectile_type = /obj/item/projectile/temp/hot
|
||||
select_name = "bake"
|
||||
|
||||
/obj/item/ammo_casing/energy/meteor
|
||||
projectile_type = /obj/item/projectile/meteor
|
||||
select_name = "goddamn meteor"
|
||||
|
||||
/obj/item/ammo_casing/energy/disabler
|
||||
projectile_type = /obj/item/projectile/beam/disabler
|
||||
select_name = "disable"
|
||||
e_cost = 50
|
||||
fire_sound = 'sound/weapons/taser2.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
select_name = "plasma burst"
|
||||
fire_sound = 'sound/weapons/plasma_cutter.ogg'
|
||||
delay = 15
|
||||
e_cost = 25
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma/adv
|
||||
projectile_type = /obj/item/projectile/plasma/adv
|
||||
delay = 10
|
||||
e_cost = 10
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole
|
||||
projectile_type = /obj/item/projectile/beam/wormhole
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
var/obj/item/gun/energy/wormhole_projector/gun = null
|
||||
select_name = "blue"
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/orange
|
||||
projectile_type = /obj/item/projectile/beam/wormhole/orange
|
||||
select_name = "orange"
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt
|
||||
projectile_type = /obj/item/projectile/energy/bolt
|
||||
select_name = "bolt"
|
||||
e_cost = 500
|
||||
fire_sound = 'sound/weapons/genhit.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt/halloween
|
||||
projectile_type = /obj/item/projectile/energy/bolt/halloween
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt/large
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
select_name = "heavy bolt"
|
||||
|
||||
/obj/item/ammo_casing/energy/net
|
||||
projectile_type = /obj/item/projectile/energy/net
|
||||
select_name = "netting"
|
||||
pellets = 6
|
||||
variance = 40
|
||||
|
||||
/obj/item/ammo_casing/energy/trap
|
||||
projectile_type = /obj/item/projectile/energy/trap
|
||||
select_name = "snare"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill
|
||||
projectile_type = /obj/item/projectile/beam/instakill
|
||||
e_cost = 0
|
||||
select_name = "DESTROY"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/blue
|
||||
projectile_type = /obj/item/projectile/beam/instakill/blue
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/red
|
||||
projectile_type = /obj/item/projectile/beam/instakill/red
|
||||
|
||||
/obj/item/ammo_casing/energy/tesla_revolver
|
||||
fire_sound = 'sound/magic/lightningbolt.ogg'
|
||||
e_cost = 200
|
||||
select_name = "stun"
|
||||
projectile_type = /obj/item/projectile/energy/tesla/revolver
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityrepulse
|
||||
projectile_type = /obj/item/projectile/gravityrepulse
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "repulse"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun = null
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityrepulse/New(var/obj/item/gun/energy/gravity_gun/G)
|
||||
gun = G
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityattract
|
||||
projectile_type = /obj/item/projectile/gravityattract
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "attract"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun = null
|
||||
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityattract/New(var/obj/item/gun/energy/gravity_gun/G)
|
||||
gun = G
|
||||
|
||||
/obj/item/ammo_casing/energy/gravitychaos
|
||||
projectile_type = /obj/item/projectile/gravitychaos
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "chaos"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun = null
|
||||
|
||||
/obj/item/ammo_casing/energy/gravitychaos/New(var/obj/item/gun/energy/gravity_gun/G)
|
||||
gun = G
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
select_name = "plasma burst"
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma/adv
|
||||
projectile_type = /obj/item/projectile/plasma/adv
|
||||
@@ -0,0 +1,10 @@
|
||||
/obj/item/ammo_casing/energy
|
||||
name = "energy weapon lens"
|
||||
desc = "The part of the gun that makes the laser go pew."
|
||||
caliber = "energy"
|
||||
projectile_type = /obj/item/projectile/energy
|
||||
var/e_cost = 100 //The amount of energy a cell needs to expend to create this shot.
|
||||
var/select_name = "energy"
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/energy
|
||||
heavy_metal = FALSE
|
||||
@@ -0,0 +1,15 @@
|
||||
/obj/item/ammo_casing/energy/chameleon
|
||||
projectile_type = /obj/item/projectile/energy/chameleon
|
||||
e_cost = 0
|
||||
var/hitscan_mode = FALSE
|
||||
var/list/projectile_vars = list()
|
||||
|
||||
/obj/item/ammo_casing/energy/chameleon/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
. = ..()
|
||||
if(!BB)
|
||||
newshot()
|
||||
for(var/V in projectile_vars)
|
||||
if(BB.vars.Find(V))
|
||||
BB.vars[V] = projectile_vars[V]
|
||||
if(hitscan_mode)
|
||||
BB.hitscan = TRUE
|
||||
@@ -0,0 +1,12 @@
|
||||
/obj/item/ammo_casing/energy/bolt
|
||||
projectile_type = /obj/item/projectile/energy/bolt
|
||||
select_name = "bolt"
|
||||
e_cost = 500
|
||||
fire_sound = 'sound/weapons/genhit.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt/halloween
|
||||
projectile_type = /obj/item/projectile/energy/bolt/halloween
|
||||
|
||||
/obj/item/ammo_casing/energy/bolt/large
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
select_name = "heavy bolt"
|
||||
@@ -0,0 +1,36 @@
|
||||
/obj/item/ammo_casing/energy/gravityrepulse
|
||||
projectile_type = /obj/item/projectile/gravityrepulse
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "repulse"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityrepulse/Initialize(mapload, obj/item/gun/energy/gravity_gun/G)
|
||||
. = ..()
|
||||
gun = G
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityattract
|
||||
projectile_type = /obj/item/projectile/gravityattract
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "attract"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun
|
||||
|
||||
|
||||
/obj/item/ammo_casing/energy/gravityattract/Initialize(mapload, obj/item/gun/energy/gravity_gun/G)
|
||||
. = ..()
|
||||
gun = G
|
||||
|
||||
/obj/item/ammo_casing/energy/gravitychaos
|
||||
projectile_type = /obj/item/projectile/gravitychaos
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/wave.ogg'
|
||||
select_name = "chaos"
|
||||
delay = 50
|
||||
var/obj/item/gun/energy/gravity_gun/gun
|
||||
|
||||
/obj/item/ammo_casing/energy/gravitychaos/Initialize(mapload, obj/item/gun/energy/gravity_gun/G)
|
||||
. = ..()
|
||||
gun = G
|
||||
@@ -0,0 +1,66 @@
|
||||
/obj/item/ammo_casing/energy/laser
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/lasergun
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
e_cost = 83
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/lasergun/old
|
||||
projectile_type = /obj/item/projectile/beam/laser
|
||||
e_cost = 200
|
||||
select_name = "kill"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/hos
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/practice
|
||||
projectile_type = /obj/item/projectile/beam/practice
|
||||
select_name = "practice"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/scatter
|
||||
projectile_type = /obj/item/projectile/beam/scatter
|
||||
pellets = 5
|
||||
variance = 25
|
||||
select_name = "scatter"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/scatter/disabler
|
||||
projectile_type = /obj/item/projectile/beam/disabler
|
||||
pellets = 3
|
||||
variance = 15
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/heavy
|
||||
projectile_type = /obj/item/projectile/beam/laser/heavylaser
|
||||
select_name = "anti-vehicle"
|
||||
fire_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/pulse
|
||||
projectile_type = /obj/item/projectile/beam/pulse
|
||||
e_cost = 200
|
||||
select_name = "DESTROY"
|
||||
fire_sound = 'sound/weapons/pulse.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/bluetag
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/bluetag
|
||||
select_name = "bluetag"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/bluetag/hitscan
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/bluetag/hitscan
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/redtag
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/redtag
|
||||
select_name = "redtag"
|
||||
|
||||
/obj/item/ammo_casing/energy/laser/redtag/hitscan
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/redtag/hitscan
|
||||
|
||||
/obj/item/ammo_casing/energy/xray
|
||||
projectile_type = /obj/item/projectile/beam/xray
|
||||
e_cost = 50
|
||||
fire_sound = 'sound/weapons/laser3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/mindflayer
|
||||
projectile_type = /obj/item/projectile/beam/mindflayer
|
||||
select_name = "MINDFUCK"
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
@@ -0,0 +1,6 @@
|
||||
/obj/item/ammo_casing/energy/c3dbullet
|
||||
projectile_type = /obj/item/projectile/bullet/c3d
|
||||
select_name = "spraydown"
|
||||
fire_sound = 'sound/weapons/gunshot_smg.ogg'
|
||||
e_cost = 20
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
|
||||
@@ -0,0 +1,11 @@
|
||||
/obj/item/ammo_casing/energy/plasma
|
||||
projectile_type = /obj/item/projectile/plasma
|
||||
select_name = "plasma burst"
|
||||
fire_sound = 'sound/weapons/plasma_cutter.ogg'
|
||||
delay = 15
|
||||
e_cost = 25
|
||||
|
||||
/obj/item/ammo_casing/energy/plasma/adv
|
||||
projectile_type = /obj/item/projectile/plasma/adv
|
||||
delay = 10
|
||||
e_cost = 10
|
||||
@@ -0,0 +1,14 @@
|
||||
/obj/item/ammo_casing/energy/wormhole
|
||||
projectile_type = /obj/item/projectile/beam/wormhole
|
||||
e_cost = 0
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
var/obj/item/gun/energy/wormhole_projector/gun = null
|
||||
select_name = "blue"
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/orange
|
||||
projectile_type = /obj/item/projectile/beam/wormhole/orange
|
||||
select_name = "orange"
|
||||
|
||||
/obj/item/ammo_casing/energy/wormhole/Initialize(mapload, obj/item/gun/energy/wormhole_projector/wh)
|
||||
. = ..()
|
||||
gun = wh
|
||||
@@ -0,0 +1,61 @@
|
||||
/obj/item/ammo_casing/energy/ion
|
||||
projectile_type = /obj/item/projectile/ion
|
||||
select_name = "ion"
|
||||
fire_sound = 'sound/weapons/ionrifle.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/declone
|
||||
projectile_type = /obj/item/projectile/energy/declone
|
||||
select_name = "declone"
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/flora
|
||||
fire_sound = 'sound/effects/stealthoff.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/flora/yield
|
||||
projectile_type = /obj/item/projectile/energy/florayield
|
||||
select_name = "yield"
|
||||
|
||||
/obj/item/ammo_casing/energy/flora/mut
|
||||
projectile_type = /obj/item/projectile/energy/floramut
|
||||
select_name = "mutation"
|
||||
|
||||
/obj/item/ammo_casing/energy/temp
|
||||
projectile_type = /obj/item/projectile/temp
|
||||
select_name = "freeze"
|
||||
e_cost = 250
|
||||
fire_sound = 'sound/weapons/pulse3.ogg'
|
||||
|
||||
/obj/item/ammo_casing/energy/temp/hot
|
||||
projectile_type = /obj/item/projectile/temp/hot
|
||||
select_name = "bake"
|
||||
|
||||
/obj/item/ammo_casing/energy/meteor
|
||||
projectile_type = /obj/item/projectile/meteor
|
||||
select_name = "goddamn meteor"
|
||||
|
||||
/obj/item/ammo_casing/energy/net
|
||||
projectile_type = /obj/item/projectile/energy/net
|
||||
select_name = "netting"
|
||||
pellets = 6
|
||||
variance = 40
|
||||
|
||||
/obj/item/ammo_casing/energy/trap
|
||||
projectile_type = /obj/item/projectile/energy/trap
|
||||
select_name = "snare"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill
|
||||
projectile_type = /obj/item/projectile/beam/instakill
|
||||
e_cost = 0
|
||||
select_name = "DESTROY"
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/blue
|
||||
projectile_type = /obj/item/projectile/beam/instakill/blue
|
||||
|
||||
/obj/item/ammo_casing/energy/instakill/red
|
||||
projectile_type = /obj/item/projectile/beam/instakill/red
|
||||
|
||||
/obj/item/ammo_casing/energy/tesla_revolver
|
||||
fire_sound = 'sound/magic/lightningbolt.ogg'
|
||||
e_cost = 200
|
||||
select_name = "stun"
|
||||
projectile_type = /obj/item/projectile/energy/tesla/revolver
|
||||
@@ -0,0 +1,24 @@
|
||||
/obj/item/ammo_casing/energy/electrode
|
||||
projectile_type = /obj/item/projectile/energy/electrode
|
||||
select_name = "stun"
|
||||
fire_sound = 'sound/weapons/taser.ogg'
|
||||
e_cost = 200
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/spec
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/gun
|
||||
fire_sound = 'sound/weapons/gunshot.ogg'
|
||||
e_cost = 100
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/hos
|
||||
e_cost = 200
|
||||
|
||||
/obj/item/ammo_casing/energy/electrode/old
|
||||
e_cost = 1000
|
||||
|
||||
/obj/item/ammo_casing/energy/disabler
|
||||
projectile_type = /obj/item/projectile/beam/disabler
|
||||
select_name = "disable"
|
||||
e_cost = 50
|
||||
fire_sound = 'sound/weapons/taser2.ogg'
|
||||
@@ -0,0 +1,42 @@
|
||||
/obj/item/ammo_casing/magic
|
||||
name = "magic casing"
|
||||
desc = "I didn't even know magic needed ammo..."
|
||||
projectile_type = /obj/item/projectile/magic
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/magic
|
||||
heavy_metal = FALSE
|
||||
|
||||
/obj/item/ammo_casing/magic/change
|
||||
projectile_type = /obj/item/projectile/magic/change
|
||||
|
||||
/obj/item/ammo_casing/magic/animate
|
||||
projectile_type = /obj/item/projectile/magic/animate
|
||||
|
||||
/obj/item/ammo_casing/magic/heal
|
||||
projectile_type = /obj/item/projectile/magic/resurrection
|
||||
|
||||
/obj/item/ammo_casing/magic/death
|
||||
projectile_type = /obj/item/projectile/magic/death
|
||||
|
||||
/obj/item/ammo_casing/magic/teleport
|
||||
projectile_type = /obj/item/projectile/magic/teleport
|
||||
|
||||
/obj/item/ammo_casing/magic/door
|
||||
projectile_type = /obj/item/projectile/magic/door
|
||||
|
||||
/obj/item/ammo_casing/magic/fireball
|
||||
projectile_type = /obj/item/projectile/magic/aoe/fireball
|
||||
|
||||
/obj/item/ammo_casing/magic/chaos
|
||||
projectile_type = /obj/item/projectile/magic
|
||||
|
||||
/obj/item/ammo_casing/magic/spellblade
|
||||
projectile_type = /obj/item/projectile/magic/spellblade
|
||||
|
||||
/obj/item/ammo_casing/magic/arcane_barrage
|
||||
projectile_type = /obj/item/projectile/magic/arcane_barrage
|
||||
|
||||
/obj/item/ammo_casing/magic/chaos/newshot()
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/magic/honk
|
||||
projectile_type = /obj/item/projectile/bullet/honker
|
||||
+61
-111
@@ -1,111 +1,61 @@
|
||||
/obj/item/ammo_casing/magic
|
||||
name = "magic casing"
|
||||
desc = "I didn't even know magic needed ammo..."
|
||||
projectile_type = /obj/item/projectile/magic
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/magic
|
||||
heavy_metal = FALSE
|
||||
|
||||
/obj/item/ammo_casing/magic/change
|
||||
projectile_type = /obj/item/projectile/magic/change
|
||||
|
||||
/obj/item/ammo_casing/magic/animate
|
||||
projectile_type = /obj/item/projectile/magic/animate
|
||||
|
||||
/obj/item/ammo_casing/magic/heal
|
||||
projectile_type = /obj/item/projectile/magic/resurrection
|
||||
|
||||
/obj/item/ammo_casing/magic/death
|
||||
projectile_type = /obj/item/projectile/magic/death
|
||||
|
||||
/obj/item/ammo_casing/magic/teleport
|
||||
projectile_type = /obj/item/projectile/magic/teleport
|
||||
|
||||
/obj/item/ammo_casing/magic/door
|
||||
projectile_type = /obj/item/projectile/magic/door
|
||||
|
||||
/obj/item/ammo_casing/magic/fireball
|
||||
projectile_type = /obj/item/projectile/magic/aoe/fireball
|
||||
|
||||
/obj/item/ammo_casing/magic/chaos
|
||||
projectile_type = /obj/item/projectile/magic
|
||||
|
||||
/obj/item/ammo_casing/magic/spellblade
|
||||
projectile_type = /obj/item/projectile/magic/spellblade
|
||||
|
||||
/obj/item/ammo_casing/magic/arcane_barrage
|
||||
projectile_type = /obj/item/projectile/magic/arcane_barrage
|
||||
|
||||
/obj/item/ammo_casing/magic/chaos/newshot()
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/magic/honk
|
||||
projectile_type = /obj/item/projectile/bullet/honker
|
||||
|
||||
/obj/item/ammo_casing/syringegun
|
||||
name = "syringe gun spring"
|
||||
desc = "A high-power spring that throws syringes."
|
||||
projectile_type = /obj/item/projectile/bullet/dart/syringe
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/syringe))
|
||||
var/obj/item/gun/syringe/SG = loc
|
||||
if(!SG.syringes.len)
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/syringe/S = SG.syringes[1]
|
||||
|
||||
S.reagents.trans_to(BB, S.reagents.total_volume)
|
||||
BB.name = S.name
|
||||
var/obj/item/projectile/bullet/dart/D = BB
|
||||
D.piercing = S.proj_piercing
|
||||
SG.syringes.Remove(S)
|
||||
qdel(S)
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/chemgun
|
||||
name = "dart synthesiser"
|
||||
desc = "A high-power spring, linked to an energy-based dart synthesiser."
|
||||
projectile_type = /obj/item/projectile/bullet/dart
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/chemgun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/chem))
|
||||
var/obj/item/gun/chem/CG = loc
|
||||
if(CG.syringes_left <= 0)
|
||||
return
|
||||
CG.reagents.trans_to(BB, 15)
|
||||
BB.name = "chemical dart"
|
||||
CG.syringes_left--
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/dnainjector
|
||||
name = "rigged syringe gun spring"
|
||||
desc = "A high-power spring that throws DNA injectors."
|
||||
projectile_type = /obj/item/projectile/bullet/dnainjector
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/dnainjector/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/syringe/dna))
|
||||
var/obj/item/gun/syringe/dna/SG = loc
|
||||
if(!SG.syringes.len)
|
||||
return
|
||||
|
||||
var/obj/item/dnainjector/S = popleft(SG.syringes)
|
||||
var/obj/item/projectile/bullet/dnainjector/D = BB
|
||||
S.forceMove(D)
|
||||
D.injector = S
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/energy/c3dbullet
|
||||
projectile_type = /obj/item/projectile/bullet/c3d
|
||||
select_name = "spraydown"
|
||||
fire_sound = 'sound/weapons/gunshot_smg.ogg'
|
||||
e_cost = 20
|
||||
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect
|
||||
/obj/item/ammo_casing/syringegun
|
||||
name = "syringe gun spring"
|
||||
desc = "A high-power spring that throws syringes."
|
||||
projectile_type = /obj/item/projectile/bullet/dart/syringe
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/syringe))
|
||||
var/obj/item/gun/syringe/SG = loc
|
||||
if(!SG.syringes.len)
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/syringe/S = SG.syringes[1]
|
||||
|
||||
S.reagents.trans_to(BB, S.reagents.total_volume)
|
||||
BB.name = S.name
|
||||
var/obj/item/projectile/bullet/dart/D = BB
|
||||
D.piercing = S.proj_piercing
|
||||
SG.syringes.Remove(S)
|
||||
qdel(S)
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/chemgun
|
||||
name = "dart synthesiser"
|
||||
desc = "A high-power spring, linked to an energy-based dart synthesiser."
|
||||
projectile_type = /obj/item/projectile/bullet/dart
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/chemgun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/chem))
|
||||
var/obj/item/gun/chem/CG = loc
|
||||
if(CG.syringes_left <= 0)
|
||||
return
|
||||
CG.reagents.trans_to(BB, 15)
|
||||
BB.name = "chemical dart"
|
||||
CG.syringes_left--
|
||||
..()
|
||||
|
||||
/obj/item/ammo_casing/dnainjector
|
||||
name = "rigged syringe gun spring"
|
||||
desc = "A high-power spring that throws DNA injectors."
|
||||
projectile_type = /obj/item/projectile/bullet/dnainjector
|
||||
firing_effect_type = null
|
||||
|
||||
/obj/item/ammo_casing/dnainjector/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
|
||||
if(!BB)
|
||||
return
|
||||
if(istype(loc, /obj/item/gun/syringe/dna))
|
||||
var/obj/item/gun/syringe/dna/SG = loc
|
||||
if(!SG.syringes.len)
|
||||
return
|
||||
|
||||
var/obj/item/dnainjector/S = popleft(SG.syringes)
|
||||
var/obj/item/projectile/bullet/dnainjector/D = BB
|
||||
S.forceMove(D)
|
||||
D.injector = S
|
||||
..()
|
||||
Reference in New Issue
Block a user