Giter Site home page Giter Site logo

cjreek / eos-toolset Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 1.56 MB

A toolset to create custom data for NWN:EE

License: MIT License

C# 100.00%
neverwinter-nights neverwinter-nights-enhanced-edition neverwinter-nights-toolkit neverwinternights eos nwn nwn-ee eos-toolkit eos-toolset

eos-toolset's Introduction

Eos-Toolset

eos-toolset's People

Contributors

cjreek avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

finaldeath

eos-toolset's Issues

Request: Autogenerate iprp_feats.2da from feats.2da entries

Having a way to autogenerate entries in iprp_feats.2da would be great; I might script this but easier if EOS did it.

The gist would be the standard CEP/PRC way where each feat.2da line + 100 goes into iprp_feats.2da

However a selective option would be nice per-feat (or a default on/off, and if default on it has a dropdown to default / enable / disable explicitly per entry) - the custom EOS field could even suggest which line ID it'd be.

The iprp_feat.2da lines would need to stay consistent since once they're item properties changing them later becomes a mess. 100 + feat.2da line is pretty standard so sensible to do it that way.

Wouldn't need custom iprp_feats.2da entries then at all either.

Spells obtain "Sphere" targeting in some cases without selection

This might be caused by having multiple spells open and having some on the Visuals tab and some on Overview and "Sphere" sometimes got added where there should be no targeting data (ie there wasn't any before, single target spells).

If I find a consistent reproduction I'll add it here.

Request: Extension fields for a 2da be a separate 2da file

Some 2das get large, quickly, like feats and spells 2das

Having Extension Fields are great but having a way for it to dump them to a separate 2da on export would be amazing. A toggle per-2da under the Extension Fields tab would help me utilise it a fair bit more and not bloat certain 2da files with unnecessary data.

Dialog.tlk doesn't read ... in correctly (and other characters perhaps)

As an example if you edit Deekin Scalesinger's soundset (346) you get a missing 3 dots "..." (as one character) after "umm" on thee line Rest request:

image

Appears to strip it in TLK export since it is referencing a new line (for whatever reason) different line in this case.

image

I don't know exactly the TLK encoding format but probably needs a bit of tweaking to read/write these special characters throughout the program. Maybe check nim tools to see how that converts to/from CSV.

Bad data if feat is Duplicated causing crash

Duplicating a feat seems to duplicate it exactly - ie the IDs and UUIDs are the same, so it doesn't appear in the GUI. If you save the files, and try and reopen, it crashes on startup.

I duplicated in the Custom view a feat I'd already Overriden so should be easy to reproduce.

visualeffects.2da column name correction and unused fields

I've noticed that the visualeffects.2da column "SoundCessastion" is mispelled. The engine reads "SoundCessation" as per vfx_persistent.2da has. I can of course fix this manually before release and it only affected 3 VFX lines but I think worth fixing :)

These fields also don't work since instead the "cessation" animation of the current duration animation plays (except in the case of the ProgFX_Cessation apparently) so these can be culled from being generated saving some space in the 2da via. some kind of option perhaps.

Ces_Impact_Node
Ces_Root_S_Node
Ces_Root_M_Node
Ces_Root_L_Node
Ces_Root_H_Node

Request: Easier editor for IPRP_SPELLS similar to spells.2da

iprp_spells.2da is a huge 2da with 539 default entries, with 10 columns to boot, and you need to hand edit to add any new spells to be available on items.

It'd be amazing if the entries were made editable in an easier way like how spells are. Some additional features that could be added:

Button to generate a new line from a given selected spell:

  • Input automatic name based off spell name + level (can be overriden but this would be a great default)
  • Copy over the spell ID to SpellIndex
  • Automatic minimum caster level (can just base on Wizard progression, "Innate" spell level * 2 - 1 == minimum class level to get).
  • Copy over the Innate column to InnateLvl - this column is unused in iprp_spells but keeps it consistent. Could even make it uneditable.
  • Cost could be automatically calculated (or a tickbox to "manually input" or have a box for adjustments) since it should be "CasterLvl * InnateLvl * 750" as per notes here: https://nwn.wiki/display/NWN1/iprp_spells.2da (Epic spells are "special" so get massive additions though)
  • Automatically default the Potion, Wand and General columns:
  • Potion - If the spell is not considered hostile, and can target "Creature" (This captures a lot of stuff but is near enough)
  • Wand - If the spell level is 4 or lower
  • General - Just always tick this one
  • Automatically name the icon field (ie original spell icon name eg is_something becomes iss_something)

It could even be done as a editor inside of each spell, but tbh that could get messy fast (several need multiple entries for different caster levels so it's 1:Many).

Request: Global search also finds numbers in ID fields

Allows simpler finding of raw ID fields, eg: 115 would be able to find Melf's Acid Arrow.

Helps when the names don't match constant names, or logs only have numbers.

Additionally it's very rare for number-only name fields so it's rarely going to get in the way.

Request: Store consistent TLK lines once generated once

TLK entries, when you add even one, reorders the lot.

This is usually ok, I mean who doesn't mind autogeneration? But it causes some issues:

  • If you use a specific TLK line for something like an entry in a conversation or NUI panel this can get messy fast (I intend to add a 2da with a list of TLK strings / so it's editable in Eos but still might occur
  • Change control goes mad. All the JSON files suddenly get new changes even though only one thing changed. Makes diff and backtracking changes harder.

In my opinion the "best" way would be to store the custom TLK line - if needed - that the entry used in that specific field and only generate new TLK lines for those that are new edits without a TLK line assigned. If this is just done sequentially, if entries are deleted it'd not reorder everything. You could just store in the project settings the "last TLK line assigned". Having a manual option to reset this back to base so it fills in "now blank lines" might be nice, if it had a way of knowing if a TLK line is already in use, but wouldn't be needed a lot of the time.

Clippy put some thoughts here: https://discord.com/channels/255017439371329537/1084979078064521297/1188776644723351582

No visibility of numbers in item property tables

Item Properties "Table" data since they're not individual items don't show the 2da row IDs.

EG: what row ID is Bestow Curse for On Hit: Cast Spell:

image

There isn't any options to pad things for individual item property tables, so I'd need to have an idea about how many blank entries I am adding in relation to 2da row numbers to not clash with CEP or whatever else.

It's also a lot easier for creating custom constant IDs (see #25 )

Cut feats and classes do not generate constants

Classes like Shou Disciple or feats like Blinding Spittle don't generate constants even if they are manually entered in name.

Not the biggest issue as it were but might be good to have.

Polymorph.2da portrait choice cannot be searched

The portrait choice here isn't able to be searched/filtered:

image

It'd be very useful to have it operate like all the other ones where it pops up a searchable menu (eg subspells for a spell do this).

Might be missing in a few other places will post issues when I find that.

Request: Icons for all data types in tab bar

Base items have their little icons show in the top tab bar which is pretty useful! (It'd be nice if the dark mode had them more visible when there is transparency, maybe an always-white background or something to make them pop like spells/feats do).

It'd be nice to have an option to have similar icons appear for all types of data so it's at-at-glance clear. Perhaps it would be two characters (FT for feat, SP for spell, SO for soundset or whatever) so it's clear which thing is which.

VFX Impact Effect field is blanked on save

This field is blanked on save:

image

Not sure if other fields are affected not found any.

As mentioned previously VFX don't export a script constant yet either but can work around that.

UI: Cannot add return carriages to TLK entries in Custom Objects

example Custom Object;

    {
      "ID": "0cac1f69-ec35-4370-860c-e5df3ada9318",
      "Name": "Overhaul Manual",
      "Hint": "",
      "Overrides": null,
      "Items": [
        {
          "ID": "b9be061c-1f52-4a0e-b600-d0586318f5c2",
          "Label": "Entry",
          "Column": "Entry",
          "DataType": "aaae9a67-5b8b-4085-81f6-125fc8cf89a7"
        }
      ],
      "ResourceName": "op_manual"
    }

This is to just have a simple "Entry" field for a TLK string.

However the TLK string is single line and you cannot add return carriages to it.

image

Either a "TLK: Multiline" datatype, or a way for the UI to recognise enter and expand to a "full" box would be useful.

Rounding floats in appearance.2da

Minor issue but some floats in appearance.2da are being truncated/rounded.

eg: WING_TAIL_SCALE column, rows with values like 0.777 are being rounded to 0.78, or 0.632 to 0.63.

Values which are 1.0 (float) are also truncated to 1.

Mainly affects first exports to some kind of source control - not that it should matter a great deal - but comparison with base game files does become more difficult.

Not a major issue probably won't realistically affect a lot but might be an easy one to fix to keep accuracy with data imports.

Clashing nwscript.nss constants generated from Eos

Low priority this, but Several feats and classes generate clashing constant names (if they are not renamed manually in Eos).

I've included the constants that get generated for my project and the ones the nwscript.nss file has for reference.

I think this is all of them.

const int CLASS_TYPE_EYE_OF_GRUUMSH = 39;
const int CLASS_TYPE_SHOU_DISCIPLE = 40;

const int FEAT_BLINDING_SPITTLE_2_USESDAY_EYE_OF_GRUUMSH = 480;
-> FEAT_EYE_OF_GRUUMSH_BLINDING_SPITTLE
const int FEAT_BLINDING_SPITTLE_4_USESDAY_EYE_OF_GRUUMSH = 481;
-> FEAT_EYE_OF_GRUUMSH_BLINDING_SPITTLE_2
const int FEAT_BLINDSIGHT_10_FOOT_RADIUS_EYE_OF_GRUUMSH = 486;
-> FEAT_BLINDSIGHT_10_FEET
const int FEAT_BLINDSIGHT_5_FOOT_RADIUS = 485;
-> FEAT_BLINDSIGHT_5_FEET
const int FEAT_SWING_BLINDLY_EYE_OF_GRUUMSH = 483;
-> FEAT_EYE_OF_GRUUMSH_SWING_BLINDLY
const int FEAT_RITUAL_SCARRING_EYE_OF_GRUUMSH = 484;
-> FEAT_EYE_OF_GRUUMSH_RITUAL_SCARRING
const int FEAT_SIGHT_OF_GRUUMSH = 487;
-> FEAT_EYE_OF_GRUUMSH_SIGHT_OF_GRUUMSH
const int FEAT_COMMAND_THE_HORDE_EYE_OF_GRUUMSH = 482;
-> FEAT_EYE_OF_GRUUMSH_COMMAND_THE_HORDE

const int FEAT_DODGE_2_SHOU_DISCIPLE = 489;
->  FEAT_SHOU_DISCIPLE_DODGE_2
const int FEAT_DODGE_3_SHOU_DISCIPLE = 1031;
-> FEAT_SHOU_DISCIPLE_DODGE_3
const int FEAT_MARTIAL_FLURRY_ANY_SHOU_DISCIPLE = 899;
-> FEAT_SHOU_DISCIPLE_MARTIAL_FLURRY_ANY
const int FEAT_MARTIAL_FLURRY_LIGHT_SHOU_DISCIPLE = 866;
-> FEAT_SHOU_DISCIPLE_MARTIAL_FLURRY_LIGHT

const int FEAT_EPIC_HARPER_SCOUT_2 = 981;
-> FEAT_EPIC_HARPER_SCOUT

Interestingly some don't have constants (eg Master Crafter, Mercantile Background, Scrounger, Smooth Talk)

Custom Objects don't use Label field

Create a New Object for a custom additional 2da.

Edit the default Label field and it won't update the title of the entry. Looks to be the field doesn't get picked up.

image

Alternatively it's messed up since I also created a field called "Label" I later deleted, which would also be a bug.

Request: TLK Editor

This is a low priority request just something that might be useful, to allow TLK entries to be edited outside of 2da rows.

Some parts of this could be:

  • Having the "Base TLK File" and the games TLK files under "Standard" allowing read-only and "override"/"duplicate" entries as needed (override on the Base TLK file, ie the custom one, could even just actually override it like a 2da line override would, option would be unavailable on the games TLK file though) would be great, allowing some interaction with that otherwise hidden data.
  • An option for the block reserved for these TLK edits. Have perhaps a split of "TLK Manual Edit Offset" and "TLK Data Offset".
  • Allow the TLK entries ID to be shown and potentially moved around (since they're not tied to data entries).

Reasons for this:

  • Would allow for example adding of TLK strings used for SetTlkOverride that are not in 2da files, somewhere consistent
  • Could edit lines used for OC campaigns (albeit needing module edits to use them, this might be doable if the original TLK line is also stored and I do some fancy nim tool work)

Easier to edit these then in other 3rd party TLK editing tools.

I also have grand plans at some stage to have some method to convert conversation files from GFF to Json -> extract the text / dedupe it -> sort into a TLK file Json that Eos can read in. May make it easier for translations.

appearances "Sorted" crashes Eos toolset

Using the "sorted" option for appearances seems to crash the toolset. Consistently reproduced with this json file.

Of course just one single entry doesn't crash, but more than one seems to crash (tried with just 2 entries).

appearances.zip

Area Effects Metadata is always AOE_PER

The default autogenerated metadata for AOE effects is AOE_PER, meaning all your AOE effects are PER (persistent) defined in the constants file.

Not a big deal but probably best to just have the constant autogenerated entirely from the label, similar to how Bioware did it.

Request: Constant generation for various item properties

Item properties could be useful to have constants added for, mainly around spells but could be good for other systems too.

Example prefixes:

iprp_onhitspell.2da -> IP_CONST_ONHIT_CASTSPELL_
iprp_spells.2da -> IP_CONST_CASTSPELL_
iprp_quality.2da -> IP_CONST_QUALITY_
iprp_additional.2da -> IP_CONST_ADDITIONAL_
(noting iprp_material.2da doesn't have them generated for...no apparent reason)

Generating ones for custom iprp_ files would be nice too.

Crash: Soundset with duplicate override UUID

Repo file: soundsets.json

There are 2 soundsets in the list with the same "override" UUID; this is kind of intentional, one is an override (I just renamed it a little), one is based off it but with a different name and some different sound files to save me some time.

Not sure why the second (right click soundset: "Duplicate XXX" option) creates the UUID.

Setting the field to null in the json for the duplicate fixes it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.