Aller au contenu

Photo

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


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

#376
Tchos

Tchos
  • Members
  • 5 080 messages
@Shaughn: I'm looking to separate certain already-compounded models, not join them.

#377
Tchos

Tchos
  • Members
  • 5 080 messages
Eguintir responded very promptly to my email, and gave permission to use those instruments, as well as possibly others!

So I finished the music shop, and added the shopkeepers. Aldanon the Sage makes a fairly decent Väinämöinen, who sells the magical bard equipment. Joukahainen, not being as talented in the singing department, sells the more skald-like style of bard equipment. Building the shops for the two of them took more time than I would have liked, and a search for themed prefab stores on the Vault was unfruitful. Bonus Blueprints comes with a good selection of them, but didn't seem to have any that specialised in bard gear.

Image IPB Image IPB Image IPB

Joukahainen also is going to offer a melancholy quest. Maybe I shouldn't have decided to add another side quest, but it was just the perfect opportunity. I've put in the skeleton of it, but I have to stop for the day.  It occurs to me that there should be some contrasting lighting by the wares display in the 3rd pic, too, so I'll fix that later.

Modifié par Tchos, 11 août 2012 - 01:31 .


#378
Tchos

Tchos
  • Members
  • 5 080 messages
The past couple of days have been minimally productive due to the usual weekly P&P session and birthday celebrations. What I did was to write most of the other two quests -- "Song of Aino (You Were Loved)" and "My Love is Vengeance" -- which touch on some strong emotional themes. Well, I found them moving, at least. Your mileage may vary.

The only other news at the moment is that Eguintir Eligard and I have made an informal collaborative agreement in regard to creating new placeables that can be of use to both of our projects, wherein he provides the meshes, and I texture them. I just received several such meshes today, including a versatile plane of the kind I had wanted before, in two orientations, and a singular potion bottle. Others are planned. So I guess there'll be a somewhat more substantial placeable pack than I was expecting to be released. I'll show these once I've textured them.

#379
Dorateen

Dorateen
  • Members
  • 477 messages

Tchos wrote...

 "My Love is Vengeance" --


Behind Blue Eyes?

Nice.

#380
Tchos

Tchos
  • Members
  • 5 080 messages
Yes, and I did that just after saying that I didn't use songs as inspiration while building.  :)  Both of the titles mentioned above are song references (of very different genres), and there's at least one other, too.  But only references as far as the titles go, and not the themes of the songs.  For instance, this quest is not focused on the perspective of a sympathetic villain.  But it does involve love and vengeance.  :)

In other news, new page placeable:
Image IPB

#381
Dann-J

Dann-J
  • Members
  • 3 161 messages
Either my latin is rusty, or the author of that page just insulted my mother...

#382
Tchos

Tchos
  • Members
  • 5 080 messages
Heh, for the curious, it's a page from Magia Naturalis, book 1, by Giambattista della Porta (1558). The original page scan is very clean, though, and this is an aged modification of it.

#383
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
That's a good idea for wanted posters.

#384
Tchos

Tchos
  • Members
  • 5 080 messages
Wanted posters are another thing I had in mind for it.  The question is, should it be readable at all, or be printed in a fake font, to make it as broadly usable as possible, with a nondescript sketch of someone's face?  Maybe only the word "wanted" should be readable, and the rest just gibberish. 

Maybe it should include things like this handout from Baltron's Beacon: http://dc166.4shared.com/doc/Uo_Gx3lY/preview005.png  How many other handouts are there like that from other P&P modules or supplements?

#385
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
I think just printed in a strange language with the wanted bit readable and a dodgy picture or none at all for the basement rat clearing quests. Then you could have notice boards like the witcher and players could choose side quests ( getting full details when they examine the poster and a quest after destroying it ) only visiting the npc on completion or if they missed the notice the npc could still ask if they came about it to cover both bases.

Failing that they'd still be a really good addition to all city and tavern walls.

#386
Tchos

Tchos
  • Members
  • 5 080 messages
@Tsongo: There is a placeable made specifically to use as a quest/job board as in the Witcher, in the Exotic Dream Placeables pack, though it's true it would lack the kind of interactivity and visual change that you propose, and also the board has a very specific design, that might seem out of place in certain areas, but on the other hand its distinctiveness would make it easily recognisable as a job board.

The day's work and obstacles:

For a conversation, I wanted to include a special option for if there's a ranger in the party with fey as a favoured enemy, along with other more general special options. I looked through the available scripts, and didn't find any, either searching for "favoured" or "favored", though I could have sworn I saw a check for something like that once. I also searched on the Vault script sections for both NWN1 and 2. Lastly, I went to Lilac Soul's Script Generator, and chose an option that I'd almost never had occasion to use before, that being the starting conditional. It informed me that what I needed to do was just check for the constant of a feat, since all of the favoured enemy choices are individually numbered feats.

So I ended up just making a new gc_ script that's essentially the same as the "check feat" script, except that it's named for what I want to check (easier to find) and it has a list of all the possible favoured enemies right there in the script comments, where the usual feat-checking script refers you to a larger include file.

Next task was a condition to see if the player speaker is neutral on either of the axes. That seems to be more complicated than it should be. For now, I'm going with a check for "not good" and "not evil", or "not lawful" and "not chaotic", and see if those work. The disadvantage is that true neutral characters will probably see the dialogue option twice if I use the standard check scripts, since they don't handle compound ANDs and ORs.

This is also one of the conversations where I'm including the ability for player-created party members to discuss a course of action amongst themselves. It's in a fairly limited fashion, but since different party members will have different options available to them based on their class, alignment, feats, etc., a typical well-rounded party would likely have some conflicting motivations. There is an opportunity to be evil here, if the player wishes.

One problem, due to the aforementioned options and conditions, is that certain combinations, such as a lawful evil character, may propose doing something evil, and then be able to gainsay him/herself by pointing out that such an action would not be right.

Next I needed to decide between spawning and destroying a creature, or using the "script hidden" property I'd never used before. I decided to try spawning the creature as script hidden, and changing it with a script. Then I found that I was wrong about being able to make anything usable. Apparently trees don't work that way. So I opted for a speak trigger to start things running, where I had intended the player click on the tree to do so. Perhaps it's just as well, though, because I think the description of the tree is an important prelude to the quest, and the player could easily have missed the opportunity to examine the tree, whereas now I'm having the description in the popup DM text window instead. Still, it's an "ambush" style forced conversation, which I don't prefer.

It turns out it was more straightforward to spawn the creature when needed, rather than spawning script hidden. I did cache the creatures who'll be spawned, though, to avoid a stutter on spawn. As a kill quest, it was pretty straightforward to set up, and simple in execution. As is usual in cases like this, it's the writing and story that surround the quest that I intend as the point of interest in playing it, and not the mechanics involved. That's for other quests.

It's possible, though only barely possible, to miss this quest altogether. It's perhaps easier to miss quests back in town, though, because they're mostly inside the dozen-odd individual shops, and there are only two buildings in town that you actually have to enter in order to finish the main quest. This module rewards exploring.

I'm again bothered by how quickly the fights are over, and how little damage is taken by the party.

I'm sort of sad that I never really got to make use of the quest-maker plugins, because by the time I had learned enough to understand how to use them effectively, I had learned enough that I didn't need them in the first place. I would have liked a little more of a honeymoon period. I suppose that's why there aren't very many beginner's utilities out there for this game.

I know there's some built-in functionality in the default scripts to have a creature bark a one-liner when it sees the player and starts attacking, but I can't seem to find documentation on how to use it.

#387
Dann-J

Dann-J
  • Members
  • 3 161 messages
One way to make trees (or anything) interactable is to use a collision box or collision ball. They're invisible, but you can use them like any usable object (give them a conversation, set them to examine, attach an OnUse script, etc). I used them to allow the player to gather peaches and grapes in Isle of Shrines.

The potential downside is that they don't glow when you hit the Z key, so you won't know they're usable unless you hunt around with the cursor. That's not necessarily a bad thing though.

Modifié par DannJ, 14 août 2012 - 10:39 .


#388
Tchos

Tchos
  • Members
  • 5 080 messages
The lack of highlighting is the reason I've never gone with that method. It would have been important in this case that you be able to see the highlight, because it's a pretty dense forest and no previous trees had been usable. I nearly had to use the invisible item method back on my Dragon Age module due to an object's collision box covering up the usable item, but fortunately it never came to that.

#389
kevL

kevL
  • Members
  • 4 075 messages
honestly, I've been playing for the last year with the Z/tab key completely disabled. If i want to scour a room I hunt around with the cursor, and yes i miss things. Then find them ... for me, it's a lot more immersive,

i Guess checks could be done against Search or Spot to bring a chat-notice to the player .....

#390
Dann-J

Dann-J
  • Members
  • 3 161 messages
A really noticable placeable effect around the tree in question might help draw attention to it. A more subtle effect, like falling leaves or a sunbeam, might also do the trick. Or you could make it only one specimen of a certain species in a forest dominated by other species.

KevL's idea of a trigger that makes a search/spot check is also good. I'm increasingly using hidden items in my modules that don't glow at all when the Z key is used, only making them usable if you pass a search/track check when within the specified search radius.

You don't want to pander to lazy players *too* much.

#391
Tchos

Tchos
  • Members
  • 5 080 messages
All of those are good possibilities, which I'll keep in mind for other such situations, although I don't have any plans to thwart usage of the Z key unless I'm trying to hide a secret door or something.

I actually have a trail of "breadcrumbs" leading to this tree. I placed a lootable body near the pathway up to the ledge, to make it easier to find the place, and there are some conspicuous placeables around the tree that should invite further investigation, which are explained in the conversation and DM popup text, so it shouldn't need any spot/survival checks in this case. Furthermore, one of the instances of a quest item that the player should be searching for is located right next to the tree. It's also the only oak tree in the area, but I have a hard time telling it apart from the other trees, myself.

The only reason you might still miss it is because I placed one extra copy of the quest item in the forest, so that players don't get too frustrated in trying to find them, so they might find all of the other ones and miss that one. And the Z key is almost required to find these things, too, because I tinted them to blend in very well with their surroundings. Of course, if you're good at scanning the screen with your mouse, then you can find them that way, too.

#392
Tchos

Tchos
  • Members
  • 5 080 messages
With the yearly events now behind me, it is time for more...experiments.

I had a little problem with a death script, which I based on nw_c2_bossdie, an older script from 2001, but seems to work fine, for the most part. I use scripts like this for generating random treasure on tough fights, and updating journals and such. The problem, which hadn't happened previously, was that it upon killing it, the treasure was generated on the PC rather than on the creature. The script passed the PC through the script "to determine treasure", it said, but I crawled through the referenced functions, and determined that there was really no reason to mention the PC at all, because the treasure generating functions are only supposed to consider the PC if the treasure is being generated on an object. If it's on a creature, then the creature's type and level is the only thing that should determine the treasure. So I removed the reference to the PC in the death script, and left both of the parameters at their defaults of OBJECT_SELF. That fixed the problem.

"Script hidden" was not the best way to have the dryad emerge from and return to her tree. I already mentioned I used a normal spawn to bring her in, but at the end of the quest I tried using script hidden to make her despawn, thinking she would fade away smoothly. Instead, she just abruptly vanishes. I looked around, and didn't find any general purpose "despawn" scripts, but eventually found the ga_force_exit script, and that worked very nicely. I specified her original spawn point, and it made it look like she was re-merging with her tree.

I'm very happy with the way the dryad quest turned out, but I'm speaking as the sort of person who really enjoys playing a good character. I don't know if my evil options will appeal as much to an evil character, because I don't enjoy playing that way, and I would hate to see someone actually take these actions. But the options are there.

All the same, I think in future modules, I can improve things further with a denser packing of quest content into each area. Some of my areas are involved in up to three simultaneous quests, but others have only one. The size of the area matters, of course. But I love areas that have a lot of things to do and see, and a lot of interactions, with a good variety in quest types.

#393
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...

I don't know if my evil options will appeal as much to an evil character, because I don't enjoy playing that way, and I would hate to see someone actually take these actions.

:devil:

#394
Tchos

Tchos
  • Members
  • 5 080 messages
Well, I guess I know who to ask about whether those options are satisfactory.

#395
Tchos

Tchos
  • Members
  • 5 080 messages
Today I worked on an "event" at the climax of a quest. Again, the sort of thing that would ordinarily be handled by a cutscene, but which I'm doing in the freeform style as before. Also needed to import another icon for a quest item related to this event.

The player must drink a special potion while within a certain proximity to a certain spot. At first I was going to try to use a trigger, and check to see if the player was standing in the trigger, but I didn't know how to do that without setting a variable, which seemed clumsy for this task. Since I had learned about this other command recently, I opted to use the GetDistanceToObject() function on the item's tag-based activation.

Well, that didn't work, and I'm not sure why, but I'm guessing it's because it's checking the distance between the potion and the marker instead of the PC and the marker. That shouldn't make a difference, since the location of the PC should be the same as the location of the potion in the PC's inventory, but I switched it to use GetDistanceBetween() instead, which compares two specific objects, one of which I defined as the PC.

That didn't work either, and after I put in some debug text to find out what was going on, I was getting a distance of 0.0f, which the docs said would happen if one of the objects was invalid. I rechecked my tags, and all seemed fine.

Eventually the bit about environmental objects and objects with 0 HP not working with scripts came back to me, and I checked the object I had chosen as the marker. It was an environmental object. Fixed that, and the script worked...but with another problem.

Somehow, it was getting a valid distance between me and the target even when I wasn't even in the same area. I used my debug text and was actually able to home in on the hotspot by watching the distance report get smaller and smaller until it reached the necessary proximity to fire the script, even though I was in a different area (Questland), and there weren't even any placeables around. So I determined that I needed to add a check to the script to see if the player is in the correct area first. That fixed it, but I wonder why it happened.

I had a lot of trouble staying focused today, unless you count spending hours reading forum posts. The necessity of opening problem areas many times compounded this lack of focus, because the toolset crashed at least a dozen times during my troubleshooting and testing efforts.

After adding that check, I needed to script a light on and off. Luckily, I had just read something on the forums about lights not being scriptable as easily as one would expect, due to losing their tags somehow during saving or loading. I found the workaround, and the light switching on and off works fine with GetNearestObject(OBJECT_TYPE_LIGHT,oTarget);.

I learned today that setting the plot flag on a chest or a door, which I had been doing to prevent them from being accidentally destroyed by AoE, prevents them from being unlocked with the Knock spell. That's undesired behaviour. I'll revise the problematic items by giving them ample hit points instead.

Next I needed to change the music during the event, and change it back afterward. I found the necessary commands (save, restore, set, start, and stop) in the ginc_sound include file, and imported the needed custom track. I'll have to stop there for the day, though, and script it into the event later.

#396
kamal_

kamal_
  • Members
  • 5 260 messages

Tchos wrote...

Today I worked on an "event" at the climax of a quest. Again, the sort of thing that would ordinarily be handled by a cutscene, but which I'm doing in the freeform style as before. Also needed to import another icon for a quest item related to this event.

The player must drink a special potion while within a certain proximity to a certain spot. At first I was going to try to use a trigger, and check to see if the player was standing in the trigger, but I didn't know how to do that without setting a variable, which seemed clumsy for this task. Since I had learned about this other command recently, I opted to use the GetDistanceToObject() function on the item's tag-based activation.

Well, that didn't work, and I'm not sure why, but I'm guessing it's because it's checking the distance between the potion and the marker instead of the PC and the marker. That shouldn't make a difference, since the location of the PC should be the same as the location of the potion in the PC's inventory, but I switched it to use GetDistanceBetween() instead, which compares two specific objects, one of which I defined as the PC.

That didn't work either, and after I put in some debug text to find out what was going on, I was getting a distance of 0.0f, which the docs said would happen if one of the objects was invalid. I rechecked my tags, and all seemed fine.

Eventually the bit about environmental objects and objects with 0 HP not working with scripts came back to me, and I checked the object I had chosen as the marker. It was an environmental object. Fixed that, and the script worked...but with another problem.

Somehow, it was getting a valid distance between me and the target even when I wasn't even in the same area. I used my debug text and was actually able to home in on the hotspot by watching the distance report get smaller and smaller until it reached the necessary proximity to fire the script, even though I was in a different area (Questland), and there weren't even any placeables around. So I determined that I needed to add a check to the script to see if the player is in the correct area first. That fixed it, but I wonder why it happened.

I had a lot of trouble staying focused today, unless you count spending hours reading forum posts. The necessity of opening problem areas many times compounded this lack of focus, because the toolset crashed at least a dozen times during my troubleshooting and testing efforts.

After adding that check, I needed to script a light on and off. Luckily, I had just read something on the forums about lights not being scriptable as easily as one would expect, due to losing their tags somehow during saving or loading. I found the workaround, and the light switching on and off works fine with GetNearestObject(OBJECT_TYPE_LIGHT,oTarget);.

I learned today that setting the plot flag on a chest or a door, which I had been doing to prevent them from being accidentally destroyed by AoE, prevents them from being unlocked with the Knock spell. That's undesired behaviour. I'll revise the problematic items by giving them ample hit points instead.

Next I needed to change the music during the event, and change it back afterward. I found the necessary commands (save, restore, set, start, and stop) in the ginc_sound include file, and imported the needed custom track. I'll have to stop there for the day, though, and script it into the event later.

You can just give your chests a silly high amount of hitpoints.

As for detecting, there are stock functions to detect in ranges and in triggers. I'd have to dig it up, but I'm using that code myself.

It's impossible to constantly be focused, we're human.:alien:

#397
Tchos

Tchos
  • Members
  • 5 080 messages
Okay, I'm always interested to know other ways of accomplishing things.  This is the way I did it:

string sCurrentArea = GetTag(GetArea(oPC));
object oHotspot =     GetObjectByTag("plc_ml_fountain_arcane");
float fHotspot    =    GetDistanceBetween(oHotspot, oPC);
// A distance of 0.0f is reported if an object is invalid.  
// 6.0m is the distance from the arcane nexus to the first bone pile you encounter.
if ((fHotspot > 6.2) || (fHotspot == 0.0))
{
    AssignCommand(oPC, SpeakString("You must drink this potion near the arcane nexus in the Ruins of Linanoroc."));
    return;
}

Modifié par Tchos, 18 août 2012 - 01:06 .


#398
kamal_

kamal_
  • Members
  • 5 260 messages
The two functions for a range are
GetFirstObjectInShape
GetNextObjectInShape
with SHAPE_SPHERE (since this give you a circle of radius x)

to get objects in triggers, use
GetFirstInPersistentObject
GetNextInPersistentObject

I can't find my examples, but the usage is fairly straightforward and judging by the coding bits you've shown I wouldn't expect you to have any significant trouble with them.

#399
Tchos

Tchos
  • Members
  • 5 080 messages
Thanks, Kamal.  The GetFirstInPersistentObject command is probably what I wanted.

I forgot to mention, in regard to making wanted poster placeables -- I was looking for examples of actual historical wanted posters to see how they handled pictures, but I ran across this generator.  The font isn't very readable in most of it, but I'm sure there are some others out there.  This could be useful for anyone who wants a shortcut to creating a texture for the placeable from scratch.  I used one of the early character concept sketches from the NWN2 OC.

Image IPB

Yes, it occured to me too late that I made the reward amount far too low.

#400
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
Good poster ! I don't know about the price being too low, if one bottle of spirits costs 1gp and if here in England it costs £10 then that makes a £25000 reward which is quite repectable .. Then again elves are pretty rare in these parts so you could be right !