1. SPS Accounts:
    Do you find yourself coming back time after time? Do you appreciate the ongoing hard work to keep this community focused and successful in its mission? Please consider supporting us by upgrading to an SPS Account. Besides the warm and fuzzy feeling that comes from supporting a good cause, you'll also get a significant number of ever-expanding perks and benefits on the site and the forums. Click here to find out more.
    Dismiss Notice
Dismiss Notice
You are currently viewing Boards o' Magick as a guest, but you can register an account here. Registration is fast, easy and free. Once registered you will have access to search the forums, create and respond to threads, PM other members, upload screenshots and access many other features unavailable to guests.

BoM cultivates a friendly and welcoming atmosphere. We have been aiming for quality over quantity with our forums from their inception, and believe that this distinction is truly tangible and valued by our members. We'd love to have you join us today!

(If you have any problems with the registration process or your account login, please contact us. If you've forgotten your username or password, click here.)

Neverwinter Nights Forum Update

Discussion in 'Game/SP News & Comments' started by NewsPro, Jun 26, 2002.

  1. NewsPro Gems: 30/31
    Latest gem: King's Tears


    Joined:
    May 19, 2015
    Messages:
    3,599
    Likes Received:
    0
    (Originally posted by Z-Layrex)

    Jay Watamaniuk, Community Manager

    Dragons: Yes, Dragons have breath weapons. I believe there are even screenshots out and about that show this. A breath weapon for a dragon is one of it's combat abilities and it may not be used during a specific combat. The fire breath weapon is the most impressive attack in the game in my opinion.

    Bob McCabe, Designer


    Henchman: The henchman were originally designed to need to be instructed on everything that they do, but that was switched to use a system of silents shouts (oxymoron!). This way, henchman are more intuitive and do not need to be so heavily managed. If you come up to a door and click on it, and get a "locked" message, the door is shouting to your henchman to attempt to unlock it. Tomi the Rogue then responds to the door outloud (so you can hear it), saying "Will do!" or somesuch. He should then fire a script that tells him to walk to that door and unlock it. If you are in combat, there is a random chance to his success. If you are not in combat, then Tomi will "Take 20" and automatically be successful. Of course, Tomi will tell you whether or not he can unlock the door by his initial assessment "No can do" or "Will do!" or whatever it is that he says.

    This is also the way that traps on the floor work. They will silently shout to your henchman, if he notices them, to tell the PC to "hold up" so that he can disarm it. Just like locks, he'll know whether or not he can do it beforehand, and doing it outside of combat will guarantee that, so long as it is within his skill range, it will be successful.Sometimes, the henchman will receive multiple commands, and this can affect things. When he does receive multiple commands, he will do whatever was the last thing he was told to do. For example, you walk to a door and click on it, and the door says locked. Tomi thinks to open the door, but as he moves to open the door, he realizes that he is too far away from you. So now he is moving to you, to make sure the distance is acceptable. Meanwhile, you click on the door once again and he moves to unlock it, but then he makes a spot check for an enemy and moves to attack. You should be getting feedback in most of these situations (i.e. Tomi makes a battle cry, or says will do, or so forth.), so you won't wonder what's going on. Hope this has helped!


    Jonathan Epp, Quality Assurance


    Local Variables: Local variables are set on specific objects. So 'val_1' on object 1 does not equal 'val_1' on object 2.If you need to use 'global' variables, set a local variable on the module object (use GetModule() to get the module object). For example: SetLocalInt(GetModule(), "val_1", 42);

    Though in your example of players talking to an NPC, you might just want to store the variables on the NPC. But it depends on what you're trying to do...


    Lights:

    Quote: Is there any way to change the light color of placeables such as torch brackets and other light sources?

    Not directly, that I know of. There is a sort of workaround though. First, turn off the placeable's normal illumination with SetPlaceableIllumination(oPlaceable, FALSE). Then, apply one of the Light visual effects to the placeable:
    ApplyEffectToObject(DURATION_TYPE_*, EffectVisualEffect(VFX_DUR_LIGHT_*), oPlaceable, 20.0)

    The duration can be permanent or temporary (DURATION_TYPE_PERMANENT, DURATION_TYPE_TEMPORARY), and there are a whole bunch of light constants you can use (just click the Constant button in the Script Editor to see the list). The number is the duration, but is only used if it is temporary.This might not work if the placeable object has the Static flag set (on the Basic tab of the Placeable Object Properties). I can't remember for sure, but you might want to make sure the Static flag is not set to be on the safe side.

    More:

    Quote: Is there a way to determine the tile vector within a script?

    Well, let's say I want to figure out what tile an NPC is on:

    vector vPosition = GetPosition(oTheNPC);

    A vector has three values - x, y and z. The z is unimportant to us, so let's ignore it. All the values are in meters. A tile is 10x10 meters. So if you divide the x and y values of a vector by 10, you have the tile grid position, which is what is needed for the tile color functions.

    vector vTile;
    vTile.x = vPosition.x / 10;
    vTile.y = vPosition.y / 10;

    The vector vTile now has the tile grid position, so it can be used in SetTileMainLightColor and SetTileSourceLightColor (after converting to a Location this is). I believe the rest has been covered above...
     
    Last edited by a moderator: Jan 4, 2018
Sorcerer's Place is a project run entirely by fans and for fans. Maintaining Sorcerer's Place and a stable environment for all our hosted sites requires a substantial amount of our time and funds on a regular basis, so please consider supporting us to keep the site up & running smoothly. Thank you!

Sorcerers.net is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to products on amazon.com, amazon.ca and amazon.co.uk. Amazon and the Amazon logo are trademarks of Amazon.com, Inc. or its affiliates.