Jump to content

Avenger

Modders
  • Posts

    3,794
  • Joined

  • Last visited

Posts posted by Avenger

  1.  

    You probably won't break too much, or even anything at all, but you'll be following in Chimeric's footsteps basically. The field's purpose is really for InMyGroup() trigger.[/font][/color]

    EDIT - also, you can't use opcode 101 to protect against opcode 319. :( The 319 usability restriction seems to be some kind of hard-coded UI thing, rather than something that interacts normally with other effects.

     

     

    Look at 319's as additional usability flags. They are more like part of the item struct than real effects. These 'effects' don't even have a useful ApplyEffect method, and they are stored in a separate place when the item is loaded. They are just a hack to avoid changing the itm format. All of the EE changes kept header sizes intact, just to keep a semblance of backward compatibility

     

    Edit: if you want to make thieves unable to use scrolls, why not use opcode 181 with param2=1, param1 = 11 (this should work in EE).

  2. Set local variable is the 'old name' for 'special' field. Its old name is valid only in the store local variable opcode where it was first discovered. Since then, EE uses the special field in other opcodes extensively, mostly because this field is present in EFF V1.0 too, so it can be used without external eff (EFF V2.0)

     

    School is stored on a DWORD, so technically the WORD after the primary type is not 'unknown'.

     

    0x48 - is a previously unused field. EE uses it to discern primary and secondary targets in the scorcher (used only internally).

     

    After the resistance flags, there are 4 dwords. The last of them used to store the time it was first applied.

    After those there are 2 resrefs for the second and third resources.

     

    So, NI is structurally correct, IESDP is not.

    LONG Parameter3
    LONG Parameter4 - also used for slow poison
    LONG Parameter5 - currently not used by ANYTHING
    LONG Parameter6 - repurposed for first casting time in EE
    RESREF Resource2
    RESREF Resource3
  3. These are available since IWDEE was released.

     

    Effects (spl, itm, eff) saving throw field extra bits.

     

    I don't see this on IESDP so i guess this wasn't published yet.

    32 - evade spell

    64 - evade breath

    128 - evade death

    256 - evade wand

    512 - evade polymorph

    these bits are connected to the thief evasion ability, there is one bit for every saving throw type, respectively. (Sadly, i don't know much more about these)

    I don't see them used, so if evasion works without them, then ( :undecided:).

     

    1024 - ignore primary target

    2048 - ignore secondary target

     

    These are used when a .pro file has a line AOE (see scorcher.pro).

    Effects marked by 1024 won't affect the direct target of the scorcher projectile

    Effects marked by 2048 won't affect the bystanders.

     

  4. "what do I have to do to introduce this .2DA into BG2 like EE does - if that's possible? Or generally, how do you insert a new .2DA into the game and make the game recognize it - if that's possible?"

     

    Nope, if there is a new 2da introduced by the EE, you cannot simply use it in vanilla BG2. The actual code that uses the externalized data, is in the .exe. That's what makes the EE differ from vanilla.

     

    Well, except ToBEx, that does some modifications to the .exe, so it can do things like adding a new 2da.

  5. The amount/restriction type field (param2) has the order wrong.

     

    The high word (3rd and 4th bytes) affect the restriction type (0, 1, 2)

    The low word (1st and 2nd bytes) affect the number of usable slots (3 is the maximum by the way, as there are 3 resource fields in eff v2.0).

     

    Example in spwi908, which has no restriction (chain contingency) : 00a2h Parameter 2 00000003

     

    That is a WRITE_LONG 3 or WRITE_BYTE 3, so low word, first byte, whatever we call it :)

     

    Also a typo in the 0 type: Contingeny

  6. For a very long time, i didn't know that timing mode 10 (exact duration) is the same as timing mode 0 (duration), except timing mode 10 doesn't multiply timing with 15.

    DLTCEP had this timing mode named as 'trigger', because i've always tested the timing mode with 0 or very small durations, so it never occurred to me that this timing mode has an actual settable duration. IESDP has adopted same 'trigger' naming for this timing.

    This timing mode exists in SoA and was likely implemented for the custom bardsongs. See SPCL542A.

     

    Note, the duration is set to 100 - this is the standard duration for a bard song pulse. The hardcoded vanilla bardsong uses the same timing internally.

    Some bardsongs (SPCL751A) use a duration of 7 with timing mode 0. (7*15 is close to 100, but isn't exactly 100)

     

  7.  

    One thing I'm interested in is what range the Help action uses.

     

    Based on some tests in BGEE Help() has a range of 1152 (horizontal) and 864 (vertical) in map coordinates. Effective range will most likely vary depending on object specifier used for trigger Help(O:Object*).

     

     

    In the EE Help() has the range of "visualrange" * 48 ( *3 / 4 in the vertical )

    Where visual range is adjusted by opcode 262 and the '48' can be set by the 'Audible Range' game option in baldur.lua

     

    Don't ask me, why a blind person can only whisper. :undecided:

  8.  

    So I saw a lot of unknowns in the parameters of the opcodes, are they still unknown and just not updated in the database? Or do they still need to be explored?

     

     

    If you see any undocumented parameters that are not written in the unprocessed forum threads, then sure. Especially if you have some idea how they work. There could be still some special, parameter3 or parameter4 fields that are unknown.

  9.  

    Less number of triggers also mean less CPU cycle requirements. Your laptop or tablet will spare more battery, and you can't fry eggs on your PC ...

    Are you sure that's the case, withing the game's processes ?

    Cause the f = 8 + 4 + 2 + 1, aka the exact same thing.

     

     

    Yeah, as Ardanis said above. Processing a trigger takes a lot of operations. The engine is quite complex inside. And, these triggers are evaluated frequently.

    Jarno: evaluating those triggers takes about 5x the time than evaluating the combined trigger.

  10. Opcode 319 (the usability opcode) is empty in all of the regular effect methods. But just because an empty method is similar or optimized to be exactly the same, just an empty stub, it doesn't always mean the opcode is dud. Opcode 319 is absolutely not a normal opcode, it never gets pushed onto any object's effect queue, it never gets applied. It is even completely ignored in a spell. It just sits in the extra usability flag list of an item.

    Other opcodes, like Knock, are kinda similar, totally empty, yet when they are getting applied on an inanimate object, they might do something.

     

    Show creatures/retreat from (opcode 110) are empty and don't even have any 'special' function. Though retreat from has a function in PST(EE).

  11.  

     

    My point is to clear up the "unknowns" and that's whats in the code, if they are unused they can be marked as such, if they are used in one particular game, again they should be marked as such, or am I missing something

     

    I answered your question: "So are those used in any infinity game?"

    And my point was, somewhen at the early development of bg1, someone wrote those field names, but didn't follow up with any implementation. The rest of the games in the following 20 years just inherited the names. As of the EE, you can expect unused fields to be re-purposed when needed.

     

    The post of mine you're quoting has nothing to do with the answer you gave me, and to clear things up, the struct names are meaningless, I only included them for interest so I really have no idea what you're talking about.

    I accepted your answer, and replied as to why I was doing this, which has nothing at all to do with this answer.

     

    :undecided:

×
×
  • Create New...