en:modulebuilding:generaladvices
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:modulebuilding:generaladvices [2025/11/13 00:09] – shadooow | en:modulebuilding:generaladvices [2025/11/16 23:50] (current) – shadooow | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Resrefs and tags ===== | ===== Resrefs and tags ===== | ||
| - | * tag and resref should match unless it is specifically needed for scripting | + | Resrefs should start with two letters as a shortcut of its creator (so I am using " |
| - | * newly created blueprints and area gets default resref, to change it you need to make a copy of that blueprint/ | + | |
| + | Tag and resref should match unless it is specifically needed for scripting. | ||
| + | |||
| + | Newly created blueprints and area gets default resref, to change it you need to make a copy of that blueprint/ | ||
| + | |||
| + | There is no need to change tag of ordinary placeables you place into area unless you want to do something special with them via scripting. Unordinary placeables like treasures needs unique tag though. | ||
| + | |||
| + | ===== Object Names ===== | ||
| + | |||
| + | Never change a Door and Trap names, the name is visible to player if they attack it or get damaged by it. There is no reason to change area transition name either, although that is not visible to player at all. | ||
| + | |||
| + | Creature and item names should be upper cased (in English at least). | ||
| ===== Base Area Settings ===== | ===== Base Area Settings ===== | ||
| Line 12: | Line 23: | ||
| **// | **// | ||
| **// | **// | ||
| + | |||
| + | Area tag should match resref. Exceptions are when you have multiple variants of same area, then they should share same tag so they count towards number of visited areas just once. | ||
| ==== Area Transitions ==== | ==== Area Transitions ==== | ||
| Line 17: | Line 30: | ||
| * make sure that waypoints to which area transition leads is not inside area transition trigger back. This is common building error | * make sure that waypoints to which area transition leads is not inside area transition trigger back. This is common building error | ||
| * it is not needed to change tag of area transition triggers, don't do that | * it is not needed to change tag of area transition triggers, don't do that | ||
| + | * neither is needed to change tag of invisible doors if they are not linked **from** elsewhere (which for invisible door is not needed, read below) | ||
| * doors should be linked with doors otherwise they won't open from the other side, unless you want exactly that behavior | * doors should be linked with doors otherwise they won't open from the other side, unless you want exactly that behavior | ||
| * if the doors are leading to subarea with no return back link them to waypoint or use invisible door | * if the doors are leading to subarea with no return back link them to waypoint or use invisible door | ||
| + | |||
| + | ==== Area Variables ==== | ||
| + | |||
| + | * DUNGEON int 1 - set to 1 for areas that are part of a dungeon | ||
| + | * DARKAREA int 1 - set to 1 if exterior area, but dark; such area won't penalty ligh-vulnerable races | ||
| + | * UNDERDARK int 1 - marks the area as underdark (required for achievement) | ||
| + | * X3_MOUNT_OK_EXCEPTION int 1 - will allow to ride horses in the area | ||
| + | * NO_EXPLORATION int 1 - will not count the area towards number of areas visited (this is for system areas like Morgue or Realm of Souls) | ||
| + | * QUEST string quest_tag - area with this variable will update player' | ||
| + | * QUEST_CHECK int X - quest state number required for the quest to advance, will be 1 if not set | ||
| + | * QUEST_SET int X - new quest state number, will be 2 if not set | ||
| + | * SECRET_AREA int X - marks the area as " | ||
| + | * DISABLE_HINTS int 1 - disables dungeon hints (like "you can use grapple in this area") | ||
| + | * TICHO int 1 - applies a silence to every player entering this area | ||
| + | * KOUZLO_VSE int X - percentual chance of spell failure for all spells, typically 100 (other values are misleading imo) | ||
| + | * KOUZLO_Y int X - percentual chance of spell failure applied to specific spell of ID Y (see [[https:// | ||
| + | ==== Area Terrain Setting ==== | ||
| + | |||
| + | By default an area terrain is based on used tileset. For example tileset mines and caves will be treated as underground by default. But sometimes you want to change this or expand this, for example if the cave is flooded etc. | ||
| + | |||
| + | To do that, add a variable to the area: | ||
| + | * TERRAIN string terrain_list - this is list of terrains separated by comma (if more than one terrain is required) that overrides the default terrain type that is based on used | ||
| + | |||
| + | Keywords for the terrains are: | ||
| + | * AQUATIC | ||
| + | * DESERT | ||
| + | * FOREST | ||
| + | * JUNGLE | ||
| + | * MOUNTAINS | ||
| + | * PLAINS | ||
| + | * RUINS | ||
| + | * SWAMP | ||
| + | * UNDERGROUND | ||
| + | * URBAN | ||
| + | * ABYSSAL | ||
| + | * CELESTIAL | ||
| + | * COLD | ||
| + | * ETHEREAL | ||
| + | * SHADOW | ||
| + | |||
| + | So for example, if I want the area to be both of underground and aquatic terrain, I set variable: | ||
| + | * TERRAIN string AQUATIC, | ||
| ===== Creatures ===== | ===== Creatures ===== | ||
| - | Never use the creature wizard. If you want to make a creature, find a creature closes to what you want by strength or/and race and make a copy. That will allow you to set its resref. Creature wizard and level up wizard too tends to give NPC starting gear for its class and tons of useless feats. | + | Never use the creature wizard. If you want to make a creature, find a creature closes to what you want by strength or/and race and make a copy then adjust it. That will allow you to set its resref. Creature wizard and level up wizard too tends to give NPC starting gear for its class and tons of useless feats. |
| Since there is not an immunity to stun and since mind-spells immunity doesn' | Since there is not an immunity to stun and since mind-spells immunity doesn' | ||
| - | ===== Encounter Trigger Paining | + | Pre-placed NPCs in areas (merchants and other friendly NPCs in towns) that aren't supposed to move and roam should have their scripts cleared out like this to preserve server resources: |
| + | {{: | ||
| + | |||
| + | ===== Placeables ===== | ||
| + | |||
| + | Container placeables (various boxes and chests from base palette) should be static, unless they are supposed to contain loot. If they exist solely for the purpose of decoration just make them static. And if they mustn' | ||
| + | |||
| + | Placeables that are not supposed to respawn and that aren't static for a reasons (placeables with lights or animated ones mustn' | ||
| + | |||
| + | If you use Community Patch, then all chair-type placeables from vanilla palette should have a script to sit on them. If not, or if you choosed non-vanilla placeable and you want to make it sit-able, then put script named **// | ||
| + | |||
| + | Absolutely avoid using a tree canopy placeables. I absolutely hate them as a top-down player. They obstruct vision and do not tilefade. Which is a basic feature of NWN, but these placeables are missing it. This is not a roleplay server with focus on pretty areas with no other functionality but being beautiful. Also never place placeables into positions where they would block movement, unless you want to block movement on purpose (a blockade that needs to be destroyed). | ||
| + | |||
| + | ==== Placeable Flickering Workaround | ||
| + | |||
| + | This happens when multiple flat-type placeables like carpets or some floor-overriding ones are placed over each other. To avoid this, you need to make sure their Z position (right-click Adjust Location) isn't same. Make the second placeable to be at +0.01 Z, third at +0.02 Z etc., that should fix this. | ||
| + | |||
| + | ===== Exporting ===== | ||
| + | |||
| + | Lets say you made a bunch of creature blueprints to be spawned inside dungeon or outside of it, whatever. Now how do you export them all? Doing it one by one and appending to previous export is annoying. But there is a better way. If you are also exporting an area, then you make a vanilla encounter inside that area in a spot where no player can trigger it and put all the creatures you want to export into this encounter. Then save the area and export the area and it will automatically include all those creatures inside the encounter as well. If you do not export any area, then just create a new encounter blueprint, put all those creatures inside it and then right click on that encounter and select Export. | ||
| - | ... | + | On the contrary, creatures and items directly placed inside area will not be exported with area export!!! |
| + | The export will always also include all scripts and items that are in module used by all blueprints you exported and/or all objects inside areas you exported. That might be often unwanted because you didn't change any scripts for example. To avoid sending bloated ERF with files you never touched, you can open the *.erf file in nwhak.exe and delete those files externally. | ||
en/modulebuilding/generaladvices.1762992588.txt.gz · Last modified: 2025/11/13 00:09 by shadooow
