Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync-2017-06-01

# Conflicts:
#	code/game/objects/structures/crates_lockers/closets/secure/security.dm
#	code/modules/multiz/movement.dm
#	code/modules/projectiles/ammunition/magazines.dm
This commit is contained in:
Leshana
2017-06-01 16:52:04 -04:00
72 changed files with 1606 additions and 1106 deletions

View File

@@ -1157,12 +1157,22 @@ proc/is_hot(obj/item/W as obj)
istype(W, /obj/item/weapon/surgical/bonesetter)
)
//check if mob is lying down on something we can operate him on.
// check if mob is lying down on something we can operate him on.
// The RNG with table/rollerbeds comes into play in do_surgery() so that fail_step() can be used instead.
/proc/can_operate(mob/living/carbon/M)
return (M.lying && \
locate(/obj/machinery/optable, M.loc) || \
(locate(/obj/structure/bed/roller, M.loc) && prob(75)) || \
(locate(/obj/structure/table/, M.loc) && prob(66)))
return M.lying
// Returns an instance of a valid surgery surface.
/mob/living/proc/get_surgery_surface()
if(!lying)
return null // Not lying down means no surface.
var/obj/surface = null
for(var/obj/O in loc) // Looks for the best surface.
if(O.surgery_odds)
if(!surface || surface.surgery_odds < O)
surface = O
if(surface)
return surface
/proc/reverse_direction(var/dir)
switch(dir)

View File

@@ -0,0 +1,56 @@
/datum/controller/process/radiation
var/repository/radiation/linked = null
/datum/controller/process/radiation/setup()
name = "radiation controller"
schedule_interval = 20 // every 2 seconds
linked = radiation_repository
/datum/controller/process/radiation/doWork()
sources_decay()
cache_expires()
irradiate_targets()
// Step 1 - Sources Decay
/datum/controller/process/radiation/proc/sources_decay()
var/list/sources = linked.sources
for(var/thing in sources)
if(deleted(thing))
sources.Remove(thing)
continue
var/datum/radiation_source/S = thing
if(S.decay)
S.update_rad_power(S.rad_power - config.radiation_decay_rate)
if(S.rad_power <= config.radiation_lower_limit)
sources.Remove(S)
SCHECK // This scheck probably just wastes resources, but better safe than sorry in this case.
// Step 2 - Cache Expires
/datum/controller/process/radiation/proc/cache_expires()
var/list/resistance_cache = linked.resistance_cache
for(var/thing in resistance_cache)
if(deleted(thing))
resistance_cache.Remove(thing)
continue
var/turf/T = thing
if((length(T.contents) + 1) != resistance_cache[T])
resistance_cache.Remove(T) // If its stale REMOVE it! It will get added if its needed.
SCHECK
// Step 3 - Registered irradiatable things are checked for radiation
/datum/controller/process/radiation/proc/irradiate_targets()
var/list/registered_listeners = living_mob_list // For now just use this. Nothing else is interested anyway.
if(length(linked.sources) > 0)
for(var/thing in registered_listeners)
if(deleted(thing))
continue
var/atom/A = thing
var/turf/T = get_turf(thing)
var/rads = linked.get_rads_at_turf(T)
if(rads)
A.rad_act(rads)
SCHECK
/datum/controller/process/radiation/statProcess()
..()
stat(null, "[linked.sources.len] sources, [linked.resistance_cache.len] cached turfs")

View File

@@ -220,6 +220,10 @@ var/list/gamemode_cache = list()
var/show_human_death_message = 1
var/radiation_decay_rate = 1 //How much radiation is reduced by each tick
var/radiation_resistance_multiplier = 6.5
var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it.
/datum/configuration/New()
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
for (var/T in L)
@@ -720,6 +724,9 @@ var/list/gamemode_cache = list()
if(values.len > 0)
language_prefixes = values
if("radiation_lower_limit")
radiation_lower_limit = text2num(value)
else
log_misc("Unknown setting in configuration: '[name]'")

View File

@@ -8,29 +8,29 @@
/datum/category_item/autolathe/arms/shotgun_blanks
name = "ammunition (12g, blank)"
path =/obj/item/ammo_casing/shotgun/blank
path =/obj/item/ammo_casing/a12g/blank
/datum/category_item/autolathe/arms/shotgun_beanbag
name = "ammunition (12g, beanbag)"
path =/obj/item/ammo_casing/shotgun/beanbag
path =/obj/item/ammo_casing/a12g/beanbag
/datum/category_item/autolathe/arms/shotgun_flash
name = "ammunition (12g, flash)"
path =/obj/item/ammo_casing/shotgun/flash
path =/obj/item/ammo_casing/a12g/flash
/datum/category_item/autolathe/arms/shotgun
name = "ammunition (12g, slug)"
path =/obj/item/ammo_casing/shotgun
path =/obj/item/ammo_casing/a12g
hidden = 1
/datum/category_item/autolathe/arms/shotgun_pellet
name = "ammunition (12g, pellet)"
path =/obj/item/ammo_casing/shotgun/pellet
path =/obj/item/ammo_casing/a12g/pellet
hidden = 1
/datum/category_item/autolathe/arms/stunshell
name = "ammunition (stun cartridge, shotgun)"
path =/obj/item/ammo_casing/shotgun/stunshell
path =/obj/item/ammo_casing/a12g/stunshell
hidden = 1
//////////////////
@@ -49,119 +49,119 @@
/////// .45
/datum/category_item/autolathe/arms/pistol_45
name = "pistol magazine (.45)"
path =/obj/item/ammo_magazine/c45m
path =/obj/item/ammo_magazine/m45
hidden = 1
/datum/category_item/autolathe/arms/pistol_45p
name = "pistol magazine (.45 practice)"
path =/obj/item/ammo_magazine/c45m/practice
path =/obj/item/ammo_magazine/m45/practice
/datum/category_item/autolathe/arms/pistol_45r
name = "pistol magazine (.45 rubber)"
path =/obj/item/ammo_magazine/c45m/rubber
path =/obj/item/ammo_magazine/m45/rubber
/datum/category_item/autolathe/arms/pistol_45f
name = "pistol magazine (.45 flash)"
path =/obj/item/ammo_magazine/c45m/flash
path =/obj/item/ammo_magazine/m45/flash
/datum/category_item/autolathe/arms/pistol_45uzi
name = "uzi magazine (.45)"
path =/obj/item/ammo_magazine/c45uzi
path =/obj/item/ammo_magazine/m45uzi
hidden = 1
/datum/category_item/autolathe/arms/tommymag
name = "Tommygun magazine (.45)"
path =/obj/item/ammo_magazine/tommymag
path =/obj/item/ammo_magazine/m45tommy
hidden = 1
/datum/category_item/autolathe/arms/tommydrum
name = "Tommygun drum magazine (.45)"
path =/obj/item/ammo_magazine/tommydrum
path =/obj/item/ammo_magazine/m45tommydrum
hidden = 1
/////// 9mm
/obj/item/ammo_magazine/mc9mm/flash
ammo_type =/obj/item/ammo_casing/c9mmf
/obj/item/ammo_magazine/m9mm/flash
ammo_type =/obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/mc9mm/rubber
/obj/item/ammo_magazine/m9mm/rubber
name = "magazine (9mm rubber)"
ammo_type =/obj/item/ammo_casing/c9mmr
ammo_type =/obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/mc9mm/practice
/obj/item/ammo_magazine/m9mm/practice
name = "magazine (9mm practice)"
ammo_type =/obj/item/ammo_casing/c9mmp
ammo_type =/obj/item/ammo_casing/a9mmp
/datum/category_item/autolathe/arms/pistol_9mm
name = "pistol magazine (9mm)"
path =/obj/item/ammo_magazine/mc9mm
path =/obj/item/ammo_magazine/m9mm
hidden = 1
/datum/category_item/autolathe/arms/pistol_9mmr
name = "pistol magazine (9mm rubber)"
path =/obj/item/ammo_magazine/mc9mm/rubber
path =/obj/item/ammo_magazine/m9mm/rubber
/datum/category_item/autolathe/arms/pistol_9mmp
name = "pistol magazine (9mm practice)"
path =/obj/item/ammo_magazine/mc9mm/practice
path =/obj/item/ammo_magazine/m9mm/practice
/datum/category_item/autolathe/arms/pistol_9mmf
name = "pistol magazine (9mm flash)"
path =/obj/item/ammo_magazine/mc9mm/flash
path =/obj/item/ammo_magazine/m9mm/flash
/datum/category_item/autolathe/arms/smg_9mm
name = "top-mounted SMG magazine (9mm)"
path =/obj/item/ammo_magazine/mc9mmt
path =/obj/item/ammo_magazine/m9mmt
hidden = 1
/datum/category_item/autolathe/arms/smg_9mmr
name = "top-mounted SMG magazine (9mm rubber)"
path =/obj/item/ammo_magazine/mc9mmt/rubber
path =/obj/item/ammo_magazine/m9mmt/rubber
/datum/category_item/autolathe/arms/smg_9mmp
name = "top-mounted SMG magazine (9mm practice)"
path =/obj/item/ammo_magazine/mc9mmt/practice
path =/obj/item/ammo_magazine/m9mmt/practice
/datum/category_item/autolathe/arms/smg_9mmf
name = "top-mounted SMG magazine (9mm flash)"
path =/obj/item/ammo_magazine/mc9mmt/flash
path =/obj/item/ammo_magazine/m9mmt/flash
/////// 10mm
/datum/category_item/autolathe/arms/smg_10mm
name = "SMG magazine (10mm)"
path =/obj/item/ammo_magazine/a10mm
path =/obj/item/ammo_magazine/m10mm
hidden = 1
/datum/category_item/autolathe/arms/pistol_50
name = "pistol magazine (.50AE)"
path =/obj/item/ammo_magazine/a50
path =/obj/item/ammo_magazine/m50
hidden = 1
/////// 5.56mm
/datum/category_item/autolathe/arms/rifle_556
name = "rifle magazine (5.56mm)"
path =/obj/item/ammo_magazine/c556
path =/obj/item/ammo_magazine/m556
hidden = 1
/datum/category_item/autolathe/arms/rifle_556p
name = "rifle magazine (5.56mm practice)"
path =/obj/item/ammo_magazine/c556/practice
path =/obj/item/ammo_magazine/m556/practice
/datum/category_item/autolathe/arms/machinegun_556
name = "machinegun box magazine (5.56)"
path =/obj/item/ammo_magazine/a556
path =/obj/item/ammo_magazine/m556saw
hidden = 1
/////// 7.62
/datum/category_item/autolathe/arms/rifle_762
name = "rifle magazine (7.62mm)"
path =/obj/item/ammo_magazine/c762
path =/obj/item/ammo_magazine/m762
hidden = 1
/datum/category_item/autolathe/arms/shotgun_magazine
name = "24rnd shotgun magazine (12g)"
path =/obj/item/ammo_magazine/g12
path =/obj/item/ammo_magazine/m12gdrum
hidden = 1
/*
@@ -188,57 +188,57 @@
/datum/category_item/autolathe/arms/pistol_45
name = "pistol magazine (.45)"
path =/obj/item/ammo_magazine/c45m/empty
path =/obj/item/ammo_magazine/m45/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/pistol_45uzi
name = "uzi magazine (.45)"
path =/obj/item/ammo_magazine/c45uzi/empty
path =/obj/item/ammo_magazine/m45uzi/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/tommymag
name = "Tommygun magazine (.45)"
path =/obj/item/ammo_magazine/tommymag/empty
path =/obj/item/ammo_magazine/m45tommy/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/tommydrum
name = "Tommygun drum magazine (.45)"
path =/obj/item/ammo_magazine/tommydrum/empty
path =/obj/item/ammo_magazine/m45tommydrum/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_9mm
name = "pistol magazine (9mm)"
path =/obj/item/ammo_magazine/mc9mm/empty
path =/obj/item/ammo_magazine/m9mm/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/smg_9mm
name = "top-mounted SMG magazine (9mm)"
path =/obj/item/ammo_magazine/mc9mmt/empty
path =/obj/item/ammo_magazine/m9mmt/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/smg_10mm
name = "SMG magazine (10mm)"
path =/obj/item/ammo_magazine/a10mm/empty
path =/obj/item/ammo_magazine/m10mm/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_50
name = "pistol magazine (.50AE)"
path =/obj/item/ammo_magazine/a50/empty
path =/obj/item/ammo_magazine/m50/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/rifle_556
name = "10rnd rifle magazine (5.56mm)"
path =/obj/item/ammo_magazine/a556/empty
path =/obj/item/ammo_magazine/m556saw/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/rifle_556m
name = "20rnd rifle magazine (5.56mm)"
path =/obj/item/ammo_magazine/a556m/empty
path =/obj/item/ammo_magazine/m556sawm/empty
category = "Arms and Ammunition"
hidden = 1
@@ -250,7 +250,7 @@
/datum/category_item/autolathe/arms/rifle_762
name = "20rnd rifle magazine (7.62mm)"
path =/obj/item/ammo_magazine/c762/empty
path =/obj/item/ammo_magazine/m762/empty
category = "Arms and Ammunition"
hidden = 1
@@ -262,7 +262,7 @@
/datum/category_item/autolathe/arms/shotgun_magazine
name = "24rnd shotgun magazine (12g)"
path =/obj/item/ammo_magazine/g12/empty
path =/obj/item/ammo_magazine/m12gdrum/empty
category = "Arms and Ammunition"
hidden = 1*/
@@ -272,17 +272,17 @@
/datum/category_item/autolathe/arms/speedloader_357
name = "speedloader (.357)"
path =/obj/item/ammo_magazine/a357
path =/obj/item/ammo_magazine/s357
hidden = 1
/datum/category_item/autolathe/arms/speedloader_38
name = "speedloader (.38)"
path =/obj/item/ammo_magazine/c38
path =/obj/item/ammo_magazine/s38
hidden = 1
/datum/category_item/autolathe/arms/speedloader_38r
name = "speedloader (.38 rubber)"
path =/obj/item/ammo_magazine/c38/rubber
path =/obj/item/ammo_magazine/s38/rubber
// Commented out until metal exploits with autolathe is fixed.
/*/datum/category_item/autolathe/arms/pistol_clip_45
@@ -335,35 +335,35 @@
/datum/category_item/autolathe/arms/pistol_clip_10mm
name = "ammo clip (10mm)"
path =/obj/item/ammo_magazine/clip/a10mm
path =/obj/item/ammo_magazine/clip/c10mm
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_clip_50
name = "ammo clip (.50AE)"
path =/obj/item/ammo_magazine/clip/a50
path =/obj/item/ammo_magazine/clip/c50
category = "Arms and Ammunition"
hidden = 1
*/
/datum/category_item/autolathe/arms/rifle_clip_556
name = "ammo clip (5.56mm)"
path =/obj/item/ammo_magazine/clip/a556
path =/obj/item/ammo_magazine/clip/c556
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/rifle_clip_556_practice
name = "ammo clip (5.56mm practice)"
path =/obj/item/ammo_magazine/clip/a556/practice
path =/obj/item/ammo_magazine/clip/c556/practice
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/rifle_clip_762
name = "ammo clip (7.62mm)"
path =/obj/item/ammo_magazine/clip/a762
path =/obj/item/ammo_magazine/clip/c762
hidden = 1
/datum/category_item/autolathe/arms/rifle_clip_762_practice
name = "ammo clip (7.62mm practice)"
path =/obj/item/ammo_magazine/clip/a762/practice
path =/obj/item/ammo_magazine/clip/c762/practice
/datum/category_item/autolathe/arms/knuckledusters
name = "knuckle dusters"

View File

@@ -0,0 +1,139 @@
var/global/repository/radiation/radiation_repository = new()
/repository/radiation
var/list/sources = list() // all radiation source datums
var/list/sources_assoc = list() // Sources indexed by turf for de-duplication.
var/list/resistance_cache = list() // Cache of turf's radiation resistance.
// Describes a point source of radiation. Created either in response to a pulse of radiation, or over an irradiated atom.
// Sources will decay over time, unless something is renewing their power!
/datum/radiation_source
var/turf/source_turf // Location of the radiation source.
var/rad_power // Strength of the radiation being emitted.
var/decay = TRUE // True for automatic decay. False if owner promises to handle it (i.e. supermatter)
var/respect_maint = FALSE // True for not affecting RAD_SHIELDED areas.
var/flat = FALSE // True for power falloff with distance.
var/range // Cached maximum range, used for quick checks against mobs.
/datum/radiation_source/Destroy()
radiation_repository.sources -= src
if(radiation_repository.sources_assoc[src.source_turf] == src)
radiation_repository.sources -= src.source_turf
src.source_turf = null
. = ..()
// TEMPORARY HACK - hard del()'ing sources is too expensive! Until we implement qdel() hints we need to override behavior here
/datum/radiation_source/finalize_qdel()
if(garbage_collector)
garbage_collector.AddTrash(src)
else
delayed_garbage |= src
// TEMPORARY HACK END
/datum/radiation_source/proc/update_rad_power(var/new_power = null)
if(new_power != null && new_power != rad_power)
rad_power = new_power
. = 1
if(. && !flat)
range = min(round(sqrt(rad_power / config.radiation_lower_limit)), 31) // R = rad_power / dist**2 - Solve for dist
// Ray trace from all active radiation sources to T and return the strongest effect.
/repository/radiation/proc/get_rads_at_turf(var/turf/T)
if(!istype(T)) return 0
. = 0
for(var/value in sources)
var/datum/radiation_source/source = value
if(source.rad_power < .)
continue // Already being affected by a stronger source
var/dist = get_dist(source.source_turf, T)
if(dist > source.range)
continue // Too far to possibly affect
if(source.respect_maint)
var/atom/A = T.loc
if(A.flags & RAD_SHIELDED)
continue // In shielded area
if(source.flat)
. = max(., source.rad_power)
continue // No need to ray trace for flat field
// Okay, now ray trace to find resistence!
var/turf/origin = source.source_turf
var/working = source.rad_power
while(origin != T)
origin = get_step_towards(origin, T) //Raytracing
if(!(origin in resistance_cache)) //Only get the resistance if we don't already know it.
origin.calc_rad_resistance()
working = max((working - (origin.cached_rad_resistance * config.radiation_resistance_multiplier)), 0)
if(working <= .)
break // Already affected by a stronger source (or its zero...)
. = max((working * (1 / (dist ** 2))), .) //Butchered version of the inverse square law. Works for this purpose
// Add a radiation source instance to the repository. It will override any existing source on the same turf.
/repository/radiation/proc/add_source(var/datum/radiation_source/S)
var/datum/radiation_source/existing = sources_assoc[S.source_turf]
if(existing)
qdel(existing)
sources += S
sources_assoc[S.source_turf] = S
// Creates a temporary radiation source that will decay
/repository/radiation/proc/radiate(source, power) //Sends out a radiation pulse, taking walls into account
if(!(source && power)) //Sanity checking
return
var/datum/radiation_source/S = new()
S.source_turf = get_turf(source)
S.update_rad_power(power)
add_source(S)
// Sets the radiation in a range to a constant value.
/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = FALSE)
if(!(source && power && range))
return
var/datum/radiation_source/S = new()
S.flat = TRUE
S.range = range
S.respect_maint = respect_maint
S.source_turf = get_turf(source)
S.update_rad_power(power)
add_source(S)
// Irradiates a full Z-level. Hacky way of doing it, but not too expensive.
/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = FALSE)
if(!(power && source))
return
var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), source.z)
flat_radiate(epicentre, power, world.maxx, respect_maint)
/turf
var/cached_rad_resistance = 0
/turf/proc/calc_rad_resistance()
cached_rad_resistance = 0
for(var/obj/O in src.contents)
if(O.rad_resistance) //Override
cached_rad_resistance += O.rad_resistance
else if(O.density) //So open doors don't get counted
var/material/M = O.get_material()
if(!M) continue
cached_rad_resistance += M.weight
// Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana
radiation_repository.resistance_cache[src] = (length(contents) + 1)
/turf/simulated/wall/calc_rad_resistance()
radiation_repository.resistance_cache[src] = (length(contents) + 1)
cached_rad_resistance = (density ? material.weight : 0)
/obj
var/rad_resistance = 0 // Allow overriding rad resistance
// If people expand the system, this may be useful. Here as a placeholder until then
/atom/proc/rad_act(var/severity)
return 1
/mob/living/rad_act(var/severity)
if(severity)
src.apply_effect(severity, IRRADIATE, src.getarmor(null, "rad"))
for(var/atom/I in src)
I.rad_act(severity)

View File

@@ -47,7 +47,7 @@
name = "Surplus militia rifles"
contains = list(
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin = 3,
/obj/item/ammo_magazine/clip/a762 = 6
/obj/item/ammo_magazine/clip/c762 = 6
)
cost = 50
contraband = 1

View File

@@ -27,7 +27,7 @@
name = "Flare guns crate"
contains = list(
/obj/item/weapon/gun/projectile/sec/flash,
/obj/item/ammo_magazine/c45m/flash,
/obj/item/ammo_magazine/m45/flash,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare,
/obj/item/weapon/storage/box/flashshells
)
@@ -129,7 +129,7 @@
contains = list(
/obj/item/device/assembly/timer,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2,
/obj/item/ammo_magazine/clip/a762/practice = 4,
/obj/item/ammo_magazine/clip/c762/practice = 4,
/obj/item/target = 2,
/obj/item/target/alien = 2,
/obj/item/target/syndicate = 2
@@ -154,9 +154,9 @@
name = "Automatic weapon ammunition crate"
num_contained = 6
contains = list(
/obj/item/ammo_magazine/mc9mmt,
/obj/item/ammo_magazine/mc9mmt/rubber,
/obj/item/ammo_magazine/a556
/obj/item/ammo_magazine/m9mmt,
/obj/item/ammo_magazine/m9mmt/rubber,
/obj/item/ammo_magazine/m556saw
)
cost = 25
containertype = /obj/structure/closet/crate/secure

View File

@@ -8,36 +8,36 @@
/datum/uplink_item/item/ammo/a357
name = ".357 Speedloader"
path = /obj/item/ammo_magazine/a357
path = /obj/item/ammo_magazine/s357
/datum/uplink_item/item/ammo/mc9mm
name = "Pistol Magazine (9mm)"
path = /obj/item/ammo_magazine/mc9mm
path = /obj/item/ammo_magazine/m9mm
/datum/uplink_item/item/ammo/c45m
name = "Pistol Magazine (.45)"
path = /obj/item/ammo_magazine/c45m
path = /obj/item/ammo_magazine/m45
/datum/uplink_item/item/ammo/c45map
name = "Pistol Magazine (.45 AP)"
path = /obj/item/ammo_magazine/c45m/ap
path = /obj/item/ammo_magazine/m45/ap
/datum/uplink_item/item/ammo/tommymag
name = "Tommygun Magazine (.45)"
path = /obj/item/ammo_magazine/tommymag
path = /obj/item/ammo_magazine/m45tommy
/datum/uplink_item/item/ammo/tommymagap
name = "Tommygun Magazine (.45 AP)"
path = /obj/item/ammo_magazine/tommymag/ap
path = /obj/item/ammo_magazine/m45tommy/ap
/datum/uplink_item/item/ammo/tommydrum
name = "Tommygun Drum Magazine (.45)"
path = /obj/item/ammo_magazine/tommydrum
path = /obj/item/ammo_magazine/m45tommydrum
item_cost = 40
/datum/uplink_item/item/ammo/tommydrumap
name = "Tommygun Drum Magazine (.45 AP)"
path = /obj/item/ammo_magazine/tommydrum/ap
path = /obj/item/ammo_magazine/m45tommydrum/ap
/datum/uplink_item/item/ammo/darts
name = "Darts"
@@ -50,39 +50,39 @@
/datum/uplink_item/item/ammo/c556
name = "Rifle Magazine (5.56mm)"
path = /obj/item/ammo_magazine/c556
path = /obj/item/ammo_magazine/m556
/datum/uplink_item/item/ammo/c556/ext
name = "Rifle Magazine (5.56mm Extended)"
path = /obj/item/ammo_magazine/c556/ext
path = /obj/item/ammo_magazine/m556/ext
/datum/uplink_item/item/ammo/c556/ap
name = "Rifle Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/c556/ap
path = /obj/item/ammo_magazine/m556/ap
/datum/uplink_item/item/ammo/c556/ap/ext
name = "Rifle Magazine (5.56mm AP Extended)"
path = /obj/item/ammo_magazine/c556/ap/ext
path = /obj/item/ammo_magazine/m556/ap/ext
/datum/uplink_item/item/ammo/c762
name = "Rifle Magazine (7.62mm)"
path = /obj/item/ammo_magazine/c762
path = /obj/item/ammo_magazine/m762
/datum/uplink_item/item/ammo/c762/ap
name = "Rifle Magazine (7.62mm AP)"
path = /obj/item/ammo_magazine/c762/ap
path = /obj/item/ammo_magazine/m762/ap
/datum/uplink_item/item/ammo/a10mm
name = "SMG Magazine (10mm)"
path = /obj/item/ammo_magazine/a10mm
path = /obj/item/ammo_magazine/m10mm
/datum/uplink_item/item/ammo/a556
name = "Machinegun Magazine (5.56mm)"
path = /obj/item/ammo_magazine/a556
path = /obj/item/ammo_magazine/m556saw
/datum/uplink_item/item/ammo/a556/ap
name = "Machinegun Magazine (5.56mm AP)"
path = /obj/item/ammo_magazine/a556/ap
path = /obj/item/ammo_magazine/m556saw/ap
/datum/uplink_item/item/ammo/g12
name = "12g Shotgun Ammo Box (Slug)"

View File

@@ -271,8 +271,7 @@
if(explode)
explosion(src.loc, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 4, flash_range = 6, adminlog = 0)
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
for(var/mob/living/L in view(10, src))
L.apply_effect(40, IRRADIATE)
radiation_repository.radiate(src, 50)
// This meteor fries toasters.
/obj/effect/meteor/emp

View File

@@ -8,6 +8,7 @@
use_power = 1
idle_power_usage = 1
active_power_usage = 5
surgery_odds = 100
var/mob/living/carbon/human/victim = null
var/strapped = 0.0
var/obj/machinery/computer/operating/computer = null

View File

@@ -145,7 +145,7 @@
if(is_robot_module(O))
return 0
if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/a357) || istype(O,/obj/item/ammo_magazine/c38)) // Prevents ammo recycling exploit with speedloaders.
if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38)) // Prevents ammo recycling exploit with speedloaders.
user << "\The [O] is too hazardous to recycle with the autolathe!"
return
/* ToDo: Make this actually check for ammo and change the value of the magazine if it's empty. -Spades

View File

@@ -321,6 +321,7 @@
icon = 'icons/obj/doors/Dooruranium.dmi'
mineral = "uranium"
var/last_event = 0
var/rad_power = 7.5
/obj/machinery/door/airlock/process()
// Deliberate no call to parent.
@@ -338,15 +339,10 @@
/obj/machinery/door/airlock/uranium/process()
if(world.time > last_event+20)
if(prob(50))
radiate()
radiation_repository.radiate(src, rad_power)
last_event = world.time
..()
/obj/machinery/door/airlock/uranium/proc/radiate()
for(var/mob/living/L in range (3,src))
L.apply_effect(15,IRRADIATE,0)
return
/obj/machinery/door/airlock/phoron
name = "Phoron Airlock"
desc = "No way this can end badly."

View File

@@ -13,7 +13,7 @@
icon = 'icons/obj/doors/rapid_pdoor.dmi'
icon_state = null
min_force = 20 //minimum amount of force needed to damage the door with a melee weapon
var/material/implicit_material
// Icon states for different shutter types. Simply change this instead of rewriting the update_icon proc.
var/icon_state_open = null
var/icon_state_opening = null
@@ -29,6 +29,13 @@
//turning this off prevents awkward zone geometry in places like medbay lobby, for example.
block_air_zones = 0
/obj/machinery/door/blast/initialize()
..()
implicit_material = get_material_by_name("plasteel")
/obj/machinery/door/blast/get_material()
return implicit_material
// Proc: Bumped()
// Parameters: 1 (AM - Atom that tried to walk through this object)
// Description: If we are open returns zero, otherwise returns result of parent function.
@@ -46,6 +53,7 @@
icon_state = icon_state_closed
else
icon_state = icon_state_open
radiation_repository.resistance_cache.Remove(get_turf(src))
return
// Proc: force_open()

View File

@@ -364,6 +364,7 @@
icon_state = "door1"
else
icon_state = "door0"
radiation_repository.resistance_cache.Remove(get_turf(src))
return

View File

@@ -1028,7 +1028,7 @@
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access = list(access_engine_equip)
products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10,
products = list(/obj/item/device/geiger = 4,/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10,
/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,
/obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2,
/obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2,

View File

@@ -973,11 +973,7 @@
process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG)
if(..())
for(var/mob/living/carbon/M in view(EG.chassis))
if(istype(M,/mob/living/carbon/human))
M.apply_effect((EG.rad_per_cycle*3),IRRADIATE,0)
else
M.apply_effect(EG.rad_per_cycle, IRRADIATE)
radiation_repository.radiate(EG, (EG.rad_per_cycle * 3))
return 1

View File

@@ -0,0 +1,53 @@
#define RAD_LEVEL_LOW 5 //10 // Around the level at which radiation starts to become harmful
#define RAD_LEVEL_MODERATE 15 //15
#define RAD_LEVEL_HIGH 50 //50
#define RAD_LEVEL_VERY_HIGH 100 //100
//Geiger counter
//Rewritten version of TG's geiger counter
//I opted to show exact radiation levels
/obj/item/device/geiger
name = "geiger counter"
desc = "A handheld device used for detecting and measuring radiation in an area."
icon_state = "geiger_off"
item_state = "multitool"
w_class = ITEMSIZE_SMALL
var/scanning = 0
var/radiation_count = 0
/obj/item/device/geiger/New()
processing_objects |= src
/obj/item/device/geiger/process()
if(!scanning)
return
radiation_count = radiation_repository.get_rads_at_turf(get_turf(src))
update_icon()
/obj/item/device/geiger/examine(mob/user)
..(user)
to_chat(user, "<span class='warning'>[scanning ? "ambient" : "stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq.</span>")
/obj/item/device/geiger/attack_self(var/mob/user)
scanning = !scanning
update_icon()
to_chat(user, "<span class='notice'>\icon[src] You switch [scanning ? "on" : "off"] [src].</span>")
/obj/item/device/geiger/update_icon()
if(!scanning)
icon_state = "geiger_off"
return 1
switch(radiation_count)
if(null) icon_state = "geiger_on_1"
if(-INFINITY to RAD_LEVEL_LOW) icon_state = "geiger_on_1"
if(RAD_LEVEL_LOW + 1 to RAD_LEVEL_MODERATE) icon_state = "geiger_on_2"
if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) icon_state = "geiger_on_3"
if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) icon_state = "geiger_on_4"
if(RAD_LEVEL_VERY_HIGH + 1 to INFINITY) icon_state = "geiger_on_5"
#undef RAD_LEVEL_LOW
#undef RAD_LEVEL_MODERATE
#undef RAD_LEVEL_HIGH
#undef RAD_LEVEL_VERY_HIGH

View File

@@ -99,6 +99,8 @@ REAGENT SCANNER
if(M.status_flags & FAKEDEATH)
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
user.show_message("[OX] | [TX] | [BU] | [BR]")
if(M.radiation)
user.show_message("<span class='warning'>Radiation detected.</span>")
if(istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M
if(C.reagents.total_volume)

View File

@@ -452,11 +452,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
else
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
@@ -464,13 +464,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
var/name = prob(50) ? t.name : pick(teleportlocs)
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
else
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
qdel(a)

View File

@@ -124,7 +124,7 @@
/obj/item/weapon/handcuffs,
/obj/item/device/flash,
/obj/item/clothing/glasses,
/obj/item/ammo_casing/shotgun,
/obj/item/ammo_casing/a12g,
/obj/item/ammo_magazine,
/obj/item/weapon/cell/device,
/obj/item/weapon/reagent_containers/food/snacks/donut/,

View File

@@ -151,12 +151,12 @@
/obj/item/weapon/storage/box/blanks/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/blank(src)
new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/blanks/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/blank(src)
new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/beanbags
name = "box of beanbag shells"
@@ -167,12 +167,12 @@
/obj/item/weapon/storage/box/beanbags/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/beanbags/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/shotgunammo
name = "box of shotgun slugs"
@@ -183,12 +183,12 @@
/obj/item/weapon/storage/box/shotgunammo/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunammo/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunshells
name = "box of shotgun shells"
@@ -199,12 +199,12 @@
/obj/item/weapon/storage/box/shotgunshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/pellet(src)
new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/shotgunshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/pellet(src)
new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/flashshells
name = "box of illumination shells"
@@ -215,12 +215,12 @@
/obj/item/weapon/storage/box/flashshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/flash(src)
new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/flashshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/flash(src)
new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/stunshells
name = "box of stun shells"
@@ -231,12 +231,12 @@
/obj/item/weapon/storage/box/stunshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/stunshell(src)
new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/stunshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/stunshell(src)
new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/practiceshells
name = "box of practice shells"
@@ -247,12 +247,12 @@
/obj/item/weapon/storage/box/practiceshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/practice(src)
new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/practiceshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/practice(src)
new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/empshells
name = "box of emp shells"
@@ -263,12 +263,12 @@
/obj/item/weapon/storage/box/empshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/emp(src)
new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/empshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/emp(src)
new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/sniperammo
name = "box of 14.5mm shells"

View File

@@ -27,7 +27,7 @@
if("guns")
new /obj/item/weapon/gun/projectile/revolver(src)
new /obj/item/ammo_magazine/a357(src)
new /obj/item/ammo_magazine/s357(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/weapon/plastique(src)
new /obj/item/weapon/plastique(src)

View File

@@ -290,11 +290,11 @@
prob(2);/obj/item/weapon/storage/box/shotgunammo,
prob(4);/obj/item/weapon/storage/box/shotgunshells,
prob(1);/obj/item/weapon/storage/box/stunshells,
prob(2);/obj/item/ammo_magazine/c45m,
prob(4);/obj/item/ammo_magazine/c45m/rubber,
prob(4);/obj/item/ammo_magazine/c45m/flash,
prob(2);/obj/item/ammo_magazine/mc9mmt,
prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
prob(2);/obj/item/ammo_magazine/m45,
prob(4);/obj/item/ammo_magazine/m45/rubber,
prob(4);/obj/item/ammo_magazine/m45/flash,
prob(2);/obj/item/ammo_magazine/m9mmt,
prob(6);/obj/item/ammo_magazine/m9mmt/rubber)
/obj/random/action_figure

View File

@@ -234,7 +234,7 @@
new /obj/item/clothing/accessory/storage/black_vest(src)
new /obj/item/clothing/head/soft/sec/corp(src)
new /obj/item/clothing/under/rank/security/corp(src)
//new /obj/item/ammo_magazine/c45m/rubber(src) //VOREStation Edit
//new /obj/item/ammo_magazine/m45/rubber(src) //VOREStation Edit
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/weapon/cell/device/weapon(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
@@ -294,8 +294,8 @@
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/device/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/suit/storage/vest/detective(src)
new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
new /obj/item/ammo_casing/a44/rubber(src)
new /obj/item/ammo_casing/a44/rubber(src)
new /obj/item/taperoll/police(src)
new /obj/item/weapon/gun/projectile/revolver/consul(src) //VOREStation Edit
new /obj/item/clothing/accessory/holster/armpit(src)

View File

@@ -42,11 +42,11 @@
/obj/structure/closet/syndicate/nuclear/New()
..()
new /obj/item/ammo_magazine/a10mm(src)
new /obj/item/ammo_magazine/a10mm(src)
new /obj/item/ammo_magazine/a10mm(src)
new /obj/item/ammo_magazine/a10mm(src)
new /obj/item/ammo_magazine/a10mm(src)
new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/weapon/storage/box/handcuffs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/gun/energy/gun(src)

View File

@@ -156,6 +156,8 @@
new /obj/item/clothing/head/radiation(src)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
new /obj/item/device/geiger(src)
new /obj/item/device/geiger(src)
/*
* Bombsuit closet

View File

@@ -168,8 +168,7 @@
/obj/structure/simple_door/process()
if(!material.radioactivity)
return
for(var/mob/living/L in range(1,src))
L.apply_effect(round(material.radioactivity/3),IRRADIATE,0)
radiation_repository.radiate(src, round(material.radioactivity/3))
/obj/structure/simple_door/iron/New(var/newloc,var/material_name)
..(newloc, "iron")

View File

@@ -205,6 +205,7 @@
icon = 'icons/obj/rollerbed.dmi'
icon_state = "down"
anchored = 0
surgery_odds = 75
/obj/structure/bed/roller/update_icon()
return // Doesn't care about material or anything else.

View File

@@ -7,6 +7,8 @@
if(can_open == WALL_OPENING)
return
radiation_repository.resistance_cache.Remove(src)
if(density)
can_open = WALL_OPENING
//flick("[material.icon_base]fwall_opening", src)

View File

@@ -26,6 +26,7 @@
else if(material.opacity < 0.5 && opacity)
set_light(0)
radiation_repository.resistance_cache.Remove(src)
update_connections(1)
update_icon()

View File

@@ -48,6 +48,9 @@
if(!radiate())
return PROCESS_KILL
/turf/simulated/wall/proc/get_material()
return material
/turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj,/obj/item/projectile/beam))
burn(2500)
@@ -265,8 +268,7 @@
if(!total_radiation)
return
for(var/mob/living/L in range(3,src))
L.apply_effect(total_radiation, IRRADIATE,0)
radiation_repository.radiate(src, total_radiation)
return total_radiation
/turf/simulated/wall/proc/burn(temperature)

View File

@@ -480,7 +480,7 @@
M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand)
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store)
M.equip_to_slot_or_del(new /obj/item/ammo_magazine/s357(M), slot_l_store)
if ("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
@@ -592,7 +592,7 @@
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
sec_briefcase.contents += new /obj/item/ammo_magazine/a357
sec_briefcase.contents += new /obj/item/ammo_magazine/s357
sec_briefcase.contents += new /obj/item/weapon/plastique
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)

View File

@@ -77,6 +77,38 @@
display_name = "flats, black"
path = /obj/item/clothing/shoes/flats
/datum/gear/shoes/hitops/
display_name = "high-top, white"
path = /obj/item/clothing/shoes/hitops/
/datum/gear/shoes/hitops/red
display_name = "high-top, red"
path = /obj/item/clothing/shoes/hitops/red
/datum/gear/shoes/hitops/black
display_name = "high-top, black"
path = /obj/item/clothing/shoes/hitops/black
/datum/gear/shoes/hitops/orange
display_name = "high-top, orange"
path = /obj/item/clothing/shoes/hitops/orange
/datum/gear/shoes/hitops/blue
display_name = "high-top, blue"
path = /obj/item/clothing/shoes/hitops/blue
/datum/gear/shoes/hitops/green
display_name = "high-top, green"
path = /obj/item/clothing/shoes/hitops/green
/datum/gear/shoes/hitops/purple
display_name = "high-top, purple"
path = /obj/item/clothing/shoes/hitops/purple
/datum/gear/shoes/hitops/yellow
display_name = "high-top, yellow"
path = /obj/item/clothing/shoes/hitops/yellow
/datum/gear/shoes/flats/blue
display_name = "flats, blue"
path = /obj/item/clothing/shoes/flats/blue

View File

@@ -123,39 +123,39 @@
if (istype(H, /obj/item/weapon/handcuffs))
attach_cuffs(H, user)
/obj/item/clothing/shoes/hightops
name = "white high tops"
/obj/item/clothing/shoes/hitops
name = "white high-tops"
desc = "A pair of shoes that extends past the ankle. Based on a centuries-old, timeless design."
icon_state = "whitehi"
/obj/item/clothing/shoes/hightops/red
name = "red high tops"
/obj/item/clothing/shoes/hitops/red
name = "red high-tops"
icon_state = "redhi"
/obj/item/clothing/shoes/hightops/brown
name = "brown high tops"
/obj/item/clothing/shoes/hitops/brown
name = "brown high-tops"
icon_state = "brownhi"
/obj/item/clothing/shoes/hightops/black
name = "black high tops"
/obj/item/clothing/shoes/hitops/black
name = "black high-tops"
icon_state = "blackhi"
/obj/item/clothing/shoes/hightops/orange
name = "orange high tops"
/obj/item/clothing/shoes/hitops/orange
name = "orange high-tops"
icon_state = "orangehi"
/obj/item/clothing/shoes/hightops/blue
name = "blue high tops"
/obj/item/clothing/shoes/hitops/blue
name = "blue high-tops"
icon_state = "bluehi"
/obj/item/clothing/shoes/hightops/green
name = "green high tops"
/obj/item/clothing/shoes/hitops/green
name = "green high-tops"
icon_state = "greenhi"
/obj/item/clothing/shoes/hightops/purple
name = "purple high tops"
/obj/item/clothing/shoes/hitops/purple
name = "purple high-tops"
icon_state = "purplehi"
/obj/item/clothing/shoes/hightops/yellow
name = "yellow high tops"
/obj/item/clothing/shoes/hitops/yellow
name = "yellow high-tops"
icon_state = "yellowhi"

View File

@@ -2,7 +2,7 @@
var/const/enterBelt = 30
var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation
var/const/leaveBelt = 80
var/const/revokeAccess = 135
var/const/revokeAccess = 165
startWhen = 2
announceWhen = 1
endWhen = revokeAccess
@@ -27,23 +27,21 @@
radiate()
else if(activeFor == leaveBelt)
command_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
command_announcement.Announce("The station has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
/datum/event/radiation_storm/proc/radiate()
var/radiation_level = rand(15, 35)
for(var/z in using_map.station_levels)
radiation_repository.z_radiate(locate(1, 1, z), radiation_level, 1)
for(var/mob/living/carbon/C in living_mob_list)
var/area/A = get_area(C)
if(!A)
continue
if(!(A.z in using_map.station_levels))
continue
if(A.flags & RAD_SHIELDED)
continue
if(istype(C,/mob/living/carbon/human))
var/mob/living/carbon/human/H = C
H.apply_effect((rand(15,35)),IRRADIATE,0)
if(prob(5))
H.apply_effect((rand(40,70)),IRRADIATE,0)
if (prob(75))
randmutb(H) // Applies bad mutation
domutcheck(H,null,MUTCHK_FORCED)

View File

@@ -27,6 +27,7 @@
radiate()
/datum/event/solar_storm/proc/radiate()
// Note: Too complicated to be worth trying to use the radiation system for this. Its only in space anyway, so we make an exception in this case.
for(var/mob/living/L in living_mob_list)
var/turf/T = get_turf(L)
if(!T)
@@ -36,8 +37,7 @@
continue
//Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation.
L.apply_effect((rand(15,30)),IRRADIATE,blocked = L.getarmor(null, "rad"))
L.rad_act(rand(15, 30))
/datum/event/solar_storm/end()
command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert")

View File

@@ -332,7 +332,7 @@ proc/check_panel(mob/M)
qdel(O)
return
var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/a357,\
var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/s357,\
/obj/item/weapon/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
/obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\

View File

@@ -482,7 +482,7 @@ var/list/mining_overlay_cache = list()
M.flash_eyes()
if(prob(50))
M.Stun(5)
M.apply_effect(25, IRRADIATE)
radiation_repository.flat_radiate(src, 25, 200)
if(prob(25))
excavate_find(prob(5), finds[1])
else if(rand(1,500) == 1)

View File

@@ -94,7 +94,7 @@ emp_act
var/obj/item/organ/external/organ = organs_by_name[organ_name]
if(organ)
var/weight = organ_rel_size[organ_name]
armorval += getarmor_organ(organ, type) * weight
armorval += (getarmor_organ(organ, type) * weight)
total += weight
return (armorval/max(total, 1))

View File

@@ -352,6 +352,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
src.modules += new /obj/item/device/geiger(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal()
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel()
@@ -396,6 +397,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
src.emag = new /obj/item/weapon/melee/baton/robot/arm(src)
src.modules += new /obj/item/device/geiger(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(40000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)

View File

@@ -627,7 +627,6 @@
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/Human_face.dmi'
gender = MALE
shaved
name = "Shaved"

View File

@@ -164,6 +164,14 @@
/obj/effect/decal/cleanable/can_fall()
return TRUE
// These didn't fall anyways but better to nip this now just incase.
/atom/movable/lighting_overlay/can_fall()
return FALSE
// Mechas are anchored, so we need to override.
/obj/mecha/can_fall()
return TRUE
/obj/item/pipe/can_fall()
. = ..()
@@ -291,3 +299,33 @@
apply_damage(rand(0, damage), BRUTE, BP_R_ARM)
Weaken(4)
updatehealth()
/obj/mecha/handle_fall(var/turf/landing)
// First things first, break any lattice
var/obj/structure/lattice/lattice = locate(/obj/structure/lattice, loc)
if(lattice)
// Lattices seem a bit too flimsy to hold up a massive exosuit.
lattice.visible_message("<span class='danger'>\The [lattice] collapses under the weight of \the [src]!</span>")
qdel(lattice)
// Then call parent to have us actually fall
return ..()
/obj/mecha/fall_impact(var/atom/hit_atom)
// Tell the pilot that they just dropped down with a superheavy mecha.
if(occupant)
to_chat(occupant, "<span class='warning'>\The [src] crashed down onto \the [hit_atom]!</span>")
// Anything on the same tile as the landing tile is gonna have a bad day.
for(var/mob/living/L in hit_atom.contents)
L.visible_message("<span class='danger'>\The [src] crushes \the [L] as it lands on them!</span>")
L.adjustBruteLoss(rand(70, 100))
L.Weaken(8)
// Now to hurt the mech.
take_damage(rand(15, 30))
// And hurt the floor.
if(istype(hit_atom, /turf/simulated/floor))
var/turf/simulated/floor/ground = hit_atom
ground.break_tile()

View File

@@ -44,7 +44,7 @@
var/damage_type = CUT
// whether this wound needs a bandage/salve to heal at all
// the maximum amount of damage that this wound can have and still autoheal
var/autoheal_cutoff = 15
var/autoheal_cutoff = 10
@@ -336,7 +336,6 @@ datum/wound/puncture/massive
"moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5)
bleed_threshold = 20
max_bleeding_stage = 2 //only huge bruise and above can bleed.
autoheal_cutoff = 30
damage_type = BRUISE
/** BURNS **/

View File

@@ -526,9 +526,9 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
return ..()
var/use_amt = min(src.amount, ceil(S.burn_dam/3), 5)
var/use_amt = min(src.amount, ceil(S.burn_dam/5), 5)
if(can_use(use_amt))
if(S.robo_repair(3*use_amt, BURN, "some damaged wiring", src, user))
if(S.robo_repair(5*use_amt, BURN, "some damaged wiring", src, user))
src.use(use_amt)
else

View File

@@ -396,17 +396,13 @@
/obj/machinery/power/port_gen/pacman/super/UseFuel()
//produces a tiny amount of radiation when in use
if (prob(2*power_output))
for (var/mob/living/L in range(src, 5))
L.apply_effect(1, IRRADIATE) //should amount to ~5 rads per minute at max safe power
radiation_repository.radiate(src, 4)
..()
/obj/machinery/power/port_gen/pacman/super/explode()
//a nice burst of radiation
var/rads = 50 + (sheets + sheet_left)*1.5
for (var/mob/living/L in range(src, 10))
//should really fall with the square of the distance, but that makes the rads value drop too fast
//I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently
L.apply_effect(max(20, round(rads/get_dist(L,src))), IRRADIATE)
radiation_repository.radiate(src, (max(20, rads)))
explosion(src.loc, 3, 3, 5, 3)
qdel(src)

View File

@@ -31,6 +31,11 @@ var/global/list/rad_collectors = list()
last_power_new = 0
if(P && active)
var/rads = radiation_repository.get_rads_at_turf(get_turf(src))
if(rads)
receive_pulse(rads * 5) //Maths is hard
if(P)
if(P.air_contents.gas["phoron"] == 0)
investigate_log("<font color='red'>out of fuel</font>.","singulo")

View File

@@ -406,15 +406,13 @@
var/toxrange = 10
var/toxdamage = 4
var/radiation = 15
var/radiationmin = 3
if (src.energy>200)
toxdamage = round(((src.energy-150)/50)*4,1)
radiation = round(((src.energy-150)/50)*5,1)
radiationmin = round((radiation/5),1)//
radiation_repository.radiate(src, radiation) //Always radiate at max, so a decent dose of radiation is applied
for(var/mob/living/M in view(toxrange, src.loc))
if(M.status_flags & GODMODE)
continue
M.apply_effect(rand(radiationmin,radiation), IRRADIATE)
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
M.apply_effect(toxdamage, TOX)
return
@@ -448,13 +446,13 @@
/obj/singularity/proc/smwave()
for(var/mob/living/M in view(10, src.loc))
if(prob(67))
M.apply_effect(rand(energy), IRRADIATE)
M << "<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>"
M << "<span class=\"notice\">Miraculously, it fails to kill you.</span>"
to_chat(M, "<span class=\"warning\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>")
to_chat(M, "<span class=\"notice\">Miraculously, it fails to kill you.</span>")
else
M << "<span class=\"danger\">You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.</span>"
M << "<span class=\"danger\">You don't even have a moment to react as you are reduced to ashes by the intense radiation.</span>"
M.dust()
radiation_repository.radiate(src, rand(energy))
return
/obj/singularity/proc/pulse()

View File

@@ -1,6 +1,32 @@
/************************************************************************/
/*
# An explaination of the naming format for guns and ammo:
#
# a = Ammo, as in individual rounds of ammunition.
# b = Box, intended to have ammo taken out one at a time by hand.
# c = Clips, intended to reload magazines or guns quickly.
# m = Magazine, intended to hold rounds of ammo.
# s = Speedloaders, intended to reload guns quickly.
#
# Use this format, followed by the caliber. For example, a shotgun's caliber
# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
# for developers and in-game admins spawning these items, stick to this format.
# Likewise, when creating new rounds, the caliber variable should match whatever
# the name says.
#
# This comment is copied in rounds.dm as well.
#
# Also, if a magazine is only meant for a specific gun, include the name
# of the specific gun in the path. Example: m45uzi is only for the Uzi.
*/
/************************************************************************/
///////// .357 /////////
/obj/item/ammo_magazine/a357
/obj/item/ammo_magazine/s357
name = "speedloader (.357)"
desc = "A speedloader for .357 revolvers."
icon_state = "38"
@@ -12,103 +38,103 @@
///////// .38 /////////
/obj/item/ammo_magazine/c38
/obj/item/ammo_magazine/s38
name = "speedloader (.38)"
desc = "A speedloader for .38 revolvers."
icon_state = "38"
caliber = "38"
caliber = ".38"
matter = list(DEFAULT_WALL_MATERIAL = 360)
ammo_type = /obj/item/ammo_casing/c38
ammo_type = /obj/item/ammo_casing/a38
max_ammo = 6
multiple_sprites = 1
/obj/item/ammo_magazine/c38/rubber
/obj/item/ammo_magazine/s38/rubber
name = "speedloader (.38 rubber)"
ammo_type = /obj/item/ammo_casing/c38r
ammo_type = /obj/item/ammo_casing/a38r
/obj/item/ammo_magazine/c38/emp
name = "ammunition box (.38 haywire)"
ammo_type = /obj/item/ammo_casing/c38/emp
/obj/item/ammo_magazine/s38/emp
name = "speedloader (.38 haywire)"
ammo_type = /obj/item/ammo_casing/a38/emp
///////// .45 /////////
/obj/item/ammo_magazine/c45m
/obj/item/ammo_magazine/m45
name = "pistol magazine (.45)"
icon_state = "45"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
caliber = ".45"
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/c45m/empty
/obj/item/ammo_magazine/m45/empty
initial_ammo = 0
/obj/item/ammo_magazine/c45m/rubber
/obj/item/ammo_magazine/m45/rubber
name = "magazine (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c45r
ammo_type = /obj/item/ammo_casing/a45r
/obj/item/ammo_magazine/c45m/practice
/obj/item/ammo_magazine/m45/practice
name = "magazine (.45 practice)"
ammo_type = /obj/item/ammo_casing/c45p
ammo_type = /obj/item/ammo_casing/a45p
/obj/item/ammo_magazine/c45m/flash
/obj/item/ammo_magazine/m45/flash
name = "magazine (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45f
ammo_type = /obj/item/ammo_casing/a45f
/obj/item/ammo_magazine/c45m/ap
/obj/item/ammo_magazine/m45/ap
name = "magazine (.45 AP)"
ammo_type = /obj/item/ammo_casing/c45ap
ammo_type = /obj/item/ammo_casing/a45ap
/obj/item/ammo_magazine/box/emp/c45
/obj/item/ammo_magazine/box/emp/b45
name = "ammunition box (.45 haywire)"
ammo_type = /obj/item/ammo_casing/c45/emp
ammo_type = /obj/item/ammo_casing/a45/emp
/obj/item/ammo_magazine/c45uzi
/obj/item/ammo_magazine/m45uzi
name = "stick magazine (.45)"
icon_state = "uzi45"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = ".45"
max_ammo = 16
multiple_sprites = 1
/obj/item/ammo_magazine/c45uzi/empty
/obj/item/ammo_magazine/m45uzi/empty
initial_ammo = 0
/obj/item/ammo_magazine/tommymag
/obj/item/ammo_magazine/m45tommy
name = "tommygun magazine (.45)"
icon_state = "tommy-mag"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 1500)
caliber = ".45"
max_ammo = 20
/obj/item/ammo_magazine/tommymag/ap
/obj/item/ammo_magazine/m45tommy/ap
name = "tommygun magazine (.45 AP)"
ammo_type = /obj/item/ammo_casing/c45ap
ammo_type = /obj/item/ammo_casing/a45ap
/obj/item/ammo_magazine/tommymag/empty
/obj/item/ammo_magazine/m45tommy/empty
initial_ammo = 0
/obj/item/ammo_magazine/tommydrum
/obj/item/ammo_magazine/m45tommydrum
name = "tommygun drum magazine (.45)"
icon_state = "tommy-drum"
w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45
ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 3750)
caliber = ".45"
max_ammo = 50
/obj/item/ammo_magazine/tommydrum/ap
/obj/item/ammo_magazine/m45tommydrum/ap
name = "tommygun drum magazine (.45 AP)"
ammo_type = /obj/item/ammo_casing/c45ap
ammo_type = /obj/item/ammo_casing/a45ap
/obj/item/ammo_magazine/tommydrum/empty
/obj/item/ammo_magazine/m45tommydrum/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/c45
@@ -116,86 +142,86 @@
icon_state = "clip_pistol"
desc = "A stripper clip for reloading .45 rounds into magazines."
caliber = ".45"
ammo_type = /obj/item/ammo_casing/c45
ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c45/rubber
name = "ammo clip (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c45r
ammo_type = /obj/item/ammo_casing/a45r
/obj/item/ammo_magazine/clip/c45/practice
name = "ammo clip (.45 practice)"
ammo_type = /obj/item/ammo_casing/c45p
ammo_type = /obj/item/ammo_casing/a45p
/obj/item/ammo_magazine/clip/c45/flash
name = "ammo clip (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45f
ammo_type = /obj/item/ammo_casing/a45f
///////// 9mm /////////
/obj/item/ammo_magazine/mc9mm
/obj/item/ammo_magazine/m9mm
name = "magazine (9mm)"
icon_state = "9x19p"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 480)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 8
multiple_sprites = 1
/obj/item/ammo_magazine/mc9mm/empty
/obj/item/ammo_magazine/m9mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/mc9mm/flash
ammo_type = /obj/item/ammo_casing/c9mmf
/obj/item/ammo_magazine/m9mm/flash
ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/mc9mm/rubber
/obj/item/ammo_magazine/m9mm/rubber
name = "magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
ammo_type = /obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/mc9mm/practice
/obj/item/ammo_magazine/m9mm/practice
name = "magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
ammo_type = /obj/item/ammo_casing/a9mmp
/obj/item/ammo_magazine/mc9mmt
/obj/item/ammo_magazine/m9mmt
name = "top mounted magazine (9mm)"
icon_state = "9mmt"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c9mm
ammo_type = /obj/item/ammo_casing/a9mm
matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = "9mm"
max_ammo = 20
multiple_sprites = 1
/obj/item/ammo_magazine/mc9mmt/empty
/obj/item/ammo_magazine/m9mmt/empty
initial_ammo = 0
/obj/item/ammo_magazine/mc9mmt/rubber
/obj/item/ammo_magazine/m9mmt/rubber
name = "top mounted magazine (9mm rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
ammo_type = /obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/mc9mmt/flash
/obj/item/ammo_magazine/m9mmt/flash
name = "top mounted magazine (9mm flash)"
ammo_type = /obj/item/ammo_casing/c9mmf
ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/mc9mmt/practice
/obj/item/ammo_magazine/m9mmt/practice
name = "top mounted magazine (9mm practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
ammo_type = /obj/item/ammo_casing/a9mmp
/obj/item/ammo_magazine/p90
/obj/item/ammo_magazine/m9mmp90
name = "high capacity top mounted magazine (9mm armor-piercing)"
icon_state = "p90"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c9mm/ap
ammo_type = /obj/item/ammo_casing/a9mm/ap
matter = list(DEFAULT_WALL_MATERIAL = 3000)
caliber = "9mm"
max_ammo = 50
multiple_sprites = 1
/obj/item/ammo_magazine/p90/empty
/obj/item/ammo_magazine/m9mmp90/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/c9mm
@@ -203,60 +229,38 @@
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 9mm rounds into magazines."
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
ammo_type = /obj/item/ammo_casing/a9mm
matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/clip/c9mm/rubber
name = "ammo clip (.45 rubber)"
ammo_type = /obj/item/ammo_casing/c9mmr
ammo_type = /obj/item/ammo_casing/a9mmr
/obj/item/ammo_magazine/clip/c9mm/practice
name = "ammo clip (.45 practice)"
ammo_type = /obj/item/ammo_casing/c9mmp
ammo_type = /obj/item/ammo_casing/a9mmp
/obj/item/ammo_magazine/clip/c9mm/flash
name = "ammo clip (.45 flash)"
ammo_type = /obj/item/ammo_casing/c9mmf
ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets?
/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets?
name = "ammunition Box (9mm)"
icon_state = "9mm"
origin_tech = list(TECH_COMBAT = 2)
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm
ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 30
/obj/item/ammo_magazine/c9mm/empty
/obj/item/ammo_magazine/box/c9mm/empty
initial_ammo = 0
///////// 5mm /////////
/*
/obj/item/ammo_magazine/c5mm
name = "magazine (5mm)"
icon_state = "fiveseven"
mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c5mm
matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = "5mm"
max_ammo = 20
//multiple_sprites = 1
/obj/item/ammo_magazine/clip/c5mm
name = "ammo clip (5mm)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 5mm rounds into magazines."
caliber = "5mm"
ammo_type = /obj/item/ammo_casing/c5mm
matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 5mm casing = 60 metal
max_ammo = 9
multiple_sprites = 1
*/
///////// 10mm /////////
/obj/item/ammo_magazine/a10mm
/obj/item/ammo_magazine/m10mm
name = "magazine (10mm)"
icon_state = "10mm"
origin_tech = list(TECH_COMBAT = 2)
@@ -267,10 +271,10 @@
max_ammo = 20
multiple_sprites = 1
/obj/item/ammo_magazine/a10mm/empty
/obj/item/ammo_magazine/m10mm/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/a10mm
/obj/item/ammo_magazine/clip/c10mm
name = "ammo clip (10mm)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading 5mm rounds into magazines."
@@ -280,204 +284,221 @@
max_ammo = 9
multiple_sprites = 1
/obj/item/ammo_magazine/box/emp/a10mm
/obj/item/ammo_magazine/box/emp/b10
name = "ammunition box (10mm haywire)"
ammo_type = /obj/item/ammo_casing/a10mm/emp
///////// 5.56mm /////////
/obj/item/ammo_magazine/c556
/obj/item/ammo_magazine/m556
name = "magazine (5.56mm)"
icon_state = "c5.56"
icon_state = "m556"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "a556"
caliber = "5.56mm"
matter = list(DEFAULT_WALL_MATERIAL = 1800)
ammo_type = /obj/item/ammo_casing/a556
max_ammo = 20
multiple_sprites = 1
/obj/item/ammo_magazine/c556/ext
/obj/item/ammo_magazine/m556/ext
name = "extended magazine (5.56mm)"
matter = list(DEFAULT_WALL_MATERIAL = 2700)
max_ammo = 30
/obj/item/ammo_magazine/c556/empty
/obj/item/ammo_magazine/m556/empty
initial_ammo = 0
/obj/item/ammo_magazine/c556/ext/empty
/obj/item/ammo_magazine/m556/ext/empty
initial_ammo = 0
/obj/item/ammo_magazine/c556/practice
/obj/item/ammo_magazine/m556/practice
name = "magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p
/obj/item/ammo_magazine/c556/practice/ext
/obj/item/ammo_magazine/m556/practice/ext
name = "extended magazine (5.56mm practice)"
max_ammo = 30
/obj/item/ammo_magazine/c556/ap
/obj/item/ammo_magazine/m556/ap
name = "magazine (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/c556/ap/ext
/obj/item/ammo_magazine/m556/ap/ext
name = "extended magazine (5.56mm armor-piercing)"
max_ammo = 30
/obj/item/ammo_magazine/clip/a556
/obj/item/ammo_magazine/m556/small
name = "reduced magazine (5.56mm)"
icon_state = "m556-small"
matter = list(DEFAULT_WALL_MATERIAL = 900)
max_ammo = 10
/obj/item/ammo_magazine/m556/small/empty
initial_ammo = 0
/obj/item/ammo_magazine/m556/small/practice
name = "magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p
/obj/item/ammo_magazine/m556/small/ap
name = "magazine (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/clip/c556
name = "ammo clip (5.56mm)"
icon_state = "clip_rifle"
caliber = "a556"
caliber = "5.56mm"
ammo_type = /obj/item/ammo_casing/a556
matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal
max_ammo = 5
multiple_sprites = 1
/obj/item/ammo_magazine/clip/a556/ap
/obj/item/ammo_magazine/clip/c556/ap
name = "rifle clip (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/clip/a556/practice
/obj/item/ammo_magazine/clip/c556/practice
name = "rifle clip (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556
/obj/item/ammo_magazine/a556
/obj/item/ammo_magazine/m556saw
name = "magazine box (5.56mm)"
icon_state = "a556"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = "a556"
caliber = "5.56mm"
matter = list(DEFAULT_WALL_MATERIAL = 10000)
ammo_type = /obj/item/ammo_casing/a556
w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!!
max_ammo = 50
multiple_sprites = 1
/obj/item/ammo_magazine/a556/ap
/obj/item/ammo_magazine/m556saw/ap
name = "magazine box (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/a556/empty
/obj/item/ammo_magazine/m556saw/empty
initial_ammo = 0
///////// .50 AE /////////
/obj/item/ammo_magazine/a50
/obj/item/ammo_magazine/m50
name = "magazine (.50 AE)"
icon_state = "50ae"
origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE
caliber = ".50"
caliber = ".50AE"
matter = list(DEFAULT_WALL_MATERIAL = 1260)
ammo_type = /obj/item/ammo_casing/a50
ammo_type = /obj/item/ammo_casing/a50ae
max_ammo = 7
multiple_sprites = 1
/obj/item/ammo_magazine/a50/empty
/obj/item/ammo_magazine/m50/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/a50
/obj/item/ammo_magazine/clip/c50
name = "ammo clip (.50 AE)"
icon_state = "clip_pistol"
desc = "A stripper clip for reloading .50 Action Express rounds into magazines."
caliber = ".50"
ammo_type = /obj/item/ammo_casing/a50
caliber = ".50AE"
ammo_type = /obj/item/ammo_casing/a50ae
matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal
max_ammo = 9
multiple_sprites = 1
///////// 7.62mm /////////
/obj/item/ammo_magazine/c762
/obj/item/ammo_magazine/m762
name = "magazine (7.62mm)"
icon_state = "c7.62"
icon_state = "m762-small"
mag_type = MAGAZINE
caliber = "a762"
caliber = "7.62mm"
matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 20 // VOREStation Edit - This one is supposed to be bigger than the small one.
multiple_sprites = 1
/obj/item/ammo_magazine/c762/ap
name = "magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/c762/empty
initial_ammo = 0
/obj/item/ammo_magazine/s762 // 's' for small!
name = "magazine (7.62mm)"
icon_state = "SVD"
mag_type = MAGAZINE
caliber = "a762"
matter = list(DEFAULT_WALL_MATERIAL = 1000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 10
multiple_sprites = 1
/obj/item/ammo_magazine/s762/empty
initial_ammo = 0
/obj/item/ammo_magazine/s762/ap
/obj/item/ammo_magazine/m762/ap
name = "magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/clip/a762
/obj/item/ammo_magazine/m762/empty
initial_ammo = 0
/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle.
name = "magazine (7.62mm)"
icon_state = "m762"
mag_type = MAGAZINE
caliber = "7.62mm"
matter = list(DEFAULT_WALL_MATERIAL = 4000)
ammo_type = /obj/item/ammo_casing/a762
max_ammo = 20
multiple_sprites = 1
/obj/item/ammo_magazine/m762m/ap
name = "magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/m762m/empty
initial_ammo = 0
/obj/item/ammo_magazine/clip/c762
name = "ammo clip (7.62mm)"
icon_state = "clip_rifle"
caliber = "a762"
caliber = "7.62mm"
ammo_type = /obj/item/ammo_casing/a762
matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal
max_ammo = 5
multiple_sprites = 1
/obj/item/ammo_magazine/clip/a762/ap
/obj/item/ammo_magazine/clip/c762/ap
name = "rifle clip (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap
/obj/item/ammo_magazine/clip/a762/practice
/obj/item/ammo_magazine/clip/c762/practice
name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a762p
///////// 12g /////////
/obj/item/ammo_magazine/g12
/obj/item/ammo_magazine/m12gdrum
name = "magazine (12 gauge)"
icon_state = "12g"
mag_type = MAGAZINE
caliber = "shotgun"
caliber = "12g"
matter = list(DEFAULT_WALL_MATERIAL = 2200)
ammo_type = /obj/item/ammo_casing/shotgun
ammo_type = /obj/item/ammo_casing/a12g
max_ammo = 24
multiple_sprites = 1
/obj/item/ammo_magazine/g12/beanbag
/obj/item/ammo_magazine/m12gdrum/beanbag
name = "magazine (12 gauge beanbag)"
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
ammo_type = /obj/item/ammo_casing/a12g/beanbag
/obj/item/ammo_magazine/g12/pellet
/obj/item/ammo_magazine/m12gdrum/pellet
name = "magazine (12 gauge pellet)"
ammo_type = /obj/item/ammo_casing/shotgun/pellet
ammo_type = /obj/item/ammo_casing/a12g/pellet
/obj/item/ammo_magazine/g12/flash
/obj/item/ammo_magazine/m12gdrum/flash
name = "magazine (12 gauge flash)"
ammo_type = /obj/item/ammo_casing/shotgun/flash
ammo_type = /obj/item/ammo_casing/a12g/flash
/obj/item/ammo_magazine/g12/empty
/obj/item/ammo_magazine/m12gdrum/empty
initial_ammo = 0
///////// .75 Gyrojet /////////
/obj/item/ammo_magazine/a75
/obj/item/ammo_magazine/m75
name = "ammo magazine (.75 Gyrojet)"
icon_state = "75"
mag_type = MAGAZINE
caliber = "75"
caliber = ".75"
ammo_type = /obj/item/ammo_casing/a75
multiple_sprites = 1
max_ammo = 4
/obj/item/ammo_magazine/a75/empty
/obj/item/ammo_magazine/m75/empty
initial_ammo = 0
///////// Misc. /////////

View File

@@ -1,115 +1,145 @@
/************************************************************************/
/*
# An explaination of the naming format for guns and ammo:
#
# a = Ammo, as in individual rounds of ammunition.
# b = Box, intended to have ammo taken out one at a time by hand.
# c = Clips, intended to reload magazines or guns quickly.
# m = Magazine, intended to hold rounds of ammo.
# s = Speedloaders, intended to reload guns quickly.
#
# Use this format, followed by the caliber. For example, a shotgun's caliber
# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
# for developers and in-game admins spawning these items, stick to this format.
# Likewise, when creating new rounds, the caliber variable should match whatever
# the name says.
#
# This comment is copied in magazines.dm as well.
*/
/************************************************************************/
/*
* .357
*/
/obj/item/ammo_casing/a357
desc = "A .357 bullet casing."
caliber = "357"
projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a50
desc = "A .50AE bullet casing."
caliber = ".50"
projectile_type = /obj/item/projectile/bullet/pistol/strong
/*
* .38
*/
/obj/item/ammo_casing/a75
desc = "A .75 gyrojet rocket sheathe."
caliber = "75"
projectile_type = /obj/item/projectile/bullet/gyro
/obj/item/ammo_casing/c38
/obj/item/ammo_casing/a38
desc = "A .38 bullet casing."
caliber = "38"
caliber = ".38"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/c38r
/obj/item/ammo_casing/a38r
desc = "A .38 rubber bullet casing."
caliber = "38"
caliber = ".38"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c38/emp
/obj/item/ammo_casing/a38/emp
name = ".38 haywire round"
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
icon_state = "empcasing"
projectile_type = /obj/item/projectile/ion/small
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/*
* .50 Action Express
*/
/obj/item/ammo_casing/a50ae
desc = "A .50AE bullet casing."
caliber = ".50AE"
projectile_type = /obj/item/projectile/bullet/pistol/strong
/*
* .75 (aka Gyrojet Rockets, aka admin abuse)
*/
/obj/item/ammo_casing/a75
desc = "A .75 gyrojet rocket sheathe."
caliber = ".75"
projectile_type = /obj/item/projectile/bullet/gyro
/*
* 9mm
*/
/obj/item/ammo_casing/c9mm
/obj/item/ammo_casing/a9mm
desc = "A 9mm bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/c9mm/ap
/obj/item/ammo_casing/a9mm/ap
desc = "A 9mm armor-piercing bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/ap
/obj/item/ammo_casing/c9mmf
/obj/item/ammo_casing/a9mmf
desc = "A 9mm flash shell casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c9mmr
/obj/item/ammo_casing/a9mmr
desc = "A 9mm rubber bullet casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c9mmp
/obj/item/ammo_casing/a9mmp
desc = "A 9mm practice bullet casing."
caliber = "9mm"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/*
/obj/item/ammo_casing/c5mm
desc = "A 5mm bullet casing."
caliber = "5mm"
projectile_type = /obj/item/projectile/bullet/pistol/ap
*/
/*
* 45 ammo
* .45
*/
/obj/item/ammo_casing/c45
/obj/item/ammo_casing/a45
desc = "A .45 bullet casing."
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/medium
/obj/item/ammo_casing/c45ap
/obj/item/ammo_casing/a45ap
desc = "A .45 Armor-Piercing bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
/obj/item/ammo_casing/c45p
/obj/item/ammo_casing/a45p
desc = "A .45 practice bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45r
/obj/item/ammo_casing/a45r
desc = "A .45 rubber bullet casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c45f
/obj/item/ammo_casing/a45f
desc = "A .45 flash shell casing."
caliber = ".45"
icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c45/emp
/obj/item/ammo_casing/a45/emp
name = ".45 haywire round"
desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
projectile_type = /obj/item/projectile/ion/small
icon_state = "empcasing"
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/obj/item/ammo_casing/c45/hp
/obj/item/ammo_casing/a45/hp
desc = "A .45 hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow
@@ -131,39 +161,39 @@
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/*
* Shotguns
* 12g (aka shotgun ammo)
*/
/obj/item/ammo_casing/shotgun
/obj/item/ammo_casing/a12g
name = "shotgun slug"
desc = "A 12 gauge slug."
icon_state = "slshell"
caliber = "shotgun"
caliber = "12g"
projectile_type = /obj/item/projectile/bullet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/shotgun/pellet
/obj/item/ammo_casing/a12g/pellet
name = "shotgun shell"
desc = "A 12 gauge shell."
icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/pellet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/shotgun/blank
/obj/item/ammo_casing/a12g/blank
name = "shotgun shell"
desc = "A blank shell."
icon_state = "blshell"
projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/shotgun/practice
/obj/item/ammo_casing/a12g/practice
name = "shotgun shell"
desc = "A practice shell."
icon_state = "pshell"
projectile_type = /obj/item/projectile/bullet/shotgun/practice
matter = list("metal" = 90)
/obj/item/ammo_casing/shotgun/beanbag
/obj/item/ammo_casing/a12g/beanbag
name = "beanbag shell"
desc = "A beanbag shell."
icon_state = "bshell"
@@ -172,26 +202,26 @@
//Can stun in one hit if aimed at the head, but
//is blocked by clothing that stops tasers and is vulnerable to EMP
/obj/item/ammo_casing/shotgun/stunshell
/obj/item/ammo_casing/a12g/stunshell
name = "stun shell"
desc = "A 12 gauge taser cartridge."
icon_state = "stunshell"
projectile_type = /obj/item/projectile/energy/electrode/stunshot
matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
/obj/item/ammo_casing/shotgun/stunshell/emp_act(severity)
/obj/item/ammo_casing/a12g/stunshell/emp_act(severity)
if(prob(100/severity)) BB = null
update_icon()
//Does not stun, only blinds, but has area of effect.
/obj/item/ammo_casing/shotgun/flash
/obj/item/ammo_casing/a12g/flash
name = "flash shell"
desc = "A chemical shell used to signal distress or provide illumination."
icon_state = "fshell"
projectile_type = /obj/item/projectile/energy/flash/flare
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
/obj/item/ammo_casing/shotgun/emp
/obj/item/ammo_casing/a12g/emp
name = "ion shell"
desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
icon_state = "empshell"
@@ -200,12 +230,12 @@
matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
/*
* 762mm
* 7.62mm
*/
/obj/item/ammo_casing/a762
desc = "A 7.62mm bullet casing."
caliber = "a762"
caliber = "7.62mm"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a762
@@ -215,7 +245,7 @@
/obj/item/ammo_casing/a762p
desc = "A 7.62mm practice bullet casing."
caliber = "a762"
caliber = "7.62mm"
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice
@@ -228,7 +258,9 @@
desc = "A 7.62mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow
//145mm
/*
* 14.5mm (anti-materiel rifle round)
*/
/obj/item/ammo_casing/a145
desc = "A 14.5mm shell."
@@ -238,12 +270,12 @@
matter = list(DEFAULT_WALL_MATERIAL = 1250)
/*
* 556mm
* 5.56mm
*/
/obj/item/ammo_casing/a556
desc = "A 5.56mm bullet casing."
caliber = "a556"
caliber = "5.56mm"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a556
@@ -253,7 +285,7 @@
/obj/item/ammo_casing/a556p
desc = "A 5.56mm practice bullet casing."
caliber = "a556"
caliber = "5.56mm"
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice

View File

@@ -8,7 +8,7 @@
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
ammo_type = /obj/item/ammo_casing/c9mm
ammo_type = /obj/item/ammo_casing/a9mm
multi_aim = 1
burst_delay = 2
@@ -33,8 +33,8 @@
slot_flags = SLOT_BELT|SLOT_BACK
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a10mm
allowed_magazines = list(/obj/item/ammo_magazine/a10mm)
magazine_type = /obj/item/ammo_magazine/m10mm
allowed_magazines = list(/obj/item/ammo_magazine/m10mm)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -56,12 +56,12 @@
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
caliber = "a556"
caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c556
allowed_magazines = list(/obj/item/ammo_magazine/c556)
magazine_type = /obj/item/ammo_magazine/m556
allowed_magazines = list(/obj/item/ammo_magazine/m556)
one_handed_penalty = 4
@@ -73,8 +73,8 @@
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands)
..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/s762))
icon_state = "arifle-small"
if(istype(ammo_magazine,/obj/item/ammo_magazine/m556/small))
icon_state = "arifle-small" // If using the small magazines, use the small magazine sprite.
else
icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon()
@@ -88,11 +88,11 @@
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
ammo_type = "/obj/item/ammo_casing/c9mmr"
ammo_type = "/obj/item/ammo_casing/a9mmr"
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber
allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt)
magazine_type = /obj/item/ammo_magazine/m9mmt/rubber
allowed_magazines = list(/obj/item/ammo_magazine/m9mmt)
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
..()
@@ -109,14 +109,14 @@
item_state = "z8carbine"
w_class = ITEMSIZE_LARGE
force = 10
caliber = "a762"
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/Gunshot.ogg'
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762
allowed_magazines = list(/obj/item/ammo_magazine/c762)
magazine_type = /obj/item/ammo_magazine/m762
allowed_magazines = list(/obj/item/ammo_magazine/m762)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -181,14 +181,14 @@
force = 10
slot_flags = 0
max_shells = 50
caliber = "a556"
caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2)
slot_flags = SLOT_BACK
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/machinegun.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a556
allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/c556)
magazine_type = /obj/item/ammo_magazine/m556saw
allowed_magazines = list(/obj/item/ammo_magazine/m556saw, /obj/item/ammo_magazine/m556)
one_handed_penalty = 6
@@ -225,7 +225,7 @@
return ..() //once open, behave like normal
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
if(istype(ammo_magazine,/obj/item/ammo_magazine/c762))
if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
icon_state = "l6[cover_open ? "open" : "closed"]mag"
item_state = icon_state
else
@@ -252,13 +252,13 @@
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
caliber = "shotgun"
caliber = "12g"
fire_sound = 'sound/weapons/shotgun.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/g12
allowed_magazines = list(/obj/item/ammo_magazine/g12)
magazine_type = /obj/item/ammo_magazine/m12gdrum
allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum)
one_handed_penalty = 4
@@ -284,8 +284,8 @@
load_method = MAGAZINE
caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
magazine_type = /obj/item/ammo_magazine/c45uzi
allowed_magazines = list(/obj/item/ammo_magazine/c45uzi)
magazine_type = /obj/item/ammo_magazine/m45uzi
allowed_magazines = list(/obj/item/ammo_magazine/m45uzi)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -310,8 +310,8 @@
slot_flags = SLOT_BELT // ToDo: Belt sprite.
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/p90
allowed_magazines = list(/obj/item/ammo_magazine/p90, /obj/item/ammo_magazine/mc9mmt) // ToDo: New sprite for the different mag.
magazine_type = /obj/item/ammo_magazine/m9mmp90
allowed_magazines = list(/obj/item/ammo_magazine/m9mmp90, /obj/item/ammo_magazine/m9mmt) // ToDo: New sprite for the different mag.
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -330,8 +330,8 @@
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
slot_flags = SLOT_BELT // ToDo: Belt sprite.
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/tommymag
allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum)
magazine_type = /obj/item/ammo_magazine/m45tommy
allowed_magazines = list(/obj/item/ammo_magazine/m45tommy, /obj/item/ammo_magazine/m45tommydrum)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -343,19 +343,19 @@
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
// update_held_icon()
/obj/item/weapon/gun/projectile/automatic/carbine
/obj/item/weapon/gun/projectile/automatic/carbine // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start.
name = "assault carbine"
desc = "The bullpup configured GP3000 is a lightweight, compact, military-grade assault rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. The serial number on this one has been scratched off. Uses 5.56mm rounds."
icon_state = "bullpup"
item_state = "bullpup"
w_class = ITEMSIZE_LARGE
force = 10
caliber = "a762"
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762
allowed_magazines = list(/obj/item/ammo_magazine/c762)
magazine_type = /obj/item/ammo_magazine/m762m
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
one_handed_penalty = 4
@@ -366,8 +366,8 @@
/obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands)
..()
if(ammo_magazine)
icon_state = "bullpup"
if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite.
else
icon_state = "bullpup-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"

View File

@@ -7,7 +7,7 @@
icon_state = "boltaction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
caliber = "a762"
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER
@@ -60,7 +60,7 @@
icon_state = "leveraction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
caliber = "a762"
caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER

View File

@@ -2,8 +2,8 @@
var/unique_reskin
name = ".45 pistol"
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
magazine_type = /obj/item/ammo_magazine/c45m
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/m45)
icon_state = "colt"
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/projectile/colt/detective
desc = "A Martian recreation of an old Terran pistol. Uses .45 rounds."
magazine_type = /obj/item/ammo_magazine/c45m/rubber
magazine_type = /obj/item/ammo_magazine/m45/rubber
/obj/item/weapon/gun/projectile/colt/detective/update_icon()
if(ammo_magazine)
@@ -71,7 +71,7 @@
name = ".45 pistol"
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Found pretty much everywhere humans are. Uses .45 rounds."
icon_state = "secguncomp"
magazine_type = /obj/item/ammo_magazine/c45m/rubber
magazine_type = /obj/item/ammo_magazine/m45/rubber
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg'
@@ -86,7 +86,7 @@
/obj/item/weapon/gun/projectile/sec/flash
name = ".45 signal pistol"
magazine_type = /obj/item/ammo_magazine/c45m/flash
magazine_type = /obj/item/ammo_magazine/m45/flash
/obj/item/weapon/gun/projectile/sec/wood
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. This one has a sweet wooden grip. Uses .45 rounds."
@@ -111,8 +111,8 @@
recoil = 0
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c45m
allowed_magazines = list(/obj/item/ammo_magazine/c45m)
magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/m45)
/obj/item/weapon/gun/projectile/deagle
name = "desert eagle"
@@ -120,11 +120,11 @@
icon_state = "deagle"
item_state = "deagle"
force = 14.0
caliber = ".50"
caliber = ".50AE"
load_method = MAGAZINE
fire_sound = 'sound/weapons/deagle.ogg'
magazine_type = /obj/item/ammo_magazine/a50
allowed_magazines = list(/obj/item/ammo_magazine/a50)
magazine_type = /obj/item/ammo_magazine/m50
allowed_magazines = list(/obj/item/ammo_magazine/m50)
/obj/item/weapon/gun/projectile/deagle/update_icon()
..()
@@ -168,13 +168,13 @@
desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you."
icon_state = "gyropistol"
max_shells = 8
caliber = "75"
caliber = ".75"
fire_sound = 'sound/weapons/rpg.ogg'
origin_tech = list(TECH_COMBAT = 3)
ammo_type = "/obj/item/ammo_casing/a75"
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a75
allowed_magazines = list(/obj/item/ammo_magazine/a75)
magazine_type = /obj/item/ammo_magazine/m75
allowed_magazines = list(/obj/item/ammo_magazine/m75)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -196,12 +196,12 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/pistol/flash
name = "holdout signal pistol"
magazine_type = /obj/item/ammo_magazine/mc9mm/flash
magazine_type = /obj/item/ammo_magazine/m9mm/flash
/obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob)
if(user.get_inactive_hand() == src)
@@ -256,17 +256,17 @@
var/global/list/ammo_types = list(
/obj/item/ammo_casing/a357 = ".357",
/obj/item/ammo_casing/c9mmf = "9mm",
/obj/item/ammo_casing/c45f = ".45",
/obj/item/ammo_casing/a9mmf = "9mm",
/obj/item/ammo_casing/a45f = ".45",
/obj/item/ammo_casing/a10mm = "10mm",
/obj/item/ammo_casing/shotgun = "12 gauge",
/obj/item/ammo_casing/shotgun = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/beanbag = "12 gauge",
/obj/item/ammo_casing/shotgun/stunshell = "12 gauge",
/obj/item/ammo_casing/shotgun/flash = "12 gauge",
/obj/item/ammo_casing/a12g = "12 gauge",
/obj/item/ammo_casing/a12g = "12 gauge",
/obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/a12g/beanbag = "12 gauge",
/obj/item/ammo_casing/a12g/stunshell = "12 gauge",
/obj/item/ammo_casing/a12g/flash = "12 gauge",
/obj/item/ammo_casing/a762 = "7.62mm",
/obj/item/ammo_casing/a556 = "5.56mm"
)
@@ -299,8 +299,8 @@
caliber = "9mm"
load_method = MAGAZINE
fire_sound = 'sound/weapons/semiauto.ogg'
magazine_type = /obj/item/ammo_magazine/mc9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/luger/update_icon()
..()

View File

@@ -43,10 +43,10 @@
name = "revolver"
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
icon_state = "detective"
caliber = "38"
caliber = ".38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
ammo_type = /obj/item/ammo_casing/c38
ammo_type = /obj/item/ammo_casing/a38
/obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun()
set name = "Name Gun"
@@ -71,13 +71,13 @@
name = "Deckard .38"
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
icon_state = "deckard-empty"
caliber = "38"
caliber = ".38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
ammo_type = /obj/item/ammo_casing/c38
ammo_type = /obj/item/ammo_casing/a38
/obj/item/weapon/gun/projectile/revolver/deckard/emp
ammo_type = /obj/item/ammo_casing/c38/emp
ammo_type = /obj/item/ammo_casing/a38/emp
/obj/item/weapon/gun/projectile/revolver/deckard/update_icon()
@@ -107,13 +107,13 @@
name = "\"The Judge\""
desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12 shotgun rounds."
icon_state = "judge"
caliber = "shotgun"
caliber = "12g"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
max_shells = 5
fire_sound = 'sound/weapons/shotgun.ogg'
recoil = 2 // ow my fucking hand
accuracy = -1 // smooth bore + short barrel = shit accuracy
ammo_type = /obj/item/ammo_casing/shotgun
ammo_type = /obj/item/ammo_casing/a12g
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.
/obj/item/weapon/gun/projectile/revolver/lemat
@@ -124,11 +124,11 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
max_shells = 9
caliber = "38"
ammo_type = /obj/item/ammo_casing/c38
caliber = ".38"
ammo_type = /obj/item/ammo_casing/a38
var/secondary_max_shells = 1
var/secondary_caliber = "shotgun"
var/secondary_ammo_type = /obj/item/ammo_casing/shotgun
var/secondary_caliber = "12g"
var/secondary_ammo_type = /obj/item/ammo_casing/a12g
var/flipped_firing = 0
var/list/secondary_loaded = list()
var/list/tertiary_loaded = list()

View File

@@ -8,10 +8,10 @@
force = 10
flags = CONDUCT
slot_flags = SLOT_BACK
caliber = "shotgun"
caliber = "12g"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
load_method = SINGLE_CASING
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
ammo_type = /obj/item/ammo_casing/a12g/beanbag
handle_casings = HOLD_CASINGS
fire_sound = 'sound/weapons/shotgun.ogg'
var/recentpump = 0 // to prevent spammage
@@ -48,7 +48,7 @@
item_state = "cshotgun"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8.
ammo_type = /obj/item/ammo_casing/shotgun
ammo_type = /obj/item/ammo_casing/a12g
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
name = "double-barreled shotgun"
@@ -64,9 +64,9 @@
force = 10
flags = CONDUCT
slot_flags = SLOT_BACK
caliber = "shotgun"
caliber = "12g"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
ammo_type = /obj/item/ammo_casing/a12g/beanbag
burst_delay = 0
firemodes = list(
@@ -75,12 +75,12 @@
)
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet
ammo_type = /obj/item/ammo_casing/shotgun/pellet
ammo_type = /obj/item/ammo_casing/a12g/pellet
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare
name = "signal shotgun"
desc = "A double-barreled shotgun meant to fire signal flash shells."
ammo_type = /obj/item/ammo_casing/shotgun/flash
ammo_type = /obj/item/ammo_casing/a12g/flash
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump)
..(user, allow_dump=1)
@@ -115,6 +115,6 @@
icon_state = "sawnshotgun"
item_state = "sawnshotgun"
slot_flags = SLOT_BELT|SLOT_HOLSTER
ammo_type = /obj/item/ammo_casing/shotgun/pellet
ammo_type = /obj/item/ammo_casing/a12g/pellet
w_class = ITEMSIZE_NORMAL
force = 5

View File

@@ -80,7 +80,7 @@
slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
recoil = 2 //extra kickback
caliber = "a762"
caliber = "7.62mm"
load_method = MAGAZINE
accuracy = -3 //shooting at the hip
scoped_accuracy = 0
@@ -88,11 +88,11 @@
one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
fire_sound = 'sound/weapons/SVD_shot.ogg'
magazine_type = /obj/item/ammo_magazine/SVD
allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/c762)
allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/m762)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
// if(istype(ammo_magazine,/obj/item/ammo_magazine/c762)
// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)
// icon_state = "SVD-bigmag" //No icon for this exists yet.
if(ammo_magazine)
icon_state = "SVD"

View File

@@ -62,16 +62,16 @@ var/global/list/datum/supply_drop_loot/supply_drop
/obj/item/weapon/storage/box/emps,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/ammo_magazine/c762/ap,
/obj/item/ammo_magazine/c762/ap,
/obj/item/ammo_magazine/m762/ap,
/obj/item/ammo_magazine/m762/ap,
/obj/item/weapon/gun/projectile/colt,
/obj/item/ammo_magazine/c45m,
/obj/item/ammo_magazine/m45,
/obj/item/weapon/material/hatchet/tacknife/combatknife)
/datum/supply_drop_loot/heavy_warfare
name = "Heavy Warfare"
container = /obj/structure/largecrate
/datum/supply_drop_loot/armour/New()
/datum/supply_drop_loot/heavy_warfare/New()
..()
contents = list(
/obj/item/clothing/head/helmet/combat,
@@ -83,8 +83,8 @@ var/global/list/datum/supply_drop_loot/supply_drop
/obj/item/clothing/accessory/storage/black_drop_pouches,
/obj/item/weapon/storage/backpack/dufflebag/sec,
/obj/item/weapon/gun/projectile/automatic/carbine,
/obj/item/ammo_magazine/c762/ap,
/obj/item/ammo_magazine/c762,
/obj/item/ammo_magazine/m762/ap,
/obj/item/ammo_magazine/m762,
/obj/item/weapon/shield/energy,
/obj/item/weapon/grenade/frag,
/obj/item/weapon/grenade/frag,
@@ -99,7 +99,7 @@ var/global/list/datum/supply_drop_loot/supply_drop
datum/supply_drop_loot/riot
name = "Riot Gear"
container = /obj/structure/largecrate
/datum/supply_drop_loot/armour/New()
/datum/supply_drop_loot/riot/New()
..()
contents = list(
/obj/item/clothing/head/helmet/riot,

View File

@@ -545,7 +545,7 @@ other types of metals and chemistry for reagents).
id = "ammo_9mm"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100)
build_path = /obj/item/ammo_magazine/c9mm
build_path = /obj/item/ammo_magazine/box/c9mm
sort_string = "TAACA"
/datum/design/item/weapon/stunshell
@@ -553,7 +553,7 @@ other types of metals and chemistry for reagents).
id = "stunshell"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 4000)
build_path = /obj/item/ammo_casing/shotgun/stunshell
build_path = /obj/item/ammo_casing/a12g/stunshell
sort_string = "TAACB"
/datum/design/item/weapon/chemsprayer

View File

@@ -23,8 +23,11 @@
#define DAMAGE_RATE_LIMIT 3 //damage rate cap at power = 300, scales linearly with power
//These would be what you would get at point blank, decreases with distance
#define DETONATION_RADS 200
// Base variants are applied to everyone on the same Z level
// Range variants are applied on per-range basis: numbers here are on point blank, it scales with the map size (assumes square shaped Z levels)
#define DETONATION_RADS 20
#define DETONATION_HALLUCINATION_BASE 300
#define DETONATION_HALLUCINATION_RANGE 300
#define DETONATION_HALLUCINATION 600
@@ -95,6 +98,11 @@
anchored = 1
grav_pulling = 1
exploded = 1
var/turf/TS = get_turf(src) // The turf supermatter is on. SM being in a locker, mecha, or other container shouldn't block it's effects that way.
if(!TS)
return
for(var/z in GetConnectedZlevels(TS.z))
radiation_repository.z_radiate(locate(1, 1, z), DETONATION_RADS, 1)
for(var/mob/living/mob in living_mob_list)
var/turf/T = get_turf(mob)
if(T && (loc.z == T.z))
@@ -102,8 +110,6 @@
//Hilariously enough, running into a closet should make you get hit the hardest.
var/mob/living/carbon/human/H = mob
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) )
mob.apply_effect(rads, IRRADIATE)
spawn(pull_time)
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
qdel(src)
@@ -252,12 +258,15 @@
if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) // VOREStation Edit - Only mesons can protect you!
l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) )
/*
//adjusted range so that a power of 170 (pretty high) results in 9 tiles, roughly the distance from the core to the engine monitoring room.
//note that the rads given at the maximum range is a constant 0.2 - as power increases the maximum range merely increases.
for(var/mob/living/l in range(src, round(sqrt(power / 2))))
var/radius = max(get_dist(l, src), 1)
var/rads = (power / 10) * ( 1 / (radius**2) )
l.apply_effect(rads, IRRADIATE)
*/
radiation_repository.radiate(src, power * 1.5) //Better close those shutters!
power -= (power/DECAY_FACTOR)**3 //energy losses due to radiation
@@ -371,9 +380,8 @@
"<span class=\"warning\">The unearthly ringing subsides and you notice you have new radiation burns.</span>", 2)
else
l.show_message("<span class=\"warning\">You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.</span>", 2)
var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) )
l.apply_effect(rads, IRRADIATE)
var/rads = 500
radiation_repository.radiate(src, rads)
/obj/machinery/power/supermatter/proc/supermatter_pull()
//following is adapted from singulo code

View File

@@ -1,5 +1,8 @@
/* SURGERY STEPS */
/obj/
var/surgery_odds = 0 // Used for tables/etc which can have surgery done of them.
/datum/surgery_step
var/priority = 0 //steps with higher priority would be attempted first
@@ -111,13 +114,29 @@
return 1
M.op_stage.in_progress += zone
S.begin_step(user, M, zone, src) //start on it
//We had proper tools! (or RNG smiled.) and user did not move or change hands.
if(prob(S.tool_quality(src)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
S.end_step(user, M, zone, src) //finish successfully
else if ((src in user.contents) && user.Adjacent(M)) //or
S.fail_step(user, M, zone, src) //malpractice~
else // This failing silently was a pain.
user << "<span class='warning'>You must remain close to your patient to conduct surgery.</span>"
var/success = TRUE
// Bad tools make it less likely to succeed.
if(!prob(S.tool_quality(src)))
success = FALSE
// Bad or no surface may mean failure as well.
var/obj/surface = M.get_surgery_surface()
if(!surface || !prob(surface.surgery_odds))
success = FALSE
// Not staying still fails you too.
if(success)
if(!do_mob(user, M, rand(S.min_duration, S.max_duration)))
success = FALSE
else
to_chat(user, "<span class='warning'>You must remain close to your patient to conduct surgery.</span>")
if(success)
S.end_step(user, M, zone, src)
else
S.fail_step(user, M, zone, src)
M.op_stage.in_progress -= zone // Clear the in-progress flag.
if (ishuman(M))
var/mob/living/carbon/human/H = M

View File

@@ -10,6 +10,7 @@ var/list/table_icon_cache = list()
climbable = 1
layer = 2.8
throwpass = 1
surgery_odds = 66
var/flipped = 0
var/maxhealth = 10
var/health = 10

View File

@@ -15,16 +15,10 @@
/datum/artifact_effect/radiate/DoEffectAura()
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/M in range(src.effectrange,T))
M.apply_effect(radiation_amount,IRRADIATE,0)
M.updatehealth()
radiation_repository.flat_radiate(holder, radiation_amount, src.effectrange)
return 1
/datum/artifact_effect/radiate/DoEffectPulse()
if(holder)
var/turf/T = get_turf(holder)
for (var/mob/living/M in range(src.effectrange,T))
M.apply_effect(radiation_amount * 25,IRRADIATE,0)
M.updatehealth()
radiation_repository.radiate(holder, ((radiation_amount * 25) * (sqrt(src.effectrange)))) //Need to get feedback on this
return 1

View File

@@ -198,8 +198,7 @@
radiation = rand() * 15 + 85
if(!rad_shield)
//irradiate nearby mobs
for(var/mob/living/M in view(7,src))
M.apply_effect(radiation / 25, IRRADIATE, 0)
radiation_repository.radiate(src, radiation / 25)
else
t_left_radspike = pick(10,15,25)

View File

@@ -36,6 +36,9 @@ JOBS_HAVE_MINIMAL_ACCESS
Configure how fast explosion strength diminishes when travelling up/down z levels. All explosion distances are multiplied by this each time they go up/down z-levels.
#MULTI_Z_EXPLOSION_SCALAR 0.5
# Radiation weakens with distance from the source; stop calculating when the strength falls below this value. Lower values mean radiation reaches smaller (with increasingly trivial damage) at the cost of more CPU usage. Max range = DISTANCE^2 * POWER / RADIATION_LOWER_LIMIT
# RADIATION_LOWER_LIMIT 0.35
## log OOC channel
LOG_OOC

View File

@@ -0,0 +1,5 @@
author: Leshana
delete-after: True
changes:
- tweak: "Optimized the unified radiation system. Made the radiation cutoff level configurable."
- bugfix: "Standing still won't save you from radiation storms."

View File

@@ -0,0 +1,36 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: MagmaRam
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- tweak: "Nerfed health regeneration, especially on bruises."

View File

@@ -0,0 +1,37 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
#################################
# Your name.
author: Cirra
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Added a unified radiation system. Radiation is lessened by obstacles, and distance."
- rscadd: "Added a geiger counter for measuring radiation levels, which can be found in certain vending machines and radiation closets."

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -2311,7 +2311,7 @@
"aSw" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aSx" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/security)
"aSy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/security_port)
"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aSA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one)
"aSB" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aSC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
@@ -5255,7 +5255,7 @@
"bXc" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXd" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXe" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 4},/obj/machinery/light,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range)
"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range)
"bXg" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/structure/table/steel,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXh" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXi" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych)
@@ -6167,7 +6167,7 @@
"coE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three)
"coF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"coG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator)
"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"coI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)

View File

@@ -859,7 +859,7 @@
"aqA" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqF" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqG" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -869,11 +869,11 @@
"aqK" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqL" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall/dark/hard_corner,/area/centcom/specops)
"aqM" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqO" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqS" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
"aqT" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqU" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -896,7 +896,7 @@
"arl" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arm" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arn" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arp" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arq" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arr" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -953,7 +953,7 @@
"asq" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asr" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ass" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asu" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asw" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1179,7 +1179,7 @@
"awI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awJ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awK" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/m9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership)
"awN" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"awO" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
@@ -1207,8 +1207,8 @@
"axk" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axl" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axm" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axp" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"axq" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall/dark,/area/shuttle/administration/centcom)
"axr" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom)

View File

@@ -165,6 +165,7 @@
#include "code\controllers\Processes\nanoui.dm"
#include "code\controllers\Processes\obj.dm"
#include "code\controllers\Processes\planet.dm"
#include "code\controllers\Processes\radiation.dm"
#include "code\controllers\Processes\scheduler.dm"
#include "code\controllers\Processes\Shuttle.dm"
#include "code\controllers\Processes\sun.dm"
@@ -231,6 +232,7 @@
#include "code\datums\repositories\cameras.dm"
#include "code\datums\repositories\crew.dm"
#include "code\datums\repositories\decls.dm"
#include "code\datums\repositories\radiation.dm"
#include "code\datums\repositories\repository.dm"
#include "code\datums\supplypacks\atmospherics.dm"
#include "code\datums\supplypacks\contraband.dm"
@@ -819,6 +821,7 @@
#include "code\game\objects\items\devices\flash_vr.dm"
#include "code\game\objects\items\devices\flashlight.dm"
#include "code\game\objects\items\devices\floor_painter.dm"
#include "code\game\objects\items\devices\geiger.dm"
#include "code\game\objects\items\devices\hacktool.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\locker_painter.dm"
@@ -2061,8 +2064,8 @@
#include "code\modules\projectiles\effects.dm"
#include "code\modules\projectiles\gun.dm"
#include "code\modules\projectiles\projectile.dm"
#include "code\modules\projectiles\ammunition\boxes.dm"
#include "code\modules\projectiles\ammunition\bullets.dm"
#include "code\modules\projectiles\ammunition\magazines.dm"
#include "code\modules\projectiles\ammunition\rounds.dm"
#include "code\modules\projectiles\guns\energy.dm"
#include "code\modules\projectiles\guns\launcher.dm"
#include "code\modules\projectiles\guns\projectile.dm"