Jump to content

DavidNYC

Members
  • Posts

    22
  • Joined

  • Last visited

About DavidNYC

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

DavidNYC's Achievements

  1. Hey @subtledoctor, after being away from this for a week, any of these variations are fine. 'Defense' is more succinct than 'mage protection' or 'spell protection'. "Better Spell Defense Visuals" or "Better Spell Defense Visual Feedback". Selection Circle Ioun Animations Here are a few more options to include at your discretion. IMO none of them are as 'necessary' as the ones we've already done. They're more helpful reminders on party members rather than enemies. Shield wouldn't merit an animation at all except that it grants immunity to magic missile, which I tend to use as a spell interrupter, and most SCS mages cast Shield. I've done Shield (white), Protection from Magic Energy (purple), Protection from Fire (red), and Protection from Cold (blue). I haven't done anything for Electricity, Acid or Poison, and even Cold is fairly irrelevant. If I ever thought I wanted to animate some other spells, I wouldn't hesitate to repurpose any/all of these to different spells. ACTION_FOR_EACH file IN SPWI114 dwsw114 // Shield BEGIN LAF DK_Invis_Animations INT_VAR mTarget=1 mCloneOpcode=0 STR_VAR mCode="114" mFile=EVAL "%file%" mAnim1="ion1Shld" mAnim2="ion2Shld" mInsert="first" END END ACTION_FOR_EACH file IN spwi606 dwsw606 // Protection Magical Energy BEGIN LAF DK_Invis_Animations INT_VAR mTarget=2 mCloneOpcode=31 STR_VAR mCode="606" mFile=EVAL "%file%" mAnim1="ion1MagE" mAnim2="ion2MagE" END END ACTION_FOR_EACH file IN spwi319 dwsw319 // Protection Fire BEGIN LAF DK_Invis_Animations INT_VAR mTarget=2 mCloneOpcode=30 STR_VAR mCode="319" mFile=EVAL "%file%" mAnim1="ion1Fire" mAnim2="ion2Fire" END END ACTION_FOR_EACH file IN spwi320 dwsw320 // Protection Cold BEGIN LAF DK_Invis_Animations INT_VAR mTarget=2 mCloneOpcode=28 STR_VAR mCode="320" mFile=EVAL "%file%" mAnim1="ion1Cold" mAnim2="ion2Cold" END END ioun orbit selection circle.zip
  2. @subtledoctor I think I still prefer something like "Better Spell Protection Visual Feedback", but I'm handing off the decision to you. We're both so deep in the details that it just occurred to me how half the animations are COMBATPROTECTIONS rather than SPELLPROTECTIONS. If I had to guess the single most useful feature for an average player, it's being sure when pfMW has been removed from an enemy ("I cast Breach but I still can't damage him!" At least now he'll see the purple bulb is still there). Anyway, the mod's headline descriptive paragraph can contain whatever keywords you think people will search for, and a couple of images are even better. "Have you ever been frustrated when you've cast Breach on an enemy wizard and are not sure if it removed his Protection from Magic Weapons? Have you cast Secret Word and wondered 'did that just remove Immunity:Abjuration or Minor Spell Deflection?' Wonder no more..."
  3. @subtledoctor It's certainly your call if you want to do that. I feel like it happens infrequently enough that I can live with it. I tried to replicate the problem with TRAKK01.CRE (Adratha who turns into a Rakshasa). She uses dw#mg404.bcs and pretty reliably casts multiple protections and then, after a couple of rounds, Shadow Door. However, her animations are reappearing on attack. I looked at dw#mg404.bcs and see why: These blocks alone would prevent the need for the Global Effects that SCS puts in all hostile mage spells (though it might be more responsive by a couple of ticks to have them in the spell Global Effects). Anyway, if every enemy had this in at least one script, that would solve the problem. But I'm not suggesting screwing around with that. I could swear there's at least one Rakshasa floating out there without this scripting component, but this is evidence that SCS is aware of the possibility on certain enemies. The "Dispelling Screen on a Shadow Thief" is still real, but it's less of a concern. As an aside, the posterboy for this mod is the Shade Lord. In SHADEL.BCS he always starts combat with: RESPONSE #100 SetGlobalTimer("mantle","LOCALS",EIGHT_ROUNDS) SetGlobalTimer("castspell","LOCALS",ONE_ROUND) DisplayString(Myself,121651) // Shadow Mantle ApplySpell(Myself,WIZARD_PROTECTION_FROM_MAGIC_WEAPONS) // SPWI611.SPL (Protection from Magical Weapons) ApplySpell(Myself,WIZARD_SPELL_TURNING) // SPWI701.SPL (Greater Spell Deflection) ApplySpell(Myself,WIZARD_MIRROR_IMAGE) // SPWI212.SPL (Mirror Image) ApplySpell means the only log output is 'Shadow Mantle'. The player could understandably assume that refers to vanilla's Mantle or Improved Mantle. But since it's actually pfMW, the new animation reliably tells you what happened. Good point. I agree it should have a ghostly visual. Completely your call what to do with Sanctuary for the mod. If you choose to just go with a SANCTRY.BAM replacement, I'd say scrap my previous one and consider this one instead (file attached). SANCTRY.BAM
  4. @subtledoctor Other comments: 1. Mod Name I'd strongly suggest a name like "Better Mage Protection Visual Feedback" or "Better Spell Protection Visual Feedback". "Better Spell Visuals" is fine but it could refer to "better fireball explosion animations", etc. "Feedback" is the most likely keyword I'd imagine a frustrated player would use when researching the problem this mod addresses. You might be able to think of different/better keywords. If I were putting this on Nexus, I'd seriously name it something like "How the Hell Am I Supposed to Know Which Mage Protection I Dispelled?" I think everyone would click on a mod with that name. 2. ~DavidNYC's Functional Spell Tweaks~ Let's scrap this component. I have > 700 kB's of personal tweaks to my game and there's no good reason to put this particular handful in there with an animations mod. It will just confuse people and it could conflict with the other mods you guys have done. 3. Hiding Animations (HA) improvements SCS' HA works as desired on enemy mages, but there are some edge cases where it doesn't. Since I've gone to the trouble of handling the exceptions, here it is. The easiest way to see if this is all working is to set up a scenario of an enemy mage + several other enemies. Enemy mage casts Dispelling Screen (AoE) and Mass Invisibility. The DS won't be hidden on the mage's allies if those allies start the encounter invisible and/or they turn invisible during the encounter. The DS anim gives away their position and it ruins that element of the encounter. This actually comes up a lot since almost every mage pre-buffs with DS. Good examples are attacking Mae'Var or attacking Aran Linvail's compound (e.g. see AR0328.bcs. Combinations of a Shadow Mage and several shadow thieves, FLYFGT[01-04].CRE) HA Fix 1: Some common SCS Invisibility spells don't have the Animation Hiding code. (e.g. Potion of Invisibility) ACTION_FOR_EACH file IN dw#silin // scs invisibility dw#illin // scs improved invis potn10 // potion of invis sppr516 // pixie dust BEGIN COPY_EXISTING_REGEXP GLOB ~%file%.spl~ ~override~ // remove effects at expiration of this invis spell LPF DK_CLONE_EFFECT INT_VAR match_opcode=20 multi_match=1 opcode=326 timing=4 parameter1=0 parameter2=0 STR_VAR resource=~DW#BLHDA~ END // SCS method applies effects to SOURCE (43). Later change to ALLIES(49) for any AoE Invis. LPF DK_CLONE_EFFECT INT_VAR match_opcode=20 multi_match=1 opcode=326 timing=1 duration=0 parameter1=0 parameter2=43 STR_VAR resource=~DW#HDANI~ END BUT_ONLY END HA Fix 2: Apply animation hiding to allies as well as caster for AoE invisibility spells (e.g. enemy mage casts Invis 10') ACTION_FOR_EACH file IN spwi307 // invis 10' spwi721 // mass inv sppr516 // pixie dust BEGIN COPY_EXISTING_REGEXP GLOB ~%file%.spl~ ~override~ // legacy note: allies do NOT need splstate=180, that check is performed strictly on the caster // 43= source, 49=allies LPF ~ALTER_SPELL_EFFECT~ INT_VAR match_opcode=326 match_parameter2=43 parameter2=49 END BUT_ONLY END HA Fix 3: In preparation for the next step, create a new spell state which is permanently applied to party members. Will need this so that animations only disappear on enemies, not on PC's. I'm hardcoding a new splstate.ids (200 MY_PARTY) but I'm sure there's a more dynamic and mod-friendly way to do it. APPEND ~splstate.ids~ ~200%TAB%MY_PARTY~ // in my custom party .BS script, permanently assign splstate 200 to party members via MY_PARTY.spl // would need a better way to do this in a released mod IF Global("My_splstate_MY_PARTY","GLOBAL",0) THEN RESPONSE #100 ReallyForceSpellRES("MY_PARTY",Myself) SetGlobal("My_splstate_MY_PARTY","GLOBAL",1) END HA Fix 4: EVERY enemy gets animation hiding by ignoring splState!=180 check. Prevent Party animations from being hidden via splstate=200 (MY_PARTY) SCS assigns splstate DW_SCS_CASTER via the numerous mage scripts (e.g. dw#calab.spl is 'apply caster label'). DW_SCS_CASTER is splstate.ids #180 in my game (don't know if it's hardcoded or dynamically assigned). Any invisibility spell target splState!=180 gains protection from DW#HDANI. This method prevents the party's animations from being hidden (good), but it also prevents animation hiding on all non-mage enemies (bad). This most frequently happens on enemies like Shadow Thieves or Invisible Stalkers who have received a Dispelling Screen, but it also happens on any enemy without a mage script. ACTION_FOR_EACH file IN spwi206 // invis spwi307 // invis 10' spwi405 // improved invis spwi505 // shadow door spwi607 // mislead sppr516 // pixie dust spwi721 // mass invisibility dwsw206 // invis cast prev dwsw405 // improved invis cast prev potn10 // invis potion dw#silin // shadow thief stealth proxy dw#illin // shadow thief impInv BEGIN COPY_EXISTING_REGEXP GLOB ~%file%.spl~ ~override~ // remove (opcode 318 splState!=180) from every spell LPF DK_DELETE_EFFECT INT_VAR match_opcode=318 match_parameter1=180 END // prevents my party's anim from ever being hidden, prot from dw#hani.spl if splstate=200 (MY_PARTY) LPF DK_ADD_SPELL_EFFECT INT_VAR opcode=318 target=2 duration=1 parameter1=200 parameter2=110 resist_dispel=0 insert_point=0 STR_VAR resource=~DW#HDANI~ END BUT_ONLY END HA Fix 5: More consistent animation reveals via Divination Divinations without an opcode #220 'Remove spell school ILLUSION' component won't reveal animations when the target is revealed. (e.g. SR Detect Invisibility). I give every divination ability to remove ILLUSION power=0 (because DW#HDANI.spl effects are ILLUSION power 0). This won't unintentionally dispel something like level 1 Reflected Image, and it's only applied when the target is being revealed (i.e. no revealing animations when the target is still fully invisible). Note I've pretty carefully tweaked the Divinations to do what (I think) they are supposed to do, but some of your divination spells may not match mine. But this is also a pretty harmless effect (it's unlikely the enemy will have some other ILLUSION effect power=0). // Match Force Visible ACTION_FOR_EACH file IN sppr114 //faerie fire spwi224e //glitterdust spwi203d //detect invis sppr505d //true sight spwi609d //true sight BEGIN COPY_EXISTING_REGEXP GLOB ~%file%.spl~ ~override~ // correctly copies if Force Visible has a save (e.g. my Glitterdust) // Non-Detection already handled by blocking Child spells with Force Visible LPF DK_CLONE_EFFECT INT_VAR multi_match=1 match_opcode=136 opcode=220 parameter1=0 parameter2=5 END END // Match Cure Invisible COPY_EXISTING ~sppr309d.spl~ ~override~ //Purge Invisibility LPF DK_CLONE_EFFECT INT_VAR multi_match=1 match_opcode=116 opcode=220 parameter1=0 parameter2=5 END BUT_ONLY // Other divination spells // spwi515.spl (Oracle) and Thief Detect Illusion already remove all primary ILLUSION // I replace Detect Illusion spwi322.spl with Invisibilty Purge sppr309. My spwi322.spl calls sppr309d.spl // my SPCL232 SPCL732 Inq/Helm True sight call sppr505d /* optional: // dw#silin.spl is very commonly used by used by shadow thieves, djinni, and many scs scripts // currently dispellable but NONE primary school, therefore Thief Detect Illusion can't dispel // SCS intent unclear. Is this supposed to mimic Thief Modal Stealth? (i.e. non-magical effect) COPY_EXISTING ~dw#silin.spl~ ~override~ WRITE_BYTE 0x25 5 // primary Illusionist. Without this, Thief Detect Illusion won't work LPF ALTER_EFFECT INT_VAR resist_dispel=0 END // make it non-dispellable? */ HA Fix 6: Hide animations on enemies that begin encounter invisible via 'hardcoded' .CRE effect e.g. see AR0328.bcs. The Shadow Thieves start the encounter invisible because of the opcode 20 effect in their CRE. But the Shadow Thief Mage contingencies Dispelling Screen when the party enters the room, immediately revealing all their positions. COPY_EXISTING_REGEXP GLOB ~[^-]+\.cre~ ~override~ // Don't load files with - hyphen. READ_STRREF 0xc n1 //Identified name LPF DK_CLONE_EFFECT INT_VAR match_opcode=20 opcode=326 silent=1 parameter1=0 parameter2=0 STR_VAR resource=~DW#HDANI~ RET mInv=new_fx END PATCH_IF %mInv%>0 BEGIN PATCH_PRINT "CRE starts out invisible: %SOURCE_RES% %n1%" END BUT_ONLY HA Fix 99: General note on how enemy animations are revealed Enemy animations only reappear when: 1. Party casts divination (see #5 though, several divinations do not reveal them without this tweak) 2. Enemy casts a hostile spell (e.g. see the GLOBAL effects in Fireball spwi304.spl) But that's it. So if an enemy breaks invisibility by physically attacking, his hidden animations stay hidden. Often you won't care about this (e.g. Dispelling Screen remains hidden on a Shadow Thief who attacks). But it can be confusing on something like a Rakshasa who casts pfMW + Improved Inv, then physically attacks. The pfMW anim won't be revealed.
  5. @subtledoctor Cool. All your suggestions are tilted in the direction I'd tweak things, so I agree. New files are at: https://www.dropbox.com/s/d0j4l1t4d0q0trz/DavidNYC's Better Spell Protection Feedback v2.zip?dl=0 mGoI now adds a green overlay (myGlobeG.VVC), just like like GoI adds the peach overlay. // Green mGoI overlay ACTION_FOR_EACH file IN spwi406 dwsw406 BEGIN LAF DK_Invis_Animations INT_VAR mTarget=1 mCloneOpcode=102 STR_VAR mCode="406" mFile=EVAL "%file%" mAnim1="myGlobeG" END END Tweaked, same file names. I agree it's nice to have DS brightened up on enemies. Due to its location as much as its intensity, it's tough to see on an enemy with DS+GoI+GSD+SS+FSRed. On the other hand I still prefer it subtle on my party because it's AoE and I often have it running on my PC's. So I like to limit the visual distraction effect. You'll have to decide what you want to put in the mod, but my new solution is to use different anim for the party and for enemies. Of course you can choose to go with a single anim. discBlue.BAM/.VVC is no longer used. k1#scre gets dsGreen (applied to everyone) and dsRed (applied to enemies only). I permanently block dsRed.vvc for all my PC's via my custom party .BS script, but that's not an immediately mod-friendly solution. Assuming you want to implement this, I don't know best practice you guys use to accomplish this in a mod setting. // K1#SCRE used by both dwsw510 and spwi510 ACTION_FOR_EACH file IN k1#scre BEGIN LAF DK_Invis_Animations INT_VAR mTarget=2 mCloneOpcode=101 STR_VAR mCode="510" mFile=EVAL "%file%" mAnim1="dsGreen" mAnim2="dsRed" END END // in my custom Party .bs script, add opcode #296 'Protection from Animation' timing=1 resource="dsRed" to every PC. IF Global("My_block_DS_anim","GLOBAL",0) THEN RESPONSE #100 ReallyForceSpellRES("blockDS",Myself) // permanently block dsRed all PC's via blockDS.spl SetGlobal("My_block_DS_anim","GLOBAL",1) END New animation: Sanctuary New Sanctry.BAM replaces the existing BAM. Requires no changes to the spell and no invisibility handling (already handled by dw#hdani.spl, opcode #291). As an aside, you can eliminate the Sanctuary 'white glow' by externalizing the vvc. But I found I need that glow in-game as a visual proxy for the invisibility effect.
  6. I saw these posts immediately above mine and, fyi, I tweak my game to allow friendly, single-target spells through Spell Deflection by setting their power to 0.
  7. @subtledoctorIt doesn't really matter, but I use "dk" even if you just want to keep track of my 'originals' with a consistent id before using something else in the end.
  8. @subtledoctor Exactly. And just to be sure you saw it, my code to do that is there in the previous post in a Hidden Section (DEFINE_ACTION_FUNCTION DK_Invis_Animations) . If you have SCS installed right now, you should be able to run it almost as-is. Fair enough, and it's all independent to a mod of working animations. I don't know anything about the evolution of SR and didn't even know that documentation wasn't written by the original author. The very thing I love about SR & IR is that they're a rebalance I could adopt (almost) wholesale. I was starting to tweak vanilla, but when I found SR & IR it gave me the feeling of "ok, here are a fair set of rules and I'm going to work in them rather than tweaking things with my own biases." In vanilla, my party would run around with that 8 hours of 10' invisibility simply because it was available and therefore I wasn't 'cheating', but it felt cheap. Then SR' says, no, only 60s duration. I liked that decision being taken out of my hands and thinking, "ok, that option is severely curtailed, here's what I have to do differently."
  9. @subtledoctor Ok, I really have to cut this off but I saw this in my code. Please add these to the SR spell fixes. This first one is a straight up bug rather than an interpretation AFAIK. 1. pfMW is protecting from normal weapons as well as magic. I remember this was one of my first fixes. I know you guys have been working on SRR and may have caught this long ago. 2. SR allows pfNW and pfMW to stack. The base game disallowed it and even created related strref messages. This allowance may be intentional on SR's part, but it feels more like an oversight. Vanilla also disallowed pfMW to stack with Mantle, Improved Mantle or Abs Immunity while SR allows it. I do allow stacking with these since the SR versions feel designed to each have different effects (Prismatic Mantle is a clever protection that's more fun than 'weapons <= +3'). You guys have heard far more feedback though and I could be convinced otherwise.
  10. @subtledoctor Definitely agree. No, SCS would have to hardcode these changes into stratagems\spell\stratagems\invisibility_animations.tpa. That'd be between you and DavidW to see if something could be worked out. The alternative that doesn't touch SCS is what I'm currently doing: install SR + SCS, then add these animations afterwards. This should help. DK_Invis_Animations code: Sounds good. Yeah, I personally don't like ioun stone helmet animations on my PC's so I've always had them disabled. My general preference is I only want to see animations that convey "combat-relevant" information. But it's still a conflict and I leave it to you. This was more of an FYI, certainly no need to include it. I actually started by giving those conditions unique animations and just tried the glows as an experiment. Interesting how the game originally decided that 'confusion' was a condition meriting a unique animation but most other conditions do not. I know we have portrait icons, etc, but the conditions affect both PC's and enemies. Sounds good. BTW, I checked my install and I've been using 65%. Good, and I'd prompt a user message along the lines of "These changes attempt to bring protections in line with their documented behavior on https://gibberlings3.github.io/SpellRevisions/spells/arcane/." (as opposed to yet another random person doing his own thing). I know the documentation is v18, but I believe these spell issues are unchanged since v16. Heh, no, leave it as Moment of Prescience. No point in confusing people. I just made note of that since you'd see 'Improved Mantle' in my code. Thanks and good luck. There's only one other tricky component I'll have to post later. Dispelling Screen is the only AoE animation and SCS invisibility hiding doesn't work out of the box. This actually comes up a lot since virtually every mage buffs with DS and so their allies get it too. Assassinating Mae'Var, attacking the Shadow Thieves, etc., all have fights where the stupid thieves are chugging their 3 invisibility potions but their position is given away by their DS (pic is original SR + SCS animation). Anyway I do have a fix for this, I'll post it in the next few days. dw#hidea.eff dw#hideb.spl dw#hidea.spl dw#hideb.eff
  11. @subtledoctor p.s. I moved all my uploaded images to imgur. If you look back at my first posts, all the embedded images now match the contents of the .zip file.
  12. Ok @subtledoctor, here are the files and a Read Me that explains what goes where. I give everyone permission to use these files as desired. If you publish a mod which incorporates them, please give me a credit for posterity's sake. When working with the files, refer back to my previous posts for images of the various spell animations in action. https://www.dropbox.com/s/teo2grmy373liuq/DavidNYC's Better Spell Protection Feedback v1.zip?dl=0
  13. Cool, I'll have time this weekend. I agree that any discussion of how the spells should behave is an entirely separate issue. It has occurred to me that the vast majority of players play without SR. I'm going to leave this entirely in your hands if you want to release something that distinguishes between a SR game and a vanilla game. e.g. I chose a Dispelling Screen animation knowing it is an AoE effect, but in vanilla, Spell Immunity:Abjuration is single target. Maybe you'll think something else is better in that case. Non-animation issue: I'd assume 95% of people using any version of SR or your SRR are also using SCS. The main reason I switched from SCS "vanilla" to SCS "+ SR" a while back is when @DavidW specifically integrated SR v4b15 with SCS 32. https://www.gibberlings3.net/forums/topic/29765-scs-spell-systems/?tab=comments#comment-264334 "Spell Revisions - specifically, SR v4b15. v31 and earlier were officially supporting v3 of SR, which - although still the "official" version - is badly out of date. v32 goes to quite a lot of effort to systematically allow for SR in its spell choices, sequencers, contingencies, targetting, prebuffing, and strategy. (And almost all of SCS's spell tweaks are disabled on an SR install.)" I 100% agree with both of you that it's open to debate how things should work for best balance. But it seems the real driver is how @DavidW uses things. e.g. I'm almost certain he's using WIZARD_DISPELLING_SCREEN as documented. In Chapters 2 & 3, most mages cast WIZARD_DISPELLING_SCREEN as their only defense (SCS Tactical difficulty, his 'recommended' setting I believe). @subtledoctor, if you change your version of Breach to cancel the screen AND combat protections in one cast, his AI isn't expecting that (presumably he'd throw up a Spell Deflection or Spell Shield too). Anyway, your testing may have shown it still gives a good outcome. Do you guys interact with DavidW? I see he's here occasionally, but the main reason I posted here instead of an SCS thread is you guys are most active. If you do complete something, @subtledoctor, I hope it can be incorporated into SCS for widest use. Makes sense. I looked at my code comments and see I came to the same conclusion. "If cast same spell 2x (SD, SD), still only absorbs 6 levels. Still removed by one secret word. If cast two diff spells (SD, gSD), correctly absorbs 9 levels (not 6+9) BUT NEEDS 2 Secret words to remove! Therefore can't allow more than one version of SD." Since I disallow stacking of (MSD/SD/GSD/ST), always taking the best one, I don't have to consider how these stacked animations look. Heh, yeah. The world of OCD system tweaking. If you mainly attack mages with mages, what you're saying is absolutely correct. It makes things harder for the PC. But if you mainly attack mages by trying to strip combat protections, SR makes things easier by giving the PC several more options (Spell Thrust, Secret Word, etc). I've got you covered. Behold the Absolute Immunity disco ball.
  14. Before I forget, is there an admin I could message to see about adjusting my upload limit as a new poster? After 15 hrs I see I have a grand total of 87 kB upload limit restored. I see the staff page but don't know who would actually respond. If there's someone you know to message on my behalf, please feel free to do so. Yep, that's effectively the exact way I've done it. No, all the MAGICATTACK spells should take out Dispelling Screen (at least according to the documentation through SR v18). And even setting aside the documentation, I agree they should remove it. The main innovation of Dispelling Screen was to avoid the brutal vanilla cheese of Immunity from Abjuration being immune to Dispel Magic AND all the spell removals. No, it's the former. The first Breach takes out Dispelling Screen. A second Breach is then required for the combat protections. Since the two ways to remove combat protections are Dispel and Breach, the main point of Dispelling Screen is to provide one 'spell shield' that blocks the first removal attempt. I can't vouch this little chart is 100% correct for my implementation, but I think it is (again as of SR v4b16, with my fixes for things like this Dispelling Screen issue). Note the 'AoE fireball' column; I implement and expand on SR's "Spell Deflection blocks AoE spells"
×
×
  • Create New...