diff --git a/_module/are/townofascension.are.json b/_module/are/townofascension.are.json index a01f5c46..4d70df5d 100644 --- a/_module/are/townofascension.are.json +++ b/_module/are/townofascension.are.json @@ -6357,7 +6357,7 @@ }, "Version": { "type": "dword", - "value": 511 + "value": 512 }, "Width": { "type": "int", diff --git a/_module/ncs/ac_dmreward.ncs b/_module/ncs/ac_dmreward.ncs index 6de56f13..0f47b4a9 100644 Binary files a/_module/ncs/ac_dmreward.ncs and b/_module/ncs/ac_dmreward.ncs differ diff --git a/_module/ncs/airlessaura1.ncs b/_module/ncs/airlessaura1.ncs index 7961ea56..8c294006 100644 Binary files a/_module/ncs/airlessaura1.ncs and b/_module/ncs/airlessaura1.ncs differ diff --git a/_module/ncs/cheatercheck1.ncs b/_module/ncs/cheatercheck1.ncs index 7512c03c..b42a0e85 100644 Binary files a/_module/ncs/cheatercheck1.ncs and b/_module/ncs/cheatercheck1.ncs differ diff --git a/_module/ncs/cheatercheck2.ncs b/_module/ncs/cheatercheck2.ncs index db132f08..3778277f 100644 Binary files a/_module/ncs/cheatercheck2.ncs and b/_module/ncs/cheatercheck2.ncs differ diff --git a/_module/ncs/cheatercheck3.ncs b/_module/ncs/cheatercheck3.ncs index 0034d299..54739619 100644 Binary files a/_module/ncs/cheatercheck3.ncs and b/_module/ncs/cheatercheck3.ncs differ diff --git a/_module/ncs/cheatercheck4.ncs b/_module/ncs/cheatercheck4.ncs index ae445713..9e2438ff 100644 Binary files a/_module/ncs/cheatercheck4.ncs and b/_module/ncs/cheatercheck4.ncs differ diff --git a/_module/ncs/cheatercheck5.ncs b/_module/ncs/cheatercheck5.ncs index 6e65d901..c42a0cea 100644 Binary files a/_module/ncs/cheatercheck5.ncs and b/_module/ncs/cheatercheck5.ncs differ diff --git a/_module/ncs/nw_c2_default9.ncs b/_module/ncs/nw_c2_dropin9.ncs similarity index 54% rename from _module/ncs/nw_c2_default9.ncs rename to _module/ncs/nw_c2_dropin9.ncs index 52013363..ea11fee8 100644 Binary files a/_module/ncs/nw_c2_default9.ncs and b/_module/ncs/nw_c2_dropin9.ncs differ diff --git a/_module/ncs/onplayerdeath.ncs b/_module/ncs/onplayerdeath.ncs index 3cae7fa2..b5da1e5c 100644 Binary files a/_module/ncs/onplayerdeath.ncs and b/_module/ncs/onplayerdeath.ncs differ diff --git a/_module/ncs/prc_pwonspawn.ncs b/_module/ncs/prc_pwonspawn.ncs index d92431a6..3148909a 100644 Binary files a/_module/ncs/prc_pwonspawn.ncs and b/_module/ncs/prc_pwonspawn.ncs differ diff --git a/_module/ncs/relevel10.ncs b/_module/ncs/relevel10.ncs index 232d334c..7e9df837 100644 Binary files a/_module/ncs/relevel10.ncs and b/_module/ncs/relevel10.ncs differ diff --git a/_module/ncs/relevel5.ncs b/_module/ncs/relevel5.ncs index 673dd4cb..efc21cb5 100644 Binary files a/_module/ncs/relevel5.ncs and b/_module/ncs/relevel5.ncs differ diff --git a/_module/ncs/relevelpc1lvl.ncs b/_module/ncs/relevelpc1lvl.ncs index 8423dd4c..6e97e1a1 100644 Binary files a/_module/ncs/relevelpc1lvl.ncs and b/_module/ncs/relevelpc1lvl.ncs differ diff --git a/_module/ncs/sf_wingwand.ncs b/_module/ncs/sf_wingwand.ncs index a416ab9c..bc76f6ea 100644 Binary files a/_module/ncs/sf_wingwand.ncs and b/_module/ncs/sf_wingwand.ncs differ diff --git a/_module/ncs/silenttrigger.ncs b/_module/ncs/silenttrigger.ncs index 728e58e1..9e22b5b0 100644 Binary files a/_module/ncs/silenttrigger.ncs and b/_module/ncs/silenttrigger.ncs differ diff --git a/_module/ncs/silenttrigger2.ncs b/_module/ncs/silenttrigger2.ncs index 90e8f4e5..2274260f 100644 Binary files a/_module/ncs/silenttrigger2.ncs and b/_module/ncs/silenttrigger2.ncs differ diff --git a/_module/ncs/spawnb_cc_dactiv.ncs b/_module/ncs/spawnb_cc_dactiv.ncs index 77e80d77..7e94385e 100644 Binary files a/_module/ncs/spawnb_cc_dactiv.ncs and b/_module/ncs/spawnb_cc_dactiv.ncs differ diff --git a/_module/ncs/x2_def_endcombat.ncs b/_module/ncs/x2_def_endcombat.ncs deleted file mode 100644 index 96829de3..00000000 Binary files a/_module/ncs/x2_def_endcombat.ncs and /dev/null differ diff --git a/_module/ncs/x2_def_heartbeat.ncs b/_module/ncs/x2_def_heartbeat.ncs new file mode 100644 index 00000000..bb991a9b Binary files /dev/null and b/_module/ncs/x2_def_heartbeat.ncs differ diff --git a/_module/ncs/x2_def_ondeath.ncs b/_module/ncs/x2_def_ondeath.ncs deleted file mode 100644 index 74e82518..00000000 Binary files a/_module/ncs/x2_def_ondeath.ncs and /dev/null differ diff --git a/_module/ncs/x2_def_spawn.ncs b/_module/ncs/x2_def_spawn.ncs index 909e6c9c..c3ebad0e 100644 Binary files a/_module/ncs/x2_def_spawn.ncs and b/_module/ncs/x2_def_spawn.ncs differ diff --git a/_module/nss/nw_c2_default1.nss b/_module/nss/nw_c2_default1.nss index 969b2b63..5ec3f86c 100644 --- a/_module/nss/nw_c2_default1.nss +++ b/_module/nss/nw_c2_default1.nss @@ -102,5 +102,4 @@ void main() { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_HEARTBEAT)); } -} - +} \ No newline at end of file diff --git a/_module/nss/nw_c2_default3.nss b/_module/nss/nw_c2_default3.nss index 572e1239..b6727db7 100644 --- a/_module/nss/nw_c2_default3.nss +++ b/_module/nss/nw_c2_default3.nss @@ -51,8 +51,4 @@ void main() { SignalEvent(OBJECT_SELF, EventUserDefined(1003)); } -} - - - - +} \ No newline at end of file diff --git a/_module/nss/nw_c2_default8.nss b/_module/nss/nw_c2_default8.nss index 731908d1..3e494283 100644 --- a/_module/nss/nw_c2_default8.nss +++ b/_module/nss/nw_c2_default8.nss @@ -27,4 +27,4 @@ void main() if(GetSpawnInCondition(NW_FLAG_DISTURBED_EVENT)) { SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DISTURBED)); } -} +} \ No newline at end of file diff --git a/_module/nss/nw_c2_default9.nss b/_module/nss/nw_c2_default9.nss deleted file mode 100644 index 8b193704..00000000 --- a/_module/nss/nw_c2_default9.nss +++ /dev/null @@ -1,327 +0,0 @@ -//::////////////////////////////////////////////////// -//:: NW_C2_DEFAULT9 -/* - * Default OnSpawn handler with XP1 revisions. - * This corresponds to and produces the same results - * as the default OnSpawn handler in the OC. - * - * This can be used to customize creature behavior in three main ways: - * - * - Uncomment the existing lines of code to activate certain - * common desired behaviors from the moment when the creature - * spawns in. - * - * - Uncomment the user-defined event signals to cause the - * creature to fire events that you can then handle with - * a custom OnUserDefined event handler script. - * - * - Add new code _at the end_ to alter the initial - * behavior in a more customized way. - */ -//::////////////////////////////////////////////////// -//:: Copyright (c) 2002 Floodgate Entertainment -//:: Created By: Naomi Novik -//:: Created On: 12/11/2002 -//::////////////////////////////////////////////////// -//:: Updated 2003-08-20 Georg Zoeller: Added check for variables to active spawn in conditions without changing the spawnscript - - -#include "x0_i0_anims" -// #include "x0_i0_walkway" - in x0_i0_anims -#include "x0_i0_treasure" - -#include "x2_inc_switches" - -void main() -{ - // ***** Spawn-In Conditions ***** // - - // * REMOVE COMMENTS (// ) before the "Set..." functions to activate - // * them. Do NOT touch lines commented out with // *, those are - // * real comments for information. - - // * This causes the creature to say a one-line greeting in their - // * conversation file upon perceiving the player. Put [NW_D2_GenCheck] - // * in the "Text Seen When" field of the greeting in the conversation - // * file. Don't attach any player responses. - // * - // SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION); - - // * Same as above, but for hostile creatures to make them say - // * a line before attacking. - // * - // SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION); - - // * This NPC will attack when its allies call for help - // * - // SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET); - - // * If the NPC has the Hide skill they will go into stealth mode - // * while doing WalkWayPoints(). - // * - // SetSpawnInCondition(NW_FLAG_STEALTH); - - //-------------------------------------------------------------------------- - // Enable stealth mode by setting a variable on the creature - // Great for ambushes - // See x2_inc_switches for more information about this - //-------------------------------------------------------------------------- - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_STEALTH) == TRUE) - { - SetSpawnInCondition(NW_FLAG_STEALTH); - } - // * Same, but for Search mode - // * - // SetSpawnInCondition(NW_FLAG_SEARCH); - - //-------------------------------------------------------------------------- - // Make creature enter search mode after spawning by setting a variable - // Great for guards, etc - // See x2_inc_switches for more information about this - //-------------------------------------------------------------------------- - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_SEARCH) == TRUE) - { - SetSpawnInCondition(NW_FLAG_SEARCH); - } - // * This will set the NPC to give a warning to non-enemies - // * before attacking. - // * NN -- no clue what this really does yet - // * - // SetSpawnInCondition(NW_FLAG_SET_WARNINGS); - - // * Separate the NPC's waypoints into day & night. - // * See comment on WalkWayPoints() for use. - // * - // SetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING); - - // * If this is set, the NPC will appear using the "EffectAppear" - // * animation instead of fading in, *IF* SetListeningPatterns() - // * is called below. - // * - //SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION); - - // * This will cause an NPC to use common animations it possesses, - // * and use social ones to any other nearby friendly NPCs. - // * - // SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS); - - //-------------------------------------------------------------------------- - // Enable immobile ambient animations by setting a variable - // See x2_inc_switches for more information about this - //-------------------------------------------------------------------------- - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT_IMMOBILE) == TRUE) - { - SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS); - } - // * Same as above, except NPC will wander randomly around the - // * area. - // * - // SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS); - - - //-------------------------------------------------------------------------- - // Enable mobile ambient animations by setting a variable - // See x2_inc_switches for more information about this - //-------------------------------------------------------------------------- - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_USE_SPAWN_AMBIENT) == TRUE) - { - SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS); - } - // **** Animation Conditions **** // - // * These are extra conditions you can put on creatures with ambient - // * animations. - - // * Civilized creatures interact with placeables in - // * their area that have the tag "NW_INTERACTIVE" - // * and "talk" to each other. - // * - // * Humanoid races are civilized by default, so only - // * set this flag for monster races that you want to - // * behave the same way. - // SetAnimationCondition(NW_ANIM_FLAG_IS_CIVILIZED); - - // * If this flag is set, this creature will constantly - // * be acting. Otherwise, creatures will only start - // * performing their ambient animations when they - // * first perceive a player, and they will stop when - // * the player moves away. - // SetAnimationCondition(NW_ANIM_FLAG_CONSTANT); - - // * Civilized creatures with this flag set will - // * randomly use a few voicechats. It's a good - // * idea to avoid putting this on multiple - // * creatures using the same voiceset. - // SetAnimationCondition(NW_ANIM_FLAG_CHATTER); - - // * Creatures with _immobile_ ambient animations - // * can have this flag set to make them mobile in a - // * close range. They will never leave their immediate - // * area, but will move around in it, frequently - // * returning to their starting point. - // * - // * Note that creatures spawned inside interior areas - // * that contain a waypoint with one of the tags - // * "NW_HOME", "NW_TAVERN", "NW_SHOP" will automatically - // * have this condition set. - // SetAnimationCondition(NW_ANIM_FLAG_IS_MOBILE_CLOSE_RANGE); - - - // **** Special Combat Tactics *****// - // * These are special flags that can be set on creatures to - // * make them follow certain specialized combat tactics. - // * NOTE: ONLY ONE OF THESE SHOULD BE SET ON A SINGLE CREATURE. - - // * Ranged attacker - // * Will attempt to stay at ranged distance from their - // * target. - // SetCombatCondition(X0_COMBAT_FLAG_RANGED); - - // * Defensive attacker - // * Will use defensive combat feats and parry - // SetCombatCondition(X0_COMBAT_FLAG_DEFENSIVE); - - // * Ambusher - // * Will go stealthy/invisible and attack, then - // * run away and try to go stealthy again before - // * attacking anew. - // SetCombatCondition(X0_COMBAT_FLAG_AMBUSHER); - - // * Cowardly - // * Cowardly creatures will attempt to flee - // * attackers. - // SetCombatCondition(X0_COMBAT_FLAG_COWARDLY); - - - // **** Escape Commands ***** // - // * NOTE: ONLY ONE OF THE FOLLOWING SHOULD EVER BE SET AT ONE TIME. - // * NOTE2: Not clear that these actually work. -- NN - - // * Flee to a way point and return a short time later. - // * - // SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); - - // * Flee to a way point and do not return. - // * - // SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); - - // * Teleport to safety and do not return. - // * - // SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); - - // * Teleport to safety and return a short time later. - // * - // SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); - - - - // ***** CUSTOM USER DEFINED EVENTS ***** / - - - /* - If you uncomment any of these conditions, the creature will fire - a specific user-defined event number on each event. That will then - allow you to write custom code in the "OnUserDefinedEvent" handler - script to go on top of the default NPC behaviors for that event. - - Example: I want to add some custom behavior to my NPC when they - are damaged. I uncomment the "NW_FLAG_DAMAGED_EVENT", then create - a new user-defined script that has something like this in it: - - if (GetUserDefinedEventNumber() == 1006) { - // Custom code for my NPC to execute when it's damaged - } - - These user-defined events are in the range 1001-1007. - */ - - // * Fire User Defined Event 1001 in the OnHeartbeat - // * - // SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); - - // * Fire User Defined Event 1002 - // * - // SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); - - // * Fire User Defined Event 1005 - // * - // SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); - - // * Fire User Defined Event 1006 - // * - SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); - - // * Fire User Defined Event 1008 - // * - // SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); - - // * Fire User Defined Event 1003 - // * - // SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); - - // * Fire User Defined Event 1004 - // * - // SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); - - - - // ***** DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) ***** // - - // * Goes through and sets up which shouts the NPC will listen to. - // * - SetListeningPatterns(); - - // * Walk among a set of waypoints. - // * 1. Find waypoints with the tag "WP_" + NPC TAG + "_##" and walk - // * among them in order. - // * 2. If the tag of the Way Point is "POST_" + NPC TAG, stay there - // * and return to it after combat. - // - // * Optional Parameters: - // * void WalkWayPoints(int nRun = FALSE, float fPause = 1.0) - // - // * If "NW_FLAG_DAY_NIGHT_POSTING" is set above, you can also - // * create waypoints with the tags "WN_" + NPC Tag + "_##" - // * and those will be walked at night. (The standard waypoints - // * will be walked during the day.) - // * The night "posting" waypoint tag is simply "NIGHT_" + NPC tag. - WalkWayPoints(); - - //* Create a small amount of treasure on the creature - if ((GetLocalInt(GetModule(), "X2_L_NOTREASURE") == FALSE) && - (GetLocalInt(OBJECT_SELF, "X2_L_NOTREASURE") == FALSE) ) - { - CTG_GenerateNPCTreasure(TREASURE_TYPE_MONSTER, OBJECT_SELF); - } - - - // ***** ADD ANY SPECIAL ON-SPAWN CODE HERE ***** // - - // * If Incorporeal, apply changes - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_IS_INCORPOREAL) == TRUE) - { - effect eConceal = EffectConcealment(50, MISS_CHANCE_TYPE_NORMAL); - eConceal = ExtraordinaryEffect(eConceal); - effect eGhost = EffectCutsceneGhost(); - eGhost = ExtraordinaryEffect(eGhost); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eConceal, OBJECT_SELF); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eGhost, OBJECT_SELF); - - } - - // * Give the create a random name. - // * If you create a script named x3_name_gen in your module, you can - // * set the value of the variable X3_S_RANDOM_NAME on OBJECT_SELF inside - // * the script to override the creature's default name. - if (GetCreatureFlag(OBJECT_SELF, CREATURE_VAR_RANDOMIZE_NAME) == TRUE) - { - ExecuteScript("x3_name_gen",OBJECT_SELF); - string sName = GetLocalString(OBJECT_SELF,"X3_S_RANDOM_NAME"); - if ( sName == "" ) - { - sName = RandomName(); - } - SetName(OBJECT_SELF,sName); - } - - ExecuteScript("prc_pwonspawn", OBJECT_SELF); -} diff --git a/_module/nss/nw_c2_dropin9.nss b/_module/nss/nw_c2_dropin9.nss new file mode 100644 index 00000000..66700094 --- /dev/null +++ b/_module/nss/nw_c2_dropin9.nss @@ -0,0 +1,87 @@ +//:://///////////////////////////////////////////// +//:: Default: On Spawn In +//:: NW_C2_DEFAULT9 +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Determines the course of action to be taken + after having just been spawned in +*/ +//::////////////////////////////////////////////// +//:: Created By: Preston Watamaniuk +//:: Created On: Oct 25, 2001 +//::////////////////////////////////////////////// + +#include "NW_O2_CONINCLUDE" + +#include "NW_I0_GENERIC" +void main() +{ +// OPTIONAL BEHAVIORS (Comment In or Out to Activate ) **************************************************************************** + //SetSpawnInCondition(NW_FLAG_SPECIAL_CONVERSATION); + //SetSpawnInCondition(NW_FLAG_SPECIAL_COMBAT_CONVERSATION); + // This causes the creature to say a special greeting in their conversation file + // upon Perceiving the player. Attach the [NW_D2_GenCheck.nss] script to the desired + // greeting in order to designate it. As the creature is actually saying this to + // himself, don't attach any player responses to the greeting. + //SetSpawnInCondition(NW_FLAG_SHOUT_ATTACK_MY_TARGET); + // This will set the listening pattern on the NPC to attack when allies call + //SetSpawnInCondition(NW_FLAG_STEALTH); + // If the NPC has stealth and they are a rogue go into stealth mode + //SetSpawnInCondition(NW_FLAG_SEARCH); + // If the NPC has Search go into Search Mode + //SetSpawnInCondition(NW_FLAG_SET_WARNINGS); + // This will set the NPC to give a warning to non-enemies before attacking + //SetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS); + //This will play Ambient Animations until the NPC sees an enemy or is cleared. + //NOTE that these animations will play automatically for Encounter Creatures. + //SetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS); + //This will play Ambient Animations until the NPC sees an enemy or is cleared. + //NOTE that NPCs using this form of ambient animations will not move to other NPCs. + SetSpawnInCondition(NW_FLAG_APPEAR_SPAWN_IN_ANIMATION); + + // NOTE: ONLY ONE OF THE FOLOOWING ESCAPE COMMANDS SHOULD EVER BE ACTIVATED AT ANY ONE TIME. + //SetSpawnInCondition(NW_FLAG_ESCAPE_RETURN); // OPTIONAL BEHAVIOR (Flee to a way point and return a short time later.) + //SetSpawnInCondition(NW_FLAG_ESCAPE_LEAVE); // OPTIONAL BEHAVIOR (Flee to a way point and do not return.) + //SetSpawnInCondition(NW_FLAG_TELEPORT_LEAVE); // OPTIONAL BEHAVIOR (Teleport to safety and do not return.) + //SetSpawnInCondition(NW_FLAG_TELEPORT_RETURN); // OPTIONAL BEHAVIOR (Teleport to safety and return a short time later.) + +// SPECIAL BEHAVIOR SECTION +/* + The following section outlines the various special behaviors that can be placed on a creature. To activate one of the special + behaviors: + 1. Comment in SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL); + 2. Comment in one other special behavior setting (ONLY ONE). +*/ + //SetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL); + //SetBehaviorState(NW_FLAG_BEHAVIOR_OMNIVORE); //Creature will only attack those that close within 5m and are not friends, + //Rangers or Druids. + //SetBehaviorState(NW_FLAG_BEHAVIOR_HERBIVORE);//Creature will flee those that close within 7m if they are not friends, + //Rangers or Druids. + +// CUSTOM USER DEFINED EVENTS +/* + The following settings will allow the user to fire one of the blank user defined events in the NW_D2_DefaultD. Like the + On Spawn In script this script is meant to be customized by the end user to allow for unique behaviors. The user defined + events user 1000 - 1010 +*/ + //SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1001 + //SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1002 + //SetSpawnInCondition(NW_FLAG_ATTACK_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1005 + //SetSpawnInCondition(NW_FLAG_DAMAGED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1006 + //SetSpawnInCondition(NW_FLAG_DISTURBED_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1008 + //SetSpawnInCondition(NW_FLAG_END_COMBAT_ROUND_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1003 + //SetSpawnInCondition(NW_FLAG_ON_DIALOGUE_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1004 + //SetSpawnInCondition(NW_FLAG_DEATH_EVENT); //OPTIONAL BEHAVIOR - Fire User Defined Event 1007 + +// DEFAULT GENERIC BEHAVIOR (DO NOT TOUCH) ***************************************************************************************** + SetListeningPatterns(); // Goes through and sets up which shouts the NPC will listen to. + WalkWayPoints(); // Optional Parameter: void WalkWayPoints(int nRun = FALSE, float fPause = 1.0) + // 1. Looks to see if any Way Points in the module have the tag "WP_" + NPC TAG + "_0X", if so walk them + // 2. If the tag of the Way Point is "POST_" + NPC TAG the creature will return this way point after + // combat. + + GenerateNPCTreasure(); //* Use this to create a small amount of treasure on the creature + + ExecuteScript("prc_pwonspawn", OBJECT_SELF); +} diff --git a/_module/nss/prc_pwonspawn.nss b/_module/nss/prc_pwonspawn.nss index ab39e556..e0de30f5 100644 --- a/_module/nss/prc_pwonspawn.nss +++ b/_module/nss/prc_pwonspawn.nss @@ -30,12 +30,8 @@ void main() object oSkelly; object oPC = GetFirstObjectInArea(oArea); - ExecuteScript("prc_npc_spawn", OBJECT_SELF); + //ExecuteScript("prc_npc_spawn", OBJECT_SELF); -NOT NEEDED -//: Don't spawn skeletons from skeletons or commoners - if (GetResRef(OBJECT_SELF) == "pa_skeleton" || nCommoner > 0) - return; - //:: Get average PC level for area //:: Cycle through PCs in Area @@ -77,9 +73,9 @@ void main() //:: Spawn Skeleton. eVFX = EffectVisualEffect(VFX_IMP_EVIL_HELP); oSkelly = CreateObject(OBJECT_TYPE_CREATURE, "nw_skeleton", GetLocation(OBJECT_SELF)); - LevelMob(oSkelly, nAveragePCLevel); + DelayCommand(0.1f, ActionDoLevelUp(oSkelly, nAveragePCLevel)); - //:: Assign Weapon + //:: Assign Weapon int nResult = d6(1); int nStackSize = 1; // Create 1 items; string sItem; @@ -113,7 +109,7 @@ void main() //:: Apply VFX & Attack AssignCommand(oSkelly, DetermineCombatRound(OBJECT_SELF)); - DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSkelly)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVFX, oSkelly); } } @@ -124,8 +120,8 @@ void ReallyEquipItemInSlot(object oNPC, object oItem, int nSlot) { if (GetItemInSlot(nSlot) != oItem) { - ClearAllActions(); - ActionEquipItem(oItem, nSlot); - DelayCommand(1.0, ReallyEquipItemInSlot(oNPC, oItem, nSlot)); + //ClearAllActions(); + AssignCommand(oNPC, ActionEquipItem(oItem, nSlot)); + DelayCommand(0.3, ReallyEquipItemInSlot(oNPC, oItem, nSlot)); } } \ No newline at end of file diff --git a/_module/nss/rd_level.nss b/_module/nss/rd_level.nss index d52e6f60..3a542c6b 100644 --- a/_module/nss/rd_level.nss +++ b/_module/nss/rd_level.nss @@ -1,5 +1,15 @@ +#include "prc_inc_util" + + int LevelMob(object oCreature, int iLevels); int GetPackage(int iClass); +void ActionDoLevelUp(object oCreature, int iLevels); + + +void ActionDoLevelUp(object oCreature, int iLevels) +{ + LevelMob(oCreature, iLevels); +} int LevelMob(object oCreature, int iLevels) { @@ -25,7 +35,7 @@ while (iIndex <= iLevels) } //Force Rest to mem spells -ForceRest(oCreature); +PRCForceRest(oCreature); //Give more treasure to be lvl appropriate //rem this out cuz too much code is running and getting error @@ -161,4 +171,4 @@ switch (iClass) return iPackage; } - +//:: void main (){} diff --git a/_module/nss/setxp_inc.nss b/_module/nss/setxp_inc.nss index b18b7634..f575b286 100644 --- a/_module/nss/setxp_inc.nss +++ b/_module/nss/setxp_inc.nss @@ -1,9 +1,5 @@ -#include "nwnx_player" - //Created By Guile 5/5/08 -//:: NWNxEE / 60 lvl support by Jaysyn & HA - //IMPORTANT//////////////////////////////////////////////////////////////////// //This is an include not an actual script (It has prototype functions in it!) //Function which you can use in any script!! Just..... diff --git a/_module/nss/x2_def_endcombat.nss b/_module/nss/x2_def_endcombat.nss deleted file mode 100644 index 707ffe44..00000000 --- a/_module/nss/x2_def_endcombat.nss +++ /dev/null @@ -1,16 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name x2_def_endcombat -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Default Combat Round End script -*/ -//::////////////////////////////////////////////// -//:: Created By: Keith Warner -//:: Created On: June 11/03 -//::////////////////////////////////////////////// - -void main() -{ - ExecuteScript("nw_c2_default3", OBJECT_SELF); -} diff --git a/_module/nss/x2_def_heartbeat.nss b/_module/nss/x2_def_heartbeat.nss new file mode 100644 index 00000000..cb5375ce --- /dev/null +++ b/_module/nss/x2_def_heartbeat.nss @@ -0,0 +1,180 @@ +//:://///////////////////////////////////////////// +//:: Name x2_def_heartbeat +//:: Copyright (c) 2001 Bioware Corp. +//::////////////////////////////////////////////// +/* + Default Heartbeat script +*/ +//::////////////////////////////////////////////// +//:: Created By: Keith Warner +//:: Created On: June 11/03 +//::////////////////////////////////////////////// +#include "prc_inc_spells" + +/* +Swarm, Berzerker Wasp: 10 HD ar_berzwasp001 +Swarm, Berzerker Wasp: 14 HD ar_berzwasp002 +Swarm, Locust: 08 HD ds_locustswarm01 +Swarm, Mini Kank: 04 HD ds_minkankswrm01 +Swarm, Reptilian Bat: 04 HD ds_repbatswrm001 +*/ + +void FollowTarget(string sTargetTag, float fDistance); + +void FollowTarget(string sTargetTag, float fDistance) +{ + object oTarget = GetObjectByTag(sTargetTag); + + if (GetIsObjectValid(oTarget)) + { + vector vTargetPosition = GetPosition(oTarget); + vector vCurrentPosition = GetPosition(OBJECT_SELF); + + float fDistanceToTarget = VectorMagnitude(vTargetPosition - vCurrentPosition); + + // Move to the target if the distance is greater than the desired follow distance + if (fDistanceToTarget > fDistance) + { + AssignCommand(OBJECT_SELF, ActionMoveToObject(oTarget, TRUE, fDistance)); + } + } +} + +void main() +{ +//:: Declare major variables + + object oNPC = OBJECT_SELF; + object oArea = GetArea(oNPC); + + string sResRef = GetResRef(oNPC); + string sAreaResRef = GetResRef(oArea); + + int nTrampleScore = (GetLocalInt(oNPC, "TRAMPLER") + GetHasFeat(FEAT_CENTAUR_TRAMPLE, oNPC)); + + int nChargeScore = (GetLocalInt(oNPC, "CHARGER") + + GetHasFeat(FEAT_MINOTAUR_CHARGE, oNPC) + + GetHasFeat(FEAT_ACROBATIC_CHARGE, oNPC) + + GetHasFeat(FEAT_SHIELD_CHARGE ,oNPC) + + GetHasFeat(FEAT_POWERFUL_CHARGE, oNPC) + + GetHasFeat(FEAT_GREATER_POWERFUL_CHARGE, oNPC) + + GetHasFeat(FEAT_RHINO_TRIBE_CHARGE, oNPC) + + GetHasFeat(FEAT_FURIOUS_CHARGE, oNPC) + + GetHasFeat(FEAT_RECKLESS_CHARGE, oNPC) + + GetHasFeat(FEAT_COBALT_CHARGE, oNPC)); + + int nBullRushScore = (GetLocalInt(oNPC, "BULLRUSHER") + + GetHasFeat(FEAT_IMPROVED_BULLRUSH, oNPC) + + GetHasFeat(FEAT_RAMPAGING_BULL_RUSH, oNPC) + + GetHasFeat(5241, oNPC) + //:: Expert Bull Rush + GetHasFeat(5247, oNPC)); //:: Superior Bull Rush + + int iAwesomeBlow = GetHasFeat(FEAT_AWESOME_BLOW, oNPC); + + int iOverrun = GetHasFeat(FEAT_IMPROVED_OVERRUN, oNPC); + + +//:: Run Various Combat Maneuver Heartbeats + if(iOverrun) + { + if (GetLocalInt(oNPC, "OverrrunCooldown") != 1) + { + if(DEBUG) DoDebug( "x2_def_heartbeat: Creature w/ Overrun Detected"); + DelayCommand(0.0f, ExecuteScript("overrunner_hb", oNPC)); + } + else + if(DEBUG) DoDebug("x2_def_heartbeat: Overrun is on cooldown."); + } + if(iAwesomeBlow) + { + if (GetLocalInt(oNPC, "AwesomeBlowCooldown") != 1) + { + if(DEBUG) DoDebug("x2_def_heartbeat: Creature w/ Awesome Blow Detected"); + DelayCommand(0.0f, ExecuteScript("awesomeblow_hb", oNPC)); + } + else + if(DEBUG) DoDebug("x2_def_heartbeat: Awesome Blow is on cooldown."); + } + if(nTrampleScore) + { + if (GetLocalInt(oNPC, "TrampleCooldown") != 1) + { + if(DEBUG) DoDebug("x2_def_heartbeat: Trampler Detected"); + DelayCommand(0.0f, ExecuteScript("trampler_hb", oNPC)); + } + else + if(DEBUG) DoDebug("x2_def_heartbeat: Trample is on cooldown."); + } + if(nChargeScore) + { + if (GetLocalInt(oNPC, "ChargeCooldown") != 1) + { + if(DEBUG) DoDebug("x2_def_heartbeat: Charger Detected"); + DelayCommand(0.0f, ExecuteScript("charger_hb", oNPC)); + } + else + if(DEBUG) DoDebug("x2_def_heartbeat: Charge is on cooldown."); + } + if(nBullRushScore) + { + if (GetLocalInt(oNPC, "BullRushCooldown") != 1) + { + if(DEBUG) DoDebug("x2_def_heartbeat: Bull Rusher Detected"); + DelayCommand(0.0f, ExecuteScript("bullrusher_hb", oNPC)); + } + else + if(DEBUG) DoDebug("x2_def_heartbeat: Bull Rush is on cooldown."); + } + +//:: Runs Malevolent Spirit HB + if (sResRef == "malev_spirit001" ) + { + ExecuteScript("i420_ghost_hb", oNPC); + } + +//:: Runs Mini-kank swarm HB + if (sResRef == "ds_minkankswrm01" ) + { + ExecuteScript("cr_minikank_hb", oNPC); + } + +//:: Runs Berzerker Wasp swarm HB + if (sResRef == "ar_berzwasp001" || sResRef == "ar_berzwasp002" ) + { + ExecuteScript("cr_berzwasp_hb", oNPC); + } + +//:: Runs special swarm HB + if (sResRef == "ds_repbatswrm001" || sResRef == "ds_locustswarm01") + { + ExecuteScript("cr_locust_hb", oNPC); + } + +//: Handles NPCs that spawn in captivity. (Sand Raiders Quest) + if (sResRef == "npc_milos" || sResRef == "npc_flaron" || sResRef == "npc_alia") + { + if ((sAreaResRef == "alt_altaruk") || (sAreaResRef == "alt_wavircoster")) + { + SetLocalInt(oNPC, "FREED_NPC", 1); + } + + if(GetLocalInt(oNPC, "FREED_NPC") == 0) + { + ActionPlayAnimation(ANIMATION_LOOPING_MEDITATE, 1.0, 7.0); + } + } + +//:: Make NPC followers follow the NPC (Sand Raiders Quest) + if ((sAreaResRef != "alt_altaruk") && (sAreaResRef != "alt_wavircoster")) + { + if (sResRef == "npc_flaron" || sResRef == "npc_alia") + { + if(GetLocalInt(oNPC, "FREED_NPC") == 1) + { + FollowTarget("NPC_MILOS", 1.0f); + } + } + } + + ExecuteScript("nw_c2_default1", oNPC); +} \ No newline at end of file diff --git a/_module/nss/x2_def_ondeath.nss b/_module/nss/x2_def_ondeath.nss deleted file mode 100644 index 9ae3fefd..00000000 --- a/_module/nss/x2_def_ondeath.nss +++ /dev/null @@ -1,16 +0,0 @@ -//:://///////////////////////////////////////////// -//:: Name x2_def_ondeath -//:: Copyright (c) 2001 Bioware Corp. -//::////////////////////////////////////////////// -/* - Default OnDeath script -*/ -//::////////////////////////////////////////////// -//:: Created By: Keith Warner -//:: Created On: June 11/03 -//::////////////////////////////////////////////// - -void main() -{ - ExecuteScript("nw_c2_default7", OBJECT_SELF); -} diff --git a/_module/nss/x2_def_spawn.nss b/_module/nss/x2_def_spawn.nss index 390887c1..4f56130c 100644 --- a/_module/nss/x2_def_spawn.nss +++ b/_module/nss/x2_def_spawn.nss @@ -575,7 +575,7 @@ void main() ms_Nomenclature(OBJECT_SELF); //:: Execute PRC OnSpawn script. - ExecuteScript("prc_npc_spawn", OBJECT_SELF); + //ExecuteScript("prc_npc_spawn", OBJECT_SELF); -Not needed //Post Spawn event requeste @@ -583,8 +583,9 @@ void main() { SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN)); } -// -NWNX_WebHook_SendWebHookHTTPS("discordapp.com", NWNX_DISCORD_URL, "Good Morning Ascension.", "The Madman"); + +// I don't think this should be here +//NWNX_WebHook_SendWebHookHTTPS("discordapp.com", NWNX_DISCORD_URL, "Good Morning Ascension.", "The Madman"); // } diff --git a/_module/utc/mutantbeele.utc.json b/_module/utc/mutantbeele.utc.json index ec48fad5..98706765 100644 --- a/_module/utc/mutantbeele.utc.json +++ b/_module/utc/mutantbeele.utc.json @@ -237,55 +237,55 @@ }, "ScriptAttacked": { "type": "resref", - "value": "nw_c2_default5" + "value": "x2_def_attacked" }, "ScriptDamaged": { "type": "resref", - "value": "nw_c2_default6" + "value": "x2_def_ondamage" }, "ScriptDeath": { "type": "resref", - "value": "nw_c2_default7" + "value": "x2_def_ondeath" }, "ScriptDialogue": { "type": "resref", - "value": "nw_c2_default4" + "value": "x2_def_onconv" }, "ScriptDisturbed": { "type": "resref", - "value": "nw_c2_default8" + "value": "x2_def_ondisturb" }, "ScriptEndRound": { "type": "resref", - "value": "nw_c2_default3" + "value": "x2_def_endcombat" }, "ScriptHeartbeat": { "type": "resref", - "value": "nw_c2_default1" + "value": "x2_def_heartbeat" }, "ScriptOnBlocked": { "type": "resref", - "value": "nw_c2_defaulte" + "value": "x2_def_onblocked" }, "ScriptOnNotice": { "type": "resref", - "value": "nw_c2_default2" + "value": "x2_def_percept" }, "ScriptRested": { "type": "resref", - "value": "nw_c2_defaulta" + "value": "x2_def_rested" }, "ScriptSpawn": { "type": "resref", - "value": "nw_c2_default9" + "value": "x2_def_spawn" }, "ScriptSpellAt": { "type": "resref", - "value": "nw_c2_defaultb" + "value": "x2_def_spellcast" }, "ScriptUserDefine": { "type": "resref", - "value": "nw_c2_defaultd" + "value": "x2_def_userdef" }, "SkillList": { "type": "list", diff --git a/_module/utc/mutantfirebeetle.utc.json b/_module/utc/mutantfirebeetle.utc.json index 12f27abe..e5332f3b 100644 --- a/_module/utc/mutantfirebeetle.utc.json +++ b/_module/utc/mutantfirebeetle.utc.json @@ -248,55 +248,55 @@ }, "ScriptAttacked": { "type": "resref", - "value": "nw_c2_default5" + "value": "x2_def_attacked" }, "ScriptDamaged": { "type": "resref", - "value": "nw_c2_default6" + "value": "x2_def_ondamage" }, "ScriptDeath": { "type": "resref", - "value": "nw_c2_default7" + "value": "x2_def_ondeath" }, "ScriptDialogue": { "type": "resref", - "value": "nw_c2_default4" + "value": "x2_def_onconv" }, "ScriptDisturbed": { "type": "resref", - "value": "nw_c2_default8" + "value": "x2_def_ondisturb" }, "ScriptEndRound": { "type": "resref", - "value": "nw_c2_default3" + "value": "x2_def_endcombat" }, "ScriptHeartbeat": { "type": "resref", - "value": "nw_c2_default1" + "value": "x2_def_heartbeat" }, "ScriptOnBlocked": { "type": "resref", - "value": "nw_c2_defaulte" + "value": "x2_def_onblocked" }, "ScriptOnNotice": { "type": "resref", - "value": "nw_c2_default2" + "value": "x2_def_percept" }, "ScriptRested": { "type": "resref", - "value": "nw_c2_defaulta" + "value": "x2_def_rested" }, "ScriptSpawn": { "type": "resref", - "value": "nw_c2_default9" + "value": "x2_def_spawn" }, "ScriptSpellAt": { "type": "resref", - "value": "nw_c2_defaultb" + "value": "x2_def_spellcast" }, "ScriptUserDefine": { "type": "resref", - "value": "nw_c2_defaultd" + "value": "x2_def_userdef" }, "SkillList": { "type": "list", diff --git a/_module/utc/nw_skeleton.utc.json b/_module/utc/nw_skeleton.utc.json index 204df803..5b58a9d7 100644 --- a/_module/utc/nw_skeleton.utc.json +++ b/_module/utc/nw_skeleton.utc.json @@ -230,55 +230,55 @@ }, "ScriptAttacked": { "type": "resref", - "value": "x2_def_attacked" + "value": "nw_c2_default5" }, "ScriptDamaged": { "type": "resref", - "value": "x2_def_ondamage" + "value": "nw_c2_default6" }, "ScriptDeath": { "type": "resref", - "value": "x2_def_ondeath" + "value": "nw_c2_default7" }, "ScriptDialogue": { "type": "resref", - "value": "x2_def_onconv" + "value": "nw_c2_default4" }, "ScriptDisturbed": { "type": "resref", - "value": "x2_def_ondisturb" + "value": "nw_c2_default8" }, "ScriptEndRound": { "type": "resref", - "value": "x2_def_endcombat" + "value": "nw_c2_default3" }, "ScriptHeartbeat": { "type": "resref", - "value": "x2_def_heartbeat" + "value": "nw_c2_default1" }, "ScriptOnBlocked": { "type": "resref", - "value": "x2_def_onblocked" + "value": "nw_c2_defaulte" }, "ScriptOnNotice": { "type": "resref", - "value": "x2_def_percept" + "value": "nw_c2_default2" }, "ScriptRested": { "type": "resref", - "value": "x2_def_rested" + "value": "nw_c2_defaulta" }, "ScriptSpawn": { "type": "resref", - "value": "x2_def_spawn" + "value": "nw_c2_default9" }, "ScriptSpellAt": { "type": "resref", - "value": "x2_def_spellcast" + "value": "nw_c2_defaultb" }, "ScriptUserDefine": { "type": "resref", - "value": "x2_def_userdef" + "value": "nw_c2_defaultd" }, "SkillList": { "type": "list", diff --git a/_module/utc/pa_skeleton.utc.json b/_module/utc/pa_skeleton.utc.json index 7f3ba40c..14769643 100644 --- a/_module/utc/pa_skeleton.utc.json +++ b/_module/utc/pa_skeleton.utc.json @@ -237,55 +237,55 @@ }, "ScriptAttacked": { "type": "resref", - "value": "x2_def_attacked" + "value": "nw_c2_default5" }, "ScriptDamaged": { "type": "resref", - "value": "x2_def_ondamage" + "value": "nw_c2_default6" }, "ScriptDeath": { "type": "resref", - "value": "x2_def_ondeath" + "value": "nw_c2_default7" }, "ScriptDialogue": { "type": "resref", - "value": "x2_def_onconv" + "value": "nw_c2_default4" }, "ScriptDisturbed": { "type": "resref", - "value": "x2_def_ondisturb" + "value": "nw_c2_default8" }, "ScriptEndRound": { "type": "resref", - "value": "x2_def_endcombat" + "value": "nw_c2_default3" }, "ScriptHeartbeat": { "type": "resref", - "value": "x2_def_heartbeat" + "value": "nw_c2_default1" }, "ScriptOnBlocked": { "type": "resref", - "value": "x2_def_onblocked" + "value": "nw_c2_defaulte" }, "ScriptOnNotice": { "type": "resref", - "value": "x2_def_percept" + "value": "nw_c2_default2" }, "ScriptRested": { "type": "resref", - "value": "x2_def_rested" + "value": "nw_c2_defaulta" }, "ScriptSpawn": { "type": "resref", - "value": "x2_def_spawn" + "value": "nw_c2_default9" }, "ScriptSpellAt": { "type": "resref", - "value": "x2_def_spellcast" + "value": "nw_c2_defaultb" }, "ScriptUserDefine": { "type": "resref", - "value": "x2_def_userdef" + "value": "nw_c2_defaultd" }, "SkillList": { "type": "list", diff --git a/_module/utc/superbmage.utc.json b/_module/utc/superbmage.utc.json index 590b5193..f23d48f9 100644 --- a/_module/utc/superbmage.utc.json +++ b/_module/utc/superbmage.utc.json @@ -170,6 +170,101 @@ } ] }, + "MemorizedList5": { + "type": "list", + "value": [ + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + }, + { + "__struct_id": 3, + "Spell": { + "type": "word", + "value": 188 + }, + "SpellFlags": { + "type": "byte", + "value": 0 + }, + "SpellMetaMagic": { + "type": "byte", + "value": 1 + } + } + ] + }, "MemorizedList6": { "type": "list", "value": [ @@ -268,96 +363,6 @@ "MemorizedList7": { "type": "list", "value": [ - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, - { - "__struct_id": 3, - "Spell": { - "type": "word", - "value": 188 - }, - "SpellFlags": { - "type": "byte", - "value": 1 - }, - "SpellMetaMagic": { - "type": "byte", - "value": 1 - } - }, { "__struct_id": 3, "Spell": { @@ -417,7 +422,12 @@ "type": "byte", "value": 0 } - }, + } + ] + }, + "MemorizedList8": { + "type": "list", + "value": [ { "__struct_id": 3, "Spell": { @@ -426,7 +436,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -441,7 +451,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -456,7 +466,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -476,7 +486,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -491,7 +501,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -506,7 +516,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -521,7 +531,7 @@ }, "SpellFlags": { "type": "byte", - "value": 1 + "value": 0 }, "SpellMetaMagic": { "type": "byte", @@ -897,7 +907,7 @@ "FirstName": { "type": "cexolocstring", "value": { - "0": "Gerater Beholder Mage", + "0": "Greater Beholder Mage", "id": 90374 } }, diff --git a/_release/Path of Ascension [PRC8-CEP3].7z b/_release/Path of Ascension [PRC8-CEP3].7z index 0df8afa2..4a95f621 100644 Binary files a/_release/Path of Ascension [PRC8-CEP3].7z and b/_release/Path of Ascension [PRC8-CEP3].7z differ