Starfield
0 of 0

File information

Last updated

Original upload

Created by

TommInfinite

Uploaded by

TommInfinite

Virus scan

Safe to use

About this mod

Allows modifying game data(Form lists, Leveled lists, Form lists,Ammo, Weapons,NPCs etc.) and Game Settings during runtime with your config files. No more mod conflicts! Supports Gamepass version.

Requirements
Permissions and credits
Changelogs
Description:
Real-time Form Patcher(RTFP) allows modifying game forms(NPC,Leveled lists, Form lists, Projectiles,Ammo, etc..) without of .esm or .esp files.

Features:
-Easy, very user-friendly syntax.
-Supports your .esp\.esm added by Plugins.txt Enabler (sTestFile method probably works as well).
-Specify form either by it's formID or EditorID(not available for all forms, po3 tweaks fixes that - Please refer to FAQ section below).
-Specify mathematical operations on values if required(Add,Subtract,Divide,Multiply).
-Custom filters which can be easily built and used in your config file.
-Supports modifying GameSettings without disabling achievements for the end user! You can also use mathematical operations on them.
-Very fast file processing using modern C++ features.
-Supports Gamepass version.(instructions are below in FAQ section)


For users:
Mod does nothing on it's own - it's a framework. You can download an example mod here.
You should put a config file to "Data\SFSE\Plugins\RealTimeFormPatcher" folder (but mod authors usually package it for you so you don't have to do anything).


For modders:

RTFP
allows you to modify either:
-Particular form(Specified by form ID or Editor ID);
-Multiple forms;
-All forms of particular type with optional filters;
-Game Settings

Example 1:
[Global]
SocialSkill_Duration|val(40)
This line will set value of global variable named SocialSkill_Duration to 40.

Example2:
[Projectile]
*|speed(*1.2)
This line will set speed of all projectiles to their values multiplied by 1.2.

Example 3:
[Projectile]
*proj_in_ammo(Starfield.esm~2B5598,Starfield.esm~2B5597,MyPlugin.esp~801)|grav(1000)
This line will set gravity to 1000 to projectiles in Ammo45Caliber and Ammo50Caliber in Starfield.esm and Ammunition in MyPlugin.esp with formID of "801"

Example 4:

[GameSettings]
fFaceFXMouthAdjust,fFaceFXSpeechBlendInTime|3.5
sCannotUseQuantumEssenceWhilePilotingShip|"Test"
sAutoLockPickNoPicks|"No digapicks in your inventory."

This line will set FaceFXMouthAdjust and fFaceFXSpeechBlendInTime  GameSettings to value of 3.5 and sCannotUseQuantumEssenceWhilePilotingShip to "Test". Also it will replace "No digipicks." text with "No digapicks in your inventory."
NOTE:Modifying Game settings does NOT use console commands therefore it will NOT disable achievements.

Other examples are located in the Article section of this page.
You can read about how to get started here.



Currently supported form types and their respective values:

You can read about how to get started here.
You can read about how to use filters here.

If you're looking to do a chargen mod(add new eyes, hairs, tattoos) - please see CharGen Resources - RTFP.


If your config file requires latest of RTFP - please add minver=  to the first line file - more on that here, part 4.
It's recommended that you put minver=114 for all  your config files as this is the version that fixes crashes when entering Unity.


Currently I do not recommend using","(comma) symbol in your file texture paths or names for AMVData when setting them via RTFP.
Also currently putting "|"(pipe) as any text entry(AVM data name) is not supported as well.

All text (Full names, AMV Data name, Model) should be put in quotes.

I advise enabling bDebugMode in the INI file -  any syntax errors or logic input errors(i.e. trying to add incorrect type of AMVData to exsiting AVMData) will be outputted in the console in
main menu. Works from RTFP V 1.19 and later.


GameSettings
Spoiler:  
Show

While not technically a form, you can set GameSetting values using this category.
Example:
[GameSettings]
fFaceFXMouthAdjust,fFaceFXSpeechBlendInTime|*3.5
sCannotUseQuantumEssenceWhilePilotingShip|"Test"
sAutoLockPickNoPicks|"No digapicks in your inventory."
Read more about how to modify GameSettings here.


Keywords
Spoiler:  
Show

This is not a separate category but you could add\remove\replace keywords for the forms that support them.
Use:
kwd_add - To add keyword
kwd_rmv - To remove keyword
kwd_rpl - To replace keyword; kwd_rpl(x,y), where x is the form that needs to be replaced and y is the form you replace it with.
kwd_clr - To clear keyword array of the form.

Example:
[Ammo]
Starfield.esm~14CBC|kwd_add(Starfield.esm~FAEC0)|kwd_rpl(Starfield.esm~FAEC0,Starfield.esm~FAEC1)|kwd_rmv(Starfield.esm~F4AE8)|


FullName
Spoiler:  
Show

Sets fullname for forms that support them.

Example:

[Misc]
Starfield.esm~00000892|name("MyTestName")


AVMData
Spoiler:  
Show

Values:

type - will set the type of AVMData. 0 for None, 1 for Simple Group, 2 for Complex Group, 3 for Modulation.
add_entr -adds entry to the list.
rmv_entr -removes an entry from the list
rpl_entr - replaces one entry from the list with another.
clr_entr - clears entry list. WARNING - if after all the changes entry list will remain empty, changes to it will not be applied.

Type of the entry must correspond with AVMData type, otherwise entries won't be added.

Format for the entries:
SimpleGroup AND ComplexGroup - type:Name:TextValue
Modulation -                        type:Name:RED:GREEN:BLUE:ALPHA

Example
[AVMData]
Starfield.esm~377DC|add_entr(1:"TestEyes":"textures/actors/human/faces/chargen/postblenddetails/tattootint/test_tattoo_makeup_dagger_mask.dds")

Will add a new entry of "Simple Group" type to SimpleGroup_EyeColor with name "TestEyes" and value "textures/actors/human/faces/chargen/postblenddetails/tattootint/test_tattoo_makeup_dagger_mask.dds".

Example for adding a modulation entry type:

[AVMData]
Starfield.esm~33E79|add_entr(3:"TestEntry":203:23:45:45)

When replacing, plugin will compare your entry with existing ones by comparing all the values depending on the type. If this is a Simple or Complex group - just name a value will be compared. If modular - name and color values.

[AVMData]
Starfield.esm~33E79|rpl_entr(3:"TestEntry":203:23:45:45,3:"TestEntryReplaced":205:24:48:48,3)




Weapons

Spoiler:  
Show

Filters:
-weap_by_ammo - filter  by ammo(Will leave only those weapons with specified Ammo)
-keyword filters(see the tutorial)
-flt_weight(filters by weight) - filters by weight.
-flt_value(filters by value) - filters by value

Values:
Add\Remove\Replace keywords or clear keywords array.
Add\Remove\Replace\Clear Attach parent slots with keywords:
add_APPR - adds a keyword from APPR.
rmv_APPR - removes keyword
rpl_APPR - replaced keyword with another(split by ",")
clr_APPR - clears keyword APPR array.


model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
ammo - weapon's ammo
rng_min - Range Min
rng_max - Range Max
out_of_rng_dmg_mult - Out of range damage multiplier

dam - Damage
cap - Capacity
crit_dam_mult - Crit Damage Mult
crit_ch_inc_mult - Crit Chance Inc Mult
atk_sec - Attack Seconds
atk_del_sec - Attack Delay Seconds
atk_ox_cost - Attack Oxygen Cost
weight - Attack Base Weight
val - Attack Base Value
base_speed - Attack Base Speed
reload_speed - Attack Reload Speed
bash_dam - Attack Bash Damage
shot_per_sec - Shots per second.
over_rate_fire - Override Rate of Fire(0/1)
set_flag - SetFlag
uns_flag - UnsetFlag

Flags are(currently not confirmed working)

    cnt_drp - CantDrop
    non_play - NonPlayable
    pc_only - PlayerOnly
    mnr_cri - MinorCrime
    non_hst - NonHostile

Example:
[Weapon]
#Starfield.esm~2EB42|ammo(Starfield.esm~215ED6)


add_dmgt - add DamageType
rmv_dmgt - Remove DamageType
rpl_dmgt - Replace DamageType
clr_dmgt - Clear damageType array.

Example:
[Weapon]
Starfield.esm~2184B7|add_dmgt(Starfield.esm~00208DCD:2)

DamageType is specified in following format FormID:Value.
Only non-float values are accepted by the engine.




NPC
Spoiler:  
Show

Non-Player-Character(Actor)
Filters:
-keyword filters(see the tutorial)
-of_race - only NPC of specified race will be left.
-not_of_race - only NPC who are not of specified race
will be left.
-is_flag_ab_set - NPC with specified flag(s) set will be left after this filter. If there are multiple flags - all must be set in NPC's base form (see example below)
-is_flag_ab_uns - NPC with specified flag(s) set will be left.If there are multiple flags - all must be UNset in NPC's base form (see example below)
-is_flag_ab_set_any - NPCs with any of specified flags set will be left.
-is_flag_ab_uns_any - NPCs with any of specified flags UNset will be left.
All flags are specified below in "Values" section

Example:

[NPC]
*of_race(Starfield.esm~26AECC)|prop_rpl(Starfield.esm~2CC:15:~,Starfield.esm~2D4:20:~)
Will only affect NPC of specified race

Example:

[NPC]
*is_flag_ab_set(unique,female)|prop_rpl(Starfield.esm~2CC:15:~,Starfield.esm~2D4:20:~)
*is_flag_ab_uns(unique,female)|prop_rpl(Starfield.esm~2CC:15:~,Starfield.esm~2D4:20:~)
*is_flag_ab_set_any(unique,female)|prop_rpl(Starfield.esm~2CC:15:~,Starfield.esm~2D4:20:~)
*is_flag_ab_uns_any(unique,female)|prop_rpl(Starfield.esm~2CC:15:~,Starfield.esm~2D4:20:~)
1st line -  NPC with unique and female flags will be left after filter.(Female unique NPCs will stay)
2nd line - NPC with female and unique flags will be removed(Non-unique male NPC will stay)
3rd line - NPC with either unique or female flags will be left(Female NPCs or unique NPCs will stay)
4rth line -
NPC with either unique or female flags will be removed.

Values:
short_name - Sets a short name for NPC(needs to be specified in quotes)
[NPC]
Starfield.esm~5983|name("Waifu")|short_name("My Dear Waifu")

death_item - Death item(Leveled Item)
legn_chance - Legendary Chance(Global)
xp_val_offs - XP value offset
lvl - level
calc_min_lvl - Calc Min Level
calc_max_lvl - Calc Max Level
disp_base - Disposition Base
def_outfit - Default outfit
spc_outfit - Space outfit
crm_fact - Crime Faction
hgt_min - min height
hgt_max - max height

wgt_thn - Weight:Thin
wgt_msc - Weight:Muscular
wgt_fat - Weight:Fat

add_hdpt - Adds headpart to NPC.
rmv_hdpt - Removed headpart from NPC.
rpl_hdpt - Replaced headpart to another.
clr_hdpt - Clears headpart array

add_fact - Adds faction to NPC
rmv_fact - Removed faction from NPC
rpl_fact - replaces faction in NPC
clr_fact - clears factions of NPC.

Factions are specified like this - FormID:FactionRank

Example:
[NPC]
Starfield.esm~5983|add_fact(Starfield.esm~1BF9F9:1)


Add\Remove\Replace keywords or clear keywords array.

add_perk - Add perk to NPC - add_perk(Starfield.esm~000612F5:3), where 3 is the perk rank separated by ":".
rmv_perk - Remove perk from NPC
rpl_perk - Replace one perk with another perk - takes perk rank into account -- rpl_perk(Starfield.esm~21B8E4:3,Starfield.esm~383A7:2)
clr_perk - Clears perk array of NPC.


prop_add - adds a property(PRPS) to form. New property is specified as ActorValue:Value(float):CurveTable(can be empty)
prop_rmv - removes property form a form
prop_rpl - replaces property in a form
prop_clr - clear property of all forms.


item_add - add item to container. Item is specified as FormID:Count
item_rmv - remove item from container
item_rpl - replace item in container
item_clr - clear items in container

Example:
[Container]
Starfield.esm~0000235A|item_add(Starfield.esm~4A0A:45)
Will add item 4A0A with count of 45 to container.

set_flag_ab - will set flag for Actor Base value flags(ACBS)(see below)
uns_flag_ab -  will set flag for ACBS flags (see below)

Flags are:
  • female - Female
  • essential - Essential
  • is_chrg_face_preset - IsChargenFacePreset
  • respawn - Respawn
  • autoCalcStats - AutoCalcStats
  • unique - Unique
  • doesn_aff_stlt_mtr - DoesntAffectStealthMeter
  • pc_level_mult - PCLevelMult             
  • protected - Protected
  • summonable - Summonable               
  • doesn_bleed- DoesntBleed
  • bleed_over - BleedoutOverride         
  • oppos_gnd_ani -OppositeGenderAnims
  • simpl_act - SimpleActor      
  • is_ghst - IsGhost      
  • invuln -Invulnerable
More flags will be available in the future once they are decoded and confirmed.

Example:
[NPC]
Starfield.esm~1273A|death_item(Starfield.esm~19F5)|legn_chance(Starfield.esm~35)|lvl(32)|disp_base(78)|set_flag_ab(unique,protected,respawn)
Will set set new death item and legend chance for NPC, will also set level and disposition setting and will set specified flags for this form.


Spell
Spoiler:  
Show


Filters:
-keyword filters(see the tutorial)

Values:
type - Type (0 - Spell, 1 - Disease, 2 - Power, 3  - Lesser Power, 4 - Ability, 5 - Poison, 6 - Enchantment, 7 - Potion, 8 - WortCraft, 9 - leveled spell, 10 - Addicition, 11 - Voice power, 12 - Staff enchantment, 13 - Scroll)
chrg_time - Charge Time
cast_type - Casting Type (0 - Constant effect, 1 - fire and forget, 2- Concentration, 3 - Scroll)
trg_type - Target Type (0 - Self, 1 - Touch, 2 - Aimed, 3 - TargetActor, 4 - Target location)
cast_dur - Cast Duration
range - Range
cast_perk - Casting Perk

add_effect - Add effect MGEF entry to the list.
rmv_effect - Remove MGEF entry from the list
rpl_effect - Replace MGEF entry in the list
clr_effect - Clear MGEF entries.

You should specify effect in following format:
MGEFFormID:Magnitute:Area:Duration:MagGlobal:AreaGlobal:DurationGlobal

Example:
Starfield.esm~0014A87F|rmv_effect(Starfield.esm~14A882)|add_effect(Starfield.esm~0012AE0C:10:20:30:~:~:~)|rpl_effect(abReduceOxygen,ENV_DMG_Thermal_Weather_ExtremeHeat_AFFL_Periodic_Chance_Effect:10:20:30:Trait_Mod_Oxygen_Mag_Standard:0)

Currently comparison when removing and replacing is only done by MGEF formID. In the future I will add an option to specify which effect entry you want to remove in case you have 2 with the same MGEF. Backwards compatibility will be retained so in old config files effects will be replaced\removed by only MGEF. When all effect entry values will be decoded I will make plugin read them, retaining backwards compatibility.



Ingestible
Filters:
-keyword filters(see the tutorial)
-flt_weight(filters by weight) - filters by weight.

-is_flag_set - will leave forms with specified flag(s) set
-is_flag_uns - will leave forms with specified flag(s) UNset
-is_flag_set_any - will leave forms with  any specified flag(s) set
-is_flag_uns_any - will leave forms with  any specified flag(s) UNset
Flags are specified below - they have the same name as for "set_flag" and "uns_flag" modifiers.


Values:
addict_spell - Addiction(Spell)
addict_chance -Addiction chance.

add_effect - Add effect MGEF entry to the list.(see above for examples)
rmv_effect - Remove MGEF entry from the list
rpl_effect - Replace MGEF entry in the list
clr_effect - Clear MGEF entries.


set_flag - will set flag(see below)
uns_flag - will unset flag(see below)

Flags are:
  • no_auto_calc - No auto Calc
  • food_item - Food item
  • medicine - Medicine
  • poison - Poison

Example:


[Ingestible]
Starfield.esm~3A21|uns_flag(no_auto_calc)



Armors

Spoiler:  
Show

Filters:
-keyword filters(see the tutorial)
-flt_weight(filters by weight) - filters by weight.
-flt_value(filters by value) - filters by value

Values:
val - armor's value
weight -
armor's weight
Add\Remove\Replace keywords or clear keywords array.

Add\Remove\Replace\Clear Attach parent slots with keywords:
add_APPR - adds a keyword from APPR.
rmv_APPR - removes keyword
rpl_APPR - replaced keyword with another(split by ",")
clr_APPR - clears keyword APPR array.




Ammo
Spoiler:  
Show

Filters:
-ammo_in_weap - filter by weapons
-keyword filters(see the tutorial)
-flt_weight(filters by weight) - filters by weight.
-flt_value(filters by value) - filters by value

Values:
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
proj - ammo's projectile
Add\Remove\Replace keywords or clear keywords array.
Example:
[Ammo]
Starfield.esm~14CBC|proj(Starfield.esm~2636B1)
Will set ammo's projectile to specified form.

Global
Spoiler:  
Show

Values:
-val - value of global


FormList
Spoiler:  
Show

Values
:
-add - adds specified forms(s) to Formlist.
-rmv - removes specified forms(s) from Formlist.
-rpl - replaces specified form to another form.
-clr - clears formList.

Example:

[FormList]
Starfield.esm~0003D9B0|add(MyPlugin.esm~00800A)

Will add hair from your plugin to HeadPartsChargenOptionsFemale


[FormList]
Starfield.esm~6F48|clr()|add(Starfield.esm~6218A)
This will clear filter and add specified form to it.
Please be aware that Modifiers are processed in their order. So first, Form list will be cleared, then a new item will be added.


Projectile
Spoiler:  
Show

Filters:[/color]
-proj_in_ammo - filter  by ammo (Will leave only those projectiles which are in specified Ammo(s) )
-proj_not_in_ammo - filter  by ammo (Will leave only those projectiles which are NOT in specified Ammo(s) )
Values:[/color]
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
grav - Gravity
speed - Speed
range - Range
expl_prox - Explosion - Alt. Trigger - Proximity
expl_timer - Explosion - Alt. Trigger -Timer
muzz_fldur - Muzzle Flash - duration
fdout_dur - Fade Duration
imp_force - Impact forde
cone_spr - Cone Spread
coll_rad - Collision Radius
lifetime - Lifetime
rel_int - Relaunch Interval


Misc
Spoiler:  
Show

Filters:
-keyword filters(see the tutorial)
-flt_weight(filters by weight) - filters by weight.
-flt_value(filters by value) - filters by value

Values:
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
val - item's value
weight -
item's weight
Add\Remove\Replace keywords or clear keywords array.


Perk
Spoiler:  
Show

Values:
train_perk - UNAM - training.
icon - Perk icon
restriction - restriction (keyword).
Example
[Perk]
Starfield.esm~28B851|train_perk(~)




LVLLBaseForm(Leveled Base Forms)
LVLLNPC(Leveled NPCs)
LVLLItem(Leveled Base item)
LVLLPackIn(Leveled Pack In)

Spoiler:  
Show

Values:

add - will add LVL list entry to the end of the leveled lists entries.
rmv - will removed LVL list entry from the LVL list.
ins- will insert LVL list entry to LVL list to the specified position.
rpl - will replace LVL list entry in the LVL list with another(separated by quotes)
dontsort - if applied  - doesn't wort LVL list entry by Levels. It is not recommended to use it as for instance if you add a leveled list with Level 1 to existing list at the end, it will not be processed if the list is not sorted.
global - will set global in "LVLG - Use Global" field (Can be an empty value)
set_flag - will set flag for the LVL list(see below)
uns_flag - will unset flag for the LVL list(see below)

Flags are:
  • calc_from_all_levels - Calculate from all levels <= player's level
  • calc_for_each_item - Calculate for each item in count
  • calc_all - Calculate All

Example:

[LVLLBaseForm]
Starfield.esm~7317|add(Starfield.esm~1EA1:40:1:0)|ins(Starfield.esm~1EA6:60:2:0_4)|set_flag(calc_all)|uns_flag(calc_from_all_levels,calc_for_each_item)

Leveled Base entry is specified in this format, each value is splitted by ":"
FormID:Level:Count:Chance

Later this format might be extended but backwards compatibility will be retained.

This will add a new entry to  Leveled Base form list with following values:
Generic Base form - Starfield.esm~1EA6
Level - 60
Count - 2
Chance - 0

This will also insert a new entry with following values at position 4(specified after "_"):
In case Leveled form list has only 3 elements, insert will not be processed.

Generic Base form - Starfield.esm~1EA1
Level - 40
Count - 1
Chance - 0

This will also set flag Calculate All and unset flags Calculate from all levels <= player's level and Calculate for each item in count.



Constructible
Spoiler:  
Show

Filters:
-has_wrkbench_kwd - Will leave forms with specified workbench keyword.
-has_not_wrkbench_kwd - will leave forms which do not have specified workbench keyword.

Values:
wrkbench_kwd - Workbench keyword
created_obj - Created object
build_lmt - Build limit(Global)
cat - category(will only set/replace the first keyword in the list. If there's no first keyword - it will be added.)
menu_srt_ord - Menu sort order.
add_comp -Adds component to COBJ.
rmv_comp - Removed component from COBJ.
rpl_comp - Replaced component in COBJ.
clr_comp - Clears component in COBJ.

Examples:
[Constructible]
Starfield.esm~0002A771|add_comp(Starfield.esm~57D6:2)
Starfield.esm~4240|rpl_comp(Starfield.esm~57C6:3,Starfield.esm~57D6)

Components are specified in following format FormID:Count





Activator
Spoiler:  
Show


Filters:
-keyword filters(see the tutorial)


Values:
Add\Remove\Replace keywords or clear keywords array.
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
water - Water

prop_add - adds a property(PRPS) to form. New property is specified as ActorValue:Value(float):CurveTable(can be empty)
prop_rmv - removes property form a form
prop_rpl - replaces property in a form
prop_clr - clear property of all forms.

Example:

[Activator]
Starfield.esm~001121E6|prop_add(Starfield.esm~22A2B6:12:~)
Will add property
22A2B6 with value of 12 and empty curve table.



Static
Spoiler:  
Show

Values:
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")

Example:

[Static]
Starfield.esm~2B666B|model(SetDressing\Signage\ExitSign04_C.nif)



Cell
Spoiler:  
Show


Filters:
-is_flag_set - will leave forms with specified flag(s) set
-is_flag_uns - will leave forms with specified flag(s) UNset
-is_flag_set_any - will leave forms with  any specified flag(s) set
-is_flag_uns_any - will leave forms with  any specified flag(s) UNset
Flags are specified below - they have the same name as for "set_flag" and "uns_flag" modifiers.


Values:
set_flag - sets specified flag.
uns_flag - unsets specified flag

Flags are:
can_fst_trvl - Can fast travel
public - Public.




Book
Spoiler:  
Show


Filters:
-flt_weight(filters by weight) - filters by weight.
-flt_value(filters by value) - filters by value

Values:
Add\Remove\Replace keywords or clear keywords array.
model
value
weight



ConditionForm
Spoiler:  
Show

Values

add_entry_from - adds entry from another condition form

Specified as FormID:entryNumber

[ConditionForm]
Starfield.esm~2BA83|add_entry_from(Starfield.esm~2D9C:1)
Will add condition entry #1 from Starfield.esm~2D9C
Condition entries positions start with 0 like in SF1Edit.



Voice type
Spoiler:  
Show

Values
anim_face_archetype -  AnimFaceArchetype(keyword)




StoryManagerQuestNode
Spoiler:  
Show

Values:
-max_concur_qsts - max concurrent quests.
-hrs_untl_rst - hours untill reset
-num_qsts_to_run - Num quests to run.
-prev_siblng - Previous sibling(SMQN)

-add_entr - adds new entry
-rmv_entr - removes entry
-rpl_entr - replaces entry with another
-ins_entr - insert entry at specified position.
-clr_entr - clears entries

Example:
[StoryManagerQuestNode]
Starfield.esm~3E82|add_entr(Starfield.esm~13DD:5)|ins_entr(Starfield.esm~12996:2_5)

Will add quest
13DD  from Starfield.esm with "Hours until reset" value of 5 to 3E82 SMQN.
Will insert quest 12996 with with "Hours until reset" value of 2 at position 5 of the same SMQN.
If you specify Hours to reset as 0 - it's equivalent of not having this entry in SF1EDit or having it at zero.





Message
Spoiler:  
Show


Filters:
-is_flag_set - will leave forms with specified flag(s) set
-is_flag_uns - will leave forms with specified flag(s) UNset
-is_flag_set_any - will leave forms with  any specified flag(s) set
-is_flag_uns_any - will leave forms with  any specified flag(s) UNset
Flags are specified below - they have the same name as for "set_flag" and "uns_flag" modifiers.


Values
own_qst - Owner quest
dspl_time - Display time

add_but - adds a button to messagebox. Button is specified as "Text":ReferenceFormID.
Message text must be put in quotes.

Currently "," quotes, ":" is not supported to be specified in button text. But if you absolutely necessary need them please contact me.

Example:
[Message]
Starfield.esm~89C5D|add_but("Hello!":~) 
Will add a message button with text "Hello!"(without quotes) and NULL reference.


set_flag - set flag
uns_flag - remove flag

flags:
msg_box - messageBox
delay_init_dspl - Delay Initial Display.




Outfit
Spoiler:  
Show

Values
:
-add - adds specified forms(s) to Outfit.
-rmv - removes specified forms(s) fromOutfit.
-rpl - replaces specified form to another form.
-clr - clears 
Outfit.

Example:

[Outfit]
Starfield.esm~0000697C|add(MyPlugin.esm~1D1E7)

Will add an entry from your plugin to specified outfit.




Container

Spoiler:  
Show


Filters:
-keyword filters(see the tutorial)

Values:
model - sets model path -  model("SetDressing\Signage\ExitSign04_C.nif")
dspl_flt  - sets a display filter for a container(can be null).

Example:
[Container]
Starfield.esm~0023AED9|dspl_flt(~)

prop_add - adds a property(PRPS) to form. New property is specified as ActorValue:Value(float):CurveTable(can be empty)
prop_rmv - removes property form a form
prop_rpl - replaces property in a form
prop_clr - clear property of all forms.

Add\Remove\Replace keywords or clear keywords array.

item_add - add item to container. Item is specified as FormID:Count
item_rmv - remove item from container
item_rpl - replace item in container
item_clr - clear items in container

Example:
[Container]
Starfield.esm~0000235A|item_add(Starfield.esm~4A0A:45)
Will add item 4A0A with count of 45 to container.



PCBN
Spoiler:  
Show

Planet Content Manager Branch Node
node_add - adds a node to nodes. Accepts both PCBN and PCCN starting from V1.20.
node_rmv - removed a node.
node_rpl - replaces a node with another.
node_clr - clears node.

Example
[PCBN]
Starfield.esm~2C4EA|node_add(Starfield.esm~5FF75)





Race

Spoiler:  
Show


Filters:
-keyword filters(see the tutorial)

Values:
prop_add - adds a property(PRPS) to form. New property is specified as ActorValue:Value(float):CurveTable(can be empty)
prop_rmv - removes property form a form
prop_rpl - replaces property in a form
prop_clr - clear property of all forms.

Add\Remove\Replace keywords or clear keywords array.

m_hgt - Height for males.
f_hgt - Height for females

m_wgt_thn - Weight:Thin for males
m_wgt_msc - Weight:Muscular for males
m_wgt_fat - Weight:Fat for males

f_wgt_thn - Weight:Thin for females
f_wgt_msc - Weight:Muscular for females
f_wgt_fat - Weight:Fat for females



ObjectModification

Spoiler:  
Show


Filters:

Values:
model


incl_add - adds a new include. Entry consists of OMOD:Level(0-255):Optional(0/1):DontUseAll(0/1)
incl_rmv - removed an include.
incl_rpl - replaces include with anymore
incl_clr - clears all includes.

Example:
[ObjectModification]
Starfield.esm~0028F433|incl_add(Starfield.esm~00050C36:2:1:0)
Will add a new include with specified OMOD,2 level, Optional-true,Don'tUseAll-false.




Terminal

Spoiler:  
Show


Filters:
-keyword filters(see the tutorial)

Values:
Add\Remove\Replace
keywords or clear keywords array.
prop_add - adds a property(PRPS) to form. New property is specified as Form:Value(float):CurveTable(can be empty)
prop_rmv - removes property form a form
prop_rpl - replaces property in a form
prop_clr - clear property of all forms.

tmlm - Sets terminal menu.

Example:
[Terminal]
Starfield.esm~00002974|tmlm(Starfield.esm~00003839)



LoadScreen

Spoiler:  
Show


Values:
descr - Description
load_screen - LoadScreen texture path.


Example:
[Terminal]
Starfield.esm~0002AA26|descr("Anger someone you shouldn't have? No consequences - it's a Bethesda game!")





Reference
Spoiler:  
Show

PLEASE READ.
This section is very experemental.
This means that:
1)It was not thoughtfully tested.
2)Might be not-savegame save.
I tested how game reads Object starting position after changing reference position via RTFP - it picked up the changes so most likely the changes are inserted correctly. I did not test beyond that.
I do not guarantee that this method will work correctly.
I do not guarantee that this will not break your or users' savegames.
It doesn't work like a BaseObjectSwapper. BaseObjectSwapper when(if) it comes to Starfield will likely implement this functionality more correct. Most likely when BaseObjectSwapper comes out I will remove this functionality if no mods will rely on it(or after they moved to BaseObjectSwapper).

Here you need to specify references, not base objects. For instances,
Sarah's Base form is 5983. Sarah's reference is 5986.

[Reference]
Starfield.esm~5986|scale(300)
This will set Sarah's in-game scale to 300. She is a persistent reference.

BTW: Player's scale cannot be changed without using this SFSE plugin.

Some references are temporary RTFP will not be able to find them on game's launch. If plugin doesn't pick up them you can try method below.

[Reference]
Starfield.esm~830_Starfield.esm~6BB29|scale(300)
Here you specify temporary reference formID(830) and cell it's located in(6BB29) separated by "_".
I've found that some temporary refs can be accessed this way, some not.

Other values that can be changed:
pos_x
pos_y
pos_z
rot_x
rot_y
rot_z
scale


I do not recommend applying mathematical operations on position\rotation. It might be calculated incorrectly for some refs.




MagicEffect

Spoiler:  
Show

Filters:
-is_flag_set - will leave forms with specified flag(s) set
-is_flag_uns - will leave forms with specified flag(s) UNset
-is_flag_set_any - will leave forms with  any specified flag(s) set
-is_flag_uns_any - will leave forms with  any specified flag(s) UNset

Values:
set_flag - sets flag
uns_flag - unsets flag

Flags are:
hostile
recover
detrimental
snap_to_nvmesh
no_hit_evn
disp_wth_keyw
no_dur
no_magn
no_area
fx_persist
gory_vis
hid_in_ui
no_recast
pwr_aff_magn
pwr_aff_dur
painless
no_hit_eff
no_dth_disp



Conditions
Spoiler:  
Show

Conditions are in beta state and might not be stabel as they haven't been extensively tested.

For now you can create any conditions except:
1)which RunOn reference.
2)That have string as a parameter.
Here are examples:
[Condition]
ConditionOne|Subject:GetRandomPercent:<=:1:~:~:or:use_alias
ConditionTwo|Subject:GetRandomPercent:=:2:~:~
ConditionThree|Subject:GetRandomPercent:>=:Starfield.esm~B71:~:~:swap_subtar
ConditionFour|Subject:GetWantBlocking:=:0:~:~:
ConditionFive|Subject:IsTrueForConditionForm:=:45:Starfield.esm~17B850:~|Subject:GetWantBlocking:=:0:~:~:


You can create condition using this template

ConditionName:RunOn:Comparison operator:Value:param1:param2:flags


Condition name must be unique(like the filters)
Run on can be:
  • Target
  • CombatTarget
  • LinkedReference
  • QuestAlias
  • PackageData
  • EventData
  • CommandTarget
  • EventCameraRef
  • MyKiller
  • Player Ship


Comparison operator can be:
  • = Equal
  • != Not equal
  • > Greater
  • >= Greater than equal
  • < Less than
  • <=Less than equal


Value can be either float or global.
15 or Starfield.esm~B71 or Global EditorID

Params are detected by the plugin.
You can set a int,float parameter or Form parameter.

Same rules - either formID or Editor ID or a number. Strings are not supported atm as they cause crash in Unity.
Plugin will not let you set a form parameter if N parameter for this function should be an int. I need to know function param to set it in a correct format anyway so I had to check it.
I had to decode parameters from functions manually so there might be mistakes - they will be in debug log. In case plugin tells you that type of parameter is wrong please report to me.

Flags  are optional and can be
  • or
  • use_pdata
  • use_alias
  • swap_subtar

They are added separated by ":"
Examples of use(you neeed to set up conditions earlier under [Condition] tab)
[ConditionForm]
Starfield.esm~28FB6|cnd_add(ConditionFour)
Starfield.esm~28FB6|cnd_add(ConditionSeven)


[LVLLBaseForm]
Starfield.esm~7317|cnd_add_to_entr(Starfield.esm~1E052A:1:1:0_ConditionTwo)


Will add a condition to specified LVL list entry.

[Condition] section should be above so you set up conditions first and then use them.








The future:
In the future I plan to:
-Add light plugin support(when they are available).
-Add more values\filters.
-Multi-thread processing.
-More file modifiers.

FAQ:
-Do you take requests to add values\filters?
-Yes, feel free to request them in mod comments. At this stage of SF modding many values are not decoded yet but I will implement what I can.
.Later updates will mainly depend on the requests I receive. Please contact me on my Discord server for a quicker response.If you request a value to add please send me a screenshot of the requested value from SF1Edit.

-What if I specify a form from a plugin that is not loaded?
-Then this form will simply not be processed by the RTFP.

-What not all forms are available to be specified by EditorID?
-Not Editor IDs are loaded by the engine. po3 tweaks fix that so if you rely on Editor IDs you need to put this plugin as a requirement. Please be aware that there  might be EditorID conflicts in case there are 2 forms with the same name in different plugins.

-Will Gamepass version be available?
-From V.104
plugin supports Gamepass version of Starfield.Install instructions:

Spoiler:  
Show

ASI Loader instruction(if you don't have it yet):
To install the plugin:
1)Download ASI Loader from here - Choose Ultimate-ASI-Loader_x64.zip version.
2)Rename DLL file in the archive to wininet.dll and place it to Starfield\Content folder.
3)Export Address Data library archive into Content\Data\SFSE\Plugins folder.
3)Rename RealTimeFormPatcher.dll to RealTimeFormPatcher.asi and place it in Starfield\Content folder(the same as wininet.dll)
4)Launch Starfield as you normally would.
To make sure plugin actually loaded you can check My Games\Starfield\SFSE\Logs folder for presence of RealTimeFormPatcher.log.
This is how it works for me - there might be other instructions which tell you to rename DLL to something other than wininet.dll - you can follow them as well if this one doesn't work for you.



Source can be downloaded from here.

[size=4]Credits:
TommInfinite for coding.
powerofthree who made Base Object Swapper which gave me the idea for this mod.
ElminsterAU for SF1Edit which helped me develop and test this plugin.
Neanka for initial GameSettings and MessageBox decodings.
DavidJCobb for the help!
Player for help with the logo.
Everyone for your suggestions!