예제 #1
0
        // Function from file: objective.dm
        public override int check_completion(  )
        {
            Mob_Living_Silicon_Ai A    = null;
            int counter                = 0;
            Mob_Living_Silicon_Robot R = null;


            if (!(this.owner.current is Mob_Living_Silicon_Ai))
            {
                return(0);
            }
            A       = this.owner.current;
            counter = 0;

            foreach (dynamic _a in Lang13.Enumerate(A.connected_robots, typeof(Mob_Living_Silicon_Robot)))
            {
                R = _a;


                if (R.stat != 2)
                {
                    counter++;
                }
            }

            if (counter < 8)
            {
                return(0);
            }
            return(1);
        }
예제 #2
0
        // Function from file: camera.dm
        public void Togglelight(bool?on = null)
        {
            on = on ?? false;

            Mob_Living_Silicon_Ai A   = null;
            Obj_Machinery_Camera  cam = null;


            foreach (dynamic _b in Lang13.Enumerate(GlobalVars.ai_list, typeof(Mob_Living_Silicon_Ai)))
            {
                A = _b;


                foreach (dynamic _a in Lang13.Enumerate(A.lit_cameras, typeof(Obj_Machinery_Camera)))
                {
                    cam = _a;


                    if (cam == this)
                    {
                        return;
                    }
                }
            }

            if (on == true)
            {
                this.SetLuminosity(5);
            }
            else
            {
                this.SetLuminosity(0);
            }
            return;
        }
예제 #3
0
        // Function from file: crew.dm
        public override dynamic Topic(string href = null, ByTable href_list = null, dynamic hsrc = null)
        {
            Mob_Living_Silicon_Ai AI = null;
            double?    x             = null;
            double?    y             = null;
            Tile       tile          = null;
            dynamic    C             = null;
            Ent_Static current_loc   = null;


            if (hsrc is HtmlInterfaceClient)
            {
                if (Lang13.Bool(hsrc) && Lang13.Bool(hsrc.client) && Lang13.Bool(hsrc.client.mob) && hsrc.client.mob is Mob_Living_Silicon_Ai)
                {
                    AI = hsrc.client.mob;

                    dynamic _a = href_list["action"];                     // Was a switch-case, sorry for the mess.
                    if (_a == "select_person")
                    {
                        AI.__CallVerb("track", href_list["name"]);
                    }
                    else if (_a == "select_position")
                    {
                        x    = String13.ParseNumber(href_list["x"]);
                        y    = String13.ParseNumber(href_list["y"]);
                        tile = Map13.GetTile(((int)(x ?? 0)), ((int)(y ?? 0)), AI.z);
                        C    = Lang13.FindIn(typeof(Obj_Machinery_Camera), Map13.FetchInRange(tile, 5));

                        if (!Lang13.Bool(C))
                        {
                            C = Lang13.FindIn(typeof(Obj_Machinery_Camera), GlobalFuncs.ultra_range(10, tile));
                        }

                        if (!Lang13.Bool(C))
                        {
                            C = Lang13.FindIn(typeof(Obj_Machinery_Camera), GlobalFuncs.ultra_range(15, tile));
                        }

                        if (Lang13.Bool(C))
                        {
                            current_loc = AI.eyeobj.loc;
                            Task13.Schedule(Num13.MinInt(30, ((int)(Map13.GetDistance(GlobalFuncs.get_turf(C), AI.eyeobj) / 4))), (Task13.Closure)(() => {
                                if (AI != null && AI.eyeobj != null && current_loc == AI.eyeobj.loc)
                                {
                                    AI.switchCamera(C);
                                }
                                return;
                            }));
                        }
                    }
                }
            }
            return(null);
        }
예제 #4
0
        // Function from file: ai.dm
        public Hud_Ai(Mob_Living_Silicon_Ai owner = null) : base(owner)
        {
            Obj_Screen_Ai _using = null;

            // Warning: Super call was HERE! If anything above HERE is needed by the super call, it might break!;
            _using            = new Obj_Screen_Ai_Aicore();
            _using.screen_loc = "SOUTH:6,WEST";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CameraList();
            _using.screen_loc = "SOUTH:6,WEST+1";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CameraTrack();
            _using.screen_loc = "SOUTH:6,WEST+2";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CameraLight();
            _using.screen_loc = "SOUTH:6,WEST+3";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CrewMonitor();
            _using.screen_loc = "SOUTH:6,WEST+4";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CrewManifest();
            _using.screen_loc = "SOUTH:6,WEST+5";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_Alerts();
            _using.screen_loc = "SOUTH:6,WEST+6";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_Announcement();
            _using.screen_loc = "SOUTH:6,WEST+7";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_CallShuttle();
            _using.screen_loc = "SOUTH:6,WEST+8";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_StateLaws();
            _using.screen_loc = "SOUTH:6,WEST+9";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_PdaMsgSend();
            _using.screen_loc = "SOUTH:6,WEST+10";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_PdaMsgShow();
            _using.screen_loc = "SOUTH:6,WEST+11";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_ImageTake();
            _using.screen_loc = "SOUTH:6,WEST+12";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_ImageView();
            _using.screen_loc = "SOUTH:6,WEST+13";
            this.static_inventory.Add(_using);
            _using            = new Obj_Screen_Ai_Sensors();
            _using.screen_loc = "SOUTH:6,WEST+14";
            this.static_inventory.Add(_using);
            return;
        }
        // Function from file: hologram.dm
        public override dynamic Destroy(  )
        {
            Mob_Living_Silicon_Ai master = null;


            foreach (dynamic _a in Lang13.Enumerate(this.masters, typeof(Mob_Living_Silicon_Ai)))
            {
                master = _a;

                this.clear_holo(master);
            }
            return(base.Destroy());
        }
        // Function from file: hologram.dm
        public bool move_hologram(Mob_Living_Silicon_Ai user = null)
        {
            Ent_Static H = null;


            if (Lang13.Bool(this.masters[user]))
            {
                Map13.StepTowards(this.masters[user], user.eyeobj, 0);
                H     = this.masters[user];
                H.loc = GlobalFuncs.get_turf(user.eyeobj);
                this.masters[user] = H;
            }
            return(true);
        }
예제 #7
0
        // Function from file: mulebot.dm
        public override void call_bot(Mob_Living_Silicon_Ai caller = null, dynamic waypoint = null, int?message = null)
        {
            dynamic dest_area = null;

            base.call_bot(caller, (object)(waypoint), message);

            if (Lang13.Bool(this.path) && this.path.len != 0)
            {
                this.target      = this.ai_waypoint;
                dest_area        = GlobalFuncs.get_area(this.target);
                this.destination = GlobalFuncs.format_text(dest_area.name);
                this.pathset     = true;
                this.start();
            }
            return;
        }
        // Function from file: hologram.dm
        public override dynamic Topic(string href = null, ByTable href_list = null, dynamic hsrc = null)
        {
            dynamic area             = null;
            Mob_Living_Silicon_Ai AI = null;


            if (Lang13.Bool(base.Topic(href, href_list, (object)(hsrc))))
            {
                return(null);
            }

            if (Lang13.Bool(href_list["AIrequest"]))
            {
                if (this.last_request + 200 < Game13.time)
                {
                    this.last_request = Game13.time;
                    this.temp         = "You requested an AI's presence.<BR>";
                    this.temp        += new Txt("<A href='?src=").Ref(this).str(";mainmenu=1'>Main Menu</A>").ToString();
                    area = GlobalFuncs.get_area(this);

                    foreach (dynamic _a in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Silicon_Ai)))
                    {
                        AI = _a;


                        if (!(AI.client != null))
                        {
                            continue;
                        }
                        AI.WriteMsg(new Txt("<span class='info'>Your presence is requested at <a href='?src=").Ref(AI).str(";jumptoholopad=").Ref(this).str("'>").the(area).item().str("</a>.</span>").ToString());
                    }
                }
                else
                {
                    this.temp  = "A request for AI presence was already sent recently.<BR>";
                    this.temp += new Txt("<A href='?src=").Ref(this).str(";mainmenu=1'>Main Menu</A>").ToString();
                }
            }
            else if (Lang13.Bool(href_list["mainmenu"]))
            {
                this.temp = "";
            }
            this.updateDialog();
            this.add_fingerprint(Task13.User);
            return(null);
        }
예제 #9
0
        // Function from file: objective_items.dm
        public override bool check_special_completion(Obj T = null)
        {
            Mob_Living_Silicon_Ai A = null;


            foreach (dynamic _a in Lang13.Enumerate(T, typeof(Mob_Living_Silicon_Ai)))
            {
                A = _a;


                if (A is Mob_Living_Silicon_Ai && A.stat != 2)
                {
                    return(true);
                }
            }
            return(false);
        }
        // Function from file: hologram.dm
        public override string Hear(string message = null, dynamic speaker = null, int message_langs = 0, dynamic raw_message = null, dynamic radio_freq = null, ByTable spans = null)
        {
            Mob_Living_Silicon_Ai master = null;


            if (Lang13.Bool(speaker) && this.masters.len != 0 && !Lang13.Bool(radio_freq))
            {
                foreach (dynamic _a in Lang13.Enumerate(this.masters, typeof(Mob_Living_Silicon_Ai)))
                {
                    master = _a;


                    if (Lang13.Bool(this.masters[master]) && speaker != master)
                    {
                        master.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans);
                    }
                }
            }
            return(null);
        }
예제 #11
0
        // Function from file: ion_storm.dm
        public override bool start(  )
        {
            Mob_Living_Silicon_Ai M         = null;
            dynamic message                 = null;
            Mob_Living_SimpleAnimal_Bot bot = null;


            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_Silicon_Ai)))
            {
                M = _a;


                if (M.stat != 2 && M.see_in_dark != 0)
                {
                    message = GlobalFuncs.generate_ion_law(this.ionMessage);

                    if (Lang13.Bool(message))
                    {
                        M.add_ion_law(message);
                        M.WriteMsg("<br>");
                        M.WriteMsg("<span class='danger'>" + message + " ...LAWS UPDATED</span>");
                        M.WriteMsg("<br>");
                    }
                }
            }

            if (Lang13.Bool(this.botEmagChance))
            {
                foreach (dynamic _b in Lang13.Enumerate(GlobalVars.living_mob_list, typeof(Mob_Living_SimpleAnimal_Bot)))
                {
                    bot = _b;


                    if (Rand13.PercentChance(this.botEmagChance ?? 0))
                    {
                        bot.emag_act();
                    }
                }
            }
            return(false);
        }
        // Function from file: hologram.dm
        public override int?process(dynamic seconds = null)
        {
            Mob_Living_Silicon_Ai master = null;
            dynamic holo_area            = null;
            dynamic eye_area             = null;


            if (this.masters.len != 0)
            {
                foreach (dynamic _a in Lang13.Enumerate(this.masters, typeof(Mob_Living_Silicon_Ai)))
                {
                    master = _a;


                    if (master != null && !(master.stat != 0) && master.client != null && master.eyeobj != null)
                    {
                        if (!((this.stat & 2) != 0))
                        {
                            if (GlobalVars.HOLOPAD_MODE == 4 && Map13.GetDistance(master.eyeobj, this) <= this.holo_range)
                            {
                                return(1);
                            }
                            else if (GlobalVars.HOLOPAD_MODE == 6)
                            {
                                holo_area = GlobalFuncs.get_area(this);
                                eye_area  = GlobalFuncs.get_area(master.eyeobj);

                                if (holo_area.master.related.Contains(eye_area))
                                {
                                    return(1);
                                }
                            }
                        }
                    }
                    this.clear_holo(master);
                }
            }
            return(1);
        }
        // Function from file: communications_blackout.dm
        public override void announce(  )
        {
            string alert            = null;
            Mob_Living_Silicon_Ai A = null;

            alert = Rand13.Pick(new object [] { "Ionospheric anomalies detected. Temporary telecommunication failure imminent. Please contact you*%fj00)`5vc-BZZT", "Ionospheric anomalies detected. Temporary telecommunication failu*3mga;b4;'1v¬-BZZZT", "Ionospheric anomalies detected. Temporary telec#MCi46:5.;@63-BZZZZT", "Ionospheric anomalies dete'fZ\\kg5_0-BZZZZZT", "Ionospheri:%£ MCayj^j<.3-BZZZZZZT", "#4nd%;f4y6,>£%-BZZZZZZZT" });

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon_Ai)))
            {
                A = _a;

                A.WriteMsg("<br>");
                A.WriteMsg("<span class='warning'><b>" + alert + "</b></span>");
                A.WriteMsg("<br>");
            }

            if (Rand13.PercentChance(30))
            {
                GlobalFuncs.priority_announce(alert);
            }
            return;
        }
예제 #14
0
        // Function from file: corpse.dm
        public override void createCorpse(bool death = false, string ckey = null)
        {
            dynamic A = null;
            AiLaws_Default_Asimov L = null;
            Obj_Item_Device_Mmi   B = null;
            Mob_Living_Silicon_Ai M = null;

            A = Lang13.FindIn(typeof(Mob_Living_Silicon_Ai), this.loc);

            if (Lang13.Bool(A))
            {
                return;
            }
            L            = new AiLaws_Default_Asimov();
            B            = new Obj_Item_Device_Mmi();
            M            = new Mob_Living_Silicon_Ai(this.loc, L, B, true);
            M.name       = this.name;
            M.real_name  = this.name;
            M.aiPDA.toff = true;
            M.death();
            GlobalFuncs.qdel(this);
            return;
        }
예제 #15
0
        // Function from file: ticker.dm
        public bool declare_completion(  )
        {
            bool                     station_evacuated = false;
            int                      num_survivors     = 0;
            int                      num_escapees      = 0;
            dynamic                  Player            = null;
            StationState             end_state         = null;
            int                      station_integrity = 0;
            Mob_Living_Silicon_Ai    aiPlayer          = null;
            string                   robolist          = null;
            Mob_Living_Silicon_Robot robo              = null;
            Mob_Living_Silicon_Robot robo2             = null;
            dynamic                  handler           = null;
            ByTable                  total_antagonists = null;
            Mind                     Mind              = null;
            string                   temprole          = null;
            dynamic                  i      = null;
            string                   dellog = null;
            dynamic                  path   = null;


            if (GlobalVars.SSshuttle.emergency.mode >= 5)
            {
                station_evacuated = true;
            }
            num_survivors = 0;
            num_escapees  = 0;
            Game13.WriteMsg("<BR><BR><BR><FONT size=3><B>The round has ended.</B></FONT>");

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.mob_list))
            {
                Player = _a;


                if (Lang13.Bool(Player.mind) && !(Player is Mob_NewPlayer))
                {
                    if (Convert.ToInt32(Player.stat) != 2 && !(Player is Mob_Living_Carbon_Brain))
                    {
                        num_survivors++;

                        if (station_evacuated)
                        {
                            if (!((Ent_Static)Player).onCentcom() && !((Ent_Static)Player).onSyndieBase())
                            {
                                Player.WriteMsg("<font color='blue'><b>You managed to survive, but were marooned on " + GlobalFuncs.station_name() + "...</b></FONT>");
                            }
                            else
                            {
                                num_escapees++;
                                Player.WriteMsg("<font color='green'><b>You managed to survive the events on " + GlobalFuncs.station_name() + " as " + Player.real_name + ".</b></FONT>");
                            }
                        }
                        else
                        {
                            Player.WriteMsg("<font color='green'><b>You managed to survive the events on " + GlobalFuncs.station_name() + " as " + Player.real_name + ".</b></FONT>");
                        }
                    }
                    else
                    {
                        Player.WriteMsg("<font color='red'><b>You did not survive the events on " + GlobalFuncs.station_name() + "...</b></FONT>");
                    }
                }
            }
            end_state = new StationState();
            end_state.count();
            station_integrity = Num13.MinInt(((int)(Num13.Round(GlobalVars.start_state.score(end_state) * 100, 0.1))), 100);
            Game13.WriteMsg("<BR>" + GlobalVars.TAB + "Shift Duration: <B>" + Num13.Floor(Game13.time / 36000) + ":" + GlobalFuncs.add_zero("" + Game13.time / 600 % 60, 2) + ":" + Game13.time / 100 % 6 + Game13.time / 100 % 10 + "</B>");
            Game13.WriteMsg("<BR>" + GlobalVars.TAB + "Station Integrity: <B>" + (this.mode.station_was_nuked ? "<font color='red'>Destroyed</font>" : "" + station_integrity + "%") + "</B>");

            if (GlobalVars.joined_player_list.len != 0)
            {
                Game13.WriteMsg("<BR>" + GlobalVars.TAB + "Total Population: <B>" + GlobalVars.joined_player_list.len + "</B>");

                if (station_evacuated)
                {
                    Game13.WriteMsg("<BR>" + GlobalVars.TAB + "Evacuation Rate: <B>" + num_escapees + " (" + Num13.Round(num_escapees / GlobalVars.joined_player_list.len * 100, 0.1) + "%)</B>");
                }
                Game13.WriteMsg("<BR>" + GlobalVars.TAB + "Survival Rate: <B>" + num_survivors + " (" + Num13.Round(num_survivors / GlobalVars.joined_player_list.len * 100, 0.1) + "%)</B>");
            }
            Game13.WriteMsg("<BR>");

            foreach (dynamic _c in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_Silicon_Ai)))
            {
                aiPlayer = _c;


                if (aiPlayer.stat != 2 && aiPlayer.mind != null)
                {
                    Game13.WriteMsg("<b>" + aiPlayer.name + " (Played by: " + aiPlayer.mind.key + ")'s laws at the end of the round were:</b>");
                    aiPlayer.show_laws(true);
                }
                else if (aiPlayer.mind != null)
                {
                    Game13.WriteMsg("<b>" + aiPlayer.name + " (Played by: " + aiPlayer.mind.key + ")'s laws when it was deactivated were:</b>");
                    aiPlayer.show_laws(true);
                }
                Game13.WriteMsg("<b>Total law changes: " + aiPlayer.law_change_counter + "</b>");

                if (aiPlayer.connected_robots.len != 0)
                {
                    robolist = "<b>" + aiPlayer.real_name + "'s minions were:</b> ";

                    foreach (dynamic _b in Lang13.Enumerate(aiPlayer.connected_robots, typeof(Mob_Living_Silicon_Robot)))
                    {
                        robo = _b;


                        if (robo.mind != null)
                        {
                            robolist += "" + robo.name + (robo.stat != 0 ? " (Deactivated) (Played by: " + robo.mind.key + "), " : " (Played by: " + robo.mind.key + "), ");
                        }
                    }
                    Game13.WriteMsg("" + robolist);
                }
            }

            foreach (dynamic _d in Lang13.Enumerate(GlobalVars.mob_list, typeof(Mob_Living_Silicon_Robot)))
            {
                robo2 = _d;


                if (!Lang13.Bool(robo2.connected_ai) && robo2.mind != null)
                {
                    if (robo2.stat != 2)
                    {
                        Game13.WriteMsg("<b>" + robo2.name + " (Played by: " + robo2.mind.key + ") survived as an AI-less borg! Its laws were:</b>");
                    }
                    else
                    {
                        Game13.WriteMsg("<b>" + robo2.name + " (Played by: " + robo2.mind.key + ") was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>");
                    }

                    if (robo2 != null)
                    {
                        robo2.laws.show_laws(typeof(Game13));
                    }
                }
            }
            this.mode.declare_completion();

            foreach (dynamic _e in Lang13.Enumerate(Lang13.GetTypes("/datum/game_mode/proc")))
            {
                handler = _e;


                if (String13.FindIgnoreCase("" + handler, "auto_declare_completion_", 1, 0) != 0)
                {
                    Lang13.Call(Lang13.BindFunc(this.mode, handler), this.force_ending);
                }
            }
            total_antagonists = new ByTable();

            foreach (dynamic _f in Lang13.Enumerate(this.minds, typeof(Mind)))
            {
                Mind = _f;

                temprole = Mind.special_role;

                if (Lang13.Bool(temprole))
                {
                    if (total_antagonists.Contains(temprole))
                    {
                        total_antagonists[temprole] += ", " + Mind.name + "(" + Mind.key + ")";
                    }
                    else
                    {
                        total_antagonists.Add(temprole);
                        total_antagonists[temprole] += ": " + Mind.name + "(" + Mind.key + ")";
                    }
                }
            }
            GlobalFuncs.log_game("Antagonists at round end were...");

            foreach (dynamic _g in Lang13.Enumerate(total_antagonists))
            {
                i = _g;

                GlobalFuncs.log_game("" + i + "s" + total_antagonists[i] + ".");
            }

            if (GlobalVars.SSgarbage.didntgc.len != 0)
            {
                dellog = "";

                foreach (dynamic _h in Lang13.Enumerate(GlobalVars.SSgarbage.didntgc))
                {
                    path = _h;

                    dellog += "Path : " + path + " \n";
                    dellog += "Failures : " + GlobalVars.SSgarbage.didntgc[path] + " \n";
                }
                Game13.log.WriteMsg(dellog);
            }
            return(true);
        }
예제 #16
0
 // Function from file: ai.dm
 public override void AIAltClick(Mob_Living_Silicon_Ai user = null)
 {
     this.toggle_lethal();
     this.add_fingerprint(Task13.User);
     return;
 }
예제 #17
0
        // Function from file: multitool.dm
        public override int?process(dynamic seconds = null)
        {
            bool    found_eye           = false;
            dynamic our_turf            = null;
            Mob_Living_Silicon_Ai AI    = null;
            Camerachunk           chunk = null;
            Mob_Camera_AiEye      A     = null;
            dynamic eye_turf            = null;


            if (this.track_delay > Game13.time)
            {
                return(null);
            }
            found_eye = false;
            our_turf  = GlobalFuncs.get_turf(this);

            foreach (dynamic _a in Lang13.Enumerate(GlobalVars.ai_list, typeof(Mob_Living_Silicon_Ai)))
            {
                AI = _a;


                if (AI.cameraFollow == this)
                {
                    found_eye = true;
                    break;
                }
            }

            if (!found_eye && Lang13.Bool(GlobalVars.cameranet.chunkGenerated(Lang13.IntNullable(our_turf.x), Lang13.IntNullable(our_turf.y), Convert.ToInt32(our_turf.z))))
            {
                chunk = GlobalVars.cameranet.getCameraChunk(Lang13.IntNullable(our_turf.x), Lang13.IntNullable(our_turf.y), Convert.ToInt32(our_turf.z));

                if (chunk != null)
                {
                    if (chunk.seenby.len != 0)
                    {
                        foreach (dynamic _b in Lang13.Enumerate(chunk.seenby, typeof(Mob_Camera_AiEye)))
                        {
                            A = _b;

                            eye_turf = GlobalFuncs.get_turf(A);

                            if (Map13.GetDistance(our_turf, eye_turf) < 8)
                            {
                                found_eye = true;
                                break;
                            }
                        }
                    }
                }
            }

            if (found_eye)
            {
                this.icon_state = "" + Lang13.Initial(this, "icon_state") + "_red";
            }
            else
            {
                this.icon_state = Lang13.Initial(this, "icon_state");
            }
            this.track_delay = Game13.time + 10;
            return(null);
        }
예제 #18
0
        // Function from file: ninjaDrainAct.dm
        public override dynamic ninjadrain_act(Obj_Item_Clothing_Suit_Space_SpaceNinja S = null, Ent_Static H = null, Obj_Item_Clothing_Gloves_SpaceNinja G = null)
        {
            dynamic _default = null;

            dynamic location         = null;
            Mob_Living_Silicon_Ai AI = null;
            Tech current_data        = null;
            Tech analyzing_data      = null;


            if (!(S != null) || !(H != null) || !(G != null))
            {
                return("INVALID");
            }
            _default = "RDHACKFAIL";
            ((dynamic)H).WriteMsg(new Txt("<span class='notice'>Hacking ").the(this).item().str("...</span>").ToString());
            Task13.Schedule(0, (Task13.Closure)(() => {
                location = GlobalFuncs.get_turf(H);

                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon_Ai)))
                {
                    AI = _a;

                    AI.WriteMsg("<span class='userdanger'>Network Alert: Hacking attempt detected" + (Lang13.Bool(location) ? " in " + location : ". Unable to pinpoint location") + "</span>.");
                }
                return;
            }));

            if (this.files != null && this.files.known_tech.len != 0)
            {
                foreach (dynamic _c in Lang13.Enumerate(S.stored_research, typeof(Tech)))
                {
                    current_data = _c;

                    ((dynamic)H).WriteMsg(new Txt("<span class='notice'>Checking ").the(current_data.name).item().str(" database.</span>").ToString());

                    if (GlobalFuncs.do_after(H, S.s_delay, null, this) && G.candrain && this != null)
                    {
                        foreach (dynamic _b in Lang13.Enumerate(this.files.known_tech, typeof(Tech)))
                        {
                            analyzing_data = _b;


                            if (current_data.id == analyzing_data.id)
                            {
                                if (analyzing_data.level > current_data.level)
                                {
                                    ((dynamic)H).WriteMsg("<span class='notice'>Database:</span> <b>UPDATED</b>.");
                                    current_data.level = analyzing_data.level;
                                    _default           = "RDHACK";
                                }
                                break;
                            }
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            ((dynamic)H).WriteMsg("<span class='notice'>Data analyzed. Process finished.</span>");
            return(_default);
        }
예제 #19
0
        // Function from file: blob_report.dm
        public override void send_intercept(int?report = null)
        {
            report = report ?? 0;

            string intercepttext               = null;
            int    nukecode                    = 0;
            Obj_Machinery_Nuclearbomb bomb     = null;
            Mob_Living_Silicon_Ai     aiPlayer = null;
            string law = null;

            intercepttext = "";

            switch ((int?)(report))
            {
            case 1:
                intercepttext += "<FONT size = 3><b>NanoTrasen Update</b>: Biohazard Alert.</FONT><HR>";
                intercepttext += "Reports indicate the probable transfer of a biohazardous agent onto " + GlobalFuncs.station_name() + " during the last crew deployment cycle.<BR>";
                intercepttext += "Preliminary analysis of the organism classifies it as a level 5 biohazard. The origin of the biohazard is unknown.<BR>";
                intercepttext += "<b>Biohazard Response Procedure 5-6</b> has been issued for " + GlobalFuncs.station_name() + ".<BR>";
                intercepttext += "Orders for all " + GlobalFuncs.station_name() + " personnel are as follows:<BR>";
                intercepttext += " 1. Locate any outbreaks of the organism on the station.<BR>";
                intercepttext += " 2. If found, use any neccesary means to contain and destroy the organism.<BR>";
                intercepttext += " 3. Avoid damage to the capital infrastructure of the station.<BR>";
                intercepttext += "<BR>Note in the event of a quarantine breach or uncontrolled spread of the biohazard, <b>Biohazard Response Procedure 5-12</b> may be issued.<BR>";
                GlobalFuncs.print_command_report(intercepttext, "Level 5-6 Biohazard Response Procedures");
                GlobalFuncs.priority_announce("Confirmed outbreak of level 5 biohazard aboard " + GlobalFuncs.station_name() + ". All personnel must contain the outbreak.", "Biohazard Alert", "sound/AI/outbreak5.ogg");
                break;

            case 2:
                nukecode = Rand13.Int(10000, 99999);

                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.machines, typeof(Obj_Machinery_Nuclearbomb)))
                {
                    bomb = _a;


                    if (bomb != null && Lang13.Bool(bomb.r_code))
                    {
                        if (bomb.z == 1)
                        {
                            bomb.r_code = nukecode;
                        }
                    }
                }
                intercepttext += "<FONT size = 3><b>NanoTrasen Update</b>: Biohazard Alert.</FONT><HR>";
                intercepttext += "Reports indicate that the biohazard has grown out of control and will soon reach critical mass.<BR>";
                intercepttext += "<b>Biohazard Response Procedure 5-12</b> has been issued for " + GlobalFuncs.station_name() + ".<BR>";
                intercepttext += "Orders for all " + GlobalFuncs.station_name() + " personnel are as follows:<BR>";
                intercepttext += "1. Secure the Nuclear Authentication Disk.<BR>";
                intercepttext += "2. Detonate the Nuke located in the vault.<BR>";
                intercepttext += "Nuclear Authentication Code: " + nukecode + " <BR>";
                GlobalFuncs.print_command_report(intercepttext, "Classified " + GlobalFuncs.command_name() + " Update");
                GlobalFuncs.priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", "sound/AI/commandreport.ogg");

                foreach (dynamic _b in Lang13.Enumerate(GlobalVars.player_list, typeof(Mob_Living_Silicon_Ai)))
                {
                    aiPlayer = _b;


                    if (aiPlayer.client != null)
                    {
                        law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. The nuclear failsafe must be activated at any cost, the code is: " + nukecode + ".";
                        aiPlayer.set_zeroth_law(law);
                        aiPlayer.WriteMsg("Laws Updated: " + law);
                    }
                }
                break;

            default:
                base.send_intercept(report);
                break;
            }
            return;
        }
예제 #20
0
 // Function from file: eye.dm
 public override dynamic Destroy(  )
 {
     this.ai = null;
     return(base.Destroy());
 }
예제 #21
0
		// Range: -1 Access: 0 Flags: ( 0, 4, 255 )
		public static bool play_vox_word( dynamic word = null, dynamic z_level = null, Mob_Living_Silicon_Ai only_listener = null ) {
			dynamic sound_file = null;
			Sound voice = null;
			dynamic M = null;
			dynamic T = null;
			word = String13.toLower( word );
			if ( Lang13.Bool( GlobalVars.vox_sounds[word] ) ) {
				sound_file = GlobalVars.vox_sounds[word];
				voice = new Sound( sound_file, null, true, GlobalVars.VOX_CHANNEL );
				voice.status = GlobalVars.SOUND_STREAM;
				if ( !( only_listener != null ) ) {
					M = null;
					foreach (dynamic _a in GlobalVars.player_list ) {
						M = _a;
						if ( Lang13.Bool( M.client ) && !Lang13.Bool( M.ear_deaf ) ) {
							T = GlobalFuncs.get_turf( M );
							if ( T.z == z_level ) {
								M.write( voice );
							}
						}
					};
				} else {
					((dynamic)only_listener).write( voice );
				}
				return true;
			}
			return false;
		}