Jump to content

Horred the Plague

  • Content Count

  • Joined

  • Last visited

About Horred the Plague

  1. Is it correct to say that as long as it remains a 4-bit file the color RGB itself is not as important as the degree of non-neutrality (variance from greyscale base)? Black Isle demonstrated that greyscale is not needed with their entry of 54.57.57. For neatness and concentricity I agree with your new ordering of 0,16,32,etc greyscale as a modder base--just wondering how much these levels can be manipulated by the user, especially in a freehand (non-generated) map.
  2. When DLTCEP adds the entry #14 to the height map, it does this with a color of 32.32.32. When it reads a hegiht map, it defines #14 as 218.218.218. Logically the 218.218.218 would be correct, but these are the game makers that included the typo reading of 54.57.57 as part of the 4-bit map. So, which is the correct color entry for height #14?
  3. Here's what I whipped up for the next BP-Series release in a couple days, thanks for the tip-off. Feel free to use it w/ the e-Series if you like (global names will need changing or just the important bits spliced-out). Or, just come grab the BP-Series pack from SHS now that it's fit for BG2-vanilla/BGT/(prob???) TuTu/BGEE, as well as Detectable Spells-compatible (i.e. should be no issues w/ SCS/II/etc, not that there really was before). More importantly, it's actively supported by the author these days. IF HaveSpell(WIZARD_SLEEP) OR(2) !GlobalTimerNotExpired("SPL_CAST","LOCALS") CheckStat(Myself,1,WIZARD_IMPROVED_ALACRITY) OR(2) ActionListEmpty() GlobalTimerNotExpired("INTERUPT","LOCALS") GlobalGT("THREAT","LOCALS",0) NumCreatureGT([EVILCUTOFF],2) General(LastSeenBy(Myself),HUMANOID) CheckStatLT(LastSeenBy(Myself),5,LEVEL) !InParty(LastSeenBy(Myself)) !Allegiance(LastSeenBy(Myself),GOODCUTOFF) !Race(LastSeenBy(Myself),ELF) // BGEE is set up to handle elf sleep resistance CheckStatLT(Myself,75,SPELLFAILUREMAGE) CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC) !HasItem("RAKRING",LastSeenBy(Myself)) // No such index !HasItem("IMMCHS",LastSeenBy(Myself)) // No such index !HasItem("IRONGOL",LastSeenBy(Myself)) // No such index !HasItem("MAGEAMUL",LastSeenBy(Myself)) // Necklace THEN RESPONSE #100 SetGlobalTimer("SPL_CAST","LOCALS",6) Spell(LastSeenBy(Myself),WIZARD_SLEEP) END IF HaveSpell(WIZARD_COLOR_SPRAY) OR(2) !GlobalTimerNotExpired("SPL_CAST","LOCALS") CheckStat(Myself,1,WIZARD_IMPROVED_ALACRITY) OR(2) ActionListEmpty() GlobalTimerNotExpired("INTERUPT","LOCALS") GlobalGT("THREAT","LOCALS",0) !General(LastSeenBy(Myself),UNDEAD) NumCreatureGT([EVILCUTOFF],1) HPGT(LastSeenBy(Myself),5) CheckStatGT(LastSeenBy(Myself),10,SAVEVSSPELL) Range(LastSeenBy(Myself),6) !InParty(LastSeenBy(Myself)) !Allegiance(LastSeenBy(Myself),GOODCUTOFF) OR(4) Range(Player1,1) // I'm the caster, or right next to them !Range(Player1,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player1,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player1,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance OR(4) Range(Player2,1) // I'm the caster, or right next to them !Range(Player2,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player2,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player2,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance OR(4) Range(Player3,1) // I'm the caster, or right next to them !Range(Player3,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player3,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player3,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance OR(4) Range(Player4,1) // I'm the caster !Range(Player4,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player4,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player4,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance OR(4) Range(Player5,1) // I'm the caster, or right next to them !Range(Player5,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player5,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player5,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance OR(4) Range(Player6,1) // I'm the caster, or right next to them !Range(Player6,8) // Range is 15 which means about 8 in script-measure CheckStatGT(Player6,4,LEVEL) // unconsciousness only affects up to 4 HD in spell effects CheckStatLT(Player6,8,SAVEVSSPELL) // A -3 save, so a 50/50 chance CheckStatLT(Myself,75,SPELLFAILUREMAGE) CheckStatLT(LastSeenBy(Myself),76,RESISTMAGIC) CheckStatLT(LastSeenBy(Myself),5,LEVEL) !HasItem("RAKRING",LastSeenBy(Myself)) // No such index !HasItem("MAGEAMUL",LastSeenBy(Myself)) // Necklace THEN RESPONSE #100 SetGlobalTimer("SPL_CAST","LOCALS",6) Spell(LastSeenBy(Myself),WIZARD_COLOR_SPRAY) END I did my best in IE-language to account for the 60-degree (actually 120-degree total) arc-effect of the color spray spell. Thus the Range of <= 1 OR > 8 checks. Close enough to not be in it, or far enough away not to matter. Still quite clumbsy, but you'd only expect the proper scripting functions for geometry in a 3d game (e.g., NWN has very precise cone-shaped AoE detection).
  4. If it only affects enemies then this check is not required, but what the Range(PlayerXX,0) check does is see if it's that player doing the casting. Nobody but (Myself) can be Range(0) by default, only Range(1) or higher. As per Color Spray, the real check needed is to see if the party members are in the Cone of effect or not, but there's no good IE scripting way of doing this. Thus, the sludgy workaround you see above. It's almost (but not entirely) safer to check if the party members are all close to the caster (where the cone has less spread to the arc, thus less residual danger threshold). Surprising the spell would fail passing the conditions though. I've seen both sleep and color spray cast by low-level parties in BGEE via BP-series scripts (where the conditional check code is similar). No party member in BG2 should have a LEVEL stat below 6 unless dual-classed (perhaps Imoen?) Maybe a third check added in, for CheckStatGT(Playerxx,5,LEVEL2) , would do the trick? Note that both spells need a formula change if you bring in something like Spell Revisions, that allows for higher victim levels than the original spells (dependent on caster level). Your only safety catch would be the "closeness" check I described above.
  5. This is actually EA.IDS - NotGood. The party cannot be affected by Polymorph Other (not even the enemy-only innate in ToB). Not sure what they were thinking... <{POST_SNAPBACK}> Okay; I knew I should've double-checked the targetting in DLTCEP; NI is innaccurate on this. And I now definitely think we should fix this spell (and its variants). Maybe in the G3 fix package instead?
  6. I just came across a slight setback while coding the DISPEL_BAD stats. I don't think I can use this to account for any of the IDS-targetted spells, like Hold Person, Hold Undead, Charm Person/Mammal, and so on. So far, I think only charm and hold will be affected. There may be others I'm not thinking about at this time. What does this mean, in layman's terms? The checks for DISPEL_BAD are going to also have to include the following checks, to be accurate: CheckStatGT(LastSeenBy(Myself),0,HELD) StateCheck(LastSeenBy(Myself),STATE_CHARMED) So, three checks instead of 30 or so... The plus side: you could leave these checks out, if desired. Note that you can also use negative checks to delete other effects you don't want included in your dispel ensemble (e.g.): CheckStatGT(LastSeenBy(Myself),0,DISPEL_BAD) NotStateCheck(LastSeenBy(Myself),STATE_SLOWED) And while it is not reliable due to overwriting, I have included Stars to equal the power (level) of the dispel. A fifth level spell (e.g., Insect Plague) will actually set the following as true: CheckStat(LastSeenBy(Myself),5,DISPEL_BAD) Unreliable, yes. The next spell that comes along (e.g., a web spell) will set the Stat to its value (2, in our example). Some people requested this feature, however. Anyways...the priest spells are done, I'm about 1/3 of the way through the wizard spells. DISPEL_GOOD has roughly twice as many spells as DISPEL_BAD. And, a handful of items that have dispellable effects (most are things like SGRASP, CHILLT, etc--spells that make magical weapons appear in the inventory). WEAPON_ENCHANTMENT stat will most likely be done weidu-automated with a REG_EXP_GLOB, so that won't take too long. So, in short---a prototype is only a few hours-at-work away. Now, to find time to actually do this.... I'll be looking for some brave testers to help me out, before I unleash this on the public-at-large. Obviously, it will have to be people that know what is going on, and why this is an important project. Horred EDIT: Looks like we could add POLYMORPHED stat to the checklist; it has some weird IDS targetting. (Object IDS/FourthNearestEnemyOf) Maybe we should fix the spell instead? EDIT 2: DISPEL_BAD finished. Only additional problem that rose was with SPWI715 (Power Word, Stun). This is a hardcoded effect, to apply random time blocks according to hit points. This is the only stun-based spell that causes any issues, so I didn't make all stun require StateCheck's. I set its timer for the maximum amount (96 seconds), and gave it a Max Hit Dice of 12. Not at all accurate, but some sort of approximation. Open to suggestions on this one... EDIT 3: Add Chant spell to the list of "things best not detected by a DISPEL_(xxx) stat. I forgot to list it earlier; also a hardcoded effect, it would have to apply both DISPEL_GOOD and _BAD, depending on who cast it and whom was affected. I doubt this will worry many modders much, as (IMO) casting dispel to rid a chant bonus/penalty is a wasted spell.
  7. The only one that isn't covered, of course, is that item strangling. This could also be done with a LOCALS global, very likely (maybe two--one for user, one for victim). Some of the others have changed, and are perhaps more effective in their new incarnation (e.g. -- the various spell immunities now have seperate stats). Look back further in the post for exact details. Just like everybody else that previously used the system, there will be some adaptation work. But if EC makes this effort, it should blend in relatively seamlessly with the rest of the mods. P.S: What is this "CLONE_OP" you are referring to? And why do they all say 142?
  8. The best you can do is make your best choices, and go with it. If you are there in the 'editting room', I would suggest doing a little bit of sound mixing as well (if you are doing this in >1 channel). Raise the volume of the guests a bit to match your voice level. Note that it is not entirely your fault--your voice comes through more resonant than most ppl's, if played at the same basic volume. I would love to do an interview/guest slot; perhaps when I get some new versions out and actually have "something" to talk about. And, get my microphone/PA system back from a guitarist buddy's house. P.S: Can probably borrow a 4/8 track recorder from time-to-time as well. (The moral: Don't worry about giving my voice any more volume, hehe ) It would be particularily nice if somehow it could be set up like a "radio callin" show--an "ask the modder" segment. Not sure if this is conceivably possible, or not, on the pc format.
  9. Payroll dept. directed me to the donations link...doesn't figure... Well, I got a little progress done, until I had to rescue my kitten from 30' or so up a skinny tree. He is unscathed, I'm scratched to bits! (by the tree, not the cat). I'll stop typing soon, as it hurts to type. But NEEDS_BREACH is done, and I got a start on DISPEL_BAD I found a spell that cannot be accounted for properly by the CheckStat DISPEL_ (good or bad). Chant spell. If you are concerned about chant in your scripts for dispelling matters, you'll simply have to use StateCheck(xxx,CHANT [/ _BAD]). I'm also setting up dispel-type spells as numerical entries based on their spell level (as per "...somebody's" request). Those who are familiar with how scripting state effects work will realize this is far from foolproof. The last entry recorded is the only one that sticks. But it may work "some of the time", which is better than none at all, and perhaps some scriptor or another might appreciate this. A standard, generic check will be done by a CheckStatGT(xxx,0,DISPEL_ [GOOD/BAD]). Okay, enough typing; time for some more antibiotic cream.
  10. UPDATE (or lack thereof...) I had some big RL issues come up this week, and nothing got done. I'll strive to correct this, in the following week. Cheers! Horred
  11. *wades through the mounds of confetti* I had a pretty busy week this week, not much progress was made. I got a bit into the NEEDS_BREACH stat--it's bigger than I thought it was. Almost as big as the DISPEL_(xxx) set! SPELLFAILUREINNATE and DEAD_MAGIC, the latest findings by Avenger, were also added to the stack. I'm sure we all can find uses for SPELLFAILUREINNATE; anyone making custom scripts for Watcher's Keep (esp demons) will possibly have use for the DEAD_MAGIC stat (perhaps a block or 2 in player scripts as well?). EDIT: This next week will probably be a busy one as well, but I'll do my best to set some time aside for further progress.
  12. Here is an in-game example, which I'm sure you know is working: From VAMPIR01.bcs: IF Die() THEN RESPONSE #100 ReallyForceSpellDead(Myself,VAMPIRE_GAS_FORM_CHANGE) END
  13. You can use a top block, with: IF Die() THEN RESPONSE #100 ReallyForceSpellDead(..........) END
  14. Or does this state not actually work?
  15. Bad news; it was as I feared, from tests I ran two years ago--repeated a few minutes ago. I set up a mock stat 205, and attached both ScriptingStateModifier and Proficiency effects to the Stoneskin (at different times). I could not get it to display a string head in-game. I will try again with a different spell, but I am not hopeful. The original BPDetectStat package (alpha pre-release) had many of these higher-value stats, which I ended up removing because they did not work in-game. I suppose the only hope I really hold is that some currently Unknown effect will make this possible--but I will try the test for posterity's sake nonetheless. EDIT: I repeated the above test with a custom spell, which had no other effects besides Proficiency or ScriptingStateModifier. Still no luck.
  • Create New...