protected static void GetFactories(MetadataLogService metadataLogService, out ESMAnalyzer analyzer, out TES5ReferenceFactory referenceFactory, out TES5ValueFactory valueFactory, out TES5FragmentFactory fragmentFactory)
 {
     TES5ObjectCallFactory objectCallFactory;
     TES5ChainedCodeChunkFactory chainedCodeChunkFactory;
     TES5AdditionalBlockChangesPass additionalBlockChangesPass;
     GetFactories(metadataLogService, out analyzer, out objectCallFactory, out referenceFactory, out valueFactory, out chainedCodeChunkFactory, out additionalBlockChangesPass);
     fragmentFactory = new TES5FragmentFactory(chainedCodeChunkFactory, additionalBlockChangesPass);
 }
Пример #2
0
 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)
 {
 }
Пример #3
0
 public UnlockFactory(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 GetIsCurrentPackageFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
Пример #5
0
 public SetCellOwnershipFactory(TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory)
 {
     this.objectCallArgumentsFactory = objectCallArgumentsFactory;
     this.referenceFactory           = referenceFactory;
     this.objectCallFactory          = objectCallFactory;
 }
Пример #6
0
 public ObjectiveHandlingFactory(TES5ReferenceFactory referenceFactory)
 {
     this.referenceFactory = referenceFactory;
 }
Пример #7
0
        public ITES5ValueCodeChunk ConvertFunction(ITES5Referencer calledOn, TES4Function function, TES5CodeScope codeScope, TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope)
        {
            TES5LocalScope        localScope        = codeScope.LocalScope;
            TES4FunctionArguments functionArguments = function.Arguments;
            //WARNING: This is not an exact implementation
            //According to cs.elderscrolls.com, its about being in the faction AND having an attack on them ( violent crime )
            //It"s similar but groups all nonviolent wrongdoings
            ITES5Referencer         factionReference = this.referenceFactory.CreateReadReference(functionArguments[0].StringValue, globalScope, multipleScriptsScope, localScope);
            TES5ObjectCallArguments arguments        = new TES5ObjectCallArguments()
            {
                factionReference
            };
            TES5ObjectCall            isInFaction         = this.objectCallFactory.CreateObjectCall(TES5ReferenceFactory.CreateReferenceToPlayer(), "IsInFaction", multipleScriptsScope, arguments);
            TES5TrueBooleanExpression leftExpression      = TES5ExpressionFactory.CreateTrueBooleanExpression(isInFaction);
            TES5ObjectCall            crimeGoldNonViolent = this.objectCallFactory.CreateObjectCall(factionReference, "GetCrimeGoldNonViolent", multipleScriptsScope);
            TES5ComparisonExpression  rightExpression     = TES5ExpressionFactory.CreateComparisonExpression(crimeGoldNonViolent, TES5ComparisonExpressionOperator.OPERATOR_GREATER, new TES5Integer(0));
            TES5LogicalExpression     logicalExpression   = TES5ExpressionFactory.CreateLogicalExpression(leftExpression, TES5LogicalExpressionOperator.OPERATOR_AND, rightExpression);

            return(logicalExpression);
        }
Пример #8
0
 public ModCrimeGoldFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory)
 {
     this.referenceFactory           = referenceFactory;
     this.objectCallFactory          = objectCallFactory;
     this.objectCallArgumentsFactory = objectCallArgumentsFactory;
 }
Пример #9
0
 public SetWeatherFactory(TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory)
 {
     this.objectCallFactory          = objectCallFactory;
     this.objectCallArgumentsFactory = objectCallArgumentsFactory;
     this.referenceFactory           = referenceFactory;
 }
Пример #10
0
 public SetPCFactionMurderFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory)
     : base(objectCallFactory, referenceFactory)
 {
 }
        public ITES5ValueCodeChunk ConvertFunction(ITES5Referencer calledOn, TES4Function function, TES5CodeScope codeScope, TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope)
        {
            TES5LocalScope        localScope        = codeScope.LocalScope;
            TES4FunctionArguments functionArguments = function.Arguments;
            //Made in post-analysis
            TES5ObjectCall           race         = this.objectCallFactory.CreateObjectCall(TES5ReferenceFactory.CreateReferenceToPlayer(), "GetRace", multipleScriptsScope);
            ITES5Referencer          checkAgainst = this.referenceFactory.CreateReadReference(functionArguments[0].StringValue, globalScope, multipleScriptsScope, localScope);
            TES5ComparisonExpression expression   = TES5ExpressionFactory.CreateComparisonExpression(race, TES5ComparisonExpressionOperator.OPERATOR_EQUAL, checkAgainst);

            return(expression);
        }
Пример #12
0
 protected PayFineOrPayFineThiefFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory, bool payFineThief)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
     this.payFineThief      = payFineThief;
 }
Пример #13
0
 public MessageBoxFactory(TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory, TES5ReferenceFactory referenceFactory, MetadataLogService metadataLogService)
 {
     this.objectCallArgumentsFactory = objectCallArgumentsFactory;
     this.referenceFactory           = referenceFactory;
     this.metadataLogService         = metadataLogService;
     this.objectCallFactory          = objectCallFactory;
     this.messageBoxData             = new MessageBoxData();
 }
 protected static void GetFactories(MetadataLogService metadataLogService, out ESMAnalyzer analyzer, out TES5ObjectCallFactory objectCallFactory, out TES5ReferenceFactory referenceFactory, out TES5BlockFactory blockFactory)
 {
     TES5ChainedCodeChunkFactory chainedCodeChunkFactory;
     TES5AdditionalBlockChangesPass additionalBlockChangesPass;
     GetFactories(metadataLogService, out analyzer, out objectCallFactory, out referenceFactory, out _, out chainedCodeChunkFactory, out additionalBlockChangesPass);
     TES5InitialBlockCodeFactory initialBlockCodeFactory = new TES5InitialBlockCodeFactory(referenceFactory, objectCallFactory);
     blockFactory = new TES5BlockFactory(chainedCodeChunkFactory, additionalBlockChangesPass, initialBlockCodeFactory, objectCallFactory);
 }
Пример #15
0
 /*
  * 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 GetPCInfamyFactory(TES5ReferenceFactory referenceFactory)
 {
     this.referenceFactory = referenceFactory;
 }
Пример #17
0
 public PayFineThiefFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory)
     : base(objectCallFactory, referenceFactory, true)
 {
 }
Пример #18
0
        private IEnumerable <TES5CodeBlock> CombineRepeatedEventCodeBlockNames(List <ITES5CodeBlock> blocks, string blockType, bool isStandalone, TES5GlobalScope globalScope)
        {
            ITES5CodeBlock[] nonEvents = blocks.Where(b => !(b is TES5EventCodeBlock)).ToArray();
            if (nonEvents.Any())
            {
                throw new ConversionException("Some non-event code blocks were present in " + nameof(CombineRepeatedEventCodeBlockNames) + ":  " + string.Join("; ", nonEvents.Select(b => b.GetType().FullName)));
            }
            TES5EventCodeBlock[]         eventBlocks         = blocks.Cast <TES5EventCodeBlock>().ToArray();
            List <TES5FunctionCodeBlock> functions           = new List <TES5FunctionCodeBlock>();
            TES5ObjectCallArguments?     localScopeArguments = null;

            for (int i = 0; i < eventBlocks.Length; i++)
            {
                ITES5CodeBlock    block            = eventBlocks[i];
                TES5FunctionScope newFunctionScope = new TES5FunctionScope(blockType + "_" + (i + 1).ToString());
                foreach (var parameter in block.FunctionScope.GetParameters())
                {
                    newFunctionScope.AddParameter(parameter);
                }

                TES5FunctionCodeBlock function = new TES5FunctionCodeBlock(newFunctionScope, block.CodeScope, TES5VoidType.Instance, isStandalone, false);
                functions.Add(function);
                if (localScopeArguments == null)
                {
                    localScopeArguments = new TES5ObjectCallArguments();
                    foreach (var parameter in block.FunctionScope.GetParameters())
                    {
                        localScopeArguments.Add(TES5ReferenceFactory.CreateReferenceToVariableOrProperty(parameter));
                    }
                }
            }

            if (functions.Any())
            {
                //Create the proxy block.
                ITES5CodeBlock     lastBlock  = blocks.Last();
                TES5EventCodeBlock proxyBlock = TES5BlockFactory.CreateEventCodeBlock(
                    //WTM:  Change:  block was used below, but block is out of scope.  The PHP must have been using the last defined block from above.
                    //WTM:  Change:  PHP called "clone" below, but I'm not sure if this is necessary or would even operate the same in C#.
                    lastBlock.FunctionScope, globalScope);
                foreach (var function in functions)
                {
                    yield return(function);

                    TES5ObjectCall functionCall = this.objectCallFactory.CreateObjectCall(TES5ReferenceFactory.CreateReferenceToSelf(globalScope), function.BlockName, localScopeArguments, false// hacky.
                                                                                          );
                    proxyBlock.AddChunk(functionCall);
                }

                yield return(proxyBlock);
            }

            /*
             * //This was not ultimately necessary.
             * IGrouping<string, TES5StateCodeBlock>[] states = blocks.OfType<TES5StateCodeBlock>().ToLookup(b => b.BlockName).ToArray();
             * List<TES5CodeBlock> consolidatedStateCodeBlocks = states.Where(b => b.Count() == 1).SelectMany(b => b.Select(b2 => (TES5CodeBlock)b2).ToArray()).ToList();
             * IGrouping<string, TES5StateCodeBlock>[] repeatedStateCodeBlocks = states.Where(b => b.Count() > 1).ToArray();
             * for (int i = 0; i < repeatedStateCodeBlocks.Length; i++)
             * {
             *  IGrouping<string, TES5StateCodeBlock> groupsWithSameName = repeatedStateCodeBlocks[i];
             *  TES5StateCodeBlock firstGroup = groupsWithSameName.First();
             *  foreach (var otherGroup in groupsWithSameName.Skip(1))
             *  {
             *      foreach (ITES5CodeChunk chunk in otherGroup.CodeScope.CodeChunks)
             *      {
             *          firstGroup.AddChunk(chunk);
             *      }
             *  }
             *  if (firstGroup.CodeBlocks.Blocks.Any())
             *  {
             *      TES5CodeBlock[] reducedBlocks = CombineRepeatedCodeBlockNames(firstGroup.CodeBlocks.Blocks, blockType, isStandalone, globalScope, multipleScriptsScope).ToArray();
             *      firstGroup.CodeBlocks.Blocks.Clear();
             *      firstGroup.CodeBlocks.Blocks.AddRange(reducedBlocks);
             *  }
             *  consolidatedStateCodeBlocks.Add(firstGroup);
             * }
             * foreach(TES5CodeBlock codeBlock in consolidatedStateCodeBlocks)
             * {
             *  yield return codeBlock;
             * }
             */
        }
 public SetActorValueFactory(TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory)
     : base("SetAV", "SetActorValue", valueFactory, objectCallFactory, referenceFactory)
 {
 }
Пример #20
0
 public ModActorValueFactory(TES5ReferenceFactory referenceFactory, TES5ValueFactory valueFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.valueFactory      = valueFactory;
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
Пример #21
0
 public IsOwnerFactory(TES5ObjectCallFactory objectCallFactory, TES5ReferenceFactory referenceFactory)
 {
     this.objectCallFactory = objectCallFactory;
     this.referenceFactory  = referenceFactory;
 }
Пример #22
0
        public ITES5ValueCodeChunk ConvertFunction(ITES5Referencer calledOn, TES4Function function, TES5CodeScope codeScope, TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope)
        {
            TES4FunctionArguments functionArguments = function.Arguments;
            TES5LocalScope        localScope        = codeScope.LocalScope;

            if (function.FunctionCall.FunctionName.Equals("modpcskill", StringComparison.OrdinalIgnoreCase))
            {
                /*
                 * MODPCSkill means we will need to call upon the player object
                 */
                calledOn = TES5ReferenceFactory.CreateReferenceToPlayer(globalScope);
            }

            TES5ObjectCallArguments convertedArguments = new TES5ObjectCallArguments();
            string firstArgString      = functionArguments[0].StringValue;
            string firstArgStringLower = firstArgString.ToLower();

            switch (firstArgStringLower)
            {
            case "strength":
            case "intelligence":
            case "willpower":
            case "agility":
            case "speed":
            case "endurance":
            case "personality":
            case "luck":
            {
                if (!TES5PlayerReference.EqualsPlayer(calledOn.Name))
                {
                    //We can"t convert those.. and shouldn"t be any, too.
                    throw new ConversionException(nameof(ModActorValueFactory) + ":  Cannot set attributes on non-player.  Name:  " + calledOn.Name + ", Argument:  " + firstArgString);
                }

                const string functionName     = "SetValue";
                string       tes4AttrFirstArg = TES5ReferenceFactory.GetTES4AttrPlusName(firstArgStringLower);

                /*
                 *  Switch out callee with the reference to attr
                 */
                ITES5Referencer  newCalledOn = this.referenceFactory.CreateReference(tes4AttrFirstArg, globalScope, multipleScriptsScope, localScope);
                ITES4StringValue secondArg   = functionArguments[1];
                ITES5Value       addedValue  = this.valueFactory.CreateValue(secondArg, codeScope, globalScope, multipleScriptsScope);
                convertedArguments.Add(TES5ExpressionFactory.CreateArithmeticExpression(addedValue, TES5ArithmeticExpressionOperator.OPERATOR_ADD, this.referenceFactory.CreateReadReference(tes4AttrFirstArg, globalScope, multipleScriptsScope, localScope)));
                return(this.objectCallFactory.CreateObjectCall(newCalledOn, functionName, convertedArguments));
            }

            case "fatigue":
            case "armorer":
            case "security":
            case "acrobatics":
            case "mercantile":
            case "mysticism":     //It doesn"t exist in Skyrim - defaulting to Illusion..
            case "blade":
            case "blunt":
            case "encumbrance":
            case "spellabsorbchance":
            case "resistfire":
            case "resistfrost":
            case "resistdisease":
            case "resistmagic":
            case "resistpoison":
            case "resistshock":
            {
                const string functionName = "ModActorValue";
                convertedArguments.Add(new TES5String(ActorValueMap.Map[firstArgStringLower]));
                ITES4StringValue secondArg = functionArguments[1];
                convertedArguments.Add(this.valueFactory.CreateValue(secondArg, codeScope, globalScope, multipleScriptsScope));
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }

            case "aggression":
            {
                const string     functionName = "ModActorValue";
                ITES4StringValue secondArg    = functionArguments[1];
                int secondArgData             = (int)secondArg.Data;
                int newValue;
                if (secondArgData < -80)
                {
                    newValue = -3;
                }
                else if (secondArgData >= -80 && secondArgData < -50)
                {
                    newValue = -2;
                }
                else if (secondArgData >= -50 && secondArgData < 0)
                {
                    newValue = -1;
                }
                else
                if (secondArgData == 0)
                {
                    newValue = 0;
                }
                else if (secondArgData > 0 && secondArgData < 50)
                {
                    newValue = 1;
                }
                else if (secondArgData >= 50 && secondArgData < 80)
                {
                    newValue = 2;
                }
                else
                {
                    newValue = 3;
                }

                convertedArguments.Add(new TES5String(firstArgString));
                convertedArguments.Add(new TES5Float(newValue));
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }

            case "confidence":
            {
                const string     functionName = "ModActorValue";
                ITES4StringValue secondArg    = functionArguments[1];
                int secondArgData             = (int)secondArg.Data;
                int newValue;
                if (secondArgData == -100)
                {
                    newValue = -4;
                }
                else if (secondArgData <= -70 && secondArgData > -100)
                {
                    newValue = -3;
                }
                else
                if (secondArgData <= -30 && secondArgData > -70)
                {
                    newValue = -2;
                }
                else
                if (secondArgData < 0 && secondArgData > -30)
                {
                    newValue = -1;
                }
                else
                if (secondArgData == 0)
                {
                    newValue = 0;
                }
                else if (secondArgData > 0 && secondArgData < 30)
                {
                    newValue = 1;
                }
                else
                if (secondArgData >= 30 && secondArgData < 70)
                {
                    newValue = 2;
                }
                else
                if (secondArgData >= 70 && secondArgData < 99)
                {
                    newValue = 3;
                }
                else
                {
                    newValue = 4;
                }

                convertedArguments.Add(new TES5String(firstArgString));
                convertedArguments.Add(new TES5Float(newValue));
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }

            default:
            {
                const string functionName = "ModActorValue";
                convertedArguments.Add(new TES5String(firstArgString));
                ITES4StringValue secondArg = functionArguments[1];
                convertedArguments.Add(this.valueFactory.CreateValue(secondArg, codeScope, globalScope, multipleScriptsScope));
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }
            }
        }
Пример #23
0
 public GetPCFameFactory(TES5ReferenceFactory referenceFactory)
 {
     this.referenceFactory = referenceFactory;
 }
 public GetDayOfWeekFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory, TES5ObjectCallArgumentsFactory objectCallArgumentsFactory)
 {
     this.referenceFactory           = referenceFactory;
     this.objectCallFactory          = objectCallFactory;
     this.objectCallArgumentsFactory = objectCallArgumentsFactory;
 }
 public PlaySound3DFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
Пример #26
0
 public GetActorValueFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
 public ModPCInfamyFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
Пример #28
0
        public ITES5ValueCodeChunk ConvertFunction(ITES5Referencer calledOn, TES4Function function, TES5CodeScope codeScope, TES5GlobalScope globalScope, TES5MultipleScriptsScope multipleScriptsScope)
        {
            TES5LocalScope        localScope        = codeScope.LocalScope;
            const string          functionName      = "GetActorValue";
            TES4FunctionArguments functionArguments = function.Arguments;
            //@TODO - This should be fixed on expression-parsing level, with agression and confidence checks adjusted accordingly. There are no retail uses, so im not doing this for now ;)
            ITES4StringValue firstArg            = functionArguments[0];
            string           firstArgString      = firstArg.StringValue;
            string           firstArgStringLower = firstArgString.ToLower();

            switch (firstArgStringLower)
            {
            case "strength":
            case "intelligence":
            case "willpower":
            case "agility":
            case "speed":
            case "endurance":
            case "personality":
            case "luck":
            {
                if (!TES5PlayerReference.EqualsPlayer(calledOn.Name))
                {
                    if (calledOn.TES5Type.NativeType == TES5BasicType.T_ACTOR)        //WTM:  Change:  I added this if branch.
                    {
                        TES5ObjectCallArguments convertedArguments = new TES5ObjectCallArguments()
                        {
                            new TES5String(firstArgString)
                        };
                        return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
                    }
                    //We can"t convert those.. and shouldn"t be any, too.
                    throw new ConversionException(nameof(GetActorValueFactory) + ":  Cannot get attributes on non-player.  Name:  " + calledOn.Name + ", Argument:  " + firstArgString);
                }

                /*
                 *  Switch out callee with the reference to attr
                 */
                string tes4AttrFirstArg = TES5ReferenceFactory.GetTES4AttrPlusName(firstArgStringLower);
                return(this.referenceFactory.CreateReadReference(tes4AttrFirstArg, globalScope, multipleScriptsScope, localScope));
            }

            case "fatigue":
            case "armorer":
            case "security":
            case "acrobatics":
            case "mercantile":
            case "mysticism":     //It doesn"t exist in Skyrim - defaulting to Illusion..
            case "blade":
            case "blunt":
            case "encumbrance":
            case "spellabsorbchance":
            case "resistfire":
            case "resistfrost":
            case "resistdisease":
            case "resistmagic":
            case "resistpoison":
            case "resistshock":
            {
                TES5ObjectCallArguments convertedArguments = new TES5ObjectCallArguments()
                {
                    new TES5String(ActorValueMap.Map[firstArgStringLower])
                };
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }

            default:
            {
                TES5ObjectCallArguments convertedArguments = new TES5ObjectCallArguments()
                {
                    new TES5String(firstArgString)
                };
                return(this.objectCallFactory.CreateObjectCall(calledOn, functionName, convertedArguments));
            }
            }
        }
 public GetPCFactionAttackFactory(TES5ReferenceFactory referenceFactory, TES5ObjectCallFactory objectCallFactory)
 {
     this.referenceFactory  = referenceFactory;
     this.objectCallFactory = objectCallFactory;
 }
 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);
 }