Jump to content


  • Content Count

  • Joined

  • Last visited

About Bubb

  • Rank
    Engine Wizard

Profile Information

  • Gender
  • Mods Worked On
    Bubb's Spell Menu

Recent Profile Visitors

178 profile views
  1. 1) Weapon abilities, (right-click quick weapon in inventory -> Abilities), or right-click weapon in actionbar, (F2-F5 depending on class). Only functions in a weapon's item ability header. 2) Spell, (F7 in actionbar). Only functions in a spell's ability header. 3) Item, (F8 in actionbar). Only functions in an item's ability header. 4) Ability, (F12 in actionbar). Only functions in a spell's ability header. Other values do not function, and the associated ability will not appear anywhere. The only flexibility of this field is being able to change where spells appear, (Spe
  2. I've looked into this, and, yep, it's bugged. Here's pseduocode of what the engine does if there's an enemy in sight of the character hiding, (using the nearest enemy): So, first off, it's extremely hard to hide while an enemy is around. You have to pass two insane checks, the only saving grace is that they can each be disabled if the enemy has the counter-condition, (being deaf or blind). From the pseduocode, the MOVESILENTLY check was inverted, so a lower(!) MOVESILENTLY skill value was better here. I've attached an exe-patch that fixes that condition, but it is still insanely hard to
  3. The engine is hardcoded to deactivate modals whenever the creature starts taking another action. There is a small list of (hardcoded) actions the engine will allow to be started without disrupting modals: 0 NoAction 18 Hide 22 MoveToObject 23 MoveToPoint 63 Wait 83 SmallWait 84 Face 89 Follow 90 MoveToPointNoRecticle 93 LeaveAreaName 99 WAITINLINE (unlisted, defunct) 215 FollowObjectFormation
  4. It appears IWD:EE lets you donate at temples: However, IWD:EE only lets you boost your reputation to 8 using donations, so it's pretty much a moot mechanic unless you need to salvage your reputation in case you killed the wrong person.
  5. CHASE.IDS is a bit complicated — there are many edge cases and hardcoded exceptions. When a creature is in an area that is being unloaded, (for example, by all party members leaving a non-master area, or transitioning to a new master area), the engine allows creatures to follow the party to the new area. In general, if a creature is executing an action from CHASE.IDS while the area it is in is being unloaded, it is allowed to follow its target through the transition.
  6. EEex is an exe hack and thus it doesn't work anywhere except the latest EE versions on Windows. Note some of the functionality could be added to GemRB easily, (the Opcode parameter changes especially), but the whole Lua-scripting and memory editing portions are totally platform / engine specific. It really wouldn't work.
  7. It's easier just to show the flaw in the trigger block evaluation code. if (hasNextTriggerObjectOverride) { if (nextTriggerObjectOverride != NULL) { // do eval stuff hasNextTriggerObjectOverride = false } } else { // do eval stuff } NextTriggerObject sets both hasNextTriggerObjectOverride=true, and if it can't find a valid object, nextTriggerObjectOverride=NULL. Once this happens, the engine gets stuck in a bad state. Since nextTriggerObjectOverride is NULL it never clears hasNextTriggerObjectOverride, and it forever skips evaluating further triggers, (in
  8. Most of the spell protection opcodes add an entry to an immunity list in the stats of a creature. Every time the effects list is evaluated on a creature the engine checks if one of these lists is populated, and if it is it adds a corresponding graphic to the creature. Pseudocode: Opcode #291 sets m_bPreventSpellProtectionEffects to Param2, (so it's an all-or-nothing deal). The list of Opcode graphics it blocks is as follows: // Blocks the below graphics m_bPreventSpellProtectionEffects -> Opcode #291 Param2 // Applies SPTURNI2 m_cBounceProjectile -> Opcode #197
  9. If I'm remembering right, Opcode #291 can disable the hardcoded visuals, with the caveat that it disables them on the opcode level, (meaning all spells that use those opcodes, and rely on them for their graphics, will suddenly lose their visuals on the target creature).
  10. I think there was some confusion with what I said in the SR thread — Detect Illusions uses Opcode #220, which is the full spell-school dispel. The secondary type isn't used, if a spell has Illusionist as its primary type it'll get dispelled. (The secondary-type dispel opcode is #221, I probably should have clarified which one I was talking about)
  11. The spell-dispelling part is just a mass-applied Opcode #220 with these params: Param1 -> 9 Param2 -> 5 probabilityLower -> 0 probabilityUpper -> nDetectIllusion skill value
  12. TargetUnreachable() only returns true if an attacker, (either using weapons or spells), suddenly loses the ability to target what it is attacking - given some specific circumstances: Attack() - Attacker can't see invisible creatures, and target either went STATE_INVISIBLE or went under sanctuary. Spell() - Target is a sprite (creature), the caster isn't the target, caster can't see invisible creatures, spellFlags & 0x1000000 == 0, and target either went STATE_INVISIBLE, STATE_IMPROVEDINVISIBILITY, or went under sanctuary. UseItem() - Target is a sprite (creature), the caster
  13. Normal specialist bonuses directly modify the save bonus of outgoing effects, but I think I've got an on-target method working: 1) All spells that acknowledge this bonus should have an Opcode #326 (as the first effect) that invokes a subspell. 2) The subspell ability projectile must be '0', else the engine uses an internal projectile that delays the effect application. 3) Put one of the saving throw bonus opcodes (#33-37) in the subspell, using Param2 = 3. The IESDP doesn't list this parameter value, but it is an INCREMENT variant that allows the saving throw to be updated withi
  14. To start off, I have little to no experience with how the IE multiplayer functions. The problem I am currently up against is EEex - it currently only works correctly in singleplayer, becoming desynced in multiplayer when being run on anyone who isn't the host. I was going to dive into the problem blind, but I figured it might be beneficial to pick the wisdom of the community before I waste a couple of days. So, some of my inquiries/assertions are as follows: 1) I assume both the host and client(s) need identical game files, right? 2) How do scripts behave while in mul
  15. Could you please describe these crashes and provide the corresponding crash .dmp's? I'm grateful for all of the installs here trying out EEex, it is exactly what is required to battle-harden, and bug-proof a mod. EEex is perfectly stable in vanilla, but as you have seen, the vast amount of mods available for the IE can interact with EEex in unexpected ways. The one thing I will stress, (and I don't mean this in an accusatory way, so please don't take it as such), is that reporting a crash/bug is very important. Sure, there might be unknown crashes, and that sucks, but they will never be fixed
  • Create New...