Overview
Comment: | add beginnings of construction system, add cuprite, fix granite, tweak balance, add sane asset management system |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
d831add94c87c5da2d49465d634be7c3 |
User & Date: | lexi on 2024-05-09 15:33:01 |
Other Links: | manifest | tags |
Context
2024-05-15
| ||
15:23 | add basic architecture, rebalance minerals & recipes, fix dumb fab bug check-in: 99aefdbd9e user: lexi tags: trunk | |
2024-05-09
| ||
15:33 | add beginnings of construction system, add cuprite, fix granite, tweak balance, add sane asset management system check-in: d831add94c user: lexi tags: trunk | |
2024-05-07
| ||
23:16 | fix some bugs, start work on actually using the tier system, add usage docs check-in: e905f495dc user: lexi tags: trunk | |
Changes
Added asset.list version [a70ff394cb].
1 +menu/background.png 2 +menu/header.png 3 +menu/icon.png 4 +mods/starlit-building/textures/starlit-item-hinge.png 5 +mods/starlit-building/textures/starlit-item-insulation.png 6 +mods/starlit-building/textures/starlit-item-pipe.png 7 +mods/starlit-building/textures/starlit-item-panel.png 8 +mods/starlit-building/textures/starlit-item-concrete.png 9 +mods/starlit-building/textures/starlit-node-concrete.png 10 +mods/starlit-building/textures/starlit-node-floor-panel-side.png 11 +mods/starlit-building/textures/starlit-node-floor-panel-side-conduit.png 12 +mods/starlit-building/textures/starlit-node-floor-panel-top.png 13 +mods/starlit-building/textures/starlit-node-floor-panel-top-vent.png 14 +mods/starlit-building/textures/starlit-node-insulation-top.png 15 +mods/starlit-building/textures/starlit-node-insulation-cable-top.png 16 +mods/starlit-eco/textures/starlit-eco-plant-berry-bunch.png 17 +mods/starlit-eco/textures/starlit-eco-plant-bloom-leaf.png 18 +mods/starlit-eco/textures/starlit-eco-plant-bloom-petal.png 19 +mods/starlit-eco/textures/starlit-eco-plant-bloom-stalk.png 20 +mods/starlit-eco/textures/starlit-eco-plant-fiber.png 21 +mods/starlit-eco/textures/starlit-eco-plant-grass-high.png 22 +mods/starlit-eco/textures/starlit-eco-plant-grass-sprig.png 23 +mods/starlit-eco/textures/starlit-eco-plant-grass-tall.png 24 +mods/starlit-eco/textures/starlit-eco-plant-seeds.png 25 +mods/starlit-eco/textures/starlit-eco-plant-stalk-berries.png 26 +mods/starlit-eco/textures/starlit-eco-plant-stalk-grow-1.png 27 +mods/starlit-eco/textures/starlit-eco-plant-stalk-grow-2.png 28 +mods/starlit-eco/textures/starlit-eco-plant-stalk-grow-3.png 29 +mods/starlit-eco/textures/starlit-eco-plant-stalk-petals.png 30 +mods/starlit-eco/textures/starlit-eco-plant-stalk.png 31 +mods/starlit-eco/textures/starlit-eco-tree-lambent-pine-bulb.png 32 +mods/starlit-eco/textures/starlit-eco-tree-lambent-pine-needles.png 33 +mods/starlit-eco/textures/starlit-eco-tree-lambent-pine-stem.png 34 +mods/starlit-eco/textures/starlit-eco-tree-lambent-pine-trunk-top.png 35 +mods/starlit-eco/textures/starlit-eco-tree-lambent-pine-trunk.png 36 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-leaves.png 37 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-shine.png 38 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-shine.png~ 39 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-trunk-top.png 40 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-trunk-top.png~ 41 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-trunk.png 42 +mods/starlit-eco/textures/starlit-eco-tree-starblossom-trunk.png~ 43 +mods/starlit-electronics/textures/starlit-item-battery-box.png 44 +mods/starlit-electronics/textures/starlit-item-battery.png 45 +mods/starlit-electronics/textures/starlit-item-cable-electric.png 46 +mods/starlit-electronics/textures/starlit-item-chip.png 47 +mods/starlit-electronics/textures/starlit-item-electrode.png 48 +mods/starlit-electronics/textures/starlit-item-heating-element.png 49 +mods/starlit-electronics/textures/starlit-item-transformer.png 50 +mods/starlit-electronics/textures/starlit-node-device-core-back.png 51 +mods/starlit-electronics/textures/starlit-node-device-core-bottom.png 52 +mods/starlit-electronics/textures/starlit-node-device-core-front.png 53 +mods/starlit-electronics/textures/starlit-node-device-core-side.png 54 +mods/starlit-electronics/textures/starlit-node-device-core-top.png 55 +mods/starlit-material/textures/starlit-element-aluminum-powder.png 56 +mods/starlit-material/textures/starlit-element-aluminum.png 57 +mods/starlit-material/textures/starlit-element-argon.png 58 +mods/starlit-material/textures/starlit-element-beryllium-powder.png 59 +mods/starlit-material/textures/starlit-element-beryllium.png 60 +mods/starlit-material/textures/starlit-element-brass-powder.png 61 +mods/starlit-material/textures/starlit-element-bronze-powder.png 62 +mods/starlit-material/textures/starlit-element-calcium.png 63 +mods/starlit-material/textures/starlit-element-carbon-powder.png 64 +mods/starlit-material/textures/starlit-element-carbon.png 65 +mods/starlit-material/textures/starlit-element-cobalt-powder.png 66 +mods/starlit-material/textures/starlit-element-copper-powder.png 67 +mods/starlit-material/textures/starlit-element-copper.png 68 +mods/starlit-material/textures/starlit-element-draconium-powder.png 69 +mods/starlit-material/textures/starlit-element-duridium-powder.png 70 +mods/starlit-material/textures/starlit-element-electrum-powder.png 71 +mods/starlit-material/textures/starlit-element-gold-powder.png 72 +mods/starlit-material/textures/starlit-element-gold.png 73 +mods/starlit-material/textures/starlit-element-impervium-powder.png 74 +mods/starlit-material/textures/starlit-element-iridium-powder.png 75 +mods/starlit-material/textures/starlit-element-iridium.png 76 +mods/starlit-material/textures/starlit-element-iron-powder.png 77 +mods/starlit-material/textures/starlit-element-iron.png 78 +mods/starlit-material/textures/starlit-element-lithium-powder.png 79 +mods/starlit-material/textures/starlit-element-lithium.png 80 +mods/starlit-material/textures/starlit-element-magnesium.png 81 +mods/starlit-material/textures/starlit-element-nickel.png 82 +mods/starlit-material/textures/starlit-element-osmium.png 83 +mods/starlit-material/textures/starlit-element-oxygen.png 84 +mods/starlit-material/textures/starlit-element-platinum-powder.png 85 +mods/starlit-material/textures/starlit-element-potassium-powder.png 86 +mods/starlit-material/textures/starlit-element-potassium.png 87 +mods/starlit-material/textures/starlit-element-silicon.png 88 +mods/starlit-material/textures/starlit-element-silver-powder.png 89 +mods/starlit-material/textures/starlit-element-silver.png 90 +mods/starlit-material/textures/starlit-element-steel-powder.png 91 +mods/starlit-material/textures/starlit-element-technetium-powder.png 92 +mods/starlit-material/textures/starlit-element-technetium.png 93 +mods/starlit-material/textures/starlit-element-thorium-powder.png 94 +mods/starlit-material/textures/starlit-element-thorium.png 95 +mods/starlit-material/textures/starlit-element-tin-powder.png 96 +mods/starlit-material/textures/starlit-element-titanium-powder.png 97 +mods/starlit-material/textures/starlit-element-titanium.png 98 +mods/starlit-material/textures/starlit-element-tyrannium-powder.png 99 +mods/starlit-material/textures/starlit-element-uranium-powder.png 100 +mods/starlit-material/textures/starlit-element-uranium.png 101 +mods/starlit-material/textures/starlit-element-vanadium-powder.png 102 +mods/starlit-material/textures/starlit-element-vanadium.png 103 +mods/starlit-material/textures/starlit-element-vidrium-powder.png 104 +mods/starlit-material/textures/starlit-element-xenon.png 105 +mods/starlit-material/textures/starlit-item-brick.png 106 +mods/starlit-material/textures/starlit-item-element-canister.png 107 +mods/starlit-suit/textures/starlit-suit-survival-lining-human-female.png 108 +mods/starlit-suit/textures/starlit-suit-survival-plate-human-female.png 109 +mods/starlit-tech/textures/starlit-tech-crate-back.png 110 +mods/starlit-tech/textures/starlit-tech-crate-bottom.png 111 +mods/starlit-tech/textures/starlit-tech-crate-front.png 112 +mods/starlit-tech/textures/starlit-tech-crate-side.png 113 +mods/starlit-tech/textures/starlit-tech-crate-top.png 114 +mods/starlit-tech/textures/starlit-tech-lamp-glow.png 115 +mods/starlit-tech/textures/starlit-tech-lamp.png 116 +mods/starlit/models/starlit-body-female.x 117 +mods/starlit/models/starlit-body-female.x.nla 118 +mods/starlit/sounds/default-dirt-footstep.1.ogg 119 +mods/starlit/sounds/default-dirt-footstep.2.ogg 120 +mods/starlit/sounds/default-dug-node.1.ogg 121 +mods/starlit/sounds/default-dug-node.2.ogg 122 +mods/starlit/sounds/default-grass-footstep.1.ogg 123 +mods/starlit/sounds/default-grass-footstep.2.ogg 124 +mods/starlit/sounds/default-grass-footstep.3.ogg 125 +mods/starlit/sounds/default-hard-footstep.1.ogg 126 +mods/starlit/sounds/default-hard-footstep.2.ogg 127 +mods/starlit/sounds/default-hard-footstep.3.ogg 128 +mods/starlit/sounds/default-ice-dig.1.ogg 129 +mods/starlit/sounds/default-ice-dig.2.ogg 130 +mods/starlit/sounds/default-ice-dig.3.ogg 131 +mods/starlit/sounds/default-ice-dug.ogg 132 +mods/starlit/sounds/default-ice-footstep.1.ogg 133 +mods/starlit/sounds/default-ice-footstep.2.ogg 134 +mods/starlit/sounds/default-ice-footstep.3.ogg 135 +mods/starlit/sounds/default-metal-footstep.1.ogg 136 +mods/starlit/sounds/default-metal-footstep.2.ogg 137 +mods/starlit/sounds/default-metal-footstep.3.ogg 138 +mods/starlit/sounds/default-sand-footstep.1.ogg 139 +mods/starlit/sounds/default-sand-footstep.2.ogg 140 +mods/starlit/sounds/default-sand-footstep.3.ogg 141 +mods/starlit/sounds/default-snow-footstep.1.ogg 142 +mods/starlit/sounds/default-snow-footstep.2.ogg 143 +mods/starlit/sounds/default-snow-footstep.3.ogg 144 +mods/starlit/sounds/default-snow-footstep.4.ogg 145 +mods/starlit/sounds/default-snow-footstep.5.ogg 146 +mods/starlit/sounds/default-water-footstep.1.ogg 147 +mods/starlit/sounds/default-water-footstep.2.ogg 148 +mods/starlit/sounds/default-water-footstep.3.ogg 149 +mods/starlit/sounds/default-wood-footstep.1.ogg 150 +mods/starlit/sounds/default-wood-footstep.2.ogg 151 +mods/starlit/sounds/default_dig_grab.ogg 152 +mods/starlit/sounds/default_dig_looseClump.ogg 153 +mods/starlit/sounds/default_dig_pickup.ogg 154 +mods/starlit/sounds/default_dig_plant.ogg 155 +mods/starlit/sounds/starlit-alarm-urgent.ogg 156 +mods/starlit/sounds/starlit-alarm.ogg 157 +mods/starlit/sounds/starlit-configure.ogg 158 +mods/starlit/sounds/starlit-error.ogg 159 +mods/starlit/sounds/starlit-insert-snap.ogg 160 +mods/starlit/sounds/starlit-mode-nano.ogg 161 +mods/starlit/sounds/starlit-mode-off.ogg 162 +mods/starlit/sounds/starlit-mode-psi.1.ogg 163 +mods/starlit/sounds/starlit-mode-psi.2.ogg 164 +mods/starlit/sounds/starlit-mode-psi.3.ogg 165 +mods/starlit/sounds/starlit-mode-psi.4.ogg 166 +mods/starlit/sounds/starlit-mode-weapon.ogg 167 +mods/starlit/sounds/starlit-nano-heal.ogg 168 +mods/starlit/sounds/starlit-nano-shred.1.ogg 169 +mods/starlit/sounds/starlit-nano-shred.2.ogg 170 +mods/starlit/sounds/starlit-nano-shred.3.ogg 171 +mods/starlit/sounds/starlit-nano-shred.4.ogg 172 +mods/starlit/sounds/starlit-nav.ogg 173 +mods/starlit/sounds/starlit-power-down.ogg 174 +mods/starlit/sounds/starlit-power-up.1.ogg 175 +mods/starlit/sounds/starlit-power-up.2.ogg 176 +mods/starlit/sounds/starlit-power-up.3.ogg 177 +mods/starlit/sounds/starlit-power-up.4.ogg 178 +mods/starlit/sounds/starlit-power-up.5.ogg 179 +mods/starlit/sounds/starlit-power-up.6.ogg 180 +mods/starlit/sounds/starlit-power-up.7.ogg 181 +mods/starlit/sounds/starlit-quit.ogg 182 +mods/starlit/sounds/starlit-success.ogg 183 +mods/starlit/sounds/starlit-suit-battery-in.ogg 184 +mods/starlit/sounds/starlit-suit-chip-in.ogg 185 +mods/starlit/sounds/starlit-suit-don.ogg 186 +mods/starlit/textures/starlit-body-eye.png 187 +mods/starlit/textures/starlit-body-hair.png 188 +mods/starlit/textures/starlit-body-skin.png 189 +mods/starlit/textures/starlit-fx-nano-spark-big.png 190 +mods/starlit/textures/starlit-fx-nano-spark-small.png 191 +mods/starlit/textures/starlit-fx-nanocloud.png 192 +mods/starlit/textures/starlit-fx-nanospark.png 193 +mods/starlit/textures/starlit-item-chip.png 194 +mods/starlit/textures/starlit-item-soil.png 195 +mods/starlit/textures/starlit-item-suit.png 196 +mods/starlit/textures/starlit-sun-tones.png 197 +mods/starlit/textures/starlit-sun.png 198 +mods/starlit/textures/starlit-terrain-feldspar.png 199 +mods/starlit/textures/starlit-terrain-granite.png 200 +mods/starlit/textures/starlit-terrain-greengraze-overlay.png 201 +mods/starlit/textures/starlit-terrain-greengraze.png 202 +mods/starlit/textures/starlit-terrain-greengraze.png~ 203 +mods/starlit/textures/starlit-terrain-lifesilt.png 204 +mods/starlit/textures/starlit-terrain-sand.png 205 +mods/starlit/textures/starlit-terrain-soil.png 206 +mods/starlit/textures/starlit-terrain-undergloam-overlay.png 207 +mods/starlit/textures/starlit-terrain-cuprite.png 208 +mods/starlit/textures/starlit-terrain-undergloam.png 209 +mods/starlit/textures/starlit-ui-alert-bg-hot.png 210 +mods/starlit/textures/starlit-ui-alert-bg-hydration.png 211 +mods/starlit/textures/starlit-ui-alert-bg-nutrition.png 212 +mods/starlit/textures/starlit-ui-alert-bg-rad.png 213 +mods/starlit/textures/starlit-ui-alert-bg-success.png 214 +mods/starlit/textures/starlit-ui-alert-bg-temp-cold.png 215 +mods/starlit/textures/starlit-ui-alert-bg-temp-rad.png 216 +mods/starlit/textures/starlit-ui-alert-hydration.png 217 +mods/starlit/textures/starlit-ui-alert-item.png 218 +mods/starlit/textures/starlit-ui-alert-nutrition.png 219 +mods/starlit/textures/starlit-ui-alert-rad.png 220 +mods/starlit/textures/starlit-ui-alert-temp-cold.png 221 +mods/starlit/textures/starlit-ui-alert-temp-hot.png 222 +mods/starlit/textures/starlit-ui-alert.png 223 +mods/starlit/textures/starlit-ui-bar.png 224 +mods/starlit/textures/starlit-ui-bg-digital.png 225 +mods/starlit/textures/starlit-ui-bg-panel.png 226 +mods/starlit/textures/starlit-ui-button-hw-hover.png 227 +mods/starlit/textures/starlit-ui-button-hw-press.png 228 +mods/starlit/textures/starlit-ui-button-hw.png 229 +mods/starlit/textures/starlit-ui-button-sw-hover.png 230 +mods/starlit/textures/starlit-ui-button-sw-press.png 231 +mods/starlit/textures/starlit-ui-button-sw.png 232 +mods/starlit/textures/starlit-ui-crosshair-nano.png 233 +mods/starlit/textures/starlit-ui-crosshair-psi.png 234 +mods/starlit/textures/starlit-ui-crosshair-weapon.png 235 +mods/starlit/textures/starlit-ui-crosshair.png 236 +mods/starlit/textures/starlit-ui-hud-bg.png 237 +mods/starlit/textures/starlit-ui-icon-ability-sprint.png 238 +mods/starlit/textures/starlit-ui-icon-element.png 239 +mods/starlit/textures/starlit-ui-icon-fabricate.png 240 +mods/starlit/textures/starlit-ui-icon-nano.png 241 +mods/starlit/textures/starlit-ui-icon-psi-cfg.png 242 +mods/starlit/textures/starlit-ui-icon-psi.png 243 +mods/starlit/textures/starlit-ui-icon-self.png 244 +mods/starlit/textures/starlit-ui-icon-shred.png 245 +mods/starlit/textures/starlit-ui-icon-stat-numina.png 246 +mods/starlit/textures/starlit-ui-icon-stat-power.png 247 +mods/starlit/textures/starlit-ui-icon-weapon.png 248 +mods/starlit/textures/starlit-ui-meter-hl.png 249 +mods/starlit/textures/starlit-ui-meter-readout.png 250 +mods/starlit/textures/starlit-ui-meter.png 251 +mods/starlit/textures/starlit-ui-slot-physical.png 252 +mods/starlit/textures/starlit-ui-slot.png 253 +mods/starlit/textures/starlit-water.png
Added makefile version [ebfb2ead99].
1 +all: asset-sync doc-sync 2 + 3 +starlit.html: starlit.ct 4 + cortav -y html:fossil-uv "$<" -o "$@" 5 + 6 +.PHONY: doc-sync 7 +doc-sync: starlit.html 8 + fossil uv add "$<" 9 + fossil uv sync 10 + 11 +asset.cpxz: asset.list $(cat asset.list) 12 + cpio -o <"$<" | xz >"$@" 13 + 14 +.PHONY: asset-sync 15 +asset-sync: asset.cpxz 16 + fossil uv add "$<" 17 + fossil uv sync
Modified mods/starlit-building/init.lua from [35031ce713] to [76e0104e11].
18 18 allow = function(node, tool) ... end; 19 19 handle = function(node, tool) ... end; 20 20 }; 21 21 }; 22 22 } ]] 23 23 -- it should only be written by special accessor functions! 24 24 25 -B.stage = lib.registry.mk 'starlit_building:stage' 26 --- a stage consists of a list of pieces and maps from possible materials 27 --- / tool usages to succeeding stages in the build tree. note that all 28 --- used pieces must be defined before a stage is defined currently, due 29 --- to a lack of cross-registry dependency mechanisms. i will hopefully 30 --- improve vtlib to handle this condition eventually. 25 +B.begin = {part = {}, tool = {}} 26 +-- this maps parts/tools to the new nodes they create 31 27 --[[ 32 - starlit.mod.building.stage.link(id, { 33 - pieces = { 34 - 'starlit_building:foundation'; 35 - 'starlit_building:insulation'; -- offset ofsFac 36 - {'starlit_building:pipe', vector.new(-.5, 0, 0), 0};-- 37 - {'starlit_building:pipe', vector.new(-.5, 0, 0), 1}; 38 - 'starlit_building:insulation'; 39 - 'starlit_building:panel'; 40 - }; 41 - }) 28 + part = { 29 + ['starlit_building:concrete'] = 'starlit_building:stage_foundation'; 30 + -- or function(...) 31 + }; 32 + tool = { 33 + -- for consistency's sake -- can't quite imagine a valid use 34 + -- for this but im sure it'll bite me eventually if i leave it out 35 + }; 42 36 ]] 43 37 44 -B.piece = lib.registry.mk 'starlit_building:piece' 45 --- a piece is used to produce stage definitions, by means of appending 46 --- nodeboxes with appropriate offsets. it also lists the recoverable 47 --- materials which can be obtained by destroying a stage containing 48 --- this piece using nano. part IDs should correspond with piece IDs 49 --- where possible 38 +B.stage = lib.registry.mk 'starlit_building:stage' 39 +-- a stage consists of a node definition and maps from possible materials 40 +-- / tool usages to succeeding stages in the build tree 50 41 --[[ 51 - starlit.mod.building.piece.link(id, { 52 - tex = 'myMod_part.png'; 53 - height = 0.1; -- used for auto-offset 54 - fab = { 55 - element = {iron=10}; 56 - }; 57 - shape = { 58 - type = "fixed"; 59 - fixed = { ... }; 42 + starlit.mod.building.stage.link(id, { 43 + tex = { ... }; 44 + box = { ... }; -- nodebox def, or 45 + mesh = '...'; -- mesh name 46 + begin = { 47 + part = {...}; 48 + tool = {...}; 49 + } 50 + build = { 51 + part = { 52 + ['starlit_building:insulation'] = 'starlit_building:foundation_with_insulation'; 53 + }; 54 + tool = { 55 + ['starlit_building:screwdriver'] = {id = 'air', drop = 'starlit_building:foundation'}; 56 + }; 60 57 }; 61 58 }) 62 59 ]] 63 60 64 61 B.part = lib.registry.mk 'starlit_building:part' 65 62 -- a part is implemented as a special craftitem with the proper callbacks 66 63 -- to index the registries and place/replace nodes by reference to the ................................................................................ 92 89 short_description = e.name; 93 90 description = starlit.ui.tooltip { 94 91 title = e.name; 95 92 desc = e.desc; 96 93 props = props; 97 94 }; 98 95 inventory_image = e.img; 96 + on_place = function(stack, luser, point) 97 + local node = minetest.get_node(point.under) 98 + local function tryBuild() 99 + local p = B.path[node.name] 100 + if not p then return nil end 101 + if (not p.part) or (not p.part[id]) then return nil end 102 + local n = p.part[id] 103 + local obj 104 + if type(n) == 'function' then 105 + obj = n(stack, node, point) 106 + if obj == nil then return nil end 107 + else 108 + obj = ItemStack(n) 109 + stack:take_item(1) 110 + end 111 + local pname = obj:get_name() 112 + local stg = B.stage.db[pname] 113 + node.name = pname 114 + minetest.swap_node(point.under, node) 115 + -- TODO make a noise 116 + if stg.onBuild then 117 + stg.onBuild(point.under, luser, stack) 118 + end 119 + return stack 120 + end 121 + 122 + local function tryBegin() 123 + local p = B.begin.part[stack:get_name()] 124 + if not p then return nil end 125 + if type(p) == 'function' then 126 + p = p(stack, node, point) 127 + if p == nil then return nil end 128 + else 129 + stack:take_item(1) 130 + end 131 + minetest.rotate_and_place(ItemStack(p), luser, point, true) 132 + -- TODO make a noise 133 + return stack 134 + end 135 + 136 + return tryBuild() or tryBegin() or stack 137 + end; 99 138 _starlit = { 100 139 mass = e.mass; 101 140 reverseEngineer = rev; 102 141 recover = e.recover or e.fab; 103 142 }; 104 143 }) 105 144 if e.fab then ................................................................................ 115 154 }; 116 155 rarity = e.rarity or 0; 117 156 }) 118 157 end 119 158 120 159 end) 121 160 122 -B.stage.foreach('starlit:stageGen', {}, function(id, e) 123 - local box = {type = 'fixed', fixed = {}} 124 - local tex = {} 125 - local ofs = vector.new(0,0,0) 126 - for idx, p in ipairs(e.pieces) do 127 - local ho, pieceID, pos 128 - if type(p) == 'string' then 129 - pieceID, pos, ho = p, vector.zero(), 1.0 130 - else 131 - pieceID, pos, ho = pc[1],pc[2],pc[3] 132 - end 133 - local pc = B.piece.db[pieceID] 134 - pos = pos + ofs 135 - if ho ~= 0.0 then 136 - ofs = vector.offset(ofs, 0, pc.height) 137 - end 138 - local sh = lib.node.boxwarped(pc.shape, function(b) 139 - -- { -x, -y, -z; 140 - -- +x, +y, +z } 141 - b[1] = b[1] + ofs.x b[4] = b[4] + ofs.x 142 - b[2] = b[2] + ofs.y b[5] = b[5] + ofs.y 143 - b[3] = b[3] + ofs.z b[6] = b[6] + ofs.z 144 - end) 145 - table.insert(box, sh) 146 - if type(pc.tex) == 'string' then 147 - table.insert(tex, pc.tex) 148 - else 149 - for i,t in ipairs(pc.tex) do 150 - table.insert(tex, t or '') 151 - end 152 - end 153 - end 154 - minetest.register_node(id, { 155 - description = 'Construction'; 156 - drawtype = 'nodebox'; 157 - paramtype = 'light'; 158 - paramtype2 = e.stateful or 'none'; 159 - textures = tex; 160 - node_box = box; 161 - group = { stage = 1 }; 162 - _starlit = { 163 - stage = id; 164 - }; 165 - }) 166 -end) 167 - 168 161 function B.pathLink(from, kind, what, to) 169 162 if not B.path[from] then 170 163 B.path[from] = {part={}, tool={}} 171 164 end 172 165 local k = B.path[from][kind] 173 - assert(k[what] == nil) 166 + assert(k[what] == nil, 'attempted to overwrite an existing build path') 174 167 k[what] = to 175 168 end 176 169 177 170 function B.pathFind(from, kind, what) 178 171 if not B.path[from] then return nil end 179 172 return B.path[from][kind][what] 180 173 end 174 + 175 +B.stage.foreach('starlit:stageGen', {}, function(id, e) 176 + local grp = e.groups and table.copy(e.groups) or {} 177 + grp.stage = 1 178 + minetest.register_node(id, { 179 + description = 'Construction'; 180 + drawtype = (e.box and 'nodebox') 181 + or (e.mesh and 'mesh') 182 + or 'regular'; 183 + paramtype = (e.box or e.mesh or e.light) and 'light' or nil; 184 + paramtype2 = e.stateful or 'none'; 185 + tiles = e.tex; 186 + node_box = e.box; 187 + mesh = e.mesh; 188 + groups = grp; 189 + _starlit = { 190 + stage = id; 191 + }; 192 + }) 193 + if e.begin then 194 + for _, kind in ipairs {'part', 'tool'} do 195 + for i, v in ipairs(e.begin[kind] or {}) do 196 + assert(B.begin[kind][v] == nil, 'attempted to overwrite buildpath beginning') 197 + B.begin[kind][v] = id 198 + end 199 + end 200 + end 201 + if e.build then 202 + for _, kind in ipairs {'part', 'tool'} do 203 + for what, to in pairs(e.build[kind] or {}) do 204 + B.pathLink(id, kind, what, to) 205 + end 206 + end 207 + end 208 +end) 209 + 181 210 182 211 starlit.include 'parts' 212 +starlit.include 'stages'
Modified mods/starlit-building/parts.lua from [01ffc64dd2] to [d434edb6db].
82 82 cost = {power = 500}; 83 83 flag = {print=true}; 84 84 time = {print=20}; 85 85 }; 86 86 mass = 24; 87 87 rarity = 1; 88 88 }) 89 + 90 +B.part.link('starlit_building:concrete', { 91 + name = 'Concrete'; 92 + desc = 'A sturdy base for modular construction units.'; 93 + img = 'starlit-item-concrete.png'; 94 + fab = starlit.type.fab { 95 + element = { 96 + calcium = 1; 97 + carbon = 4; 98 + }; 99 + cost = {power = 200}; 100 + flag = {print=true}; 101 + time = {print=5}; 102 + }; 103 + mass = 5; 104 + rarity = 1; 105 +}) 106 + 107 +B.part.link('starlit_building:insulation', { 108 + name = 'Insulation'; 109 + desc = 'An aerogel that traps heat very effectively.'; 110 + img = 'starlit-item-insulation.png'; 111 + fab = starlit.type.fab { 112 + element = { 113 + silicon = 4; 114 + }; 115 + cost = {power = 100}; 116 + flag = {print=true}; 117 + time = {print=5}; 118 + }; 119 + mass = 4; 120 + rarity = 1; 121 +}) 122 + 123 +B.part.link('starlit_building:panel', { 124 + name = 'Panel'; 125 + desc = 'A sheet of aluminum suitable for use as a wall or floor panel.'; 126 + img = 'starlit-item-panel.png'; 127 + fab = starlit.type.fab { 128 + element = { 129 + aluminum = 8; 130 + }; 131 + cost = {power = 300}; 132 + flag = {print=true}; 133 + time = {print=15}; 134 + }; 135 + mass = 8; 136 + rarity = 1; 137 +}) 138 + 139 +B.part.link('starlit_building:pipe', { 140 + name = 'Pipe'; 141 + desc = 'A pipe suitable for conveying liquids or gasses.'; 142 + img = 'starlit-item-pipe.png'; 143 + fab = starlit.type.fab { 144 + element = { 145 + aluminum = 4; 146 + }; 147 + cost = {power = 300}; 148 + flag = {print=true}; 149 + time = {print=15}; 150 + }; 151 + mass = 4; 152 + rarity = 1; 153 +})
Added mods/starlit-building/stages.lua version [3af63c8d88].
1 +local lib = starlit.mod.lib 2 +local B = starlit.mod.building 3 +B.stage.link('starlit_building:stage_foundation', { 4 + tex = { 5 + 'starlit-node-concrete.png'; 6 + }; 7 + begin = { 8 + part = { 9 + 'starlit_building:concrete'; 10 + }; 11 + }; 12 + build = { 13 + part = { 14 + ['starlit_building:insulation'] = 'starlit_building:stage_foundation_insulation'; 15 + }; 16 + }; 17 + box = { 18 + type = 'fixed'; 19 + fixed = { 20 + -.5, -.5, -.5; 21 + .5, -.5 + (2/16), .5; 22 + }; 23 + }; 24 +}) 25 + 26 +B.stage.link('starlit_building:stage_foundation_insulation', { 27 + tex = { 28 + 'starlit-node-insulation-top.png'; 29 + 'starlit-node-concrete.png'; 30 + 'starlit-node-floor-panel-side.png'; 31 + }; 32 + build = { 33 + part = { 34 + ['starlit_building:insulation'] = 'starlit_building:stage_foundation_insulation_x2'; 35 + ['starlit_building:cable_electric'] = 'starlit_building:stage_foundation_insulation_conduit'; 36 + }; 37 + }; 38 + box = { 39 + type = 'fixed'; 40 + fixed = { 41 + -.5, -.5, -.5; 42 + .5, -.5 + (6/16), .5; 43 + }; 44 + }; 45 +}) 46 + 47 +B.stage.link('starlit_building:stage_foundation_insulation_x2', { 48 + tex = { 49 + 'starlit-node-insulation-top.png'; 50 + 'starlit-node-concrete.png'; 51 + 'starlit-node-floor-panel-side.png'; 52 + }; 53 + build = { 54 + part = { 55 + ['starlit_building:panel'] = 'starlit_building:floor'; 56 + }; 57 + }; 58 + box = { 59 + type = 'fixed'; 60 + fixed = { 61 + -.5, -.5, -.5; 62 + .5, -.5 + (14/16), .5; 63 + }; 64 + }; 65 +}) 66 + 67 +B.stage.link('starlit_building:stage_foundation_insulation_conduit', { 68 + tex = { 69 + 'starlit-node-insulation-cable-top.png'; 70 + 'starlit-node-concrete.png'; 71 + 'starlit-node-floor-panel-side-conduit.png'; 72 + }; 73 + groups = { 74 + conduit = 1; 75 + }; 76 + build = { 77 + part = { 78 + ['starlit_building:insulation'] = 'starlit_building:stage_foundation_insulated_conduit'; 79 + }; 80 + }; 81 + box = { 82 + type = 'fixed'; 83 + fixed = { 84 + -.5, -.5, -.5; 85 + .5, -.5 + (8/16), .5; 86 + }; 87 + }; 88 +}) 89 + 90 +B.stage.link('starlit_building:stage_foundation_insulated_conduit', { 91 + tex = { 92 + 'starlit-node-insulation-top.png'; 93 + 'starlit-node-concrete.png'; 94 + 'starlit-node-floor-panel-side-conduit.png'; 95 + }; 96 + build = { 97 + part = { 98 + ['starlit_building:panel'] = 'starlit_building:conduit'; 99 + }; 100 + }; 101 + groups = { 102 + conduit = 1; 103 + }; 104 + box = { 105 + type = 'fixed'; 106 + fixed = { 107 + -.5, -.5, -.5; 108 + .5, -.5 + (14/16), .5; 109 + }; 110 + }; 111 +}) 112 + 113 +B.stage.link('starlit_building:conduit', { 114 + tex = { 115 + 'starlit-node-floor-panel-top.png'; 116 + 'starlit-node-concrete.png'; 117 + 'starlit-node-floor-panel-side-conduit.png'; 118 + }; 119 + groups = { 120 + conduit = 1; 121 + }; 122 +}) 123 + 124 +B.stage.link('starlit_building:floor', { 125 + tex = { 126 + 'starlit-node-floor-panel-top.png'; 127 + 'starlit-node-concrete.png'; 128 + 'starlit-node-floor-panel-side.png'; 129 + }; 130 +})
Modified mods/starlit-electronics/init.lua from [edafa25ca2] to [668ccf7fa8].
302 302 -- makeshift: cheap, weak, low quality 303 303 -- imperial ("da red wunz go fasta"): powerful, low quality 304 304 -- commune ("snooty sophisticates"): limited power, high quality, expensive 305 305 -- usukwinya ("value engineering"): high power, mid quality, affordable 306 306 -- eluthrai ("uncompromising"): high power, high quality, wildly expensive 307 307 -- firstborn ("god-tier"): exceptional 308 308 309 - print(dump(starlit.world.tier.fabsum('commune', 'battery'))) 310 309 local batteryTiers = { 311 310 makeshift = { 312 311 name = 'Makeshift'; capacity = .5, decay = 3, leak = 2, dischargeRate = 1, 313 312 -- fab = starlit.type.fab { 314 313 -- element = {copper=10}; 315 314 -- cost = {power = 0.3}; 316 315 -- time = {print = .25};
Modified mods/starlit-scenario/init.lua from [ad44a3c89f] to [d2f3af923b].
39 39 {'starlit_tech:chem_lamp', 0}; 40 40 {'starlit_tech:crate', 0}; 41 41 {'starlit_building:battery_box', 0}; 42 42 {'starlit_building:heating_element', 0}; 43 43 {'starlit_building:electrode', 0}; 44 44 {'starlit_building:cable_electric', 0}; 45 45 {'starlit_building:transformer', 0}; 46 + {'starlit_building:concrete', 0}; 47 + {'starlit_building:insulation', 0}; 48 + {'starlit_building:panel', 0}; 46 49 } 47 50 48 51 local chipLibrary = { 49 52 compendium = makeChip('The Gentleman Adventurer\'s Compleat Wilderness Compendium', lib.tbl.append(survivalBasics, { 50 53 {'starlit_electronics:battery_chemical_imperial_small', 0}; 51 54 }), { 52 55 {'starlit_electronics:shred', 0};
Modified mods/starlit-tech/init.lua from [4840721039] to [de8d4eba0f].
7 7 local stages = maxBright 8 8 local stageTimeout = burnTime / stages 9 9 local function chemLampID(n) 10 10 if n == stages then return 'starlit_tech:chem_lamp' end 11 11 return string.format('starlit_tech:chem_lamp_%s',n) 12 12 end 13 13 local fab = starlit.type.fab { 14 - element = { carbon = 8, magnesium = 2 }; 14 + element = { carbon = 4, magnesium = 1 }; 15 15 cost = { power = 100 }; 16 16 flag = { print = true }; 17 17 time = { print = 5 }; 18 18 }; 19 19 for i = stages, 0, -1 do 20 20 minetest.register_node(chemLampID(i), { 21 21 short_description = 'Chem Lamp';
Modified mods/starlit/interfaces.lua from [461714c4c0] to [42263b381c].
220 220 pnan.primary = nil 221 221 elseif pptrMatch(ptr, pnan.secondary) then 222 222 pnan.secondary = nil 223 223 else 224 224 pnan.secondary = ptr 225 225 end 226 226 user:suitSound 'starlit-configure' 227 + if user.actMode == 'off' then 228 + user:actModeSet 'nano' 229 + end 227 230 elseif pgm.sw.powerKind == 'direct' then 228 231 local ctx = suitCtx(pgm) 229 232 if pgm.sw.ui then 230 233 user:openUI(pgm.sw.ui, 'index', ctx) 231 234 return false 232 235 else 233 236 pgm.sw.run(user, ctx)
Modified mods/starlit/terrain.lua from [18098e5201] to [5c8125f149].
109 109 def.img .. '.png'; 110 110 'starlit-terrain-soil.png'; 111 111 { 112 112 name = 'starlit-terrain-soil.png^' .. def.img ..'-overlay.png'; 113 113 tileable_vertical = false; 114 114 }; 115 115 }; 116 - groups = {looseClump = 2, grass = 1, soil = 1, sub_walk = 1}; 116 + groups = {looseClump = 2, grass = 1, soil = 1}; 117 117 drop = soilDrop; 118 118 sounds = grassSounds; 119 119 _starlit = { 120 120 recover = def.recover; 121 121 recover_vary = def.recover_vary; 122 122 }; 123 123 }) ................................................................................ 183 183 drowning = 40; 184 184 post_effect_color = {a=103, r=10, g=40, b=70}; 185 185 groups = {water = 3, liquid = 3}; 186 186 }); 187 187 end 188 188 189 189 190 -starlit.world.mineral.foreach('starlit:mineral_generate', {}, function(name,m) 191 - local node = string.format('starlit:mineral_%s', name) 190 +starlit.world.mineral.foreach('starlit:mineral-generate', {}, function(node,m) 192 191 local grp = {mineral = 1} 193 192 minetest.register_node(node, { 194 193 short_description = m.name; 195 194 description = starlit.ui.tooltip { 196 195 title = m.name; 197 196 desc = m.desc; 198 197 color = m.tone; ................................................................................ 219 218 seed = seed*50 + string.byte(m.name, i) 220 219 end 221 220 minetest.register_ore { 222 221 ore = node; 223 222 ore_type = m.dist.kind; 224 223 wherein = m.dist.among; 225 224 clust_scarcity = m.dist.rare; 226 - y_max = m.dist.height[1], y_min = m.dist.height[2]; 225 + clust_num_ores = m.dist.ores; 226 + clust_size = m.dist.clust; 227 + y_min = m.dist.height[1], y_max = m.dist.height[2]; 227 228 column_height_min = m.dist.sheetCols and m.dist.sheetCols[1] or nil; 228 229 column_height_max = m.dist.sheetCols and m.dist.sheetCols[2] or nil; 229 230 noise_params = m.dist.noise or { 230 231 scale = 1; 231 - spread = vector.new(128,128,128); 232 + spread = vector.new(16,16,16); 232 233 seed = seed; 233 234 octaves = 2; 234 235 }; 235 236 } 236 237 end 237 238 end) 238 239 239 -starlit.world.mineral.link('feldspar', { 240 +starlit.world.mineral.link('starlit:mineral_feldspar', { 240 241 name = T 'Feldspar'; 241 242 tiles = {'starlit-terrain-feldspar.png'}; 242 243 excludeOre = true; 243 244 recover = starlit.type.fab { 244 245 time = { shred = 3; }; 245 246 cost = { shredPower = 3; }; 246 247 }; ................................................................................ 251 252 potassium = rng:int(0,2); 252 253 calcium = rng:int(0,2); 253 254 } 254 255 }; 255 256 end; 256 257 }) 257 258 258 -starlit.world.mineral.link('granite', { 259 +starlit.world.mineral.link('starlit:mineral_granite', { 259 260 name = T 'Granite'; 260 261 tiles = {'starlit-terrain-granite.png'}; 261 262 dist = { 262 263 kind = 'sheet'; 263 - among = 'starlit:feldspar'; 264 + among = 'starlit:mineral_feldspar'; 264 265 height = {-200,30}; 265 266 sheetCols = {1, 16}; 266 267 }; 267 268 recover = starlit.type.fab { 268 - time = { shred = 4; }; 269 + time = { shred = 3.5; }; 269 270 cost = { shredPower = 8; }; 270 271 }; 271 272 recover_vary = function(rng, ctx) 272 - -- print('vary!', rng:int(), rng:int(0,10)) 273 273 return starlit.type.fab { 274 274 element = { 275 - aluminum = rng:int(0,4); 276 - potassium = rng:int(0,2); 277 - calcium = rng:int(0,2); 275 + iron = rng:int(0,4); 276 + magnesium = rng:int(0,2); 277 + titanium = rng:int(0,1); 278 278 } 279 279 }; 280 280 end; 281 281 }) 282 + 283 +starlit.world.mineral.link('starlit:mineral_cuprite', { 284 + name = T 'Cuprite'; 285 + dist = { 286 + kind = 'blob'; 287 + among = 'starlit:mineral_feldspar'; 288 + height = {-20,20}; 289 + clust = 8; 290 + ores = 1; 291 + rare = 1000; 292 + color = lib.color(.5,.2,.1); 293 + noise = { 294 + scale = 1; 295 + spread = vector.new(5,5,5); 296 + seed = 0x1faf7e1; 297 + octaves = 1 298 + } 299 + }; 300 + tiles = {'starlit-terrain-cuprite.png'}; 301 + recover = starlit.type.fab { 302 + element = { copper = 10 }; 303 + time = { shred = 3; }; 304 + cost = { shredPower = 3; }; 305 + }; 306 +}) 282 307 283 308 -- map generation 284 309 285 310 minetest.register_alias('mapgen_stone', 'starlit:mineral_feldspar') 286 311 minetest.register_alias('mapgen_water_source', 'starlit:liquid_water') 287 312 minetest.register_alias('mapgen_river_water_source', 'starlit:liquid_water') 288 313
Modified mods/starlit/ui.lua from [a436d8c893] to [01dfc2a3de].
160 160 local idx, rowH, totalH = 0,0,0 161 161 local cols = def.cols or math.huge 162 162 local startX = state.x 163 163 local maxX = startX 164 164 for _, w in ipairs(def) do idx = idx + 1 165 165 local src, st = starlit.ui.build(w, state) 166 166 -- TODO alignments 167 - rowH = math.max(rowH, st.h) 168 167 if idx > cols or (def.w and (state.x + state.spacing + st.w > def.w)) then 169 168 totalH = totalH + rowH 170 169 state.x = startX 170 + state.y = state.y + state.spacing + rowH 171 171 rowH,idx = 0,0 172 - state.y = state.y + state.spacing + st.h 173 172 end 173 + rowH = math.max(rowH, st.h) 174 174 widget('container[%s,%s]%scontainer_end[]', state.x, state.y, src) 175 175 state.x=state.x + state.spacing + st.w 176 176 maxX = math.max(state.x, maxX) 177 177 end 178 178 totalH = totalH + rowH 179 + state.y = state.y + rowH 179 180 state.h = math.max(state.h, totalH) + state.padding 180 181 state.w = state.x + state.padding/2 181 182 state.x = maxX 182 183 elseif def.kind == 'pane' then 183 184 local top = state.y 184 185 widget('scroll_container[%s,%s;%s,%s;%s;vertical]', 185 186 state.x, state.y, state.w, state.h,