z_mirror/Krastorio2

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

Caleb HeuerChange to four-space indentation07409ca6

four-space-indentation
5.3 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 PatreonHandler : event_handler
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