Jump to content

Luke

Modders
  • Posts

    599
  • Joined

Everything posted by Luke

  1. I see. So the creature weapon will always use the "S1" animation but the actual drop can be either a long sword (S1), or a bastard sword (S0), or a short sword (SS), or a scimitar (SC). And in all cases it'll be a bladed weapon, so as to minimize the mismatch between the dropped weapon and the creature animation...
  2. Are you saying that when using object selectors, SecondNearest, ThirdNearest, etc. are meaningless for "SpellCastOnMe([identifier],0)"...? So when I say "SpellCastOnMe([PC],0)", it doesn't matter if the Party Member casting the spell is the nearest one or not... The only thing that matters is that its allegiance is PC... And I guess the same holds for HitBy(), AttackedBy(), NumCreature\(LT\|GT\)?()...
  3. So basically different variants of bows and/or swords...?
  4. Well, you can always make, say, a mace whose equipped appearance (@ 0x22) is "S1". In so doing, Ogre Mages can wield maces without swinging an invisible weapon... The only "problem" is that they'll be swinging a sword while dealing crushing damage...
  5. Yes, you're right. I somehow expected [PC] to naturally expand into SecondNearest([PC]), ThirdNearest([PC]), etc. even without explicitly listing them in the script... I mean, SpellCastOnMe([PC],0) returns true even if the PC casting the spell is not the nearest one, and that's what deceived me in the first place... Guess I'm failing to understand what they [object specifiers] are checked every time they are referenced means...
  6. @DavidW I know that your AI is well-consolidated as of now, but have you ever thought about simplifying your scripts? By "simplifying" I mean: have you ever thought about using object selectors in place of static objects? According to the IESDP (and unless I'm missing something!), TargetBlock(s) like this one TARGET=PCsInOrderShort [PC] SecondNearest([PC]) ThirdNearest([PC]) can be reduced to just [PC], i.e.: the engine will automatically switch to "SecondNearest([PC])" if "[PC]" is not a valid target, to "ThirdNearest([PC])" if "SecondNearest([PC])" is not a valid target, and so forth. In other words: "[PC]" is not necessarily the nearest Party Member! In other words: script blocks containing "SecondNearest([PC])", "ThirdNearest([PC])", etc. never fire. Similarly, this one TARGET=EnemiesInOrder NearestEnemyOf(Myself) SecondNearestEnemyOf(Myself) ThirdNearestEnemyOf(Myself) FourthNearestEnemyOf(Myself) FifthNearestEnemyOf(Myself) SixthNearestEnemyOf(Myself) can be reduced to just [GOODCUTOFF]. Sure, there may be cases where you want to use static objects (f.i. "*FarthestEnemyOf(Myself)"), but as far as targeting the nearest creature is concerned, it may be better to stick with object selectors... In so doing, scripts will be even easier to debug (hopefully...)
  7. Assuming Gnolls are wielding Halberds (Category = 30; Weapon proficiency = PROFICIENCYHALBERD) and you want to give them 3 points: WRITE_BYTE 0x71 3 // BG1 style SET_BG2_PROFICIENCY ~PROFICIENCYHALBERD~ 3 // BG2 / EE style
  8. Correct. However, potential party members should use op233 because the level-up system (UI) cannot read the old BG1 values...
  9. To tell the truth, there's another issue. You might want to replace SOURCE_SIZE (here and here) with BUFFER_LENGTH (i.e., current file size), otherwise patches like this one will fail COPY_EXISTING "spwi112.spl" "override" LPF "DELETE_SPELL_HEADER" INT_VAR "header_type" = "-1" // All END LPF "ADD_SPELL_HEADER" INT_VAR "type" = 2 END BUT_ONLY_IF_IT_CHANGES
  10. Correct, at least on EE games, where you might want to use script triggers "WeaponEffectiveVs()" and "WeaponCanDamage()" to detect if you can hit a creature with your currently equipped weapon / ammo...
  11. OK, but what's causing that issue (also calling @argent77)...?
  12. @Gwendolyne Unfortunately, there's another issue now (BGEE with SoD). If the creature is facing east, then you'll notice that its weapon and sprite are misaligned (see attached screenshot). Guess there's something wrong with the BAM files...? But I'm not having this issue on IWDEE, and these BAM files are taken from that game as are ... Is it something at the engine level...? Also, possibly related: the same issue occurs with the ordinary LIZARD_MAN animation (0xE510) and the YUAN-TI animation (0xED00). Something else...? Could it be something related to Animation Type E000 (monster_icewind)...?
  13. Yeah, you're right. The Detectable Spells routine adds an alias for stat #109 (namely WEAPON_ENCHANTMENT). In so doing, you can always use WEAPON_ENCHANTMENT without worrying about the original ID, which in this case may vary depending on the game the mod is installed on. So yes, the error must lie somewhere else... but according to the latest changelog, it's been fixed...
  14. @Salk Just out of curiosity, open your local copy of "STATS.IDS" with something like NearInfinity and check what's the ID of stat #109. It'll be most likely different from WEAPON_ENCHANTMENT...
  15. Ah, yes, you're right. That's the other important difference between BIT9 and BIT10. BIT10 is also necessary to trigger the "AttackedBy()" script trigger (BIT9 cannot trigger it). However, it's not necessary in this case since the spell always deals damage via opcode #12 (bypass MR, no save)... and since op12 does trigger "AttackedBy()", civilians will turn hostile even if BIT10 is not set (provided of course they're not immediately killed upon taking damage...). Ditto for Spike Growth and the like... Sure, there could be problems in case op12 does not bypass MR and/or grants a Save (f.i. Acid Storm), but as you can see, these spells seem to be flagged as "Hostile" (BIT10 is set to 1), so everything should be fine...
  16. @Salk On BG2:EE stat #109 WEAPON_ENCHANTMENT is known as CLERIC_HALLOW, whereas on classic BG2 is known as PROFICIENCYGUN. That's (probably) why BGT players are getting that parse error...
  17. Are you basically saying that once you get the hang of it, you should always use "--force-install-list" without losing time wading through the prompts (this is specially true for this mod and Tweaks Anthology since both have 100+ components...)? Well, yes, it definitely makes sense...
  18. True, but it's not flagged as "Hostile" in IWDEE (v2.6), only BIT9 is set to 1... It's also worth mentioning that as of v2.6, the main difference between "BIT9" and "BIT10" is the interaction with op102. If BIT10 is not set, then op102 cannot protect the caster from its own AoE spells... Apart from that, both flags remove Sanctuary and Invisibility, so Spike Stones is somewhat hostile...
  19. @CamDawg Remember to add all new non Party-friendly AoE spells that are not flagged as "Hostile" (BIT10 @0x18) (f.i.: Spike Stones) to all those SPL/ITM files that apply op102 (notably "SCRL07.ITM – Protection from Magic" and Lich / Rakshasa rings...) Guess you can safely skip Otiluke's Resilient Sphere's subspell since spellcasting is disabled anyway (it applies Casting Failure like Antimagic Shell...)
  20. Is there any particular reason of why you're not using QUICK_MENU? Players can be instructed to edit "setup-stratagems.tp2" so as to add a "custom_selection" option with all the desired DESIGNATED numbers before running the installer. You can add the DESIGNATED numbers to the README, next to each Component Name. It seems much easier to implement and maintain... Additionally, you don't need to worry about the underlying operating system...
  21. Is the brand new "sfo2e" a new version of your library or just something you use for the first 2 components (i.e., importing and editing IWD resources)?
  22. Yes, even though there's nothing wrong (at least in principle) with using all your 4-level slots to cast, say, Ice Storm... But that's debatable of course...
  23. I agree with you. I mean, blocks like this one IF TRIGGER TargetBlock(PCMages|PCsInOrderShort) TriggerBlock(Paralyse|MR) THEN DO Action(Spell,WIZARD_HOLD_PERSON|100|50) END are perfectly fine for both Mages and Sorcerers. Randomization (|100|50) should prevent them from casting the same spell twice or more times... And you can always add more randomization via something like IF TRIGGER TargetBlock(PCMages|PCsInOrderShort) TriggerBlock(Paralyse|MR) OR(2) !Class(Myself,SORCERER) RandomNumLT(4,3) // 50% chance if I'm SORCERER THEN DO Action(Spell,WIZARD_HOLD_PERSON|100|50) END Finally, FWIW, there are some enemy Shamans (which are spontaneous casters like Sorcerers) in SoD. They're scripted ("BDSHM00.BCS") no differently than ordinary Druids, except that there is little to no randomization, so in this case they will tend to use the same spell...
  24. So this flag no longer breaks only Sanctuary...? Also, it is useless to set both flags to 1 (see for instance WIZARD_FIREBALL), right? It should be either one or the other, mainly depending on how they should interact with op102 (so in particular with (Minor)?Globe of Invulnerability and the like)...?
×
×
  • Create New...