0 of 0

File information

Last updated

Original upload

Created by

LarannKiar

Uploaded by

LarannKiar

Virus scan

Safe to use

About this mod

F4SE-console based mod that allows you to program simple quests.

Requirements
Permissions and credits
About this mod:

An F4SE based mod that contains a set of custom console commands to make simple quests in-game.

The quests, their objectives can be named (renamed) and can also be programmed to track NPCs and objects (location, death, 3D load, 3D unload, bleedout enter events). Adding, hiding, completing, uncompleting objecties are supported as well.


Features in keywords:

  - Create quests (up to 3 concurrent custom quests)
  - Rename quests
  - Add objectives (up to 5 for each custom quest)
  - Track the location of NPCs and objects with objectives
  - Listen to events sent by objective tracked NPCs or objects (death, 3D load, 3D unload and bleedout enter events)
  - Rename objectives (to anything, including to the tracked object directly)
  - Remove objectives
  - Complete the quest
     - Manually
     - Or by an event (e.g., a tracked NPC whose event the quest was listening for dies)
  - Complete the objective
     - manually
     - Or by an event
  - Retarget NPC/object tracking and event registration
  - Find NPC/Objects by RefID and Names
     - (e.g., you can start a "Kill a Bad Guy" kind of quest only by looking for a random NPC named "Raider Veteran")
  - Find NPC/Objects by hardcoded NPC-types
     - (e.g., search for hostile robots, leveled or wealthy humans, closest dead NPC, etc.)
  - Force shut down, reset mod functions

  - Logging, feedback notifications and messages (all are optional)


Making a quick "Eliminate a Bad Guy" styled quest with random NPC search and death event tracking with 2 command lines


Quest functions:

[CQF PlayersQuestHandler CreateNewQuest QuestName ObjectiveName NamedObjectName AutoRenameObjectiveToNamedObject]
   CreateNewQuest: function that creates a new quest
   QuestName: parameter that defines the quest's name
   ObjectiveName: name of the first objective
   NamedObjectName: optional, name of the NPC/Object (or hardcoded object-type, see below) to be tracked with the objective
   AutoRenameObjectiveToNamedObject: optional, can be 1 or 0 (equivalent to True or False). Renames the objective to the tracked object regardless of ObjectiveName (which still must be specified, only its actual name doesn't matter)
     [Explanation]
         CQF = call quest function
         PlayersQuestHandler = quest that contains the function (this is the mod's handler quest)
         CreateNewQuest = the function to be called
         ObjectiveName, NamedObjectName, AutoRenameObjectiveToNamedObject: function parameters

     [Example]:
        [CQF PlayersQuestHandler CreateNewQuest "Where are you?" "Current Companion" "Piper" False]
                 ==> this would create a new quest named "Where are you?" with one single objective "Current Companion" that would point to Piper but since the auto-rename parameter is set to 'False', it wouldn't rename the objective to 'Piper'. Note: don't forget the use double quotes before the function parameters that end with 'Name', as shown in the example.

        
[CQF PlayersQuestHandler RenameTheQuest QuestName NewQuestName]
   RenameTheQuest: renames the quest
   QuestName: name of the quest to be renamed
   NewQuestName: new name of the quest


[CQF PlayersQuestHandler RemoveTheQuest QuestName]
   RemoveTheQuest: removes the quest
   QuestName: name of the quest to be removed


[CQF PlayersQuestHandler RemoveAllQuests]
   RemoveTheQuest: removes all quests made with this mod

[CQF PlayersQuestHandler CompleteTheQuest QuestName XPRewardCount]
   CompleteTheQuest: completes the quest
   QuestName: name of the quest to be completed
   XPRewardCount: optional, rewards the player with this amount of XP (default is 0)


[CQF PlayersQuestHandler CreateNewObjective QuestName ObjectiveName NamedObjectName AutoRenameObjectiveToNamedObject]
   CreateNewObjective: creates a new objective
   QuestName: name of the quest to add the objective to
   ObjectiveName: new objective's name
   NamedObjectName: optional, name of the NPC/Object to be tracked with the objective
   AutoRenameObjectiveToNamedObject: optional, can be 1 or 0 (equivalent to True or False), if NamedObjectName was specified, the objective gets automatically renamed to this object


[CQF PlayersQuestHandler CreateNewObjectiveByRef QuestName ObjectiveName ObjectRefID AutoRenameObjectiveToNamedObject]
   CreateNewObjectiveByRef: creates a new objective
   QuestName: name of the quest to add the objective to
   ObjectiveName: new objective's name
   ObjectRefID: optional, RefID of the NPC/Object to be tracked with the objective
   AutoRenameObjectiveToNamedObject: optional, can be 1 or 0 (equivalent to True or False), if ObjectRefID was specified, the objective gets automatically renamed to this object


[CQF PlayersQuestHandler RemoveTheObjective QuestName ObjectiveName]
   RemoveTheObjective: removes an objective
   QuestName: name of the quest that contains the objective
   ObjectiveName: name of the objective to be removed


[CQF PlayersQuestHandler RenameTheObjective QuestName OldObjectiveName NewObjectiveName]
   RenameTheObjective: renames an objective
   QuestName: name of the quest that contains the objective
   OldObjectiveName: name of the objective to be renamed
   NewObjectiveName: new name of the objective


[CQF PlayersQuestHandler RenameTheObjectiveToTrackedRef QuestName ObjectiveName]
   RenameTheObjectiveToTrackedRef: renames an objective to the object it points to
   QuestName: name of the quest that contains the objective
   ObjectiveName: name of the objective to be renamed


[CQF PlayersQuestHandler CompleteTheObjective QuestName ObjectiveName]
   CompleteTheObjective: completes an objective
   QuestName: name of the quest that contains the objective
   ObjectiveName: name of the objective to be completed


[CQF PlayersQuestHandler UnCompleteTheObjective QuestName ObjectiveName]
   UnCompleteTheObjective: uncompletes an objective
   QuestName: name of the quest that contains the objective
   ObjectiveName: name of the objective to be uncompleted


[CQF PlayersQuestHandler StartTrackingNamedObject QuestName ObjectiveName NamedObjectName AutoRenameObjectiveToNamedObject]
   StartTrackingNamedObject: starts tracking a named object (like NPCs such)
   QuestName: name of the quest whose objective is going to track the named object
   ObjectiveName: name of the objective that's going to point to the named object
   NamedObjectName: name of the NPC/Object to be tracked
   AutoRenameObjectiveToNamedObject: optional, can be 1 or 0 (equivalent to True or False), if NamedObjectName was specified, the objective gets automatically renamed to this object


[CQF PlayersQuestHandler StopTrackingNamedObject QuestName NamedObjectName]
   StopTrackingNamedObject: stops tracking a named object
   QuestName: name of the quest that has an objective that's currently tracking the named object
   NamedObjectName: name of the NPC/Object that's being tracked by the objective


[CQF PlayersQuestHandler StartTrackingObjectByRef QuestName ObjectiveName ObjectRefID AutoRenameObjectiveToNamedObject]
   StartTrackingObjectByRef: starts tracking an object
   QuestName: name of the quest whose objective is going to track the object
   ObjectiveName: name of this objective
   ObjectRefID: RefID of the NPC/Object to be tracked
   AutoRenameObjectiveToNamedObject: optional, can be 1 or 0 (equivalent to True or False), if ObjectRefID was specified, the objective gets automatically renamed to this object


[CQF PlayersQuestHandler StopTrackingObjectByRef QuestName ObjectRefID]
   StopTrackingObjectByRef: stops tracking an object
   QuestName: name of the quest that has an objective that's currently tracking the object
   ObjectRefID: RefID of the NPC/Object that's being tracked by the objective


[CQF PlayersQuestHandler StopTrackingObjective QuestName ObjectiveName]
   StopTrackingObjective: stops an objective's tracking function
   QuestName: name of the quest whose objective is currently tracking the object
   ObjectiveName: name of the objective


[CQF PlayersQuestHandler StartTrackingDeathEvent QuestName ObjectiveName ReactionIndex RewardXPCount]
   StartTrackingDeathEvent: starts listening for death events sent by the object (only NPCs) the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the NPC
   ObjectiveName: name of this objective
   ReactionIndex: Can be 0, 1, 2, 3. 1:complete Objective. 2:complete the quest. 3:uncomplete the objective
   RewardXPCount: if ReactionIndex was set to 2, the player will be rewarded with this amount of XP


[CQF PlayersQuestHandler StopTrackingDeathEvent QuestName ObjectiveName]
   StartTrackingDeathEvent: stops listening for death events sent by the object (only NPCs) the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the NPC
   ObjectiveName: name of this objective


[CQF PlayersQuestHandler StartTrackingBleedoutEnterEvent QuestName ObjectiveName ReactionIndex RewardXPCount]
   StartTrackingBleedoutEnterEvent: starts listening for BleedoutEnter events ("downed pose") sent by the object (only NPCs) the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the NPC
   ObjectiveName: name of this objective
   ReactionIndex: Can be 0, 1, 2, 3. 1:complete Objective. 2:complete the quest. 3:uncomplete the objective
   RewardXPCount: if ReactionIndex was set to 2, the player will be rewarded with this amount of XP


[CQF PlayersQuestHandler StopTrackingBleedoutEnterEvent QuestName ObjectiveName]
   StartTrackingBleedoutEnterEvent: stops listening for BleedoutEnter events ("downed pose") sent by the object (only NPCs) the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the NPC
   ObjectiveName: name of this objective

[CQF PlayersQuestHandler StartTracking3DLoadEvent QuestName ObjectiveName ReactionIndex RewardXPCount]
   StartTracking3DLoadEvent: starts listening for 3DLoad events sent by the object the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the object
   ObjectiveName: name of this objective
   ReactionIndex: Can be 0, 1, 2, 3. 1:complete Objective. 2:complete the quest. 3:uncomplete the objective
   RewardXPCount: if ReactionIndex was set to 2, the player will be rewarded with this amount of XP


[CQF PlayersQuestHandler StopTracking3DLoadEvent QuestName ObjectiveName]
   StartTracking3DLoadEvent: stops listening for 3DLoad events sent by the object the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the object
   ObjectiveName: name of this objective


[CQF PlayersQuestHandler StartTracking3DUnloadEvent QuestName ObjectiveName ReactionIndex RewardXPCount]
   StartTracking3DUnloadEvent: starts listening for 3DUnload events sent by the object the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the object
   ObjectiveName: name of this objective
   ReactionIndex: Can be 0, 1, 2, 3. 1:complete Objective. 2:complete the quest. 3:uncomplete the objective
   RewardXPCount: if ReactionIndex was set to 2, the player will be rewarded with this amount of XP


[CQF PlayersQuestHandler StopTracking3DUnloadEvent QuestName ObjectiveName]
   StartTracking3DUnloadEvent: stops listening for 3DUnload events sent by the object the objective points to
   QuestName: name of the quest that has an objective that's currently tracking the object
   ObjectiveName: name of this objective

[CQF PlayersQuestHandler EnableLogging]
   EnableLogging: enables Papyrus logging

[CQF PlayersQuestHandler DisableLogging]
   DisableLogging: disables Papyrus logging

[CQF PlayersQuestHandler FeedbackForceMessageBoxes]
   FeedbackForceMessageBoxes: use only message boxes for feedbacks


[CQF PlayersQuestHandler FeedbackForceNotifications]
   FeedbackForceNotifications: use only notifications (i.e. text in upper left corner) for feedbacks


[CQF PlayersQuestHandler TurnOffFeedbacks]
   TurnOffFeedbacks: turns off all feedbacks


[CQF PlayersQuestHandler ResetFeedbackSettings]
   ResetFeedbackSettings: resets feedback settings to default

[StopQuest PlayersQuestHandler]
   Deactivates the mod (while resetting everything)


[StartQuest PlayersQuestHandler]
   Reactivates the mod if it was deactivated



Hardcoded abilities of the function parameter NamedObjectName:

While NamedObjectName is typically the actual name of the object/NPC an objective points to, it supports some hardcoded "names" that can be used to find different types of random NPCs:

  SettlerNPC ==> so, instead of making the quest to search for an NPC named 'SettlerNPC' (most likely such NPC doesn't exist), the quest would search for a random Settler (who can be unique too)
  HostileNPC ==> find a hostile NPC (of any kind)
  HostileSentryBotNPC ==> find a hostile Sentry Bot
  HostileAssaultronNPC ==> find a hostile Assaultron
  HostileMrGutsyNPC ==> find a hostile Mr. Gutsy
  DeadNPC ==> find a dead NPC (note: unlike the others, it searches for the one that's the closest to the player)
  MinLeveledHostileNPC ==> find an NPC with greater than or equal level to the Level Threshold
    Use the command [CQF PlayersQuestHandler SetNPCLevelThresholdTo Value] like [CQF PlayersQuestHandler SetNPCLevelThresholdTo 50] to edit the Level Threshold
  MaxLeveledHostileNPC ==> find an NPC with lesser than or equal level to the Level Threshold
  HostileHumanNPC ==> find a hostile human NPC
  HostileRobotNPC ==> find a hostile robot
  HostileSynthNPC ==> find a hostile Synth
  HostileWealthyNPC ==> find an NPC whose inventory value ("wealth") is greater than or equal to the InventoryValue Threshold
    Use the command [CQF PlayersQuestHandler SetNPCInventoryValueThresholdTo Value] like [CQF PlayersQuestHandler SetNPCInventoryValueThresholdTo 100] to edit the InventoryValue Threshold



Requirements:

F4SE


Compatibility:

Should be compatible with everything.