April sync (#360)
* Maps and things no code/icons * helpers defines globalvars * Onclick world.dm orphaned_procs * subsystems Round vote and shuttle autocall done here too * datums * Game folder * Admin - chatter modules * clothing - mining * modular computers - zambies * client * mob level 1 * mob stage 2 + simple_animal * silicons n brains * mob stage 3 + Alien/Monkey * human mobs * icons updated * some sounds * emitter y u no commit * update tgstation.dme * compile fixes * travis fixes Also removes Fast digest mode, because reasons. * tweaks for travis Mentors are broke again Also fixes Sizeray guns * oxygen loss fix for vore code. * removes unused code * some code updates * bulk fixes * further fixes * outside things * whoops. * Maint bar ported * GLOBs.
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
return TRUE
|
||||
|
||||
//procs that handle the actual buckling and unbuckling
|
||||
/atom/movable/proc/buckle_mob(mob/living/M, force = 0, check_loc = 1)
|
||||
/atom/movable/proc/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
|
||||
if(!buckled_mobs)
|
||||
buckled_mobs = list()
|
||||
|
||||
@@ -72,14 +72,14 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/buckle_mob(mob/living/M, force = 0, check_loc = 1)
|
||||
/obj/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(resistance_flags & ON_FIRE) //Sets the mob on fire if you buckle them to a burning atom/movableect
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
|
||||
/atom/movable/proc/unbuckle_mob(mob/living/buckled_mob, force=0)
|
||||
/atom/movable/proc/unbuckle_mob(mob/living/buckled_mob, force=FALSE)
|
||||
if(istype(buckled_mob) && buckled_mob.buckled == src && (buckled_mob.can_unbuckle() || force))
|
||||
. = buckled_mob
|
||||
buckled_mob.buckled = null
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
post_buckle_mob(.)
|
||||
|
||||
/atom/movable/proc/unbuckle_all_mobs(force=0)
|
||||
/atom/movable/proc/unbuckle_all_mobs(force=FALSE)
|
||||
if(!has_buckled_mobs())
|
||||
return
|
||||
for(var/m in buckled_mobs)
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
|
||||
//Wrapper procs that handle sanity and user feedback
|
||||
/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = 1)
|
||||
/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE)
|
||||
if(!in_range(user, src) || user.stat || user.restrained())
|
||||
return 0
|
||||
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
var/countdown_colour
|
||||
var/obj/effect/countdown/anomaly/countdown
|
||||
|
||||
/obj/effect/anomaly/New()
|
||||
/obj/effect/anomaly/Initialize(mapload, new_lifespan)
|
||||
..()
|
||||
poi_list |= src
|
||||
GLOB.poi_list |= src
|
||||
START_PROCESSING(SSobj, src)
|
||||
impact_area = get_area(src)
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
if(IsMultiple(aSignal.frequency, 2))//signaller frequencies are always uneven!
|
||||
aSignal.frequency++
|
||||
|
||||
if(new_lifespan)
|
||||
lifespan = new_lifespan
|
||||
death_time = world.time + lifespan
|
||||
countdown = new(src)
|
||||
if(countdown_colour)
|
||||
@@ -45,14 +47,14 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/anomaly/Destroy()
|
||||
poi_list.Remove(src)
|
||||
GLOB.poi_list.Remove(src)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
qdel(countdown)
|
||||
return ..()
|
||||
|
||||
/obj/effect/anomaly/proc/anomalyEffect()
|
||||
if(prob(movechance))
|
||||
step(src,pick(alldirs))
|
||||
step(src,pick(GLOB.alldirs))
|
||||
|
||||
/obj/effect/anomaly/proc/detonate()
|
||||
return
|
||||
@@ -126,7 +128,7 @@
|
||||
density = 1
|
||||
var/canshock = 0
|
||||
var/shockdamage = 20
|
||||
var/explosive = 1
|
||||
var/explosive = TRUE
|
||||
|
||||
/obj/effect/anomaly/flux/New()
|
||||
..()
|
||||
@@ -196,7 +198,7 @@
|
||||
// Calculate new position (searches through beacons in world)
|
||||
var/obj/item/device/radio/beacon/chosen
|
||||
var/list/possible = list()
|
||||
for(var/obj/item/device/radio/beacon/W in teleportbeacons)
|
||||
for(var/obj/item/device/radio/beacon/W in GLOB.teleportbeacons)
|
||||
possible += W
|
||||
|
||||
if(possible.len > 0)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
|
||||
/obj/effect/bump_teleporter
|
||||
name = "bump-teleporter"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
@@ -11,12 +9,14 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
density = 1
|
||||
opacity = 0
|
||||
|
||||
var/static/list/AllTeleporters
|
||||
|
||||
/obj/effect/bump_teleporter/New()
|
||||
..()
|
||||
BUMP_TELEPORTERS += src
|
||||
LAZYADD(AllTeleporters, src)
|
||||
|
||||
/obj/effect/bump_teleporter/Destroy()
|
||||
BUMP_TELEPORTERS -= src
|
||||
LAZYREMOVE(AllTeleporters, src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/bump_teleporter/Bumped(atom/user)
|
||||
@@ -28,7 +28,7 @@ var/list/obj/effect/bump_teleporter/BUMP_TELEPORTERS = list()
|
||||
//user.loc = src.loc //Stop at teleporter location, there is nowhere to teleport to.
|
||||
return
|
||||
|
||||
for(var/obj/effect/bump_teleporter/BT in BUMP_TELEPORTERS)
|
||||
for(var/obj/effect/bump_teleporter/BT in AllTeleporters)
|
||||
if(BT.id == src.id_target)
|
||||
usr.loc = BT.loc //Teleport to location with correct id.
|
||||
return
|
||||
@@ -20,6 +20,16 @@
|
||||
blood_DNA |= C.blood_DNA.Copy()
|
||||
..()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/old
|
||||
name = "dried blood"
|
||||
desc = "Looks like it's been here a while. Eew."
|
||||
bloodiness = 0
|
||||
|
||||
/obj/effect/decal/cleanable/blood/old/Initialize()
|
||||
..()
|
||||
icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization.
|
||||
blood_DNA["Non-human DNA"] = "A+"
|
||||
|
||||
/obj/effect/decal/cleanable/blood/splatter
|
||||
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
|
||||
|
||||
@@ -50,7 +60,7 @@
|
||||
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
|
||||
mergeable_decal = 0
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/New()
|
||||
/obj/effect/decal/cleanable/blood/gibs/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("liquidgibs", 5)
|
||||
|
||||
@@ -83,13 +93,23 @@
|
||||
/obj/effect/decal/cleanable/blood/gibs/torso
|
||||
random_icon_states = list("gibtorso")
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/limb
|
||||
random_icon_states = list("gibleg", "gibarm")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/core
|
||||
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/old
|
||||
name = "old rotting gibs"
|
||||
desc = "Space Jesus, why didn't anyone clean this up? It smells terrible."
|
||||
bloodiness = 0
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/old/Initialize()
|
||||
..()
|
||||
setDir(pick(1,2,4,8))
|
||||
icon_state += "-old"
|
||||
blood_DNA["Non-human DNA"] = "A+"
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/blood/drip
|
||||
name = "drips of blood"
|
||||
@@ -139,23 +159,23 @@
|
||||
/obj/effect/decal/cleanable/blood/footprints/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
for(var/Ddir in cardinal)
|
||||
for(var/Ddir in GLOB.cardinal)
|
||||
if(entered_dirs & Ddir)
|
||||
var/image/I
|
||||
if(bloody_footprints_cache["entered-[blood_state]-[Ddir]"])
|
||||
I = bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
|
||||
if(GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"])
|
||||
I = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
|
||||
else
|
||||
I = image(icon,"[blood_state]1",dir = Ddir)
|
||||
bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = I
|
||||
GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"] = I
|
||||
if(I)
|
||||
add_overlay(I)
|
||||
if(exited_dirs & Ddir)
|
||||
var/image/I
|
||||
if(bloody_footprints_cache["exited-[blood_state]-[Ddir]"])
|
||||
I = bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
|
||||
if(GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"])
|
||||
I = GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"]
|
||||
else
|
||||
I = image(icon,"[blood_state]2",dir = Ddir)
|
||||
bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = I
|
||||
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = I
|
||||
if(I)
|
||||
add_overlay(I)
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
icon_state = "ash"
|
||||
mergeable_decal = 0
|
||||
|
||||
/obj/effect/decal/cleanable/ash/New()
|
||||
/obj/effect/decal/cleanable/ash/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("ash", 30)
|
||||
pixel_x = rand(-5, 5)
|
||||
@@ -21,7 +21,7 @@
|
||||
name = "large pile of ashes"
|
||||
icon_state = "big_ash"
|
||||
|
||||
/obj/effect/decal/cleanable/ash/large/New()
|
||||
/obj/effect/decal/cleanable/ash/large/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("ash", 30) //double the amount of ash.
|
||||
|
||||
@@ -104,6 +104,14 @@
|
||||
viruses = null
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/old
|
||||
name = "crusty dried vomit"
|
||||
desc = "You try not to look at the chunks, and fail."
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/old/Initialize()
|
||||
..()
|
||||
icon_state += "-old"
|
||||
|
||||
/obj/effect/decal/cleanable/tomato_smudge
|
||||
name = "tomato smudge"
|
||||
desc = "It's red."
|
||||
@@ -149,7 +157,7 @@
|
||||
if(severity == 1) //so shreds created during an explosion aren't deleted by the explosion.
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/shreds/New()
|
||||
/obj/effect/decal/cleanable/shreds/Initialize()
|
||||
pixel_x = rand(-10, 10)
|
||||
pixel_y = rand(-10, 10)
|
||||
..()
|
||||
@@ -163,7 +171,7 @@
|
||||
|
||||
/obj/effect/decal/cleanable/glitter
|
||||
name = "generic glitter pile"
|
||||
desc = "the herpes of arts and crafts"
|
||||
desc = "The herpes of arts and crafts."
|
||||
icon = 'icons/effects/tile_effects.dmi'
|
||||
gender = NEUTER
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
blood_state = BLOOD_STATE_OIL
|
||||
bloodiness = MAX_SHOE_BLOODINESS
|
||||
|
||||
/obj/effect/decal/cleanable/oil/New()
|
||||
/obj/effect/decal/cleanable/oil/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("oil", 30)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints
|
||||
var/mergeable_decal = 1 //when two of these are on a same tile or do we need to merge them into just one?
|
||||
|
||||
/obj/effect/decal/cleanable/New()
|
||||
/obj/effect/decal/cleanable/Initialize(mapload)
|
||||
if (random_icon_states && length(src.random_icon_states) > 0)
|
||||
src.icon_state = pick(src.random_icon_states)
|
||||
create_reagents(300)
|
||||
@@ -88,4 +88,4 @@
|
||||
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
|
||||
return bloodiness
|
||||
else
|
||||
return 0
|
||||
return 0
|
||||
|
||||
@@ -6,14 +6,13 @@
|
||||
gender = NEUTER
|
||||
var/do_icon_rotate = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null)
|
||||
/obj/effect/decal/cleanable/crayon/Initialize(mapload, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0, var/alt_icon = null)
|
||||
..()
|
||||
loc = location
|
||||
|
||||
|
||||
name = e_name
|
||||
desc = "A [name] vandalizing the station."
|
||||
if(type == "poseur tag")
|
||||
type = pick(gang_name_pool)
|
||||
type = pick(GLOB.gang_name_pool)
|
||||
|
||||
if(alt_icon)
|
||||
icon = alt_icon
|
||||
@@ -32,17 +31,17 @@
|
||||
do_icon_rotate = FALSE //These are designed to always face south, so no rotation please.
|
||||
var/datum/gang/gang
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/gang/New(location, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0)
|
||||
/obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0)
|
||||
if(!type || !G)
|
||||
qdel(src)
|
||||
|
||||
var/area/territory = get_area(location)
|
||||
var/area/territory = get_area(src)
|
||||
gang = G
|
||||
var/newcolor = G.color_hex
|
||||
icon_state = G.name
|
||||
G.territory_new |= list(territory.type = territory.name)
|
||||
|
||||
..(location, newcolor, icon_state, e_name, rotation)
|
||||
..(mapload, newcolor, icon_state, e_name, rotation)
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/gang/Destroy()
|
||||
var/area/territory = get_area(src)
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
if(!(resistance_flags & FIRE_PROOF)) //non fire proof decal or being burned by lava
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/HandleTurfChange(turf/T)
|
||||
..()
|
||||
if(T == loc && (isspaceturf(T) || isclosedturf(T) || islava(T) || istype(T, /turf/open/water) || istype(T, /turf/open/chasm)))
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/turf_decal
|
||||
var/group = TURF_DECAL_PAINT
|
||||
@@ -54,4 +58,10 @@
|
||||
icon_state = "bot"
|
||||
|
||||
/obj/effect/turf_decal/loading_area
|
||||
icon_state = "loading_area"
|
||||
icon_state = "loading_area"
|
||||
|
||||
/obj/effect/turf_decal/sand
|
||||
icon_state = "sandyfloor"
|
||||
|
||||
/obj/effect/turf_decal/sand/plating
|
||||
icon_state = "sandyplating"
|
||||
@@ -5,11 +5,12 @@
|
||||
layer = POINT_LAYER
|
||||
duration = 25
|
||||
|
||||
/obj/effect/overlay/temp/point/New(atom/target, set_invis = 0)
|
||||
/obj/effect/overlay/temp/point/Initialize(mapload, set_invis = 0)
|
||||
..()
|
||||
loc = get_turf(target)
|
||||
pixel_x = target.pixel_x
|
||||
pixel_y = target.pixel_y
|
||||
var/atom/old_loc = loc
|
||||
loc = get_turf(src)
|
||||
pixel_x = old_loc.pixel_x
|
||||
pixel_y = old_loc.pixel_y
|
||||
invisibility = set_invis
|
||||
|
||||
//Used by spraybottles.
|
||||
@@ -30,4 +31,4 @@
|
||||
desc = "A lightweight support lattice."
|
||||
icon = 'icons/obj/smooth_structures/lattice.dmi'
|
||||
icon_state = "lattice"
|
||||
density = 1
|
||||
density = 1
|
||||
|
||||
@@ -17,4 +17,8 @@
|
||||
/obj/effect/decal/remains/robot
|
||||
desc = "They look like the remains of something mechanical. They have a strange aura about them."
|
||||
icon = 'icons/mob/robots.dmi'
|
||||
icon_state = "remainsrobot"
|
||||
icon_state = "remainsrobot"
|
||||
|
||||
/obj/effect/decal/cleanable/robot_debris/old
|
||||
name = "dusty robot debris"
|
||||
desc = "Looks like nobody has touched this in a while."
|
||||
@@ -13,12 +13,12 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
|
||||
/obj/effect/particle_effect/New()
|
||||
..()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
if(SSticker)
|
||||
GLOB.cameranet.updateVisibility(src)
|
||||
|
||||
/obj/effect/particle_effect/Destroy()
|
||||
if(ticker)
|
||||
cameranet.updateVisibility(src)
|
||||
if(SSticker)
|
||||
GLOB.cameranet.updateVisibility(src)
|
||||
. = ..()
|
||||
|
||||
/datum/effect_system
|
||||
@@ -60,9 +60,9 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
total_effects++
|
||||
var/direction
|
||||
if(cardinals)
|
||||
direction = pick(cardinal)
|
||||
direction = pick(GLOB.cardinal)
|
||||
else
|
||||
direction = pick(alldirs)
|
||||
direction = pick(GLOB.alldirs)
|
||||
var/steps_amt = pick(1,2,3)
|
||||
for(var/j in 1 to steps_amt)
|
||||
sleep(5)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
for(var/i in 1 to number)
|
||||
spawn(0)
|
||||
var/obj/effect/particle_effect/expl_particles/expl = new /obj/effect/particle_effect/expl_particles(location)
|
||||
var/direct = pick(alldirs)
|
||||
var/direct = pick(GLOB.alldirs)
|
||||
var/steps_amt = pick(1;25,2;50,3,4;200)
|
||||
for(var/j in 1 to steps_amt)
|
||||
sleep(1)
|
||||
|
||||
@@ -73,6 +73,8 @@
|
||||
|
||||
/obj/effect/particle_effect/smoke/proc/spread_smoke()
|
||||
var/turf/t_loc = get_turf(src)
|
||||
if(!t_loc)
|
||||
return
|
||||
var/list/newsmokes = list()
|
||||
for(var/turf/T in t_loc.GetAtmosAdjacentTurfs())
|
||||
var/obj/effect/particle_effect/smoke/foundsmoke = locate() in T //Don't spread smoke where there's already smoke!
|
||||
@@ -82,7 +84,7 @@
|
||||
smoke_mob(L)
|
||||
var/obj/effect/particle_effect/smoke/S = new type(T)
|
||||
reagents.copy_to(S, reagents.total_volume)
|
||||
S.setDir(pick(cardinal))
|
||||
S.setDir(pick(GLOB.cardinal))
|
||||
S.amount = amount-1
|
||||
S.add_atom_colour(color, FIXED_COLOUR_PRIORITY)
|
||||
S.lifetime = lifetime
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
// will always spawn at the items location, even if it's moved.
|
||||
|
||||
/* Example:
|
||||
var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() -- creates new system
|
||||
var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() -- creates new system
|
||||
steam.set_up(5, 0, mob.loc) -- sets up variables
|
||||
OPTIONAL: steam.attach(mob)
|
||||
steam.start() -- spawns the effect
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
//separate dm since hydro is getting bloated already
|
||||
|
||||
var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
/turf/open/floor/plating/lava,
|
||||
/turf/open/floor/plating/beach/water))
|
||||
|
||||
/obj/structure/glowshroom
|
||||
name = "glowshroom"
|
||||
desc = "Mycena Bregprox, a species of mushroom that glows in the dark."
|
||||
@@ -20,6 +16,9 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
var/generation = 1
|
||||
var/spreadIntoAdjacentChance = 60
|
||||
var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom
|
||||
var/static/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
/turf/open/floor/plating/lava,
|
||||
/turf/open/floor/plating/beach/water))
|
||||
|
||||
/obj/structure/glowshroom/glowcap
|
||||
name = "glowcap"
|
||||
@@ -110,7 +109,7 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
var/placeCount = 1
|
||||
for(var/obj/structure/glowshroom/shroom in newLoc)
|
||||
shroomCount++
|
||||
for(var/wallDir in cardinal)
|
||||
for(var/wallDir in GLOB.cardinal)
|
||||
var/turf/isWall = get_step(newLoc,wallDir)
|
||||
if(isWall.density)
|
||||
placeCount++
|
||||
@@ -131,7 +130,7 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
/obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
|
||||
var/direction = 16
|
||||
|
||||
for(var/wallDir in cardinal)
|
||||
for(var/wallDir in GLOB.cardinal)
|
||||
var/turf/newTurf = get_step(location,wallDir)
|
||||
if(newTurf.density)
|
||||
direction |= wallDir
|
||||
|
||||
@@ -8,63 +8,10 @@
|
||||
/obj/effect/landmark/New()
|
||||
..()
|
||||
tag = text("landmark*[]", name)
|
||||
landmarks_list += src
|
||||
|
||||
switch(name) //some of these are probably obsolete
|
||||
if("monkey")
|
||||
monkeystart += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("start")
|
||||
newplayer_start += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("wizard")
|
||||
wizardstart += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("JoinLate")
|
||||
latejoin += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("prisonwarp")
|
||||
prisonwarp += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("Holding Facility")
|
||||
holdingfacility += loc
|
||||
if("tdome1")
|
||||
tdome1 += loc
|
||||
if("tdome2")
|
||||
tdome2 += loc
|
||||
if("tdomeadmin")
|
||||
tdomeadmin += loc
|
||||
if("tdomeobserve")
|
||||
tdomeobserve += loc
|
||||
if("prisonsecuritywarp")
|
||||
prisonsecuritywarp += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("blobstart")
|
||||
blobstart += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("secequipment")
|
||||
secequipment += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("Emergencyresponseteam")
|
||||
emergencyresponseteamspawn += loc
|
||||
qdel(src)
|
||||
return
|
||||
if("xeno_spawn")
|
||||
xeno_spawn += loc
|
||||
qdel(src)
|
||||
return
|
||||
return 1
|
||||
GLOB.landmarks_list += src
|
||||
|
||||
/obj/effect/landmark/Destroy()
|
||||
landmarks_list -= src
|
||||
GLOB.landmarks_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/start
|
||||
@@ -74,162 +21,113 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/landmark/start/New()
|
||||
start_landmarks_list += src
|
||||
GLOB.start_landmarks_list += src
|
||||
..()
|
||||
if(name != initial(name))
|
||||
if(name != "start")
|
||||
tag = "start*[name]"
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/start/Destroy()
|
||||
start_landmarks_list -= src
|
||||
GLOB.start_landmarks_list -= src
|
||||
return ..()
|
||||
|
||||
//Costume spawner landmarks
|
||||
// START LANDMARKS FOLLOW. Don't change the names unless
|
||||
// you are refactoring shitty landmark code.
|
||||
|
||||
/obj/effect/landmark/costume/New() //costume spawner, selects a random subclass and disappears
|
||||
/obj/effect/landmark/start/assistant
|
||||
name = "Assistant"
|
||||
|
||||
var/list/options = typesof(/obj/effect/landmark/costume)
|
||||
var/PICK= options[rand(1,options.len)]
|
||||
new PICK(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/janitor
|
||||
name = "Janitor"
|
||||
|
||||
//SUBCLASSES. Spawn a bunch of items and disappear likewise
|
||||
/obj/effect/landmark/costume/chicken/New()
|
||||
new /obj/item/clothing/suit/chickensuit(src.loc)
|
||||
new /obj/item/clothing/head/chicken(src.loc)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/egg(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/cargo_technician
|
||||
name = "Cargo Technician"
|
||||
|
||||
/obj/effect/landmark/costume/gladiator/New()
|
||||
new /obj/item/clothing/under/gladiator(src.loc)
|
||||
new /obj/item/clothing/head/helmet/gladiator(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/bartender
|
||||
name = "Bartender"
|
||||
|
||||
/obj/effect/landmark/costume/madscientist/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/suit/toggle/labcoat/mad(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/clown
|
||||
name = "Clown"
|
||||
|
||||
/obj/effect/landmark/costume/elpresidente/New()
|
||||
new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc)
|
||||
new /obj/item/clothing/head/flatcap(src.loc)
|
||||
new /obj/item/clothing/mask/cigarette/cigar/havana(src.loc)
|
||||
new /obj/item/clothing/shoes/jackboots(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/mime
|
||||
name = "Mime"
|
||||
|
||||
/obj/effect/landmark/costume/nyangirl/New()
|
||||
new /obj/item/clothing/under/schoolgirl(src.loc)
|
||||
new /obj/item/clothing/head/kitty(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/quartermaster
|
||||
name = "Quartermaster"
|
||||
|
||||
/obj/effect/landmark/costume/maid/New()
|
||||
new /obj/item/clothing/under/skirt/black(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/beret , /obj/item/clothing/head/rabbitears )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/sunglasses/blindfold(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/atmospheric_technician
|
||||
name = "Atmospheric Technician"
|
||||
|
||||
/obj/effect/landmark/costume/butler/New()
|
||||
new /obj/item/clothing/tie/waistcoat(src.loc)
|
||||
new /obj/item/clothing/under/suit_jacket(src.loc)
|
||||
new /obj/item/clothing/head/that(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/cook
|
||||
name = "Cook"
|
||||
|
||||
/obj/effect/landmark/costume/highlander/New()
|
||||
new /obj/item/clothing/under/kilt(src.loc)
|
||||
new /obj/item/clothing/head/beret(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/shaft_miner
|
||||
name = "Shaft Miner"
|
||||
|
||||
/obj/effect/landmark/costume/prig/New()
|
||||
new /obj/item/clothing/tie/waistcoat(src.loc)
|
||||
new /obj/item/clothing/glasses/monocle(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/shoes/sneakers/black(src.loc)
|
||||
new /obj/item/weapon/cane(src.loc)
|
||||
new /obj/item/clothing/under/sl_suit(src.loc)
|
||||
new /obj/item/clothing/mask/fakemoustache(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/security_officer
|
||||
name = "Security Officer"
|
||||
|
||||
/obj/effect/landmark/costume/plaguedoctor/New()
|
||||
new /obj/item/clothing/suit/bio_suit/plaguedoctorsuit(src.loc)
|
||||
new /obj/item/clothing/head/plaguedoctorhat(src.loc)
|
||||
new /obj/item/clothing/mask/gas/plaguedoctor(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/botanist
|
||||
name = "Botanist"
|
||||
|
||||
/obj/effect/landmark/costume/nightowl/New()
|
||||
new /obj/item/clothing/suit/toggle/owlwings(src.loc)
|
||||
new /obj/item/clothing/under/owl(src.loc)
|
||||
new /obj/item/clothing/mask/gas/owl_mask(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/head_of_security
|
||||
name = "Head of Security"
|
||||
|
||||
/obj/effect/landmark/costume/thegriffin/New()
|
||||
new /obj/item/clothing/suit/toggle/owlwings/griffinwings(src.loc)
|
||||
new /obj/item/clothing/shoes/griffin(src.loc)
|
||||
new /obj/item/clothing/under/griffin(src.loc)
|
||||
new /obj/item/clothing/head/griffin(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/ai
|
||||
name = "AI"
|
||||
|
||||
/obj/effect/landmark/costume/waiter/New()
|
||||
new /obj/item/clothing/under/waiter(src.loc)
|
||||
var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears)
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/suit/apron(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/captain
|
||||
name = "Captain"
|
||||
|
||||
/obj/effect/landmark/costume/pirate/New()
|
||||
new /obj/item/clothing/under/pirate(src.loc)
|
||||
new /obj/item/clothing/suit/pirate(src.loc)
|
||||
var/CHOICE = pick( /obj/item/clothing/head/pirate , /obj/item/clothing/head/bandana )
|
||||
new CHOICE(src.loc)
|
||||
new /obj/item/clothing/glasses/eyepatch(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/detective
|
||||
name = "Detective"
|
||||
|
||||
/obj/effect/landmark/costume/commie/New()
|
||||
new /obj/item/clothing/under/soviet(src.loc)
|
||||
new /obj/item/clothing/head/ushanka(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/warden
|
||||
name = "Warden"
|
||||
|
||||
/obj/effect/landmark/costume/imperium_monk/New()
|
||||
new /obj/item/clothing/suit/imperium_monk(src.loc)
|
||||
if (prob(25))
|
||||
new /obj/item/clothing/mask/gas/cyborg(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/chief_engineer
|
||||
name = "Chief Engineer"
|
||||
|
||||
/obj/effect/landmark/costume/holiday_priest/New()
|
||||
new /obj/item/clothing/suit/holidaypriest(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/cyborg
|
||||
name = "Cyborg"
|
||||
|
||||
/obj/effect/landmark/costume/marisawizard/fake/New()
|
||||
new /obj/item/clothing/shoes/sandal/marisa(src.loc)
|
||||
new /obj/item/clothing/head/wizard/marisa/fake(src.loc)
|
||||
new/obj/item/clothing/suit/wizrobe/marisa/fake(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/head_of_personnel
|
||||
name = "Head of Personnel"
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/librarian
|
||||
name = "Librarian"
|
||||
|
||||
/obj/effect/landmark/costume/fakewizard/New()
|
||||
new /obj/item/clothing/shoes/sandal(src.loc)
|
||||
new /obj/item/clothing/suit/wizrobe/fake(src.loc)
|
||||
new /obj/item/clothing/head/wizard/fake(src.loc)
|
||||
new /obj/item/weapon/staff/(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/lawyer
|
||||
name = "Lawyer"
|
||||
|
||||
/obj/effect/landmark/costume/sexyclown/New()
|
||||
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
|
||||
new /obj/item/clothing/under/rank/clown/sexy(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/station_engineer
|
||||
name = "Station Engineer"
|
||||
|
||||
/obj/effect/landmark/costume/sexymime/New()
|
||||
new /obj/item/clothing/mask/gas/sexymime(src.loc)
|
||||
new /obj/item/clothing/under/sexymime(src.loc)
|
||||
qdel(src)
|
||||
/obj/effect/landmark/start/medical_doctor
|
||||
name = "Medical Doctor"
|
||||
|
||||
/obj/effect/landmark/start/scientist
|
||||
name = "Scientist"
|
||||
|
||||
/obj/effect/landmark/start/chemist
|
||||
name = "Chemist"
|
||||
|
||||
/obj/effect/landmark/start/roboticist
|
||||
name = "Roboticist"
|
||||
|
||||
/obj/effect/landmark/start/research_director
|
||||
name = "Research Director"
|
||||
|
||||
/obj/effect/landmark/start/geneticist
|
||||
name = "Geneticist"
|
||||
|
||||
/obj/effect/landmark/start/chief_medical_officer
|
||||
name = "Chief Medical Officer"
|
||||
|
||||
/obj/effect/landmark/start/virologist
|
||||
name = "Virologist"
|
||||
|
||||
/obj/effect/landmark/start/chaplain
|
||||
name = "Chaplain"
|
||||
|
||||
//Department Security spawns
|
||||
|
||||
@@ -238,10 +136,10 @@
|
||||
|
||||
/obj/effect/landmark/start/depsec/New()
|
||||
..()
|
||||
department_security_spawns += src
|
||||
GLOB.department_security_spawns += src
|
||||
|
||||
/obj/effect/landmark/start/depsec/Destroy()
|
||||
department_security_spawns -= src
|
||||
GLOB.department_security_spawns -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/start/depsec/supply
|
||||
@@ -256,32 +154,180 @@
|
||||
/obj/effect/landmark/start/depsec/science
|
||||
name = "science_sec"
|
||||
|
||||
/obj/effect/landmark/start/wizard
|
||||
name = "wizard"
|
||||
|
||||
/obj/effect/landmark/start/wizard/Initialize(mapload)
|
||||
..()
|
||||
GLOB.wizardstart += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/start/new_player
|
||||
name = "New Player"
|
||||
|
||||
// Must be on New() rather than Initialize, because players will
|
||||
// join before SSatom initializes everything.
|
||||
/obj/effect/landmark/start/new_player/New(loc)
|
||||
..()
|
||||
GLOB.newplayer_start += loc
|
||||
|
||||
/obj/effect/landmark/start/new_player/Initialize(mapload)
|
||||
..()
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
/obj/effect/landmark/latejoin
|
||||
name = "JoinLate"
|
||||
|
||||
/obj/effect/landmark/latejoin/Initialize(mapload)
|
||||
..()
|
||||
GLOB.latejoin += loc
|
||||
qdel(src)
|
||||
|
||||
// carp.
|
||||
/obj/effect/landmark/carpspawn
|
||||
name = "carpspawn"
|
||||
|
||||
// lightsout.
|
||||
/obj/effect/landmark/lightsout
|
||||
name = "lightsout"
|
||||
|
||||
// observer-start.
|
||||
/obj/effect/landmark/observer_start
|
||||
name = "Observer-Start"
|
||||
|
||||
// revenant spawn.
|
||||
/obj/effect/landmark/revenantspawn
|
||||
name = "revnantspawn"
|
||||
|
||||
// triple ais.
|
||||
/obj/effect/landmark/tripai
|
||||
name = "tripai"
|
||||
|
||||
// marauder entry (XXX WTF IS MAURADER ENTRY???)
|
||||
|
||||
/obj/effect/landmark/marauder_entry
|
||||
name = "Marauder Entry"
|
||||
|
||||
// syndicate breach area (XXX I DON'T KNOW WHAT THIS IS EITHER)
|
||||
|
||||
/obj/effect/landmark/syndicate_breach_area
|
||||
name = "Syndicate Breach Area"
|
||||
|
||||
// teleport scroll landmark, XXX DOES THIS DO ANYTHING?
|
||||
/obj/effect/landmark/teleport_scroll
|
||||
name = "Teleport-Scroll"
|
||||
|
||||
/obj/effect/landmark/syndicate_spawn
|
||||
name = "Syndicate-Spawn"
|
||||
|
||||
// xenos.
|
||||
/obj/effect/landmark/xeno_spawn
|
||||
name = "xeno_spawn"
|
||||
|
||||
/obj/effect/landmark/xeno_spawn/Initialize(mapload)
|
||||
..()
|
||||
GLOB.xeno_spawn += loc
|
||||
qdel(src)
|
||||
|
||||
// blobs.
|
||||
/obj/effect/landmark/blobstart
|
||||
name = "blobstart"
|
||||
|
||||
/obj/effect/landmark/blobstart/Initialize(mapload)
|
||||
..()
|
||||
GLOB.blobstart += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/secequipment
|
||||
name = "secequipment"
|
||||
|
||||
/obj/effect/landmark/secequipment/Initialize(mapload)
|
||||
..()
|
||||
GLOB.secequipment += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/prisonwarp
|
||||
name = "prisonwarp"
|
||||
|
||||
/obj/effect/landmark/prisonwarp/Initialize(mapload)
|
||||
..()
|
||||
GLOB.prisonwarp += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/ert_spawn
|
||||
name = "Emergencyresponseteam"
|
||||
|
||||
/obj/effect/landmark/ert_spawn/Initialize(mapload)
|
||||
..()
|
||||
GLOB.emergencyresponseteamspawn += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/holding_facility
|
||||
name = "Holding Facility"
|
||||
|
||||
/obj/effect/landmark/holding_facility/Initialize(mapload)
|
||||
..()
|
||||
GLOB.holdingfacility += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/thunderdome/observe
|
||||
name = "tdomeobserve"
|
||||
|
||||
/obj/effect/landmark/thunderdome/observe/Initialize(mapload)
|
||||
..()
|
||||
GLOB.tdomeobserve += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/thunderdome/one
|
||||
name = "tdome1"
|
||||
|
||||
/obj/effect/landmark/thunderdome/one/Initialize(mapload)
|
||||
..()
|
||||
GLOB.tdome1 += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/thunderdome/two
|
||||
name = "tdome2"
|
||||
|
||||
/obj/effect/landmark/thunderdome/two/Initialize(mapload)
|
||||
..()
|
||||
GLOB.tdome2 += loc
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/landmark/thunderdome/admin
|
||||
name = "tdomeadmin"
|
||||
|
||||
/obj/effect/landmark/thunderdome/admin/Initialize(mapload)
|
||||
..()
|
||||
GLOB.tdomeadmin += loc
|
||||
qdel(src)
|
||||
|
||||
//generic event spawns
|
||||
/obj/effect/landmark/event_spawn
|
||||
name = "generic event spawn"
|
||||
icon_state = "x4"
|
||||
|
||||
|
||||
/obj/effect/landmark/event_spawn/New()
|
||||
..()
|
||||
generic_event_spawns += src
|
||||
GLOB.generic_event_spawns += src
|
||||
|
||||
/obj/effect/landmark/event_spawn/Destroy()
|
||||
generic_event_spawns -= src
|
||||
GLOB.generic_event_spawns -= src
|
||||
return ..()
|
||||
|
||||
/obj/effect/landmark/ruin
|
||||
var/datum/map_template/ruin/ruin_template
|
||||
|
||||
/obj/effect/landmark/ruin/New(loc, my_ruin_template)
|
||||
name = "ruin_[ruin_landmarks.len + 1]"
|
||||
name = "ruin_[GLOB.ruin_landmarks.len + 1]"
|
||||
..(loc)
|
||||
ruin_template = my_ruin_template
|
||||
ruin_landmarks |= src
|
||||
GLOB.ruin_landmarks |= src
|
||||
|
||||
/obj/effect/landmark/ruin/Destroy()
|
||||
ruin_landmarks -= src
|
||||
GLOB.ruin_landmarks -= src
|
||||
ruin_template = null
|
||||
. = ..()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/obj/effect/manifest/proc/manifest()
|
||||
var/dat = "<B>Crew Manifest</B>:<BR>"
|
||||
for(var/mob/living/carbon/human/M in mob_list)
|
||||
for(var/mob/living/carbon/human/M in GLOB.mob_list)
|
||||
dat += text(" <B>[]</B> - []<BR>", M.name, M.get_assignment())
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
|
||||
P.info = dat
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/obj/effect/overlay/temp/New()
|
||||
..()
|
||||
if(randomdir)
|
||||
setDir(pick(cardinal))
|
||||
setDir(pick(GLOB.cardinal))
|
||||
flick("[icon_state]", src) //Because we might be pulling it from a pool, flick whatever icon it uses so it starts at the start of the icon's animation.
|
||||
|
||||
timerid = QDEL_IN(src, duration)
|
||||
@@ -58,7 +58,7 @@
|
||||
var/splatter_type = "splatter"
|
||||
|
||||
/obj/effect/overlay/temp/dir_setting/bloodsplatter/New(loc, set_dir)
|
||||
if(set_dir in diagonals)
|
||||
if(set_dir in GLOB.diagonals)
|
||||
icon_state = "[splatter_type][pick(1, 2, 6)]"
|
||||
else
|
||||
icon_state = "[splatter_type][pick(3, 4, 5)]"
|
||||
@@ -507,6 +507,11 @@
|
||||
icon_state = dust_icon // Before ..() so the correct icon is flick()'d
|
||||
..()
|
||||
|
||||
/obj/effect/overlay/temp/mummy_animation
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "mummy_revive"
|
||||
duration = 20
|
||||
|
||||
/obj/effect/overlay/temp/heal //color is white by default, set to whatever is needed
|
||||
name = "healing glow"
|
||||
icon_state = "heal"
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
/obj/effect/portal/Bumped(mob/M as mob|obj)
|
||||
teleport(M)
|
||||
|
||||
/obj/effect/portal/attack_tk(mob/user)
|
||||
return
|
||||
|
||||
/obj/effect/portal/attack_hand(mob/user)
|
||||
if(Adjacent(user))
|
||||
teleport(user)
|
||||
@@ -27,7 +30,7 @@
|
||||
|
||||
/obj/effect/portal/New(loc, turf/target, creator=null, lifespan=300)
|
||||
..()
|
||||
portals += src
|
||||
GLOB.portals += src
|
||||
src.target = target
|
||||
src.creator = creator
|
||||
|
||||
@@ -39,7 +42,7 @@
|
||||
QDEL_IN(src, lifespan)
|
||||
|
||||
/obj/effect/portal/Destroy()
|
||||
portals -= src
|
||||
GLOB.portals -= src
|
||||
if(istype(creator, /obj/item/weapon/hand_tele))
|
||||
var/obj/item/weapon/hand_tele/O = creator
|
||||
O.active_portals--
|
||||
|
||||
@@ -2,96 +2,45 @@
|
||||
name = "bomb"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x"
|
||||
var/btype = 0 // 0=radio, 1=prox, 2=time
|
||||
var/btemp1 = 1500
|
||||
var/btemp2 = 1000 // tank temperatures
|
||||
var/assembly_type
|
||||
|
||||
/obj/effect/spawner/newbomb/Initialize()
|
||||
..()
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/internals/plasma/full/PT = new(V)
|
||||
var/obj/item/weapon/tank/internals/oxygen/OT = new(V)
|
||||
|
||||
PT.air_contents.temperature = btemp1 + T0C
|
||||
OT.air_contents.temperature = btemp2 + T0C
|
||||
|
||||
V.tank_one = PT
|
||||
V.tank_two = OT
|
||||
PT.master = V
|
||||
OT.master = V
|
||||
|
||||
if(assembly_type)
|
||||
var/obj/item/device/assembly/A = new assembly_type(V)
|
||||
V.attached_device = A
|
||||
A.holder = V
|
||||
A.toggle_secure()
|
||||
|
||||
V.update_icon()
|
||||
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/newbomb/timer
|
||||
btype = 2
|
||||
assembly_type = /obj/item/device/assembly/timer
|
||||
|
||||
syndicate
|
||||
btemp1 = 150
|
||||
btemp2 = 20
|
||||
/obj/effect/spawner/newbomb/timer/syndicate
|
||||
btemp1 = 150
|
||||
btemp2 = 20
|
||||
|
||||
/obj/effect/spawner/newbomb/proximity
|
||||
btype = 1
|
||||
assembly_type = /obj/item/device/assembly/prox_sensor
|
||||
|
||||
/obj/effect/spawner/newbomb/radio
|
||||
btype = 0
|
||||
assembly_type = /obj/item/device/assembly/signaler
|
||||
|
||||
|
||||
|
||||
/obj/effect/spawner/newbomb/New()
|
||||
..()
|
||||
|
||||
switch (src.btype)
|
||||
// radio
|
||||
if (0)
|
||||
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/internals/plasma/PT = new(V)
|
||||
var/obj/item/weapon/tank/internals/oxygen/OT = new(V)
|
||||
|
||||
var/obj/item/device/assembly/signaler/S = new(V)
|
||||
|
||||
V.tank_one = PT
|
||||
V.tank_two = OT
|
||||
V.attached_device = S
|
||||
|
||||
S.holder = V
|
||||
S.toggle_secure()
|
||||
PT.master = V
|
||||
OT.master = V
|
||||
|
||||
PT.air_contents.temperature = btemp1 + T0C
|
||||
OT.air_contents.temperature = btemp2 + T0C
|
||||
|
||||
V.update_icon()
|
||||
|
||||
// proximity
|
||||
if (1)
|
||||
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/internals/plasma/PT = new(V)
|
||||
var/obj/item/weapon/tank/internals/oxygen/OT = new(V)
|
||||
|
||||
var/obj/item/device/assembly/prox_sensor/P = new(V)
|
||||
|
||||
V.tank_one = PT
|
||||
V.tank_two = OT
|
||||
V.attached_device = P
|
||||
|
||||
P.holder = V
|
||||
P.toggle_secure()
|
||||
PT.master = V
|
||||
OT.master = V
|
||||
|
||||
|
||||
PT.air_contents.temperature = btemp1 + T0C
|
||||
OT.air_contents.temperature = btemp2 + T0C
|
||||
|
||||
V.update_icon()
|
||||
|
||||
|
||||
// timer
|
||||
if (2)
|
||||
var/obj/item/device/transfer_valve/V = new(src.loc)
|
||||
var/obj/item/weapon/tank/internals/plasma/PT = new(V)
|
||||
var/obj/item/weapon/tank/internals/oxygen/OT = new(V)
|
||||
|
||||
var/obj/item/device/assembly/timer/T = new(V)
|
||||
|
||||
V.tank_one = PT
|
||||
V.tank_two = OT
|
||||
V.attached_device = T
|
||||
|
||||
T.holder = V
|
||||
T.toggle_secure()
|
||||
PT.master = V
|
||||
OT.master = V
|
||||
T.time = 30
|
||||
|
||||
PT.air_contents.temperature = btemp1 + T0C
|
||||
OT.air_contents.temperature = btemp2 + T0C
|
||||
|
||||
V.update_icon()
|
||||
qdel(src)
|
||||
@@ -0,0 +1,170 @@
|
||||
/obj/effect/spawner/bundle
|
||||
name = "bundle spawner"
|
||||
icon = 'icons/mob/screen_gen.dmi'
|
||||
icon_state = "x2"
|
||||
color = "#00FF00"
|
||||
|
||||
var/list/items
|
||||
|
||||
/obj/effect/spawner/bundle/Initialize(mapload)
|
||||
..()
|
||||
if(items && items.len)
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/path in items)
|
||||
new path(T)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/chicken
|
||||
name = "chicken costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/chickensuit,
|
||||
/obj/item/clothing/head/chicken,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/gladiator
|
||||
name = "gladitator costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gladiator,
|
||||
/obj/item/clothing/head/helmet/gladiator)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/madscientist
|
||||
name = "mad scientist costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit,
|
||||
/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/suit/toggle/labcoat/mad)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/elpresidente
|
||||
name = "el presidente costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/gimmick/rank/captain/suit,
|
||||
/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/mask/cigarette/cigar/havana,
|
||||
/obj/item/clothing/shoes/jackboots)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/nyangirl
|
||||
name = "nyangirl costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/schoolgirl,
|
||||
/obj/item/clothing/head/kitty,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/maid
|
||||
name = "maid costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/skirt/black,
|
||||
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears,
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold)
|
||||
|
||||
|
||||
/obj/effect/spawner/bundle/costume/butler
|
||||
name = "butler costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/tie/waistcoat,
|
||||
/obj/item/clothing/under/suit_jacket,
|
||||
/obj/item/clothing/head/that)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/highlander
|
||||
name = "highlander costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/kilt,
|
||||
/obj/item/clothing/head/beret)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/prig
|
||||
name = "prig costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/tie/waistcoat,
|
||||
/obj/item/clothing/glasses/monocle,
|
||||
/obj/effect/spawner/lootdrop/minor/bowler_or_that,
|
||||
/obj/item/clothing/shoes/sneakers/black,
|
||||
/obj/item/weapon/cane,
|
||||
/obj/item/clothing/under/sl_suit,
|
||||
/obj/item/clothing/mask/fakemoustache)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/plaguedoctor
|
||||
name = "plague doctor costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit,
|
||||
/obj/item/clothing/head/plaguedoctorhat,
|
||||
/obj/item/clothing/mask/gas/plaguedoctor)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/nightowl
|
||||
name = "night owl costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/toggle/owlwings,
|
||||
/obj/item/clothing/under/owl,
|
||||
/obj/item/clothing/mask/gas/owl_mask)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/griffin
|
||||
name = "griffin costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/toggle/owlwings/griffinwings,
|
||||
/obj/item/clothing/shoes/griffin,
|
||||
/obj/item/clothing/under/griffin,
|
||||
/obj/item/clothing/head/griffin)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/waiter
|
||||
name = "waiter costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/waiter,
|
||||
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears,
|
||||
/obj/item/clothing/suit/apron)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/pirate
|
||||
name = "pirate costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/pirate,
|
||||
/obj/item/clothing/suit/pirate,
|
||||
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana,
|
||||
/obj/item/clothing/glasses/eyepatch)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/commie
|
||||
name = "commie costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/soviet,
|
||||
/obj/item/clothing/head/ushanka)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/imperium_monk
|
||||
name = "imperium monk costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/imperium_monk,
|
||||
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/holiday_priest
|
||||
name = "holiday priest costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/suit/holidaypriest)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/marisawizard
|
||||
name = "marisa wizard costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/shoes/sandal/marisa,
|
||||
/obj/item/clothing/head/wizard/marisa/fake,
|
||||
/obj/item/clothing/suit/wizrobe/marisa/fake)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/cutewitch
|
||||
name = "cute witch costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/under/sundress,
|
||||
/obj/item/clothing/head/witchwig,
|
||||
/obj/item/weapon/staff/broom)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/wizard
|
||||
name = "wizard costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/suit/wizrobe/fake,
|
||||
/obj/item/clothing/head/wizard/fake,
|
||||
/obj/item/weapon/staff)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/sexyclown
|
||||
name = "sexy clown costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/mask/gas/sexyclown,
|
||||
/obj/item/clothing/under/rank/clown/sexy)
|
||||
|
||||
/obj/effect/spawner/bundle/costume/sexymime
|
||||
name = "sexy mime costume spawner"
|
||||
items = list(
|
||||
/obj/item/clothing/mask/gas/sexymime,
|
||||
/obj/item/clothing/under/sexymime)
|
||||
@@ -6,7 +6,7 @@
|
||||
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
|
||||
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
|
||||
|
||||
/obj/effect/gibspawner/New(location, list/viruses, datum/dna/MobDNA)
|
||||
/obj/effect/gibspawner/Initialize(mapload, list/viruses, datum/dna/MobDNA)
|
||||
..()
|
||||
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
@@ -17,16 +17,16 @@
|
||||
|
||||
if(sparks)
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
s.set_up(2, 1, loc)
|
||||
s.start()
|
||||
|
||||
for(var/i = 1, i<= gibtypes.len, i++)
|
||||
if(gibamounts[i])
|
||||
for(var/j = 1, j<= gibamounts[i], j++)
|
||||
var/gibType = gibtypes[i]
|
||||
gib = new gibType(location)
|
||||
if(istype(location,/mob/living/carbon))
|
||||
var/mob/living/carbon/digester = location
|
||||
gib = new gibType(loc)
|
||||
if(istype(loc,/mob/living/carbon))
|
||||
var/mob/living/carbon/digester = loc
|
||||
digester.stomach_contents += gib
|
||||
|
||||
if(viruses && viruses.len > 0)
|
||||
@@ -53,7 +53,7 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(2,2,1)
|
||||
|
||||
/obj/effect/gibspawner/generic/New()
|
||||
/obj/effect/gibspawner/generic/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
|
||||
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
|
||||
..()
|
||||
@@ -62,9 +62,9 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
|
||||
/obj/effect/gibspawner/human/New()
|
||||
/obj/effect/gibspawner/human/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list())
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
|
||||
..()
|
||||
|
||||
|
||||
@@ -72,9 +72,9 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core,/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1)
|
||||
|
||||
/obj/effect/gibspawner/humanbodypartless/New()
|
||||
/obj/effect/gibspawner/humanbodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, list())
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
|
||||
..()
|
||||
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up,/obj/effect/decal/cleanable/xenoblood/xgibs/down,/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
|
||||
/obj/effect/gibspawner/xeno/New()
|
||||
/obj/effect/gibspawner/xeno/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs, list())
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
|
||||
..()
|
||||
|
||||
|
||||
@@ -93,25 +93,25 @@
|
||||
gibamounts = list(1, 1, 1, 1, 1, 1)
|
||||
|
||||
|
||||
/obj/effect/gibspawner/xenobodypartless/New()
|
||||
/obj/effect/gibspawner/xenobodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, list())
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
|
||||
..()
|
||||
|
||||
/obj/effect/gibspawner/larva
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
|
||||
gibamounts = list(1, 1, 1, 1)
|
||||
|
||||
/obj/effect/gibspawner/larva/New()
|
||||
/obj/effect/gibspawner/larva/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), alldirs)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
|
||||
..()
|
||||
|
||||
/obj/effect/gibspawner/larvabodypartless
|
||||
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
|
||||
gibamounts = list(1, 1, 1)
|
||||
|
||||
/obj/effect/gibspawner/larvabodypartless/New()
|
||||
/obj/effect/gibspawner/larvabodypartless/Initialize()
|
||||
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
|
||||
..()
|
||||
@@ -121,7 +121,7 @@
|
||||
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up,/obj/effect/decal/cleanable/robot_debris/down,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris,/obj/effect/decal/cleanable/robot_debris/limb)
|
||||
gibamounts = list(1,1,1,1,1,1)
|
||||
|
||||
/obj/effect/gibspawner/robot/New()
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), alldirs, alldirs)
|
||||
/obj/effect/gibspawner/robot/Initialize()
|
||||
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
|
||||
gibamounts[6] = pick(0,1,2)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -3,24 +3,27 @@
|
||||
icon_state = "x2"
|
||||
color = "#00FF00"
|
||||
var/lootcount = 1 //how many items will be spawned
|
||||
var/lootdoubles = 1 //if the same item can be spawned twice
|
||||
var/lootdoubles = TRUE //if the same item can be spawned twice
|
||||
var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect)
|
||||
|
||||
/obj/effect/spawner/lootdrop/New()
|
||||
/obj/effect/spawner/lootdrop/Initialize(mapload)
|
||||
..()
|
||||
|
||||
if(loot && loot.len)
|
||||
for(var/i = lootcount, i > 0, i--)
|
||||
if(!loot.len) break
|
||||
var/turf/T = get_turf(src)
|
||||
while(lootcount && loot.len)
|
||||
var/lootspawn = pickweight(loot)
|
||||
if(!lootdoubles)
|
||||
loot.Remove(lootspawn)
|
||||
|
||||
if(lootspawn)
|
||||
new lootspawn(get_turf(src))
|
||||
new lootspawn(T)
|
||||
lootcount--
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/lootdrop/armory_contraband
|
||||
name = "armory contraband gun spawner"
|
||||
lootdoubles = 0
|
||||
lootdoubles = FALSE
|
||||
|
||||
loot = list(
|
||||
/obj/item/weapon/gun/ballistic/automatic/pistol = 8,
|
||||
@@ -87,7 +90,7 @@
|
||||
/obj/item/clothing/gloves/color/fyellow = 1,
|
||||
/obj/item/clothing/head/hardhat = 1,
|
||||
/obj/item/clothing/head/hardhat/red = 1,
|
||||
/obj/item/clothing/head/that{throwforce = 1;} = 1,
|
||||
/obj/item/clothing/head/that = 1,
|
||||
/obj/item/clothing/head/ushanka = 1,
|
||||
/obj/item/clothing/head/welding = 1,
|
||||
/obj/item/clothing/mask/gas = 15,
|
||||
@@ -102,8 +105,8 @@
|
||||
/obj/item/device/radio/off = 2,
|
||||
/obj/item/device/t_scanner = 5,
|
||||
/obj/item/weapon/airlock_painter = 1,
|
||||
/obj/item/stack/cable_coil = 4,
|
||||
/obj/item/stack/cable_coil{amount = 5} = 6,
|
||||
/obj/item/stack/cable_coil/random = 4,
|
||||
/obj/item/stack/cable_coil/random{amount = 5} = 6,
|
||||
/obj/item/stack/medical/bruise_pack = 1,
|
||||
/obj/item/stack/rods{amount = 10} = 9,
|
||||
/obj/item/stack/rods{amount = 23} = 1,
|
||||
@@ -144,7 +147,7 @@
|
||||
/obj/item/weapon/wirecutters = 1,
|
||||
/obj/item/weapon/wrench = 4,
|
||||
/obj/item/weapon/relic = 3,
|
||||
/obj/item/weaponcrafting/reciever = 2,
|
||||
/obj/item/weaponcrafting/receiver = 2,
|
||||
/obj/item/clothing/head/cone = 2,
|
||||
/obj/item/weapon/grenade/smokebomb = 2,
|
||||
/obj/item/device/geiger_counter = 3,
|
||||
@@ -165,7 +168,7 @@
|
||||
|
||||
/obj/effect/spawner/lootdrop/crate_spawner
|
||||
name = "lootcrate spawner" //USE PROMO CODE "SELLOUT" FOR 20% OFF!
|
||||
lootdoubles = 0
|
||||
lootdoubles = FALSE
|
||||
|
||||
loot = list(
|
||||
/obj/structure/closet/crate/secure/loot = 20,
|
||||
@@ -194,3 +197,44 @@
|
||||
loot = list(
|
||||
/obj/effect/decal/remains/xeno = 49,
|
||||
/obj/effect/spawner/xeno_egg_delivery = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/costume
|
||||
name = "random costume spawner"
|
||||
|
||||
/obj/effect/spawner/lootdrop/costume/Initialize()
|
||||
loot = list()
|
||||
for(var/path in subtypesof(/obj/effect/spawner/bundle/costume))
|
||||
loot[path] = TRUE
|
||||
..()
|
||||
|
||||
// Minor lootdrops follow
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears
|
||||
name = "beret or rabbit ears spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/beret = 1,
|
||||
/obj/item/clothing/head/rabbitears = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/bowler_or_that
|
||||
name = "bowler or top hat spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/bowler = 1,
|
||||
/obj/item/clothing/head/that = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears
|
||||
name = "kitty ears or rabbit ears spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/kitty = 1,
|
||||
/obj/item/clothing/head/rabbitears = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/pirate_or_bandana
|
||||
name = "pirate hat or bandana spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/head/pirate = 1,
|
||||
/obj/item/clothing/head/bandana = 1)
|
||||
|
||||
/obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask
|
||||
name = "25% cyborg mask spawner"
|
||||
loot = list(
|
||||
/obj/item/clothing/mask/gas/cyborg = 25,
|
||||
"" = 75)
|
||||
|
||||
@@ -11,9 +11,8 @@ again.
|
||||
/obj/effect/spawner/structure/Initialize()
|
||||
..()
|
||||
if(spawn_list && spawn_list.len)
|
||||
for(var/i = 1, i <= spawn_list.len, i++)
|
||||
var/to_spawn = spawn_list[i]
|
||||
new to_spawn(get_turf(src))
|
||||
for(var/I in spawn_list)
|
||||
new I(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/spawner/structure/window
|
||||
@@ -31,4 +30,4 @@ again.
|
||||
spawn_list = list(
|
||||
/obj/structure/grille,
|
||||
/obj/structure/window/reinforced/fulltile
|
||||
)
|
||||
)
|
||||
|
||||
@@ -16,5 +16,5 @@
|
||||
message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].")
|
||||
log_game("An alien egg has been delivered to [A] at [COORD(T)]")
|
||||
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen."
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)
|
||||
SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time))
|
||||
qdel(src)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/obj/structure/spider/stickyweb
|
||||
icon_state = "stickyweb1"
|
||||
|
||||
/obj/structure/spider/stickyweb/New()
|
||||
/obj/structure/spider/stickyweb/Initialize()
|
||||
if(prob(50))
|
||||
icon_state = "stickyweb2"
|
||||
. = ..()
|
||||
@@ -57,7 +57,7 @@
|
||||
var/poison_per_bite = 5
|
||||
var/list/faction = list("spiders")
|
||||
|
||||
/obj/structure/spider/eggcluster/New()
|
||||
/obj/structure/spider/eggcluster/Initialize()
|
||||
pixel_x = rand(3,-3)
|
||||
pixel_y = rand(3,-3)
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -92,7 +92,7 @@
|
||||
var/poison_per_bite = 5
|
||||
var/list/faction = list("spiders")
|
||||
|
||||
/obj/structure/spider/spiderling/New()
|
||||
/obj/structure/spider/spiderling/Initialize()
|
||||
pixel_x = rand(6,-6)
|
||||
pixel_y = rand(6,-6)
|
||||
START_PROCESSING(SSobj, src)
|
||||
@@ -190,7 +190,7 @@
|
||||
icon_state = "cocoon1"
|
||||
obj_integrity = 60
|
||||
|
||||
/obj/structure/spider/cocoon/New()
|
||||
/obj/structure/spider/cocoon/Initialize()
|
||||
icon_state = pick("cocoon1","cocoon2","cocoon3")
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
var/explosionid = 1
|
||||
|
||||
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range = 0 ,silent = 0, smoke = 1)
|
||||
set waitfor = 0
|
||||
src = null //so we don't abort once src is deleted
|
||||
@@ -14,11 +12,11 @@ var/explosionid = 1
|
||||
|
||||
if(!ignorecap && epicenter.z != ZLEVEL_MINING)
|
||||
//Clamp all values to MAX_EXPLOSION_RANGE
|
||||
devastation_range = min(MAX_EX_DEVESTATION_RANGE, devastation_range)
|
||||
heavy_impact_range = min(MAX_EX_HEAVY_RANGE, heavy_impact_range)
|
||||
light_impact_range = min(MAX_EX_LIGHT_RANGE, light_impact_range)
|
||||
flash_range = min(MAX_EX_FLASH_RANGE, flash_range)
|
||||
flame_range = min(MAX_EX_FLAME_RANGE, flame_range)
|
||||
devastation_range = min(GLOB.MAX_EX_DEVESTATION_RANGE, devastation_range)
|
||||
heavy_impact_range = min(GLOB.MAX_EX_HEAVY_RANGE, heavy_impact_range)
|
||||
light_impact_range = min(GLOB.MAX_EX_LIGHT_RANGE, light_impact_range)
|
||||
flash_range = min(GLOB.MAX_EX_FLASH_RANGE, flash_range)
|
||||
flame_range = min(GLOB.MAX_EX_FLAME_RANGE, flame_range)
|
||||
|
||||
//DO NOT REMOVE THIS SLEEP, IT BREAKS THINGS
|
||||
//not sleeping causes us to ex_act() the thing that triggered the explosion
|
||||
@@ -29,6 +27,7 @@ var/explosionid = 1
|
||||
//and somethings expect us to ex_act them so they can qdel()
|
||||
sleep(1) //tldr, let the calling proc call qdel(src) before we explode
|
||||
|
||||
var/static/explosionid = 1
|
||||
var/id = explosionid++
|
||||
var/start = world.timeofday
|
||||
|
||||
@@ -36,7 +35,7 @@ var/explosionid = 1
|
||||
var/list/cached_exp_block = list()
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z] - <a href='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</a>)")
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area: [get_area(epicenter)] [ADMIN_COORDJMP(epicenter)]")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
|
||||
// Play sounds; we want sounds to be different depending on distance so we will manually do it ourselves.
|
||||
@@ -51,7 +50,8 @@ var/explosionid = 1
|
||||
|
||||
if(!silent)
|
||||
var/frequency = get_rand_frequency()
|
||||
for(var/mob/M in player_list)
|
||||
var/ex_sound = get_sfx("explosion")
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
// Double check for client
|
||||
if(M && M.client)
|
||||
var/turf/M_turf = get_turf(M)
|
||||
@@ -59,7 +59,7 @@ var/explosionid = 1
|
||||
var/dist = get_dist(M_turf, epicenter)
|
||||
// If inside the blast radius + world.view - 2
|
||||
if(dist <= round(max_range + world.view - 2, 1))
|
||||
M.playsound_local(epicenter, get_sfx("explosion"), 100, 1, frequency, falloff = 5) // get_sfx() is so that everyone gets the same sound
|
||||
M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
|
||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||
else if(dist <= far_dist)
|
||||
var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and dist
|
||||
@@ -69,7 +69,7 @@ var/explosionid = 1
|
||||
//postpone processing for a bit
|
||||
var/postponeCycles = max(round(devastation_range/8),1)
|
||||
SSlighting.postpone(postponeCycles)
|
||||
SSmachine.postpone(postponeCycles)
|
||||
SSmachines.postpone(postponeCycles)
|
||||
|
||||
if(heavy_impact_range > 1)
|
||||
if(smoke)
|
||||
@@ -164,7 +164,7 @@ var/explosionid = 1
|
||||
|
||||
if(TICK_CHECK)
|
||||
stoplag()
|
||||
var/circumference = (PI * init_dist * 2) + 8 //+8 to prevent shit gaps
|
||||
var/circumference = (PI * (init_dist + 4) * 2) //+4 to radius to prevent shit gaps
|
||||
if(exploded_this_tick.len > circumference) //only do this every revolution
|
||||
for(var/Unexplode in exploded_this_tick)
|
||||
var/turf/UnexplodeT = Unexplode
|
||||
@@ -179,11 +179,11 @@ var/explosionid = 1
|
||||
|
||||
var/took = (world.timeofday-start)/10
|
||||
//You need to press the DebugGame verb to see these now....they were getting annoying and we've collected a fair bit of data. Just -test- changes to explosion code using this please so we can compare
|
||||
if(Debug2)
|
||||
if(GLOB.Debug2)
|
||||
log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.")
|
||||
|
||||
//Machines which report explosions.
|
||||
for(var/array in doppler_arrays)
|
||||
for(var/array in GLOB.doppler_arrays)
|
||||
var/obj/machinery/doppler_array/A = array
|
||||
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range)
|
||||
|
||||
@@ -277,7 +277,7 @@ var/explosionid = 1
|
||||
if(!power)
|
||||
return
|
||||
var/range = 0
|
||||
range = round((2 * power)**DYN_EX_SCALE)
|
||||
range = round((2 * power)**GLOB.DYN_EX_SCALE)
|
||||
explosion(epicenter, round(range * 0.25), round(range * 0.5), round(range), flash_range*range, adminlog, ignorecap, flame_range*range, silent, smoke)
|
||||
|
||||
// Using default dyn_ex scale:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_state" = "fire")
|
||||
GLOBAL_DATUM_INIT(fire_overlay, /image, image("icon" = 'icons/effects/fire.dmi', "icon_state" = "fire"))
|
||||
|
||||
/obj/item
|
||||
name = "item"
|
||||
@@ -349,7 +349,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/proc/talk_into(mob/M, input, channel, spans)
|
||||
/obj/item/proc/talk_into(mob/M, input, channel, spans, datum/language/language)
|
||||
return ITALICS | REDUCE_RANGE
|
||||
|
||||
/obj/item/proc/dropped(mob/user)
|
||||
@@ -502,7 +502,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s
|
||||
if(.)
|
||||
if(initial(icon) && initial(icon_state))
|
||||
var/index = blood_splatter_index()
|
||||
var/icon/blood_splatter_icon = blood_splatter_icons[index]
|
||||
var/icon/blood_splatter_icon = GLOB.blood_splatter_icons[index]
|
||||
if(blood_splatter_icon)
|
||||
cut_overlay(blood_splatter_icon)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
if(get_dist(on_wall,user)>1)
|
||||
return
|
||||
var/ndir = get_dir(on_wall, user)
|
||||
if(!(ndir in cardinal))
|
||||
if(!(ndir in GLOB.cardinal))
|
||||
return
|
||||
var/turf/T = get_turf(user)
|
||||
var/area/A = get_area(T)
|
||||
|
||||
@@ -168,18 +168,18 @@
|
||||
|
||||
/obj/item/areaeditor/blueprints/proc/view_wire_devices(mob/user)
|
||||
var/message = "<br>You examine the wire legend.<br>"
|
||||
for(var/wireset in wire_color_directory)
|
||||
message += "<br><a href='?src=\ref[src];view_wireset=[wireset]'>[wire_name_directory[wireset]]</a>"
|
||||
for(var/wireset in GLOB.wire_color_directory)
|
||||
message += "<br><a href='?src=\ref[src];view_wireset=[wireset]'>[GLOB.wire_name_directory[wireset]]</a>"
|
||||
message += "</p>"
|
||||
return message
|
||||
|
||||
/obj/item/areaeditor/blueprints/proc/view_wire_set(mob/user, wireset)
|
||||
//for some reason you can't use wireset directly as a derefencer so this is the next best :/
|
||||
for(var/device in wire_color_directory)
|
||||
for(var/device in GLOB.wire_color_directory)
|
||||
if("[device]" == wireset) //I know... don't change it...
|
||||
var/message = "<p><b>[wire_name_directory[device]]:</b>"
|
||||
for(var/Col in wire_color_directory[device])
|
||||
var/wire_name = wire_color_directory[device][Col]
|
||||
var/message = "<p><b>[GLOB.wire_name_directory[device]]:</b>"
|
||||
for(var/Col in GLOB.wire_color_directory[device])
|
||||
var/wire_name = GLOB.wire_color_directory[device][Col]
|
||||
if(!findtext(wire_name, WIRE_DUD_PREFIX)) //don't show duds
|
||||
message += "<p><span style='color: [Col]'>[Col]</span>: [wire_name]</p>"
|
||||
message += "</p>"
|
||||
@@ -309,7 +309,7 @@
|
||||
return ROOM_ERR_TOOLARGE
|
||||
var/turf/T = pending[1] //why byond havent list::pop()?
|
||||
pending -= T
|
||||
for (var/dir in cardinal)
|
||||
for (var/dir in GLOB.cardinal)
|
||||
var/skip = 0
|
||||
for (var/obj/structure/window/W in T)
|
||||
if(dir == W.dir || (W.dir in list(NORTHEAST,SOUTHEAST,NORTHWEST,SOUTHWEST)))
|
||||
@@ -343,7 +343,7 @@
|
||||
|
||||
for(var/V in border) //lazy but works
|
||||
var/turf/F = V
|
||||
for(var/direction in cardinal)
|
||||
for(var/direction in GLOB.cardinal)
|
||||
if(direction == border[F])
|
||||
continue //don't want to grab turfs from outside the border
|
||||
var/turf/U = get_step(F, direction)
|
||||
|
||||
@@ -21,11 +21,6 @@
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/storage/box/bodybags/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/bodybag(src)
|
||||
|
||||
|
||||
// Bluespace bodybag
|
||||
|
||||
|
||||
@@ -97,15 +97,15 @@
|
||||
add_atom_colour("#FFD7A7", FIXED_COLOUR_PRIORITY)
|
||||
switch(new_appearance)
|
||||
if("Assistant")
|
||||
name = "[pick(first_names_male)] [pick(last_names)]"
|
||||
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
|
||||
desc = "A cardboat cutout of an assistant."
|
||||
icon_state = "cutout_greytide"
|
||||
if("Clown")
|
||||
name = pick(clown_names)
|
||||
name = pick(GLOB.clown_names)
|
||||
desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner."
|
||||
icon_state = "cutout_clown"
|
||||
if("Mime")
|
||||
name = pick(mime_names)
|
||||
name = pick(GLOB.mime_names)
|
||||
desc = "...(A cardboard cutout of a mime.)"
|
||||
icon_state = "cutout_mime"
|
||||
if("Traitor")
|
||||
@@ -121,7 +121,7 @@
|
||||
desc = "A cardboard cutout of a cultist."
|
||||
icon_state = "cutout_cultist"
|
||||
if("Clockwork Cultist")
|
||||
name = "[pick(first_names_male)] [pick(last_names)]"
|
||||
name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]"
|
||||
desc = "A cardboard cutout of a servant of Ratvar."
|
||||
icon_state = "cutout_servant"
|
||||
if("Revolutionary")
|
||||
@@ -129,7 +129,7 @@
|
||||
desc = "A cardboard cutout of a revolutionary."
|
||||
icon_state = "cutout_viva"
|
||||
if("Wizard")
|
||||
name = "[pick(wizard_first)], [pick(wizard_second)]"
|
||||
name = "[pick(GLOB.wizard_first)], [pick(GLOB.wizard_second)]"
|
||||
desc = "A cardboard cutout of a wizard."
|
||||
icon_state = "cutout_wizard"
|
||||
if("Shadowling")
|
||||
@@ -151,7 +151,7 @@
|
||||
desc = "A cardboard cutout of an ash walker."
|
||||
icon_state = "cutout_free_antag"
|
||||
if("Deathsquad Officer")
|
||||
name = pick(commando_names)
|
||||
name = pick(GLOB.commando_names)
|
||||
desc = "A cardboard cutout of a death commando."
|
||||
icon_state = "cutout_deathsquad"
|
||||
if("Ian")
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
/obj/item/station_charter/New()
|
||||
. = ..()
|
||||
if(!standard_station_regex)
|
||||
var/prefixes = jointext(station_prefixes, "|")
|
||||
var/names = jointext(station_names, "|")
|
||||
var/suffixes = jointext(station_suffixes, "|")
|
||||
var/numerals = jointext(station_numerals, "|")
|
||||
var/prefixes = jointext(GLOB.station_prefixes, "|")
|
||||
var/names = jointext(GLOB.station_names, "|")
|
||||
var/suffixes = jointext(GLOB.station_suffixes, "|")
|
||||
var/numerals = jointext(GLOB.station_numerals, "|")
|
||||
var/regexstr = "(([prefixes]) )?(([names]) ?)([suffixes]) ([numerals])"
|
||||
standard_station_regex = new(regexstr)
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
if(used)
|
||||
to_chat(user, "This charter has already been used to name the station.")
|
||||
return
|
||||
if(!ignores_timeout && (world.time-round_start_time > STATION_RENAME_TIME_LIMIT)) //5 minutes
|
||||
if(!ignores_timeout && (world.time-SSticker.round_start_time > STATION_RENAME_TIME_LIMIT)) //5 minutes
|
||||
to_chat(user, "The crew has already settled into the shift. It probably wouldn't be good to rename the station right now.")
|
||||
return
|
||||
if(response_timer_id)
|
||||
@@ -60,7 +60,7 @@
|
||||
to_chat(user, "Your name has been sent to your employers for approval.")
|
||||
// Autoapproves after a certain time
|
||||
response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
|
||||
to_chat(admins, "<span class='adminnotice'><b><font color=orange>CUSTOM STATION RENAME:</font></b>[key_name_admin(user)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) proposes to rename the station to [new_name] (will autoapprove in [approval_time / 10] seconds). (<A HREF='?_src_=holder;BlueSpaceArtillery=\ref[user]'>BSA</A>) (<A HREF='?_src_=holder;reject_custom_name=\ref[src]'>REJECT</A>) (<a href='?_src_=holder;CentcommReply=\ref[user]'>RPLY</a>)</span>")
|
||||
to_chat(GLOB.admins, "<span class='adminnotice'><b><font color=orange>CUSTOM STATION RENAME:</font></b>[key_name_admin(user)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) proposes to rename the station to [new_name] (will autoapprove in [approval_time / 10] seconds). [ADMIN_SMITE(user)] (<A HREF='?_src_=holder;reject_custom_name=\ref[src]'>REJECT</A>) (<a href='?_src_=holder;CentcommReply=\ref[user]'>RPLY</a>)</span>")
|
||||
|
||||
/obj/item/station_charter/proc/reject_proposed(user)
|
||||
if(!user)
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
qdel(src)
|
||||
. = TRUE
|
||||
|
||||
/obj/item/toy/crayon/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = hands_state)
|
||||
/obj/item/toy/crayon/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
// tgui is a plague upon this codebase
|
||||
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
@@ -409,7 +409,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/toy/crayon/proc/territory_claimed(area/territory, mob/user)
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(territory.type in (G.territory|G.territory_new))
|
||||
. = G.name
|
||||
break
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
//The advanced pea-green monochrome lcd of tomorrow.
|
||||
|
||||
var/global/list/obj/item/device/pda/PDAs = list()
|
||||
GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
|
||||
/obj/item/device/pda
|
||||
@@ -62,7 +62,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
if(fon)
|
||||
set_light(f_lum)
|
||||
|
||||
PDAs += src
|
||||
GLOB.PDAs += src
|
||||
if(default_cartridge)
|
||||
cartridge = new default_cartridge(src)
|
||||
inserted_item = new /obj/item/weapon/pen(src)
|
||||
@@ -138,7 +138,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
dat += text("<br><A href='?src=\ref[src];choice=UpdateInfo'>[id ? "Update PDA Info" : ""]</A><br><br>")
|
||||
|
||||
dat += "[worldtime2text()]<br>" //:[world.time / 100 % 6][world.time / 100 % 10]"
|
||||
dat += "[time2text(world.realtime, "MMM DD")] [year_integer+540]"
|
||||
dat += "[time2text(world.realtime, "MMM DD")] [GLOB.year_integer+540]"
|
||||
|
||||
dat += "<br><br>"
|
||||
|
||||
@@ -474,7 +474,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if("Toggle Door")
|
||||
if(cartridge && cartridge.access_remote_door)
|
||||
for(var/obj/machinery/door/poddoor/M in machines)
|
||||
for(var/obj/machinery/door/poddoor/M in GLOB.machines)
|
||||
if(M.id == cartridge.remote_door_id)
|
||||
if(M.density)
|
||||
M.open()
|
||||
@@ -636,7 +636,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
add_overlay(image(icon, icon_alert))
|
||||
|
||||
/obj/item/device/pda/proc/show_to_ghosts(mob/living/user, datum/data_pda_msg/msg,multiple = 0)
|
||||
for(var/mob/M in player_list)
|
||||
for(var/mob/M in GLOB.player_list)
|
||||
if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA))
|
||||
var/link = FOLLOW_LINK(M, user)
|
||||
to_chat(M, "[link] <span class='name'>[msg.sender] </span><span class='game say'>PDA Message</span> --> <span class='name'>[multiple ? "Everyone" : msg.recipient]</span>: <span class='message'>[msg.message][msg.get_photo_ref()]</span></span>")
|
||||
@@ -646,8 +646,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return null
|
||||
|
||||
var/obj/machinery/message_server/useMS = null
|
||||
if(message_servers)
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
if(GLOB.message_servers)
|
||||
for (var/obj/machinery/message_server/MS in GLOB.message_servers)
|
||||
//PDAs are now dependant on the Message Server.
|
||||
if(MS.active)
|
||||
useMS = MS
|
||||
@@ -721,7 +721,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
var/mob/M = loc
|
||||
M.put_in_hands(inserted_item)
|
||||
else
|
||||
inserted_item.forceMove(loc)
|
||||
inserted_item.forceMove(get_turf(src))
|
||||
to_chat(usr, "<span class='notice'>You remove \the [inserted_item] from \the [src].</span>")
|
||||
inserted_item = null
|
||||
update_icon()
|
||||
@@ -895,7 +895,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
return
|
||||
|
||||
/obj/item/device/pda/Destroy()
|
||||
PDAs -= src
|
||||
GLOB.PDAs -= src
|
||||
if(id)
|
||||
qdel(id)
|
||||
id = null
|
||||
@@ -978,20 +978,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
else
|
||||
to_chat(user, "You do not have a PDA. You should make an issue report about this.")
|
||||
|
||||
/obj/item/weapon/storage/box/PDAs/New()
|
||||
..()
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/weapon/cartridge/head(src)
|
||||
|
||||
var/newcart = pick( /obj/item/weapon/cartridge/engineering,
|
||||
/obj/item/weapon/cartridge/security,
|
||||
/obj/item/weapon/cartridge/medical,
|
||||
/obj/item/weapon/cartridge/signal/toxins,
|
||||
/obj/item/weapon/cartridge/quartermaster)
|
||||
new newcart(src)
|
||||
|
||||
// Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP
|
||||
/obj/item/device/pda/emp_act(severity)
|
||||
@@ -1004,7 +990,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
/proc/get_viewable_pdas()
|
||||
. = list()
|
||||
// Returns a list of PDAs which can be viewed from another PDA/message monitor.
|
||||
for(var/obj/item/device/pda/P in PDAs)
|
||||
for(var/obj/item/device/pda/P in GLOB.PDAs)
|
||||
if(!P.owner || P.toff || P.hidden) continue
|
||||
. += P
|
||||
return .
|
||||
|
||||
@@ -305,8 +305,8 @@ Code:
|
||||
|
||||
menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>"
|
||||
menu += "Entries cannot be modified from this terminal.<br><br>"
|
||||
if(data_core.general)
|
||||
for (var/datum/data/record/t in sortRecord(data_core.general))
|
||||
if(GLOB.data_core.general)
|
||||
for (var/datum/data/record/t in sortRecord(GLOB.data_core.general))
|
||||
menu += "[t.fields["name"]] - [t.fields["rank"]]<br>"
|
||||
menu += "<br>"
|
||||
|
||||
@@ -332,7 +332,7 @@ Code:
|
||||
|
||||
|
||||
|
||||
for(var/obj/machinery/computer/monitor/pMon in machines)
|
||||
for(var/obj/machinery/computer/monitor/pMon in GLOB.machines)
|
||||
if(!(pMon.stat & (NOPOWER|BROKEN)) )
|
||||
powercount++
|
||||
powermonitors += pMon
|
||||
@@ -379,14 +379,14 @@ Code:
|
||||
|
||||
if (44) //medical records //This thing only displays a single screen so it's hard to really get the sub-menu stuff working.
|
||||
menu = "<h4><img src=pda_medical.png> Medical Record List</h4>"
|
||||
if(data_core.general)
|
||||
for(var/datum/data/record/R in sortRecord(data_core.general))
|
||||
if(GLOB.data_core.general)
|
||||
for(var/datum/data/record/R in sortRecord(GLOB.data_core.general))
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Medical Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
menu += "<br>"
|
||||
if(441)
|
||||
menu = "<h4><img src=pda_medical.png> Medical Record</h4>"
|
||||
|
||||
if(active1 in data_core.general)
|
||||
if(active1 in GLOB.data_core.general)
|
||||
menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]<br>"
|
||||
menu += "Sex: [active1.fields["sex"]]<br>"
|
||||
menu += "Age: [active1.fields["age"]]<br>"
|
||||
@@ -400,7 +400,7 @@ Code:
|
||||
menu += "<br>"
|
||||
|
||||
menu += "<h4><img src=pda_medical.png> Medical Data</h4>"
|
||||
if(active2 in data_core.medical)
|
||||
if(active2 in GLOB.data_core.medical)
|
||||
menu += "Blood Type: [active2.fields["blood_type"]]<br><br>"
|
||||
|
||||
menu += "Minor Disabilities: [active2.fields["mi_dis"]]<br>"
|
||||
@@ -422,15 +422,15 @@ Code:
|
||||
menu += "<br>"
|
||||
if (45) //security records
|
||||
menu = "<h4><img src=pda_cuffs.png> Security Record List</h4>"
|
||||
if(data_core.general)
|
||||
for (var/datum/data/record/R in sortRecord(data_core.general))
|
||||
if(GLOB.data_core.general)
|
||||
for (var/datum/data/record/R in sortRecord(GLOB.data_core.general))
|
||||
menu += "<a href='byond://?src=\ref[src];choice=Security Records;target=[R.fields["id"]]'>[R.fields["id"]]: [R.fields["name"]]<br>"
|
||||
|
||||
menu += "<br>"
|
||||
if(451)
|
||||
menu = "<h4><img src=pda_cuffs.png> Security Record</h4>"
|
||||
|
||||
if(active1 in data_core.general)
|
||||
if(active1 in GLOB.data_core.general)
|
||||
menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]<br>"
|
||||
menu += "Sex: [active1.fields["sex"]]<br>"
|
||||
menu += "Age: [active1.fields["age"]]<br>"
|
||||
@@ -444,7 +444,7 @@ Code:
|
||||
menu += "<br>"
|
||||
|
||||
menu += "<h4><img src=pda_cuffs.png> Security Data</h4>"
|
||||
if(active3 in data_core.security)
|
||||
if(active3 in GLOB.data_core.security)
|
||||
menu += "Criminal Status: [active3.fields["criminal"]]<br>"
|
||||
|
||||
menu += text("<BR>\nMinor Crimes:")
|
||||
@@ -563,7 +563,7 @@ Code:
|
||||
menu += "<h4>Located Cleanbots:</h4>"
|
||||
|
||||
ldat = null
|
||||
for (var/mob/living/simple_animal/bot/cleanbot/B in living_mob_list)
|
||||
for (var/mob/living/simple_animal/bot/cleanbot/B in GLOB.living_mob_list)
|
||||
var/turf/bl = get_turf(B)
|
||||
|
||||
if(bl)
|
||||
@@ -585,7 +585,7 @@ Code:
|
||||
menu = "<h4><img src=pda_notes.png> Newscaster Access</h4>"
|
||||
menu += "<br> Current Newsfeed: <A href='byond://?src=\ref[src];choice=Newscaster Switch Channel'>[current_channel ? current_channel : "None"]</a> <br>"
|
||||
var/datum/newscaster/feed_channel/current
|
||||
for(var/datum/newscaster/feed_channel/chan in news_network.network_channels)
|
||||
for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels)
|
||||
if (chan.channel_name == current_channel)
|
||||
current = chan
|
||||
if(!current)
|
||||
@@ -619,18 +619,18 @@ Code:
|
||||
|
||||
switch(href_list["choice"])
|
||||
if("Medical Records")
|
||||
active1 = find_record("id", href_list["target"], data_core.general)
|
||||
active1 = find_record("id", href_list["target"], GLOB.data_core.general)
|
||||
if(active1)
|
||||
active2 = find_record("id", href_list["target"], data_core.medical)
|
||||
active2 = find_record("id", href_list["target"], GLOB.data_core.medical)
|
||||
pda.mode = 441
|
||||
mode = 441
|
||||
if(!active2)
|
||||
active1 = null
|
||||
|
||||
if("Security Records")
|
||||
active1 = find_record("id", href_list["target"], data_core.general)
|
||||
active1 = find_record("id", href_list["target"], GLOB.data_core.general)
|
||||
if(active1)
|
||||
active3 = find_record("id", href_list["target"], data_core.security)
|
||||
active3 = find_record("id", href_list["target"], GLOB.data_core.security)
|
||||
pda.mode = 451
|
||||
mode = 451
|
||||
if(!active3)
|
||||
@@ -685,14 +685,14 @@ Code:
|
||||
var/pda_owner_name = pda.id ? "[pda.id.registered_name] ([pda.id.assignment])" : "Unknown"
|
||||
var/message = pda.msg_input()
|
||||
var/datum/newscaster/feed_channel/current
|
||||
for(var/datum/newscaster/feed_channel/chan in news_network.network_channels)
|
||||
for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels)
|
||||
if (chan.channel_name == current_channel)
|
||||
current = chan
|
||||
if(current.locked && current.author != pda_owner_name)
|
||||
pda.cart += "<h5> ERROR : NOT AUTHORIZED [pda.id ? "" : "- ID SLOT EMPTY"] </h5>"
|
||||
pda.Topic(null,list("choice"="Refresh"))
|
||||
return
|
||||
news_network.SubmitArticle(message,pda.owner,current_channel)
|
||||
GLOB.news_network.SubmitArticle(message,pda.owner,current_channel)
|
||||
pda.Topic(null,list("choice"=num2text(mode)))
|
||||
return
|
||||
|
||||
@@ -775,7 +775,7 @@ Code:
|
||||
var/turf/current_turf = get_turf(src)
|
||||
var/zlevel = current_turf.z
|
||||
var/botcount = 0
|
||||
for(Bot in living_mob_list) //Git da botz
|
||||
for(Bot in GLOB.living_mob_list) //Git da botz
|
||||
if(!Bot.on || Bot.z != zlevel || Bot.remote_disabled || !(bot_access_flags & Bot.bot_type)) //Only non-emagged bots on the same Z-level are detected!
|
||||
continue //Also, the PDA must have access to the bot type.
|
||||
menu += "<A href='byond://?src=\ref[src];op=control;bot=\ref[Bot]'><b>[Bot.name]</b> ([Bot.get_mode()])<BR>"
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
var/turf/T = get_turf(src)
|
||||
lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
|
||||
GLOB.lastsignalers.Add("[time] <B>:</B> [usr.key] used [src] @ location ([T.x],[T.y],[T.z]) <B>:</B> [format_frequency(frequency)]/[code]")
|
||||
|
||||
var/datum/signal/signal = new
|
||||
signal.source = src
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
cut_overlays()
|
||||
|
||||
/obj/item/device/aicard/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = hands_state)
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "intellicard", name, 500, 500, master_ui, state)
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
/obj/item/device/camera_bug/proc/get_cameras()
|
||||
if( world.time > (last_net_update + 100))
|
||||
bugged_cameras = list()
|
||||
for(var/obj/machinery/camera/camera in cameranet.cameras)
|
||||
for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras)
|
||||
if(camera.stat || !camera.can_use())
|
||||
continue
|
||||
if(length(list("SS13","MINE")&camera.network))
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
|
||||
/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity)
|
||||
if(!proximity) return
|
||||
if(!check_sprite(target))
|
||||
return
|
||||
if(!active_dummy)
|
||||
if(istype(target,/obj/item) && !istype(target, /obj/item/weapon/disk/nuclear))
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
|
||||
@@ -41,6 +43,11 @@
|
||||
temp.plane = initial(target.plane)
|
||||
saved_appearance = temp.appearance
|
||||
|
||||
/obj/item/device/chameleon/proc/check_sprite(atom/target)
|
||||
if(target.icon_state in icon_states(target.icon))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/chameleon/proc/toggle()
|
||||
if(!can_use || !saved_appearance) return
|
||||
if(active_dummy)
|
||||
@@ -137,4 +144,4 @@
|
||||
|
||||
/obj/effect/dummy/chameleon/Destroy()
|
||||
master.disrupt(0)
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/obj/item/device/doorCharge/examine(mob/user)
|
||||
..()
|
||||
if(user.mind in ticker.mode.traitors) //No nuke ops because the device is excluded from nuclear
|
||||
if(user.mind in SSticker.mode.traitors) //No nuke ops because the device is excluded from nuclear
|
||||
to_chat(user, "A small explosive device that can be used to sabotage airlocks to cause an explosion upon opening. To apply, remove the airlock's maintenance panel and place it within.")
|
||||
else
|
||||
to_chat(user, "A small, suspicious object that feels lukewarm when held.")
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
GLOBAL_LIST_EMPTY(GPS_list)
|
||||
/obj/item/device/gps
|
||||
name = "global positioning system"
|
||||
desc = "Helping lost spacemen find their way through the planets since 2016. Alt+click to toggle power."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "gps-c"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
slot_flags = SLOT_BELT
|
||||
origin_tech = "materials=2;magnets=1;bluespace=2"
|
||||
var/gpstag = "COM0"
|
||||
var/emped = FALSE
|
||||
var/turf/locked_location
|
||||
var/tracking = TRUE
|
||||
|
||||
/obj/item/device/gps/Initialize()
|
||||
..()
|
||||
GLOB.GPS_list += src
|
||||
name = "global positioning system ([gpstag])"
|
||||
add_overlay("working")
|
||||
|
||||
/obj/item/device/gps/Destroy()
|
||||
GLOB.GPS_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/device/gps/emp_act(severity)
|
||||
emped = TRUE
|
||||
cut_overlay("working")
|
||||
add_overlay("emp")
|
||||
addtimer(CALLBACK(src, .proc/reboot), 300, TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early
|
||||
|
||||
/obj/item/device/gps/proc/reboot()
|
||||
emped = FALSE
|
||||
cut_overlay("emp")
|
||||
add_overlay("working")
|
||||
|
||||
/obj/item/device/gps/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, be_close=TRUE))
|
||||
return //user not valid to use gps
|
||||
if(emped)
|
||||
to_chat(user, "It's busted!")
|
||||
return
|
||||
if(tracking)
|
||||
cut_overlay("working")
|
||||
to_chat(user, "[src] is no longer tracking, or visible to other GPS devices.")
|
||||
tracking = FALSE
|
||||
else
|
||||
add_overlay("working")
|
||||
to_chat(user, "[src] is now tracking, and visible to other GPS devices.")
|
||||
tracking = TRUE
|
||||
|
||||
/obj/item/device/gps/attack_self(mob/user)
|
||||
if(!tracking)
|
||||
to_chat(user, "[src] is turned off. Use alt+click to toggle it back on.")
|
||||
return
|
||||
|
||||
var/obj/item/device/gps/t = ""
|
||||
var/gps_window_height = 110 + GLOB.GPS_list.len * 20 // Variable window height, depending on how many GPS units there are to show
|
||||
if(emped)
|
||||
t += "ERROR"
|
||||
else
|
||||
t += "<BR><A href='?src=\ref[src];tag=1'>Set Tag</A> "
|
||||
t += "<BR>Tag: [gpstag]"
|
||||
if(locked_location && locked_location.loc)
|
||||
t += "<BR>Bluespace coordinates saved: [locked_location.loc]"
|
||||
gps_window_height += 20
|
||||
|
||||
for(var/obj/item/device/gps/G in GLOB.GPS_list)
|
||||
var/turf/pos = get_turf(G)
|
||||
var/area/gps_area = get_area(G)
|
||||
var/tracked_gpstag = G.gpstag
|
||||
if(G.emped == 1)
|
||||
t += "<BR>[tracked_gpstag]: ERROR"
|
||||
else if(G.tracking)
|
||||
t += "<BR>[tracked_gpstag]: [format_text(gps_area.name)] ([pos.x], [pos.y], [pos.z])"
|
||||
else
|
||||
continue
|
||||
var/datum/browser/popup = new(user, "GPS", name, 360, min(gps_window_height, 800))
|
||||
popup.set_content(t)
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.open()
|
||||
|
||||
/obj/item/device/gps/Topic(href, href_list)
|
||||
..()
|
||||
if(href_list["tag"] )
|
||||
var/a = input("Please enter desired tag.", name, gpstag) as text
|
||||
a = uppertext(copytext(sanitize(a), 1, 5))
|
||||
if(in_range(src, usr))
|
||||
gpstag = a
|
||||
name = "global positioning system ([gpstag])"
|
||||
attack_self(usr)
|
||||
|
||||
/obj/item/device/gps/science
|
||||
icon_state = "gps-s"
|
||||
gpstag = "SCI0"
|
||||
|
||||
/obj/item/device/gps/engineering
|
||||
icon_state = "gps-e"
|
||||
gpstag = "ENG0"
|
||||
|
||||
/obj/item/device/gps/mining
|
||||
icon_state = "gps-m"
|
||||
gpstag = "MINE0"
|
||||
desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life."
|
||||
|
||||
/obj/item/device/gps/cyborg
|
||||
icon_state = "gps-b"
|
||||
gpstag = "BORG0"
|
||||
desc = "A mining cyborg internal positioning system. Used as a recovery beacon for damaged cyborg assets, or a collaboration tool for mining teams."
|
||||
flags = NODROP
|
||||
|
||||
/obj/item/device/gps/internal
|
||||
icon_state = null
|
||||
flags = ABSTRACT
|
||||
gpstag = "Eerie Signal"
|
||||
desc = "Report to a coder immediately."
|
||||
invisibility = INVISIBILITY_MAXIMUM
|
||||
|
||||
/obj/item/device/gps/mining/internal
|
||||
icon_state = "gps-m"
|
||||
gpstag = "MINER"
|
||||
desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life."
|
||||
|
||||
/obj/item/device/gps/internal/base
|
||||
gpstag = "NT_AUX"
|
||||
desc = "A homing signal from Nanotrasen's mining base."
|
||||
|
||||
/obj/item/device/gps/visible_debug
|
||||
name = "visible GPS"
|
||||
gpstag = "ADMIN"
|
||||
desc = "This admin-spawn GPS unit leaves the coordinates visible \
|
||||
on any turf that it passes over, for debugging. Especially useful \
|
||||
for marking the area around the transition edges."
|
||||
var/list/turf/tagged
|
||||
|
||||
/obj/item/device/gps/visible_debug/Initialize()
|
||||
. = ..()
|
||||
tagged = list()
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
/obj/item/device/gps/visible_debug/process()
|
||||
var/turf/T = get_turf(src)
|
||||
if(T)
|
||||
// I assume it's faster to color,tag and OR the turf in, rather
|
||||
// then checking if its there
|
||||
T.color = RANDOM_COLOUR
|
||||
T.maptext = "[T.x],[T.y],[T.z]"
|
||||
tagged |= T
|
||||
|
||||
/obj/item/device/gps/visible_debug/proc/clear()
|
||||
while(tagged.len)
|
||||
var/turf/T = pop(tagged)
|
||||
T.color = initial(T.color)
|
||||
T.maptext = initial(T.maptext)
|
||||
|
||||
/obj/item/device/gps/visible_debug/Destroy()
|
||||
if(tagged)
|
||||
clear()
|
||||
tagged = null
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
. = ..()
|
||||
@@ -53,13 +53,13 @@
|
||||
|
||||
/obj/item/device/multitool/ai_detect/proc/multitool_detect()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
for(var/mob/living/silicon/ai/AI in ai_list)
|
||||
for(var/mob/living/silicon/ai/AI in GLOB.ai_list)
|
||||
if(AI.cameraFollow == src)
|
||||
detect_state = PROXIMITY_ON_SCREEN
|
||||
break
|
||||
|
||||
if(!detect_state && cameranet.chunkGenerated(our_turf.x, our_turf.y, our_turf.z))
|
||||
var/datum/camerachunk/chunk = cameranet.getCameraChunk(our_turf.x, our_turf.y, our_turf.z)
|
||||
if(!detect_state && GLOB.cameranet.chunkGenerated(our_turf.x, our_turf.y, our_turf.z))
|
||||
var/datum/camerachunk/chunk = GLOB.cameranet.getCameraChunk(our_turf.x, our_turf.y, our_turf.z)
|
||||
if(chunk)
|
||||
if(chunk.seenby.len)
|
||||
for(var/mob/camera/aiEye/A in chunk.seenby)
|
||||
@@ -78,7 +78,7 @@
|
||||
/obj/item/device/multitool/ai_detect/admin/multitool_detect()
|
||||
var/turf/our_turf = get_turf(src)
|
||||
for(var/mob/J in urange(rangewarning,our_turf))
|
||||
if(admin_datums[J.ckey])
|
||||
if(GLOB.admin_datums[J.ckey])
|
||||
detect_state = PROXIMITY_NEAR
|
||||
var/turf/detect_turf = get_turf(J)
|
||||
if(get_dist(our_turf, detect_turf) < rangealert)
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
var/mob/living/silicon/pai/pai
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
|
||||
|
||||
/obj/item/device/paicard/New()
|
||||
/obj/item/device/paicard/Initialize()
|
||||
..()
|
||||
pai_card_list += src
|
||||
SSpai.pai_card_list += src
|
||||
add_overlay("pai-off")
|
||||
|
||||
/obj/item/device/paicard/Destroy()
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
pai_card_list -= src
|
||||
SSpai.pai_card_list -= src
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
return ..()
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
/obj/item/device/radio/beacon/New()
|
||||
..()
|
||||
teleportbeacons += src
|
||||
GLOB.teleportbeacons += src
|
||||
|
||||
/obj/item/device/radio/beacon/Destroy()
|
||||
teleportbeacons.Remove(src)
|
||||
GLOB.teleportbeacons.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/beacon/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
/obj/item/device/radio/beacon/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode)
|
||||
return
|
||||
|
||||
/obj/item/device/radio/beacon/send_hear()
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/item/device/electropack/Initialize()
|
||||
..()
|
||||
SSradio.add_object(src, frequency, RADIO_CHAT)
|
||||
SSradio.add_object(src, frequency, GLOB.RADIO_CHAT)
|
||||
|
||||
/obj/item/device/electropack/Destroy()
|
||||
if(SSradio)
|
||||
@@ -66,7 +66,7 @@
|
||||
if(href_list["freq"])
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = sanitize_frequency(frequency + text2num(href_list["freq"]))
|
||||
SSradio.add_object(src, frequency, RADIO_CHAT)
|
||||
SSradio.add_object(src, frequency, GLOB.RADIO_CHAT)
|
||||
else
|
||||
if(href_list["code"])
|
||||
code += text2num(href_list["code"])
|
||||
@@ -107,7 +107,7 @@
|
||||
spawn(100)
|
||||
shock_cooldown = 0
|
||||
var/mob/M = loc
|
||||
step(M, pick(cardinal))
|
||||
step(M, pick(GLOB.cardinal))
|
||||
|
||||
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/obj/item/device/encryptionkey
|
||||
name = "standard encryption key"
|
||||
desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN."
|
||||
@@ -8,7 +7,7 @@
|
||||
origin_tech = "engineering=2;bluespace=1"
|
||||
var/translate_binary = 0
|
||||
var/syndie = 0
|
||||
var/centcom = 0
|
||||
var/independent = FALSE
|
||||
var/list/channels = list()
|
||||
|
||||
/obj/item/device/encryptionkey/syndicate
|
||||
@@ -126,7 +125,7 @@
|
||||
name = "centcom radio encryption key"
|
||||
desc = "An encryption key for a radio headset. To access the centcom channel, use :y."
|
||||
icon_state = "cent_cypherkey"
|
||||
centcom = 1
|
||||
independent = TRUE
|
||||
channels = list("Centcom" = 1)
|
||||
|
||||
/obj/item/device/encryptionkey/ai //ported from NT, this goes 'inside' the AI.
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
keyslot2 = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/headset/talk_into(mob/living/M, message, channel, list/spans)
|
||||
/obj/item/device/radio/headset/talk_into(mob/living/M, message, channel, list/spans,datum/language/language)
|
||||
if (!listening)
|
||||
return ITALICS | REDUCE_RANGE
|
||||
return ..()
|
||||
@@ -231,7 +231,7 @@
|
||||
|
||||
|
||||
for(var/ch_name in channels)
|
||||
SSradio.remove_object(src, radiochannels[ch_name])
|
||||
SSradio.remove_object(src, GLOB.radiochannels[ch_name])
|
||||
secure_radio_connections[ch_name] = null
|
||||
|
||||
|
||||
@@ -291,11 +291,18 @@
|
||||
if(keyslot2.syndie)
|
||||
src.syndie = 1
|
||||
|
||||
if (keyslot2.centcom)
|
||||
centcom = 1
|
||||
if (keyslot2.independent)
|
||||
independent = TRUE
|
||||
|
||||
|
||||
for(var/ch_name in channels)
|
||||
secure_radio_connections[ch_name] = add_radio(src, radiochannels[ch_name])
|
||||
secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name])
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/radio/headset/AltClick(mob/living/user)
|
||||
if(!istype(user) || !Adjacent(user) || user.incapacitated())
|
||||
return
|
||||
if (command)
|
||||
use_command = !use_command
|
||||
to_chat(user, "<span class='notice'>You toggle high-volume mode [use_command ? "on" : "off"].</span>")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/obj/item/device/radio/intercom/interact(mob/user)
|
||||
..()
|
||||
ui_interact(user, state = default_state)
|
||||
ui_interact(user, state = GLOB.default_state)
|
||||
|
||||
/obj/item/device/radio/intercom/receive_range(freq, level)
|
||||
if(!on)
|
||||
@@ -40,14 +40,14 @@
|
||||
return -1
|
||||
if(!src.listening)
|
||||
return -1
|
||||
if(freq == SYND_FREQ)
|
||||
if(freq == GLOB.SYND_FREQ)
|
||||
if(!(src.syndie))
|
||||
return -1//Prevents broadcast of messages over devices lacking the encryption
|
||||
|
||||
return canhear_range
|
||||
|
||||
|
||||
/obj/item/device/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
/obj/item/device/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode)
|
||||
if(!anyai && !(speaker in ai))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -23,14 +23,12 @@
|
||||
var/subspace_switchable = 0
|
||||
var/subspace_transmission = 0
|
||||
var/syndie = 0//Holder to see if it's a syndicate encrpyed radio
|
||||
var/centcom = 0//Bleh, more dirty booleans
|
||||
var/independent = FALSE // If true, bypasses any tcomms machinery.
|
||||
var/freqlock = 0 //Frequency lock to stop the user from untuning specialist radios.
|
||||
var/emped = 0 //Highjacked to track the number of consecutive EMPs on the radio, allowing consecutive EMP's to stack properly.
|
||||
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
|
||||
flags = CONDUCT | HEAR
|
||||
slot_flags = SLOT_BELT
|
||||
languages_spoken = HUMAN | ROBOT
|
||||
languages_understood = HUMAN | ROBOT
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
@@ -58,7 +56,7 @@
|
||||
channels = list()
|
||||
translate_binary = 0
|
||||
syndie = 0
|
||||
centcom = 0
|
||||
independent = FALSE
|
||||
|
||||
if(keyslot)
|
||||
for(var/ch_name in keyslot.channels)
|
||||
@@ -73,11 +71,11 @@
|
||||
if(keyslot.syndie)
|
||||
syndie = 1
|
||||
|
||||
if(keyslot.centcom)
|
||||
centcom = 1
|
||||
if(keyslot.independent)
|
||||
independent = TRUE
|
||||
|
||||
for(var/ch_name in channels)
|
||||
secure_radio_connections[ch_name] = add_radio(src, radiochannels[ch_name])
|
||||
secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name])
|
||||
|
||||
/obj/item/device/radio/proc/make_syndie() // Turns normal radios into Syndicate radios!
|
||||
qdel(keyslot)
|
||||
@@ -99,7 +97,7 @@
|
||||
set_frequency(frequency)
|
||||
|
||||
for(var/ch_name in channels)
|
||||
secure_radio_connections[ch_name] = add_radio(src, radiochannels[ch_name])
|
||||
secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name])
|
||||
|
||||
/obj/item/device/radio/interact(mob/user)
|
||||
if (..())
|
||||
@@ -110,7 +108,7 @@
|
||||
ui_interact(user)
|
||||
|
||||
/obj/item/device/radio/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = inventory_state)
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "radio", name, 370, 220 + channels.len * 22, master_ui, state)
|
||||
@@ -190,11 +188,15 @@
|
||||
recalculateChannels()
|
||||
. = TRUE
|
||||
|
||||
/obj/item/device/radio/talk_into(atom/movable/M, message, channel, list/spans)
|
||||
INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans)
|
||||
/obj/item/device/radio/talk_into(atom/movable/M, message, channel, list/spans, datum/language/language)
|
||||
if(!spans)
|
||||
spans = M.get_spans()
|
||||
if(!language)
|
||||
language = M.get_default_language()
|
||||
INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans, language)
|
||||
return ITALICS | REDUCE_RANGE
|
||||
|
||||
/obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans)
|
||||
/obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language)
|
||||
if(!on) return // the device has to be on
|
||||
// Fix for permacell radios, but kinda eh about actually fixing them.
|
||||
if(!M || !message) return
|
||||
@@ -239,7 +241,7 @@
|
||||
var/turf/position = get_turf(src)
|
||||
|
||||
var/jammed = FALSE
|
||||
for(var/obj/item/device/jammer/jammer in active_jammers)
|
||||
for(var/obj/item/device/jammer/jammer in GLOB.active_jammers)
|
||||
if(get_dist(position,get_turf(jammer)) < jammer.range)
|
||||
jammed = TRUE
|
||||
break
|
||||
@@ -265,7 +267,7 @@
|
||||
|
||||
// --- Human: use their job as seen on the crew manifest - makes it unneeded to carry an ID for an AI to see their job
|
||||
if(ishuman(M))
|
||||
var/datum/data/record/findjob = find_record("name", voice, data_core.general)
|
||||
var/datum/data/record/findjob = find_record("name", voice, GLOB.data_core.general)
|
||||
|
||||
if(voice != real_name)
|
||||
voicemask = 1
|
||||
@@ -299,9 +301,9 @@
|
||||
else
|
||||
jobname = "Unknown"
|
||||
|
||||
/* ###### Centcom channel bypasses all comms relays. ###### */
|
||||
/* ###### `independent` radios bypass all comms relays. ###### */
|
||||
|
||||
if (freqnum == CENTCOM_FREQ && centcom)
|
||||
if(independent)
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 2
|
||||
signal.data = list(
|
||||
@@ -322,18 +324,18 @@
|
||||
"server" = null,
|
||||
"reject" = 0,
|
||||
"level" = 0,
|
||||
"languages" = languages_spoken,
|
||||
"language" = language,
|
||||
"spans" = spans,
|
||||
"verb_say" = M.verb_say,
|
||||
"verb_ask" = M.verb_ask,
|
||||
"verb_exclaim" = M.verb_exclaim,
|
||||
"verb_yell" = M.verb_yell
|
||||
"verb_yell" = M.verb_yell,
|
||||
)
|
||||
signal.frequency = freqnum // Quick frequency set
|
||||
Broadcast_Message(M, voicemask,
|
||||
src, message, voice, jobname, real_name,
|
||||
5, signal.data["compression"], list(position.z, 0), freq, spans,
|
||||
verb_say, verb_ask, verb_exclaim, verb_yell)
|
||||
verb_say, verb_ask, verb_exclaim, verb_yell, language)
|
||||
return
|
||||
|
||||
/* ###### Radio headsets can only broadcast through subspace ###### */
|
||||
@@ -367,7 +369,7 @@
|
||||
"server" = null, // the last server to log this signal
|
||||
"reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery
|
||||
"level" = position.z, // The source's z level
|
||||
"languages" = M.languages_spoken, //The languages M is talking in.
|
||||
"language" = language,
|
||||
"spans" = spans, //the span classes of this message.
|
||||
"verb_say" = M.verb_say, //the verb used when talking normally
|
||||
"verb_ask" = M.verb_ask, //the verb used when asking
|
||||
@@ -378,11 +380,11 @@
|
||||
|
||||
//#### Sending the signal to all subspace receivers ####//
|
||||
|
||||
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
|
||||
for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list)
|
||||
R.receive_signal(signal)
|
||||
|
||||
// Allinone can act as receivers.
|
||||
for(var/obj/machinery/telecomms/allinone/R in telecomms_list)
|
||||
for(var/obj/machinery/telecomms/allinone/R in GLOB.telecomms_list)
|
||||
R.receive_signal(signal)
|
||||
|
||||
// Receiving code can be located in Telecommunications.dm
|
||||
@@ -417,7 +419,7 @@
|
||||
"server" = null,
|
||||
"reject" = 0,
|
||||
"level" = position.z,
|
||||
"languages" = languages_spoken,
|
||||
"language" = language,
|
||||
"spans" = spans,
|
||||
"verb_say" = M.verb_say,
|
||||
"verb_ask" = M.verb_ask,
|
||||
@@ -425,7 +427,7 @@
|
||||
"verb_yell" = M.verb_yell
|
||||
)
|
||||
signal.frequency = freqnum // Quick frequency set
|
||||
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
|
||||
for(var/obj/machinery/telecomms/receiver/R in GLOB.telecomms_list)
|
||||
R.receive_signal(signal)
|
||||
|
||||
|
||||
@@ -440,14 +442,14 @@
|
||||
Broadcast_Message(M, voicemask,
|
||||
src, message, voice, jobname, real_name,
|
||||
filter_type, signal.data["compression"], list(position.z), freq, spans,
|
||||
verb_say, verb_ask, verb_exclaim, verb_yell)
|
||||
verb_say, verb_ask, verb_exclaim, verb_yell, language)
|
||||
|
||||
/obj/item/device/radio/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
/obj/item/device/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
if(radio_freq)
|
||||
return
|
||||
if(broadcasting)
|
||||
if(get_dist(src, speaker) <= canhear_range)
|
||||
talk_into(speaker, raw_message, , spans)
|
||||
talk_into(speaker, raw_message, , spans, language=message_language)
|
||||
/*
|
||||
/obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message)
|
||||
|
||||
@@ -474,11 +476,11 @@
|
||||
var/turf/position = get_turf(src)
|
||||
if(!position || !(position.z in level))
|
||||
return -1
|
||||
if(freq == SYND_FREQ)
|
||||
if(freq == GLOB.SYND_FREQ)
|
||||
if(!(src.syndie)) //Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
return -1
|
||||
if(freq == CENTCOM_FREQ)
|
||||
if (!(src.centcom))
|
||||
if(freq == GLOB.CENTCOM_FREQ)
|
||||
if(!independent)
|
||||
return -1
|
||||
if (!on)
|
||||
return -1
|
||||
@@ -490,7 +492,7 @@
|
||||
if (!accept)
|
||||
for(var/ch_name in channels)
|
||||
if(channels[ch_name] & FREQ_LISTENING)
|
||||
if(radiochannels[ch_name] == text2num(freq) || syndie) //the radiochannels list is located in communications.dm
|
||||
if(GLOB.radiochannels[ch_name] == text2num(freq) || syndie) //the GLOB.radiochannels list is located in communications.dm
|
||||
accept = 1
|
||||
break
|
||||
if (!accept)
|
||||
@@ -559,14 +561,14 @@
|
||||
|
||||
/obj/item/device/radio/borg/syndicate/New()
|
||||
..()
|
||||
set_frequency(SYND_FREQ)
|
||||
set_frequency(GLOB.SYND_FREQ)
|
||||
|
||||
/obj/item/device/radio/borg/attackby(obj/item/weapon/W, mob/user, params)
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(keyslot)
|
||||
for(var/ch_name in channels)
|
||||
SSradio.remove_object(src, radiochannels[ch_name])
|
||||
SSradio.remove_object(src, GLOB.radiochannels[ch_name])
|
||||
secure_radio_connections[ch_name] = null
|
||||
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ MASS SPECTROMETER
|
||||
var/blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL)*100)
|
||||
var/blood_type = C.dna.blood_type
|
||||
if(blood_id != "blood")//special blood substance
|
||||
var/datum/reagent/R = chemical_reagents_list[blood_id]
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
|
||||
if(R)
|
||||
blood_type = R.name
|
||||
else
|
||||
@@ -285,7 +285,7 @@ MASS SPECTROMETER
|
||||
if(total_moles)
|
||||
var/list/env_gases = environment.gases
|
||||
|
||||
environment.assert_gases(arglist(hardcoded_gases))
|
||||
environment.assert_gases(arglist(GLOB.hardcoded_gases))
|
||||
var/o2_concentration = env_gases["o2"][MOLES]/total_moles
|
||||
var/n2_concentration = env_gases["n2"][MOLES]/total_moles
|
||||
var/co2_concentration = env_gases["co2"][MOLES]/total_moles
|
||||
@@ -314,7 +314,7 @@ MASS SPECTROMETER
|
||||
|
||||
|
||||
for(var/id in env_gases)
|
||||
if(id in hardcoded_gases)
|
||||
if(id in GLOB.hardcoded_gases)
|
||||
continue
|
||||
var/gas_concentration = env_gases[id][MOLES]/total_moles
|
||||
to_chat(user, "<span class='alert'>[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %</span>")
|
||||
@@ -368,7 +368,7 @@ MASS SPECTROMETER
|
||||
dat += "<br>None"
|
||||
else
|
||||
for(var/R in blood_traces)
|
||||
dat += "<br>[chemical_reagents_list[R]]"
|
||||
dat += "<br>[GLOB.chemical_reagents_list[R]]"
|
||||
if(details)
|
||||
dat += " ([blood_traces[R]] units)"
|
||||
dat += "</i>"
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
origin_tech = "programming=3;materials=3;magnets=3"
|
||||
|
||||
/obj/item/device/sensor_device/attack_self(mob/user)
|
||||
crewmonitor.show(user) //Proc already exists, just had to call it
|
||||
GLOB.crewmonitor.show(user) //Proc already exists, just had to call it
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
flags = HEAR
|
||||
slot_flags = SLOT_BELT
|
||||
languages_spoken = ALL //this is a translator, after all.
|
||||
languages_understood = ALL //this is a translator, after all.
|
||||
materials = list(MAT_METAL=60, MAT_GLASS=30)
|
||||
force = 2
|
||||
throwforce = 0
|
||||
@@ -15,14 +13,16 @@
|
||||
var/playing = 0
|
||||
var/playsleepseconds = 0
|
||||
var/obj/item/device/tape/mytape
|
||||
var/starting_tape_type = /obj/item/device/tape/random
|
||||
var/open_panel = 0
|
||||
var/canprint = 1
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/New()
|
||||
mytape = new /obj/item/device/tape/random(src)
|
||||
update_icon()
|
||||
/obj/item/device/taperecorder/Initialize(mapload)
|
||||
..()
|
||||
if(starting_tape_type)
|
||||
mytape = new starting_tape_type(src)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/examine(mob/user)
|
||||
@@ -92,7 +92,7 @@
|
||||
icon_state = "taperecorder_idle"
|
||||
|
||||
|
||||
/obj/item/device/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans)
|
||||
/obj/item/device/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode)
|
||||
if(mytape && recording)
|
||||
mytape.timestamp += mytape.used_capacity
|
||||
mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [message]"
|
||||
@@ -229,8 +229,8 @@
|
||||
|
||||
|
||||
//empty tape recorders
|
||||
/obj/item/device/taperecorder/empty/New()
|
||||
return
|
||||
/obj/item/device/taperecorder/empty
|
||||
starting_tape_type = null
|
||||
|
||||
|
||||
/obj/item/device/tape
|
||||
@@ -287,4 +287,4 @@
|
||||
//Random colour tapes
|
||||
/obj/item/device/tape/random/New()
|
||||
icon_state = "tape_[pick("white", "blue", "red", "yellow", "purple")]"
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -230,15 +230,15 @@ effective or pretty fucking useless.
|
||||
desc = "Device used to disrupt nearby radio communication."
|
||||
icon_state = "jammer"
|
||||
var/active = FALSE
|
||||
var/range = 7
|
||||
var/range = 12
|
||||
|
||||
/obj/item/device/jammer/attack_self(mob/user)
|
||||
to_chat(user,"<span class='notice'>You [active ? "deactivate" : "activate"] the [src]<span>")
|
||||
active = !active
|
||||
if(active)
|
||||
active_jammers |= src
|
||||
GLOB.active_jammers |= src
|
||||
else
|
||||
active_jammers -= src
|
||||
GLOB.active_jammers -= src
|
||||
update_icon()
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
A.holder = src
|
||||
A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb).
|
||||
|
||||
bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
||||
GLOB.bombers += "[key_name(user)] attached a [item] to a transfer valve."
|
||||
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
|
||||
attacher = user
|
||||
@@ -189,7 +189,7 @@
|
||||
|
||||
var/bomb_message = "[log_str1] <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name]</a> [log_str2][log_attacher] [log_str3][last_touch_info]"
|
||||
|
||||
bombers += bomb_message
|
||||
GLOB.bombers += bomb_message
|
||||
|
||||
message_admins(bomb_message, 0, 1)
|
||||
log_game("[log_str1] [A.name]([A.x],[A.y],[A.z]) [log_str2] [log_str3]")
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
shaking = TRUE
|
||||
|
||||
start_shaking(user)
|
||||
if(do_after(user, shake_time, needhand=TRUE, target=src, progress=TRUE))
|
||||
if(do_after(user, shake_time, needhand=TRUE, target=user, progress=TRUE))
|
||||
var/answer = get_answer()
|
||||
say(answer)
|
||||
|
||||
@@ -98,10 +98,10 @@
|
||||
/obj/item/toy/eightball/haunted/Initialize(mapload)
|
||||
..()
|
||||
votes = list()
|
||||
poi_list |= src
|
||||
GLOB.poi_list |= src
|
||||
|
||||
/obj/item/toy/eightball/haunted/Destroy()
|
||||
poi_list -= src
|
||||
GLOB.poi_list -= src
|
||||
. = ..()
|
||||
|
||||
/obj/item/toy/eightball/haunted/attack_ghost(mob/user)
|
||||
@@ -110,7 +110,7 @@
|
||||
return
|
||||
interact(user)
|
||||
|
||||
/obj/item/toy/eightball/haunted/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans)
|
||||
/obj/item/toy/eightball/haunted/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode)
|
||||
last_message = raw_message
|
||||
|
||||
/obj/item/toy/eightball/haunted/start_shaking(mob/user)
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
return most_popular_answer
|
||||
|
||||
/obj/item/toy/eightball/haunted/ui_interact(mob/user, ui_key="main", datum/tgui/ui=null, force_open=0, datum/tgui/master_ui=null, datum/ui_state/state=observer_state)
|
||||
/obj/item/toy/eightball/haunted/ui_interact(mob/user, ui_key="main", datum/tgui/ui=null, force_open=0, datum/tgui/master_ui=null, datum/ui_state/state = GLOB.observer_state)
|
||||
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
|
||||
@@ -42,17 +42,17 @@
|
||||
/obj/item/robot_suit/proc/updateicon()
|
||||
cut_overlays()
|
||||
if(l_arm)
|
||||
add_overlay("l_arm+o")
|
||||
add_overlay("[l_arm.icon_state]+o")
|
||||
if(r_arm)
|
||||
add_overlay("r_arm+o")
|
||||
add_overlay("[r_arm.icon_state]+o")
|
||||
if(chest)
|
||||
add_overlay("chest+o")
|
||||
add_overlay("[chest.icon_state]+o")
|
||||
if(l_leg)
|
||||
add_overlay("l_leg+o")
|
||||
add_overlay("[l_leg.icon_state]+o")
|
||||
if(r_leg)
|
||||
add_overlay("r_leg+o")
|
||||
add_overlay("[r_leg.icon_state]+o")
|
||||
if(head)
|
||||
add_overlay("head+o")
|
||||
add_overlay("[head.icon_state]+o")
|
||||
|
||||
/obj/item/robot_suit/proc/check_completion()
|
||||
if(src.l_arm && src.r_arm)
|
||||
@@ -206,7 +206,7 @@
|
||||
lawsync = 0
|
||||
O.connected_ai = null
|
||||
else
|
||||
O.notify_ai(1)
|
||||
O.notify_ai(NEW_BORG)
|
||||
if(forced_ai)
|
||||
O.connected_ai = forced_ai
|
||||
if(!lawsync)
|
||||
@@ -214,7 +214,7 @@
|
||||
if(M.laws.id == DEFAULT_AI_LAWID)
|
||||
O.make_laws()
|
||||
|
||||
ticker.mode.remove_antag_for_borging(BM.mind)
|
||||
SSticker.mode.remove_antag_for_borging(BM.mind)
|
||||
if(!istype(M.laws, /datum/ai_laws/ratvar))
|
||||
remove_servant_of_ratvar(BM, TRUE)
|
||||
BM.mind.transfer_to(O)
|
||||
@@ -248,6 +248,41 @@
|
||||
else
|
||||
to_chat(user, "<span class='warning'>The MMI must go in after everything else!</span>")
|
||||
|
||||
else if(istype(W, /obj/item/borg/upgrade/ai))
|
||||
var/obj/item/borg/upgrade/ai/M = W
|
||||
if(check_completion())
|
||||
if(!isturf(loc))
|
||||
to_chat(user, "<span class='warning'>You cannot install[M], the frame has to be standing on the ground to be perfectly precise!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
to_chat(user, "<span class='warning'>[M] is stuck to your hand!</span>")
|
||||
return
|
||||
qdel(M)
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot/shell(get_turf(src))
|
||||
|
||||
if(!aisync)
|
||||
lawsync = FALSE
|
||||
O.connected_ai = null
|
||||
else
|
||||
if(forced_ai)
|
||||
O.connected_ai = forced_ai
|
||||
O.notify_ai(AI_SHELL)
|
||||
if(!lawsync)
|
||||
O.lawupdate = FALSE
|
||||
O.make_laws()
|
||||
|
||||
|
||||
O.cell = chest.cell
|
||||
chest.cell.loc = O
|
||||
chest.cell = null
|
||||
O.locked = panel_locked
|
||||
O.job = "Cyborg"
|
||||
forceMove(O)
|
||||
O.robot_suit = src
|
||||
if(!locomotion)
|
||||
O.lockcharge = TRUE
|
||||
O.update_canmove()
|
||||
|
||||
else if(istype(W,/obj/item/weapon/pen))
|
||||
to_chat(user, "<span class='warning'>You need to use a multitool to name [src]!</span>")
|
||||
else
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
R.custom_name = heldname
|
||||
R.updatename()
|
||||
if(oldname == R.real_name)
|
||||
R.notify_ai(3, oldname, R.real_name)
|
||||
R.notify_ai(RENAME, oldname, R.real_name)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -381,3 +381,22 @@
|
||||
R.module.add_module(S, FALSE, TRUE)
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/borg/upgrade/ai
|
||||
name = "B.O.R.I.S. module"
|
||||
desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI."
|
||||
icon_state = "boris"
|
||||
origin_tech = "engineering=4;magnets=4;programming=4"
|
||||
|
||||
/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/R)
|
||||
if(..())
|
||||
return
|
||||
if(R.shell)
|
||||
to_chat(usr, "<span class='warning'>This unit is already an AI shell!</span>")
|
||||
return
|
||||
if(R.key) //You cannot replace a player unless the key is completely removed.
|
||||
to_chat(usr, "<span class='warning'>Intelligence patterns detected in this [R.braintype]. Aborting.</span>")
|
||||
return
|
||||
|
||||
R.make_shell(src)
|
||||
return TRUE
|
||||
@@ -0,0 +1,80 @@
|
||||
//Bluespace crystals, used in telescience and when crushed it will blink you to a random turf.
|
||||
/obj/item/weapon/ore/bluespace_crystal
|
||||
name = "bluespace crystal"
|
||||
desc = "A glowing bluespace crystal, not much is known about how they work. It looks very delicate."
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "bluespace_crystal"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
|
||||
origin_tech = "bluespace=6;materials=3"
|
||||
points = 50
|
||||
var/blink_range = 8 // The teleport range when crushed/thrown at someone.
|
||||
refined_type = /obj/item/stack/sheet/bluespace_crystal
|
||||
|
||||
/obj/item/weapon/ore/bluespace_crystal/refined
|
||||
name = "refined bluespace crystal"
|
||||
points = 0
|
||||
refined_type = null
|
||||
|
||||
/obj/item/weapon/ore/bluespace_crystal/New()
|
||||
..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/weapon/ore/bluespace_crystal/attack_self(mob/user)
|
||||
user.visible_message("<span class='warning'>[user] crushes [src]!</span>", "<span class='danger'>You crush [src]!</span>")
|
||||
new /obj/effect/particle_effect/sparks(loc)
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
blink_mob(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/ore/bluespace_crystal/proc/blink_mob(mob/living/L)
|
||||
do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg')
|
||||
|
||||
/obj/item/weapon/ore/bluespace_crystal/throw_impact(atom/hit_atom)
|
||||
if(!..()) // not caught in mid-air
|
||||
visible_message("<span class='notice'>[src] fizzles and disappears upon impact!</span>")
|
||||
var/turf/T = get_turf(hit_atom)
|
||||
new /obj/effect/particle_effect/sparks(T)
|
||||
playsound(src.loc, "sparks", 50, 1)
|
||||
if(isliving(hit_atom))
|
||||
blink_mob(hit_atom)
|
||||
qdel(src)
|
||||
|
||||
//Artifical bluespace crystal, doesn't give you much research.
|
||||
/obj/item/weapon/ore/bluespace_crystal/artificial
|
||||
name = "artificial bluespace crystal"
|
||||
desc = "An artificially made bluespace crystal, it looks delicate."
|
||||
origin_tech = "bluespace=3;plasmatech=4"
|
||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT / 2)
|
||||
blink_range = 4 // Not as good as the organic stuff!
|
||||
points = 0 //nice try
|
||||
refined_type = null
|
||||
|
||||
//Polycrystals, aka stacks
|
||||
/obj/item/stack/sheet/bluespace_crystal
|
||||
name = "bluespace polycrystal"
|
||||
icon = 'icons/obj/telescience.dmi'
|
||||
icon_state = "polycrystal"
|
||||
desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
|
||||
origin_tech = "bluespace=6;materials=3"
|
||||
materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT)
|
||||
attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed")
|
||||
var/crystal_type = /obj/item/weapon/ore/bluespace_crystal/refined
|
||||
|
||||
/obj/item/stack/sheet/bluespace_crystal/attack_self(mob/user)// to prevent the construction menu from ever happening
|
||||
to_chat(user, "<span class='warning'>You cannot crush the polycrystal in-hand, try breaking one off.</span>")
|
||||
|
||||
/obj/item/stack/sheet/bluespace_crystal/attack_hand(mob/user)
|
||||
if(user.get_inactive_held_item() == src)
|
||||
if(zero_amount())
|
||||
return
|
||||
var/BC = new crystal_type(src)
|
||||
user.put_in_hands(BC)
|
||||
use(1)
|
||||
if(!amount)
|
||||
to_chat(user, "<span class='notice'>You break the final crystal off.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You break off a crystal.</span>")
|
||||
else
|
||||
..()
|
||||
@@ -73,7 +73,7 @@
|
||||
else if(user.gender == FEMALE)
|
||||
t_himself = "herself"
|
||||
user.visible_message("<span class='notice'>[user] starts to apply [src] on [t_himself]...</span>", "<span class='notice'>You begin applying [src] on yourself...</span>")
|
||||
if(!do_mob(user, M, self_delay))
|
||||
if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject,user,1)))
|
||||
return
|
||||
user.visible_message("<span class='green'>[user] applies [src] on [t_himself].</span>", "<span class='green'>You apply [src] on yourself.</span>")
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
icon_state = "gauze"
|
||||
stop_bleeding = 1800
|
||||
self_delay = 20
|
||||
max_amount = 12
|
||||
|
||||
/obj/item/stack/medical/gauze/improvised
|
||||
name = "improvised gauze"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
var/global/list/datum/stack_recipe/rod_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(rod_recipes, list ( \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("table frame", /obj/structure/table_frame, 2, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("scooter frame", /obj/item/scooter_frame, 10, time = 25, one_per_turf = 0), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/rods
|
||||
name = "metal rod"
|
||||
desc = "Some rods. Can be used for building, or something."
|
||||
desc = "Some rods. Can be used for building or something."
|
||||
singular_name = "metal rod"
|
||||
icon_state = "rods"
|
||||
item_state = "rods"
|
||||
@@ -24,7 +24,7 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
|
||||
/obj/item/stack/rods/Initialize(mapload, new_amount, merge = TRUE)
|
||||
..()
|
||||
|
||||
recipes = rod_recipes
|
||||
recipes = GLOB.rod_recipes
|
||||
update_icon()
|
||||
|
||||
/obj/item/stack/rods/update_icon()
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
/*
|
||||
* Glass sheets
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/glass_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
new/datum/stack_recipe("directional window", /obj/structure/window/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe("fulltile window", /obj/structure/window/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/glass
|
||||
name = "glass"
|
||||
@@ -33,7 +33,7 @@ var/global/list/datum/stack_recipe/glass_recipes = list ( \
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/glass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = glass_recipes
|
||||
recipes = GLOB.glass_recipes
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user, params)
|
||||
@@ -70,12 +70,12 @@ var/global/list/datum/stack_recipe/glass_recipes = list ( \
|
||||
/*
|
||||
* Reinforced glass sheets
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/reinforced_glass_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
new/datum/stack_recipe("windoor frame", /obj/structure/windoor_assembly, 5, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
null, \
|
||||
new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE) \
|
||||
)
|
||||
))
|
||||
|
||||
|
||||
/obj/item/stack/sheet/rglass
|
||||
@@ -107,7 +107,7 @@ var/global/list/datum/stack_recipe/reinforced_glass_recipes = list ( \
|
||||
glasource.add_charge(amount * glacost)
|
||||
|
||||
/obj/item/stack/sheet/rglass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = reinforced_glass_recipes
|
||||
recipes = GLOB.reinforced_glass_recipes
|
||||
..()
|
||||
|
||||
|
||||
@@ -135,7 +135,8 @@ var/global/list/datum/stack_recipe/reinforced_glass_recipes = list ( \
|
||||
return (BRUTELOSS)
|
||||
|
||||
|
||||
/obj/item/weapon/shard/New()
|
||||
/obj/item/weapon/shard/Initialize()
|
||||
. = ..()
|
||||
icon_state = pick("large", "medium", "small")
|
||||
switch(icon_state)
|
||||
if("small")
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
singular_name = "human skin piece"
|
||||
icon_state = "sheet-hide"
|
||||
|
||||
var/global/list/datum/stack_recipe/human_recipes = list( \
|
||||
GLOBAL_LIST_INIT(human_recipes, list( \
|
||||
new/datum/stack_recipe("bloated human costume", /obj/item/clothing/suit/hooded/bloated_human, 5, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/human/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = human_recipes
|
||||
recipes = GLOB.human_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/animalhide/generic
|
||||
@@ -29,12 +29,12 @@ var/global/list/datum/stack_recipe/human_recipes = list( \
|
||||
singular_name = "corgi hide piece"
|
||||
icon_state = "sheet-corgi"
|
||||
|
||||
var/global/list/datum/stack_recipe/corgi_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(corgi_recipes, list ( \
|
||||
new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/corgi/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = corgi_recipes
|
||||
recipes = GLOB.corgi_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/animalhide/cat
|
||||
@@ -49,13 +49,13 @@ var/global/list/datum/stack_recipe/corgi_recipes = list ( \
|
||||
singular_name = "monkey hide piece"
|
||||
icon_state = "sheet-monkey"
|
||||
|
||||
var/global/list/datum/stack_recipe/monkey_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(monkey_recipes, list ( \
|
||||
new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/monkey/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = monkey_recipes
|
||||
recipes = GLOB.monkey_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/animalhide/lizard
|
||||
@@ -70,13 +70,13 @@ var/global/list/datum/stack_recipe/monkey_recipes = list ( \
|
||||
singular_name = "alien hide piece"
|
||||
icon_state = "sheet-xeno"
|
||||
|
||||
var/global/list/datum/stack_recipe/xeno_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(xeno_recipes, list ( \
|
||||
new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/xenos, 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/animalhide/xeno/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = xeno_recipes
|
||||
recipes = GLOB.xeno_recipes
|
||||
return ..()
|
||||
|
||||
//don't see anywhere else to put these, maybe together they could be used to make the xenos suit?
|
||||
@@ -134,12 +134,12 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \
|
||||
origin_tech = "biotech=4"
|
||||
|
||||
|
||||
var/global/list/datum/stack_recipe/sinew_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(sinew_recipes, list ( \
|
||||
new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/sinew/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = sinew_recipes
|
||||
recipes = GLOB.sinew_recipes
|
||||
return ..()
|
||||
/*
|
||||
* Plates
|
||||
|
||||
@@ -26,14 +26,14 @@ Mineral Sheets
|
||||
* Sandstone
|
||||
*/
|
||||
|
||||
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/weapon/ore/glass, 1, one_per_turf = 0, on_floor = 1), \
|
||||
/* new/datum/stack_recipe("sandstone wall", ???), \
|
||||
new/datum/stack_recipe("sandstone floor", ???),\ */
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandstone
|
||||
name = "sandstone brick"
|
||||
@@ -47,7 +47,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
sheettype = "sandstone"
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandstone/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = sandstone_recipes
|
||||
recipes = GLOB.sandstone_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -67,12 +67,12 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
layer = LOW_ITEM_LAYER
|
||||
origin_tech = "materials=2"
|
||||
|
||||
var/global/list/datum/stack_recipe/sandbag_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/sandbags/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = sandbag_recipes
|
||||
recipes = GLOB.sandbag_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -88,16 +88,16 @@ var/global/list/datum/stack_recipe/sandbag_recipes = list ( \
|
||||
sheettype = "diamond"
|
||||
materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Captain Statue", /obj/structure/statue/diamond/captain, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Hologram Statue", /obj/structure/statue/diamond/ai1, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/diamond/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = diamond_recipes
|
||||
recipes = GLOB.diamond_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -113,15 +113,15 @@ var/global/list/datum/stack_recipe/diamond_recipes = list ( \
|
||||
sheettype = "uranium"
|
||||
materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Nuke Statue", /obj/structure/statue/uranium/nuke, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/uranium/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = uranium_recipes
|
||||
recipes = GLOB.uranium_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -140,14 +140,14 @@ var/global/list/datum/stack_recipe/uranium_recipes = list ( \
|
||||
max_integrity = 100
|
||||
materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/plasma/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = plasma_recipes
|
||||
recipes = GLOB.plasma_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -175,7 +175,7 @@ var/global/list/datum/stack_recipe/plasma_recipes = list ( \
|
||||
sheettype = "gold"
|
||||
materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
|
||||
new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \
|
||||
@@ -184,10 +184,10 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
new/datum/stack_recipe("RD Statue", /obj/structure/statue/gold/rd, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \
|
||||
new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/gold/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = gold_recipes
|
||||
recipes = GLOB.gold_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -203,7 +203,7 @@ var/global/list/datum/stack_recipe/gold_recipes = list ( \
|
||||
sheettype = "silver"
|
||||
materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Med Officer Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \
|
||||
@@ -211,10 +211,10 @@ var/global/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
new/datum/stack_recipe("Sec Officer Statue", /obj/structure/statue/silver/sec, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Sec Borg Statue", /obj/structure/statue/silver/secborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/silver/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = silver_recipes
|
||||
recipes = GLOB.silver_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -230,13 +230,13 @@ var/global/list/datum/stack_recipe/silver_recipes = list ( \
|
||||
sheettype = "clown"
|
||||
materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/clown_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(clown_recipes, list ( \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/bananium/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = clown_recipes
|
||||
recipes = GLOB.clown_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -257,12 +257,12 @@ var/global/list/datum/stack_recipe/clown_recipes = list ( \
|
||||
sheettype = "titanium"
|
||||
materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
var/global/list/datum/stack_recipe/titanium_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(titanium_recipes, list ( \
|
||||
new/datum/stack_recipe("titanium tile", /obj/item/stack/tile/mineral/titanium, 1, 4, 20), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/titanium/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = titanium_recipes
|
||||
recipes = GLOB.titanium_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -284,12 +284,12 @@ var/global/list/datum/stack_recipe/titanium_recipes = list ( \
|
||||
sheettype = "plastitanium"
|
||||
materials = list(MAT_TITANIUM=2000, MAT_PLASMA=2000)
|
||||
|
||||
var/global/list/datum/stack_recipe/plastitanium_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
|
||||
new/datum/stack_recipe("plas-titanium tile", /obj/item/stack/tile/mineral/plastitanium, 1, 4, 20), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/plastitanium/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = plastitanium_recipes
|
||||
recipes = GLOB.plastitanium_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -307,14 +307,14 @@ var/global/list/datum/stack_recipe/plastitanium_recipes = list ( \
|
||||
origin_tech = "materials=1"
|
||||
sheettype = "snow"
|
||||
|
||||
var/global/list/datum/stack_recipe/snow_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(snow_recipes, list ( \
|
||||
new/datum/stack_recipe("Snow Wall",/turf/closed/wall/mineral/snow, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Snowman", /obj/structure/statue/snow/snowman, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Snowball", /obj/item/toy/snowball, 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/snow/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = snow_recipes
|
||||
recipes = GLOB.snow_recipes
|
||||
pixel_x = rand(0,4)-4
|
||||
pixel_y = rand(0,4)-4
|
||||
..()
|
||||
@@ -360,7 +360,7 @@ var/global/list/datum/stack_recipe/snow_recipes = list ( \
|
||||
origin_tech = "materials=6;abductor=1"
|
||||
sheettype = "abductor"
|
||||
|
||||
var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(abductor_recipes, list ( \
|
||||
/* new/datum/stack_recipe("alien chair", /obj/structure/chair, one_per_turf = 1, on_floor = 1), \ */
|
||||
new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 1, time = 15, one_per_turf = 1, on_floor = 1), \
|
||||
@@ -371,8 +371,8 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \
|
||||
/* null, \
|
||||
new/datum/stack_recipe("Abductor Agent Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Abductor Sciencist Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1)*/
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/abductor/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = abductor_recipes
|
||||
recipes = GLOB.abductor_recipes
|
||||
..()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/*
|
||||
* Metal
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(metal_recipes, list ( \
|
||||
new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = 1, on_floor = 1), \
|
||||
@@ -51,7 +51,8 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
||||
new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1), \
|
||||
null, \
|
||||
new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = 1, on_floor = 1), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/metal
|
||||
name = "metal"
|
||||
@@ -86,16 +87,16 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
|
||||
cost = 500
|
||||
|
||||
/obj/item/stack/sheet/metal/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = metal_recipes
|
||||
recipes = GLOB.metal_recipes
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Plasteel
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = 1), \
|
||||
new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/plasteel
|
||||
name = "plasteel"
|
||||
@@ -112,7 +113,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
merge_type = /obj/item/stack/sheet/plasteel
|
||||
|
||||
/obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = plasteel_recipes
|
||||
recipes = GLOB.plasteel_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/plasteel/twenty
|
||||
@@ -124,7 +125,7 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list ( \
|
||||
/*
|
||||
* Wood
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/wood_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \
|
||||
new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \
|
||||
new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \
|
||||
@@ -146,7 +147,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
|
||||
new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\
|
||||
new/datum/stack_recipe("ore box", /obj/structure/ore_box, 4, time = 50, one_per_turf = 1, on_floor = 1),\
|
||||
new/datum/stack_recipe("baseball bat", /obj/item/weapon/melee/baseball_bat, 5, time = 15),\
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood
|
||||
name = "wooden plank"
|
||||
@@ -161,7 +162,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
|
||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = wood_recipes
|
||||
recipes = GLOB.wood_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/mineral/wood/fifty
|
||||
@@ -170,7 +171,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list ( \
|
||||
/*
|
||||
* Cloth
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
new/datum/stack_recipe("grey jumpsuit", /obj/item/clothing/under/color/grey, 3), \
|
||||
new/datum/stack_recipe("black shoes", /obj/item/clothing/shoes/sneakers/black, 2), \
|
||||
null, \
|
||||
@@ -192,7 +193,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \
|
||||
null, \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 2), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/cloth
|
||||
name = "cloth"
|
||||
@@ -206,7 +207,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
merge_type = /obj/item/stack/sheet/cloth
|
||||
|
||||
/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = cloth_recipes
|
||||
recipes = GLOB.cloth_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/cloth/ten
|
||||
@@ -215,7 +216,7 @@ var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
/*
|
||||
* Cardboard
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(cardboard_recipes, list ( \
|
||||
new/datum/stack_recipe("box", /obj/item/weapon/storage/box), \
|
||||
new/datum/stack_recipe("light tubes", /obj/item/weapon/storage/box/lights/tubes), \
|
||||
new/datum/stack_recipe("light bulbs", /obj/item/weapon/storage/box/lights/bulbs), \
|
||||
@@ -226,7 +227,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
|
||||
new/datum/stack_recipe("folder", /obj/item/weapon/folder), \
|
||||
new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \
|
||||
new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck
|
||||
name = "cardboard"
|
||||
@@ -238,8 +239,8 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
|
||||
merge_type = /obj/item/stack/sheet/cardboard
|
||||
|
||||
/obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = cardboard_recipes
|
||||
return ..()
|
||||
recipes = GLOB.cardboard_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/cardboard/fifty
|
||||
amount = 50
|
||||
@@ -248,14 +249,14 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
|
||||
* Runed Metal
|
||||
*/
|
||||
|
||||
var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(runed_metal_recipes, list ( \
|
||||
new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("pylon", /obj/structure/destructible/cult/pylon, 4, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("forge", /obj/structure/destructible/cult/forge, 3, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("archives", /obj/structure/destructible/cult/tome, 3, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("altar", /obj/structure/destructible/cult/talisman, 3, time = 40, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/runed_metal
|
||||
name = "runed metal"
|
||||
@@ -286,13 +287,13 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
|
||||
amount = 50
|
||||
|
||||
/obj/item/stack/sheet/runed_metal/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = runed_metal_recipes
|
||||
recipes = GLOB.runed_metal_recipes
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Brass
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/brass_recipes = list ( \
|
||||
GLOBAL_LIST_INIT(brass_recipes, list ( \
|
||||
new/datum/stack_recipe("wall gear", /obj/structure/destructible/clockwork/wall_gear, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
null,
|
||||
new/datum/stack_recipe("pinion airlock", /obj/machinery/door/airlock/clockwork, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
@@ -302,7 +303,7 @@ var/global/list/datum/stack_recipe/brass_recipes = list ( \
|
||||
new/datum/stack_recipe("directional brass window", /obj/structure/window/reinforced/clockwork/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe("fulltile brass window", /obj/structure/window/reinforced/clockwork/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \
|
||||
new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE) \
|
||||
)
|
||||
))
|
||||
|
||||
/obj/item/stack/tile/brass
|
||||
name = "brass"
|
||||
@@ -323,7 +324,7 @@ var/global/list/datum/stack_recipe/brass_recipes = list ( \
|
||||
qdel(src)
|
||||
|
||||
/obj/item/stack/tile/brass/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = brass_recipes
|
||||
recipes = GLOB.brass_recipes
|
||||
..()
|
||||
pixel_x = 0
|
||||
pixel_y = 0
|
||||
@@ -359,8 +360,8 @@ var/global/list/datum/stack_recipe/brass_recipes = list ( \
|
||||
throw_range = 3
|
||||
origin_tech = "materials=2;biotech=2"
|
||||
|
||||
var/global/list/datum/stack_recipe/plastic_recipes = list(
|
||||
new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = 1, on_floor = 1, time = 40))
|
||||
GLOBAL_LIST_INIT(plastic_recipes, list(
|
||||
new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = 1, on_floor = 1, time = 40)))
|
||||
|
||||
/obj/item/stack/sheet/plastic
|
||||
name = "plastic"
|
||||
@@ -379,5 +380,5 @@ var/global/list/datum/stack_recipe/plastic_recipes = list(
|
||||
amount = 5
|
||||
|
||||
/obj/item/stack/sheet/plastic/Initialize(mapload, new_amount, merge = TRUE)
|
||||
recipes = plastic_recipes
|
||||
recipes = GLOB.plastic_recipes
|
||||
. = ..()
|
||||
|
||||
@@ -532,10 +532,10 @@
|
||||
var/datum/devilinfo/devil = randomDevilInfo()
|
||||
var/list/messages = list()
|
||||
messages += "Some fun facts about: [devil.truename]"
|
||||
messages += "[lawlorify[LORE][devil.bane]]"
|
||||
messages += "[lawlorify[LORE][devil.obligation]]"
|
||||
messages += "[lawlorify[LORE][devil.ban]]"
|
||||
messages += "[lawlorify[LORE][devil.banish]]"
|
||||
messages += "[GLOB.lawlorify[LORE][devil.bane]]"
|
||||
messages += "[GLOB.lawlorify[LORE][devil.obligation]]"
|
||||
messages += "[GLOB.lawlorify[LORE][devil.ban]]"
|
||||
messages += "[GLOB.lawlorify[LORE][devil.banish]]"
|
||||
return messages
|
||||
|
||||
/obj/item/toy/talking/owl
|
||||
@@ -554,81 +554,6 @@
|
||||
chattering = TRUE
|
||||
phomeme = "griffin"
|
||||
|
||||
/obj/item/toy/talking/skeleton
|
||||
name = "skeleton action figure"
|
||||
desc = "An action figure modeled after 'Oh-cee', the original content \
|
||||
skeleton.\nNot suitable for infants or assistants under 36 months \
|
||||
of age."
|
||||
icon_state = "skeletonprize"
|
||||
attack_verb = list("boned", "dunked on", "worked down to the bone")
|
||||
chattering = TRUE
|
||||
|
||||
var/list/regular_messages = list(
|
||||
"Why was the skeleton such a bad liar? \
|
||||
Because you can see right through him!",
|
||||
"When does a skeleton laugh? When something tickles his funny bone!",
|
||||
"Why couldn't the skeleton win the beauty contest? \
|
||||
Because he had no body!",
|
||||
"What do you call a skeleton in the winter? A numbskull!",
|
||||
"What did the skeleton say before eating? Bone appetit!",
|
||||
"What type of art do skeletons like? Skulltures!",
|
||||
"What instrument do skeletons play? The trom-bone!",
|
||||
"Why are skeletons always so calm? \
|
||||
Because nothing gets under their skin!",
|
||||
"How did the skeleton know it was going to rain? \
|
||||
He could feel it in his bones.",
|
||||
"Why did the skeleton go to the hospital? \
|
||||
To get his ghoul stones removed.",
|
||||
"Why can't skeletons play music in churches? \
|
||||
Because they have no organs.",
|
||||
"There's a skeleton inside everyone! Except slime people I guess...",
|
||||
"The birds are too busy to notice me acting in the shadows!",
|
||||
"Giraffes have the same number of bones in their necks as humans. \
|
||||
You should never trust a giraffe.",
|
||||
"When I meet a dog in the street, I always offer it a bone!",
|
||||
"In corsetry, a bone is one of the rigid parts of a corset that \
|
||||
forms its frame and gives it rigidity.",
|
||||
"A person who plays the trombone is called a trombonist or \
|
||||
trombone player.",
|
||||
"Remember, compromise is for those without backbones!",
|
||||
"If you go up to the captain and say the word 'bone' repeatedly, \
|
||||
eventually he'll brig you.",
|
||||
"Yo ho ho, shiver me bones!",
|
||||
"So what you're saying is, you only love me for my legs?",
|
||||
"You will never again find socks that match!",
|
||||
"BONES! BONES! BONES!",
|
||||
"Bones absorb x-rays, which is why radiation gives you superpowers.",
|
||||
"Oh-cee! The ORIGINAL CONTENT SKELETON. Suitable for ages 36 months \
|
||||
and up.",
|
||||
"I just don't have the heart to judge you.",
|
||||
"I don't have the stomach for this.",
|
||||
"I'm a fighter, not a liver.",
|
||||
"How can I see without eyeballs?",
|
||||
"Ask your parents about 'boning', before you get pregnant.",
|
||||
"Remember, a dog is for life, not just for christmas.")
|
||||
|
||||
/obj/item/toy/talking/skeleton/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is trying to commit suicide with [src].</span>")
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.set_species(/datum/species/skeleton)
|
||||
|
||||
toy_talk(user, "RATTLE ME BONES")
|
||||
|
||||
user.Stun(5)
|
||||
sleep(20)
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/toy/talking/skeleton/generate_messages()
|
||||
return list(pick(regular_messages))
|
||||
|
||||
/obj/item/toy/talking/skeleton/toy_talk(user, message)
|
||||
phomeme = pick("sans", "papyrus")
|
||||
|
||||
span = "danger [phomeme]"
|
||||
..()
|
||||
|
||||
/*
|
||||
|| A Deck of Cards for playing various games of chance ||
|
||||
*/
|
||||
@@ -1381,34 +1306,10 @@
|
||||
to_chat(user, "You name the dummy as \"[doll_name]\"")
|
||||
name = "[initial(name)] - [doll_name]"
|
||||
|
||||
/obj/item/toy/dummy/talk_into(atom/movable/M, message, channel, list/spans)
|
||||
/obj/item/toy/dummy/talk_into(atom/movable/M, message, channel, list/spans, datum/language/language)
|
||||
log_say("[key_name(M)] : through dummy : [message]")
|
||||
say(message)
|
||||
say(message, language)
|
||||
return NOPASS
|
||||
|
||||
/obj/item/toy/dummy/GetVoice()
|
||||
return doll_name
|
||||
|
||||
/*
|
||||
* Ash drake plushie
|
||||
*/
|
||||
|
||||
/obj/item/plush_drake
|
||||
name = "Ash drake plushie"
|
||||
desc = "An adorable stuffed toy that resembles a fierce dragon."
|
||||
icon = 'icons/obj/plush_drake.dmi'
|
||||
icon_state = "plush_drake"
|
||||
item_state = "ash_plush"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
attack_verb = list("burned", "bitten", "swooped")
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
//Attack mob
|
||||
/obj/item/plush_drake/attack(mob/M, mob/user)
|
||||
return ..()
|
||||
|
||||
//Attack self
|
||||
/obj/item/plush_drake/attack_self(mob/user)
|
||||
user << "<span class='notice'>You pet [src]. D'awww.</span>"
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ AI MODULES
|
||||
var/time = time2text(world.realtime,"hh:mm:ss")
|
||||
var/ainame = law_datum.owner ? law_datum.owner.name : "empty AI core"
|
||||
var/aikey = law_datum.owner ? law_datum.owner.ckey : "null"
|
||||
lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) used [src.name] on [ainame]([aikey]).[law2log ? " The law specified [law2log]" : ""]")
|
||||
GLOB.lawchanges.Add("[time] <B>:</B> [user.name]([user.key]) used [src.name] on [ainame]([aikey]).[law2log ? " The law specified [law2log]" : ""]")
|
||||
log_law("[user.key]/[user.name] used [src.name] on [aikey]/([ainame]).[law2log ? " The law specified [law2log]" : ""]")
|
||||
message_admins("[key_name_admin(user)] used [src.name] on [key_name_admin(law_datum.owner)].[law2log ? " The law specified [law2log]" : ""]")
|
||||
|
||||
|
||||
@@ -213,13 +213,13 @@ RCD
|
||||
src.spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
rcd_list += src
|
||||
GLOB.rcd_list += src
|
||||
|
||||
|
||||
/obj/item/weapon/rcd/Destroy()
|
||||
qdel(spark_system)
|
||||
spark_system = null
|
||||
rcd_list -= src
|
||||
GLOB.rcd_list -= src
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user, params)
|
||||
|
||||
@@ -31,7 +31,7 @@ RPD
|
||||
|
||||
/datum/pipe_info/New(pid,direction,dt)
|
||||
src.id=pid
|
||||
src.icon_state=pipeID2State["[pid]"]
|
||||
src.icon_state=GLOB.pipeID2State["[pid]"]
|
||||
src.dir = direction
|
||||
src.dirtype=dt
|
||||
|
||||
@@ -48,7 +48,7 @@ RPD
|
||||
/datum/pipe_info/meter/Render(dispenser,label)
|
||||
return "<li><a href='?src=\ref[dispenser];makemeter=1;type=[dirtype]'>[label]</a></li>" //hardcoding is no
|
||||
|
||||
var/global/list/disposalpipeID2State=list(
|
||||
GLOBAL_LIST_INIT(disposalpipeID2State, list(
|
||||
"pipe-s",
|
||||
"pipe-c",
|
||||
"pipe-j1",
|
||||
@@ -59,8 +59,7 @@ var/global/list/disposalpipeID2State=list(
|
||||
"outlet",
|
||||
"intake",
|
||||
"pipe-j1s",
|
||||
"pipe-j2s"
|
||||
)
|
||||
"pipe-j2s"))
|
||||
|
||||
/datum/pipe_info/disposal
|
||||
categoryId = CATEGORY_DISPOSALS
|
||||
@@ -69,7 +68,7 @@ var/global/list/disposalpipeID2State=list(
|
||||
|
||||
/datum/pipe_info/disposal/New(var/pid,var/dt)
|
||||
src.id=pid
|
||||
src.icon_state=disposalpipeID2State[pid+1]
|
||||
src.icon_state=GLOB.disposalpipeID2State[pid+1]
|
||||
src.dir = SOUTH
|
||||
src.dirtype=dt
|
||||
if(pid<DISP_END_BIN || pid>DISP_END_CHUTE)
|
||||
@@ -79,7 +78,7 @@ var/global/list/disposalpipeID2State=list(
|
||||
return "<li><a href='?src=\ref[dispenser];dmake=[id];type=[dirtype]'>[label]</a></li>" //avoid hardcoding.
|
||||
|
||||
//find these defines in code\game\machinery\pipe\consruction.dm
|
||||
var/global/list/RPD_recipes=list(
|
||||
GLOBAL_LIST_INIT(RPD_recipes, list(
|
||||
"Regular Pipes" = list(
|
||||
"Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 1, PIPE_BENDABLE),
|
||||
//"Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE, 5, PIPE_BENT),
|
||||
@@ -119,7 +118,7 @@ var/global/list/RPD_recipes=list(
|
||||
"Chute" = new /datum/pipe_info/disposal(DISP_END_CHUTE, PIPE_UNARY),
|
||||
"Sort Junction" = new /datum/pipe_info/disposal(DISP_SORTJUNCTION, PIPE_TRINARY),
|
||||
)
|
||||
)
|
||||
))
|
||||
/obj/item/weapon/pipe_dispenser
|
||||
name = "Rapid Piping Device (RPD)"
|
||||
desc = "A device used to rapidly pipe things."
|
||||
@@ -205,8 +204,8 @@ var/global/list/RPD_recipes=list(
|
||||
|
||||
var/icon/preview=null
|
||||
var/datbuild = ""
|
||||
for(var/category in RPD_recipes)
|
||||
var/list/cat=RPD_recipes[category]
|
||||
for(var/category in GLOB.RPD_recipes)
|
||||
var/list/cat = GLOB.RPD_recipes[category]
|
||||
for(var/label in cat)
|
||||
var/datum/pipe_info/I = cat[label]
|
||||
var/found=0
|
||||
|
||||
@@ -131,11 +131,11 @@ update_label("John Doe", "Clowny")
|
||||
|
||||
/obj/item/weapon/card/id/syndicate
|
||||
name = "agent card"
|
||||
access = list(access_maint_tunnels, access_syndicate)
|
||||
access = list(GLOB.access_maint_tunnels, GLOB.access_syndicate)
|
||||
origin_tech = "syndicate=1"
|
||||
var/anyone = FALSE //Can anyone forge the ID or just syndicate?
|
||||
|
||||
/obj/item/weapon/card/id/syndicate/New()
|
||||
/obj/item/weapon/card/id/syndicate/Initialize()
|
||||
..()
|
||||
var/datum/action/item_action/chameleon/change/chameleon_action = new(src)
|
||||
chameleon_action.chameleon_type = /obj/item/weapon/card/id
|
||||
@@ -181,7 +181,7 @@ update_label("John Doe", "Clowny")
|
||||
desc = "An ID straight from the Syndicate."
|
||||
registered_name = "Syndicate"
|
||||
assignment = "Syndicate Overlord"
|
||||
access = list(access_syndicate)
|
||||
access = list(GLOB.access_syndicate)
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare
|
||||
name = "captain's spare ID"
|
||||
@@ -191,7 +191,7 @@ update_label("John Doe", "Clowny")
|
||||
registered_name = "Captain"
|
||||
assignment = "Captain"
|
||||
|
||||
/obj/item/weapon/card/id/captains_spare/New()
|
||||
/obj/item/weapon/card/id/captains_spare/Initialize()
|
||||
var/datum/job/captain/J = new/datum/job/captain
|
||||
access = J.get_access()
|
||||
..()
|
||||
@@ -203,7 +203,7 @@ update_label("John Doe", "Clowny")
|
||||
registered_name = "Central Command"
|
||||
assignment = "General"
|
||||
|
||||
/obj/item/weapon/card/id/centcom/New()
|
||||
/obj/item/weapon/card/id/centcom/Initialize()
|
||||
access = get_all_centcom_access()
|
||||
..()
|
||||
|
||||
@@ -214,29 +214,33 @@ update_label("John Doe", "Clowny")
|
||||
registered_name = "Emergency Response Team Commander"
|
||||
assignment = "Emergency Response Team Commander"
|
||||
|
||||
/obj/item/weapon/card/id/ert/New()
|
||||
access = get_all_accesses()+get_ert_access("commander")-access_change_ids
|
||||
/obj/item/weapon/card/id/ert/Initialize()
|
||||
access = get_all_accesses()+get_ert_access("commander")-GLOB.access_change_ids
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/ert/Security
|
||||
registered_name = "Security Response Officer"
|
||||
assignment = "Security Response Officer"
|
||||
|
||||
/obj/item/weapon/card/id/ert/Security/New()
|
||||
access = get_all_accesses()+get_ert_access("sec")-access_change_ids
|
||||
/obj/item/weapon/card/id/ert/Security/Initialize()
|
||||
access = get_all_accesses()+get_ert_access("sec")-GLOB.access_change_ids
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/ert/Engineer
|
||||
registered_name = "Engineer Response Officer"
|
||||
assignment = "Engineer Response Officer"
|
||||
|
||||
/obj/item/weapon/card/id/ert/Engineer/New()
|
||||
access = get_all_accesses()+get_ert_access("eng")-access_change_ids
|
||||
/obj/item/weapon/card/id/ert/Engineer/Initialize()
|
||||
access = get_all_accesses()+get_ert_access("eng")-GLOB.access_change_ids
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/ert/Medical
|
||||
registered_name = "Medical Response Officer"
|
||||
assignment = "Medical Response Officer"
|
||||
|
||||
/obj/item/weapon/card/id/ert/Medical/New()
|
||||
access = get_all_accesses()+get_ert_access("med")-access_change_ids
|
||||
/obj/item/weapon/card/id/ert/Medical/Initialize()
|
||||
access = get_all_accesses()+get_ert_access("med")-GLOB.access_change_ids
|
||||
..()
|
||||
|
||||
/obj/item/weapon/card/id/prisoner
|
||||
name = "prisoner ID card"
|
||||
@@ -281,18 +285,18 @@ update_label("John Doe", "Clowny")
|
||||
|
||||
/obj/item/weapon/card/id/mining
|
||||
name = "mining ID"
|
||||
access = list(access_mining, access_mining_station, access_mineral_storeroom)
|
||||
access = list(GLOB.access_mining, GLOB.access_mining_station, GLOB.access_mineral_storeroom)
|
||||
|
||||
/obj/item/weapon/card/id/away
|
||||
name = "a perfectly generic identification card"
|
||||
desc = "A perfectly generic identification card. Looks like it could use some flavor."
|
||||
access = list(access_away_general)
|
||||
access = list(GLOB.access_away_general)
|
||||
|
||||
/obj/item/weapon/card/id/away/hotel
|
||||
name = "Staff ID"
|
||||
desc = "A staff ID used to access the hotel's doors."
|
||||
access = list(access_away_general, access_away_maint)
|
||||
access = list(GLOB.access_away_general, GLOB.access_away_maint)
|
||||
|
||||
/obj/item/weapon/card/id/away/hotel/securty
|
||||
name = "Officer ID"
|
||||
access = list(access_away_general, access_away_maint, access_away_sec)
|
||||
access = list(GLOB.access_away_general, GLOB.access_away_maint, GLOB.access_away_sec)
|
||||
|
||||
@@ -104,24 +104,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
item_state = "cigoff"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
body_parts_covered = null
|
||||
var/lit = 0
|
||||
var/lit = FALSE
|
||||
var/starts_lit = FALSE
|
||||
var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
var/icon_off = "cigoff"
|
||||
var/type_butt = /obj/item/weapon/cigbutt
|
||||
var/lastHolder = null
|
||||
var/smoketime = 300
|
||||
var/chem_volume = 30
|
||||
var/list/list_reagents = list("nicotine" = 15)
|
||||
heat = 1000
|
||||
|
||||
/obj/item/clothing/mask/cigarette/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.</span>")
|
||||
return (TOXLOSS|OXYLOSS)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/New()
|
||||
/obj/item/clothing/mask/cigarette/Initialize()
|
||||
..()
|
||||
create_reagents(chem_volume)
|
||||
reagents.set_reacting(FALSE) // so it doesn't react until you light it
|
||||
reagents.add_reagent("nicotine", 15)
|
||||
if(list_reagents)
|
||||
reagents.add_reagent_list(list_reagents)
|
||||
if(starts_lit)
|
||||
light()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
@@ -245,6 +250,38 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/cigarette/is_hot()
|
||||
return lit * heat
|
||||
|
||||
// Cigarette brands.
|
||||
|
||||
/obj/item/clothing/mask/cigarette/space_cigarette
|
||||
desc = "A Space Cigarette brand cigarette."
|
||||
|
||||
/obj/item/clothing/mask/cigarette/dromedary
|
||||
desc = "A DromedaryCo brand cigarette."
|
||||
|
||||
/obj/item/clothing/mask/cigarette/uplift
|
||||
desc = "An Uplift Smooth brand cigarette."
|
||||
list_reagents = list("nicotine" = 7.5, "menthol" = 7.5)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/robust
|
||||
desc = "A Robust brand cigarette."
|
||||
|
||||
/obj/item/clothing/mask/cigarette/robustgold
|
||||
desc = "A Robust Gold brand cigarette."
|
||||
list_reagents = list("nicotine" = 15, "gold" = 1)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/carp
|
||||
desc = "A Carp Classic brand cigarette."
|
||||
|
||||
/obj/item/clothing/mask/cigarette/syndicate
|
||||
desc = "An unknown brand cigarette."
|
||||
list_reagents = list("nicotine" = 15, "omnizine" = 15)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/shadyjims
|
||||
desc = "A Shady Jim's Super Slims cigarette."
|
||||
list_reagents = list("nicotine" = 15, "lipolicide" = 4, "ammonia" = 2, "plantbgone" = 1, "toxin" = 1.5)
|
||||
|
||||
// Rollies.
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie
|
||||
name = "rollie"
|
||||
desc = "A roll of dried plant matter wrapped in thin paper."
|
||||
@@ -262,11 +299,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie/trippy/New()
|
||||
..()
|
||||
reagents.add_reagent("mushroomhallucinogen", 50)
|
||||
light()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/rollie/trippy
|
||||
list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35)
|
||||
starts_lit = TRUE
|
||||
|
||||
/obj/item/weapon/cigbutt/roach
|
||||
name = "roach"
|
||||
@@ -338,9 +373,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
icon_off = "pipeoff"
|
||||
smoketime = 0
|
||||
chem_volume = 100
|
||||
list_reagents = null
|
||||
var/packeditem = 0
|
||||
|
||||
/obj/item/clothing/mask/cigarette/pipe/New()
|
||||
/obj/item/clothing/mask/cigarette/pipe/Initialize()
|
||||
..()
|
||||
name = "empty [initial(name)]"
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/prepare()
|
||||
for(var/mut_key in add_mutations_static)
|
||||
add_mutations.Add(mutations_list[mut_key])
|
||||
add_mutations.Add(GLOB.mutations_list[mut_key])
|
||||
for(var/mut_key in remove_mutations_static)
|
||||
remove_mutations.Add(mutations_list[mut_key])
|
||||
remove_mutations.Add(GLOB.mutations_list[mut_key])
|
||||
|
||||
/obj/item/weapon/dnainjector/proc/inject(mob/living/carbon/M, mob/user)
|
||||
prepare()
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
forceMove(null)
|
||||
|
||||
var/message = "[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [timer] second fuse"
|
||||
bombers += message
|
||||
GLOB.bombers += message
|
||||
message_admins(message,0,1)
|
||||
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(target)] with [timer] second fuse")
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/proc/bang(turf/T , mob/living/M)
|
||||
if(M.stat == DEAD) //They're dead!
|
||||
return
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
playsound(loc, 'sound/weapons/flashbang.ogg', 100, 1)
|
||||
var/distance = max(0,get_dist(get_turf(src),T))
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
var/turf/bombturf = get_turf(src)
|
||||
var/area/A = get_area(bombturf)
|
||||
var/message = "[ADMIN_LOOKUPFLW(user)]) has primed a [name] for detonation at [ADMIN_COORDJMP(bombturf)]"
|
||||
bombers += message
|
||||
GLOB.bombers += message
|
||||
message_admins(message)
|
||||
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] [COORD(bombturf)].")
|
||||
if(iscarbon(user))
|
||||
|
||||
@@ -15,37 +15,31 @@
|
||||
return (BRUTELOSS|FIRELOSS)
|
||||
|
||||
/obj/item/weapon/nullrod/attack_self(mob/user)
|
||||
if(reskinned)
|
||||
return
|
||||
if(user.mind && (user.mind.isholy))
|
||||
if(user.mind && (user.mind.isholy) && !reskinned)
|
||||
reskin_holy_weapon(user)
|
||||
|
||||
/obj/item/weapon/nullrod/proc/reskin_holy_weapon(mob/M)
|
||||
if(SSreligion.holy_weapon_type)
|
||||
return
|
||||
var/obj/item/weapon/nullrod/holy_weapon
|
||||
var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
|
||||
var/list/display_names = list()
|
||||
for(var/V in holy_weapons_list)
|
||||
var/atom/A = V
|
||||
display_names += initial(A.name)
|
||||
|
||||
if(SSreligion.holy_weapon)
|
||||
holy_weapon = new SSreligion.holy_weapon
|
||||
to_chat(M, "<span class='notice'>The null rod suddenly morphs into your religions already chosen holy weapon.</span>")
|
||||
else
|
||||
var/list/holy_weapons_list = typesof(/obj/item/weapon/nullrod)
|
||||
var/list/display_names = list()
|
||||
for(var/V in holy_weapons_list)
|
||||
var/atom/A = V
|
||||
display_names += initial(A.name)
|
||||
var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names
|
||||
if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
|
||||
return
|
||||
|
||||
var/choice = input(M,"What theme would you like for your holy weapon?","Holy Weapon Theme") as null|anything in display_names
|
||||
if(!src || !choice || M.stat || !in_range(M, src) || M.restrained() || !M.canmove || reskinned)
|
||||
return
|
||||
var/index = display_names.Find(choice)
|
||||
var/A = holy_weapons_list[index]
|
||||
|
||||
var/index = display_names.Find(choice)
|
||||
var/A = holy_weapons_list[index]
|
||||
holy_weapon = new A
|
||||
|
||||
holy_weapon = new A
|
||||
|
||||
SSreligion.holy_weapon = holy_weapon.type
|
||||
|
||||
feedback_set_details("chaplain_weapon","[choice]")
|
||||
SSreligion.holy_weapon_type = holy_weapon.type
|
||||
|
||||
feedback_set_details("chaplain_weapon","[choice]")
|
||||
|
||||
if(holy_weapon)
|
||||
holy_weapon.reskinned = TRUE
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
|
||||
var/obj/machinery/abductor/console/console
|
||||
for(var/obj/machinery/abductor/console/c in machines)
|
||||
for(var/obj/machinery/abductor/console/c in GLOB.machines)
|
||||
if(c.team == team)
|
||||
console = c
|
||||
break
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
/obj/item/weapon/implant/chem/New()
|
||||
..()
|
||||
create_reagents(50)
|
||||
tracked_chem_implants += src
|
||||
GLOB.tracked_chem_implants += src
|
||||
|
||||
/obj/item/weapon/implant/chem/Destroy()
|
||||
. = ..()
|
||||
tracked_chem_implants -= src
|
||||
GLOB.tracked_chem_implants -= src
|
||||
|
||||
/obj/item/weapon/implant/chem/trigger(emote, mob/source)
|
||||
if(emote == "deathgasp")
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
/obj/item/weapon/implantcase/chem/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W,/obj/item/weapon/reagent_containers/syringe) && imp)
|
||||
W.afterattack(imp, user, params)
|
||||
W.afterattack(imp, user, TRUE, params)
|
||||
return TRUE
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -3,10 +3,14 @@
|
||||
desc = "And boom goes the weasel."
|
||||
icon_state = "explosive"
|
||||
origin_tech = "materials=2;combat=3;biotech=4;syndicate=4"
|
||||
actions_types = list(/datum/action/item_action/explosive_implant)
|
||||
// Explosive implant action is always availible.
|
||||
var/weak = 2
|
||||
var/medium = 0.8
|
||||
var/heavy = 0.4
|
||||
var/delay = 7
|
||||
var/popup = FALSE // is the DOUWANNABLOWUP window open?
|
||||
var/active = FALSE
|
||||
|
||||
/obj/item/weapon/implant/explosive/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
@@ -25,14 +29,19 @@
|
||||
activate("death")
|
||||
|
||||
/obj/item/weapon/implant/explosive/activate(cause)
|
||||
if(!cause || !imp_in)
|
||||
return 0
|
||||
if(cause == "action_button" && alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No") != "Yes")
|
||||
if(!cause || !imp_in || active)
|
||||
return 0
|
||||
if(cause == "action_button" || !popup)
|
||||
popup = TRUE
|
||||
var/response = alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to explode!", "[name] Confirmation", "Yes", "No")
|
||||
popup = FALSE
|
||||
if(response == "No")
|
||||
return 0
|
||||
heavy = round(heavy)
|
||||
medium = round(medium)
|
||||
weak = round(weak)
|
||||
to_chat(imp_in, "<span class='notice'>You activate your [name].</span>")
|
||||
active = TRUE
|
||||
var/turf/boomturf = get_turf(imp_in)
|
||||
var/area/A = get_area(boomturf)
|
||||
message_admins("[key_name_admin(imp_in)]<A HREF='?_src_=holder;adminmoreinfo=\ref[imp_in]'>?</A> (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[imp_in]'>FLW</A>) has activated their [name] at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[imp_in.x];Y=[imp_in.y];Z=[imp_in.z]'>[A.name] (JMP)</a>.")
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
return 0
|
||||
|
||||
var/success
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
if(ticker.mode.remove_gangster(target.mind,0,1))
|
||||
if(target.mind in SSticker.mode.get_gangsters())
|
||||
if(SSticker.mode.remove_gangster(target.mind,0,1))
|
||||
success = 1 //Was not a gang boss, convert as usual
|
||||
else
|
||||
success = 1
|
||||
|
||||
@@ -19,23 +19,23 @@
|
||||
|
||||
/obj/item/weapon/implant/mindshield/implant(mob/living/target, mob/user, silent = 0)
|
||||
if(..())
|
||||
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())))
|
||||
if((target.mind in (SSticker.mode.head_revolutionaries | SSticker.mode.get_gang_bosses())))
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return 0
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
ticker.mode.remove_gangster(target.mind)
|
||||
if(target.mind in SSticker.mode.get_gangsters())
|
||||
SSticker.mode.remove_gangster(target.mind)
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return 0
|
||||
if(target.mind in ticker.mode.revolutionaries)
|
||||
ticker.mode.remove_revolutionary(target.mind)
|
||||
if(target.mind in SSticker.mode.revolutionaries)
|
||||
SSticker.mode.remove_revolutionary(target.mind)
|
||||
if(!silent)
|
||||
if(target.mind in ticker.mode.cult)
|
||||
if(target.mind in SSticker.mode.cult)
|
||||
to_chat(target, "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
else
|
||||
to_chat(target, "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
/obj/item/weapon/implant/tracking/New()
|
||||
..()
|
||||
tracked_implants += src
|
||||
GLOB.tracked_implants += src
|
||||
|
||||
/obj/item/weapon/implant/tracking/Destroy()
|
||||
. = ..()
|
||||
tracked_implants -= src
|
||||
GLOB.tracked_implants -= src
|
||||
|
||||
/obj/item/weapon/implanter/tracking
|
||||
imp_type = /obj/item/weapon/implant/tracking
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
|
||||
/obj/machinery/implantchair/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = notcontained_state)
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
|
||||
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
|
||||
@@ -238,9 +238,6 @@
|
||||
icon_state_on = "cutlass1"
|
||||
light_color = "#ff0000"
|
||||
|
||||
/obj/item/weapon/melee/energy/sword/pirate/New()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/energy/blade
|
||||
name = "energy blade"
|
||||
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
|
||||
|
||||
@@ -50,10 +50,10 @@
|
||||
|
||||
var/A
|
||||
|
||||
A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in teleportlocs
|
||||
A = input(user, "Area to jump to", "BOOYEA", A) as null|anything in GLOB.teleportlocs
|
||||
if(!src || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !A || !uses)
|
||||
return
|
||||
var/area/thearea = teleportlocs[A]
|
||||
var/area/thearea = GLOB.teleportlocs[A]
|
||||
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(2, user.loc)
|
||||
|
||||
@@ -198,9 +198,8 @@
|
||||
icon_state = "satchel"
|
||||
resistance_flags = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/leather/withwallet/New()
|
||||
..()
|
||||
new /obj/item/weapon/storage/wallet/random( src )
|
||||
/obj/item/weapon/storage/backpack/satchel/leather/withwallet/PopulateContents()
|
||||
new /obj/item/weapon/storage/wallet/random(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/eng
|
||||
name = "industrial satchel"
|
||||
@@ -284,11 +283,13 @@
|
||||
anchored = 0
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/New()
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/Initialize(mapload)
|
||||
..()
|
||||
SSpersistence.new_secret_satchels += src
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/PopulateContents()
|
||||
new /obj/item/stack/tile/plasteel(src)
|
||||
new /obj/item/weapon/crowbar(src)
|
||||
SSpersistence.new_secret_satchels += src
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/Destroy()
|
||||
SSpersistence.new_secret_satchels -= src
|
||||
@@ -299,7 +300,7 @@
|
||||
var/list/reward_all_of_these = list() //use paths!
|
||||
var/revealed = 0
|
||||
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/secret/New()
|
||||
/obj/item/weapon/storage/backpack/satchel/flat/secret/Initialize()
|
||||
..()
|
||||
|
||||
if(isfloorturf(loc) && !istype(loc,/turf/open/floor/plating/))
|
||||
@@ -356,9 +357,7 @@
|
||||
item_state = "duffle-drone"
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/drone/New()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/drone/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
@@ -373,8 +372,7 @@
|
||||
icon_state = "duffle-clown"
|
||||
item_state = "duffle-clown"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/clown/cream_pie/New()
|
||||
. = ..()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/clown/cream_pie/PopulateContents()
|
||||
for(var/i in 1 to 10)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/pie/cream(src)
|
||||
|
||||
@@ -399,9 +397,7 @@
|
||||
icon_state = "duffle-syndiemed"
|
||||
item_state = "duffle-syndiemed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/surgery/PopulateContents()
|
||||
new /obj/item/weapon/scalpel(src)
|
||||
new /obj/item/weapon/hemostat(src)
|
||||
new /obj/item/weapon/retractor(src)
|
||||
@@ -412,7 +408,6 @@
|
||||
new /obj/item/clothing/suit/straight_jacket(src)
|
||||
new /obj/item/clothing/mask/muzzle(src)
|
||||
new /obj/item/device/mmi/syndie(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo
|
||||
name = "ammunition dufflebag"
|
||||
@@ -423,80 +418,60 @@
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/shotgun
|
||||
desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/shotgun/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/shotgun/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/slug(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/smg
|
||||
desc = "A large dufflebag, packed to the brim with C20r magazines."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/smg/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/smg/PopulateContents()
|
||||
for(var/i in 1 to 9)
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/c20rbundle
|
||||
desc = "A large dufflebag containing a C20r, some magazines, and a cheap looking suppressor."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/c20rbundle/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/c20rbundle/PopulateContents()
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
new /obj/item/ammo_box/magazine/smgm45(src)
|
||||
new /obj/item/weapon/gun/ballistic/automatic/c20r(src)
|
||||
new /obj/item/weapon/suppressor/specialoffer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/bulldogbundle
|
||||
desc = "A large dufflebag containing a Bulldog, several drums, and a collapsed hardsuit."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/bulldogbundle/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/bulldogbundle/PopulateContents()
|
||||
new /obj/item/ammo_box/magazine/m12g(src)
|
||||
new /obj/item/weapon/gun/ballistic/automatic/shotgun/bulldog(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
||||
new /obj/item/clothing/glasses/thermal/syndi(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle
|
||||
desc = "A large dufflebag containing a medical equipment, a Donksoft machine gun, a big jumbo box of darts, and a knock-off pair of magboots."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle/PopulateContents()
|
||||
new /obj/item/clothing/shoes/magboots/syndie(src)
|
||||
new /obj/item/weapon/storage/firstaid/tactical(src)
|
||||
new /obj/item/weapon/gun/ballistic/automatic/l6_saw/toy(src)
|
||||
new /obj/item/ammo_box/foambox/riot(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle
|
||||
desc = "A large dufflebag containing a medical equipment, a Donksoft machine gun, a big jumbo box of darts, and a knock-off pair of magboots."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/medicalbundle/PopulateContents()
|
||||
new /obj/item/clothing/shoes/magboots/syndie(src)
|
||||
new /obj/item/weapon/storage/firstaid/tactical(src)
|
||||
new /obj/item/weapon/gun/ballistic/automatic/l6_saw/toy(src)
|
||||
new /obj/item/ammo_box/foambox/riot(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/bioterrorbundle
|
||||
desc = "A large dufflebag containing a deadly chemicals, a chemical spray, chemical grenade, a Donksoft assault rifle, riot grade darts, a minature syringe gun, and a box of syringes"
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/bioterrorbundle/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/med/bioterrorbundle/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/spray/chemsprayer/bioterror(src)
|
||||
new /obj/item/weapon/storage/box/syndie_kit/chemical(src)
|
||||
new /obj/item/weapon/gun/syringe/syndicate(src)
|
||||
@@ -504,26 +479,19 @@
|
||||
new /obj/item/weapon/storage/box/syringes(src)
|
||||
new /obj/item/ammo_box/foambox/riot(src)
|
||||
new /obj/item/weapon/grenade/chem_grenade/bioterrorfoam(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/c4/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/c4/PopulateContents()
|
||||
for(var/i in 1 to 10)
|
||||
new /obj/item/weapon/grenade/plastic/c4(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/x4/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/x4/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/grenade/plastic/x4(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/firestarter
|
||||
desc = "A large dufflebag containing New Russian pyro backpack sprayer, a pistol, a pipebomb, fireproof hardsuit, ammo, and other equipment."
|
||||
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/firestarter/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/backpack/dufflebag/syndie/firestarter/PopulateContents()
|
||||
new /obj/item/clothing/under/syndicate/soviet(src)
|
||||
new /obj/item/weapon/watertank/operator(src)
|
||||
new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src)
|
||||
|
||||
@@ -151,11 +151,6 @@
|
||||
|
||||
allow_quick_empty = 1 // this function is superceded
|
||||
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher/New()
|
||||
..()
|
||||
//verbs -= /obj/item/weapon/storage/verb/quick_empty
|
||||
//verbs += /obj/item/weapon/storage/bag/sheetsnatcher/quick_empty
|
||||
|
||||
/obj/item/weapon/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W, stop_messages = 0)
|
||||
if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/mineral/wood))
|
||||
if(!stop_messages)
|
||||
|
||||
@@ -42,8 +42,7 @@
|
||||
icon_state = "utilitybelt_ce"
|
||||
item_state = "utility_ce"
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/chief/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/utility/chief/full/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver/power(src)
|
||||
new /obj/item/weapon/crowbar/power(src)
|
||||
new /obj/item/weapon/weldingtool/experimental(src)//This can be changed if this is too much
|
||||
@@ -54,8 +53,7 @@
|
||||
//much roomier now that we've managed to remove two tools
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/utility/full/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
@@ -65,8 +63,7 @@
|
||||
new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange"))
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/atmostech/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/utility/atmostech/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
@@ -153,8 +150,7 @@
|
||||
/obj/item/weapon/restraints/legcuffs/bola
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/security/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/security/full/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/spray/pepper(src)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
@@ -235,8 +231,7 @@
|
||||
/obj/item/device/soulstone
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/soulstone/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/soulstone/full/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/device/soulstone(src)
|
||||
|
||||
@@ -265,8 +260,7 @@
|
||||
icon_state = "belt"
|
||||
item_state = "security"
|
||||
|
||||
/obj/item/weapon/storage/belt/military/abductor/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/military/abductor/full/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver/abductor(src)
|
||||
new /obj/item/weapon/wrench/abductor(src)
|
||||
new /obj/item/weapon/weldingtool/abductor(src)
|
||||
@@ -304,8 +298,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov,
|
||||
/obj/item/weapon/c4,
|
||||
)
|
||||
/obj/item/weapon/storage/belt/grenade/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/grenade/full/PopulateContents()
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
new /obj/item/weapon/grenade/smokebomb(src)
|
||||
@@ -345,8 +338,7 @@
|
||||
/obj/item/weapon/gun/magic/wand
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/wands/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/wands/full/PopulateContents()
|
||||
new /obj/item/weapon/gun/magic/wand/death(src)
|
||||
new /obj/item/weapon/gun/magic/wand/resurrection(src)
|
||||
new /obj/item/weapon/gun/magic/wand/polymorph(src)
|
||||
@@ -400,8 +392,7 @@
|
||||
)
|
||||
alternate_worn_layer = UNDER_SUIT_LAYER
|
||||
|
||||
/obj/item/weapon/storage/belt/holster/full/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/holster/full/PopulateContents()
|
||||
new /obj/item/weapon/gun/ballistic/revolver/detective(src)
|
||||
new /obj/item/ammo_box/c38(src)
|
||||
new /obj/item/ammo_box/c38(src)
|
||||
@@ -505,7 +496,6 @@
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/belt/sabre/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/belt/sabre/PopulateContents()
|
||||
new /obj/item/weapon/melee/sabre(src)
|
||||
update_icon()
|
||||
|
||||
@@ -11,17 +11,18 @@
|
||||
var/title = "book"
|
||||
|
||||
/obj/item/weapon/storage/book/attack_self(mob/user)
|
||||
to_chat(user, "<span class='notice'>The pages of [title] have been cut out!</span>")
|
||||
to_chat(user, "<span class='notice'>The pages of [title] have been cut out!</span>")
|
||||
|
||||
var/global/list/biblenames = list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon")
|
||||
var/global/list/biblestates = list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon")
|
||||
var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", "bible", "bible", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon")
|
||||
GLOBAL_LIST_INIT(biblenames, list("Bible", "Quran", "Scrapbook", "Burning Bible", "Clown Bible", "Banana Bible", "Creeper Bible", "White Bible", "Holy Light", "The God Delusion", "Tome", "The King in Yellow", "Ithaqua", "Scientology", "Melted Bible", "Necronomicon"))
|
||||
GLOBAL_LIST_INIT(biblestates, list("bible", "koran", "scrapbook", "burning", "honk1", "honk2", "creeper", "white", "holylight", "atheist", "tome", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon"))
|
||||
GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", "bible", "bible", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "syringe_kit", "kingyellow", "ithaqua", "scientology", "melted", "necronomicon"))
|
||||
|
||||
/obj/item/weapon/storage/book/bible
|
||||
name = "bible"
|
||||
desc = "Apply to head repeatedly."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state ="bible"
|
||||
icon_state = "bible"
|
||||
item_state = "bible"
|
||||
var/mob/affecting = null
|
||||
var/deity_name = "Christ"
|
||||
|
||||
@@ -33,12 +34,11 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible",
|
||||
if(!istype(H))
|
||||
return
|
||||
// If H is the Chaplain, we can set the icon_state of the bible (but only once!)
|
||||
if(!SSreligion.Bible_icon_state && H.job == "Chaplain")
|
||||
if(!SSreligion.bible_icon_state && H.job == "Chaplain")
|
||||
var/dat = "<html><head><title>Pick Bible Style</title></head><body><center><h2>Pick a bible style</h2></center><table>"
|
||||
var/i
|
||||
for(i = 1, i < biblestates.len, i++)
|
||||
var/icon/bibleicon = icon('icons/obj/storage.dmi', biblestates[i])
|
||||
var/nicename = biblenames[i]
|
||||
for(var/i in 1 to GLOB.biblestates.len)
|
||||
var/icon/bibleicon = icon('icons/obj/storage.dmi', GLOB.biblestates[i])
|
||||
var/nicename = GLOB.biblenames[i]
|
||||
H << browse_rsc(bibleicon, nicename)
|
||||
dat += {"<tr><td><img src="[nicename]"></td><td><a href="?src=\ref[src];seticon=[i]">[nicename]</a></td></tr>"}
|
||||
dat += "</table></body></html>"
|
||||
@@ -47,20 +47,20 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible",
|
||||
/obj/item/weapon/storage/book/bible/Topic(href, href_list)
|
||||
if(!usr.canUseTopic(src))
|
||||
return
|
||||
if(href_list["seticon"] && ticker && !SSreligion.Bible_icon_state)
|
||||
if(href_list["seticon"] && SSreligion && !SSreligion.bible_icon_state)
|
||||
var/iconi = text2num(href_list["seticon"])
|
||||
var/biblename = biblenames[iconi]
|
||||
var/biblename = GLOB.biblenames[iconi]
|
||||
var/obj/item/weapon/storage/book/bible/B = locate(href_list["src"])
|
||||
B.icon_state = biblestates[iconi]
|
||||
B.item_state = bibleitemstates[iconi]
|
||||
B.icon_state = GLOB.biblestates[iconi]
|
||||
B.item_state = GLOB.bibleitemstates[iconi]
|
||||
|
||||
if(B.icon_state == "honk1" || B.icon_state == "honk2")
|
||||
var/mob/living/carbon/human/H = usr
|
||||
H.dna.add_mutation(CLOWNMUT)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
|
||||
SSreligion.Bible_icon_state = B.icon_state
|
||||
SSreligion.Bible_item_state = B.item_state
|
||||
SSreligion.bible_icon_state = B.icon_state
|
||||
SSreligion.bible_item_state = B.item_state
|
||||
|
||||
feedback_set_details("religion_book","[biblename]")
|
||||
usr << browse(null, "window=editicon")
|
||||
@@ -154,6 +154,5 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible",
|
||||
/obj/item/weapon/storage/book/bible/booze
|
||||
desc = "To be applied to the head repeatedly."
|
||||
|
||||
/obj/item/weapon/storage/book/bible/booze/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/book/bible/booze/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src)
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
var/foldable = /obj/item/stack/sheet/cardboard
|
||||
var/illustration = "writing"
|
||||
|
||||
/obj/item/weapon/storage/box/Initialize()
|
||||
. = ..()
|
||||
/obj/item/weapon/storage/box/Initialize(mapload)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/storage/box/update_icon()
|
||||
@@ -72,8 +72,7 @@
|
||||
name = "diskette box"
|
||||
illustration = "disk_kit"
|
||||
|
||||
/obj/item/weapon/storage/box/disks/Initialize()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/disks/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/disk/data(src)
|
||||
|
||||
@@ -82,24 +81,21 @@
|
||||
name = "plant data disks box"
|
||||
illustration = "disk_kit"
|
||||
|
||||
/obj/item/weapon/storage/box/disks_plantgene/Initialize()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/disks_plantgene/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/disk/plantgene(src)
|
||||
|
||||
// Ordinary survival box
|
||||
/obj/item/weapon/storage/box/survival/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/survival/PopulateContents()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/weapon/storage/box/survival/radio/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/survival/radio/PopulateContents()
|
||||
..() // we want the survival stuff too.
|
||||
new /obj/item/device/radio/off(src)
|
||||
|
||||
/obj/item/weapon/storage/box/survival_mining/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/survival_mining/PopulateContents()
|
||||
new /obj/item/clothing/mask/gas/explorer(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
@@ -107,31 +103,28 @@
|
||||
|
||||
|
||||
// Engineer survival box
|
||||
/obj/item/weapon/storage/box/engineer/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/engineer/PopulateContents()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/weapon/storage/box/engineer/radio/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/engineer/radio/PopulateContents()
|
||||
..() // we want the regular items too.
|
||||
new /obj/item/device/radio/off(src)
|
||||
|
||||
// Syndie survival box
|
||||
/obj/item/weapon/storage/box/syndie/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie/PopulateContents()
|
||||
new /obj/item/clothing/mask/gas/syndicate(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src)
|
||||
|
||||
// Security survival box
|
||||
/obj/item/weapon/storage/box/security/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/security/PopulateContents()
|
||||
new /obj/item/clothing/mask/gas/sechailer(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/weapon/storage/box/security/radio/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/security/radio/PopulateContents()
|
||||
..() // we want the regular stuff too
|
||||
new /obj/item/device/radio/off(src)
|
||||
|
||||
/obj/item/weapon/storage/box/gloves
|
||||
@@ -139,8 +132,7 @@
|
||||
desc = "Contains sterile latex gloves."
|
||||
illustration = "latex"
|
||||
|
||||
/obj/item/weapon/storage/box/gloves/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/gloves/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/clothing/gloves/color/latex(src)
|
||||
|
||||
@@ -149,8 +141,7 @@
|
||||
desc = "This box contains sterile medical masks."
|
||||
illustration = "sterile"
|
||||
|
||||
/obj/item/weapon/storage/box/masks/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/masks/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/clothing/mask/surgical(src)
|
||||
|
||||
@@ -159,47 +150,34 @@
|
||||
desc = "A box full of syringes."
|
||||
illustration = "syringe"
|
||||
|
||||
/obj/item/weapon/storage/box/syringes/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syringes/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/syringe( src )
|
||||
new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
|
||||
/obj/item/weapon/storage/box/medipens
|
||||
name = "box of medipens"
|
||||
desc = "A box full of epinephrine MediPens."
|
||||
illustration = "syringe"
|
||||
|
||||
/obj/item/weapon/storage/box/medipens/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/medipens/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen( src )
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/weapon/storage/box/medipens/utility
|
||||
name = "stimpack value kit"
|
||||
desc = "A box with several stimpack medipens for the economical miner."
|
||||
illustration = "syringe"
|
||||
|
||||
/obj/item/weapon/storage/box/medipens/utility/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/medipens/utility/PopulateContents()
|
||||
..() // includes regular medipens.
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src)
|
||||
|
||||
/obj/item/weapon/storage/box/medipens/survival
|
||||
name = "Survival pen bundle"
|
||||
desc = "a box with several survival pens inside, welcome to immortality!!"
|
||||
illustration = "syringe"
|
||||
|
||||
/obj/item/weapon/storage/box/medipens/survival/New()
|
||||
..()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen/survival(src)
|
||||
|
||||
/obj/item/weapon/storage/box/beakers
|
||||
name = "box of beakers"
|
||||
illustration = "beaker"
|
||||
|
||||
/obj/item/weapon/storage/box/beakers/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/beakers/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker( src )
|
||||
|
||||
@@ -207,8 +185,7 @@
|
||||
name = "box of DNA injectors"
|
||||
desc = "This box contains injectors, it seems."
|
||||
|
||||
/obj/item/weapon/storage/box/injectors/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/injectors/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/dnainjector/h2m(src)
|
||||
for(var/i in 1 to 3)
|
||||
@@ -220,8 +197,7 @@
|
||||
icon_state = "secbox"
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/flashbangs/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/flashbangs/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/grenade/flashbang(src)
|
||||
|
||||
@@ -231,8 +207,7 @@
|
||||
icon_state = "secbox"
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/flashes/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/flashes/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/device/assembly/flash/handheld(src)
|
||||
|
||||
@@ -241,9 +216,9 @@
|
||||
desc = "This box contains everything necessary to build a wall-mounted flash. <B>WARNING: Flashes can cause serious eye damage, protective eyewear is required.</B>"
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/wall_flash/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/wall_flash/PopulateContents()
|
||||
var/id = rand(1000, 9999)
|
||||
// FIXME what if this conflicts with an existing one?
|
||||
|
||||
new /obj/item/wallframe/button(src)
|
||||
new /obj/item/weapon/electronics/airlock(src)
|
||||
@@ -260,8 +235,7 @@
|
||||
desc = "<B>WARNING: These devices are extremely dangerous and can cause blindness and skin irritation.</B>"
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/teargas/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/teargas/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/grenade/chem_grenade/teargas(src)
|
||||
|
||||
@@ -270,8 +244,7 @@
|
||||
desc = "A box with 5 emp grenades."
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/emps/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/emps/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
|
||||
@@ -280,8 +253,7 @@
|
||||
desc = "Box full of scum-bag tracking utensils."
|
||||
illustration = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/trackimp/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/trackimp/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
@@ -293,8 +265,7 @@
|
||||
desc = "For finding those who have died on the accursed lavaworld."
|
||||
illustration = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/minertracker/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/minertracker/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/implantcase/tracking(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
@@ -306,8 +277,7 @@
|
||||
desc = "Box of stuff used to implant chemicals."
|
||||
illustration = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/chemimp/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/chemimp/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/implantcase/chem(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
@@ -318,8 +288,7 @@
|
||||
desc = "Box of exile implants. It has a picture of a clown being booted through the Gateway."
|
||||
illustration = "implant"
|
||||
|
||||
/obj/item/weapon/storage/box/exileimp/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/exileimp/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/implantcase/exile(src)
|
||||
new /obj/item/weapon/implanter(src)
|
||||
@@ -329,13 +298,17 @@
|
||||
desc = "The label indicates that it contains body bags."
|
||||
illustration = "bodybags"
|
||||
|
||||
/obj/item/weapon/storage/box/bodybags/PopulateContents()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/bodybag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/rxglasses
|
||||
name = "box of prescription glasses"
|
||||
desc = "This box contains nerd glasses."
|
||||
illustration = "glasses"
|
||||
|
||||
/obj/item/weapon/storage/box/rxglasses/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/rxglasses/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/clothing/glasses/regular(src)
|
||||
|
||||
@@ -343,8 +316,7 @@
|
||||
name = "box of drinking glasses"
|
||||
desc = "It has a picture of drinking glasses on it."
|
||||
|
||||
/obj/item/weapon/storage/box/drinkingglasses/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/drinkingglasses/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src)
|
||||
|
||||
@@ -352,8 +324,7 @@
|
||||
name = "box of condiment bottles"
|
||||
desc = "It has a large ketchup smear on it."
|
||||
|
||||
/obj/item/weapon/storage/box/condimentbottles/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/condimentbottles/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/weapon/reagent_containers/food/condiment(src)
|
||||
|
||||
@@ -361,8 +332,7 @@
|
||||
name = "box of paper cups"
|
||||
desc = "It has pictures of paper cups on the front."
|
||||
|
||||
/obj/item/weapon/storage/box/cups/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/cups/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
|
||||
|
||||
@@ -371,8 +341,7 @@
|
||||
desc = "<B>Instructions:</B> <I>Heat in microwave. Product will cool if not eaten within seven minutes.</I>"
|
||||
illustration = "donk_kit"
|
||||
|
||||
/obj/item/weapon/storage/box/donkpockets/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/donkpockets/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src)
|
||||
|
||||
@@ -384,9 +353,8 @@
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/monkeycube)
|
||||
illustration = null
|
||||
|
||||
/obj/item/weapon/storage/box/monkeycubes/New()
|
||||
..()
|
||||
for(var/i = 1; i <= 5; i++)
|
||||
/obj/item/weapon/storage/box/monkeycubes/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/ids
|
||||
@@ -394,8 +362,7 @@
|
||||
desc = "Has so many empty IDs."
|
||||
illustration = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/ids/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ids/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/card/id(src)
|
||||
|
||||
@@ -405,13 +372,26 @@
|
||||
desc = "A box of spare PDA microcomputers."
|
||||
illustration = "pda"
|
||||
|
||||
/obj/item/weapon/storage/box/PDAs/PopulateContents()
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/device/pda(src)
|
||||
new /obj/item/weapon/cartridge/head(src)
|
||||
|
||||
var/newcart = pick( /obj/item/weapon/cartridge/engineering,
|
||||
/obj/item/weapon/cartridge/security,
|
||||
/obj/item/weapon/cartridge/medical,
|
||||
/obj/item/weapon/cartridge/signal/toxins,
|
||||
/obj/item/weapon/cartridge/quartermaster)
|
||||
new newcart(src)
|
||||
|
||||
/obj/item/weapon/storage/box/silver_ids
|
||||
name = "box of spare silver IDs"
|
||||
desc = "Shiny IDs for important people."
|
||||
illustration = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/silver_ids/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/silver_ids/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/card/id/silver(src)
|
||||
|
||||
@@ -420,7 +400,7 @@
|
||||
desc = "Take away their last shred of dignity, their name."
|
||||
illustration = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/prisoner/New()
|
||||
/obj/item/weapon/storage/box/prisoner/PopulateContents()
|
||||
..()
|
||||
new /obj/item/weapon/card/id/prisoner/one(src)
|
||||
new /obj/item/weapon/card/id/prisoner/two(src)
|
||||
@@ -435,8 +415,7 @@
|
||||
desc = "A box full of PDA cartridges used by Security."
|
||||
illustration = "pda"
|
||||
|
||||
/obj/item/weapon/storage/box/seccarts/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/seccarts/PopulateContents()
|
||||
new /obj/item/weapon/cartridge/detective(src)
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/weapon/cartridge/security(src)
|
||||
@@ -446,8 +425,7 @@
|
||||
desc = "A box full of standard firing pins, to allow newly-developed firearms to operate."
|
||||
illustration = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/firingpins/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/firingpins/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/device/firing_pin(src)
|
||||
|
||||
@@ -456,8 +434,7 @@
|
||||
desc = "A box full of laser tag firing pins, to allow newly-developed firearms to require wearing brightly coloured plastic armor before being able to be used."
|
||||
illustration = "id"
|
||||
|
||||
/obj/item/weapon/storage/box/lasertagpins/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/lasertagpins/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/device/firing_pin/tag/red(src)
|
||||
new /obj/item/device/firing_pin/tag/blue(src)
|
||||
@@ -468,8 +445,7 @@
|
||||
icon_state = "secbox"
|
||||
illustration = "handcuff"
|
||||
|
||||
/obj/item/weapon/storage/box/handcuffs/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/handcuffs/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/restraints/handcuffs(src)
|
||||
|
||||
@@ -479,8 +455,7 @@
|
||||
icon_state = "secbox"
|
||||
illustration = "handcuff"
|
||||
|
||||
/obj/item/weapon/storage/box/zipties/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/zipties/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
|
||||
|
||||
@@ -490,8 +465,7 @@
|
||||
icon_state = "alienbox"
|
||||
illustration = "handcuff"
|
||||
|
||||
/obj/item/weapon/storage/box/alienhandcuffs/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/alienhandcuffs/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/restraints/handcuffs/alien(src)
|
||||
|
||||
@@ -500,8 +474,7 @@
|
||||
desc = "A sleek, sturdy box used to hold replica spacesuits."
|
||||
icon_state = "syndiebox"
|
||||
|
||||
/obj/item/weapon/storage/box/fakesyndiesuit/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/fakesyndiesuit/PopulateContents()
|
||||
new /obj/item/clothing/head/syndicatefake(src)
|
||||
new /obj/item/clothing/suit/syndicatefake(src)
|
||||
|
||||
@@ -510,20 +483,18 @@
|
||||
desc = "<span class='alert'>Keep out of reach of children.</span>"
|
||||
illustration = "mousetraps"
|
||||
|
||||
/obj/item/weapon/storage/box/mousetraps/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/mousetraps/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/device/assembly/mousetrap( src )
|
||||
new /obj/item/device/assembly/mousetrap(src)
|
||||
|
||||
/obj/item/weapon/storage/box/pillbottles
|
||||
name = "box of pill bottles"
|
||||
desc = "It has pictures of pill bottles on its front."
|
||||
illustration = "pillbox"
|
||||
|
||||
/obj/item/weapon/storage/box/pillbottles/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/pillbottles/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/storage/pill_bottle( src )
|
||||
new /obj/item/weapon/storage/pill_bottle(src)
|
||||
|
||||
/obj/item/weapon/storage/box/snappops
|
||||
name = "snap pop box"
|
||||
@@ -533,9 +504,8 @@
|
||||
storage_slots = 8
|
||||
can_hold = list(/obj/item/toy/snappop)
|
||||
|
||||
/obj/item/weapon/storage/box/snappops/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
/obj/item/weapon/storage/box/snappops/PopulateContents()
|
||||
for(var/i in 1 to storage_slots)
|
||||
new /obj/item/toy/snappop(src)
|
||||
|
||||
/obj/item/weapon/storage/box/matches
|
||||
@@ -549,9 +519,8 @@
|
||||
slot_flags = SLOT_BELT
|
||||
can_hold = list(/obj/item/weapon/match)
|
||||
|
||||
/obj/item/weapon/storage/box/matches/New()
|
||||
..()
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
/obj/item/weapon/storage/box/matches/PopulateContents()
|
||||
for(var/i in 1 to storage_slots)
|
||||
new /obj/item/weapon/match(src)
|
||||
|
||||
/obj/item/weapon/storage/box/matches/attackby(obj/item/weapon/match/W as obj, mob/user as mob, params)
|
||||
@@ -570,29 +539,26 @@
|
||||
max_combined_w_class = 21
|
||||
use_to_pickup = 1 // for picking up broken bulbs, not that most people will try
|
||||
|
||||
/obj/item/weapon/storage/box/lights/bulbs/New()
|
||||
..()
|
||||
for(var/i = 0; i < 21; i++)
|
||||
/obj/item/weapon/storage/box/lights/bulbs/PopulateContents()
|
||||
for(var/i in 1 to 21)
|
||||
new /obj/item/weapon/light/bulb(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights/tubes
|
||||
name = "box of replacement tubes"
|
||||
illustration = "lighttube"
|
||||
|
||||
/obj/item/weapon/storage/box/lights/tubes/New()
|
||||
..()
|
||||
for(var/i = 0; i < 21; i++)
|
||||
/obj/item/weapon/storage/box/lights/tubes/PopulateContents()
|
||||
for(var/i in 1 to 21)
|
||||
new /obj/item/weapon/light/tube(src)
|
||||
|
||||
/obj/item/weapon/storage/box/lights/mixed
|
||||
name = "box of replacement lights"
|
||||
illustration = "lightmixed"
|
||||
|
||||
/obj/item/weapon/storage/box/lights/mixed/New()
|
||||
..()
|
||||
for(var/i = 0; i < 14; i++)
|
||||
/obj/item/weapon/storage/box/lights/mixed/PopulateContents()
|
||||
for(var/i in 1 to 14)
|
||||
new /obj/item/weapon/light/tube(src)
|
||||
for(var/i = 0; i < 7; i++)
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/light/bulb(src)
|
||||
|
||||
|
||||
@@ -600,8 +566,7 @@
|
||||
name = "box of deputy armbands"
|
||||
desc = "To be issued to those authorized to act as deputy of security."
|
||||
|
||||
/obj/item/weapon/storage/box/deputy/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/deputy/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/clothing/tie/armband/deputy(src)
|
||||
|
||||
@@ -610,8 +575,7 @@
|
||||
desc = "To be used to rapidly seal hull breaches."
|
||||
illustration = "flashbang"
|
||||
|
||||
/obj/item/weapon/storage/box/metalfoam/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/metalfoam/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/grenade/chem_grenade/metalfoam(src)
|
||||
|
||||
@@ -632,28 +596,23 @@
|
||||
playsound(loc, "rustle", 50, 1, -5)
|
||||
user.visible_message("<span class='notice'>[user] hugs \the [src].</span>","<span class='notice'>You hug \the [src].</span>")
|
||||
|
||||
/obj/item/weapon/storage/box/hug/medical/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/hug/medical/PopulateContents()
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
new /obj/item/stack/medical/ointment(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/weapon/storage/box/hug/survival/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/hug/survival/PopulateContents()
|
||||
new /obj/item/clothing/mask/breath(src)
|
||||
new /obj/item/weapon/tank/internals/emergency_oxygen(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
|
||||
/obj/item/ammo_casing/shotgun/rubbershot
|
||||
|
||||
/obj/item/weapon/storage/box/rubbershot
|
||||
name = "box of rubber shots"
|
||||
desc = "A box full of rubber shots, designed for riot shotguns."
|
||||
icon_state = "rubbershot_box"
|
||||
illustration = null
|
||||
|
||||
/obj/item/weapon/storage/box/rubbershot/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/rubbershot/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/rubbershot(src)
|
||||
|
||||
@@ -663,15 +622,9 @@
|
||||
icon_state = "lethalshot_box"
|
||||
illustration = null
|
||||
|
||||
/obj/item/weapon/storage/box/lethalshot/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
/obj/item/weapon/storage/box/lethalshot/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/ammo_casing/shotgun/buckshot(src)
|
||||
|
||||
/obj/item/weapon/storage/box/beanbag
|
||||
name = "box of beanbags"
|
||||
@@ -679,23 +632,16 @@
|
||||
icon_state = "rubbershot_box"
|
||||
illustration = null
|
||||
|
||||
/obj/item/weapon/storage/box/beanbag/New()
|
||||
..()
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/beanbag/PopulateContents()
|
||||
for(var/i in 1 to 6)
|
||||
new /obj/item/ammo_casing/shotgun/beanbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/actionfigure
|
||||
name = "box of action figures"
|
||||
desc = "The latest set of collectable action figures."
|
||||
icon_state = "box"
|
||||
|
||||
/obj/item/weapon/storage/box/actionfigure/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/actionfigure/PopulateContents()
|
||||
for(var/i in 1 to 4)
|
||||
var/randomFigure = pick(subtypesof(/obj/item/toy/figure))
|
||||
new randomFigure(src)
|
||||
@@ -775,11 +721,16 @@
|
||||
illustration = "donk_kit"
|
||||
item_state = null
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/Initialize()
|
||||
..()
|
||||
if(item_state)
|
||||
name = "[name] ([item_state])"
|
||||
desc = "A box containing supplementary ingredients for the aspiring chef. This box's theme is '[item_state]'."
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/wildcard
|
||||
item_state = "wildcard"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/wildcard/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/wildcard/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
var/randomFood = pick(/obj/item/weapon/reagent_containers/food/snacks/grown/chili,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
|
||||
@@ -800,8 +751,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/fiesta
|
||||
item_state = "fiesta"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/fiesta/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/fiesta/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/tortilla(src)
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/corn(src)
|
||||
@@ -811,8 +761,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/italian
|
||||
item_state = "italian"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/italian/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/italian/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/faggot(src)
|
||||
@@ -821,8 +770,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/vegetarian
|
||||
item_state = "vegetarian"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/vegetarian/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/vegetarian/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/eggplant(src)
|
||||
@@ -834,8 +782,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/american
|
||||
item_state = "american"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/american/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/american/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/potato(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
|
||||
@@ -845,8 +792,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/fruity
|
||||
item_state = "fruity"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/fruity/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/fruity/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/apple(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange(src)
|
||||
@@ -857,8 +803,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/sweets
|
||||
item_state = "sweets"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/sweets/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/sweets/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/cherries(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
|
||||
@@ -869,8 +814,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/delights
|
||||
item_state = "delights"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/delights/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/delights/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries(src)
|
||||
@@ -881,8 +825,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/grains
|
||||
item_state = "grains"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/grains/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/grains/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/oat(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/wheat(src)
|
||||
@@ -893,8 +836,7 @@
|
||||
/obj/item/weapon/storage/box/ingredients/carnivore
|
||||
item_state = "carnivore"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/carnivore/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/carnivore/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/bear(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/spider(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/spidereggs(src)
|
||||
@@ -906,40 +848,34 @@
|
||||
/obj/item/weapon/storage/box/ingredients/exotic
|
||||
item_state = "exotic"
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/exotic/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/ingredients/exotic/PopulateContents()
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/carpmeat(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/cabbage(src)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/grown/chili(src)
|
||||
|
||||
/obj/item/weapon/storage/box/ingredients/New()
|
||||
..()
|
||||
if(item_state)
|
||||
name = "[name] ([item_state])"
|
||||
desc = "A box containing supplementary ingredients for the aspiring chef. This box's theme is '[item_state]'."
|
||||
|
||||
/obj/item/weapon/storage/box/emptysandbags
|
||||
name = "box of empty sandbags"
|
||||
|
||||
/obj/item/weapon/storage/box/emptysandbags/New()
|
||||
..()
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
/obj/item/weapon/storage/box/emptysandbags/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/emptysandbag(src)
|
||||
|
||||
/obj/item/weapon/storage/box/rndboards
|
||||
name = "\proper the liberator's legacy"
|
||||
desc = "A box containing a gift for worthy golems."
|
||||
|
||||
/obj/item/weapon/storage/box/rndboards/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/rndboards/PopulateContents()
|
||||
new /obj/item/weapon/circuitboard/machine/protolathe(src)
|
||||
new /obj/item/weapon/circuitboard/machine/destructive_analyzer(src)
|
||||
new /obj/item/weapon/circuitboard/machine/circuit_imprinter(src)
|
||||
new /obj/item/weapon/circuitboard/computer/rdconsole(src)
|
||||
|
||||
/obj/item/weapon/storage/box/silver_sulf
|
||||
name = "box of silver sulfadiazine patches"
|
||||
desc = "Contains patches used to treat burns."
|
||||
|
||||
/obj/item/weapon/storage/box/silver_sulf/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
|
||||
|
||||
@@ -16,8 +16,7 @@
|
||||
max_integrity = 150
|
||||
var/folder_path = /obj/item/weapon/folder //this is the path of the folder that gets spawned in New()
|
||||
|
||||
/obj/item/weapon/storage/briefcase/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/briefcase/PopulateContents()
|
||||
new /obj/item/weapon/pen(src)
|
||||
var/obj/item/weapon/folder/folder = new folder_path(src)
|
||||
for(var/i in 1 to 6)
|
||||
@@ -26,7 +25,7 @@
|
||||
/obj/item/weapon/storage/briefcase/lawyer
|
||||
folder_path = /obj/item/weapon/folder/blue
|
||||
|
||||
/obj/item/weapon/storage/briefcase/lawyer/New()
|
||||
/obj/item/weapon/storage/briefcase/lawyer/PopulateContents()
|
||||
new /obj/item/weapon/stamp/law(src)
|
||||
..()
|
||||
|
||||
@@ -47,8 +46,8 @@
|
||||
obj_integrity = 150
|
||||
max_integrity = 150
|
||||
|
||||
/obj/item/weapon/storage/briefcase/sniperbundle/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/briefcase/sniperbundle/PopulateContents()
|
||||
..() // in case you need any paperwork done after your rampage
|
||||
new /obj/item/weapon/gun/ballistic/automatic/sniper_rifle/syndicate(src)
|
||||
new /obj/item/clothing/neck/tie/red(src)
|
||||
new /obj/item/clothing/under/syndicate/sniper(src)
|
||||
|
||||
@@ -22,8 +22,7 @@
|
||||
var/spawn_type = null
|
||||
var/fancy_open = FALSE
|
||||
|
||||
/obj/item/weapon/storage/fancy/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/fancy/PopulateContents()
|
||||
for(var/i = 1 to storage_slots)
|
||||
new spawn_type(src)
|
||||
|
||||
@@ -111,7 +110,7 @@
|
||||
//CIG PACK//
|
||||
////////////
|
||||
/obj/item/weapon/storage/fancy/cigarettes
|
||||
name = "Space Cigarettes"
|
||||
name = "\improper Space Cigarettes packet"
|
||||
desc = "The most popular brand of cigarettes, sponsors of the Space Olympics."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig"
|
||||
@@ -122,15 +121,7 @@
|
||||
storage_slots = 6
|
||||
can_hold = list(/obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
|
||||
icon_type = "cigarette"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/New()
|
||||
..()
|
||||
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
reagents.set_reacting(FALSE)
|
||||
for(var/obj/item/clothing/mask/cigarette/cig in src)
|
||||
cig.desc = "\An [name] brand [cig.name]."
|
||||
name = "\improper [name] packet"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/AltClick(mob/user)
|
||||
if(user.get_active_held_item())
|
||||
@@ -160,13 +151,6 @@
|
||||
else
|
||||
cut_overlays()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W, atom/new_location)
|
||||
if(istype(W,/obj/item/clothing/mask/cigarette))
|
||||
if(reagents)
|
||||
reagents.trans_to(W,(reagents.total_volume/contents.len))
|
||||
fancy_open = TRUE
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
if(!istype(M, /mob))
|
||||
return
|
||||
@@ -184,65 +168,52 @@
|
||||
to_chat(user, "<span class='notice'>There are no [icon_type]s left in the pack.</span>")
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco
|
||||
name = "DromedaryCo"
|
||||
name = "\improper DromedaryCo packet"
|
||||
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
||||
icon_state = "dromedary"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/dromedary
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_uplift
|
||||
name = "Uplift Smooth"
|
||||
name = "\improper Uplift Smooth packet"
|
||||
desc = "Your favorite brand, now menthol flavored."
|
||||
icon_state = "uplift"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/uplift
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robust
|
||||
name = "Robust"
|
||||
name = "\improper Robust packet"
|
||||
desc = "Smoked by the robust."
|
||||
icon_state = "robust"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/robust
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold
|
||||
name = "Robust Gold"
|
||||
name = "\improper Robust Gold packet"
|
||||
desc = "Smoked by the truly robust."
|
||||
icon_state = "robustg"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_robustgold/New()
|
||||
..()
|
||||
for(var/i = 1 to storage_slots)
|
||||
reagents.add_reagent("gold",1)
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/robustgold
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp
|
||||
name = "Carp Classic"
|
||||
name = "\improper Carp Classic packet"
|
||||
desc = "Since 2313."
|
||||
icon_state = "carp"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/carp
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate
|
||||
name = "unknown"
|
||||
name = "cigarette packet"
|
||||
desc = "An obscure brand of cigarettes."
|
||||
icon_state = "syndie"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_syndicate/New()
|
||||
..()
|
||||
for(var/i = 1 to storage_slots)
|
||||
reagents.add_reagent("omnizine",15)
|
||||
name = "cigarette packet"
|
||||
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/syndicate
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_midori
|
||||
name = "Midori Tabako"
|
||||
name = "\improper Midori Tabako packet"
|
||||
desc = "You can't understand the runes, but the packet smells funny."
|
||||
icon_state = "midori"
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/rollie
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims
|
||||
name ="Shady Jim's Super Slims"
|
||||
name = "\improper Shady Jim's Super Slims packet"
|
||||
desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!"
|
||||
icon_state = "shadyjim"
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims/New()
|
||||
..()
|
||||
for(var/i = 1 to storage_slots)
|
||||
reagents.add_reagent("lipolicide",4)
|
||||
reagents.add_reagent("ammonia",2)
|
||||
reagents.add_reagent("plantbgone",1)
|
||||
reagents.add_reagent("toxin",1.5)
|
||||
spawn_type = /obj/item/clothing/mask/cigarette/shadyjims
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers
|
||||
name = "rolling paper pack"
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
icon_state = "firstaid"
|
||||
desc = "A first aid kit with the ability to heal common types of injuries."
|
||||
|
||||
/obj/item/weapon/storage/firstaid/regular/New()
|
||||
..()
|
||||
if(empty) return
|
||||
/obj/item/weapon/storage/firstaid/regular/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
new /obj/item/stack/medical/gauze(src)
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
new /obj/item/stack/medical/bruise_pack(src)
|
||||
@@ -30,7 +30,6 @@
|
||||
new /obj/item/stack/medical/ointment(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/fire
|
||||
name = "burn treatment kit"
|
||||
@@ -38,17 +37,19 @@
|
||||
icon_state = "ointment"
|
||||
item_state = "firstaid-ointment"
|
||||
|
||||
/obj/item/weapon/storage/firstaid/fire/New()
|
||||
/obj/item/weapon/storage/firstaid/fire/Initialize(mapload)
|
||||
..()
|
||||
if(empty) return
|
||||
icon_state = pick("ointment","firefirstaid")
|
||||
|
||||
/obj/item/weapon/storage/firstaid/fire/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
|
||||
new /obj/item/weapon/reagent_containers/pill/oxandrolone(src)
|
||||
new /obj/item/weapon/reagent_containers/pill/oxandrolone(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/toxin
|
||||
name = "toxin treatment kit"
|
||||
@@ -56,16 +57,18 @@
|
||||
icon_state = "antitoxin"
|
||||
item_state = "firstaid-toxin"
|
||||
|
||||
/obj/item/weapon/storage/firstaid/toxin/New()
|
||||
..()
|
||||
if(empty) return
|
||||
/obj/item/weapon/storage/firstaid/toxin/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3")
|
||||
|
||||
/obj/item/weapon/storage/firstaid/toxin/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/weapon/reagent_containers/syringe/charcoal(src)
|
||||
for(var/i in 1 to 2)
|
||||
new /obj/item/weapon/storage/pill_bottle/charcoal(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/o2
|
||||
name = "oxygen deprivation treatment kit"
|
||||
@@ -73,15 +76,14 @@
|
||||
icon_state = "o2"
|
||||
item_state = "firstaid-o2"
|
||||
|
||||
/obj/item/weapon/storage/firstaid/o2/New()
|
||||
..()
|
||||
if(empty) return
|
||||
/obj/item/weapon/storage/firstaid/o2/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/weapon/reagent_containers/pill/salbutamol(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/brute
|
||||
name = "brute trauma treatment kit"
|
||||
@@ -89,15 +91,14 @@
|
||||
icon_state = "brute"
|
||||
item_state = "firstaid-brute"
|
||||
|
||||
/obj/item/weapon/storage/firstaid/brute/New()
|
||||
..()
|
||||
if(empty) return
|
||||
/obj/item/weapon/storage/firstaid/brute/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
for(var/i in 1 to 4)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
|
||||
new /obj/item/stack/medical/gauze(src)
|
||||
new /obj/item/stack/medical/gauze(src)
|
||||
new /obj/item/device/healthanalyzer(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/tactical
|
||||
name = "combat medical kit"
|
||||
@@ -105,9 +106,9 @@
|
||||
icon_state = "bezerk"
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/firstaid/tactical/New()
|
||||
..()
|
||||
if(empty) return
|
||||
/obj/item/weapon/storage/firstaid/tactical/PopulateContents()
|
||||
if(empty)
|
||||
return
|
||||
new /obj/item/stack/medical/gauze(src)
|
||||
new /obj/item/weapon/defibrillator/compact/combat/loaded(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/combat(src)
|
||||
@@ -115,7 +116,6 @@
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src)
|
||||
new /obj/item/clothing/glasses/hud/health/night(src)
|
||||
return
|
||||
|
||||
|
||||
/*
|
||||
@@ -147,21 +147,11 @@
|
||||
usr.s_active.close(usr)
|
||||
src.show_to(usr)
|
||||
|
||||
/obj/item/weapon/storage/box/silver_sulf
|
||||
name = "box of silver sulfadiazine patches"
|
||||
desc = "Contains patches used to treat burns."
|
||||
|
||||
/obj/item/weapon/storage/box/silver_sulf/New()
|
||||
..()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/charcoal
|
||||
name = "bottle of charcoal pills"
|
||||
desc = "Contains pills used to counter toxins."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/charcoal/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/charcoal/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/charcoal(src)
|
||||
|
||||
@@ -169,8 +159,7 @@
|
||||
name = "bottle of epinephrine pills"
|
||||
desc = "Contains pills used to stabilize patients."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/epinephrine/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/epinephrine/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/epinephrine(src)
|
||||
|
||||
@@ -178,8 +167,7 @@
|
||||
name = "bottle of mutadone pills"
|
||||
desc = "Contains pills used to treat genetic abnormalities."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/mutadone/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/mutadone/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/mutadone(src)
|
||||
|
||||
@@ -187,8 +175,7 @@
|
||||
name = "bottle of mannitol pills"
|
||||
desc = "Contains pills used to treat brain damage."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/mannitol/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/mannitol/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/pill/mannitol(src)
|
||||
|
||||
@@ -196,17 +183,15 @@
|
||||
name = "bottle of stimulant pills"
|
||||
desc = "Guaranteed to give you that extra burst of energy during a long shift!"
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/stimulant/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/stimulant/PopulateContents()
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/pill/stimulant(src)
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/mining
|
||||
name = "box of patches"
|
||||
name = "bottle of patches"
|
||||
desc = "Contains patches used to treat brute and burn damage."
|
||||
|
||||
/obj/item/weapon/storage/pill_bottle/mining/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/pill_bottle/mining/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src)
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
|
||||
new /obj/item/weapon/reagent_containers/pill/patch/styptic(src)
|
||||
|
||||
@@ -70,6 +70,5 @@
|
||||
/obj/item/weapon/storage/internal/pocket/small/detective
|
||||
priority = TRUE // so the detectives would discover pockets in their hats
|
||||
|
||||
/obj/item/weapon/storage/internal/pocket/small/detective/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/internal/pocket/small/detective/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/food/drinks/flask/det(src)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
/obj/item/weapon/storage/lockbox
|
||||
name = "lockbox"
|
||||
desc = "A locked box."
|
||||
@@ -9,7 +7,7 @@
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item.
|
||||
storage_slots = 4
|
||||
req_access = list(access_armory)
|
||||
req_access = list(GLOB.access_armory)
|
||||
var/locked = 1
|
||||
var/broken = 0
|
||||
var/icon_locked = "lockbox+l"
|
||||
@@ -78,10 +76,9 @@
|
||||
|
||||
/obj/item/weapon/storage/lockbox/loyalty
|
||||
name = "lockbox of mindshield implants"
|
||||
req_access = list(access_security)
|
||||
req_access = list(GLOB.access_security)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/loyalty/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/lockbox/loyalty/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new /obj/item/weapon/implantcase/mindshield(src)
|
||||
new /obj/item/weapon/implanter/mindshield(src)
|
||||
@@ -90,10 +87,9 @@
|
||||
/obj/item/weapon/storage/lockbox/clusterbang
|
||||
name = "lockbox of clusterbangs"
|
||||
desc = "You have a bad feeling about opening this."
|
||||
req_access = list(access_security)
|
||||
req_access = list(GLOB.access_security)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/clusterbang/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/lockbox/clusterbang/PopulateContents()
|
||||
new /obj/item/weapon/grenade/clusterbuster(src)
|
||||
|
||||
/obj/item/weapon/storage/lockbox/medal
|
||||
@@ -104,13 +100,12 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
max_w_class = WEIGHT_CLASS_SMALL
|
||||
storage_slots = 10
|
||||
req_access = list(access_captain)
|
||||
req_access = list(GLOB.access_captain)
|
||||
icon_locked = "medalbox+l"
|
||||
icon_closed = "medalbox"
|
||||
icon_broken = "medalbox+b"
|
||||
|
||||
/obj/item/weapon/storage/lockbox/medal/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/lockbox/medal/PopulateContents()
|
||||
new /obj/item/clothing/tie/medal/silver/valor(src)
|
||||
new /obj/item/clothing/tie/medal/bronze_heart(src)
|
||||
for(var/i in 1 to 3)
|
||||
|
||||
@@ -145,10 +145,9 @@
|
||||
max_combined_w_class = 21
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "whacked")
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/New()
|
||||
/obj/item/weapon/storage/secure/briefcase/PopulateContents()
|
||||
new /obj/item/weapon/paper(src)
|
||||
new /obj/item/weapon/pen(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user)
|
||||
if ((src.loc == user) && (src.locked == 1))
|
||||
@@ -161,10 +160,10 @@
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie
|
||||
force = 15
|
||||
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie/New()
|
||||
/obj/item/weapon/storage/secure/briefcase/syndie/PopulateContents()
|
||||
..()
|
||||
for(var/i = 0, i < storage_slots - 2, i++)
|
||||
new /obj/item/stack/spacecash/c1000(src)
|
||||
return ..()
|
||||
|
||||
|
||||
// -----------------------------
|
||||
@@ -185,14 +184,12 @@
|
||||
density = 0
|
||||
cant_hold = list(/obj/item/weapon/storage/secure/briefcase)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/secure/safe/PopulateContents()
|
||||
new /obj/item/weapon/paper(src)
|
||||
new /obj/item/weapon/pen(src)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/attack_hand(mob/user)
|
||||
return attack_self(user)
|
||||
|
||||
/obj/item/weapon/storage/secure/safe/HoS/New()
|
||||
..()
|
||||
//new /obj/item/weapon/storage/lockbox/clusterbang(src) This item is currently broken... and probably shouldnt exist to begin with (even though it's cool)
|
||||
/obj/item/weapon/storage/secure/safe/HoS
|
||||
name = "head of security's safe"
|
||||
|
||||
@@ -498,7 +498,7 @@
|
||||
remove_from_storage(I, T)
|
||||
|
||||
|
||||
/obj/item/weapon/storage/New()
|
||||
/obj/item/weapon/storage/Initialize(mapload)
|
||||
..()
|
||||
|
||||
can_hold = typecacheof(can_hold)
|
||||
@@ -528,6 +528,8 @@
|
||||
closer.plane = ABOVE_HUD_PLANE
|
||||
orient2hud()
|
||||
|
||||
PopulateContents()
|
||||
|
||||
|
||||
/obj/item/weapon/storage/Destroy()
|
||||
for(var/obj/O in contents)
|
||||
@@ -561,3 +563,7 @@
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
CHECK_TICK
|
||||
|
||||
//Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW"
|
||||
|
||||
/obj/item/weapon/storage/proc/PopulateContents()
|
||||
|
||||
@@ -41,8 +41,7 @@
|
||||
icon_state = "red"
|
||||
item_state = "toolbox_red"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/emergency/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/emergency/PopulateContents()
|
||||
new /obj/item/weapon/crowbar/red(src)
|
||||
new /obj/item/weapon/weldingtool/mini(src)
|
||||
new /obj/item/weapon/extinguisher/mini(src)
|
||||
@@ -65,8 +64,7 @@
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/mechanical/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/mechanical/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool(src)
|
||||
@@ -84,8 +82,7 @@
|
||||
icon_state = "yellow"
|
||||
item_state = "toolbox_yellow"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/electrical/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/electrical/PopulateContents()
|
||||
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wirecutters(src)
|
||||
@@ -107,8 +104,7 @@
|
||||
force = 15
|
||||
throwforce = 18
|
||||
|
||||
/obj/item/weapon/storage/toolbox/syndicate/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/syndicate/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver/nuke(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
new /obj/item/weapon/weldingtool/largetank(src)
|
||||
@@ -122,8 +118,7 @@
|
||||
icon_state = "blue"
|
||||
item_state = "toolbox_blue"
|
||||
|
||||
/obj/item/weapon/storage/toolbox/drone/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/drone/PopulateContents()
|
||||
var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
|
||||
new /obj/item/weapon/screwdriver(src)
|
||||
new /obj/item/weapon/wrench(src)
|
||||
@@ -147,8 +142,7 @@
|
||||
attack_verb = list("robusted", "crushed", "smashed")
|
||||
var/proselytizer_type = /obj/item/clockwork/clockwork_proselytizer/scarab
|
||||
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/PopulateContents()
|
||||
new proselytizer_type(src)
|
||||
new /obj/item/weapon/screwdriver/brass(src)
|
||||
new /obj/item/weapon/wirecutters/brass(src)
|
||||
@@ -159,7 +153,7 @@
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/ratvar
|
||||
var/slab_type = /obj/item/clockwork/slab/scarab
|
||||
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/ratvar/New()
|
||||
/obj/item/weapon/storage/toolbox/brass/prefilled/ratvar/PopulateContents()
|
||||
..()
|
||||
new slab_type(src)
|
||||
|
||||
@@ -177,8 +171,7 @@
|
||||
storage_slots = 10
|
||||
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
|
||||
|
||||
/obj/item/weapon/storage/toolbox/artistic/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/toolbox/artistic/PopulateContents()
|
||||
new/obj/item/weapon/storage/crayons(src)
|
||||
new/obj/item/weapon/crowbar(src)
|
||||
new/obj/item/stack/cable_coil/red(src)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/item/weapon/storage/box/syndicate
|
||||
|
||||
/obj/item/weapon/storage/box/syndicate/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndicate/PopulateContents()
|
||||
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
|
||||
if("bloodyspai") // 27 tc now this is more right
|
||||
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
|
||||
@@ -141,8 +140,7 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_freedom
|
||||
name = "boxed freedom implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_freedom/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_freedom/PopulateContents()
|
||||
var/obj/item/weapon/implanter/O = new(src)
|
||||
O.imp = new /obj/item/weapon/implant/freedom(O)
|
||||
O.update_icon()
|
||||
@@ -150,25 +148,23 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_microbomb
|
||||
name = "Microbomb Implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_microbomb/New()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_microbomb/PopulateContents()
|
||||
var/obj/item/weapon/implanter/O = new(src)
|
||||
O.imp = new /obj/item/weapon/implant/explosive(O)
|
||||
O.update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb
|
||||
name = "Macrobomb Implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb/New()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_macrobomb/PopulateContents()
|
||||
var/obj/item/weapon/implanter/O = new(src)
|
||||
O.imp = new /obj/item/weapon/implant/explosive/macro(O)
|
||||
O.update_icon()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_uplink
|
||||
name = "boxed uplink implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_uplink/New()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_uplink/PopulateContents()
|
||||
..()
|
||||
var/obj/item/weapon/implanter/O = new(src)
|
||||
O.imp = new /obj/item/weapon/implant/uplink(O)
|
||||
@@ -177,16 +173,14 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/bioterror
|
||||
name = "bioterror syringe box"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/bioterror/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/bioterror/PopulateContents()
|
||||
for(var/i in 1 to 7)
|
||||
new /obj/item/weapon/reagent_containers/syringe/bioterror(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_adrenal
|
||||
name = "boxed adrenal implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_adrenal/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_adrenal/PopulateContents()
|
||||
var/obj/item/weapon/implanter/O = new(src)
|
||||
O.imp = new /obj/item/weapon/implant/adrenalin(O)
|
||||
O.update_icon()
|
||||
@@ -194,8 +188,7 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_storage
|
||||
name = "boxed storage implant (with injector)"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_storage/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/imp_storage/PopulateContents()
|
||||
new /obj/item/weapon/implanter/storage(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/space
|
||||
@@ -203,16 +196,14 @@
|
||||
can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate)
|
||||
max_w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/space/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/space/PopulateContents()
|
||||
new /obj/item/clothing/suit/space/syndicate/black/red(src) // Black and red is so in right now
|
||||
new /obj/item/clothing/head/helmet/space/syndicate/black/red(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/emp
|
||||
name = "boxed EMP kit"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/emp/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/emp/PopulateContents()
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
new /obj/item/weapon/grenade/empgrenade(src)
|
||||
@@ -224,8 +215,7 @@
|
||||
name = "boxed chemical kit"
|
||||
storage_slots = 14
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/chemical/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/chemical/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/polonium(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/venom(src)
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/neurotoxin2(src)
|
||||
@@ -243,8 +233,7 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/nuke
|
||||
name = "box"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/nuke/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/nuke/PopulateContents()
|
||||
new /obj/item/weapon/screwdriver/nuke(src)
|
||||
new /obj/item/nuke_core_container(src)
|
||||
new /obj/item/weapon/paper/nuke_instructions(src)
|
||||
@@ -252,8 +241,7 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade
|
||||
name = "boxed virus grenade kit"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade/PopulateContents()
|
||||
new /obj/item/weapon/grenade/chem_grenade/tuberculosis(src)
|
||||
for(var/i in 1 to 5)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src)
|
||||
@@ -263,8 +251,7 @@
|
||||
/obj/item/weapon/storage/box/syndie_kit/chameleon
|
||||
name = "chameleon kit"
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/chameleon/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/chameleon/PopulateContents()
|
||||
new /obj/item/clothing/under/chameleon(src)
|
||||
new /obj/item/clothing/suit/chameleon(src)
|
||||
new /obj/item/clothing/gloves/chameleon(src)
|
||||
@@ -280,9 +267,7 @@
|
||||
|
||||
//5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars.
|
||||
//Not counting the damage it will do while embedded (2*4 = 8, at 15% chance)
|
||||
/obj/item/weapon/storage/box/syndie_kit/throwing_weapons/New()
|
||||
..()
|
||||
contents = list()
|
||||
/obj/item/weapon/storage/box/syndie_kit/throwing_weapons/PopulateContents()
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
new /obj/item/weapon/throwing_star(src)
|
||||
@@ -291,28 +276,23 @@
|
||||
new /obj/item/weapon/restraints/legcuffs/bola/tactical(src)
|
||||
new /obj/item/weapon/restraints/legcuffs/bola/tactical(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/cutouts/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/cutouts/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new/obj/item/cardboard_cutout/adaptive(src)
|
||||
new/obj/item/toy/crayon/rainbow(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/romerol/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/romerol/PopulateContents()
|
||||
new /obj/item/weapon/reagent_containers/glass/bottle/romerol(src)
|
||||
new /obj/item/weapon/reagent_containers/syringe(src)
|
||||
new /obj/item/weapon/reagent_containers/dropper(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/ez_clean/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/ez_clean/PopulateContents()
|
||||
for(var/i in 1 to 3)
|
||||
new/obj/item/weapon/grenade/chem_grenade/ez_clean(src)
|
||||
|
||||
/obj/item/weapon/storage/box/hug/reverse_revolver/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/hug/reverse_revolver/PopulateContents()
|
||||
new /obj/item/weapon/gun/ballistic/revolver/reverse(src)
|
||||
|
||||
/obj/item/weapon/storage/box/syndie_kit/mimery/New()
|
||||
..()
|
||||
/obj/item/weapon/storage/box/syndie_kit/mimery/PopulateContents()
|
||||
new /obj/item/weapon/spellbook/oneuse/mimery_blockade(src)
|
||||
new /obj/item/weapon/spellbook/oneuse/mimery_guns(src)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user