Jump to content

[LE] Debug.Notification with duration ? & actor's combat script's functions help.


maxarturo

Recommended Posts

Hi everyone.


I'm about to finish the last add-on equipment for my mod, i'm working on a unique constructible "Non Follower > Follower", the "Cyborgaumaton Dwarven X-Beyond", and i'm having some troubles to implement some things from my original idea to it's combat script and combat testings + behavior.


I'm hoping that some of the community's experienced modders and scripters can give me some additional inspiration or ideas that i'm lacking due to the heavy workload + the insane amount of work i've done until now to this add-ons, i'm kind of stuck especially with 2 issues...


FIRST ISSUE:

I'm trying to find a way for the 'Debug.Notification' to have some more duration on screen, 1 workaround is to make and add to it's script 'Messages', but it's something i want to avoid, unnecessary lost of precious time.


The reason is:

I need to see / check in real time that all the actor's functions + abilities (and the things that are not visible in-game) are firing when they are supposed to, while at the same time keeping visual track of the actor's behavior 'on combat' and 'not in combat'.

* Some of it visual functions are explained further down.



SECOND ISSUE:

The "Cyborgaumaton X-Beyond" has in the part of the mesh that corresponds to its 'Flesh' part, blue pulsing glowing circuits that simulate the flow of energy.

The droid's circuits when entering combat will change from 'Blue Pulsing' to a steady bright 'Yellow'.


The initial idea was to:

According to the number of enemies that are on a certain radius from it (5120), it will go into 'Overdrive Mode' or 'Overclock Mode' (i don't know which one is the correct terminology, but it's just a detail that needs some dictionary research).

If the number of enemies exceeds a certain predefined amount, it'll then change its appearance to 'Yellow Circuits', plus unlocking some of its destructive abilities.


All the papyrus "FindActor' functions have the drawback that they can find the same actor more than one time, and putting the function on a 'while' loop again is not reliable, plus it can add delay to its initial attack if there is a large number of enemies until the 'while' loop finishes.

* I have a back up idea that i'm developing right now, but it's not that awesome...


THIRD ISSUE:

After the droid has left combat and has returned to its original state (blue circuits), then it'll need to replenish its lost energy.


The initial idea was to:

The first x number of hostile that died in combat it'll absorb the enemies soul to fuel its energy core, but the issue here is how to detect + avoid 'Soul Trapping' the same actor that the player can also be 'Soul Trapping'.

* I have 2 back up ideas, but again they are not that awesome..., and i also have the option to not add at all this function to the droid.


I'm open to any ideas that you may throw at me...


I have some time ahead, since i still need to construct the cells required + puzzle + quest, but all of this won't take more than a week since i have it all ready and fully functional in my head.


Thank you very much for reading all this, and have a nice weekend.

Edited by maxarturo
Link to comment
Share on other sites

You cannot change the time that a notification message displays on screen. That said, it has been my experience that if the same notification message were to be displayed back to back the game would not actually put up a new line of text but appear to extend the display time of the first line of text. Perhaps there is something there that you can fudge with but keep in mind that notification statements do increase processing time and can change the timing of following scripted events.

 

As far as everything else, no idea. Sorry.

Link to comment
Share on other sites

For your second issue, there is a function that Papyrus Extender can help with: https://www.nexusmods.com/skyrim/mods/95017

 

ObjectReference[] Function FindAllReferencesOfFormType(ObjectReference akRef, Int formType, float radius) global native
That function will find all NPC's in a radius around an object reference and put them in an array
So, for example
Event SomeEvent() 
    ObjectReference[] NPCs = PO3_SKSEfunctions.FindAllReferencesOfFormType((self as ObjectReference), 43, 5000)
    Int M = NPCs.Length
    Int Enemies = 0 
    While M > 0 
        M -= 1
        If (NPCs[M] as actor).GetRelationshipRank(Self) < 0
            Enemies += 1
        Endif 
    EndWhile 
    
    If Enemies > SomeNumber 
        ;Do stuff
    Endif 
EndEvent

I haven't tested it, but I think that should work. I assumed you'd be attaching the script to your driod, so I used self in the script.

Link to comment
Share on other sites

Thanks IsharaMeradin and dylbill.


I will implement / experiment with your suggestions this weekend and try to combine them with the whole initial idea, if it's possible for all of them to work together...


Thank again.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...