// Function from file: double_agents.dm public override void forge_traitor_objectives(Mind traitor = null) { dynamic target_mind = null; Objective_Destroy destroy_objective = null; Objective_Assassinate kill_objective = null; Objective_Survive survive_objective = null; Objective_Escape escape_objective = null; if (this.target_list.len != 0 && Lang13.Bool(this.target_list[traitor])) { target_mind = this.target_list[traitor]; if (target_mind.current is Mob_Living_Silicon) { destroy_objective = new Objective_Destroy(); destroy_objective.owner = traitor; destroy_objective.target = target_mind; destroy_objective.update_explanation_text(); traitor.objectives.Add(destroy_objective); } else { kill_objective = new Objective_Assassinate(); kill_objective.owner = traitor; kill_objective.target = target_mind; kill_objective.update_explanation_text(); traitor.objectives.Add(kill_objective); } if (traitor.current is Mob_Living_Silicon) { survive_objective = new Objective_Survive(); survive_objective.owner = traitor; traitor.objectives.Add(survive_objective); } else { escape_objective = new Objective_Escape(); escape_objective.owner = traitor; traitor.objectives.Add(escape_objective); } } else { base.forge_traitor_objectives(traitor); } return; }
// Function from file: syndicatebeacon.dm public override dynamic Topic(string href = null, ByTable href_list = null, dynamic hsrc = null) { dynamic M = null; dynamic N = null; string objective = null; Objective custom_objective = null; Objective_Escape escape_objective = null; int obj_count = 0; Objective OBJ = null; if (Lang13.Bool(base.Topic(href, href_list, (object)(hsrc)))) { return(null); } if (Lang13.Bool(href_list["betraitor"])) { if (this.charges < 1) { this.updateUsrDialog(); return(null); } M = Lang13.FindObj(href_list["traitormob"]); if (Lang13.Bool(M.mind.special_role)) { this.temptext = "<i>We have no need for you at this time. Have a pleasant day.</i><br>"; this.updateUsrDialog(); return(null); } this.charges -= 1; switch ((int)(Rand13.Int(1, 2))) { case 1: this.temptext = "<font color=red><i><b>Double-crosser. You planned to betray us from the start. Allow us to repay the favor in kind.</b></i></font>"; this.updateUsrDialog(); Task13.Schedule(Rand13.Int(50, 200), (Task13.Closure)(() => { this.selfdestruct(); return; })); return(null); break; } if (M is Mob_Living_Carbon_Human) { N = M; ((GameMode)GlobalVars.ticker.mode).equip_traitor(N); GlobalVars.ticker.mode.traitors.Add(N.mind); N.mind.special_role = "traitor"; objective = "Free Objective"; dynamic _b = Rand13.Int(1, 100); // Was a switch-case, sorry for the mess. if (1 <= _b && _b <= 50) { objective = "Steal " + Rand13.Pick(new object [] { "a hand teleporter", "the Captain's antique laser gun", "a jetpack", "the Captain's ID", "the Captain's jumpsuit" }) + "."; } else if (51 <= _b && _b <= 60) { objective = "Destroy 70% or more of the station's plasma tanks."; } else if (61 <= _b && _b <= 70) { objective = "Cut power to 80% or more of the station's tiles."; } else if (71 <= _b && _b <= 80) { objective = "Destroy the AI."; } else if (81 <= _b && _b <= 90) { objective = "Kill all monkeys aboard the station."; } else { objective = "Make certain at least 80% of the station evacuates on the shuttle."; } custom_objective = new Objective(objective); custom_objective.owner = N.mind; N.mind.objectives.Add(custom_objective); escape_objective = new Objective_Escape(); escape_objective.owner = N.mind; N.mind.objectives.Add(escape_objective); M.WriteMsg("<B>You have joined the ranks of the Syndicate and become a traitor to the station!</B>"); obj_count = 1; foreach (dynamic _c in Lang13.Enumerate(M.mind.objectives, typeof(Objective))) { OBJ = _c; M.WriteMsg("<B>Objective #" + obj_count + "</B>: " + OBJ.explanation_text); obj_count++; } } } this.updateUsrDialog(); return(null); }