-
Posts
23 -
Joined
-
Last visited
Everything posted by Ashnal
-
I'm pretty miffed about this. While my mod hasn't seen much wild popularity due to my crap marketing skills, I've gotten almost unanimous enjoyment from it. The fact that a mod that changes the laser sound effects wins over one that provides a whole new way to play the game in the gameplay category is what infuriates me.
-
Anyone found a workaround for SpeedMult with IronSights yet?
Ashnal replied to Orcu's topic in Fallout 4's Discussion
That's just a symptom of how spell effect conditions work. It checks for iron sights every second. If the player leaves iron sights just after the check returns true .... they will get speed until the next check a second later.. There is a more responsive way to do this with Papyrus. Check out AliasTargettingScopeScript.psc for an example. -
Possible modify walk, run, sprint and ADS movement speed seperately.
Ashnal replied to Orcu's topic in Fallout 4's Discussion
There are movement types for the Player and NPCs in the character section of the creation kit. You can google console commands that increase run speed, use scripts or a game setting record to set the run speed or look at how the sprinter's legendary effect modifies run speed. You can look at how Arbitration modified walking speed. You can look at how the nimble legendary effect modifies ADS speed. There are mods that modify sneaking speed. I don't know much about sprinting speed, but if you increase run speed when sprint is activated, that might increase sprinting speed. Looked into those. I found some of the base stat values in the Character player movement entries, but nothing for ADS speed. As for the effects, they where being modified via a percentage multiplier, which is not what i wanted. I want to be able to set the actual values for all the speeds. Am i missing something? ADS speed is implemented as a legendary effect. It's basically a movespeed buff that affects all movement .... but it has a condition to be active only while aiming, effectively limiting it to ADS. -
So .... I actually found these after a few hours of tinkering in Nifskope. For future reference .... I'll list my findings here. They're all specifically for particle emitters attached to effect shaders, such as DetectLifeFX. First, particle spawn rate: Starting at the NiParticleSystem Node, there are child nodes of NiPSysActiveCtlr. For all the particles I looked at, there are 3 of those, one for each of the X Y and X axes. Under that is NiPSysEmitterCtlr, and under that is NiPSysUpdateCtlr. Underneath NiPSysUpdateCtlr there is a child node NiFloatInterpolator, this is what we are interested in. The value contained here controls how fast particles are spawn, with the higher, the faster particles spawn. Second, particle size: Find the child node of NiParticleSystem, NiPSysMeshEmitter. Within NiPSysMeshEmitter "Initial Radius" will control the initial size particles spawn at. This can be further modified by the "Radius Variation" field. It can be scaled for the duration of the particle's lifetime by another child node of NiParticleSystem, NiPSysScaleModifier. The array of floats in NiPSysScaleModifier represent a timeline of scale changes over the particle's lifetime. Third, alpha and color: Alpha, as well as color, at least for the particles I was working with, was set in another chld node of NiParticleSystem, BSEffectShaderProperty. Within there is a value called "Emmisive Color" which controls the color of the particle and alpha. The particular nifs I was working with were already set to use a greyscale texture that would be recolored to the color specified here, and I didn't really look at any other circumstances.
-
So I've got no idea when it comes to Nifs, but recently I've been wanting to change some particle effects. The DetectLifeFX. I've been looking through the attached Nif file at the particles, and I'm wondering where the overall alpha of the particles are set, the size of the particles, and their spawn rate. I would have thought these things would be obvious .... but I can't find them. Using the latest Nifskope for FO4.
-
How would you normally get the fragment to target the activated object? If the fragment has a reference to the object, you can simply pass it to the quest script via a function parameter. I looked itup on the CK wiki Scriptname ActivationQuest extends Quest function PerformAction(ObectReference akTarget) GotoState("Busy") ;Stuff you want to do goes here ;akTarget shouldbe the reference to the activated object GotoState("") EndFunction State Busy function PerformAction() ;Do nothing EndFunction EndState that's the script attached to the quest then you have as the perk fragment: ActivationQuest.PerformAction(akTarget) BUT you have to link the property. To do that hit "Properties" underneath the fragment window. Then at the bottom of that window, "Add Property." Type in the type as "Quest" and name it "ActivationQuest." Then once the property is created, select it in the property list and click "Edit Value." For the "Pick Object" dropdown, find and select "ActivationQuest." Note that you have to have created the quest and named it ActivationQuest before doing the perk fragment. I referenced these two articles just now to come up with this :) http://www.creationkit.com/fallout4/index.php?title=States_(Papyrus) http://www.creationkit.com/fallout4/index.php?title=Perk_Fragments
-
Spells - Extend Duration on Recast.
Ashnal replied to The6thMessenger's topic in Fallout 4's Discussion
Perhaps you misunderstood. For a Magic Effect in the CK, theres a tick box with "Dispel effects with these keywords." This is how chem effects are implemented in the base game. You have the magic effect you want, with a unique keyword on it, and that box ticked. Now whenever the effect is applied, it will dispel its already existing instance and apply a new instance with full duration. Kind of like how if you eat some mentats, then wait a minute, then eat another how you'll still only have one instance of the effect, just with refreshed duration. -
Check out the Loads of Ammo mod. In addition to switchable ammo types, it also adds switchable scopes ... variable zoom basically.
-
Spells - Extend Duration on Recast.
Ashnal replied to The6thMessenger's topic in Fallout 4's Discussion
Why not just replace the effect? Check the CK ... not FO4Edit. -
well ... first, your assault rifle would be actually doing close to 35 damage due to armor. That being said, those limbs should only have 1.5 HP lol. It should be working. So dig a little deeper then, check all the links. Maybe there's a limit. Try say 5% health percent. The test target you're firing at IS using your modified BodyPartData right? You did save your plugin after editing? You activated the plugin in your load order? Your plugin is the last in your load order?
-
Scripting Help? Comparing Actor Value
Ashnal replied to The6thMessenger's topic in Fallout 4's Discussion
So I guess I'm wondering, how is MySpeed set up? You can't just create a MySpeed ActorValue and expect it to be updated by the game automatically. You'd have to update it via script. -
Are you hitting the actual limb when testing? You can't just hit their torso and expect their leg to get crippled ... unless your gun has the kneecapper effect. DOuble check all the values. HP of the target, health percent of the body part, damage of the weapon you're using, any armor the target is wearing. Your target isn't wearing Power Armor right? That works a bit different.
-
Scripting Help? Comparing Actor Value
Ashnal replied to The6thMessenger's topic in Fallout 4's Discussion
Does your Actor actually have those ActorValues in the CK? Did you link them to the properties in the CK? -
You can do what I do. I have Fallout installed on my SSD. In NMM there's a setting for NMM mods folder, where NMM keeps mod installation files. Set that to your larger drive. When NMM installs mods it can get them from that folder and extract them to your SSD Fallout directory. This should cut the space needed for mods on your SSD by almost half, since you're not storing mod installation files on it.
-
So a fragment can't have states right? Why not instead just have an almost empty quest that only has the activation script in it? You have the perk fragment use that quest as a property, and have the quest script have a function with the code you want to execute. In the fragment you just call QuestProperty.Function() Within the quest script you have your states, one which has the function with the stuff you want to do, and the other state a busy state that does nothing.
-
Need some help with a script for Papyrus
Ashnal replied to shingouki2002's topic in Fallout 4's Discussion
It's not hard at all. akVictim.GetActorBase() == ActorBaseYoureCheckingFor -
Limbs aren't crippled by chance. They're crippled when they lose all their HP. You can make crippling limbs easier by either increasing the limb damage guns do via magic effect, or lowering their health percentage via body part data.
-
Need some help with a script for Papyrus
Ashnal replied to shingouki2002's topic in Fallout 4's Discussion
Problem with that approach is that you'd have to go to each ref in the cells you want it to apply to and attach it. From what I saw, OP wnated a generic molerat slaying quest where it could be ANY molerat, not specific ones. Attaching that script to the ActorBase in the CK is just a recipe for making it incompatible with a lot of other mods. Quest aliases are the way to go here IMO. Whether you alias the targets or the player. -
Need some help with a script for Papyrus
Ashnal replied to shingouki2002's topic in Fallout 4's Discussion
Awesome I'll try this too. I did manage to get it working with tokens in a slightly different way, but I'll try this as well. To add onto this though, I have a new problem. I want to add a perk to the player when a certain number of Kills are reached, but for some reason this code doesn't work. It tells me that the variable isn't defined for the perk. But I really cant seem to figure out why/how to fix it. Any ideas? Scriptname RegirEnemyKilledScript extends Quest Int Property nMoleRatsKilled Auto ; Increment Molerats Killed Function IncrementKilled(int numKilled = 1) ;trying to default this parameter to 1 in case no value is passed. But to also allow larger values to be passed in. nMoleRatsKilled += numKilled Debug.Notification ("You killed " + nMoleRatsKilled + " Molerats so far.") ;Debug testing for num counted. if (nMoleRatsKilled == 5 ) Debug.MessageBox("You killed 5 Molerats! You're a Molerat Killer!") Game.GetPlayer().AddPerk(MoleRatKiller) ; <--- This is the line that doesnt work. My perk is named MoleRatKiller in the Object Window endif EndFunctionOh that one's easy :smile: You need to define the perk you want to add as a property. Perk Property MoleratKiller Auto Generally speaking, any time you need to work with a CK object in Papyrus that isn't provided by an event parameter, you need to bring it in as a property. This applies to things like GlobalVariables, Spells, Items, and Perks. Here, I'll fix up your quest script a little. Scriptname RegirEnemyKilledScript extends Quest Int nMoleRatsKilled = 0 Perk Property MoleRatKiller Auto ; Increment Molerats Killed Function IncrementKilled(int numKilled = 1) ;trying to default this parameter to 1 in case no value is passed. But to also allow larger values to be passed in. nMoleRatsKilled += numKilled Debug.Notification ("You killed " + nMoleRatsKilled + " Molerats so far.") ;Debug testing for num counted. if (nMoleRatsKilled == 5 ) Debug.MessageBox("You killed 5 Molerats! You're a Molerat Killer!") Game.GetPlayer().AddPerk(MoleRatKiller) endif EndFunction Any particular reason why you're dropping tokens on death to increment? Seems like a terribly roundabout way to do that. In fact I thought of an even simpler way to handle this. Just set the player as an alias in your quest. Then attach a script to the PlayerAlias. The Script wil listen for the Actor.OnKill(Actor akVictim) Event. That event passes in the Victim as a parameter, so whenever the Player kills soemthing you just check and increment. Like so: ScriptName MoleRatKillerPayerRefAlias Extends ReferenceAlias Quest Property RegirEnemyKilledScript Auto ActorBase Property MoleratActorBase Auto Event OnKill(Actor akVictim) if (akVictim.GetActorBase() == MoleratActorBase) RegirEnemyKilledScript.IncrementKilled() EndIf EndEvent -
Need some help with a script for Papyrus
Ashnal replied to shingouki2002's topic in Fallout 4's Discussion
There's a much better way to do this. No need for tokens. Use the Entry Point "Apply Combat Hit Spell" Then just create a spell and magic effect. Put a condition on the effect that checks IsDead == 1. Attach a script that extends ActiveMagicEffect. In the OnEffectStart() Event, do your setstage. -
I've actually been working on a mod for this exact purpose. I built my own version of bullet time, and I've been working on Perks lately. In this case my inspiration are the perks themselves. I've been trying to keep them as close to vanilla as possible. For example, I keep the VATS critical system for bullet time. None of this random nonsense. So things like Four Leaf Clover, Grim Reapers Sprint, and Critical Banker all fall into line. I've been working on Blitz and Concentrated Fire, but I also need to do Penetrator as well.