Jump to content

marchitek

Members
  • Posts

    152
  • Joined

  • Last visited

Everything posted by marchitek

  1. Just from curiosity. How many nested conditions like that can I expect? I mean, ofc in theory it can be any number, but just from your experience. It is something up to 10? Or do you saw/implemented longer chains?
  2. That's interesting. IESDP kind of suggesting that it need to be on order, but maybe I'm over interpreting. Anyway, if game is ok with that then indeed no longer discussion is needed. I adjusted my code to handle both cases, so hopefully my mod won't break anyone's work. Thank you all for insights!
  3. My question was more about if there is any risk at all. But I got the message, thanks.
  4. I have question regarding "Extended Header offset" (0x0064) and "Casting Feature Block offset" (0x006e) fields in SPL (IESDP). "Feature Block Table offset" seems to always have the same value (0x72), what make sense, since it depends only from header size, which is const. "Casting Feature Block offset" seems to always have same value (0), what make sense, assuming that casting effects always goes before ability effects. Question is: can I assume that those values would be always like this and no need for reading them, or am I missing something? For "Feature Block Table offset" it seems to be pretty clear. "Casting Feature Block offset" has this additional assumption, that I'm not sure if it is always true. IESDP doesn't say that casting effect goes before ability effects.
  5. Nice idea. So you think it would be better to check EFF on every usage (unless already in array) then just go through all EFFs upfront? I think one advantage to resolve it upfront is that I can later just check SPL resource field and if it match EFF in array, then clone it. This way I don't need to worry about opcode and would just catch all regardless if this is op177, one of :protection from resource" opcodes or anything else. On the other hand with your approach I can also have it, so read resource, then check if such eff exists (if not this is some other resource and ignore) and so on. But still searching upfront need to be at least as fast as checking usages (the most optimistic scenario for usage checking is when each eff is used only once), assuming that every EFF is used at least once. Eh, pity that one cannot make PhD on this topic. Yeah I noticed that. CLONE_EFFECT always reads whole thing so it is definitely designed to be used when there is something to clone (it even prints warning if nothing was done). I missed existence of GET_OFFSET_ARRAY, I prepared my own functions for reading. Not big difference though.
  6. Ok. Then, if I get it right, to have those splprot.2da conditions I need to use op318 that protects against it with reversed condition? *** When looking on op326 it seems a bit useless due to it's reflection behavior. Let's say I want to create spell that do dmg, but one some condition from splprot it kill instantly. Then it seems I cannot use this opcode anyway, because in case of reflection, this instant kill would still apply if condition is met. *** One drawback of cloning approach: it impossible to clone effect in EFF file, since it holds only one effect. But I guess I can clone entire resource and then clone application of original EFF and apply also my new EFF. I'm wondering if EFF file can apply other EFF file. Because then I will need to do all of these recursive.
  7. Probably answer to most questions is my lack of modding experience. I used op326 just to apply my own SPL as part of other SPL. I guess op177 is better in such cases (when no need for condition)? I haven't used op101 because I would protect again all usages of op309. So I needed something that would protect agains my own SPL, and I picked op318. Again, I guess op206 is just simpler equivalent here? Ah, I can set parent resource to the same as this resource name. Then EFF option is back in the game. And I can use simpler op206 instead of op318. Thank you! It's easy to get lost in all of those opcodes, but I think I start to see the pattern here. For spell application: use op146/op177 unless you need special conditions, then op326 For protection agains spell: use op206, unless you need special conditions, then op318, unless you want also auto message, then op324 Roughly.
  8. I'm struggling with one topic and I'm wondering if someone could help me with some piece of advice. Case is I want to apply local variable (with opcode 309) on exactly same conditions as some other opcodes and I want spells that grant immunity to those other opcodes to protect also agains setting this local variable. E.g. I want to set local variable every time when creature is petrified. And I want stuff that protects against petrification to protect also against setting this local variable. My current approach is to create own SPL that applies both petrification opcode and local variable and replace all applications of petrification opcode with application of this SPL (with opcode 326). Then I replace all petrification immunity opcodes to protection against resource (opcode 318), that would protect against my SPL. So far so good until I realized, that I need the same trick for more complicated opcodes, that use parameters, duration etc. In such cases I would need to clone entire effect inside my SPL and I will end up probably with number of SPLs equal to number of usages of opcode (or I will need some not trivial logic to reuse SPL if all parameters are the same). Then I thought that maybe better approach in general would be to just clone effect that applies opcode and change cloned one to apply local variable. Then original effect will remain untouched and effect that apply variable would have always exactly same conditions as original. The problem is that I cannot grant immunity to opcode 309 every time that something gives immunity to original opcode. So I anyway need some wrapper for my set local variable effect. And here comes problem form the title. I see three options: create EFF file and apply it with opcode 177 create SPL file and apply it with opcode 146 create SPL file and apply it with opcode 326 At the beginning EFF file seemed to me as the best solution, but apparently it can be blocked with opcode 318 only by using parent resource not EFF resource itself. So it seems it is designed more to be one to one relation with ITM/SPL/CRE which is not my case. Both SPL solutions also looks also nice and I could even apply more additional effects if needed. The problem is that there is two of them and they are quite similar. I'm keen into opcode 146 since it has reasonable reflect behavior and I don't need all of this advance condition matching that 326 offers. I guess that's it. I would be grateful for any insights that could help make a right decision. Or maybe I'm completely missing something and there is better way to achieve all of this.
  9. Works like a charm. Thank you!
  10. Does anyone know, if there is some effect or set of effects, that could be used to cure charm on target creature? I mean, we have opcode 45 for stun and opcode 46 to cure stun, or we have opcode 25 for poison and opcode 11 to cure poison. And there is opcode 5 for charm (and also opcode 241 that is doing the same?), but no "cure charm" opcode, unless I'm missing something. I know it is possible in game to charm back charmed creature, but this seems like odd solution for if I want to create spell that cures charm.
  11. Feldepost inn have I think four rooms, two of them are occupied. But you can still choose from four types of rooms there. Oh well, maybe they have some magic walls like in Hogwart. Have you noticed, that there is no trash in the city? Oh well, they probably clean with magic anything that is left on the ground, not only in city, but in wilderness too. Have you seen this? Have you heard about this? Some group of travelers used fireball in middle of library, fortunately this will not end up in any fire. They have probably magical protection on their books, or maybe fireball itself was magical to only hit enemies. And party member, oh well. The same group of travelers found full plate mail, it was good use for their gnome fighter, but then they change their mind, and give it to one of half-orc in squad. Why should you be surprised, if you count people and beds in Beregost it wouldn't match at all, but why shoul it match, the same peapole sit whole day and night by the same table and drink beer. So, clearly this game doesn't make sense if you look at it in realistic categories. But it does make sense I you think about it as symbols. Obviously game designers want you to imagine Feldpost inn as big inn. They prepared for you some simplification regarding equipment and fighting. Fighting itself (btw one of most exposed aspects of the game) is totally symbolic, two guys just standing and swinging swords, it's not how it looks like. I'm surprised that you don;t see this, I thought you are into all this PnP RPGs where you need to iamgine everything by yourself. Here game designers give you some symbolic representations, to make it a bit easier to play then only text. I could finish here, but I have a feeling that you will still have a trouble to understand my point, so let me apply all of this directly to you case. So, NPC goes to tent and disapperas. It's symbolic. You shouldn't expect this person would be there. It's just symbol that this NPC finished conversation with you and go it's own way. Better then immediate disappearance (it also sometimes happens in this game). Just to clarify: if you will have fun preparing this mod and/or playing game with it, you should totally go for it. I just unwisely respond to you little provocation, maybe it was just rhetorical question and I shouldn't do that. If so, I'm sorry for inconvenience, I don't want to hijack your topic.
  12. Please, name one thing that is realistic in this game. Then we can try to fix it, so it would fit the game better. Seriously, this games is very symbolic in most of its parts. Let's take inns, some of them have one or two rooms. Is this bothering you? It's just symbol.
  13. Ok, it should work fine. For SoD content could be that view will not lock after loading game. If you will issue with that you can always lock it yourself with: C:Eval('ActionOverride(Player1, LockScroll())') The rest should work fine. You know, it's not that simple. It's not only about you, there are also other people involved. You reported issue with my mod so this is obvious that I want to fix it, for ambition sake and to prevent this issue for other players in future. So, since you started talking about it, courtesy would be to attach proper description of the problem, so we can see if this is problem with my mod or something else. For now I cannot reproduce it. I can install some Tweaks Anthology components over Diablofication. Then I can reinstall Diablofication without problems, WeiDU automatically restores backup, reinstall component and apply all other components in correct order. I'm not sure what means "you can't". You have some error message during reinstallation? Reinstallation automatically recovers backup from before installation of component, so you don't need to delete anything manually. Unless e.g. you removed backup folders (they are usually stored in mod folder). TBH Character View Lock from Diablofication doesn't add any bcs, only extend existing ones. So it's really hard to say what you are doing here. In general, I would say that you shouldn't be forced to change your override folder manually, so something seems to be wrong with your installation. If I were you I would start over and report issue right after you face it, with exact WeiDU.log and setup-Diablofication.debug. This guide could also help. The thing here is order of mods matters, because mod can react on changes done by other mods (mods even patch files added by other mods!). So reinstallation need to revert backup before component installation and apply everything once again from this point. But you shouldn't "lose" anything, it should be automatically applied back by WeiDU.
  14. Cool. You mean original game content with SoD installed or SoD content? Hm, I'm not sure why this is happening. Why cannot you install any other mod on the top of Diablofication, you see some sort of error? And why you need to remove anything manually? WeiDU should restore your backup on uninstallation automatically. I think BG modding is super modular, it could be that this is some problem with my mod but I cannot understand now what can it be. If you could upload your WeiDU.log (you can find it in game dir) and describe what you try to do and what error you see, it will help.
  15. Good to hear that you like camera lock. I don't own SoD, so I cannot test it properly, but if you would like to play with this feature in SoD I can try prepare something blindfold and relay on your testing, this component should be actually easy to adopt. If you are not interested in SoD content I guess this mode should work correctly in original content even with SoD installed, TBH I haven't thought about this use case. But it seems that DragonspearUI++ works without SoD, so I guess you can just skip SoD installation. I also noticed that, for me increasing frame rate works well, but this make game faster in general, not everyone needs to like it. But this is configurable in Baldur.lua so you can just experiment with something like 45 (30 is default) and see if you like it, easy to change back.
  16. New version 0.3 released, introducing new component: More HP on Level One (Beta). Also good, I think I like it more too. The issue with link before AL|EN intervention was that it was pointing to old version (I forgot to update it). Now should be all fine.
  17. Great work with the icons! I think I found one minor glitch with "Joia's Flamedance Ring", it is bigger then other rings. Screenshot:
  18. I'm not super proficient with this hex representations, but with try and error I was able to prepare code that read kit id from CRE file correctly: OUTER_SET CRE_KIT_OFFSET = 0x0244 // dword DEFINE_PATCH_FUNCTION READ_CRE_KIT RET kit_id BEGIN READ_SHORT CRE_KIT_OFFSET kit_id_word1 READ_SHORT (CRE_KIT_OFFSET + 0x2) kit_id_word2 SET kit_id = (kit_id_word1 * 0x10000) + kit_id_word2 END It is definitely something with word swapping, so 0x80000000 is stored like 0x00008000 and 0x4005 (so 0x00004005) is stored like 0x40050000. At least for my (limited) understanding.
  19. Yes, it's a pity that it is impossible to order movement from map screen. To travel bigger distance with less click you can always zoom out. But I must say, since there is no tedious viewport movement needed, all distance in the game seems to be half way smaller. I believe it's just matter of habit, I played a bit with LockScroll() and now it seems to strange scrolling view again. But I was playing solo, I believe for playthrough with party it could be less convenient. Now I could almost play with zoom lock, if not one minor issue, when enemy is approaching form the bottom of the screen it can be that GUI will overlap it, so there is need then for zoom out a bit. Could work it could even offer some dialog box where player can choose LockScroll() object. I'm personally more motivated to make it fully usable when lock permanently on Protagonist. Matter of play style. I included my code that locks scroll on game load and handle cutscene properly as part of my Diablofication mod (see here).
  20. I released version 0.2 including new component: Character View Lock (Alpha). I edited first post, so please look there for more details.
  21. I think it would be doable using pattern from scfi RPGs (e.g. KOTOR or Mass Effect). You have ship area when you have some crew members you can talk with them etc. And you can go to navigation room and decide where to go for "mission" so you can switch area to land area when you have "back on ship" travel region. You could also have random encounters during travel (your ship is attacked) etc. I was thinking once about spin-off TC mod using Planar Sphere like this. Ofc amount of work for this is overwhelming.
  22. I think right before thread separation one IMHO super important point was made by @Greenhorn and I want refer to it: Beamdog's license clearly does not prevent them from fixing bugs, and we are discussing bugs here. I think EEFP should contain only changes that in unlimited time, money, good will etc from BD could make into final patch. This is IMHO clearly "practical" definition of bug here. To make it more theoretical: I think we cannot assume that "developer intention" was something that in case of unlimited time, money, good will etc wouldn't make into final game. Maybe "developer intention" was to don't add additional item duplicates in content they create, but also their intention was to leave original game content without change. It is possible, right? And if generic items added by BD are ONLY in content they created, it is kind of clear to me that they have no intention to add them to original game content. We cannot claim "developer intention" on something that developers haven't done on purpose. To finish with example: If BD would add in SoD exact same Hobgoblin that exists in oBG but with one additional script block to improve AI, should EEFP add this script block to all Hobgoblins in original game content? For now (if I understand correctly) BD not only didn't remove duplicates in original game content, but also add some on their own (like Scimitar +2, 'Rashad's Talon'). So this make me even more confused about all of this. Maybe EEFP should de-duplicate items but ONLY in content added by BD? EDIT: Just to clarify. By "fixed by EEFP" I mean core component. I think, adding arguably good ideas of SoD to original game content could be good candidate for "optional but cool". Although I need to agree that having two exact same items in terms of abilities, but with different names and descriptions, can be seen as bug for someone not very into this topic, it's not good game design I would say.
  23. Small world. I think I saw your profile when I was researching for my master thesis on philosophical aspects of quantum mechanics. And the fact that we have rather different philosophical perspectives put some light on our problem to find common understating. Anyway, I wrote again in this topic just to give small thumb up for idea of optional component (since it seems that change is controversial because of various aspects). Myself I don't have enough modding experience to judge it correctly, so maybe my intrusion was too arrogant. I have one more concern about eventual mod compatibility: I think this change can break Item Randomiser (it seems it removes items by exact resrefs).
  24. I face the same issue when experimenting with MoveViewObject() action. But I have very good results testing LockScroll() action. It can be activated via console: C:Eval('ActionOverride(Player1, LockScroll())') and deactivated with: C:Eval('UnlockScroll()') The problem is with cutscenes (scroll lock would break most of them) and with spells like "Wizard Eye" and "Farsight" (I hope I didn't miss anything). But probably it can be somehow overcome. I already have WeiDU code that unlock scroll before every cutscene and locks it back after custscene end. For Wizard Eye I plan just to lock view on eye itself when it is summoned (it would add some additional flavor to the spell, when you have wizard eye, you cannot see with your own eyes). Best would be to have lock on selected character, but I don't think there is any trigger that allows to detect that. Obviously, this problem don't exist for solo runs. For party runs locking on Player1 could have RP justification: if you want to command companions directly, they need to be at least in view range, otherwise you need to use AI. But probably for powergaming indeed not very handy. I played a bit solo with view locked on character and for me experience is amazing, for sure it makes your character more part of the game world. But ofc it is matter of taste.
×
×
  • Create New...