Jump to content

subtledoctor

Modders
  • Content Count

    3,390
  • Joined

  • Last visited

2 Followers

About subtledoctor

Profile Information

  • Gender
    Male
  • Mods Worked On
    Scales of Balance
    Might & Guile
    Faiths & Powers
    NPC_EE
    APR on Spec
    Hardcore Dual
    Mac Weidu Launcher

Recent Profile Visitors

17,243 profile views
  1. Worst comes to worst, you can just put the English line into the Russion .tra file, so at least it will work and Russian speakers will have a slight little bit that is not translated.
  2. Thanks, will take a look. @Grammarsalad is the most up-to-date version being worked on back in the main branch? Or is it still my fork? These all look like very easy fixes, can do them in whichever branch is most relevant.
  3. Thanks! No problem. Happy to discuss it, and this is a really good example because the improvement in handling CLONE_EFFECT made this component roughly two orders of magnitude faster to install. CLONE_EFFECT has matching conditions so that it can be selective about which effects get duplicated. It is tempting to use this conditionality as an easy way to determine which spells/items are affected by the command. In this case, my spontaneous casting system tracks spell slots with an unused proficiency; so I wanted to patch the Ring of Wizardry and any similar items: any time an item uses opcode 42 to increase wizard spell slots, I want to add another effect, using opcode 177with a "while equipped" .EFF file that modifies the proficiency. The code looks like this: COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~ PATCH_IF (%SOURCE_SIZE% > 0x71) BEGIN LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 1 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src1e~ insert = ~first~ END LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 2 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src2e~ insert = ~first~ END LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 4 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src3e~ insert = ~first~ END [etc.] END BUT_ONLY There were a couple dozen such CLONE_EFFECT commands, because it needs to be done for every spell level, and for every amount of bonus spell slots there are in that level (within reason - I basically looking for matching conditions of "plus 1 spell slot," "plus 2 spell slots," and "plus more than 2 spell slots" so 27 CLONE_EFFECT commands in total). Thing is, CLONE_EFFECT is really slow. That's not a knock; it wasn't designed to be fast, it was designed to be effective at duplicating selective effects within spells and items. And it does that very well and is super useful. Just, slow. This component checked for the CLONE_EFFECT matching conditions in every item in the game; especially on a modded install, that was taking ~5 minutes. The easiest way I could think to reduce that time was to simply limit CLONE_EFFECT to running on items where it would actually potentially do something, i.e. only on items that have opcode 42 effects. So I made a list of those items: OUTER_SET mageslot_item_ind = 0 OUTER_SPRINT $mage_slot_items(~%mageslot_item_ind%~) ~mage_slot_item~ COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~ PATCH_IF (%SOURCE_SIZE% > 0x71) BEGIN SET plus_slots = 0 READ_LONG 0x64 headoffset ELSE 0 READ_SHORT 0x68 headcount ELSE 0 READ_LONG 0x6a effectsoffset ELSE 0 FOR (headcyc = 0; headcyc < headcount ; headcyc = headcyc + 1) BEGIN this_head = 0 READ_SHORT (headoffset + (headcyc * 0x38) + 0x1e) effcount ELSE 0 READ_SHORT (headoffset + (headcyc * 0x38) + 0x20) effectsindex ELSE 0 FOR (effcyc = 0; effcyc < effcount; effcyc = effcyc + 1) BEGIN READ_SHORT (effectsoffset + (effectsindex + effcyc)* 0x30) opcode ELSE 0 PATCH_IF (opcode = 42) AND (this_head = 0) BEGIN SET plus_slots = 1 SET this_head = 1 END END END PATCH_IF (plus_slots = 1)BEGIN SPRINT $mage_slot_items(~%mageslot_item_ind%~) ~%SOURCE_RES%~ SET ++mageslot_item_ind END END BUT_ONLY That creates an associative array called "mage_slot_items;" then checks every item in the game to find ones with opcode 42, and adds those items to the array. The result is an array with probably 10-20 items, again depending on other mods having been installed. I don't really know or care how many items are in the array, or which ones; I just know that the total number is very likely a tiny fraction of the total number of .ITM files in the game. Then I apply the CLONE_EFFECT commands only to the items in the array: ACTION_PHP_EACH mage_slot_items AS ind => slot_item BEGIN COPY_EXISTING ~%slot_item%.itm~ ~override~ LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 1 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src1e~ insert = ~first~ END LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 2 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src2e~ insert = ~first~ END LPF CLONE_EFFECT INT_VAR silent = 1 multi_match = 1 match_opcode = 42 match_parameter1 = 1 match_parameter2 = 4 opcode = 177 parameter1 = 0 parameter2 = 2 timing = 2 STR_VAR resource = ~d5src3e~ insert = ~first~ END [etc.] BUT_ONLY END Creating the array, identifying the relevant items for it, and applying CLONE_EFFECT to those items now takes a grand total of 10-20 seconds.
  4. Actually no. In most cases FnP defers to SR spells (or IWDification or SCS spells) if they are present. But I made my own versions of Magic Fang and Animal Growth in case SR is not present, because I’m using them as kit abilities. And my versions use EE engine tech and are a bit more expansive. (They also affect charmed animals, animal familiars, and possibly even shapeshifted druids. (Need to double-check that last one.)) So this is the one instance in which I do not defer to SR. (No offense.) My icons are god-awful, though. Just placeholders, for now.
  5. It really doesn't seem like the kind of thing that would be left lying around... (I mean that's true of a lot of things, but that one in particular.) Also, separately, that item is a real game-breaker that was pretty clearly designed to only be used in the last few minutes of the game (a game in which the Cavalier and Blackguard did not exist). Having it for all of BG2 would just be tantamount to going through the whole game pressing 'ctrl-R' on people. Fear immunity is not exactly difficult to come by in the sequel...
  6. Ogi-Luc's Great Robe gives 18/99 STR and can only be used by single-class mages, right? (If I remember IWD correctly.) Doesn't seem too OP to me... especially with something like IR installed, there are a lot of other robes I would rather put on a wizard. I love the idea of Haeball turning into a powerful Ogre Mage after you take him down to ~25% hp or something like that. I also really like the idea of Ghotal summoning IWD-style "shadowed orcs," especially if there is a nice tactical variety (archer, grunt, shaman).
  7. What happens to the old Magic Fang icon? Any chance we could get permission to use it? (Who made it anyway?) We're desperate for icons and I specifically need one for Magic Fang. (FnP installs its own variant of the spell, it's a rare case where we don't rely on SR.)
  8. SET_2DA_ENTRY takes different inputs (row/col/max cols/val) than SET_2DA_ENTRY_LATER (var/row/col/val). I think because %var% was set earlier when you did a READ_2DA_ENTRIES_NOW and implicitly includes the max col count. So not a contradiction, just two different functions.
  9. Sad part is, I’m trying to actually play the game now, with my mods - SoD for the first time, finally! with a spontaneous-casting cleric, cool! - and I’m just not finding it very fun. My brain is like “yeah yeah, but what about that psionics mod you never finished...”
  10. Question unrelated to powers: if this is to be moved to a wizard kit instead of a thief kit, that changes some things. Wizards advance much more slowly, so the rate of learning powers is different from what I originally envisioned. Further, I designed this around a kit with other skills and abilities besides psionics - better thac0, some other skills, etc. You're not meant to use psionic abilities every round. But with a wizard kit... what else are you supposed to do? Actual wizards can use wand and scrolls when they aren't casting spells; what should a psionicist do? A few possibilities jump out at me: - Allow multiclasses. Double the rate of learning powers, and allow psionicist/thieves and psionicist/fighters. Single-class psions would advance faster but have no other skills to fall back on. - Mandate multiclasses. Make it a multidisciplinary kit. The "Psionicist" would be a mage/thief, and the "Soulblade" would be a mage/fighter. There would be no pure-class psion. You would learn 2 powers/level instead of 1/level, so you could learn all powers by ~level 27. But as a multiclass wizard it would take you a while to reach level 27. Frankly. from a balance perspective this is very good. It is only a bit weird that you couldn't find the psionicist except in the multiclass menus. (Though, actually, I would probably put them in the single-class thief and fighter menus, and do a class change in-game. i think.) - Put the Psionicist in the Bard class. That solves the rate-of-advancement issue, and gives us the 'cast spell' button just like a wizard kit. BUT it means no multiclassing and no dual-classing, which means no access to any thief skills other than Pick Pockets. Which would remove some of the point of e.g. Camouflage and Danger Sense.
  11. Ah! I see. Go crazy. I don't have time for that experimentation at the moment.
  12. So, I have five psionic disciplines: Telepathy Telekinesis Pyrokinesis Biokinesis (neé Psychometabolism) Clairsentience Currently each discipline has one introductory power, three low-level Devotions, three mid-level Sciences, and one high-level High Science. Then there are ten "metapsionic" High Sciences, each at the intersection of two disciplines. I'm planning to change the introductory powers into proper Devotions, and to add another Devotion to each discipline. Then each discipline will have 5 Devotions, 3 Sciences, and 1 High Science. (The way it works, you have to know all Devotions in a discipline to learn the Sciences; and you must know all the Sciences to learn the High Science or a metapsionic High Science.) That will make 55 abilities in total. But I want to modify the existing list a bit. Here's the list; my questions are about the abilities in italics: Telepathy: Mind Ward (block the next fear/sleep/charm/confusion effect) Id Insinuation (like the Spook spell) Ego Whip (like the Malison spell, penalizing saves and Luck) Cerebral Repair (like the Exaltation priest spell: cure bad mental effects) Sensory Synchronization (like Defensive Harmony) Mental Domination (science: like Domination spell) Intellect Fortress (science: shield against all psionic/enchantment effects) Psychic Crush (science: damage and stun the target) Tower of Iron Will (high science: AoE Intellect Fortress Synaptic Static (possible replacement high science: cause failure chance for all psionics and spellcasting in AoE) Nothing too controversial here. Most telepathic powers are either mental attacks or mental defenses of one sort or another. The new addition is an AoE party buff which adds something a little different. The big question here is my plan to replace Tower of Iron Will (think party-wide Chaotic Commands) with a less discriminatory ability that applies a high (~65%) casting failure chance for ALL spellcasting and psionic powers. The latter will still be pretty effective against illithids, but also against mages. Basically a "jam all the signals" tactic. Telekinesis: Project Force (cause damage and push target away) Immobilize (single-target Hold Person) Psychic Knife (create a psionic light saber sword ) Inertial Barrier (personal AC + damage resistance bonuses) Repulsion (knock all enemies away like dragon's breath, plus Zone of Sweet Air effect) [analogue of Otiluke's Sphere] Material Animation (animate a lesser earth elemental thingy) Free Action (science - like the spell) Mass Immobilize (science - multi-target Hold) Seismic Vibration (high science - like the Earthquake spell, but party-friendly) Telekinesis needs a 5th devotion and a 3rd science. Repulsion is in a weird position here. It seems like it should be a science, as an AoE version (sort of) of Project Force; but it also seems less powerful than Mass Immobilize. Does the discipline even need a Repulsion power? This discipline is a bit crowded with similar things: Immobilize -> Mass Immobilize; Project Force -> Repulsion -> Ultrablast. (Of course, one proposed addition, Otiluke's sphere, while appropriately telekinetic, is basically just a souped-up version of Inertial Barrier. What about the Animation idea? Do you like the idea of a psionicist creating a summon out of earth and stone? One of these has to go... thoughts? Something like Slow could go here too... maybe instead of Mass Immobilize? Or maybe make it a single-target Slow instead of the base single-target Immobilize? Pyrokinesis: Static Discharge (electrical damage and chance to stun on touch) Molecular Agitation (cause fire damage on melee attacks - troll killer) Energy Dispersion (resistance to energy damage) Psychic Combustion (like the Produce Fire priest spell [analogue of Slow] Energy Amplification (give a caster increased elemental damage) Energetic Transference (all nearby allies get increased energy resistance, enemies get reduced resistance) Solar Flash (science - like the False Dawn spell) Freezing Precipitation (science - like the Ice Storm spell) Generate Lightning (science - like Chain Lightning but less damage) Energy Storm (high science - like the Storm of Vengeance HLA but no acid) Apart from Energy Dispersion, this discipline is all just different kinds of elemental damage. Would Slow work here, sapping an area of kinetic energy? Or is that really telekinetic in nature? What about the two ideas for a "meta-pyrokinetic" power? The first is basically "hey Edwin, here, have +20% fire damage." The second is broader in scope, a small but wide-range manipulation of energy such that enemies' damaging spells are muted, and allies' damaging spells are augmented. Biokinesis: Adrenaline Rush (increase STR/DEX/CON) Body Purification cure self of poison/disease) Bioregeneration (slowly regenerate health) Chemical Simulation (apply contact poison to an enemy) Heightened Senses (maybe like rangers' 'Tracking' ... maybe other effects too?) Expansion (increase weapon range... not sure if it's possible) [analogue of Haste] (but self-only) Ectoplasmic Form (tbh this seems a but too magic-ish to me...) Empathic Healing (science - cure ally of poison/disease and apply regeneration) Visual Camouflage (science - sort of like improved invisibility) Dermal Carapace (science - AC bonus and stoneskin-esque effect) Feral Transformation (high science - change to greater werewolf) Is it possible to make cool effects for Heightened Senses in this engine? An obvious idea is to simulate the Ranger HLA, sniffing out nearby creatures. Sort of a biokinetic analogue to a clairsentience power. OTOH maybe Tracking should actually be a clairsentience devotion. Expansion could let the psion attack from behind the front-liners... but on reflection it probably can't be done. Self-haste is easy and obvious; it fills out the list of things you might do with your body - get stronger, get faster, regenerate, go invisible, get armored, and shapeshift. Makes a lot of sense... but I worry that that becomes a pretty limited idea of what this discipline is... Clairsentience: Object Reading (like the Identify spell) Insightful Strike (next attack will be a crit) Precognitive Luck (get the edge in dice rolls - like the Luck spell) [analogue of rangers' Tracking] (pretty basic clairsentient ability) Know Opponent (rare offensive/disabler in the Clairsentience discipline... like the SR spell) Dissonant Synaesthesia (scramble target's senses, resulting in confusion or feeblemind) Fate Link (cause stunning damage to everyone who damages the psion... would have to be a science) Clairvoyant Observation (science: like Farsight spell) Life Detection (science: sense invisible enemies) Danger Sense (science: prevent crits & backstabs, chance to dodge missiles, change to Evade AoE spells) Clairvoyant Channeling (high science: use psionic power without range limitation - think, what if you could cast Fireball through a Farsight spell? ) It is easy to fill out this discipline with self-buffs - Instinctive Luck, Precognition, Insightful Strike, Danger Sense, yadda yadda yadda. Future sense to avoid blows, future sense to hit better, future sense to do more damage, future sense to avoid arrows, etc. A 'd20srd' site I found actually just has "Precognition: Offensive," "Precognition: Defensive," "Prescience: Offensive," etc. Precognitive Luck is a nice idea I think: if you have some vague future sense at an instrinctive level, from the outside it would look like you are just very lucky. It could help you with the tumblers of a lock, it could help you stay hidden, it could help you flinch and take slightly less damage, etc. BUT, conceptually it steps on the toes of Danger Sense, which is already there and is awesome. Tracking should be a really basic clairsentient power, I'm surprised I didn't think of it before. Only reason not to include it is if it goes in biokinesis for Heightened Senses instead. Know Opponent is a very appropriate concept, and is nicely different in weakening an enemy instead of buffing oneself. What do you think of Dissonant Synaesthesia? Does it work, or is it too telepathic? Fate Link? Too far from the idea of clairsentience? Metapsionic High Sciences: Ultrablast (telepathy + telekinesis: damage + stun + push away all enemies) Energy Construct (telepathy + pyrokinesis: create a fire elemental) Fission (telepathy + biokinesis: like Simulacrum) Project Mind (telepathy + clairsentience: like Projected Image) Atomic Disruption (telekinesis + pyrokinesis: like the Implosion HLA) Exoskeleton (telekinesis + biokinesis: effectively, shapechange into an Iron Golem) Dimensional Anchor (telekinesis + clairsentience: super-Free Action, including immunity to Imprison and Time Stop) Elemental Composition (pyrokinesis + biokinesis: shapechange into a fire/water/electrical elemental) Temporal Stasis Field (pyrokinesis + clairsentience: like Time Stop) Body Control (biokinesis + clairsentience: every round be totally immune to one damage type) Only one I don't love here is Project Mind. It's extremely similar to Fission. We could mess with the abilities of the projected image, or something, but it still feels too similar to me. A mental projection makes some sense for the two discipines, but tactically speaking, why actually do it when you can already use remote viewing + clairvoyant channeling to bomb enemies from afar? Maybe something a bit different... lean on the clairsentience angle. What about an HLA-level ability that affects enemies differently depending on their class? Make wizards worse casters, makes fighters worse in melee, etc. Could be interesting if done well. Not sure what to do about the many, many enemies who are not coded with a traditional character class, though.
  13. Background: my mod for thieves gives them the ability to learn feats or boost various skills, with the idea that while other classes live or die by the strength of weapons or magic, rogues rely on sheer cleverness and wit. At some point I added some minor psionic abilities, modeled on the 2E concept of psionics as generally low-power and tantamount to learned proficiencies. Later, I removed psionics from my rogue feats and spun it off as a separate mod... which has languished, incomplete, for several years. You can read about that mod here. Now it's kind of on my mind a bit, my last big unfinished project as a modder. And some recent strides toward point-based casting in these games has me thinking about possibilities for shoring up some of the existing mod's imperfections. I'm not promising I will finish this - it's pretty ambitious. But I at least want to think about finishing it, and to that end I'd like some input from anyone who is interested. The concept, in a nutshell, is this: psionics is completely, 100% non-magical in nature. It is a technique you can learn - like picking locks or becoming skilled in a martial art - in which you can create extraordinary effects - moving things without touching them, communicating without talking, using biofeedback to enhance your strength or speed or durability, etc. This is done not with an external energy source such as magic, but rather through sheer force of will. Of course, lifting a rock with your arms costs energy, and lifting a rock with just your mind costs even more. The source of this energy is entirely internal. This idea is convenient because I never found a good way to measure something like Psionic Strength Points ("PSPs") in this engine. But I found a point value that the game was already tracking, and is conveniently displayed to the player at all times in numerous places, and which fits well with the idea that you are the fuel source for your powers: your hit point total. In the current mod, use of powers reduces your current and maximum hit points by the cost of an ability; after using it or, in the case of abilities that can be maintained over time after canceling it, your max hit point total slowly returns to its normal value. (Again, this is your max HP - you cannot use healing potions to speed this recovery.) If you use psionic powers fast enough, you can reduce yourself to 1/1 HP, in which case you are knocked unconscious and any enemy can kill you with a single blow. Now, ideally, I would like to use a blended system. You will have a store of PSPs/mana, just like the Mana Sorcerer. Using abilities costs points. After a battle is over, you can use a 'restorative meditation' ability to recover half the points used in the battle. And sleeping will restore all points. If you spend most of your points and then try to use a power with a point cost that exceeds your current point total, then it will revert to the former system and start feeding off your hp total. Another planned change: the current mod has a thief kit which uses an item ability with several instances of opcode 214 (think, how NRD is cast); this doesn't work will because 1) it takes 3 clicks to use a power, and 2) it doesn't properly show the ability names when mousing over the buttons, and 3) there is no easy visual indicator to remind you which abilities have already been learned. I THINK my plan is to instead have the psionicist be a wizard kit. Something like "you have mana but no aptitude for magic; so instead you learn to channel it to psychic powers." Your learned psionic power will appear in the wizard spellbook screen, and you will be able to use them from the 'cast spell' button. They will reqiure one fewer click, and you will be able to see each ability name in mouseover text. I'm pretty sure I can make all of that work. I have a plan, anyway, basically an unholy fusion of the code in the existing Mana Sorcerer and Will to Power mods. What I want input about is the actual list of psionic powers, which I'll talk about i the next post.
  14. Sure! I was offering the use of our shared GitHub account anyway As long as Bubb is okay with it, of course, go to town. I'll note what I was thinking of, meanwhile. As I said, I think it's already more or less ready to go with the .tph file and his example code. Feed the function a filename and it should modify a spell to work as shown in the video. My suggestion for avoiding duplication would be to either 1) add a marker file and wrap the necessary parts of the code in a function that won't run if the marker is already present; or 2) actually create a .2da file listing the RESREF or IDS name of each spell used with the function. This way if the function was already used on a spell (like WIZARD_IDENTIFY) it could gracefully decline to run again and move on to the rest of a mod's installation; but if the spell is not already in the 2da list the function would run and then append the spell to the list for future reference. My suggestion for actual implementation in a mod would be to run the function a few times to make custom subspells with 1/2/3 identification 'uses;' and then add a new version of Identify with several headers to cast each subspell at an appropriate level. (It should be different from SPWI110, because we would want to actually remove the old inventory-screen method from the player; so SPWI110 should be added to HIDESPL.2da and SCRL75.itm would be altered to point to the new "Identify" spell.)
  15. Near as I can tell, it can pretty much be dropped into a mod and it will work. I haven't really tested yet, but I will and I will release it as a proper mod in the near/mid term, because as I said, this is the only way a number of my existing kit mods could use the Identify spell. It will need a slight bit of finessing - like, a relatively simple check to allow it to be installed multiple times from multiple mods without duplicating the result. But, as soon as we figure out a home for it (maybe in @Aquadrizzt's mod) and ensure we have @Bubb's permission, I'll finalize it. Actually Bubb, I wonder if it would make sense for something like this to be uploaded as a modder's resource, rather than an actual mod? Something like Aquadrizzt's multiclass kit installation function, or my Spell Evasion function or armored casting system? Wrap it in enough Weidu that anyone can easily drop it into their mod with little or no effort, and installation from multiple sources won't interfere with each other? I'd be happy to fill out the required Weidu code and host it on our GitHub account.
×
×
  • Create New...