Daily Deeds support

Grotfang

Developer
The only way for mafia to be wrong and not know how many times you've used the item is if you used it outside of mafia, and then why should mafia care, pressing the button would then gray it out and fail using the item. But you already used it that day, so what does it matter?

This is factually incorrect. We can get a response text from items that have preconditions applied to their usage that indicate a failure. Without mafia knowing what this text is, the presence of a response cannot necessarily indicate successful usage. I know it's a trivial example (but I really don't want to waste time hunting down a more relevant item simply to illustrate the same point), but the dusty animal skull has three different response texts when used. It is only when you have the 98 other bones needed that you get a successful use. Without explicitly hardcoding into mafia which of those three responses is the successful one, how would we know?

Currently, the only reason mafia's counters are off is if you adventure outside of that installation of mafia. Were we to introduce auto-incrementing, mafia would be off more often and not just on instances when the item had already been used.
 

Blabo

New member
Or if the item has a variable number of uses. Or if we're not talking about an item at all, but the successful execution of a script. Or any number of other scenarios where player state is distinct from button state. As I mentioned above and you ignored.

We're running out of ways to say "no," I'm afraid. The status quo is to, at worst, copy/paste my inc.ash script into your /scripts folder and then add "; inc _preference" to each custom daily deed that does not have a built-in preference attached to it. I do not find that unreasonable.

Variable number of uses, what's the maxUses field for then? And not sure where successful execution of a script came from, all I'm talking about are daily use items and skills.

What is the maxUses field even for? From a users perspective, I get 3 new daily use items this Crimbo, so I'm like cool, I'll go setup custom daily deeds to use them. I click the add custom button to the daily deeds, select item and here is a box that lets me put in max uses, which I put at 1, and then I fill out the rest. You're telling me that when I click the button of the custom deed I've setup with a maxUses of 1 and the button does not get disabled after it uses the item, that this behavior is ok, and that if I want a different behavior I need to search the forums and copy the script you made and add the inc line to each deed.

I've been developing software for over 10 years and I gotta say that is very unreasonable.
 

Blabo

New member
This is factually incorrect. We can get a response text from items that have preconditions applied to their usage that indicate a failure. Without mafia knowing what this text is, the presence of a response cannot necessarily indicate successful usage. I know it's a trivial example (but I really don't want to waste time hunting down a more relevant item simply to illustrate the same point), but the dusty animal skull has three different response texts when used. It is only when you have the 98 other bones needed that you get a successful use. Without explicitly hardcoding into mafia which of those three responses is the successful one, how would we know?

Currently, the only reason mafia's counters are off is if you adventure outside of that installation of mafia. Were we to introduce auto-incrementing, mafia would be off more often and not just on instances when the item had already been used.

Ok, I understand, but is it really a horrible thing for me to ask for a checkbox when setting up a custom daily deed that allows me to tell mafia, hey, here is an item that has no preconditions, and I don't care if I've already used it outside of mafia, increment the preference and disable when reaching maxUses. It really would cover at least 95% of daily use items.
 

Theraze

Active member
Ok, I understand, but is it really a horrible thing for me to ask for a checkbox when setting up a custom daily deed that allows me to tell mafia, hey, here is an item that has no preconditions, and I don't care if I've already used it outside of mafia, increment the preference and disable when reaching maxUses. It really would cover at least 95% of daily use items.

Nope. Sounds like a great idea. So code it, submit the patch, and if the developers think it's a good idea, it will be included for other people.
 

roippi

Developer
Variable number of uses, what's the maxUses field for then?

An item with a number of daily uses other than 1. "Variable" would imply that.. it varies.

And not sure where successful execution of a script came from, all I'm talking about are daily use items and skills.

While I'm very happy that you use daily deeds for items and skills, there are other things that daily deeds can do. Anything that you can do in the GCLI, you can do in the command portion of the deed. I have buttons that I want to have in my daily deeds that are always enabled, no matter how many times I click them. I have buttons that I want to be disabled once the attached script successfully runs (see the post about my farming script. which you ignored and then subsequently could not be bothered to reread once I pointed it out). I originally had a script in the OP that would take you through menus of things that daily deeds is now capable of doing. You could, say, have 13 pages of scripts, one for every level of an ascension. Maybe another for aftercore.

I've been developing software for over 10 years and I gotta say that is very unreasonable.

Sorry you feel that way.
 

Blabo

New member
I look forward to seeing your patch for something that is "very simple".

Yes, because this makes me feel like volunteering my time and submitting a patch.

I'll ignore your disdain for my comment and ask if I was interested in developing on mafia is there a developer forum and/or some developer documentation you could point me to? Like coding standards, architecture, etc?
Is there a process in place if someone wants to start developing?

I know it's probably too much for an open source project to have all that, but I figure it doesn't hurt to ask.
 

fronobulax

Developer
Staff member
I was trying to ignore your attitude that seemed to be saying that since you think something is very simple and since you think it needs to be done then someone else should go and do it for you.

That said, some information is at http://sourceforge.net/projects/kolmafia/, and some more is in the lower right box at http://wiki.kolmafia.us/index.php?title=Main_Page. You can search for "KoLmafia developer forums" and find one other place with some activity. The last time I posted that link I got blasted for reasons I no longer recall so I'm going to do the paranoid ball curl.

You are correct in that there is a lot of documentation that would be available to bring a new coder on board on a commercial project that has never been produced for KoLmafia.

The most recent additions to the 'dev team' were added after they had posted a lot at KoLmafia.us and submitted one or more patches that some other dev reviewed and elected to submit. I've had PMs from a couple of folks who made a patch and had it ignored or otherwise not used. In every case it was because the patch made a change that either did not appear to have the backing of the community or one or more of the devs had concerns about what it actually did (or failed to do) and those were never addressed. There is also a collective sense of what might be called the "KoLmafia Philosophy" that is not written anywhere and is learned by observing discussions.

In spite of my comment, I suspect this particular patch is not something you want to tackle if your ego is invested in seeing it committed. The sentiment does not seem in favor of it and even a compelling demonstration that it is A Good Idea might not be enough.
 

Grotfang

Developer
If I was interested in developing on mafia is there a developer forum and/or some developer documentation you could point me to? Like coding standards, architecture, etc?
Is there a process in place if someone wants to start developing?

I know it's probably too much for an open source project to have all that, but I figure it doesn't hurt to ask.

I'm sorry things have become so aggressive. Some of your ideas are sensible, but it has felt as though you have been making a lot of your comments without taking the time to understand where the other side lies.

Documentation is not really in place. It's been discussed, but someone needs to step up and volunteer to do it, and the people who are best equipped to write it really don't have the time to do so (very limited benefit).

The repository is at https://kolmafia.svn.sourceforge.net/svnroot/kolmafia. It can be checked out by using:

Code:
svn co https://kolmafia.svn.sourceforge.net/svnroot/kolmafia kolmafia

You will need ant to build it, the jdk to develop it, and svn to handle the repository. More detailed instructions can at http://kolmafia.us/showthread.php?287-Building-from-the-SVN and on the wiki at http://wiki.kolmafia.us/index.php?title=Compiling_from_Source.

If you want to submit a patch, open a bug report/feature request/new content thread and in the opening post include the patch. If you submit a number of patches that follow the mafia standards and don't require much fixing, you may be asked to join as a developer. You'll need a sourceforge account for that. If you want to see the coding standards used, just read through the source. It's pretty consistent throughout. The architecture is pretty clear. Start at src/net/sourceforge/kolmafia/ and get to grips with what the different components do.
 

Blabo

New member
I was trying to ignore your attitude that seemed to be saying that since you think something is very simple and since you think it needs to be done then someone else should go and do it for you.
I'm sorry things have become so aggressive. Some of your ideas are sensible, but it has felt as though you have been making a lot of your comments without taking the time to understand where the other side lies.

If this is how I was coming off then I apologize, it's not what I intended. I was in the middle of my first basement dive and had a major headache from it, so I'll blame it on that :).

I did feel that I came to the community with a problem and felt like the script solution wasn't a very good one, so offered up my opinion on a different one, and that opinion was dismissed and ridiculed. So I felt the need to defend my opinion, some have told me that I do like a good argument, I apologize if I offended anyone.

All in all the problem is minor in that these daily use items are only slightly useful in aftercore, so I could see why this would never see the light of day.

Thanks for the response to my questions about becoming a developer, it does seem a bit daunting to dive into at first. I haven't used java since college which has been awhile ago now.

Have you guys ever thought about using a hosted issue tracker along with using the forums? The forums seems like a good way to track bugs/features from the community, but tracking the issues from a development perspective could help. There are a lot of issue tracking sites that will host open source projects for free. I'm not sure if you use the issue tracker on sourceforge or not, but from my experience it's not that great compared to others that are out there.
 

fronobulax

Developer
Staff member
I did feel that I came to the community with a problem and felt like the script solution wasn't a very good one, so offered up my opinion on a different one, and that opinion was dismissed and ridiculed.

Dismissed, yes. Ridiculed, maybe not as much as you thought. I referred to the KoLmafia Philosophy. One tenant is that there is no reason to change code if the issue can be dealt with easily in a script. So you were getting responses that were really saying that a scripted work around exists and there is yet no compelling reason to change code.

Have you guys ever thought about using a hosted issue tracker along with using the forums? The forums seems like a good way to track bugs/features from the community, but tracking the issues from a development perspective could help. There are a lot of issue tracking sites that will host open source projects for free. I'm not sure if you use the issue tracker on sourceforge or not, but from my experience it's not that great compared to others that are out there.

The issue is that there is no one place where people can agree to post bugs. Bug reports and Feature requests get posted at the main KoL forum, here, and used to be posted at SourceForge and the dev forum (at least sometimes). The SF tracker, in particular, was dropped because there were just too many places to post bugs and that was the least convenient.

The system here works for three reasons: a) a large portion of the required/desired changes are driven by server side changes and thus are implicitly reported to devs who play the game; b) community discussion tends to highlight which items need to be addressed in code and which can be scripted; c) devs work on what amuses them at the time rather than according to some Master Plan or schedule.
 

slyz

Developer
I understand why using a preference and having to update it yourself seems counterintuitive.

Maybe we could have "simple" custom item/skill deeds where you only need to specify the item/skill and maxUses? displayText would be the name of the item/skill, the preference name would be something like _customItemName, and it would be incremented each time you use the corresponding button.

Users who want more customized deeds could use command deeds. Maybe the code could check if the displayText of a command deed corresponds to an item or a skill, and hide the deed for characters who don't have it.

By the way, Mafia tracks usage of in the Heart of Dark Chocolate in the _darkChocolateHeart preference.

EDIT: I missed the last posts. I remember Veracity or Holatuwol posting about Mafia's coding style complying with something, but I can't remember what and I can't find the post. My experience in writing code is limited to Mafia, I mostly copy whenever I can, and hope for the best when I can't :)
 
Last edited:

roippi

Developer
Right, so now that I've had a few days to think on this:

One of the philosophies followed by Hola and Veracity (and myself) is Start With No. One should not be offended when their Feature Request is met with "no;" rather that is just a call to justify its existence. KoLMafia already has a very large number of preferences, hidden and otherwise; a new user is almost always overwhelmed with boxes to tick and radio buttons to select. So the average user already needs to consult a walkthrough or a forum thread just to get off the ground. We should not seek to exacerbate that problem.

All that said, I wouldn't be averse to a checkbox/whatever that toggles auto-incrementation for the attached deed. If it is well done and opt-in, go for it. I really don't think that is nearly as trivial as it has been made out to be, unfortunately. I will gladly review any code submitted for that end, and commit it if appropriate.
 

roippi

Developer
So.. there may be an acceptable solution for everyone. Mafia now tracks $skill[].timescast. I could add $item[].timesused and then just use those fields instead of preferences.

I'm inclined to just remove the preference argument entirely from those custom deeds, which will unfortunately break everyone's current custom item and skill deeds. Worth it, yea/nay?
 

Theraze

Active member
I'd say nay, since if you quit and log back in, the timescast resets to 0 and they show as usable again. As I understand them, they're session variables, not saved.

Maybe update the next version to use those instead, but for the current edition, the behaviour looks more polished to actually stay greyed out while the skill is unusable.
 

Veracity

Developer
Staff member
Select the Daily Deeds panel in one of the session tally areas (rather than Session Results, Location Details, Recent Encounters, etc.)
Alternatively, go to Player Status (the heart icon) which also gives you the same choice of panels, but for which Daily Deeds is the default.
 

holatuwol

Developer
Select the Daily Deeds panel in one of the session tally areas (rather than Session Results, Location Details, Recent Encounters, etc.)
Alternatively, go to Player Status (the heart icon) which also gives you the same choice of panels, but for which Daily Deeds is the default.
Thanks!
 

slyz

Developer
I read the posts above but it took me some time to realize that it was the creator of this program who was asking this :)
 
Top