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) 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) /proc/can_operate(mob/living/carbon/M)
return (M.lying && \ return M.lying
locate(/obj/machinery/optable, M.loc) || \
(locate(/obj/structure/bed/roller, M.loc) && prob(75)) || \ // Returns an instance of a valid surgery surface.
(locate(/obj/structure/table/, M.loc) && prob(66))) /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) /proc/reverse_direction(var/dir)
switch(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/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() /datum/configuration/New()
var/list/L = typesof(/datum/game_mode) - /datum/game_mode var/list/L = typesof(/datum/game_mode) - /datum/game_mode
for (var/T in L) for (var/T in L)
@@ -720,6 +724,9 @@ var/list/gamemode_cache = list()
if(values.len > 0) if(values.len > 0)
language_prefixes = values language_prefixes = values
if("radiation_lower_limit")
radiation_lower_limit = text2num(value)
else else
log_misc("Unknown setting in configuration: '[name]'") log_misc("Unknown setting in configuration: '[name]'")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -145,7 +145,7 @@
if(is_robot_module(O)) if(is_robot_module(O))
return 0 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!" user << "\The [O] is too hazardous to recycle with the autolathe!"
return return
/* ToDo: Make this actually check for ammo and change the value of the magazine if it's empty. -Spades /* 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' icon = 'icons/obj/doors/Dooruranium.dmi'
mineral = "uranium" mineral = "uranium"
var/last_event = 0 var/last_event = 0
var/rad_power = 7.5
/obj/machinery/door/airlock/process() /obj/machinery/door/airlock/process()
// Deliberate no call to parent. // Deliberate no call to parent.
@@ -338,15 +339,10 @@
/obj/machinery/door/airlock/uranium/process() /obj/machinery/door/airlock/uranium/process()
if(world.time > last_event+20) if(world.time > last_event+20)
if(prob(50)) if(prob(50))
radiate() radiation_repository.radiate(src, rad_power)
last_event = world.time 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 /obj/machinery/door/airlock/phoron
name = "Phoron Airlock" name = "Phoron Airlock"
desc = "No way this can end badly." desc = "No way this can end badly."

View File

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

View File

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

View File

@@ -1028,7 +1028,7 @@
icon_state = "engivend" icon_state = "engivend"
icon_deny = "engivend-deny" icon_deny = "engivend-deny"
req_access = list(access_engine_equip) 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/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/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, /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) process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG)
if(..()) if(..())
for(var/mob/living/carbon/M in view(EG.chassis)) radiation_repository.radiate(EG, (EG.rad_per_cycle * 3))
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)
return 1 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) if(M.status_flags & FAKEDEATH)
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal" OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
user.show_message("[OX] | [TX] | [BU] | [BR]") 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)) if(istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M var/mob/living/carbon/C = M
if(C.reagents.total_volume) 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) 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) ) if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth //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", "Security")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical") // a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
else 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", "Security")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical") // a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a) qdel(a)
@@ -464,13 +464,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
if ("emp") if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
var/name = prob(50) ? t.name : pick(teleportlocs) 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", "Security")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical") // a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a) qdel(a)
else else
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) 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", "Security")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical") // a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
qdel(a) qdel(a)

View File

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

View File

@@ -151,12 +151,12 @@
/obj/item/weapon/storage/box/blanks/New() /obj/item/weapon/storage/box/blanks/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/blanks/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/beanbags
name = "box of beanbag shells" name = "box of beanbag shells"
@@ -167,12 +167,12 @@
/obj/item/weapon/storage/box/beanbags/New() /obj/item/weapon/storage/box/beanbags/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/beanbags/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/shotgunammo
name = "box of shotgun slugs" name = "box of shotgun slugs"
@@ -183,12 +183,12 @@
/obj/item/weapon/storage/box/shotgunammo/New() /obj/item/weapon/storage/box/shotgunammo/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/shotgunammo/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/shotgunshells
name = "box of shotgun shells" name = "box of shotgun shells"
@@ -199,12 +199,12 @@
/obj/item/weapon/storage/box/shotgunshells/New() /obj/item/weapon/storage/box/shotgunshells/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/shotgunshells/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/flashshells
name = "box of illumination shells" name = "box of illumination shells"
@@ -215,12 +215,12 @@
/obj/item/weapon/storage/box/flashshells/New() /obj/item/weapon/storage/box/flashshells/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/flashshells/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/stunshells
name = "box of stun shells" name = "box of stun shells"
@@ -231,12 +231,12 @@
/obj/item/weapon/storage/box/stunshells/New() /obj/item/weapon/storage/box/stunshells/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/stunshells/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/practiceshells
name = "box of practice shells" name = "box of practice shells"
@@ -247,12 +247,12 @@
/obj/item/weapon/storage/box/practiceshells/New() /obj/item/weapon/storage/box/practiceshells/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/practiceshells/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/empshells
name = "box of emp shells" name = "box of emp shells"
@@ -263,12 +263,12 @@
/obj/item/weapon/storage/box/empshells/New() /obj/item/weapon/storage/box/empshells/New()
..() ..()
for(var/i = 1 to 8) 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() /obj/item/weapon/storage/box/empshells/large/New()
..() ..()
for(var/i = 1 to 8) 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 /obj/item/weapon/storage/box/sniperammo
name = "box of 14.5mm shells" name = "box of 14.5mm shells"

View File

@@ -27,7 +27,7 @@
if("guns") if("guns")
new /obj/item/weapon/gun/projectile/revolver(src) 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/card/emag(src)
new /obj/item/weapon/plastique(src) new /obj/item/weapon/plastique(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(2);/obj/item/weapon/storage/box/shotgunammo,
prob(4);/obj/item/weapon/storage/box/shotgunshells, prob(4);/obj/item/weapon/storage/box/shotgunshells,
prob(1);/obj/item/weapon/storage/box/stunshells, prob(1);/obj/item/weapon/storage/box/stunshells,
prob(2);/obj/item/ammo_magazine/c45m, prob(2);/obj/item/ammo_magazine/m45,
prob(4);/obj/item/ammo_magazine/c45m/rubber, prob(4);/obj/item/ammo_magazine/m45/rubber,
prob(4);/obj/item/ammo_magazine/c45m/flash, prob(4);/obj/item/ammo_magazine/m45/flash,
prob(2);/obj/item/ammo_magazine/mc9mmt, prob(2);/obj/item/ammo_magazine/m9mmt,
prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) prob(6);/obj/item/ammo_magazine/m9mmt/rubber)
/obj/random/action_figure /obj/random/action_figure

View File

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

View File

@@ -42,11 +42,11 @@
/obj/structure/closet/syndicate/nuclear/New() /obj/structure/closet/syndicate/nuclear/New()
..() ..()
new /obj/item/ammo_magazine/a10mm(src) new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/a10mm(src) new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/a10mm(src) new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/a10mm(src) new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/ammo_magazine/a10mm(src) new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/weapon/storage/box/handcuffs(src) new /obj/item/weapon/storage/box/handcuffs(src)
new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/gun/energy/gun(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/head/radiation(src)
new /obj/item/clothing/suit/radiation(src) new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src) new /obj/item/clothing/head/radiation(src)
new /obj/item/device/geiger(src)
new /obj/item/device/geiger(src)
/* /*
* Bombsuit closet * Bombsuit closet

View File

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

View File

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

View File

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

View File

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

View File

@@ -48,6 +48,9 @@
if(!radiate()) if(!radiate())
return PROCESS_KILL return PROCESS_KILL
/turf/simulated/wall/proc/get_material()
return material
/turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj) /turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj,/obj/item/projectile/beam)) if(istype(Proj,/obj/item/projectile/beam))
burn(2500) burn(2500)
@@ -265,8 +268,7 @@
if(!total_radiation) if(!total_radiation)
return return
for(var/mob/living/L in range(3,src)) radiation_repository.radiate(src, total_radiation)
L.apply_effect(total_radiation, IRRADIATE,0)
return total_radiation return total_radiation
/turf/simulated/wall/proc/burn(temperature) /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/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/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 if ("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) 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/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow 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/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 sec_briefcase.contents += new /obj/item/weapon/plastique
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)

View File

@@ -77,6 +77,38 @@
display_name = "flats, black" display_name = "flats, black"
path = /obj/item/clothing/shoes/flats 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 /datum/gear/shoes/flats/blue
display_name = "flats, blue" display_name = "flats, blue"
path = /obj/item/clothing/shoes/flats/blue path = /obj/item/clothing/shoes/flats/blue

View File

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

View File

@@ -2,7 +2,7 @@
var/const/enterBelt = 30 var/const/enterBelt = 30
var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation
var/const/leaveBelt = 80 var/const/leaveBelt = 80
var/const/revokeAccess = 135 var/const/revokeAccess = 165
startWhen = 2 startWhen = 2
announceWhen = 1 announceWhen = 1
endWhen = revokeAccess endWhen = revokeAccess
@@ -27,23 +27,21 @@
radiate() radiate()
else if(activeFor == leaveBelt) 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() /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) for(var/mob/living/carbon/C in living_mob_list)
var/area/A = get_area(C) var/area/A = get_area(C)
if(!A) if(!A)
continue continue
if(!(A.z in using_map.station_levels))
continue
if(A.flags & RAD_SHIELDED) if(A.flags & RAD_SHIELDED)
continue continue
if(istype(C,/mob/living/carbon/human)) if(istype(C,/mob/living/carbon/human))
var/mob/living/carbon/human/H = C var/mob/living/carbon/human/H = C
H.apply_effect((rand(15,35)),IRRADIATE,0)
if(prob(5)) if(prob(5))
H.apply_effect((rand(40,70)),IRRADIATE,0)
if (prob(75)) if (prob(75))
randmutb(H) // Applies bad mutation randmutb(H) // Applies bad mutation
domutcheck(H,null,MUTCHK_FORCED) domutcheck(H,null,MUTCHK_FORCED)

View File

@@ -27,6 +27,7 @@
radiate() radiate()
/datum/event/solar_storm/proc/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) for(var/mob/living/L in living_mob_list)
var/turf/T = get_turf(L) var/turf/T = get_turf(L)
if(!T) if(!T)
@@ -36,8 +37,7 @@
continue continue
//Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. //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() /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") 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) qdel(O)
return 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/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\ /obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
/obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\ /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() M.flash_eyes()
if(prob(50)) if(prob(50))
M.Stun(5) M.Stun(5)
M.apply_effect(25, IRRADIATE) radiation_repository.flat_radiate(src, 25, 200)
if(prob(25)) if(prob(25))
excavate_find(prob(5), finds[1]) excavate_find(prob(5), finds[1])
else if(rand(1,500) == 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] var/obj/item/organ/external/organ = organs_by_name[organ_name]
if(organ) if(organ)
var/weight = organ_rel_size[organ_name] var/weight = organ_rel_size[organ_name]
armorval += getarmor_organ(organ, type) * weight armorval += (getarmor_organ(organ, type) * weight)
total += weight total += weight
return (armorval/max(total, 1)) 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/pipe_painter(src)
src.modules += new /obj/item/device/floor_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/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/metal = new /datum/matter_synth/metal()
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel() 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/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src) src.modules += new /obj/item/device/floor_painter(src)
src.emag = new /obj/item/weapon/melee/baton/robot/arm(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/metal = new /datum/matter_synth/metal(40000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000) var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)

View File

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

View File

@@ -164,6 +164,14 @@
/obj/effect/decal/cleanable/can_fall() /obj/effect/decal/cleanable/can_fall()
return TRUE 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() /obj/item/pipe/can_fall()
. = ..() . = ..()
@@ -291,3 +299,33 @@
apply_damage(rand(0, damage), BRUTE, BP_R_ARM) apply_damage(rand(0, damage), BRUTE, BP_R_ARM)
Weaken(4) Weaken(4)
updatehealth() 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 var/damage_type = CUT
// whether this wound needs a bandage/salve to heal at all // whether this wound needs a bandage/salve to heal at all
// the maximum amount of damage that this wound can have and still autoheal // 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) "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5)
bleed_threshold = 20 bleed_threshold = 20
max_bleeding_stage = 2 //only huge bruise and above can bleed. max_bleeding_stage = 2 //only huge bruise and above can bleed.
autoheal_cutoff = 30
damage_type = BRUISE damage_type = BRUISE
/** BURNS **/ /** BURNS **/

View File

@@ -526,9 +526,9 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3) if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
return ..() 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(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) src.use(use_amt)
else else

View File

@@ -396,17 +396,13 @@
/obj/machinery/power/port_gen/pacman/super/UseFuel() /obj/machinery/power/port_gen/pacman/super/UseFuel()
//produces a tiny amount of radiation when in use //produces a tiny amount of radiation when in use
if (prob(2*power_output)) if (prob(2*power_output))
for (var/mob/living/L in range(src, 5)) radiation_repository.radiate(src, 4)
L.apply_effect(1, IRRADIATE) //should amount to ~5 rads per minute at max safe power
..() ..()
/obj/machinery/power/port_gen/pacman/super/explode() /obj/machinery/power/port_gen/pacman/super/explode()
//a nice burst of radiation //a nice burst of radiation
var/rads = 50 + (sheets + sheet_left)*1.5 var/rads = 50 + (sheets + sheet_left)*1.5
for (var/mob/living/L in range(src, 10)) radiation_repository.radiate(src, (max(20, rads)))
//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)
explosion(src.loc, 3, 3, 5, 3) explosion(src.loc, 3, 3, 5, 3)
qdel(src) qdel(src)

View File

@@ -31,6 +31,11 @@ var/global/list/rad_collectors = list()
last_power_new = 0 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)
if(P.air_contents.gas["phoron"] == 0) if(P.air_contents.gas["phoron"] == 0)
investigate_log("<font color='red'>out of fuel</font>.","singulo") investigate_log("<font color='red'>out of fuel</font>.","singulo")

View File

@@ -406,15 +406,13 @@
var/toxrange = 10 var/toxrange = 10
var/toxdamage = 4 var/toxdamage = 4
var/radiation = 15 var/radiation = 15
var/radiationmin = 3
if (src.energy>200) if (src.energy>200)
toxdamage = round(((src.energy-150)/50)*4,1) toxdamage = round(((src.energy-150)/50)*4,1)
radiation = round(((src.energy-150)/50)*5,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)) for(var/mob/living/M in view(toxrange, src.loc))
if(M.status_flags & GODMODE) if(M.status_flags & GODMODE)
continue continue
M.apply_effect(rand(radiationmin,radiation), IRRADIATE)
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad"))) toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
M.apply_effect(toxdamage, TOX) M.apply_effect(toxdamage, TOX)
return return
@@ -448,13 +446,13 @@
/obj/singularity/proc/smwave() /obj/singularity/proc/smwave()
for(var/mob/living/M in view(10, src.loc)) for(var/mob/living/M in view(10, src.loc))
if(prob(67)) if(prob(67))
M.apply_effect(rand(energy), IRRADIATE) 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>")
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>")
M << "<span class=\"notice\">Miraculously, it fails to kill you.</span>"
else 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 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 << "<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() M.dust()
radiation_repository.radiate(src, rand(energy))
return return
/obj/singularity/proc/pulse() /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 ///////// ///////// .357 /////////
/obj/item/ammo_magazine/a357 /obj/item/ammo_magazine/s357
name = "speedloader (.357)" name = "speedloader (.357)"
desc = "A speedloader for .357 revolvers." desc = "A speedloader for .357 revolvers."
icon_state = "38" icon_state = "38"
@@ -12,103 +38,103 @@
///////// .38 ///////// ///////// .38 /////////
/obj/item/ammo_magazine/c38 /obj/item/ammo_magazine/s38
name = "speedloader (.38)" name = "speedloader (.38)"
desc = "A speedloader for .38 revolvers." desc = "A speedloader for .38 revolvers."
icon_state = "38" icon_state = "38"
caliber = "38" caliber = ".38"
matter = list(DEFAULT_WALL_MATERIAL = 360) matter = list(DEFAULT_WALL_MATERIAL = 360)
ammo_type = /obj/item/ammo_casing/c38 ammo_type = /obj/item/ammo_casing/a38
max_ammo = 6 max_ammo = 6
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/c38/rubber /obj/item/ammo_magazine/s38/rubber
name = "speedloader (.38 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 /obj/item/ammo_magazine/s38/emp
name = "ammunition box (.38 haywire)" name = "speedloader (.38 haywire)"
ammo_type = /obj/item/ammo_casing/c38/emp ammo_type = /obj/item/ammo_casing/a38/emp
///////// .45 ///////// ///////// .45 /////////
/obj/item/ammo_magazine/c45m /obj/item/ammo_magazine/m45
name = "pistol magazine (.45)" name = "pistol magazine (.45)"
icon_state = "45" icon_state = "45"
mag_type = MAGAZINE 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 matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
caliber = ".45" caliber = ".45"
max_ammo = 7 max_ammo = 7
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/c45m/empty /obj/item/ammo_magazine/m45/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/c45m/rubber /obj/item/ammo_magazine/m45/rubber
name = "magazine (.45 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)" 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)" 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)" 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)" 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)" name = "stick magazine (.45)"
icon_state = "uzi45" icon_state = "uzi45"
mag_type = MAGAZINE mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45 ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 1200) matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = ".45" caliber = ".45"
max_ammo = 16 max_ammo = 16
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/c45uzi/empty /obj/item/ammo_magazine/m45uzi/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/tommymag /obj/item/ammo_magazine/m45tommy
name = "tommygun magazine (.45)" name = "tommygun magazine (.45)"
icon_state = "tommy-mag" icon_state = "tommy-mag"
mag_type = MAGAZINE mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45 ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 1500) matter = list(DEFAULT_WALL_MATERIAL = 1500)
caliber = ".45" caliber = ".45"
max_ammo = 20 max_ammo = 20
/obj/item/ammo_magazine/tommymag/ap /obj/item/ammo_magazine/m45tommy/ap
name = "tommygun magazine (.45 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 initial_ammo = 0
/obj/item/ammo_magazine/tommydrum /obj/item/ammo_magazine/m45tommydrum
name = "tommygun drum magazine (.45)" name = "tommygun drum magazine (.45)"
icon_state = "tommy-drum" icon_state = "tommy-drum"
w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
mag_type = MAGAZINE mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c45 ammo_type = /obj/item/ammo_casing/a45
matter = list(DEFAULT_WALL_MATERIAL = 3750) matter = list(DEFAULT_WALL_MATERIAL = 3750)
caliber = ".45" caliber = ".45"
max_ammo = 50 max_ammo = 50
/obj/item/ammo_magazine/tommydrum/ap /obj/item/ammo_magazine/m45tommydrum/ap
name = "tommygun drum magazine (.45 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 initial_ammo = 0
/obj/item/ammo_magazine/clip/c45 /obj/item/ammo_magazine/clip/c45
@@ -116,86 +142,86 @@
icon_state = "clip_pistol" icon_state = "clip_pistol"
desc = "A stripper clip for reloading .45 rounds into magazines." desc = "A stripper clip for reloading .45 rounds into magazines."
caliber = ".45" 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 matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal
max_ammo = 9 max_ammo = 9
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/clip/c45/rubber /obj/item/ammo_magazine/clip/c45/rubber
name = "ammo clip (.45 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 /obj/item/ammo_magazine/clip/c45/practice
name = "ammo clip (.45 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 /obj/item/ammo_magazine/clip/c45/flash
name = "ammo clip (.45 flash)" name = "ammo clip (.45 flash)"
ammo_type = /obj/item/ammo_casing/c45f ammo_type = /obj/item/ammo_casing/a45f
///////// 9mm ///////// ///////// 9mm /////////
/obj/item/ammo_magazine/mc9mm /obj/item/ammo_magazine/m9mm
name = "magazine (9mm)" name = "magazine (9mm)"
icon_state = "9x19p" icon_state = "9x19p"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 480) matter = list(DEFAULT_WALL_MATERIAL = 480)
caliber = "9mm" caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 8 max_ammo = 8
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/mc9mm/empty /obj/item/ammo_magazine/m9mm/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/mc9mm/flash /obj/item/ammo_magazine/m9mm/flash
ammo_type = /obj/item/ammo_casing/c9mmf ammo_type = /obj/item/ammo_casing/a9mmf
/obj/item/ammo_magazine/mc9mm/rubber /obj/item/ammo_magazine/m9mm/rubber
name = "magazine (9mm 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)" 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)" name = "top mounted magazine (9mm)"
icon_state = "9mmt" icon_state = "9mmt"
mag_type = MAGAZINE mag_type = MAGAZINE
ammo_type = /obj/item/ammo_casing/c9mm ammo_type = /obj/item/ammo_casing/a9mm
matter = list(DEFAULT_WALL_MATERIAL = 1200) matter = list(DEFAULT_WALL_MATERIAL = 1200)
caliber = "9mm" caliber = "9mm"
max_ammo = 20 max_ammo = 20
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/mc9mmt/empty /obj/item/ammo_magazine/m9mmt/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/mc9mmt/rubber /obj/item/ammo_magazine/m9mmt/rubber
name = "top mounted magazine (9mm 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)" 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)" 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)" name = "high capacity top mounted magazine (9mm armor-piercing)"
icon_state = "p90" icon_state = "p90"
mag_type = MAGAZINE 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) matter = list(DEFAULT_WALL_MATERIAL = 3000)
caliber = "9mm" caliber = "9mm"
max_ammo = 50 max_ammo = 50
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/p90/empty /obj/item/ammo_magazine/m9mmp90/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/clip/c9mm /obj/item/ammo_magazine/clip/c9mm
@@ -203,60 +229,38 @@
icon_state = "clip_pistol" icon_state = "clip_pistol"
desc = "A stripper clip for reloading 9mm rounds into magazines." desc = "A stripper clip for reloading 9mm rounds into magazines."
caliber = "9mm" 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 matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal
max_ammo = 9 max_ammo = 9
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/clip/c9mm/rubber /obj/item/ammo_magazine/clip/c9mm/rubber
name = "ammo clip (.45 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 /obj/item/ammo_magazine/clip/c9mm/practice
name = "ammo clip (.45 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 /obj/item/ammo_magazine/clip/c9mm/flash
name = "ammo clip (.45 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)" name = "ammunition Box (9mm)"
icon_state = "9mm" icon_state = "9mm"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
matter = list(DEFAULT_WALL_MATERIAL = 1800) matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm" caliber = "9mm"
ammo_type = /obj/item/ammo_casing/c9mm ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 30 max_ammo = 30
/obj/item/ammo_magazine/c9mm/empty /obj/item/ammo_magazine/box/c9mm/empty
initial_ammo = 0 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 ///////// ///////// 10mm /////////
/obj/item/ammo_magazine/a10mm /obj/item/ammo_magazine/m10mm
name = "magazine (10mm)" name = "magazine (10mm)"
icon_state = "10mm" icon_state = "10mm"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
@@ -267,10 +271,10 @@
max_ammo = 20 max_ammo = 20
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/a10mm/empty /obj/item/ammo_magazine/m10mm/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/clip/a10mm /obj/item/ammo_magazine/clip/c10mm
name = "ammo clip (10mm)" name = "ammo clip (10mm)"
icon_state = "clip_pistol" icon_state = "clip_pistol"
desc = "A stripper clip for reloading 5mm rounds into magazines." desc = "A stripper clip for reloading 5mm rounds into magazines."
@@ -280,204 +284,221 @@
max_ammo = 9 max_ammo = 9
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/box/emp/a10mm /obj/item/ammo_magazine/box/emp/b10
name = "ammunition box (10mm haywire)" name = "ammunition box (10mm haywire)"
ammo_type = /obj/item/ammo_casing/a10mm/emp ammo_type = /obj/item/ammo_casing/a10mm/emp
///////// 5.56mm ///////// ///////// 5.56mm /////////
/obj/item/ammo_magazine/c556 /obj/item/ammo_magazine/m556
name = "magazine (5.56mm)" name = "magazine (5.56mm)"
icon_state = "c5.56" icon_state = "m556"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = "a556" caliber = "5.56mm"
matter = list(DEFAULT_WALL_MATERIAL = 1800) matter = list(DEFAULT_WALL_MATERIAL = 1800)
ammo_type = /obj/item/ammo_casing/a556 ammo_type = /obj/item/ammo_casing/a556
max_ammo = 20 max_ammo = 20
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/c556/ext /obj/item/ammo_magazine/m556/ext
name = "extended magazine (5.56mm)" name = "extended magazine (5.56mm)"
matter = list(DEFAULT_WALL_MATERIAL = 2700) matter = list(DEFAULT_WALL_MATERIAL = 2700)
max_ammo = 30 max_ammo = 30
/obj/item/ammo_magazine/c556/empty /obj/item/ammo_magazine/m556/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/c556/ext/empty /obj/item/ammo_magazine/m556/ext/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/c556/practice /obj/item/ammo_magazine/m556/practice
name = "magazine (5.56mm practice)" name = "magazine (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556p 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)" name = "extended magazine (5.56mm practice)"
max_ammo = 30 max_ammo = 30
/obj/item/ammo_magazine/c556/ap /obj/item/ammo_magazine/m556/ap
name = "magazine (5.56mm armor-piercing)" name = "magazine (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap 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)" name = "extended magazine (5.56mm armor-piercing)"
max_ammo = 30 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)" name = "ammo clip (5.56mm)"
icon_state = "clip_rifle" icon_state = "clip_rifle"
caliber = "a556" caliber = "5.56mm"
ammo_type = /obj/item/ammo_casing/a556 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 matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal
max_ammo = 5 max_ammo = 5
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/clip/a556/ap /obj/item/ammo_magazine/clip/c556/ap
name = "rifle clip (5.56mm armor-piercing)" name = "rifle clip (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap 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)" name = "rifle clip (5.56mm practice)"
ammo_type = /obj/item/ammo_casing/a556 ammo_type = /obj/item/ammo_casing/a556
/obj/item/ammo_magazine/a556 /obj/item/ammo_magazine/m556saw
name = "magazine box (5.56mm)" name = "magazine box (5.56mm)"
icon_state = "a556" icon_state = "a556"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = "a556" caliber = "5.56mm"
matter = list(DEFAULT_WALL_MATERIAL = 10000) matter = list(DEFAULT_WALL_MATERIAL = 10000)
ammo_type = /obj/item/ammo_casing/a556 ammo_type = /obj/item/ammo_casing/a556
w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!! w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!!
max_ammo = 50 max_ammo = 50
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/a556/ap /obj/item/ammo_magazine/m556saw/ap
name = "magazine box (5.56mm armor-piercing)" name = "magazine box (5.56mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a556/ap ammo_type = /obj/item/ammo_casing/a556/ap
/obj/item/ammo_magazine/a556/empty /obj/item/ammo_magazine/m556saw/empty
initial_ammo = 0 initial_ammo = 0
///////// .50 AE ///////// ///////// .50 AE /////////
/obj/item/ammo_magazine/a50 /obj/item/ammo_magazine/m50
name = "magazine (.50 AE)" name = "magazine (.50 AE)"
icon_state = "50ae" icon_state = "50ae"
origin_tech = list(TECH_COMBAT = 2) origin_tech = list(TECH_COMBAT = 2)
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = ".50" caliber = ".50AE"
matter = list(DEFAULT_WALL_MATERIAL = 1260) matter = list(DEFAULT_WALL_MATERIAL = 1260)
ammo_type = /obj/item/ammo_casing/a50 ammo_type = /obj/item/ammo_casing/a50ae
max_ammo = 7 max_ammo = 7
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/a50/empty /obj/item/ammo_magazine/m50/empty
initial_ammo = 0 initial_ammo = 0
/obj/item/ammo_magazine/clip/a50 /obj/item/ammo_magazine/clip/c50
name = "ammo clip (.50 AE)" name = "ammo clip (.50 AE)"
icon_state = "clip_pistol" icon_state = "clip_pistol"
desc = "A stripper clip for reloading .50 Action Express rounds into magazines." desc = "A stripper clip for reloading .50 Action Express rounds into magazines."
caliber = ".50" caliber = ".50AE"
ammo_type = /obj/item/ammo_casing/a50 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 matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal
max_ammo = 9 max_ammo = 9
multiple_sprites = 1 multiple_sprites = 1
///////// 7.62mm ///////// ///////// 7.62mm /////////
/obj/item/ammo_magazine/c762 /obj/item/ammo_magazine/m762
name = "magazine (7.62mm)" name = "magazine (7.62mm)"
icon_state = "c7.62" icon_state = "m762-small"
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = "a762" caliber = "7.62mm"
matter = list(DEFAULT_WALL_MATERIAL = 2000) matter = list(DEFAULT_WALL_MATERIAL = 2000)
ammo_type = /obj/item/ammo_casing/a762 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 max_ammo = 10
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/s762/empty /obj/item/ammo_magazine/m762/ap
initial_ammo = 0
/obj/item/ammo_magazine/s762/ap
name = "magazine (7.62mm armor-piercing)" name = "magazine (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap 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)" name = "ammo clip (7.62mm)"
icon_state = "clip_rifle" icon_state = "clip_rifle"
caliber = "a762" caliber = "7.62mm"
ammo_type = /obj/item/ammo_casing/a762 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 matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal
max_ammo = 5 max_ammo = 5
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/clip/a762/ap /obj/item/ammo_magazine/clip/c762/ap
name = "rifle clip (7.62mm armor-piercing)" name = "rifle clip (7.62mm armor-piercing)"
ammo_type = /obj/item/ammo_casing/a762/ap 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)" name = "rifle clip (7.62mm practice)"
ammo_type = /obj/item/ammo_casing/a762p ammo_type = /obj/item/ammo_casing/a762p
///////// 12g ///////// ///////// 12g /////////
/obj/item/ammo_magazine/g12 /obj/item/ammo_magazine/m12gdrum
name = "magazine (12 gauge)" name = "magazine (12 gauge)"
icon_state = "12g" icon_state = "12g"
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = "shotgun" caliber = "12g"
matter = list(DEFAULT_WALL_MATERIAL = 2200) matter = list(DEFAULT_WALL_MATERIAL = 2200)
ammo_type = /obj/item/ammo_casing/shotgun ammo_type = /obj/item/ammo_casing/a12g
max_ammo = 24 max_ammo = 24
multiple_sprites = 1 multiple_sprites = 1
/obj/item/ammo_magazine/g12/beanbag /obj/item/ammo_magazine/m12gdrum/beanbag
name = "magazine (12 gauge 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)" 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)" 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 initial_ammo = 0
///////// .75 Gyrojet ///////// ///////// .75 Gyrojet /////////
/obj/item/ammo_magazine/a75 /obj/item/ammo_magazine/m75
name = "ammo magazine (.75 Gyrojet)" name = "ammo magazine (.75 Gyrojet)"
icon_state = "75" icon_state = "75"
mag_type = MAGAZINE mag_type = MAGAZINE
caliber = "75" caliber = ".75"
ammo_type = /obj/item/ammo_casing/a75 ammo_type = /obj/item/ammo_casing/a75
multiple_sprites = 1 multiple_sprites = 1
max_ammo = 4 max_ammo = 4
/obj/item/ammo_magazine/a75/empty /obj/item/ammo_magazine/m75/empty
initial_ammo = 0 initial_ammo = 0
///////// Misc. ///////// ///////// 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 /obj/item/ammo_casing/a357
desc = "A .357 bullet casing." desc = "A .357 bullet casing."
caliber = "357" caliber = "357"
projectile_type = /obj/item/projectile/bullet/pistol/strong projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a50 /*
desc = "A .50AE bullet casing." * .38
caliber = ".50" */
projectile_type = /obj/item/projectile/bullet/pistol/strong
/obj/item/ammo_casing/a75 /obj/item/ammo_casing/a38
desc = "A .75 gyrojet rocket sheathe."
caliber = "75"
projectile_type = /obj/item/projectile/bullet/gyro
/obj/item/ammo_casing/c38
desc = "A .38 bullet casing." desc = "A .38 bullet casing."
caliber = "38" caliber = ".38"
projectile_type = /obj/item/projectile/bullet/pistol projectile_type = /obj/item/projectile/bullet/pistol
/obj/item/ammo_casing/c38r /obj/item/ammo_casing/a38r
desc = "A .38 rubber bullet casing." desc = "A .38 rubber bullet casing."
caliber = "38" caliber = ".38"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c38/emp /obj/item/ammo_casing/a38/emp
name = ".38 haywire round" name = ".38 haywire round"
desc = "A .38 bullet casing fitted with a single-use ion pulse generator." desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
icon_state = "empcasing" icon_state = "empcasing"
projectile_type = /obj/item/projectile/ion/small projectile_type = /obj/item/projectile/ion/small
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) 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 * 9mm
*/ */
/obj/item/ammo_casing/c9mm /obj/item/ammo_casing/a9mm
desc = "A 9mm bullet casing." desc = "A 9mm bullet casing."
caliber = "9mm" caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol 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." desc = "A 9mm armor-piercing bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/ap projectile_type = /obj/item/projectile/bullet/pistol/ap
/obj/item/ammo_casing/c9mmf /obj/item/ammo_casing/a9mmf
desc = "A 9mm flash shell casing." desc = "A 9mm flash shell casing."
caliber = "9mm" caliber = "9mm"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c9mmr /obj/item/ammo_casing/a9mmr
desc = "A 9mm rubber bullet casing." desc = "A 9mm rubber bullet casing."
caliber = "9mm" caliber = "9mm"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c9mmp /obj/item/ammo_casing/a9mmp
desc = "A 9mm practice bullet casing." desc = "A 9mm practice bullet casing."
caliber = "9mm" caliber = "9mm"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice projectile_type = /obj/item/projectile/bullet/pistol/practice
/* /*
/obj/item/ammo_casing/c5mm * .45
desc = "A 5mm bullet casing."
caliber = "5mm"
projectile_type = /obj/item/projectile/bullet/pistol/ap
*/
/*
* 45 ammo
*/ */
/obj/item/ammo_casing/c45 /obj/item/ammo_casing/a45
desc = "A .45 bullet casing." desc = "A .45 bullet casing."
caliber = ".45" caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/medium 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." desc = "A .45 Armor-Piercing bullet casing."
caliber = ".45" caliber = ".45"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap 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." desc = "A .45 practice bullet casing."
caliber = ".45" caliber = ".45"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/practice projectile_type = /obj/item/projectile/bullet/pistol/practice
/obj/item/ammo_casing/c45r /obj/item/ammo_casing/a45r
desc = "A .45 rubber bullet casing." desc = "A .45 rubber bullet casing."
caliber = ".45" caliber = ".45"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/c45f /obj/item/ammo_casing/a45f
desc = "A .45 flash shell casing." desc = "A .45 flash shell casing."
caliber = ".45" caliber = ".45"
icon_state = "r-casing" icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/c45/emp /obj/item/ammo_casing/a45/emp
name = ".45 haywire round" name = ".45 haywire round"
desc = "A .45 bullet casing fitted with a single-use ion pulse generator." desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
projectile_type = /obj/item/projectile/ion/small projectile_type = /obj/item/projectile/ion/small
icon_state = "empcasing" icon_state = "empcasing"
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) 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." desc = "A .45 hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow
@@ -131,39 +161,39 @@
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) 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" name = "shotgun slug"
desc = "A 12 gauge slug." desc = "A 12 gauge slug."
icon_state = "slshell" icon_state = "slshell"
caliber = "shotgun" caliber = "12g"
projectile_type = /obj/item/projectile/bullet/shotgun projectile_type = /obj/item/projectile/bullet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360) matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/shotgun/pellet /obj/item/ammo_casing/a12g/pellet
name = "shotgun shell" name = "shotgun shell"
desc = "A 12 gauge shell." desc = "A 12 gauge shell."
icon_state = "gshell" icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/pellet/shotgun projectile_type = /obj/item/projectile/bullet/pellet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360) matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/shotgun/blank /obj/item/ammo_casing/a12g/blank
name = "shotgun shell" name = "shotgun shell"
desc = "A blank shell." desc = "A blank shell."
icon_state = "blshell" icon_state = "blshell"
projectile_type = /obj/item/projectile/bullet/blank projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90) matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/shotgun/practice /obj/item/ammo_casing/a12g/practice
name = "shotgun shell" name = "shotgun shell"
desc = "A practice shell." desc = "A practice shell."
icon_state = "pshell" icon_state = "pshell"
projectile_type = /obj/item/projectile/bullet/shotgun/practice projectile_type = /obj/item/projectile/bullet/shotgun/practice
matter = list("metal" = 90) matter = list("metal" = 90)
/obj/item/ammo_casing/shotgun/beanbag /obj/item/ammo_casing/a12g/beanbag
name = "beanbag shell" name = "beanbag shell"
desc = "A beanbag shell." desc = "A beanbag shell."
icon_state = "bshell" icon_state = "bshell"
@@ -172,26 +202,26 @@
//Can stun in one hit if aimed at the head, but //Can stun in one hit if aimed at the head, but
//is blocked by clothing that stops tasers and is vulnerable to EMP //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" name = "stun shell"
desc = "A 12 gauge taser cartridge." desc = "A 12 gauge taser cartridge."
icon_state = "stunshell" icon_state = "stunshell"
projectile_type = /obj/item/projectile/energy/electrode/stunshot projectile_type = /obj/item/projectile/energy/electrode/stunshot
matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720) 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 if(prob(100/severity)) BB = null
update_icon() update_icon()
//Does not stun, only blinds, but has area of effect. //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" name = "flash shell"
desc = "A chemical shell used to signal distress or provide illumination." desc = "A chemical shell used to signal distress or provide illumination."
icon_state = "fshell" icon_state = "fshell"
projectile_type = /obj/item/projectile/energy/flash/flare projectile_type = /obj/item/projectile/energy/flash/flare
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90) matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
/obj/item/ammo_casing/shotgun/emp /obj/item/ammo_casing/a12g/emp
name = "ion shell" name = "ion shell"
desc = "An advanced shotgun round that creates a small EMP when it strikes a target." desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
icon_state = "empshell" icon_state = "empshell"
@@ -200,12 +230,12 @@
matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240) matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
/* /*
* 762mm * 7.62mm
*/ */
/obj/item/ammo_casing/a762 /obj/item/ammo_casing/a762
desc = "A 7.62mm bullet casing." desc = "A 7.62mm bullet casing."
caliber = "a762" caliber = "7.62mm"
icon_state = "rifle-casing" icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a762 projectile_type = /obj/item/projectile/bullet/rifle/a762
@@ -215,7 +245,7 @@
/obj/item/ammo_casing/a762p /obj/item/ammo_casing/a762p
desc = "A 7.62mm practice bullet casing." desc = "A 7.62mm practice bullet casing."
caliber = "a762" caliber = "7.62mm"
icon_state = "rifle-casing" // Need to make an icon for these icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice projectile_type = /obj/item/projectile/bullet/rifle/practice
@@ -228,7 +258,9 @@
desc = "A 7.62mm hollow-point bullet casing." desc = "A 7.62mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow
//145mm /*
* 14.5mm (anti-materiel rifle round)
*/
/obj/item/ammo_casing/a145 /obj/item/ammo_casing/a145
desc = "A 14.5mm shell." desc = "A 14.5mm shell."
@@ -238,12 +270,12 @@
matter = list(DEFAULT_WALL_MATERIAL = 1250) matter = list(DEFAULT_WALL_MATERIAL = 1250)
/* /*
* 556mm * 5.56mm
*/ */
/obj/item/ammo_casing/a556 /obj/item/ammo_casing/a556
desc = "A 5.56mm bullet casing." desc = "A 5.56mm bullet casing."
caliber = "a556" caliber = "5.56mm"
icon_state = "rifle-casing" icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a556 projectile_type = /obj/item/projectile/bullet/rifle/a556
@@ -253,7 +285,7 @@
/obj/item/ammo_casing/a556p /obj/item/ammo_casing/a556p
desc = "A 5.56mm practice bullet casing." desc = "A 5.56mm practice bullet casing."
caliber = "a556" caliber = "5.56mm"
icon_state = "rifle-casing" // Need to make an icon for these icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/rifle/practice projectile_type = /obj/item/projectile/bullet/rifle/practice

View File

@@ -8,7 +8,7 @@
caliber = "9mm" caliber = "9mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
ammo_type = /obj/item/ammo_casing/c9mm ammo_type = /obj/item/ammo_casing/a9mm
multi_aim = 1 multi_aim = 1
burst_delay = 2 burst_delay = 2
@@ -33,8 +33,8 @@
slot_flags = SLOT_BELT|SLOT_BACK slot_flags = SLOT_BELT|SLOT_BACK
fire_sound = 'sound/weapons/Gunshot_light.ogg' fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a10mm magazine_type = /obj/item/ammo_magazine/m10mm
allowed_magazines = list(/obj/item/ammo_magazine/a10mm) allowed_magazines = list(/obj/item/ammo_magazine/m10mm)
auto_eject = 1 auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -56,12 +56,12 @@
item_state = null item_state = null
w_class = ITEMSIZE_LARGE w_class = ITEMSIZE_LARGE
force = 10 force = 10
caliber = "a556" caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c556 magazine_type = /obj/item/ammo_magazine/m556
allowed_magazines = list(/obj/item/ammo_magazine/c556) allowed_magazines = list(/obj/item/ammo_magazine/m556)
one_handed_penalty = 4 one_handed_penalty = 4
@@ -73,8 +73,8 @@
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands) /obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands)
..() ..()
if(istype(ammo_magazine,/obj/item/ammo_magazine/s762)) if(istype(ammo_magazine,/obj/item/ammo_magazine/m556/small))
icon_state = "arifle-small" icon_state = "arifle-small" // If using the small magazines, use the small magazine sprite.
else else
icon_state = (ammo_magazine)? "arifle" : "arifle-empty" icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon() if(!ignore_inhands) update_held_icon()
@@ -88,11 +88,11 @@
caliber = "9mm" caliber = "9mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT 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' fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber magazine_type = /obj/item/ammo_magazine/m9mmt/rubber
allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt) allowed_magazines = list(/obj/item/ammo_magazine/m9mmt)
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon() /obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
..() ..()
@@ -109,14 +109,14 @@
item_state = "z8carbine" item_state = "z8carbine"
w_class = ITEMSIZE_LARGE w_class = ITEMSIZE_LARGE
force = 10 force = 10
caliber = "a762" caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3) origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore? ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/Gunshot.ogg' fire_sound = 'sound/weapons/Gunshot.ogg'
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762 magazine_type = /obj/item/ammo_magazine/m762
allowed_magazines = list(/obj/item/ammo_magazine/c762) allowed_magazines = list(/obj/item/ammo_magazine/m762)
auto_eject = 1 auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -181,14 +181,14 @@
force = 10 force = 10
slot_flags = 0 slot_flags = 0
max_shells = 50 max_shells = 50
caliber = "a556" caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2) origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2)
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore? ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/machinegun.ogg' fire_sound = 'sound/weapons/machinegun.ogg'
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a556 magazine_type = /obj/item/ammo_magazine/m556saw
allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/c556) allowed_magazines = list(/obj/item/ammo_magazine/m556saw, /obj/item/ammo_magazine/m556)
one_handed_penalty = 6 one_handed_penalty = 6
@@ -225,7 +225,7 @@
return ..() //once open, behave like normal return ..() //once open, behave like normal
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() /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" icon_state = "l6[cover_open ? "open" : "closed"]mag"
item_state = icon_state item_state = icon_state
else else
@@ -252,13 +252,13 @@
item_state = null item_state = null
w_class = ITEMSIZE_LARGE w_class = ITEMSIZE_LARGE
force = 10 force = 10
caliber = "shotgun" caliber = "12g"
fire_sound = 'sound/weapons/shotgun.ogg' fire_sound = 'sound/weapons/shotgun.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/g12 magazine_type = /obj/item/ammo_magazine/m12gdrum
allowed_magazines = list(/obj/item/ammo_magazine/g12) allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum)
one_handed_penalty = 4 one_handed_penalty = 4
@@ -284,8 +284,8 @@
load_method = MAGAZINE load_method = MAGAZINE
caliber = ".45" caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
magazine_type = /obj/item/ammo_magazine/c45uzi magazine_type = /obj/item/ammo_magazine/m45uzi
allowed_magazines = list(/obj/item/ammo_magazine/c45uzi) allowed_magazines = list(/obj/item/ammo_magazine/m45uzi)
firemodes = list( firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0), list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -310,8 +310,8 @@
slot_flags = SLOT_BELT // ToDo: Belt sprite. slot_flags = SLOT_BELT // ToDo: Belt sprite.
fire_sound = 'sound/weapons/Gunshot_light.ogg' fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/p90 magazine_type = /obj/item/ammo_magazine/m9mmp90
allowed_magazines = list(/obj/item/ammo_magazine/p90, /obj/item/ammo_magazine/mc9mmt) // ToDo: New sprite for the different mag. allowed_magazines = list(/obj/item/ammo_magazine/m9mmp90, /obj/item/ammo_magazine/m9mmt) // ToDo: New sprite for the different mag.
firemodes = list( firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0), 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) origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
slot_flags = SLOT_BELT // ToDo: Belt sprite. slot_flags = SLOT_BELT // ToDo: Belt sprite.
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/tommymag magazine_type = /obj/item/ammo_magazine/m45tommy
allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum) allowed_magazines = list(/obj/item/ammo_magazine/m45tommy, /obj/item/ammo_magazine/m45tommydrum)
firemodes = list( firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0), list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -343,19 +343,19 @@
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty" icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
// update_held_icon() // 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" 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." 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" icon_state = "bullpup"
item_state = "bullpup" item_state = "bullpup"
w_class = ITEMSIZE_LARGE w_class = ITEMSIZE_LARGE
force = 10 force = 10
caliber = "a762" caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c762 magazine_type = /obj/item/ammo_magazine/m762m
allowed_magazines = list(/obj/item/ammo_magazine/c762) allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
one_handed_penalty = 4 one_handed_penalty = 4
@@ -366,8 +366,8 @@
/obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands) /obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands)
..() ..()
if(ammo_magazine) if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
icon_state = "bullpup" icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite.
else else
icon_state = "bullpup-empty" icon_state = "bullpup-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"

View File

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

View File

@@ -2,8 +2,8 @@
var/unique_reskin var/unique_reskin
name = ".45 pistol" name = ".45 pistol"
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds." desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
magazine_type = /obj/item/ammo_magazine/c45m magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/c45m) allowed_magazines = list(/obj/item/ammo_magazine/m45)
icon_state = "colt" icon_state = "colt"
caliber = ".45" caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/projectile/colt/detective /obj/item/weapon/gun/projectile/colt/detective
desc = "A Martian recreation of an old Terran pistol. Uses .45 rounds." 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() /obj/item/weapon/gun/projectile/colt/detective/update_icon()
if(ammo_magazine) if(ammo_magazine)
@@ -71,7 +71,7 @@
name = ".45 pistol" 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." 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" icon_state = "secguncomp"
magazine_type = /obj/item/ammo_magazine/c45m/rubber magazine_type = /obj/item/ammo_magazine/m45/rubber
caliber = ".45" caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg' fire_sound = 'sound/weapons/semiauto.ogg'
@@ -86,7 +86,7 @@
/obj/item/weapon/gun/projectile/sec/flash /obj/item/weapon/gun/projectile/sec/flash
name = ".45 signal pistol" 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 /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." 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 recoil = 0
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/c45m magazine_type = /obj/item/ammo_magazine/m45
allowed_magazines = list(/obj/item/ammo_magazine/c45m) allowed_magazines = list(/obj/item/ammo_magazine/m45)
/obj/item/weapon/gun/projectile/deagle /obj/item/weapon/gun/projectile/deagle
name = "desert eagle" name = "desert eagle"
@@ -120,11 +120,11 @@
icon_state = "deagle" icon_state = "deagle"
item_state = "deagle" item_state = "deagle"
force = 14.0 force = 14.0
caliber = ".50" caliber = ".50AE"
load_method = MAGAZINE load_method = MAGAZINE
fire_sound = 'sound/weapons/deagle.ogg' fire_sound = 'sound/weapons/deagle.ogg'
magazine_type = /obj/item/ammo_magazine/a50 magazine_type = /obj/item/ammo_magazine/m50
allowed_magazines = list(/obj/item/ammo_magazine/a50) allowed_magazines = list(/obj/item/ammo_magazine/m50)
/obj/item/weapon/gun/projectile/deagle/update_icon() /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." 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" icon_state = "gyropistol"
max_shells = 8 max_shells = 8
caliber = "75" caliber = ".75"
fire_sound = 'sound/weapons/rpg.ogg' fire_sound = 'sound/weapons/rpg.ogg'
origin_tech = list(TECH_COMBAT = 3) origin_tech = list(TECH_COMBAT = 3)
ammo_type = "/obj/item/ammo_casing/a75" ammo_type = "/obj/item/ammo_casing/a75"
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/a75 magazine_type = /obj/item/ammo_magazine/m75
allowed_magazines = list(/obj/item/ammo_magazine/a75) allowed_magazines = list(/obj/item/ammo_magazine/m75)
auto_eject = 1 auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' 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) origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg' fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE load_method = MAGAZINE
magazine_type = /obj/item/ammo_magazine/mc9mm magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm) allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/pistol/flash /obj/item/weapon/gun/projectile/pistol/flash
name = "holdout signal pistol" 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) /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob)
if(user.get_inactive_hand() == src) if(user.get_inactive_hand() == src)
@@ -256,17 +256,17 @@
var/global/list/ammo_types = list( var/global/list/ammo_types = list(
/obj/item/ammo_casing/a357 = ".357", /obj/item/ammo_casing/a357 = ".357",
/obj/item/ammo_casing/c9mmf = "9mm", /obj/item/ammo_casing/a9mmf = "9mm",
/obj/item/ammo_casing/c45f = ".45", /obj/item/ammo_casing/a45f = ".45",
/obj/item/ammo_casing/a10mm = "10mm", /obj/item/ammo_casing/a10mm = "10mm",
/obj/item/ammo_casing/shotgun = "12 gauge", /obj/item/ammo_casing/a12g = "12 gauge",
/obj/item/ammo_casing/shotgun = "12 gauge", /obj/item/ammo_casing/a12g = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge", /obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge", /obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/pellet = "12 gauge", /obj/item/ammo_casing/a12g/pellet = "12 gauge",
/obj/item/ammo_casing/shotgun/beanbag = "12 gauge", /obj/item/ammo_casing/a12g/beanbag = "12 gauge",
/obj/item/ammo_casing/shotgun/stunshell = "12 gauge", /obj/item/ammo_casing/a12g/stunshell = "12 gauge",
/obj/item/ammo_casing/shotgun/flash = "12 gauge", /obj/item/ammo_casing/a12g/flash = "12 gauge",
/obj/item/ammo_casing/a762 = "7.62mm", /obj/item/ammo_casing/a762 = "7.62mm",
/obj/item/ammo_casing/a556 = "5.56mm" /obj/item/ammo_casing/a556 = "5.56mm"
) )
@@ -299,8 +299,8 @@
caliber = "9mm" caliber = "9mm"
load_method = MAGAZINE load_method = MAGAZINE
fire_sound = 'sound/weapons/semiauto.ogg' fire_sound = 'sound/weapons/semiauto.ogg'
magazine_type = /obj/item/ammo_magazine/mc9mm magazine_type = /obj/item/ammo_magazine/m9mm
allowed_magazines = list(/obj/item/ammo_magazine/mc9mm) allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/luger/update_icon() /obj/item/weapon/gun/projectile/luger/update_icon()
..() ..()

View File

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

View File

@@ -8,10 +8,10 @@
force = 10 force = 10
flags = CONDUCT flags = CONDUCT
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
caliber = "shotgun" caliber = "12g"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
load_method = SINGLE_CASING load_method = SINGLE_CASING
ammo_type = /obj/item/ammo_casing/shotgun/beanbag ammo_type = /obj/item/ammo_casing/a12g/beanbag
handle_casings = HOLD_CASINGS handle_casings = HOLD_CASINGS
fire_sound = 'sound/weapons/shotgun.ogg' fire_sound = 'sound/weapons/shotgun.ogg'
var/recentpump = 0 // to prevent spammage var/recentpump = 0 // to prevent spammage
@@ -48,7 +48,7 @@
item_state = "cshotgun" item_state = "cshotgun"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) 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. 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 /obj/item/weapon/gun/projectile/shotgun/doublebarrel
name = "double-barreled shotgun" name = "double-barreled shotgun"
@@ -64,9 +64,9 @@
force = 10 force = 10
flags = CONDUCT flags = CONDUCT
slot_flags = SLOT_BACK slot_flags = SLOT_BACK
caliber = "shotgun" caliber = "12g"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) 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 burst_delay = 0
firemodes = list( firemodes = list(
@@ -75,12 +75,12 @@
) )
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet /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 /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare
name = "signal shotgun" name = "signal shotgun"
desc = "A double-barreled shotgun meant to fire signal flash shells." 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) /obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump)
..(user, allow_dump=1) ..(user, allow_dump=1)
@@ -115,6 +115,6 @@
icon_state = "sawnshotgun" icon_state = "sawnshotgun"
item_state = "sawnshotgun" item_state = "sawnshotgun"
slot_flags = SLOT_BELT|SLOT_HOLSTER 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 w_class = ITEMSIZE_NORMAL
force = 5 force = 5

View File

@@ -80,7 +80,7 @@
slot_flags = SLOT_BACK // Needs a sprite. slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
recoil = 2 //extra kickback recoil = 2 //extra kickback
caliber = "a762" caliber = "7.62mm"
load_method = MAGAZINE load_method = MAGAZINE
accuracy = -3 //shooting at the hip accuracy = -3 //shooting at the hip
scoped_accuracy = 0 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. 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' fire_sound = 'sound/weapons/SVD_shot.ogg'
magazine_type = /obj/item/ammo_magazine/SVD 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() /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. // icon_state = "SVD-bigmag" //No icon for this exists yet.
if(ammo_magazine) if(ammo_magazine)
icon_state = "SVD" 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/emps,
/obj/item/weapon/storage/box/flashbangs, /obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/gun/projectile/automatic/sts35, /obj/item/weapon/gun/projectile/automatic/sts35,
/obj/item/ammo_magazine/c762/ap, /obj/item/ammo_magazine/m762/ap,
/obj/item/ammo_magazine/c762/ap, /obj/item/ammo_magazine/m762/ap,
/obj/item/weapon/gun/projectile/colt, /obj/item/weapon/gun/projectile/colt,
/obj/item/ammo_magazine/c45m, /obj/item/ammo_magazine/m45,
/obj/item/weapon/material/hatchet/tacknife/combatknife) /obj/item/weapon/material/hatchet/tacknife/combatknife)
/datum/supply_drop_loot/heavy_warfare /datum/supply_drop_loot/heavy_warfare
name = "Heavy Warfare" name = "Heavy Warfare"
container = /obj/structure/largecrate container = /obj/structure/largecrate
/datum/supply_drop_loot/armour/New() /datum/supply_drop_loot/heavy_warfare/New()
..() ..()
contents = list( contents = list(
/obj/item/clothing/head/helmet/combat, /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/clothing/accessory/storage/black_drop_pouches,
/obj/item/weapon/storage/backpack/dufflebag/sec, /obj/item/weapon/storage/backpack/dufflebag/sec,
/obj/item/weapon/gun/projectile/automatic/carbine, /obj/item/weapon/gun/projectile/automatic/carbine,
/obj/item/ammo_magazine/c762/ap, /obj/item/ammo_magazine/m762/ap,
/obj/item/ammo_magazine/c762, /obj/item/ammo_magazine/m762,
/obj/item/weapon/shield/energy, /obj/item/weapon/shield/energy,
/obj/item/weapon/grenade/frag, /obj/item/weapon/grenade/frag,
/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 datum/supply_drop_loot/riot
name = "Riot Gear" name = "Riot Gear"
container = /obj/structure/largecrate container = /obj/structure/largecrate
/datum/supply_drop_loot/armour/New() /datum/supply_drop_loot/riot/New()
..() ..()
contents = list( contents = list(
/obj/item/clothing/head/helmet/riot, /obj/item/clothing/head/helmet/riot,

View File

@@ -545,7 +545,7 @@ other types of metals and chemistry for reagents).
id = "ammo_9mm" id = "ammo_9mm"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) 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" sort_string = "TAACA"
/datum/design/item/weapon/stunshell /datum/design/item/weapon/stunshell
@@ -553,7 +553,7 @@ other types of metals and chemistry for reagents).
id = "stunshell" id = "stunshell"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 4000) 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" sort_string = "TAACB"
/datum/design/item/weapon/chemsprayer /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 #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 // Base variants are applied to everyone on the same Z level
#define DETONATION_RADS 200 // 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 #define DETONATION_HALLUCINATION 600
@@ -95,6 +98,11 @@
anchored = 1 anchored = 1
grav_pulling = 1 grav_pulling = 1
exploded = 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) for(var/mob/living/mob in living_mob_list)
var/turf/T = get_turf(mob) var/turf/T = get_turf(mob)
if(T && (loc.z == T.z)) if(T && (loc.z == T.z))
@@ -102,8 +110,6 @@
//Hilariously enough, running into a closet should make you get hit the hardest. //Hilariously enough, running into a closet should make you get hit the hardest.
var/mob/living/carbon/human/H = mob var/mob/living/carbon/human/H = mob
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) 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) spawn(pull_time)
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
qdel(src) qdel(src)
@@ -252,12 +258,15 @@
if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) // VOREStation Edit - Only mesons can protect you! 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)) ) ) ) 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. //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. //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)))) for(var/mob/living/l in range(src, round(sqrt(power / 2))))
var/radius = max(get_dist(l, src), 1) var/radius = max(get_dist(l, src), 1)
var/rads = (power / 10) * ( 1 / (radius**2) ) var/rads = (power / 10) * ( 1 / (radius**2) )
l.apply_effect(rads, IRRADIATE) 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 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) "<span class=\"warning\">The unearthly ringing subsides and you notice you have new radiation burns.</span>", 2)
else else
l.show_message("<span class=\"warning\">You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.</span>", 2) 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) ) var/rads = 500
l.apply_effect(rads, IRRADIATE) radiation_repository.radiate(src, rads)
/obj/machinery/power/supermatter/proc/supermatter_pull() /obj/machinery/power/supermatter/proc/supermatter_pull()
//following is adapted from singulo code //following is adapted from singulo code

View File

@@ -1,5 +1,8 @@
/* SURGERY STEPS */ /* SURGERY STEPS */
/obj/
var/surgery_odds = 0 // Used for tables/etc which can have surgery done of them.
/datum/surgery_step /datum/surgery_step
var/priority = 0 //steps with higher priority would be attempted first var/priority = 0 //steps with higher priority would be attempted first
@@ -111,13 +114,29 @@
return 1 return 1
M.op_stage.in_progress += zone M.op_stage.in_progress += zone
S.begin_step(user, M, zone, src) //start on it 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. var/success = TRUE
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 // Bad tools make it less likely to succeed.
else if ((src in user.contents) && user.Adjacent(M)) //or if(!prob(S.tool_quality(src)))
S.fail_step(user, M, zone, src) //malpractice~ success = FALSE
else // This failing silently was a pain.
user << "<span class='warning'>You must remain close to your patient to conduct surgery.</span>" // 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. M.op_stage.in_progress -= zone // Clear the in-progress flag.
if (ishuman(M)) if (ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M

View File

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

View File

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

View File

@@ -198,8 +198,7 @@
radiation = rand() * 15 + 85 radiation = rand() * 15 + 85
if(!rad_shield) if(!rad_shield)
//irradiate nearby mobs //irradiate nearby mobs
for(var/mob/living/M in view(7,src)) radiation_repository.radiate(src, radiation / 25)
M.apply_effect(radiation / 25, IRRADIATE, 0)
else else
t_left_radspike = pick(10,15,25) 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. 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 #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 channel
LOG_OOC 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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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/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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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) "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/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) "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) "axp" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"axq" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall/dark,/area/shuttle/administration/centcom) "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) "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\nanoui.dm"
#include "code\controllers\Processes\obj.dm" #include "code\controllers\Processes\obj.dm"
#include "code\controllers\Processes\planet.dm" #include "code\controllers\Processes\planet.dm"
#include "code\controllers\Processes\radiation.dm"
#include "code\controllers\Processes\scheduler.dm" #include "code\controllers\Processes\scheduler.dm"
#include "code\controllers\Processes\Shuttle.dm" #include "code\controllers\Processes\Shuttle.dm"
#include "code\controllers\Processes\sun.dm" #include "code\controllers\Processes\sun.dm"
@@ -231,6 +232,7 @@
#include "code\datums\repositories\cameras.dm" #include "code\datums\repositories\cameras.dm"
#include "code\datums\repositories\crew.dm" #include "code\datums\repositories\crew.dm"
#include "code\datums\repositories\decls.dm" #include "code\datums\repositories\decls.dm"
#include "code\datums\repositories\radiation.dm"
#include "code\datums\repositories\repository.dm" #include "code\datums\repositories\repository.dm"
#include "code\datums\supplypacks\atmospherics.dm" #include "code\datums\supplypacks\atmospherics.dm"
#include "code\datums\supplypacks\contraband.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\flash_vr.dm"
#include "code\game\objects\items\devices\flashlight.dm" #include "code\game\objects\items\devices\flashlight.dm"
#include "code\game\objects\items\devices\floor_painter.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\hacktool.dm"
#include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\locker_painter.dm" #include "code\game\objects\items\devices\locker_painter.dm"
@@ -2061,8 +2064,8 @@
#include "code\modules\projectiles\effects.dm" #include "code\modules\projectiles\effects.dm"
#include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\gun.dm"
#include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\projectile.dm"
#include "code\modules\projectiles\ammunition\boxes.dm" #include "code\modules\projectiles\ammunition\magazines.dm"
#include "code\modules\projectiles\ammunition\bullets.dm" #include "code\modules\projectiles\ammunition\rounds.dm"
#include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\energy.dm"
#include "code\modules\projectiles\guns\launcher.dm" #include "code\modules\projectiles\guns\launcher.dm"
#include "code\modules\projectiles\guns\projectile.dm" #include "code\modules\projectiles\guns\projectile.dm"