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:
Poojawa
2017-04-13 23:37:00 -05:00
committed by GitHub
parent cdc32c98fa
commit 7e9b96a00f
1322 changed files with 174827 additions and 23888 deletions
+5 -5
View File
@@ -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
+8 -6
View File
@@ -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)
+5 -5
View File
@@ -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 -7
View File
@@ -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)
+11 -1
View File
@@ -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"
+6 -5
View File
@@ -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
+5 -1
View File
@@ -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
+5 -6
View File
@@ -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
+234 -188
View File
@@ -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
. = ..()
+1 -1
View File
@@ -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
+7 -2
View File
@@ -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"
+5 -2
View File
@@ -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)
..()
..()
+55 -11
View File
@@ -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)
+4 -4
View File
@@ -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")
. = ..()
+15 -15
View File
@@ -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:
+3 -3
View File
@@ -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)
+1 -1
View File
@@ -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)
+8 -8
View File
@@ -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)
-5
View File
@@ -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
+6 -6
View File
@@ -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")
+6 -6
View File
@@ -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)
+2 -2
View File
@@ -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
+10 -24
View File
@@ -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 .
+20 -20
View File
@@ -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>"
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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.")
+160
View File
@@ -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)
. = ..()
+4 -4
View File
@@ -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)
+3 -3
View File
@@ -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
..()
+35 -33
View File
@@ -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
+4 -4
View File
@@ -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]")
+5 -5
View File
@@ -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)
+43 -8
View File
@@ -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
..()
+2 -1
View File
@@ -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"
+4 -4
View File
@@ -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
. = ..()
+6 -105
View File
@@ -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]" : ""]")
+2 -2
View File
@@ -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)
+8 -9
View File
@@ -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
+21 -17
View File
@@ -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))
+16 -22
View File
@@ -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."
+2 -2
View File
@@ -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)
+10 -20
View File
@@ -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()
+17 -18
View File
@@ -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)
+127 -191
View File
@@ -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