Jump to content

becauseofreasons

Premium Member
  • Posts

    59
  • Joined

  • Last visited

Everything posted by becauseofreasons

  1. Just wanted to chime in with an update. The companion site for the mod is up and ready to go and will serve as the primary base of operations for the mod. The site has a web-based editor for the NPC and Quest .json files, the former of which will eventually be used to generate the mod via SkyProc. Each quest and NPC has a Disqus comment thread to allow folks to chime in on features/mechanics they'd like to see or discuss. If you'd like to contribute, go ahead and use the Quest or NPC editors to add content, download the files with the download button, then PM me your changes or make a pull request to the git repository linked to on the site. It's really that simple, no programming experience needed. I'd really love to see some folks chip in, if just because this might take a while otherwise. :smile:
  2. Awesome, thank you so much. I mean there wouldn't need to be a compat patch between quests that used the system and characters that used the system. For example, you could have a character from quest mod X reacting (albeit indirectly) to events in character mod Y without needing a "X Meets Y" patch in the middle, or without either modder even being aware of the other. But yeah, you're entirely correct. Absolutely. I'd like this to be as end-user-friendly as possible - part of the original purpose was for this to help out writers who might not otherwise be comfortable scripting something like an influence system, by letting them use it in their own mods and have more complex interactions than might have otherwise been possible. I'm looking at it mostly as a "here you go, make something of it" framework. From a purely mechanical perspective for the 'vanilla .esp', I'll probably end up including the features you mention, as well as things like buffed skills or stats, special abilities (for the NPC and/or player) that are only unlocked once you've reached a certain influence with the NPC, influence requirements for marriage and following, things like that. It's mostly of interest as tool for character-building - at least from where I'm standing. When I played the Arissa mod I thought it was really neat that she was reacting to things, and realized that there was room for a middleware to take some of the scripting load off of more inexperienced modders who still might want to have more reactive characters.
  3. I'm working on a mod that I'll need quite a bit of help with in order to finish. It's nothing difficult or technical, anyone can help — you don't even have to know what the Creation Kit is, just be an avid player of Skyrim and know the characters and quests. It's a framework for adding an influence system to characters within Skyrim. Put briefly, it gives characters the ability to care about what the player does, and allows that to have a concrete effect on stories and characters (primarily written by other modders, but hopefully to a modest extent in the vanilla game). All followers will have preferences toward various types of actions, and those types will be used to characterize the words and deeds of the player. Then those action will affect the disposition of the character toward the player by affecting the NPCs' positive and negative (and cumulative) influence scores. change = preference × magnitudeIn other words, characters like you more when you do things they like, and like you less when you do things they don't. If someone really, really hates the Altmer, they might have an Altmer preference of -1.0 (-100%). On the other hand, if they don't really care about them one way or the other, they might have a 0 — meaning any action taken for or against the Altmer won't sway their opinion either way. Example: Say Serana has a mild preference (30%) toward honest behavior. Telling Camilla the truth about a fake letter from Sven might be an Honest action of magnitude 5. The player gets 1.5 positive influence with Serana (0.3 × 5) and of course, +1.5 to cumulative influence. Now, perhaps the player lied to Camilla. The player then gets 1.5 negative influence with Serana, and -1.5 to cumulative influence. Keeping positive and negative influence on separate scales allows the player to have truly dysfunctional relationships with his or her followers, and writers can and should capitalize on that. The player maintains a reputation independent of their influence on followers, so at sufficiently high levels of fame or infamy, characters might have positive or negative reactions to them based on their past words and deeds. I'm working on going through quests at the moment and adding what I'm calling influence 'hooks' — they're one-line scripts that tell the influence framework that something of interest is happening — with an ID, a type of action and the magnitude of the action. Here's an example: cifMain.cifInfluence("cifEvent_074A83_001", 3, -3) This means the first influence event for the quest 074A83 (A Lovely Letter), a -3 Honesty (i.e., mildly dishonest) action. This will trigger an event in the framework that all current followers subscribe to that modifies their influence score. Types of Influence Events There are a number of different influence types, each based on different types of actions. cif_altruism (0 - altruism / selfishness) cif_brave (1 - courage / self-preservation) cif_daedric (2 - influence / aversion) cif_honest (3 - honesty / duplicity) cif_humble (4 - humility / pride) cif_intellect (5 - intellectualism / anti-intellectualism) cif_kind (6 - kindness / cruelty) cif_lawful (7 - lawfulness / lawlessness) cif_loyal (8 - loyalty / betrayal) cif_magic (9 - magic / anti-magic) cif_passion (10 - passion / stoicism) cif_patience (11 - patience / eagerness) cif_polite (12 - politneness / curtness) cif_purity (13 - purity / corruption) cif_religious (14 - religiosity / areligiosity) cif_temperance (15 - temperance / gluttony) cif_thievery (16 - thievery / straightforwardness) cif_trusting (17 - credulity / suspiciousness) cif_war (18 - warlike / peaceful) The following are less complex - positive indicates a support or like, negative indicates an opposition or dislike. cif_race_argonian (19) cif_race_altmer (20) cif_race_bosmer (21) cif_race_breton (22) cif_race_dunmer (23) cif_race_khajiit (24) cif_race_imperial (25) cif_race_orc (26) cif_race_nord (27) cif_faction_bards (28) cif_faction_brotherhood (29) cif_faction_college (30) cif_faction_companions (31) cif_faction_dawnguard (32) cif_faction_imperial (33) cif_faction_stormcloak (34) cif_faction_thieves (35) cif_faction_volkihar (36) Why would this be helpful? Very few characters in vanilla Skyrim -- with the major exception of Serana and maybe a couple others who I've not met because I haven't finished the game / DLC -- are interesting ones - they mostly exist to look pretty/ugly (if you're playing vanilla) and carry stuff. This is a reflection of a mechanical fault as much as it is a writing one. There's no system in-game to model meaningful personalities or relationships between characters, so there wasn't any point in spending time writing as though there were. You do a quest, you get 'em as a follower. You do another quest, you can get married. Wham bam, thank you, ma'am. Not really any subtlety there at all. But in Knights of the Old Republic II: The Sith Lords, (which is one of the best RPGs ever made and you should play it right now if you haven't) the influence mechanic created a foundation for some really interesting character moments. It allowed the writers to sequester away bits of dialogue and character abilities behind Influence checks, encouraging players to spend time getting to know their companions as the game progressed. And not even necessarily in the romantic sense — even Kreia, perhaps among the least romanceable characters in the history of video games, was a hugely interesting and enigmatic figure who had a meaningful relationship with the player, and KOTOR II's influence system played a large part in making that relationship an interesting mechanic. In the same way, this could be a huge boon for modded characters, or even some of the vanilla ones, if treated with a bit of TLC. What would this mean for the vanilla game? Apart from adding influence hooks to the main game — which would be kept entirely separate from the scripts in place — the .esm would have no effect whatsoever. It's a framework, that all it is — something to hook into for mod authors seeking a little more mechanical depth in their characters' relationships. With the optional .esp, all the vanilla followers would be registered with the framework. Marriageable figures who are not followers by default would become followers and the requirements for companionship / marriage would be tied into the influence system. What would this mean for modded quests? Add an influence hook wherever you'd like in your quest and characters using the framework will automatically respond to actions with influence hits or boosts — no need for compatibility patches. What would this mean for modded characters? Add a single script and use the UI in the Creation Kit to edit the influence preferences for your character. Then you can access the character's influence properties to change which dialogue is said to the player as their influence increases or decreases, set requirements for marriage/stewardship or make the follower leave if Influence gets too low. Or just about anything, really. Think of it as a mechanical model for the player's relationship with the NPC, and go from there. I'm in the process of making an NPC that uses the framework to demonstrate how it works. What can I do to help? There are a ton of quests in Skyrim which have the kinds of decisions that I'm talking about. It's a lot for one person. There are also a lot of followers in Skyrim that should be brought into the system (through an optional .esp) that should have preferences added. If you'd like to help with either of these things, let me know. Again, it's super non-technical, you don't even need to crack into the Creation Kit (though it'd probably make things easier). For quests, all I need is at what point in which quest the event happens, what kind of event it is and its magnitude.For characters, all I need is a line of dialogue justifying a preference (in context, please :tongue:) and a value for it (-100% to 100%, or something between -1 to 1 if you're more into floats than percentages).If you're a scripter who has experience making high-performance mods, I'd love to hear from you. It's pretty lightweight as it is, but I have no experience with best practices for writing performant mods in Skyrim. I'm looking to eventually integrate the mod with MCM and (maybe) some of the more popular follower / overhaul mods, so if you have experience with that and would like to share your wisdom, I'd greatly appreciate it. Also, if you have opinions on the event types chosen or if you think the whole idea is bad and should go die in a fire, please let me know! The only way something gets better is with criticism! Progress 1-4-15: The core mechanic is working! (albeit by overriding topic info scripts, seeking to fix that ASAP) The quest "A Lovely Letter" has been marked up with influence events.
  4. Wondering if any of you would be interested in working on a companion relationship / influence framework. For those who haven't played KOTOR 2 (play it if you haven't, it's probably one of the best AAA-style RPG's ever made), characters have Influence scores that are incremented/decremented when the player says or does things they agree/disagree with. That in turn changes what dialogue is available to the player, triggers intermittent conversations and allows the player to bring characters along with them to the light or the dark side. In KOTOR 2, influence points are hard-coded along with the dialogue. Which is well and good for KOTOR 2, but with the modding ecosystem for Skyrim as large as it is, it'd need to be quite a bit more robust and dynamic in order to be useful for the community. Basically, there are three parts of the idea: there are a number of axes (more subtle than good / evil) that can classify decisions (dialogue choices, quest decisions) each of these actions has a certain magnitude NPCs (and companions, in particular) have preferences for and against particular types of actions. So what would the mod itself entail? combing through vanilla dialogue and adding influence hooks to dialogue and quests allowing mods to register with the framework and offer their own influence hooks allowing characters registered with the framework to access the context, axis, magnitude and influence hit/boost from these hooks Modders could then register a character's preferences with the framework and focus on dealing with how a character reacts to influence hits/boosts/levels instead of hunting down situations to add reactions to - in other words, they could spend more time writing a character that reacts to the world and player and less time coding the sort of influence system I imagine several of the more intensively-coded ones are already using. I'm a good writer (though ideally this would be content-light or content-less as a framework) and decent programmer (with some experience in the GECK/Creation Kit), but would definitely need some people who know their way around Papyrus's quirks and the nitty-gritty of modding API creation to make it as lightweight and easy-to-use as possible. Let me know what you think, especially if you have concerns about technical viability. I don't know myself, and that'd be something I'm hugely interested in discussing. And of course, a happy new year to all of you.
  5. Age: 22 Occupation: College graduate / searching Gender: Male Race: Caucasian Playable races: Breton, MaleYoungEager-type roles Skills / Experience: theatre/acting backgroundguitarist (classical, acoustic, electric)vocalist (baritone)good microphone/audio setup (SM57/Scarlett 2i2)Samples: Voice, Music
  6. Apprentice, seeing as 'shy, nervous, fidgety, intellectual' describes me to a t. 1) (Terrified) I can’t wait! I can’t wait! We have to go! We have to go or we’re all going to die! 2) We should never have done this. I fear that what we started....should never have begun. 3) Somebody come quickly! It was him! It was Mannimarco! https://soundcloud.com/noahlange/sets/apprentice-va/s-yRuxb
  7. There's already a thread for this. And as a word of advice, before trying to nail down voice actors you'll probably want to demonstrate that you're actually working on something and that it isn't going to be vaporware. I doubt people are going to be inclined to work on something that doesn't exist yet. http://forums.nexusmods.com/index.php?/topic/269957-post-here-if-you-need-voice-actors-for-mods-or-if-youd-offer-your-voice/
  8. Just crack open the GECK, man. Find the records for these character's NPCs and check the 'use as FaceGen preset' checkbox.
  9. I don't have enough experience with NVSE or the GECK (to be honest) to give a great assessment of the difficulties inimplementing this. I was talking with my roommate and while fighting alongside Boone, he mentioned how useful it would be to mark / target / spot enemies for your allies. I made a mockup of the idea. http://i.imgur.com/np4QRoPl.png Partly the aspect of having enemies marked on the worldspace, but also prioritizing for allies. Having the marks enter onto a queue for extermination would make companion combat a hell of a lot more interesting. So yeah. I don't know how hard this would be, but it's something that would be a fantastic addition to New Vegas. EDIT: I did some NVSE research and created a theoretically-almost-functional prototype for a marker script. scn targetSpotter array_var targetArray array_var followerArray int spotKey = 45 int actorREFCount int actorREF let targetArray := ar_construct ref let followerArray := ar_construct ref begin gamemode set actorREFCount to GetNumRefs 200 2 set actorREF to GetFirstREF 200 2 while actorREFCount > 0 set actorREF to getNextRef if (actorREF.getPlayerTeammate) ar_Append followerArray actorREF endif set actorREFCount -= 1 loop if IsKeyPressed(spotKey) ar_Append targetArray Player.GetCrosshairRef endif while player.IsInCombat if IsKeyPressed(spotKey) ar_Append targetArray Player.GetCrosshairRef endif foreach targetArray ; draw the death cone above targets... not sure the best way to do this if GetDead(item["value"]) ar_Erase targetArray item endif loop foreach followerArray item.StartCombat targetArray[0] loop loop endThere are a few issues right off the bat -This is probably not the most efficient way of collecting teammate refs in the world.I don't know the best way to draw a cone above targets. Not sure if sprite plotting is possible, or if creating clones of an inverted 3D cone would be the way to go.I hate myself for including the 'if keypress' code twice, but I'm fairly sure that not doing that would preclude the user either from selecting new targets during combat or from selecting targets outside of combat.If someone would be willing to adopt this script or help me with it, I'd be super-grateful.
  10. Nope, you'll need to download the GECK, make a new ESP and then under the NPC record for the NPC you want to edit, mark that option on the left pane.
  11. Alternately, you can toggle the 'use as FaceGen preset' for the NPC whose face you want to use.
  12. This should work. http://www.nexusmods.com/newvegas/mods/55294/
  13. It's a single-shot, lever action pistol. I don't know if you could use a lever-action animation for it, though it would be pretty great. Fires the .303 British, probably the closest the game is .308.
  14. Well heck, I'm a halfway decent texture artist. You get a mesh together, I'll take a whack at a texture.
  15. I'd recommend downloading BOSS first and trying to resolve any load order conflicts you might have. http://boss-developers.github.io/
  16. Having some issues with the AI travel package. Basically I want this companion to leave the player (adopt this package) when the player is sleeping and they've gotten past a certain point in the quest. Here's the script for the character's quest. ScriptName MerrittDialogueScript int bMerrittContinue int bMerrittHasMet int bMerrittOutOfTown float fMerrittFirstJobStart begin GameMode if MerrittREF.HasBeenHired && bMerrittContinue == 0 if nVPrimmDeputyConv.BeagleCaptured >= 1 MerrittREF.StartConversation Player vMerrittDialogueMerrittTopic018 ; throw into result script for vMerrittDialogueMerrittTopic018 set bMerrittContinue to 1 endif endif if MerrittREF.HasFirstJob == 0 && IsPCSleeping && bMerrittContinue Set MerrittREF.Waiting to 0 Set MerrittREF.L38 to 0 Set MerrittREF.IsFollowingDefault to 0 Set MerrittREF.IsFollowingLong to 0 Set MerrittREF.HasFirstJob to 1 MerrittREF.evp ; Give the player a letter so they don't think I messed up and ; figure out the day so Merritt can come back the day after. player.addItem MerrittFirstJobLetter 1 Set fMerrittFirstJobStart to GameDaysPassed endif if MerrittREF.HasFirstJob && GameDaysPassed == fMerrittFirstJobStart + 1.0 ; Merritt comes back. Set MerrittREF.IsFollowingDefault to 1 set MerrittREF.HasFirstJob to 2 MerrittREF.evp endif end And per GrayFox's tutorial, here's my object script for the character reference. VMerrittTimer is just barks. scn MerrittScript short HasBeenHired short L38 short DoOnce int CombatStyleRanged int CombatStyleMelee int IsFollowingDefault int IsFollowingLong int FollowerSwitchAggressive int Waiting int HasFirstJob Begin GameMode If (DoOnce != 1) Set HasBeenHired to 0 Set L38 to 0 Set CombatStyleRanged to 1 Set CombatStyleMelee to 0 Set IsFollowingDefault to 0 Set IsFollowingLong to 0 Set FollowerSwitchAggressive to 0 Set Waiting to 0 Set HasFirstJob to 0 Set DoOnce to 1 EndIf If HasBeenHired StartQuest VMerrittTimer Endif End Begin OnDeath ShowMessage FollowerMessageDeadMerritt EndFor the travel block I have one condition, HasFirstJob == 1. I would like for when the character is sleeping (IsPCSleeping), the player has asked the character to stick with them (bMerrittContinue), and the character has not yet left (HasFirstJob == 0), for the other character states to be deactivated, and the character to be sent off. But instead he runs off the moment he joins the party. I've checked the result scripts and nothing touches HasFirstJob and moreover, it's not triggering the AddItem in the companion script. He just gets up and leaves. So either there's something triggering HasFirstJob that I'm unaware of--unlikely, since I just added it and was very conscious of what I did and did not do, but possible--or there's some aspect of package evaluation and conditions that I'm not aware of. Anyway, would really appreciate any advice.
  17. Thanks! Pretty depressing it doesn't work whenever a dialogue topic is executed, but at least I now know what I was doing wrong! Cheers.
  18. ScriptName MerrittDialogueScript begin GameMode if MerrittREF.GetPlayerTeammate if (GetObjectiveCompleted nVPrimmDeputyConv 20) MerrittREF.StartConversation Player vMerrittDialogueMerrittTopic018 endif endif endWriting a new companion. I'm intending for it to check for some quest objectives once the player talks to Johnson Nash about having cleared out the Bison Steve. Not running, the issue appears to be with the "Begin SayToDone" block. I'm getting back into modding after a long absence, so if anyone has some advice, it'd be greatly appreciated. EDIT: Rewrote a chunk of it and it's working at the moment, but I'd rather use a SayToDone instead of a GameMode for performance reasons. Any ideas as to what traditionally causes a syntax error with the SayToDone block would be greatly appreciated. I'd like to use this instead, but it's not working. ScriptName MerrittDialogueScript begin SayToDone JNashHowLaw if MerrittREF.GetPlayerTeammate if GetObjectiveCompleted nVPrimmDeputyConv 20 MerrittREF.StartConversation Player vMerrittDialogueMerrittTopic018 endif endif end
  19. There's an onDeath block you can use in a character script. Don't quite remember the syntax for quest stages, but that's what you'll want to use, probably along with a check to make sure the stage isn't greater than 30, etc.
  20. Yes, it means your code isn't right. For the purposes of this thought experiment, "set QUESTNAME.SQMetHulme to 1" is what you're looking for. Make sure the quest variable is initialized in the quest script, and you should be good to go.
  21. Well, I'd double check your quest variables are actually being set in both instances. Display it in a message (cf. video). Make sure you've compiled your result scripts. From what you've said, it looks like you're doing everything right, so I'm not sure what else one would do. If all else fails, upload your .esp and I'd be happy to take a look at it.
  22. Alternately, there's RefId.startCombat player for all of your player-hatin' needs. Not sure which method is more standard.
×
×
  • Create New...