Jump to content

argent77

Modders
  • Posts

    1,698
  • Joined

Everything posted by argent77

  1. WeiDU Mod Packager is a highly customizable GitHub Action that can be used to automate the creation of mod packages. Like AL|EN's Infinity Auto Packager it takes care of adding PI-specific iemod packages and platform-specific zip archives whenever a new mod release is published. The action provides a number of parameters to customize mod package creation, such as: Mod package type: iemod package or platform-specific zip archive (Windows, Linux, macOS). Architecture of included setup binaries: e.g. x86 (32-bit) or amd64 (64-bit). Mod package version: Whether to draw version number from the mod's tp2 VERSION flag, the GitHub release tag name, or specify a custom version string. Naming scheme: Derive from the mod's tp2 filename, the "Name" definition in the PI metadata file, or provide a custom mod package name. WeiDU version: The WeiDU version to use for the mod's setup binary. Platform-specific name prefixes: Helps to identify the target platform of the created mod package. The default prefixes are fully compatible with the modhub micro service. More details, operating instructions and a number of predefined scripts can be found on GitHub: WeiDU Mod Packager
  2. You'll also have to add the EVAL keyword (unless the mod uses the AUTO_EVAL_STRINGS directive.) OUTER_SET spell_num = IDS_OF_SYMBOL (~spell~ ~CLERIC_GIANT_INSECT~) ACTION_IF (spell_num >= 0) THEN BEGIN LAF RES_NAME_OF_SPELL_NUM INT_VAR spell_num RET spell_res END ACTION_IF FILE_EXISTS_IN_GAME "%spell_res%.spl" BEGIN COPY_EXISTING ~pxdelm0.spl~ ~override~ LPF ADD_SPELL_CFEFFECT INT_VAR opcode = 172 target = 1 STR_VAR resource = EVAL "%spell_res%" END END END
  3. There is no way to guess just by the timer value alone whether it was set by a game timer or a real timer. It all depends on the script trigger that evaluates the value. You can check basically every variable by a (Real)GlobalTimerExpired() trigger without the script complaining about it.
  4. That's graphics with semi-transparent pixels. They aren't relevant if you only want to convert tilesets.
  5. I don't have any experience with the mobile versions of the games. You have to try it out yourself. ETC1 is a rather old compression method, however, so it's likely that modern devices prefer ETC2.
  6. I can't answer that question. I know only that people over in the Android and iOS topics of the Beamdog forums had some trouble displaying pvrz-based tilesets and MOS files from modded game resources. That's why I created a small helper tool/mod that allows to convert pvrz files into the right format: https://github.com/Argent77/A7-TextureConvert
  7. Local variables are stored as opcode 187 effects directly in CRE files. Area-scope variables are stored as "Variable" structures in ARE files. Timers are stored as regular variables. They contain absolute time values (as ticks), however. Calculating the remaining time span isn't trivial but possible. You have to take the difference between the timer value and the (game or real) time value stored in the GAM file and divide the result by 15 to convert ticks to seconds. Note that game time is already stored as seconds in the GAM file, so you have to divide the timer value by 15 before taking the difference.
  8. IIRC, it's PVRTC for iOS and ETC1 or ETC2 for Android (or vice versa).
  9. It helps greatly to split a problem into several smaller parts which can then be coded more easily. For collecting all available spells I can think of two strategies: 1) Loop through all level 3 priest spells (SPPR301.SPL ... SPPR349.SPL) and check if the spells exist. 2) Look up entries in SPELL.IDS to determine available spells. If they meet your criteria then patch the spells and store their resource names in an array for later when you add them as op171 entries to your meta spell. Including kit-specific spells in the list is also possible but more difficult. You would have to scan the CLAB tables of all cleric kits and check the GA_xxx entries for valid cleric spells. The CLAB tables can be looked up in KITLIST.2DA.
  10. As you and subtledoctor mentioned before, you could associate the book with a dialog (via ITEMDIAL.2DA) that acts as a "confirmation dialog". Maybe like this? A dialog can execute any kind of scripting.
  11. oIWD is hardcoded to trigger the HoW endgame sequence when the party uses a travel trigger with the name "To9603_Special". No further conditions appear to be checked. A travel trigger with that name is defined in AR9604.ARE (where you fight Icasaracht) that is used to leave the area. The same sequence can be invoked by the script action ExpansionEndCredits() (which exists in AR9603.BCS but is never triggered in regular gameplay). Moreover, the game checks the global variable "Join_Posse" to decide whether to show the HoW end credits (if Join_Posse is zero) or return the party to Hjollder's home in Kuldahar (if Join_Posse is non-zero) when the HoW endgame sequence is executed.
  12. Does the mod provide the "rain" version of the water tiles (<resref>R.TIS)? They are implicitly used when rainy weather is active. Missing rain tilesets don't crash the EE games but it could be different for the original games.
  13. Monks receive a +1 ac bonus vs. missiles every 3 levels assigned to the "Missile AC modifier" field of the CRE (offset 0x4c). It could be hardcoded though if there is no spell assigned to it in the CLAB.
  14. Iirc it should work with SCS either way, but I'd suggest to install it after SCS just in case. I haven't heard about compatibility issues with ToF yet, so it probably works either way, too.
  15. Hidden Gameplay Options counts as a tweak mod since it patches UI files instead of overwriting them. Installing it after TA allows you to install subcomponents that are related to some options provided by Tweaks Anthology.
  16. I'd suggest to install this mod later, preferably after Tweaks Anthology. Btw, v3.0 is outdated, latest version is v4.7.
  17. Near Infinity v2.4-20240914 Near Infinity is a resource browser and editor for Infinity Engine games, such as Baldur's Gate or Icewind Dale. It is written in Java and available for Windows, macOS and Linux. This release provides a great number of smaller fixes, optimizations and improvements, such as new BAM Converter filters, improved check and search options, and improved file handling on case-sensitive filesystems. Near Infinity is available as a platform-independent Java JAR file, Windows installer and macOS PKG installer, as well as a Flatpak application from Flathub for Linux. More information as well as a detailed Changelog can be found in the respective topics at Spellhold Studios, Beamdog Forums, and GitHub Discussions. Download: GitHub (Java JAR file, Windows and macOS installers) Flathub (Linux Flatpak archive)
  18. [IWDEE] Invalid global "BELHIEFET_DEAD" checked in HoW area script AR9603.BCS The area script checks for Belhifet's death by evaluating his death variable "BELHIEFET_DEAD". This variable is never set in IWDEE, however. It's probably a leftover from oIWD (where it is set but never checked). IWDEE sets the global "SPRITE_IS_DEADBELHIEFET" instead, which is never checked though. The script still works because the checks always pass in their respective contexts. Affected script blocks in AR9603.BCS:
  19. Afaik spell scrolls being destroyed when you learn the spells is hardcoded since the spell learning effect is handled specially by the engine. It should be possible to add an effect that recreates the scroll, but such a feature could be abused to generate infinite XP.
  20. It's true that item usability flags are incorrectly set. However, this a monster-only weapon and currently only used by a single Spectral Hero (TRSPH3.CRE) from the TotLM campaign who happens to be a cleric.
  21. Timing mode 1 modifies the base stat directly which prevents any kind of restoration and isn't shown as a "red" number on the character record screen.
  22. Not quite. Text in Russian, Chinese and a few other languages require special fonts to be properly displayed in the game. These characters may be scrambled if a western game language is selected. (They won't crash the game though.)
  23. [All] Fix incorrect creature animation definitions Several creature animation (INI) files contain incorrect definitions which causes the game engine to use hardcoded defaults. BGEE, BG2EE, IWDEE: 1200.INI - DRAGON_RED (found: multi_new, expected: monster_multi) 1201.INI - DRAGON_BLACK (found: multi_new, expected: monster_multi) 1202.INI - DRAGON_SILVER (found: multi_new, expected: monster_multi) 1203.INI - DRAGON_GREEN (found: multi_new, expected: monster_multi) 1204.INI - DRAGON_AQUA (found: multi_new, expected: monster_multi) 1205.INI - DRAGON_BLUE (found: multi_new, expected: monster_multi) 1206.INI - DRAGON_BROWN (found: multi_new, expected: monster_multi) 1207.INI - DRAGON_MULTICOLOR (found: multi_new, expected: monster_multi) 1208.INI - DRAGON_PURPLE (found: multi_new, expected: monster_multi) 2000.INI - SIRINE (found: monster_layered, expected: monster_layered_spell) 2100.INI - VOLO (found: monster_layered, expected: monster_layered_spell) 2200.INI - OGRE_MAGE (found: monster_layered, expected: monster_layered_spell) 2300.INI - DEATH_KNIGHT (found: monster_layered, expected: monster_layered_spell) Due to an engine bug the dragon animation definitions cannot be fixed without also providing fixed sets of associated BAM files. PSTEE: F00C.INI: Remove bogus ini section "[12]" F04A.INI: Remove bogus ini section "[74]" These are probably leftovers from oPST's RESDATA.INI.
  24. I don't know if this is intended or a loophole. M'Khiin's weapons, armor and shields are coded (via ITEM_USE.2DA) so that they cannot be removed without being replaced by another item of the same type. It was probably made that way to ensure that the creature animation reflects the equipped items. However, it looks like you can equip her with regular items (e.g. axe, buckler or leather armor) which then can be removed normally without having to place something else into the slot. It also works with items that cannot be represented by her creature animation (e.g. daggers or clubs). This behavior makes the whole ITEM_USE.2DA restriction pointless.
×
×
  • Create New...