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
+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")
. = ..()