Jump to content


  • Content count

  • Joined

  • Last visited

Everything posted by HoundAkragth

  1. Craftybits 0.812 Bug Reports

    Sorry, been really busy. Technically, doing this on my lunch hour. Er, would an image of pemmican help? The attached should be it. T'be honest, pemmican's highly dependent on what it's made from; more tallow, and it's whiter. The redder the original meat, the generally darker the resulting jerky and pemmican. The finer ground the jerky, the less mottled it looks. It could, as shown below, be solid brown. Everything except the obviously plants things is pemmican. I personally think it looks fine, but I've never been picky with textures.
  2. Craftybits 0.812 Bug Reports

    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.
  3. Craftybits 0.812 Bug Reports

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

    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.
  5. Craftybits 0.812 Bug Reports

    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.
  6. Craftybits 0.812 Bug Reports

    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.
  7. Craftybits 0.812 Bug Reports

    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?
  8. Craftybits 0.812 Bug Reports

    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.
  9. Craftybits 0.812 Bug Reports

    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:
  10. Craftybits 0.812 Bug Reports

    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.
  11. Craftybits 0.812 Bug Reports

    Whoops. Yeah, Renaissance is closer in time period. But that's very true; TES isn't a very exact match for any period in history, and then there's magic, in which I also include alchemy. There's also materials that don't exist in the real world, whose properties may have some technological implications. I wouldn't be terribly surprised if some inns had a refrigerator kept cold by frost salts, and there's been a bit in Skyrim about fire salts powering a forge (hmm... that's something that niggles my mind with an idea). Protein poisoning's not quite gout. It is literally what its common moniker sounds like: starving to death (on a pure lean meat diet). Gout can result as a complication, though, and protein toxicity. Anyway, there's a limit to how much protein a human can convert into calories and process in a single day, which is unfortunately well below the calories needed to maintain weight. Beyond that much protein, eating more protein provides no more energy than eating dirt does. The symptoms will manifest in under two weeks and on average about a week - diarrhea, malaise, lethargy, slow heartbeat. Exactly what is the killer isn't certain - could be the high urea and ammonia in the blood, could be the organ failure caused by starvation, but the time that it takes seems to align with how long it takes to starve: about two to three months, assuming there is water. The cure's pretty simple: eat less protein, eat more fat and carbohydrates. The recommendation is that over fifty percent of caloric intake should be carbohydrates and fat. I wouldn't want to implement this, as it makes things more complicated than necessary. Nor would I be terribly concerned with nutrition deficiencies for CB; most of them take months, and even years as you said and are impractical for the game. As for how the disease system works, at this point I've slapped a "MAGIC" label on it. Along with a lot of minor things. Like how we're carrying around bloody pieces of meat for weeks on end without it going bad. Or how we're carrying six pieces of torso armor, a pair of boots and five warhammers (I'm exaggerating). I do have a question - I don't want changes resulting from this - but is there a reason why ya'll decided on casting for jewelry instead of forging? I understand why hot forging - one, it's more... universally applicable and two, iron and steel weapons aren't cold-forged due to numerous reasons, and I do have some idea of why casting, but I was wondering. And another question is about tanning. Was it because of the same time scale issue about nutrition deficiencies that it wasn't implemented? I'll see if I can manage the retexture on the weekend, then.
  12. Craftybits 0.812 Bug Reports

    I wish that the scripts weren't embedded in the esp/esm because I'd be able to take a look at the logic and take notes while my Windows machine is inaccessible, but oh well. I'll test the fixes you implement when I can in a few days. Ah - I didn't realize the editor for textures was GIMP2. Probably should have. It's actually my primary image editor outside of Windows. If you get around to retexturing before the weekend, go ahead and just do it, but if not I can see if I can manage it. Should be fun. I'd agree with you on the barrels as something to be proud of. Those are neat. If I remember right, there's a transition for the brewing between empty to grain-filled? So, as a warning before trying to implement pemmican - it's not period-accurate for the medieval period Oblivion is based off of; it didn't exist in Europe until the colonial era. It did, however exist for the Native Americans, so there's that. If period accuracy is a concern, don't bother. Then again, tomatoes are also not period-accurate. So up to you. Pemmican's the historical equivalent of protein bars, with fat instead of sugar, so yes, just like adding a protein bar to a normal modern diet without a corresponding increase in exercise, it would be a bad idea to do the same. It is, however, unlike jerky, something that a human can survive on for months before hitting problems. Jerky alone will result in protein poisoning - probably more familiar as rabbit starvation - in a matter of a few weeks. The flavorings actually aren't just for flavor; they're to increase the time before malnutrition sets in - scurvy, etc - but I'm digressing. I know a lot of useless information like this.
  13. Craftybits 0.812 Bug Reports

    Pemmican's ground jerky + melted fat (usually from tallow or tallow-like fat products). It can be flavored with other things, like onions and berries and stuff, but the base is jerky + tallow. The tallow's to turn loose protein fibers and powder into a solid chunk of browned protein once it cools and re-congeals, but also to add oils and fats that jerky loses in the process of making it. I suggested it mainly because I ended up with extra animal fat a lot and it is a traditional trail food, and I think a retextured tallow or clay chunk could probably do just fine as a model. Mottled brown, brown-red instead of gray/yellow/whatever color it was. As for looking through the code, I've found that going through the code first gives me ideas on what would be edge cases and then I can go test them in-game; they usually end up exercising the normal part of the code as well. Any of that, unfortunately, will have to wait for the weekend. I don't have access to the computer that contains Windows until then. I haven't done much with smithing, unfortunately. I think I used the forge to make a few iron bars and arrowheads, but there's a bit of a gateway there in terms of armorer skill and resources and I didn't start on the new character until fairly recently. You do some modeling for this, I presume? I actually know pretty much nothing about modeling.
  14. Craftybits 0.812 Bug Reports

    I'm happy to help and I think I'm half in love with the code. It's sensibly named, well ordered, and doesn't try breaking my brain. I can draw state machines off this. T'be honest looking at how well it was written, I don't think you need any help with the "fixing" part of it, it's just that I'm not too good at describing problems and go straight to the fixing part. Me, words, no mixy. I do better with code. And state machine diagrams. The bit I'm most impressed with is the barding / music and the cooking; both feel complicated and work quite smoothly. One of the smaller bits that I liked that wasn't that big was the ability to make jerky without salt. I see that all too rarely. I'd love to be able to make pemmican too, but it's nice enough that I can make jerky without salt. I can see if I can shell out some time on the weekend to poke through the rest of the scripts if you'd like? The above I encountered through gameplay, but there's bits I wouldn't be likely to do with my playstyle and bits I wouldn't notice in-game like clean up.
  15. Craftybits 0.812 Bug Reports

    So, er. The same HoundAkragth here as quoted. CB 0.812.2 and OBSE 21 from CLS-Craftybits_Complete_08122.7z. This is mostly me reading off the code to guess at what's intended. You have very sensible code I can actually mostly trace. Some of this has already been said but I thought I'd collate this as a record. If you need me to post this elsewhere, I can do so. Also, do note that I didn't take that much time to do more than what I'd call patching. Some of these could use with a more comprehensive fix than what I've given them. Canoe Frame: Mostly, this is a case of "Adding a Container Object to a Actor". Since I'm packing the new items... Yeah. Suggest CBCanoeFramePlacer instead of CBCanoeFrameC. Work-around is simply not to use Pack New Items. Fish Trap Not Catching Fish: This only happens if the player hasn't put bait into the Fish Trap; waiting several days doesn't help to add fish to the trap. I found that the script would not run any of the commands after the removeItem in this if there wasn't any bait - rFishTrap.removeItem rBait 1 rFishTrap.addItem rFish 1 set rFish to 0 set FishFlag to 1 endif So, here's the suggestion (which has been mildly tested) - rFishTrap.addItem rFish 1 set rFish to 0 set FishFlag to 1 if eval (IsFormValid rBait == 1) rFishTrap.removeItem rBait 1 endif endif Stave Aging: It still doesn't age even if the time interval is set to zero. As both the Gnarl and the Spriggan scripts both use 30, there may have been a change somewhere that removed that 'other script'. I don't actually have much of a comment on using a barrel to age the staves, actually. It doesn't make much of difference for me as the aging barrels over the time period the staves need to age tend to fall beneath the ground anyway and I don't have the best grasp on how the cell reference deletions work. Practically speaking I'd probably end up dragging said barrel around via grab key anyway and at least a barrel would be less likely to end up flung under the ground when I dropped it to start fighting. Bathing: Bathing is resetting before it gets to the actual bathing part of the script; I don't think it's a serious problem as the only things that are done in Bathe > 0 is remove "getting sick", maybe losing a soap bar, and adding the soap effects, but it'd have been nice to see the messages that are in those sections to make sure it's been done. CBKey + Fish: The culprit for the CBKey and fish error where all objects with names containing fish are turned into fish fillets is in CBMstCBKeyInitOS at the top where it's creating - let CBKeyQ.arConvert[ix] := ar_Construct Map let CBKeyQ.arConvert[ix][1] := ar_Construct Map let CBKeyQ.arConvert[ix][1][0]:= "Fish" let CBKeyQ.arConvert[ix][4] := 1 let CBKeyQ.arConvert[ix][5] := CBFishGenericFillet CBMstCBKeyQS detects anything containing Fish in its name as a iProc == 1 and then does its conversion. Mind you, I don't know if that's supposed to be there at all. I'd recommend adding Amur Catfish to the exclusions if it is and probably "Fish Trap" and "Fishing Boat" - let CBKeyQ.arConvert[ix] := ar_Construct Map let CBKeyQ.arConvert[ix][1] := ar_Construct Map let CBKeyQ.arConvert[ix][1][0]:= "Fish" let CBKeyQ.arConvert[ix][2] := ar_Construct Map let CBKeyQ.arConvert[ix][2][0] := "Amur Catfish" let CBKeyQ.arConvert[ix][2][1] := "Fish Trap" let CBKeyQ.arConvert[ix][2][2] := "Fishing Boat" let CBKeyQ.arConvert[ix][4] := 1 let CBKeyQ.arConvert[ix][5] := CBFishGenericFillet Also, I'm not entirely sure why iProc == 1 handles both ingredient conversion and equipping items. I'd actually recommend taking equipping weapons out of iProc == 1 - remove set Equip to 1 from the script. The EquipItem the Equip flag allows breaks things when it runs on things that aren't valid inventory items. What I'd recommend doing for iProc == 1 is - set Mode to 99 if eval(rConvItem.GetObjectType == 25) Player.PlayGroup CastTouchAlt 1 Player.AddItem rNew 1 set rTargetDel to rConvRef rTargetDel.Disable set DelUnused to 1 endif The reasoning for the 25 is because that's the integer for ingredients, and iProc 1 seems to be ingredients-only. Not to mention without the equip, there won't be a stuck CB Key from that vector. There's a better way of doing this, by the way of doing the rConvItem object type check before breaking out of the for loop walking through the conversion array so the exclusions above are unnecessary, but I should think that the type check could be left in anyway. And then for equipping items, instead of eval( Equip == 1) in Mode 99 - if eval( Equip == 1 && IsFormValid rConvRef == 1) set rNewItem to rConvRef.GetBaseObject if eval(rNewItem.IsWeapon == 1) rConvRef.Activate Player Player.EquipItem rNewItem endif endif set Equip to 0 These aren't tested though; I just simply removed the Equip and added exclusions in my personal copy instead of solving that way, but the above would likely cover more scenarios. I'm not sure if I need all the form/ref checks or if they'd break the if statement before jumping out, but logically this should work. Picking up Fish Trap: When picking up a fish trap, the fish trap itself seems to stick around (it doesn't, it's actually an entirely new fish trap reference). "set TrapDeployed to 0" in "Reset == 1" is part of the problem. What probably ends up happening is that somehow the script runs a few times before stopping entirely. I found "set TrapDeployed to 9" worked nicely, but that may not be the best way to fix things. Bow Upgrade - Broken Bow: When I only add sinew or harrada fiber, upgrading a bow results in a broken bow. This is because CValue, CHealth, CDamage, and fCSpeed do not get set if there's no Horn and default to 0. The script uses all four variables anyway for SetGoldValue, SetObjectHealth, SetAttackDamage, SetWeaponSpeed and thus results in setting the bow values to 0. Icons: There's also a few icons - hardwood bow, the wooden slats among them - that appear very pixelated and wrong. They're not important things that impact gameplay but I thought I'd repeat it here.