A unnessecary bump but a kickstart to the thread again after i seem to have capsized it.
I want to set the record straight with a actual constructive suggestion (
rather than a collection of well intentioned shitposts) though im still quite fond of the appearance driven barber idea (adventure mode workshop magic haircuts for sprouting beards?/ dyeing your beard pink?)
What i am suggesting is a extension to the plant plugin to control the age of trees. Through testing with dfhack and arena mode (im running the 42.06r1 version) i came across that it only forces the trees to grow to the exact point of maturity by forcing the processes. The actual age of the tree is exactly 1 year (or to say day) old leading to complaints that the command can't generate multilevel trees. This new plugin redesign/rethink would also have some greater controls UI wise via use of co-ordinates to place down trees within a specified space rather than rely on the cursor, meaning they could be run autonomously.
One particular idea i have in general is to force a type of tree to spawn inside/outside to a fixed x/y/z so that we dont have to rely on mouse/all grow UI as currently in the plugin (alternatively on a non collision 1 or 2x2 tile big 'tree-planter' workshop that obscures the trunk from cutting but allows general orchard picking when in season or leave the sapling to grow naturally and force it to grow with progressional uses of bonemeal*) fixture, feed the workshop a proxy reaction with seeds/reagent to force sapling/saplings to spawn, but to also respect trees that are also on the same x/y/z grid adjacent to the workshop active zone.
So in quite literal terms
Reaction=(Plant 'insert sapling name here' NW)
- X and Y in relation to the specified space based off the (hopefully central workspace 2:2 in a 3x3 ideally) location to the workshop using the plugin
- Run checks to whether the surface is soil & solid and not obscured (for simplicity's sake not having mandatory z level minimum height requirements for the sapling to grow naturally is not a great deal and can be thought about and put in later)
- proceed with the 'plant create TOWER_CAPS 100* etc, if not return and issue a announcement and print a message in dfhack that reaction is not available to be completed, and don't execute it. It could be a autonomous grow to that number
The base plugin already has the dirt restrictive preference, so attempting to plant the tree sapling on a rough surface like stone anyway wouldn't work without a varying script composure
*Bonemeal is a powder material collected from grinding bones in a quern to be allocated inside the 'bonemeal' page of the stockpiles stored in bags, its just a end to a means of providing a meaningful reagent to prompt running the sub-command to grow progressional growth, more age via a flat age progression 1/10/25 just demands more powder to be consumed for the reaction at once. Unless there were flexible variables.
*that 100 number variable in the plant create would be the spawned in tree's age upon creation effectively skipping 'plant grow' as to directly grow trees with meaningful lifespans
Post-post creation edit - I have found a Vjek's rejuvenation script
-- This script will make any "old" dwarf 20 years old
-- usage is: target a unit in DF, and execute this script in dfhack
-- via ' lua /path/to/script '
-- the target will be changed to 20 years old
-- by vjek, version 2, 20120703, for DF(hack) 34.11
-- Paise Armok!
function rejuvenate()
local current_year,newbirthyear
unit=dfhack.gui.getSelectedUnit()
if unit==nil then
print ("No unit under cursor! Aborting with extreme prejudice.")
return
end
current_year=df.global.cur_year
newbirthyear=current_year - 20
if unit.relations.birth_year < newbirthyear then
unit.relations.birth_year=newbirthyear
end
print (unit.name.first_name.." is now 20 years old")
end
rejuvenate()
That's all very well and nice but the reason i pulled this out was because of this bit of code.
current_year=df.global.cur_year
newbirthyear=current_year - 20
This sets a dwarf's age to a flat 20 diminishingly (as in it does not act additive to children to force them to grow up), if the same rhetoric can be applied to trees then we can flat out control what age they grow too. Observe this noobish mockup i created as proof of concept.
current_year=df.global.cur_year
(grow++ date)=current_year + 20
Reaction=(Feed NW tree one bag of bonemeal/compost)
- Establish a X and Y relationship to reading the iftree=true in that location
- If it is not a iftree=true at the x y location, cancel and spam that it cannot be completed by the workshop and in dfhack
- Proceed to execute age differences and forcefully grow the tree consuming the reagent in the workshop side reaction
I don't know enough about the background coding to effectively make any substantial plugin code myself but throwing it out to the community is the best thing i can do right now. It would be especially helpful to speak to the creator of the plant plugin, and i invite them to talk with me privately about this over PM's if they wish.