Author Topic: Community Patch discussion and development thread  (Read 21032 times)

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #780 on: January 19, 2016, 09:21:58 am »


               

I realized that although I have problems using github or similar services, I can simply upload sources of my plugins on google drive.


 


So here they are, including some new stuff like fix for effect caster level or onhitcastspell which will be included in next 1.72 release.



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #781 on: January 20, 2016, 03:58:54 am »


               

Today, Im going through my screenshot folder as I'm making screenshots whenever I see any polygon gap ingame. Most of them are custom content which I do not care about but often I find new vanilla tileset issue.


 


Thats the case with ttr01_q12_01 and ttr01_q13_01. See image. Problem is, I am not able to fix these tiles. I can fix small polygon gaps, add black coverage polygons or hide something when tilefade, but whener the adjustion needs to alter texture I'm out. This is the case + actually the mismatch is so big that it would need remodelling actually.


 


Can someone help me with these two tiles?



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #782 on: January 22, 2016, 06:10:58 pm »


               

Community Patch 1.72 Beta 12 Released
download

 

To install it, follow as in 1.71 manual installation. Simply unpack the archive into folder with NWN files (thus if you do this right it will want to overwrite bunch of files which you have to confirm). The 1.72 is international, works for all languages as there are no changes in dialog.tlk file yet.

 

To uninstall it, either run 1.69 critical rebuild, 1.71 installation, or manually delete/rename the xp2patch.key file and rename the xp2patch171.key which is included in the 1.72 beta distribution.

 

 
Neverwinter Nights Community Patch 1.72 beta 12 content:

Fixed broken stuff from previous Patch versions:

- fixed 1.71 bug in Dirge where the spell had no effect on entering enemies and only heartbeat worked

- fixed several issues in 1.71 special AI for polymorphed creatures where such creatures get stuck when trying to use certain abilities and only performed melee attacks

- fixed 1.71 AI feature with heal/inflict spell substituting that could stuck creature due to the engine bug with TalentSpell

- fixed all the module-wise spell engine overrides from beta11 that weren't working due to the overlook in code

- added missing 70_inc_main library announced in beta11 (sorry overlooked)

 
Revisited features from previous Patch versions:

- removed module-wise spell engine override for caster level, DC and metamagic

- circle kick fix in nwnx_patch will work only for players now (often builder wants creature to switch targets and circle kick is easiest way to do that)

- the edge fix for chasm in forest and desert tileset reworked in order to make this fix custom content compatible (so it shows in custom tilesets based on forest/desert and modified forest/desert tilesets)

- battletide and dirge AI behavior changed from aura-like spells and moved to protection buffs as it was a bit weird to start with these spells and then use talents like fear aura + high AI was then able to cast battletide instantly which wasn't intended

- the variable to disallow identification of certain items renamed from DISALLOW_IDENTIFY to 72_DISALLOW_IDENTIFY

- nw_i0_spells: MySavingThrow will ignore paralysis immunity if the module switch 72_DISABLE_PARALYZE_MIND_SPELL_IMMUNITY is activated

- nw_i0_spells: DoSpellBreach feedback printed also for caster if its player

- 70_inc_main: NWNX_Patch_IsInUse() renamed to NWNXPatch_IsInUse() to unite with other plugin naming conventions)

New fixes and features:

Tileset fixes:
ttd01_z11_01 - new fix for the missing edge tile
ttf01_z11_01 - new fix for the missing edge tile
tcn01_h02_02 - fixed one part of the wall that didn't fade properly

tdc01_g17_01 - fixed polygon gaps in black coverage with tilefading enabled

tdc01_g17_02 - fixed polygon gaps in black coverage with tilefading enabled
tdc01_p13_01 - fixed polygon gaps + minor other fixes
tdt01_j11_01 - fixed polygon gaps in the wall
tdm01_c02_02 - fixed polygon gaps in the wall under water
tdm01_h17_01 - fixed polygon gap in the bottom edge of one pillar
tdm01_h18_01 - fixed polygon gaps in the bottom side of two pillars
ttr01_u04_01 - added missing black coverage to the upper arc, also filled the polygon gaps from bottom side of the arc which could be seen under specific camera angles
ttr01_v04_01 - added missing black coverage to the upper arc, also filled the polygon gaps from bottom side of the arc which could be seen under specific camera angles

 
2DAs:

- spells.2da: fixed Master reference for several shapeshifting subspells

- polymorph.2da: racial type of the super chicken polymorph form corrected to animal (was gnome)

 
Spells, feats and special abilities:

- Freedom of movement: added supernatural effect check as is in restoration spells - this allows to make a movement decrease effect which won’t be removed with this spell

- all poison special effects now controls poison immunity, if poisoned character acquired poison immunity the poison will fail

- Pit Fiend Ichor poison: the death will ignore death spells immunity only on hardcore and high difficult difficulty

- Blue Whinnis poison: the sleep effect will be removable by neutralize poison spell now

 
Scripts:

- added new item switch variable 72_DISABLE_ENCHANTMENT_SPELLS = 1, item with this variable won't be allowed to enhance with weapon/armor buffing spells

- 70_inc_ai: new library for AI functions, contains:


  • bkTalentFilterLoc - copy of bkTalentFilter that uses talent on location

  • bkTalentFilterSpell - copy of bkTalentFilter that uses ActionCastSpellToObject

  • TalentShapechange - moved here from x0_i0_talent to provide backwards compatibility (in case that module had modified x0_i0_talent but unmodified nw_i0_generic, then some scripts might threw error when compiling before - this won't happen again)

- 70_inc_main: added new function NWNXPatch_DumpEffects(object) for effect debugging purposes

Other:

- scroll of Negative Energy Protection set identified

 
AI:

- improved several AI routines to allow handle defensive casting in everything that creature casts

- fixed combat of huge creatures like dragons who had much higher chance to magic than intented because their target was never "close enough"

- further improved spellcasting: removed a code that could sent creature to start melee attack prematurely

- creatures will be able to count with the limit override in Power Word: Kill spell. That limit however must be enforced with spell id variable, ie. "131_LIMIT_OVERRIDE" either on creature or module

- significantly improved AI for polymorphed creatures introduced in 1.71:


  • creatures polymorphed into chicken, penguin and cow will no longer try to fight and will flee from enemies

  • AI will now handle spellcasting while in polymorph, by a rule of thumb - everything that’s not an ordinary spell (UserType != 1) will be allowed to cast even polymorphed, if its ordinary spell and the innate level is 5 or higher then the polymorph will be canceled and creature will cast this spell

  • however, creatures won't cancel polymorph earlier than after 3 rounds to avoid dumb situations

  • AI will now handle also polymorph self, tenser's transformation and shapechange polymorphs

  • AI will not use low CR polymorphs if the CR of the creature is way higher

  • AI will keep a track of the shifter form spell limits and won't use talent which has all uses depleted

     

Spell-engine:

- added module-wise modifier for DC (ie. spellid_DC_MODIFIER on module object)

 
NWNX_Patch and NWNCX_Patch plugins (current version v1.15):

- fixed crash exploit with cursed items

- ApplyEffectToObject now allows to use DURATION_TYPE_EQUIPPED and DURATION_TYPE_INNATE

- improved OnClientLeave module event: the GetExitingObject() will now return fully valid player object, ie. you can get location and any other info there


- fixed OnHitCastSpell itemproperty overriding the spell concentration check which led into casted spells being incorrectly uninterruptable (issue details)

- complete rewrite of the effect caster level initialization:


  • fixed caster level of spell effects cast from an item (which was set to last normal spell caster level or -1 if none such spell was cast by the creature)

  • properly takes into account negative levels

  • takes into account Pale Master levels if the appropriate module switch is active

  • takes into account any custom prestige class levels if the conditions are met (ie. arcane class with prestige class with ArcSpellLvlMod or divine class with prestige class with DivSpellLvlMod). Custom content note: custom arcane class must have SpellCaster equal to 2 in classes.2da.

  • takes into account community patch caster level override and modifier features (but only when creator is creature)

- added EffectDump function for the new effect caster level debugging purposes (this is unfortunately working only for server version of the nwnx_patch plugin)

 

 
Notes:

 

1) For ApplyEffectToObject, the new constants are: DURATION_TYPE_EQUIPPED = 3 and DURATION_TYPE_INNATE = 4. I forgot to add this into nwscript.nss so next time. However I have no idea how they behave. I copied this code from leo_x's linux plugin as I needed to make a change there so I included his improvements, but he has no description either. So you need to experiment a bit - make sure you post the results here.


 


2) The effect caster level is much complicated than it seems to be. On this page I wrote what it does normally and how it behaves now. To explain some of the terms inside that document. Delayed effect is an effect declared in a function that is delayed by DelayCommand or AssignCommand from spellscript. This is for example a case of Bigby's Clenched Fist spell where the stun effect is declared this way.


 


If you want to test this use NWNXPatch_DumpEffects(oPC); this will print (in server version) all effects (even internal) with all their informations into nwnx_patch.txt.


 


3) I'm not 100% confident with that -1 caster level on effects created in delays. When the creator is creature they come out undispellable, where previously they were always dispellable just the caster level was wrong and it could make dispel either incorrectly successful or unsuccessful. I think its just Bigby Clenched Fist that does this (inferno/hell inferno are making damage effects which are instant thus not subject to dispelling) and the stun is 1round long anyway so it probably not a problem and even then the stun comes from fist not fist caster so it should basically rely on fist presence anyway. Idk, your opinions?


 


4) Note that only effects are automatically taking into caster level calculation custom prestige classes, spellscripts will not do this and will only calculate PM levels (if enabled with module switch). This is actually intented to provide a support for custom content with its own spellscripts whose do not utilize CPP spell engine at all. For example, PRC has all spellscripts changed to account for their custom prestige classes that improves arcan/divine spellcasting. This all works correctly except the effects' caster level is unchanged. This will fix this issue (although PRC workarounded this by completely reworked dispels but due to this many spells have to work differently and the dispel is far from vanilla in behavior). Anyway. If you have custom prestige class that enhance arcane/divine spellcasting and you are using CPP spell engine, you need to use SPELL_CASTER_LEVEL_OVERRIDE or SPELL_CASTER_LEVEL_MODIFIER features (prefferably in spellhook) to take effect of your class levels into all spell scripts. And if you use SPELL_CASTER_LEVEL_OVERRIDE, the internal effect caster level will use this value over anything anyway.



               
               

               


                     Modifié par Shadooow, 24 janvier 2016 - 04:27 .
                     
                  


            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #783 on: January 24, 2016, 04:33:58 pm »


               

I finished the detailed documentation for the NWN©X_Patch plugin.


 


You can read it here.


 


While making this I found out I forgot to mention that last version 1.15 fixed also the OnHitSpelCast issue mentioned here. So I edited the list of changes and added it there.


 


Anyway, I would like to hear any comments or objections on the nwnx_patch features/functionalities. If you think something shouldn't be automatically enabled tell me what and why. If you think something is not a bugfix but balance change or that feature X doesnt even belong to plugin called patch or whather I want to hear it, but I want to hear why you think so too.



               
               

               
            

Legacy_Devlyn

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #784 on: January 26, 2016, 05:53:12 am »


               

I'm totally lost. I just dug out my old Neverwinter Nights II disk and installed it, not realizing how much time had past and that it would not be supported anymore, patch wise. I've tried following the directions but I don't seem to be understanding. I downloaded the 1.72 Beta 12, extracted it, then tried to copy into the NWN folder. That worked, but nothing has changed. I'm sure this is user error. Can you help? Do I need something to install a patch? Do I need to start with an earlier version? The version I have is fresh from the disk. 


 


Thanks in advance!



               
               

               
            

Legacy_Empyre65

  • Hero Member
  • *****
  • Posts: 662
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #785 on: January 27, 2016, 01:22:48 am »


               

Are you trying to install the 1.72 patch for NWN onto NWN 2?


 


This is the forum for NWN. The forum for NWN 2 is here: http://forum.bioware...nter-nights-ii/



               
               

               
            

Legacy_Devlyn

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #786 on: January 27, 2016, 04:21:54 am »


               


Are you trying to install the 1.72 patch for NWN onto NWN 2?


 


This is the forum for NWN. The forum for NWN 2 is here: http://forum.bioware...nter-nights-ii/




Arg blurg. So dum. *sigh* Sorry.


               
               

               
            

Legacy_Tchos

  • Sr. Member
  • ****
  • Posts: 454
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #787 on: January 27, 2016, 05:23:31 am »


               


I'm totally lost. I just dug out my old Neverwinter Nights II disk and installed it, not realizing how much time had past and that it would not be supported anymore, patch wise.




 


Aside from the link to the NWN2 forum, you'll probably also be able to make use of this link to the NWN2 patches.  The final patch is 1.23.  There's also a patcher that can automate the update process once you have those patches.



               
               

               
            

Legacy_Devlyn

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #788 on: January 27, 2016, 06:55:33 pm »


               

Wow! That's perfect! I was able to find all the updates. If someone else finds this, I just had to download the patches, move them to the NWN2 main folder (still zipped), disconnect from the internet (so it doesn't time out looking for patches online) and start nwupdate.exe. I'm sure the other patches will take other work, but I appreciate getting this far and now I need to know where to look for more info. 


 


Thank you all for not simply laughing at my ineptitude. I thought I double checked to make sure this was the right forum, but apparently third time would have been the charm.



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #789 on: February 07, 2016, 01:37:16 pm »


               

Atm working on AI.


 


I noticed I removed few spell usage checks in 1.70 and thinking about reenabling them


 


however, this will probably need some sort of intelligence check - not every creature should be able to cast so smart so what should be the condition?


 


intelligence 13+? humanoid race?


 


we are talking here about these spell rules:


 


- do not use drown on targets naturally immune to drown


- do not use level drain on targets naturally immune to level drain


- do not use sleep/daze on targets with 4+HD


- do not use hold/charm person on nonhumanoids


- do not use mind affecting spells on targets naturally immune to mind spells



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #790 on: February 09, 2016, 12:39:36 pm »


               

I think I will enable this to creatures with AI_LEVEL_HIGH only. Ie. only those that builder set up for this with 70_c2_aihigh9 OnSpawn script as no standard creature has this AI level.


 


Enabling this to everyone can cause the gameplay issues that were already reported in some modules, where badly balanced module might become too difficult if creatures will be more smart. That also raises a question whether I shouldn't move some of the 1.71 AI fixes//features to High AI as well to avoid this. HIPS casting? Curse song? I don't know, I think the highest impact has the randomized casting on sorcerers which is quite essential no matter how much more diffucult it may be.



               
               

               
            

Legacy_shadguy

  • Jr. Member
  • **
  • Posts: 85
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #791 on: February 09, 2016, 03:26:36 pm »


               

You can't balance everyone's modules for them.  Empower them with options, document, and go find other good uses for your time.  


 


-Dave



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #792 on: February 09, 2016, 04:45:14 pm »


               


You can't balance everyone's modules for them.  Empower them with options, document, and go find other good uses for your time.  


 


-Dave




Of course I can't. But what already happened by reports is that the module was semibalanced already. Balanced because the creatures were stupid, were using same spell over and over, not using some spells at all - but thats what the module creator counted with. When these creatures suddenly started behaving more logical and smarter, players suddently had issues beating the encounter.

 


This is why I didn't enabled AI to use several talents: Mummy Dust, Dragon Knight, Greater Sanctuary, Mass Heal and others as these spells might increase encounter difficulty too much.


 


Builders often uses creature wizard which gives creatures these feats/spells and they don't care creatures doesn't uses it. So many creatures still have these talents and I must count with that when improving AI as my AI is enabled automatically for all creatures.


 


As I said, I received two reports like this already and I was witness of these issues on a PWs where they installed community patch - it depends on encounter of course, but just curse song might swing the battle in monster favor easily.



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #793 on: February 11, 2016, 07:02:20 pm »


               

In next nwnx_patch version, the curse immunity to ability decrease immunity "fix" will be toggleable. It is actually possible to turn off via DisableEffectImmunityHook = 1 in nwnplayer.ini, however thats not ideal solution as this will also disable the immunity ignore on items with ability decreases.


 


Anyway, the thing is I found out new way to make options using diffsettings.2da.


 


So the question is whether to add a new line into diffsettings.2da which would look like this:



 


           Name                 DMEasy   Easy   Normal   Hardcore   DMPlayers   

0          NoCriticalOnPC       1        1      1        ****       ****        

1          NoAoOWithRanged      1        1      1        ****       ****        

2          NoAoOWithPotion      1        1      1        ****       ****        

3          MinPCDamagePercent   100      50     ****     ****       ****        

4          MaxNPCDamagePercent  25       50     100      100        150         

5          MinHP1               1        ****   ****     ****       ****        

6          MassiveDamage        0        0      0        1          1

7  CurseIgnoreAbilityImmunity   0        0      0        1          1



or just do it via module switch which has the advantage of using dynamically - values in 2DA are cached and can't be changed after game/server is loaded.


 


AND, if the diffsettings.2da is a way to go, then the question is whether I shouldn't move some of the already existing module switches there as well - the 72_DISABLE_PARALYZE_MIND_SPELL_IMMUNITY kind of fits there.



               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Community Patch discussion and development thread
« Reply #794 on: February 16, 2016, 08:00:55 am »


               

currently working on the possibility to create custom spellcasters


 


for now, I managed to remove the restriction on min lvl of paladin and ranger spells which is normally lvl 4 - now, it will be possible to allow paladin and ranger to cast cantrips or level1 spells from lvl 1 via cls_spgn_pal.2da / cls_spgn_rang.2da


 


showcase image