Jump to content

CamDawg

Gibberling Poobah
  • Posts

    12,010
  • Joined

Everything posted by CamDawg

  1. The Icewind Dale Fixpack is designed to fix several bugs and errors that remain in the game after the official patches have been applied. Version 6 adds a handful of new fixes and corrects a bug that would produce invincible revenants. The Fixpack works with or without the expansions Heart of Winter and Trials of the Luremaster installed. In fact, many issues quietly fixed by Heart of Winter or Trials of the Luremaster have been rolled back to every version of the game. Learn more about the mod View the Readme Full documentation Download the mod v6 Changelog The paperdoll fixes should play nicely with other mods Purvis' script will no longer keep trying to hide him after he's dead Fixed duplicate random drops in the expansion Fixed school of Charm Person (GOG version only) Charm Animal could charm non-animals in HoW/TotLM games More fixes for the Game Text Update Updated function library
  2. This is also in error. A non-zero UNARMED_DIVISOR means 1 unarmed attack plus an additonal 1/2 (not full) attack per every (value of UNARMED_DIVISOR) levels.
  3. The followup for the NDA'd links. NearestDoor, used with a nested object, crashes ToB. It now behaves as expected, though NearestDoor(Myself) still misbehaves--just use NearestDoor(). Fo the contingency (232) opcode, quoth the Avenger: For opcode 319, quoth the Coriander: The second quote is inaccurate (as was I in my first post), as it was later decided to use DV targeting. To make an item usable by only one creature, parameter2 is set to 10 and the resource field to the DV (paameter1 is not relevant). The interesting revelation from the SetAreaScript thread is that every area in the engine has the full array of six script slots. From Cori: So you can set an override/race/etc. script for an area, with a caveat. Apparently every object has the full array of these scripts (i.e. areas, containers) but they're not stored through save/load. Cori again: An example usage she gave was TEST.BS IF HotKey(D) THEN RESPONSE #100 SetAreaScript("chicken", 2) END CHICKEN.BCS IF TRUE() THEN RESPONSE #100 CreateCreatureObject("CHICKE", Player1, 0, 0, 0) END which will flood the given area with chickens once you press D. There's not really a lot to add to the 320 description above, or to the AdvanceTime command.
  4. Apologies, but apparently some of the links in my OP are going to the private beta testing forums and are not necessarily available to the general public. I'll try to find better links or post the relevant discussions.
  5. EE has dir.ids, which is now referenced by all of the actions that use an orientation argument (i.e. CreateCreature is now CreateCreature(S:NewObject*,P:Location*,I:Face*DIR): IDS 0 S 1 SSW 2 SW 3 SWW 4 W 5 NWW 6 NW 7 NNW 8 N 9 NNE 10 NE 11 NEE 12 E 13 SEE 14 SE 15 SSE A blank moraleai.ids is included just to shut up DLTCEP. As for actions, I've already mentioned 352 and 353 above: 352 SetAreaScript(S:Script*,I:ScriptSlot) 353 AdvanceTime(I:Time*GTIMES) 354 RunAwayFromNoInterruptNoLeaveArea(O:Creature*,I:Time*) 355 RunAwayFromNoLeaveArea(O:Creature*,I:Time*) 356 TransformItem(S:OldItem*,S:NewItem*) 357 ForceRandomEncounter(S:Area*) 358 JumpToObject(O:Target*) 354 and 355 are simply variants of the existing RunAway actions. TransformItem is a PsT import and allows for changing an item to a new one while still retaining all of the charges/flags of the previous item. When called, ForceRandomEncounter will force the party into the selected area on their next worldmap travel. Only one ForceRandomEncounter can be in play at a time so subsequent use will clear the previous one. It will also be cleared once the party arrives in the designated area. JumpToObject is an IWD2 import. As for triggers: 0x40DD IsTouchGUI() 0x40DE HasDLC(S:DLCName*) 0x40DF BeenInParty(S:Name*) IsTouchGUI() will return true for stuff like iPads and whatnot. HasDLC will always evaluate to true on Windows/OS X/Linux (there's no DLC); on other platforms it will return true or false based on whether the DLC has been purchased. BeenInParty will, oddly enough, return true of the designated object has been in the party. TobEx's NextTriggerObject is in the works if not already in the nightly builds.
  6. Next, new (and changed) 2da files. backstab will now take additional rows for custom backstab multiplier progression: banttimg controls the (previously hardcoded) timing of banters: clascolr sets default coloring for new characters based on their class/kit: clasiskl sets the initial scores for thieving abilities: clastext will allow for the setting of custom bios based on the character's class/kit, but is not yet finalized. clasthac allows for setting additional thac0 penalties based on class/kit: clsrcreq externalizes which races are allowed to select which classes, as well as which races can dual-class. Same implementation as TobEx. clswpbon externalizes non-proficiency penalties, as well as which classes get the bonus APR from wspatck. UNARMED_DIVISOR sets number of attacks for unarmed (i.e. fist) characters--0 means no bonus, non-zero means level/value (rounded down) APR bonus. extanim and extspeed can be used to set various properties of new creature animations: familiar lets you designate familiars per alignment: hidespl lets you designate spells to hide from level-up selection screens. Same implementation as TobEx. hpbarb externalizes the barbarian HP table, same as TobEx: hpclass externalizes which HP table to use for each class/kit. New tables can also be created and referenced (see hpdd below). Same implementation as TobEx. hpdd and hp monk are new HP progression tables: item_use externalizes NPC undroppable items, i.e. Alora's luck rabbit foot or Edwin's amulet, as well as what they say about them. Same implementation as TobEx: itemanim is another TobEx import: itemtype allows for custom item types as well as their custom sound effects for picking them up and dropping them. There's some discussion of breaking up the misc category into more distinct item types, or using the IWD system of delineating shields and armor into their own types (buckers, small shields, etc. and leather, plate, etc.) but nothing has come of it yet. loadh25 and loadhint are still present, but unused (no loading screens for EE). mgsrcreq externalizes racial access to arcane kits, same as TobEx: monkfist externalizes the assignment of monk fist weapons per level. It should also be noted that monk AC progression is now granted by their CLAB file and no longer hardcoded. numwslot externalizes the number of weapons slots per kit/class: profsmax is actually used and enforced in EE. racetext sets default biographies by race. It's basically TobEx's externalization with a new bio column: racethac externalizes the racial to-hit bonuses with specific weapons: sltsteal allows for setting custom difficulties for pickpocketing per item slot; same implementation as TobEx. songlist can be extended beyond 100, same as TobEx. startare is now a generic starting 2da--i.e. startare is used by BGEE for the traditional BG cmapiagn, while startbp is used to kick off the Black Pits campaign. It's identical to BG2's startare except it includes a line to set the XP cap. I believe startpos is still used for player positioning. stylbonu externalizes the effects of the weapon style proficiency bonii: summlimt externalizes the summoning caps: thiefscl scales thieving abilities as a percentage. A value of 300 would mean any point invested in a skill would actually mean 3 points when used in the game. A value of 0 disables the skill for the class/kit. By default these are all 100 or 0 to enable or disable thieving skills: thiefskl controls the points to distribute at character creation and at subsequent level-ups: tokentxt is used to allow modders to create custom tokens, but I don't actually have any information or examples about how it actually works: traplimt externalizes the trap cap:
  7. Just wanted to start a thread to try and document some of the new files and features of the EE-variant of the IE engine. For the most part, it's a straight BG2-ToB engine with some new wrinkles. The AreaCheckObject trigger is more robust (i.e. no crashes). Nearest object trigger was nreliable and now works. nthNearestObject and nthNearestMyGroupOfType would always return the nearest object and now actually behave as expected. NearestDoor didn't work with nested objects (i.e. NearestDoor(Myself)) but does on EE. The TakePartyItem action (and its variants), when performed by a non-party member, would fill the creature's magic weapon slot and then its inventory. In EE, the magic weapon slot is ignored and items taken go straight to the inventory. PickPocketFailed() now just passes along PickPocketFailed and not AttackedBy. (Sorry, link goes to the NDA'd bug tracker, but EE treats this trigger exactly like TobEx.) Opcode 243 (item charge drain) works in EE: 243 (0x0F3) Item: Drain Item Charges [243] Parameter #1: Item Type Parameter #2: Number to Drain Description: Magical items matching the 'Item Type' value on the targeted creature(s) will have their charges drained by Number to Drain. Non-recharging items drained of all their charges are destroyed. Known values for 'Item Type' are: 0 Magical items excluding weapons 1 Magical items including weapons It only drains charges from magical headers (3) and does not destroy items that recharge (i.e. so it would drain Kitthix's figurine but not destroy; wands will be drained and destroyed). It will not drain items flagged as unsellable (bit 0 at 0x18) and will drain only if the item is flagged as magical and droppable (bits 2 and 6 at 0x18). Opcodes 146, 147, and 148 now behave when used in conjunction with containers. Opcode 232 has some additional arguments for parameter2. 12 is for making a kill and is used by Dorn's sword to grant him a 24-hour-long extra +1 thac0 after making a kill. 13 is TimeofDay (parameter1 needs to be set to 0, 0x2c contains the time). This is used by the Night Club to grant extra bonuses at night. Opcode 319 is a new opcode used to restrict items to specific IDS values: Opcode #319 Usability Spell level set to 1 means only usable by Parameter #1: IDS Entry Parameter #2: IDS File Special: STRREF displayed in the item description. It also has a secondary use where it can be used to restrict items to a specific NPC--using the name STRREF in parameter1, death variable in the resource field, and parameter2 to 10. Opcode 320 lets you change the weather: Parameter #1: Type 1: Rain 2: Snow 3: Nothing A new scripting action, 353 AdvanceTime( I:Time*GTIMES), allows for arbitrary advancement of the game time. Cromwell's forging really can take 24 hours without shenanigans. 352 SetAreaScript(S:Script*,I:ScriptSlot) lets you change and set area scripts on the fly. Unlike ChangeAIScript it doesn't have to be run from an area, i.e. it'll work on an area without a script. Opcode 321 is basically IWD's 254, Removal: Effects specified by Resource, which allows you to dispel/remove effects based on what spell they came from. It should only be used with limited timing modes with 0 duration (otherwise it behaves like 206).
  8. I've been pondering it, yeah. I was also thinking of rolling out a component for HoW's arcane opposition schools as an alternative. Since the most noticeable effect would be Edwin losing Fireball, I suspect it would not be terribly popular.
  9. Yeah, I've been keeping a running list. Some of these are also original IWD bugs that are getting ported over, so it's also some stuff for the Fixpack too.
  10. Garclax's axe drops identified. Alicorn Lance's silver glow is ugly; swap it for a pulse. Shambling mound attack weapons are droppable.
  11. EE supports normal TIS files as well as a new super-compressed PVRZ format--which at present, no modding tools can handle. I'll be happy to take the new HANDLE_foo stuff for a spin with Tweaks. It now has a tileset with the NORH stuff, and a couple of wavs I never bothered ogg'ing since it was too much overhead for two files. If WeiDU can now do that natively, I will.
  12. It's been in the beta for a few builds, I believe. Good and bad news here. There's a new EE-specific opcode that lets you set an item to actually be uniquely usable by an NPC; no more futzing around with trying to match the NPC's stats and class exactly with the existing usable flags. The bad news is that you'll have to detect-and-apply the new opcode at install time (or keep two items). Let me double-check my dev docs on that and come up with something. A lot of game resources and settings are not where WeiDU expects it--the tlk is down two folders in lang/en_us; there are multiple tlk files for multi-language support; saves are located in the user's folder instead of the local save and mpsave folders; ini files are now actually SQL, etc. For modders, most of this will be handled internally by WeiDU, so you don't have to actually care that these resources have moved and/or changed. There are a lot of new 2das that are basically softcoding of previously hardcoded features, but (so far at least) you shouldn't need to mess with them unless you're trying something really weird with a new kit. One of my goals is to try and pull together all of our EE developer docs so that we can get all of this into the IESDP.
  13. No joke, I really was going to sit down and write one this week. The big things are really that all of the resources match their BG names (i.e. Beregost is ar3300) but the tlk is different than BG or BG2, so you should be very careful with straight string references like SAY #1234. Journal entries are another issue that needs attention. Any journal entry not listed in the bgee.sql file will show up in the dialogue window, but not in the actual journal. The new system is needed so that all related journal entries coalesce under a unified, collapsible header. Wisp's coding up a new WeiDU function to make this easy. Finally, any item descriptions shouldn't have the 'usable by/unusable by' blocks on them. The EE engine generates those directly from the underlying item. I detect EE (file check for OH1000.are for BGEE, oh6000.are for the forthcoming BG2EE) and load an alternate tra file with just the item descriptions without the usable blocks--see the item component of SP Collection, for example. So if you've got, say, a mod that works on BG/BGT/Tutu, using the BGT/Tutu code with the BG resources set as variables will get you a very good had start.
  14. Fix prices for the 2h axes Fix this Change the internal IDS references to WIZARD_ and PRIEST_ for compat reasons Update the cloud spells to go away with zones of sweet air
  15. Thanks to Wisp, we have a workaround for this issue.
  16. Well, damn. I was hoping the decidedly low-tech solution of biffing the new ar0903 resources would work, but I guess we'll wait for a new WeiDU. Workaround for players at the moment: at any point before installing Sensible Entrance Points, go visit NORH (ar0903) in a game first. Then install the component. Tutu and BGEE players won't have any problems with this component.
  17. So, this is what I've been spending the last two weeks of my life on. At this point I'm relatively certain that nothing will cause your computer to burst into flames, but there are some rough edges that need to be addressed for a non-beta v1: Spell icons stand out, immensely, from the existing BG2 counterparts. The two-handed axe artwork is borrowed from IWD and uses halberd description images. Arcane spells are currently only obtainable from stores. These need to be scattered randomly, as do some of the divine spell scrolls. The unique axes have terrible placeholder descriptions. Add druid/cleric availability to the readme for divine spells Add in some new spells to enemy combat scripts Write dialogue for Contact Other Plane
  18. Version v5

    70,790 downloads

    IWDification is a mod to bring some of the elements of Icewind Dale into the Baldur's Gate series of games. A lot of this project is based upon the work of the IWD-in-BG2 conversion project, which later formed the backbone of IWDEE. The mod adds various elements such as selectable bard songs, two-handed axes, and over 70 new spells into your BG2, Tutu, BGT, BGEE, BG2EE, or EET game. Every component can be installed independently of one another. Learn more about the mod View the Readme Visit the Forum
  19. ...which leads to the natural follow-up: how would I detect and/or avoid that?
  20. Kat or I, though I'm probably more active nowadays.
  21. What are you referring to?So with the above code the Tweakpack changes Ajantis' and Bjornin's cooridnates accordingly? How would I prevent the mixup in case the Tweakpack is installed before Ajantis? Would I need some code that changes the .d and .baf before they get installed? If Tweaks installs first, Ajantis detects it (with the now-fixed code above) and adjusts the dialogue and scripts accordingly, but installs normally otherwise. If Ajantis is installed first it installs normally and then Tweaks adjusts it as needed. This should cover all bases. I don't know if it's a problem, but you are not setting the width variable here. (Maybe it's set outside the ACTION_IF, but that seems fragile.) You really ought to call the inlined file something more inline-y, say ".../ajantis/inlined/dammit_cam.d". Collisions are perhaps not very likely, but it'd be no fun if it were to happen. This is what I get for throwing together some code w/o testing. Amended accordingly--thanks. I didn't know WeiDU preserved inlined files between mod/components.
  22. And yeah, this is sorted. As long as BG2 Tweaks (next vesion!) goes after RE and Ajantis, they'll be fine. You'll want to include compat code in RE and Ajantis anyway, but the good news is that it's pretty easy. For RE: // RE compat code for flipped NORH ACTION_IF ((MOD_IS_INSTALLED ~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ ~3220~) OR (FILE_EXISTS_IN_GAME ~oh6000.are~)) THEN BEGIN OUTER_SET width = 2368 COPY_EXISTING ~arre07.are~ ~override~ READ_LONG 0xac anim_num READ_LONG 0xb0 anim_off FOR (index = 0 ; index < anim_num ; ++index) BEGIN WRITE_SHORT (anim_off + 0x20 + (index * 0x4c)) (width - THIS) // location END COPY_EXISTING ~c#bjcut1.bcs~ ~override~ DECOMPILE_AND_PATCH BEGIN REPLACE_EVALUATE ~\[\([0-9]+\)\.\([0-9]+\)\]~ BEGIN SET "RESULT" = (width - %MATCH1%) END ~[%RESULT%.%MATCH2%]~ REPLACE_EVALUATE ~Color(\[\([0-9]+\)\.\([0-9]+\)\]~ // don't mess up area fades BEGIN SET "RESULT" = (width - %MATCH1%) END ~Color([%RESULT%.%MATCH2%]~ END COPY_EXISTING ~ar0903.bcs~ ~override~ DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~CreateCreature("C#BJORNI",\[1246\.1566\],8)~ ~CreateCreature("C#BJORNI",[1122.1566],8)~ END END And for Ajantis: // ajantis compat code for flipped NORH ACTION_IF ((MOD_IS_INSTALLED ~BG2_TWEAKS/SETUP-BG2_TWEAKS.TP2~ ~3220~) OR (FILE_EXISTS_IN_GAME ~oh6000.are~)) THEN BEGIN COPY_EXISTING ~ar0903.bcs~ ~override~ DECOMPILE_AND_PATCH BEGIN REPLACE_TEXTUALLY ~CreateCreature("C#KNIG05",\[820\.1500\],8)~ ~CreateCreature("C#KNIG05",[1548.1500],8)~ REPLACE_TEXTUALLY ~CreateCreature("C#Ajan\([01][0-9]\)",[1730.400],0)~ ~CreateCreature("C#Ajan\1",[638.400],8)~ REPLACE_TEXTUALLY ~CreateCreature("C#KNIG07",\[500\.410\],8)~ ~CreateCreature("C#KNIG07",[1868.410],8)~ END <<<<<<<< .../ajantis/inlined/dammit_cam.d REPLACE_ACTION_TEXT_REGEXP ~c#ajan[jp]?~ ~EscapeAreaMove("AR0903",1730,\([0-9]+\),0)~ ~EscapeAreaMove("AR0903",638,\1,0)~ >>>>>>>> COMPILE ~.../ajantis/inlined/dammit_cam.d~ END Unless you plan on your Ajantis mod to be installed after the Tweakpack, it would have have to be the Tweakpack that detects your Ajantis mod. There are... other reasons... why you might want to prep these mods for a flipped NORH.
  23. I'll check RE, thanks. The ar0903.bcs additions will be adjusted normally, but the cutscene will need some poking. The good news is that it should be pretty easy to adjust via d code. Something like REPLACE_ACTION_TEXT_REGEXP ~c#ajan[jp]?~ ~EscapeAreaMove("AR0903",1730,\([0-9]+\),0)~ ~EscapeAreaMove("AR0903",638,\1,0)~ should work. There's no dialogue equivalent to REPLACE_EVALUATE so these have to be done case-by-case, which sucks immensely. The x coordinates for the flipped map are just (2368 - current x) and the orientations are (16 - current orientation). If it's not setting lhouse_idx, it means it can't find the Lighthouse area (ar9500) in the main worldmap, or the GAME_IS BGT isn't returning true for some reason. It installed fine on my local BGT copy. Do you have anything else installed that may affect the worldmap?
  24. The good news is that the component already flips everything in the area script. Anything that targets coordinates in the dialogue files--e.g. Keldorn has some EscapeAreaMove actions--I had to adjust manually. I'll take a look at Ajantis and see what we can hammer out.
  25. This looks really good. But it means adjusting all coordinates of spawned creatures etc. (Aomen's knighting, for example)? Yeah, the coordinates of everything I could find in the area have flipped--Anomen and Keldorn leaving the party, Anomen's knighthood stuff, chapter 6 squire, etc.
×
×
  • Create New...