public TES5VariableAssignationConversionFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory, TES5ValueFactory valueFactory, TES5TypeInferencer typeInferencer) { this.objectCallFactory = objectCallFactory; this.referenceFactory = referenceFactory; this.valueFactory = valueFactory; this.typeInferencer = typeInferencer; }
public static void GenerateINFOAddTopicScripts(ESMAnalyzer esmAnalyzer, BuildTracker buildTracker, IBuildTarget tifBuildTarget) { TES5TypeInferencer typeInferencer = new TES5TypeInferencer(esmAnalyzer); TES5ObjectCallFactory objectCallFactory = new TES5ObjectCallFactory(typeInferencer); TES4TopicsToTES5GlobalVariableFinder globalVariableFinder = new TES4TopicsToTES5GlobalVariableFinder(); TES5GlobalVariables globalVariables = esmAnalyzer.GlobalVariables; var builtTIFs = buildTracker.GetBuiltScripts(BuildTargetFactory.TIFName); foreach (TES4Record infoRecord in esmAnalyzer.GetRecords().Where(r => r.RecordType == TES4RecordType.INFO)) { TES4SubrecordData[] names = infoRecord.GetSubrecords("NAME").ToArray(); if (names.Any()) { string fragment0Name = TES5FragmentFactory.GetFragmentName(0); string nameTES5FormIDHex = (infoRecord.FormID + 0x01000000).ToString("x8"); string scriptName = TES5ReferenceFactory.tif_Prefix + "_" + nameTES5FormIDHex; TES5Script? infoTIF = builtTIFs.Where(s => s.Key == scriptName).Select(s => s.Value.Script).FirstOrDefault(); TES5FunctionCodeBlock fragment0; if (infoTIF != null) { fragment0 = infoTIF.BlockList.Blocks.OfType <TES5FunctionCodeBlock>().Where(b => b.BlockName == fragment0Name).First(); } else { TES5ScriptHeader scriptHeader = TES5ScriptHeaderFactory.GetFromCacheOrConstructByBasicType(scriptName, TES5BasicType.T_TOPICINFO, TES5TypeFactory.TES4_Prefix, true); TES5GlobalScope globalScope = new TES5GlobalScope(scriptHeader); TES5FunctionScope functionScope = new TES5FunctionScope(fragment0Name); functionScope.AddParameter(new TES5SignatureParameter("akSpeakerRef", TES5BasicType.T_OBJECTREFERENCE, true)); TES5LocalScope localScope = new TES5LocalScope(functionScope); TES5CodeScope codeScope = TES5CodeScopeFactory.CreateCodeScope(localScope); fragment0 = new TES5FunctionCodeBlock(functionScope, codeScope, TES5VoidType.Instance, false, true); TES5BlockList blockList = new TES5BlockList() { fragment0 }; infoTIF = new TES5Script(globalScope, blockList, true); string outputPath = tifBuildTarget.GetTranspileToPath(scriptName); TES5Target target = new TES5Target(infoTIF, outputPath); buildTracker.RegisterBuiltScript(tifBuildTarget, target); } foreach (TES4SubrecordData name in names) { int formID = infoRecord.ExpandBytesIntoFormID(name); TES4Record addedTopic = esmAnalyzer.GetRecordByFormID(formID); Tuple <int, string>?globalVariable = globalVariableFinder.GetGlobalVariableNullable(addedTopic.FormID); string globalVariableEditorID = globalVariable != null ? globalVariable.Item2 : globalVariableFinder.GetGlobalVariableEditorID(addedTopic.GetEditorID()); Nullable <int> globalVariableTES5FormID = globalVariable != null ? globalVariable.Item1 : (Nullable <int>)null; TES5Property topicAddedProperty = TES5PropertyFactory.ConstructWithTES5FormID(globalVariableEditorID, TES5BasicType.T_GLOBALVARIABLE, globalVariableEditorID, globalVariableTES5FormID); infoTIF.GlobalScope.AddPropertyIfNotExists(topicAddedProperty); TES5Reference topicAddedReference = TES5ReferenceFactory.CreateReferenceToVariableOrProperty(topicAddedProperty); fragment0.AddChunk(objectCallFactory.CreateObjectCall(topicAddedReference, "SetValueInt", new TES5ObjectCallArguments() { new TES5Integer(1) })); } } } }
public TES5ValueFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) { this.objectCallFactory = objectCallFactory; this.referenceFactory = referenceFactory; this.analyzer = analyzer; this.objectPropertyFactory = objectPropertyFactory; this.typeInferencer = typeInferencer; this.metadataLogService = metadataLogService; }
public SetOrForceActorValueFactory(string tes4FunctionName, string tes5FunctionName, TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) : base(tes4FunctionName, tes5FunctionName, objectCallFactory) { this.objectCallArgumentsFactory = objectCallArgumentsFactory; this.valueFactory = valueFactory; this.referenceFactory = referenceFactory; this.analyzer = analyzer; this.objectPropertyFactory = objectPropertyFactory; this.typeInferencer = typeInferencer; this.metadataLogService = metadataLogService; }
public ForceWeatherFactory(TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) { this.objectCallArgumentsFactory = objectCallArgumentsFactory; this.valueFactory = valueFactory; this.referenceFactory = referenceFactory; this.analyzer = analyzer; this.objectPropertyFactory = objectPropertyFactory; this.typeInferencer = typeInferencer; this.metadataLogService = metadataLogService; this.objectCallFactory = objectCallFactory; }
public static BuildTarget Get(string target, Build build, BuildLogServices buildLogServices, bool includeQFWriteCommand = true) { switch (target) { case BuildTarget.BUILD_TARGET_STANDALONE: { StandaloneParsingService standaloneParsingService = new StandaloneParsingService(new SyntaxErrorCleanParser(new TES4OBScriptGrammar())); return(new BuildTarget(BuildTarget.BUILD_TARGET_STANDALONE, TES5TypeFactory.TES4Prefix, build, buildLogServices.MetadataLogService, new Standalone.TranspileCommand(standaloneParsingService, build, buildLogServices.MetadataLogService), new Standalone.CompileCommand(), new Standalone.ASTCommand(), new Standalone.BuildScopeCommand(standaloneParsingService), new Standalone.WriteCommand())); } case BuildTarget.BUILD_TARGET_TIF: { FragmentsParsingService fragmentsParsingService = new FragmentsParsingService(new SyntaxErrorCleanParser(new TES4ObscriptCodeGrammar())); return(new BuildTarget(BuildTarget.BUILD_TARGET_TIF, "", build, buildLogServices.MetadataLogService, new TIF.TranspileCommand(fragmentsParsingService, build, buildLogServices.MetadataLogService), new TIF.CompileCommand(), new TIF.ASTCommand(), new TIF.BuildScopeCommand(), new TIF.WriteCommand())); } case BuildTarget.BUILD_TARGET_PF: { return(new BuildTarget(BuildTarget.BUILD_TARGET_PF, "", build, buildLogServices.MetadataLogService, new PF.TranspileCommand(), new PF.CompileCommand(), new PF.ASTCommand(), new PF.BuildScopeCommand(), new PF.WriteCommand())); } case BuildTarget.BUILD_TARGET_QF: { FragmentsParsingService fragmentsParsingService = new FragmentsParsingService(new SyntaxErrorCleanParser(new TES4ObscriptCodeGrammar())); QF.WriteCommand writeCommand; if (includeQFWriteCommand) { //Allows for skipping TES4 file loading when using BuildFileDeleteCommand ESMAnalyzer analyzer = new ESMAnalyzer(DataDirectory.TES4GameFileName); TES5TypeInferencer typeInferencer = new TES5TypeInferencer(analyzer, BuildTarget.StandaloneSourcePath); TES5ObjectCallFactory objectCallFactory = new TES5ObjectCallFactory(typeInferencer); TES5ObjectPropertyFactory objectPropertyFactory = new TES5ObjectPropertyFactory(typeInferencer); TES5ReferenceFactory referenceFactory = new TES5ReferenceFactory(objectCallFactory, objectPropertyFactory); TES5ValueFactory valueFactory = new TES5ValueFactory(objectCallFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, buildLogServices.MetadataLogService); TES5ObjectCallArgumentsFactory objectCallArgumentsFactory = new TES5ObjectCallArgumentsFactory(valueFactory); TES5ValueFactoryFunctionFiller.FillFunctions(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, buildLogServices.MetadataLogService); ObjectiveHandlingFactory objectiveHandlingFactory = new ObjectiveHandlingFactory(referenceFactory); QFFragmentFactory qfFragmentFactory = new QFFragmentFactory(buildLogServices.MappedTargetsLogService, objectiveHandlingFactory); writeCommand = new QF.WriteCommand(qfFragmentFactory); } else { writeCommand = null; } return(new BuildTarget(BuildTarget.BUILD_TARGET_QF, "", build, buildLogServices.MetadataLogService, new QF.TranspileCommand(fragmentsParsingService, build, buildLogServices.MetadataLogService), new QF.CompileCommand(), new QF.ASTCommand(), new QF.BuildScopeCommand(), writeCommand)); } default: { throw new InvalidOperationException("Unknown target " + target); } } }
public static BuildTargetAdvancedCollection GetCollection(Build build, IEnumerable <BuildTargetSimple> buildTargets) { BuildLogServiceCollection buildLogServices = BuildLogServiceCollection.DeleteAndStartNewFiles(build); ESMAnalyzer esmAnalyzer = ESMAnalyzer.Load(); TES5TypeInferencer typeInferencer = new TES5TypeInferencer(esmAnalyzer); BuildTargetAdvancedCollection collection = new BuildTargetAdvancedCollection(buildLogServices, esmAnalyzer); foreach (var target in buildTargets) { collection.Add(ConstructAdvanced(target, buildLogServices, esmAnalyzer, typeInferencer)); } return(collection); }
private static void GetFactories(MetadataLogService metadataLogService, out ESMAnalyzer analyzer, out TES5ObjectCallFactory objectCallFactory, out TES5ReferenceFactory referenceFactory, out TES5ValueFactory valueFactory, out TES5ChainedCodeChunkFactory chainedCodeChunkFactory, out TES5AdditionalBlockChangesPass additionalBlockChangesPass) { analyzer = new ESMAnalyzer(DataDirectory.TES4GameFileName); TES5TypeInferencer typeInferencer = new TES5TypeInferencer(analyzer, BuildTarget.StandaloneSourcePath); TES5ObjectPropertyFactory objectPropertyFactory = new TES5ObjectPropertyFactory(typeInferencer); objectCallFactory = new TES5ObjectCallFactory(typeInferencer); referenceFactory = new TES5ReferenceFactory(objectCallFactory, objectPropertyFactory); valueFactory = new TES5ValueFactory(objectCallFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService); TES5ObjectCallArgumentsFactory objectCallArgumentsFactory = new TES5ObjectCallArgumentsFactory(valueFactory); TES5ValueFactoryFunctionFiller.FillFunctions(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService); TES5VariableAssignationConversionFactory assignationConversionFactory = new TES5VariableAssignationConversionFactory(objectCallFactory, referenceFactory, valueFactory, typeInferencer); TES5ReturnFactory returnFactory = new TES5ReturnFactory(objectCallFactory); chainedCodeChunkFactory = new TES5ChainedCodeChunkFactory(valueFactory, returnFactory, assignationConversionFactory); additionalBlockChangesPass = new TES5AdditionalBlockChangesPass(objectCallFactory, referenceFactory); }
private static void GetFactories(MetadataLogService metadataLogService, ESMAnalyzer esmAnalyzer, out TES5ObjectCallFactory objectCallFactory, out TES5ChainedCodeChunkFactory chainedCodeChunkFactory, out TES5AdditionalBlockChangesPass additionalBlockChangesPass) { TES5TypeInferencer typeInferencer = new TES5TypeInferencer(esmAnalyzer); TES5ObjectPropertyFactory objectPropertyFactory = new TES5ObjectPropertyFactory(typeInferencer); objectCallFactory = new TES5ObjectCallFactory(typeInferencer); TES5ReferenceFactory referenceFactory = new TES5ReferenceFactory(objectCallFactory, objectPropertyFactory, esmAnalyzer); TES5ValueFactory valueFactory = new TES5ValueFactory(objectCallFactory, referenceFactory, esmAnalyzer); TES5ObjectCallArgumentsFactory objectCallArgumentsFactory = new TES5ObjectCallArgumentsFactory(valueFactory); TES5ValueFactoryFunctionFiller.FillFunctions(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, metadataLogService, esmAnalyzer); TES5VariableAssignationConversionFactory assignationConversionFactory = new TES5VariableAssignationConversionFactory(objectCallFactory, referenceFactory, valueFactory, typeInferencer); TES5ReturnFactory returnFactory = new TES5ReturnFactory(objectCallFactory); chainedCodeChunkFactory = new TES5ChainedCodeChunkFactory(valueFactory, returnFactory, assignationConversionFactory); additionalBlockChangesPass = new TES5AdditionalBlockChangesPass(objectCallFactory, referenceFactory); }
public SetPCFactionMurderFactory(TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) : base(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService) { }
public TES5ObjectCallFactory(TES5TypeInferencer typeInferencer) { this.typeInferencer = typeInferencer; }
public ForceActorValueFactory(TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) : base("ForceAV", "ForceActorValue", valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService) { }
/* * Injects function handlers to value factory, as only two-way link in whole project */ public static void FillFunctions(TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, TES5ObjectPropertyFactory objectPropertyFactory, ESMAnalyzer analyzer, TES5TypeInferencer typeInferencer, MetadataLogService metadataLogService) { valueFactory.AddFunctionFactory("activate", new ActivateFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("addachievement", new FillerFactory()); valueFactory.AddFunctionFactory("additem", new AddOrRemoveItemFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("addscriptpackage", new AddScriptPackageFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("addspell", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("addtopic", new PopCalledRenameFunctionFactory("Add", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("autosave", new AutosaveFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("cast", new CastFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("clearownership", new ClearOwnershipFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("closecurrentobliviongate", new FillerFactory()); valueFactory.AddFunctionFactory("closeobliviongate", new FillerFactory()); valueFactory.AddFunctionFactory("completequest", new PopCalledRenameFunctionFactory("CompleteQuest", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("createfullactorcopy", new CreateFullActorCopyFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("deletefullactorcopy", new RenamedFunctionFactory("Delete", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("disablelinkedpathpoints", new FillerFactory()); valueFactory.AddFunctionFactory("disableplayercontrols", new DisablePlayerControlsFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("disable", new DisableFactory(objectCallFactory)); valueFactory.AddFunctionFactory("dispel", new RenamedFunctionFactory("DispelSpell", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("dropme", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("drop", new RenamedFunctionFactory("DropObject", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("duplicateallitems", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("enablefasttravel", new EnableFastTravelFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("enablelinkedpathpoints", new FillerFactory()); valueFactory.AddFunctionFactory("enableplayercontrols", new EnablePlayerControlsFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("enable", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("equipitem", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("essentialdeathreload", new FillerFactory()); valueFactory.AddFunctionFactory("evaluatepackage", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("forceactorvalue", new ForceActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("forcecloseobliviongate", new FillerFactory()); valueFactory.AddFunctionFactory("forceflee", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("forceweather", new ForceWeatherFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getactionref", new GetActionRefFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getactorvalue", new GetActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getamountsoldstolen", new GetAmountSoldStolenFactory(objectCallFactory)); valueFactory.AddFunctionFactory("getangle", new GetAngleFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getarmorrating", new GetArmorRatingFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getattacked", new RenamedFunctionFactory("IsInCombat", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getbaseactorvalue", new GetBaseActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getbuttonpressed", new GetButtonPressedFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getclothingvalue", new GetClothingValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getcombattarget", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getcontainer", new GetContainerFactory(objectCallFactory)); valueFactory.AddFunctionFactory("getcrimegold", new GetCrimeGoldFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getcrimeknown", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("getcrime", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getcurrentaipackage", new RenamedFunctionFactory("GetCurrentPackage", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getcurrentaiprocedure", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getcurrenttime", new GetCurrentTimeFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getdayofweek", new GetDayOfWeekFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getdeadcount", new PopCalledRenameFunctionFactory("GetDeadCount", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getdead", new RenamedFunctionFactory("IsDead", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getdestroyed", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getdetected", new GetDetectedFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getdisabled", new RenamedFunctionFactory("IsDisabled", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getdisposition", new GetDispositionFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getdistance", new GetDistanceFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getequipped", new RenamedFunctionFactory("IsEquipped", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getfactionrank", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getforcesneak", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("getgamesetting", new GetGameSettingFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getgold", new RenamedFunctionFactory("GetGoldAmount", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getheadingangle", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getincell", new GetInCellFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getinfaction", new RenamedFunctionFactory("IsInFaction", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getinsamecell", new GetInSameCellFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getinworldspace", new GetInWorldspaceFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getisalerted", new RenamedFunctionFactory("IsAlerted", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getiscurrentpackage", new GetIsCurrentPackageFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getiscurrentweather", new GetIsCurrentWeatherFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getisid", new GetIsIdFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getisplayablerace", new GetIsPlayableRaceFactory(objectCallFactory)); valueFactory.AddFunctionFactory("getisplayerbirthsign", new NotSupportedFactory()); valueFactory.AddFunctionFactory("getisrace", new GetIsRaceFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getisreference", new GetIsReferenceFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getissex", new GetIsSexFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getitemcount", new GetItemCountFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getknockedstate", new ReturnTrueFactory()); valueFactory.AddFunctionFactory("getlevel", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getlocked", new RenamedFunctionFactory("IsLocked", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getlos", new RenamedFunctionFactory("HasLOS", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getopenstate", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getparentref", new RenamedFunctionFactory("GetEnableParent", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getpcexpelled", new PopCalledRenameFunctionFactory("IsPlayerExpelled", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getpcfactionmurder", new GetPCFactionMurderFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcfactionattack", new GetPCFactionAttackFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcfactionsteal", new GetPCFactionStealFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcfame", new GetPCFameFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcinfamy", new GetPCInfamyFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcisrace", new GetPCIsRaceFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcissex", new GetPCIsSexFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpcmiscstat", new GetPCMiscStatFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getplayercontrolsdisabled", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("getplayerinseworld", new GetPlayerInSEWorldFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getpos", new GetPosFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getquestrunning", new PopCalledRenameFunctionFactory("IsRunning", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getrandompercent", new GetRandomPercentFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getrestrained", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getsecondspassed", new GetSecondsPassedFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getself", new GetSelfFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getshouldattack", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("getsleeping", new RenamedFunctionFactory("GetSleepState", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getstagedone", new PopCalledRenameFunctionFactory("GetStageDone", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getstage", new PopCalledRenameFunctionFactory("GetStage", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getstartingangle", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("getstartingpos", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("gettalkedtopc", new ReturnTrueFactory()); valueFactory.AddFunctionFactory("getweaponanimtype", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("gotojail", new GoToJailFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("hasmagiceffect", new HasMagicEffectFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("hasvampirefed", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("isactionref", new IsActionRefFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("isactorusingatorch", new RenamedFunctionFactory("IsTorchOut", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isactor", new IsActorFactory()); valueFactory.AddFunctionFactory("isanimplaying", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isessential", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isguard", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isidleplaying", new ReturnTrueFactory()); valueFactory.AddFunctionFactory("isincombat", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isindangerouswater", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("isininterior", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isowner", new IsOwnerFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("ispcamurderer", new IsPCAMurdererFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("ispcsleeping", new IsPCSleepingFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("isplayerinjail", new IsPlayerInJailFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("israining", new IsRainingFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("isridinghorse", new RenamedFunctionFactory("IsOnMount", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("issneaking", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isspelltarget", new IsSpellTargetFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("isswimming", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("istalking", new RenamedFunctionFactory("IsInDialogueWithPlayer", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("istimepassing", new ReturnTrueFactory()); valueFactory.AddFunctionFactory("isweaponout", new RenamedFunctionFactory("IsWeaponDrawn", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("isxbox", new ReturnFalseFactory()); valueFactory.AddFunctionFactory("kill", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("lock", new LockFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("look", new RenamedFunctionFactory("SetLookAt", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("menumode", new MenumodeFactory(/*valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService*/));//WTM: Change: MenumodeFactory's constructor has no parameters. valueFactory.AddFunctionFactory("messagebox", new MessageBoxFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("message", new MessageFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modactorvalue", new ModActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modamountsoldstolen", new ModAmountSoldStolenFactory(objectCallFactory, objectCallArgumentsFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("modcrimegold", new ModCrimeGoldFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("moddisposition", new ModDispositionFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modfactionreaction", new PopCalledRenameFunctionFactory("ModReaction", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("modpcfame", new ModPCFameFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modpcinfamy", new ModPCInfamyFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modpcmiscstat", new FillerFactory()); valueFactory.AddFunctionFactory("movetomarker", new RenamedFunctionFactory("MoveTo", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("moveto", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("payfine", new PayFineFactory(objectCallFactory, referenceFactory)); valueFactory.AddFunctionFactory("payfinethief", new PayFineThiefFactory(objectCallFactory, referenceFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("pickidle", new FillerFactory()); valueFactory.AddFunctionFactory("placeatme", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("playbink", new PlayBinkFactory(objectCallFactory, objectCallArgumentsFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("playgroup", new PlayGroupFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("playmagiceffectvisuals", new FillerFactory()); valueFactory.AddFunctionFactory("playmagicshadervisuals", new FillerFactory()); valueFactory.AddFunctionFactory("playsound3d", new PlaySound3DFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("playsound", new PlaySoundFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("purgecellbuffers", new FillerFactory()); valueFactory.AddFunctionFactory("pushactoraway", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("refreshtopiclist", new FillerFactory()); valueFactory.AddFunctionFactory("releaseweatheroverride", new ReleaseWeatherOverrideFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("removeallitems", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("removeitem", new AddOrRemoveItemFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("removeme", new RemoveMeFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("removescriptpackage", new FillerFactory()); valueFactory.AddFunctionFactory("removespell", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("reset3dstate", new RenamedFunctionFactory("Reset", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("resetfalldamagetimer", new FillerFactory()); valueFactory.AddFunctionFactory("resethealth", new ResetHealthFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("resetinterior", new PopCalledRenameFunctionFactory("Reset", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("resurrect", new ResurrectFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("rotate", new RotateFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("sayto", new SayToFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("say", new SayFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("sendtrespassalarm", new FillerFactory()); valueFactory.AddFunctionFactory("setactoralpha", new SetActorAlphaFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setactorfullname", new FillerFactory()); valueFactory.AddFunctionFactory("setactorrefraction", new FillerFactory()); valueFactory.AddFunctionFactory("setactorsai", new RenamedFunctionFactory("EnableAI", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setactorvalue", new SetActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setalert", new SetAlertFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setallreachable", new FillerFactory()); valueFactory.AddFunctionFactory("setallvisible", new FillerFactory()); valueFactory.AddFunctionFactory("setangle", new SetAngleFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setcellfullname", new SetCellFullNameFactory(objectCallFactory, objectCallArgumentsFactory, referenceFactory)); //WTM: Change: Added valueFactory.AddFunctionFactory("setcellpublicflag", new SetCellPublicFlagFactory(objectCallFactory, objectCallArgumentsFactory, referenceFactory)); valueFactory.AddFunctionFactory("setcellownership", new SetCellOwnershipFactory(objectCallFactory, objectCallArgumentsFactory, referenceFactory)); //WTM: Change: Added valueFactory.AddFunctionFactory("setclass", new FillerFactory()); valueFactory.AddFunctionFactory("setcombatstyle", new FillerFactory()); valueFactory.AddFunctionFactory("setcrimegold", new SetCrimeGoldFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setdestroyed", new RenamedFunctionFactory("BlockActivation", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setdoordefaultopen", new FillerFactory()); valueFactory.AddFunctionFactory("setessential", new PopCalledRenameFunctionFactory("SetEssential", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setfactionrank", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setfactionreaction", new PopCalledRenameFunctionFactory("SetReaction", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setforcerun", new SetForceRunFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setforcesneak", new SetForceSneakFactory(objectCallFactory)); valueFactory.AddFunctionFactory("setghost", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setignorefriendlyhits", new FillerFactory()); valueFactory.AddFunctionFactory("setinchargen", new SetInChargenFactory(objectCallFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("setinvestmentgold", new FillerFactory()); valueFactory.AddFunctionFactory("setitemvalue", new FillerFactory()); valueFactory.AddFunctionFactory("setlevel", new SetLevelFactory(objectCallFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("setnoavoidance", new FillerFactory()); valueFactory.AddFunctionFactory("setnorumors", new FillerFactory()); valueFactory.AddFunctionFactory("setopenstate", new SetOpenStateFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setownership", new SetOwnershipFactory(objectCallFactory, objectCallArgumentsFactory, referenceFactory, analyzer)); valueFactory.AddFunctionFactory("setpackduration", new FillerFactory()); valueFactory.AddFunctionFactory("setpcexpelled", new PopCalledRenameFunctionFactory("SetPlayerExpelled", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setpcfactionattack", new SetPCFactionAttackFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setpcfactionmurder", new SetPCFactionMurderFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setpcfactionsteal", new SetPCFactionStealFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setpcfame", new SetPCFameFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setpcinfamy", new SetPCInfamyFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setplayerinseworld", new FillerFactory()); valueFactory.AddFunctionFactory("setpos", new SetPosFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setpublic", new SetCellPublicFlagFactory(objectCallFactory, objectCallArgumentsFactory, referenceFactory));//WTM: Change: Added valueFactory.AddFunctionFactory("setquestobject", new FillerFactory()); valueFactory.AddFunctionFactory("setrestrained", new FillerFactory()); valueFactory.AddFunctionFactory("setrigidbodymass", new FillerFactory()); valueFactory.AddFunctionFactory("setscale", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setsceneiscomplex", new FillerFactory()); valueFactory.AddFunctionFactory("setshowquestitems", new FillerFactory()); valueFactory.AddFunctionFactory("setstage", new PopCalledRenameFunctionFactory("SetStage", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setunconscious", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("setweather", new SetWeatherFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("showbirthsignmenu", new FillerFactory()); valueFactory.AddFunctionFactory("showclassmenu", new FillerFactory()); valueFactory.AddFunctionFactory("showdialogsubtitles", new FillerFactory()); valueFactory.AddFunctionFactory("showenchantment", new FillerFactory()); valueFactory.AddFunctionFactory("showmap", new ShowMapFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("showracemenu", new FillerFactory()); valueFactory.AddFunctionFactory("showspellmaking", new FillerFactory()); valueFactory.AddFunctionFactory("startcombat", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("startconversation", new StartConversationFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("startquest", new PopCalledRenameFunctionFactory("Start", referenceFactory, objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("stopcombatalarmonactor", new RenamedFunctionFactory("StopCombatAlarm", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("stopcombat", new StopCombatFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("stoplook", new StopLookFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("stopmagiceffectvisuals", new FillerFactory()); valueFactory.AddFunctionFactory("stopmagicshadervisuals", new FillerFactory()); valueFactory.AddFunctionFactory("stopwaiting", new FillerFactory()); valueFactory.AddFunctionFactory("stopquest", new StopQuestFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("trapupdate", new FillerFactory()); valueFactory.AddFunctionFactory("triggerhitshader", new FillerFactory()); valueFactory.AddFunctionFactory("unequipitem", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("unlock", new UnlockFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("wait", new FillerFactory()); valueFactory.AddFunctionFactory("wakeuppc", new NotSupportedFactory()); valueFactory.AddFunctionFactory("yield", new DefaultFunctionFactory(objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("evp", new RenamedFunctionFactory("EvaluatePackage", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("forceav", new ForceActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("fw", new ForceWeatherFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getav", new GetActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getbaseav", new GetBaseActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getgs", new GetGameSettingFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("getiscreature", new GetIsCreatureFactory(objectCallFactory));//WTM: Change: This previously used IsActorFactory. valueFactory.AddFunctionFactory("this", new GetSelfFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("isactordetected", new RenamedFunctionFactory("IsInCombat", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("modav", new ModActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("modpcskill", new ModActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("pme", new FillerFactory()); valueFactory.AddFunctionFactory("pms", new FillerFactory()); valueFactory.AddFunctionFactory("pcb", new FillerFactory()); valueFactory.AddFunctionFactory("scripteffectelapsedseconds", new GetSecondsPassedFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("saa", new SetActorAlphaFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("setav", new SetActorValueFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); valueFactory.AddFunctionFactory("sme", new FillerFactory()); valueFactory.AddFunctionFactory("scaonactor", new RenamedFunctionFactory("StopCombatAlarm", objectCallFactory, objectCallArgumentsFactory)); valueFactory.AddFunctionFactory("sms", new FillerFactory()); valueFactory.AddFunctionFactory("sw", new SetWeatherFactory(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, analyzer, typeInferencer, metadataLogService)); }
public TES5ObjectPropertyFactory(TES5TypeInferencer typeInferencer) { this.typeInferencer = typeInferencer; }
public static BuildTargetAdvanced ConstructAdvanced(BuildTargetSimple buildTarget, BuildLogServiceCollection buildLogServices, ESMAnalyzer esmAnalyzer, TES5TypeInferencer typeInferencer) { switch (buildTarget.Name) { case StandaloneName: { StandaloneParsingService standaloneParsingService = new StandaloneParsingService(new SyntaxErrorCleanParser(new TES4OBScriptGrammar())); return(new BuildTargetAdvanced(buildTarget, new Standalone.TranspileCommand(standaloneParsingService, buildLogServices.MetadataLogService, esmAnalyzer), new Standalone.BuildScopeCommand(standaloneParsingService, esmAnalyzer, new TES5PropertyFactory(esmAnalyzer)), new Standalone.WriteCommand())); } case TIFName: { FragmentsParsingService fragmentsParsingService = new FragmentsParsingService(new SyntaxErrorCleanParser(new TES4ObscriptCodeGrammar())); return(new BuildTargetAdvanced(buildTarget, new TIF.TranspileCommand(fragmentsParsingService, buildLogServices.MetadataLogService, esmAnalyzer), new TIF.BuildScopeCommand(new TES5PropertyFactory(esmAnalyzer), new FragmentsReferencesBuilder(esmAnalyzer)), new TIF.WriteCommand())); } case PFName: { return(new BuildTargetAdvanced(buildTarget, new PF.TranspileCommand(), new PF.BuildScopeCommand(), new PF.WriteCommand())); } case QFName: { FragmentsParsingService fragmentsParsingService = new FragmentsParsingService(new SyntaxErrorCleanParser(new TES4ObscriptCodeGrammar())); TES5ObjectCallFactory objectCallFactory = new TES5ObjectCallFactory(typeInferencer); TES5ObjectPropertyFactory objectPropertyFactory = new TES5ObjectPropertyFactory(typeInferencer); TES5ReferenceFactory referenceFactory = new TES5ReferenceFactory(objectCallFactory, objectPropertyFactory, esmAnalyzer); TES5ValueFactory valueFactory = new TES5ValueFactory(objectCallFactory, referenceFactory, esmAnalyzer); TES5ObjectCallArgumentsFactory objectCallArgumentsFactory = new TES5ObjectCallArgumentsFactory(valueFactory); TES5ValueFactoryFunctionFiller.FillFunctions(valueFactory, objectCallFactory, objectCallArgumentsFactory, referenceFactory, objectPropertyFactory, buildLogServices.MetadataLogService, esmAnalyzer); TES5VariableAssignationConversionFactory assignationConversionFactory = new TES5VariableAssignationConversionFactory(objectCallFactory, referenceFactory, valueFactory, typeInferencer); TES5ReturnFactory returnFactory = new TES5ReturnFactory(objectCallFactory); TES5ChainedCodeChunkFactory chainedCodeChunkFactory = new TES5ChainedCodeChunkFactory(valueFactory, returnFactory, assignationConversionFactory); TES5FragmentFactory fragmentFactory = new TES5FragmentFactory(chainedCodeChunkFactory); ObjectiveHandlingFactory objectiveHandlingFactory = new ObjectiveHandlingFactory(objectCallFactory); QFFragmentFactory qfFragmentFactory = new QFFragmentFactory(buildLogServices.MappedTargetsLogService, objectiveHandlingFactory, esmAnalyzer); QF.WriteCommand writeCommand = new QF.WriteCommand(qfFragmentFactory); return(new BuildTargetAdvanced(buildTarget, new QF.TranspileCommand(fragmentsParsingService, fragmentFactory), new QF.BuildScopeCommand(new TES5PropertyFactory(esmAnalyzer), new FragmentsReferencesBuilder(esmAnalyzer)), writeCommand)); } default: { throw new InvalidOperationException("Unknown target " + buildTarget.Name); } } }
public void Execute(string targets) { if (!PreExecutionChecks(true, true, false, false)) { return; } Directory.CreateDirectory(DataDirectory.GetGraphDirectoryPath()); Build build = new Build(Build.DEFAULT_BUILD_PATH); //This argument might well not be important in this case using (BuildLogServices buildLogServices = new BuildLogServices(build)) { BuildTargetCollection buildTargets = BuildTargetFactory.GetCollection(targets, build, buildLogServices); //if (!buildTargets.CanBuildAndWarnIfNot()) { return; }//WTM: Change: This doesn't matter for building graphs. Dictionary <string, List <string> > dependencyGraph = new Dictionary <string, List <string> >(); Dictionary <string, List <string> > usageGraph = new Dictionary <string, List <string> >(); BuildSourceFilesCollection sourceFiles = buildTargets.GetSourceFiles(); ProgressWriter progressWriter = new ProgressWriter("Building Interoperable Compilation Graph", buildTargets.GetTotalSourceFiles()); TES5TypeInferencer inferencer = new TES5TypeInferencer(new ESMAnalyzer(), BuildTarget.StandaloneSourcePath); using (StreamWriter errorLog = new StreamWriter(TES5ScriptDependencyGraph.ErrorLogPath, false)) { using (StreamWriter debugLog = new StreamWriter(TES5ScriptDependencyGraph.DebugLogPath, false)) { foreach (var kvp in sourceFiles) { var buildTargetName = kvp.Key; var sourceBuildFiles = kvp.Value; BuildTarget buildTarget = buildTargets.GetByName(buildTargetName); foreach (var sourceFile in sourceBuildFiles) { string scriptName = sourceFile.Substring(0, sourceFile.Length - 4); ITES4CodeFilterable AST; try { AST = buildTarget.GetAST(buildTarget.GetSourceFromPath(scriptName)); } catch (EOFOnlyException) { continue; }//Ignore files that are only whitespace or comments. /*catch (UnexpectedTokenException ex) * {//Exceptions no longer occur, so this code should not be invoked. * errorLog.WriteLine(sourceFile + ": " + ex.Message + Environment.NewLine); * continue; * }*/ List <TES4ObjectProperty> propertiesAccesses = new List <TES4ObjectProperty>(); AST.Filter((data) => { TES4ObjectProperty property = data as TES4ObjectProperty; if (property == null) { return(false); } propertiesAccesses.Add(property); return(true); }); Dictionary <string, TES5Property> preparedProperties = new Dictionary <string, TES5Property>(); Dictionary <string, ITES5Type> preparedPropertiesTypes = new Dictionary <string, ITES5Type>(); foreach (var property in propertiesAccesses) { Match match = TES5ReferenceFactory.PropertyNameRegex.Match(property.StringValue); string propertyName = match.Groups[1].Value; string propertyKeyName = propertyName.ToLower(); bool containedKey; TES5Property preparedProperty = preparedProperties.GetOrAdd(propertyKeyName, () => new TES5Property(propertyName, TES5BasicType.T_FORM, propertyName), out containedKey); ITES5Type inferencingType = inferencer.ResolveInferenceTypeByReferenceEdid(preparedProperty); if (!containedKey) { preparedPropertiesTypes.Add(propertyKeyName, inferencingType); } else { if (!inferencingType.Equals(preparedPropertiesTypes[propertyKeyName])) { throw new ConversionException("Cannot settle up the properties types - conflict."); } } } debugLog.WriteLine(scriptName + " - " + preparedProperties.Count + " prepared"); string lowerScriptType = scriptName.ToLower(); foreach (var kvp2 in preparedProperties) { var preparedPropertyKey = kvp2.Key; var preparedProperty = kvp2.Value; string propertyTypeName = preparedPropertiesTypes[preparedPropertyKey].OriginalName; //Only keys are lowercased. string lowerPropertyType = propertyTypeName.ToLower(); dependencyGraph.AddNewListIfNotContainsKeyAndAddValueToList(lowerPropertyType, lowerScriptType); usageGraph.AddNewListIfNotContainsKeyAndAddValueToList(lowerScriptType, lowerPropertyType); debugLog.WriteLine("Registering a dependency from " + scriptName + " to " + propertyTypeName); } progressWriter.IncrementAndWrite(); } } } } progressWriter.Write("Saving"); TES5ScriptDependencyGraph graph = new TES5ScriptDependencyGraph(dependencyGraph, usageGraph); buildTargets.WriteGraph(graph); progressWriter.WriteLast(); } }