lordbevan1 Posted December 16, 2023 Share Posted December 16, 2023 I'm trying to make a dagger that only deals stealth attack damage, but I can't figure this out, and I'm at a loss. pls help, thanks. Link to comment Share on other sites More sharing options...
SonAnima Posted December 18, 2023 Share Posted December 18, 2023 So do you want the dagger to deal damage only when the player is sneaking or do you want the dagger to constantly deal sneak damage? Link to comment Share on other sites More sharing options...
lordbevan1 Posted December 23, 2023 Author Share Posted December 23, 2023 On 12/18/2023 at 11:03 AM, SonAnima said: So do you want the dagger to deal damage only when the player is sneaking or do you want the dagger to constantly deal sneak damage? Only deal damage when the player is sneaking and undetected by the target. Link to comment Share on other sites More sharing options...
SonAnima Posted December 24, 2023 Share Posted December 24, 2023 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 More sharing options...
hereami Posted December 26, 2023 Share Posted December 26, 2023 (edited) 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 December 26, 2023 by hereami Link to comment Share on other sites More sharing options...
LarannKiar Posted December 27, 2023 Share Posted December 27, 2023 (edited) 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 December 27, 2023 by LarannKiar Link to comment Share on other sites More sharing options...
lordbevan1 Posted March 14, 2024 Author Share Posted March 14, 2024 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 More sharing options...
LarannKiar Posted March 15, 2024 Share Posted March 15, 2024 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 More sharing options...
Recommended Posts