diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index c7b55472b1c..0daab05e340 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -10,6 +10,10 @@ /var/list/meteors_dust = list(/obj/effect/meteor/dust) //for space dust event +/var/list/meteors_gore = list(/obj/effect/meteor/gore) //Meaty Gore + +/var/list/meteors_ops = list(/obj/effect/meteor/goreops) //Meaty Ops + /////////////////////////////// //Meteor spawning global procs @@ -256,3 +260,54 @@ ..() if(prob(20)) explosion(src.loc,2,4,6,8) + + +//Gore +/obj/effect/meteor/gore + name = "Oraganic Debris" + icon = 'icons/mob/human.dmi' + icon_state = "body_m_s" + hits = 1 + hitpwr = 0 + meteorsound = 'sound/effects/blobattack.ogg' + meteordrop = /obj/item/weapon/reagent_containers/food/snacks/meat + var/meteorgibs = /obj/effect/gibspawner/generic + +/obj/effect/meteor/gore/make_debris() + ..() + new meteorgibs(get_turf(src)) + + +/obj/effect/meteor/gore/ram_turf(turf/T) + if(!istype(T, /turf/space)) + new /obj/effect/decal/cleanable/blood (T) + +/obj/effect/meteor/gore/Bump(atom/A) + A.ex_act(hitpwr) + get_hit() + +//Meteor Ops +/obj/effect/meteor/goreops + name = "MeteorOps" + icon = 'icons/mob/animal.dmi' + icon_state = "syndicaterangedpsace" + hits = 3 + hitpwr = 3 + meteorsound = 'sound/effects/blobattack.ogg' + meteordrop = /obj/item/weapon/reagent_containers/food/snacks/meat + var/meteorgibs = /obj/effect/gibspawner/generic + +/obj/effect/meteor/goreops/make_debris() + ..() + new meteorgibs(get_turf(src)) + + +/obj/effect/meteor/goreops/ram_turf(turf/T) + if(!istype(T, /turf/space)) + new /obj/effect/decal/cleanable/blood (T) + +/obj/effect/meteor/goreops/Bump(atom/A) + A.ex_act(hitpwr) + get_hit() + + diff --git a/code/modules/events/meaty_gore.dm b/code/modules/events/meaty_gore.dm index 2306e13dbd0..729f5182344 100644 --- a/code/modules/events/meaty_gore.dm +++ b/code/modules/events/meaty_gore.dm @@ -1,47 +1,17 @@ -/datum/event/dust/gore/announce() +/datum/event/meteor_wave/gore/announce() command_announcement.Announce("Unknown biological debris have been detected near [station_name()], please stand-by.", "Debris Alert") -/datum/event/dust/gore/setup() - qnty = rand(45,125) +/datum/event/meteor_wave/gore/setup() + waves = 3 -/datum/event/dust/gore/start() - while(qnty-- > 0) - new /obj/effect/space_dust/gore() - if(prob(10)) - sleep(rand(10,15)) -/obj/effect/space_dust/gore - icon = 'icons/mob/human.dmi' - icon_state = "body_m_s" +/datum/event/meteor_wave/gore/tick() + if(waves && activeFor >= next_meteor) + spawn() spawn_meteors(rand(5,8), meteors_gore) + next_meteor += rand(15, 30) + waves-- + endWhen = (waves ? next_meteor + 1 : activeFor + 15) - strength = 1 - life = 1 -/obj/effect/space_dust/gore/Bump(atom/A) - if(prob(20)) - spawn(1) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) - shake_camera(M, 3, 1) - if (A) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - walk(src,0) - invisibility = 101 - new /obj/effect/decal/cleanable/blood(get_turf(A)) - if(ismob(A)) - A.ex_act(strength) - else - spawn(0) - if(A) - A.ex_act(strength) - if(src) - walk_towards(src,goal,1) - life-- - if(!life) - if(prob(80)) - gibs(loc) - if(prob(45)) - new /obj/item/weapon/reagent_containers/food/snacks/meat(loc) - new /obj/effect/decal/cleanable/blood/gibs(loc) - - qdel(src) \ No newline at end of file +/datum/event/meteor_wave/gore/end() + command_announcement.Announce("The station has cleared the debris.", "Debris Alert") diff --git a/code/modules/events/meaty_ops.dm b/code/modules/events/meaty_ops.dm index 5bc32c32640..0c9b95cfc5a 100644 --- a/code/modules/events/meaty_ops.dm +++ b/code/modules/events/meaty_ops.dm @@ -1,47 +1,19 @@ -/datum/event/dust/goreop/announce() +/datum/event/meteor_wave/goreop/announce() var/meteor_declaration = "MeteorOps have declared thier intent to utterly destroy [station_name()] with thier own bodies, and dares the crew to try and stop them." command_announcement.Announce(meteor_declaration, "Declaration of 'War'", 'sound/effects/siren.ogg') -/datum/event/dust/goreop/setup() - qnty = rand(45,125) +/datum/event/meteor_wave/goreop/setup() + waves = 3 -/datum/event/dust/goreop/start() - while(qnty-- > 0) - new /obj/effect/space_dust/gore() - if(prob(10)) - sleep(rand(10,15)) -/obj/effect/space_dust/goreop - icon = 'icons/mob/animal.dmi' - icon_state = "syndicaterangedpsace" +/datum/event/meteor_wave/goreop/tick() + if(waves && activeFor >= next_meteor) + spawn() spawn_meteors(5, meteors_ops) + next_meteor += rand(15, 30) + waves-- + endWhen = (waves ? next_meteor + 1 : activeFor + 15) - strength = 1 - life = 1 -/obj/effect/space_dust/goreop/Bump(atom/A) - if(prob(20)) - spawn(1) - for(var/mob/M in range(10, src)) - if(!M.stat && !istype(M, /mob/living/silicon/ai)) - shake_camera(M, 3, 1) - if (A) - playsound(src.loc, 'sound/effects/meteorimpact.ogg', 40, 1) - walk(src,0) - new /obj/effect/decal/cleanable/blood(get_turf(A)) - if(ismob(A)) - A.ex_act(strength) - else - spawn(0) - if(A) - A.ex_act(strength) - if(src) - walk_towards(src,goal,1) - life-- - if(!life) - if(prob(80)) - gibs(loc) - if(prob(45)) - new /obj/item/weapon/reagent_containers/food/snacks/meat(loc) - new /obj/effect/decal/cleanable/blood/gibs(loc) - qdel(src) \ No newline at end of file +/datum/event/meteor_wave/end() + command_announcement.Announce("All MeteorOps are dead. Major Station Victory.", "MeteorOps") \ No newline at end of file