robertjanetzko / LegendsBrowser

Legends Browser is an multi-platform, open source, java-based legends viewer for dwarf fortress 0.42.
MIT License
63 stars 19 forks source link

New relationship stuff for .47 #36

Open therahedwig opened 4 years ago

therahedwig commented 4 years ago

This... almost seems like you could make one of those anime relationship charts :D (I am joking, don't feel pressured)

[2020-01-31 20:51:11] WARNING: historical_figure - unknown element: vague_relationship = 5955

Used for the new <childhood_friend/>, <war_buddy />, <religious_persecution_grudge/>, athletic buddy type relationships. sample:

<vague_relationship>
                        <jealous_relationship_grudge/>
                        <hfid>38525</hfid>
                </vague_relationship>
                <vague_relationship>
                        <jealous_obsession/>
                        <hfid>37139</hfid>
                </vague_relationship>

[2020-01-31 20:51:11] WARNING: historical_figure - unknown element: relationship_profile_hf_historical = 50

Very similar to relationship_profile_hf_visual. Sample:

<relationship_profile_hf_visual>
        <hf_id>1399</hf_id>
        <meet_count>0</meet_count>
        <last_meet_year>-1</last_meet_year>
        <last_meet_seconds72>6815848</last_meet_seconds72>
        <love>-25</love>
        <respect>0</respect>
        <trust>0</trust>
        <loyalty>0</loyalty>
        <fear>25</fear>
</relationship_profile_hf_visual>
<relationship_profile_hf_historical>
        <hf_id>1289</hf_id>
        <love>0</love>
        <respect>0</respect>
        <trust>0</trust>
        <loyalty>0</loyalty>
        <fear>0</fear>
</relationship_profile_hf_historical>
McArcady commented 4 years ago

I'm working on this one... Can't promise anything about the chart ;-)

Found these ones so far:

        <athlete_buddy/>
        <childhood_friend/>
        <jealous_obsession/>
        <religious_persecution_grudge/>
        <scholar_buddy/>
        <war_buddy/>

Have you found any other?

McArcady commented 4 years ago

How I extracted all types of 'vague relationships' from my xml export: $ grep -A1 "<vague_relations" region8-*xml |grep -v vague_relations|sort|uniq Don't know if it covers all possible categories...

therahedwig commented 4 years ago

I seem to have a few entries extra when I run that grep on my medium world legends.xml:

<artistic_buddy/>
<atheletic_rival/> <---
<athlete_buddy/>
<business_rival/>  <---
<childhood_friend/>
<grudge/>  <---
<jealous_obsession/>
<jealous_relationship_grudge/>  <---
<persecution_grudge/>  <---
<religious_persecution_grudge/>
<scholar_buddy/>
<war_buddy/>

A part of me wonders if this interrelates with the reputation/relationship stuff (as I know histfigs can consider another hisfig their hero), but it is far too early to science that one out.

McArcady commented 4 years ago

These new kinds of relationships could be added to the "Relationships" section of the historical figure. What would be the most adequate description for each one? I blindly copied the description found in Legends mode, but they are sometimes quite verbose. For instance artistic_buddy is "friends due to a shared artistic interest" ; maybe we could abbreviate with "art friend" ? What do you think ?


    public String getType() {
        if (artisticBuddy)
            return "friends due to a shared artistic interest";
        if (athleticRival)
            return 
        if (athleteBuddy)
            return "friends over a shared love of athletics";
        if (childhoodFriend)
            return "childhood friends";
        if (jealousObsession)
            return "infatuated";
        if (religiousPersecutionGrudge)
            return "deep hatred due to religious persecution";
        if (scholarBuddy)
            return "friends due to a shared scholarly interest";
        if (warBuddy)
            return "cemented a bond of friendship amidst the horror of combat";
therahedwig commented 4 years ago

Yeah, looking at my own set, we have...

x and y developed an athletic rivalry x and y developed a bussiness rivalry x formed a grudge against y x formed a grudge against y over the latter's romantic relationship x held a deep hatred of y due to persecution

I think it's indeed better to simplify to 'art friend', 'athletic rival', 'religious persecution grudge'... though the last one is not much shorted.

McArcady commented 4 years ago

Thanks for the feedback! I propose to formulate like this:

        if (artisticBuddy)
            return "art friend";
        if (athleticRival)
            return "athletic rival";
        if (athleteBuddy)
            return "athletic friend";
        if (businessRival)
            return "business rival";
        if (childhoodFriend)
            return "childhood friend";
        if (grudge)
            return "grudge";
        if (jealousObsession)
            return "infatuated";
        if (jealousRelationshipGrudge)
            return "jealous";
        if (persecutionGrudge)
            return "grudge after persecution";
        if (religiousPersecutionGrudge)
            return "grudge after religious persecution";
        if (scholarBuddy)
            return "scholar friend";
        if (warBuddy)
            return "war friend";
therahedwig commented 4 years ago

Looks good to me!

therahedwig commented 4 years ago

So, relationship_profile_hf_visual and relationship_profile_hf_historical were already in .44, and there they were also joined by one for relationship_profile_hf_identity.

<relationship_profile_hf_visual>
        <hf_id>1509</hf_id>
        <meet_count>33</meet_count>
        <last_meet_year>255</last_meet_year>
        <last_meet_seconds72>188826</last_meet_seconds72>
        <rep_trade_partner>1</rep_trade_partner>
        <rep_friendly>3</rep_friendly>
        <rep_quarreler>2</rep_quarreler>
</relationship_profile_hf_visual>

<relationship_profile_hf_visual>
        <hf_id>6964</hf_id>
        <meet_count>25</meet_count>
        <last_meet_year>-1</last_meet_year>
        <last_meet_seconds72>0</last_meet_seconds72>
        <known_identity_id>2063</known_identity_id>
</relationship_profile_hf_visual>

<relationship_profile_hf_historical>
        <hf_id>23678</hf_id>
        <rep_hero>10</rep_hero>
        <rep_killer>1</rep_killer>
        <rep_bard>62</rep_bard>
</relationship_profile_hf_historical>
        <rep_violent>1</rep_violent>
</relationship_profile_hf_historical>
<relationship_profile_hf_historical>
        <hf_id>21467</hf_id>
        <rep_killer>1</rep_killer>
</relationship_profile_hf_historical>
<relationship_profile_hf_identity>
        <id>1703</id>
        <rep_bard>4</rep_bard>
</relationship_profile_hf_identity>

The thing about the reputation stuff is that from a DF perspective(as evidenced by dfhack), they are the same list between historical figures and entities, so I am not sure how we should tackle them?