private static void BuildByParameter(BuildParameter param) { string outputFileName = param.outputFileName; BuildTarget targetPlatform = param.targetPlatform; List <string> allScene = new List <string> (); foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) { if (scene.enabled) { allScene.Add(scene.path); } } PlayerSettings.statusBarHidden = true; // 実行 string errorMessage = BuildPipeline.BuildPlayer( allScene.ToArray(), outputFileName, targetPlatform, BuildOptions.None ).ToString(); // 結果出力 if (!string.IsNullOrEmpty(errorMessage.ToString())) { Debug.LogError("Error!"); Debug.LogError(errorMessage); throw new Exception(); } Debug.Log("Complete!"); }
private void Initialize() { if (File.Exists(configPath)) { string config = File.ReadAllText(configPath); var json = lhJson.Parse(config) as JsonObject; m_buildParameter = new BuildParameter(json["buildParameter"].AsDict()); var bundleGroupJson = json["bundleGroup"].AsList(); for (int i = 0; i < bundleGroupJson.Count; i++) { m_bundleGroup.Add(new BundleGroup(bundleGroupJson[i].AsDict())); } } else { m_buildParameter = new BuildParameter() { applicationPath = ApplicationPath.StreamingAssetsPath, stuff = ".assetbundle", outputRootFolder = "lhBundle", crc = 0, buildAssetBundleOptions = BuildAssetBundleOptions.CollectDependencies, buildOptions = BuildOptions.Development, buildTarget = BuildTarget.Android }; } }
public static void BuildIOS() { //修改导出路径 string[] args = System.Environment.GetCommandLineArgs(); if (args != null && args.Length >= 6) { ExportPath = args[5]; } if (args != null && args.Length >= 7) { ExportName = args[6]; } var buildString = GetBuildString(); if (buildString != null) { buildParameter = new BuildParameter(); buildParameter.SetExtraArg(buildString); } //判断是不是iOS平台 if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS) { BuildApp(BuildTarget.iOS); } else { curState = AutoPackerState.Build_App; EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS); } }
public void Revert() { m_bundleGroup.Clear(); m_buildParameter = null; Initialize(); EditorUtility.DisplayDialog("Information", "Rever success", "Ok"); }
public static void PackAB_PC() { //修改assetbundles生成路径 var buildString = GetBuildString(); if (buildString != null) { buildParameter = new BuildParameter(); buildParameter.SetExtraArg(buildString); } //判断是不是PC平台 if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64 || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneOSX || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneLinux64) { PackAB(BuildTarget.StandaloneWindows64); } else { curState = AutoPackerState.Pack_AB; EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows64); } }
protected void AssertParamNeeded(BuildParameter param, BuildParameter need, int more, int?level = null) { var lv = level ?? OnLevel; manager.MissingRequirments(dal.Get(lv, param)) .Where(x => x.Any(y => y.param.id == need.id && y.amount == more)) .Any(); }
public override void Inject(object target, IContainer container, ImportMetadata metadata, IImportInterceptor interceptor, ErrorTracer errorTracer, BuildParameter[] parameters) { Contract.Requires<ArgumentNullException>(target != null, "target"); Contract.Requires<ArgumentNullException>(container != null, "container"); Contract.Requires<ArgumentNullException>(metadata != null, "metadata"); Contract.Requires<ArgumentNullException>(errorTracer != null, "errorTracer"); throw new NotImplementedException(); }
public LevelParamViewModel(FakeDAL dal, BuildParameter p, int level, Build b, IMvxCommand <LevelParamViewModel> tap) { lp = dal.Get <BuildLevelParameter>() .Single(x => x.Game.id == p.Game.id && x.Build.id == b.id && x.Parameter.Type.id == p.Type.id && x.Parameter.id == p.id && x.Level == level); Amount = lp.Amount; Tap = tap; Name = p.Name; Level = level; }
public void ProcessParameterDeserializer_ConvertsExportedAgentSettings_Git() { var agentSettings = new BuildParameter { Json = @"{""unknown"": ""please help""}" }; var expBuildDef = this.Serialize(new { GitAgentSettings = agentSettings }); var procParam = new[] { "AgentSettings", expBuildDef }; ExportedProcessParameterTransformer.ProcessParameterDeserializer(procParam).ShouldBeEquivalentTo(agentSettings); }
public override void Inject(object target, IContainer container, ImportMetadata metadata, IImportInterceptor interceptor, ErrorTracer errorTracer, BuildParameter[] parameters) { errorTracer.Phase = "EventManager Inject " + metadata.ContractName; try { var eventInfo = _member as EventInfo; if (eventInfo != null) _manager.AddPublisher(_metadata.ContractName, eventInfo, target, errorTracer); var method = _member as MethodInfo; if (method != null) _manager.AddEventHandler(_metadata.ContractName, method, target, errorTracer); } catch (Exception e) { errorTracer.Exceptional = true; errorTracer.Exception = e; } }
protected void AssertParamChange(BuildParameter param, int alter, bool allowed = true, int?level = null, bool allfollowing = true) { int start = level ?? OnLevel; for (int i = start; i <= param.Game.MaxLevel; i++) { var del = manager.ChangeRequest(dal.Get(i, param), alter); if (allowed) { Assert.IsNotNull(del, "{0} {1} not allowed lvl {3}->{2}", param.Name, alter, i, start); del(); } else { Assert.IsNull(del, "{0} {1} actually is allowed lvl {2}", param.Name, alter, start); break; // only first tiem will be disapplows. } } }
public DefaultBuildContext(IExport targetExport, BuildMode mode, IContainer container, string contractName, ErrorTracer errorTracer, BuildParameter[] parameters, IResolverExtension[] resolverExtensions) { Contract.Requires<ArgumentNullException>(targetExport != null, "targetExport"); Contract.Requires<ArgumentNullException>(container != null, "container"); Contract.Requires<ArgumentNullException>(errorTracer != null, "errorTracer"); Metadata = targetExport.GetNamedExportMetadata(contractName); errorTracer.Export = Metadata.ToString(); ExportType = targetExport.ImplementType; Target = null; BuildCompled = false; Policys = new PolicyList(); Mode = mode; Container = container; ErrorTracer = errorTracer; Parameters = parameters; ResolverExtensions = resolverExtensions; }
public static void PackAB_IOS() { //修改assetbundles生成路径 var buildString = GetBuildString(); if (buildString != null) { buildParameter = new BuildParameter(); buildParameter.SetExtraArg(buildString); } //判断是不是iOS平台 if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS) { PackAB(BuildTarget.iOS); } else { curState = AutoPackerState.Pack_AB; EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS); } }
public BuildDefinitionViewModel(IBuildDefinition build) { this.Name = build.Name; this.BuildDefinition = build; this.Uri = build.Uri; this.TeamProject = build.TeamProject; this.ContinuousIntegrationType = GetFriendlyTriggerName(build.ContinuousIntegrationType); if ((build.ContinuousIntegrationType == Microsoft.TeamFoundation.Build.Client.ContinuousIntegrationType.Schedule || build.ContinuousIntegrationType == Microsoft.TeamFoundation.Build.Client.ContinuousIntegrationType.ScheduleForced) && build.Schedules.Count > 0) { this.ContinuousIntegrationType = string.Format("{0} - {1}", this.ContinuousIntegrationType, ConvertTime(build.Schedules[0].StartTime.ToString(CultureInfo.CurrentCulture))); } else if (build.ContinuousIntegrationType == Microsoft.TeamFoundation.Build.Client.ContinuousIntegrationType.Gated) { this.ContinuousIntegrationType = string.Format("{0} - {1}", this.ContinuousIntegrationType, build.BatchSize); } else if (build.ContinuousIntegrationType == Microsoft.TeamFoundation.Build.Client.ContinuousIntegrationType.Batch) { this.ContinuousIntegrationType = string.Format("{0} - {1}", this.ContinuousIntegrationType, build.ContinuousIntegrationQuietPeriod); } this.BuildController = build.BuildController != null ? build.BuildController.Name : NotAvailable; this.Process = build.Process != null?Path.GetFileNameWithoutExtension(build.Process.ServerPath) : NotAvailable; this.Description = build.Description; this.DefaultDropLocation = build.DefaultDropLocation; this.Id = Convert.ToInt32(build.Id); this.QueueStatus = build.QueueStatus.ToString(); this.Enabled = build.QueueStatus != DefinitionQueueStatus.Disabled; this.IsGitProject = build.SourceProviders.Any(s => s.Name.ToUpperInvariant().Contains("GIT")); this.IsTfvcProject = !this.IsGitProject; this.LastModifiedBy = build.Workspace.LastModifiedBy; this.LastModifiedDate = build.Workspace.LastModifiedDate; try { var parameters = WorkflowHelpers.DeserializeProcessParameters(build.ProcessParameters); this.OutputLocation = parameters.ContainsKey("OutputLocation") ? parameters["OutputLocation"].ToString() : "SingleFolder"; if (parameters.ContainsKey("AgentSettings")) { try { if (parameters["AgentSettings"].GetType() == typeof(AgentSettings)) { AgentSettings ags = (AgentSettings)parameters["AgentSettings"]; if (ags.HasTags) { this.AgentTags = ags.Tags.ToString(); } } else if (parameters["AgentSettings"].GetType() == typeof(BuildParameter)) { BuildParameter ags = (BuildParameter)parameters["AgentSettings"]; { var jstt = JsonConvert.DeserializeObject <AgentSettingsBuildParameter>(ags.Json); if (jstt.Tags != null && jstt.Tags.Count > 0) { this.AgentTags = string.Join(", ", jstt.Tags.ToArray()); } } } } catch (Exception) { this.AgentTags = "Failed to determine"; } } } catch (Exception) { this.OutputLocation = "Failed to determine"; } }
public static BuildLevelParameter Get(this FakeDAL dal, int level, BuildParameter param) { return(dal.Get <BuildLevelParameter>().Single(x => x.Parameter.id == param.id && x.Level == level)); }
private void BuildUp(BuildObject build, ErrorTracer errorTracer, BuildParameter[] buildParameters) { lock (build.Export) { var context = new DefaultBuildContext(build, container, errorTracer, buildParameters); build.Instance = context.Target; Pipeline.Build(context); } }
/// <summary> /// The build up. /// </summary> /// <param name="type"> /// The type. /// </param> /// <param name="constructorArguments"> /// The constructor arguments. /// </param> /// <returns> /// The <see cref="object" />. /// </returns> internal object BuildUp(Type type, object[] constructorArguments, ErrorTracer errorTracer, BuildParameter[] buildParameters) { Contract.Requires<ArgumentNullException>(type != null, "type"); errorTracer.Phase = "Begin Building Up"; try { var context = new DefaultBuildContext( _factory.CreateAnonymos(type, constructorArguments), BuildMode.BuildUpObject, container, type.Name, errorTracer, buildParameters, _componentRegistry.GetAll<IResolverExtension>().ToArray()); Pipeline.Build(context); Contract.Assume(context.Target != null); return context.Target; } catch (Exception e) { errorTracer.Exceptional = true; errorTracer.Exception = e; return null; } }
/// <summary> /// The build up. /// </summary> /// <param name="toBuild"></param> /// <param name="export"> /// The export. /// </param> /// <param name="errorTracer"></param> /// <returns> /// The <see cref="object" />. /// </returns> public object BuildUp(object toBuild, ErrorTracer errorTracer, BuildParameter[] buildParameters) { Contract.Requires<ArgumentNullException>(errorTracer != null, "errorTracer"); Contract.Requires<ArgumentNullException>(toBuild != null, "export"); lock (toBuild) { try { errorTracer.Phase = "Begin Building Up"; var context = new DefaultBuildContext( _factory.CreateAnonymosWithTarget(toBuild.GetType(), toBuild), BuildMode.BuildUpObject, container, toBuild.GetType().Name, errorTracer, buildParameters, _componentRegistry.GetAll<IResolverExtension>().ToArray()); Pipeline.Build(context); Contract.Assume(context.Target != null); return context.Target; } catch (Exception e) { errorTracer.Exceptional = true; errorTracer.Exception = e; return null; } } }
/// <summary> /// The build up. /// </summary> /// <param name="export"> /// The export. /// </param> /// <param name="contractName"> /// The contract name. /// </param> /// <param name="tracer"></param> /// <param name="buildParameters"></param> /// <returns> /// The <see cref="object" />. /// </returns> public object BuildUp(IExport export, string contractName, ErrorTracer tracer, BuildParameter[] buildParameters) { Contract.Requires<ArgumentNullException>(export != null, "export"); lock (export) { try { tracer.Phase = "Begin Building Up"; var context = new DefaultBuildContext(export, BuildMode.Resolve, container, contractName, tracer, buildParameters, _componentRegistry.GetAll<IResolverExtension>().ToArray()); var buildObject = new BuildObject(export.ImportMetadata, context.Metadata, buildParameters); Pipeline.Build(context); if (tracer.Exceptional) return null; buildObject.Instance = context.Target; if (!export.ExternalInfo.External && !export.ExternalInfo.HandlesLiftime) RebuildManager.AddBuild(buildObject); Contract.Assume(context.Target != null); return context.Target; } catch (Exception e) { tracer.Exceptional = true; tracer.Exception = e; return null; } } }
public static void BuildApk() { var param = new BuildParameter(outputDirectory + @"\android\" + PlayerSettings.productName + "Dev.apk ", BuildTarget.Android); BuildByParameter(param); }
public static void BuildExe() { var param = new BuildParameter(outputDirectory + @"\exe\ " + PlayerSettings.productName + "Dev.exe ", BuildTarget.StandaloneWindows); BuildByParameter(param); }
/// <summary> /// 生成web自定义表单; /// </summary> /// <param name="buildPara"></param> /// <returns></returns> public string BuildCustomForm(BuildParameter buildPara) { string winType = "Edit"; string ucode = string.Empty; if (string.IsNullOrEmpty(buildPara.Id)) { throw new Exception("Id不能为空!"); } var fileName = BuildFile(buildPara.Id, ref ucode); //得到ini文件内容和帐套号 var extJsStr = BuildExtJs(buildPara.Id); //p_form_m表中ucode可能不对,比如帐套是其他地方还原过来的,这里取默认帐套号 if (!string.IsNullOrEmpty(ucode)) { ucode = AppInfoBase.DbName; //如NG0002 } var type = buildPara.Type; //web:网页自定义表单,app:移动自定义表单 if (string.IsNullOrEmpty(type)) { type = "web"; } buildPara.AssemblyPath = AppDomain.CurrentDomain.BaseDirectory + "bin\\"; buildPara.CsFilePath = AppDomain.CurrentDomain.BaseDirectory + "CustomFormTemp\\"; //获取设计器生成ini文件内容 PbBillInfo billInfo = new PbBillInfo(); billInfo = CommonParser.GetBillBase(fileName); // 生成前端代码; var clientGen = new ClientGen.Generator(); if (type == "app") { if (!ClientGen.Generator.GenerateApp(billInfo, ref winType, ucode)) { throw new Exception("前端代码生成失败!"); } } else { if (!ClientGen.Generator.Generate(billInfo, ref winType, extJsStr, ucode)) { throw new Exception("前端代码生成失败!"); } } // 生成服务端代码; bool isGenerateCsFile = true; //是否生成cs文件 if (string.IsNullOrEmpty(buildPara.CsFilePath)) { isGenerateCsFile = false; } if (type == "app") { if (!ServerGen.Generator.GenerateApp(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode)) { throw new Exception("服务端代码生成失败!"); } } else { if (!ServerGen.Generator.Generate(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode)) { throw new Exception("服务端代码生成失败!"); } } if (!ServerGen.Generator.Generate(billInfo, buildPara.AssemblyPath, isGenerateCsFile, buildPara.CsFilePath, ucode)) { throw new Exception("服务端代码生成失败!"); } //begin 增加一个菜单 string configPath = HttpContext.Current.Request.PhysicalApplicationPath + "\\NG3Config\\MainNavigation.xml"; string menuName = ucode + (type == "app" ? "aform" : "pform") + buildPara.Id + winType; string menuText = menuName + " - " + billInfo.Description; string menuTabTitle = billInfo.Description; DataSet ds = new DataSet(); ds.ReadXml(configPath); DataRow[] drs = ds.Tables["TreeNode"].Select("Text='" + menuText + "'"); if (drs == null || drs.Length < 1) { DataRow dr = ds.Tables["TreeNode"].NewRow(); dr["NavigateUrl"] = "/Custom/SUP/" + menuName; dr["Text"] = menuText; dr["TabTitle"] = menuTabTitle; dr["UserType"] = "system,developer,translator"; dr["TreeNodeGroup_Id"] = "0"; ds.Tables["TreeNode"].Rows.Add(dr); ds.WriteXml(configPath); } //end 增加一个菜单 //// 返回URL链接; //var ip = string.IsNullOrEmpty(buildPara.Port) ? buildPara.Host : string.Format("{0}:{1}", buildPara.Host, buildPara.Port); //return string.Format(@"http://{0}/SUP/pform{1}List", ip, buildPara.Id); //返回生成业务点; return(string.Format(@"自定义表单pform{0}生成成功", buildPara.Id)); }
protected void AssertParamChEqul(BuildParameter param, int change, int value, bool allfollowing = true) { AssertParamChange(param, change); AssertParamEquals(param, value); }
public static void BuildWebGL() { var param = new BuildParameter(outputDirectory + @"\webgl\ " + PlayerSettings.productName + "Dev ", BuildTarget.WebGL); BuildByParameter(param); }
protected void AssertParamEquals(BuildParameter param, int value, int?level = null) => Assert.AreEqual(dal.Get(level ?? OnLevel, param).Amount, value);
public static GameBuild Generate(FakeDAL dal) { // or something //var g = dal.Get<GameBuild>().FirstOrDefault(x => x.Name == "Underrail"); //if (g != null) return g; // already there // Gam using (var builder = new DefinitionBuilder(dal, "Underrail", 25)) { using (var attributes = builder.ParameterType("Attributes", 3)) { t_attributes = attributes.ptype; attributes.LevelPoints(1, 19, 10); for (int i = 2; i <= builder.game.MaxLevel; i++) { attributes.LevelPoints(i, i % 4 == 0 ? 1 : 0, 20); } a_str = attributes.Parameter("Strength").Commit(); a_dex = attributes.Parameter("Dexterity").Commit(); a_agi = attributes.Parameter("Agility").Commit(); a_con = attributes.Parameter("Constitution").Commit(); a_per = attributes.Parameter("Perception").Commit(); a_wil = attributes.Parameter("Will").Commit(); a_int = attributes.Parameter("Intelligence").Commit(); } using (var skills = builder.ParameterType("Skills")) { t_skills = skills.ptype; skills.LevelPoints(1, 120, 15); for (int i = 2; i <= builder.game.MaxLevel; i++) { skills.LevelPoints(i, 40, 15 + (i - 1) * 5); } skills.SCategory("Offense"); s_guns = skills.Parameter("Guns").Commit(); s_throwing = skills.Parameter("Throwing").Commit(); s_crossbows = skills.Parameter("Crossbows").Commit(); s_melee = skills.Parameter("Melee").Commit(); skills.SCategory("Defense"); s_dodge = skills.Parameter("Dodge").Commit(); s_evasion = skills.Parameter("Evasion").Commit(); skills.SCategory("Subterfuge"); s_stealth = skills.Parameter("Stealth").Commit(); s_hacking = skills.Parameter("Hacking").Commit(); s_lockpicking = skills.Parameter("Lockpicking").Commit(); s_pickpocketing = skills.Parameter("Pickpocketing").Commit(); s_traps = skills.Parameter("Traps").Commit(); skills.SCategory("Technology"); s_mechanics = skills.Parameter("Mechanics").Commit(); s_electronics = skills.Parameter("Electronics").Commit(); s_chemistry = skills.Parameter("Chemistry").Commit(); s_biology = skills.Parameter("Biology").Commit(); s_tailoring = skills.Parameter("Tailoring").Commit(); skills.SCategory("Psi"); s_thoughtcontrol = skills.Parameter("Thought Control").Commit(); s_psychokinesis = skills.Parameter("Psychokinesis").Commit(); s_metathermics = skills.Parameter("Metathermics").Commit(); // s_temporalmanipulation = skills.Parameter("TemporalManipulation").Commit(); skills.SCategory("Social"); s_persuasion = skills.Parameter("Persuasion").Commit(); s_intimidation = skills.Parameter("Intimidation").Commit(); s_mercantile = skills.Parameter("Mercantile").Commit(); } using (var psi = builder.ParameterType("Psi Abilities")) { t_psi_abilities = psi.ptype; for (int i = 1; i <= builder.game.MaxLevel; i++) { psi.LevelPoints(i, 0, 1); } psi.SCategory("Metathermics"); p_cryokinesis = psi.Parameter("Cryokinesis", 0).Require(0, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_pyrokinesis = psi.Parameter("Pyrokinesis", 0).Require(25, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_cryostasis = psi.Parameter("Cryostasis", 0).Require(35, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_pyrokinetic_stream = psi.Parameter("Pyrokinetic Stream", 0).Require(35, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_cryokinetic_orb = psi.Parameter("Cryokinetic Orb", 0).Require(40, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_thermodynamic_destabilisation = psi.Parameter("Thermodynamic Destabilisation", 0).Require(50, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_cryo_shield = psi.Parameter("Cryo Sheild", 0).Require(55, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_exothermic_aura = psi.Parameter("Exothermic Aura", 0).Require(70, s_metathermics).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); psi.SCategory("Psychokinesis"); p_telekinetic_punch = psi.Parameter("Telekinetic Punch", 0).Require(0, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_force_field = psi.Parameter("Force Field", 0).Require(25, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_electrokinesis = psi.Parameter("Electrokinesis", 0).Require(30, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_force_emission = psi.Parameter("Force Emission", 0).Require(35, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_disruptive_field = psi.Parameter("Disruptive Field", 0).Require(40, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_electrokinetic_imprint = psi.Parameter("Electrokinetic Imprint", 0).Require(45, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_telekinetic_proxy = psi.Parameter("Telekinetic Proxy", 0).Require(55, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_implosion = psi.Parameter("Implosion", 0).Require(70, s_psychokinesis).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); psi.SCategory("Thought Control"); p_neural_overload = psi.Parameter("Neural Overload", 0).Require(0, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_frighten = psi.Parameter("Frighten", 0).Require(30, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_billocation = psi.Parameter("Billocation", 0).Require(35, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_mental_breakdown = psi.Parameter("Mental Breakdown", 0).Require(45, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_psi_cognitive_interruption = psi.Parameter("Psi-cognitive Interruption", 0).Require(55, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_enrage = psi.Parameter("Enrage", 0).Require(60, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_psuedo_spatial_projection = psi.Parameter("Psuedo-spatial Projection", 0).Require(65, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); p_neurovisual_disruption = psi.Parameter("Neurovisual Disruption", 0).Require(70, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); } using (var feats = builder.ParameterType("Feats")) { t_feats = feats.ptype; feats.LevelPoints(1, 2, 1); for (int i = 2; i <= builder.game.MaxLevel; i++) { feats.LevelPoints(i, i % 2 == 0 ? 1 : 0, 1); } f_expertise = feats.Parameter("Expertise").ImplyLevelReq().Commit(); f_nimble = feats.Parameter("Nimble").ImplyLevelReq().Commit(); f_ninja_looter = feats.Parameter("Ninja Looter").ImplyLevelReq().Commit(); f_opportunist = feats.Parameter("Opportunist").ImplyLevelReq().Commit(); f_pack_rathound = feats.Parameter("Pack Rathound").ImplyLevelReq().Commit(); f_paranoia = feats.Parameter("Paranoia").ImplyLevelReq().Commit(); f_quick_pockets = feats.Parameter("Quick Pockets").ImplyLevelReq().Commit(); f_recklessness = feats.Parameter("Recklessness").ImplyLevelReq().Commit(); f_snooping = feats.Parameter("Snooping").ImplyLevelReq().Commit(); f_aimed_shot = feats.Parameter("Aimed Shot").Require(10, s_guns).OrRequire(10, s_crossbows).Require(06, a_per).ImplyLevelReq().Commit(); f_armor_sloping = feats.Parameter("Armor Sloping").Require(06, a_int).Require(15, s_mechanics).ImplyLevelReq().Commit(); f_burglar = feats.Parameter("Burglar").Require(7, a_dex).Require(15, s_lockpicking).OrRequire(15, s_hacking).ImplyLevelReq().Commit(); f_clothier = feats.Parameter("Clothier").Require(7, a_int).Require(15, s_tailoring).ImplyLevelReq().Commit(); f_conditioning = feats.Parameter("Conditioning").Require(5, a_con).ImplyLevelReq().Commit(); f_doctor = feats.Parameter("Doctor").Require(15, s_biology).ImplyLevelReq().Commit(); f_fast_metabolism = feats.Parameter("Fast Metabolism").Require(6, a_con).ImplyLevelReq().Commit(); f_gun_nut = feats.Parameter("Gun Nut").Require(7, a_int).Require(15, s_mechanics).ImplyLevelReq().Commit(); f_gunslinger = feats.Parameter("Gunslinger").Require(7, a_dex).Require(15, s_guns).ImplyLevelReq().Commit(); f_heavy_punch = feats.Parameter("Heavy Punch").Require(5, a_str).Require(15, s_melee).ImplyLevelReq().Commit(); f_hit_and_run = feats.Parameter("Hit and Run").Require(7, a_agi).ImplyLevelReq().Commit(); f_juggernaut = feats.Parameter("Juggernaut").Require(7, a_str).Require(7, a_str).ImplyLevelReq().Commit(); f_marksman = feats.Parameter("Marksman").Require(5, a_dex).Require(15, s_crossbows).ImplyLevelReq().Commit(); f_power_management = feats.Parameter("Power Management").Require(7, a_int).Require(15, s_electronics).ImplyLevelReq().Commit(); f_skinner = feats.Parameter("Skinner").Require(7, a_int).Require(15, s_tailoring).ImplyLevelReq().Commit(); f_sprint = feats.Parameter("Sprint").Require(6, a_agi).ImplyLevelReq().Commit(); f_stoicism = feats.Parameter("Stoicism").Require(7, a_wil).Require(7, a_con).ImplyLevelReq().Commit(); f_suppressive_fire = feats.Parameter("Suppressive Fire").Require(6, a_per).Require(10, s_guns).ImplyLevelReq().Commit(); f_sure_step = feats.Parameter("Sure Step").Require(5, a_agi).ImplyLevelReq().Commit(); f_survival_instincts = feats.Parameter("Survival Instincts").Require(9, a_con).ImplyLevelReq().Commit(); f_thick_skull = feats.Parameter("Thick Skull").Require(10, a_con).ImplyLevelReq().Commit(); f_corporeal_projection = feats.Parameter("Corporeal Projection").Require(1, p_telekinetic_punch).OrRequire(1, p_force_emission).Require(7, a_str).ImplyLevelReq().Commit(); f_disassemble = feats.Parameter("Disassemble").Require(7, a_int).Require(20, s_electronics).OrRequire(20, s_mechanics).ImplyLevelReq().Commit(); f_interloper = feats.Parameter("Interloper").Require(7, a_agi).Require(20, s_stealth).ImplyLevelReq().Commit(); var b_psychosis = feats.Parameter("Psychosis"); var b_tranquility = feats.Parameter("Tranquility"); f_psychosis = b_psychosis.ImplyLevelReq().Commit(); f_tranquility = b_tranquility.ImplyLevelReq().Commit(); b_tranquility.Require(1, f_psi_empathy).Exclude(1, f_psychosis).ImplyLevelReq().Commit(); b_psychosis.Require(1, f_psi_empathy).Exclude(1, f_tranquility).ImplyLevelReq().Commit(); f_pummel = feats.Parameter("Pummel").Require(20, s_melee).ImplyLevelReq().Commit(); f_yell = feats.Parameter("Yell").Require(20, s_intimidation).ImplyLevelReq().Commit(); f_cerebral_trauma = feats.Parameter("Cerebral Trauma").Require(25, s_thoughtcontrol).Require(1, p_neural_overload).ImplyLevelReq().Commit(); f_dirty_kick = feats.Parameter("Dirty Kick").Require(25, s_melee).ImplyLevelReq().Commit(); f_force_user = feats.Parameter("Force User").Require(7, a_wil).Require(1, p_telekinetic_punch).OrRequire(1, p_force_field).Require(25, s_psychokinesis).ImplyLevelReq().Commit(); f_high_technicalities = feats.Parameter("High-Technicalities").Require(5, a_int).Require(25, s_guns).ImplyLevelReq().Commit(); f_kneecap_shot = feats.Parameter("Kneecap Shot").Require(4, a_per).Require(25, s_guns).OrRequire(25, s_crossbows).ImplyLevelReq().Commit(); f_lightning_punches = feats.Parameter("Lightning Punches").Require(8, a_dex).Require(25, s_melee).ImplyLevelReq().Commit(); f_point_shot = feats.Parameter("Point Shot").Require(6, a_per).Require(6, a_dex).Require(25, s_guns).ImplyLevelReq().Commit(); f_quick_tinkering = feats.Parameter("Quick Tinkering").Require(25, s_traps).Require(7, a_dex).ImplyLevelReq().Commit(); f_steadfast_aim = feats.Parameter("Steadfast Aim").Require(5, a_str).Require(6, a_dex).Require(25, s_guns).ImplyLevelReq().Commit(); f_vile_weaponry = feats.Parameter("Vile Weaponry").Require(10, s_biology).Require(25, s_crossbows).OrRequire(25, s_melee).OrRequire(25, s_traps).ImplyLevelReq().Commit(); f_weaponsmith = feats.Parameter("Weaponsmith").Require(6, a_int).Require(25, s_mechanics).ImplyLevelReq().Commit(); f_bowyer = feats.Parameter("Bowyer").Require(7, a_int).Require(30, s_mechanics).ImplyLevelReq().Commit(); f_concussive_shots = feats.Parameter("Concussive Shots").Require(30, s_crossbows).ImplyLevelReq().Commit(); f_crippling_strike = feats.Parameter("Crippling Strike").Require(30, s_melee).ImplyLevelReq().Commit(); f_escape_artist = feats.Parameter("Escape Artist").Require(7, a_dex).Require(30, s_dodge).ImplyLevelReq().Commit(); f_grenadier = feats.Parameter("Grenadier").Require(6, a_dex).Require(40, s_throwing).ImplyLevelReq().Commit(); f_meditation = feats.Parameter("Meditation").Require(7, a_wil).Require(5, a_int).Require(1, f_tranquility).Require(50, s_thoughtcontrol).OrRequire(50, s_metathermics).OrRequire(50, s_psychokinesis).ImplyLevelReq().Commit(); f_mental_subversion = feats.Parameter("Mental Subversion").Require(6, a_wil).Require(30, s_thoughtcontrol).Require(1, p_neural_overload).OrRequire(1, p_frighten).ImplyLevelReq().Commit(); f_thermodynamicity = feats.Parameter("Thermodynamicity").Require(1, p_cryokinesis).Require(1, p_pyrokinesis).Require(30, s_metathermics).ImplyLevelReq().Commit(); f_trap_expert = feats.Parameter("Trap Expert").Require(6, a_dex).Require(30, s_traps).ImplyLevelReq().Commit(); f_ballistics = feats.Parameter("Ballistics").Require(6, a_int).Require(35, s_tailoring).ImplyLevelReq().Commit(); f_cooked_shot = feats.Parameter("Cooked Shot").Require(5, a_dex).Require(35, s_guns).Require(25, s_chemistry).ImplyLevelReq().Commit(); f_deflection = feats.Parameter("Deflection").Require(6, a_dex).Require(35, s_melee).ImplyLevelReq().Commit(); f_hypertoxicity = feats.Parameter("Hypertoxicity").Require(35, s_biology).ImplyLevelReq().Commit(); f_last_stand = feats.Parameter("Last Stand").Require(5, t_level).Require(9, a_con).ImplyLevelReq().Commit(); f_neurology = feats.Parameter("Neurology").Require(7, a_int).Require(35, s_biology).ImplyLevelReq().Commit(); f_practical_physicist = feats.Parameter("Practical Physicist").Require(7, a_int).Require(35, s_electronics).ImplyLevelReq().Commit(); f_pyromaniac = feats.Parameter("Pyromaniac").Require(1, p_pyrokinesis).Require(35, s_metathermics).ImplyLevelReq().Commit(); f_salesman = feats.Parameter("Salesman").Require(35, s_mercantile).ImplyLevelReq().Commit(); f_snipe = feats.Parameter("Snipe").Require(10, a_per).Require(30, s_stealth).Require(35, s_guns).OrRequire(35, s_crossbows).Require(1, f_aimed_shot).ImplyLevelReq().Commit(); f_ambush = feats.Parameter("Ambush").Require(6, a_per).Require(40, s_stealth).ImplyLevelReq().Commit(); f_cheap_shots = feats.Parameter("Cheap Shots").Require(6, a_dex).Require(5, a_int).Require(40, s_melee).ImplyLevelReq().Commit(); f_expose_weakness = feats.Parameter("Expose Weakness").Require(5, a_int).Require(40, s_melee).ImplyLevelReq().Commit(); f_fancy_footwork = feats.Parameter("Fancy Footwork").Require(7, a_agi).Require(40, s_melee).Require(40, s_dodge).ImplyLevelReq().Commit(); f_full_auto = feats.Parameter("Full Auto").Require(7, a_str).Require(40, s_guns).ImplyLevelReq().Commit(); f_hypothermia = feats.Parameter("Hypothermia").Require(1, p_cryokinesis).OrRequire(1, p_cryostasis).Require(40, s_metathermics).ImplyLevelReq().Commit(); f_mad_chemist = feats.Parameter("Mad Chemist").Require(7, a_int).Require(40, s_chemistry).ImplyLevelReq().Commit(); f_pinning = feats.Parameter("Pinning").Require(7, a_dex).Require(40, s_throwing).ImplyLevelReq().Commit(); f_premeditation = feats.Parameter("Premeditation").Require(6, a_int).Require(1, f_psi_empathy).Require(40, s_thoughtcontrol).OrRequire(40, s_metathermics).OrRequire(40, s_psychokinesis).ImplyLevelReq().Commit(); f_psychostatic_electricity = feats.Parameter("Psychostatic Electricity").Require(1, p_electrokinesis).OrRequire(1, p_electrokinetic_imprint).Require(40, s_psychokinesis).ImplyLevelReq().Commit(); f_uncanny_dodge = feats.Parameter("Uncanny Dodge").Require(8, a_agi).Require(40, s_dodge).ImplyLevelReq().Commit(); f_wrestling = feats.Parameter("Wrestling").Require(40, s_melee).Require(7, a_str).ImplyLevelReq().Commit(); f_bone_breaker = feats.Parameter("Bone Breaker").Require(7, a_str).Require(45, s_melee).ImplyLevelReq().Commit(); f_cryogenic_induction = feats.Parameter("Cryogenic Induction").Require(1, p_cryostasis).Require(50, s_metathermics).ImplyLevelReq().Commit(); f_evasive_maneuvers = feats.Parameter("Evasive Maneuvers").Require(6, a_agi).Require(50, s_evasion).ImplyLevelReq().Commit(); f_fatal_throw = feats.Parameter("Fatal Throw").Require(8, a_dex).Require(50, s_throwing).ImplyLevelReq().Commit(); f_guard = feats.Parameter("Guard").Require(8, t_level).Require(7, a_str).Require(50, s_melee).ImplyLevelReq().Commit(); f_psionic_mania = feats.Parameter("Psionic Mania").Require(8, a_wil).Require(50, s_thoughtcontrol).OrRequire(50, s_metathermics).OrRequire(50, s_psychokinesis).ImplyLevelReq().Commit(); f_rapid_fire = feats.Parameter("Rapid Fire").Require(50, s_guns).ImplyLevelReq().Commit(); f_ripper = feats.Parameter("Ripper").Require(10, a_dex).Require(5, a_wil).Require(50, s_melee).OrRequire(50, s_throwing).ImplyLevelReq().Commit(); f_spec_ops = feats.Parameter("Spec Ops").Require(6, a_agi).Require(50, s_guns).ImplyLevelReq().Commit(); f_special_tactics = feats.Parameter("Special Tactics").Require(6, a_int).Require(50, s_crossbows).ImplyLevelReq().Commit(); f_taste_for_blood = feats.Parameter("Taste for Blood").Require(50, s_melee).ImplyLevelReq().Commit(); f_three_pointer = feats.Parameter("Three Pointer").Require(7, a_dex).Require(50, s_throwing).ImplyLevelReq().Commit(); f_cut_throat = feats.Parameter("Cut Throat").Require(10, a_dex).Require(55, s_melee).Require(45, s_stealth).ImplyLevelReq().Commit(); f_telekinetic_undulation = feats.Parameter("Telekinetic Undulation").Require(1, p_telekinetic_proxy).Require(5, a_wil).ImplyLevelReq().Commit(); f_blitz = feats.Parameter("Blitz").Require(10, t_level).Require(10, a_agi).ImplyLevelReq().Commit(); f_concentrated_fire = feats.Parameter("Concentrated Fire").Require(8, a_per).Require(60, s_guns).ImplyLevelReq().Commit(); f_sharpshooter = feats.Parameter("Sharpshooter").Require(60, s_guns).OrRequire(60, s_crossbows).Require(1, f_aimed_shot).Require(10, a_per).ImplyLevelReq().Commit(); f_combo = feats.Parameter("Combo").Require(8, a_dex).Require(65, s_melee).ImplyLevelReq().Commit(); f_neural_overclocking = feats.Parameter("Neural Overclocking").Require(10, a_wil).Require(1, f_psi_empathy).Require(65, s_metathermics).OrRequire(65, s_thoughtcontrol).OrRequire(65, s_psychokinesis).ImplyLevelReq().Commit(); f_execute = feats.Parameter("Execute").Require(70, s_guns).Require(1, f_opportunist).ImplyLevelReq().Commit(); f_critical_power = feats.Parameter("Critical Power").Require(75, s_melee).OrRequire(75, s_guns).OrRequire(75, s_crossbows).ImplyLevelReq().Commit(); f_deadly_snares = feats.Parameter("Deadly Snares").Require(10, a_per).Require(75, s_crossbows).Require(50, s_traps).ImplyLevelReq().Commit(); f_elemental_bolts = feats.Parameter("Elemental Bolts").Require(75, s_crossbows).ImplyLevelReq().Commit(); f_locus_of_control = feats.Parameter("Locus of Control").Require(10, a_wil).Require(75, s_thoughtcontrol).Require(1, f_psi_empathy).ImplyLevelReq().Commit(); f_super_slam = feats.Parameter("Super Slam").Require(10, a_str).Require(75, s_melee).ImplyLevelReq().Commit(); f_commando = feats.Parameter("Commando").Require(80, s_guns).ImplyLevelReq().Commit(); f_eviscerate = feats.Parameter("Eviscerate").Require(80, s_melee).Require(8, a_dex).ImplyLevelReq().Commit(); f_split_spare = feats.Parameter("Split Spare").Require(10, a_dex).Require(80, s_throwing).ImplyLevelReq().Commit(); f_heavyweight = feats.Parameter("Heavyweight").Require(10, a_str).Require(100, s_melee).ImplyLevelReq().Commit(); f_psi_empathy = feats.Parameter("Psi Empathy", 0).ImplyLevelReq().Commit(); f_fisherman = feats.Parameter("Fisherman", 0).ImplyLevelReq().Commit(); f_hunter = feats.Parameter("Hunter", 0).ImplyLevelReq().Commit(); f_echoing_soliloquy = feats.Parameter("Echoing Soliloquy", 0).ImplyLevelReq().Commit(); } return(builder.game); } }