diff --git a/code/game/magic/Uristrunes.dm b/code/game/magic/Uristrunes.dm index 6234c76454..6e0abd177e 100644 --- a/code/game/magic/Uristrunes.dm +++ b/code/game/magic/Uristrunes.dm @@ -126,6 +126,6 @@ var/list/uristrune_cache = list() result.Insert(I3, "", frame = 7, delay = 2) result.Insert(I2, "", frame = 8, delay = 2) - uristrune_cache[lookup] = result + uristrune_cache[lookup] = result return result diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index d357740a6f..68f57112cb 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -95,15 +95,16 @@ anchored = 0 layer = 2.7 health = 3 - var/amount_grown = 0 + var/amount_grown = -1 var/obj/machinery/atmospherics/unary/vent_pump/entry_vent var/travelling_in_vent = 0 New() pixel_x = rand(6,-6) pixel_y = rand(6,-6) + processing_objects.Add(src) //50% chance to grow up if(prob(50)) - processing_objects.Add(src) + amount_grown = 1 /obj/effect/spider/spiderling/Bump(atom/user) if(istype(user, /obj/structure/table)) @@ -134,8 +135,8 @@ entry_vent = null return var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents) - if(prob(50)) - src.visible_message("[src] scrambles into the ventillation ducts!") + /*if(prob(50)) + src.visible_message("[src] scrambles into the ventillation ducts!")*/ spawn(rand(20,60)) loc = exit_vent @@ -164,21 +165,24 @@ entry_vent = null //================= - else if(prob(33)) - var/list/nearby = oview(10, src) + else if(prob(25)) + var/list/nearby = oview(5, src) if(nearby.len) var/target_atom = pick(nearby) - walk_to(src, target_atom) - if(prob(40)) + walk_to(src, target_atom, 5) + if(prob(25)) src.visible_message("\blue \the [src] skitters[pick(" away"," around","")].") - else if(prob(10)) + else if(prob(5)) //ventcrawl! for(var/obj/machinery/atmospherics/unary/vent_pump/v in view(7,src)) if(!v.welded) entry_vent = v - walk_to(src, entry_vent, 1) + walk_to(src, entry_vent, 5) break - if(isturf(loc)) + + if(prob(1)) + src.visible_message("\blue \the [src] chitters.") + if(isturf(loc) && amount_grown > 0) amount_grown += rand(0,2) if(amount_grown >= 100) var/spawn_type = pick(typesof(/mob/living/simple_animal/hostile/giant_spider)) diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index 38e86ec0e5..4366293cd5 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -47,13 +47,13 @@ possibleEvents[/datum/event/infestation] = 50 + 25 * active_with_role["Janitor"] possibleEvents[/datum/event/communications_blackout] = 50 + 25 * active_with_role["AI"] + active_with_role["Scientist"] * 25 - possibleEvents[/datum/event/ionstorm] = active_with_role["AI"] * 25 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5 - possibleEvents[/datum/event/grid_check] = 10 * active_with_role["Engineer"] + possibleEvents[/datum/event/ionstorm] = 25 + active_with_role["AI"] * 25 + active_with_role["Cyborg"] * 25 + active_with_role["Engineer"] * 10 + active_with_role["Scientist"] * 5 + possibleEvents[/datum/event/grid_check] = 25 + 10 * active_with_role["Engineer"] possibleEvents[/datum/event/electrical_storm] = 75 + 25 * active_with_role["Janitor"] + 5 * active_with_role["Engineer"] if(!spacevines_spawned) possibleEvents[/datum/event/spacevine] = 5 + 10 * active_with_role["Engineer"] - if(active_with_role["Engineer"] > 0 && minutes_passed >= 30) // Give engineers time to set up engine + if(minutes_passed >= 30) // Give engineers time to set up engine possibleEvents[/datum/event/meteor_wave] = 20 * active_with_role["Engineer"] possibleEvents[/datum/event/meteor_shower] = 80 * active_with_role["Engineer"] possibleEvents[/datum/event/blob] = 30 * active_with_role["Engineer"] @@ -64,8 +64,8 @@ possibleEvents[/datum/event/spontaneous_appendicitis] = active_with_role["Medical"] * 75 possibleEvents[/datum/event/viral_outbreak] = active_with_role["Medical"] * 5 + possibleEvents[/datum/event/prison_break] = active_with_role["Security"] * 50 if(active_with_role["Security"] > 0) - possibleEvents[/datum/event/prison_break] = active_with_role["Security"] * 50 if(!sent_spiders_to_station) possibleEvents[/datum/event/spider_infestation] = max(active_with_role["Security"], 5) + 5 if(aliens_allowed && !sent_aliens_to_station) @@ -73,6 +73,15 @@ if(!sent_ninja_to_station && toggle_space_ninja) possibleEvents[/datum/event/space_ninja] = max(active_with_role["Security"], 5) + // Debug code below here, very useful for testing so don't delete please. + /*var/debug_message = "Firing random event. " + for(var/V in active_with_role) + debug_message += "#[V]:[active_with_role[V]] " + debug_message += "||| " + for(var/V in possibleEvents) + debug_message += "[V]:[possibleEvents[V]]" + message_admins(debug_message)*/ + var/picked_event = pickweight(possibleEvents) if(!picked_event) return @@ -160,32 +169,32 @@ for(var/mob/M in player_list) if(!M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive continue - switch(role) - if("Engineer") - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module") - active_with_role["Engineer"]++ - if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer")) - active_with_role["Engineer"]++ - if("Medical") - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module") - active_with_role["Medical"]++ - if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor")) - active_with_role["Medical"]++ - if("Security") - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module") - active_with_role["Security"]++ - if(M.mind.assigned_role in security_positions) - active_with_role["Security"]++ - if("Scientist") - if(M.mind.assigned_role in list("Research Director", "Scientist")) - active_with_role["Scientist"]++ - if("AI") - if(M.mind.assigned_role == "AI") - active_with_role["AI"]++ - if("Cyborg") - if(M.mind.assigned_role == "Cyborg") - active_with_role["Cyborg"]++ - if("Janitor") - if(M.mind.assigned_role == "Janitor") - active_with_role["Janitor"]++ + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module") + active_with_role["Engineer"]++ + if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer")) + active_with_role["Engineer"]++ + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module") + active_with_role["Medical"]++ + if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor")) + active_with_role["Medical"]++ + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module") + active_with_role["Security"]++ + if(M.mind.assigned_role in security_positions) + active_with_role["Security"]++ + + if(M.mind.assigned_role in list("Research Director", "Scientist")) + active_with_role["Scientist"]++ + + if(M.mind.assigned_role == "AI") + active_with_role["AI"]++ + + if(M.mind.assigned_role == "Cyborg") + active_with_role["Cyborg"]++ + + if(M.mind.assigned_role == "Janitor") + active_with_role["Janitor"]++ + return active_with_role diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 40f8483ca4..8cc24df656 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -3,7 +3,7 @@ var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event //var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event - /datum/event/spider_infestation - /datum/event/alien_infestation var/eventTimeLower = 15000 //15 minutes -var/eventTimeUpper = 30000 //45 minutes +var/eventTimeUpper = 30000 //30 minutes var/scheduledEvent = null @@ -25,11 +25,11 @@ var/scheduledEvent = null playercount_modifier = 1.2 if(11 to 15) playercount_modifier = 1.1 - if(16 to 20) + if(16 to 25) playercount_modifier = 1 - if(21 to 25) + if(26 to 35) playercount_modifier = 0.9 - if(26 to 100000) + if(36 to 100000) playercount_modifier = 0.8 scheduledEvent = world.timeofday + rand(eventTimeLower, eventTimeUpper) * playercount_modifier diff --git a/code/modules/events/infestation.dm b/code/modules/events/infestation.dm index 04dc7d46a1..dd9793cc66 100644 --- a/code/modules/events/infestation.dm +++ b/code/modules/events/infestation.dm @@ -11,7 +11,7 @@ #define VERM_MICE 0 #define VERM_LIZARDS 1 -#define VERM_SLIMES 2 +#define VERM_SPIDERS 2 /datum/event/infestation announceWhen = 10 @@ -81,20 +81,24 @@ spawn_types = list(/mob/living/simple_animal/lizard) max_number = 6 vermstring = "lizards" - if(VERM_SLIMES) - spawn_types = list(/mob/living/carbon/slime) - max_number = 3 - vermstring = "slimes" + if(VERM_SPIDERS) + spawn_types = list(/obj/effect/spider/spiderling) + max_number = 6 + vermstring = "spiders" spawn(0) var/num = rand(2,max_number) while(turfs.len > 0 && num > 0) var/turf/simulated/floor/T = pick(turfs) turfs.Remove(T) - var/spawn_type = pick(spawn_types) - new spawn_type(T) num-- - //world << "[vermstring] spawned in [spawn_area_type]" + + if(vermin == VERM_SPIDERS) + var/obj/effect/spider/spiderling/S = new(T) + S.amount_grown = -1 + else + var/spawn_type = pick(spawn_types) + new spawn_type(T) /datum/event/infestation/announce() command_alert("Bioscans indicate that [vermstring] have been breeding in [locstring]. Clear them out, before this starts to affect productivity.", "Vermin infestation") @@ -111,4 +115,4 @@ #undef VERM_MICE #undef VERM_LIZARDS -#undef VERM_SLIMES \ No newline at end of file +#undef VERM_SPIDERS \ No newline at end of file diff --git a/code/modules/events/viral_infection.dm b/code/modules/events/viral_infection.dm index 3644905d8c..2798e51dfb 100644 --- a/code/modules/events/viral_infection.dm +++ b/code/modules/events/viral_infection.dm @@ -8,7 +8,7 @@ datum/event/viral_infection/setup() severity = rand(1, 3) datum/event/viral_infection/announce() - command_alert("Confirmed outbreak of level [severity + rand(2,3)] biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") + command_alert("Confirmed outbreak of level five biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") world << sound('sound/AI/outbreak5.ogg') datum/event/viral_infection/start() diff --git a/code/modules/events/viral_outbreak.dm b/code/modules/events/viral_outbreak.dm index 49fbcdebd6..7a21ecccf9 100644 --- a/code/modules/events/viral_outbreak.dm +++ b/code/modules/events/viral_outbreak.dm @@ -8,7 +8,7 @@ datum/event/viral_outbreak/setup() severity = rand(2, 4) datum/event/viral_outbreak/announce() - command_alert("Confirmed outbreak of level [severity + rand(3,5)] biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") + command_alert("Confirmed outbreak of level 7 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") world << sound('sound/AI/outbreak7.ogg') datum/event/viral_outbreak/start() diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index f3418c8fee..b94901a637 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -186,6 +186,9 @@ M.powernet = PN P = M.get_connections() + else + return + if(P.len == 0) return O = P[1]