// Function from file: allinone.dm
        public override bool receive_signal(Signal signal = null, bool?receive_method = null, dynamic receive_param = null)
        {
            dynamic original = null;


            if (!this.on)
            {
                return(false);
            }

            if (this.is_freq_listening(signal))
            {
                signal.data["done"]        = 1;
                signal.data["compression"] = 0;
                original = signal.data["original"];

                if (Lang13.Bool(original))
                {
                    original.data["done"] = 1;
                }

                if (Convert.ToDouble(signal.data["slow"]) > 0)
                {
                    Task13.Sleep(Convert.ToInt32(signal.data["slow"]));
                }

                if (signal.frequency == GlobalVars.SYND_FREQ)
                {
                    GlobalFuncs.Broadcast_Message(signal.data["mob"], Lang13.Bool(signal.data["vmask"]), signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], signal.data["realname"], null, Lang13.Bool(signal.data["compression"]), new ByTable(new object [] { 0, this.z }), signal.frequency, signal.data["spans"], signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"]);
                }
            }
            return(false);
        }
Ejemplo n.º 2
0
        // Function from file: broadcaster.dm
        public override void receive_information(Signal signal = null, Obj_Machinery_Telecomms machine_from = null)
        {
            dynamic original       = null;
            string  signal_message = null;


            if (Lang13.Bool(signal.data["reject"]))
            {
                return;
            }

            if (Lang13.Bool(signal.data["message"]))
            {
                signal.data["done"] = 1;
                original            = signal.data["original"];

                if (Lang13.Bool(original))
                {
                    original.data["done"]        = 1;
                    original.data["compression"] = signal.data["compression"];
                    original.data["level"]       = signal.data["level"];
                }
                signal_message = "" + signal.frequency + ":" + signal.data["message"] + ":" + signal.data["realname"];

                if (GlobalVars.recentmessages.Contains(signal_message))
                {
                    return;
                }
                GlobalVars.recentmessages.Add(signal_message);

                if (Convert.ToDouble(signal.data["slow"]) > 0)
                {
                    Task13.Sleep(Convert.ToInt32(signal.data["slow"]));
                }
                signal.data["level"] |= this.listening_level;

                if (Lang13.Bool(signal.data["type"]) == false)
                {
                    GlobalFuncs.Broadcast_Message(signal.data["mob"], Lang13.Bool(signal.data["vmask"]), signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], signal.data["realname"], 0, Lang13.Bool(signal.data["compression"]), signal.data["level"], signal.frequency, signal.data["spans"], signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"]);
                }

                if (Lang13.Bool(signal.data["type"]) == true)
                {
                    GlobalFuncs.Broadcast_SimpleMessage(signal.data["name"], signal.frequency, signal.data["message"], null, null, Lang13.Bool(signal.data["compression"]), this.listening_level);
                }

                if (Convert.ToInt32(signal.data["type"]) == 2)
                {
                    GlobalFuncs.Broadcast_Message(signal.data["mob"], Lang13.Bool(signal.data["vmask"]), signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], signal.data["realname"], 4, Lang13.Bool(signal.data["compression"]), signal.data["level"], signal.frequency, signal.data["spans"], signal.data["verb_say"], signal.data["verb_ask"], signal.data["verb_exclaim"], signal.data["verb_yell"]);
                }

                if (!GlobalVars.message_delay)
                {
                    GlobalVars.message_delay = true;
                    Task13.Schedule(10, (Task13.Closure)(() => {
                        GlobalVars.message_delay  = false;
                        GlobalVars.recentmessages = new ByTable();
                        return;
                    }));
                }
                Icon13.Flick("broadcaster_send", this);
            }
            return;
        }
Ejemplo n.º 3
0
        // Function from file: radio.dm
        public override void talk_into(dynamic M = null, dynamic input = null, dynamic channel = null, ByTable spans = null)
        {
            dynamic     freq      = null;
            double?     freqnum   = null;
            dynamic     position  = null;
            string      real_name = null;
            string      mobkey    = null;
            bool        voicemask = false;
            dynamic     voice     = null;
            dynamic     speaker   = null;
            string      jobname   = null;
            Data_Record findjob   = null;
            dynamic     B         = null;
            Signal      signal    = null;
            Signal      signal2   = null;
            Obj_Machinery_Telecomms_Receiver R  = null;
            Obj_Machinery_Telecomms_Allinone R2 = null;
            int?   filter_type = null;
            Signal signal3     = null;
            Obj_Machinery_Telecomms_Receiver R3 = null;


            if (!Lang13.Bool(this.on))
            {
                return;
            }

            if (!Lang13.Bool(M) || !Lang13.Bool(input))
            {
                return;
            }

            if (((Wires)this.wires).is_cut("transmit"))
            {
                return;
            }

            if (!((Ent_Dynamic)M).IsVocal())
            {
                return;
            }

            if (this.use_command)
            {
                spans.Or("commmand_headset");
            }

            if (Lang13.Bool(channel) && this.channels != null && this.channels.len > 0)
            {
                if (channel == "department")
                {
                    channel = this.channels[1];
                }
                freq = this.secure_radio_connections[channel];

                if (!Lang13.Bool(this.channels[channel]))
                {
                    return;
                }
            }
            else
            {
                freq    = this.frequency;
                channel = null;
            }
            freqnum   = String13.ParseNumber(freq);
            position  = GlobalFuncs.get_turf(this);
            real_name = M.name;
            mobkey    = "none";
            voicemask = false;
            voice     = ((Ent_Dynamic)M).GetVoice();

            if (M is Mob)
            {
                speaker   = M;
                real_name = speaker.real_name;

                if (Lang13.Bool(speaker.client))
                {
                    mobkey = speaker.key;
                }
            }

            if (M is Mob_Living_Carbon_Human)
            {
                findjob = GlobalFuncs.find_record("name", voice, GlobalVars.data_core.general);

                if (voice != real_name)
                {
                    voicemask = true;
                }

                if (findjob != null)
                {
                    jobname = findjob.fields["rank"];
                }
                else
                {
                    jobname = "Unknown";
                }
            }
            else if (M is Mob_Living_Carbon)
            {
                jobname = "No id";
            }
            else if (M is Mob_Living_Silicon_Ai)
            {
                jobname = "AI";
            }
            else if (M is Mob_Living_Silicon_Robot)
            {
                B       = M;
                jobname = "" + B.designation + " Cyborg";
            }
            else if (M is Mob_Living_Silicon_Pai)
            {
                jobname = "Personal AI";
            }
            else if (M is Obj)
            {
                jobname = "Machine";
            }
            else
            {
                jobname = "Unknown";
            }

            if (freqnum == GlobalVars.CENTCOM_FREQ && this.centcom)
            {
                signal = new Signal();
                signal.transmission_method = 2;
                signal.data = new ByTable()
                              .Set("mob", M)
                              .Set("mobtype", M.type)
                              .Set("realname", real_name)
                              .Set("name", voice)
                              .Set("job", jobname)
                              .Set("key", mobkey)
                              .Set("vmask", voicemask)
                              .Set("compression", 0)
                              .Set("message", input)
                              .Set("radio", this)
                              .Set("slow", 0)
                              .Set("traffic", 0)
                              .Set("type", 0)
                              .Set("server", null)
                              .Set("reject", 0)
                              .Set("level", 0)
                              .Set("languages", this.languages)
                              .Set("spans", spans)
                              .Set("verb_say", M.verb_say)
                              .Set("verb_ask", M.verb_ask)
                              .Set("verb_exclaim", M.verb_exclaim)
                              .Set("verb_yell", M.verb_yell)
                ;
                signal.frequency = freqnum;
                GlobalFuncs.Broadcast_Message(M, voicemask, this, input, voice, jobname, real_name, 5, Lang13.Bool(signal.data["compression"]), new ByTable(new object [] { position.z, 0 }), freq, spans, this.verb_say, this.verb_ask, this.verb_exclaim, this.verb_yell);
                return;
            }

            if (this.subspace_transmission)
            {
                signal2 = new Signal();
                signal2.transmission_method = 2;
                signal2.data = new ByTable()
                               .Set("mob", M)
                               .Set("mobtype", M.type)
                               .Set("realname", real_name)
                               .Set("name", voice)
                               .Set("job", jobname)
                               .Set("key", mobkey)
                               .Set("vmask", voicemask)
                               .Set("compression", Rand13.Int(35, 65))
                               .Set("message", input)
                               .Set("radio", this)
                               .Set("slow", 0)
                               .Set("traffic", 0)
                               .Set("type", 0)
                               .Set("server", null)
                               .Set("reject", 0)
                               .Set("level", position.z)
                               .Set("languages", M.languages)
                               .Set("spans", spans)
                               .Set("verb_say", M.verb_say)
                               .Set("verb_ask", M.verb_ask)
                               .Set("verb_exclaim", M.verb_exclaim)
                               .Set("verb_yell", M.verb_yell)
                ;
                signal2.frequency = freq;

                foreach (dynamic _a in Lang13.Enumerate(GlobalVars.telecomms_list, typeof(Obj_Machinery_Telecomms_Receiver)))
                {
                    R = _a;

                    R.receive_signal(signal2);
                }

                foreach (dynamic _b in Lang13.Enumerate(GlobalVars.telecomms_list, typeof(Obj_Machinery_Telecomms_Allinone)))
                {
                    R2 = _b;

                    R2.receive_signal(signal2);
                }
                return;
            }
            filter_type = 2;
            signal3     = new Signal();
            signal3.transmission_method = 2;
            signal3.data = new ByTable()
                           .Set("mob", M)
                           .Set("mobtype", M.type)
                           .Set("realname", real_name)
                           .Set("name", voice)
                           .Set("job", jobname)
                           .Set("key", mobkey)
                           .Set("vmask", voicemask)
                           .Set("compression", 0)
                           .Set("message", input)
                           .Set("radio", this)
                           .Set("slow", 0)
                           .Set("traffic", 0)
                           .Set("type", 0)
                           .Set("server", null)
                           .Set("reject", 0)
                           .Set("level", position.z)
                           .Set("languages", this.languages)
                           .Set("spans", spans)
                           .Set("verb_say", M.verb_say)
                           .Set("verb_ask", M.verb_ask)
                           .Set("verb_exclaim", M.verb_exclaim)
                           .Set("verb_yell", M.verb_yell)
            ;
            signal3.frequency = freqnum;

            foreach (dynamic _c in Lang13.Enumerate(GlobalVars.telecomms_list, typeof(Obj_Machinery_Telecomms_Receiver)))
            {
                R3 = _c;

                R3.receive_signal(signal3);
            }
            Task13.Schedule(20, (Task13.Closure)(() => {
                if (Lang13.Bool(signal3.data["level"].Contains(Lang13.Bool(signal3.data["done"]) && Lang13.Bool(position.z))))
                {
                    return;
                }
                GlobalFuncs.Broadcast_Message(M, voicemask, this, input, voice, jobname, real_name, filter_type, Lang13.Bool(signal3.data["compression"]), new ByTable(new object [] { position.z }), freq, spans, this.verb_say, this.verb_ask, this.verb_exclaim, this.verb_yell);
                return;
            }));
            return;
        }