Fixes for Chade's Basher

edited December 2017 in Mechanic's Corner
Heyo!

It's me again, this time here to discuss known issues with Chade's basher. For reference, the basher I'm talking about is the one found at: http://forums.lusternia.com/discussion/comment/74379#Comment_74379
If you dunno if you are using this basher, this is the one that you use bsinstall to setup, and bash on, at on, and other aliases to use. You in the right spot? Good, let's continue.

Known issues:

1) The basher does not attack on entry, but seems to attack after you leave a room. This generally causes issues if your bashing places with multiple enemy types. It's slightly less noticeable if your bashing an area with only one enemy type, and isn't noticeable at all if your doing stationary bashing (like an astral hunt).

2) The basher doesn't really work at all if using the autowalker (you shouldn't be, that's against the rules).

3) The basher broke when faeleaf, and earwort were taken out of the game. (This is an oldie, but I'll address it anyway since I still get questions about it.)

Fixes:

1) I have fixed the basher so it attacks on entry again. This is CONFIRMED working, if it doesn't work for you, your issue is likely rooted somewhere else, and it's likely better if you start with a fresh install. This is about a two second fix, and doesn't involve any complex coding knowledge.

       Step 1) Open up your scripts, and do a search in mudlet for checkForPlayers. This should lead you to a script. Select it and open it, this should bring you to a window that looks like this:
       Step 2)Copy this string:  room_items_updated
       Step 3)Go back to the script and click on the box labeled "Add User Defined Event Handler".
       Step 4)Paste the string we copied earlier into that box
       Step 5)Click the plus sign (+) next to that box to bring the string we copied up to the "Registered Event Handlers" box. It should look something like this:
    Step 6)Hit that handy dandy save profile button at the top
    Step 7)Rejoice, you can bash normally again

**Quitting and restarting mudlet should NOT be required, but if it doesn't work, go ahead and do that for me before we start sending messages to me saying it doesn't work**

If you're still having issues after these steps, and have already tried restarting mudlet too, send me a message IG (Anelissa) or on discord, and I'll see what we can do.

2) I have not fixed bashing while autowalking. I have a bead on the culprit, but have not been able to get it working 100% like it used to, and it's not really a priority since.. you know, you shouldn't be using it anyway. I'll update this post with instructions and screenshots for a fix when I get them.

3)The cause of this issue is an affliction check using MMF so you didn't spam attacks if you wouldn't be able to strike anyway. The issue is that the basher is old, and some of the affs have changed. Some of the affs we were checking for are no longer relevant, or no longer stop attacks like they used to. We'll be removing the main culprit (blindness) but removing some other changed/removed affs as well.
   
        Step 1)Open up your scripts and do a search for: canBash. This will lead you to a script, open it and select it. This will bring you to a window that looks like this:
       Step 2) We'll be commenting out a few lines here (appending the line with -- before the code). This will make the code inactive, but still be there if we need to add it back later (not likely, but always good to have) The lines we need to comment out are:
                A ) (mm.defc.trueblind or not mm.affl.blind) and
                B ) not mm.affl.aeon and
                C ) not mm.affl.paralysis and
 The end result should look like this:

      Step 3) Hit that handy dandy save profile button. Restarting mudlet should not be required.


Any questions, comments, concerns, or other bug reports, send me a message IG, leave a comment and tag me (and maybe message me about it if I don't answer in a reasonable matter, because I rarely check forums unless it's to post something for you guys), or hit me up on discord. Or tell Eicia, she'll get the message to me.








Comments

  • edited December 2017
    My basher is just spamming warcry, and not attacking at all. Using the beast attack ok, and then warcry over and over.
    Nevermind!
  • Hey @Anelissa - Wondering, would there be a way to make the system target the mob by ID number instead of name? Or does it already do that? I'm not sure, I've tried looking into the scripts and everything, and it seems like it just targets by the name. Was looking at the variables while bashing at one point.
  • I figured it out. If you do a search for "get_target", click on the "Script" and change the lines in the "get_target" function from
    if table[1] == item then
    	mtarget = table[2]

    to

    if table[1] == item and bwl.tracking.target_found ~= true then
    	mtarget = vnum

    Also, remove this line:

    capsmobile = string.upper(mtarget)

    As it's not needed anymore. It will call out to the squad the vnum your targetting not the word.


    This will target and bash the vnum(mob number) and will not change targets mid-fight if a higher priority mob wanders into the room.

    So, it will originally look like this:

    function get_target()
    --echo("\ndebuggettarget")
    if (ignoreplayers or not skiproom) and autotarget then
    for i, table in ipairs(target_order) do
    	for  vnum, item in pairs(in_room) do
    		if table[1] == item then
    			mtarget = table[2]
    			capsmobile = string.upper(mtarget)
    			  if squadcalling and lasttargetcalled ~= mtarget then
    			    send("squadt Targeting: "..string.upper(mtarget))
                 lasttargetcalled = mtarget 
    			  end
    			bwl.tracking.target_found = true
    			start_bashing()
    			return
    		end
    	end
    end
    end
    	
    end

    After the changes will look like:

    function get_target()
    --echo("\ndebuggettarget")
    	if (ignoreplayers or not skiproom) and autotarget then
    		for i, table in ipairs(target_order) do
    			for  vnum, item in pairs(in_room) do
    		if table[1] == item and bwl.tracking.target_found ~= true then
    			mtarget = vnum
    	  if squadcalling and lasttargetcalled ~= target then
    		    send("squadt Targeting: "..mtarget.."\n")
                 lasttargetcalled = mtarget 
    			  end
    			bwl.tracking.target_found = true
    			start_bashing()
    			return
    		end
    	end
    end
    end
    	
    end


Sign In or Register to comment.