package koboldsim import "git.chromaticdragon.app/kistaro/CardSimEngine/cardsim" var cards = []Card{ &SwitchingCard{ Name: cardsim.MsgStr("Warborn"), Desc: cardsim.MsgStr(" A surge of anti-kobold sentiment has been reported by your spies on the surface and your military is concerned that anti-kobold vigilantes will attack the tunnels in the near-future. They want to build up now while doing so is safe."), After: ShuffleIntoBottomHalf, Policies: []Policy{ &BasicPolicy{ UnenactedDesc: cardsim.MsgStr(`Your war chief paces irritably. "We have terrible threats facing us. It's imperative that we build up our numbers in both the military and the domestic sense. I want creches under military control and a good hunting crew to supply them with food."`), EnactedDesc: cardsim.MsgStr("[current policy] Your war chief is presntly monitoring the situation, building up your military, and securing your creches."), Do: func(p *Player) (cardsim.Message, error) { p.Stats.Kobolds.Value += 100 p.Stats.SectorScavengingIncome.Value += 0.01 p.Stats.GovWarExpense.Value += 0.02 return cardsim.MsgStr("Kobolds are known to be born warriors."), nil }, Undo: func(p *Player) error { p.Stats.Kobolds.Value -= 100 p.Stats.SectorScavengingIncome.Value -= 0.01 p.Stats.GovWarExpense.Value -= 0.02 return nil }, }, &BasicPolicy{ UnenactedDesc: cardsim.MsgStr(`Your head miner considers the matter worriedly. "Creches under military control? No. That would invite chaos. We need to dig deeper; we can have a peaceful, orderly society if we just get far enough away from surfacers."`), EnactedDesc: cardsim.MsgStr("[current policy] Your head miner is presently leading a project to dig as far away from the surface as possible."), Do: func(p *Player) (cardsim.Message, error) { p.Stats.Kobolds.Value += 40 p.Stats.SectorMiningIncome.Value += 0.02 p.Stats.GovBureaucracyExpense.Value += 0.01 return cardsim.MsgStr("Kobolds are known to be cowards hiding in the dark."), nil }, Undo: func(p *Player) error { p.Stats.Kobolds.Value -= 40 p.Stats.SectorMiningIncome.Value -= 0.02 p.Stats.GovBureaucracyExpense.Value -= 0.01 return nil }, }, &BasicPolicy{ UnenactedDesc: cardsim.MsgStr(`Your nursery director is incensed. "Creches under military control? Never! Let young kobolds play! In fact, cut the military just for suggesting this. The threats facing us are completely overstated."`), EnactedDesc: cardsim.MsgStr("[current policy] Military funding has been diverted into early childhood education."), Do: func(p *Player) (cardsim.Message, error) { p.Stats.Kobolds.Value -= 40 p.Stats.SectorScavengingIncome.Value -= 0.01 p.Stats.GovWarExpense.Value -= 0.02 return cardsim.MsgStr("An undefended hunting outpost near the surface was recently wiped out by a raid."), nil }, Undo: func(p *Player) error { p.Stats.Kobolds.Value += 40 p.Stats.SectorScavengingIncome.Value += 0.01 p.Stats.GovWarExpense.Value += 0.02 return nil }, }, &VerbosePolicy{ BasicPolicy: &BasicPolicy{ UnenactedDesc: cardsim.MsgStr("This isn't about a disaster and can probably be safely dismissed."), Do: func(p *Player) (cardsim.Message, error) { p.Stats.Kobolds.Value += 20 return cardsim.MsgStr("Creche control doesn't shift that easily."), nil }, Undo: func(p *Player) error { p.Stats.Kobolds.Value -= 20 return nil }, }, Content: []DescResult{ { Desc: cardsim.MsgStr("Rejecting this issue will also reject the military's natalist stance."), Result: cardsim.MsgStr("Militant natalism has been reduced by policy."), }, { Desc: cardsim.MsgStr(`"Dig deeper" pressures in your nation may be excessive.`), Result: cardsim.MsgStr("Some of the lower depths are being abandoned."), }, { Desc: cardsim.MsgStr("Near-surface patrols may need to be increased."), Result: cardsim.MsgStr("More and better-armed hunting outpsts are being established."), }, { Desc: cardsim.MsgStr("This isn't about a disaster and can probably continue to be safely dismissed."), Result: cardsim.MsgStr("Creche control doesn't shift that easily."), }, }, }, }, // end of "Warborn" policies }, // end of "Warborn" card } // end of card list func initDeck(d *cardsim.Deck[*KoboldMine]) { for _, c := range cards { d.Insert(cardsim.BottomOfDeck, c) } d.Shuffle() }