Jump to content

Making a legendary effect that improves stealth attack mult, need help


lordbevan1

Recommended Posts

Well to make this possible what I would do is set the damage value on the Weapon mod itself to 1 as Im sure that the game needs some kind of number to work with especially when dealing with multipliers as anything multiplied by 0 is 0. 

Your gonna want to create your own new custom perk inside of ModCommonPerk. That is where most of the legendary effects for armor and weapons are located

In the perk entry window select entry point

Select Mod Incoming Weapon Damage

Function - Select Multiply 1 + Actor Value Mult

In the small box put in the number 0.01 or 1.00 as your weapon already does next to no damage so the more boast here the better

Under Perk Owner set up your Targets like this

 

Run On - Subject

Condition Function -WornHasKeyWord

(Your Custom Keyword for your Weapon)

Comparison = = 

Value - Set to 1.00

This is to associate the perk with your weapon

 

Run on - Subject

Condition Function - IsSneaking

NONE

Comparison ==

Value - Set to 1.00

This is so it will take effect when sneaking

 

Last one 

Run on - Subject

Condition Function - IsInCombat

NONE

Comparison ==

Value - Set to 0

Now on the weapon itself on any of the damage mods for the weapon you have to set it up just like how the legendary effects are set up on weapons. Look at the mod_Legendary_Weapon_DamageVSHumans object mod to see how to set things up right

The WeaponAV in the object mod works like a percentage so 50 will equal 50% and so forth when set up the normal way. What this means is that if you have the number in the perk entry set to 0.01 then the weapon will be doing 1.5 damage which is still too little. If you set the number in the Perk Entry to 1.00 and in the object mod the WeaponAv is 50 then the weapon should be doing 50 damage before the sneak multiplier comes into play for each stealth attack which is much better. Experiment with the numbers till your happy.

 

Idk if IsInCombat is the right keyword for when the player has the [Danger] box above them so you might have to do some testing for figuring out the right keyword

 

 

 

Link to comment
Share on other sites

Might add Ench (Constant/Self) to dagger, add new Perk ModWeaponAttackDamage Multiply x0, Owner: Subject.GetIsId(Player), Weapon: Check dagger ID or keyword, Target: Subject.GetLineOfSight(Player)=1 OR Player.IsSneaking=0. Inverted approach, example is not suitable for others than Player though, if that's any important.

If want to boost sneak damage specifically, there's also ModSneakAttackMult entry.

On 12/24/2023 at 4:13 AM, SonAnima said:

Idk if IsInCombat is the right keyword for when the player has the [Danger] box above them so you might have to do some testing for figuring out the right keyword

IsInCombat kicks even for Caution, not much informative, as it may happen miles away. Still curious how to distinguish Danger state, couldn't figure out. As i remember, Player.GetAttacked didn't work at all. For the purpose of dagger that might be possibly condition run on Target - CombatTarget.GetId(Player) or GetLineOfSight. GetDetected looks as if perfect, but is problematic because it requires exact Ref to be specified as detector and does nothing for NULL, as i've tested, not sure how can use it for a random npc.

Edited by hereami
Link to comment
Share on other sites

On 12/25/2023 at 5:21 PM, hereami said:

IsInCombat kicks even for Caution, not much informative, as it may happen miles away. Still curious how to distinguish Danger state, couldn't figure out. As i remember, Player.GetAttacked didn't work at all.

I don't remember any vanilla non-F4SE way to determine the actual detection state. GetDetected, GetLineOfSight, PlayerAudioDetection, PlayerVisualDetection, etc. all return different values while the actual "Stealth formula" remains hardcoded.. As for the AudioDetection and VisualDetection conditions, they can be used instead of GetDetected if needed. They have console equivalent functions so the values they return can be examined with them.

The detection state can actually be acquired without an F4SE plugin by editing the HUDMenu: the AS3 function the .exe calls (SetStealthMeter if I'm remembering right) to pass the function arguments (detection text and level) to Papyrus.

 

Edited by LarannKiar
Link to comment
Share on other sites

  • 2 months later...
On 12/27/2023 at 3:00 PM, LarannKiar said:

The detection state can actually be acquired without an F4SE plugin by editing the HUDMenu: the AS3 function the .exe calls (SetStealthMeter if I'm remembering right) to pass the function arguments (detection text and level) to Papyrus.

How would I go about doing this?

Link to comment
Share on other sites

On 3/14/2024 at 11:53 AM, lordbevan1 said:

How would I go about doing this?

Something like this should work but I haven't tested it.

String DetectionText = UI.Get("HUDMenu", "root1.TopCenterGroup_mc.StealthMeter_mc.StealthTextInstance.text") as String

StealthTextInstance is a Public AS3 variable that BGS added to the ActionScript StealthMeter.as found in HUDMenu.swf.

StealthTextInstance  is a Textfield so it must have the Public property text (as per Flash design) that you can pass to Papyrus as String.

I think localized game versions send other texts to the UI but I don't know.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...