Rakeela
e0dad09045
It's now possible to make issue options enabled or disabled conditional upon having taken other actions with that issue before.
211 lines
6.7 KiB
Go
211 lines
6.7 KiB
Go
package koboldsim
|
|
|
|
import (
|
|
"git.chromaticdragon.app/kistaro/CardSimEngine/cardsim"
|
|
)
|
|
|
|
// KoboldMine is the state of a kobold mine.
|
|
type KoboldMine struct {
|
|
Kobolds int64 `cardsim:"stat"`
|
|
|
|
MiningIncome float64 `cardsim:"stat" cardsim_name:"Mining Productivity"`
|
|
ScavengingIncome float64 `cardsim:"stat" cardsim_name:"Scavenging Productivity"`
|
|
AlchemyIncome float64 `cardsim:"stat" cardsim_name:"Alchemy Productivity"`
|
|
HospitalityIncome float64 `cardsim:"stat" cardsim_name:"Hospitality Productivity"`
|
|
AgricultureIncome float64 `cardsim:"stat" cardsim_name:"Agriculture Productivity"`
|
|
ManufacturingIncome float64 `cardsim:"stat" cardsim_name:"Manufacturing Productivity"`
|
|
PlanarIncome float64 `cardsim:"stat" cardsim_name:"Planar Productivity"`
|
|
PublishingIncome float64 `cardsim:"stat" cardsim_name:"Publishing Productivity"`
|
|
FinanceIncome float64 `cardsim:"stat" cardsim_name:"Finance Productivity"`
|
|
GadgetryIncome float64 `cardsim:"stat" cardsim_name:"Gadgetry Productivity"`
|
|
FishingIncome float64 `cardsim:"stat" cardsim_name:"Fishing Productivity"`
|
|
ConstructionIncome float64 `cardsim:"stat" cardsim_name:"Construction Productivity"`
|
|
|
|
BureaucracyExpense float64 `cardsim:"stat" cardsim_name:"Bureaucracy Investment"`
|
|
WarExpense float64 `cardsim:"stat" cardsim_name:"War Investment"`
|
|
QoLExpense float64 `cardsim:"stat" cardsim_name:"QoL Investment"`
|
|
LogisticsExpense float64 `cardsim:"stat" cardsim_name:"Logistics Investment"`
|
|
DragonSubsExpense float64 `cardsim:"stat" cardsim_name:"Dragon Subsidies Investment"`
|
|
ResearchSubsExpense float64 `cardsim:"stat" cardsim_name:"Research Subsidies Investment"`
|
|
EducationExpense float64 `cardsim:"stat" cardsim_name:"Education Investment"`
|
|
HealthcareExpense float64 `cardsim:"stat" cardsim_name:"Healthcare Investment"`
|
|
ForeignRelExpense float64 `cardsim:"stat" cardsim_name:"Foreign Relations Investment"`
|
|
PoliceExpense float64 `cardsim:"stat" cardsim_name:"Law Enforcement Investment"`
|
|
EconPlanExpense float64 `cardsim:"stat" cardsim_name:"Economic Planning Investment"`
|
|
ParksExpense float64 `cardsim:"stat" cardsim_name:"Parks and Aesthetics Investment"`
|
|
FaithExpense float64 `cardsim:"stat" cardsim_name:"Faith Investment"`
|
|
|
|
// AnotherExpense float64 `cardsim:"hiddenround5"`
|
|
// A different way of adding stats that is slightly more empowering.
|
|
}
|
|
|
|
func (k *KoboldMine) ProductivityFunc(s *float64) func() float64 {
|
|
return func() float64 {
|
|
return *s * float64(k.Kobolds)
|
|
}
|
|
}
|
|
|
|
func (k *KoboldMine) TotalSectorIncome() float64 {
|
|
return float64(k.Kobolds) * (k.MiningIncome + k.ScavengingIncome + k.AlchemyIncome + k.HospitalityIncome + k.AgricultureIncome + k.ManufacturingIncome + k.PlanarIncome + k.PublishingIncome + k.FinanceIncome + k.GadgetryIncome + k.FishingIncome + k.ConstructionIncome)
|
|
}
|
|
|
|
func (k *KoboldMine) TotalGovExpense() float64 {
|
|
return float64(k.Kobolds) * (k.BureaucracyExpense + k.WarExpense + k.QoLExpense + k.LogisticsExpense + k.DragonSubsExpense + k.ResearchSubsExpense + k.EducationExpense + k.HealthcareExpense + k.ForeignRelExpense + k.PoliceExpense + k.EconPlanExpense + k.ParksExpense + k.FaithExpense)
|
|
}
|
|
|
|
func (k *KoboldMine) Taxation() float64 {
|
|
return (k.TotalGovExpense() / (k.TotalSectorIncome() + k.TotalGovExpense())) * 100
|
|
}
|
|
|
|
func (k *KoboldMine) StatTaxRate() float64 {
|
|
return k.Taxation()
|
|
}
|
|
|
|
func (k *KoboldMine) Stats() []cardsim.Stat {
|
|
stats := cardsim.ExtractStats(k)
|
|
funcs := []cardsim.Stat{
|
|
cardsim.StatFunc(
|
|
"Mining Income",
|
|
k.ProductivityFunc(&k.MiningIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Scavenging Income",
|
|
k.ProductivityFunc(&k.ScavengingIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Alchemy Income",
|
|
k.ProductivityFunc(&k.AlchemyIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Hospitality Income",
|
|
k.ProductivityFunc(&k.HospitalityIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Agriculture Income",
|
|
k.ProductivityFunc(&k.AgricultureIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Manufacturing Income",
|
|
k.ProductivityFunc(&k.ManufacturingIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Planar Harvesting Income",
|
|
k.ProductivityFunc(&k.PlanarIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Book Publishing Income",
|
|
k.ProductivityFunc(&k.PublishingIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Finance Income",
|
|
k.ProductivityFunc(&k.FinanceIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Gadgetry Income",
|
|
k.ProductivityFunc(&k.GadgetryIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Fishing Income",
|
|
k.ProductivityFunc(&k.FishingIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Construction Income",
|
|
k.ProductivityFunc(&k.ConstructionIncome),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Bureaucracy Expense",
|
|
k.ProductivityFunc(&k.BureaucracyExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"War Expense",
|
|
k.ProductivityFunc(&k.WarExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"QoL Expense",
|
|
k.ProductivityFunc(&k.QoLExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Logistics Expense",
|
|
k.ProductivityFunc(&k.LogisticsExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Dragon Subsidies",
|
|
k.ProductivityFunc(&k.DragonSubsExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Research Subsidies",
|
|
k.ProductivityFunc(&k.ResearchSubsExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Education Expense",
|
|
k.ProductivityFunc(&k.EducationExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Healthcare Expense",
|
|
k.ProductivityFunc(&k.HealthcareExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Foreign Relations Expense",
|
|
k.ProductivityFunc(&k.ForeignRelExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Law Enforcement Expense",
|
|
k.ProductivityFunc(&k.PoliceExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Economic Planning Expense",
|
|
k.ProductivityFunc(&k.EconPlanExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Parks and Aesthetics Expense",
|
|
k.ProductivityFunc(&k.ParksExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Faith Expense",
|
|
k.ProductivityFunc(&k.FaithExpense),
|
|
),
|
|
cardsim.StatFunc(
|
|
"Total Sector Income",
|
|
k.TotalSectorIncome,
|
|
),
|
|
cardsim.StatFunc(
|
|
"Total Government Expense",
|
|
k.TotalGovExpense,
|
|
),
|
|
}
|
|
stats = append(stats, funcs...)
|
|
// cardsim.SortStats(stats)
|
|
return stats
|
|
}
|
|
|
|
func NewKoboldMine() *KoboldMine {
|
|
return &KoboldMine{
|
|
Kobolds: 1000,
|
|
MiningIncome: 0.15,
|
|
ScavengingIncome: 0.1,
|
|
AlchemyIncome: 0.01,
|
|
HospitalityIncome: 0.0,
|
|
AgricultureIncome: 0.0,
|
|
ManufacturingIncome: 0.10,
|
|
PlanarIncome: 0.00,
|
|
PublishingIncome: 0.02,
|
|
FinanceIncome: 0.02,
|
|
GadgetryIncome: 0.03,
|
|
FishingIncome: 0.0,
|
|
ConstructionIncome: 0.05,
|
|
BureaucracyExpense: 0.05,
|
|
WarExpense: 0.1,
|
|
QoLExpense: 0.01,
|
|
LogisticsExpense: 0.02,
|
|
DragonSubsExpense: 0.0,
|
|
ResearchSubsExpense: 0.0,
|
|
EducationExpense: 0.01,
|
|
HealthcareExpense: 0.01,
|
|
ForeignRelExpense: 0.0,
|
|
PoliceExpense: 0.03,
|
|
EconPlanExpense: 0.02,
|
|
ParksExpense: 0.0,
|
|
FaithExpense: 0.03,
|
|
}
|
|
}
|