Aller au contenu

Photo

The Black Scourge of Candle Cove -- Tchos' development diary


  • Veuillez vous connecter pour répondre
1056 réponses à ce sujet

#676
Tchos

Tchos
  • Members
  • 5 086 messages
I imported Crystal Violet's placeable OC doors, though the misnomer is that they're not placeables, but environmental objects. The included blueprints were also apparently made pre-MotB, so the entries in the placeables.2da were all where MotB placeables need to be. I moved them all (there are 59) to the free spot where I've been putting all my own work, and reassigned all the proper appearances to the blueprints, and converted them to non-static usable placeables, with some standard values for doors (such as for traps) and being sure to include hit points so that they can actually be used and manipulated by scripts. Also added my own transition script to these new blueprints.

Also integrated Crystal's later door fixes to correct the normal maps of certain doors (I agree with her assessment of how the doors were intended to look) and the doors with windows on one side but not the others. To this I also included Heed's tint maps for standard interior doors 1-5, making certain of those doors useful, where before they were too ugly for me to consider using. This is all mainly convenience work for working with doors in the future.

I created another generic trigger script and blueprint, based off of my earlier quest-related generic trigger script, but this one instead functions as a rough replacement for the encounter system, which despite being rough suits my particular needs better. Later I can expand it to be more flexible, but at the moment it serves as either a spawn trigger (for up to 9 unique creatures, in any quantity), or a SpeakString trigger, or both, depending on which variables you fill in. In this case, I used it to spawn some creatures, and alert the player that they heard something.

I did some more touchups on the tavern and inn and the NPCs within, and elsewhere I also ended up moving a questgiver, since it didn't make much sense for him to be manning a reception counter, considering his rank. This required putting him in a chair, and by now I understood the system well enough to control his seated actions. I made a script, but I should also make an included function to perform this same task, which allows you to specify a character's animation, and also slow down that character's heartbeat to match a multiple of the length of the animation, to prevent obvious skips in the animation when the heartbeat fires again. By changing the variables on the NPC through scripts or conversation actions, you can change the NPC's custom animation and heartbeat at any time, which is useful for a character that moves around between quests or events, and may be engaged in different tasks.

Moving the questgiver does mean I need to create another small conversation for the new NPC manning the counter, though.

I did some more work on the starting area and the book that introduces the player to the module and the game world. While in the starting area, which is a room at the inn, the player has the opportunity to rest and prepare spells before setting out, preferably by clicking on a bed. I say preferably, because although you can also do it with the normal resting command, the message box refers to setting up "camp", which you wouldn't do in an inn. But it was either that or getting an inappropriate "resting is not allowed here" message. I know there's a way to customise that message box, but I haven't looked into it.

There are no storage containers in the starting rooms, since the player will never go back to it, but storage is available at both the inn and the tavern.

#677
Tchos

Tchos
  • Members
  • 5 086 messages
I filled out some more of the conversations that had been on the backburner, and completed a couple of other cosmetic items on the to-do list. One of these conversations was the minimalistic clerk at the merchants' league HQ, and another was a node for the tavern, because the tavern doesn't offer rooms for rent -- only the inn does.

I use a single conversation for all innkeepers and bartenders (which amounts to only two in this release), with individualised content using both custom tokens and conditional nodes.

Anyone who opens up this campaign to examine my work will find quite a patchwork of different methods for accomplishing tasks being used all over the place. Sometimes this is because I start out with one method, and find later that I need to expand to a different method to accomplish other things, or that it's easier to do something a different way, or I simply discover a better method that I didn't know originally. In this case, I used custom tokens because it would have been more efficient that way if I had the 4 inns and taverns I had originally planned instead of the two. Since there are only two, it's more straightforward to just use conditional nodes.

I feel very silly about something, when I'm not sagging under the weight of so much unnecessarily lost time. Kamal, if you were trying to tell me this, and I was failing to understand, thank you for trying, at least. The troublesome docks walkmesh could have been dealt with in such a straightforward manner. I was going about it the wrong way entirely by trying to connect several dock-shaped walkmesh helpers to each other. Raising the ground underneath the docks is likewise unnecessary.

The way to do it is to paint the entire terrain under the docks as unwalkable, then place one single large walkmesh helper at the elevation of the docks which covers all of the dock's protrusions, and then cut out the non-dock parts with walkmesh cutters.

#678
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...
I feel very silly about something, when I'm not sagging under the weight of so much unnecessarily lost time. Kamal, if you were trying to tell me this, and I was failing to understand, thank you for trying, at least. The troublesome docks walkmesh could have been dealt with in such a straightforward manner. I was going about it the wrong way entirely by trying to connect several dock-shaped walkmesh helpers to each other. Raising the ground underneath the docks is likewise unnecessary.

The way to do it is to paint the entire terrain under the docks as unwalkable, then place one single large walkmesh helper at the elevation of the docks which covers all of the dock's protrusions, and then cut out the non-dock parts with walkmesh cutters.

That's one way, and it works cleanly for flat walking areas. I did the entire second to last area in Path of Evil that way, and half the last area. Someone else suggested it though, it was't the way I was talking about above though. :)

#679
Lance Botelle

Lance Botelle
  • Members
  • 1 480 messages
It's been a while since I last posted here due to personal issues, but I have quickly read over the last posts and hope the offering may be helpful:-

1) Signposts can have separate information for each pointer if you use invisible "collision box" placeables items to hover over each pointer. In fact, invisible "collision boxes" are very useful objects and I have used them in many places to resolve issues.

2) For "items" that I need the PC to have on them (plot) *after* the PC has found them, I make the game give them back to the PC if the item is left abandoned in an area when they "leave" the area in question - and inform the player that "essential items were gathered before leaving the area".

Hopefully, I will be able to keep up to date with the reading now on.

Lance.

#680
Tchos

Tchos
  • Members
  • 5 086 messages
Yes, I saw some good uses of the collision objects in the official campaigns, such as the arcane nexus in SoZ, which has a usable, named collision sphere around the placed effect so that it appears you're selecting the placed effect.

However, for the signposts, using separate arrows allows you to place more or fewer arrows on each side, depending on how many points of interest are in those directions. For instance, when I place a signpost prefab at a three-way intersection, I select and remove the arrows that would be pointing toward the wall.

I like that "essential items" exit script. That's a good solution, I think.

#681
Alupinu

Alupinu
  • Members
  • 528 messages
Well I do know that collision boxes are great for making magic bridges appear.:)

#682
Tchos

Tchos
  • Members
  • 5 086 messages
Bizarre trouble time. I did some more work on the docks, and went to test it out, only to find that several placeables and creatures were missing.

My first thought was insufficient memory, so I rebooted and tried again. No change.

My second thought was that I had hit some kind of object limit for a single area. I researched this possibility, but couldn't find any reference to such a thing.

Another thing in the back of my mind was that it had something to do with the fact that I had duplicated the whole module and campaign structure to make a non-module-specific basis for starting new mods, and I had reassigned the new module to use the new campaign. But I continued looking at other possibilities.

So to test whether I had hit too many objects, I restored the last two versions of the area, which had worked at last test. The objects and creatures were still missing.

I tried reduplicating the hak with its 2DAs. Still nothing.

I came to notice that the missing items were campaign-specific placeables and creatures that I had removed from the duplicated campaign folder.

I recopied the contents of the original campaign folder into the duplicated one, and tried again. Everything was back.

I double-checked in the campaign editor plugin, and the module still seemed to be set to use the correct folder. I reassociated the module with the correct campaign, restored the latest version of the area, and tried again with the duplicated folder removed. All fine.

Good. I didn't lose any work, aside from a few hours of troubleshooting.

So, back to the work I did. I needed to add a trigger to fire a conversation between NPCs again. It had been a while since I had done such a thing, and I wrote a custom script for it rather than using the generic one I made before, because it would make it easier to edit that way (the generic one would require opening the troublesome area to adjust local variables).

In testing, it didn't fire, and I thought it might be because of the length of the name of the dialogue file. I shortened it, and also saw that I had forgotten to set the NPCs to be able to speak to non-player-owned characters, despite having written myself a note to remember to do so in the script comments.

It still didn't fire the conversation. I added debugging lines to tell me before and after it issued the conversation command, and both of those showed up, but they didn't start talking! I've done this before, so I don't see why it's not working. I checked their On Conversation scripts and heartbeat scripts, and it all seems fine. So I guess I'll have to do it all through scripting SpeakStrings and no conversation file.

I did some more scripting, including adding a check to the generic trigger script to allow you to choose to destroy the trigger after it has done its job, to ease the load off of the computer in checking to see if an entering object is a PC or not, with all the foot traffic around there.

In the docks, I replaced about a dozen static doors with unusable non-static placeable doors with my script on them, so that in a future campaign patch after release I can activate them and link them to new interiors in a new campaign module.

#683
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
I like the idea of being able to add later via doors, very ingenious. I always put in the exits before I play test a module so I can leave my PC and party there and transition them when the next mod is made.

One thing that puzzles me though is why don't you just use a normal speak trigger instead of all this scripting ? So long as you set each line of conversation's listener and speaker bits and put it to multi use with a destroy in the conversation you have exactly the same thing without all the scripting. Should take about a minute from selecting trigger to completion.

If it's to happen at a certain time then spawn the NPC that "owns" the conversation set on the trigger after the event has happened and it will only fire then no matter how many dockers, peasants or times the rambling PC and party jump up and down on it.

#684
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...
My second thought was that I had hit some kind of object limit for a single area. I researched this possibility, but couldn't find any reference to such a thing.

fyi, there is an object limit for areas, and it's somewhere around 3250. Someone on the old bioboards tested it by placing one of the crossroad keep contruction stones (so a plainly textured simple rectangular box shape) in bunches until they couldn't load the level. 3000, would load, 3500, would fail 100% of the time.

Areas can also get corrupted somehow and work sometimes but crash on entry sometimes. That happened to a 2x3 tile house in my current mod. I used terracoppa to copy it, and the copy works fine now.

#685
Tchos

Tchos
  • Members
  • 5 086 messages
Tsongo:
When you say you put in the exits before playtesting, how are you handling it?

The reason I don't use a speak trigger in these cases is that the scripts in speak triggers are made for the NPC to begin a conversation with the PC, and that's not what I want to do.  In this case, I want a group of five NPCs to speak to each other, and not involve the PC at all.  Control is not taken away from the PC.  I don't force the PC to watch the conversation.  It's happening in barks as the PC passes by, and the PC may choose to stop and listen, or attempt to join in the conversation, or ignore it and move on.  At the end of their conversation, they go their separate ways.

I was once able to accomplish this with a dialogue file and a single line to activate it:

DelayCommand(1.0, AssignCommand(oSpeaker, ActionStartConversation(oListener1, "bark_docks_officer", FALSE, FALSE, TRUE, TRUE)));

or
AssignCommand(oSpeaker, ActionStartConversation(oListener1, "bark_docks_officer", FALSE, FALSE, TRUE, TRUE));

Where oSpeaker and oListener1 were defined earlier by their tags.

Kamal:
Thank you for that info.  I again lament the loss of that resource.  I probably would have found that information if it had been still online.

If I ever open this area again, I'll see if I can do a count of the number of objects, but with luck, I'll never have to open it again.  Anything else can be added or removed via script by the objects' tags.

Speaking of which, is there a simple way to check the tag of a selected object while in-game?  Or would I have to script a wand to take the tag of whatever my target is, and report it to me?  It would be faster, easier, and more convenient to do it that way, I think, than to try opening the area and checking directly.

#686
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...
Kamal:
Thank you for that info.  I again lament the loss of that resource.  I probably would have found that information if it had been still online.

If I ever open this area again, I'll see if I can do a count of the number of objects, but with luck, I'll never have to open it again.  Anything else can be added or removed via script by the objects' tags.

Speaking of which, is there a simple way to check the tag of a selected object while in-game?  Or would I have to script a wand to take the tag of whatever my target is, and report it to me?  It would be faster, easier, and more convenient to do it that way, I think, than to try opening the area and checking directly.

Here is the list of commands you can run from the console. I do not know what all of them do, nor does there seem to be a guide to what they do.
www.thieves-guild.net/forum/showthread.php

One of the toolbar plugins, powerbar I think, lets you view area statistics and see the total number of objects in an area, as well as broken down by type.

#687
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
Aha now I see why, you'd need a whole bunch of speak triggers to have a full conversation and that's a bit messy.

With putting in exits to other modules that haven't been built you just have whatever it is eg, area transition, conversation etc with all the start module scripts start waypoint tag etc in place ( just no module to go to ) and then when you use them without the next module existing nothing happens, but when you have that module made and in place a save game will take you straight into it when you use them.

For example put in an area transition that on click will start your barbarian backstabber module leave it there and if you ever make it you can go straight there fully equipped with your party so long as it's in the campaign editor thing too.

It is very rare for me to play my modules straight through from start to finish as they take too long and I only ever do it when they're complete, but this way I have the same gear same party same global ints and whatever else and just carry them straight through to the next mod when I make it. Change the start points ( move the waypoint ) and you can test area at a time if you want too.

#688
Tchos

Tchos
  • Members
  • 5 086 messages
Ah, so what you do is have a visible transition set to take a player to "Module 2", but when players click it, it does nothing. And then later you make it functional by creating the destination called "Module 2". I'm not sure if you're talking about doing this in a module that you're in the process of building and testing, or if you mean as I do, where you are releasing it this way, and will add another module to it later in such a way that saved games will still work with it. I can see that method being useful for building and testing, especially with the gear, variables, quest states, etc.

But if you mean to release it like that, then I wouldn't do that in my own work, since in my design philosophy there should be no objects that look manipulatable but are not, such as objects that highlight but do nothing or give no information, or a transition that doesn't take you anywhere. So any quest-related placeables that would perform a function at a certain stage in a quest must either give some kind of appropriate feedback if you're not currently at that quest stage, or better yet, cannot be used or highlighted until then.

For instance, if I have a quest that requires a small chunk broken off of a rock outside, then previously, when there was no reason for a character to pay attention to any of these common rocks, the rock would be unusable, and indistinguishable from static rocks (would not highlight or show a name). Once the NPC has informed the PC that there's something important about the rock, and pointed them to it, then I would make the rock usable.

This serves two purposes. First, the player is not given advance information about what objects may be important later. Second, the player does not waste any time trying to figure out what to do with this highlightable rock that doesn't do anything yet.

#689
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
Yes that's exactly it and I'm just doing it for building and testing but I like the idea of making unuseful things unusable, very clever indeed and it adds a very good touch of realism as let's face it the z key gets used quite a lot !

You could actually put a barkstring on useless "maybe to be used later" transitions straight after the load module part saying "who knows this may go somewhere one day" if you wanted to do that or an invisible way would be to make a campaign conversation with a node that only fired when the new campaign was loaded along with the missing module. Like the landlord of a tavern, put load up a save and talk to Freddy the Flagon in the module description and off you go, new quests and module await exactly the same band of heroes.

#690
Tchos

Tchos
  • Members
  • 5 086 messages
Yes, the conversation method I remember someone mentioning before as a possibility for this purpose. Maybe it was you? I saw Kaldor Silverwand used that method in the King's Festival campaign when linking it to its second module. What I'm not sure about is if you have a module conversation, but later put in a campaign conversation with the same name, would the campaign conversation override the module one? It seems like it should. That would be a way to do it.

So, today I wrote a few more ga_ wrapper scripts to test out the new doors. Certain placeable attributes didn't already have wrappers for changing them, such as "usable" and "name". Obviously, when I make the doors usable and link them to new locations, I want to rename them so that they'll display the name of the new interior, like "Entrance to Shady Den". SetDescription() already had a wrapper, so I didn't need to write one for that. I can use that for signs, which I'm preparing in the same way as the doors.

I tested the new doors in-game using these scripts through the console, and made the doors active, changed their display names, and linked them to interiors in the current module. I haven't tried making any transitions across modules yet, but if there's anything unusual about the process, I believe I should be able to handle it by editing the transition script attached to the doors.

Wrote a couple more scripts, and got the triggered scripted docks conversation going, with gestures and walking away. Still need to give them some animation once they get to their final locations, and it could probably use a few more lines before they walk away.

I investigated one of the other ways of tracking quest progress, from the OC. Personally, I still like doing it by checking and setting stages in the journal as much as possible, since that's what it's for, but I can see some reasons for doing it how the OC did it (at least in some cases), with global variables and a condition checker and action taker for each questgiver or quest. Still, using the journal seems less prone to error. And as I understand it, the journal is essentially just a set of specially-named local variables saved on the player object.

#691
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
I think it would override it from the campaign, you could always put it in the override to make sure you override.Image IPB

#692
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...

Yes, the conversation method I remember someone mentioning before as a possibility for this purpose. Maybe it was you? I saw Kaldor Silverwand used that method in the King's Festival campaign when linking it to its second module. What I'm not sure about is if you have a module conversation, but later put in a campaign conversation with the same name, would the campaign conversation override the module one? It seems like it should. That would be a way to do it.

The priority is hak first, campaign second, module third. To answer the specific question you can drop dialog files into the campaign and they override module level dialogs, even for saved games. I have done so.

In fact you should include an empty "patch hak" (technically, all hak files need at least one file in them) with your campaign for the convenience of players for patching after release. Players can download updated versions of the patch hak, and viola, their save games are patched. A few things can't be patched this way (namely area files), but anything you can fix with dialog or script can.
http://social.biowar...7/index/5622159

One thing I'd suggest is making sure all areas have at least a unique OnEnter or OnClientEnter script attached at release, even if the script does nothing. That way you have something you know can patch things in an area, and not have to rely on piggybacking a patch for something onto another script somewhere else.

I did a patch hak with Path of Evil, it works great. The OnEnter is my suggestion after not having that in Path of Evil. :unsure:

#693
Tchos

Tchos
  • Members
  • 5 086 messages
I've read the thread about the empty hak for future patches, and I suppose it makes sense to do it, just in case, though I'm loath to have more than one hak for a single-module campaign. The only files I have in my hak are 2DA files, and that's only because they don't seem to work in the campaign folder. Everything else is in the campaign folder, and if not for the 2DAs it could be a completely hak-free game.

So, the patch hak would be in case I have to add more lines to the placeables.2da file, or any of the 15 files I have in there. Not unlikely, given my heavy use of custom content.

#694
Tchos

Tchos
  • Members
  • 5 086 messages
This isn't strictly related to this module, since I don't have any plans to use this system just yet, but today I was compelled to investigate something that I had found interesting earlier, which was the ability to use input that a player types into the chat window to make things happen in the game. This "listening" system wasn't clearly documented in any way I could see in the scripts and functions available in the toolset, and I couldn't find any explanations or documentation in a web search either. But I picked apart the Dungeon Master creature, which is where I had seen it in use, and read through its scripts, testing a few things through trial and error until I figured out what it was doing and how I could use it.

Something like this may be in use in some module somewhere, but I wouldn't know where to look to find it. The purpose I have in mind is to have a hidden thing remain hidden, with no trace, until the player is near it, and says a magic word.

So, for instance, there's a wall. The player finds out in the course of the game that there's a hidden passage there, but it is warded against detection. But the player can learn that the words "open sesame" will open the secret passage. The player approaches the wall, types "open sesame" into the chat window, and the wall opens.

Or, the player finds a strange model town on a table in an attic. Having heard of what could be done in such a situation, the player approaches the model town and speaks the words "Betelgeuse, Betelgeuse, Betelgeuse", and a strange undead NPC is summoned.

It seems to require some spawn in conditions, and since Ipoints don't have spawn scripts, I had to use a creature. I'm not even sure if it's possible for a placeable to "listen". So I dropped in an immortal, unresponsive creature with the "Invisible Man" appearance, and put it somewhere out of the way, and set up its necessary scripts.

I also involved a trigger, and a placeable for this setup. I called them the Trigger, the Listener, and the Responder. The only purpose of the trigger is to tell the Listener to start listening.

I could probably do without the trigger if I set up the Listener's perception script instead. For that matter, I don't strictly need the Responder, if I build its functions into the Listener, which I assume should be possible, but this is how I have it functioning now.

For this demo, I selected a stuffed head as the Responder, and painted the trigger around it. There is no indication of anything out of the ordinary in the game when you approach it, but if you type any of the words/phrases I put into the script while you're close enough to the head (inside the trigger), it'll respond. If you're outside of the trigger and speak the words, nothing happens.

In most cases, you probably wouldn't want it to actually speak responses like I'm having it do here just to demonstrate different things happening with different words. I imagine you'd want to cause things to happen silently, or with some floating flavour text or something. Here, as an action for when you speak the proper magic words, I just threw on a special effect, but of course you can make anything you want happen.



#695
Lugaid of the Red Stripes

Lugaid of the Red Stripes
  • Members
  • 955 messages
Thanks for digging this stuff up, I'd tried to do it before by picking apart Sunjammer's VFX browser, but couldn't figure it out.

I was thinking about using it to command NPCs. I have my tactics scripts to play around with, but I guess you could also use it to summon barmaids or yell insults over castle walls. You seem to be focused on using it to interact with unusable objects, but also think about using it to interact with big, vague, amorphous things, like crowds, landscapes, or hidden creatures/spirits.

#696
Tchos

Tchos
  • Members
  • 5 086 messages
Yes, my only thought was to use it for objects, but you bring up some very interesting possibilities. Especially landscapes! I'd be interested in hearing more possible uses or ideas for it!

On reflection, I decided it would be better to move it to a new topic in the Scripting subforum, in the hopes that it might generate some discussion there.

http://social.biowar...ndex/15785783/1

Modifié par Tchos, 04 février 2013 - 12:02 .


#697
Lance Botelle

Lance Botelle
  • Members
  • 1 480 messages

Tchos wrote...

However, for the signposts, using separate arrows allows you to place more or fewer arrows on each side, depending on how many points of interest are in those directions. For instance, when I place a signpost prefab at a three-way intersection, I select and remove the arrows that would be pointing toward the wall.


Good point. I had not realised you were potentially using "less" than what was on the placeable. Now, I see what you mean. :)

Tchos wrote...

I've read the thread about the empty hak for future patches, and I suppose it makes sense to do it, just in case, though I'm loath to have more than one hak for a single-module campaign. The only files I have in my hak are 2DA files, and that's only because they don't seem to work in the campaign folder. Everything else is in the campaign folder, and if not for the 2DAs it could be a completely hak-free game.

So, the patch hak would be in case I have to add more lines to the placeables.2da file, or any of the 15 files I have in there. Not unlikely, given my heavy use of custom content.


As I was the one to offer the "empty hak" idea originally, then I feel as though I may be qualified to offer some extra advice here. I agree with you that the idea of the "empty hak" would not serve much pupose in NWN2, as we now have the campaign folder to help us out. (NWN1 did not have such.) Personally, like you, I will unlikely be using the "empty hak" unless there is any chance I intend to update a 2da file that is in it. Furthermore, many commonly ised 2da files work when placed in the campaign folder anyway, and so I would only recommend placing 2da's in a hak when they do not work (or need to be placed) into a hak in the first place. e.g. My placeables.2da works inside the campaign folder! So, even this 2da could be easily "updated" by overwriting the campaign version with a newer version if need be. I have found the following 2da files that I have altered are definitely required in a hak (in my own testing): ambientmusic, backgrounds, classes, doortypes, metatiles, nwn2_dieties, nwn2_tips, packages, ranges, tiles, tilesets and many iprp_****. All the other more common ones (inc placeables.2da) are working from within the campaign folder (and even within subfolders of the campaign folder).

Tchos wrote...

This isn't strictly related to this module, since I don't have any plans to use this system just yet, but today I was compelled to investigate something that I had found interesting earlier, which was the ability to use input that a player types into the chat window to make things happen in the game. This "listening" system wasn't clearly documented in any way I could see in the scripts and functions available in the toolset, and I couldn't find any explanations or documentation in a web search either. But I picked apart the Dungeon Master creature, which is where I had seen it in use, and read through its scripts, testing a few things through trial and error until I figured out what it was doing and how I could use it. <SNIP>


The system you are describing was more appropriately used in NWN1 when other GUI options were not available to us. And the real question here, is more about how you want your player to interact with the game. For instance, it is unusual for the player to use the "chat" function "out of the blue" nowadays in the hope of activating a speech or conversation of some kind. I have designed and used a system very much like you describe, but it has always been for NWN1. In NWN2, we have interactive GUIs to work with the player, and ensure the player is "playing" the game as expected (if that makes sense). The best solution is to bring up a GUI when the player is aware of all the facts about when and where to say a "phrase or word" to move the game forward. e.g. The PC learns that if they say "Pie and Chips" to the boar head in the hallway, then a secret door will open. Before they knew this, clicking on the boar's head would have done nothing (made non useable - or possibly do something if you wanted to). However, once they know about the boar's head, it is made useable and when clicked on offers the player a GUI which awaits the appropriate text.

Check out my tutorial on how to incorporate this sort of stuff ... you will never regret doing so, as it really does opens up a whole new world of inetresting gaming stuff if you can get to grips with it. Image IPB

EDIT: I have not checked this out, but maybe this has something based upon NWN1 coding for your original use of the "chat" facility. Also, possible this and this. Personally, however, I still think presenting the player with a GUI is the way to go. You can still then have the "placeable" object respond with appropriate speakstrings if you like - and the code can be made very generic/versatile.

Lance.


Alupinu wrote...

Well I do know that collision boxes are great for making magic bridges appear.:)



Hi Alupinu,

I used waypoints for that one. ;) It looks really effective when I tested it.

Lance.

Modifié par Lance Botelle, 07 février 2013 - 02:48 .


#698
Tchos

Tchos
  • Members
  • 5 086 messages
In these past days, I've worked on many small things that need to be done, crossing things off of my "to do" list.

On the recruitable companions, there is one thing that I couldn't find info on. In the NPC creation descriptions I've found, no one seems to mention the process of setting the NPC's deity, and the fact that the field in the NPC's properties is a type-in field rather than a list box of some kind gave me pause. But I went ahead and typed a god's name in there, and I saw on the in-game character sheet the appropriate god's icon appeared next to the name, so I guess that's how you're supposed to do it. This was important for the divine spellcasters that you can recruit.

I hooked up an important quest conversation and transition to the overland map -- that being the part where you can board the pirate ship. Then I turned to the ship battle itself.

I tried using my newer understanding of walkmeshes and the helpers to improve the shipboard battle scene, but I rediscovered a problem that had caused me to do it a particular way before -- that the walkable SoZ ship seems to have a wall around the entire thing that can't be breached by walkmesh helpers or placeable ramps, even where it looks like it should be down. That makes it unboardable without setting the whole thing to environmental and creating a new walkmesh. The ship's slightly tilted main deck, as well as the three levels with stairs on either side makes this difficult. I ended up switching it with Heed's walkable version of the Grey Ghost, which is a very similar ship in design, but with a slightly different colouration. It was still tricky to get it to work, but unlike with the other ship, it was not impossible. Thanks be to Heed for these invaluable resources!

I also experimented with Casadechrisso's Skins for All Races, which I should have tried much earlier.

Of course I also wrote several more scripts, and expanded existing ones. One is a replacement for the standard speak trigger script, set to trigger only at certain journal stages, and will not stop the party's actions on entering it unless the quest is at the appropriate stage where a dialogue actually needs to be initiated.

Another was an expansion of my idle animation heartbeat script that allows any number of animations to be specified, and randomly chosen between.

I fixed up the day/night cycle of the ship battle, and added appropriate visual and audio effects, and music.

Also, doors. I remember feeling very disappointed at one point when playing the OC, when I got the City Watch quest to investigate the Luskans on the Grey Ghost, and found that I could not actually go on the ship. Instead, all of the interactions took place on the docks near the ship. Having played Oblivion, which had quests that took place inside ships, and Thief 3, which had a very notable mission inside a ship, I was expecting something along those lines. I would think that Obsidian had originally intended us to be able to go inside, but had to scrap it for lack of time or resources -- much like the quest in Highcliff which was written as if it were taking place inside a tavern, but took place outside, suggesting Obsidian didn't have time to make the tavern interior.

So, I thought it would be best in that light not to scrap my ship interiors as the OC had done before me. I already had the ship interior tileset installed because of the captain's cabin area I had designed before, so I went ahead and made one.

#699
ColorsFade

ColorsFade
  • Members
  • 1 271 messages
I'm on page two... great journal. Considering doing one myself. Lots of info here!

#700
Tchos

Tchos
  • Members
  • 5 086 messages
More quest and conversation-related work. This is going to require some playtesting, because it grew pretty complicated.

I wish there were certain items with a gently swaying animation. Usually there's the opposite problem, such as trees swaying as if in the wind, where maybe there shouldn't be any, especially indoors. But inside a ship on the water, it would be nice to have, for instance, the placeable hanging lantern on a rope/chain (plc_mc_lantern03) swaying gently back and forth for better ambiance. Same for free-hanging ropes or chains, or other such items.

The floors in the RWS ship interior tileset have some strangeness about how they handle lighting, so I covered the floors with BCK II wooden floor tiles, which receive light correctly.

There was no really suitable wooden texture built into the BCK II floor tiles, so I installed Mokah's New Wooden Floor Texture for the E group (one of the tiles made for users to supply their own custom textures). This has a good texture, as well as a good tint map, allowing me to create a wooden floor with patches of algae. However, the normal map and specular map did not create an appropriate effect, so I made new ones. After that, it looked fine, though I would have preferred the texture seams to be along one of the gaps of the wooden planks, and I would have preferred the planks to be segmented lengthwise, because currently the planks are continuous along their entire length. Broken up with floor clutter, though, it's not too noticeable.

Image IPB

One bit of philosophy regarding my lighting -- if I'm taking the time to create lighting that evokes a particular mood (and using light to draw the eye to important places), what could quickly ruin that mood by washing out all of my lighting? A light spell, perhaps. Or an equipped torch. When would a player be tempted to use one of those things? When they can't see, of course. So, then, the player should never be left in so much darkness as to be tempted to break out the torch or light spell.

That's not to say there can't be dark places, of course, but there needs to be light visible beyond those dark patches.

There is, of course, the danger of players having light-emitting gear equipped, but at level 10, I would expect many players may eschew such gear for ones that have more enchantment slots free for other kinds of enchantments. At any rate, my readme file will suggest that players leave off any light-emitting gear, since they won't be needing it.

I was troubleshooting one of my companions, who wouldn't actually join the party when I give the command, and I found that the chief difference between this one and the one that worked was that this one had a last name. When I removed her last name, she joined properly.

Modifié par Tchos, 18 février 2013 - 08:42 .