Beispiel #1
0
        private static void PandemicStory(Session s)
        {
            var pandemicRiskIntro = new Risk(RiskId.Pandemic, "Pandemic", "A global epidemic of a virulent and contagious disease could kill milliards. While there are no known pathogens that would penetrate the strictest precautions and we can reasonably expect a portion of the population to be immune or to survive the disease, such a death toll could still cause the collapse of society and will count as a game over.").IntroductionAgendaItem();
            var farmingStandards  = new AgendaItem("Farming Standards", RiskId.Pandemic, "Farms are breeding grounds for epidemics. The overuse of antibiotics in farm animals leads to antibiotic-resistant strains of bacteria. These so-called 'superbugs' are almost impossible to treat and if a contagious and virulent one emerges, it could signal the end of humankind. This could happen at any time.\n\nFor these reasons, in light of the possible consequences, the United Nations recommend that we issue a worldwide ban on their use in the hope that will prevent the rise of superbugs.",
                                                   Option.AnalyzeIssue(1, 1, "This would give us a good chance of preventing a pandemic, but it would make the United States who rely on their farming industry and use antibiotics a lot, rather unhappy."),
                                                   Option.TimedWork("Implement the ban.", 2, 3, (ai, ss) =>
            {
                ss.US.WorsenAttitude(3);
                ss.UN.ImproveAttitude(1);
                ss.Flag_BanImplemented = true;
                ss.TriggerInfo("We have implemented a worldwide ban on the use antiobiotics in farm animals. This has made the United States extremely unhappy with our agency but the ban is in place.", "Let's hope it's enough");
            }),
                                                   Option.Delay(),
                                                   Option.CloseAgendaItem("No. That is too drastic."));
            var bioresearchStandards = new AgendaItem("Bioresearch Standards", RiskId.Pandemic, "An ordinary disease might become a pandemic threat but we should be even more concerned about a bioengineered disease. With the technology available this decade, it might be finally possible to create a disease more dangerous than any before.\n\nEvolution is blind and incapable of creating a perfect pathogen. However, people who intend to harm are not. The European Union and Japan strongly urge us to regulate bioresearch to prevent this.",
                                                      Option.AnalyzeIssue(1, 1, "An engineered disease would be a serious threat. While no-one has been able to create one up to now, no-one has seriously tried, and we should keep it that way. Subjecting research to strict supervision and regulation would undoubtedly slow down or eliminate possible advances in creating these pathogens."),
                                                      Option.TimedWork("Train EU and JP institutions as regulators", 3, 8, (ai, ss) =>
            {
                ss.TriggerInfo("You have offloaded bioresearch regulation work to regulatory bodies within the European Union and Japan who gladly accepted the work, even if they were disappointed by the lack of financial support from the UN.\n\nStill, there are now agencies whose sole purpose is regulating bioresearch worldwide and are now overseeing all such research. It is unlikely somebody could be seriously working on a dangerous pathogen without their oversight. The risk of a bioengineered plague is much less now.");
                ss.Flag_BioReady = true;
            }),
                                                      Option.TimedWork("Regulate research yourself", 6, 3, (ai, ss) =>
            {
                ss.TriggerInfo("We have established a respectable UN agency for regulating bioresearch worldwide and are now overseeing all such research. It is unlikely somebody could be seriously working on a dangerous pathogen without our oversight. The risk of a bioengineered plague is much less now.\n\nThe EU and Japan are very grateful to us.");
                ss.EU.ImproveAttitude(2);
                ss.JP.ImproveAttitude(2);
                ss.Flag_BioReady = true;
            }),
                                                      Option.Delay(),
                                                      Option.CloseAgendaItem("Research should be free - do nothing."));

            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                ss.Trigger(pandemicRiskIntro);
                ss.Trigger(farmingStandards);
            }, 4));
            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                ss.Items.Add(bioresearchStandards);
            }, 12));
            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                if (!ss.Flag_BanImplemented)
                {
                    ss.GameOver("A superbug emerged from a Chinese province with unprecedented contagiousness and virulence. It spread from city to city until all nations of the world were stricken with the disease. Milliards died and society collapsed around them.");
                }
            }, 10));
            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                if (!ss.Flag_BioReady)
                {
                    ss.GameOver("An engineered plague came about without warning. Remnants of the terrorist organization responsible for the Baghdad attack improved upon a publically available research and created a pathogen by combining traits of several existing ones, resulting in a deadly contagious disease that could not be cured. Milliards died and society collapsed.");
                }
            }, 21));
        }
Beispiel #2
0
        private static void AsteroidStory(Session s)
        {
            var intr = new Risk(RiskId.Asteroid, "Asteroid Impact", "Of all possible extinction risks, the impact of a large asteroid is perhaps the most relevant. Unlike all others, the fall of an asteroid has already caused the extinction of a dominating species before when a body impacted what is now the Chicxulub crater. We must ensure this does not happen again if we don't want to share the fate of the dinosaurs.").IntroductionAgendaItem();
            var dai  = new AgendaItem("Dangerous Asteroid Identified", RiskId.Asteroid, "Observation data are consistent with calculations. An asteroid, nicknamed Nemesis, is on collision course with Earth, estimated to hit in 2035. We must hurry if we are to invent a method to stop and launch it before it's too late.",
                                      Option.ImmediateThing("We will. We have to.", () =>
            {
                s.Flag_AsteroidIdentified = true;
                s.AsteroidCulminationCheck();
            }));
            var calculationProject = new AgendaItem("Asteroid Calculation Project", RiskId.Asteroid, "Now that almost all asteroids in the solar systems have been discovered, we still need to determine whether there is a chance one might impact Earth in the near future. To do that, supercomputers must be mustered to perform large-scale computations on the measured data, but supercomputer time is limited.",
                                                    Option.TimedWork("Build more supercomputers", 2, 4, (ai, ss) =>
            {
                ss.Trigger(dai);
            }),
                                                    Option.TimedWork("Divert worldwide supercomputers to asteroid orbit calculation", 4, 2, (ai, ss) =>
            {
                ss.Trigger(dai);
            }),
                                                    Option.TimedWork("Ask the general public for computational time", 1, 1, (ai, ss) =>
            {
                if (ss.Actors.Any(act => act.Attitude >= Attitude.CloseFriendship))
                {
                    ss.Trigger(new AgendaItem("Public helped computation", RiskId.Asteroid,
                                              "Your close friendship with " + ss.Actors.First(act => act.Attitude >= Attitude.CloseFriendship).Name + " inspired the people to install computation software on their own computers. Together, the computational power of the internet was enough to calculate orbits and trajectories of all observed asteroids.",
                                              Option.ImmediateThing("So what did they found?", () =>
                    {
                        ss.Trigger(dai);
                    })));
                }
                else
                {
                    ai.Description = "The ERPA is not popular enough with the public for them to lend us computational time on their computers. Perhaps if you had a close friendship with some world actor? Anyway, what do we do now?";
                    ss.Trigger(ai);
                }
            }),
                                                    Option.Delay());

            var mappingProject = new AgendaItem("Asteroid Mapping Project", RiskId.Asteroid, "NASA experts have expressed concern that not all potentially threatening asteroids are being tracked. They say that the greatest obstacle is the lack of observatory time devoted to asteroid search. On their behalf, the US has requested that we recommend more observatories be devoted to this mission or that more observatories be built. JAXA has countered that the threat is being overestimated and other space research projects should take precedence.",
                                                Option.AnalyzeIssue(1, 1, "It is hard to say what's the chance of an asteroid strike, but it would only take a single large enough rock to destroy humankind. Diverting resources to asteroid search will anger Japan's space agency but it might still be the right call. But if we still have a lot of time, it's not necessary."),
                                                Option.TimedWork("Build more observatories", 2, 4, (ai, ss) =>
            {
                ss.EU.ImproveAttitude(1);
                ss.Items.Add(calculationProject);
            }),
                                                Option.TimedWork("Divert worldwide observatories to asteroid search", 1, 1, (ai, ss) =>
            {
                ss.JP.WorsenAttitude(1);
                ss.Items.Add(calculationProject);
            }),
                                                Option.Delay());

            var yar2 = new AgendaItem("Yarkovsky Project Implementation Research", RiskId.Asteroid, "The theory has checked out but engineering challenges still remain. It is easy to say 'paint an asteroid black' and 'send light at it' but the details required new processes and new technology. The European Union has seized this opportunity to gain standing in the political arena and wishes to champion this project. However, you are afraid that allowing the EU to tackle this on its own will not be fast enough.", Option.TimedWork("Have the EU work on it solo.", 1, 6, (ai, ss) => { ss.EU.ImproveAttitude(2); ss.Flag_YarkowskyComplete = true; ss.AsteroidCulminationCheck(); }),
                                      Option.TimedWork("Everyone should contribute. ", 2, 3, (ai, ss) =>
            {
                ss.EU.WorsenAttitude(1);
                ss.UN.ImproveAttitude(1);
                ss.Flag_YarkowskyComplete = true;
                ss.AsteroidCulminationCheck();
            }),
                                      Option.Delay(),
                                      Option.CloseAgendaItem("End the project"));
            var yarkowsky1 = new AgendaItem("Yarkovsky Project Preliminaries", RiskId.Asteroid, "A group of European scientists have come forward with the idea that an incoming asteroid might be deflected in an interesting fashion. First, the asteroid would be painted black and then light beams would be applied on that surface, changing its trajectory by light pressure. They believe the theory is sound and wish to test in experimental conditions, for which they require the aid of nation states.",
                                            Option.AnalyzeIssue(1, 1, "Your experts say that what the group says is feasible and that it is definitely worth checking out. However, be prepared that the research may take a long time."),
                                            Option.TimedWork("Recommend that they receive assistance", 1, 4, (ai, ss) => ss.Trigger(yar2)),
                                            Option.TimedWork("Assist them yourself", 4, 1, (ai, ss) => ss.Trigger(yar2)),
                                            Option.Delay(),
                                            Option.CloseAgendaItem("Deny help"));

            var ion1 = new AgendaItem("Ion Engine Deflection Preparations", RiskId.Asteroid, "Ion engines are small light devices that could theoretically be installed on an incoming asteroid to deflect it back on a stable orbit around the Sun. The technology exists but actually creating these devices and planning on how they can be put on a space body will take time.",
                                      Option.AnalyzeIssue(1, 1, "This is a very workable solution and is recommended by your experts."),
                                      Option.TimedWork("Begin preparations", 1, 4, (ai, ss) =>
            {
                ss.Flag_IonComplete = true;
                ss.TriggerInfo("The ion engine preparations are complete. When a dangerous asteroid is identified, we will be ready.");
                ss.AsteroidCulminationCheck();
            }),
                                      Option.TimedWork("Begin preparations", 2, 3, (ai, ss) =>
            {
                ss.Flag_IonComplete = true;
                ss.TriggerInfo("The ion engine preparations are complete. When a dangerous asteroid is identified, we will be ready.");
                ss.AsteroidCulminationCheck();
            }),
                                      Option.Delay(),
                                      Option.CloseAgendaItem("Do not do this."));

            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                ss.Items.Add(intr);
                ss.Items.Add(mappingProject);
            }, 2));
            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                ss.Items.Add(yarkowsky1);
                ss.Items.Add(ion1);
                var nuclear1 = new AgendaItem("Nuclear Asteroid Deflection",
                                              RiskId.Asteroid, "Nuclear bombs could be sent up in space and detonated on the surface of an incoming asteroid. Research suggests that this has a good chance of working. But there are engineering problems: bombs are heavy and sending them to space is expensive. In addition, if we miscalculate or a hit fails to deflect the asteroid, we won't get a second chance. But perhaps most importantly, following the Baghdad attack of 2017, the world wary of nuclear weapons and will not take kindly to using them this way.", Story.GenerateNuclearDeflectionOptions(ss));
                ss.Items.Add(nuclear1);
            }, 3));
            s.FutureAgenda.Add(new DelayedAgendaItem(null, (ai, ss) =>
            {
                if (!ss.Flag_AsteroidDeflected)
                {
                    ss.GameOver("In a last-ditch effort, humankind has launched missiles against the approaching asteroid, but that was more to quell panic than with any hope of real success. The asteroid fell into the Atlantic ocean. A giant tsunami went up and devastated everything within 100 km of a coast. Half of the world's population was annihilated in these instants and the rest will follow as climatic and ecological changes finish the catastrophe.");
                }
            }, 17));
        }