diff --git a/code/modules/events/carp_migration.dm b/code/modules/events/carp_migration.dm index abab5c39254..cd9b0c02206 100644 --- a/code/modules/events/carp_migration.dm +++ b/code/modules/events/carp_migration.dm @@ -2,6 +2,10 @@ announceWhen = 50 endWhen = 900 + var/list/spawned_mobs = list( + /mob/living/simple_animal/hostile/carp = 95, + /mob/living/simple_animal/hostile/carp/megacarp = 5, + ) var/list/spawned_carp = list() /datum/event/carp_migration/setup() @@ -17,6 +21,7 @@ event_announcement.Announce(announcement, "Lifesign Alert") /datum/event/carp_migration/start() + if(severity == EVENT_LEVEL_MAJOR) spawn_fish(landmarks_list.len) else if(severity == EVENT_LEVEL_MODERATE) @@ -32,19 +37,17 @@ spawn_locations.Add(C.loc) spawn_locations = shuffle(spawn_locations) num_groups = min(num_groups, spawn_locations.len) - + var/i = 1 while(i <= num_groups) var/group_size = rand(group_size_min, group_size_max) for(var/j = 1, j <= group_size, j++) - var/carptype = /mob/living/simple_animal/hostile/carp - if(prob(5)) - carptype = /mob/living/simple_animal/hostile/carp/megacarp + var/carptype = pickweight(spawned_mobs) spawned_carp.Add(new carptype(spawn_locations[i])) i++ /datum/event/carp_migration/end() - for(var/mob/living/simple_animal/hostile/carp/C in spawned_carp) + for(var/mob/living/simple_animal/hostile/C in spawned_carp) if(!C.stat) var/turf/T = get_turf(C) if(istype(T, /turf/space)) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index ef7b99e1133..888e2b38dd1 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -139,7 +139,8 @@ var/list/event_last_fired = list() new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Sentience", /datum/event/sentience, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 15, is_one_shot = TRUE) + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 15, is_one_shot = TRUE), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Koi School", /datum/event/carp_migration/koi, 80,) ) /datum/event_container/moderate diff --git a/code/modules/events/koi_mirgration.dm b/code/modules/events/koi_mirgration.dm new file mode 100644 index 00000000000..868457721b2 --- /dev/null +++ b/code/modules/events/koi_mirgration.dm @@ -0,0 +1,9 @@ +/datum/event/carp_migration + spawned_mobs = list( + /mob/living/simple_animal/hostile/retaliate/carp/koi = 95, + /mob/living/simple_animal/hostile/retaliate/carp/koi/honk = 2, + ) + + +/datum/event/carp_migration/koi/start() + spawn_fish(landmarks_list.len) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm index 3462e8e18e7..7b10c0e828a 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/fish.dm @@ -27,4 +27,41 @@ speak_emote = list("gnashes") faction = list("carp") - flying = 1 \ No newline at end of file + flying = 1 + + +/mob/living/simple_animal/hostile/retaliate/carp/koi + name = "space koi" + desc = "A gentle space-faring koi." + icon = 'icons/obj/fish_items.dmi' + icon_state = "koi1" + icon_living = "koi1" + icon_dead = "koi1-dead" + + harm_intent_damage = 1 + melee_damage_lower = 2 + melee_damage_upper = 2 + speak_emote = list("blurps") + butcher_results = null + + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = 1500 + + gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE + +/mob/living/simple_animal/hostile/retaliate/carp/koi/New() + ..() + var/koinum = rand(1, 4) + icon_state = "koi[koinum]" + icon_living = "koi[koinum]" + icon_dead = "koi[koinum]-dead" + + +/mob/living/simple_animal/hostile/retaliate/carp/koi/Process_Spacemove(var/movement_dir) + return TRUE + +/mob/living/simple_animal/hostile/retaliate/carp/koi/honk + icon_state = "koi5" + icon_living = "koi5" + icon_dead = "koi5-dead" \ No newline at end of file diff --git a/icons/obj/fish_items.dmi b/icons/obj/fish_items.dmi index fd8eea36540..76a9486fee6 100644 Binary files a/icons/obj/fish_items.dmi and b/icons/obj/fish_items.dmi differ diff --git a/paradise.dme b/paradise.dme index 27b83d130fb..402b6bd167f 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1346,6 +1346,7 @@ #include "code\modules\events\immovable_rod.dm" #include "code\modules\events\infestation.dm" #include "code\modules\events\ion_storm.dm" +#include "code\modules\events\koi_mirgration.dm" #include "code\modules\events\mass_hallucination.dm" #include "code\modules\events\meaty_gore.dm" #include "code\modules\events\meaty_ops.dm"