I've written two programs.
LangCreate - Download Here (http://dffd.wimbli.com/file.php?id=7174)The first generates a DF language in great detail, with prefixes and suffixes to words, imitating word roots (in other words, "xia-" might be added to the front of any word with the "domestic" symbol). It lets you put in word examples (minimum of 10 or so), and then takes those and creates a language from them. For example, putting "murasaki,saru,shokkiarai,zonbi,haburashi,kokonatsu,yoso,randamu,baka,kobito,yosai" would be enough to create a language with a Japanese theme. There are some major limitations, though.Spoiler (click to show/hide)
1. My laptop died back in May, so I had to rebuild the language generator on a prehistoric computer in a prehistoric programming language/compiler. It may or may not work on linux and macs. I don't know. I'd rather use C++ or Java, but I can't get any IDEs to run on the computer I've been using.
2. You have to use standard English letters. No using this: å or anything remotely like it, or it'll spit out some really weird words. (Besides, DF doesn't even read those characters.)
(actually, that's all the limitations.)
RandCreatures - Download Here (http://dffd.wimbli.com/file.php?id=7173)The second, and my favorite, randomly generates anywhere from 10 to 1000 absolutely random, fully-functional DF creatures. Each creature has unique descriptions, prefstrings, and names. It all makes sense, too. The more creatures you gen, the more likely the program will find some of them to be worthy of civ status, and it'll then actually custom-design a random civ for the creature, which will actually survive worldgen. You may even see winged, trunked, bipedal creatures building castles at some point, but I'd count on something a little more bizarre.Spoiler (click to show/hide)
There are, of course, some minor limitations.
1. It's written in the same language as #1, and has the same issues.
2. There aren't any creatures that cause syndromes. Yeah, sorry. No uberpoisonous snakes. Yet.
3.If you add 1000 creatures and go into adventure mode, you'll likely see creatures EVERYWHERE. Dwarf Fortress doesn't scale down the amount of wildlife relative to the species count. Instead, it keeps adding. The more unique species you add, the more wildlife you see.Fixed. In a manner of speaking.
On the plus side, the game is still playable, no matter what it gens.You won't get one-shotted by anything.(unless you come across a semimegabeast or megabeast, in which case may Armok rest your soul.)
Not to nit pick but shouldn't this be in the modding section?
-lots of stuff here -Thanks for the detailed review! I'm glad you found it useful.
Love the creature generator, got a few good ones that seem like perfect things to throw against my hapless fortresses.Thanks!
If you don't mind me asking how did you get it to generate the creatures? In one of the resource libraries do you have a dictionary of body, material, and body-template tokens along with a general creature template?
I've always wanted to try writing a creature generator but one of the best ways that came to me was copying each tag into a dictionary or other list schema and then jumbling them up together that way. That doesn't seem the most productive or best way to do so. Don't even have a clue as to how I would create rules to get something intelligible or raw worthy. Do you have any pointers or suggestions I might be able to use? I don't want the source code but I'd like an idea of a possible pseudo-implementation I could start with, I'll struggle with it from there.You're right, it's not the most productive way. You have to have if-then rules that determine what can be added. If a creature has fingers, for example, then it can get claws or fingernails - but that doesn't necessarily mean it will. You go through it one line at a time. Mixing everything up and randomizing it would be very, very detrimental to your game's loading time and size of the errorlog.txt. (lol. Trust me on this one, I had it over a megabyte in size at one point.)
Man, I was really rooting for Girlinhat when she was actually talking about making that program; seemed bloody awesome at the time, and it still does now that you've actually done it. I'll probably use this at some point, maybe just because I like ‼surprises‼ in games.DFLangCreate is actually completely separate. It bears (as far as I know) few resemblances (if any) to DFLang. I actually created it before I knew DFLang existed.
Is your DFlang system an update to the older DFlang still available on the DFFD? I haven't had any real issues with the older one, so I'll wait and see how much more advanced yours can get beyond generating off much shorter strings.
Man, I was really rooting for Girlinhat when she was actually talking about making that program; seemed bloody awesome at the time, and it still does now that you've actually done it. I'll probably use this at some point, maybe just because I like ‼surprises‼ in games.DFLangCreate is actually completely separate. It bears (as far as I know) few resemblances (if any) to DFLang. I actually created it before I knew DFLang existed.
Is your DFlang system an update to the older DFlang still available on the DFFD? I haven't had any real issues with the older one, so I'll wait and see how much more advanced yours can get beyond generating off much shorter strings.
DFLang works (as I understand) by letting you add in words from real-world languages. It tries to make words that sound like they go with those real-world languages. My program lets you custom-create a language. Instead of being restricted to something you'd hear in real life, you can make a language that looks like "eenoweeno buggubbaweegee mugga hannomoogo", if you feel so inclined. The length of the words genned is determined by the length of the fake (or real) words you put in, so if you put in: "parsimonious,accoutrements,sesquipedalian,circumlocution,remunerative,idiosyncratic,anomalistic,perfidiousness,unencumbered,auspicious,unparagoned,magnanimous"
it might spit this out at you.
[T_WORD:ABBEY:samelemes]
[T_WORD:ACE:retrodad]
[T_WORD:ACT:umecis]
[T_WORD:AFTER:aumavenaminus]
[T_WORD:AGE:pedipiss]
[T_WORD:AGELESS:ciodanemiarioras]
[T_WORD:ALE:mematios]
[T_WORD:ANCIENT:cireccetalepiss]
[T_WORD:ANGEL:relaciomecas]
[T_WORD:ANGER:celerfuinore]
[T_WORD:ANIMAL:ruilepiruricetre]
[T_WORD:APE:umiritre]
[T_WORD:APPLE:memlevelin]
[T_WORD:ARCH:retrigud]
I'm pretty sure DFLang can't do that. :P But then, I've never actually used it, so I don't know.
On the down side, DFLang's creations are probably a LOT more likely to look like real-world languages. The best mine can do is imitate.
it didn't have enough words, but it genned it anyway. closer to the end of the file, when it started running out of combinations, it began making them longer:Just a small tweak suggestion: Giving short words higher priority might give them a better chance of getting a suitable (short) combination. (Picking the nit.)
It does give shorter words a higher priority, actually. That's why it ran out of (shorter) combinations and was forced to make some of the words longer to keep from dumping the whole batch. There's a message at the end of the generated file that warns you if it happens: "Forced maximum word length X letters longer than normal". If it says "3", that means that on average, the words are 3 letters longer than the "standard", which is the default dwarven language (the one Toady wrote).it didn't have enough words, but it genned it anyway. closer to the end of the file, when it started running out of combinations, it began making them longer:Just a small tweak suggestion: Giving short words higher priority might give them a better chance of getting a suitable (short) combination. (Picking the nit.)
I'm not sure we're talking about the same thing. Does your algorithm create translations for short English words first? (That's what I meant.) Or does it proceed down the alphabet and assign a translation for the next word in alphabetical order?It does give shorter words a higher priority, actually. That's why it ran out of (shorter) combinations and was forced to make some of the words longer to keep from dumping the whole batch. There's a message at the end of the generated file that warns you if it happens: "Forced maximum word length X letters longer than normal". If it says "3", that means that on average, the words are 3 letters longer than the "standard", which is the default dwarven language (the one Toady wrote).it didn't have enough words, but it genned it anyway. closer to the end of the file, when it started running out of combinations, it began making them longer:Just a small tweak suggestion: Giving short words higher priority might give them a better chance of getting a suitable (short) combination. (Picking the nit.)
You're right, I misunderstood the first time. No, it doesn't, and that would be a good way to improve it, you're right. Thanks for the idea! I'll be sure to tweak that.I'm not sure we're talking about the same thing. Does your algorithm create translations for short English words first? (That's what I meant.) Or does it proceed down the alphabet and assign a translation for the next word in alphabetical order?It does give shorter words a higher priority, actually. That's why it ran out of (shorter) combinations and was forced to make some of the words longer to keep from dumping the whole batch. There's a message at the end of the generated file that warns you if it happens: "Forced maximum word length X letters longer than normal". If it says "3", that means that on average, the words are 3 letters longer than the "standard", which is the default dwarven language (the one Toady wrote).it didn't have enough words, but it genned it anyway. closer to the end of the file, when it started running out of combinations, it began making them longer:Just a small tweak suggestion: Giving short words higher priority might give them a better chance of getting a suitable (short) combination. (Picking the nit.)
You're right, I misunderstood the first time. No, it doesn't, and that would be a good way to improve it, you're right. Thanks for the idea! I'll be sure to tweak that.I'm not sure we're talking about the same thing. Does your algorithm create translations for short English words first? (That's what I meant.) Or does it proceed down the alphabet and assign a translation for the next word in alphabetical order?It does give shorter words a higher priority, actually. That's why it ran out of (shorter) combinations and was forced to make some of the words longer to keep from dumping the whole batch. There's a message at the end of the generated file that warns you if it happens: "Forced maximum word length X letters longer than normal". If it says "3", that means that on average, the words are 3 letters longer than the "standard", which is the default dwarven language (the one Toady wrote).it didn't have enough words, but it genned it anyway. closer to the end of the file, when it started running out of combinations, it began making them longer:Just a small tweak suggestion: Giving short words higher priority might give them a better chance of getting a suitable (short) combination. (Picking the nit.)
When you run the program again, do the new creatures you generate replace the old ones you generated, or do both the generations add up?
So, does this mean that the words starting with "A" would have short translations, and ones starting with "Z" would mainly be long? That would be a bit weird looking :D. I like the language generator, I'll probably play around with it when I have the time. The creature generator looks good too, really interesting, but I probably won't be using it, at least not now. Still, you did an amazing job with this. :DOnly if you provided so few words that it didn't have enough to generate the language from. This is actually really difficult to do - you have to intentionally provide only five words or so. It's not usually an issue. Still, I have an updated version that I'll be uploading in the near future to ward against the issue, just in case. Nothing's foolproof, right? And thank you for the compliment.
Just want to say thanks for your language generator.Thanks for letting me know! I'm glad you found it useful outside of DF. I'm sorry you had to jump through so many hoops to get it to work, though. If you shoot me a PM next time, I'll try to see if I can custom-rig a program for you to make your job go a little more smoothly.
-snip-
When you run the program again, do the new creatures you generate replace the old ones you generated, or do both the generations add up?Black_Legion is right. It replaces the old creatures that it genned, so they don't pile up. You can keep genning until you get something you like - although, if you're genning 1,000 creatures, you may have some difficulty deciding whether or not you like the whole batch. lol
Ah, thanks. Another question: I deleted all vanilla entity and creature files and left only the random ones. It's not generating anything properly and there are no playable civs. Just legends mode. I set [CIV_CONTROLLABLE] and [ADVENTURE_TIER:X] to all of themNeither program changes ANY of the default raws. Redownload DF and copy-paste a clean set of raws if you need to... and for future reference, deleting the entity file is generally a bad idea.
But you do not understand.DFRandCreatures does NOT create enough creature types to ensure everything is replaced. It does not, for example, create domesticated creatures. It doesn't create birds, and it doesn't create vermin. It doesn't generate fish or any other aquatic animals. It doesn't generate megabeasts, and it does NOT replace the dwarf/elf/human/goblin raws. I'm sorry if that's what you wanted it to do, but to make that work successfully, I'd basically have to have the data in a separate file, just to copy-paste it again, and you'd end up with the same thing you had before. Thus, you might as well not have deleted anything in the first place. DFRandCreatures is meant to add to the experience, not replace it.
I don't want any vanilla stuff.
Just the randomly generated shit.
@OP (my apologies that I can't hope to spell your name...): If I understand correct where a word falls into multiple symbol groups the root from one of those symbols is chosen at random, and where it corresponds to a longer English word more pieces are strung together to make the word longer. I'm wondering, when it has to create a longer word for a word of multiple symbol groups, will it start putting together more roots from other symbols the word belongs to if possible? If it doesn't, could that functionality be added in, to create a tendency for words that obviously smash together two symbols (e.g. if you have "onu-" for flowery, "-dleb-" for stony, and a word that is in both the flowery and stony symbol groups and requires a length of at least three pieces, will it prefer to start with "onudleb-" rather that just using one or the other)? I think this may go partway toward increasing the extent to which related words look related, while still leaving room for randomness (because sometimes you nonetheless have more symbol groups than pieces to put together, or you have two words that share the same couple of groups and one of them will have to miss out, etc.).I could have it put in two symbols for longer words, yes. Symbols have three parts (i.e. oa kl ai- or -sh a nt), but it can choose to shorten it to make it fit better with the word (i.e. oakl- or -ant, to reuse the examples from within the last set of parentheses). This way, you could wind up with oaklainar or oaklotis, and it still has the same word root. You could conceivably fit them together, like: oaklaramant. I simply never did.
Oh don't worry about it, you SAVED ME a massive amount of work. The sorting, cropping and such took me like 15 minutes, it was only the re-seeding of words that took a bit of time, and even then only an hour or so. Besides, its always fun actually using my Word/Excel skills garnered from work on something more personal and creative.Just want to say thanks for your language generator.Thanks for letting me know! I'm glad you found it useful outside of DF. I'm sorry you had to jump through so many hoops to get it to work, though. If you shoot me a PM next time, I'll try to see if I can custom-rig a program for you to make your job go a little more smoothly.
-snip-
Thank you very much for these two programs. I don't know if I will ever use them in DF, but I will enjoy playing with them. Decades ago I bought a shareware program that generated solar systems, and spent happy hours generating solar systems that I never used in any games. Strange pleasures for strange minds, I guess. ;DI do the exact same thing... lol If your mind is strange, then mine is, too.
I like your creature generator. I think it's especially cool how you can specify how many creatures you want before using it. I used to play with girlinhats generator and I always had to delete most of the creatures I made manually to prevent my world getting absolutely flooded with random monsters. I also really like how you actually went and made an entity generator as well! But why no megabeasts?Thanks for the bug report! If you could include the creature in question (spoilered), that would be helpful, too.
But I also noticed a few bugs the first few time I used your program.
The first time I plaid I found a creature that had two heads. The problem is, the body part/wound list in the creature description listed both of them just as "head", as opposed to "right head, left head" or "first head, second head" like with regular two-headed monsters. Also one of the heads was listed at the top of the body part list, after the upper and lower body while the other one was near the botton, by the legs and feet. That was pretty confusing.
I also had several entities that had weapons and shields their entity members couldn't use, because they had no arms or any other bodypart with grasp. One of them also built and lived in houses even though they couldn't open doors.
One of them also built and lived in houses even though they couldn't open doors.
Lol, I like the way you think. I was thinking of using that excuse, but I was aiming for semi-realism (yes, feathery chitin qualifies. Hush. >.>). I'll put up a poll.One of them also built and lived in houses even though they couldn't open doors.
I call that a feature.
Technically, as all everybody ever does in towns is stand around inside houses, it doesn't really hurt gameplay.Some of us are, no doubt, thinking ahead, what with the devlogs these days...
And unfortunately, there's nothing I can do to fix the issue you pointed out without making my mod largely incompatible with other mods, or redoing the bodyparts from scratch.Okay, I know nothing about programming, but couldn't you just forbid the program from adding an extra [BASIC_HEAD]-tag if the body-type it starts out with (like QUADRUPED) already contains a head?
Pardon my stupidity, but can anyone please tell me what program is used to open the .kpl file? Thanks in advance.
The program is in "bin".
Pardon my stupidity, but can anyone please tell me what program is used to open the .kpl file? Thanks in advance.It's used by Phrogram (http://phrogram.com/), a largely unheard-of programming language/IDE I used to champion (I'm nkweeks there, though). It's even easier to open with notepad: open notepad, and drag and drop the file icon into it. (At least, that's how it works in windows). It's easy to read.
This fellow quickly suffocated in the arena, all by himself. Not sure why, but maybe without a mouth the lungs can't get air?I discovered some odd things while testing, and got rid of a lot of the issues like that, but actually, it is possible to have a lunged creature that can breathe, without it having a mouth, or even a throat. Odd, I know. lol I can't remember if it was because the creature was brainless, or because of something else, though. I'm almost positive that this particular creature suffocated because the program didn't give it a brain, and because I was stupid and apparently deleted the line of code that was meant to make up for something like that happening. (You can see it added [EXTRAVISION] after the [BODY: line; I didn't delete that, at least. lol
-snip-
This is getting interesting. Beta testing sure is fun, I should really try it. If this is a beta. More like post-beta? It's a pretty full program.It's definitely beta, and it's likely going to stay that way as I continue adding onto it. Please note that I don't usually have much time online. :P
AS TO THE TWO-HEADED CREATURE:Well it won't stop making two-headed creatures completely, since it could still roll a [BODY:HUMANOID_2HEAD] or something similar, just the labeling and listing would be correct.
I'm not going to remove two-headed creatures completely, which is what it would take for the head to generate at the top of the list, so that'll stay as it is. I value my randomness, and sacrificing all oddities so that all "randomly generated" creatures look like creatures that already exist ingame is not something I'd be willing to do... I don't consider it negotiable... unless, of course, someone can convince me to spend the time necessary to write up a new raw file, and more specifically, convince me that meshing with other mods isn't such a great idea.
Ah, even if it still has HUMANOID_2HEAD, you lose all chance of creatures generating with their heads being dissimilar (which I value for its randomness).AS TO THE TWO-HEADED CREATURE:Well it won't stop making two-headed creatures completely, since it could still roll a [BODY:HUMANOID_2HEAD] or something similar, just the labeling and listing would be correct.
I'm not going to remove two-headed creatures completely, which is what it would take for the head to generate at the top of the list, so that'll stay as it is. I value my randomness, and sacrificing all oddities so that all "randomly generated" creatures look like creatures that already exist ingame is not something I'd be willing to do... I don't consider it negotiable... unless, of course, someone can convince me to spend the time necessary to write up a new raw file, and more specifically, convince me that meshing with other mods isn't such a great idea.
Also, are you implying that making a new raw file would make it incompatible with other mods? Because you could just make it create a body_raw of its own, separate from the default one, and therefore avoid all compatibility issues altogether. That's what the other creature generator did as well, I think.
I couldn't help it - I had to draw that... thing. Very roughly, in about fifteen minutes.I lol'd. You make me proud. Excellent job, there. :)Spoiler (click to show/hide)
I think I got it right...
So I just generated a language usingWell, you did include a lot of "a"s, "y"s, and "i"s, all of which are very prominent in elven, as is the "c", "v" and "v" at the front of words. If you want something very goblin-y (or orcish, to be precise), put the following in and see what it gens:
'spawn,holistic,spear,breaker,fischer,draignean,splint,vanya,talvi,cavy' as control words. It came up with some hilarious ones, such as bear_noun being 'faint', and beast translating as 'cognac'. It ended up sounding very... elven, I suppose because of the surfeit of i and y.
Language creation is so much fun! Thanks a lot! :DGlad you're enjoying it! I'll (hopefully) be re-releasing it, new and improved, "soon".
edit: Why did you include Vanya and Talvi but not Reudh? lol Just out of curiosity.
[BODY_SIZE:0:0:374]
[BODY_SIZE:1:0:7477]
[BODY_SIZE:14:0:67294,70926272]
Great work, I downloaded the creature generator and have generated 500 new creatures for my new world. Can't wait to see what they will be like in game.Adding semimegabeasts doesn't seem to be too much of a stretch. I'll see if I can scrape something together for the next time I upload it.
With this every world that's generated can have its unique wildlife. This will really make exploring new worlds a more interesting experience.
I hope you'll continue to support this, it would be nice to have similar generators for (semi)megabeasts, and other parts of the game.
Can you edit it to allow using a customized script file plz:)I'm really sorry, but I don't think that's going to happen. That's a bit more work than I'm willing to put into it, as it would effectively quadruple (at least) the amount of code involved, not to mention the fact that creature randomization is already mindbogglingly complex. So many pieces have to fit together just so... We've seen a number of errors in this thread, but nothing compared to the possibilities that would open up when using user-created scripts. If I was doing this professionally, I'd say yes... but as it is, I'm a guy spending his spare time doing this as a hobby of sorts. :P
Two things:First: You are completely correct. That's part of why I put it into a script file. Just make sure you follow the bracket/colon format (e.g. left bracket but no right bracket, left colon and right bracket, etc.), or it'll create something that won't work.
Am I correct if I assume that the entitydata file could be altered, to allow custom items for the generated entities? For example adding tags for weapons that are not in vanilla DF?
And the second:Quote[BODY_SIZE:0:0:374]
[BODY_SIZE:1:0:7477]
[BODY_SIZE:14:0:67294,70926272]
Randomly generated creature. Seems a bit... excessive in bodywheight.
Define bodysize2 As Decimal = round (randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,2) * randomdecimal(1,5) * randomdecimal(1,5) * randomdecimal(1,5) * randomdecimal(1,5) * randomdecimal(1,5) * randomdecimal(1,5) * randomdecimal(1,5))
bodysize2 = sqrt(bodysize2) * 1.4142//square root * square root of 2
bodysize2 = bodysize2 * bodysize2/*and now we square. small creatures stay small,
big creatures get bigger. easy As math. Average body size is now 75000,
right where I wanted it to be. A larger size (x2) starts out about 75000 and
ends up being around 150000. A x2 normal increase becomes a x4 increase.
The above is all subject to change. I want to make sure I get the occasional
"gigantic" creature.*/
...which basicially means it gives it a random value between 1 and 10,000,000 (VERY heavily weighted towards the lower end of the scale), takes the square root of that and multiplies it by the square root of 2 (to the fourth decimal), and then squares it, making a min/avg/max range of (rounded) 2 (min, ridiculously rare), 74631 (avg, a little bigger than a human), and 19999200 (max, but ridiculously rare to the point you'll probably never see it).ttl.add (" [BODY_SIZE:" + bodyage + ":0:" + bodysize2 + "]")
So I'm guessing the comma was a typo? :-\ Hoping, anyway. Otherwise, I think my program has unfixable OS-related issues. For windows it gens things like;
[BODY_SIZE:21:0:26219.4971004]
which is completely in line with what it ought to be doing. Typo, I hope? Or are all the creatures genning that way?
I have a Dutch windows version, and in Dutch we use a comma instead of a dot before decimal numbers
![AT_PEACE_WITH_WILDLIFE];7! - ? - ? represents if/then/else statements (i.e it only adds one of the list, if any at all)
desc:few natural predators
pref:peacefulness
![ADOPTS_OWNER];4
pref:aloofness
![AMBUSHPREDATOR];4
pref:mystery
verb:waits for its prey to pass before striking
![AMPHIBIOUS];112
verb:is at home both in water and on land
![BONECARN];177
verb;feigns death until a victim passes by:likes to gnaw on old bones:eats the bones of the dead
pref:savage ways:primitive habits
![BUILDINGDESTROYER:1];72
?[BUILDINGDESTROYER:2];18
![INTELLIGENT];79
pref:distinct culture
verb:is very intelligent
?[CAN_LEARN][SLOW_LEARNER];25
?[CAN_LEARN];72
adj:intelligent
verb:likes learning new things
A [ADJECTIVE], [ADJECTIVE] [NOUN] with [DESC] and [DESC]. It [VERB] and [VERB].so you'll have a little more control over the creature descriptions, in addition to being able to choose the tag frequency. You could delete a particular tag entirely if you wanted by simply deleting the entry. However, a creature will need [CANOPENDOORS], [EQUIPS], [INTELLIGENT], and hands in order to become an entity.
I feel like syndromes should be one of the last things you do, just because of how easy it is to write a syndrome and have it, oops, surprise, not work properly. For any number of reasons. x_xThat won't be an issue. This isn't the first random generator I've made for DF - the previous one created random "radiation zones" on the map where dwarves could receive any number of symptoms of "radiation sickness" (of a less realistic variety). Syndromes were very heavily modded in there, and the only issue I got was from someone saying they didn't like how dwarves could randomly become vampires on rare occasions. (The person didn't like vampires to begin with.)
This is everything I have ever wanted. Thank you, Talvieno!And thank you for the encouragement!
A progress indicator would be good if that's doable with the current framework. I get worried if I see no activity for five minutes.Already taken care of. It'll show you what's it's doing as it does it (to an extent - I don't want to bog the thing down from an overactive progress bar). I don't like looking at apparently-frozen programs, either.
A progress indicator would be good if that's doable with the current framework. I get worried if I see no activity for five minutes.Already taken care of. It'll show you what's it's doing as it does it (to an extent - I don't want to bog the thing down from an overactive progress bar). I don't like looking at apparently-frozen programs, either.
TALVI YOU UNHOLY GENIOUSLol, Heyaa, BFEL! Glad you like it.
Looks great, Talvi! :DI'll keep it that way, then.
Makes for a !!FUN!! fort, it does. Better for adventures, but still, !!FUN!! is had by all!Hmm... Better for adventures? I could add a separate set of settings for dwarf mode, if necessary... What would you suggest I change to make it better suited for fortresses?
One question, though. Does anybody have any ideas on why this would happen?Ooh, I know this one. That happens when an entity has the same symbol as [SELECT_SYMBOL] and [CULL_SYMBOL]
I'm not sure if it's something I've done, but if it is, I figure it might have something to do with languages...
Can't wait to try this out! Let's see some real bestial civs...Hrm... that really is strange, but I think I might know what's causing it. I'll have to test it out.
EDIT: I notice that regardless of what you do in the world gen, legends mode will show the newly generated civs as unknown. Strange.
...I am almost positive that you're correct, come to think of it. Oh well, at least it won't be hard to fix. You win an Internets. +1One question, though. Does anybody have any ideas on why this would happen?Ooh, I know this one. That happens when an entity has the same symbol as [SELECT_SYMBOL] and [CULL_SYMBOL]
I'm not sure if it's something I've done, but if it is, I figure it might have something to do with languages...
[CREATURE:CREATURE_1XXTERRCK_RC]
[NAME:whivogron:whivogrons:whivogron]
[DESCRIPTION:A gigantic, crimson predator with a long prehensile tail and no eyes. It likes to kill passing creatures and patrols its territory by itself.]
[COLOR:4:0:0]
[CASTE_NAME:whivogron:whivogrons:whivogron]
[CREATURE_TILE:'W']
[PREFSTRING:skulls]
[NATURAL][LARGE_ROAMING]
[PETVALUE:490]
[PET_EXOTIC]
[MOUNT_EXOTIC]
[MEGABEAST][DIFFICULTY:15] 11 Or higher does Not Get assigned As adv mode quests
[ATTACK_TRIGGER:80:10000:100000]
[FANCIFUL][LARGE_PREDATOR][LIKES_FIGHTING][NOFEAR][NOEXERT]
[FREQUENCY:5]
[GRASSTRAMPLE:50]
[PETVALUE:10000]
[PET_EXOTIC][TRAINABLE][MOUNT_EXOTIC]
[SPHERE:OATHS]
[SPHERE:DARKNESS]
[LAIR:SIMPLE_BURROW:100]
[MENT_ATT_RANGE:WILLPOWER:3000:3500:3750:4000:4250:4500:5000]
[HABIT_NUM:TEST_ALL]
[HABIT:COLLECT_WEALTH:100]
[NATURAL_SKILL:BITE:6]
[NATURAL_SKILL:GRASP_STRIKE:6]
[NATURAL_SKILL:RANGED_COMBAT:6]
[NATURAL_SKILL:MELEE_COMBAT:6]
[NATURAL_SKILL:DODGING:6]
[NATURAL_SKILL:SITUATIONAL_AWARENESS:6]
[BONECARN]
[LARGE_PREDATOR]
[LIKES_FIGHTING]
[MEANDERER]
[NOT_LIVING]
[POPULATION_NUMBER:8:16]
[CLUSTER_NUMBER:1:5]
[BIOME:NOT_FREEZING]
[BIOME:ANY_TEMPERATE]
[BIOME:ANY_GRASSLAND]
[BIOME:ANY_TROPICAL_FOREST]
[BIOME:SHRUBLAND_TEMPERATE]
[BIOME:SAVANNA_TROPICAL]
[BENIGN]
[BODY:HUMANOID_FLIER:MOUTH:2EARS:THROAT:BRAIN:SKULL:TAIL:5FINGERS:SPINE:RIBCAGE:GUTS:NOSE:BASIC_HEAD:HEART]
[EXTRAVISION]
[USE_MATERIAL_TEMPLATE:BLOOD:BLOOD_TEMPLATE]
[TISSUE:BLOOD]
[TISSUE_NAME:mucus:NP]
[TISSUE_MATERIAL:LOCAL_CREATURE_MAT:BLOOD]
[TISSUE_MAT_STATE:LIQUID]
[MUSCULAR]
[FUNCTIONAL]
[STRUCTURAL]
[RELATIVE_THICKNESS:1]
[CONNECTS]
[TISSUE_SHAPE:LAYER]
[TISSUE_LAYER:BY_CATEGORY:ALL:BLOOD]
[BODYGLOSS:PAW]
[SELECT_TISSUE_LAYER:HEART:BY_CATEGORY:HEART]
[PLUS_TISSUE_LAYER:SKIN:BY_CATEGORY:THROAT]
[TL_MAJOR_ARTERIES]
[USE_MATERIAL_TEMPLATE:NAIL:NAIL_TEMPLATE]
[USE_TISSUE_TEMPLATE:NAIL:NAIL_TEMPLATE]
[TISSUE_LAYER:BY_CATEGORY:FINGER:NAIL:FRONT]
[USE_MATERIAL_TEMPLATE:SINEW:SINEW_TEMPLATE]
[TENDONS:LOCAL_CREATURE_MAT:SINEW:200]
[LIGAMENTS:LOCAL_CREATURE_MAT:SINEW:200]
[HAS_NERVES]
[SPEED:900]
[USE_MATERIAL_TEMPLATE:BLOOD:BLOOD_TEMPLATE]
[BLOOD:LOCAL_CREATURE_MAT:BLOOD:LIQUID]
[CREATURE_CLASS:GENERAL_POISON]
[GETS_WOUND_INFECTIONS]
[GETS_INFECTIONS_FROM_ROT]
[USE_MATERIAL_TEMPLATE:PUS:PUS_TEMPLATE]
[PUS:LOCAL_CREATURE_MAT:PUS:LIQUID]
[BODY_SIZE:0:0:53623]
[BODY_SIZE:1:0:1930433]
[BODY_SIZE:8:0:23165192]
[MAXAGE:51:87]
[CHILD:3]
[ALL_ACTIVE]
[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]
[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]
[ATTACK:KICK:BODYPART:BY_TYPE:STANCE]
[ATTACK_SKILL:STANCE_STRIKE]
[ATTACK_VERB:kick:kicks]
[ATTACK_CONTACT_PERC:100]
[ATTACK_PRIORITY:MAIN]
[ATTACK_FLAG_WITH]
[ATTACK:BITE:BODYPART:BY_CATEGORY:MOUTH]
[ATTACK_SKILL:BITE]
[ATTACK_VERB:bite:bites]
[ATTACK_CONTACT_PERC:100]
[ATTACK_PRIORITY:MAIN]
[ATTACK_FLAG_CANLATCH]
[ATTACK:PUNCH:BODYPART:BY_TYPE:GRASP]
[ATTACK_SKILL:GRASP_STRIKE]
[ATTACK_VERB:punch:punches]
[ATTACK_CONTACT_PERC:100]
[ATTACK_FLAG_WITH]
[ATTACK_PRIORITY:SECOND]
[ATTACK:SCRATCH:CHILD_TISSUE_LAYER_GROUP:BY_TYPE:GRASP:BY_CATEGORY:FINGER:NAIL]
[ATTACK_SKILL:GRASP_STRIKE]
[ATTACK_VERB:scratch:scratches]
[ATTACK_CONTACT_PERC:100]
[ATTACK_PENETRATION_PERC:100]
[ATTACK_FLAG_EDGE]
[ATTACK_PRIORITY:SECOND]
[HOMEOTHERM:10035]
[SWIMS_INNATE][SWIM_SPEED:749]
[BODY_DETAIL_PLAN:EGG_MATERIALS]
[CASTE:FEMALE]
[FEMALE]
[LAYS_EGGS]
[EGG_MATERIAL:LOCAL_CREATURE_MAT:EGGSHELL:SOLID]
[EGG_MATERIAL:LOCAL_CREATURE_MAT:EGG_WHITE:LIQUID]
[EGG_MATERIAL:LOCAL_CREATURE_MAT:EGG_YOLK:LIQUID]
[EGG_SIZE:58985.3]
[CLUTCH_SIZE:1:4]
[CASTE:MALE]
[MALE]
[SELECT_CASTE:ALL]
[SET_TL_GROUP:BY_CATEGORY:ALL:BLOOD]
[TL_COLOR_MODIFIER:CRIMSON:1]
[TLCM_NOUN:mucus:SINGULAR]
[SELECT_MATERIAL:ALL]
[MULTIPLY_VALUE:4]
Finally, I'd like to formally thank Meph for including RandCreatures in his Masterwork mod (http://www.bay12forums.com/smf/index.php?topic=98196.0).Conga Rats! (Yes, it's a pun.)
Hold up on that til I get the next version out, if you want megabeasts/semimegabeasts. I'll try to get the obvious bugs fixed by tomorrow - I've been sick for a lot of the past week, so work kind of slowed down. You can't actually "replace" creatures, though... at least, I wouldn't advise that you do. In any case, I'm glad you'd consider it, and I'll look forwards to watching your LP if you choose to make it. I might officially support it, too, but due to internet issues, I can't promise anything. :\
It's a very, very badger pun.I toucan seal that. I ferret musk bee stopped be-fur we can't bear it.
This has already gone too far...
Heh. I ran into a few of those when genning the RAWs for my LP. Deleted them. :PA few?? Okay, this is worse than I thought. Something is definitely wrong. I'll have to look over it.
Also added trainable to everything, but still.
Also, some of the simplest (In terms of body structure) creatures are the weirdest. One of them could be best summed up as a giant, wingless, legless mosquito made of stone. :P
800, I think? I can't remember. Somewhere between 666 (Which is what somebody on #bay12lb suggested) and 800, anyways.That's a lot of editing... Yeah, Toady's total creature count is somewhere around 666 (almost exactly, as I recall), but that's only if you count vermin and other things as creatures. I think the wagon is included in that count.
I think you may want [TRAPAVOID] on the megabeasts - I know that I can catch a minotaur in a cage, but a bronze collossus is a whole different story. I also think all vanilla megabeasts have trapavoid, along with all FB'sWhoa. I don't know how I missed this, but you're right. Megabeasts ought to be trapavoid. That's easily fixed. Thanks for letting me know - I wouldn't have noticed it otherwise! I never use traps, just archers, so it wouldn't have been something I would've come up with on my own bugfixing fortresses.
In the next version I'll make it possible to force all creatures to have the [TRAINABLE] tag. Then you can have the option of training everything new that comes your way.
Yeah, megabeasts are generated with it 100% of the time. All other non-sentient creatures have a 10% chance of getting it.In the next version I'll make it possible to force all creatures to have the [TRAINABLE] tag. Then you can have the option of training everything new that comes your way.
Do any of the random creatures have that tag yet? (I've only had time to gen a new RandCreatures world, not actually play. I could just check my new raws, but I consider them to be full of spoilers ATM.)
I wonder, if a properly full fledged civ had [TRAINABLE] you could train them as pets once captured?I actually don't know... somehow I doubt it, but I really want to find out.
I'm thinking like a dwarf converting a goblin using only food.
I wonder, if a properly full fledged civ had [TRAINABLE] you could train them as pets once captured?I actually don't know... somehow I doubt it, but I really want to find out.
I'm thinking like a dwarf converting a goblin using only food.
@WastedLabor: I'm guessing that it doesn't run at all on Linux? Hrm... I'll need to look into that, if that's the case.You broke it on purpose a while ago, I think as a quick and dirty work around for locals that use "," as the decimal place character.
- The program will automatically round decimal numbers, so OS won't be an issue (unless you're using Wine - sorry, MasterMorality)Maybe you can find a better way to do that that works in WINE.
- The program will automatically round decimal numbers, so OS won't be an issue (unless you're using Wine - sorry, MasterMorality)but now you say
It doesn't break anythingAre you contradicting that changelog now?
If you're having issues with the newer release, it probably has more of something to do with the fact that the randomly generated civilizations produce their own language raws now.I can only test 0.2.0, it is the only version I have and it does not work in WINE.
env WINEPREFIX="/home/arclance/.wine" wine "RandCreatures.exe"
fixme:mscoree:ConfigFileHandler_startElement Unknown element L"runtime" in state 1
fixme:mscoree:ConfigFileHandler_startElement Unknown element L"assemblyBinding" in state 3
fixme:mscoree:ConfigFileHandler_startElement Unknown element L"probing" in state 3
* Assertion at mini-generic-sharing.c:825, condition `oti' not met
abnormal program termination
err:mscoree:expect_no_runtimes Process exited with a Mono runtime loaded.
If you post a link to a older version I could try it in WINE.
"Wine", originally meaning "Windows Emulator", is now an acronym for "Wine Is Not an Emulator". So... it's hard to say. It's meant to run on unix-based systems (?) like Ubuntu, I'm pretty sure, and it lets you run Windows programs, so in response to that question... I'm guessing Windows. If it's an emulator. :\Wine is a interface layer that passes commands back and forth between their Unix/Linux and Windows equivalents.
edit:
On doing a little reasearch, arclance, I think your problem may have a little bit of something to do with Mono... Unfortunately, I'm not sure how to get around that. :\ If I understand right, Mono is a substitute/replacement for Microsoft .Net Framework, which I think Windows PCs come with pre-installed. .Net Framework is something that RandCreatures requires to run, so your solution may lie with finding a workable replacement. Just an idea, though.
Arclance - I've looked into your problem with running it on Wine - I can't really seem to find anything that'll make it work, unfortunately. I could rewrite it in Java, but my working knowledge of Java is minimal. I can do basic tasks with ease, but this requires setting up something a little more complex than I'm used to. I've been veering away from porting all 4000+ lines of code to something else for obvious reasons. I'll try to see what I can do, though.Okay, thanks for letting me know what you found.
When I randomly generate creatures from the launcher, the entities that are generated are kind of broken. They end up with things like [ETHIC:[STONE_PREF]] and a ton of untagged lines that don't do anything (no square brackets, no context), like:
NATURE
VENGEANCE
WAR
etc.
[SHIELD:ITEM_SHIELD_SHIELD],[SHIELD:ITEM_SHIELD_BUCKLER]
[INSTRUMENT:ITEM_INSTRUMENT_FLUTE],[INSTRUMENT:ITEM_INSTRUMENT_TRUMPET],[INSTRUMENT:ITEM_INSTRUMENT_HARP],[INSTRUMENT:ITEM_INSTRUMENT_DRUM],[INSTRUMENT:ITEM_INSTRUMENT_PICCOLO]
[TOOL:ITEM_TOOL_CAULDRON],[TOOL:ITEM_TOOL_LADLE],[TOOL:ITEM_TOOL_BOWL],[TOOL:ITEM_TOOL_MORTAR],[TOOL:ITEM_TOOL_PESTLE],[TOOL:ITEM_TOOL_KNIFE_CARVING],[TOOL:ITEM_TOOL_KNIFE_SLICING],[TOOL:ITEM_TOOL_KNIFE_MEAT_CLEAVER],[TOOL:ITEM_TOOL_FORK_CARVING],[TOOL:ITEM_TOOL_NEST_BOX],[TOOL:ITEM_TOOL_JUG],[TOOL:ITEM_TOOL_LARGE_POT],[TOOL:ITEM_TOOL_HIVE],[TOOL:ITEM_TOOL_HONEYCOMB],[TOOL:ITEM_TOOL_POUCH],[TOOL:ITEM_TOOL_MINECART],[TOOL:ITEM_TOOL_WHEELBARROW]
[TOY:ITEM_TOY_PUZZLEBOX],[TOY:ITEM_TOY_BOAT],[TOY:ITEM_TOY_HAMMER],[TOY:ITEM_TOY_AXE],[TOY:ITEM_TOY_MINIFORGE]
to this:[SHIELD:ITEM_SHIELD_SHIELD],[SHIELD:ITEM_SHIELD_BUCKLER]
[INSTRUMENT:ITEM_INSTRUMENT_FLUTE],[INSTRUMENT:ITEM_INSTRUMENT_TRUMPET],[INSTRUMENT:ITEM_INSTRUMENT_HARP],[INSTRUMENT:ITEM_INSTRUMENT_DRUM],[INSTRUMENT:ITEM_INSTRUMENT_PICCOLO]
[TOY:ITEM_TOY_PUZZLEBOX],[TOY:ITEM_TOY_BOAT],[TOY:ITEM_TOY_HAMMER],[TOY:ITEM_TOY_AXE],[TOY:ITEM_TOY_MINIFORGE]
i.e., removing the TOOL line, It'll treat the toys as tools. Further on down the list, it'll treat "ART_IMAGE,GLAZED,RINGS_HANGING,BANDS,SPIKES,ITEMSPECIFIC,THREAD,CLOTH,SEWN_IMAGE" as ethic entries.Argantyr - You're correct: gabbro is the only stone type it uses. It wasn't something I really considered randomizing, although I don't actually have anything against it. I just didn't think about it. I personally don't like the idea of metallic creatures, though, because then you're basically genning something for yourself that you can't possibly defeat - at least, not without adamantine. Chitin isn't stone, though - and Toady's version of it is incredibly weak. When I made the Scythods (different mod entirely), I had to create my own chitin raws just to make them worth fighting. I do like the idea of pitchblende, though, just for the laughs... But, unfortunately, pitchblende in DF isn't radioactive.
CognitiveDissonance - Yeah, it's completely functional. :) Play with it at your own risk. (besides the language generator, that's perfectly safe.)
I found this just recently and have run some games with it, and just now recently managed to cage my first ''Collhe'' (random creature). I had high hopes to start taming and breeding this wonderful creation, but despite finding a pet value in the raws, couldn't do either.You can edit Randomdat.txt in your Raw/Objects folder to make it work... I'm not sure why it wouldn't let you tame it with the pet value, though. If you could post the raws for the particular creature, I might be able to figure it out.
Which tag would I have to add to make the animal tame-able and is the fact that it isn't a feature, a bug or an oversight(as in; do some get the ''correct'' tame-able tags, and some don't, or was this not a part of the initial aim of the tool?)
I've always aimed to do a roleplaying breeding fortress and this tool seemed to make that a 1000 times cooler, just kinda weary of having to manually edit 700 raws! Also; thanks lots for making it, so far besides the breeding thing it's worked wonders.
![PET_EXOTIC];1000
![TRAINABLE];1000
If you're fine with leaving megabeasts as they are, just copy-paste that in there... I would suggest immediately following:![WEBIMMUNE];18Just so that nothing gets messed up. The 1000 gives it a 100% chance of being given to a creature. Then, just gen new raws and it should work. As you're adding tags I kept out of there for a reason, you may wind up with a few weird creatures. =P But I'll work on that if you find any issues.
verb:cannot get caught in webs
But beyond all that, I love the results I get sometimes...alot of the time. Sometimes I get monsters that the generator has no clue how to describe.If you get creatures that the generator can't describe (e.g. it says "An unknown, randomly generated creature" or something like that), send me the raws and I'll try to teach it to keep from doing that again. :P I thought I got all of those out of there, but I guess not. It's absurdly difficult to accurately describe a creature with just a few short sentences. Toady gets around it by mainly using creatures that are well-known - all you really need is the name, and maybe the short description will jog your memory if you can't recall whatever it is right away.
I'll agree that metal on normal creatures would be difficult, but then again this is the same game where dying seems to be an inevitability. But then again, could save it for megabeasts, no? I havn't toyed around too much with metal tissue, I wonder if it could be used to gen more than just the whole body...like iron flesh, but squishy flesh underneath? I would however be far more interested in adding stone types, even if associated with normal beasties - just imagine a Baron's personal quarters decorated with the statue-like remains of a 6 headed, tusk-creature with 4 arms, each armed with two fingers each with a slug-like pseudofoot for their lower body with flesh made out of some dense type of stone that probably took weeks of hauling to set it up.A lot of this would be really difficult to do. :P Megabeasts can already be bronze (like a bronze colossus sort of thing), but creatures are limited to gabbro. I could make them out of metal, and I realize this would increase the game's difficulty... Creatures can be up to whale or dragon size, I think - it's rare to get one that large, but it's possible. If you had one of those made out of steel, and the generator generated them in packs of five, or, Armok forbid, ten... And they were automatically hostile... you would be screwed, plain and simple. I was trying to avoid this. :P I do like the idea of stone creatures dropping statues, however. I could look into that.
Before of course, the room was flooded by lava due to ominous circumstances. I don't know, maybe in the future if you were still interested, you could make some basic menu to turn some randomization features on and off. Like Civs could be toggled off, on, or both, exotic features could give you the chance to have abstract critters that Lovecraft would approve of, stone, wood and metal could each be toggled (but have their own weighted generation values).This is possible. Really, the language I used is pretty much worthless for it (I didn't expect it to get too much attention, so I was lazy and used an easy one) - I'd probably have to rewrite it in another language. But it's possible.
Edit: Just wanted to add that I think that a lot of metals SHOULD have syndromes attatched, perhaps special ones that could be averted through some sort of tag, enabling perhaps evil races to use them without suffering (Though woe to any human or dwarf that is assaulted by the Goblin's whip of lead with it's slow, painful, lead-poison-death syndrome. XDSyndromes are coming, when I get the time for it. I've been very busy lately. One thing I don't want the syndromes to do is guarantee an instant death, because it's no fun encountering something in the wilderness that can oneshot you with a glancing blow to your pinky. :P I mean... I guess it's "Fun", but it would be a real game-breaker. I have a decent amount of experience with syndromes, I think - I once modified Mr Frog's radiation mod to randomize the effects - basically, savage regions were marked as "radioactive", and if you settled there your dwarves would mutate with wonderfully grotesque effects. I don't want to put something like that in here, but at least I have a little knowledge on it, even if I'm a tad rusty. But no - syndromes are something I would enjoy putting in.
[CREATURE:CREATURE_1PQNXFFSV_RC]
[NAME:egasor:egasors:egasor]
[DESCRIPTION:An unrecognized, randomly-generated creature.]
[COLOR:5:0:0]
[CASTE_NAME:egasor:egasors:egasor]
[CREATURE_TILE:'e']
[PREFSTRING:mouths]
[NATURAL][LARGE_ROAMING]
[PETVALUE:360]
[NOBREATHE]
[BIOME:ANY_DESERT]
[BIOME:SWAMP_TROPICAL_FRESHWATER]
[BIOME:RIVER_TROPICAL_SALTWATER]
[BODY:HUMANOID_FLIER:MOUTH:NOSE:BRAIN:THROAT:2LUNGS:ORGANS:SPINE:2WINGS:NECK:2TOES:HEART:GENERIC_TEETH_WITH_FANGS:GUTS:BODY_EYE:2EARS:5TOES:GENERIC_TEETH_WITH_LARGE_EYE_TEETH:SKULL]
[BODY_DETAIL_PLAN:STANDARD_MATERIALS]
[REMOVE_MATERIAL:CARTILAGE]
[REMOVE_MATERIAL:HAIR]
[REMOVE_MATERIAL:SKIN]
[USE_MATERIAL_TEMPLATE:SCALE:SCALE_TEMPLATE]
[USE_MATERIAL_TEMPLATE:TOOTH:CHITIN_TEMPLATE]
[BODY_DETAIL_PLAN:STANDARD_TISSUES]
[REMOVE_TISSUE:CARTILAGE]
[REMOVE_TISSUE:HAIR]
[REMOVE_TISSUE:SKIN]
[USE_TISSUE_TEMPLATE:SCALE:SCALE_TEMPLATE]
[USE_TISSUE_TEMPLATE:TOOTH:CHITIN_TEMPLATE]
[BODY_DETAIL_PLAN:VERTEBRATE_TISSUE_LAYERS:SCALE:FAT:MUSCLE:BONE:NONE]
[BODY_DETAIL_PLAN:STANDARD_HEAD_POSITIONS]
[BODY_DETAIL_PLAN:HUMANOID_RELSIZES]
[USE_MATERIAL_TEMPLATE:SINEW:SINEW_TEMPLATE]
[TENDONS:LOCAL_CREATURE_MAT:SINEW:200]
[LIGAMENTS:LOCAL_CREATURE_MAT:SINEW:200]
[HAS_NERVES]
[SPEED:1600]
[USE_MATERIAL_TEMPLATE:BLOOD:BLOOD_TEMPLATE]
[BLOOD:LOCAL_CREATURE_MAT:BLOOD:LIQUID]
[CREATURE_CLASS:GENERAL_POISON]
[GETS_WOUND_INFECTIONS]
[GETS_INFECTIONS_FROM_ROT]
[USE_MATERIAL_TEMPLATE:PUS:PUS_TEMPLATE]
[PUS:LOCAL_CREATURE_MAT:PUS:LIQUID]
[BODY_SIZE:0:0:15]
[BODY_SIZE:1:0:477]
[BODY_SIZE:13:0:7152]
[MAXAGE:26:50]
[CHILD:7]
[ALL_ACTIVE]
[BODY_APPEARANCE_MODIFIER:HEIGHT:90:95:98:100:102:105:110]
[BODY_APPEARANCE_MODIFIER:BROADNESS:90:95:98:100:102:105:110]
[ATTACK:KICK:BODYPART:BY_TYPE:STANCE]
[ATTACK_SKILL:STANCE_STRIKE]
[ATTACK_VERB:kick:kicks]
[ATTACK_CONTACT_PERC:100]
[ATTACK_PRIORITY:MAIN]
[ATTACK_FLAG_WITH]
[ATTACK:BITE:CHILD_BODYPART_GROUP:BY_CATEGORY:HEAD:BY_CATEGORY:TOOTH]
[ATTACK_SKILL:BITE]
[ATTACK_VERB:bite:bites]
[ATTACK_CONTACT_PERC:100]
[ATTACK_PENETRATION_PERC:100]
[ATTACK_FLAG_EDGE]
[ATTACK_PRIORITY:MAIN]
[ATTACK_FLAG_CANLATCH]
[ATTACK:PUNCH:BODYPART:BY_TYPE:GRASP]
[ATTACK_SKILL:GRASP_STRIKE]
[ATTACK_VERB:punch:punches]
[ATTACK_CONTACT_PERC:100]
[ATTACK_FLAG_WITH]
[ATTACK_PRIORITY:SECOND]
[HOMEOTHERM:10055]
[SWIMS_INNATE][SWIM_SPEED:538]
[CASTE:FEMALE]
[FEMALE]
[MULTIPLE_LITTER_RARE]
[CASTE:MALE]
[MALE]
[SELECT_CASTE:ALL]
[SET_TL_GROUP:BY_CATEGORY:ALL:SCALE]
[TL_COLOR_MODIFIER:GOLD:1:1
[TLCM_NOUN:scales:PLURAL]
[SET_TL_GROUP:BY_CATEGORY:ALL:EYE]
[TL_COLOR_MODIFIER:BLACK:1]
[TLCM_NOUN:eye:SINGULAR]
![PET_EXOTIC];650
?[PET_EXOTIC][TRAINABLE];100
?[PET_EXOTIC][TRAINABLE][MOUNT_EXOTIC];50
This mod is a wonderful thing and I am eagerly looking forward to new creatures showing up. But in my perusal of the randomly generated ones, I found this little guy, so here are his raws:Thanks! I'll be able to add a few new lines here and there to try to prevent this from happening again. Basically it means it added too many parts that didn't have descriptions attached to them, and wasn't left with enough ways to describe the creature.
-snip-
Newb question:Definitely, without a doubt. It's very simple, really - take the language you gen and replace the regular dwarf language file with it.
Can I make my dwarves use a language generated by LangCreate?
Been playing with this and I think it's a neat idea. I'll have to play with the randdat.txt and see what that's all about. Vanilla of the creature generation seems a little unforgiving with how often it assigns the pet_exotic tag. Seems to be around 1% of the time. Not sure if this was intended or not.For poking around in the *.kpl file, you have my respect. :P +1 to you, my friend. However, the *.kpl isn't a script - just the source code. The program itself runs without it and doesn't actually need it at all, so changing stuff in it won't help much... I applaud you all the same, though.
I've also noticed that on creature that do have the pet_exotic tag, they often get it assigned more than once. Kinda odd.
EDIT: Ahh, think I found at least part of the issue. Neither of the pet tags don't seem to exist anywhere in the dat file, so unless they're hard coded, nothing should be tamable by default. Not sure how I'm even getting creatures with pet tags, so there must be some default settings that are hard-coded.
I think as a nice work-around for those who want a larger percentage of the creatures to be tamable, changing the intelligence check to have a large chance of pulling in the pet_exotic tag. It'll look kinda like this:Code: [Select]![PET_EXOTIC];650
?[PET_EXOTIC][TRAINABLE];100
?[PET_EXOTIC][TRAINABLE][MOUNT_EXOTIC];50
Of course tweaking them to whatever percentages you feel is right. Given that such a large percentage of creatures in the vanilla game are at least tamable, my feeling is that 75% is fair. 10% trainable might be a little generous, so scaling that back to 5% might be better.
EDIT EDIT: That's not really working how I'd like. Think I'll play around in the KPL and see if I can just add a check late in the creature creation that removes any pet tags if any of the intelligent tags exist.
EDIT EDIT EDIT: AHA! Found the issue by peaking in the KPL. Looks like tamability is only set to megabeasts and semi_megabeasts, but not otherwise checked in the hard code other than to remove it from sentient creatures. Since it's also not in the randdata.txt file by default, the flag will never be populated to normal creatures.
Since sentient creatures automatically get the taming flags removed, that simplifies things greatly, so I adjusted the bits above.
Now to see if I can figure out why the program crashes every time it tries to generate a civilization.
As to the crashing civs, I'd say you extracted the program into the wrong folder. It needs to be extracted into the raws folder (not a folder in the raws folder, but the raws folder) so that it can read from the language symbol file.
*** Error(s) found in the file "data/save/crash v3g/raw/objects/creature_random_rc.txt"
CREATURE_1UIHEAXII_RC:Body Token Recognized But Could Not Connect: 3TOES_FQ_REG
CREATURE_1OUGEUAAM_RC:Attack SCRATCH seems to have correct format but could not find proper BPs in any caste, so not added
CREATURE_1VXHUFWOM_RC:Attack BITE seems to have correct format but could not find proper BPs in any caste, so not added
CREATURE_1FZQUUEJA_RC Color Mod Ending With (BLACK,1) Was Not Used
CREATURE_1LBXMNTFA_RC:Attack CLAW seems to have correct format but could not find proper BPs in any caste, so not added
I actually had that problem myself, the reason why it crashed for me was because I thought the Race generator was a stand alone deal, and not requiring the language generator.It doesn't require the language generator - it just requires you extract the files in the correct place, really. Here's an explanation pic:
Also, where do you want those raws, Talvieno? Just genned up 1000 race entities, and got a few for you to look at?
I want to try this, but my antivirus insists there's a trojan in it. ???I guarantee no trojans. If you're running it with Meph's Masterwork mod (great stuff, by the way), then I can explain it: Masterwork opens the RandCreatures *.exe by itself, and some antiviruses look at that and go, "TROJAN!!!" - programs don't usually start up on their own, right? Some antiviruses catch that. Others look farther and see that you pushed a button that made it open. And still others don't notice it at all. But there are no trojans here. :P
I'd assume a false-positive but it's still a deterrent.
Maybe a 'forgotten beast-trait' button/ checkbox? It'd keep people who don't want a bunch of diamond-skinned, venomous, winged giant frogs roaming their worlds happy; and those of us who'd WANT that kinda thing could have it.It would be better if we could force such traits to be limited. Perhaps a max value and min value, forcing "forgotten beast traits" to a certain percentage. Then you could have whole worlds with ridiculous traits, or perhaps only 1%.
@ MasterMorality: Here you go! Eleven randomly-generated civs. (http://dffd.wimbli.com/file.php?id=7947)Spoiler (click to show/hide)
It would be better if we could force such traits to be limited. Perhaps a max value and min value, forcing "forgotten beast traits" to a certain percentage. Then you could have whole worlds with ridiculous traits, or perhaps only 1%.
You're awesome! Thank you very much!
@ MasterMorality: Here you go! Eleven randomly-generated civs. (http://dffd.wimbli.com/file.php?id=7947)Spoiler (click to show/hide)
Edit:
Looking through it, very briefly, I'd suggest you add [active_season] tags to the entities. I know this is mostly for adventure mode, but it can't help to allow them to show up in Fortress mode, too.
You can just close the program when it reached the end, it should have prepared all the files.I assume that the randomly generated creatures go in the creature_random_rc file
Holy krundles this is awesome! Why aren't people sharing their languages?Probably DF file depot.
What's the best way to do that? 4000 characters is an easy limit to reach if I post the raw text.
whenever I gen a civ. RandCreatures crashes. Help?
I don't think that it has anything to grab the picks with. No arms.
whenever I gen a civ. RandCreatures crashes. Help?
I have the same problem.
They are too small to equip picks (and probably other weapons). They are roughly size 15000, while picks have a minimum size of 42500. You can go into the item_weapons.txt file to reduce the MINIMUM_SIZE number of any weapons you want them to use to around 10000 or 7500 if you don't want to create tanda versions of weapons. Then it should work.
[IF:%RND:0:33%:1] 1in 33 chance of adding next stuff
[TAG_ADD:{CANOPENDOORS}{EQUIPS}{INTELLIGENT}] 1 in 33 chance of possible free civ. {these brackets} are converted to the standard raw type as the actual file is compiled.
[CAN_OPEN_DOORS] set value to true, same for next two
[EQUIPS]
[INTELLIGENT]
Megabeasts and semimegabeasts come next. Their stuff is just easier to add earlier on.
[ELSEIF:%RND:1:100%:1] 1 in 100 chance of a semimegabeast, after the 1 in 33 chance of a new civ.
[CAN_CIV:FALSE]
[SEMI]
[TAG_ADD:{SEMIMEGABEAST}{DIFFICULTY:5}]
[TAG_ADD: {ATTACK_TRIGGER:50:5000:50000}]
[TAG_ADD:{CAN_LEARN}{CAN_SPEAK}{CANOPENDOORS}{EQUIPS}{FANCIFUL}]
[TAG_ADD:{BUILDINGDESTROYER:2}]
[INT:L1:%RND:2:6%] defining a new integer. These are messily done. Careful with them.
[FOR:i:1:L1] for i = 1 to L1, or for (i=1;i<L1;i++); for java coders
[TAG_ADD:{SPHERE:%RANDOM_SPHERE%}]adds a random sphere.
[X] end if/end loop tag. empty lines can be used too. Comment lines don't count.
[IF:%RND:1:4%:<>:1]if random number between 1 and 4 is not 1
[TAG_ADD:{LAIR:SIMPLE_BURROW:100}] you're a little nothing.
[ELSE] the else script tag thing. If this is called, then YAUR A MINOTAUR type beast.
[TAG_ADD:{PERSONALITY:BRAVERY:75:90:100]{NATURAL_SKILL:WRESTLING:6}
[TAG_ADD:{NATURAL_SKILL:WRESTLING:6}]
[TAG_ADD:{NATURAL_SKILL:BITE:3}]
[TAG_ADD:{NATURAL_SKILL:GRASP_STRIKE:6}]
[TAG_ADD:{NATURAL_SKILL:STANCE_STRIKE:6}]
[TAG_ADD:{NATURAL_SKILL:MELEE_COMBAT:8}]
[TAG_ADD:{NATURAL_SKILL:DODGING:6}]
[TAG_ADD:{NATURAL_SKILL:AXE:8}]
[TAG_ADD:{NATURAL_SKILL:SWORD:8}]
[TAG_ADD:{NATURAL_SKILL:DAGGER:8}]
[TAG_ADD:{NATURAL_SKILL:PIKE:8}]
[TAG_ADD:{NATURAL_SKILL:MACE:8}]
[TAG_ADD:{NATURAL_SKILL:HAMMER:8}]
[TAG_ADD:{NATURAL_SKILL:WHIP:8}]
[TAG_ADD:{NATURAL_SKILL:SPEAR:8}]
[TAG_ADD:{NATURAL_SKILL:SITUATIONAL_AWARENESS:12}]
[TAG_ADD:{PHYS_ATT_RANGE:STRENGTH:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{PHYS_ATT_RANGE:TOUGHNESS:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{PHYS_ATT_RANGE:AGILITY:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{PHYS_ATT_RANGE:ENDURANCE:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{PHYS_ATT_RANGE:RECUPERATION:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{PHYS_ATT_RANGE:DISEASE_RESISTANCE:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{MENT_ATT_RANGE:FOCUS:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{MENT_ATT_RANGE:WILLPOWER:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{MENT_ATT_RANGE:MEMORY:2000:2100:2150:2250:2350:2550:3250}]
[TAG_ADD:{MENT_ATT_RANGE:SPATIAL_SENSE:2000:2100:2150:2250:2350:2550:3250}]
[TAG_ADD:{MENT_ATT_RANGE:KINESTHETIC_SENSE:1000:1100:1150:1250:1350:1550:2250}]
[TAG_ADD:{LAIR:LABYRINTH:100}]
[TAG_ADD:{LAIR_HUNTER}]
[TAG_ADD:{LAIR_HUNTER_SPEECH:lair_hunter_minotaur.txt}]
[TAG_ADD:{HABIT_NUM:TEST_ALL}]
[TAG_ADD:{HABIT:GRIND_BONE_MEAL:100}]
[TAG_ADD:{HABIT:EAT_BONE_PORRIDGE:100}]
[TAG_ADD:{HABIT:USE_ANY_MELEE_WEAPON:100}]this time, using a blank line to end the if/then, just to show how it works:
[ELSEIF:%RND:1:100%:1]1 in 100 megabeast... after civs and semimegabeasts.
greetings. this is your captain sspeaking. You are all screwed. Thank you for choosing Talv Airlines, and I bid you all a good day.
[CAN_CIV:FALSE] just to keep the big ol' brutes from making their own civs.
[IF:%RND:0:3:1]
[TAG_ADD:{MEGABEAST}{DIFFICULTY:15}] 11 or higher doesn't get assigne in adv mode quests.
[ELSE]
[TAG_ADD:{MEGABEAST}{DIFFICULTY:10}]
[X]
[TAG_ADD: {ATTACK_TRIGGER:80:10000:100000}]
[TAG_ADD:{FANCIFUL}{LARGE_PREDATOR}{LIKES_FIGHTING}{NOFEAR}{NOEXERT}]
[TAG_ADD:{FREQUENCY:5}]
[TAG_ADD:{GRASSTRAMPLE:50}]
[TAG_ADD:{PETVALUE:10000}]
[TAG_ADD:{PET_EXOTIC}{TRAINABLE}{MOUNT_EXOTIC}]
[INT:L2:%RND:2:6%]
[FOR:i:1:L2]
[TAG_ADD:{SPHERE:%RANDOM_SPHERE%}] I'll show off by ending this with a blank line:
[IF:%RND:0:1%:1]
[TAG_ADD:{NOSTUN}{NOPAIN}]
[INT:X1:%RND:1:4%]
[IF:X1:1]
[TAG_ADD:{LAIR:WILDERNESS_LOCATION:100}]
[ELSEIF:X1:2]
[TAG_ADD:{LAIR:SHRINE:100}]
[ELSE]
[TAG_ADD:{LAIR:SIMPLE_BURROW:100}]
[X1:%RND:1:4%] setting variables is easy.
First, a dash of dragon.
[IF:X1:1] I'll admit, though, using Toady's raws format is a bit messy with operators.
[TAG_ADD:{MENT_ATT_RANGE:WILLPOWER:3000:3500:3750:4000:4250:4500:5000}]
[TAG_ADD:{HABIT_NUM:TEST_ALL}]
[TAG_ADD:{HABIT:COLLECT_WEALTH:100}]
[TAG_ADD:{NATURAL_SKILL:BITE:6}]
[TAG_ADD:{NATURAL_SKILL:GRASP_STRIKE:6}]
[TAG_ADD:{NATURAL_SKILL:RANGED_COMBAT:6}]
[TAG_ADD:{NATURAL_SKILL:MELEE_COMBAT:6}]
[TAG_ADD:{NATURAL_SKILL:DODGING:6}]
[TAG_ADD:{NATURAL_SKILL:SITUATIONAL_AWARENESS:6}]
[ELSEIF:X1:2]A case of colossus.
don't do anything!
[ELSEIF:X1:3]A hint of hydra.
[TAG_ADD:{LAIR_HUNTER}]
[TAG_ADD:{NATURAL_SKILL:BITE:6}]
[TAG_ADD:{NATURAL_SKILL:GRASP_STRIKE:6}]
[TAG_ADD:{NATURAL_SKILL:MELEE_COMBAT:6}]
[TAG_ADD:{NATURAL_SKILL:DODGING:6}]
[TAG_ADD:{NATURAL_SKILL:SITUATIONAL_AWARENESS:6}]
[ELSE]A ray of roc.
[TAG_ADD:{HABIT_NUM:TEST_ALL}]
[TAG_ADD:{HABIT:GIANT_NEST:100}]
[TAG_ADD:{NATURAL_SKILL:BITE:6}]
[TAG_ADD:{NATURAL_SKILL:STANCE_STRIKE:6}]
[TAG_ADD:{NATURAL_SKILL:MELEE_COMBAT:6}]
[TAG_ADD:{NATURAL_SKILL:DODGING:6}]
[TAG_ADD:{NATURAL_SKILL:SITUATIONAL_AWARENESS:6}]
[X]
[INT:R:%RND:1:4%]
[IF:R:4] cue skyrim theme
[IS_FIRE_BREATHER]
[ADD_TAG:{CAN_DO_INTERACTION:MATERIAL_EMISSION}]
[ADD_TAG: {CDI:ADV_NAME:Breathe fire}]I am a servant of the secret fire
[ADD_TAG: {CDI:USAGE_HINT:ATTACK}]
[ADD_TAG: {CDI:BP_REQUIRED:BY_CATEGORY:MOUTH}]
[ADD_TAG: {CDI:FLOW:DRAGONFIRE}] Wielder of the flame of anor
[ADD_TAG: {CDI:TARGET:C:LINE_OF_SIGHT}]
[ADD_TAG: {CDI:TARGET_RANGE:C:15}]
[ADD_TAG: {CDI:MAX_TARGET_NUMBER:C:1}]
[ADD_TAG: {CDI:WAIT_PERIOD:50}]
[ADD_TAG:{FIREIMMUNE_SUPER}]
[ELSEIF:R:3] It's made of bronze.
[IS_BRONZE]
[ADD_TAG:{NOT_BUTCHERABLE}]
[X]
[X]
Open to suggestions.
:P And potentially creatures that poison you to death (cute and tiny optional).
Ah... Anybody else crashing when RandCreatures makes a civ?Randcreatures doesn't work with 40.xx yet. I'm rewriting it from the ground up for a number of reasons, among them:
If you want bizarre/hilarious, I once made cats that exploded violently when attacked, giving the attacker a terrible necrosis of the entire body... and "bob-ombs" that walked around and exploded when you got close to them - they were capable of setting stuff on fire. I don't know if we'll see that - I try to stick as closely to vanilla as possible - but it'll be interesting. Lots of variety for sure. You'll probably be just as likely to see large poisonous monsters as tiny ones. I'm hoping to also make it so that by editing the files you can do pretty much whatever you want as far as poison goes... but we'll see.:P And potentially creatures that poison you to death (cute and tiny optional).
domesticated poisonous fluffy wambler-alikes. This is where this is going.
It would be quite simple to make several buttons instead of just "generate creatures"... one could be vanilla-like, another makes easy/medium/hard monsters, with different bodysizes and interactions and poisons. That way everyone gets what they want. :)Okay. This greatly intrigues me. It would be difficult, though, to accurately gauge creature difficulty... there are so many variables involved it's just... hrm. I think I could come up with something, but it would be messy. I wouldn't be satisfied with just bodysizes and poisons.
Oh hey, glad to see that this is being updated/revamped. Might actually do a reboot of that old failed LP of mine once it's ready. And the current stream of bugfix releases slow down. :uYeah, I was watching that - felt a little sad to see it peter out like it did. Ah well, though - if you do turn it into a really good LP, I'll post a link in the thread.
I've been having quite a bit of difficulty getting LangCreate to work properly. The first time I tried using it, it simply crashed (I think I forgot to end a word in a vowel) but I tried twice more with all of the parameters met. Both times it created an empty text file, and froze up. I let it sit for nearly 4 hours, and it still hadn't done anything but create that text file. Does it just work slowly, or did I do something wrong? I extracted the .zip onto my desktop and ran it out of the folder.That's strange... what operating system are you running it on? No, it should've been done in the blink of an eye, really. The empty text file means it created the file but didn't write to it...
My goblins now speak a horrendous mish-mash of English profanity. THANK YOU!
So, are there any real world language mods created using Langcreate?
Just posting to say I am anxiously looking forward to this. I loved the 0.34 version.I would like to add my voice to this. :)
So, are there any real world language mods created using Langcreate?
That's not quite how it works. It's random generation based off of seed words, not... however that would work, unless I'm misunderstanding you.
Anyway, I came here to get the source to see how it's done and...
k-k-kids programming language?
I had never heard of this until today.
OK. How do I just this I though it was java, but I keep getting that it isn't recognized.
OK. How do I just this I though it was java, but I keep getting that it isn't recognized.
I found that a little hard to follow, but as far am I'm hearing, you're having trouble running LangCreate or RandCreatures? What happens?
Hello! It's been a long while since I was here, it seems. Six years have flown by far too quickly. Thank you for summoning me back! :P
...
As to LangCreate, I could probably redo that from scratch with little difficulty - perhaps as a browser-based version, to help make sure everyone can use it. I seem to recall it only being Windows-friendly. Fixing that would probably come sooner than RandCreatures. I could stick it on my website somewhere.
Huh. FWIW, I have a 90% complete port of LangCreate to C# as it is... Asked Talvieno about it several years ago. If you're still interested in it, should I send you the nearly working C# port?
I had to import two .dll files from the original program, seemingly standard library parts for the KPL programming language, into the project to get it to run as decompiled C#. I've nearly finished removing the dependency on it, but I guess the original KPL license is still applicable to... exactly one person here :D
I'm also turning it into a command-line program while I'm at it, which should make Linux/Mac support easier. That said, I'd have no idea how to do a web version of it, seeing as I still can't make heads or tails of the algorithm it implements ::)
Really, the C# port was one part of my hoped for Java port. Might still be, seeing as the CLI interface should let me test the two versions for identical behavior.
Yes, please, Talvieno. And you have a website? Could you perhaps link us the website, if possible?Egads, I'm again sorry for the incredibly late reply. The past year kind of got away from me, and not in a good way. A lot of stuff happened. (For everyone, I think. Hurrah for 2020!) As to my site, it's here (https://talvieno.com), and I'll post again after I build a JS version of langcreate. JS is a lot of what I've been using lately anyway - that and python. but I think in this case it's probably most useful to use JS because then nobody has to download anything except the language file that gets created. I believe that's what I was thinking last year, too. I have about four different versions of the base program, so all it'll take is converting one of them.