Added: Danise Costilla - Date: 14.02.2022 02:34 - Views: 42087 - Clicks: 7403
This file is hosted at Morrowind Modding History, and is a complete guide to how to write and edit scripts in Morrowind. MSFD, 9th edition, still contains a few errors some inherited from the original Construction Set manualbut is otherwise generally correct and is the most comprehensive guide available.
When looking up a function in MSFD do read beyond the description and through its notes and comments, which contain valuable information. The addition of ", player" is simply ignored, and it does the same thing as "Activate" alone. AddSpell The note " creatures killed with curse spell effects on them cause Morrowind animation compilation other creatures of that type to have the same curse on them ": this has nothing to do with the creature being killed or the effect being of the Curse type.
Just like NPCs, abilities, diseases or curses added to a creature ID by dialogue or their local script will be added to any new instance of the creature. It will only pick up objects in the cell; does not check for objects in inventory. AiActivate doesn't work if you give a [reset] argument. As always only the first object found will be targeted, so the object needs to be unique and have "references persist" ticked if the AiActivate line is called in a compiled script note: Morrowind Code Patch feature "Scriptable potion use" lets you make a NPC drink a potion with the Equip function instead.
But keep in mind that when AiTravel is skipped by resting, the engine doesn't check path collision, so the NPC may be teleported to a spot where it's stuck like inside another NPC and where it may not acknowledge that it has reached its destination, or only after a delay or when the player reenters the cell. GetAiPackageDone normally only Morrowind animation compilation 1 for one frame, when the Ai function has been executed.
The [reset] argument of Ai functions is optional. If it is given with any value 0 or 1there are two effects for AiTravel. The second effect for AiTravel is that in cells without pathgrids, without the reset argument, when the actor collides with any static object GetAiPackageDone returns 1 once and the travel package stops; but with the argument, GetAiPackageDone doesn't stop returning 1 and the actor will keep trying to reach its destination.
Wander packages restart at the end of their duration with or without the reset parameter, and when resting until after the end of an AiWander cycle, GetAiPackageDone doesn't stay 1. For AiActivate: the function doesn't work if a reset argument is given. GetTarget does not "check if the target is currently in the crosshair". Its function for the player is exactly the same as for NPCs: checking if the target ID is engaged in combat by the calling actor. For NPCs, GetTarget returns 1 not only in combat with the target, but also if the target is the player while they speak a Hello voice.
The duration during Hello is inconsistent in the original engine 1 second after reloading into a cell, otherwise the duration of the first voice ever spoken before, or 3. This affects advancement for NPCs of the same faction, but doesn't directly affect their Disposition only Rank affects the NPC's disposition if the NPC's faction is favorably disposed towards the player's faction. The report that " an NPC with a script that uses this variable will not attack on its own accord. For NPCs that are not supposed to be passive, using StartCombat manually is still recommended, as there are cases where OnPCHitMe does prevent normal NPCs from fighting back, even with more than 30 Fight and more than 90 Alarm seems to be related to crime having happened in an interior outside of the reaction range of these NPC, and gets reset if PayFine is used with a guard nearby.
Since soul gems are hardcoded Misc items, the only way for it to work would have Morrowind animation compilation to add a script with it to the default soul gems, but even then the variable is not detected to be set when a soul gem is used and deleted during enchanting.
Azura's star script is also Morrowind animation compilation what makes it work. PC Clothing Modifier " The value of your equipment changes the disposition of people in the game " is incorrect. While the base game files can randomly show favourable greeting text when equipment value is high, actual disposition is unmodified and those same NPCs can therefore still alternate between laudatory and hateful greetings. PlayGroupLoopGroup Unlike what the note states about "crosswired" animation, function names do not give different if they are used in the console or in scripts.
They seemed to give different because of scripts compiled in old mods the compiled script is saved in the plugin along with the text of the script by the CS; what the game processes is not the text of the script but the compiled version. The explanation is that these scripts were compiled in an older version of the CS, before a change in Bloodmoon: see this for the affected Opcodes.
See additional notes on PositionCell below for more quirks. RotateRotateWorld While "Rotate" doesn't have the same issue as RotateWorld with not updating the object's coordinates for GetAngle, it will make both position and angle changes NOT persistent if the game is saved and reloaded in the same cell.
See MoveMoveWorld about this. See SetAngleGetAngle about the order of rotations. StartScript Unlike what the warning states, it does not re-run other scripts, and scripts could not "be run more than once in the same frame". SetJournalIndex The condition for a value set by SetJournalIndex to persist is not simply for the journal to be " defined in the "info" section of the dialogue window ": the player must have received an actual journal entry for that journal ID using the function "Journal" before can be any valid entry in the same journal, greater or lesser index value doesn't matter.
Otherwise, if no valid entry was given in that journal before SetJournalIndex is used, the issue is not only that the value will be lost when a savegame is reloaded: if a save is reloaded to an earlier point before using SetJournalIndex without exiting the game, the value set by SetJournalIndex will still be there; if the game has been exited before reloading, then the value will revert to the last valid entry. Will not "only work to target the actor the player is in dialogue with"; provided an instance of the target exists, it is possible to Morrowind animation compilation a different ID in dialogue.
Precision and ificant digits for g, G are as described for the C language. See the vanilla script "FraldCounter", which does update the variable.
With non-compiled scripts dialogue or consolethe local variables of unique NPCs and creatures and reference persistent objects can be remotely set even if their cells were never loaded before, as long as an instance does exist in a cell.
It's the functions SetStat, ModStat For compiled scripts, as always, one instance of the object must be placed in a cell in the CS and the first instance found is the Morrowind animation compilation one affected. AddItem RemoveItem - Usage with containers: containers become unique clones of their base object when they are opened, not when they are loaded in a cell. Adding or removing items before a container is ever opened affects the base object record, after it's been opened it only affects the instance.
Adding or removing from an actor ID that has been loaded before will apply the effect to the earliest loaded instance, and to no other. Note on an apparent exception: actors placed by Morrowind. The unique actors among those then behave as expected of loaded actors even if clones of them are created, but while the three "Imperial Guard" instances placed in Seyda Neen also act as if loaded and are not targeted by later ingame base record changes, nonetheless remotely adding to or removing from "Imperial Guard" even while in the cell itself behaves as if none had ever been loaded and applies the effect to any later instance besides those in Seyda Neen - Adding a negative amount of an object or leveled list creates maxcount objects.
AiActivate More info needed: Repositioning an object and targeting it with AiActivate for travel pathing may inconsistently lead to "Exception encountered saving AI Pack" errors? In cells without pathgrids, unlike AiTravel, AiActivate doesn't get stuck when colliding with static objects, and is usually better able to reach the target. However, AiActivate isn't usually able to cross exterior cell borders activating the player seems to be an exception.
If AiFollow is under an AiWander package with infinite 0 duration it only makes the actor the target in combat, whereas if AiFollow is on top it actually makes the actor follow its target when in range. If you put Wander packages with non-0 duration between the travel packages they'll wander at that point of the cycle then the travel patrol route wander is in in-game hours at has to be at least 1 to not be infinite. Note however that in cells with no pathgrids they have a drawback compared to scripted AiTravel: these NPC schedule AiTravel packages behave Morrowind animation compilation scripted AiTravel with no [reset] argument and will be interrupted at the first collision with a static object the CS accordingly gives a warning when adding travel packages in a cell without pathgrids.
AiTravel with a [reset] argument will keep trying to reach the destination. AiTravel and AiActivate need a target within game units distance of the actor's current AI coordinates, otherwise they won't have the desired effect they can still interrupt the current ai package or combat and make the actor return to their AI coordinates. These coordinates are reset when the actor is given new Ai targets, or when the actor follows the player with AiFollow - pursuing in combat doesn't count as changing Ai coordinates.
If the actor has never been moved by Ai functions, these center coordinates are the actor's default initial position if the actor was placed in the CS in the same cell with a wander package or the actor's current position if it was created ingame. AiWander - Note that the range is a spherical radius and doesn't mean the NPC won't wander outside of that area, but that the NPC will pick its destination within that range. The NPC can stray far outside of that range in order to reach a spot that IS within the range, like another floor.
The most common idle chances in the game's content files are AiWander AIWander, 0, 0, 0, 0, 60, 20, 10, 10, 0, 0, 0, 0. CastExplodeSpell Creatures with empty spellcast animations can not be made to cast spells by scripts, even though the AI can make them cast their own spells or enchantments. Examples of creatures with no cast animations: ash slaves, ash ghouls. Examples of creatures with cast animations: dremora.
ExplodeSpell also works for "on self" spells, not only "on touch". Scripted casting can be used by most objects, like activators and persistent and unique statics, but the casting object must have collision, otherwise the engine gives the error "Scale parameters for Magic Effect Note that the same error will be given if actors hit by spell effects are lacking collision, and that using SetScale to make an object very small can result in it having no collision and giving the error. Scripted casting shouldn't be used by LIGHT type objects, because it triggers a looping cast sound that cannot be stopped.
The issue is probably related to the option those objects have for looping fire sounds. Choice Should never be used in Persuasion : it will only direct to whatever topic was used last. A NPC that is disabled and enabled again that can be done invisibly in the same frame gets immediately prompted for a Hello voice if the player is within distance of the NPC's Hello parameter. Drop - Note that objects created by these functions aren't affected by ingame lighting until the player exits and relo the cell.
ForceGreeting ForceGreeting allows you to bypass limitations for hostile NPCs that you normally can't talk to by activating thembut it still won't make you talk to a NPC that is knocked down or knocked out - "knocked down" comes from high weapon damage, "knocked out" starts with the first frame fatigue becomes negative. The same Morrowind animation compilation if the actor was in a knocked down animation before a scripted animation started. GetButtonPressed Note that the value GetButtonPressed returns is consumed on use -- the value HAS to be saved in a separate variable to be able to detect which of several choices was used -- and only one script should check GetButtonPressed at a time.
If several scripts check it, only the first would get a value other than "-1". Due to this, you shouldn't start an arbitrary MessageBox with choices during MenuMode unless it is triggered by inventory or dialogue actions: those can't happen during a different MessageBox. As a rule, a MessageBox with choices that is delayed or triggered by a timer should always wait until the player is out of MenuMode.
GetDeadCount - is an extremely slow function if many different NPCs and creatures are recorded in the save. Make sure not to call it every frame. GetDeadCount increments at the end of the death animation, on the same frame as OnDeath and can be checked at the same time it will return an incremented value if checked under OnDeath.
GetDistance If the objects between which distance is checked are in different cells different interiors, or one exterior and one interiorthe value returned Morrowind animation compilation getdistance will be the maximum possible value, This gives you an easy way to check if a NPC was left in a different cell.
Resolved refers to when the list's conditions and chances are applied, at which point it is replaced by items if any. For containers, leveled lists are resolved only when the container is opened. However, a NPC can be dead with a positive amount Morrowind animation compilation health if they were healing, because magic effects still apply during death animations. While there may? GetPCCell The function would return eval errors for cell names over 51 characters due to a bug with "if" conditions.
This has been fixed by MCP. GetPCSleep Waiting or loitering resting where sleep is forbidden doesn't count as sleep. To detect it you can instead check if ingame time GameHour changes within MenuMode. The effects are also reset after 72 hours see The "Hours Bug".
GetWeaponDrawn seems to return 0 until weapons are actually attached in drawing animations. This explains the few frames' delay in the note which will also more generally apply when switching between weapons. GetWeaponType When a lockpick or probe was equipped, GetWeaponType would return 0, the same as if a short blade was equipped. This could cause problems with weapon detection. HasSoulGem Doesn't work on containers, only actors. Returns not only 0 or 1, but the of soul gems of all types that have the specified soul.
MessageBox About giving messages with one or more choices during MenuMode: a MessageBox with choices is generally safe when it is triggered immediately by a player action like doing something in the inventory or showing a dialogue resultbecause those couldn't happen with another choice message already on the screen.
Otherwise, you should take care not to trigger the message with choices during MenuMode, because there could already be a different one. See also the warning about GetButtonPressed. Includes faction and rank names, requirements, etc. While the Hello parameter can't force a voice greeting, a NPC that is disabled and enabled again in the same frame gets immediately prompted for a Hello voice if the player is within the parameter's distance. MoveMoveWorld If a CS reference an object instance placed in a cell in the CS, not created in the game is moved with only Move or MoveWorld, its position will be reset if the game is reloaded in a different cell.
Don't use timers to control Move or MoveWorld if position matters, because the player may save and reload while the object is moving, which could reset its Morrowind animation compilation but not the timer. Assuming you use position checks, if you want the object's new position to be persistent, use "SetPos" at the end of its movement see comments on SetPos for cases where SetPos alone may not persist.Morrowind animation compilation
email: [email protected] - phone:(973) 625-4612 x 7560
Morrowind Permadeath Modlist