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); }
// 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; }