This commit is contained in:
Guti
2023-12-30 01:52:25 +01:00
committed by GitHub
parent 1a788cdc8d
commit 1bce7a45ce
5 changed files with 212 additions and 0 deletions

View File

@@ -0,0 +1,95 @@
/obj/effect/meteor/dust/meatyore
name = "space blood"
meteordrop = /obj/item/weapon/reagent_containers/food/snacks/bacon
/obj/effect/meteor/dust/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/drip(get_turf(src))
/obj/effect/meteor/medium/meatyore
name = "meatyore"
meteordrop = /obj/random/organ
/obj/effect/meteor/medium/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
/obj/effect/meteor/medium/meatyore/meteor_effect(var/gib)
..()
if(gib)
new /obj/effect/gibspawner/human(get_turf(src))
/obj/effect/meteor/big/meatyore
name = "large meatyore"
meteordrop = /obj/random/organ
/obj/effect/meteor/big/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
/obj/effect/meteor/big/meteor_effect(var/gib)
..()
if(gib)
new /obj/effect/gibspawner/human(get_turf(src))
/obj/effect/meteor/flaming/meatyore
name = "flaming meatyore"
meteordrop = /obj/item/weapon/reagent_containers/food/snacks/meatsteak
/obj/effect/meteor/flaming/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
/obj/effect/meteor/flaming/meatyore/meteor_effect(var/gib)
..()
if(gib)
new /obj/effect/gibspawner/human(get_turf(src))
/obj/effect/meteor/irradiated/meatyore
name = "glowing meaty ore"
meteordrop = /obj/item/weapon/reagent_containers/food/snacks/deathclawmeat
/obj/effect/meteor/irradiated/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
/obj/effect/meteor/irradiated/meatyore/meteor_effect(var/gib)
..()
if(gib)
new /obj/effect/gibspawner/human(get_turf(src))
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
SSradiation.radiate(src, 50)
/obj/effect/meteor/emp/meatyore
name = "conducting meaty ore"
meteordrop = /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat
/obj/effect/meteor/emp/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
/obj/effect/meteor/emp/meatyore/meteor_effect(var/gib)
..()
if(gib)
new /obj/effect/gibspawner/human
empulse(src, rand(1, 3), rand(2, 4), rand(3, 7), rand(5, 10))
/obj/effect/meteor/emp/meatyore/get_shield_damage()
return ..() * rand(2,4)
/obj/effect/meteor/tunguska/meatyore
name = "tunguska meatyore"
meteordrop = /obj/item/weapon/reagent_containers/food/snacks/phorondragonmeat
/obj/effect/meteor/tunguska/meatyore/meteor_effect(var/gib)
..()
if(gib)
explosion(src.loc, 3, 6, 9, 20, 0)
new /obj/effect/gibspawner/human(get_turf(src))
/obj/effect/meteor/tunguska/meatyore/Bump()
..()
new /obj/effect/decal/cleanable/blood/splatter(get_turf(src))
if(prob(20))
explosion(src.loc,2,4,6,8)
new /obj/effect/decal/cleanable/blood/gibs(get_turf(src))

View File

@@ -0,0 +1,44 @@
/obj/random/organ
name = "Random Organ"
desc = "An amalgamate of meaty things"
icon_state = "brain2"
/obj/random/organ/item_to_spawn()
return pick(prob(1500);/obj/random/meat,
prob(20);/obj/item/organ/internal/brain,
prob(20);/obj/item/organ/internal/brain/unathi,
prob(20);/obj/item/organ/internal/brain/xeno,
prob(20);/obj/item/organ/internal/eyes,
prob(20);/obj/item/organ/internal/appendix,
prob(20);/obj/item/organ/internal/heart,
prob(20);/obj/item/organ/internal/intestine,
prob(20);/obj/item/organ/internal/intestine/xeno,
prob(20);/obj/item/organ/internal/kidneys,
prob(20);/obj/item/organ/internal/kidneys/vox,
prob(20);/obj/item/organ/internal/liver,
prob(20);/obj/item/organ/internal/liver/unathi,
prob(20);/obj/item/organ/internal/liver/vox,
prob(20);/obj/item/organ/internal/lungs,
prob(20);/obj/item/organ/internal/lungs/unathi,
prob(20);/obj/item/organ/internal/lungs/vox,
prob(20);/obj/item/organ/internal/spleen,
prob(20);/obj/item/organ/internal/spleen/skrell,
prob(20);/obj/item/organ/internal/stomach,
prob(20);/obj/item/organ/internal/stomach/unathi,
prob(20);/obj/item/organ/internal/stomach/xeno,
prob(20);/obj/item/organ/internal/voicebox,
prob(20);/obj/item/organ/internal/voicebox/skrell,
prob(10);/obj/item/organ/internal/brain/replicant,
prob(10);/obj/item/organ/internal/eyes/replicant,
prob(10);/obj/item/organ/internal/heart/replicant,
prob(10);/obj/item/organ/internal/kidneys/replicant,
prob(10);/obj/item/organ/internal/liver/replicant,
prob(10);/obj/item/organ/internal/lungs/replicant,
prob(10);/obj/item/organ/internal/voicebox/replicant,
prob(10);/obj/item/organ/internal/xenos/plasmavessel/replicant,
prob(5);/obj/item/organ/internal/xenos/acidgland/replicant,
prob(5);/obj/item/organ/internal/xenos/resinspinner/replicant,
prob(5);/obj/item/organ/internal/immunehub/replicant,
prob(5);/obj/item/organ/internal/metamorphgland/replicant,
prob(5);/obj/item/organ/internal/heart/replicant/rage,
prob(5);/obj/item/organ/internal/lungs/replicant/mending)

View File

@@ -101,6 +101,7 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100), 1, min_jobs = list(ASSIGNMENT_SCIENTIST = 1), min_jobs = list(ASSIGNMENT_SCIENTIST = 1, ASSIGNMENT_SECURITY =1)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ore Shower", /datum/event/meteor_wave/meatyores, -50, list(ASSIGNMENT_ENGINEER = 45), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 2)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 3)),
@@ -130,6 +131,7 @@
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1, min_jobs = list(ASSIGNMENT_CARGO = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, -50, list(ASSIGNMENT_MEDICAL = 25), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Excotic Infestation", /datum/event/dangerinfestation, -60, list(ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 1)),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meaty Ores Wave", /datum/event/meteor_wave/meatyores, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)),
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station,0, list(ASSIGNMENT_ANY = 5), 0),

View File

@@ -0,0 +1,68 @@
/datum/event/meteor_wave/meatyores/get_skybox_image()
var/image/res = image('icons/skybox/rockbox.dmi', "rockbox")
res.color = COLOR_ASSEMBLY_RED
res.appearance_flags = RESET_COLOR
return res
/datum/event/meteor_wave/meatyores/tick()
if(activeFor >= alarmWhen)
for(var/obj/machinery/shield_diffuser/SD in global.machines)
if(SD.z in affecting_z)
SD.meteor_alarm(10)
if(waves && activeFor >= next_meteor)
wave()
/datum/event/meteor_wave/meatyores/proc/wave()
var/pick_side = prob(80) ? start_side : (prob(50) ? turn(start_side, 90) : turn(start_side, -90))
if(!affecting_z.len)
return
spawn() spawn_meteors(get_wave_size(), get_meatyores(), pick_side, pick(affecting_z))
next_meteor += rand(next_meteor_lower, next_meteor_upper) / severity
waves--
endWhen = worst_case_end()
/datum/event/meteor_wave/meatyores/announce()
if(!victim)
switch(severity)
if(EVENT_LEVEL_MAJOR)
command_announcement.Announce("Meaty ores have been detected on collision course with \the [location_name()].", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
else
command_announcement.Announce("\The [location_name()] is now in a meaty ore shower.", "Meteor Alert")
/datum/event/meteor_wave/meatyores/proc/get_meatyores()
switch(severity)
if(EVENT_LEVEL_MAJOR)
return meatyores_major
if(EVENT_LEVEL_MODERATE)
return meatyores_moderate
else
return meatyores_minor
var/list/meatyores_minor = list(
/obj/effect/meteor/medium/meatyore = 80,
/obj/effect/meteor/dust/meatyore = 30,
/obj/effect/meteor/irradiated/meatyore = 30,
/obj/effect/meteor/big/meatyore = 30,
/obj/effect/meteor/flaming/meatyore = 10,
)
var/list/meatyores_moderate = list(
/obj/effect/meteor/medium/meatyore = 80,
/obj/effect/meteor/big/meatyore = 30,
/obj/effect/meteor/dust/meatyore = 30,
/obj/effect/meteor/irradiated/meatyore = 30,
/obj/effect/meteor/flaming/meatyore = 10,
/obj/effect/meteor/emp/meatyore = 10,
)
var/list/meatyores_major = list(
/obj/effect/meteor/medium/meatyore = 80,
/obj/effect/meteor/big/meatyore = 30,
/obj/effect/meteor/dust/meatyore = 30,
/obj/effect/meteor/irradiated/meatyore = 30,
/obj/effect/meteor/emp/meatyore = 30,
/obj/effect/meteor/flaming/meatyore = 10,
/obj/effect/meteor/tunguska/meatyore = 1,
)