Page 1 of 2 1 2 LastLast
Results 1 to 10 of 16

Thread: Noobsorb: A relay script to help track your absorptions.

  1. #1

    Post Noobsorb: A relay script to help track your absorptions.

    Just an easy relay script to help keep track of your Gelatinous Noob absorbtions. Each modifier displays your current stat, click it to drop down a list of skills that affect that stat and what items you have available. It'll optionally tell you what zones have monsters that drop items to give you a skill (uses canadv, slows down each reload dramatically), and there's a custom data file with tips on various others. Example image below.

    Code:
    svn checkout https://svn.code.sf.net/p/kolm-noobsorb/svn/
    This also now has an AutoAbsorb(int retain) function in noob.ash. It'll prioritize skills as per the skill order in the static section near the top of the list. Feel free to modify it to taste. "remain" is the number of absorbs to save for later, or -1 to only absorb for skills.

    Noobsorb.PNG
    Last edited by Smelltastic; 03-25-2017 at 07:16 PM.

  2. #2

    Default

    This is super useful, thanks! Can you tweak it to remove items that can't actually be absorbed like the pixel coin, eleven-foot pole, etc.?

  3. #3

    Default

    This is super useful, thanks! Can you tweak it to remove items that can't actually be absorbed like the pixel coin, eleven-foot pole, etc.?
    Originally Posted by gemelli View Post
    As far as I was aware it's accurate according to the latest spading I could find, but it's using its own logic rather than Mafia's because at the time Mafia wasn't accurate. Do you know what property it is that keeps them from being absorbed, is it the no-discard? I'd rather have things listed that DON'T work than have things not listed that DO...

    Also, if you're trying it through Mafia please actually look at the item itself and verify whether the absorb option is there. For some reason Mafia's "absorb" command is still refusing things that totally can be, including at least one of the Noob's own starting items!

    Edit: I just verified the eleven-foot pole can't be absorbed. I'm not sure what the rules are then but I'm gonna hope on Mafia's being more accurate than mine now and defer to it, expect an update shortly..

    Edit 2: Updated, run "svn update" for the correction. Thanks!
    Last edited by Smelltastic; 02-24-2017 at 04:32 PM.

  4. #4
    Minion Bale's Avatar
    Join Date
    Jun 2008
    Posts
    13,224

    Default

    Edit: I just verified the eleven-foot pole can't be absorbed. I'm not sure what the rules are then but I'm gonna hope on Mafia's being more accurate than mine now and defer to it, expect an update shortly..
    Originally Posted by Smelltastic View Post
    The eleven-foot pole is not discardable. The rules are these:

    Code:
    boolean is_absorbable(item it) {
    	if($items[interesting clod of dirt, dirty bottlecap, discarded button] contains it) return true;
    	return (it.gift || it.tradeable) && it.discardable;
    }
    If people like my scripts, please send me stuffed Hodgmen.
    Universal Recovery, OCD Inventory Control, CounterChecker, newLife, ChIT.


  5. #5

    Default

    The eleven-foot pole is not discardable. The rules are these:
    Originally Posted by Bale View Post
    Thanks, that's good to know; I just changed it to check for mafia's noob_skill property instead, so any further changes or new info will automatically update whenever Mafia does. What made me think Mafia didn't have it totally correct was just a bug absorbing the bottlecap specifically that's now fixed.

  6. #6

    Default

    updated for the new drink items and their supposed +combat/-combat properties, latest commit should automatically pick up the skills once Mafia has them

  7. #7
    Senior Member Theraze's Avatar
    Join Date
    Mar 2010
    Posts
    8,656

    Default

    Might I suggest adding this row at line 270?
    Code:
    					if (noobskill[sk].granter[gid].it.item_amount() == 0) retrieve_item(1, noobskill[sk].granter[gid].it);
    Optionally, tweaking (originally) line 285 (which is line 286, if you add the above line 270):
    Code:
    			while( noobadvs[iid].item_amount() > 1 && remain > retain ) {
    Basically, line 1 is that absorb doesn't retrieve items automatically - it knows they're available, but it won't do it for you. So we need to retrieve them ourselves. That's line 270.
    The second tweak is that if we have 14 imp ales, for example, we might as well burn through them before we knock out photoprotoneutron torpedos, smart skulls, etc.

  8. #8

    Default

    Might I suggest adding this row at line 270?
    Code:
    					if (noobskill[sk].granter[gid].it.item_amount() == 0) retrieve_item(1, noobskill[sk].granter[gid].it);
    Optionally, tweaking (originally) line 285 (which is line 286, if you add the above line 270):
    Code:
    			while( noobadvs[iid].item_amount() > 1 && remain > retain ) {
    Basically, line 1 is that absorb doesn't retrieve items automatically - it knows they're available, but it won't do it for you. So we need to retrieve them ourselves. That's line 270.
    The second tweak is that if we have 14 imp ales, for example, we might as well burn through them before we knock out photoprotoneutron torpedos, smart skulls, etc.
    Originally Posted by Theraze View Post
    Thanks, I could've sworn the "absorb" command was auto-retrieving stuff before but when I tried it recently it wasn't. Might have to do with Mafia settings, I didn't check to verify. In any case noob.ash as well as the relay will now retrieve the necessary item if it needs to. It also will also prioritize items you have multiple of, then items you have one of, before restoring to retrieving.

    And thanks, yeah the loop you're describing was actually the initial intention but I goofed it. I'm pondering whether it'd be worth bothering to sort things in mall price order before absorbing but it'd be a hassle I'm not sure it's really worth.

    edit: went ahead and made it prioritize cheaper stuff.
    Last edited by Smelltastic; 03-25-2017 at 03:56 PM.

  9. #9
    Senior Member Theraze's Avatar
    Join Date
    Mar 2010
    Posts
    8,656

    Default

    I'd tweaked my copy, but it looks like the updated version didn't actually fix it, so...
    Line 280 should move to 284. Line 281 is now unneeded. Line 330 should be duplicated after (original) line 307.
    Line 142 needs to check for can_interact. (Found this later)
    One more note. Even with the absorb change, it absorbs one item too many and believes that it keeps 3, when it only has 2 left. Right. Needs an equal sign in the comparison. Fixed in the block below.
    Reasoning:
    Change 1 and 2 - After it picks a single item, it will keep trying to use that item even after learning the skill. Oops.
    Change 3 - After removing an item to learn a skill, the script doesn't actually reduce the remaining absorb count.
    Change 4 - We try to retrieve from storage in Hardcore.
    Code:
    	if( remain > retain ) {
    		foreach i in Noob_SkillOrder {
    			skill sk = Noob_SkillOrder[i];
    			item chosen = $item[none];
    			
    			if( sk.have_skill() )
    				continue;
    			
    			// First look for any we have on hand, then resort to acquireables.
    			foreach gid in noobskill[sk].granter {
    				if( noobskill[sk].granter[gid].it.item_amount() > 1 ) {
    					chosen = noobskill[sk].granter[gid].it;
    					break;
    				} else if( noobskill[sk].granter[gid].it.item_amount() > 0 ) {
    					chosen = noobskill[sk].granter[gid].it;
    				} else if( chosen == $item[none] && noobskill[sk].granter[gid].acquireable ) {
    					chosen = noobskill[sk].granter[gid].it;
    				}
    			}
    			
    			if( chosen != $item[none] ) {
    				if( chosen.item_amount() <= 0 ) {
    					print( "acquire 1 [" + chosen.to_int().to_string() + "]" + chosen.to_string(), "blue" );
    					cli_execute( "acquire 1 [" + chosen.to_int().to_string() + "]" + chosen.to_string() );
    				}
    				print( "absorb [" + chosen.to_int().to_string() + "]" + chosen.to_string(), "blue" );
    				cli_execute( "absorb [" + chosen.to_int().to_string() + "]" + chosen.to_string() );
    				remain -= 1;
    			}
    			
    			if( remain <= retain )
    				break;
    		}
    	}
    Code:
    		if( get_property("autoSatisfyWithStorage").to_boolean() && can_interact() )
    Last edited by Theraze; 03-28-2017 at 03:32 PM.

  10. #10

    Default

    I'd tweaked my copy, but it looks like the updated version didn't actually fix it, so...
    Originally Posted by Theraze View Post
    These fixes are now implemented, thanks Theraze!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •