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
}
for each ship {
// collect taxes
ShipMC = ShipMC + (5 * ShipColonist / 4000) + (5 * ShipCrew / 3000) + (ShipTroop / 100)
// collect Galactic Credits
RaceGC = RaceGC + ShipHG
}
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
}
<>