sorcery  Check-in [6a4d5ed7c7]

Overview
Comment:tweaks, add getting started guide
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 6a4d5ed7c712c7529efcc1ace1105cd97ee88cbfe45ec15701bdf9a465864b1f
User & Date: lexi on 2021-07-06 13:35:01
Other Links: manifest | tags
Context
2021-07-06
14:32
coin press fixes check-in: 38ae873453 user: lexi tags: trunk
13:35
tweaks, add getting started guide check-in: 6a4d5ed7c7 user: lexi tags: trunk
04:32
fix sap interval check-in: ecfe4b244e user: lexi tags: trunk
Changes

Modified data/gods.lua from [555bdcec59] to [d4c4fca81d].

321
322
323
324
325
326
327





328
329
330
331
332
333
334
				"default_obsidian.png";
				"default_gold_block.png";
				"default_copper_block.png";
				-- "default_bronze_block.png^[multiply:#C32F2F";
				"default_bronze_block.png";
				"default_tin_block.png";
			};





		};
		sacrifice = {
			["sorcery:blood"] = 3;
			["bonemeal:bone"] = 9;
			["default:bones"] = 17;
			["sorcery:oil_sanguine"] = 26;








>
>
>
>
>







321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
				"default_obsidian.png";
				"default_gold_block.png";
				"default_copper_block.png";
				-- "default_bronze_block.png^[multiply:#C32F2F";
				"default_bronze_block.png";
				"default_tin_block.png";
			};
			craft = {
				{'sorcery:oil_sanguine','default:copper_ingot','sorcery:oil_sanguine'};
				{'default:bronze_ingot', 'default:obsidian','default:bronze_ingot'};
				{'default:tin_ingot','stairs:slab_goldblock','default:tin_ingot'};
			};
		};
		sacrifice = {
			["sorcery:blood"] = 3;
			["bonemeal:bone"] = 9;
			["default:bones"] = 17;
			["sorcery:oil_sanguine"] = 26;

Modified lore.md from [044261e67c] to [f14d5fb19f].

1
2





































# sorcery default lore
while individual worlds can can modify, augment, or replace it, sorcery comes with a default 'lorepack' (set of data interpreted by the mod mechanics). this is a minimal guide designed to get you started exploring it, and for developers to give them a sense of how the lore data is interpreted and what is done with it. the lore itself is purposely *not* exhaustively documented, as figuring out what you can do and writing in-game books on the topic is meant to be a core social mechanic!







































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# sorcery default lore
while individual worlds can can modify, augment, or replace it, sorcery comes with a default 'lorepack' (set of data interpreted by the mod mechanics). this is a minimal guide designed to get you started exploring it, and for developers to give them a sense of how the lore data is interpreted and what is done with it. the lore itself is purposely *not* exhaustively documented, as figuring out what you can do and writing in-game books on the topic is meant to be a core social mechanic!

## getting started
the easiest way to start finding recipes for Sorcery is by petitioning gods for their favor. all gods will share various recipes with you once you've reached enough divine favor with them; just place a piece of paper on the altar and it will be transformed. however, each god only offers information on particular topics.

	* the Harvest Goddess will teach you to cook and craft things useful for farming, as well as recipes for alchemy. she is pleased by offerings of things made from nature's bounty -- bread, pies, and so on. particularly wines.

	* her husband the God of Sorcery will teach you spells and recipes for technology. he is more difficult to please and his aid more costly. he accepts offerings of rare things found in the world, particularly gemstones, and small magitech components. however, there are some secrets even he is loathe to share. for those, you must turn to…

	* the God of Blood reigns over war, slaughter, and the blackest of black arts. his worship is utterly forbidden.

### worship crafting

    Harvest Idol
    
     tFt  t = Tin Fragment    G = Gold Ingot
     cGc  F = Fern            $ = Gold Slab
      $   c = Copper Fragment
    
    Mystic Idol
    
     BGo  o = Obsidian Shard  G = Gold Ingot
     cSc  S = Silver Ingot    $ = Gold Slab
     o$B  c = Copper Fragment B = Bronze Ingot

    Altar
    
     VVV  V = Votive Candle   b = Bronze Coin
     g_b  _ = Stone Slab      t = Tin Coin
      t   g = Gold Coin

of course, if you don't have an economy up and running yet, you'll need to make the coins yourself:
    
    Coin Press
    
     www  w = Wooden Planks   | = Steel Bar
     |S|  S = Steel Ingot     C = Copper Ingot
     CKC  K = Stone Block

Modified settingtypes.txt from [4a4cb020f3] to [725725f3db].

1
2
3
4



# common tweaks for the sorcery mod

# allow the XDecor enchanter to coexist with the Sorcery enchanter
compat_xdecor_allow_enchanter	(Compat/XDecor: Allow Enchanter)	bool false






|
>
>
>
1
2
3
4
5
6
7
# common tweaks for the sorcery mod

# allow the XDecor enchanter to coexist with the Sorcery enchanter
sorcery_compat_xdecor_allow_enchanter	(Compat/XDecor: Allow Enchanter)	bool false

# hide the recipe viewer for users without the sorcery:omniscience privilege to avoid disrupting the game information economy
sorcery_compat_craftguide_conceal	(Compat/MTG Craftguide: Conceal)	bool true

Modified sorcery.md from [17b053c9d3] to [9b54d0ccbf].

57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 * if you need to travel quickly between two distant places, and you're wealthy enough to afford it, you can build yourself one of the most powerful and complex of magitech devices — the **Teleporter**. it's no mean feat: even the smallest teleporter requires a teleport pad with a reflector above it and a portal node connected to one or the other. the teleporter will then need to be connected to its destination with cables or conduits, and if where you're travelling is very far away, you'll have to build two separate ley nets and bridge them by using an **Attunement Wand** on a pair of **Raycasters** — or perhaps even **Farcasters**. the power required to operate all of these devices is not trivial, and while a Farcaster's signal can pierce through any substance and cross any distance to reach its destination, the farther away each is from the other, the more power each side will consume. and casters can't send current, they can only send signals, so you may need a sizable power plant on both sides of the portal.
 * if all you need to do is send small items, of course, a **Displacer** is much cheaper, and more flexible. if you're feeling particularly ambitious, you could use a Displacer net to connect your whole kingdom with instantaneous package service.
 * stop your foes in their tracks by flipping a switch to turn on your **Force Field Emitters**, generating an impenetrable barrier wherever they aim.
 * who needs elevators when you have **Gravitators**? float gently up a vast borehole, bring attackers crashing down to earth, or slow a fatal plunge to a soft and easy landing.
 * build graven **Idols** to your gods and set sacrifices to them upon an altar. if they're feeling generous, they might start sending you presents of their own, or consecrating your offerings. but beware: different gods have different tastes (and different powers), and get bored quickly with repetitive offerings.
 * to bend the ultimate arcane forces of the cosmos to your will, you'll need a **Rune Forge**. with a strong ley-current and a steady supply of **Phials** from an Infuser, a Rune Forge will crystallize thaumic impurities into Runes that can you can imbue into a gemstone **Amulet** with a **Rune Wrench**. each amulet can only be used once before it loses its charge, and it may be a long time before the same kind of rune happens to coalesce in your forge again, but the spells they unleash are unique and priceless boons — or weapons. teleport without a teleporter! purge your environs of all spellcraft no matter how fearsomely potent! surround yourself with a shimmering Disjunction Field that, for a short while, will snuff out any spell it touches and, rendering enemy mages utterly helpless and piercing otherwise impenetrable defenses! stride through solid stone like open air! carve huge tunnels deep into the rock with only a snap of your fingers! rain obliteration down upon a target of your choosing! send forth a titanic bolt of flame with the power to blast open mountainsides! tear the very life force straight from an enemy's body and use it to fortify your being! all this and more can be done with the power of rune magic.

there's more as well. i have yet to figure out how i want to go about introducing users to the lore (although you can occasionally find random recipes in dungeon chests, and gods can be coaxed to bestow recipes and cookbooks), but for now there's some information on the wiki and some things you can glean from creative mode; otherwise you'll have to read the source code.

# lore
`sorcery` supplies a default system of lore (that is, the arbitrary objects that the basic principles of the setting operate over) but this can be augmented or replaced on a per-world basis. for instance, you can substitute your own gods for the Harvest Goddess, Blood God, change their names, and so on, or simply make your own additions to the pantheon. since lore overrides are stored outside the minetest tree, it can be updated without destroying your changes.

lore is stored separately from the rest of the game logic, in the 'data' directory of the `sorcery` mod. it is arranged in a hierarchy of thematically-organized tables. for instance, the table of gods can be found in `data/gods.lua`. ideally, lore tables should contain plain data, though they can also contain lambdas if necessary. lore files are evaluated in the second stage of the init process, after library code has been loaded but before any game logic has been instantiated. lore can thus depend on libraries where reasonable (though e.g. colors should be stored as 3-tuples rather than `sorcery.lib.color` objects, and images as texture strings, unless there is a very good reason to do otherwise).

lore files should never depend on functions in the `minetest` or `core` namespace! if you really need such functionality, gate it off with an if statement and be sure to return something useful in the event that the namespace isn't defined. *lore is just data:* as a general principle, non-minetest code should be able to evaluate and make use of the lore files, for instance to produce an HTML file tabulating the various potions and how to create them. lore should also not mutate the global environment: while there is currently nothing preventing it from doing so, steps will likely be taken in the future to give each lore module a clean environment to keep it from contaminating the global namespace. right now, all functions and variables declared in a lore file should be defined `local`. the only job of a lore file is to return a table.







|







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 * if you need to travel quickly between two distant places, and you're wealthy enough to afford it, you can build yourself one of the most powerful and complex of magitech devices — the **Teleporter**. it's no mean feat: even the smallest teleporter requires a teleport pad with a reflector above it and a portal node connected to one or the other. the teleporter will then need to be connected to its destination with cables or conduits, and if where you're travelling is very far away, you'll have to build two separate ley nets and bridge them by using an **Attunement Wand** on a pair of **Raycasters** — or perhaps even **Farcasters**. the power required to operate all of these devices is not trivial, and while a Farcaster's signal can pierce through any substance and cross any distance to reach its destination, the farther away each is from the other, the more power each side will consume. and casters can't send current, they can only send signals, so you may need a sizable power plant on both sides of the portal.
 * if all you need to do is send small items, of course, a **Displacer** is much cheaper, and more flexible. if you're feeling particularly ambitious, you could use a Displacer net to connect your whole kingdom with instantaneous package service.
 * stop your foes in their tracks by flipping a switch to turn on your **Force Field Emitters**, generating an impenetrable barrier wherever they aim.
 * who needs elevators when you have **Gravitators**? float gently up a vast borehole, bring attackers crashing down to earth, or slow a fatal plunge to a soft and easy landing.
 * build graven **Idols** to your gods and set sacrifices to them upon an altar. if they're feeling generous, they might start sending you presents of their own, or consecrating your offerings. but beware: different gods have different tastes (and different powers), and get bored quickly with repetitive offerings.
 * to bend the ultimate arcane forces of the cosmos to your will, you'll need a **Rune Forge**. with a strong ley-current and a steady supply of **Phials** from an Infuser, a Rune Forge will crystallize thaumic impurities into Runes that can you can imbue into a gemstone **Amulet** with a **Rune Wrench**. each amulet can only be used once before it loses its charge, and it may be a long time before the same kind of rune happens to coalesce in your forge again, but the spells they unleash are unique and priceless boons — or weapons. teleport without a teleporter! purge your environs of all spellcraft no matter how fearsomely potent! surround yourself with a shimmering Disjunction Field that, for a short while, will snuff out any spell it touches and, rendering enemy mages utterly helpless and piercing otherwise impenetrable defenses! stride through solid stone like open air! carve huge tunnels deep into the rock with only a snap of your fingers! rain obliteration down upon a target of your choosing! send forth a titanic bolt of flame with the power to blast open mountainsides! tear the very life force straight from an enemy's body and use it to fortify your being! all this and more can be done with the power of rune magic.

there's more as well. users are intended to discover recipes through trade with others, but if you're playing in singleplayer or you're the first person on a new server, that won't work. if you feel like cheating, you can enable the MTG Craftguide or read the Sorcery source code (and there's some recipes on the wiki) but the "correct" way of gaining new recipes is through worship.  you can find instructions for building idols and altars in "lore.md".

# lore
`sorcery` supplies a default system of lore (that is, the arbitrary objects that the basic principles of the setting operate over) but this can be augmented or replaced on a per-world basis. for instance, you can substitute your own gods for the Harvest Goddess, Blood God, change their names, and so on, or simply make your own additions to the pantheon. since lore overrides are stored outside the minetest tree, it can be updated without destroying your changes.

lore is stored separately from the rest of the game logic, in the 'data' directory of the `sorcery` mod. it is arranged in a hierarchy of thematically-organized tables. for instance, the table of gods can be found in `data/gods.lua`. ideally, lore tables should contain plain data, though they can also contain lambdas if necessary. lore files are evaluated in the second stage of the init process, after library code has been loaded but before any game logic has been instantiated. lore can thus depend on libraries where reasonable (though e.g. colors should be stored as 3-tuples rather than `sorcery.lib.color` objects, and images as texture strings, unless there is a very good reason to do otherwise).

lore files should never depend on functions in the `minetest` or `core` namespace! if you really need such functionality, gate it off with an if statement and be sure to return something useful in the event that the namespace isn't defined. *lore is just data:* as a general principle, non-minetest code should be able to evaluate and make use of the lore files, for instance to produce an HTML file tabulating the various potions and how to create them. lore should also not mutate the global environment: while there is currently nothing preventing it from doing so, steps will likely be taken in the future to give each lore module a clean environment to keep it from contaminating the global namespace. right now, all functions and variables declared in a lore file should be defined `local`. the only job of a lore file is to return a table.