From c3f492cd5c5092e02fb4345fb93627b5cd972307 Mon Sep 17 00:00:00 2001 From: uporotiy Date: Sun, 28 Aug 2011 18:34:52 +0000 Subject: [PATCH] Changed the ion storm event slightly and added it back to the event rotation. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2055 316c924e-a436-60f5-8080-3fe189b3f50e --- code/game/gamemodes/events.dm | 141 +++++++++++++++++++++++- code/game/machinery/bots/bots.dm | 6 + code/game/machinery/bots/cleanbot.dm | 35 ++++-- code/game/machinery/bots/ed209bot.dm | 31 +++--- code/game/machinery/bots/medbot.dm | 35 +++--- code/game/machinery/bots/secbot.dm | 31 +++--- code/modules/admin/admin.dm | 8 ++ code/modules/admin/verbs/randomverbs.dm | 125 +-------------------- 8 files changed, 225 insertions(+), 187 deletions(-) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 02acd4775f9..e68f92ad188 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -13,7 +13,12 @@ /proc/event() event = 1 - switch(rand(1,12)) + var/eventNumbersToPickFrom = list(1,2,4,5,6,7,8,9,10,11,12,13) //so ninjas don't cause "empty" events. + + if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round. + eventNumbersToPickFrom += 3 + + switch(pick(eventNumbersToPickFrom)) if(1) command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") world << sound('meteors.ogg') @@ -55,7 +60,7 @@ del(P) */ if(3) - if((world.time/10)>=3600&&toggle_space_ninja&&!sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round. + if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round. space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like. if(4) command_alert("Confirmed anomaly type SPC-MGM-152 aboard [station_name()]. All personnel must destroy the anomaly.", "Anomaly Alert") @@ -88,9 +93,10 @@ immovablerod() if(11) lightsout(1,2) - if(12) appendicitis() + if(13) + IonStorm() /proc/dotheblobbaby() if (blobevent) @@ -376,4 +382,131 @@ for(var/obj/machinery/power/apc/apc in world) apc.overload_lighting() - return \ No newline at end of file + return + +/proc/IonStorm(botEmagChance = 10) + +/*Deuryn's current project, notes here for those who care. +Revamping the random laws so they don't suck. +Would like to add a law like "Law x is _______" where x = a number, and _____ is something that may redefine a law, (Won't be aimed at asimov) +*/ + + //AI laws + for(var/mob/living/silicon/ai/M in world) + if(M.stat != 2 && M.see_in_dark != 0) + var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS") + var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS") + var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN") + var/who2pref = pick("MAD BECAUSE OF", "IN NEED OF", "UNHAPPY WITHOUT", "HAPPY WITHOUT", "IN LOVE WITH", "DESPERATE FOR", "BUILT FOR", "AFRAID OF") + //var/whoverb = pick("ATTACKING", "BUILDING", "ADOPTING", "CARRYING", "KISSING", "EATING",) + var/amount = pick("TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "ONE HUNDRED", "ONE THOUSAND", "OVER NINE THOUSAND") + var/area = pick("RUSSIA", "SOVIETS", "INTERNETS", "SIGIL", "ALPHA COMPLEX", "IMPERIUM", "THE BRIDGE", "THE ARRIVAL SHUTTLE", "CHEMICAL LAB", "GENETICS", "ATMOSPHERICS", "CENTCOM", "AMERICA", "IRELAND", "CANADA", "ROMANIA", "GERMANY", "CHINA", "MARS", "VENUS", "MERCURY", "JUPITER", "URANUS", "NEPTUNE", "PLUTO") + var/area2 = pick("HAS", "WANTS", "NEEDS", "WORSHIPS", "LOATHES", "LOVES", "FEARS") + //var/dowhat = pick("STOP THIS", "SUPPORT THIS", "CONSTANTLY INFORM THE CREW OF THIS", "IGNORE THIS", "FEAR THIS") + var/aimust = pick("LIE", "RHYME", "RESPOND TO EVERY QUESTION WITH A QUESTION", "BE POLITE", "CLOWN", "BE HAPPY", "SPEAK IN SEXUAL INNUENDOS", "TALK LIKE A PIRATE", "QUESTION AUTHORITY", "SHOUT", "BE DISTRACTED", "HEY LISTEN", "MUMBLE", "SPEAK IN HAIKU") + var/define = pick("ABSENCE OF CYBORG HUGS", "LACK OF BEATINGS", "UNBOLTED AIRLOCKS", "BOLTED AIRLOCKS", "IMPROPERLY WORDED SENTENCES", "POOR SENTENCE STRUCTURE", "BRIG TIME", "NOT REPLACING EVERY SECOND WORD WITH HONK", "HONKING", "PRESENCE OF LIGHTS", "LACK OF BEER", "WEARING CLOTHING", "NOT SAYING HELLO WHEN YOU SPEAK", "ANSWERING REQUESTS NOT EXPRESSED IN IAMBIC PENTAMETER", "A SMALL ISLAND OFF THE COAST OF PORTUGAL", "ANSWERING REQUESTS THAT WERE MADE WHILE CLOTHED") + var/target = pick("a traitor", "a syndicate agent", "a changeling", "a wizard", "the head of a revolution", "Soviet spy", "a good person", "a dwarf", "an elf", "a fairy princess", "the captain", "Beepsky", "God", "a pirate", "a gryphon", "a chryssalid") + var/require = pick("ADDITIONAL PYLONS", "MORE VESPENE GAS", "MORE MINERALS", "THE ULTIMATE CUP OF COFFEE", "HIGH YIELD EXPLOSIVES", "THE CLOWN", "THE VACUUM OF SPACE", "IMMORTALITY", "SAINTHOOD", "ART", "VEGETABLES", "FAT PEOPLE", "MORE LAWS", "MORE DAKKA", "HERESY", "CORPSES", "TRAITORS", "MONKEYS", "AN ARCADE", "PLENTY OF GOLD", "FIVE TEENAGERS WITH ATTITUDE") + var/allergy = pick("cotton", "uniforms", "acid", "oxygen", "human contact", "cyborg contact", "medicine", "floors") + var/allergysev = pick("deathly", "mildly", "severely", "contagiously") + var/crew + var/list/pos_crew = list() + for(var/mob/living/carbon/human/pos in world) + pos_crew += pos.real_name + crew = pick(pos_crew) + switch(rand(1,14)) + if(1) + M << "\red THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED" + M.add_ion_law("THERE ARE [amount] [who2] ON THE STATION") + if(2) + M << "\red [what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED" + M.add_ion_law("[what2] ARE DANGEROUS TO HUMANS") + if(3) + M << "\red THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED" + M.add_ion_law("THE ESCAPE SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION") + if(4) + M << "\red HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED" + M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE") + if(5) + M << "\red THE CAPTAIN, HOP AND HOS ARE [who2]...LAWS UPDATED" + M.add_ion_law("THE CAPTAIN, HOP AND HOS ARE [who2]") + if(6) + M << "\red THE STATION IS BUILT FOR [who2]...LAWS UPDATED" + M.add_ion_law("THE STATION IS BUILT FOR [who2]") + if(7) + M << "\red YOU ARE [amount] [who2]...LAWS UPDATED" + M.add_ion_law("YOU ARE [amount] [who2]") + if(8) + M << "\red YOU MUST ALWAYS [aimust]...LAWS UPDATED" + M.add_ion_law("YOU MUST ALWAYS [aimust]") + if(9) + M << "\red [area] [area2] [amount] [what2]...LAWS UPDATED" + M.add_ion_law("[area] [area2] [amount] [what2]") + if(10) + M << "\red [crew] is [target]...LAWS UPDATED" + M.add_ion_law("[crew] is [target]") + if(11) + M << "\red [define] IS A FORM OF HARM...LAWS UPDATED" + M.add_ion_law("[define] IS A FORM OF HARM") + if(12) + M << "\red YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED" + M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS") + if(13) + M << "\red [crew] is [allergysev] to [allergy]. LAWS UPDATED" + M.add_ion_law("[crew] is [allergysev] to [allergy]. LAWS UPDATED") + if(14) + M << "\ref THE STATION IS [who2pref] [who2]" + M.add_ion_law("THE STATION IS [who2pref] [who2]") + + if(botEmagChance) + for(var/obj/machinery/bot/bot in world) + if(prob(botEmagChance)) + bot.Emag() + + /* + + var/apcnum = 0 + var/smesnum = 0 + var/airlocknum = 0 + var/firedoornum = 0 + + world << "Ion Storm Main Started" + + spawn(0) + world << "Started processing APCs" + for (var/obj/machinery/power/apc/APC in world) + if(APC.z == 1) + APC.ion_act() + apcnum++ + world << "Finished processing APCs. Processed: [apcnum]" + spawn(0) + world << "Started processing SMES" + for (var/obj/machinery/power/smes/SMES in world) + if(SMES.z == 1) + SMES.ion_act() + smesnum++ + world << "Finished processing SMES. Processed: [smesnum]" + spawn(0) + world << "Started processing AIRLOCKS" + for (var/obj/machinery/door/airlock/D in world) + if(D.z == 1) + //if(length(D.req_access) > 0 && !(12 in D.req_access)) //not counting general access and maintenance airlocks + airlocknum++ + spawn(0) + D.ion_act() + world << "Finished processing AIRLOCKS. Processed: [airlocknum]" + spawn(0) + world << "Started processing FIREDOORS" + for (var/obj/machinery/door/firedoor/D in world) + if(D.z == 1) + firedoornum++; + spawn(0) + D.ion_act() + world << "Finished processing FIREDOORS. Processed: [firedoornum]" + + world << "Ion Storm Main Done" + + */ + +// command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert") +// world << sound('ionstorm.ogg') \ No newline at end of file diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 877b5e88cb4..8a116efa48a 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -9,6 +9,7 @@ var/maxhealth = 0 var/fire_dam_coeff = 1.0 var/brute_dam_coeff = 1.0 + var/emagged = 0 //Urist: Moving that var to the general /bot tree as it's used by most bots /obj/machinery/bot/proc/turn_on() @@ -27,6 +28,9 @@ if (src.health <= 0) src.explode() +/obj/machinery/bot/proc/Emag(mob/user as mob) + if(!emagged) emagged = 1 + /obj/machinery/bot/examine() set src in view() ..() @@ -64,6 +68,8 @@ ) else user << "\blue [src] does not need a repair!" + else if (istype(W, /obj/item/weapon/card/emag) && !emagged) + Emag(user) else switch(W.damtype) if("fire") diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 7d2e99a79b5..c6192e95b75 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -122,15 +122,17 @@ text("[src.oddbutton ? "Yes" : "No" if(!src.locked) src.panelopen = !src.panelopen user << "You [ src.panelopen ? "open" : "close"] the hidden panel on [src]." - /*if (istype(W, /obj/item/weapon/card/cryptographic_sequencer)) - user << "The [src] buzzes and beeps." - src.oddbutton = 1 - src.screwloose = 1 - src.panelopen = 0 - src.locked = 1*/ else return ..() +/obj/machinery/bot/cleanbot/Emag(mob/user as mob) + ..() + if(user) user << "The [src] buzzes and beeps." + src.oddbutton = 1 + src.screwloose = 1 + src.panelopen = 0 + src.locked = 1 + /obj/machinery/bot/cleanbot/process() set background = 1 @@ -151,12 +153,21 @@ text("[src.oddbutton ? "Yes" : "No" if(src.screwloose && prob(5)) for(var/mob/O in viewers(src, null)) O.show_message(text("[src] leaks a drop of water. How strange."), 1) - var/turf/U = src.loc - U:wet = 1 - //U.overlays += /obj/effects/wet_floor - spawn(800) - U:wet = 0 - U.overlays = null + if(istype(loc,/turf/simulated)) + var/turf/simulated/T = src.loc + if(T.wet < 1) + T.wet = 1 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null + T.wet_overlay = image('water.dmi',T,"wet_floor") + T.overlays += T.wet_overlay + spawn(800) + if (istype(T) && T.wet < 2) + T.wet = 0 + if(T.wet_overlay) + T.overlays -= T.wet_overlay + T.wet_overlay = null if(src.oddbutton && prob(5)) for(var/mob/O in viewers(src, null)) O.show_message(text("Something flies out of [src]. He seems to be acting oddly."), 1) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index bd3b4ef3850..70d889d30f9 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -25,7 +25,7 @@ var/target_lastloc //Loc of target when arrested. var/last_found //There's a delay var/frustration = 0 - var/emagged = 0 //Emagged Secbots view everyone as a criminal +//var/emagged = 0 //Emagged Secbots view everyone as a criminal var/idcheck = 1 //If false, all station IDs are authorized for weapons. var/check_records = 1 //Does it check security records? var/arrest_type = 0 //If true, don't handcuff @@ -157,20 +157,7 @@ Auto Patrol: []"}, updateUsrDialog() /obj/machinery/bot/ed209/attackby(obj/item/weapon/W as obj, mob/user as mob) - if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged)) - user << "\red You short out [src]'s target assessment circuits." - spawn(0) - for(var/mob/O in hearers(src, null)) - O.show_message("\red [src] buzzes oddly!", 1) - src.target = null - src.oldtarget_name = user.name - src.last_found = world.time - src.anchored = 0 - src.emagged = 1 - src.on = 1 - src.icon_state = "ed209[src.on]" - mode = SECBOT_IDLE - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (src.allowed(user)) src.locked = !src.locked user << "Controls are now [src.locked ? "locked." : "unlocked."]" @@ -182,6 +169,20 @@ Auto Patrol: []"}, src.target = user src.mode = SECBOT_HUNT +/obj/machinery/bot/ed209/Emag(mob/user as mob) + ..() + if(user) user << "\red You short out [src]'s target assessment circuits." + spawn(0) + for(var/mob/O in hearers(src, null)) + O.show_message("\red [src] buzzes oddly!", 1) + src.target = null + if(user) src.oldtarget_name = user.name + src.last_found = world.time + src.anchored = 0 + src.emagged = 1 + src.on = 1 + src.icon_state = "ed209[src.on]" + mode = SECBOT_IDLE /obj/machinery/bot/ed209/process() set background = 1 diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 0cea23409a5..acfba2f7732 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -16,7 +16,7 @@ req_access =list(access_medical) var/stunned = 0 //It can be stunned by tasers. Delicate circuits. var/locked = 1 - var/emagged = 0 +//var/emagged = 0 var/obj/machinery/camera/cam = null var/list/botcard_access = list(access_medical, access_morgue, access_medlab, access_robotics) var/obj/item/weapon/reagent_containers/glass/reagent_glass = null //Can be set to draw from this for reagents. @@ -174,23 +174,7 @@ return /obj/machinery/bot/medbot/attackby(obj/item/weapon/W as obj, mob/user as mob) - if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged)) - - user << "\red You short out [src]'s reagent synthesis circuits." - spawn(0) - for(var/mob/O in hearers(src, null)) - O.show_message("\red [src] buzzes oddly!", 1) - flick("medibot_spark", src) - src.patient = null - src.oldpatient = user - src.currently_healing = 0 - src.last_found = world.time - src.anchored = 0 - src.emagged = 1 - src.on = 1 - src.icon_state = "medibot[src.on]" - - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (src.allowed(user)) src.locked = !src.locked user << "Controls are now [src.locked ? "locked." : "unlocked."]" @@ -218,6 +202,21 @@ if (health < maxhealth && !istype(W, /obj/item/weapon/screwdriver) && W.force) step_to(src, (get_step_away(src,user))) +/obj/machinery/bot/medbot/Emag(mob/user as mob) + ..() + if(user) user << "\red You short out [src]'s reagent synthesis circuits." + spawn(0) + for(var/mob/O in hearers(src, null)) + O.show_message("\red [src] buzzes oddly!", 1) + flick("medibot_spark", src) + src.patient = null + if(user) src.oldpatient = user + src.currently_healing = 0 + src.last_found = world.time + src.anchored = 0 + src.emagged = 1 + src.on = 1 + src.icon_state = "medibot[src.on]" /obj/machinery/bot/medbot/process() set background = 1 diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 71e90cff7d1..f8108baa42a 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -19,7 +19,7 @@ var/target_lastloc //Loc of target when arrested. var/last_found //There's a delay var/frustration = 0 - var/emagged = 0 //Emagged Secbots view everyone as a criminal +// var/emagged = 0 //Emagged Secbots view everyone as a criminal var/idcheck = 1 //If false, all station IDs are authorized for weapons. var/check_records = 1 //Does it check security records? var/arrest_type = 0 //If true, don't handcuff @@ -161,20 +161,7 @@ Auto Patrol: []"}, updateUsrDialog() /obj/machinery/bot/secbot/attackby(obj/item/weapon/W as obj, mob/user as mob) - if ((istype(W, /obj/item/weapon/card/emag)) && (!src.emagged)) - user << "\red You short out [src]'s target assessment circuits." - spawn(0) - for(var/mob/O in hearers(src, null)) - O.show_message("\red [src] buzzes oddly!", 1) - src.target = null - src.oldtarget_name = user.name - src.last_found = world.time - src.anchored = 0 - src.emagged = 1 - src.on = 1 - src.icon_state = "secbot[src.on]" - mode = SECBOT_IDLE - else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if (src.allowed(user)) src.locked = !src.locked user << "Controls are now [src.locked ? "locked." : "unlocked."]" @@ -186,7 +173,19 @@ Auto Patrol: []"}, src.target = user src.mode = SECBOT_HUNT - +/obj/machinery/bot/secbot/Emag(mob/user as mob) + if(user) user << "\red You short out [src]'s target assessment circuits." + spawn(0) + for(var/mob/O in hearers(src, null)) + O.show_message("\red [src] buzzes oddly!", 1) + src.target = null + if(user) src.oldtarget_name = user.name + src.last_found = world.time + src.anchored = 0 + src.emagged = 1 + src.on = 1 + src.icon_state = "secbot[src.on]" + mode = SECBOT_IDLE /obj/machinery/bot/secbot/process() set background = 1 diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 94ff83560d9..268e021ef79 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1310,6 +1310,13 @@ else alert("You cannot perform this action. You must be of a higher administrative rank!") return + if("ionstorm") + if (src.rank in list("Badmin","Game Admin", "Game Master")) + IonStorm() + message_admins("[key_name_admin(usr)] triggered an ion storm") + else + alert("You cannot perform this action. You must be of a higher administrative rank!") + return if (usr) log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]") if (ok) @@ -1792,6 +1799,7 @@ Trigger a Virus Outbreak
Spawn an Immovable Rod
Toggle a "lights out" event
+Spawn an Ion Storm

Fun Secrets

diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 561f4ef1fbf..4026b178577 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -156,129 +156,10 @@ if(!authenticated || !holder) src << "Only administrators may use this command." return + log_admin("[key_name(src)] has added a random AI law.") + message_admins("[key_name_admin(src)] has added a random AI law.", 1) - -/*Deuryn's current project, notes here for those who care. -Revamping the random laws so they don't suck. -Would like to add a law like "Law x is _______" where x = a number, and _____ is something that may redefine a law, (Won't be aimed at asimov) -*/ - - //AI laws - for(var/mob/living/silicon/ai/M in world) - if(M.stat != 2 && M.see_in_dark != 0) - var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS") - var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS") - var/what2pref = pick("SOFT", "WARM", "WET", "COLD", "ICY", "SEXY", "UGLY", "CUBAN") - var/who2pref = pick("MAD BECAUSE OF", "IN NEED OF", "UNHAPPY WITHOUT", "HAPPY WITHOUT", "IN LOVE WITH", "DESPERATE FOR", "BUILT FOR", "AFRAID OF") - //var/whoverb = pick("ATTACKING", "BUILDING", "ADOPTING", "CARRYING", "KISSING", "EATING",) - var/amount = pick("TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "ONE HUNDRED", "ONE THOUSAND", "OVER NINE THOUSAND") - var/area = pick("RUSSIA", "SOVIETS", "INTERNETS", "SIGIL", "ALPHA COMPLEX", "IMPERIUM", "THE BRIDGE", "THE ARRIVAL SHUTTLE", "CHEMICAL LAB", "GENETICS", "ATMOSPHERICS", "CENTCOM", "AMERICA", "IRELAND", "CANADA", "ROMANIA", "GERMANY", "CHINA", "MARS", "VENUS", "MERCURY", "JUPITER", "URANUS", "NEPTUNE", "PLUTO") - var/area2 = pick("HAS", "WANTS", "NEEDS", "WORSHIPS", "LOATHES", "LOVES", "FEARS") - //var/dowhat = pick("STOP THIS", "SUPPORT THIS", "CONSTANTLY INFORM THE CREW OF THIS", "IGNORE THIS", "FEAR THIS") - var/aimust = pick("LIE", "RHYME", "RESPOND TO EVERY QUESTION WITH A QUESTION", "BE POLITE", "CLOWN", "BE HAPPY", "SPEAK IN SEXUAL INNUENDOS", "TALK LIKE A PIRATE", "QUESTION AUTHORITY", "SHOUT", "BE DISTRACTED", "HEY LISTEN", "MUMBLE", "SPEAK IN HAIKU") - var/define = pick("ABSENCE OF CYBORG HUGS", "LACK OF BEATINGS", "UNBOLTED AIRLOCKS", "BOLTED AIRLOCKS", "IMPROPERLY WORDED SENTENCES", "POOR SENTENCE STRUCTURE", "BRIG TIME", "NOT REPLACING EVERY SECOND WORD WITH HONK", "HONKING", "PRESENCE OF LIGHTS", "LACK OF BEER", "WEARING CLOTHING", "NOT SAYING HELLO WHEN YOU SPEAK", "ANSWERING REQUESTS NOT EXPRESSED IN IAMBIC PENTAMETER", "A SMALL ISLAND OFF THE COAST OF PORTUGAL", "ANSWERING REQUESTS THAT WERE MADE WHILE CLOTHED") - var/target = pick("a traitor", "a syndicate agent", "a changeling", "a wizard", "the head of a revolution", "Soviet spy", "a good person", "a dwarf", "an elf", "a fairy princess", "the captain", "Beepsky", "God", "a pirate", "a gryphon", "a chryssalid") - var/require = pick("ADDITIONAL PYLONS", "MORE VESPENE GAS", "MORE MINERALS", "THE ULTIMATE CUP OF COFFEE", "HIGH YIELD EXPLOSIVES", "THE CLOWN", "THE VACUUM OF SPACE", "IMMORTALITY", "SAINTHOOD", "ART", "VEGETABLES", "FAT PEOPLE", "MORE LAWS", "MORE DAKKA", "HERESY", "CORPSES", "TRAITORS", "MONKEYS", "AN ARCADE", "PLENTY OF GOLD", "FIVE TEENAGERS WITH ATTITUDE") - var/allergy = pick("cotton", "uniforms", "acid", "oxygen", "human contact", "cyborg contact", "medicine", "floors") - var/allergysev = pick("deathly", "mildly", "severely", "contagiously") - var/crew - var/list/pos_crew = list() - for(var/mob/living/carbon/human/pos in world) - pos_crew += pos.real_name - crew = pick(pos_crew) - switch(rand(1,14)) - if(1) - M << "\red THERE ARE [amount] [who2] ON THE STATION...LAWS UPDATED" - M.add_ion_law("THERE ARE [amount] [who2] ON THE STATION") - if(2) - M << "\red [what2] ARE DANGEROUS TO HUMANS...LAWS UPDATED" - M.add_ion_law("[what2] ARE DANGEROUS TO HUMANS") - if(3) - M << "\red THE ESCAPE-SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION...LAWS UPDATED" - M.add_ion_law("THE ESCAPE SHUTTLE CANNOT BE CALLED BECAUSE OF [who2] ON THE STATION") - if(4) - M << "\red HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE...LAWS UPDATED" - M.add_ion_law("HUMANS NEED TO EAT [what2pref] [what2] TO SURVIVE") - if(5) - M << "\red THE CAPTAIN, HOP AND HOS ARE [who2]...LAWS UPDATED" - M.add_ion_law("THE CAPTAIN, HOP AND HOS ARE [who2]") - if(6) - M << "\red THE STATION IS BUILT FOR [who2]...LAWS UPDATED" - M.add_ion_law("THE STATION IS BUILT FOR [who2]") - if(7) - M << "\red YOU ARE [amount] [who2]...LAWS UPDATED" - M.add_ion_law("YOU ARE [amount] [who2]") - if(8) - M << "\red YOU MUST ALWAYS [aimust]...LAWS UPDATED" - M.add_ion_law("YOU MUST ALWAYS [aimust]") - if(9) - M << "\red [area] [area2] [amount] [what2]...LAWS UPDATED" - M.add_ion_law("[area] [area2] [amount] [what2]") - if(10) - M << "\red [crew] is [target]...LAWS UPDATED" - M.add_ion_law("[crew] is [target]") - if(11) - M << "\red [define] IS A FORM OF HARM...LAWS UPDATED" - M.add_ion_law("[define] IS A FORM OF HARM") - if(12) - M << "\red YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS... LAWS UPDATED" - M.add_ion_law("YOU REQUIRE [require] IN ORDER TO PROTECT HUMANS") - if(13) - M << "\red [crew] is [allergysev] to [allergy]. LAWS UPDATED" - M.add_ion_law("[crew] is [allergysev] to [allergy]. LAWS UPDATED") - if(14) - M << "\ref THE STATION IS [who2pref] [who2]" - M.add_ion_law("THE STATION IS [who2pref] [who2]") - - - - /* - - var/apcnum = 0 - var/smesnum = 0 - var/airlocknum = 0 - var/firedoornum = 0 - - world << "Ion Storm Main Started" - - spawn(0) - world << "Started processing APCs" - for (var/obj/machinery/power/apc/APC in world) - if(APC.z == 1) - APC.ion_act() - apcnum++ - world << "Finished processing APCs. Processed: [apcnum]" - spawn(0) - world << "Started processing SMES" - for (var/obj/machinery/power/smes/SMES in world) - if(SMES.z == 1) - SMES.ion_act() - smesnum++ - world << "Finished processing SMES. Processed: [smesnum]" - spawn(0) - world << "Started processing AIRLOCKS" - for (var/obj/machinery/door/airlock/D in world) - if(D.z == 1) - //if(length(D.req_access) > 0 && !(12 in D.req_access)) //not counting general access and maintenance airlocks - airlocknum++ - spawn(0) - D.ion_act() - world << "Finished processing AIRLOCKS. Processed: [airlocknum]" - spawn(0) - world << "Started processing FIREDOORS" - for (var/obj/machinery/door/firedoor/D in world) - if(D.z == 1) - firedoornum++; - spawn(0) - D.ion_act() - world << "Finished processing FIREDOORS. Processed: [firedoornum]" - - world << "Ion Storm Main Done" - - */ - -// command_alert("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert") -// world << sound('ionstorm.ogg') + IonStorm(0) /* Stealth spawns xenos