aVENGER_(RR) Posted July 23, 2007 Share Posted July 23, 2007 As the title says. I'm guessing that this wasn't reported so far because, AFAIK, the Glitterdust spell is never used by enemy mages in the unmodded game. However, in the recent revisions of RR, the improved Shadow Thieves occasionally cast it from scrolls so I've managed notice it during my test runs. Link to comment
Nythrun Posted July 23, 2007 Share Posted July 23, 2007 Same thing with sppr313 (and spin595 and spwi958, if you're considering mods), but yes. It's up to Cam whether this is another Polymorph Other-style "it's broke and we ain't fixin' it". I didn't think the Glitterdust description of blindness deserved to stand though, and that isn't salvagable without secondary type hijinks. Link to comment
CamDawg Posted July 23, 2007 Share Posted July 23, 2007 We may need to start a new effects batch to counterpoint the immunity effects batching. Remind me how I abused my power in tweaking Poly Other to shut out non-mainstream modders again. (For those who don't recognize it, that was humor. ) Link to comment
devSin Posted July 23, 2007 Share Posted July 23, 2007 It may have been humor, but my crystal ball is still turning up blank too (the only PO bug I remember is the bad EFF targets). Link to comment
Nythrun Posted July 24, 2007 Share Posted July 24, 2007 Remind me how I abused my power in tweaking Poly Other to shut out non-mainstream modders again. You always ask for specifics because you can never handle generalities. Polymorph Other uses IDS targetted .effs (which are absolute) rather than projectile IDS targetting (which is relative) so it can't affect the party regardless of who casts it, enemy or not. But it's also never cast by an enemy in the unmodded game, so swapping in some variant of hold.pro won't actually make any difference except to modders. Similar arguments apply to creating a short-radius party only .pro for Magic Resistance and Strength and other "exploitables" (I don't have any interest in arguing about this, so it's getting dropped here ) I care more about the blindness icon than most of the others because sporadic permanent blindness reports still crop up in the Bioware fora. Adding an icon to sppr313 is a fix from either perspective though (more .eff files = more awesome!). And the Glitterdust description of the blindness effect really is poppycock. Link to comment
CamDawg Posted December 11, 2007 Share Posted December 11, 2007 Chromatic Orb (both mage and avenger version) also lacks a blind icon. So does 'Yellow Dragon Scorching Sand' (spin595) and a Powerword: Blind (spwi958) but these appear to be unused. // new eff for holy smite; needs to display blind icon for blinded creatures COPY_EXISTING ~blind.eff~ ~override/cdblind.eff~ WRITE_LONG 0x10 142 // display portrait icon WRITE_LONG 0x20 8 // icon: blinded // make sure blindness effects always have a blind icon COPY_EXISTING ~spdr101.spl~ ~override~ // chromatic orb (avenger) ~spin595.spl~ ~override~ // scorching sand ~sppr313.spl~ ~override~ // holy smite ~spwi118.spl~ ~override~ // chromatic orb (mage) ~spwi224.spl~ ~override~ // glitterdust ~spwi958.spl~ ~override~ // pw: blind (unused?) LAUNCH_PATCH_MACRO ~add_fx_batch_prep~ // defines vars for rest of patch PATCH_IF (SOURCE_SIZE >= min_size) BEGIN SET "new_fx" = 0 FOR (index = (0 - global_loop); index < abil_num; index = index + 1) BEGIN SET "new_fx_1" = 0 SET "new_fx_2" = 0 SET "new_fx_3" = 0 SET "new_fx_4" = 0 PATCH_IF ("%index%" < 0) BEGIN // if loop through globals needed SET "abil_fx_idx" = 0 END ELSE BEGIN // otherwise normal ability SET "counter_offset" = ("%abil_off%" + 0x1e + ("%abil_length%" * "%index%")) READ_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) "abil_fx_idx" SET "abil_fx_idx" = ("%abil_fx_idx%" + "%new_fx%") WRITE_SHORT ("%abil_off%" + 0x20 + ("%abil_length%" * "%index%")) ("%abil_fx_idx%") END READ_SHORT "%counter_offset%" "counter" // fx_num on global loop, otherwise abil_fx_num FOR (index2 = 0; index2 < counter; index2 = index2 + 1) BEGIN READ_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "opcode" READ_LONG ("%fx_off%" + 0x04 + (0x10 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "param1" READ_LONG ("%fx_off%" + 0x08 + (0x10 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "param2" READ_ASCII ("%fx_off%" + 0x14 + (0x14 * "%fx_type%") + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "resref" PATCH_IF ("%opcode%" = 74) BEGIN // blindness SET "new_fx_1" = 1 READ_ASCII ("%fx_off%" + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "template" ((0x30 + (0xd8 * "%fx_type%"))) END ELSE PATCH_IF (("%opcode%" = 142) AND ("%param2%" = 8)) BEGIN // display blinded portrait icon SET "new_fx_2" = 1 END ELSE PATCH_IF (("%opcode%" = 177) AND ("%resref%" STRING_COMPARE_CASE "blind" = 0)) BEGIN // blindness via eff SET "new_fx_3" = 1 READ_ASCII ("%fx_off%" + (("%abil_fx_idx%" + "%index2%") * (0x30 + (0xd8 * "%fx_type%")))) "template" ((0x30 + (0xd8 * "%fx_type%"))) END ELSE PATCH_IF (("%opcode%" = 177) AND ("%resref%" STRING_COMPARE_CASE "cdblind" = 0)) BEGIN // blindness icon via eff SET "new_fx_4" = 1 END END PATCH_IF ("%new_fx_1%" = 1) BEGIN PATCH_IF ("%new_fx_2%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 142 // display portrait icon WRITE_LONG ("%fx_off%" + 0x08 + (0x10 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 8 // blinded SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END END PATCH_IF ("%new_fx_3%" = 1) BEGIN PATCH_IF ("%new_fx_4%" = 0) BEGIN INSERT_BYTES ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) (0x30 + (0xd8 * "%fx_type%")) WRITE_ASCIIE ("%fx_off%" + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) "%template%" // clones immunity effect WRITE_SHORT ("%fx_off%" + (0x08 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) 177 // display portrait icon WRITE_ASCII ("%fx_off%" + 0x14 + (0x14 * "%fx_type%") + ("%abil_fx_idx%" * (0x30 + (0xd8 * "%fx_type%")))) ~cdblind~ #8 // resref SET "new_fx" = ("%new_fx%" + 1) SET "counter" = ("%counter%" + 1) END END WRITE_SHORT "%counter_offset%" "%counter%" END LAUNCH_PATCH_MACRO ~add_fx_batch_final~ // wrapup creature offset patching END BUT_ONLY_IF_IT_CHANGES If we want to add the 'blinded' string to everything that causes blindness, the list will get a bit longer: ~gorwom4.itm~ ~override~ // drow flail +3 ~sorb.itm~ ~override~ // searing orb ~sw1h51.itm~ ~override~ // celestial fury +3 ~wand19.itm~ ~override~ // wand of cursing ~spdr101.spl~ ~override~ // chromatic orb ~spin595.spl~ ~override~ // yellow dragon scorching sand ~spin878.spl~ ~override~ // level drain ~spin893.spl~ ~override~ // shadow dragon breath ~spin929.spl~ ~override~ // mist ball ~spin931.spl~ ~override~ // sooty ball ~sppr313.spl~ ~override~ // holy smite ~sppr707.spl~ ~override~ // sunray ~spwi118.spl~ ~override~ // chromatic orb ~spwi224.spl~ ~override~ // glitterdust ~spwi714.spl~ ~override~ // prismatic spray ~spwi815.spl~ ~override~ // power word blind ~spwi958.spl~ ~override~ // power word, blind I'm not in favor of adding strings, as we'd robably end up having to add strings to just about every item and spell for every effect by the time we were done. Though, as usual, discuss any away. Link to comment
Caedwyr Posted December 11, 2007 Share Posted December 11, 2007 I like string feedback. Makes it much easier to know when something worked/something failed, and what is going on. Link to comment
Nythrun Posted December 11, 2007 Share Posted December 11, 2007 I guess APPEND ~efftext.2da~ ~74 BLINDNESS 14674~ is off the table? Link to comment
CamDawg Posted December 11, 2007 Share Posted December 11, 2007 Wouldn't that cause x2 blinded strings for spells that already have the effect? Link to comment
Nythrun Posted December 11, 2007 Share Posted December 11, 2007 Sure. There's about five slightly (or not) different strings already in use that would have to be nulled. It's probably almost as much work, so no bother Link to comment
CamDawg Posted December 11, 2007 Share Posted December 11, 2007 My big concern would be for mods--with changes to efftext, (good) modders would have to add or remove an effect depending on whether Fixpack is present or not. Being as we have another way to address it I'd go with the alternative (asuuming folks think this is a fix and it gets included). It's probably not a ban candidate for Tweaks, though, because then I could purge strings from all spells (including mods) with a few regexp patches. It's even nicer since devSin already did most of the legwork. Link to comment
Nythrun Posted December 11, 2007 Share Posted December 11, 2007 Fine by me, I'll just PATCH_LAZY the strings in /edit By PATCH_LAZY I mean I'll throw something like this down before reading off item effects into their own spells. After checking that it parses, or course. COPY_EXISTING ~spdr101.spl~ ~override~ // Chromatic Orb (Stalker) (Uses "Blindness" rather than "Blinded") ~spin595.spl~ ~override~ // YELLOW_DRAGON_BREATH ~spin878.spl~ ~override~ // SHADOW_DRAIN ~spin893.spl~ ~override~ // SHADOW_DRAGON_BREATH ~spin929.spl~ ~override~ // MEPHIT_MIST ~spin931.spl~ ~override~ // MEPHIT_SOOTY_BALL ~sppr313.spl~ ~override~ // Holy Smite // ~sppr704.spl~ ~override~ // Nature's Beauty ~sppr707.spl~ ~override~ // Sunray // ~spwi106.spl~ ~override~ // Blindness ~spwi118.spl~ ~override~ // Chromatic Orb (Uses "Blindness" rather than "Blinded") // ~spwi224.spl~ ~override~ // Glitterdust ~spwi714.spl~ ~override~ // Prismatic Spray ~spwi815.spl~ ~override~ // Power Word Blind ~spwi958.spl~ ~override~ // POWERWORD_BLIND ~spwm178.spl~ ~override~ // Wild Magic Blindness ~chalcy2.itm~ ~override~ // Pocket Plane Cyricist Ambush Undroppable Widget ~gorwom4.itm~ ~override~ // Ameralis Zauviir's Flail // ~halb06.itm~ ~override~ // Blackmist +4 ~sorb.itm~ ~override~ // Searing Orb ~sw1h51.itm~ ~override~ // Celestial Fury +3 ~wand19.itm~ ~override~ // Wand of Cursing PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN PATCH_IF (~%SOURCE_FILE%~ STRING_MATCHES_REGEXP ~^.+\.itm$~) THEN BEGIN SET "hs" = 0x28 END ELSE BEGIN SET "hs" = 0x38 END READ_LONG 0x64 "ho" READ_LONG 0x6a "eo" READ_SHORT 0x68 "hc" FOR ("i1" = ("hc" * "hs"); "i1" > 0x00; "i1" -= "hs") BEGIN READ_SHORT ("ho" + "i1" - "hs" + 0x1e) "ec" READ_SHORT ("ho" + "i1" - "hs" + 0x20) "ei" FOR ("i2" = (("ei" + "ec") * 0x30); "i2" > ("ei" * 0x30); "i2" -= 0x30) BEGIN READ_SHORT ("eo" + "i2" - 0x30 + 0x00) "op" READ_ASCII ("eo" + "i2" - 0x30 + 0x14) ~rr~ PATCH_IF (("op" = 0x4a) OR (("op" = 0xb1) AND (~%rr%~ STRING_EQUAL_CASE ~blind~))) THEN BEGIN READ_ASCII ("eo" + "i2" - 0x30 + 0x00) ~ef~ (0x30) SET "i2" = 0x00 END END SET "del" = 0x00 FOR ("i2" = (("ei" + "ec") * 0x30); "i2" > ("ei" * 0x30); "i2" -= 0x30) BEGIN READ_SHORT ("eo" + "i2" - 0x30 + 0x00) "op" READ_LONG ("eo" + "i2" - 0x30 + 0x04) "st" PATCH_IF (("op" = 0x8b) AND (("st" = 0x3952) OR ("st" = 0x5c2) OR ("st" = 0x2eef) OR ("st" = 0x3294) OR ("st" = 0x32d9) OR ("st" = 0x36f7) OR ("st" = 0x3937) OR ("st" = 0x43f7))) THEN BEGIN DELETE_BYTES ("eo" + "i2" - 0x30 + 0x00) 0x30 SET "del" += 0x01 END END WRITE_SHORT ("ho" + "i1" - "hs" + 0x1e) ("ec" - "del" + 0x01) INSERT_BYTES ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x00) 0x30 WRITE_ASCIIE ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x00) ~%ef%~ PATCH_IF (~%SOURCE_RES%~ STRING_EQUAL_CASE ~sppr313~) THEN BEGIN WRITE_ASCII ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x14) ~cdblinds~ END ELSE BEGIN WRITE_SHORT ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x00) 0x8b WRITE_LONG ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x04) 0x3952 WRITE_LONG ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x08) 0x00 WRITE_ASCII ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x14) ~~ #8 END WRITE_BYTE ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x0c) 0x01 WRITE_LONG ("eo" + (("ec" + "ei" - "del") * 0x30) + 0x0e) 0x00 END READ_SHORT 0x70 "ei" FOR ("i1" = 0x00; "i1" < ("hc" * "hs"); "i1" += "hs") BEGIN WRITE_SHORT ("ho" + "i1" + 0x20) "ei" READ_SHORT ("ho" + "i1" + 0x1e) "ec" SET "ei" += "ec" END END BUT_ONLY COPY_EXISTING ~blind.eff~ ~override/cdblinds.eff~ PATCH_IF (SOURCE_SIZE = 0x110) THEN BEGIN WRITE_LONG 0x10 0x8b WRITE_LONG 0x1c 0x3952 WRITE_LONG 0x28 0x00 WRITE_ASCII 0x30 ~~ #8 WRITE_LONG 0x38 0x00 WRITE_LONG 0x3c 0x00 WRITE_LONG 0x60 0x00 END Link to comment
devSin Posted December 11, 2007 Share Posted December 11, 2007 Note that I removed that a long time ago. It leads to a ton of incessant feedback, and some effects fire on GAM characters that aren't actually in the party or even in the same area (loading any game, for instance, would fire a "Cernd - Regenerating" message). Especially fun is where random spawns fire and you get a ton of messages when the creatures have equipping effects or cast spells offscreen. I now take the "long" approach of patching every item and spell where necessary; it was tremendously boring sifting through every single file, but I really did find a lot of stuff in need of improvement, so I guess it wasn't a complete waste. Link to comment
CamDawg Posted January 6, 2008 Share Posted January 6, 2008 Blindness strings and icons have been added, but I'm moving this to pending. At some future point, I would like to fix Poly Other. Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.