Jump to content

Braith wants me to adopt her? what!?


ArabWarFighter

Recommended Posts

  • Replies 51
  • Created
  • Last Reply

Top Posters In This Topic

the game is using separate system to check for the "orphanable/adoptable" status for children... so it could happen, that even if her parents are alive, she still could be (due to bug) adopted or transferred to orphanage... I could explain how exactly this system works and even add few ways how to fix it only by using some console commands, but only if you'll be interested, it's quite complicated.. :wink:)

 

I hope you haven't vanished because I've just hit the same issue. :(

Link to comment
Share on other sites

Okay, some followup notes:

 

1. I can get Braith's normal dialogue back by removing her from BYOHRelationshipAdoptableFaction.

2. She's registered under the alias Orphan01 for the quest BYOHRelationshipAdoptableOrphanage.

3. Forcibly removing the reference via

SetConsoleScopeQuest BYOHRelationshipAdoptableOrphanage
EmptyRefAlias Orphan01

will bring her back to Whiterun and appears to restore at least some of her normal routine; she'll wander around the Whiterun market and go to sleep in the family house.

4. However this is a temporary fix; she will be re-added (reliably triggered by waiting 1h) to BYOHRelationshipAdoptableFaction and after that (reliably triggered by waiting for an extended period) be re-registered under the alias Orphan01.

5. Reseting the quest BYOHRelationshipAdoptableOrphanage clears all the aliases and disables the quest. However, the alias Orphan1 still gets refilled, though none of the original orphanage aliases (Hroar, etc) are.

6. So far I have not found a way to make the various Braith interactions (with Lars and her parents) restart. sqv tells me the quests for them are disabled and stopped, even after using startquest on them.

7. Likewise, sqv tells me that startquest will not reactivate BYOHRelationshipAdoptableOrphanage.

 

Right now I'm kind of stuck.

 

I need to find out a. why the alias keeps being refilled, b. why the faction keeps getting added, and c. why those quests will not start.

Edited by foamyesque
Link to comment
Share on other sites

Her father was killed yesterday by bandits that invaded Whiterun. Now just her mother needs to die. Then she will be in proper context.

 

I respect post-hoc solutions, but I'd really rather try to actually fix the root issue.:p

 

(Among other things, Braith isn't the only one this has happened to in my game and murdering dozens of parents is not something I want to do :( )

Link to comment
Share on other sites

Okay, some followup notes:

 

1. I can get Braith's normal dialogue back by removing her from BYOHRelationshipAdoptableFaction.

2. She's registered under the alias Orphan01 for the quest BYOHRelationshipAdoptableOrphanage.

3. Forcibly removing the reference via

SetConsoleScopeQuest BYOHRelationshipAdoptableOrphanage
EmptyRefAlias Orphan01

will bring her back to Whiterun and appears to restore at least some of her normal routine; she'll wander around the Whiterun market and go to sleep in the family house.

4. However this is a temporary fix; she will be re-added (reliably triggered by waiting 1h) to BYOHRelationshipAdoptableFaction and after that (reliably triggered by waiting for an extended period) be re-registered under the alias Orphan01.

5. Reseting the quest BYOHRelationshipAdoptableOrphanage clears all the aliases and disables the quest. However, the alias Orphan1 still gets refilled, though none of the original orphanage aliases (Hroar, etc) are.

6. So far I have not found a way to make the various Braith interactions (with Lars and her parents) restart. sqv tells me the quests for them are disabled and stopped, even after using startquest on them.

7. Likewise, sqv tells me that startquest will not reactivate BYOHRelationshipAdoptableOrphanage.

 

Right now I'm kind of stuck.

 

I need to find out a. why the alias keeps being refilled, b. why the faction keeps getting added, and c. why those quests will not start.

 

first of all..

 

try to use these console commands (with Braith selected) to check if at least one the responsible NPCs for the child is stil alive:

 

"GetLinkedRef LinkCustom01" (= father)

"GetLinkedRef LinkCustom02" (= mother)

"GetLinkedRef LinkCustom03" (= guardian01)

"GetLinkedRef LinkCustom04" (= guardian02)

 

=> it returns the refID of linked NPC responsible for the child or "none" for children not included in the list of orphanable children below*

 

*Orphanable children (by default):

 

Braith (0001A66B)

Britte (0001A6AC)

ClintonLylvieve (00019A2D)

Dorthe (00013484)

Eirid (0001C18F)

Erith (000199B4)

Frodnar (0001348B)

Gralnach (00019E10)

Hrefna (0001B08F)

Knud (000198DB)

MinetteVinius (000198A4)

Sissel (0001A6AE)

Skuli (000199D0)

Svari (0001A636)

Aeta (00004291) Dragonborn

 

=> to check whether the NPC is dead use command "prid refID" and then "getdead" ( returns 1 if the object reference is dead)

 

=> if is at least one of these linked NPCs still alive (but not resurected with console command!) and the child is in orphanage or the adoption dialogue is available, then it is most likely bug...

 

... unfortunately is impossible get the child back from orphanage only by using console commands... to fix this problem I was forced to slightly edit two scripts and create a scripted spell that removes the child from the orphanage (optionally is possible to set the child as completely "unorphanable" with console command "AddFac 05004290 51").

 

I could create a small mod including these few fixes and upload it here on Nexus... I just need some time to make it work as standalone mod, because now it exists only as a part of my "WIP" mod files...

 

... in the meantime you can check those changed scripts:

 

BYOHRelationshipAdoptableScript.psc - added lines are marked as green

Scriptname BYOHRelationshipAdoptableScript extends Quest Conditional

{Quest Script for BYOHRelationshipAdoptable.}

 

;This script is responsible for:

; - Managing all of the dialogue, behaviors, events, and subquests related to adopting children.

; - Handing off newly-adopted children to RelationshipAdoption, which takes them from there.

; - Tracking and validating which houses and children's bedrooms the player owns (in conjunction with the HousePurchase quest).

 

;----------------------------------------------------------------------------------------------------

;PROPERTIES & VARIABLES

;-------------------------------------

;Track whether the player owns a house their spouse could live in.

;For the BYOH houses, this represents both owning the house and having some basic furniture built for it.

bool property BYOHAdoption_PlayerOwnsAnyHouse = False auto conditional

bool property BYOHAdoption_PlayerOwns_BYOHFalkreath = False auto conditional

bool property BYOHAdoption_PlayerOwns_BYOHHjaalmarch = False auto conditional

bool property BYOHAdoption_PlayerOwns_BYOHPale = False auto conditional

 

;Track which houses have children's bedrooms.

bool property BYOHAdoption_HasChildBedroom_Any = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Multiple = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Solitude = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Windhelm = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Markarth = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Riften = False auto conditional

bool property BYOHAdoption_HasChildBedroom_Whiterun = False auto conditional

bool property BYOHAdoption_HasChildBedroom_BYOHFalkreath = False auto conditional

bool property BYOHAdoption_HasChildBedroom_BYOHHjaalmarch = False auto conditional

bool property BYOHAdoption_HasChildBedroom_BYOHPale = False auto conditional

 

;Enable markers for the children's bedrooms.

ObjectReference property BYOHAdoption_ChildBedroomMarker_Solitude auto

ObjectReference property BYOHAdoption_ChildBedroomMarker_Windhelm auto

ObjectReference property BYOHAdoption_ChildBedroomMarker_Markarth auto

ObjectReference property BYOHAdoption_ChildBedroomMarker_Riften auto

ObjectReference property BYOHAdoption_ChildBedroomMarker_Whiterun auto

 

;The DLC01 House quests.

Quest property BYOHHouseFalkreath Auto

Quest property BYOHHouseHjaalmarch Auto

Quest property BYOHHousePale Auto

 

;Main Courier Quest

Quest property CourierQuest Auto

 

;Orphanage Courier event and related variables.

Quest property DB02 Auto

Quest property WICourier Auto

Book property BYOHAdoptionConstanceLetter Auto

bool orphanageCourierHasTriggered

 

;Steward's Courier event and related variables.

Keyword property BYOHAdoptionStewardCourierEvent Auto

Quest property BYOHRelationshipAdoptableStewardCourier Auto

Location property SolitudeLocation Auto

Location property WindhelmLocation Auto

Location property MarkarthLocation Auto

Location property RiftenLocation Auto

Location property WhiterunLocation Auto

 

;Orphanable Children and related variables.

Faction property BYOHRelationshipAdoptableFaction Auto

Faction property BYOHRelationshipAdoptionFaction Auto

Quest property BYOHRelationshipAdoptableUrchins Auto

Keyword property LinkCustom01 Auto ;Link to the child's father, if any.

Keyword property LinkCustom02 Auto ;Link to the child's mother, if any.

Keyword property LinkCustom03 Auto ;Link to the child's guardian, if any.

Keyword property LinkCustom04 Auto ;Link to the child's guardian, if any.

 

;Orphanage Adoption quest and related variables.

ObjectReference property ConstanceMichelRef Auto

Quest property BYOHRelationshipAdoptableOrphanage Auto

 

;Other Quests

Quest property HousePurchase Auto

Quest property RelationshipMarriageFIN Auto

Quest property WIKill05 Auto

 

 

;DLC Initialization Objects - Objects that need to be pushed into base-game objects and formlists.

;Note that objects that need to be pushed to or from BYOH lists are handled on BYOHHouseBuildingScript

;to avoid duplicating cross-DLC functionality any more than necessary.

Weapon property BYOHWoodenSword Auto

MiscObject property BYOHChildrensDoll Auto

MiscObject property ClothesChild01Female Auto

MiscObject property ClothesChild01Male Auto

MiscObject property ClothesChild02Female Auto

MiscObject property ClothesChild02Male Auto

MiscObject property ClothesChild03Female Auto

MiscObject property ClothesChild03Male Auto

MiscObject property ClothesChild04Female Auto

MiscObject property ClothesChild04Male Auto

MiscObject property ClothesChild05Female Auto

MiscObject property ClothesChild05Male Auto

LeveledItem property BYOHRelationshipAdoptionLItemChildrensClothes01 Auto

LeveledItem property BYOHRelationshipAdoptionLItemChildrensClothes02 Auto

LeveledItem property BYOHRelationshipAdoptionLItemChildrensClothes03 Auto

LeveledItem property BYOHRelationshipAdoptionLItemChildrensClothes04 Auto

LeveledItem property BYOHRelationshipAdoptionLItemChildrensClothes05 Auto

 

LeveledItem property LItemClothesAll Auto

LeveledItem property LItemMiscVendorMiscItems75 Auto

 

 

;----------------------------------------------------------------------------------------------------

;ADOPTION STARTUP SCRIPT

;-----------------------

 

;This function should run when the DLC first starts, or at game start, to fixup the system for Adoption.

Function BYOHAdoptionStartup()

;Update LeveledItem and Formlists from the base game.

UpdateBaseGameLists()

 

;Update enable markers in player houses.

(HousePurchase as BYOHRelationshipAdoptionHousePurchase).BYOHRelationshipAdoptionHousePurchaseSTARTUP()

 

;Update this script's records of which houses and bedrooms have been purchased.

Self.UpdateHouseStatus()

 

;Trigger the Steward's Courier event if applicable.

Self.TriggerStewardCourierEvent()

 

;Start the update loop, which:

; - Checks all of the Orphanable children to see if they've been orphaned.

; - Triggers the Orphanage Courier event if applicable.

Self.OnUpdateGameTime()

 

;Begin tracking the spouse's location.

if (RelationshipMarriageFIN.IsRunning())

(RelationshipMarriageFIN as RelationshipMarriageSpouseHouseScript).UpdateSpouseHouseInt()

EndIf

EndFunction

 

 

;Update LeveledItem and Formlist lists from the base game to contain Adoption-related content.

Function UpdateBaseGameLists()

;Khajiit Caravans: Sell all toys, chance of clothes. Added to their chests in the ESM, since we can't update containers via script.

;Radiant Raiment: Sell all children's clothes. Add the clothes to LItemClothesAll, since Raiment is the only user of this list.

LItemClothesAll.AddForm(ClothesChild01Female, 1, 1)

LItemClothesAll.AddForm(ClothesChild01Male, 1, 1)

LItemClothesAll.AddForm(ClothesChild02Female, 1, 1)

LItemClothesAll.AddForm(ClothesChild02Male, 1, 1)

LItemClothesAll.AddForm(ClothesChild03Female, 1, 1)

LItemClothesAll.AddForm(ClothesChild03Male, 1, 1)

LItemClothesAll.AddForm(ClothesChild04Female, 1, 1)

LItemClothesAll.AddForm(ClothesChild04Male, 1, 1)

LItemClothesAll.AddForm(ClothesChild05Female, 1, 1)

LItemClothesAll.AddForm(ClothesChild05Male, 1, 1)

;Misc Merchants/Loot: Add wooden sword, doll, clothes sublists to LItemMiscVendorMiscItems75 to ensure a chance of them at other merchants.

LItemMiscVendorMiscItems75.AddForm(BYOHWoodenSword, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHChildrensDoll, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHWoodenSword, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHChildrensDoll, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHRelationshipAdoptionLItemChildrensClothes01, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHRelationshipAdoptionLItemChildrensClothes02, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHRelationshipAdoptionLItemChildrensClothes03, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHRelationshipAdoptionLItemChildrensClothes04, 1, 1)

LItemMiscVendorMiscItems75.AddForm(BYOHRelationshipAdoptionLItemChildrensClothes05, 1, 1)

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;HOUSE PURCHASE TRACKING

;-----------------------

 

;Update house tracking variables whenver something significant happens to a player house.

Function UpdateHouseStatus()

;Do we know the player owns a house at all? If not, check.

if (!BYOHAdoption_PlayerOwnsAnyHouse)

if (((HousePurchase as HousePurchaseScript).SolitudeHouseVar >= 1) \

|| ((HousePurchase as HousePurchaseScript).WindhelmHouseVar >= 1) \

|| ((HousePurchase as HousePurchaseScript).MarkarthHouseVar >= 1) \

|| ((HousePurchase as HousePurchaseScript).RiftenHouseVar >= 1) \

|| ((HousePurchase as HousePurchaseScript).WhiterunHouseVar >= 1) \

|| ((BYOHHouseFalkreath as BYOHHouseScript).bAllowSpouse) \

|| ((BYOHHouseHjaalmarch as BYOHHouseScript).bAllowSpouse) \

|| ((BYOHHousePale as BYOHHouseScript).bAllowSpouse))

BYOHAdoption_PlayerOwnsAnyHouse = True

EndIf

EndIf

 

 

;For the BYOH Houses, has the player built the basic house and a bed for their spouse?

;The name is a bit misleading, since bAllowSpouse can be false (because you haven't built a bed) while bAllowChildren is true.

if ((BYOHHouseFalkreath as BYOHHouseScript).bAllowSpouse)

BYOHAdoption_PlayerOwns_BYOHFalkreath = True

EndIf

if ((BYOHHouseHjaalmarch as BYOHHouseScript).bAllowSpouse)

BYOHAdoption_PlayerOwns_BYOHHjaalmarch = True

EndIf

if ((BYOHHousePale as BYOHHouseScript).bAllowSpouse)

BYOHAdoption_PlayerOwns_BYOHPale = True

EndIf

 

 

;Next, check to see if the player owns any children's bedrooms.

int childBedroomCount = 0

 

;Standard houses.

if (!BYOHAdoption_ChildBedroomMarker_Solitude.IsDisabled())

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_Solitude = True

Else

BYOHAdoption_HasChildBedroom_Solitude = False

EndIf

if (!BYOHAdoption_ChildBedroomMarker_Windhelm.IsDisabled())

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_Windhelm = True

Else

BYOHAdoption_HasChildBedroom_Windhelm = False

EndIf

if (!BYOHAdoption_ChildBedroomMarker_Markarth.IsDisabled())

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_Markarth = True

Else

BYOHAdoption_HasChildBedroom_Markarth = False

EndIf

if (!BYOHAdoption_ChildBedroomMarker_Riften.IsDisabled())

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_Riften = True

Else

BYOHAdoption_HasChildBedroom_Riften = False

EndIf

if (!BYOHAdoption_ChildBedroomMarker_Whiterun.IsDisabled())

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_Whiterun = True

Else

BYOHAdoption_HasChildBedroom_Whiterun = False

EndIf

 

;BYOH Houses

if ((BYOHHouseFalkreath as BYOHHouseScript).bAllowChildren)

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_BYOHFalkreath = True

Else

BYOHAdoption_HasChildBedroom_BYOHFalkreath = False

EndIf

if ((BYOHHouseHjaalmarch as BYOHHouseScript).bAllowChildren)

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_BYOHHjaalmarch = True

Else

BYOHAdoption_HasChildBedroom_BYOHHjaalmarch = False

EndIf

if ((BYOHHousePale as BYOHHouseScript).bAllowChildren)

childBedroomCount = childBedroomCount + 1

BYOHAdoption_HasChildBedroom_BYOHPale = True

Else

BYOHAdoption_HasChildBedroom_BYOHPale = False

EndIf

 

 

;Then update the 'Any' and 'Multiple' variables.

if (childBedroomCount == 0)

BYOHAdoption_HasChildBedroom_Any = False

BYOHAdoption_HasChildBedroom_Multiple = False

ElseIf (childBedroomCount == 1)

BYOHAdoption_HasChildBedroom_Any = True

BYOHAdoption_HasChildBedroom_Multiple = False

Else

BYOHAdoption_HasChildBedroom_Any = True

BYOHAdoption_HasChildBedroom_Multiple = True

EndIf

EndFunction

 

;When a move is triggered, confirm that the player's family can actually be moved to that location. If not, select the best alternative.

;Used to handle edge cases, such as choosing a destination with Constance, then selling the child's bedroom there, THEN going through with the adoption.

int Function ValidateMoveDestination(int destination, int secondary)

int tertiary = 0

if (BYOHAdoption_HasChildBedroom_Solitude)

if (destination == 1)

return destination

ElseIf (tertiary == 0)

tertiary = 1

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_Windhelm)

if (destination == 2)

return destination

ElseIf (tertiary == 0)

tertiary = 2

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_Markarth)

if (destination == 3)

return destination

ElseIf (tertiary == 0)

tertiary = 3

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_Riften)

if (destination == 4)

return destination

ElseIf (tertiary == 0)

tertiary = 4

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_Whiterun)

if (destination == 5)

return destination

ElseIf (tertiary == 0)

tertiary = 5

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_BYOHFalkreath)

if (destination == 6)

return destination

ElseIf (tertiary == 0)

tertiary = 6

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_BYOHHjaalmarch)

if (destination == 7)

return destination

ElseIf (tertiary == 0)

tertiary = 7

EndIf

EndIf

if (BYOHAdoption_HasChildBedroom_BYOHPale)

if (destination == :cool:

return destination

ElseIf (tertiary == 0)

tertiary = 8

EndIf

EndIf

 

if (secondary > 0)

return secondary

EndIf

 

return tertiary

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;COURIER EVENTS

;--------------

 

;Handle Steward's Courier Event.

;Occurs only on DLC Start, to notify the player of Child Bedroom availability.

Function TriggerStewardCourierEvent()

if (BYOHAdoption_PlayerOwnsAnyHouse)

Location homeCityLoc

if ((HousePurchase as HousePurchaseScript).WhiterunHouseVar >= 1)

homeCityLoc = WhiterunLocation

ElseIf ((HousePurchase as HousePurchaseScript).SolitudeHouseVar >= 1)

homeCityLoc = SolitudeLocation

ElseIf ((HousePurchase as HousePurchaseScript).WindhelmHouseVar >= 1)

homeCityLoc = WindhelmLocation

ElseIf ((HousePurchase as HousePurchaseScript).MarkarthHouseVar >= 1)

homeCityLoc = MarkarthLocation

Else ;Riften

homeCityLoc = RiftenLocation

EndIf

 

;Trigger the event.

;Debug.Trace("Starting the Steward's Courier for: " + homeCityLoc)

BYOHAdoptionStewardCourierEvent.SendStoryEvent(homeCityLoc)

EndIf

EndFunction

 

;Handle Orphanage Courier Event.

;Occurs once the player has escaped from the shack in DB02, or at DLC start if that has already happened.

Function TriggerOrphanageCourierEvent()

;Debug.Trace("Orphanage Courier Update.")

if (DB02.GetStage() >= 40 && !(ConstanceMichelRef as Actor).IsDead())

orphanageCourierHasTriggered = True

(WICourier as WICourierScript).AddItemToContainer(BYOHAdoptionConstanceLetter)

EndIf

EndFunction

 

;Manage the 'Adopt Children from the Orphanage' Misc Objective.

; [1] Show the Orphanage Objective when the player reads the courier's letter.

; [2] Complete it when the player completes Constance's questionnaire.

; [3] Hide it quietly when Constance dies or when the player adopts two children from other sources.

Function ShowOrphanageObjective(int objState)

;Debug.Trace("ShowOrphanageObjective: " + objState + ", " + IsObjectiveDisplayed(10))

if (objState == 1) ;Try to display the objective.

if (!GetStageDone(255) && !(ConstanceMichelRef as Actor).IsDead() && BYOHRelationshipAdoptableOrphanage.GetStage() < 100)

;If we can still adopt kids, and Constance is alive, and the player hasn't completed her questionnaire, allow the objective.

SetObjectiveDisplayed(10)

EndIf

ElseIf (objState == 2)

if (IsObjectiveDisplayed(10))

;Complete it when the player adopts a child.

SetObjectiveCompleted(10)

EndIf

Else

;Otherwise, hide it quietly.

SetObjectiveDisplayed(10, False, False)

EndIf

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;ORPHANABLE CHILDREN EVENTS

;--------------------------

 

;Adoptable's update loop:

; - Triggers the Orphanage Courier event if applicable.

; - Checks all of the Orphanable children to see if they've been orphaned.

Event OnUpdateGameTime()

;Debug.Trace("Adoptable Update Loop")

if ((Self as Quest).GetStage() < 255)

;If the Orphanage Courier event hasn't triggered yet, test it again.

if (!orphanageCourierHasTriggered)

TriggerOrphanageCourierEvent()

EndIf

 

;Check for orphaned children and update their status.

UpdateOrphanablesStatus()

 

;Schedule a new update in 24h.

;Debug.Trace("Rescheduling Adoptable Update Loop")

RegisterForSingleUpdateGameTime(1)

EndIf

EndEvent

 

;On DLC Start, and once every 24h, check to see whether each Orphanable Child has been orphaned.

Function UpdateOrphanablesStatus()

;This function runs only if the player has not already adopted two children. Once they do, everything reverts to the base game behavior.

if (Self.GetStage() == 0)

Actor child

ObjectReference father

ObjectReference mother

ObjectReference guardian01

ObjectReference guardian02

int i = 0

Debug.Trace("Updating Orphanables Status: ------------------------")

While (i < ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren.Length)

child = ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren

 

if (child != None)

;Is the child an orphan? If they haven't been orphaned before, check to see if they're an orphan now.

if (child.GetFactionRank(BYOHRelationshipAdoptableFaction) < 0)

;Debug.Trace("Updating Orphanables Status for " + child)

 

;Identify the NPCs responsible for the child.

father = child.GetLinkedRef(LinkCustom01)

mother = child.GetLinkedRef(LinkCustom02)

guardian01 = child.GetLinkedRef(LinkCustom03)

guardian02 = child.GetLinkedRef(LinkCustom04)

 

;Determine whether the child has been orphaned.

if ((father == None || (father as Actor).IsDead() || (father as Actor).IsCommandedActor()) && \

(mother == None || (mother as Actor).IsDead() || (mother as Actor).IsCommandedActor()) && \

(guardian01 == None || (guardian01 as Actor).IsDead() || (guardian01 as Actor).IsCommandedActor()) && \

(guardian02 == None || (guardian02 as Actor).IsDead() || (guardian02 as Actor).IsCommandedActor()))

 

;If all of these tests pass, the child has been orphaned.

Debug.Trace(child + " has been orphaned.")

 

;Push the child into the Adoptable faction and update its rank. This enables the orphan dialogue.

if (!child.IsInFaction(BYOHRelationshipAdoptableFaction))

child.AddToFaction(BYOHRelationshipAdoptableFaction)

EndIf

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 0)

 

;Reset RelationshipRank to avoid awkward "I Hate You" dialogue.

child.SetRelationshipRank(Game.GetPlayer(), 0)

 

;Set Variable06 to identify which lines they should use.

if (father == None && mother == None)

child.SetAV("Variable06", 1)

ElseIf (mother == None)

child.SetAV("Variable06", 2)

ElseIf (father == None)

child.SetAV("Variable06", 3)

Else

child.SetAV("Variable06", 1)

EndIf

EndIf

EndIf

 

;If the child is an orphan, try to transfer them to the Orphanage.

if (child.GetFactionRank(BYOHRelationshipAdoptableFaction) >= 0 && child.GetFactionRank(BYOHRelationshipAdoptableFaction) < 50)

Debug.Trace("Requesting transfer for " + child)

RequestOrphanageTransfer(child)

EndIf

Else

;If the next item in the list is a 'None', bail out.

i = ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren.Length

Debug.Trace("-------------------")

EndIf

i = i + 1

EndWhile

EndIf

EndFunction

 

 

;Once the player adopts two children, disable further adoptions from any source.

Function DisableNewAdoptions()

;This quest manages the Orphanable Children directly.

;Debug.Trace("Disable Orphanable Adoptions.")

Actor child

int i = 0

While (i < ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren.Length)

child = ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren

if (child != None)

;Debug.Trace("Disabling Adoption for " + child)

if (!child.IsInFaction(BYOHRelationshipAdoptionFaction))

child.SetFactionRank(BYOHRelationshipAdoptableFaction, -1)

EndIf

Else

;Bail when we reach a 'None' object in the list.

i = ((Self as Quest) as BYOHRelationshipAdoptableAccessor).OrphanableChildren.Length

EndIf

i = i + 1

EndWhile

 

;Orphanage Orphans delegated to a seperate quest.

;Debug.Trace("Disable Orphanage Adoptions.")

if (BYOHRelationshipAdoptableOrphanage.IsRunning())

(BYOHRelationshipAdoptableOrphanage as BYOHRelationshipAdoptableOrphanageSc).DisableOrphanageAdoptions()

EndIf

ShowOrphanageObjective(3)

 

;Urchin Orphans delegated to a seperate quest.

;Debug.Trace("Disable Urchin Adoptions.")

(BYOHRelationshipAdoptableUrchins as BYOHRelationshipAdoptableUrchinScript).DisableUrchinAdoption()

EndFunction

 

 

;Orphaned children can request a 'transfer' to the Orphanage side of the system.

;Transfers occur only after DB01 has been completed, either in response to that or when the children are tagged as Orphaned.

;Transfer requests are 'approved' if the player is not in the same location, Constance is alive, and fewer than 7 children have been transfered.

;Children transferred to the Orphanage fall under the jurisdiction of the Orphanage system and work like Orphanage Orphans as long as Constance is alive.

Function RequestOrphanageTransfer(Actor child)

;If the Orphanage quest isn't running, we need to start it now.

if (!BYOHRelationshipAdoptableOrphanage.IsRunning())

BYOHRelationshipAdoptableOrphanage.SetStage(0)

EndIf

if (Game.GetPlayer().GetCurrentLocation() != child.GetCurrentLocation() && \

(BYOHRelationshipAdoptableOrphanage as BYOHRelationshipAdoptableOrphanageSc).AcceptingTransfers(child))

Debug.Trace("Transferring " + child + " to the Orphanage.")

;Stop WIKill05 (Run Home & Mourn)

if (WIKill05.IsRunning())

WIKill05.Stop()

EndIf

(BYOHRelationshipAdoptableOrphanage as BYOHRelationshipAdoptableOrphanageSc).TransferOrphan(child)

Else

Debug.Trace("Transfer of " + child + " was rejected.")

EndIf

EndFunction

 

BYOHRelationshipAdoptableOrphanageSc.psc - added lines are marked as green

 

Scriptname BYOHRelationshipAdoptableOrphanageSc extends Quest Conditional

{Quest script for BYOHRelationshipAdoptableOrphanage, which manages adopting children from the Orphanage.}

 

;This script is responsible for:

; - Handling the 'Orphanage Adoption' process, which is largely controlled via Constance's dialogue.

; - Handling the 'Orphanage Fallback Adoption' process. After Constance's death and a brief delay, the children in the Orphanage manage their own adoption.

; - Transferring newly-orphaned children to the Orphanage, with all that entails.

 

;----------------------------------------------------------------------------------------------------

;Properties & Variables

;----------------------

ObjectReference property ConstanceMichelRef Auto ;Constance

 

ObjectReference property FrancoisRef Auto ;Standard Orphanage Children

ObjectReference property RunaRef Auto

ObjectReference property SamuelRef Auto

ObjectReference property HroarRef Auto

 

ReferenceAlias property Orphan01 Auto ;Newly-orphaned children transferred to the Orphanage

ReferenceAlias property Orphan02 Auto

ReferenceAlias property Orphan03 Auto

ReferenceAlias property Orphan04 Auto

ReferenceAlias property Orphan05 Auto

ReferenceAlias property Orphan06 Auto

ReferenceAlias property Orphan07 Auto

 

ObjectReference property HonorhallOrphanageExtraBeds_Enable Auto ;When we transfer new orphans to the Orphanage, swap out these

ObjectReference property HonorhallOrphanageExtraBeds_Disable Auto ; sets of furniture and idle markers.

 

Location property RiftenHonorhallOrphanageLocation Auto ;Orphanage's location.

ObjectReference property BYOHOrphanageMarker Auto ;A marker to move transferred children to.

 

Faction property BYOHRelationshipAdoptableFaction Auto ;Standard Adoptable faction.

Faction property BYOHRelationshipAdoptionFaction Auto ;Standard Adoption faction.

Faction property FavorJobsBeggarFaction Auto ;Beggar faction (which we need to strip from some newly-orphaned children).

 

int property OrphanageFactionRank Auto ;The current faction rank most of the Orphanage children are in.

int property OrphanageHouseLoc Auto ;The current house most of the Orphanage children will be directed to.

 

Quest property BYOHRelationshipAdoptable Auto ;Main Adoptable quest.

Quest property DB01 Auto

 

;Fix 19-10-2014

Quest Property BYOHRelationshipAdoption Auto

 

 

;----------------------------------------------------------------------------------------------------

;Initial Setup

;-------------

 

;On quest start:

; - If Constance is killed before the quest runs, enable Fallback Adoptions immediately.

; - Force the furniture XMarkers to their default state for safety.

Function QuestStarted()

if ((ConstanceMichelRef as Actor).IsDead() && DB01.IsCompleted())

EnableOrphanedOrphanageAdoptions()

EndIf

HonorhallOrphanageExtraBeds_Enable.Disable()

HonorhallOrphanageExtraBeds_Disable.Enable()

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;Orphanage Transfer System

;-------------------------

 

;Are we accepting new orphans at this time? Lots of checks...

; Is Constance Alive? Is the player in the Orphanage (which prevents us from warping kids in)? Is DB01 done? Do we have space available?

bool Function AcceptingTransfers(Actor child)

return (!(ConstanceMichelRef as Actor).IsDead()) && (Game.GetPlayer().GetCurrentLocation() != RiftenHonorhallOrphanageLocation) && \

(DB01.IsCompleted()) && (Orphan07.GetActorRef() == None) && (Orphan01.GetActorRef() != child) && \

(Orphan02.GetActorRef() != child) && (Orphan03.GetActorRef() != child) && (Orphan04.GetActorRef() != child) && \

(Orphan05.GetActorRef() != child) && (Orphan06.GetActorRef() != child) && (Orphan07.GetActorRef() != child)

EndFunction

 

 

;Transfer an orphaned child into the Orphanage.

Function TransferOrphan(Actor child)

;Push the orphan into one of the Orphanage aliases.

if (Orphan01.GetActorRef() == None)

Orphan01.ForceRefTo(child)

ElseIf (Orphan02.GetActorRef() == None)

Orphan02.ForceRefTo(child)

ElseIf (Orphan03.GetActorRef() == None)

Orphan03.ForceRefTo(child)

ElseIf (Orphan04.GetActorRef() == None)

Orphan04.ForceRefTo(child)

ElseIf (Orphan05.GetActorRef() == None)

Orphan05.ForceRefTo(child)

ElseIf (Orphan06.GetActorRef() == None)

Orphan06.ForceRefTo(child)

Else

Orphan07.ForceRefTo(child)

EndIf

 

;Remove the child from the Beggar faction if necessary.

;Children begging in the Orphanage just sounded strange.

child.RemoveFromFaction(FavorJobsBeggarFaction)

 

;Remove the child from their previous Crime Faction, if any.

child.SetCrimeFaction(None)

 

;Move the orphan into the orphanage and EVP them.

child.MoveTo(BYOHOrphanageMarker)

child.EvaluatePackage()

 

;Set the child's faction rank to reflect the current situation in the Orphanage.

If (OrphanageFactionRank == 10)

;Orphanage state is 'Allow Orphanage Adoptions', so set the corresponding rank.

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

ElseIf (OrphanageFactionRank == 11)

;Orphanage state is 'Allow Fallback Adoptions', so set the corresponding rank.

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Else

;Orphanage state is 'Disable Adoptions', so set the corresponding rank.

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

 

;Set the child's Variable07 to match that of the other children (this represents the location the player told Constance the child will live).

child.SetAV("Variable07", OrphanageHouseLoc)

 

;Swap the furniture and idle marker states.

HonorhallOrphanageExtraBeds_Enable.Enable()

HonorhallOrphanageExtraBeds_Disable.Disable()

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;Orphanage Adoptions via Cosntance

;---------------------------------

 

;Standard Orphanage Adoption is enabled when the player completes Constance's questionnaire.

Function EnableOrphanageAdoptions()

;Debug.Trace("Enabling Orphanage Orphan Adoption")

;Complete the 'Adopt from the Orphanage' objective, if it was running.

(BYOHRelationshipAdoptable as BYOHRelationshipAdoptableScript).ShowOrphanageObjective(2)

 

;Update Faction Rank variable.

OrphanageFactionRank = 10

 

;Update Faction Ranks for the standard children.

if (!(FrancoisRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(FrancoisRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 10)

EndIf

if (!(RunaRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(RunaRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 10)

EndIf

if (!(SamuelRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(SamuelRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 10)

EndIf

if (!(HroarRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(HroarRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 10)

EndIf

 

;Update Faction Ranks for any additional orphans that are present.

if (Orphan01.GetActorRef() != None && !Orphan01.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan01.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan02.GetActorRef() != None && !Orphan02.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan02.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan03.GetActorRef() != None && !Orphan03.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan03.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan04.GetActorRef() != None && !Orphan04.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan04.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan05.GetActorRef() != None && !Orphan05.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan05.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan06.GetActorRef() != None && !Orphan06.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan06.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

if (Orphan07.GetActorRef() != None && !Orphan07.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan07.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 12)

EndIf

EndFunction

 

 

;Standard Orphanage Orphan adoption is disabled once the player has adopted two children, or briefly after Constance is killed (see below).

Function DisableOrphanageAdoptions()

;Debug.Trace("Disabling Orphanage Orphan Adoption")

;Update quest stage (used as a dialogue variable).

Self.SetStage(255)

 

;Update Faction Rank variable.

OrphanageFactionRank = -1

 

;Update Faction Ranks for the standard children.

if (!(FrancoisRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(FrancoisRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, -1)

EndIf

if (!(RunaRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(RunaRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, -1)

EndIf

if (!(SamuelRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(SamuelRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, -1)

EndIf

if (!(HroarRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(HroarRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, -1)

EndIf

 

;Update Faction Ranks for any additional orphans.

if (Orphan01.GetActorRef() != None && !Orphan01.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan01.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan02.GetActorRef() != None && !Orphan02.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan02.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan03.GetActorRef() != None && !Orphan03.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan03.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan04.GetActorRef() != None && !Orphan04.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan04.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan05.GetActorRef() != None && !Orphan05.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan05.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan06.GetActorRef() != None && !Orphan06.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan06.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

if (Orphan07.GetActorRef() != None && !Orphan07.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan07.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 14)

EndIf

EndFunction

 

 

;Given a house location, store it off onto the children in Variable07, where the Adoptable quest expects it per the usual dialogue.

Function StoreHouseLocation(int loc)

;Update House Loc variable.

OrphanageHouseLoc = loc

 

;Update House Locs for the standard children.

if (!(FrancoisRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(FrancoisRef as Actor).SetAV("Variable07", loc)

EndIf

if (!(RunaRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(RunaRef as Actor).SetAV("Variable07", loc)

EndIf

if (!(SamuelRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(SamuelRef as Actor).SetAV("Variable07", loc)

EndIf

if (!(HroarRef as Actor).IsInFaction(BYOHRelationshipAdoptionFaction))

(HroarRef as Actor).SetAV("Variable07", loc)

EndIf

 

;Update House Locs for any additional orphans.

if (Orphan01.GetActorRef() != None && !Orphan01.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan01.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan02.GetActorRef() != None && !Orphan02.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan02.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan03.GetActorRef() != None && !Orphan03.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan03.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan04.GetActorRef() != None && !Orphan04.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan04.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan05.GetActorRef() != None && !Orphan05.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan05.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan06.GetActorRef() != None && !Orphan06.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan06.GetActorRef().SetAV("Variable07", loc)

EndIf

if (Orphan07.GetActorRef() != None && !Orphan07.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan07.GetActorRef().SetAV("Variable07", loc)

EndIf

EndFunction

 

 

;Update the quest stage if the player adopts a child from the Orphanage.

Function CheckAdoptOrphanageChild(ObjectReference child, int childNum)

if (child == FrancoisRef || child == RunaRef || child == SamuelRef || child == HroarRef || \

child == Orphan01.GetActorRef() || child == Orphan02.GetActorRef() || \

child == Orphan03.GetActorRef() || child == Orphan04.GetActorRef() || \

child == Orphan05.GetActorRef() || child == Orphan06.GetActorRef() || \

child == Orphan07.GetActorRef())

if (childNum == 1)

Self.SetStage(200)

Else

Self.SetStage(255)

EndIf

EndIf

EndFunction

 

; Fix 19-10-2014 - custom function to remove transferred Orphan01-07 from Orphanage by using aimed spell (unorphanchild)

Function UnOrphanChild(Actor child)

 

if (child == Orphan01.GetActorRef())

Orphan01.Clear()

ElseIf (child == Orphan02.GetActorRef())

Orphan02.Clear()

ElseIf (child == Orphan03.GetActorRef())

Orphan03.Clear()

ElseIf (child == Orphan04.GetActorRef())

Orphan04.Clear()

ElseIf (child == Orphan05.GetActorRef())

Orphan05.Clear()

ElseIf (child == Orphan06.GetActorRef())

Orphan06.Clear()

ElseIf (child == Orphan07.GetActorRef())

Orphan07.Clear()

EndIf

 

child.RemoveFromFaction(BYOHRelationshipAdoptionFaction)

 

if (child.IsInFaction(BYOHRelationshipAdoptionFaction))

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 25)

else

child.SetFactionRank(BYOHRelationshipAdoptableFaction, 0)

EndIf

 

EndFunction

 

 

;----------------------------------------------------------------------------------------------------

;Handling for Constance's Death

;------------------------------

 

;If Constance is killed, temporarily turn off any adoptions and wait 24h before we decide what to do.

Function ConstanceKilled()

;Debug.Trace("Constance Killed")

;Disable adoptions here.

DisableOrphanageAdoptions()

;Disable the 'Adopt from the Orphanage' objective.

(BYOHRelationshipAdoptable as BYOHRelationshipAdoptableScript).ShowOrphanageObjective(2)

;Wait at least 24h before putting the kids up for adoption again.

RegisterForSingleUpdateGameTime(24)

EndFunction

 

Event OnUpdateGameTime()

;Debug.Trace("Orphanage timer check. Can we enable adoptions?")

if (BYOHRelationshipAdoptable.GetStage() == 0) ;Are we allowing any more adoptions?

if (DB01.IsCompleted()) ;Is Grelod dead, too?

;Debug.Trace("Reenabling Orphanage Adoptions.")

EnableOrphanedOrphanageAdoptions()

Else

;Debug.Trace("DB01 not yet complete. Waiting 24h.")

RegisterForSingleUpdateGameTime(24)

EndIf

EndIf

EndEvent

 

;After Constance's death, get all of the Orphanage Orphans back into a state where they can be adopted.

Function EnableOrphanedOrphanageAdoptions()

;Debug.Trace("Orphanage kids returned to the standard adoption system.")

;Update Faction Rank variable.

OrphanageFactionRank = -1

;Update Faction and Relationship Ranks for the standard children.

if (!(FrancoisRef as Actor).IsInFaction(BYOHRelationshipAdoptableFaction))

(FrancoisRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 11)

(FrancoisRef as Actor).SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (!(RunaRef as Actor).IsInFaction(BYOHRelationshipAdoptableFaction))

(RunaRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 11)

(RunaRef as Actor).SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (!(SamuelRef as Actor).IsInFaction(BYOHRelationshipAdoptableFaction))

(SamuelRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 11)

(SamuelRef as Actor).SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (!(HroarRef as Actor).IsInFaction(BYOHRelationshipAdoptableFaction))

(HroarRef as Actor).SetFactionRank(BYOHRelationshipAdoptableFaction, 11)

(HroarRef as Actor).SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

;Update Faction and Relationship Ranks for any additional orphans.

if (Orphan01.GetActorRef() != None && !Orphan01.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan01.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan01.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan02.GetActorRef() != None && !Orphan02.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan02.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan02.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan03.GetActorRef() != None && !Orphan03.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan03.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan03.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan04.GetActorRef() != None && !Orphan04.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan04.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan04.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan05.GetActorRef() != None && !Orphan05.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan05.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan05.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan06.GetActorRef() != None && !Orphan06.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan06.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan06.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

if (Orphan07.GetActorRef() != None && !Orphan07.GetActorRef().IsInFaction(BYOHRelationshipAdoptionFaction))

Orphan07.GetActorRef().SetFactionRank(BYOHRelationshipAdoptableFaction, 13)

Orphan07.GetActorRef().SetRelationshipRank(Game.GetPlayer(), 0)

EndIf

EndFunction

 

 

UnorphanChild.psc - New added script for spell (need to be finished in CK)

 

Scriptname unorphanchild extends activemagiceffect

 

Quest property BYOHRelationshipAdoptableOrphanage Auto

 

Event OnEffectStart(actor Target, actor Caster)

(BYOHRelationshipAdoptableOrphanage as BYOHRelationshipAdoptableOrphanageSc).UnOrphanChild(Target)

Debug.Notification("Trying to unorphan the target...")

EndEvent

 

Edited by cubedj21
Link to comment
Share on other sites

Awesome, thanks. I'll try it out and see if it works. I know for a fact that their parents are still alive and I'm damn certain I've never needed to resurrect Saffir. :D

 

Let you know how it goes! :smile:

 

Her parents can be still alive, but the linked references of responsible NPCs could be for some reason (civil war, vampire attacks etc.) broken or missing... so rather check them anyway...

 

Let me know if you'll be able to fix that by yourself (edit those scripts and make that "unorphan" spell) or if I rather should prepare these fixes as a mod... ;))

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...