Skip to content
This repository has been archived by the owner on Mar 29, 2020. It is now read-only.

Commit

Permalink
Turkish Succession
Browse files Browse the repository at this point in the history
  • Loading branch information
Idhrendur committed May 22, 2012
1 parent 3213813 commit c29ca78
Show file tree
Hide file tree
Showing 5 changed files with 103 additions and 2 deletions.
3 changes: 2 additions & 1 deletion Data Files/Changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,5 @@ Revision Log Message
95 Initial gavelkind implementation
96 Restrict gavelkind heirs to valid children
97 Rename test config file appropriately
98 Update Gavelkind to handle no immediate heirs
98 Update Gavelkind to handle no immediate heirs
99 Turkish Succession
15 changes: 15 additions & 0 deletions Source/CK2World/CK2Character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,21 @@ void CK2Character::addTitle(CK2Title* newTitle)
}


int CK2Character::getDemesneSize()
{
int size = 0;
for (vector<CK2Title*>::iterator i = titles.begin(); i != titles.end(); i++)
{
if ( (*i)->getTitleString().substr(0, 2) == "b_" )
{
size++;
}
}

return size;
}


void CK2Character::setParents(map<int, CK2Character*>& characters)
{
if (fatherNum != -1)
Expand Down
1 change: 1 addition & 0 deletions Source/CK2World/CK2Character.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class CK2Character
CK2Dynasty* getDynasty();
date getBirthDate();
void addTitle(CK2Title*);
int getDemesneSize();
void setParents(map<int, CK2Character*>&);
void setEmployer(map<int, CK2Character*>&, map<string, CK2Barony*>&);
void addChild(CK2Character*);
Expand Down
85 changes: 84 additions & 1 deletion Source/CK2World/CK2Title.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "CK2Title.h"
#include "CK2Dynasty.h"
#include "CK2History.h"
#include "..\Log.h"



Expand Down Expand Up @@ -78,7 +79,7 @@ void CK2Title::init(Object* obj, map<int, CK2Character*>& characters)
}
else if (successionLaw == "turkish_succession")
{
heir = NULL;
heir = getTurkishSuccessionHeir();
}
}

Expand Down Expand Up @@ -222,6 +223,88 @@ CK2Character* CK2Title::getFeudalElectiveHeir(Object* obj, map<int, CK2Characte
}


CK2Character* CK2Title::getTurkishSuccessionHeir()
{
CK2Character* heir = NULL;
int largestDemesne = 0;

for (vector<CK2Title*>::iterator i = vassals.begin(); i != vassals.end(); i++)
{
if ( (*i)->getTitleString().substr(0, 2) == "k_" )
{
if ( (*i)->getHolder()->getDemesneSize() > largestDemesne )
{
heir = (*i)->getHolder();
largestDemesne = (*i)->getHolder()->getDemesneSize();
}
else if ( (*i)->getHolder()->getDemesneSize() == largestDemesne )
{
log("Error: Tie in turkish succession for %s.\n", titleString.c_str() );
}
}
}

if (heir == NULL)
{
for (vector<CK2Title*>::iterator i = vassals.begin(); i != vassals.end(); i++)
{
if ( (*i)->getTitleString().substr(0, 2) == "d_" )
{
if ( (*i)->getHolder()->getDemesneSize() > largestDemesne )
{
heir = (*i)->getHolder();
largestDemesne = (*i)->getHolder()->getDemesneSize();
}
else if ( (*i)->getHolder()->getDemesneSize() == largestDemesne )
{
log("Error: Tie in turkish succession for %s.\n", titleString.c_str() );
}
}
}
}

if (heir == NULL)
{
for (vector<CK2Title*>::iterator i = vassals.begin(); i != vassals.end(); i++)
{
if ( (*i)->getTitleString().substr(0, 2) == "c_" )
{
if ( (*i)->getHolder()->getDemesneSize() > largestDemesne )
{
heir = (*i)->getHolder();
largestDemesne = (*i)->getHolder()->getDemesneSize();
}
else if ( (*i)->getHolder()->getDemesneSize() == largestDemesne )
{
log("Error: Tie in turkish succession for %s.\n", titleString.c_str() );
}
}
}
}

if (heir == NULL)
{
for (vector<CK2Title*>::iterator i = vassals.begin(); i != vassals.end(); i++)
{
if ( (*i)->getTitleString().substr(0, 2) == "b_" )
{
if ( (*i)->getHolder()->getDemesneSize() > largestDemesne )
{
heir = (*i)->getHolder();
largestDemesne = (*i)->getHolder()->getDemesneSize();
}
else if ( (*i)->getHolder()->getDemesneSize() == largestDemesne )
{
log("Error: Tie in turkish succession for %s.\n", titleString.c_str() );
}
}
}
}

return heir;
}



CK2Title::~CK2Title()
{
Expand Down
1 change: 1 addition & 0 deletions Source/CK2World/CK2Title.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class CK2Title
bool isIndependent();
bool isInHRE();
CK2Character* getFeudalElectiveHeir(Object*, map<int, CK2Character*>&);
CK2Character* getTurkishSuccessionHeir();
~CK2Title();
private:
string titleString;
Expand Down

0 comments on commit c29ca78

Please sign in to comment.