Ardanis Posted July 9, 2009 Share Posted July 9, 2009 Alright, testers may give it a try if they wish. The list is most certainly NOT complete, I only have put there what I could catch quickly. Many projectiles are hardcoded into engine, which makes it a little hard to autodetect non-friendly AoE spells. Meaning that the list has to be built manually. Sorry. Only AoE spells (whether defined as self-centered in the ability header or not) that may hurt both party and enemies fall in the category of exploitable. Horror, Slow, Malison, Chaos, etc. don't affect party and are clean. Web, Fireball, etc. are another matter. Personally, I kind of agree that the MR bypassing glitch is a pure exploit, so why to care if someone wants to cheat... During the tests I've discovered an interesting thing - if the secondary spell is single-targeted then it becomes a subject to Spell Deflecting/Turning/Trap. In other words, those spells now protect against modified AoE as well. I'm unsure if it's avoidable, but honestly I didn't even try to find out. Because a thought had suddenly struck me - it just builds a great feature on the bones of the cheese-removal. Usually no one in their sanity would try to waste a spell onto protected target, be that some pathetic Minor Spell Deflection or the almighty Spell Trap. Therefore there's little point in ever using high-level spell protections, as they would simply tell the opponent 'hit me with anti-magic instead of damage'. But if such protection may stop ~50 HP strong Abi-Dalzim (centered at someone else, at that), then suddenly having the Spell Deflection active makes a great difference. Moreover, the exploit-free spells like Slow/Chaos may now be stopped as well. In terms of balance, it shouldn't hurt in any way. First, spell protections can finally have their significant power recognized as it should have been from the start. Second, no more choking a lich/high-level wizard with Abi-Dalzims (that IS an exploit if you ask me). // AoE spells with MR issue ~spwi213~ // stinking cloud ~spwi215~ // web ~spwi304~ // fireball ~spwi313~ // skull trap ~spwi404~ // ice storm ~spwi502~ // cloud kill ~spwi503~ // cone of cold // ~spwi523~ // sunfire ~spwi614~ // death fog ~spwi712~ // delayed blast fireball ~spwi714~ // prismatic spray ~spwi810~ // incendiary cloud ~spwi911~ // meteor swarm ~spwi922~ // dragon breath ~spwi925~ // comet // ~sppr304~ // glyph of warding ~sppr313~ // holy smite ~sppr314~ // unholy blight ~sppr503~ // flame strike ~sppr705~ // fire storm // ~sppr720~ // earthquake // AoE spells without MR issues ~spwi205~ // horror ~spwi224~ // glitterdust ~spwi306~ // hold person ~spwi324~ // hold undead ~spwi312~ // slow ~spwi411~ // emotion ~spwi412~ // greater malison ~spwi421~ // teleprot field ~spwi507~ // hold monster ~spwi508~ // chaos ~spwi605~ // death spell ~spwi615~ // chain ligthning ~spwi711~ // sphere of chaos ~spwi720~ // control undead // ~spwi811~ // symbol fear ~spwi812~ // abi-dalzim // ~spwi816~ // symbol stun // ~spwi817~ // symbol death ~spwi913~ // wail of banshee ~sppr105~ // entangle ~sppr208~ // hold person ~sppr305~ // hold animal ~sppr416~ // cloak of fear ~sppr517~ // insect plague ~sppr609~ // false dawn ~sppr704~ // nature's beauty // ~sppr706~ // symbol fear ~sppr707~ // sunray ~sppr709~ // cunfusion ~sppr710~ // holy word ~sppr715~ // unholy word ~sppr717~ // creeping doom // ~sppr718~ // symbol stun // ~sppr719~ // symbol death ~sppr722~ // storm of vengeance EDIT Have removed the old code. Link to comment
mercurier Posted July 10, 2009 Share Posted July 10, 2009 AoE spells with MR issue I wonder why Flame Strike, Dragon's Breath and Comet are in this list. They are party-friendly, aren't they? Spell deflection/turing protects from single-target AoE spells I assume when referring to single-target AoE spells you mean spells like Hold xxx and Flame Strike, etc. Personally I'm not for this tweak, because it is unfair to spells subject to the tweak: players can (I guess AI cannot) wisely cast FB or Horric Wilting at somewhere near the target to avoid deflection/turning. Besides, I think there's no need to worry about the secondary single-target-AoE spell deflection/turning issue - can you think up a single-target-AoE spell that affects both friends and foes? EDIT: I've took a glance at your code, and seems you are using the following mechanism: Primary spell: -AoE projectile triggering secondary spell, cast at creature Secondary spell: (multiple) p2p projectile cast upon creatures caught within the AoE of the primary spell Now I have a better understanding of your AoE turning/deflection idea. However: 1. If a FB catches multiple targets with Turning on them, then the original caster of FB would get multiple feedback! 2. I don't know how Taimon's exe patch handles MI. If he solves the issue by letting AoE projectile ignore MI, then your mechanism should take MI issue into account. 3. Will AI stop casting AoE at players with Turning on them? After all, I prefer the "primary spell has secondary AoE spell cast at point" mechanism PS: You forgot to set name and description of the secondary spell to "no index". PSS: Some AoE spells have effect "Script: Set Global Variable [265]". Please keep them from the primary spell and delete them from the secondary spell, if necessary. Link to comment
Ardanis Posted July 10, 2009 Author Share Posted July 10, 2009 I wonder why Flame Strike, Dragon's Breath and Comet are in this list. They are party-friendly, aren't they?My bad, apparently. 1. If a FB catches multiple targets with Turning on them, then the original caster of FB would get multiple feedback!2. I don't know how Taimon's exe patch handles MI. If he solves the issue by letting AoE projectile ignore MI, then your mechanism should take MI issue into account. 3. Will AI stop casting AoE at players with Turning on them? 1. Most certainly Don't shoot Fireballs in the midst of wizards 2. If they were marked as AoE earlier then that flag will automatically transfer into the secondary spell. Otherwise, the MI code I sent to Demi will need one more line to add Otherwise let me know if that's the case. 3. IIRC they don't cast anything at protected PCs, save antimagic. Sure, they may accidently hit someone standing near and suffer a backlash, but there're two points here: a) they most likely have their own spell protections on b) players may experience the same effect, not to mention the inability to easily kill a well protected enemy by casting a couple of powerful AoE spells nearby After all, I prefer the "primary spell has secondary AoE spell cast at point" mechanismStrangely enough, it didn't quite worked for me though I might have merely missed a detail Does it bypass spell protections? PS: You forgot to set name and description of the secondary spell to "no index". PSS: Some AoE spells have effect "Script: Set Global Variable [265]". Please keep them from the primary spell and delete them from the secondary spell, if necessary. Done. // removing 'bypassing MR' exploit and making spells affectable by spell protections ACTION_FOR_EACH spell IN ... // long list of spells to patch BEGIN ACTION_IF FILE_EXISTS ~%spell%b.spl~ BEGIN PRINT ~The %spell%b.spl already exists in your game. Take measures.~ END COPY_EXISTING ~%spell%.spl~ ~override/%spell%b.spl~ // cloning original into the secondary spell WRITE_ASCII 0x8 ~~ (8) // clearing out the name READ_LONG 0x64 ab_off READ_SHORT 0x68 ab_num READ_LONG 0x6a ef_off READ_SHORT 0x70 cast_num // global effects aka casting features // deleting 'Set Global Variable [265]' opcodes deleted=0 FOR (i=0;i<cast_num;i+=1) BEGIN READ_SHORT (ef_off+(i - deleted)*0x30) opcode PATCH_IF opcode=265 BEGIN DELETE_BYTES (ef_off+(i - deleted)*0x30) 0x30 deleted+=1 END END WRITE_SHORT 0x70 (cast_num - deleted) FOR (i=0;i<ab_num;i+=1) BEGIN inner_deleted=0 READ_SHORT (ab_off+i*0x28+0x1e) ef_num // effect number READ_SHORT (ab_off+i*0x28+0x20) ef_ind // effect index WRITE_SHORT (ab_off+i*0x28+0x20) (ef_ind - deleted) FOR (j=0;j<ef_num;j+=1) BEGIN READ_SHORT (ef_off+(ef_ind+j - deleted)*0x30) opcode PATCH_IF opcode=265 BEGIN DELETE_BYTES (ef_off+(ef_ind+j - deleted)*0x30) 0x30 deleted+=1 inner_deleted+=1 END END WRITE_SHORT (ab_off+i*0x28+0x1e) (ef_num - inner_deleted) WRITE_SHORT (ab_off+i*0x28+0x0c) 1 // target = creature WRITE_SHORT (ab_off+i*0x28+0x26) 1 // projectile = none END COPY_EXISTING ~%spell%.spl~ ~override~ // modifying the original READ_LONG 0x34 level READ_LONG 0x64 ab_off READ_SHORT 0x68 ab_num READ_LONG 0x6a ef_off READ_SHORT 0x70 cast_num // global effects aka casting features total_eff=cast_num FOR (i=0;i<ab_num;i+=1) BEGIN READ_SHORT (ab_off+i*0x28+0x1e) ef_num // effect number READ_SHORT (ab_off+i*0x28+0x20) ef_ind // effect index total_eff+=ef_num END DELETE_BYTES ef_off ((total_eff - 1)*0x30) DELETE_BYTES ab_off ((ab_num - 1)*0x28) WRITE_SHORT 0x68 1 WRITE_LONG 0x6a (ef_off - (ab_num - 1)*0x28) WRITE_SHORT 0x70 0 WRITE_SHORT (ab_off+0x1e) 1 WRITE_SHORT (ab_off+0x20) 0 // ability header WRITE_SHORT (ab_off+0x10) 1 // level required // effect offset=(ef_off - (ab_num - 1)*0x28) WRITE_SHORT (offset+0x00) 146 // opcode = cast spell on creature WRITE_BYTE (offset+0x02) 2 // target = pre-target WRITE_BYTE (offset+0x03) level // power level = spell level WRITE_LONG (offset+0x04) 0 // parameter 1 = caster's level WRITE_LONG (offset+0x08) 1 // parameter 2 = instant WRITE_BYTE (offset+0x0c) 1 // timing mode = permanent WRITE_ASCII (offset+0x0d) ~~ (5) // clearing out the space WRITE_BYTE (offset+0x12) 100 // probability 1 = 100% WRITE_BYTE (offset+0x13) 0 // probability 2 = 0% WRITE_ASCIIE (offset+0x14) ~%spell%b~ (8) // resource WRITE_ASCII (offset+0x1c) ~~ (20) // clearing out the space END // ACTION_FOR_EACH Link to comment
mercurier Posted July 10, 2009 Share Posted July 10, 2009 1. Most certainly Don't shoot Fireballs in the midst of wizards 2. If they were marked as AoE earlier then that flag will automatically transfer into the secondary spell. Otherwise, the MI code I sent to Demi will need one more line to add ... 3. IIRC they don't cast anything at protected PCs, save antimagic. Sure, they may accidently hit someone standing near and suffer a backlash, but there're two points here: a) they most likely have their own spell protections on b) players may experience the same effect, not to mention the inability to easily kill a well protected enemy by casting a couple of powerful AoE spells nearby You have successfully convinced me for its feasibility. Strangely enough, it didn't quite worked for me though I might have merely missed a detail Does it bypass spell protections? As Demi recently said, Primary spell (e.g. spwi913.spl Wail of the Banshee):- target type 'caster' - projectile 'none' - cast spell at point (148) set to cast secondary spell instantly on self Secondary spell (e.g. spwi913d.spl): - if I'm not wrong this spell do exactly what the original spell did For arbitrary-centered AoE spells, things are a little different: Primary spell (e.g. spwi304.spl Fireball):- target type 'area' - projectile 'none' - cast spell at point (148) set to cast secondary spell instantly by self (in DL it is the field "target" that is set to self, while the "real" target of the secondary spell is automatically inherited from the primary spell, i.e. the cursor position) Secondary spell (e.g. spwi304d.spl): - this spell do exactly what the original spell did Above are examples of fixed AoE spells. With such fix, MR bypassing exploit will be solved, but AoE spells will not be turned/deflected (as in vanilla game). I've test the "fixed Fireball": it didn't bypass GoI or SI or MR, and ignored Spell Turning/Deflection as expected. This solution is for those who don't like to see AoE spells get turned/deflected, and I believe its implemention is similar to and easier than your original one. So now we can wait for others to vote and decide which one to use Link to comment
Demivrgvs Posted July 10, 2009 Share Posted July 10, 2009 I wonder why Flame Strike, Dragon's Breath and Comet are in this list. They are party-friendly, aren't they?My bad, apparently.Well, I'm not sure but considering its 5' radius Flame Strike may still be exploited to bypass magic resistance if self targeted. I don't know about the other two spells, unless we decide we don't want them to do so they already bypass magic resistance normally, no exploit needed. If a FB catches multiple targets with Turning on them, then the original caster of FB would get multiple feedback!Most certainly Don't shoot Fireballs in the midst of wizards Well, this is unacceptable imo, even if improving the effectiveness of spells like Spell Deflection/Turning has always been my dream. After all, I prefer the "primary spell has secondary AoE spell cast at point" mechanismStrangely enough, it didn't quite worked for me though I might have merely missed a detail Does it bypass spell protections? Yeah, the solution we recently discussed with Mercurier should work fine in every situation and handle Spell Deflection/Turning as always, because it doesn't involve any single target projectile anymore. Sorry for not being able to help much for a while, I'm really busy. Link to comment
mercurier Posted July 10, 2009 Share Posted July 10, 2009 I wonder why Flame Strike, Dragon's Breath and Comet are in this list. They are party-friendly, aren't they?My bad, apparently.Well, I'm not sure but considering its 5' radius Flame Strike may still be exploited to bypass magic resistance if self targeted. I don't know about the other two spells, unless we decide we don't want them to do so they already bypass magic resistance normally, no exploit needed.Flame Strike is all right even cast via sequencer. Link to comment
Ardanis Posted July 10, 2009 Author Share Posted July 10, 2009 AoE and spell protections Well, this is unacceptable imoWhy??? MR bypassing exploit Projectiles that don't affect party members seem to be clean in the 'bypassing MR when self-centered' regard. So I presume that Flame Strike and Wail of Banshee don't need to be included. Though I doubt that including them may cause any ill side effect either. - projectile 'none'- cast spell at point (148) set to cast secondary spell instantly by self Well, I was dumb. That's exactly how scrolls work... // removing 'bypassing MR' exploit, without making spells affectable by spell protections ACTION_FOR_EACH ... // list of spells BEGIN ACTION_IF FILE_EXISTS ~%spell%b.spl~ BEGIN PRINT ~The %spell%b.spl already exists in your game. Take measures.~ END COPY_EXISTING ~%spell%.spl~ ~override/%spell%b.spl~ // cloning original into the secondary spell WRITE_ASCII 0x8 ~~ (8) // clearing out the name READ_LONG 0x64 ab_off READ_SHORT 0x68 ab_num READ_LONG 0x6a ef_off READ_SHORT 0x70 cast_num // global effects aka casting features // deleting 'Set Global Variable [265]' opcodes deleted=0 FOR (i=0;i<cast_num;i+=1) BEGIN READ_SHORT (ef_off+(i - deleted)*0x30) opcode PATCH_IF opcode=265 BEGIN DELETE_BYTES (ef_off+(i - deleted)*0x30) 0x30 deleted+=1 END END WRITE_SHORT 0x70 (cast_num - deleted) FOR (i=0;i<ab_num;i+=1) BEGIN inner_deleted=0 READ_SHORT (ab_off+i*0x28+0x1e) ef_num // effect number READ_SHORT (ab_off+i*0x28+0x20) ef_ind // effect index WRITE_SHORT (ab_off+i*0x28+0x20) (ef_ind - deleted) FOR (j=0;j<ef_num;j+=1) BEGIN READ_SHORT (ef_off+(ef_ind+j - deleted)*0x30) opcode PATCH_IF opcode=265 BEGIN DELETE_BYTES (ef_off+(ef_ind+j - deleted)*0x30) 0x30 deleted+=1 inner_deleted+=1 END END WRITE_SHORT (ab_off+i*0x28+0x1e) (ef_num - inner_deleted) END COPY_EXISTING ~%spell%.spl~ ~override~ // modifying the original READ_LONG 0x34 level READ_LONG 0x64 ab_off READ_SHORT 0x68 ab_num READ_LONG 0x6a ef_off READ_SHORT 0x70 cast_num // global effects aka casting features total_eff=cast_num FOR (i=0;i<ab_num;i+=1) BEGIN READ_SHORT (ab_off+i*0x28+0x1e) ef_num // effect number READ_SHORT (ab_off+i*0x28+0x20) ef_ind // effect index total_eff+=ef_num END // wiping the needless stuff out and resetting to new values DELETE_BYTES ef_off ((total_eff - 1)*0x30) DELETE_BYTES ab_off ((ab_num - 1)*0x28) WRITE_SHORT 0x68 1 WRITE_LONG 0x6a (ef_off - (ab_num - 1)*0x28) WRITE_SHORT 0x70 0 WRITE_SHORT (ab_off+0x1e) 1 WRITE_SHORT (ab_off+0x20) 0 // ability header WRITE_SHORT (ab_off+0x10) 1 // level required WRITE_SHORT (ab_off+0x26) 1 // projectile = none // effect offset=(ef_off - (ab_num - 1)*0x28) WRITE_SHORT (offset+0x00) 148 // opcode = cast spell on point WRITE_BYTE (offset+0x02) 1 // target = self WRITE_BYTE (offset+0x03) level // power level = spell level WRITE_LONG (offset+0x04) 0 // parameter 1 = caster's level WRITE_LONG (offset+0x08) 1 // parameter 2 = instant WRITE_BYTE (offset+0x0c) 1 // timing mode = permanent WRITE_ASCII (offset+0x0d) ~~ (5) // clearing out the space WRITE_BYTE (offset+0x12) 100 // probability 1 = 100% WRITE_BYTE (offset+0x13) 0 // probability 2 = 0% WRITE_ASCIIE (offset+0x14) ~%spell%b~ (8) // resource WRITE_ASCII (offset+0x1c) ~~ (20) // clearing out the space END // ACTION_FOR_EACH Link to comment
Guest amanasleep Posted July 10, 2009 Share Posted July 10, 2009 1. If a FB catches multiple targets with Turning on them, then the original caster of FB would get multiple feedback!1. Most certainly Don't shoot Fireballs in the midst of wizards Am I wrong to think that this behavior, if implemented, would be very exploitable? Link to comment
Demivrgvs Posted July 10, 2009 Share Posted July 10, 2009 AoE and spell protections Well, this is unacceptable imoWhy???Well, having a mage cast a single 10d6 fireball against two mages protected by Spell Turning and suffer 20d6 damage (instead of normally affect them) doesn't feel right to me. Is it? Am I wrong to think that this behavior, if implemented, would be very exploitable?It depends...if SCS is installed the AI will probably use anti protection spells...but players would be advantaged anyway as the AI can't take the change into account. MR bypassing exploit Projectiles that don't affect party members seem to be clean in the 'bypassing MR when self-centered' regard. So I presume that Flame Strike and Wail of Banshee don't need to be included. Though I doubt that including them may cause any ill side effect either.Actually I'm quite sure Wail of the Banshee bypasses magic resistance without this tweak (at least it did in my tests), and it shouldn't. Am I wrong? Link to comment
Ardanis Posted July 10, 2009 Author Share Posted July 10, 2009 AoE and spell protections Well, having a mage cast a single 10d6 fireball against two mages protected by Spell Turning and suffer 20d6 damage (instead of normally affect them) doesn't feel right to me. Is it?Your point is that a 3rd lvl spell becomes 3*number_of_targets lvl one? Hmm... Well, lets say that not too often you can meet more than one Spell Turning active. Stripping three snake-mages of their protections by a couple of FBs (while having 100% fire res on yourself) may be an exploit. Not being able to Chaos/Insect/Sphere of Chaos/Symbol Stun/High Level Elemental Damage/Wail of Banshee them all at once is not. MR bypassing exploit I'm quite sure Wail of the Banshee bypasses magic resistance without this tweak (at least it did in my tests)It didn't in mine. I used it near to a 100% MR dummy only to see the 'Magic Resistance' in the textbox. Link to comment
mercurier Posted July 11, 2009 Share Posted July 11, 2009 MR bypassing exploit I'm quite sure Wail of the Banshee bypasses magic resistance without this tweak (at least it did in my tests)It didn't in mine. I used it near to a 100% MR dummy only to see the 'Magic Resistance' in the textbox. In my test both WotB and Sunfire bypassed MR without the tweak. I guess this weird behavior is due to their target definition (target=self). PS: The radius of WotB is 52', while in description it is 40'. Link to comment
Ardanis Posted July 11, 2009 Author Share Posted July 11, 2009 Okay, I'll try to convince once more How about switching Spell Turning's and Spell Trap's effect, so that only the 9th lvl spell will reflect back? Spell Trap, unlike (Minor) Spell Turning, is far less common to be in use, both among enemies and PCs, thus the amount of possible issue cases will be reduced greately. I kinda find the turning effect to be more powerful than the trap, in addition. AI seems to relay exclusively on Detectable Spells, which doesn't care if the spell turns or traps, so regarding checks for defenses and antimagic usage there should be no problem. And since AI never casts on protected characters it won't try to exhaust PC's new lvl 9 Spell Turning while thinking it's a harmless Spell Trap. As for 4 spells in a row - Minor Spell Deflection (3), Minor Spell Trap (5), Spell Deflection (6), Spell Trap (7) - having the same hardcoded animation, I'm happy to announce that 'Protection: Spell Trap [259]' doesn't have to use the same .bam that 201, 204, 205 and 223 opcodes use. I've made a small exe patch for that, so it can be fixed at any time, provided there's a new suitable .bam to use. PS Ok, I lied about DS. Without opcodes present it won't mark three tweaked spells at all. It can be done manually, though. Link to comment
mercurier Posted July 12, 2009 Share Posted July 12, 2009 IIRC some cowled wizards and liches use Spell Turing and Spell Trap just because they are high level mages and these two spells are more durable than their low level cousins. And when speaking Spell Turning and Spell Trap, I think the latter is no less powerful than the former: they both utilize the magic energy of incoming attacks, just in different ways. Anyway, having a new bam for Spell Turing is a good news! I bet you can get some nice bams from IWD(2). Link to comment
Guest amanasleep Posted July 12, 2009 Share Posted July 12, 2009 Okay, I'll try to convince once more How about switching Spell Turning's and Spell Trap's effect, so that only the 9th lvl spell will reflect back? So you want to make Spell Trap Level 7? That would allow you many exploits, for instance allowing you to recharge your spells with Project Image clones without having any 9th Level spells. Link to comment
Aranthys Posted July 12, 2009 Share Posted July 12, 2009 If this component causes this behaviour (AoE spells are returned at the caster and deplete SPell turning / spell mirroring / spell deflection) then i would say ; Scrap the modifications... A level 20 caster that recieves 40d6 damage when casting horrid writhing on two mages with spell reflection really doesn't feels right Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.