Scripts on SVN

Theraze

Active member
A few more scripts which people may care more or less about:
canadv is at svn checkout https://svn.code.sf.net/p/therazekolmafia/canadv/code/

That one had a thread, but the following three don't:
kingLiberated (no thread) is at svn checkout https://svn.code.sf.net/p/therazekolmafia/kingliberated/code/
preAscension (no thread) is at svn checkout https://svn.code.sf.net/p/therazekolmafia/preascension/code/
postAscension (no thread) is at svn checkout https://svn.code.sf.net/p/therazekolmafia/postascension/code/

The 3 no thread scripts just do various things that people have suggested. Currently they're all customized for what I want personally, but... eh, whatever. They're there to provide ideas, not to fully meet all needs for everyone. :) Most of them probably come from Bale, though bits are mine or other people's. :)
kingLiberated has code for getting the back scuba item but skips it, since it's a quest item for 10k. It runs the get_stuff part, skipping the DC (but useful to know how to do it) and emptying the closet (since anything in there I want to avoid using), but does empty storage. It skips the equip_character maximization string, since I have my own complicated one that I like. It runs the breakfast check, since that's rather awesome and right when I want it to happen... after pulling all my stuff out of storage.
preAscension gets goofballs, a balloon monkey, turns in gunpowder and rat whiskers, if I'm doing 100% familiar runs it will set my current familiar to be the next 100% familiar, and complete the dolphin/slug/hobo maps.
postAscension will run the newAscension part of newLife, override the ballroom song during AoJ for items (since when low-skill, the wartime beach is PAINFUL in AoJ), forces higher hp/mp/zombie restore settings (at 65% health heal to 95%, at 20% mp heal to 40%, and at 10 zombies summon to 30), forces it to try to learn path skills, visits the hermit in case we're on a zombie run and need a free clover as well as updating the current clover count, and sets the mp burn to go down to 80%.

They simplify my life tremendously. Thanks Bale (and others) for posting your little (or sometimes big) snippets of code.
 

Bale

Minion
Theraze, you didn't post about svn in the canadv thread? Is this still unofficial or is there another reason for that?


kingLiberated (no thread) is at svn checkout https://svn.code.sf.net/p/therazekolmafia/kingliberated/code/
preAscension (no thread) is at svn checkout https://svn.code.sf.net/p/therazekolmafia/preascension/code/

Hey! I don't mind that the those are almost entirely code I posted, but it would be polite to to mention in a comment that you copied them from Bale.

I'll add these.
 

Theraze

Active member
If you notice, the only comments in them were the section headers. But they've had a top comment added now. :)

Haven't commented on the CanAdv thread yet because I'd like to try to get more new zones fixed up first.
 
My old script, which was a pain to use, because every time Jick added something new, people would have to reacquire the files. SVN makes this a non-issue.
Script Name:Skill Planner/CS Tracker
Author: Almighty Sapling
Desc: Relay script detailing what skills and CS you have and are missing.
URL
Code:
svn checkout https://almighty-saplings-ash.googlecode.com/svn/trunk/planner/
 
Last edited:

Bale

Minion
Thanks for giving me so much explicit info. List updated. What is a CS?

The list has been getting a bit long, so I decided to organize it into categories. I will be glad to hear commentary about the categories I chose or disagreements about which scripts belong in each category. I was a unsure about CanAdv mostly because it is really for scripters, not users.
 

Theraze

Active member
Personally, I love using canadv in combination with my "goget" alias, creating the "cangoget" alias.
Code:
alias cangoget => conditions clear; conditions add 1 %%; ashq import <canadv.ash> float bestrate; location bestloc; foreach l in $locations[] if (can_adv(l, false) && has_goal(l) > bestrate) { bestrate = has_goal(l); bestloc = l; } if (bestrate > 0) obtain(1, "%%", bestloc); else print("No monsters drop this item.");
Just type cangoget <item> and it will adventure wherever is the best location you can get that item based on current drop rates, monster appearance, etc. It's what I normally use when backfarming tower items later, since then I don't need to remember exactly where that letter is found... :) But see, user usage, not scripter. ;) And that fits very well into the Informational category, since it tells me where I can go find stuff.
 

zarqon

Well-known member
By the way, as people are migrating to SVN, data files present authors who were using the Map Manager with a choice: do you keep your data file on the Map Manager or simply include it in the SVN?

Both are automatic and convenient for the user, and both are generally checked once daily. There are three major differences:

1) The Map Manager is a bit less convenient for scripters, as it's a separate thing, rather than part of your normal script editing workflow.
2) Data files on the Map Manager are publicly editable, whereas SVN repositories don't have a means for anonymous users to edit files.
3) Data files on the Map Manager can be shared by multiple scripts (without needing to actually install the script where the data file originated).

So basically, if you care about your map file being publicly editable, or you are sharing the data file with another script, stick with the Map Manager. If you don't want your data file being publicly editable, switching to SVN makes a great deal of sense. I intend to stick with the Map Manager for batfactors at least, because public edits have been a great help to me there.

Lastly, if you do switch your data file over to SVN, please let me know so I can eventually remove the data file from the Map Manager. Thanks.
 

roippi

Developer
3) Data files on the Map Manager can be shared by multiple scripts (without needing to actually install the script where the data file originated).

If this is a concern, the data file can be a separate checkout that you declare as a dependency.

You can give global auhenticated (ie people with a sourceforge account) or anonymous commit access to a repo on sourceforge... I personally wouldn't do anonymous, but it does make things a little less accessible. You can always roll back changes if someone does something bogus.
 

xKiv

Active member
There are three major differences:
...

also,
4) svn is revisioned - if somebody trashes the file, it's easy to restore to known state
unless mapmanager is also revisioned? Do you keep old versions of files there?
 

Bale

Minion
zarqon, I'd like to explain why it would be good for your users to move batfactors from the map manager to a sourceforge project which you make editable by any Authenticated user. That project would then be listed in dependencies.txt by batbrain.

No Disadvantages!
Any random person with a sourceforge account can still edit batfactors for you. No functionality lost.
It can still be shared by multiple scripts. No functionality lost.
It has backups. No functionality lost.​

There is one big advantage!
I can edit my own personal version of batfactors and svn will merge my changes.
Why would I do this? To work around the candyblast problem. To comment out the chef staff jiggles I don't want to use in AoJ. Sure these are both hacks, but they are hacks I use. They are also hacks other people use. Right now I have to re-edit these hacks when I need them.​
 

zarqon

Well-known member
Bale, I appreciate your convincing words. :) However I believe this:

No Disadvantages!

was too optimistic. I consider any hurdles which a user must cross before being able to do something a disadvantage. To update a file on SourceForge according to your suggested disadvantage-free scheme, a user must:

  • Register on a third-party website which they otherwise may not have any desire to join.
  • Download and install a separate third-party application.
  • Acquire an understanding of SVN and how to commit changes using the new application's unfamiliar interface.
That's a huge investment just to be able to fix a formula or add a combat item. Beyond required actions, it also seriously raises the bar of required technical knowhow. If I were a user not already familiar with SVN (which we can reasonably assume is the majority) and I had that many hurdles to cross, I would throw up my hands and just wait for someone else to do it. Or simply report it on the forum instead -- introducing the delay and middleman-ing the avoidance of which is part of the reason for the Map Manager to exist in the first place.

To update a file on the Map Manager, a user must:

  • Browse to a website.
  • Upload a file using a familiar interface.
Relatively insignificant hurdles. So tell me again about no disadvantages. :)

If mafia had submit capability, that would be something else entirely -- the hurdles for submitting anonymously using mafia would actually be fewer than using the Map Manager, and it could quietly fade into oblivion. But adding that capability is not likely to happen, as powerful SVN applications already exist that provide better functionality for scripters than mafia could. Your average mafia user, however, may be loathe to install an additional application just to help update a file.

There is one big advantage! I can edit my own personal version of batfactors and svn will merge my changes.

This is an advantage only if you have valid reasons for keeping edits to yourself, which I'm inclined to believe you don't.

If there is inaccurate information in batfactors, your fix would benefit all users and should be shared.
If there is accurate information but you simply don't wish to use that action, that's what the blacklist is for; it doesn't require editing batfactors.
If there are actions which BatBrain supports inadequately causing undesirable behavior, removing those actions from batfactors (or giving it the "custom" keyword, or introducing a hackish fix) would benefit all users until they can be correctly implemented. Removal would also bring it to my attention when I check on missing actions (I have a diagnostic script that lets me know what's missing from batfactors).​

tl;dr: I fail to see why letting you keep an optimization to yourself, rather than share it, is an advantage.
 

lostcalpolydude

Developer
Staff member
This is an advantage only if you have valid reasons for keeping edits to yourself, which I'm inclined to believe you don't.

If there is inaccurate information in batfactors, your fix would benefit all users and should be shared.
If there is accurate information but you simply don't wish to use that action, that's what the blacklist is for; it doesn't require editing batfactors.
If there are actions which BatBrain supports inadequately causing undesirable behavior, removing those actions from batfactors (or giving it the "custom" keyword, or introducing a hackish fix) would benefit all users until they can be correctly implemented. Removal would also bring it to my attention when I check on missing actions (I have a diagnostic script that lets me know what's missing from batfactors).​

tl;dr: I fail to see why letting you keep an optimization to yourself, rather than share it, is an advantage.

I don't use any of the scripts that could be affected, but with all the posts about Candyblast causing issues, by different people, it seems like some part of that process isn't working as expected.
 

zarqon

Well-known member
@lost: Yep -- and there's a batfactors hack several people have posted which helps that issue, yet so far no one has shared it by uploading. I have been AoJing and unable to test, although I did offer Winterbay the skill book so he could debug (someone beat me to it though).

@Bale: Sorry for the derail -- general comments about data files on SVN got a bit too batfactors-specific there. Yay lots of SVN scripts!
 

roippi

Developer
Eh, we're Socratic around here. I derail more threads than anyone, and I haven't gotten banned yet! (knock on wood)

I consider any hurdles which a user must cross before being able to do something a disadvantage.

I agree with this.

tl;dr: I fail to see why letting you keep an optimization to yourself, rather than share it, is an advantage.

I don't really agree with this. Sometimes issues simply cannot be fixed within the scope of the data file. One hack that I saw people were floating around was to tell batfactors that candyblast dropped a dried face. This is obviously not the 'correct' fix, but people were doing it nonetheless, because the proper fix (to batbrain) is complex.
 
Top