mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-29 03:22:12 +00:00
Meatyores (#7475)
This commit is contained in:
95
modular_chomp/code/game/gamemodes/meteor/meteors.dm
Normal file
95
modular_chomp/code/game/gamemodes/meteor/meteors.dm
Normal 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))
|
||||
44
modular_chomp/code/game/objects/random/misc.dm
Normal file
44
modular_chomp/code/game/objects/random/misc.dm
Normal 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)
|
||||
@@ -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),
|
||||
|
||||
68
modular_chomp/code/modules/events/meatyores.dm
Normal file
68
modular_chomp/code/modules/events/meatyores.dm
Normal 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,
|
||||
)
|
||||
Reference in New Issue
Block a user