Author Topic: Special Ability  (Read 1155 times)

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #15 on: August 24, 2011, 03:22:32 pm »


               Right. Though its not very much possible to do without another issues and without nwnx.
               
               

               
            

Legacy_GhostOfGod

  • Hero Member
  • *****
  • Posts: 1490
  • Karma: +0/-0
Special Ability
« Reply #16 on: August 24, 2011, 04:13:39 pm »


               

ShaDoOoW wrote...

GhostOfGod wrote...

This might be a bit of a sloppy
approach but would it be possible to spawn an invisible creature at the
PCs location and then have the PC cast a fake spell and the invisible
creature cast the actual spell? Then just destroy the invis creature
after the spell is cast? Just an idea. Haven't actually tried
it.

I
cannot see how this solves anything. Except this its extremely lame
solution, pardon me for that expression but since you can adjust the
caster level in script like I did (with only one downside which is very
rare to occur) using some kind of faking via invisible creature is just
useless. Except the issues WhiZard already stated Im not very sure how
would you synchronize it so it would look as real spell + spawning
invisible creature every time...baad

Wow. Since when is this forum in the business of putting peoples IDEAS down so negatively. ':crying:'
               
               

               


                     Modifié par GhostOfGod, 24 août 2011 - 03:20 .
                     
                  


            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #17 on: August 24, 2011, 04:36:52 pm »


               Sorry I mean that when I was creating my feature I was considering all possible approach. Nobody here didnt came up with anything new or better for me. Plus I was asking help for this months before and nobody helped me, now when its done there is plenty of peoples who claims they can do it better...
               
               

               
            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #18 on: August 24, 2011, 09:58:35 pm »


               

ShaDoOoW wrote...
Re-using TLK lines doesnt solve the issue I had in mind which is that those without the changed TLK sill be gibberlish instead.

I wasn't planning on changing TLK in the first place.

EDIT: just realized my new idea has the same downside as yours as its a combo of both my and yours idea (make caster lvl at 40 by default and then decrease it via script and SR increase effect on monsters) so I will stick with current solution


You do realize your current solution would still have issues with creatures with both a SR increase effect and an SR decrease effect.


What is very time consuming and may require many computers to accomplish is to try to locate the local integer on a creature that stores the caster level (due to the way caster level works, I'm pretty sure it is done this way).  Once the local integer is located, all one has to do is use SetLocalInteger() and the whole caster level issue is solved.
               
               

               


                     Modifié par WhiZard, 24 août 2011 - 08:58 .
                     
                  


            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #19 on: August 25, 2011, 04:54:52 pm »


               

WhiZard wrote...

ShaDoOoW wrote...
Re-using TLK lines doesnt solve the issue I had in mind which is that those without the changed TLK sill be gibberlish instead.

I wasn't planning on changing TLK in the first place.

Then what were you planning? You specifically said:

I was suggesting adding lines so you could have:

Enervation (level 1)
Enervation (level 2)
etc.


how you want to do this without changing TLK or making custom TLK? Im lost.

You do realize your current solution would still have issues with creatures with both a SR increase effect and an SR decrease effect.


What is very time consuming and may require many computers to accomplish is to try to locate the local integer on a creature that stores the caster level (due to the way caster level works, I'm pretty sure it is done this way).  Once the local integer is located, all one has to do is use SetLocalInteger() and the whole caster level issue is solved.

No I dont realize that, what you mean?

Also dont understand what you point with local variables, but instead of guessing you could maybe download my patch and read readme? -> yes for overriding caster level I use local variable on creature/item but still can't see what you mean.
               
               

               
            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #20 on: August 25, 2011, 05:54:08 pm »


               

ShaDoOoW wrote...

WhiZard wrote...

ShaDoOoW wrote...
Re-using TLK lines doesnt solve the issue I had in mind which is that those without the changed TLK sill be gibberlish instead.

I wasn't planning on changing TLK in the first place.

Then what were you planning? You specifically said:

I was suggesting adding lines so you could have:

Enervation (level 1)
Enervation (level 2)
etc.


how you want to do this without changing TLK or making custom TLK? Im lost.

The only lines added are to iprp_spells.2da.  They will reference the same tlk lines as the spell.  Thus ingame it will look like nothing happened (the item property switched from cast:spell enervation to cast:spell enervation) only the caster level changed.


You do realize your current solution would still have issues with creatures with both a SR increase effect and an SR decrease effect.


What is very time consuming and may require many computers to accomplish is to try to locate the local integer on a creature that stores the caster level (due to the way caster level works, I'm pretty sure it is done this way).  Once the local integer is located, all one has to do is use SetLocalInteger() and the whole caster level issue is solved.

No I dont realize that, what you mean?

Also dont understand what you point with local variables, but instead of guessing you could maybe download my patch and read readme? -> yes for overriding caster level I use local variable on creature/item but still can't see what you mean.


The above two points are separate and I will address them in order.

1) SR decreases do not stack.  Thus to effectively decrease SR on a creature with nature's balance or breach reductions you will need to add the amount you wish to reduce to the amount of the highest SR decrease effect and apply that as one effect.  Unfortunately only a 3rd party utility can get the SR decrease amount from an effect, and then it has to go through all the SR decrease effects to determine which is used as the highest.

2) The game likely stores caster level as a local integer, and GetCasterLevel() is likely used to retreive that integer.  Thus finding which local integer it is may allow for a very easy way to create a SetCasterLevel() function.
               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #21 on: August 25, 2011, 06:13:46 pm »


               TLK: ok then havent thought of that, then its doable if the lines will be sorted by caster lvl or even line number (that would be awfull but still useable). Still this solution is atm not useable for me if I dont want to make any conflict in various CC. That may however change when I finally complete the 1.70 version and there will be demand for more features/fixes.

SR decrease: Didnt know but its workadoundable. You can set the ammount of the spell decrease into variable when applying from the spellscripts. OK thanks, ill fix this issue. It cannot work with any CC but thats acceptable price

CasterLevel: no you are wrong, the game stores as variables only few informations .like mappins. Caster level is function that calculates it every time you call it. Its not stored anywhere, if it would then you could find it when you save module and open it. Or for PCs there is a method how to loop all variables on him via nwnx, I already try it on every object in game mainly encounters but except mappins, there is nothing stored in locals AFAI-and my friends-K.
               
               

               
            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #22 on: August 25, 2011, 06:26:07 pm »


               

ShaDoOoW wrote...
CasterLevel: no you are wrong, the game stores as variables only few informations .like mappins. Caster level is function that calculates it every time you call it. Its not stored anywhere, if it would then you could find it when you save module and open it. Or for PCs there is a method how to loop all variables on him via nwnx, I already try it on every object in game mainly encounters but except mappins, there is nothing stored in locals AFAI-and my friends-K.


It doesn't recalculate at call.  Try with area of effects and unrelated scripts and you will see it just keeps returning the same number until you cast another spell, in which case it will keep on returning the caster level of the next spell.  There is information stored in relation to your character and all the noticable calls to set it are hardcoded. 
               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #23 on: August 25, 2011, 07:05:45 pm »


               Right you find a error in my statement, but still is not stored in local variable.
               
               

               
            

Legacy_Failed.Bard

  • Hero Member
  • *****
  • Posts: 1409
  • Karma: +0/-0
Special Ability
« Reply #24 on: August 25, 2011, 07:22:08 pm »


               NWNX has GetFirst/GextNext variable functions, so it's easily checked what variables are stored on the character. Caster level and Metamagic aren't among them, unfortunately.

Name: bX3_M_ARCHERY Type: 1 Object: 7ffffffd Position: 0 Label: Command:
Name: oX3_Skin Type: 4 Object: 7ffffffd Position: 1 Label: Command:

Those two, and variables for journal entry states were the only ones stored on the character after casting a spell and checking them.
               
               

               


                     Modifié par Failed.Bard, 25 août 2011 - 06:27 .
                     
                  


            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #25 on: August 25, 2011, 08:07:08 pm »


               

Failed.Bard wrote...

NWNX has GetFirst/GextNext variable functions, so it's easily checked what variables are stored on the character. Caster level and Metamagic aren't among them, unfortunately.


Thanks for checking.  The only other places that might have it that could be alterable are the databases (SetCampaignInt() I don't think this one's the case) or the module's local variables.  If someone wants to tackle these and is successful, it would really be a boon to the community.  Otherwise, if it is not in those locations, I guess we are at a loss for directly changing it by standard script.
               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #26 on: August 25, 2011, 08:28:17 pm »


               Its not in database, if it would then every module would created some database when launched. This is not the case of how things works.
               
               

               
            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #27 on: August 25, 2011, 08:34:09 pm »


               

ShaDoOoW wrote...

Its not in database, if it would then every module would created some database when launched. This is not the case of how things works.


I said unlikely, but a database like "dbgeneral" might be a location, the standard Neverwinter does not come devoid of databases you know.
               
               

               
            

Legacy_WhiZard

  • Hero Member
  • *****
  • Posts: 2149
  • Karma: +0/-0
Special Ability
« Reply #28 on: August 25, 2011, 10:15:58 pm »


               

WhiZard wrote...

ShaDoOoW wrote...

Its not in database, if it would then every module would created some database when launched. This is not the case of how things works.


I said unlikely, but a database like "dbgeneral" might be a location, the standard Neverwinter does not come devoid of databases you know.

Tested all databases in the database folder.  None of them are affected by a  caster level change.
               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Special Ability
« Reply #29 on: August 26, 2011, 01:05:18 am »


               I told you. Its not so easy, if it would someone else would found it out already after all its 10years old game. You are not the first one who had this idea with local variables, Im pretty sure that Primogenitor original founder of PRC and the first who found out mappins was also looking for something like caster level.