Man, that's amazing. I played two games, everything seems to be working and it's so much more pleasant than Goko or MF.
Just tried this out and it works perfectly. This combined with the faster speed settings from 2.0.42.1 really seem to make this version as good as / better than Goko Dominion, finally.
Big thumbs up from me - having a problem and deciding to actually do something about it.
This is great, thanks for going the extra half mile. It is amazing how much it actually improves the UI and speed of the game.
Just tried this out and it works perfectly. This combined with the faster speed settings from 2.0.42.1 really seem to make this version as good as / better than Goko Dominion, finally.
The thread title made me think you could only use this until you lost a game.
(Win Only)
The one thing that's still present in the current patch are the colored borders to highlight your cards, although without the burning flames. I'm not quite sure what to do with them yet, so suggestions are welcome, including "I like them as they are".Here's what I would do (though I don't know how much control you have):
...strongly caution anyone...
I would strongly caution anyone in the US (really anywhere, you really should look into that regardless IMO) against using this until someone who actually knows something about the laws behind this weighs in and says exactly how legal this is.
It's difficult for me to understand why we are so impatient that we want to do this now so we don't have to wait until they get to it.
I bet you Jeff at MF would also be interested in seeing that.
Neither is SCSN trying to make money by selling this mod.
The long con is to make all of you thoroughly dependent before introducing a monthly subscription with steadily increasing fee.
Big thumbs up from me - having a problem and deciding to actually do something about it.
There's a difference between cautioning against downloading an exe file to your computer and cautioning against doing something illegal. The former is good advice independent of whether the negative outcome is illegal; the latter is implausible here absent some kind of scienter on your part.
In other words this seems on par with Goko Salvager, no? The main difference is that people used Goko Salvager for a long time and it built up some trust with the users, trust which SCSN is still building.
Minor pedantic point - this isn't an executable file, it is just a replacement DLL file with some of the contents deleted. You don't have to run anything on your computer to make this work - you just replace the old one with this one. Haven't tried this but I bet you can use any number of text editors to compare the two files and confirm that its all just deletions.
I'm going to say this the nicest way I can: F.DS as a whole has done a really awful job of explaining to MF what they want out of MF's client. SCSN's post that he links is a great example of this. The fact that his request hasn't been implemented in five months does not mean they will never do it; nobody here knows how hard that is to do, and their product is still in beta. We still have Goko to play on. This fix will probably only work for one version of a beta piece of software that nobody will be using two weeks from now. I'm not saying there isn't value in this (that's why I suggested that someone make a video of this and show it to Jeff) but let's not misrepresent what's happening here: aside from that video, the only value in this would come from SCSN having to potentially do more RE and release a different patch for every single version of MF Dominion that ever comes out. Maybe some day this patch will just stop working altogether. I don't know the details of this but I'd be surprised to hear otherwise.
On the other hand, I made a video a while back about the animation delay, sent it to some people at MF, and wasn't a total jerkbag. This most recent version of the software shows actual improvement as a direct result of that. This improvement, without any additional work from me, will be in every future version of MF Dominion, and the people who actually develop this thing understand the feedback, why it's important, and have now incorporated it into their design. It's, like, good software engineering practice instead of a hack. Sure, it isn't perfect, but it's an improvement and they're still developing the software. I don't think this thing is perfect either (maybe it is, I haven't tried it). Since then I've exchanged several PMs with people at MF, helped them with a few other things, and I'd like to think that if there's something I can share with them that represents what people here care about, maybe I can help bring that to MF's attention in a way that they can understand and use, since this forum in general doesn't have a good track record of that.
Big thumbs up from me - having a problem and deciding to actually do something about it.
I'm going to say this the nicest way I can: F.DS as a whole has done a really awful job of explaining to MF what they want out of MF's client.
It can't be that hard to implement, considering SCSN did it in a say. Also I really think you should need a video to understand "option to turn off animations".
I don't agree with you at all.
I don't think it's really up to f.ds to explain to Making Fun what they're doing wrong.
I'm streaming on this patch now.
http://www.twitch.tv/awaclus_
It can't be that hard to implement, considering SCSN did it in a say. Also I really think you should need a video to understand "option to turn off animations".
Developing software is hard. I don't know what their code looks like, but depending on their design/implementation, it might be difficult to do this. I don't know the details of SCSN's patch, but maybe he just turned off their display pixels or something -- the point is, coming up with a solution that works well with their design may be more complicated than adding in a check box and changing 3 lines of code. The fact that many people here, who aren't software engineers, think that they know how to develop code they've never seen before better than the people who actually wrote the code and who are software engineers, shows a lack of respect.
What I'm saying is that MF should be able to do it better, since they're software engineers and I'm not.
I'm streaming on this patch now.
http://www.twitch.tv/awaclus_
Well you know that they wrote it. It's not like they got given some code that they had to work with, they're completely responsible themselves for their code.What I'm saying is that MF should be able to do it better, since they're software engineers and I'm not.
Not knowing anything about their code.
Well you know that they wrote it. It's not like they got given some code that they had to work with, they're completely responsible themselves for their code.What I'm saying is that MF should be able to do it better, since they're software engineers and I'm not.
Not knowing anything about their code.
This patch isn't really grounds for criticism that adding this feature should have been easy.
Removing the animation content from the game entirely isn't a proper software engineering solution.
It still totally shouldn't take more than a week, but don't relate the patch to the feature. The patch can be done in O(1) man hours, or O(2) if there's a couple places where the animation was stored. A proper fix is more like O(n) where n is the number of animation calls.
It still totally shouldn't take more than a week, but don't relate the patch to the feature. The patch can be done in O(1) man hours, or O(2) if there's a couple places where the animation was stored. A proper fix is more like O(n) where n is the number of animation calls. There's not a relationship between those two things, adding an animation call wouldn't make SCSN's fix easier and storing three more animations in a different section of that DLL file wouldn't make MF's solution harder.
Yeah if the code is written right, there is a "Play animation" master funciton that can just check the global variable at the start to decide if it should do anything at all. But there's ways to write it poorly enough that you'd need to check at every separate possible way you can call for the animations.It still totally shouldn't take more than a week, but don't relate the patch to the feature. The patch can be done in O(1) man hours, or O(2) if there's a couple places where the animation was stored. A proper fix is more like O(n) where n is the number of animation calls. There's not a relationship between those two things, adding an animation call wouldn't make SCSN's fix easier and storing three more animations in a different section of that DLL file wouldn't make MF's solution harder.
O(1)=O(2).
A proper fix might need O(n), but it shouldn't.
This patch isn't really grounds for criticism that adding this feature should have been easy.
Except that it is, because there is in fact the equivalent of a global variable controlling these things and implementing a fix would be as simple as creating a GUI element somewhere that controls its value.
I don't get where all this mistrust comes from. Why would SCSN lie about this?
I don't get where all this mistrust comes from. Why would SCSN lie about this?
Not knowing anything about their code, I can't say whether or not I think they should be doing a better job because I don't actually know. This (which I believe is the sentiment of many other people here) just assumes they should be doing better because we wish they were. It's just speculation and disrespect.
Whether or not you're right (maybe you are), I don't think this is a constructive thing to think, so I don't think it.
It can't be that hard to implement, considering SCSN did it in a say. Also I really think you should need a video to understand "option to turn off animations".
Developing software is hard. I don't know what their code looks like, but depending on their design/implementation, it might be difficult to do this. I don't know the details of SCSN's patch, but maybe he just turned off their display pixels or something -- the point is, coming up with a solution that works well with their design may be more complicated than adding in a check box and changing 3 lines of code. The fact that many people here, who aren't software engineers, think that they know how to develop code they've never seen before better than the people who actually wrote the code and who are software engineers, shows a lack of respect.
Many people here think they don't deserve respect. OK, it's OK to think that. I don't. But if someone shows that they don't have respect for me, I'm not going to make their complaints the top priority just to shut them up.
As for the video, I was hoping to see that to satisfy my curiosity for what this thing actually does, since I'm not willing to put it on my computer. Based on my previous experience, it seems that videos are a great way to communicate other animation-related issues that I've helped with in the past, but that's a separate thing, more related to my desperate attempt to try and find some actual value in this.
Sorry if I was unclear about that.I don't agree with you at all.
OK, actually I agree with a good chunk of what you said. I addressed most of it up there and the rest I feel like we can just agree to disagree. Cool.I don't think it's really up to f.ds to explain to Making Fun what they're doing wrong.
You're right here. I'm bringing that up because there seems to be this attitude around here that we can all be jerks to them and complain about stuff in a non-constructive way (I'm not saying you ever did that, I'm pretty sure you didn't) and then expect to have our complaints be their highest priority. As long as we still have Goko to play on I really don't see what the rush is.I'm streaming on this patch now.
http://www.twitch.tv/awaclus_
Crap, I can't watch that right now. Please highlight?
Importantly, these two aren't even grounds for legal action. I played WoW for eight years; Blizzard closed accounts for this sort of thing, but never really took legal action because there were no damages to recover and no laws broken.
- It isn't harmful towards other users
- It doesn't give you an unfair advantage in competing with other users.
Importantly, these two aren't even grounds for legal action. I played WoW for eight years; Blizzard closed accounts for this sort of thing, but never really took legal action because there were no damages to recover and no laws broken.
- It isn't harmful towards other users
- It doesn't give you an unfair advantage in competing with other users.
The worst that can come of doing this is to get your account closed. But Blizzard could afford to close 1% of its WoW accounts because WoW brings in money hand over fist--and the other 99% actively wanted the botting jerks closed. If MF decides to close accounts because a user provided a service that a majority of people want... they can't afford that sort of bad publicity.
They should at least be like Blizzard and say they want to force players to subject themselves to them whether they like it or not
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
I think the real answer is to first select the cards you want to trash/discard, and then press a button for trash/discard. Isotropic did something like this, though there you had to use a separate interface than your actual hand to make the selections, so that wasn't good. In my Temporum client, as you select each item in your hand, it moves upward to separate it from other cards in your hand.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
Um, X's leave something visible in the north, south, east, and west part of the card. Fortunately the name is in the north part of the card, which should tell you everything you need to know about the card. If you can't remember whether Nobles is also an action card because the red crossbar is blocking the typeline, I think you're fated to make a bad trashing decision anyway.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
Um, X's leave something visible in the north, south, east, and west part of the card. Fortunately the name is in the north part of the card, which should tell you everything you need to know about the card. If you can't remember whether Nobles is also an action card because the red crossbar is blocking the typeline, I think you're fated to make a bad trashing decision anyway.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
Um, X's leave something visible in the north, south, east, and west part of the card. Fortunately the name is in the north part of the card, which should tell you everything you need to know about the card. If you can't remember whether Nobles is also an action card because the red crossbar is blocking the typeline, I think you're fated to make a bad trashing decision anyway.
If I play Chapel, and big red Xs obscure every card in my hand, and I want to trash that one card that lets me gain an attack, but I can't remember which one that was, that information should be as easy as possible to acquire.
I thought most players have a card memorized by the time they've chosen to make it part of their deck.
I thought most players have a card memorized by the time they've chosen to make it part of their deck.
We are not most players.
Yeah, but we are like, discussing a patch that is circulated primarily through a forum about Dominionstrategy, so like, that's the relevant subgroup !??!?!?!?!?!!?I thought most players have a card memorized by the time they've chosen to make it part of their deck.
We are not most players.
Yeah this. I think it's pretty likely that a more casual player, the type who doesn't spend time on forums about Dominion strategy
Yeah, but we are like, discussing a patch that is circulated primarily through a forum about Dominionstrategy, so like, that's the relevant subgroup !??!?!?!?!?!!?I thought most players have a card memorized by the time they've chosen to make it part of their deck.
We are not most players.
Yeah this. I think it's pretty likely that a more casual player, the type who doesn't spend time on forums about Dominion strategy
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
I think the real answer is to first select the cards you want to trash/discard, and then press a button for trash/discard. Isotropic did something like this, though there you had to use a separate interface than your actual hand to make the selections, so that wasn't good. In my Temporum client, as you select each item in your hand, it moves upward to separate it from other cards in your hand.
Yeah, but we are like, discussing a patch that is circulated primarily through a forum about Dominionstrategy, so like, that's the relevant subgroup !??!?!?!?!?!!?I thought most players have a card memorized by the time they've chosen to make it part of their deck.
We are not most players.
Yeah this. I think it's pretty likely that a more casual player, the type who doesn't spend time on forums about Dominion strategy
The red X originally came from Donald's suggestion for SCSN's patch, so yeah, that is what we've been talking about.Yeah, but we are like, discussing a patch that is circulated primarily through a forum about Dominionstrategy, so like, that's the relevant subgroup !??!?!?!?!?!!?I thought most players have a card memorized by the time they've chosen to make it part of their deck.
We are not most players.
Yeah this. I think it's pretty likely that a more casual player, the type who doesn't spend time on forums about Dominion strategy
I thought we were talking about our dreams for what MF itself should do...but I now see your point.
Yes that would be good. It seems beyond the scope for SCSN though.- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
I think the real answer is to first select the cards you want to trash/discard, and then press a button for trash/discard. Isotropic did something like this, though there you had to use a separate interface than your actual hand to make the selections, so that wasn't good. In my Temporum client, as you select each item in your hand, it moves upward to separate it from other cards in your hand.
- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
I think the real answer is to first select the cards you want to trash/discard, and then press a button for trash/discard. Isotropic did something like this, though there you had to use a separate interface than your actual hand to make the selections, so that wasn't good. In my Temporum client, as you select each item in your hand, it moves upward to separate it from other cards in your hand.
No, that is one more click. Too slow...
Yes that would be good. It seems beyond the scope for SCSN though.- When picking a card to trash or return-to-supply, put a giant red X over the entire card image. No amount of highlighting does the trick.
- When picking a card to discard or put-on-deck, put a giant left arrow over the card image.
Maybe you're picturing something different from what I'm picturing, but wouldn't a giant red X obscure the card itself?
Now that they've got the gauntlet hand cursor, maybe there could be separate cursors for trashing and discarding.
I think the real answer is to first select the cards you want to trash/discard, and then press a button for trash/discard. Isotropic did something like this, though there you had to use a separate interface than your actual hand to make the selections, so that wasn't good. In my Temporum client, as you select each item in your hand, it moves upward to separate it from other cards in your hand.
I don't like the gauntlet, but yes a different cursor would do the trick too.
Obv. it has to be possible to read all cards no matter what (which it isn't), so obscuring text with the X isn't an issue (once that's otherwise fixed). Mostly I will know how many coins Squire makes, and when I don't I can go look, and that extra trouble is nothing next to trashing a card I thought I was playing.
Developing software is hard.That was never my experience, back when I was a programmer. I used to say, every programming task was either trivial or impossible. And I don't mean, impossible-hard, I mean, impossible-the-hardware-won't-do-that. It was rare that there was a meaty thing to work on.
A simple solution would be to put the X over just the art of the card. Still visible, doesn't block anything vital.Yes but.
A simple solution would be to put the X over just the art of the card. Still visible, doesn't block anything vital.Yes but.
Currently, with no big X anywhere, there are times when you cannot see what your card does and in fact have no way to find out within the system. This has come up in the MF forums - I'm not familiar with Dark Ages, my hand has a Hovel, it's behind Copper so I can't read the text, there's nowhere to see that text.
When you solve that problem then it doesn't matter if the big X hides part of Squire.
I'm going to say this the nicest way I can: F.DS as a whole has done a really awful job of explaining to MF what they want out of MF's client.
switch (num)
{
case 0:
white = Color.green;
[...]
break;
case 1:
white = Color.blue;
[...]
break;
case 2:
white = this.HexToColor("87cefa");
[...]
break;
case 3:
white = this.HexToColor("ff000000");
[...]
break;
case 4:
white = this.HexToColor("ffa500");
[...]
break;
case 5:
white = this.HexToColor("ff1493");
[...]
break;
}
this.HexToColor("ff000000")
Quotethis.HexToColor("ff000000")
Dominion, now with an extra dimension of color.
Also, I thought Donald's suggestion was that the red X only appears on mouseover. So to view the information, you move the mouse just a little in like, any direction, and bam, the information is available to you. So that information is "as easy as possible to acquire".
I like colored borders as they are and I would like if the changes remain as small as possible.
I like colored borders as they are and I would like if the changes remain as small as possible.
Colored borders are one of the few great UI decisions that adds information without being distracting or ugly. They're a huge positive of an online adaptation, I'd say.
The blue atrocity when passing a card with Masquerade is horrible though, and I'm not sure what makes it particularly distracting, but I would like it more if it was less like what it is now.
Sparkling colored borders, they're awful.
I swear, I honestly think my brain is disassociating from reality. You had to remind me they now sparkle. Sparkling colored borders, they're awful.
The blue atrocity when passing a card with Masquerade is horrible though, and I'm not sure what makes it particularly distracting, but I would like it more if it was less like what it is now.
Let me know if you like this one better.
It still seems like it would have made sense for everyone to just pay money to whoever chose to buy the license for online dominion and continue playing on Isotropic. You can even take dougz out of the equation, remove isotropic entirely, and just have in 2013: "RGG decrees that Isotropic closes down. We sold the license for online dominion to Goko. You guys have to make your own open source implementation of Dominion, then pay Goko to play on it." As much as it makes no sense, it makes less sense for a fan to need to volunteer to reverse engineer code from an existing implementation in order to add critical, trivial features.
Hilariously, I have an awful lot of trouble believing people would be paying more/getting less in that scenario. And I have trouble believing online dominion is now larger than it is in that parallel universe, Isotropic seemed to me to be on a growth arc to do much better than dominion is doing now, especially with Hearthstone's release opening lots of people to the idea of playing card games on their computers.
I'm probably wrong, I hope I'm wrong, Adam Horton come tell me I'm wrong.
public static float getFlightTimeMultiplier(string source, string destination)
{
float num = 1f;
if ((source != null) && (destination != null))
{
if (source == destination)
{
if (source == "play")
{
return 0.6f;
}
return (!source.Contains(".0") ? 0.1f : 0.4f);
}
if (source.StartsWith("deck"))
{
if (destination.StartsWith("hand"))
{
num = !(destination == "hand.0") ? 0.3f : 0.9f;
}
return num;
}
if (((destination == "globalReveal") || (destination == "globalRevealTwo")) || ((destination == "globalRevealBlackMarket") || destination.StartsWith("reveal")))
{
return 0.45f;
}
if (source.StartsWith("discard"))
{
if (destination.StartsWith("deck"))
{
num = !(destination == "deck.0") ? 0.3f : 0.5f;
}
return num;
}
if (source.StartsWith("hand"))
{
if (destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.4f : 0.8f;
}
return num;
}
if (destination == "play")
{
return (!(source == "hand.0") ? 1f : 0.5f);
}
if ((source == "play") && destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.5f : 0.7f;
}
}
return num;
}
public static float getFlightTimeMultiplier(string source, string destination)
{
return 0f;
}
There's this ridiculous function that calculates a factor that affects how long cards stay up in the air:Code: [Select]public static float getFlightTimeMultiplier(string source, string destination)
{
float num = 1f;
if ((source != null) && (destination != null))
{
if (source == destination)
{
if (source == "play")
{
return 0.6f;
}
return (!source.Contains(".0") ? 0.1f : 0.4f);
}
if (source.StartsWith("deck"))
{
if (destination.StartsWith("hand"))
{
num = !(destination == "hand.0") ? 0.3f : 0.9f;
}
return num;
}
if (((destination == "globalReveal") || (destination == "globalRevealTwo")) || ((destination == "globalRevealBlackMarket") || destination.StartsWith("reveal")))
{
return 0.45f;
}
if (source.StartsWith("discard"))
{
if (destination.StartsWith("deck"))
{
num = !(destination == "deck.0") ? 0.3f : 0.5f;
}
return num;
}
if (source.StartsWith("hand"))
{
if (destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.4f : 0.8f;
}
return num;
}
if (destination == "play")
{
return (!(source == "hand.0") ? 1f : 0.5f);
}
if ((source == "play") && destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.5f : 0.7f;
}
}
return num;
}
Being a fan of both speed and concision, I'm making this slight simplification:Code: [Select]public static float getFlightTimeMultiplier(string source, string destination)
{
return 0f;
}
That is a welcome change in my book. I can see the delays being nice for newer players, but I prefer the extra speed myself.
That is a welcome change in my book. I can see the delays being nice for newer players, but I prefer the extra speed myself.
Bear in mind that it's not just your cards that are delayed, but opponent's cards. I get that you all want this to be as close an experience to ASCII Dominion as possible, but I like getting a visual reference of what my opponent is doing, other than just the log. This was a problem at the beginning of the 2.0 beta when cards were moving too fast and I had no idea what my opponent was even doing.
That is a welcome change in my book. I can see the delays being nice for newer players, but I prefer the extra speed myself.
Bear in mind that it's not just your cards that are delayed, but opponent's cards. I get that you all want this to be as close an experience to ASCII Dominion as possible, but I like getting a visual reference of what my opponent is doing, other than just the log. This was a problem at the beginning of the 2.0 beta when cards were moving too fast and I had no idea what my opponent was even doing.
Well, nobody is forcing you to use the modifications if you don't care for them. I don't see the issue here.
There's this ridiculous function that calculates a factor that affects how long cards stay up in the air:I am really curious if this kind of thing is the norm in the twisted world we live in, or as bad as it looks to me.
There's this ridiculous function that calculates a factor that affects how long cards stay up in the air:I am really curious if this kind of thing is the norm in the twisted world we live in, or as bad as it looks to me.
It is checking card destinations (etc.) against possibilities. And to do this it compares strings. Not, I dunno, numbers. In a good language it would be an enumerated type, perfect. You would actually be comparing 16 or 32 bits, when 8 would do, since computers prefer bigger numbers these days. But still, a comparison of two numbers. Rather than seeing, is the first letter g, is the second letter l, etc., as if your meaningful information is a bunch of characters when in fact it is no such thing.
While I totally agree that there's got to be a better way (my preference would be something like symbols in Ruby or keywords in Clojure), comparing strings vs. comparing integers/enumerated types will not have significant performance differences unless this code is run literally billions of times. It's still really ugly though, and should probably be in a case statement.It's not just ugly and slow. Man. Let's say I have a typo in one of the strings. With the enumerated types, it doesn't compile. Oh, typo, fixed, compile. With these strings, it compiles, it runs, you've got a bug. In this case the bug is that the time it takes a card to go from one place to another isn't the intended time in certain situations, so, it does not loom large, unless it's awful enough to notice. But you know. If they're doing this here they're doing it in other places.
Jeff says there will be an option to disable animations in the next version.
for (int x = 1; x <=5; x++)
{
switch (x)
{
case 1:
[Do some stuff];
break;
case 2:
[Do some stuff];
break;
case 3:
[Do some stuff];
break;
case 4:
[Do some stuff];
break;
case 5:
[Do some stuff];
break;
}
}
I don't want to sidetrack this thread too much; but to respond to Donald's code-related stuff; while perhaps not the "norm" in our twisted world, it's also far from the worst thing I've see in code that I've inherited from other companies to maintain. My favorite example of silliness is this bit from some old VB6 code that I had to work wtih (though written here as c# for my own sanity):Code: [Select]for (int x = 1; x <=5; x++)
{
switch (x)
{
case 1:
[Do some stuff];
break;
case 2:
[Do some stuff];
break;
case 3:
[Do some stuff];
break;
case 4:
[Do some stuff];
break;
case 5:
[Do some stuff];
break;
}
}
for (int x = 1; x <=5; x++)
{
switch (x)
{
case 5:
[Do some stuff];
break;
case 4:
[Do some stuff];
break;
case 3:
[Do some stuff];
break;
case 2:
[Do some stuff];
break;
case 1:
[Do some stuff];
break;
}
}
Someone translate that bad code into a language I can understand so I can be a part of this.
if (joke.explained == 1)
joke.fun++;
Code: [Select]if (joke.explained == 1)
joke.fun++;
private int getVPFromSpecialCards()
{
int num = 0;
if (this.numFairgrounds > 0)
{
num += (this.numFairgrounds * 2) * (this.numOfDifferentCards / 5);
}
if (this.numSilkroads > 0)
{
num += this.numSilkroads * (this.numVictoryCards / 4);
}
if (this.numVineyards > 0)
{
num += this.numVineyards * (this.numActionCards / 3);
}
if (this.numDukes > 0)
{
num += this.numDukes * this.numDuchiesCards;
}
if (this.numGardens > 0)
{
num += this.numGardens * (this.numCards / 10);
}
if (this.numFeodums > 0)
{
num += this.numFeodums * (this.numSilvers / 3);
}
return num;
}
private int getVPFromSpecialCards()
{
int num = 0;
if (this.numFairgrounds > 0)
{
if (this.numOfDifferentCards > 0)
{
num += (this.numFairgrounds * 2) * (this.numOfDifferentCards / 5);
}
}
if (this.numSilkroads > 0)
{
if (this.numVictoryCards > 0)
{
num += this.numSilkroads * (this.numVictoryCards / 4);
}
}
if (this.numVineyards > 0)
{
if (this.numActionCards > 0)
{
num += this.numVineyards * (this.numActionCards / 3);
}
}
if (this.numDukes > 0)
{
if (this.numDuchiesCards > 0)
{
num += this.numDukes * this.numDuchiesCards;
}
}
if (this.numGardens > 0)
{
if (this.numCards > 0)
{
num += this.numGardens * (this.numCards / 10);
}
}
if (this.numFeodums > 0)
{
if (this.numSilvers > 0)
{
num += this.numFeodums * (this.numSilvers / 3);
}
}
return num;
}
There's this ridiculous function that calculates a factor that affects how long cards stay up in the air:Code: [Select]public static float getFlightTimeMultiplier(string source, string destination)
{
float num = 1f;
if ((source != null) && (destination != null))
{
if (source == destination)
{
if (source == "play")
{
return 0.6f;
}
return (!source.Contains(".0") ? 0.1f : 0.4f);
}
if (source.StartsWith("deck"))
{
if (destination.StartsWith("hand"))
{
num = !(destination == "hand.0") ? 0.3f : 0.9f;
}
return num;
}
if (((destination == "globalReveal") || (destination == "globalRevealTwo")) || ((destination == "globalRevealBlackMarket") || destination.StartsWith("reveal")))
{
return 0.45f;
}
if (source.StartsWith("discard"))
{
if (destination.StartsWith("deck"))
{
num = !(destination == "deck.0") ? 0.3f : 0.5f;
}
return num;
}
if (source.StartsWith("hand"))
{
if (destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.4f : 0.8f;
}
return num;
}
if (destination == "play")
{
return (!(source == "hand.0") ? 1f : 0.5f);
}
if ((source == "play") && destination.StartsWith("discard"))
{
num = !(destination == "discard.0") ? 0.5f : 0.7f;
}
}
return num;
}
public static float getFlightTimeMultiplier(string source, string destination)
{
if (source == null || destination == null)
{
return 1f;
}
if (source == destination && source == "play")
{
return 0.6f;
}
if (source == destination && source.Contains(".0")
{
return 0.4f;
}
if (source == destination)
return 0.1f;
}
if (source.StartsWith("deck") && destination == "hand.0")
{
return 0.9f;
}
if (source.StartsWith("deck") && destination.StartsWith("hand"))
{
return 0.3f;
}
if (source.StartsWith("deck"))
{
return 1f;
}
if ((destination == "globalReveal") || (destination == "globalRevealTwo") || (destination == "globalRevealBlackMarket") || destination.StartsWith("reveal"))
{
return 0.45f;
}
if (source.StartsWith("discard") && destination == "deck.0")
{
return 0.5f;
}
if (source.StartsWith("discard") && destination.StartsWith("deck"))
{
return 0.3f;
}
if (source.StartsWith("discard"))
{
return 1f;
}
if (source.StartsWith("hand") && destination == "discard.0")
{
return 0.8f;
}
if (source.StartsWith("hand") && destination.StartsWith("discard"))
{
return 0.4f;
}
if (source.StartsWith("hand"))
{
return 1f;
}
if (destination == "play")
{
return 1f;
}
if (source == "play" && destination == "discard.0")
{
return 0.7f;
}
if (source == "play" && destination.StartsWith("discard"))
{
return 0.5f;
}
return 1f;
}
It's not just ugly and slow. Man. Let's say I have a typo in one of the strings. With the enumerated types, it doesn't compile. Oh, typo, fixed, compile. With these strings, it compiles, it runs, you've got a bug. In this case the bug is that the time it takes a card to go from one place to another isn't the intended time in certain situations, so, it does not loom large, unless it's awful enough to notice. But you know. If they're doing this here they're doing it in other places.
Say what you mean! Is my first rule of computer programming. When you don't mean a string, don't use a string.
if (destination == "play")
{
return (!(source == "hand.0") ? 1f : 0.5f);
}
if (source.StartsWith("hand"))
will return 1f.
So I don't know much about RE, and I've only done a little work in school with C#, but some of this *has* to be the result of you only being able to look at the code after it was compiled and then decompiled, right? Like, the compiler could make optimizations that are less readable, right? For my own sanity I just need to know a human didn't actually write that code.
if (a && b)
{
do_stuff();
}
rest_of_program();
if (a)
{
if (b)
{
do_stuff();
}
}
rest_of_program();
compare a, 0;
jmp_if_eq after_if;
compare b, 0;
jmp_if_eq after_if;
call do_stuff;
after_if:
call rest_of_program;
Code: [Select]if (a && b)
{
do_stuff();
}
rest_of_program();Code: [Select]if (a)
{
if (b)
{
do_stuff();
}
}
rest_of_program();
Gotta make sure you never multiply by zero:Code: [Select]private int getVPFromSpecialCards()
{
int num = 0;
if (this.numFairgrounds > 0)
{
num += (this.numFairgrounds * 2) * (this.numOfDifferentCards / 5);
}
if (this.numSilkroads > 0)
{
num += this.numSilkroads * (this.numVictoryCards / 4);
}
if (this.numVineyards > 0)
{
num += this.numVineyards * (this.numActionCards / 3);
}
if (this.numDukes > 0)
{
num += this.numDukes * this.numDuchiesCards;
}
if (this.numGardens > 0)
{
num += this.numGardens * (this.numCards / 10);
}
if (this.numFeodums > 0)
{
num += this.numFeodums * (this.numSilvers / 3);
}
return num;
}
At least they tried...
Why are they numDuchiesCards instead of numDuchies, like the others? Duchy is name of card, not a type.
A decompiler has to look at that sequence of instructions and try to figure out which logic structures would produce such a sequence, and the result is usually incorrect (i.e., it doesn't match the structure that the C programmer originally wrote).
Well, to be an apologist, suppose that "getnum of Duchy cards" and "getnum of different cards" are really slow operations. In that case, checking if the special victory card is present at all will speed up execution, since that function won't get called at all. So maybe it's worth making the code less readable.It's not a function here, it's a variable. If this isn't C and it's somehow a function, it's a function both times (much worse in your scenario), since it looks the same.
if (this.numFairgrounds > 0)
{
num += (this.numFairgrounds * 2) * (this.numOfDifferentCards / 5);
}
Some other routine counted Fairgroundses, now this one looks at that number. Why another routine calculated it and stored it when it's only used here, I couldn't tell you. Maybe they expect a future expansion with counting copies of Fairgrounds as a theme.
Let's say I have a typo in one of the strings.
public void setPlayerAvatarStates(string state)
{
if (this.pState != state)
{
this.pState = state;
if (this.pState == "turn")
{
this.pBgAvatar.color = Color.yellow;
}
else if (state == "normal")
{
this.pBgAvatar.color = Color.grey;
}
else if (state == "possesion")
{
this.pBgAvatar.color = Color.magenta;
}
}
}
private string replaceColor(string str)
{
string str2 = str;
if ((str2.Length > 5) && str2.StartsWith("-----"))
{
string str3 = GamePlayUtils.getColor(this.getPlayerIndex(str2.Substring(str2.IndexOf(" ") + 1), ":"), true);
string[] textArray1 = new string[] { "<Color=", str3, ">", str2, "</Color>" };
return string.Concat(textArray1);
}
str2 = this.imageText(str2).Replace("JackOfAllTrades", "Jack of All Trades");
foreach (KeyValuePair<string, string> pair in this.pColorCards)
{
str2 = this.replaceListCardColor(str2, pair.Key, pair.Value);
}
int playerIndex = this.getPlayerIndex(str2, " ");
string str4 = GamePlayUtils.getColor(playerIndex, true);
if (playerIndex >= 0)
{
str2 = str2.Replace(GamePlayHud.i().pPlayers[playerIndex].pName + " -", "<Color=" + str4 + ">" + GamePlayHud.i().pPlayers[playerIndex].pName + "</Color> -");
}
return str2;
}
Have they not heard of refactoring?
Have they not heard of refactoring?
I don't think they've even heard of just factoring.
Have they not heard of refactoring?
I don't think they've even heard of just factoring.
SCSN, you're doing amazing work.
With your hackery, would it be at all possible to change the log font to something that's actually comfortably readable as running text -- y'know, like 11pt Arial* -- instead of an all-caps font that's meant for card titles?
* Helvetica. Verdana. I don't care. Some font that has never tried to be exciting.
For people who already moved to 2.0.43, here (https://www.dropbox.com/s/wzlybakgq4g0eut/Assembly-CSharp_0.43beta.rar?dl=0) is a quick patch that changes the log to make it more readable:
(http://s2.postimg.org/dkoimarnd/chat.png)
It doesn't yet contain any other features (though the disabling of animations is now a native feature).
Does it find the first initial that doesn't match?
That's why Salvager had those extra buttons I loved that much. I've said it before that those Buttons should not be in the same spot at all. There are other obnoxious things like when you overpay and you have Potions and the buttons get bigger once you don't have a Potion in your "cash pool" any more and stuff like that. They've always been there but yeah, there was some hope MF would think about the layout before re-implementing all silly UI design decisions Goko has made... but no. (I haven't played with Potions and overpay yet but I just assume it's all the same)So, uh.. is it just me, or should the buttons for making selections (Hamlet) be in a different place than the buttons for ending a particular phase?
That has been a problem with Goko since 2012.
Isn't that kind of layout 101?
Some/most/all of these might be impossible without patching the .exe file, so if someone figures out how to decompile that thing that could help as well.
The regular patch (https://www.dropbox.com/s/rj4y7zn4f3h1tc8/Assembly-CSharp_0.43.rar?dl=0) for 2.0.43 is now ready, but I'm curious if there's still interest in this one or whether I can just focus exclusively on the speed version.
Right now the regular one is just the updated log + nicer Masq/Bane reveal color. Is there anyone who really likes these features but hates the high speed version?
So this patch is just speed at this point, or does it turn animations off even more than MF's "minimal" setting?
I'm honestly curious how it could make MF faster at this point, I suppose I should try it out, as I had to slow down their speed setting from its max because I was loosing track of what was happening.
I would be more interested in a feature to change the font of the log than the text colors of the log, btw, if that feedback is relevant. Changing the background to something with a better contrast (ie not jet-black) would be sweet.
I'd be interested in trying to help out, but may not have a ton of time available immediately. Do you have a repository you are using to track your changes?
I'd be interested in trying to help out, but may not have a ton of time available immediately. Do you have a repository you are using to track your changes?
Right now it's all in my head, but if you let me know when you think you'd have some time to spare I'll try to have some sort of log available by then.
The normal patch just gives the updated log and changed Masq highlight color, nothing else.
The normal patch just gives the updated log and changed Masq highlight color, nothing else.
Thanks for this, speed patch is great. Is there a way that you can make it so that the log shows the full player names at the very start of the game? If I'm going first, it's strange not to know who I'm playing until after my first buy! Sorry if this has already been covered.
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
Though doesn't the log show what you drew from the previous turn?
The normal patch just gives the updated log and changed Masq highlight color, nothing else.
Thanks for this, speed patch is great. Is there a way that you can make it so that the log shows the full player names at the very start of the game? If I'm going first, it's strange not to know who I'm playing until after my first buy! Sorry if this has already been covered.
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
I've looked into it a bit and will look into it a bit more, but it's probably not going to happen. Hopefully MF will write the cards to the log.
For people who already moved to 2.0.43, here (https://www.dropbox.com/s/wzlybakgq4g0eut/Assembly-CSharp_0.43beta.rar?dl=0) is a quick patch that changes the log to make it more readable:
(http://s2.postimg.org/dkoimarnd/chat.png)
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
The correct solution isn't a delay, the correct solution is to allow you to toggle to view your hand. Though doesn't the log show what you drew from the previous turn?
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
The correct solution isn't a delay, the correct solution is to allow you to toggle to view your hand. Though doesn't the log show what you drew from the previous turn?
Maybe this has been answered elsewhere, but are you allowed in F2F Dominion to look at your previous hand during your Possession turn? At that point it's not your turn with your deck. It's your turn with your opponent's deck. I could see how someone would interpret the rules such that you can't look at your own deck during this Possession turn.
The normal patch just gives the updated log and changed Masq highlight color, nothing else.
Thanks for this, speed patch is great. Is there a way that you can make it so that the log shows the full player names at the very start of the game? If I'm going first, it's strange not to know who I'm playing until after my first buy! Sorry if this has already been covered.
Yes, that's possible. My first try was this:
(http://s28.postimg.org/5fbdm88bh/starting.png)
But then I thought "hey, this could be a neat way to also highlight shuffling throughout the game" and ended up with this:
(http://s13.postimg.org/pemdtb213/shuffling.png)
Updated patch (https://www.dropbox.com/s/67ixo2gz1kvevbe/Assembly-CSharp_0.43_speed_update.rar?dl=0) (speed only).
One thing I would experiment with is making shuffles even more noticeable by putting a full line of tildes before or after a shuffle. Maybe it would look terrible, maybe it would help.
One thing I would experiment with is making shuffles even more noticeable by putting a full line of tildes before or after a shuffle. Maybe it would look terrible, maybe it would help.
How about this:
I think the words "shuffle" should shake around, like it's shuffling. Maybe also with some blinking or sparkling, or general pyrotechnic animations.
I am with drsteelhammer here.
Also, how is the work on adding Mic's head to chrystal ball going?
But I get that the speed thing is the reason people download your patch so I don't expect you two work on two patches simultaneiously if I'm the whole target audience :)
I would actually like some sort of delay when I'm playing with Possession because the log doesn't tell me what cards I have in my hand. I don't know if it's possible to make it happen for just Possession though, probably not.
I've looked into it a bit and will look into it a bit more, but it's probably not going to happen. Hopefully MF will write the cards to the log.
I'll hold of on creating an updated patch
I'm going to be able to write the cards you draw to the (local) gamelog. Would people like to see this happen all the time or only at the end of the turns on which you played a Possession?It doesn't sound exciting to me (someone who will probably never download your thing, since I sometimes need to be reporting opinions of the official version in all its purity).
Example: "S - Draws 4 Cards" would be replaced by something like "S - Draws King's Court, King's Court, Goons, Masquerade" (pin not included).
I'm going to be able to write the cards you draw to the (local) gamelog. Would people like to see this happen all the time or only at the end of the turns on which you played a Possession?
Example: "S - Draws 4 Cards" would be replaced by something like "S - Draws King's Court, King's Court, Goons, Masquerade" (pin not included).
public void addVictoryPointCard(string cardName, CardMethod method)
{
switch (method)
{
case CardMethod.Gaining:
this.numCards++;
if (this.cardsCount.ContainsKey(cardName))
{
int num = this.cardsCount[cardName];
num++;
this.cardsCount[cardName] = num;
}
else
{
this.cardsCount[cardName] = 1;
}
break;
case CardMethod.Thrashing:
this.numCards--;
if (this.cardsCount.ContainsKey(cardName))
{
int num2 = this.cardsCount[cardName];
num2--;
if (num2 < 1)
{
this.cardsCount.Remove(cardName);
}
else
{
this.cardsCount[cardName] = num2;
}
}
break;
}
if (cardName == "silver")
{
if (method == CardMethod.Gaining)
{
this.numSilvers++;
}
else if (method == CardMethod.Thrashing)
{
this.numSilvers--;
}
}
else if (cardName == "duchy")
{
if (method == CardMethod.Gaining)
{
this.numDuchiesCards++;
}
else if (method == CardMethod.Thrashing)
{
this.numDuchiesCards--;
}
}
else if (cardName == "fairgrounds")
{
if (method == CardMethod.Gaining)
{
this.numFairgrounds++;
}
else if (method == CardMethod.Thrashing)
{
this.numFairgrounds--;
}
}
else if (cardName == "silk road")
{
if (method == CardMethod.Gaining)
{
this.numSilkroads++;
}
else if (method == CardMethod.Thrashing)
{
this.numSilkroads--;
}
}
else if (cardName == "vineyard")
{
if (method == CardMethod.Gaining)
{
this.numVineyards++;
}
else if (method == CardMethod.Thrashing)
{
this.numVineyards--;
}
}
else if (cardName == "duke")
{
if (method == CardMethod.Gaining)
{
this.numDukes++;
}
else if (method == CardMethod.Thrashing)
{
this.numDukes--;
}
}
else if (cardName == "gardens")
{
if (method == CardMethod.Gaining)
{
this.numGardens++;
}
else if (method == CardMethod.Thrashing)
{
this.numGardens--;
}
}
else if (cardName == "feodum")
{
if (method == CardMethod.Gaining)
{
this.numFeodums++;
}
else if (method == CardMethod.Thrashing)
{
this.numFeodums--;
}
}
[...]
}
the VP counter works by parsing the local gamelogEdit: I thought this was weird at first but I think it makes some sense (although I don't have familiarity with the code). It's legit to want to implement the counter on client only, instead of server+client (like isotropic did), so that if you want to make changes to the counter, you only need to change one codebase instead of two. Also it helps prevent the counter from leaking secret information, like isotropic's counter did in 3p+ Masquerade games.
after it's all nicely colored upI gotta think is just an accident.
So Masquerade breaks it, right? With more than 2 players, at least.
Masq's passing info doesn't get into the log even for 2 players yet the point counter gets updated, so it gets feeded from at least one channel other than the log. I haven't looked into it but I wouldn't rule out that it still works for >2P.
Masq's passing info doesn't get into the log even for 2 players yet the point counter gets updated, so it gets feeded from at least one channel other than the log. I haven't looked into it but I wouldn't rule out that it still works for >2P.
Is it possible that that entire function is just leftover code and not actually called?
Masq's passing info doesn't get into the log even for 2 players yet the point counter gets updated, so it gets feeded from at least one channel other than the log. I haven't looked into it but I wouldn't rule out that it still works for >2P.
Is it possible that that entire function is just leftover code and not actually called?
(http://i.imgur.com/cI1UaWX.png) | Hey all you MMF fans! I've been working with SCSN on the Graverobber plugin for MAKiNG MORE FUN. I've just completed the first goal for the plugin and have pretty pictures to show off, so here they are. The Graverobber plugin processes (in real time) a data log that is written out by MMF and generates a game log that is colorized in the style of our dearly departed Salvager. Planned features include:
|
Is it possible that that entire function is just leftover code and not actually called?
(http://i.imgur.com/cI1UaWX.png) Hey all you MMF fans! I've been working with SCSN on a <yet to be named after a witty Dominion card> plugin for MAKiNG MORE FUN.
I've just completed the first goal for the plugin and have pretty pictures to show off, so here they are. This plugin processes (in real time) a data log that is written out by MMF and generates a game log that is colorized in the style of our dearly departed Salvager.
Planned features include:
- Filling in publicly known cards for actions like cards drawn from your deck (a MMF feature) and cards passed with Masquerade
- Collapsing simple buys into "X buys & gains Y" (also a MMF feature)
- Baker token warning
- Shelters warning on 5/2 split
- Displaying all the public counters that hide in the crazy pop-out HUD or hide under mat cards on the MF client.
- Option to collapse (i.e. 5 Copper, 2 Estate) cards that are revealed by deck diggers (e.g. Golem).
- Witty name such as "(http://wiki.dominionstrategy.com/images/thumb/7/7a/Potion.png/9px-Potion.png)Transmute plugin for MMF"
- You tell me... I'm sure you have ideas
"Rebuild" would be an amusing poke at what MF supposedly did for the last six months.
Wait a minute.... are they actually misspelling "Trashing" as "Thrashing"??
I know that possession is consistently misspelled in the code for just such a reason.
Wait a minute.... are they actually misspelling "Trashing" as "Thrashing"??
Well, there are other misspellings around...I know that possession is consistently misspelled in the code for just such a reason.
Yes but I can understand the posession one. That's not knowing how to spell a word that's not an immediately obvious spelling. Thrashing is not just a misspelling of Trashing, it seems more like they were under the impression that "Thrash" is a Dominion term instead of "Trash".
Wait a minute.... are they actually misspelling "Trashing" as "Thrashing"??It's decompiled code, so you can only guess as to the word they have there. Whereas stuff in quotes, they actually have.
I think it might be. The "th" sounds are not native for many of us foreigners, and non-proficient speakers may associate/substitute them with sounds that are used in their language, like some form of "T" or "F" in this case. Once you've done that, you'll have trouble remembering which words contained "t" and which "th".Wait a minute.... are they actually misspelling "Trashing" as "Thrashing"??
Well, there are other misspellings around...I know that possession is consistently misspelled in the code for just such a reason.
Yes but I can understand the posession one. That's not knowing how to spell a word that's not an immediately obvious spelling. Thrashing is not just a misspelling of Trashing, it seems more like they were under the impression that "Thrash" is a Dominion term instead of "Trash".
Most changes are neatly captured by this one picture:A few obvious things you could do:
Wait a minute.... are they actually misspelling "Trashing" as "Thrashing"??
Any chance the font of MMF can change to not being all caps? It's so hard to read.
- When there's a list of cards, group them, e.g. "4 COPPER, HOVEL."
- Add missing color-coding, e.g. Beggar in blue.
- When the player's name is so long that the Turn line will go to two lines (happens a lot in the campaigns), cut out some dashes. If it's still too long, hack off the name where needed so that it isn't.
- Change the background color to a very dark gray for your own turns.
I'm giving you a +1, SCSN, only because the color you picked for Reactions isn't burning out my retinae, unlike all the colors MF picked.
if (color == "green")
{
color = "#56ff00ff";
}
Let's say a line in the log can contain 30 capitals "W" before it starts running over, what would then be a good character limit that is maximally permissive without leading to spilled lines in practice?I think you could just truncate names at 13 characters. That's a "W" over SheCantSayNo and so looks like about what you can fit on that screen image. It's unlikely your opponent has the same name as you up to that point and hey there's color-coding. You don't really care which Gentleman you're fighting in the campaigns.
Alternatively: what are some of the names that are both long and have a high space-consumption/character ratio that you've seen around?
Can you give a short instruction what to do with those files in the MMF directory to get the colored log?
All I see is two txt files and that strange dat file. If I open it in my Chrome it looks just like... a txt file
Is it possible to group up the "receives coin token" lines in the log aswell? I just played a Merchant Guild engine where half of the log consisted of that one line. (The same applies to VP tokens, I believe)
The changes to the log are a huge improvement. Kudos!I tried using Hex Fiend to look at the hex diffs between the .dll files and apply changes manually, but I haven't got it to work. If you could find a way to decompile the .dll files and just add the C# changes that might work better. I could browse the decompiled source in Mono, but couldn't edit/recompile.
Now I need to port it to the Mac version.
Is it possible to group up the "receives coin token" lines in the log aswell? I just played a Merchant Guild engine where half of the log consisted of that one line. (The same applies to VP tokens, I believe)
The changes to the log are a huge improvement. Kudos!I tried using Hex Fiend to look at the hex diffs between the .dll files and apply changes manually, but I haven't got it to work. If you could find a way to decompile the .dll files and just add the C# changes that might work better. I could browse the decompiled source in Mono, but couldn't edit/recompile.
Now I need to port it to the Mac version.
Is it possible to group up the "receives coin token" lines in the log aswell? I just played a Merchant Guild engine where half of the log consisted of that one line. (The same applies to VP tokens, I believe)
I'll look into this once I have Blitz Dominion working, which should hopefully be within a week from now.The changes to the log are a huge improvement. Kudos!I tried using Hex Fiend to look at the hex diffs between the .dll files and apply changes manually, but I haven't got it to work. If you could find a way to decompile the .dll files and just add the C# changes that might work better. I could browse the decompiled source in Mono, but couldn't edit/recompile.
Now I need to port it to the Mac version.
It's going to be extremely hard to get a working recompilation because there are a few hundred instructions all decompilers I've tried can't resolve. But if anyone succeeds, by all means let me know.
In the meantime, could any of you send me the Mac version of Assembly-CSharp.dll? I'm curious as to whether I can do something with it under Windows.
Platform assembly: /Applications/Dominion 2.0.44.2.app/Contents/Resources/Data/Managed/MMF.dll (this message is harmless)
ArgumentException: Invalid SpecialFolder
at System.Environment.InternalGetFolderPath (SpecialFolder folder) [0x00000] in <filename unknown>:0
at System.Environment.GetFolderPath (SpecialFolder folder) [0x00000] in <filename unknown>:0
at MMF.MakeMeSomeFun.initializeMMF () [0x00000] in <filename unknown>:0
at MMF.MakeMeSomeFun.receiveServerMessage (SimpleJSON.JSONNode serverMessage) [0x00000] in <filename unknown>:0
at NodeReceive.processReceive (SimpleJSON.JSONNode vJSONMsg) [0x00000] in <filename unknown>:0
at NodeReceive+<processList>c__Iterator4.MoveNext () [0x00000] in <filename unknown>:0
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).
I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).So not engine, but #AutoBMSmithy yes?
Automatically taking a curse from Torturer (for when curses are empty), automatically putting all Alchemsists/Treasuries back on your deck, automatically revealing Horse Traders, auto-trashing incoming curses with Watchtower/turning them to Silver with Trader are some I could think of.
So not engine, but #AutoBMSmithy yes?
I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).So not engine, but #AutoBMSmithy yes?
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).Spy / Scrying Pool: IRL it is common to say "just keep that for the rest of the turn." Dunno if that's worth the typing.
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).
If Wandering Minstrel reveals only the same action, then if it's 2-3 copies of that action auto-put them back on top in "any" order.
You could have a #smartspy: once I choose to have you keep a card, always keep it for this turn.What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).Spy / Scrying Pool: IRL it is common to say "just keep that for the rest of the turn." Dunno if that's worth the typing.
Tournament: Always reveal Province to their Tournament.
Walled Village: Always on top.
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).
Has Moneylender auto-trashing already been handled?
I'd second the notion that Watchtower would be nice, and not just for Curses. There are certain Goons setups where I'd prefer being able to toggle on auto-trashing and then toggle it off rather than go through the carpal tunnel-inducing full-screen drag-to-trash motions.
You could have a #smartspy: once I choose to have you keep a card, always keep it for this turn.
No idea about how hard that would be to implement.
What other useful auto-play scenarios are there other than the three I mentioned? I'm talking about auto-play for trivial logistics only; I'm not going to include stuff that auto-builds you a game-winning engine (pretending for a second that I could).Treasury always on top.
Treasury always on top.
Alchemist always on top.
Herbalist always topdeck highest calue treasure/never topdeck treasure.
Tournament: Always reveal Province to their Tournament.
Tournament: Always reveal Province to their Tournament.
Do you mean just after you've revealed a Province to a first Tournament, or actually always? Because I think there's enough edge cases where you don't want to reveal Province; basically if you'd rather them have their Prize in hand now instead of next turn.
Tournament: Always reveal Province to their Tournament.
Do you mean just after you've revealed a Province to a first Tournament, or actually always? Because I think there's enough edge cases where you don't want to reveal Province; basically if you'd rather them have their Prize in hand now instead of next turn.
Aren't there also plausible edge cases for other scenarios mentioned? For example, you may want to discard to Torturer when curses are out to gain a Gold from Tunnel, to remove a duplicate from your hand to activate Menagerie, etc.
Tournament: Always reveal Province to their Tournament.
Do you mean just after you've revealed a Province to a first Tournament, or actually always? Because I think there's enough edge cases where you don't want to reveal Province; basically if you'd rather them have their Prize in hand now instead of next turn.
Aren't there also plausible edge cases for other scenarios mentioned? For example, you may want to discard to Torturer when curses are out to gain a Gold from Tunnel, to remove a duplicate from your hand to activate Menagerie, etc.
In these cases, you wouldn't toggle the feature on. Im assuming the intent is that these won't be on by default unless they are truly unimportant (choosing a Copper to trash with Moneylender will literally never matter)
Installation via GUI:
1. In a new Finder window, navigate to your Applications folder
2. Right-click on Dominion 2.0.44.2.app and select “Show Package Contents”
3. Navigate to down Contents/Resources/Data/Managed
4. Rename Assembly-CSharp.dll to Assembly-CSharp-original.dll
(this will require a password for admin privileges)
5. Copy the Assembly-CSharp.dll and MMF.dll from this folder into the Managed folder
(this will again require a password for admin privileges)
Installation via Terminal from this folder:
$ sudo cp -a /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/Assembly-CSharp.dll /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/Assembly-CSharp-original.dll
$ sudo cp Assembly-CSharp.dll MMF.dll /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/
So for my grad-level software class, I'm going to be doing a presentation on reverse engineering. SCSN - might I ask what tools you're using to decompile code?
Through my clarity-tainted glasses the two look fully equivalent, the latter more concise and thus preferable, and it also happens to be the current implementation. Huray to laziness! I.e. I do understand what you're saying but I think it benefits no one to change things up.So for my grad-level software class, I'm going to be doing a presentation on reverse engineering. SCSN - might I ask what tools you're using to decompile code?
I'm currently using .NET Reflector, which only works for .NET projects. Other things I've used earlier (before I had my first working patch) include dotPeek and DotNet Resolver. Note that the decompiled code is only use to learn about how the software works and about where to make changes in the IL, because while most decompilers include the option to export the decompiled code to a Visual Studio project, faithful recompilation is effectively impossible for any sufficiently complex project. The most popular general RE tools are probably IDA Pro and ollydbg.
Through my clarity-tainted glasses the two look fully equivalent, the latter more concise and thus preferable, and it also happens to be the current implementation. Huray to laziness! I.e. I do understand what you're saying but I think it benefits no one to change things up.So for my grad-level software class, I'm going to be doing a presentation on reverse engineering. SCSN - might I ask what tools you're using to decompile code?
I'm currently using .NET Reflector, which only works for .NET projects. Other things I've used earlier (before I had my first working patch) include dotPeek and DotNet Resolver. Note that the decompiled code is only use to learn about how the software works and about where to make changes in the IL, because while most decompilers include the option to export the decompiled code to a Visual Studio project, faithful recompilation is effectively impossible for any sufficiently complex project. The most popular general RE tools are probably IDA Pro and ollydbg.
Okay. Mainly what I want to do is write a simple program (no more than 30 or so lines), compile it into an .exe, then decompile it, and show the differences between the two sets of code. This would most likely be in Java.
You can't compile Java to exe files
You can't compile Java to exe files
http://stackoverflow.com/questions/2011664/compiling-a-java-program-into-an-exe
You can't compile Java to exe files
http://stackoverflow.com/questions/2011664/compiling-a-java-program-into-an-exe
You can't compile Java to exe files
http://stackoverflow.com/questions/2011664/compiling-a-java-program-into-an-exe
Hey, look who used Stackoverflow to find helpful information. ;)
Tried installing the Mac version and it wouldn't let me log in. Reset the old dll and it worked fine again. With the MMF dll the sign in box came up where I could enter my credentials but then clicking sign in did nothing.
I think there was an update pushed last night, so the version they just put up for Mac might be out of date already. (Just a guess)
Tried installing the Mac version and it wouldn't let me log in. Reset the old dll and it worked fine again. With the MMF dll the sign in box came up where I could enter my credentials but then clicking sign in did nothing.
Tried installing the Mac version and it wouldn't let me log in. Reset the old dll and it worked fine again. With the MMF dll the sign in box came up where I could enter my credentials but then clicking sign in did nothing.
Thanks for the bug report. I'm a little embarrassed that there is one like this to report. I am at work right now, but I'll look into it as soon as I am done.
Tried installing the Mac version and it wouldn't let me log in. Reset the old dll and it worked fine again. With the MMF dll the sign in box came up where I could enter my credentials but then clicking sign in did nothing.
Do you see a MMF folder under /Users/userName? If you do and it contains the file jsonlog.txt, please post the content here or send it to me via pm.
Tried installing the Mac version and it wouldn't let me log in. Reset the old dll and it worked fine again. With the MMF dll the sign in box came up where I could enter my credentials but then clicking sign in did nothing.
Do you see a MMF folder under /Users/userName? If you do and it contains the file jsonlog.txt, please post the content here or send it to me via pm.
Don't see any folder like that in my username folder
UnauthorizedAccessException: Access to the path "/Users/matthieu/MMF/jsonlog.txt" is denied.
FileNotFoundException: Could not load file or assembly 'MMF, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
img
Unfortunately the server keeps sending the requests so the experience isn't quite as fluid as I would have liked. I'll try intercepting those highlight messages and see whether that saves time.
which should be easy to fix (famous last words).
Moneylender | always on | |
Treasury | default on | #t(reasury) |
Alchemist | default on | #a(lchemist) |
Bane reveal | default on | #b(ane) |
Moat reveal | default on | #m(oat) |
Urchin trash | default off | #u(rchin) |
Installation via GUI:
1. In a new Finder window, navigate to your Applications folder
2. Right-click on Dominion 2.0.44.2.app and select “Show Package Contents”
3. Navigate to down Contents/Resources/Data/Managed
4. Rename Assembly-CSharp.dll to Assembly-CSharp-original.dll
(this will require a password for admin privileges)
5. Copy the Assembly-CSharp.dll and MMF.dll from this folder into the Managed folder
(this will again require a password for admin privileges)
Installation via Terminal from this folder:
$ sudo cp -a /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/Assembly-CSharp.dll /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/Assembly-CSharp-original.dll
$ sudo cp Assembly-CSharp.dll MMF.dll /Applications/Dominion\ 2.0.44.2.app/Contents/Resources/Data/Managed/
Would it be possible to add something like #c(oin) [number] to use said amount of coin tokens? Clicking for each one really sucks once you play 3, 4 Guilds every turn.
Bug with 0.44.2d (not sure if this happened before) on Mac.
Was testing autoplay and had Urchin, Young Witch, Witch, Moat, Militia, Upgrade and Menagerie as bane (not sure if all of this is pertinent)
Whenever I played Militia after an Urchin (not sure if it happened with other cards) after I had turned on #u, the Menagerie image would pop up on the screen like I had clicked it (happened multiple times).
Feature request 2: for all pertinent cards have the autoplay options given at the top of the log.
Example if Young Witch, Moat, Alchemist, Urchin are on the board have something like "Bane, Moat and Alchemist Autoplays are on. Urchin Autoplay is off"
Feature request: type #a(utoplay) to get a list of all the autoplay options typed out in the chat with brief descriptions
QuoteFeature request: type #a(utoplay) to get a list of all the autoplay options typed out in the chat with brief descriptions
I'll consider this once I figure out how to write to the chat locally, as I don't want opponents to be spammed with this info.
Would it be possible to add something like #c(oin) [number] to use said amount of coin tokens? Clicking for each one really sucks once you play 3, 4 Guilds every turn.
(http://www.makingmorefun.com/download/Automated%20Tokens.gif)
Otherwise, I'm sorry for any headaches I caused you. You can fix your MMF install by removing any existing MMF.dll and installing one from the fixed ZIP file (coming to a server near you soon).
[...]
The black background isn't the only feature on display ;)It's great that you managed to get the end actions/end turn farther away from the other buttons.
I mean, the fantasy castle is fine. They can't all be the best art ever (and it doesn't hurt my enjoyment of the game at all).
[...]
The buttons are back!
Did you have to get rid of the background to make it work or was it just a decision of your taste?
The black background isn't the only feature on display ;)
But no worries, the black will be replaced by a tiled version of the animated crystal ball.
eggsi appreciate the subtle strategically dense kingdom
Dunno how feasible this is, but it would be nice to get some kind of warning when you click Play Treasures if it would play your Coppers but you have enough other $ combined with coin tokens to buy Grand Market. Maybe (I think this was how Iso did it) simply never auto-play Coppers when GM is out, unless you already have Copper in play.Didn't the old Goko client already do this? Does MF Dominion Online not do this?
Dunno how feasible this is, but it would be nice to get some kind of warning when you click Play Treasures if it would play your Coppers but you have enough other $ combined with coin tokens to buy Grand Market. Maybe (I think this was how Iso did it) simply never auto-play Coppers when GM is out, unless you already have Copper in play.Didn't the old Goko client already do this? Does MF Dominion Online not do this?
Oh right I didn't read "coin token'. Yeah you're right it never took those into account.Dunno how feasible this is, but it would be nice to get some kind of warning when you click Play Treasures if it would play your Coppers but you have enough other $ combined with coin tokens to buy Grand Market. Maybe (I think this was how Iso did it) simply never auto-play Coppers when GM is out, unless you already have Copper in play.Didn't the old Goko client already do this? Does MF Dominion Online not do this?
No. It did it if you already had enough coins, but it didn't count the coin tokens.
Moneylender | always on | |
Treasury | default on | #t(reasury) |
Alchemist | default on | #a(lchemist) |
Bane reveal | default on | #b(ane) |
Moat reveal | default on | #m(oat) |
Urchin trash | default off | #u(rchin) |
Watchtower trash | default on | #w(atchtower) |
Torturer Curse gain | default on | #tor(turer) |
Coin token payment | - | #c n |
The Mac version (http://bit.ly/1NShWCp) is now available as well, thanks to the always amazing MdLC.
The Mac version (http://bit.ly/1NShWCp) is now available as well, thanks to the always amazing MdLC.
I downloaded the patch for Mac but I wasn't able to log in, when I used the MF file it worked fine for me. But thanks for the work, that patch looks excellent.
You can see some or all of these (depending on the boards) in action tonight at 19:00 UTC during my game against Stef.
You can see some or all of these (depending on the boards) in action tonight at 19:00 UTC during my game against Stef.
Whatched it on Twitch and you struggled a bit with the positioning of the new buttons in the lower left corner in games with coin tokens. One solution for this is to move them to the upper left corner. There is much unused space except in games with 4 or more players. Then one doesn't need to change the window size or hide the buttons.
I agree with both you and jsh that the button placement is far from ideal, but I don't see an easy solution. I think in the same games where they now obscure coin tokens and the resign button, they would obscure the Province pile and some kingdom card(s) if you'd place them at the top.
Doesn't work for 3/4 player games. That's where the other players would go.
One solution for this is to move them to the upper left corner. There is much unused space except in games with 4 or more players.
I agree with both you and jsh that the button placement is far from ideal, but I don't see an easy solution. I think in the same games where they now obscure coin tokens and the resign button, they would obscure the Province pile and some kingdom card(s) if you'd place them at the top.
That's a crazy kingdom.
I'd like to make an autoplay request: Don't trash Fool's Gold (not sure what the default should be).
Ruins aren't colorized in the log. A shiny brown e.g. #a05000 can do it.
This is a bigger request and may not be possible but I'd love for the ability to decide which autoplays are opt-in and which are opt-out. Maybe you need a settings thing on the intro screen like Salvager had.
Another option may be to have the autoplay menu open up at the beginning of a game where there are autoplay options available so I am aware of them and just leave the defaults the way they are.
Ruins aren't colorized in the log. A shiny brown e.g. #a05000 can do it.
Thanks. I'll probably pick something a bit darker and reserve this one for the Reserves, which are going to have to be brown as well.
(watchtower buttons)
(coin token slider/keyboard input/plus-minus buttons)
Even more fun is in the making:This is by far the best feature.
(http://www.makingmorefun.com/download/WT-Buttons.gif)
It even looks like you're scheming a way to flatten out the cards in hand... :D
It even looks like you're scheming a way to flatten out the cards in hand... :D
It isn't quite the finished product, but the one thing it has going for it already is that you can actually see what cards are in your hand:
(http://www.makingmorefun.com/download/BigHand2.PNG)
While this is indeed a big upgrade, it would be still better to just get the card on top while you hover over it with your mouse while it's in your hand (also with played action cards when you scheme them).
New Features
- Buttons to use Watchtower's topdeck or trash ability with a single click.
New Features
- Buttons to use Watchtower's topdeck or trash ability with a single click.
I get buttons to "topdeck" or to "trash" with Royal Seal (as if it's copying Watchtower). However, those buttons don't appear to do anything.
Thanks for the update!
Love the app by the way, it's clean and all the features make playing dominion better 8)
(http://www.makingmorefun.com/download/AllTheCards.PNG)I'm astonished by how much you're able to fix the awful design of this app ex post facto. Real respect for this. As well as internet respect.
Yes, he has 500+ respect just in this thread.(http://www.makingmorefun.com/download/AllTheCards.PNG)I'm astonished by how much you're able to fix the awful design of this app ex post facto. Real respect for this. As well as internet respect.
(http://www.makingmorefun.com/download/AllTheCards.PNG)
(http://www.makingmorefun.com/download/AllTheCards.PNG)
Yes, he has 500+ respect just in this thread.PNGI'm astonished by how much you're able to fix the awful design of this app ex post facto. Real respect for this. As well as internet respect.
(http://www.makingmorefun.com/download/AllTheCards.PNG)Wow banker bot is getting good at this game! It looks like he has piled the masterpieces. What a pro move!
Wow banker bot is getting good at this game! It looks like he has piled the masterpieces. What a pro move!
Why are only crads in hand on the right side alternating on top? Was it a proof of principle for design aspects and good looking? I am more in favour of the alternating thing.
The card counter for urchin und scrying pool is hardly visible. So, stacked cards should always be on top or you should center the red bobble marker.
3
2 4
1 8 5
7 9
6 10
1
2 3
4 6 5
7 8
9 10
(http://www.makingmorefun.com/download/AllTheCards.PNG)
To reassure those who may be tormented by the fear that MMF's sheer existence would somehow hamper the development of MF's pure, unadulterated client: these bug fixes have been shared with Jeff in advance of this release, and some of them were promptly put into their code. Making fun together makes more fun for all.
(http://www.makingmorefun.com/download/AllTheCards.PNG)To reassure those who may be tormented by the fear that MMF's sheer existence would somehow hamper the development of MF's pure, unadulterated client: these bug fixes have been shared with Jeff in advance of this release, and some of them were promptly put into their code. Making fun together makes more fun for all.
I assume you've shared this image with them as well? If not, someone should start a thread in the MF forums requesting that big hands look like this instead of the fanned out cards.
I assume you've shared this image with them as well? If not, someone should start a thread in the MF forums requesting that big hands look like this instead of the fanned out cards.
My concern with the layout above is that you can't see what the cards do.
That's probably a good idea, but at the same time it feels pretty awful that we have to tell Making Fun that being able to see what cards we have is an important feature.Or that it would be a good idea to check the Dominion Online part of this forum from time to time.
I still like the idea of just making your mouseover card magnified. Is this what the old UI did?
Why didn't this problem come up with Goko?
And for the people wondering: I currently have it set to switch to the new system once you have 10 or more uniques in hand and to switch back once you have 6 or less (to prevent endlessly flipping back-and-forth around the threshold).
Hey, the drag options for coin tokens are really great! Any chance of similarly changing overpay? My masterpiece-buying ass would love you so much for it.
Edit: Also Butcher.
Minor feature request that isn't super important - When the game is over and you're in the lead, an option to skip all of the decisions that you make after that point would be cool. I.e., not having to tell Scheme what cards I want to top deck on my last turn, etc. It might be difficult to work out all the logic for this so I wouldn't make it a priority, just something I thought I would mention.
And for the people wondering: I currently have it set to switch to the new system once you have 10 or more uniques in hand and to switch back once you have 6 or less (to prevent endlessly flipping back-and-forth around the threshold).
Don't know if it is possible to make this customizable or not, but there are already some difficulties reading on my laptop screen at 7 uniques. I would actually just prefer to have your version always on because I don't really see any advantage to seeing the fanned out version.
Looking forward to the next release.
Suggestion: Autoplay options for how you play should not be active also for how you command someone else to play (during Possessed turns, that is).
I just played a game with Alchemists and Possession where I had to turn off topdecking Alchemists. Without looking through the list of options I imagine there are other cases where you don't want to force other people to play the way you prefer to play yourself, so I think the simplest would be to just that make a general rule that such autoplay rules only are for you you actually play, not how you dictate.
New Blitz FeaturesScout finally gets the boost it so desperately needed! Does this change mean that 1 Scout is frequently a key card for engines when playing with 120-180 second time settings?
- Scout gives you a 15 second time bonus whenever you play it.
New Blitz Features[/list]
- Scout gives you a 15 second time bonus whenever you play it.
Scout finally gets the boost it so desperately needed! Does this change mean that 1 Scout is frequently a key card for engines when playing with 120-180 second time settings?
Does on-trash trigger before you trash all of the cards in Chapel, Steward, and Forge? I thought not.
I think it's not yet skipping the decision for Stash.
- Auto-skip unnecessary cleanup decisions when the game is over.
Does on-trash trigger before you trash all of the cards in Chapel, Steward, and Forge? I thought not.
It should not. Yet another reason why you should select all the cards you want to trash, being able to deselect them, then click a "trash these mofos I've selected over here" button, and THEN trash them. Unless it's Remake, then trash them one at a time like the directions say.
I think it's not yet skipping the decision for Stash.
- Auto-skip unnecessary cleanup decisions when the game is over.
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
After your post Philosopher's Stone feels even more insecure and sobs silently in its dark corner.
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
After your post Philosopher's Stone feels even more insecure and sobs silently in its dark corner.
Must be one hell of a board where you have to figure out, after going for both Counting House AND Philosopher's Stone, whether it's worth playing CH with a PS in hand...
I just tried to install the mod for Mac, and when I finished the installation and started it up, I just get a connecting dialog that never goes away. Is anyone else having this problem?I had this once for the windows version when I only installed the Assembly-CSharp.dll and missed installing the MMF.dll.
I just tried to install the mod for Mac, and when I finished the installation and started it up, I just get a connecting dialog that never goes away. Is anyone else having this problem?I had this once for the windows version when I only installed the Assembly-CSharp.dll and missed installing the MMF.dll.
Player 1 [pos]
...
1 - plays cards xyz
1 - plays his money
2 - buys & gains Province
...
In this case the "buy" and "gain" should not be merged. It's a minor thing but as this mod is obiviously striving after perfection it's still a thing. ;)
I think it's not yet skipping the decision for Stash.
- Auto-skip unnecessary cleanup decisions when the game is over.
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
After your post Philosopher's Stone feels even more insecure and sobs silently in its dark corner.
Must be one hell of a board where you have to figure out, after going for both Counting House AND Philosopher's Stone, whether it's worth playing CH with a PS in hand...
Make that two philosopher stones, since with only one ps taking all the coppers is essentially always the best choice (1c/card vs 0.2c/card) (somebody will edgecase this). If you have at least 2 PS in hand, and taking the last copper would drop your total card count to the lower tier, then you should leave some copper.
Great!
Another autoplay suggestion: don't trash to opponent Bishop (default off).
Unless I'm missing something, an autoplay for Counting house (take all copper) would be nice to have, since you want to do that virtually all the time.
After your post Philosopher's Stone feels even more insecure and sobs silently in its dark corner.
Must be one hell of a board where you have to figure out, after going for both Counting House AND Philosopher's Stone, whether it's worth playing CH with a PS in hand...
Make that two philosopher stones, since with only one ps taking all the coppers is essentially always the best choice (1c/card vs 0.2c/card) (somebody will edgecase this). If you have at least 2 PS in hand, and taking the last copper would drop your total card count to the lower tier, then you should leave some copper.
At your service: Grand Market :)
Oh yea, how about autoplay for Explorer?They can't all be the best autoplay ever...
Yesterday MMF crashed when it tried to Autoplay Secret Chamber as a Bane card to Young Witch (I didn't reveal SC for the reaction effect when YW was played). The client showed a whole window of code (it was still in a clean MF popup window, but full of javascript (or whatever) code) and I couldn't do anything anymore.
Sorry, only after closing the client I realized I should have made a screenshot.
Edit: It was before yesterday's update.
Yesterday MMF crashed when it tried to Autoplay Secret Chamber as a Bane card to Young Witch (I didn't reveal SC for the reaction effect when YW was played). The client showed a whole window of code (it was still in a clean MF popup window, but full of javascript (or whatever) code) and I couldn't do anything anymore.
Sorry, only after closing the client I realized I should have made a screenshot.
Edit: It was before yesterday's update.
Unfortunately I can't reproduce this, and searching for kn1tt3r on gokosalvager.com for kingdoms that contain both Young Witch and Secret Chamber doesn't give any results. Do you have the log somewhere, or if not perhaps remember some other specifics about the kingdom and in particular the turn you experienced the crash on?
Yesterday MMF crashed when it tried to Autoplay Secret Chamber as a Bane card to Young Witch (I didn't reveal SC for the reaction effect when YW was played). [...]
Unfortunately I can't reproduce this, and searching for kn1tt3r on gokosalvager.com for kingdoms that contain both Young Witch and Secret Chamber doesn't give any results. Do you have the log somewhere, or if not perhaps remember some other specifics about the kingdom and in particular the turn you experienced the crash on?
Yeah, I don't find it either. Probably the log was not saved due to the crash or me just quitting and closing the client.
The kingdom had Crossroads, Hamlet, Secret Chamber, Young Witch, Torturer (I think) and some other things of no consequence (e.g. no trashing).
If I remember correctly I did not reveal Secret Chamber as a reaction before the autoplay crash happened, which probably means (and I don't remember this, it's just putting the pieces together) that this was her second Young Witch played that turn and I have revealed SC the first time (with autoplay working).
So maybe this has something to do with revealing or not revealing SC as an action card before using it as Bane?
Yesterday MMF crashed when it tried to Autoplay Secret Chamber as a Bane card to Young Witch (I didn't reveal SC for the reaction effect when YW was played). [...]
Unfortunately I can't reproduce this, and searching for kn1tt3r on gokosalvager.com for kingdoms that contain both Young Witch and Secret Chamber doesn't give any results. Do you have the log somewhere, or if not perhaps remember some other specifics about the kingdom and in particular the turn you experienced the crash on?
Yeah, I don't find it either. Probably the log was not saved due to the crash or me just quitting and closing the client.
The kingdom had Crossroads, Hamlet, Secret Chamber, Young Witch, Torturer (I think) and some other things of no consequence (e.g. no trashing).
If I remember correctly I did not reveal Secret Chamber as a reaction before the autoplay crash happened, which probably means (and I don't remember this, it's just putting the pieces together) that this was her second Young Witch played that turn and I have revealed SC the first time (with autoplay working).
So maybe this has something to do with revealing or not revealing SC as an action card before using it as Bane?
It looks like this is the log (http://gokosalvager.com/static/logprettifier.html?http://dominion-game-logs.s3.amazonaws.com/game_logs/20160118/log.0.1453148287079.txt). I had to tell gokosalvager to allow quits in the search results.
Having problems installing. If I extract it to the "Program Files (x86)\Dominion\Dominion_Data\Managed" folder, then when I open Making Fun it should run automatically right?
Installation Instructions
1. Download the mod: Windows (http://bit.ly/1PmI8pc) | Mac (http://bit.ly/1RPZQbu) | Linux (http://bit.ly/20anq3V)
2. Under Windows, extract the downloaded .rar file to your "Program Files (x86)\Dominion\Dominion_Data\Managed" folder (or wherever you installed Dominion). If your file manager doesn't let you do this, restart it with admin privileges. For installation under OS X, consult the included text file or read this post (http://forum.dominionstrategy.com/index.php?topic=14009.msg540024#msg540024). No special instructions apply for Linux, just get the MMF files into your Dominion_Data\Managed folder.
3. Enjoy!
If you want to back-up the old file first, rename Assembly-CSharp.dll to something of your liking prior to extracting.
I wish we could do something about this, without muting the helpful start game and in-game sounds.
Suggestion Saturday: How about a quick-discard button for oracle/survivors?
There's a small bug with the coloring of Ruins in the log. If the corresponding non-ruined card is in the kingdom, only the "ruined" part of the name is colored brown.A similar thing: in games with Black Market, at the start of the log it gives the content of the black market deck as
For example, if there's Village, Ruined Village will show up as Ruined Village (brown ruined, white village). The same happens for (Abandoned) Mine, (Ruined) Library, and (Ruined) Market.
Black Market: ...I've seen the "Market" part of this text colored white, while the rest was not.
This post on the Making Fun forums (http://forum.makingfun.com/showthread.php?8757-Secret-Chamber-plus-Torturer-Crashes-Game&p=46879#post46879) looks like a MMF error.
This looks similiar to the crash I have reported before.This post on the Making Fun forums (http://forum.makingfun.com/showthread.php?8757-Secret-Chamber-plus-Torturer-Crashes-Game&p=46879#post46879) looks like a MMF error.
Yes, it is an MMF error. Thanks for the heads up. This looks like it might be the same issue kn1tt3r reported earlier.
When the chain thingies go over the Grand Market after I play some Coppers, I can't see how many of them are left on the pile.
In your mad drive to be contrary, you are failing to make any sense. He is saying, he wants a feature to modify MF software behavior, which in fact hides information with chains.When the chain thingies go over the Grand Market after I play some Coppers, I can't see how many of them are left on the pile.
Here's the answer: there are no chain thingies in the supply, it's just a visual to represent the fact that you can't buy any Grand Markets.
When the chain thingies go over the Grand Market after I play some Coppers, I can't see how many of them are left on the pile.
Here's the answer: there are no chain thingies in the supply, it's just a visual to represent the fact that you can't buy any Grand Markets.
Can't tell if you were joking or serious.
When the chain thingies go over the Grand Market after I play some Coppers, I can't see how many of them are left on the pile.
there are no chain thingies in the supply, it's just a visual to represent the fact that you can't buy any Grand Markets.
Not sure if this is making fun's fault or the plugin's fault but I have noticed while watching assemble_me's match whenever the opponent plays a advisor It says that Assemble me discards the card not the opponent. According to the rules assemble should choose the card for opp. to discard not assemble just discards it. Assemble was using some version of MMF
Any chance of an ETA on the next patch? I'm really excited for the custom avatar feature and a fix for the really annoying overpay bug.
Random feature request (and wasn't sure where else to post):
When the chain thingies go over the Grand Market after I play some Coppers, I can't see how many Grand Markets are left in the pile. This can be annoying if, say, I overpay for Stonemason but can't remember if there are 1 or 2 Grand Markets left. The same would apply for named Contraband cards, I think. Maybe have the chains make a "+" instead of an "x", so that you can still see the supply count number.
Or I can see if it's easy to just disable the lock entirely, though then you'd have to be perceptive enough to notice the absence of a blue plus.
I think since Contraband is a card you would somewhat frequently not want to play at all it is best to leave it out of "play all treasures". It is already excluded from that button correct? What is really better in this type of case is the old Isotropic style "!?!" that makes you confirm actions you maybe don't want to do like ending your action phase when you still have actions in your hand. That however is the type of thing that might be difficult to do with MMF (might not be, I'm not sure).
I think since Contraband is a card you would somewhat frequently not want to play at all it is best to leave it out of "play all treasures". It is already excluded from that button correct? What is really better in this type of case is the old Isotropic style "!?!" that makes you confirm actions you maybe don't want to do like ending your action phase when you still have actions in your hand. That however is the type of thing that might be difficult to do with MMF (might not be, I'm not sure).
I think the case where I don't want to play a Contraband with the rest of my treasures is rare. I bought it so I can play it, after all. And when I do, I always want it to be played first - or not at all. That's why autoplay makes sense here. It's a function you can toggle on and off so it could be switched between "when you play all treasures, play Contraband first" and "when you play all treasures, don't play Contraband". I don't think there's any problem with that. You can still always click your cards individually but why not make it more convenient if possible and reasonable?
RE: Kirian and the error
I just got the same, and I think the problem was Reacting with Secret Chamber to Torturer when all of the Curses were gone.
Contrary to what they might claim the stability issues with the latest client are not resolved and likely won't be until they release a new version. There will be no MMF release for what's currently the latest version unless they make updating to it mandatory.
In case you really want to try the untested internal build I guess I could hook you up with it, but I'd strongly urge you to just stick with what works.
Contrary to what they might claim the stability issues with the latest client are not resolved and likely won't be until they release a new version. There will be no MMF release for what's currently the latest version unless they make updating to it mandatory.
In case you really want to try the untested internal build I guess I could hook you up with it, but I'd strongly urge you to just stick with what works.
They actually do make it mandatory, you can't start games with the 47 version any more, I had to update to 48 to play my last league match.
Unless there's only one left and it would three-pile a loss, or two and it would let your opponent three-pile and win. EDGECASED Maybe only autoplay if there are more than three golds left.
Hey there, thank you for this mod!
I'm sorry to off-top and, this question may sound weird here, but please give me a chance: I want to translate the windows version into Russian in order to raise the popularity of the game (just for instance: here in Russia we have only Base Set and Intrigue officially translated, first you may find in some stores while Intrigue is sold out completely and not to be printed again due to publishers' problems or whatever). Recently we found out about the online version and I bought all the available sets, spending my last ducats in real life :) Me, wife and my brother are enjoy playing and combining it, as we gained an access to the sets which are not available here in Russia. But it's a pity, but lots of my friends just don't know English enough and they would like to join us, but they need to make cribs/booklets/instructions or whatever, they just don't want to play things they do not understand.
My idea was to make an translation. I was trying to disassemble Unity *.sets files, but didn't succeed yet. Also I was wondering if cards are stored as images themselves or images+captions, which would be easier to translate only captions, without changing images in Photoshop. Would you guys give me an advice of software you were using or just tell me that translation is technically possible? If you don't want to answer in a public thread, I would be happy to receive any answer in personal message. Thank you.
PS: I have some skills in programming, so you can be straight to me :)
Hey there, thank you for this mod!
[...]
Hey there, thank you for this mod!
[...]
You're welcome, and your plan sounds like a great initiative. I've sent you a pm.
Somehow the Germans managed to translate Salvager as "waste management company".
If you choose that route, make sure you don't expose yourself to legal trouble by opensourcing stuff that might be ruled to be MF's intellectual property, or derivative of it.
I don't see how it's "competing". All money that changes hands goes to MakingFun.
Yes, the MMF End Actions/Turn-button-placement would be very appreciated. I wasted like 6 turns in 2 testing games because of it, I feel like the End Turn button is located where the Play Treasures button used to be.
I don't see how it's "competing". All money that changes hands goes to MakingFun.
But they're now making their own product which competed with (only to Donald and RGG, not to the public at large, which may make a difference), and will now replace, MF's.
There probably will be an update but I'm not making any promises as to when.I don't see how it's "competing". All money that changes hands goes to MakingFun.
But they're now making their own product which competed with (only to Donald and RGG, not to the public at large, which may make a difference), and will now replace, MF's.
We started pitching our idea once we learned MF was going to lose the license; we never were in direct competition.
Guys, I think we've covered the legal aspects previously.True but I think it's easy (if perhaps not correct) to think that the new developments re. the new contract change the legal standings.
Guys, I think we've covered the legal aspects previously.True but I think it's easy (if perhaps not correct) to think that the new developments re. the new contract change the legal standings.
Guys, I think we've covered the legal aspects previously.True but I think it's easy (if perhaps not correct) to think that the new developments re. the new contract change the legal standings.
Yeah I have to agree. While previously I was strongly with the majority that was saying that it was ridiculous to suggest that there was a possible legal problem with MMF, the fact that the creator of MMF is now also the creator of an official product that will replace MF could possibly introduce valid questions.
Basically MF could theoretically claim (whether at all accurate or not) that the new Online Dominion by Shuffle iT is based partially on the decompiled MF source, which as I understand it would be a copyright issue. Now, all Shuffle iT has to do is show that their source was made from scratch, and not from MF's code, which I imagine wouldn't be that hard.
Guys, I think we've covered the legal aspects previously.True but I think it's easy (if perhaps not correct) to think that the new developments re. the new contract change the legal standings.
Yeah I have to agree. While previously I was strongly with the majority that was saying that it was ridiculous to suggest that there was a possible legal problem with MMF, the fact that the creator of MMF is now also the creator of an official product that will replace MF could possibly introduce valid questions.
Basically MF could theoretically claim (whether at all accurate or not) that the new Online Dominion by Shuffle iT is based partially on the decompiled MF source, which as I understand it would be a copyright issue. Now, all Shuffle iT has to do is show that their source was made from scratch, and not from MF's code, which I imagine wouldn't be that hard.
Especially given they're being programmed in completely different environments, I suspect it won't be difficult at all.
Will there be an update of this MOD, SCSN?
There probably will be an update but I'm not making any promises as to when.
I am firmly on the side of, SCSN should do no further mod work. If someone else does then whatever.
- Maybe there's no need to worry about legal issues; still, why risk it?
- SCSN has work to do dammit.
- When the new program comes out Jan 1, doesn't SCSN want the new program to look as much better than the old program as possible?
I am firmly on the side of, SCSN should do no further mod work. If someone else does then whatever.
- Maybe there's no need to worry about legal issues; still, why risk it?
...it's a poor life that lets itself be governed by unfounded scaremongering.