Jump to content

Miloch

Modders
  • Posts

    4,816
  • Joined

  • Last visited

Everything posted by Miloch

  1. Yes, it's probably best if you start a new topic and post your WeiDU.log. I suspect you might have the SCS "Allow player to choose NPC proficiencies and skills" component, which means L1NPCs will skip certain NPCs. In this case, it would've allowed you to change the BG2 Imoen but not the BG1 Imoen. Also, if you don't mind reporting the WeiDU glitch in the PPG forum. It could be WeiDU doesn't have a translation for that string, but it should.
  2. Hmm, well that looks like only a subset of what they once had. Specifically, I was looking for Rastor's item creation tutorial I linked in this thread, but it seems to be gone now.
  3. Oh, that's just a general WeiDU message. Did you test it with your translation and it's still in English? If so, it sounds like a WeiDU bug. [Edit: Though we should probably add an ASK_EVERY_COMPONENT to the tp2 anyway, cmorgan/Nythrun. I can't imagine someone just installing all components of this mod without making choices... it's not like that's even possible anyway.]
  4. Yes, this is something Nythrun herself suspected when writing this code. So if you want to post any alternate forms you've seen, that would help. Basically, all that does is if you choose to alter weapon usability, it will also try to modify the item descriptions accordingly (and the more variations we cover, the better it should work). Thanks for the translation - I'm sure cmorgan can add it for the next release .
  5. Not sure if RPG Dungeon has tutorials anymore either (or they're buried somewhere if so). CoM could be added though.
  6. Sure, you can keep posting here for now. Though it will be better to use separate (or existing) threads in the fixpack forum, but unfortunately that needs CamDawg to give you access. Feel free to PM him about it too (he didn't respond to mine). In the meantime, if you want to get started proofing the textpack or anything, I can probably put it on my server and send you some links.
  7. Weird. That is still pretty far south of the actual location, but if that's what works, that's what works. Yeah. It might look like hieroglyphics, but it isn't as hard as it looks. That particular type of patching takes more math skills than anything else. I have no such skills; however, I have petty thief skills, so I just stole someone else's code (probably CamDawg's) and changed a few things. You can do the same if you want to mess around with it - all you need is the BACKUP, AUTHOR and BEGIN flags before that code (look at any mod .tp2 file for examples), and you can install it and change things with it yourself (provided you also copy a WeiDU .exe or that from another mod and rename it to the same name as your .tp2 file, so that you can install and uninstall it).
  8. What's funny is that even in vanilla BG1, Kivan is not really the "good guy" you might think. If he witnesses Viconia's death, he'll say "May Viconia's soul rot in hell." Whereas, if the reverse happens, she'll say "It is sad that Kivan and I never understood each other." Which one is more "evil?" PnP alignment can be a pretty shallow guide to personality sometimes.
  9. Hmm weird. The reptrap really shouldn't be colliding with it even before that edit. If you look at it in DLTCEP (on the Regions tab), it blocks the doorway. I think this is what the game uses at certain points to call the guards on you if your reputation is too low. The crate is a good distance off to the right (on the Containers tab). The bounding box for the reptrap is 373,558,586,423. The bounding box for container 2 (the crate) is 550,627,657,571, and the position is 541,668. So the position is off a bit but off in the wrong direction (south) from the reptrap (which is west/northwest). Maybe it is just that the position is too far from the bounding box. If you change it to 550,627 does it work too? Now figure out how to patch it with WeiDU and I will really be impressed . (It shouldn't really be that difficult, but it's a bit beyond the basics.) Edit: Easier than I thought - I just pinched some existing code that was similar: COPY_EXISTING ~ar3357.are~ ~override~ READ_LONG 0x70 nf //Container offset READ_SHORT 0x74 nc //Container count FOR (i1 = 0; i1 < nc; i1 += 1) BEGIN READ_SHORT (i1 * 0xc0 + nf + 0x20) xc //X coordinate READ_SHORT (i1 * 0xc0 + nf + 0x22) yc //Y coordinate PATCH_IF (xc = 541) AND (yc = 668) BEGIN WRITE_SHORT (i1 * 0xc0 + nf + 0x20) 550 WRITE_SHORT (i1 * 0xc0 + nf + 0x22) 627 END END BUT_ONLY_IF_IT_CHANGES
  10. I think a lot of chests have that, but maybe the settings aren't right on that one, or the associated script is off.
  11. Sounds like a bug then. Should be pretty easy to do a death check for the assassins before spawning the monks.
  12. I remember not being able to loot that chest in the Red Sheaf, because I pretty much try to steal anything that isn't nailed down (or even if it is). These things could be scripting bugs - I know we looked into some already (like the presence of only a cat being able to call the guards). Hmm, well the dialogue doesn't actually refer to the assassins being dead, does it? If so, I think it's a bug but if not, then it could be as you say.
  13. Oh, sorry - I missed this. As I said in the PM, I've asked CamDawg (or whoever else can do so) to give you forum access. For now, you can report anything you find here. Thanks for volunteering!
  14. Just posted that in the fixroom too.
  15. You already had access - it's the first post in the fixroom . As for format, the BG2 Fixpack's is thorough enough I think. What we really need help with is proofing the game text update though. Not sure where Salk put it - I guess I'll have to upload it somewhere unless he's done that already.
  16. Sort of. We have a working alpha (I think) with a lot of fixes from plainab, Idobek, and including all of Baldurdash and some of Dudleyville. We have a full game text update by Salk which also incorporates Baldur/Dudley if the changes were valid. What we mainly need now is someone to help with proofreading and documentation, and eventually with testing. And there hasn't been exactly a huge rush of volunteers for that, but then again I guess we haven't really asked either, not publicly anyway. So if anyone wants to help, let us know. Coding skills not required; English skills would help though.
  17. Thanks for testing. Saves me from having to do it . No idea what "parchment" means. Anyone?
  18. Damn. Well I did some code stealing and came up with a routine that patches the .are container if BG1 and scripts it otherwise. The macro is from Ascension64. The actual platform dependent code without the macro (which you can shove off into an external library) is pretty minimal.DEFINE_PATCH_MACRO are_update_offset BEGIN READ_LONG 0x54 actor_off READ_LONG 0x5c info_off READ_LONG 0x60 spawn_off READ_LONG 0x68 entr_off READ_LONG 0x70 ctnr_off READ_SHORT 0x74 ctnr_num READ_LONG 0x78 itm_off READ_LONG 0x7c vertex_off READ_LONG 0x84 ambient_off READ_LONG 0x88 var_off READ_LONG 0xa8 door_off READ_LONG 0xa0 explored_off READ_LONG 0xb0 anim_off READ_LONG 0xb8 tiled_off READ_LONG 0xbc song_off READ_LONG 0xc0 rest_off READ_LONG 0xc4 automap_off FOR (i = 0; i < ctnr_num; i += 1) BEGIN READ_ASCII (ctnr_off + i * 0xc0) ctnr_name (12) PATCH_IF (~%ctnr_name%~ STRING_MATCHES_REGEXP ~%ctnr%~ = 0) BEGIN READ_LONG (ctnr_off + i * 0xc0 + 0x40) ctnr_itm_idx INSERT_BYTES (itm_off + ctnr_itm_idx * 0x14) 0x14 //Add item WRITE_ASCIIE (itm_off + ctnr_itm_idx * 0x14) ~%additm%~ //item ResRef READ_SHORT 0x76 itm_num //Update global and ctnr item count WRITE_SHORT 0x76 (itm_num + 1) READ_LONG (ctnr_off + i * 0xc0 + 0x44) ctnr_itm_num WRITE_LONG (ctnr_off + i * 0xc0 + 0x44) (ctnr_itm_num + 1) FOR (j = i + 1; j < ctnr_num; j += 1) BEGIN //Update item indices in all ctnrs READ_LONG (ctnr_off + j * 0xc0 + 0x40) ctnr_itm_idx WRITE_LONG (ctnr_off + j * 0xc0 + 0x40) (ctnr_itm_idx + 1) END SPRINT arx_dt_off ~%arx_dt%_off~ SPRINT arx_dt_num ~%arx_dt%_num~ PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~actor~)=0)) AND ((actor_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((actor_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x54 (actor_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~info~)=0)) AND ((info_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((info_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x5c (info_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~spawn~)=0)) AND ((spawn_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((spawn_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x60 (spawn_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~entrance~)=0)) AND ((entr_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((entr_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x68 (entr_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~ctnr~)=0)) AND ((ctnr_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((ctnr_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x70 (ctnr_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~itm~)=0)) AND ((itm_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((itm_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x78 (itm_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~vertex~)=0)) AND ((vertex_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((vertex_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x7c (vertex_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~ambient~)=0)) AND ((ambient_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((ambient_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x84 (ambient_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~variable~)=0)) AND ((var_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((var_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0x88 (var_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~door~)=0)) AND ((door_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((door_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xa8 (door_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~explored~)=0)) AND ((explored_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((explored_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xa0 (explored_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~anim~)=0)) AND ((anim_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((anim_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xb0 (anim_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~tiled~)=0)) AND ((tiled_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((tiled_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xb8 (tiled_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~song~)=0)) AND ((song_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((song_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xbc (song_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~rest~)=0)) AND ((rest_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((rest_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xc0 (rest_off + arx_incr) END PATCH_IF (NOT ((~%arx_dt%~ STRING_COMPARE_CASE ~automap~)=0)) AND ((automap_off > EVALUATE_BUFFER ~%%arx_dt_off%%~) OR ((automap_off = EVALUATE_BUFFER ~%%arx_dt_off%%~) AND (EVALUATE_BUFFER ~%%arx_dt_num%%~ = 0))) BEGIN WRITE_LONG 0xc4 (automap_off + arx_incr) END END END END //////////////////////////////////////////////////////////////// BEGIN ~AddItem~ <<<<<<<< .../additem-inlined/t-ar2616.baf IF Global("T-Potn03","FW2616",0) THEN RESPONSE #100 ActionOverride("Container 1",CreateItem("_POTN03",0,0,0)) SetGlobal("T-Potn03","FW2616",1) END >>>>>>>> ACTION_IF FILE_EXISTS_IN_GAME ~ar2616.are~ THEN BEGIN //BG1 COPY_EXISTING ~ar2616.are~ ~override~ //Candlekeep Inn PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN //Invalid file protection SPRINT arx_dt ~itm~ //ARE update offset datatype SET arx_incr = 20 //ARE update offset increment SPRINT ctnr ~Container 1~ //Container name SPRINT additm ~POTN03~ //Item to add LAUNCH_PATCH_MACRO are_update_offset END BUT_ONLY_IF_IT_CHANGES END ELSE BEGIN //Tutu ACTION_IF FILE_EXISTS_IN_GAME ~fw2616.are~ THEN BEGIN //Tutu EXTEND_BOTTOM ~_ar2616.bcs~ ~.../additem-inlined/t-ar2616.baf~ COPY_EXISTING ~fw2616.are~ ~override~ //Candlekeep Inn PATCH_IF (SOURCE_SIZE > 0x11b) BEGIN //Invalid file protection READ_ASCII 0x94 ~arsc~ //Area script PATCH_IF (~%arsc%~ STRING_EQUAL_CASE ~none~ = 0) OR (~%arsc%~ STRING_EQUAL ~~ = 0) BEGIN WRITE_ASCII 0x94 ~_AR2616~ END END BUT_ONLY_IF_IT_CHANGES END END The inlined script can be external too, obviously. This adds a potion to Candlekeep Inn by way of example, using the best method possible based on your platform. The WeiDU tutorial doesn't say anything about it. The ideal "user-friendly" thing to do would be to ask the users if they want to install the mod for all saved games or for new games only. I guess I'll make that my next project...
  19. Not BGQE, where I would have needed this, but I found another workaround.You did? I thought you decided not to put items in a container, which isn't really much of a workaround if a BG1 modder does want to do that. Edit: So do you know if it works for TotSC or is it just invalid for BG1 w/o TotSC? Where do you read that? I think it works fine, and with the NPC creation possibility introduced here it gets applied for the mod NPC, as well.It's here: Saying this is an advantage for Zed's method implies it isn't the case for the existing (ADD_GAME_NPC) method.
  20. I'm trying to decide which method (ADD_GAME_NPC or the code above) is less of a disadvantage. I'm leaning toward ADD_GAME_NPC as long as either the readme or the install makes it clear the user should back up their saves first. But are you saying npclevel.2da doesn't work in BG1(TotSC)? If not, why's it there? The facing I can live without, or I guess it could be scripted if it's important. Does this work in TotSC? I have a macro from Ascension64 that simulates CreateItem() in a container, but it's kind of long... Still, if your BG1 mod is enforcing that a new game must be started anyway, it might be useful.
  21. Ah. Well that's the BGT version... We ran the G3 Debuggerer and your CRE checker on everything and fixed anything we found, but maybe those two tools don't account for everything and we missed some things. It's weird though - I don't see a bub3 or even a dsbub3 CRE in either version, and I'm looking at the same BGT DSotSC reported in that other thread. Not in NTotSC either. So it must've been added by something else in that laundry list of mods... Pretty lame, but apparently the BG developers liked doing this sort of thing, what with "Lord Foreshadow" telling you about NWN's imminent release, and what have you. As it turns out, he's just a farmer-turned-ogre hunter - nothing supernatural about him. We could change his name, but that'd kind of stray from the spirit of just finishing the UB. Then again, if L1NPCs is offering to tweak damn near every other aspect of NPCs, why not allow NPC name changing too, along with some sooper code that greps and replaces all dialogue references?
  22. Bub is kind of a UB-ish character in the vanilla game, who has some dialogue suggesting he might join, but he doesn't. So DS just adds to this and makes him joinable. Rather than try to patch the guy, I think I'm going to purge the default Bub (bub.cre or _bub.cre in Tutu) and add dsbub.cre/dsbub6.cre instead via area script - BGT does the same thing, so the Tutu/BGT resources for this cre will be the same (post above edited for this).
  23. Dark Side of the Sword Coast NPCs Tutu resources are first on each line; BGT resources follow if they differ. Bardo Furfoot (halfling thief): bardo.cre | dsbardo.cre chap5.bcs | thief14t.bcs bardo.dlg dsarow02.itm | dsarrow1.itm Bub Snikt (human fighter): dsbub.cre dsbub6.cre _wtarsgt.bcs | wtasight.bcs bub.dlg Conchobhair Strongblade (human cavalier | paladin): concho07.cre | dsconch5.cre concho10.cre | dsconch7.cre concho.bcs | wtasight.bcs concho.dlg dshelm05.itm | dscohelm.itm dsplat08.itm | dscoarm.itm dssw2h04.itm | dscoswd.itm CúChoinneach (elf cleric/ranger): cuchoin.cre | dscuch5.cre, dscuch7.cre wolfshd.bcs | dswlfshd.bcs cuchoin.dlg dsleat02.itm | dscuarm.itm dsshld01.itm | dscushld.itm dsamul10.itm | N/A dssw1h02.itm | dscuswd.itm dspotn15.itm | dspotn01.itm Ferthgil Trollslayer (dwarf berserker): ferthgil.cre | dsferth.cre ferthgil.bcs | dsferth.bcs ferthg.dlg dshel06.itm | dsfehelm.itm dsplat03.itm | dsfearm.itm dsaxe04.itm | dsfeaxe.itm dshamm02.itm | dshamm01.itm Jet'laya (half-elf cleric): jetlaya.cre | dsjetlay.cre jetla6.cre | dsjetla9.cre jetlaya.bcs | wtasight.bcs jetla.dlg dschan10.itm | dsjearm.itm dsshld12.itm | dsjeshld.itm dsring17.itm | dsrngjet.itm dsamul02.itm | dsamul08.itm dsblun01.itm | dsmace04.itm dspotn15.itm | N/A dsclck23.itm | N/A Keiria Silverstring (half-elf blade | bard): keiria.cre | N/A keiria3.cre | N/A keiria5.cre | dskeiri5.cre keiria7.cre | dskeiri7.cre keiria7a.cre | N/A keiria9.cre | N/A keiria11.cre | N/A chap3.bcs | wtasight.bcs keiria.dlg dsleat04.itm | dskearm.itm dsring13.itm | dsbardr.itm dsbow08.itm | dskexbow.itm dsbolt01.itm | dsbolt01.itm Skeezer Lumpkin VI (gnome illusionist/thief): skeezer.cre | dsskeez.cre skeez9.cre | dsskeez6.cre skeez11.cre | N/A chap4.bcs | wtasight.bcs skeezr.dlg dshelm04.itm | dsskhelm.itm dsclck06.itm | dsskrobe.itm dsstaf02.itm |dsskstaf.itm Thorfinn Hauskluniff (human barbarian | fighter): thorfinn.cre | dsthorf.cre thorf9.cre | dsthorf9.cre thorf11.cre | dsthorfx.cre thorf.bcs | thorfinn.bcs thorf.dlg dshelm07.itm | cuhelm04.itm dsleat03.itm | culeat02.itm dssw2h01.itm | cuswd03.itm The resource naming "conventions" are wack - I'm gonna see if I can change that (probably not at this stage). Don't feel you need to add all that for v1 (v2?) but it'd be nice . Edit: added dsclck23.itm; bub[6].cre > dsbub[6].cre.
  24. Nonsense... scotch is for kids too. Why do you think they're all so bloody mad in Scotland? Ye gods of scripting... I'm surprised DavidW has time to maintain this on top of his other projects and RL, but best of luck to both of you.
  25. These are both on the list already. Or are you using them for a mod?
×
×
  • Create New...