Ejemplo n.º 1
0
        public File save_map(dynamic t1 = null, dynamic t2 = null, string map_name = null, dynamic flags = null)
        {
            dynamic file_text = null;
            File    saved_map = null;


            if (!(String13.CKeyPreserveCase(map_name) == map_name && Lang13.Bool(String13.CKeyPreserveCase(map_name))))
            {
                Task13.Crash("Invalid text supplied to proc save_map, invalid characters or empty string.");
            }

            if (!(t1 is Tile) || !(t2 is Tile))
            {
                Task13.Crash("Invalid arguments supplied to proc save_map, arguments were not turfs.");
            }
            file_text = this.__CallVerb("write map", t1, t2, flags);

            if (File13.Exists("" + map_name + ".dmm"))
            {
                File13.Delete("" + map_name + ".dmm");
            }
            saved_map = new File("" + map_name + ".dmm");
            saved_map.WriteMsg(file_text);
            return(saved_map);
        }
Ejemplo n.º 2
0
        // Function from file: configuration.dm
        public void load(string filename = null, string type = null)
        {
            type = type ?? "config";

            ByTable Lines      = null;
            dynamic t          = null;
            int     pos        = 0;
            string  name       = null;
            dynamic value      = null;
            double? ticklag    = null;
            File    newlog     = null;
            string  mode_name  = null;
            string  mode_name2 = null;
            int     prob_pos   = 0;
            string  prob_name  = null;
            string  prob_value = null;
            string  race_id    = null;
            dynamic species_id = null;
            double? BombCap    = null;

            Lines = GlobalFuncs.file2list(filename);

            foreach (dynamic _d in Lang13.Enumerate(Lines))
            {
                t = _d;


                if (!Lang13.Bool(t))
                {
                    continue;
                }
                t = GlobalFuncs.trim(t);

                if (Lang13.Length(t) == 0)
                {
                    continue;
                }
                else if (String13.SubStr(t, 1, 2) == "#")
                {
                    continue;
                }
                pos   = String13.FindIgnoreCase(t, " ", 1, 0);
                name  = null;
                value = null;

                if (pos != 0)
                {
                    name  = String13.ToLower(String13.SubStr(t, 1, pos));
                    value = String13.SubStr(t, pos + 1, 0);
                }
                else
                {
                    name = String13.ToLower(t);
                }

                if (!Lang13.Bool(name))
                {
                    continue;
                }

                if (type == "config")
                {
                    switch ((string)(name))
                    {
                    case "admin_legacy_system":
                        GlobalVars.config.admin_legacy_system = true;
                        break;

                    case "ban_legacy_system":
                        GlobalVars.config.ban_legacy_system = true;
                        break;

                    case "use_age_restriction_for_jobs":
                        GlobalVars.config.use_age_restriction_for_jobs = true;
                        break;

                    case "lobby_countdown":
                        GlobalVars.config.lobby_countdown = String13.ParseNumber(value);
                        break;

                    case "round_end_countdown":
                        GlobalVars.config.round_end_countdown = String13.ParseNumber(value);
                        break;

                    case "log_ooc":
                        GlobalVars.config.log_ooc = true;
                        break;

                    case "log_access":
                        GlobalVars.config.log_access = true;
                        break;

                    case "log_say":
                        GlobalVars.config.log_say = true;
                        break;

                    case "log_admin":
                        GlobalVars.config.log_admin = true;
                        break;

                    case "log_prayer":
                        GlobalVars.config.log_prayer = true;
                        break;

                    case "log_law":
                        GlobalVars.config.log_law = true;
                        break;

                    case "log_game":
                        GlobalVars.config.log_game = true;
                        break;

                    case "log_vote":
                        GlobalVars.config.log_vote = true;
                        break;

                    case "log_whisper":
                        GlobalVars.config.log_whisper = true;
                        break;

                    case "log_attack":
                        GlobalVars.config.log_attack = true;
                        break;

                    case "log_emote":
                        GlobalVars.config.log_emote = true;
                        break;

                    case "log_adminchat":
                        GlobalVars.config.log_adminchat = true;
                        break;

                    case "log_pda":
                        GlobalVars.config.log_pda = true;
                        break;

                    case "log_hrefs":
                        GlobalVars.config.log_hrefs = true;
                        break;

                    case "allow_admin_ooccolor":
                        GlobalVars.config.allow_admin_ooccolor = true;
                        break;

                    case "allow_vote_restart":
                        GlobalVars.config.allow_vote_restart = true;
                        break;

                    case "allow_vote_mode":
                        GlobalVars.config.allow_vote_mode = true;
                        break;

                    case "no_dead_vote":
                        GlobalVars.config.vote_no_dead = true;
                        break;

                    case "default_no_vote":
                        GlobalVars.config.vote_no_default = true;
                        break;

                    case "vote_delay":
                        GlobalVars.config.vote_delay = String13.ParseNumber(value);
                        break;

                    case "vote_period":
                        GlobalVars.config.vote_period = String13.ParseNumber(value);
                        break;

                    case "norespawn":
                        GlobalVars.config.respawn = false;
                        break;

                    case "servername":
                        GlobalVars.config.server_name = value;
                        break;

                    case "stationname":
                        GlobalVars.config.station_name = value;
                        break;

                    case "serversuffix":
                        GlobalVars.config.server_suffix = true;
                        break;

                    case "hostedby":
                        GlobalVars.config.hostedby = value;
                        break;

                    case "server":
                        GlobalVars.config.server = value;
                        break;

                    case "banappeals":
                        GlobalVars.config.banappeals = value;
                        break;

                    case "wikiurl":
                        GlobalVars.config.wikiurl = value;
                        break;

                    case "forumurl":
                        GlobalVars.config.forumurl = value;
                        break;

                    case "rulesurl":
                        GlobalVars.config.rulesurl = value;
                        break;

                    case "githuburl":
                        GlobalVars.config.githuburl = value;
                        break;

                    case "guest_jobban":
                        GlobalVars.config.guest_jobban = true;
                        break;

                    case "guest_ban":
                        GlobalVars.guests_allowed = false;
                        break;

                    case "usewhitelist":
                        GlobalVars.config.usewhitelist = true;
                        break;

                    case "allow_metadata":
                        GlobalVars.config.allow_Metadata = true;
                        break;

                    case "kick_inactive":

                        if (Convert.ToDouble(value) < 1)
                        {
                            value = 6000;
                        }
                        GlobalVars.config.kick_inactive = value;
                        break;

                    case "load_jobs_from_txt":
                        this.load_jobs_from_txt = true;
                        break;

                    case "forbid_singulo_possession":
                        this.forbid_singulo_possession = true;
                        break;

                    case "popup_admin_pm":
                        GlobalVars.config.popup_admin_pm = true;
                        break;

                    case "allow_holidays":
                        GlobalVars.config.allow_holidays = true;
                        break;

                    case "useircbot":
                        this.useircbot = true;
                        break;

                    case "ticklag":
                        ticklag = String13.ParseNumber(value);

                        if ((ticklag ?? 0) > 0)
                        {
                            this.fps = 10 / (ticklag ?? 0);
                        }
                        break;

                    case "fps":
                        this.fps = String13.ParseNumber(value);
                        break;

                    case "automute_on":
                        this.automute_on = true;
                        break;

                    case "comms_key":
                        GlobalVars.comms_key = value;

                        if (value != "default_pwd" && Lang13.Length(value) > 6)
                        {
                            GlobalVars.comms_allowed = true;
                        }
                        break;

                    case "see_own_notes":
                        GlobalVars.config.see_own_notes = true;
                        break;

                    case "soft_popcap":
                        GlobalVars.config.soft_popcap = String13.ParseNumber(value);
                        break;

                    case "hard_popcap":
                        GlobalVars.config.hard_popcap = String13.ParseNumber(value);
                        break;

                    case "extreme_popcap":
                        GlobalVars.config.extreme_popcap = String13.ParseNumber(value);
                        break;

                    case "soft_popcap_message":
                        GlobalVars.config.soft_popcap_message = value;
                        break;

                    case "hard_popcap_message":
                        GlobalVars.config.hard_popcap_message = value;
                        break;

                    case "extreme_popcap_message":
                        GlobalVars.config.extreme_popcap_message = value;
                        break;

                    case "panic_bunker":
                        GlobalVars.config.panic_bunker = true;
                        break;

                    case "notify_new_player_age":
                        GlobalVars.config.notify_new_player_age = String13.ParseNumber(value);
                        break;

                    case "irc_first_connection_alert":
                        GlobalVars.config.irc_first_connection_alert = true;
                        break;

                    case "aggressive_changelog":
                        GlobalVars.config.aggressive_changelog = true;
                        break;

                    case "log_runtimes":
                        newlog = new File("data/logs/runtimes/runtime-" + String13.FormatTime(Game13.realtime, "YYYY-MM-DD") + ".log");

                        if (Game13.log != newlog)
                        {
                            Game13.log.WriteMsg("Now logging runtimes to data/logs/runtimes/runtime-" + String13.FormatTime(Game13.realtime, "YYYY-MM-DD") + ".log");
                            Game13.log = newlog;
                        }
                        break;

                    case "autoconvert_notes":
                        GlobalVars.config.autoconvert_notes = true;
                        break;

                    case "allow_webclient":
                        GlobalVars.config.allowwebclient = true;
                        break;

                    case "webclient_only_byond_members":
                        GlobalVars.config.webclientmembersonly = true;
                        break;

                    case "announce_admin_logout":
                        GlobalVars.config.announce_admin_logout = true;
                        break;

                    case "announce_admin_login":
                        GlobalVars.config.announce_admin_login = true;
                        break;

                    case "maprotation":
                        GlobalVars.config.maprotation = true;
                        break;

                    case "maprotationchancedelta":
                        GlobalVars.config.maprotatechancedelta = String13.ParseNumber(value);
                        break;

                    case "autoadmin":
                        GlobalVars.protected_config.autoadmin = true;

                        if (Lang13.Bool(value))
                        {
                            GlobalVars.protected_config.autoadmin_rank = String13.CKeyPreserveCase(value);
                        }
                        break;

                    default:
                        GlobalVars.diary.WriteMsg("Unknown setting in configuration: '" + name + "'");
                        break;
                    }
                }
                else if (type == "game_options")
                {
                    switch ((string)(name))
                    {
                    case "health_threshold_crit":
                        GlobalVars.config.health_threshold_crit = String13.ParseNumber(value);
                        break;

                    case "health_threshold_dead":
                        GlobalVars.config.health_threshold_dead = String13.ParseNumber(value);
                        break;

                    case "revival_pod_plants":
                        GlobalVars.config.revival_pod_plants = String13.ParseNumber(value);
                        break;

                    case "revival_cloning":
                        GlobalVars.config.revival_cloning = String13.ParseNumber(value);
                        break;

                    case "revival_brain_life":
                        GlobalVars.config.revival_brain_life = String13.ParseNumber(value);
                        break;

                    case "rename_cyborg":
                        GlobalVars.config.rename_cyborg = true;
                        break;

                    case "ooc_during_round":
                        GlobalVars.config.ooc_during_round = true;
                        break;

                    case "emojis":
                        GlobalVars.config.emojis = true;
                        break;

                    case "run_delay":
                        GlobalVars.config.run_speed = String13.ParseNumber(value);
                        break;

                    case "walk_delay":
                        GlobalVars.config.walk_speed = String13.ParseNumber(value);
                        break;

                    case "human_delay":
                        GlobalVars.config.human_delay = String13.ParseNumber(value);
                        break;

                    case "robot_delay":
                        GlobalVars.config.robot_delay = String13.ParseNumber(value);
                        break;

                    case "monkey_delay":
                        GlobalVars.config.monkey_delay = String13.ParseNumber(value);
                        break;

                    case "alien_delay":
                        GlobalVars.config.alien_delay = String13.ParseNumber(value);
                        break;

                    case "slime_delay":
                        GlobalVars.config.slime_delay = String13.ParseNumber(value);
                        break;

                    case "animal_delay":
                        GlobalVars.config.animal_delay = String13.ParseNumber(value);
                        break;

                    case "alert_red_upto":
                        GlobalVars.config.alert_desc_red_upto = value;
                        break;

                    case "alert_red_downto":
                        GlobalVars.config.alert_desc_red_downto = value;
                        break;

                    case "alert_blue_downto":
                        GlobalVars.config.alert_desc_blue_downto = value;
                        break;

                    case "alert_blue_upto":
                        GlobalVars.config.alert_desc_blue_upto = value;
                        break;

                    case "alert_green":
                        GlobalVars.config.alert_desc_green = value;
                        break;

                    case "alert_delta":
                        GlobalVars.config.alert_desc_delta = value;
                        break;

                    case "no_intercept_report":
                        GlobalVars.config.intercept = false;
                        break;

                    case "assistants_have_maint_access":
                        GlobalVars.config.jobs_have_maint_access |= 1;
                        break;

                    case "security_has_maint_access":
                        GlobalVars.config.jobs_have_maint_access |= 2;
                        break;

                    case "everyone_has_maint_access":
                        GlobalVars.config.jobs_have_maint_access |= 4;
                        break;

                    case "sec_start_brig":
                        GlobalVars.config.sec_start_brig = true;
                        break;

                    case "gateway_delay":
                        GlobalVars.config.gateway_delay = String13.ParseNumber(value);
                        break;

                    case "continuous":
                        mode_name = String13.ToLower(value);

                        if (GlobalVars.config.modes.Contains(mode_name))
                        {
                            GlobalVars.config.continuous[mode_name] = 1;
                        }
                        else
                        {
                            GlobalVars.diary.WriteMsg("Unknown continuous configuration definition: " + mode_name + ".");
                        }
                        break;

                    case "midround_antag":
                        mode_name2 = String13.ToLower(value);

                        if (GlobalVars.config.modes.Contains(mode_name2))
                        {
                            GlobalVars.config.midround_antag[mode_name2] = 1;
                        }
                        else
                        {
                            GlobalVars.diary.WriteMsg("Unknown midround antagonist configuration definition: " + mode_name2 + ".");
                        }
                        break;

                    case "midround_antag_time_check":
                        GlobalVars.config.midround_antag_time_check = String13.ParseNumber(value);
                        break;

                    case "midround_antag_life_check":
                        GlobalVars.config.midround_antag_life_check = String13.ParseNumber(value);
                        break;

                    case "shuttle_refuel_delay":
                        GlobalVars.config.shuttle_refuel_delay = String13.ParseNumber(value);
                        break;

                    case "show_game_type_odds":
                        GlobalVars.config.show_game_type_odds = true;
                        break;

                    case "ghost_interaction":
                        GlobalVars.config.ghost_interaction = true;
                        break;

                    case "traitor_scaling_coeff":
                        GlobalVars.config.traitor_scaling_coeff = String13.ParseNumber(value);
                        break;

                    case "changeling_scaling_coeff":
                        GlobalVars.config.changeling_scaling_coeff = String13.ParseNumber(value);
                        break;

                    case "security_scaling_coeff":
                        GlobalVars.config.security_scaling_coeff = String13.ParseNumber(value);
                        break;

                    case "abductor_scaling_coeff":
                        GlobalVars.config.abductor_scaling_coeff = String13.ParseNumber(value);
                        break;

                    case "traitor_objectives_amount":
                        GlobalVars.config.traitor_objectives_amount = String13.ParseNumber(value);
                        break;

                    case "probability":
                        prob_pos   = String13.FindIgnoreCase(value, " ", 1, 0);
                        prob_name  = null;
                        prob_value = null;

                        if (prob_pos != 0)
                        {
                            prob_name  = String13.ToLower(String13.SubStr(value, 1, prob_pos));
                            prob_value = String13.SubStr(value, prob_pos + 1, 0);

                            if (GlobalVars.config.modes.Contains(prob_name))
                            {
                                GlobalVars.config.probabilities[prob_name] = String13.ParseNumber(prob_value);
                            }
                            else
                            {
                                GlobalVars.diary.WriteMsg("Unknown game mode probability configuration definition: " + prob_name + ".");
                            }
                        }
                        else
                        {
                            GlobalVars.diary.WriteMsg("Incorrect probability configuration definition: " + prob_name + "  " + prob_value + ".");
                        }
                        break;

                    case "protect_roles_from_antagonist":
                        GlobalVars.config.protect_roles_from_antagonist = true;
                        break;

                    case "protect_assistant_from_antagonist":
                        GlobalVars.config.protect_assistant_from_antagonist = true;
                        break;

                    case "enforce_human_authority":
                        GlobalVars.config.enforce_human_authority = true;
                        break;

                    case "allow_latejoin_antagonists":
                        GlobalVars.config.allow_latejoin_antagonists = true;
                        break;

                    case "allow_random_events":
                        GlobalVars.config.allow_random_events = true;
                        break;

                    case "minimal_access_threshold":
                        GlobalVars.config.minimal_access_threshold = String13.ParseNumber(value);
                        break;

                    case "jobs_have_minimal_access":
                        GlobalVars.config.jobs_have_minimal_access = true;
                        break;

                    case "humans_need_surnames":
                        this.humans_need_surnames = true;
                        break;

                    case "force_random_names":
                        GlobalVars.config.force_random_names = true;
                        break;

                    case "allow_ai":
                        GlobalVars.config.allow_ai = true;
                        break;

                    case "silent_ai":
                        GlobalVars.config.silent_ai = true;
                        break;

                    case "silent_borg":
                        GlobalVars.config.silent_borg = true;
                        break;

                    case "sandbox_autoclose":
                        GlobalVars.config.sandbox_autoclose = true;
                        break;

                    case "default_laws":
                        GlobalVars.config.default_laws = String13.ParseNumber(value);
                        break;

                    case "silicon_max_law_amount":
                        GlobalVars.config.silicon_max_law_amount = String13.ParseNumber(value);
                        break;

                    case "join_with_mutant_race":
                        GlobalVars.config.mutant_races = true;
                        break;

                    case "roundstart_races":

                        if (!this.cleared_default_races)
                        {
                            GlobalVars.roundstart_species = new ByTable();
                            this.cleared_default_races    = true;
                        }
                        race_id = String13.ToLower(value);

                        foreach (dynamic _b in Lang13.Enumerate(GlobalVars.species_list))
                        {
                            species_id = _b;


                            if (species_id == race_id)
                            {
                                GlobalVars.roundstart_species[species_id] = GlobalVars.species_list[species_id];
                            }
                        }
                        break;

                    case "join_with_mutant_humans":
                        GlobalVars.config.mutant_humans = true;
                        break;

                    case "assistant_cap":
                        GlobalVars.config.assistant_cap = String13.ParseNumber(value);
                        break;

                    case "starlight":
                        GlobalVars.config.starlight = true;
                        break;

                    case "grey_assistants":
                        GlobalVars.config.grey_assistants = true;
                        break;

                    case "no_summon_guns":
                        GlobalVars.config.no_summon_guns = true;
                        break;

                    case "no_summon_magic":
                        GlobalVars.config.no_summon_magic = true;
                        break;

                    case "no_summon_events":
                        GlobalVars.config.no_summon_events = true;
                        break;

                    case "reactionary_explosions":
                        GlobalVars.config.reactionary_explosions = true;
                        break;

                    case "bombcap":
                        BombCap = String13.ParseNumber(value);

                        if (!Lang13.Bool(BombCap))
                        {
                            continue;
                        }

                        if ((BombCap ?? 0) < 4)
                        {
                            BombCap = 4;
                        }

                        if ((BombCap ?? 0) > 128)
                        {
                            BombCap = 128;
                        }
                        GlobalVars.MAX_EX_DEVESTATION_RANGE = Num13.Floor((BombCap ?? 0) / 4);
                        GlobalVars.MAX_EX_HEAVY_RANGE       = Num13.Floor((BombCap ?? 0) / 2);
                        GlobalVars.MAX_EX_LIGHT_RANGE       = BombCap;
                        GlobalVars.MAX_EX_FLASH_RANGE       = BombCap;
                        GlobalVars.MAX_EX_FLAME_RANGE       = BombCap;
                        break;

                    default:
                        GlobalVars.diary.WriteMsg("Unknown setting in configuration: '" + name + "'");
                        break;
                    }
                }
            }
            this.fps = Num13.Floor(Convert.ToDouble(this.fps));

            if (Convert.ToDouble(this.fps) <= 0)
            {
                this.fps = Lang13.Initial(this, "fps");
            }
            return;
        }