Template:Recipe define: Difference between revisions
From Captain of Industry Wiki
Thadius856 (talk | contribs) Add ability for air/water polution in dumping and flaring |
Thadius856 (talk | contribs) Overhaul to reprecate Venting, DumpingLiq, and Flare params. Incorporate variables for code reuse and ease of reconfig. Detect building param from Template:Infobox machine. Some debug code included to find/fix errors once I submit this edit. |
||
| Line 1: | Line 1: | ||
<includeonly><templatestyles src="Template:Recipe/styles.css" /><!-- | <includeonly><templatestyles src="Template:Recipe/styles.css" /><!-- | ||
** Clear variables in case of multiple uses on one page ** | |||
-->{{#vardefine: accepts | no}}<!-- | |||
-->{{#vardefine: provides | no}}<!-- | |||
** Set up variables to specify desired settings and reuse code ** | |||
-->{{#vardefine: img_arrow | [[File:Icon arrow right.svg|30x45px]] }}<!-- | |||
-->{{#vardefine: imgsz_bldg | 72x72px }}<!-- | |||
-->{{#vardefine: imgsz_large | 64x64px }}<!-- | |||
-->{{#vardefine: imgsz_reg | 48x48px }}<!-- | |||
--><div class="recipe-wrapper"><!-- | --><div class="recipe-wrapper"><!-- | ||
-->{{#if: {{{Mining|}}} |<!-- | ** Special output for when `Mining = yes` ** | ||
-->{{#if: {{{Mining|}}} |<!-- | |||
--><div class="block">[[File:Mining.png{{!}}{{#var: imgsz_large}}{{!}}link=Mining]]</div><!-- | |||
--><div class="block">{{#var: img_arrow}}</div><!-- | |||
--><div class="block">[[File:{{{Output1Name}}}.png{{!}}{{#var: imgsz_large}}{{!}}link={{{Output1Name}}}]]</div><!-- | |||
-->}}<!-- | |||
** Special output for when `Dumping = yes` ** | |||
-->{{#if: {{{Dumping|}}} |<!-- | |||
--><div class="block">[[File:{{{Input1Name}}}.png{{!}}{{#var: imgsz_large}}{{!}}link={{{Input1Name}}}]]</div><!-- | |||
--><div class="block">{{#var: img_arrow}}</div><!-- | |||
--><div class="block">[[File:Dumping.png{{!}}{{#var: imgsz_large}}{{!}}link=Dumping]]</div><!-- | |||
-->}}<!-- | |||
** Stop output if we we drew Mining or Dumping ** | |||
-->{{#if: {{{Mining|}}}{{{Dumping|}}} ||<!-- | |||
** Check if Template:Infobox_machine already knows the building. If not, try the `Building` param. ** | |||
** Then if we still don't know the building, halt execution and display an error message. ** | |||
-->{{#if: {{#varexists: info_bldg}}||<!-- | |||
-->{{#if: {{{Building|}}}|<!-- | |||
-->{{#vardefine: bldg | {{{Building}}} }}|<!-- | |||
--><span style="font-size: 24px; color: red; font-weight: bold">Building not defined</span><!-- | |||
-->[[Category:Broken recipe template usage]]<!-- DEBUG DEBUG DEBUG | |||
-->}}<!-- | -->}}<!-- | ||
-->}}<!-- | |||
-->{{#if: {{{ | ** Main sequence starts here ** | ||
-->{{#if: {{#varexists: bldg}} |<!-- | |||
** Determine if we should display the "PROVIDES" or "ACCEPTS" text in the output ** | |||
-->{{#switch: {{#var: bldg}} | |||
| Flare | |||
| Smoke Stack | |||
| Liquid Dump = {{#vardefine: accepts | yes}} | |||
| Groundwater Pump | |||
| Air Separator | |||
| Seawater Pump | |||
| Oil Pump = {{#vardefine: provides | yes}} | |||
}}<!-- | |||
** Draw the building (and colon) unless the user or Template:Infobox_machine set it to hidden. ** | |||
-->{{#if: {{{HideBldg|}}}{{#varexists:hidebldg}} ||<!-- | |||
--><div class="block">[[File:{{{Building}}}.png{{!}}{{#var: imgsz_bldg}}{{!}}link={{{Building}}}]]</div><!-- | |||
--><div class="block colon">:</div><!-- | |||
-->}}<!-- | |||
** Draw "ACCEPTS" or "PROVIDES", if appropriate ** | |||
-->{{#ifeq: {{#var: accepts}} | yes | <div class="block accepts-provides">ACCEPTS</div> }}<!-- | |||
-->{{#ifeq: {{#var: provides}} | yes | <div class="block accepts-provides">PROVIDES</div> }}<!-- | |||
** Draw 1st input ** | |||
-->{{#if: {{{ | -->{{#if: {{{Input1Name|}}} |<!-- | ||
-- | --><div class="block"><!-- | ||
--><div class="upper">{{#if: {{{Input1Unit|}}} | | {{{Input1Qty|}}} {{{Input1Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input1Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input1Name}}}]]<!-- | |||
-->{{#if: {{{Input1Unit|}}} | <!-- | |||
--><div class="lower">{{{Input1Qty|}}} {{{Input1Unit|}}}</div>|<!-- | |||
--><div class=" | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input1Qty|}}} }}</div><!-- | --><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input1Qty|}}} }}</div><!-- | ||
-->}}<!-- | -->}}<!-- | ||
-->}}<!-- | --></div><!-- | ||
-->}}<!-- | |||
** Draw 2nd input ** | |||
-->{{#if: {{{Input2Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
-->{{# | --><div class="block"><!-- | ||
--><div class="upper">{{#if: {{{Input2Unit|}}} | | {{{Input2Qty|}}} {{{Input2Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input2Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input2Name}}}]]<!-- | |||
--><div class=" | -->{{#if: {{{Input2Unit|}}} | <!-- | ||
--><div class="lower">{{{Input2Qty|}}} {{{Input2Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input2Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 3rd input ** | |||
-->{{#if: {{{Input3Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input3Unit|}}} | | {{{Input3Qty|}}} {{{Input3Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input3Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input3Name}}}]]<!-- | |||
-->{{#if: {{{Input3Unit|}}} | <!-- | |||
--><div class="lower">{{{Input3Qty|}}} {{{Input3Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input3Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 4th input ** | |||
-->{{#if: {{{Input4Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input4Unit|}}} | | {{{Input4Qty|}}} {{{Input4Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input4Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input4Name}}}]]<!-- | |||
-->{{#if: {{{Input4Unit|}}} | <!-- | |||
--><div class="lower">{{{Input4Qty|}}} {{{Input4Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input4Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 5th input ** | |||
-->{{#if: {{{Input5Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input5Unit|}}} | | {{{Input5Qty|}}} {{{Input5Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input5Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input5Name}}}]]<!-- | |||
-->{{#if: {{{Input5Unit|}}} | <!-- | |||
--><div class="lower">{{{Input5Qty|}}} {{{Input5Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input5Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 6th input ** | |||
-->{{#if: {{{Input6Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Input6Unit|}}} | | {{{Input6Qty|}}} {{{Input6Unit|}}} }}</div><!-- | |||
-->[[File:{{{Input6Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Input6Name}}}]]<!-- | |||
-->{{#if: {{{Input6Unit|}}} | <!-- | |||
--><div class="lower">{{{Input6Qty|}}} {{{Input6Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Input6Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw the recipe times unless it has a unit defined (electricity). ** | |||
** Draw the arrow unless (accepts OR provides is set) AND output1 is empty (e.g., venting non-polluting gasses) ** | |||
-->{{#if: {{{Time|}}} |<!-- | |||
--><div class="block time"><!-- | |||
-->{{#ifeq: {{lc:{{{Time}}}}} | instant || <!-- | |||
--><div class="upper">/ {{{Time}}} [[File:Clock.png|link=|16x16px]]</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--> | |||
--><div><!-- | |||
-->{{#if: {{{Output1Name|}}} |<!-- | |||
-->{{#var: img_arrow}} |<!-- | |||
-->{{#ifeq: {{#var: accepts}} | yes | <br/>}}{{#ifeq: {{#var: provides}} | yes | <br/>}}<!-- | |||
-->}}<!-- | |||
--></div><!-- | |||
-->}}</ | |||
-->{{#ifeq: {{lc:{{{Time}}}}} | instant || <!-- | |||
--><div class="lower blue">/ 60 [[File:Clock 60s.png|link=|16x16px]]</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 1st output ** | |||
-->{{#if: {{{Output1Name|}}} |<!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output1Unit|}}} | | {{{Output1Qty|}}} {{{Output1Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output1Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output1Name}}}]]<!-- | |||
-->{{#if: {{{Output1Unit|}}} | <!-- | |||
--><div class="lower">{{{Output1Qty|}}} {{{Output1Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output1Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 2nd output ** | |||
-->{{#if: {{{Output2Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output2Unit|}}} | | {{{Output2Qty|}}} {{{Output2Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output2Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output2Name}}}]]<!-- | |||
-->{{#if: {{{Output2Unit|}}} | <!-- | |||
--><div class="lower">{{{Output2Qty|}}} {{{Output2Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output2Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 3rd output ** | |||
-->{{#if: {{{Output3Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output3Unit|}}} | | {{{Output3Qty|}}} {{{Output3Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output3Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output3Name}}}]]<!-- | |||
-->{{#if: {{{Output3Unit|}}} | <!-- | |||
--><div class="lower">{{{Output3Qty|}}} {{{Output3Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output3Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 4th output ** | |||
-->{{#if: {{{Output4Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output4Unit|}}} | | {{{Output4Qty|}}} {{{Output4Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output4Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output4Name}}}]]<!-- | |||
-->{{#if: {{{Output4Unit|}}} | <!-- | |||
--><div class="lower">{{{Output4Qty|}}} {{{Output4Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output4Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 5th output ** | |||
-->{{#if: {{{Output5Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output5Unit|}}} | | {{{Output5Qty|}}} {{{Output5Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output5Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output5Name}}}]]<!-- | |||
-->{{#if: {{{Output5Unit|}}} | <!-- | |||
--><div class="lower">{{{Output5Qty|}}} {{{Output5Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output5Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Draw 6th output ** | |||
-->{{#if: {{{Output6Name|}}} |<!-- | |||
--><div class="block plus">+</div><!-- | |||
--><div class="block"><!-- | |||
--><div class="upper">{{#if: {{{Output6Unit|}}} | | {{{Output6Qty|}}} {{{Output6Unit|}}} }}</div><!-- | |||
-->[[File:{{{Output6Name}}}.png{{!}}{{#var: imgsz_reg}}{{!}}link={{{Output6Name}}}]]<!-- | |||
-->{{#if: {{{Output6Unit|}}} | <!-- | |||
--><div class="lower">{{{Output6Qty|}}} {{{Output6Unit|}}}</div>|<!-- | |||
--><div class="lower blue">{{#expr: 60/{{{Time|1}}}*{{{Output6Qty|}}} }}</div><!-- | |||
-->}}<!-- | -->}}<!-- | ||
--></div><!-- | |||
-->}}<!-- | |||
** Debug code. Remove once completed. ** | |||
-->{{#if: {{{Venting|}}}{{{DumpingLiq|}}}{{{Flare|}}} | [[Category:Clean me up Scotty]]}}<!-- | |||
-->}}<!-- End of building check | |||
-->}}<!-- End of Mining/Dumping check | |||
--></div></includeonly><!-- | --></div></includeonly><!-- | ||
--><noinclude>{{documentation}}</noinclude> | --><noinclude>{{documentation}}</noinclude> | ||
Revision as of 12:34, 17 January 2022
Template documentation (for the above template, sometimes hidden or invisible) [view] [edit] [history] [refresh]
- Purpose
- This template provides a method to rapidly illustrate crafting recipes without in-depth knowledge of wiki syntax or manual repetition/copy-pasting.
- Basic usage
- The following 2 templates are provided for making a recipe.
- Template: Recipe define: Defines a recipe. The defined recipe can be called by Template: Recipe fetch from any page in this wiki. Usually, recipes are defined on the page of a building. This template only defines recipes but does not display anything.
- Template: Recipe draw: Only displays a written recipe. The recipe written with this template cannot be called by Template: Recipe fetch.
- Both templates can be used with the format written in #Examples in this document.
- Parameters
- The template accepts the following parameters:
Building: Name of buildings (example: Blast Furnace). No need to specify on pages using Template:Infobox machine because the building is automatically detected.Input1Name,Input2Name, ...,Input6Name: Name of materials (example: Iron Ore)Input1Name = Mining(optional): Applies special format for mining.
Output1Name,Output2Name, ...Output6Name: Name of products (example: Molten Iron)Output1Name = Dumping(optional): Applies special format for dumping.
Input1Qty, ...,Input6Qty,Output1Qty, ...,Output6Qty: Amount of materials or products per 1 cycle of recipe.Time: Cycle time of recipe.Input1Unit, ...,Input6Unit,Output1Unit, ...,Output6Unit(optional): Adds unit (for Electricity and Mechanical Power)HideBldg(optional, rare): Hides building in recipe. No need to specify on pages using Template:Infobox machine (the building is automatically hidden).Unreleased = yes(optional, rare): Applies special format for unreleased recipe
- Limitations
- This template can accept up to 6 inputs, 6 outputs, and 1 time value per recipe. The output can include only 1 pollution.
Examples
- Example usage for mining
| Markup | Renders as |
|---|---|
{{Recipe
| Input1Name = Mining
| Output1Name = Copper Ore
}}
|
|
- Example usage for dumping loose materials
| Markup | Renders as |
|---|---|
{{Recipe
| Output1Name = Dumping
| Input1Name = Rock
}}
|
|
- Example usage for a machine with both inputs and outputs without pollution (most recipes)
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Rotary Kiln
| Input1Name = Limestone
| Input1Qty = 12
| Input2Name = Coal
| Input2Qty = 2
| Time = 10
| Output1Name = Cement
| Output1Qty = 4
| Output2Name = Exhaust
| Output2Qty = 8
}}
|
|
- Example for buildings that "provide" materials (Groundwater Pump, Air Separator, etc.)
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Groundwater Pump
| Time = 10
| Output1Name = Water
| Output1Qty = 8
}}
|
|
- Example usage for dumping/flaring/venting non-polluting liquids/gasses
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Smoke Stack
| Input1Name = Oxygen
| Input1Qty = 200
| Time = 20
}}
|
|
- Example usage for recipe with pollution
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Liquid Dump
| Input1Name = Waste Water
| Input1Qty = 2
| Time = 2
| Output1Name = Water Pollution
| Output1Qty = 2
}}
|
|
{{Recipe
| Building = Exhaust Scrubber
| Input1Name = Exhaust
| Input1Qty = 30
| Input2Name = Water
| Input2Qty = 4
| Time = 10
| Output1Name = Sulfur
| Output1Qty = 1
| Output2Name = Carbon Dioxide
| Output2Qty = 12
| Output3Name = Steam Lo
| Output3Qty = 4
| Output4Name = Air Pollution
| Output4Qty = 4
}}
|
|
- Example usage for Mechanical Power and Electricity recipes with units
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Low-pressure Turbine
| Input1Name = Steam Lo
| Input1Qty = 4
| Time = 5
| Output1Name = Mechanical Power
| Output1Qty = 1
| Output1Unit = MW
| Output2Name = Steam Depleted
| Output2Qty = 4
}}
|
|
- Example usage for instantaneous recipes
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Power Generator
| Input1Name = Mechanical Power
| Input1Qty = 500
| Input1Unit = KW
| Time = 0
| Output1Name = Electricity
| Output1Qty = 250
| Output1Unit = KW
}}
|
|
- Example usage for recipes with variable quantity
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Waste Collection
| Time = 60
| Output1Name = Waste
| Output1Unit = ?
}}
|
|
- Example usage for hiding the building (automatically happens on pages using Template:Infobox machine)
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Mixer
| HideBldg = yes
| Input1Name = Sand
| Input1Qty = 18
| Input2Name = Limestone
| Input2Qty = 4
| Input3Name = Salt
| Input3Qty = 4
| Time = 20
| Output1Name = Glass Mix
| Output1Qty = 14
}}
|
|
- Example usage for unreleased recipe
| Markup | Renders as |
|---|---|
{{Recipe
| Building = Crusher
| Input1Name = Gravel
| Input1Qty = 18
| Time = 20
| Output1Name = Gold
| Output1Qty = 14
| Unreleased = yes
}}
|
|
The above text is transcluded from Template:Recipe draw/doc; you can change it or view its history. (How does this work?)
If you're done making changes, please refresh the text. (Why?)
You can experiment in this template's sandbox (create | mirror ) and testcases (create) pages.
Please add categories and interwikis to Template:Recipe draw/doc. (View all subpages of this page.)
If you're done making changes, please refresh the text. (Why?)
You can experiment in this template's sandbox (create | mirror ) and testcases (create) pages.
Please add categories and interwikis to Template:Recipe draw/doc. (View all subpages of this page.)