z_mirror/Krastorio2

git clone https://git.raiguard.me/z_mirror/Krastorio2

Caleb HeuerRename: (item) potato -> kr-potato59380802

real-fusion-reactor
4.9 KiB192 linesraw
1local util = require("scripts.util")
2
3local patreon_items = {
4  { name = "kr-shelter-plus", count = 1 },
5  { name = "kr-accelerator", count = 1 },
6  { name = "firearm-magazine", count = 190 },
7  { name = "kr-potato", count = 6 },
8}
9
10local high_patrons = {
11  -- Mod Developers
12  ["krastor"] = true,
13  ["linver"] = true,
14  ["raiguard"] = true,
15  -- High patrons
16  ["andrewskier"] = true,
17  ["andromedafallen"] = true,
18  ["antt1995"] = true,
19  ["aski_raven"] = true,
20  ["astazora"] = true,
21  ["biusart"] = true,
22  ["circk"] = true,
23  ["cvamp"] = true,
24  ["darkstroker"] = true,
25  ["djnaphthalin"] = true,
26  ["dmitrii"] = true,
27  ["dr.feelgood999"] = true,
28  ["dusk88"] = true,
29  ["egdod"] = true,
30  ["gbs5009"] = true,
31  ["generaltank"] = true,
32  ["grumblesxl"] = true,
33  ["jkkelley86"] = true,
34  ["jonasrejman"] = true,
35  ["lordfish"] = true,
36  ["max.perry"] = true,
37  ["melphin"] = true,
38  ["mkaito"] = true,
39  ["moonded"] = true,
40  ["nukeufo"] = true,
41  ["pandabeezy"] = true,
42  ["quezler"] = true,
43  ["reysdad"] = true,
44  ["rivsung"] = true,
45  ["rougefallout365"] = true,
46  ["senard"] = true,
47  ["sollevix"] = true,
48  ["therightmark"] = true,
49  ["tobi"] = true,
50  ["tobivollebregt"] = true,
51  ["vladhc"] = true,
52  ["wassabee"] = true,
53  ["zippyit"] = true,
54  -- High supporters
55  ["alright"] = true,
56  ["andrew deren"] = true,
57  ["andromeda fallen"] = true,
58  ["arun bhat"] = true,
59  ["aski raven"] = true,
60  ["austin"] = true,
61  ["bob"] = true,
62  ["brayden mclean"] = true,
63  ["chris hazen"] = true,
64  ["donut7163"] = true,
65  ["george elliott-hunter"] = true,
66  ["george simpson"] = true,
67  ["ivan devyatko"] = true,
68  ["james kelley"] = true,
69  ["jan dragsbæk"] = true,
70  ["jan šipr"] = true,
71  ["john wrangle"] = true,
72  ["jonas rejman"] = true,
73  ["josh strunk"] = true,
74  ["konstantin popichev"] = true,
75  ["koshirun treebone"] = true,
76  ["mark harrison"] = true,
77  ["matt tyler"] = true,
78  ["maximilian bork"] = true,
79  ["rcobbe"] = true,
80  ["russell obets"] = true,
81  ["saulius zilis"] = true,
82  ["vladimir kravtsov"] = true,
83  ["windsinger"] = true,
84  ["zoey oliva"] = true,
85  ["сергій руденко"] = true,
86  -- Low supporters (< 9 dollars)
87  -- These don't get perks, but are here for posterity
88  -- ["adrian leonhard"] = true,
89  -- ["andrew spade"] = true,
90  -- ["billbo99"] = true,
91  -- ["chanz"] = true,
92  -- ["charles paquin"] = true,
93  -- ["chosen"] = true,
94  -- ["craig a"] = true,
95  -- ["dang quang"] = true,
96  -- ["daniel vollmer"] = true,
97  -- ["deterlo"] = true,
98  -- ["dirk m"] = true,
99  -- ["donny"] = true,
100  -- ["gareth knowles"] = true,
101  -- ["hackerman"] = true,
102  -- ["igor borisov"] = true,
103  -- ["jmsantos94"] = true,
104  -- ["justsoul"] = true,
105  -- ["kai-chi huang"] = true,
106  -- ["kartikay bagla"] = true,
107  -- ["loïc gremaud"] = true,
108  -- ["marco montemarani"] = true,
109  -- ["mopolo"] = true,
110  -- ["niv"] = true,
111  -- ["nozoki"] = true,
112  -- ["pavlo bulanchuk"] = true,
113  -- ["paweł g."] = true,
114  -- ["peter50216"] = true,
115  -- ["peter zelenay"] = true,
116  -- ["raymond"] = true,
117  -- ["raymond lau"] = true,
118  -- ["ryan"] = true,
119  -- ["ryan barker"] = true,
120  -- ["seleck"] = true,
121  -- ["shafnir"] = true,
122  -- ["showwin"] = true,
123  -- ["simon harvey"] = true,
124  -- ["srdis"] = true,
125  -- ["webchip"] = true,
126  -- ["wolfgang weber"] = true,
127  -- ["влад"] = true,
128  -- ["сергей ложкин"] = true,
129}
130
131--- @param player LuaPlayer
132--- @param used_console boolean
133local function give_items(player, used_console)
134  local inventory = player.get_main_inventory()
135  if not inventory or not inventory.valid then
136    return
137  end
138
139  if high_patrons[string.lower(player.name)] then
140    -- Check if we've already given them the items
141    if storage.patreon_items_given[player.index] then
142      player.print({ "message.kr-already-got-patreon-items" })
143      return
144    end
145
146    -- Give items
147    for _, item in pairs(patreon_items) do
148      if prototypes.item[item.name] then
149        inventory.insert(item)
150      end
151    end
152
153    storage.patreon_items_given[player.index] = true
154    player.print({ "message.kr-received-patreon-items" })
155  elseif used_console then
156    player.print({ "message.kr-not-a-patron" })
157    if prototypes.item["kr-spoiled-potato"] then
158      inventory.insert({ name = "kr-spoiled-potato", count = 1 })
159    end
160  end
161end
162
163--- @param e EventData.on_player_created|EventData.on_cutscene_cancelled
164local function on_give_items(e)
165  local player = game.get_player(e.player_index)
166  if not player then
167    return
168  end
169  give_items(player, false)
170end
171
172--- @class Patreon
173local patreon = {}
174
175function patreon.on_init()
176  --- @type table<uint, boolean>
177  storage.patreon_items_given = {}
178end
179
180patreon.events = {
181  [defines.events.on_cutscene_cancelled] = on_give_items,
182  [defines.events.on_player_created] = on_give_items,
183}
184
185util.add_commands({
186  ["kr-give-patreon-items"] = function(e)
187    local player = game.get_player(e.player_index) --[[@as LuaPlayer]]
188    give_items(player, true)
189  end,
190})
191
192return patreon