JustChill Posted February 8, 2020 Share Posted February 8, 2020 Hey there, I recently updated a translation of a quest mod for Enderal.Previously it worked pretty well, as seen in this video: However, I got a bit reckless when I packed the BSA and forgot to add the sound files.Yet that just brought me back to the mod and fixing an issue with the teleport orbs. When you use them, the control for camera switch wasn't disabled and by using that one during the animation you were able to mess up the game by having your char running through walls and not being able to go up or down. Yet after packing the new BSA, I ran into this issue: This issue doesn't just look weird but it effectively breaks the mod as you see in the upper video there are a lot of sarcophagus in the end boss arena.None of them opens up, except if you kill the Draugr inside. Does anyone know what could cause that issue and how I can fix it? I've checked the working sarcophagus I've recorded in the bug video, but the linked Refs and settings of the involved assets are set up in the exact same way as the bugged ones. :sad:I either deleted the bugged ones and added them again.The outcome still stays the same.And as I haven't touched the ESP in any way but just packed the BSA again with the updated scripts and sound files, I really have no idea how that could have happened. :( I appreciate any help. :smile: Kindest regards,JC Link to comment Share on other sites More sharing options...
maxarturo Posted February 8, 2020 Share Posted February 8, 2020 You will need to be a little more specific on the how the ambushes are set up (at least for me). 1) Are you using the vanilla "MasterAmbush" or a custom made script. 2) How is the activation of the actors done ?, are you using a trigger box with an "defaultactivateself" script. Or are you activating the actor with an other activator, if so does the activation points towards an activator that can send an activation event ?. * Because from what i can see none of them are pointing or receiving an activation event from an activator. * I'm shooting blind here... since i don't have a clue on how you have actually set up your ambush scene (in CK). Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 Hey, there. I haven't set these up, as this is a mod from someone else which I tried to enhance a bit.Initially this mod didn't even want to start, as of Tommy didn't teleport to the Northwind camp, but simply staid at the location where you accepted his quest. XD The activation is done with a DefaultActivateSelfTRIG and they are all using the MasterAmbushScript, which comes from Enderal and is also used by that one in Grelsgrab that works. I'll record a quick video about how it looks like in CK and will post the respective scripts in action (all of them are Enderal default scripts): MasterAmbush: ScriptName masterAmbushScript extends Actor {Script that lives on the actor and takes care of all instances of how an actor can come out of idle state while in ambush mode} import game import debug String Property ACTOR_VARIABLE = "Variable01" AutoReadOnly {By default, this property is set to Variable01.} Float Property ACTOR_VARIABLE_ON_TRIGGER = 1.0 AutoReadOnly {By default this property is set to 1.} Float Property ACTOR_VARIABLE_ON_RESET = 0.0 AutoReadOnly Float Property AGGRESSION_ON_TRIGGER = 2.0 AutoReadOnly { By default this property is set to 2 (very aggressive). 0 - Unaggressive - will not initiate combat 1 - Aggressive - will attack enemies on sight 2 - Very Aggressive - Will attack enemies and neutrals on sight 3 - Frenzied - Will attack anyone else } Float Property AGGRESSION_ON_RESET = 0.0 AutoReadOnly keyword property linkKeyword auto {if this has a linkedRef with this keyword, we will activate it once when hit, activated, or on combat begin} bool property ambushOnTrigger = false auto {By default, this is set to false. Set to true if you want encounter to come out of ambush when player enters trigger} Bool Property helpAlliesOnTrigger = false auto {By default, this is set to false. Set to true if the NPC helps nobody while ambushing, and helps allies when the ambush is triggered} Bool Property dontResetAggression = false auto {By default, this is set to false. Set to true if the NPC doesn't need its aggression raised when the ambush is triggered} ;********************************************** Event onReset() ;messagebox ("in reset") self.setAV(ACTOR_VARIABLE, ACTOR_VARIABLE_ON_RESET) If dontResetAggression == False self.setAv("Aggression", AGGRESSION_ON_RESET) EndIf If helpAlliesOnTrigger self.setAV("Assistance", 0) ; Help nobody EndIf self.evaluatePackage() endEvent ;********************************************** auto State waiting ;The actor can exit the furniture in multiple ways. We need to listen for all of these ;events and if any are called, then go to All Done state, since we don't need to listen ;for any other events because any of the events will get the actor out of the furniture. ;Handle Activation Event onActivate(ObjectReference triggerRef) ;trace("in onactivate") if ambushOnTrigger || (triggerRef == game.getPlayer()) ;player has activated draugr, so leave state gotoState("allDone") else ;trigger activated them, so set their aggression to 2, but do not leave state _RaiseAggression() endif endEvent ;Handle onHit Event onHit(objectReference akAggressor, Form akWeapon, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) ;trace("in onhit") gotoState("allDone") endEvent ;Handle other cases that cause them to come out of furniture ;Using onGetUp as a safety net Event onGetUp(ObjectReference myFurniture) Cell parentCell = GetParentCell() ;trace("in getup") if (parentCell && parentCell.IsAttached() && (is3DLoaded())) gotoState("allDone") endif endEvent Event OnCombatStateChanged(Actor actorRef, int aeCombatState) ;trace("in combatstatechanged") if (aeCombatState != 0) ; 0 = not in combat, so non-0 means we entered combat gotoState("allDone") endIf endEvent ;if any of the events above are caught, we leave this state, but first we need to take care ;of setting up everything we need when we get out of our furniture. Event onEndState() ;trace("in end state") ;handle things like sarcophagus lids that are the linkedRef of the furniture If _TryActivateLinkedRef(getLinkedRef()) _TryActivateLinkedRef(getNthLinkedRef(2)) EndIf ;set actor variables self.setAV(ACTOR_VARIABLE, ACTOR_VARIABLE_ON_TRIGGER) _RaiseAggression() ;check to see if actor has a linkedRef with this keyword, if so, then activate it If linkKeyword _TryActivateLinkedRef(GetLinkedRef(linkKeyword)) EndIf endEvent endState Bool Function _TryActivateLinkedRef(ObjectReference mylinkedRef) If mylinkedRef mylinkedRef.Activate(self) Return True EndIf Return False EndFunction Function _RaiseAggression() If dontResetAggression == False self.setAV("Aggression", AGGRESSION_ON_TRIGGER) EndIf If helpAlliesOnTrigger self.setAV("Assistance", 1) ; Help allies EndIf self.EvaluatePackage() EndFunction ;********************************************** State allDone ;do nothing endState ;********************************************** DefaultActivationSelf: ScriptName defaultActivateSelf extends objectReference {Default script that simply activates itself when player enters trigger} import game import debug bool property doOnce = TRUE auto {Fire only once? Default: TRUE} bool property disableWhenDone = FALSE auto {Disable after activating? Default: FALSE} bool property playerOnly = TRUE auto {Only Player Triggers? Default: TRUE} bool property playerAndAlliesOnly = False Auto {Only player or Allies/Followers/Summons trigger? Overrides playerOnly if that's true as well. Default: TRUE}' int property minLevel auto {Optional: If set, player must be >= minLevel to activate this} Actor property PlayerRef Auto Faction property CurrentFollowerFaction Auto Package property Follow Auto Package property FollowerPackageTemplate Auto ;************************************ auto State waiting Event onTriggerEnter(objectReference triggerRef) If PlayerRef == None PlayerRef = Game.GetPlayer() EndIf Actor actorRef = triggerRef as Actor ; check whether we care if the player is activating if(actorRef == PlayerRef || (playerAndAlliesOnly && IsPlayerAlly(actorRef)) || (playerOnly == False && playerAndAlliesOnly == False)) ; also check level (if we even care about that) if(minLevel <= 1 || PlayerRef.getLevel() >= minLevel) if doOnce == TRUE gotoState("allDone") endif if disableWhenDone Self.Disable() EndIf ; per the description of this script, pass self as the activating ref activate(self) endif endif endEvent endState bool Function IsPlayerAlly(Actor actorRef) ;Short-circuit this if this isn't an Actor at all, or if it's hostile to the player. if (actorRef == None || actorRef.GetFactionReaction(PlayerRef) == 1) return False EndIf ;Is this a summon or one of the various types of player followers? If actorRef.IsCommandedActor() || (actorRef.GetRelationshipRank(PlayerRef) > 0) || (CurrentFollowerFaction && actorRef.IsInFaction(CurrentFollowerFaction)) || actorRef.IsPlayerTeammate() Return True EndIf Package curPackageTemplate = actorRef.GetCurrentPackage().GetTemplate() Return ((curPackageTemplate == Follow) || (curPackageTemplate == FollowerPackageTemplate)) EndFunction ;************************************ State allDone ;do nothing endState ;************************************ NorSarcophagusTopAnim01: scriptName NorSarcophagusTopAnim01SCRIPT extends ObjectReference {This script causes the sarcophagus lid to animate when activated} import debug import utility ;bool onLoadDone ;bool onResetDone bool isOpened = false ;******************************************* Event onReset() onLoad() endEvent ;******************************************* Event onLoad() if(!isOpened) playAnimation("SnapClosed") endif endEvent ;******************************************* Auto State waiting Event onActivate (objectReference triggerRef) gotoState ("busy") isOpened = true playAnimation("OpenStart") endEvent endState ;******************************************* State busy Event onActivate (objectReference triggerRef) ;do nothing endEvent endState ;******************************************* Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 I think I simply resign... I've downloaded the original german version again and plan to do all over...- Cleaning all dirty edits- Removing unused master (it has Update.esm as master oO)- Cleaning unused properties- Adding my enhancements Yet it will be the very, very last time I put hands onto the mod of someone else for maintenance.Especially in this garbage engine that comes up with totally stupid issues that barely make any sense.I mean, it worked before. I have a video record of my initial enhanced version! @ maxarturoThank you very much for your response, but I think this will be the cleanest way to do it.I really don't know where to start on this one.I just know that I had this issue initially too and it somehow got fixed by me actually doing nothing except cleaning out dirty edits.As I haven't touched the ESP recently, I am unsure of what could cause it (as I either was initially XD).So my best bet would be to completely redo the whole enhancement. Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 Alright... I just played til the point where these Draugr are and it still doesn't work with the original version either.WTF? I really would like to know what kind of magic I did when I recorded the whole quest.Yet I am not about to continue breaking my head on this. It just would make me crazy. XD Link to comment Share on other sites More sharing options...
SurfsideNaturals Posted February 8, 2020 Share Posted February 8, 2020 This could be a gamesave issue. When you work in a cell, always make sure to test it in COC. Use Console Command to Enter the Cell and then test it. If that is not the problem, then I am sure maxarturo will be able to help you once he has all in information he needs to do so. Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 Hey thanks for your kind response. :smile: Unfortunately, it seems not to be a savegame issue.I always start this quest mod from a savegame where it wasn't loaded yet. I COC myself to the startpoint, talk with Tommy and then continue on it.With console-"kill" I mow myself through and it just takes me around 5 minutes to get to this location.Still with the same outcome. :sad: I recently added a new coffin with the furniture coffin marker and the thing on top and a new unique triggerbox somewhere else in that room. Then I linked these.Still same outcome.I'll try a bit around, but either hope for another response from him. :wink: Cheers In addition:It gets weirder (Imagelink). So the Draugrs that come from the mod have issues with activation, while the Draugr from base game Enderal works properly with the same setup. oOGonna check the Actors now... Another addition:I just added the working Draugr base form from the base game as dirty record (not a single change as checked in Enderal Edit) to the mod and now that one doesn't work either anymore. :O Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 If that is not the problem, then I am sure maxarturo will be able to help you once he has all in information he needs to do so.Hey, guess in my haste I overlooked that it obviously was a savegame issue with the original german version.As I have installed it again now with all loose files and it works. oO That said, the version on Nexus appears to be actually newer than the one I initially used from Steam. oO In the end of the day, I guess I really have to start fresh and make one step after another.At first trying to get that "Update.esm" master out then cleaning stuff further. It's still a weird ghost issue. :O Link to comment Share on other sites More sharing options...
maxarturo Posted February 8, 2020 Share Posted February 8, 2020 Just because is the same mod but in different language does not make it the same mod, it is a completely different esp. Example: In my "XamMaximus Secret Act I" mod while i was testing the other esps that where in different languages i used in all the same save file that was made just after the first installation of the mod, so i wrongly assumed it will worked just fine for all esps, but... In every testing of the different esps i runned into some really weird issues with the most common among them being that the "Optimization" didn't work correctly, portals will flicker, meshes would disappear and then reappear... and some other issues... When a i made for every single language a separate installation and a save file for that esp, everything worked flawlessly !. As SurfsideNaturals already pointed out, when you need to test simple things, "coc" from your launch "Main Menu" and do not use an existing save file. If you need to do more specific testings where the cell needs to load properly, you can do the following, (this a practice that i do, since going in game to test each cell would take too much time, they are all scattered around in all the game + dlcs ). Create a utility cell ( in which you will COC ) and place a 'load door' that each time you need to test something and especially heavy scripts, AI Packages... anything that needs a properly loaded cell, you will connect it to that cell through "Load Doors" ( that you will delete once you are done ). This also applies for testings that requires a save file. - Install mod. - coc to Utility Cell. - Make the save that has your freshly installed mod in your "Utility Cell". - Do all your testings from that 'save file' and beyond. If changes are done to the esp, re do the procedure. I hope that this covers some of the ghost issues... Link to comment Share on other sites More sharing options...
JustChill Posted February 8, 2020 Author Share Posted February 8, 2020 Hey, thank you very much for the advices. :smile: I made the english version myself, so it seems there was some sort of hickup in the ESP.The problem is, one of the developers of Enderal manages the german version of this mod and used my enhancements either for the german version on Steam.So that one is yet broken too. oO I started to enhance the german Steam version initially. It had a few issues, including the one where Tommy didn't want to teleport to the camp. Yet as I forgot to include the voice files into the BSA I repacked it including a new fix for the teleporting orbs which produce a weird issue when the button for camera switching is pressed during the animation.It seems there got some issue saved into the ESP which actively broke the MasterAmbushScript for instances that come from this mod. I made a dirty edit out of one Draugr of the base game and suddenly that one didn't work either anymore, as it got touched by the broken ESP. After restarting with the german version from Nexus, everything works fine. Even better as Tommy does teleport to the camp in this one. So the workaround I had to make for the Steam version wasn't necessary. :DI've currently cleaned the mod and removed the unnecessary master "Update.esm" with Enderal Edit.Now I am looking forward to implement the other enhancements and if everything works again, I call it a day. ^^ Even though it's still disturbing that I had to do that mod two times. But the initial german Steam version had some actual issues compared to the german version of Nexus, so it might be good to use that one as base.But at least I can transfer the working stuff from my older version. Should just take me til tomorrow to get everything working again.Hopefully that weird issue doesn't come back on that fresh one, but I will keep backups of working versions. :smile: Link to comment Share on other sites More sharing options...
Recommended Posts