Jump to content

Recommended Posts

5 hours ago, Roggvir said:

I dont want to sound ungratefull or something, but what the hell happened to this mod?
I leave Fallout 4 for a few days, and when i get back, the nice tiny functional mod turned into a humongous bloatware consisting of 40+ scripts???
What have i missed? does it now come with a major quest line? can it cook me a dinner, make me a coffee, and jerk me off at the same time?
...seriously, isn't this getting a bit out of hand? :)

(how about splitting it into whatever it is now, and a lite version with just basic handcuffs functionality?)

Welcome back Roggvir ?.

 

What has happened is that I have added shock collars in addition to the handcuffs. To do that, I needed to include a few 3d models and textures. This is why the file size in 0.4 is now much larger than in 0.3. "Much larger" is relative though, 0.3.2 was 1.7 MB after unpacking; 0.4 beta 6 is 4.8 MB after unpacking.

 

The mod was always a bit script heavy, it needs to be to correctly track all bound actors, enable and disable all the effects, and work around issues in the game engine (you would not believe how much the game engine sometimes fights the offset animations and tries to do what it wants with NPCs). 0.3.2 had 26 scripts; 0.4.6 has 44 scripts. The purpose of the new scripts is tying things together for the shock collars, e.g. connecting the collar with the terminal and vice versa, finding and triggering nearby collars when the remote trigger is fired, etc. It is still a framework mod without any quests, and it does not cook coffee or do any of the other things you are talking about. And if you don't like shock collars you can just ignore them, they are not forced on you.

 

I do not plan to split the mod. Some of the internally used quests and scripts are the same for both handcuffs and shock collars, and splitting it would cause additional work for me (and take away another esp slot for users who want both). I also think that calling it humongous bloatware is not fair, and that you would deserve to get shock collar forced on you for saying that ?.

 

Oh yes, one additional thing: I have put most of the loose files into a .ba2 file now, so remember to remove any old files when upgrading from 0.3 to 0.4.

Link to comment
7 hours ago, Kharos said:

Did you remember to enable loading of loose files when you reinstalled the game? I am talking about the following config file entries:


[Archive]
bInvalidateOlderFiles=1
sResourceDataDirsFinal=

Without these the game will use the vanilla scripts instead of the F4SE scripts, leading to a lot of broken stuff.

No, I had forgotten that, but even once doing that still the exact same errors.

Link to comment
12 minutes ago, SRckt98 said:

No, I had forgotten that, but even once doing that still the exact same errors.

Ok. The lines in the beginning of your papyrus log, e.g.

[10/24/2019 - 07:15:58PM] error: Native function RegisterForKey in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function UnregisterForKey in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function RegisterForControl in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function UnregisterForControl in empty state could find no matching function on linked type ScriptObject. Function will not be bound.

Point to an issue with F4SE, as all of these are functions with F4SE. If you still have them, something is wrong with your F4SE installation. Either the scripts are not where they should be (e.g. there should be a file Data\Scripts\F4SE.pex), or the game is not loading them.

 

I am not sure about the lines further down, e.g.

[10/24/2019 - 07:16:01PM] Error: Unable to link type of variable "::Library_var" on object "realhandcuffs:actortoken"
[10/24/2019 - 07:16:01PM] Error: Unable to link type of property "Library" on object "realhandcuffs:actortoken"
[10/24/2019 - 07:16:01PM] Error: Unable to link type of variable "::Library_var" on object "realhandcuffs:restraintbase"
[10/24/2019 - 07:16:01PM] Error: Unable to link type of property "Library" on object "realhandcuffs:restraintbase"

They may be caused by the F4SE issue. It is also possible that you now have a mix of version 0.3 and 0.4 installed. Make sure to clean out all files of one version before installing another one (if you are using MO2, it should automatically do so when you choose the "replace" option.

Link to comment
1 hour ago, Kharos said:

Ok. The lines in the beginning of your papyrus log, e.g.


[10/24/2019 - 07:15:58PM] error: Native function RegisterForKey in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function UnregisterForKey in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function RegisterForControl in empty state could find no matching function on linked type ScriptObject. Function will not be bound.
[10/24/2019 - 07:15:58PM] error: Native function UnregisterForControl in empty state could find no matching function on linked type ScriptObject. Function will not be bound.

Point to an issue with F4SE, as all of these are functions with F4SE. If you still have them, something is wrong with your F4SE installation. Either the scripts are not where they should be (e.g. there should be a file Data\Scripts\F4SE.pex), or the game is not loading them.

Gah, that was it. In the fresh install the F4SE Data directory didn't get copied over, just the 3 loose files.

 

Thank you!

Link to comment
9 hours ago, Kharos said:
Spoiler

Welcome back Roggvir ?.

 

What has happened is that I have added shock collars in addition to the handcuffs. To do that, I needed to include a few 3d models and textures. This is why the file size in 0.4 is now much larger than in 0.3. "Much larger" is relative though, 0.3.2 was 1.7 MB after unpacking; 0.4 beta 6 is 4.8 MB after unpacking.

 

The mod was always a bit script heavy, it needs to be to correctly track all bound actors, enable and disable all the effects, and work around issues in the game engine (you would not believe how much the game engine sometimes fights the offset animations and tries to do what it wants with NPCs). 0.3.2 had 26 scripts; 0.4.6 has 44 scripts. The purpose of the new scripts is tying things together for the shock collars, e.g. connecting the collar with the terminal and vice versa, finding and triggering nearby collars when the remote trigger is fired, etc. It is still a framework mod without any quests, and it does not cook coffee or do any of the other things you are talking about. And if you don't like shock collars you can just ignore them, they are not forced on you.

 

I do not plan to split the mod. Some of the internally used quests and scripts are the same for both handcuffs and shock collars, and splitting it would cause additional work for me (and take away another esp slot for users who want both). I also think that calling it humongous bloatware is not fair, and that you would deserve to get shock collar forced on you for saying that ?.

 

Oh yes, one additional thing: I have put most of the loose files into a .ba2 file now, so remember to remove any old files when upgrading from 0.3 to 0.4.

 

Well ok, calling it humongous bloatware was uncalled for, i apologise for that, but please do strive to keep it that way (as you wrote - it is a framework, it needs to be light as much as possible).

As i wrote earlier, i just returned from a visit to Skyrim, and i am a bit annoyed by some things i saw there.
The thing is that Skyrim is beyond help, too much crap has accumulated over the years in all those mods, too much legacy code, too much of it written without knowing of, or thinking of consequences (sometimes maybe even without thinking at all :)), but Fallout 4 may still be saved.
And i am guilty of the same things i now hate - abusing external properties (this is the worst sin of almost every single modder! EVERYBODY should read the Threading Notes!), trying to write the code like it is a Java or something, calling things "factory" and "class" (nobody should ever use those names in any language, it's horrible reading such code), extending scripts for no good reason, etc. - i am not saying you do those things, i didn't look.

I was just surprised of the sudden change in amount of scripts compared to what i remember there was months ago, and i thought "wtf? its just handcuffs! why 40+ scripts???", and i worried it may have gotten out of hand (because it is a framework - it is always the greatest catastrophy when a framework gets out of hand).

Anyway, if you say there is a valid reason for all those scripts, i will give you the benefit of a doubt and will shut up, just please, be carefull :)

Link to comment
7 hours ago, Roggvir said:

Well ok, calling it humongous bloatware was uncalled for, i apologise for that, but please do strive to keep it that way (as you wrote - it is a framework, it needs to be light as much as possible).

As i wrote earlier, i just returned from a visit to Skyrim, and i am a bit annoyed by some things i saw there.
The thing is that Skyrim is beyond help, too much crap has accumulated over the years in all those mods, too much legacy code, too much of it written without knowing of, or thinking of consequences (sometimes maybe even without thinking at all :)), but Fallout 4 may still be saved.
And i am guilty of the same things i now hate - abusing external properties (this is the worst sin of almost every single modder! EVERYBODY should read the Threading Notes!), trying to write the code like it is a Java or something, calling things "factory" and "class" (nobody should ever use those names in any language, it's horrible reading such code), extending scripts for no good reason, etc. - i am not saying you do those things, i didn't look.

I was just surprised of the sudden change in amount of scripts compared to what i remember there was months ago, and i thought "wtf? its just handcuffs! why 40+ scripts???", and i worried it may have gotten out of hand (because it is a framework - it is always the greatest catastrophy when a framework gets out of hand).

Anyway, if you say there is a valid reason for all those scripts, i will give you the benefit of a doubt and will shut up, just please, be carefull :)

I agree about Skyrim, whenever I try to play a heavily modded Skyrim it is an unstable mess, and the mods with similar features to what I am doing here (ZAP, Devious Devices) have a lot of features (too many?) and break often (especially during combat or after loading screens, but sometimes it seems to be just random).

 

In defence of their authors, as I found out here it can be tricky to force the game to do what you want. The engine is written with the assumption that NPCs will fight in combat (especially followers) and that the player is free to do as they please. Forcing 'ignore combat, weapon unequipped' packages on NPCs will generally work but can lead to unexpected behavior. For example, NPCs with the "player teammate" flag set will draw their weapon if combat ends (really, even if the package says otherwise!), so I have to dynamically remove the "player teammate" flag when combat starts and re-add it when combat ends. Keeping the player tied up is tricky too; for example I need to temporarily switch from first-person view to third person view when equipping handcuffs, otherwise the weapon will still be visible in first-person view. I will also have to detect if they somehow unequip the handcuffs and undo this action (and there is no event before the player unequips, the only event is after the player already has unequipped!). There are a lot of other workarounds like that, and the end result is a script heavy mod that listens to a lot of events.

 

Thanks for the excellent link, I was aware of some of the things but not of all of them.

Link to comment
On 10/20/2019 at 6:30 PM, Kharos said:

There is unfortunately no way to easily spawn a remote with the long range mod, as I forgot to add a function that allows spawning remote triggers with mods. I will add it in the next version.

 

Edit: When you call "NpcFireRemoteTrigger" the actor should equip the trigger, fire it, and then switch back to the weapon they had before. But I concur that I did not test this very well, so maybe they are keeping the trigger instead. If so then this is bad, as far as I know the default combat AI has no idea about how to use the trigger. I will test that, too, and try to fix it if necessary.

Thanks!  I did test again with the Range property increased to the same value as the long-range trigger, and it seemed to work a lot better with the standard shock collar at least.  I did not get a chance to try it with the throbbing collar, I will try it out and let you know.  I think part of the issue is that the trigger weapon cause the AI to freak out a little bit; because the enemy wielding the trigger is unable to equip his normal weapon, and the trigger is flagged as "not used in normal combat", he tends to run away and cower a lot.  I think if you fix the script so the enemy is able to switch back to their normal weapon it will work the way I need it to.

 

I think I found another issue in the meantime: auto re-equipping collars.  In my Purgatory mod, I remove all Real Handcuffs restraints from the player using GetEquippedRestraints and then looping through the result and calling "UnequipRestraintKeepInInventory".  This has always worked reliably for handcuffs, and still does, but collars get unequipped and then pop back on a few seconds later.  Here is the code I am using:

 

Spoiler

Function RemoveHandcuffs(Actor akActor)
    If (Game.IsPluginInstalled("RealHandcuffs.esp"))
        Quest RHQuest = Game.GetFormFromFile(0x00000F99, "RealHandcuffs.esp") as Quest
        ScriptObject RHScript = RHQuest.CastAs("RealHandcuffs:ThirdPartyApi")
        
        Var[] RHArgs = New Var[1]
        RHArgs[0] = PlayerRef
        Var RHRetval = RHScript.CallFunction("GetEquippedRestraints",RHArgs)
        If (RHRetval)
            Debug.Trace("AFVHellPlayerQuestScript: Player is wearing handcuffs")
            Var[] RHArray = Utility.VarToVarArray(RHRetval) as Var[]
            Int idx = 0
            RHArgs = New Var[2]
            While idx < RHArray.Length
                RHArgs[0] = RHArray[idx]
                RHArgs[1] = RHScript.GetPropertyValue("FlagAddRemoveObjectsSilently")
                RHRetval = RHScript.CallFunction("UnequipRestraintKeepInInventory",RHArgs)
                Debug.Trace("AFVHellPlayerQuestScript: unequip returned " + RHRetval as Bool)
                idx += 1
            EndWhile
        EndIf
    EndIf
EndFunction

 

When the player was wearing both handcuffs and a collar, the debug log showed "unequip returned True" twice, as expected, but the collar returned a few seconds later.  The handcuffs stayed unequipped.

Link to comment
42 minutes ago, EgoBallistic said:

Thanks!  I did test again with the Range property increased to the same value as the long-range trigger, and it seemed to work a lot better with the standard shock collar at least.  I did not get a chance to try it with the throbbing collar, I will try it out and let you know.  I think part of the issue is that the trigger weapon cause the AI to freak out a little bit; because the enemy wielding the trigger is unable to equip his normal weapon, and the trigger is flagged as "not used in normal combat", he tends to run away and cower a lot.  I think if you fix the script so the enemy is able to switch back to their normal weapon it will work the way I need it to.

Yeah, this (the AI freaking out) is the main issue that I am currently trying to solve. Just removing the "not used in normal combat" flag does not help. I think there is code somewhere in the engine that detects that the weapon does not do any damage and puts the AI into "run away" mode. Annoyingly this even happens when I boost confidence to "Foolhardly". I may need to apply a "ignore combat" package on the AI or even temporarily pull the AI out of combat while they use the remote.

 

47 minutes ago, EgoBallistic said:

When the player was wearing both handcuffs and a collar, the debug log showed "unequip returned True" twice, as expected, but the collar returned a few seconds later.  The handcuffs stayed unequipped.

Your code looks ok. I will take a look, this should be easy to reproduce. This is probably the first time that this function is called when more than one item is equipped. Doing things the first time is usually when hidden bugs are uncovered...

Link to comment
armor RegularHandcuffs = Game.GetFormFromFile(0x00000802, "RealHandcuffs.esp") as Armor
armor HingedHandcuffs = Game.GetFormFromFile(0x0000085C, "RealHandcuffs.esp") as Armor

target.unequipitem(RegularHandcuffs)
target.unequipitem(HingedHandcuffs)

 

^^this does not work, probably because there are some safeguards placed on the handcuffs preventing unequip. How should I proceed about it? 

 

 

Link to comment
24 minutes ago, SAC said:

armor RegularHandcuffs = Game.GetFormFromFile(0x00000802, "RealHandcuffs.esp") as Armor
armor HingedHandcuffs = Game.GetFormFromFile(0x0000085C, "RealHandcuffs.esp") as Armor

target.unequipitem(RegularHandcuffs)
target.unequipitem(HingedHandcuffs)

 

^^this does not work, probably because there are some safeguards placed on the handcuffs preventing unequip. How should I proceed about it? 

 

 

Please use the ThirdPartyAPI script that is explicitly made for integration into other modes:

    Quest rhMainQuest = Game.GetFormFromFile(0x000f99, "RealHandcuffs.esp") as Quest
    If (rhMainQuest == None)
        ; RealHandcuffs is not installed
        Return None
    EndIf
    ScriptObject thirdPartyApi = rhMainQuest.CastAs("RealHandcuffs:ThirdPartyApi")

Then use CallFunction to call functions on thirdPartyApi. The interesting ones in your use case are probably GetEquippedRestraints and ForceUnequip.

There is one small problem, GetEquippedRestraint will return both handcuffs and shock collars. I will implement dedicated functions to only get one or the other in the next release.

Link to comment
8 hours ago, EgoBallistic said:

RHArgs[1] = RHScript.GetPropertyValue("FlagAddRemoveObjectsSilently")

@EgoBallistic, you can get rid of the GetPropertyValue call and hardcode the flag:

RHArgs[1] = 2 ; FlagAddRemoveObjectsSilently

I guarantee that flags are stable (i.e. the values of the flags will not change from release to release).

Link to comment
15 hours ago, Kharos said:

Please use the ThirdPartyAPI script that is explicitly made for integration into other modes:


    Quest rhMainQuest = Game.GetFormFromFile(0x000f99, "RealHandcuffs.esp") as Quest
    If (rhMainQuest == None)
        ; RealHandcuffs is not installed
        Return None
    EndIf
    ScriptObject thirdPartyApi = rhMainQuest.CastAs("RealHandcuffs:ThirdPartyApi")

Then use CallFunction to call functions on thirdPartyApi. The interesting ones in your use case are probably GetEquippedRestraints and ForceUnequip.

There is one small problem, GetEquippedRestraint will return both handcuffs and shock collars. I will implement dedicated functions to only get one or the other in the next release.

 

Thank you, that code compiles but I have no idea how to call the functions after that :( 

 

I've tried target.UnequipRestraintRemoveFromInventory and thirdpartyapi.UnequipRestraintRemoveFromInventory, does not compile, and anyway I don't know how to work with arrays in order to get the restraint before calling unequip.

 

Link to comment
44 minutes ago, SAC said:

Thank you, that code compiles but I have no idea how to call the functions after that :( 

 

I've tried target.UnequipRestraintRemoveFromInventory and thirdpartyapi.UnequipRestraintRemoveFromInventory, does not compile, and anyway I don't know how to work with arrays in order to get the restraint before calling unequip.

Do you want to create a soft dependency (i.e. should your mod work without mine, mine is just an optional dependency) or do you want to create a hard dependency (my mod is required for your mod)?

The code above is for a soft dependency, and you will need to learn about CallFunction and related scripting functions for doing a soft dependencieshttps://www.creationkit.com/fallout4/index.php?title=CallFunction_-_ScriptObject

 

If you are aiming for a hard dependency, you can simplify the code that I posted above to:

RealHandcuffs:ThirdPartyApi thirdPartyApi =  Game.GetFormFromFile(0x000f99, "RealHandcuffs.esp") as RealHandcuffs:ThirdPartyApi

And then you can directly call the functions of the ThirdPartyApi script. I realise that the array stuff is somewhat complicated. I am trying to push out a new version today, fixing some bugs, and I am planning to add a few more simple functions to that version.

Edit: This page here is about soft dependencies (and why they should be preferred), too: https://www.creationkit.com/fallout4/index.php?title=Inter-mod_Communication
 

Link to comment

I would rather have a soft dependency, if I can manage it, otherwise I'll just make it a hard one and be done with it :) your mod is cool enough to be worth a dependency.

 

That second way of doing things I've used for calling AAF.

 

Going to wait for the new version. For my purpose, a function that just removes all RH equipment (or, even better, any handcuff) from an actor would be enough, I am not planning for that actor to be around in order to use the collar after I'm done with them.

 

Thank you!

Link to comment
1 hour ago, SAC said:

For my purpose, a function that just removes all RH equipment (or, even better, any handcuff) from an actor would be enough

Look at the RemoveHandcuffs code I posted a few posts up, behind the spoiler tag.  That routine unequips anything from the Real Handcuffs mod, and only has a soft dependency on RH.  You are welcome to use it in your own project.  You will want to change " RHArgs[0] = PlayerRef " to " RHArgs[0] = akActor" so you can call it on any actor.

Link to comment
1 hour ago, EgoBallistic said:

Look at the RemoveHandcuffs code I posted a few posts up, behind the spoiler tag.  That routine unequips anything from the Real Handcuffs mod, and only has a soft dependency on RH.  You are welcome to use it in your own project.  You will want to change " RHArgs[0] = PlayerRef " to " RHArgs[0] = akActor" so you can call it on any actor.

 

Aha! Thank you very much!

 

LE: works perfectly, thank you!

Link to comment
Version 0.4.0 rc 1
==================
final touches before release
- make sure collar explosions are placed correctly at the neck, even if actors are not standing
- fix explosive collars sometimes not working after wearer died or when booby-trapping corpses
- add taser syringes at chemistry workbench (ammo for syringer, deals shocks similar to collars)
- add Just Business integration for taser syringes (option in MCM to automatically mark the victim)
- reduce hacking level requirements for firmware recipes
- terminate unwanted scenes when NPCs are bound and/or when shock collars are triggered
- improvements to ThirdPartyApi: better handling of shock collar remote triggers, specialized functions for restraints with specific effects

This is a release candidate; if no major bugs are found, the "final" 0.4 release will be identical to this one.

 

@EgoBallistic @SAC I added several new functions to ThirdPartyApi. The following could be especially interesting:

  • CreateRemoteTriggerWithModsCloseTo works like CreateRemoteTriggerCloseTo but allows specifying that the remote has the powerful mod
  • UnequipAllRestraintsKeepInInventory will directly unequip all restraints, no while loop necessary
  • UnequipRestraintsWithEffectKeepInInventory will do the same but only unequip some restraints (only handcuffs or only shock collars, depending on specified effect)
  • NpcAimAndFireRemoteTrigger is a replacement for NpcFireRemoteTrigger, you can specify a target and the npc will visually aim at that target (also the AI should no longer freak out)
  • NpcAimAndFireRemoteTriggerWithMods does the same but allows specifying that the remote has the powerful mod

 

PS: I could not reproduce the problem with the shock collar "reappearing" after unequipping. Please try if it still happens with the new functions (e.g. UnequipAllRestraintsKeepInInventory).

Link to comment

 

Fyi, uninstalling the mod (I know, blasphemy, it is really a superb mod but due to my stupidity... greed... most of the human commonwealth population got handcuffed and I needed to reset this a bit until I rethink my fat fingers approach to cloak spells) makes the pip pad invisible. The only way to fix is uninstall pip pad, clean save, reinstall pip pad

 

Happened twice, so I'd say it is confirmed. No idea why this happens

 

 

Link to comment
59 minutes ago, SAC said:

 

Fyi, uninstalling the mod (I know, blasphemy, it is really a superb mod but due to my stupidity... greed... most of the human commonwealth population got handcuffed and I needed to reset this a bit until I rethink my fat fingers approach to cloak spells) makes the pip pad invisible. The only way to fix is uninstall pip pad, clean save, reinstall pip pad

 

Happened twice, so I'd say it is confirmed. No idea why this happens

 

 

That's... strange, as I am not aware of any interaction with pip pad. I might need to take a look.

 

I hope you disabled the mod first (in MCM) before uninstalling it. Otherwise the affected NPCs may permanently miss keywords and stuff...

Link to comment

The mod dynamically changes keywords and other things on NPCs. Uninstalling mods like that is always trickx, but at least disable it in MCM before doing so:


disable_rh.jpg.0d995c7c21e817f01f8f22a9fe265980.jpg


Turn that "Disable" setting ON, then close MCM and wait for the message. Then save the game, exit and uninstall the mod.

If you need to reinstall later, it is possible that the setting is still ON (settings can be persisted by MCM even if you uninstall the mod), so check and turn it OFF again if necessary,

Link to comment
On 11/3/2019 at 9:30 AM, SAC said:

 

Fyi, uninstalling the mod (I know, blasphemy, it is really a superb mod but due to my stupidity... greed... most of the human commonwealth population got handcuffed and I needed to reset this a bit until I rethink my fat fingers approach to cloak spells) makes the pip pad invisible. The only way to fix is uninstall pip pad, clean save, reinstall pip pad

 

Happened twice, so I'd say it is confirmed. No idea why this happens

 

 

Make sure you have the latest pip-pad. I had problems because I was running an old version with RH.

Link to comment

I was cuffed and told that it was too tight to struggle out of. I had no lockpick skill and no alternative but to struggle. To no avail. I finally broke down and set the percentage to 100% with 0% adjustment for hinged, even though they were regular cuffs.  Nope, still couldn't get out.  There was no way I could continue to play the game that way. I was in Sanctuary, couldn't ask anyone for help, couldn't pick it, couldn't struggle. What gives?  Was there a secret solution I was missing?

 

I had to use the debug command to get out.

 

Note: It was called from Violate + Devious Devices

Link to comment
54 minutes ago, wdaigle said:

I was cuffed and told that it was too tight to struggle out of. I had no lockpick skill and no alternative but to struggle. To no avail. I finally broke down and set the percentage to 100% with 0% adjustment for hinged, even though they were regular cuffs.  Nope, still couldn't get out.  There was no way I could continue to play the game that way. I was in Sanctuary, couldn't ask anyone for help, couldn't pick it, couldn't struggle. What gives?  Was there a secret solution I was missing?

 

I had to use the debug command to get out.

 

Note: It was called from Violate + Devious Devices

Any 'owed" workshop workbench. The Red ones. ;)

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use