Jump to content
  • Announcements

    • AndalayBay

      Orphan Attachments   07/31/2018

      I have been doing some housekeeping lately and I've noticed that I had a lot of orphaned attachments. Attachments get orphaned when the PM or post is deleted without removing the attachment first. Deleting a PM or post does not delete the attachment and the file or image remain on the server. I'd like to ask all members to go through their attachments and delete any attachments you don't need anymore or those that have been orphaned. Where can I get a list of my attachments? Click on your display name in the upper right corner of the forums and pick "My Attachments" from the drop-down list. How can I tell an attachment is orphaned? If the PM has been deleted, you'll see a message like this in your attachment list: Unfortunately there is no message if the post has been deleted, so please check your old posts. We do purge old birthday threads every once in a while. Also some hosted projects have been shut down, so you may have orphaned attachments on one of those locations. Thanks!
Sign in to follow this  
Munch Universe

Craftybits 0.812 Bug Reports

Recommended Posts

I'm getting a crash whenever I get close to the canoe. Close enough to see it as something I can activate but before I actually do anything to it. Can anyone confirm this as a bug?

EDIT: Found and fixed the problem. Two of the canoe scripts for the canoe were of an older version in CB-Marooned. They were overwriting the newer versions and caused the crash. After having updated CB-Marooned, the canoe crashing ceased. I'll update CB-Marooned when the rest is ready for general release.

Edited by Munch Universe
status update

Share this post


Link to post
Share on other sites
10 hours ago, Munch Universe said:

Regarding forging rings, I guess the truth is that we never really thought about it in any detail. I implemented it but I think CLShade and Ben were involved in conceiving of it. Now that you mention it, you have a point. It depends on what metal is being used. Gold, silver and copper melt at forge temperatures so that casting is an option. To fully melt Iron needs higher temperatures not readily achieved in a forge without bellows and I think even then the temperatures are better for getting it hot enough to work but perhaps not enough to liquify. One argument for casting is to illustrate the process, even if hammering would be another way to get the same result.

I'm afraid I don't quite track what you mean with "tanning". As in tanning leather? But if so, what does that have to do with nutrition? Or do you mean as in skin becoming tanner? 

Assuming you are talking about tanning leather, that was intended and might well have been the next major thing to be implemented. Introducing bulk salt was, in part, preparation for tanning. We have acorns to provide tannic acid and urine can be assumed to be readily available. I think what pushed this down the list of things to do is that making leather production take some time and more complicated leaves it less useful to the player than metal forging. We already have that problem with clothing, where there is a nice tailoring system but it is involved enough that the player needs to work hard for something relatively cheap while something rare and expensive can be made with comparative ease. There is no obvious solution to this problem because making smithing even more complicated does not seem wise, in this case more from the scripting side because the player experience isn't overly complicated.

I'm looking forward to see what you come up with for the retexture. If nothing else, it is enough of a change to rate a short explanation and perhaps gather a little attention on the Nexus for a week.

Depends on the forge, but yeah, they do fall a tad short for casting iron - taffy is probably what's typically seen - and frankly even if it were possible cast swords lack the... structure that hot-forging give them; it's better to forge a sword than cast given anything but modern technology if I remember right, and I wouldn't say that modern technology can produce a brilliant sword with just casting. Aside from that, I frankly personally think the weight cost for ore and materials and for the 'portable' forge is rather low; for that weight cost I'd say make jewelry with it and nothing else but on the other hand I don't want to make my life any harder. Probably a smelter/bloomery on top of the forge furnace. Too tired to think clearly, though.

I was talking about tanning leather, yeah. The vegetable tanning method and not the braining method? Interesting. So. Uh. If you wanted to simplify for the player, you could leave it at defleshing hide and then putting hide into barrel of tannic acid for a few weeks. Time consuming, but simple. Curing - the salt - isn't... entirely critical. Can be skipped, if the process is started quickly enough. The urine/lye is... not completely necessary, although it makes the process quicker by enhancing the tannic acid's effectiveness among other things, but a bit more effort defleshing+dehairing and an application of tannic acid or letting it rot just enough to loosen hair works adequately. Technically speaking, the only part I'm seriously missing is taking the hides out once for further dehairing and defleshing before putting it back in the tannic acid. But yes, salt and urine / wood ash lye does make success rates higher and the results can be thicker and therefore more suitable for armor.

For armor, though, boiled leather probably will be necessary after making normal leather. Or maybe not, I'm not sure. There's a lot of post-tanning treatments that can be done for leather to 'improve' or add one trait or another.

Edited by HoundAkragth

Share this post


Link to post
Share on other sites

Still working on getting through the smithing scripts and the music one, and it might be slower this weekend.

CBMstCBKeyQS

elseif eval( iProc == 1 ); equippables
	set Equip to 1

The comment seems erroneous. iProc 1 seems to be for ingredient conversions, and set Equip to 1 results in attempting to equip the base item, which results in situations like when I try to convert a mod-added meat item to the generic Meat item, eating said mod-added meat if there's more in the inventory.

Also, why not rConvRef.GetRefCount so we can convert stacks? Although that might be just a limitation of the engine.

if eval( Equip == 1 && IsFormValid rConvRef == 1 )
	set rNewItem to rConvRef.GetBaseObject
	Player.EquipItem rNewItem
endif

Missing the rConvRef.Activate here to pick up said item before attempting to equip it.

if eval( nameIncludes $sInclude rConvRef && GetObjectType rConvRef != 25 )

This runs whether or not IProc == 1. IProc == 2 also needs to search by name, and they're not necessarily ingredient items; testing says it fried the knife -> chopping knife conversion. May want to check arTemp["Value"][4] is equal to 1 before bailing out based on the rConvRef item type.

Personally:

if eval( ar_HasKey arTemp["Value"][4] && arTemp["Value"][4] == 1 &&  GetObjecType rConvRef != 25)
	continue
endif

right after ForEach arTemp <- arConvert to skip the whole for loop iteration if we're concerned about time.

CBSkinBonePileOS

This doesn't quite work properly; deletion / disabling never triggers unless TimeSet == 2, and TimeSet == 2 only when the bonepile's been opened. There's only a few ways that the disable + deletion code can run to completion. One, the bonepile has been opened, there's an item in the bone pile, but then the item is removed the second time the bone pile is opened. Or two, the bone pile has timed out and the pile is empty and the pile is opened again.

Bit of a mess, that logic; I rearranged it. I do tend to favor having only one state variable. It makes my life easier.

Try:

Spoiler

Scn CBSkinBonePileOS
; attached to the Meat Pile to hold bones for optional use

short TimeSet
short Empty
float fSkinTime
float fTimer
ref rInv
ref rContainer

BEGIN GameMode
	; "TimeSet" == Mode Stage
	; -1 = Done
	; 0  = Start
	; 1  = Wait
	; 2  = Check For Items
	; 3  = Disable Actor
	; 4  = Delete Actor
	if eval (Empty == 1) ; legacy code to make sure things in the state of empty = 1 get where they need to be.
		set TimeSet to 3
	elseif eval (Empty == 2)
		set TimeSet to 4
	endif
	
	if eval (TimeSet == -1) ; nothing to do on script
		return
	elseif eval (TimeSet == 0) ; setup
		set fSkinTime to GameDaysPassed
		set TimeSet to 1
		if eval (fTimer != 0)
			set fTimer to 0 ; initialize the float
		endif
	elseif eval TimeSet == 1 ; Wait for either timing out, or opened menu
		if eval (GameDaysPassed >= (fSkinTime + 1)) ; if there's been more than one day, delete
			set TimeSet to 3
		endif
	elseif eval (TimeSet == 2) ; check to see if there's any bones in the pile
		set rContainer to GetSelf
		set TimeSet to 3 ; if there's nothing in the pile, delete
		if eval (GetNumItems > 0) ; check for bones if there's items.
			ForEach rInv <- rContainer
				if eval(CompareName bone rInv)
					set TimeSet to 1 ; go back to waiting if pile contains bones.
					printc "CBSkinBonePileOS: Bone Pile not empty."
					break
				endif
			loop
		endif
	elseif eval(TimeSet == 3) ; disable item
		Disable
		set TimeSet to 4
	elseif eval(TimeSet == 4) ; delete item
		if eval(fTimer > 1.5)
			set TimeSet to -1 ; end script after done with deletion
			DeleteReference
		endif
		set fTimer to (fTimer + GetSecondsPassed)
	else ; contingency that should never be hit, but sends the pile straight to disable + delete
		set fTimer to 0 ; just in case TimeSet == 0 was never run
		set TimeSet to 3 ; send to disable
	endif
END 

BEGIN OnLoad
	if eval TimeSet == 1
		if eval GameDaysPassed >= (fSkinTime + 1)
			set TimeSet to 3 ; second backup mechanism to check time
		endif	
	endif
END

BEGIN MenuMode 1008
	if eval TimeSet == 1
		set TimeSet to 2 ; signals menu was opened, check for bones when back in game mode
		printC "CBSkinBonePileOS: TimeSet set to 2"
	endif
END 

 

 

Edited by HoundAkragth

Share this post


Link to post
Share on other sites

There's something wrong with the Music AI package; I think it's because a responsible AI (I don't know how high/low the setting needs to be) doesn't want to try activating an item with an ownership that is set to the player? Removing CBMusicLuteOS's rBasket.setOwnership works fairly well, but I haven't thoroughly tested.

Took me a while to hunt down just why the AI might not want to activate the basket.

Edited by HoundAkragth

Share this post


Link to post
Share on other sites

I haven’t been following your discussion, but I’d like to give you guys a caution based on your last post, @HoundAkragth. NPC’s can’t access a container with a script unless your mod requires OBSE 21+. I believe that shadeMe was able to fix the bug with OBSE. We discovered the bug when we had eat packages for the NPC’s in Dark Brotherhood Chronicles that included the NPC getting something to eat from a container. If you need NPC’s to access containers, then giving them an eat package with no food in their inventory is an easy way to test the fix. Combine that with low responsibility and an aggression of 20 and fights will break out.

Share this post


Link to post
Share on other sites
7 minutes ago, AndalayBay said:

I haven’t been following your discussion, but I’d like to give you guys a caution based on your last post, @HoundAkragth. NPC’s can’t access a container with a script unless your mod requires OBSE 21+. I believe that shadeMe was able to fix the bug with OBSE. We discovered the bug when we had eat packages for the NPC’s in Dark Brotherhood Chronicles that included the NPC getting something to eat from a container. If you need NPC’s to access containers, then giving them an eat package with no food in their inventory is an easy way to test the fix. Combine that with low responsibility and an aggression of 20 and fights will break out.

It's an activator, not a container, but thanks for the tip and I'll keep it in mind for the future. It's the Find Package for AI Packages I was having issues with, if you could shed some light?

Share this post


Link to post
Share on other sites

A find package is used to find an object. The object has to be persistent. If you want the NPC to activate an activator, I don’t think a find package will work. I took a look at the various package types and I’m not sure what would get an NPC to activate an activator. That has to be doable though. I would look at the various activators in the game, do a text search for the editor ID and see if I could find one that’s the object of an AI package. If you can’t find one, then another option would be to use a marker in a trigger zone. Give the NPC a travel package to the marker, which would set off the trigger zone. Then have the trigger zone set off your activator. Yeah, that’s ugly. Hopefully there is a package that would get an NPC to activate an activator. Actually you could probably just get the NPC to travel to the activator. Put a trigger zone around your activator and it would trigger your activator. It doesn’t look like a travel package to an activator would get an NPC to activate it, but it’s worth a try.

Share this post


Link to post
Share on other sites
52 minutes ago, AndalayBay said:

A find package is used to find an object. The object has to be persistent. If you want the NPC to activate an activator, I don’t think a find package will work. I took a look at the various package types and I’m not sure what would get an NPC to activate an activator. That has to be doable though. I would look at the various activators in the game, do a text search for the editor ID and see if I could find one that’s the object of an AI package. If you can’t find one, then another option would be to use a marker in a trigger zone. Give the NPC a travel package to the marker, which would set off the trigger zone. Then have the trigger zone set off your activator. Yeah, that’s ugly. Hopefully there is a package that would get an NPC to activate an activator. Actually you could probably just get the NPC to travel to the activator. Put a trigger zone around your activator and it would trigger your activator. It doesn’t look like a travel package to an activator would get an NPC to activate it, but it’s worth a try.

Hm. Then to all appearances this shouldn't be working at all, even to the extent it is. What's getting some - but not all - NPCs to activate it? Thanks, though. I'll go see if there is an example of an activator + AI package.

Edited by HoundAkragth

Share this post


Link to post
Share on other sites

Odd. It sounds like it's hit or miss. What's the intelligence of the NPC's involved? It's a stretch, but I remember that the Gamebryo engine had some surprising features, even to Bethesda, so it might be worth checking out.

Share this post


Link to post
Share on other sites

So far we haven't used any command specific to OBSE 21, but there are some from OBSE 20, so that is what we've been using as the requirement. Given the slightest need, I wouldn't hesitate to require 21, there just hasn't been a need so far.

Music is working, at least to a degree. It could be that it isn't working on all NPCs, but certainly it works on some, since I've tested it and seen things added to the basket. Even if it is slightly broken, it may not matter since the in-game result seems about right. Which is not to say that I am not interested in a fix, only that I had no idea there was a problem. I appreciate the help. As HoundAkragth pointed out, the first problem is figuring out how to test it properly. 

If the basket is not set to be owned by the player, what happens when the player finishes and goes to pick up the basket? Without SetOwnership, the ownership is that of the ground it is placed on. Sometimes that won't be a problem, but in other instances it could lead to your basket belonging to someone else. There may be an easy way around that problem, but it could be a problem that needs to be dealt with. The MusicBasket is a permanent reference, normally stored in the basement of the CBGuildHall, a hidden cell added by CB, and transported to the player as needed. Perhaps if it is assigned to the player first, SetOwnership isn't needed. SetOwnership is also a bit tricky because I've found it often behaves like a return or at least can impact code downstream of itself. So I try to put it as late in a block of code as possible.

Thanks for the tips regarding the BonePile. It tests successfully in game, but it is possible I've always opened the bone pile when testing and thus never seen the problem. I'll get back to you on the CBKey suggestions. They look good.

Share this post


Link to post
Share on other sites
11 hours ago, HoundAkragth said:

Still working on getting through the smithing scripts and the music one, and it might be slower this weekend.

CBMstCBKeyQS


elseif eval( iProc == 1 ); equippables
	set Equip to 1

The comment seems erroneous. iProc 1 seems to be for ingredient conversions, and set Equip to 1 results in attempting to equip the base item, which results in situations like when I try to convert a mod-added meat item to the generic Meat item, eating said mod-added meat if there's more in the inventory.

Also, why not rConvRef.GetRefCount so we can convert stacks? Although that might be just a limitation of the engine.


if eval( Equip == 1 && IsFormValid rConvRef == 1 )
	set rNewItem to rConvRef.GetBaseObject
	Player.EquipItem rNewItem
endif

Missing the rConvRef.Activate here to pick up said item before attempting to equip it.


if eval( nameIncludes $sInclude rConvRef && GetObjectType rConvRef != 25 )

This runs whether or not IProc == 1. IProc == 2 also needs to search by name, and they're not necessarily ingredient items; testing says it fried the knife -> chopping knife conversion. May want to check arTemp["Value"][4] is equal to 1 before bailing out based on the rConvRef item type.

Personally:


if eval( ar_HasKey arTemp["Value"][4] && arTemp["Value"][4] == 1 &&  GetObjecType rConvRef != 25)
	continue
endif

right after ForEach arTemp <- arConvert to skip the whole for loop iteration if we're concerned about time.

Correct about the comment being erroneous, or more correctly obsolete. It now reads:

                elseif eval( iProc == 1 ); meat and fish conversions
                    set Equip to 1
                    Player.PlayGroup CastTouchAlt 1
                    set Num to rConvRef.GetRefCount
                    Player.AddItem rNew Num

Originally iProc 1 covered other things, but they were systematically removed, leaving only the meat and fish conversions. I believe the stack conversion will work fine, I just hadn't thought of it.

In theory you are right about the lack of rConvRef.Activate but there are only two conditions in which Equip is set to 1. In one case, it requires a drawn weapon, making the activation unnecessary and in the other we're converting fish or meat, so there is no need to activate. I'll add a note for future reference but leave the code unchanged.

You are right about 
if eval( nameIncludes $sInclude rConvRef && GetObjectType rConvRef != 25 )
not working. I discovered the problem during testing and fixed it. 

I like your suggestion to speed the code and verify type. I implemented this way:
            if eval( Grabbing == 0 && rConvRef != 0 )
                ForEach arTemp <- arConvert
                    if eval( ar_HasKey arTemp["Value"] 4 )
                        if eval( arTemp["Value"][4] == 1 && rConvRef.GetObjectType != 25 )
                            continue
                        endif
                    endif

I added a second 'if' to ensure they are executed in the right order. If memory serves, obse handles statements connected with && from right to left. By doing the value check first, it ensures it runs first and the other two do not run unless that one is true, whether my recollection of the order of execution is correct or not. The array check with key 4 can cause a crash if there is no value there, so it should be contingent on the presence of a value.

I'm in the process of some in-game testing, so I'll run some tests to see where things stand.

Share this post


Link to post
Share on other sites
1 hour ago, Munch Universe said:

So far we haven't used any command specific to OBSE 21, but there are some from OBSE 20, so that is what we've been using as the requirement. Given the slightest need, I wouldn't hesitate to require 21, there just hasn't been a need so far.

Music is working, at least to a degree. It could be that it isn't working on all NPCs, but certainly it works on some, since I've tested it and seen things added to the basket. Even if it is slightly broken, it may not matter since the in-game result seems about right. Which is not to say that I am not interested in a fix, only that I had no idea there was a problem. I appreciate the help. As HoundAkragth pointed out, the first problem is figuring out how to test it properly. 

If the basket is not set to be owned by the player, what happens when the player finishes and goes to pick up the basket? Without SetOwnership, the ownership is that of the ground it is placed on. Sometimes that won't be a problem, but in other instances it could lead to your basket belonging to someone else. There may be an easy way around that problem, but it could be a problem that needs to be dealt with. The MusicBasket is a permanent reference, normally stored in the basement of the CBGuildHall, a hidden cell added by CB, and transported to the player as needed. Perhaps if it is assigned to the player first, SetOwnership isn't needed. SetOwnership is also a bit tricky because I've found it often behaves like a return or at least can impact code downstream of itself. So I try to put it as late in a block of code as possible.

Thanks for the tips regarding the BonePile. It tests successfully in game, but it is possible I've always opened the bone pile when testing and thus never seen the problem. I'll get back to you on the CBKey suggestions. They look good.

Don't think you can pick up the basket? If I'm not wrong, activating the basket won't do anything but give you the message you need to put away the Lute. And putting away the lute actually just disables and... I think deletes the reference. It certainly goes nowhere near the inventory, though I'm not entirely certain what would happen if the player tried to activate an activator belonging to someone.

...Can activators be picked up? It doesn't appear to actually be an item that can...

Anyway. Basically, I was noticing Isault (I may be misspelling as this is all from off the top of my head and 2:11 AM in the morning for me) wouldn't donate, at all; neither would Cam. Check the script package they were on - was the one for finding the activator object - and forcing them to evaluate the package looked like they walked over... and refused to activate said object. I toggled SetOwnership to Isault, worked fine. Removed SetOwnership, worked fine. Lowered responsibility to pretty low, looked like it worked fine. So... Workaround? Sure, probably. I need more testing b/c I hadn't tried it on Cam yet.

Edited by HoundAkragth

Share this post


Link to post
Share on other sites

OK, that is convincing. I'll make the change. Thanks very much for your help.

EDIT: After a closer look, I see that the basket is a dynamic reference. It used to be a permanent reference, as described above, but I found it could be dynamic and changed it several years ago. But factoring in AndalayBay's tips, I'm wondering if the change may play a role in the current problem. It would be easy to switch back to a permanent reference, should that be necessary.

Edited by Munch Universe
Correction of earlier statement about basket

Share this post


Link to post
Share on other sites

Hammering a hardwood or softwood plank to make a wood panel is not working. The script is running and recognizes the hammer, but the menu isn't coming up and I'm not scoring any hits on the board. I've tried some debugging but without success. HoundAkragth, if you find the time, perhaps you can have a look and see if you spot anything amiss.

CBWoodHammerQS is the script in question. CBWoodCarvingQS is very similar, just uses a blade instead of a hammer and it is running as it should. That may help to track down the problem. I'll have a look myself in the AM when I'm fresh but right now I'm just spinning my wheels.

Share this post


Link to post
Share on other sites
1 hour ago, Munch Universe said:

Hammering a hardwood or softwood plank to make a wood panel is not working. The script is running and recognizes the hammer, but the menu isn't coming up and I'm not scoring any hits on the board. I've tried some debugging but without success. HoundAkragth, if you find the time, perhaps you can have a look and see if you spot anything amiss.

CBWoodHammerQS is the script in question. CBWoodCarvingQS is very similar, just uses a blade instead of a hammer and it is running as it should. That may help to track down the problem. I'll have a look myself in the AM when I'm fresh but right now I'm just spinning my wheels.

Tried making the if statement for hammering staves as another elseif for the plank/harrada instead of as a standalone if statement?

if eval rTarget.GetIsID CBPlankHard == 1 ||  rTarget.GetIsID CBPlankSoft || rTarget.GetIsID CBPlankSalv
...
elseif eval rTarget.GetIsID CBStaveHarrada
...
elseif eval ( CompareName stave rTarget == 1)
...
else
       set Reset to 1
        ; DebugPrint "CBWoodHammerQS: No valid target found"
endif

To clarify, what we had before we started patching was something like:

if eval ( CompareName stave rTarget == 1)
...
elseif eval rTarget.GetIsID CBPlankHard == 1 ||  rTarget.GetIsID CBPlankSoft || rTarget.GetIsID CBPlankSalv
...
elseif eval rTarget.GetIsID CBStaveHarrada
...
else
       set Reset to 1
       ; DebugPrint "CBWoodHammerQS: No valid target found"
endif

We'd hit the elseif for stave, first, and that'd set everything to stave construction.

Afterwards, if eval ( CompareName stave rTarget == 1 && Mode != 30 && Messaged != 3 ) ;ensure harrada construction has not initiatedwas placed after the else set Reset to 1.

T'be honest, I haven't been getting that same error. A tad bit of a lag and the script resetting & stopping before the messagebox came up and thus needing to try again, but that's it.

Edited by HoundAkragth
Wrong order of old if-elseif-else

Share this post


Link to post
Share on other sites

It appears my problem stems from the save, not the scripts themselves. Reverting to an earlier save led to hammering working as it should. As far as I can tell, CBMstEquippedTools(CBET) appears to work at first, then gets stuck. When CBWoodHammer sets its MissionAccomplished to 1 during its GameLoaded reset, that value is not set to 0 by CBET. This causes CBWoodHammer to skip the main block requiring MissionAccomplished to be 0.

What exactly is causing CBET to get stuck is unclear so far. It appears what is happening is that phenomenon where a script is throwing errors and the Oblivion engine shuts it off silently. I understand why it works that way, but it can make it really difficult to track down exactly what is going wrong.

This is consistent with what you are seeing, since it is working in your hands. The delay you see is that occasioned by the need to find the right targets and speed up execution of the quest. All the quests run on an fQuestDelayTime of 3 (seconds) until CBET finds a target and speeds them up to 0.1. It is likely, but untested, that if all of them ran at 0.1 all the time, it would slow the FPS rate significantly. So when you first start doing something, it is sufficient to swing a wait a few seconds before trying again.

EDIT: I followed a hunch and found a solution that fixed my "broken" save. In CBET the quest enders at the top are arranged into a long set of if/elseif statements. I was seeing an indication that in this save CBWoodCarvingQ was stopping. So it occurred to me that the series of if/elseifs might be failing here. I had imagined this set as mutually exclusive, but that is incorrect. It is entirely possible for more than one CBET dependent script to be active at one time, though in principle it shouldn't happen. So it actually hints that CBWoodCarving isn't ending when and how it should, which might be the real source of the trouble. But in any case, there is no good reason to leave the quest stoppers in a state as if they are mutually exclusive, so I made them into a series of if statements and the problem disappeared. CBWoodHammerQ stopped, then restarted and everything worked as it should.

Edited by Munch Universe
Update on fix

Share this post


Link to post
Share on other sites

The current changelog, along with two remaining 'to dos':

Version 0813.0 stand October 24, 2018

·         Conversion of plates in player home in Bruma was working but duplicating the plate due to the plate having a parent controlling its disabled status. Parented items can now no longer be converted to prevent this problem. Thanks to roblesstevena for reporting and bug discovery.

·         Jade necklace requires a stack of 2 raw jade, using 1 leads to a jade ring.

·         Firewood box now renamed “Wooden Crate”.

·         Ladder and Shelves recipes fixed.

·         Harrada and other stave hammering recipes fixed.

·         Making jerky and salted meat requires an Aging barrel and a few days of game time.

·         Recipe for Bolete powder fixed, requires a stack of 3 cairn bolete mushrooms on the cutting board.

·         Recipe for marinated wisp stalk mushrooms fixed.

·         Recipe for cornbread added, Cobl only.

·         Flatbread pie removed from the Ref Guide, just called Flatbread now.

·         Flatbreads can now use any sliced meat, not just ham.

·         Recipes for Shepards, Breton and Cottage pies, mutton stew and slaughterfish chowder fixed and checked. Some other recipes may be fixed if they were failing before, due to a reordering of the ingredients.

·         Two new tips added to the Ref Guide explaining how to use the mixing bowl best when the ingredients are large.

·         Added recipes for boiling an egg and rice to the Ref Guide (recipes were already present in the scripts).

·         Fixed bow repair when using just sinew or harrada fiber.

·         HoungAkragth proposed a fix to the Bone Pile to allow it to work whether the player opens it or not. In the past it worked, but only if the player opens it at least once. He also fixed picking up the Fish Trap.

·         Fixed bug in CBMstEquippedToolsQ which prevented CBWoodHammer from shutting off if another quest of the set was active.

·         Extended fire detection range to 90 and prevented automatically ending cooking when the fire is too far(more than one cell) from the player

·         TODO: Music basket fix.

A probable fix has been implemented but not yet tested to confirm it worked.

·         TODO: Pemmican.

Waiting on the retexture of something like Animal Fat or a Potato to create the INGR: Pemmican which will get added to the aging barrel as an alternative to dried jerky or salted meat.

Unless other bugs turn up, once pemmican is built in I'll release to TAL for testing and on the first report that it isn't completely screwed up, I'll upload it to the Nexus.

I also made a couple of minor changes to CBAddon-CRT which adds some CB stuff to Cloud Ruler Temple. I had a problem with fire detection in the Grand Hall, which required an extra light to fix.

Share this post


Link to post
Share on other sites

Unless you already have someone on the pemmican MU, I can surely whip up something for that when I get you the Bosmer Fire this week/weekend. I found a texture for it, I just want to bake the ambient occlusion onto the texture via Blender.

Share this post


Link to post
Share on other sites

I'll leave the decision to HoundAkragth. Since it was his idea, he gets first choice.

One thing you could have a look at, if you find a little time to do so, is the textures for cloth. There are 5 cloth bolts and 5 folded cloth which CB retextures to provide a better baseline for CBTailoring. But despite my efforts and those of Annachibi, there is still something off about them. The actual colors are okay but they sort of glow in the dark. I'm hoping you know what causes that and how to fix it. If it is something complex and time consuming, get back to me. But I'm hoping it is one of those things which might just take a few minutes if you know what to do.

Share this post


Link to post
Share on other sites
7 hours ago, puddles said:

Unless you already have someone on the pemmican MU, I can surely whip up something for that when I get you the Bosmer Fire this week/weekend. I found a texture for it, I just want to bake the ambient occlusion onto the texture via Blender.

Go ahead if you want to; I'm drowned under work this week yet again. Pulling fifteen hour days is not fun.

Share this post


Link to post
Share on other sites

Yeah, I know the feeling. It’s my busy season at work, but at least I’m only hitting 9 hour days.

Is this supposed to be pemmican strips, or “pemmican blobs”?

Share this post


Link to post
Share on other sites
53 minutes ago, puddles said:

Yeah, I know the feeling. It’s my busy season at work, but at least I’m only hitting 9 hour days.

Is this supposed to be pemmican strips, or “pemmican blobs”?

Pemmican's like clay before the tallow cools completely, so any shape you care to make them is fine. I was personally thinking "protein bar". And now I seriously should probably get to work instead of messaging on my cellphone before my boss starts yelling.

Share this post


Link to post
Share on other sites

Here is a screenshot of the red cloth. Thanks a ton, puddles, I think that did the job. The cloth is still just a little shiny, but it doesn't glow in the dark any longer.

Out of curiosity, what did you do? I'm guessing the textures remain unchanged and you tweaked something in the meshes. If it is complicated to explain and requires an understanding of Blender, forget I asked. I'm just speculating that there might be an easy explanation. Also no rush, over the weekend will be fine. I appreciate your efforts and those of HoundAkgarth and certainly don't want to steal the little free time you have during a heavy work cycle.

WeynonRedClothPuddles.png

Share this post


Link to post
Share on other sites

Um...

tl;dr every object/mesh within a .nif file has a "MaterialProperty" that's visible in NifSkope as having a color palette icon. If you click on the palette it will show 4 color circles:

MaterialProperty.png.1b41ef0f9de1bab05c89148ae4749e6c.png

The way you see the Ambient & Diffuse with their little white dot all the way to the bottom right, Specular & Diffuse dot all the way to the bottom left/black, Alpha at 1.000, and Glossiness at 10.000, is what I generally just call "Default". You can generally set the Material to this for...just about everything, and it won't look horrible. It might not look realistic (you mentioned the sheen on the fabric), but there probably won't be anything horrid. Usually. Special things like glass, metal, etc. are going to be set differently, things with _g textures will generally have some Specular & Emissive. The current fabric nifs in CB all have their Specular set to pure white (that was the glow-in-the-dark) and the Glossiness at 18.***. Some of them had a dark purple Emissive....not sure why. Even after all these years, people aren't 100% in agreement about which things do what, so I generally just don't screw with it the baseline unless I'm looking for something special. The sheen you're talking about in that screenshot could probably be reduced by darkening the Ambient color a bit. The Glossiness factor is totally unpredictable, sometimes lowering it actually INCREASES the "Gloss", so...I try to leave it at 10.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×