Jump to content

How to remove/disable/delete a Created to Object Alias


Guerlot

Recommended Posts

Hi guys,

 

I'm currently working on a Bulletin Board in DC (similar to the boards in Witcher 3) and I'm wondering how to do a specific removal of a note.

 

I'm using the same system than the Wanted quests in DC/Dugout Inn which requires to place a Xmarker, create a simple Alias pointing to it And then create a "Created to Object Alias at the Xmarker"

See screenshot:

 

 

0kt1vcm.jpg

 

 

 

In this specific example, If the player hasn't bought Home Plate yet, a Note will appear on the Board mentioning the house is available. If already bought, the note doesn't appear. Easy peazy.

 

What I'm trying to do is: Once the Note has been created at the Xmarker, if the player buys the house WITHOUT reading/taking the note, I want to remove that note and clear that Xmarker (HomePlateMarker) Alias for later use (meaning that I could add a new Note at that Xmarker, later in the game). And this WITHOUT touching the FFDiamondCity02 quest (Vanilla quest linked to Home Plate's purchase)

 

Like maybe a ChangeLocation script. I just don't know how to do it properly.

 

thoughts?

Edited by Guerlot
Link to comment
Share on other sites

You need to call clear() on the reference if the player doesn't read the note. Take this with a grain of salt since I can't actually test this.

 

First you need way of telling the game the note been read or not. So you might need to make a quest to 'monitor' this.

 

quest script example..

 

Scriptname HomeQuestScript extends Quest
 
Bool property bHasBeenRead auto
; leave this empty/do not fill.

For the note, this needs to be placed on the note.

 

Scriptname ScriptNameHere extends ObjectReferece
; might need to extend ReferenceAlias, I\'m not sure.
 
Quest property HomeQuest auto
 
Event OnRead()
    (HomeQuest as HomeQuestScript).bHasBeenRead = true
EndEvent
Some external way of checking if it's been read..

ReferenceAlias property HomePlateNote auto
Quest property HomeQuest auto
 
Function DisableIfNoteUnread()
    if (HomeQuest as HomeQuestScript).bHasBeenRead() == false
        HomePlateNote.Clear()
    endif
EndFunction

There's probably a better alternative, but I can't think of one at this time.

 

Edit: One more thing. You need to check the box called optional. Otherwise the quest will not start, or stop adruptly if it's already running at the time of clearing, AND you wont be able to fill it with a new reference.

Edited by Rasikko
Link to comment
Share on other sites

Thanks Rasikko.

The Clear() command is definitively what I was looking for. I only added HomePlateNote.Clear() in a Stage and doing a manual SetStage in game works just fine.

Now I just need a way to call it in game, somehow. I really don't want to add that fragment in the vanilla quest. I'm thinking of adding a marker inside HomePlate (My mod is already adding a few things in it anyway) point an alias to it and use a OnCellLoad script in it that would call the stage Clearing the alias. The Player would naturally go inside HomePlate right after buying it anyway so it could be a good way to call it. I could even use a TRigger Activator in Home Plate that would be deleted once triggered

 

P.S. I wouldn't need the Unread Bool and scripts. It doesn't matter if the note was not read because once the player buys Home Plate, that note becomes irrelevant, Read or not

Edited by Guerlot
Link to comment
Share on other sites

  • Recently Browsing   0 members

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