Design Detail

Growth Model

for each ship {

 

    //  Breeding

    GrowthRate = 0.01 * RaceGrowthRate * 0.05

    if ShipHappy >= 80

        GrowthRate = GrowthRate * 1.5

    endif

    if ShipHappy < 30

        GrowthRate = GrowthRate * 0.5

    endif

 

    NewTroop = ShipHG * GrowthRate 

    NewCrew = ShipTroop * GrowthRate

    NewColonist = (ShipCrew + ShipColonist) * GrowthRate

 

    //Training HG

    if ShipHG > 0 

        NewHG = ShipTroop * TrainHG / 100,000

        NewTroop = NewTroop - NewHG

    endif

 

    //Training Troops

    Temp = ShipCrew * TrainTroop / 100,000

    NewTroop = NewTroop + Temp

    NewCrew = NewCrew - Temp

        

    //Training Crew

    Temp = ShipColonist * TrainCrew / 100,000

    NewCrew = NewCrew + Temp

    NewColonist = NewColonist - Temp

 

    //initialize variables

    VacancyGuest = ShipGuestCapacity

    VacancyCrew = ShipCrewCapacity

    TotalHG = ShipHG + NewHG

    TotalTroop = ShipTroop + NewTroop

    TotalCrew = ShipCrew + NewCrew

    TotalColonist = ShipColonist + NewColonist

    ShipHG = 0

    ShipTroop = 0

    ShipCrew = 0

    ShipColonist = 0

 

    if VacancyGuest >= TotalHG

        ShipHG = TotalHG

        VacancyGuest = VacancyGuest - ShipHG

        TotalHG = 0

    else

        ShipHG = VacancyGuest

        VacancyGuest = 0

        //bust excess HG down...may go down to crew if space allows to Troops

        TotalTroop = TotalTroop + (TotalHG - ShipHG)

        TotalHG = 0

    endif

 

    if VacancyGuest >= Total Troop

        ShipTroop = TotalTroop

        VacancyGuest = VacancyGuest - ShipTroop

        TotalTroop = 0

    else

        ShipTroop = VacancyGuest

        VacancyGuest = 0

        TotalTroop = TotalTroop - ShipTroop

    endif

 

    if VacancyCrew >= TotalCrew

        ShipCrew = TotalCrew

        VacancyCrew = VacancyCrew - ShipCrew

        TotalCrew = 0

    else

        ShipCrew = VacancyCrew

        VacancyCrew = 0

        TotalCrew = TotalCrew - ShipCrew

    endif

 

    //demote troops to staff the bridge

    if VacancyCrew >= TotalTroop

        ShipCrew = ShipCrew + TotalTroop

        VacancyCrew = VacancyCrew - TotalTroop

        TotalTroop = 0

    else

        ShipCrew = ShipCrew + VacancyCrew

        TotalTroop = TotalTroop - VacancyCrew

        VacancyCrew = 0

    endif

 

    if VacancyGuest >= TotalColonist

        ShipColonist = TotalColonist

        VacancyGuest = VacancyGuest - ShipColonist

        TotalColonist = 0

    else

        ShipColonist = VacancyGuest

        VacancyGuest = 0

        TotalColonist = TotalColonist - ShipColonist

    endif

 

    //demote crew so they are not in the way on bridge

    if VacancyGuest >= TotalCrew

        ShipColonist = ShipColonist + TotalCrew

        VacancyGuest = VacancyGuest - TotalCrew

        TotalCrew = 0

    else

        ShipColonist = ShipColonist + VacancyGuest

        TotalCrew = TotalCrew - VacancyGuest

        VacancyGuest = 0

    endif

 

    //promote excess troops

    //note: these are troops that would not fit in guest quarters

    NewHG = min (10*ShipMed,ShipTroop,TrainHG*NewTroop/100)

    ShipHG = ShipHG + NewHG

    Shiptroop = ShipTroop - NewHG

    ShipMed = ShipMed - 0.1 * NewHG

 

    //promote excess crew...spacing the colonists

    NewTroop = min(10*ShipMed,ShipColonist,TrainTroop*NewCrew/100)

    ShipTroop = ShipTroop + NewTroop

    ShipColonist = ShipColonist - NewTroop

    ShipMed = ShipMed - 0.1*NewTroop

 

    //promote excess colonists to crew if there is room

    NewCrew = min(10*ShipMed, VacancyCrew , TrainCrew*NewColonist/100)

    ShipCrew = ShipCrew + NewCrew

    ShipMed = ShipMed - 0.1*NewCrew

    

}

Tax Model

 

for each ship {

 

    //  collect taxes

    ShipMC = ShipMC + (5 * ShipColonist / 4000) + (5 * ShipCrew / 3000) + (ShipTroop / 100)

 

    // collect Galactic Credits

    RaceGC = RaceGC + ShipHG

}

 

Resource Point Model

 

for each sister {

    //  add up resource points

    vRes = vRes + ( ShipColonist + 2*ShipTroop + 3*ShipHG)/ 10,000

}

 

for each mother {

    //  add up resource points

    vRes = vRes + 50 + ( ShipColonist + 2*ShipTroop + 3*ShipHG)/ 100,000

}

<> 
vRes = vRes + TotalColonists/1,000,000