Skip to content

New versions of NearInfinity available

1679111244

Comments

  • Sam_Sam_ Member Posts: 172
    edited October 2015
    @argent77
    I'm getting a bit of an unexpected search result. In ToSC game, I use the navigation tree to go to CRE -> VALINO.CRE, go to the Edit tab, and select Find -> references to this file -> Default -> Search. The results are:
    Searched for: VALINO.CRE
    Number of hits: 21
    File: CH1CUT02.BCS Name: None
    File: CHPTXT0.2DA Name: None
    File: CHPTXT1.2DA Name: None
    File: CHPTXT2.2DA Name: None
    File: CHPTXT3.2DA Name: None
    File: CHPTXT4.2DA Name: None
    File: CHPTXT5.2DA Name: None
    File: CHPTXT6.2DA Name: None
    File: CHPTXT7.2DA Name: None
    File: CHPTXT8.2DA Name: None
    File: DRMTXT2.2DA Name: None
    File: DRMTXT3.2DA Name: None
    File: DRMTXT4.2DA Name: None
    File: DRMTXT5.2DA Name: None
    File: DRMTXT6.2DA Name: None
    File: DRMTXT7.2DA Name: None
    File: INTERDIA.2DA Name: None
    File: ISLOFF.2DA Name: None
    File: ISLON.2DA Name: None
    File: TOSCEND.2DA Name: None
    File: TOSCST.2DA Name: None
    However, I can not find any reference to Valino (or Valinor) in any of these files. I then go to Search -> Text Search -> 2DA using the menu bar at the top, and perform a search for "valino". No hits are found. Nor are any results found when performing a BCS Text Search for "valino". Any ideas?

    And who the heck is Valinor, and why is he worth the second most XP of any CRE in the game? The only Valinor I am familiar with is Tolkien's, but further down that page a reference is made to a possible D&D connection:
    In the Arcanis Dungeons & Dragons campaign setting the word "Valinor" also refers to celestial servants of the Gods. Their names often are in the style of the god, such as the Mercy of Neroth or the Judgement of Nier.
    Searched for: XP value - 9999
    Number of hits: 15
    File: ELMIN1.CRE Name: Old Man Attribute: XP value=26000
    File: ELMIN2.CRE Name: Elminster Attribute: XP value=26000
    File: ELMIN3.CRE Name: Elminster Attribute: XP value=26000
    File: ELMIN5.CRE Name: Elminster Attribute: XP value=26000
    File: ELMINS.CRE Name: Elminster Attribute: XP value=26000
    File: SHANDAL2.CRE Name: Shandalar Attribute: XP value=26000
    File: VALINO.CRE Name: Valinor Attribute: XP value=20000
    File: DEATHK.CRE Name: demonknight Attribute: XP value=15000
    File: KOVERA.CRE Name: Koveras Attribute: XP value=15000
    File: SAREV1.CRE Name: Armored Figure Attribute: XP value=15000
    File: SAREVO2.CRE Name: Sarevok Attribute: XP value=15000
    File: DELTAN.CRE Name: Duke Eltan Attribute: XP value=12000
    File: DRIZZT.CRE Name: Drizzt Attribute: XP value=12000
    File: ANGELO.CRE Name: Angelo Attribute: XP value=10000
    File: CADDER.CRE Name: Cadderly Attribute: XP value=10000
  • argent77argent77 Member Posts: 3,431
    Near Infinity since v1.36-20150925 takes CREs' script names into account when searching for resource references. The script name of VALINO.CRE is "None", which is a widely used keyword in many resources. That's why you can see so many false positives in the search results.
    Unfortunately BCS resources are treated as simple text files by the search algorithm, without taking semantics into account. In the case of CH1CUT02.BCS, "None" is mentioned in the ChangeAIScript() action. I should probably add "None" to the ignore list in future releases to reduce the number of false positives.

    Btw, Valinor appears to be an unused CRE resource in BG1.
    Hurricanelolien
  • switswit Member, Translator (NDA) Posts: 495
    @argent77, since the SHS is down I will make yet another request here :) If it's not a huge problem I'd like to ask for NI to use statdesc.2da with Display Special Effect Icon (142) and Prevent Special Effect Icon (169) spell effects (Parameter #2). Currently it shows "unknown" for any icons added by mod.
  • argent77argent77 Member Posts: 3,431
    That's definitely doable (and preferable to the current static lists). Consider it implemented in the next release. :)
    lolien
  • kjeronkjeron Member Posts: 2,367
    edited October 2015
    @argent77
    Another, more complicated one: SPLPROT.2da
    Could that file also be read and used instead of a static list for its relevant opcodes?
  • argent77argent77 Member Posts: 3,431
    SPLPROT.2DA looks pretty complicated and is (currently) only used in IWD:EE. I'll have to look into it further before I can decide whether it's possible to implement it.
    lolien
  • kjeronkjeron Member Posts: 2,367
    argent77 said:

    I can understand that alignment checks might have changed in IWDEE. However, lines 39 and 40 don't really make sense to me (Paladin is defined as 6 in CLASS.IDS). Am I interpreting the values correctly?

    Second question: STAT 0x107 is defined as daytime. Which IDS file is used for this check?

    It does indeed check for the fighter/mage class, instead of Paladins. The only spell that uses it is Cloud of Pestilence, blocking out those who should be immune to magical disease(Paladins), so it looks like SPLPROT has the wrong value.

    0x107 doesn't appear to be implemented:
    X 0x107 1 1
    X 0x107 1 5
    X 0x107 1 8
    X 0x107 1 9
    X 0x107 1 10
    X 0x107 1 11
    X 0x107 0 1
    X 0x107 0 5
    X 0x107 0 8
    X 0x107 0 9
    X 0x107 0 10
    X 0x107 0 11
    all return false.
  • argent77argent77 Member Posts: 3,431
    The incorrect class values are probably a copy & paste error from GemRB, which uses the same values in their SPLPROT.2DA.

    It looks like GemRB uses a simple flag for stat 0x107 (daytime), so it's probably safe to assume that IWD:EE does the same (eventually).
    brus
  • kjeronkjeron Member Posts: 2,367
    argent77 said:

    PRO resources contain a word-sized field at offset 0x2a, which is labeled as "Lance width" in DLTCEP's GemRB extension for PRO resources. Is this field supported in IWD:EE as well? I've seen SWAVE.PRO using a non-zero value at this offset.

    Yes it is functional in IWD:EE.
    The field defines the proximity radius of the projectile fired, with a maximum value of 32767, anything above that goes negative and has no radius(never hits anything). Appears to (also/currently) require the "Pass Target" flag at 0x2c. Together they enable a single-target projectile cast at "target point" to actually hit a creature. Normally the targeting has to be "living actor" to hit something with a single-target projectile.
  • XzanahXzanah Member Posts: 145
    @argent77 I am wondering if I could get your permission to use your source code to make an online version of NE? Just so Android users can take online BAM and other files and edit them? I'd need help on the project, and I'm asking for courtesy. I am working on developing an android app using the source, so I would need help making a GUI for that. Thanks in advance, argent.
    lolien
  • argent77argent77 Member Posts: 3,431
    Near Infinity is an open source project licensed under the LGPL v2.1. Feel free to use Near Infinity's sources and resources in your own projects as long as they're following the license terms.

    I don't have any experience with Android programming, so you are on your own in that regard. However, I'm happy to answer any NI-specific questions.

    Good luck with your project. :smile:
    JuliusBorisovXzanahlolien
  • [Deleted User][Deleted User] Posts: 0
    edited October 2015
    The user and all related content has been deleted.
  • AstroBryGuyAstroBryGuy Member Posts: 3,437
    Unfortunately, I don't experience this issue, so I'm not sure what is going wrong. The wrapper shouldn't do anything to affect where java looks for the prefs file.

    Does your prefs file have the following lines:

    < key > LookAndFeelClass < /key >
    < string > com.apple.laf.AquaLookAndFeel < /string >
  • argent77argent77 Member Posts: 3,431
    edited October 2015
    @subtledoctor LookAndFeel is a remnant of older NI versions and can be safely removed from the config file. More recent NI versions are using LookAndFeelClass. The table column and panel sizes are defined by TableColWidthAttr, TableColWidthOfs and TablePanelHeight.
    However I suspect a permission issue, a syntax error in the config file or an incompatible configuration state to be the more likely cause in your case. Does NI's debug console show anything in this regard?
  • [Deleted User][Deleted User] Posts: 0
    edited October 2015
    The user and all related content has been deleted.
  • argent77argent77 Member Posts: 3,431
    Does it work when you start NearInfinity.jar directly? Do you see any errors when you start it from the command line (e.g. "java -jar NearInfinity.jar")?
  • argent77argent77 Member Posts: 3,431

    Update: NearInfinity v1.36-20151023

    Changes:
    - Fixed a bug in Reference Searcher for StringRefs.
    - Improved Reference Searcher for CRE resources to minimize the number of false positives.
    - Added new datatype used in IWD:EE and future patch versions of BG:EE and BG2:EE that dynamically generates an textual interpretation of SPLPROT.2DA entries for IWD-style IDS values. You can see it for opcodes 318, 324 and 326 as well as two fields in PRO resources when flag "IWD style check" has been enabled.
    - Replaced static list of portrait icon descriptions by a dynamic list generated from STATDESC.2DA.
    - Added tool tips to a number of flags (currently SPL/Exclusion flags, ARE/Area type, ITM/Usable by).
    - Better command line parameter support: Call "java -jar NearInfinity.jar -help" for more information.
    - Several minor fixes and improvements.
    JuliusBorisovlolien
  • kjeronkjeron Member Posts: 2,367
    Thank you again @argent77

    At a glance, I found two issues for the SPLPROT.2DA changes:
    Text issue:
    Match entries x and y / Not match entries x and y
    - functionally, these are "or" arguments, not "and" arguments.

    PRO resources fields, with the "IWD style check" flagged:
    - Creature value fields(0x3c, 0x40) do not display their dynamic IDS listing when a "-1/specified value" is chosen in the Creature type field(0x3e, 0x42).
    - It works fine when the "IWD style check" is not flagged though, since it then combines the two fields(type and value) into a single field for the old eff/IDS format.

    P.S. The code to support SPLPROT.2da and the opcodes/projectiles is already functional in BG2:EE, just the file itself is missing.
  • argent77argent77 Member Posts: 3,431
    kjeron said:

    Text issue:
    Match entries x and y / Not match entries x and y
    - functionally, these are "or" arguments, not "and" arguments.

    Thanks. I'll fix it in the next release.
    kjeron said:

    - Creature value fields(0x3c, 0x40) do not display their dynamic IDS listing when a "-1/specified value" is chosen in the Creature type field(0x3e, 0x42).

    That's intentional. The code to dynamically change field types in NI is very complicated. In the case of PRO resources I would have to manage two nested dynamic field changes, which is currently a nightmare to implement. I might add this functionality in future releases though.
    kjeron said:

    P.S. The code to support SPLPROT.2da and the opcodes/projectiles is already functional in BG2:EE, just the file itself is missing.

    IWD-style fields in NI depend on the existence of the SPLPROT.2DA file, so you can already activate this field in BG2:EE if you create a copy of SPLPROT.2DA (and associated IDS files) in this game.
  • kjeronkjeron Member Posts: 2,367
    argent77 said:


    That's intentional. The code to dynamically change field types in NI is very complicated. In the case of PRO resources I would have to manage two nested dynamic field changes, which is currently a nightmare to implement. I might add this functionality in future releases though.

    Okay, no argument there.
    argent77 said:


    IWD-style fields in NI depend on the existence of the SPLPROT.2DA file, so you can already activate this field in BG2:EE if you create a copy of SPLPROT.2DA (and associated IDS files) in this game.

    I added it as soon as Patch 1.3 hit, was just commenting that BG2EE isn't waiting on a patch to use it, just mods.

    Again, thank you.
  • kjeronkjeron Member Posts: 2,367
    argent77 said:

    Another question regarding SPLPROT.2DA.

    Entry 47 is defined as follows: "Not match entries 32 or 27", where entry 32 contains another indirection "Not match entries 1 or 11".
    Fully expanded, it results into: Not match (Not match (GENERAL/UNDEAD or RACE/MYCONID) or RACE/GOLEM).
    The static description is "Breathing", which should exclude all of the aforementioned races. However, expanded entry 47 contains a double negative, which results in a "Some of them are breathing". Or is it processed differently by the game engine?

    Entry 48 is similar: "Match entries 32 or 27"
    and results into: Match (Not match (GENERAL/UNDEAD or RACE/MYCONID) or RACE/GOLEM).
    The static description is "Not breathing", which should exclude all but the aforementioned races. This rule also doesn't fully match the static description.

    It's processed as you suspect, and the spells that use it are not working properly in game. Since Race:Myconid and Race:Golem are mutually exclusive, the Race:Golem check becomes irrelevant.
    Entry 47(Breathing) returns true only for General:Undead or Race:Myconid.
    Entry 48(Not Breathing) returns true for anything except General:Undead or Race:Myconid.

    The only use of it I found in the vanilla game was a Mustard Jelly Vapor ability(slow+fatigue), granting protection(318) to entry 48(not breathing). Golems and goblins were immune, but skeletons were not.
  • argent77argent77 Member Posts: 3,431
    Thanks for the confirmation. I'll post it together with another bug in this file in the IWD:EE Bugs section.
  • AbelAbel Member Posts: 785
    edited November 2015
    I've been trying to make searchs by resource/file name, but it doesn't seem like either the search or advanced search functions allow that. Did I miss it? If not, it'd be a nifty feature to add to the already excellent NI.
  • argent77argent77 Member Posts: 3,431
    It depends. How do you want to search for resources?

    The Extended Search provides a number of specialized fields where you can select the resource to search for. Or you can use the "Custom filters" sections to search in fields not covered by the search mask.

    If you want to find references to a specific resource, I'd recommend to open the resource you want to search for and select Find...->"references to this file" instead.
    Abel
  • AbelAbel Member Posts: 785
    Thanks @argent77! What I wanted was to get a list of resources containing a certain string. For example, which creatures have "SU" in their resource name. Can I do that with the Extended Search?
  • argent77argent77 Member Posts: 3,431
    Unfortunately, NI doesn't have such a feature. If you want to see a list of resources starting with a certain string, you can use the "Find resource" button (on top of the navigation bar).

    For more complicated search patterns I'd recommend to write a WeiDU script instead. For example:
    BACKUP ~findresources/backup~ AUTHOR ~Myself~ BEGIN ~Find CRE resource names containing 'SU'~ NO_LOG_RECORD COPY_EXISTING_REGEXP - NOGLOB ~^.*SU.*\.CRE$~ ~override~ PATCH_PRINT ~Found: %SOURCE_FILE%~
    brusAbelelminster
  • kjeronkjeron Member Posts: 2,367
    @argent77
    Some more info/bugs on Projectile Files:
    - Secondary Projecile, Offset 0x214: This is using the wrong IDS file for its selection menu. Currently uses MISSILE.IDS, should use PROJECTL.IDS. I think it may be the only place the values in PROJECTL.IDS are actually used instead of MISSILE.IDS.

    - Explosion Effect, Offset 0x217: Value "254" is used for custom projectiles. Can it be added to the default selection menu, or have this field read "FIREBALL.IDS" for its selection menu?

    - Extended AoE Flags, Offset 0x240, bit 0x1000(12): This bit is set on many of the "IDPRO###" projectiles added for IWDEE support. Cannot discern what it does though, any idea?

    - Extended AoE Flags, Offset 0x240, bit 0x8000(15), when combined with:
    Area Flags, Offset 0x200, bit 0x8000(15) - [Single Target] and
    Extended AoE Flags, Offset 0x240, bit 0x400(10) - [Use HD lookup]
    Switches the dice fields to lookup current Hit Points, instead of Hit Dice.
    I think it is treated as such:
    # of dice = Hit Point total
    dice size = Max HP per creature

    argent77
  • argent77argent77 Member Posts: 3,431
    Thanks for the info.
    kjeron said:

    - Secondary Projecile, Offset 0x214: This is using the wrong IDS file for its selection menu. Currently uses MISSILE.IDS, should use PROJECTL.IDS. I think it may be the only place the values in PROJECTL.IDS are actually used instead of MISSILE.IDS.

    The "Secondary projectile" field in PRO resources is already using PROJECTL.IDS. Currently NI doesn't make use of MISSILE.IDS at all, but uses a hardcoded list as fallback solution for games without PROJECTL.IDS. Afaik, this list is only used for the "Projectile" fields in ITM and SPL ability structures.
    kjeron said:

    - Explosion Effect, Offset 0x217: Value "254" is used for custom projectiles. Can it be added to the default selection menu, or have this field read "FIREBALL.IDS" for its selection menu?

    Will be added. This field uses a hardcoded list of entries and can be easily expanded. I don't know if FIREBALL.IDS is used at all by the game.
  • kjeronkjeron Member Posts: 2,367
    edited December 2015
    argent77 said:

    The "Secondary projectile" field in PRO resources is already using PROJECTL.IDS. Currently NI doesn't make use of MISSILE.IDS at all, but uses a hardcoded list as fallback solution for games without PROJECTL.IDS. Afaik, this list is only used for the "Projectile" fields in ITM and SPL ability structures.

    Okay, something is still off then. For example, "IDPRO214", the projectile for Incendiary Cloud, shows "IDPRO407.PRO (434)" in that field, when it actually uses "icloudb.pro". IDPRO407 is the projectile for Emotion Hope/Courage.
    "IDPRO407" is #433 in PROJECTL.IDS, and #434 in MISSILE.IDS
    "icloudb" is #434 in PROJECTL.IDS, and #435 in MISSILE.IDS

    Every other projectile field I know of uses the values in MISSILE.IDS, easily noticed because both "0" and "1" are "none" (both in game and in NI). If they used PROJECTL.IDS, "0" would be "none", "1" would be "arrow". Does NI adjust the values(+1) in selection menu's that are drawn from PROJECTL.IDS? EDIT: Maybe the game does the same, since projectiles only need to be listed in PROJECTL.IDS to be used.
Sign In or Register to comment.