-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(ready) Crafting #382
(ready) Crafting #382
Conversation
update from main
(ready) New monsters (Attnam#349)
update from main
(ready) bug fix for show items under (Attnam#369)
(ready) Fantasy name generator (Attnam#363)
update from main
Artifacts and quest items should definitely not be craftable, but that's obvious. :) I would also forbid crafting of any form of magical items - rings, amulets, wands, scrolls, horns etc. Crafting any of this would be unbalanced as hell and unrealistic given your characters upbringing. You're after all a slave, with no knowledge of magic, and crafting magical items should be beyond most craftsmen. Maybe only allow crafting of non-magical equipment and furniture?
IMHO .dat file would be great. I wouldn't worry about users changing it, because all the dungeons are already in .dat files, so you could theoretically spawn yourself end-game gear in New Attnam, so...
Actually, crafting should definitely take into account the materials you provide. There's no point in many materials if you cannot craft a mahogany chair or a golden sword with diamond handle. I don't think recipes actually need to be limited by an item type. You could make a golden chair from a lump of gold. It should also take into account material volume. Note that each item has a set mass/volume of material. You shouldn't be able to spawn more material by crafting, so rather than a set amount of sticks, crafting a chair should take as many sticks as to fill the volume needed for a chair. You should be able to make iron wall with enough iron weapons and armors at your disposal.
It should take quite some time. Plus maybe also tools, like the smith needing a hammer wielded to be able to repair your items. You could require an axe wielded to work with wood etc. And there should be a chance of failure. Some random chance to end up with a useless lump of material instead of whatever you were crafting. You could also attach an attribute to crafting, making you chances of success and time needed better with higher attribute. I'd suggest dexterity and wisdom - dowxterity for crafty fingers and wisdom for knowing how to craft things. I wouldn't use intelligence as the second attribute because int is already bound to magic and very useful, while wisdom not so much. What if crafting only required large enough volume of material and the right tools? Like you would need a wielded hammer and be standing next to an anvil to craft metal, but you could craft anything out of your available metal. Like taking a broken sword and reforging it into two unbroken daggers. You would need a wielded axe to work with wood, to work with cloth and leather, you would need to be standing next to a workbench etc. |
@red-kangaroo I am still reading it. (EDIT: wow I confused user names sorry! fixed!) I will just dump what I thought promptly (I will see if you spoke about these soon :)) to make it more in the ivan way, we should be required to find an schematic/recipe to be able to craft. if we find another recipe of the same kind we already did before, the memorized recipe would be upgraded by +1. Every recipe level would
may be one of these could be randomly chosen when creating something, so we can't count on the result, keeping it challenging. |
cool!, I understand now why we cant learn magic! xD
you made a good point.
.dat files endup in-memory as data, so I think it will not be a problem to change the material of the chair for ex. I saw OLTerra.png and all gfx is prepared to receive color based on materials, will work great I guess.
this is excellent, much better than a count that makes not much sense after all!
the dig feature has all we need, just to be adapted then! may be shops in town too, they fix everything instantaneously (the NPCs are cheating lol), they should just fix it much faster than us tho based on their high skills, and they should move around while doing it, would look nice.
this sound very good too! also, may be instead of auto checking what will be used on crafting, the user would have to specify what will be used, to not be forced to drop to not lose items.
cool! btw, destroying anything magically enhanced (ex.: +1 or of venom etc), would break the spell, and on doing that, the released magic could harm in some way when absorbing part of it. PS.: |
Crafting takes time now,
The problem is the non placed spawned olterrain is saved as a full object, not an ID. |
now works with selectable ingredients requirements is by volume now the poison recipe is still instantaneous, but max 100ml per spider |
Oooh, poison from venomous corpses! I like that! |
IDK, I'd go with player convenience here and let the NPCs cheat. :D It would be pretty nice to be able to repair your broken items yourself, though. To not make it better than paying for repair in shops, make it require other item of same material to be consumed in the repairs, plus a crafting station (anvil for metal, workbench for other). |
ugh, the conflict solving got a bit too complicated, I will do it locally (meld) and not thru browser and will take some time :> |
# Conflicts: # .devsPrefs/AquariusPower/TODO.txt # .devsPrefs/AquariusPower/nbproject/configurations.xml # FeLib/Include/graphics.h # FeLib/Source/felist.cpp # FeLib/Source/graphics.cpp # Main/Include/bugworkaround.h # Main/Include/devcons.h # Main/Include/iconf.h # Main/Include/proto.h # Main/Source/actions.cpp # Main/Source/bugworkaround.cpp # Main/Source/command.cpp # Main/Source/devcons.cpp # Main/Source/game.cpp
This pull request introduces 17 alerts when merging e5514a6 into 92bc1cd - view on LGTM.com new alerts:
Comment posted by LGTM.com |
LGTM, interesting, Im reading it :) |
interesting, the majority of "alerts" were about wrong printf %d that should be %lu or %ld, I wonder if CXXFLAGS could be added to compiler letting us avoid knowing about'em only thru LGTM? also the whole project has more than 100 "alerts". PS.: I mean "alert" and not ALERT!!! because the project compiles and run w/o crashes, and so they should not be an "alerting scary matter" IMHO lol, but merely warnings..., I mean, calling the wrong attention kind puts the caller on discredit for future calls, like in "Peter and the Wolf" story, where LGTM could be behaving like Peter lol! Can anyone prove me wrong with strong arguments? xD |
:P If those warnings are not about this pull request, just ignore them. Don't know if LGTM provides a filter for pull-request-related changes. EDIT: just found it You can add Integer overflow and uncheck negative integers must be a concern... |
TODO: new issue/task one day? I had tailoring plans:
It is not a lot of work, neither little. |
it does, here only 17 there were
cool thx!
yup, this is good, I complained about the wording, I receive email sometimes with the alert word, as soon I see there is nothing alerting I put that ppl/business on spam permanently lol xD
good to know, will read more about the "uncheck negative integers" thx :) |
I have tried it some more and I have comments! :D Firstly, I like it and can't wait to have this in the game. It's quite fun to play with (and cutting webs is very, very useful). Now, my criticism:
Anyway, really great work. |
well.. after I implemented, it ended up being solely on current stats that may vary a lot depending on limbs materials! It is currently more like a crafting capability than skill, like in how well you can craft it but w/o learning from previous attempts. Crafting as a skill should progress, but currently it is completely dynamic :/ May be, every successful crafting should give 3 points, and every failure give 1 point as a base crafting skill value. Then, the stats formula would only be a buff adding to the base crafting skill shown at '@' menu! Or... the stats formula would calc how many skill points you learn on success and on failure, could be a multiplier over s.3 and f.1 from above.
As there arent many options for now, all them spread directly provides faster access.
well, that would be just another list, is not complicated.
this is automatic using the prototype subsystem, like when we wish for an item and type what we want, it uses almost the same code flow but with several restrictions to prevent any cheating.
this one is automatic, like there is actually no options, it looks for main and secondary materials, and creates lumps from wooden, meltables and cloth like materials, but will create rocks from non meltables because when crafting with them it will lose some of the rock volume to shape the new item main material tip, and that was not documented other than in the code itself! The main problem is: it takes no time and requires not tool yet.
surely! I didnt even noticed that! oh I mean "you doesnt seem to have noticed that!" xD
Interesting, I considered it but not for too long, I didnt completely understand how BigMessageMode works and if it would fit properly with crafting in a non intrusive (non slowed/annoying play) way? is it that messages when we talk to important NPCs like the necromancer for the alternative quest? if so, it would be slow, intrusive and annoying for the crafting context (not for the quest line context, where it is cool), but it is just my opinion xD
if I am not wrong steeleaf is not meltable.
This needs checking for the blood vs distilled poison/acid power. If you extract from the same spider 100ml of poison but 1000ml of blood and both have the same poison power, there would be no point on extrating the poison from the glands at all :), but most importantly, that would require a lot more code for a minor (despite immersive and cool) practical result. The problem on extracting other kinds of blood is vs food abundancy, will Mellis and eating/drinking become useless? will foods from shops become useless? but would be cool anyway. I focused on missing features. So essentially, we got things a bit easier with extra vanilla poison and sulf.acid., and I didnt touch the food balance. Not that these shouldnt be done one day, just that were not my priority :).
certainly! on a second step of the crafting system! xD, for now, it could just take more time to compensate, but if poison is from glands, it could still be fast but have a chance to fumble and poison self (not sure but I may have implemented it already, also with the s.acid).
as I remember, using a glass ingot, you can create bottles and vials, and other metals into cans.
to not consume too much time, I thought the most useful would be the secret door, when one day they actually become secret (useful functionality). walls are piled rocks, no cement. but, about "can you build", well sure! just needs creating new recipe code based on existing ones ingredients and tools requirements. time, energy, I think we all wish we had always more of these xD Unfortunately I can only focus now on critical changes (like the craft skill that doesnt progress), and bugs. My workflow is like: |
what about these initial priorities?
I think the critical one should happen before any release tho, as it may change the playability a lot! but... it would become easier... |
New info and subsections, use the F1 to read the details of the list entry about creating an item . |
I would have nothing against it being simply based on stats, rather than trained skill. We could call it something different to prevent confusion with weapon skills (proficiency?), and have it only show in the "F" menu, then. Your choice, I guess. :)
Yeah, little headings would go a long way towards making it easy to use.
That would be cool. BTW, you cannot craft magical items, right?
No no, quest screens use game::TextScreen. EnterBigMessageMode and ExitBigMessageMode just takes all ADD_MESSAGE and places them in a buffer rather than displaying them right away, then displays them as a single long message. Look at how combat messages are generated - you have several sentences from different functions in a single message, clumped together by BigMessageMode. For crafting, the various "trying to find suitable material" messages could be clumped together.
I like that you need to have extra material for crafting from rocks. :D And yes, steeleaf is generic plant material, so it's probably uncraftable.
I don't think that's really such a problem. Crafting recipes seem rather complex, requiring quite some special cases, so I have no idea how we could transfer them to .dat files in any simple way. We can always deal with it later.
:D |
if a new coder tries, an ABORT message will show up with a kind message explaining why he should not dot it at all xD
I was thinking, to code as a skill may be simple, at the tryCraft/Fumble formula, just add the skill as base to the calculation (sum it up), and crafting will be easier with time. "Your choice, I guess. :)" not exactly xD, If we had some kind of public poll linked with Attnam forum accounts, we could know what ppl think about it. And it may be improved later too one day by someone xD Cutting webs has a risk, a fun one, but overall make the game easier, and making it easier is always a problem when we are looking for challenge :). So I thought the same about crafting. Btw, if you build a workbench at Attnam city in a Attnam owned floor, and destroy it later, you will be hunted, I dont know if it is possible to place that furniture keeping the player's ownership.
ahh I see, but also they happen while the user is doing things thru many questions (about main and secondary material and types of manterials (ingots, sticks, rocks)), so isnt instant feedback better?
mmm... this means dismantling a steeleaf rock from an axe, for ex, would make no sense. Plant materials, dismantling them could always create a lump. In the other hand, a cheap trick is keep the rock available as carving it will already lose a lot of material volume and would work well, just that plant materials could be other thing than a rock one day, may be plant fiber sheet, but would not change how the game is played now, so no hurry :> EDIT: despite I never dismantled steeleaf things and I am not sure it provides a rock lol, I always keep'em as they have little weight!
There are a few things that could go to .dat files, like required volumes to build walls, anvil etc, but also, instead of a special crafting.dat file, it could just be a new wall or anvil etc field specifiying such volume. |
TODO: new issue/task one day? I wonder if someone could try to code/test the base crafting skill value? A character's float var field must be created and saved/loaded (preferably appended to the saved data to help on old savegame importing compatibility). If crafting succeeds, give 1.0 point, and on failure, give 0.25 point. The base crafting skill value would be put on the crafting check formulae as like: BaseSkill + CurrentCraftFormula (the current formula is solely based on current stats that may be based on the current material limbs if not default human one). Optional/Bonus: 5x more time than the time we un-learn fight skills, we could un-learn 1 crafting skill point. Optional/Bonus: you can create a user config option on the menu to allow the base crafting skill that makes the game easier with time, default true? If needed, ask I will try to clarify it more! |
I like the features in this PR, and I don't think they will break the gameplay or stability. Let's merge this in time for the upcoming release so that people actually get to play with it. To this end, can it just be merged straight, or does some extra work need to be done to fix bugs? |
It can be merged, I fixed all bugs I found, if you ppl find some more just say it (as usual a stacktrace and debug log will help in case of crashes). |
Fixes issue Attnam#511, replacing first person in crafting messages with second person, as in the rest of the game.
* Fix for PR #382 Fixes issue #511, replacing first person in crafting messages with second person, as in the rest of the game. * Fix for PR #492 Apparently, TweraifIsFree() only works in NA, so Terra was not saying what she should. * Crafting wording Simplify wording of crafting options. If @AquariusPower disagrees, I can revert this, but I think some of the options were worded in a bit strange manner.
To test, prefer this branch: https://github.com/AquariusPower/ivan/tree/THE_MERGED_BRANCHES_I_AM_PLAYING , I will avoid duplicating code as much as possible between branches to lower maintenance difficulty, this means, if it is not compiling here is because depends on other PR branches :) mainly this one: #458 , may be I should just merge it here? I can still keep that PR, the merging is easy thruthat PR is now merged here, so that it compiles properly, and that is a pre-requisite nowgit gui
First steps on recipe/crafting code. Let's say it is being designed yet.
Any kind of thing is craftable (spawnable), the whole point is balance and challenge.
The recipe system is just a scratch, but usable. This means other recipes can be added.
Good would be to let ingredients requirements count be reused to provide help info on the list, preferably creating a struct to hold that data.
May be an external .dat wouldnt be a good thing, as allowing users to customize them could become too easy, so hardcoded may be better? or it will just hinder creativity?
but... I am not sure crafting is a good thing anyway, it is just fun, but if it makes things too easy, will take the fun out of the game.
TODO: it seems easy to code the action that will spend time in turns to craft things.
May be this system can sit there disabled until we think it is not game breaking.
Chair Recipe (still unbalanced and easy, just as basic test)
you can now build a chair anywhere, as long you have 20 sticks of anything.
is that recipe balanced?
whenever you get a chair you will be able to heal faster,
w/o this recipe you are required to travel to other dungeon levels or even outside it,
so may be we should remove this recipe later or increase it's constraints?
like where it can be placed, like only if near a furnace or may be a fountain?
add required ingredients, may be spider web or nails?
make it be more fragile than other chairs?
Problem0: I didnt limit it to fir sticks as configured in the .dat file.
Problem1: it currently is instantaneous, an action class instance (like dig) is required to make it take time and be interruptible (and preferably continuable), and it's data will be put in the savegame file also.
Possible Improvement: wooden walls could drop more rare planks and these be required instead of sticks?
Wall recipe
made of stones
poison
from spiders 100ml per corpse
other stuff
many other things were added, just try the game and hit F1 for each recipe help :)