CCS Macro problem

Spiny

Member
After reading a recent bug report, I realized I can pretty much use my existing KoL macro within a CCS without too much fussing around. The macro is RoyalTonberry's hobomonkey.balls and it doesn't give me any problems at all when used as a KoL side macro. However, trying to use it as part of a CCS is giving me grief when I fumble.

Here is the CCS:
Code:
[ cadáver ]
section Holiday Monster

[ candied yam golem ]
section Holiday Monster

[ default ]
try to steal an item
call monkey_stasis
if monstername "Goth Giant"
    if !haseffect On the Trail && !mpbelow 40
        skill transcendent olfaction
    endif
endif
call attack_routine
sub monkey_stasis
    while !match "climbs up and sits on your shoulder" && !pastround 29
        call infinite_use_item
    endwhile
endsub
sub attack_routine
    #replace the commands in here with whatever you want
    attack with weapon
endsub
sub infinite_use_item
    if hascombatitem facsimile dictionary
        item facsimile dictionary
        goto infinite_use_end
    endif
    if hascombatitem turtle totem
        item turtle totem
        goto infinite_use_end
    endif
    if hascombatitem spices
        item spices
        goto infinite_use_end
    endif
    if hascombatitem seal tooth
        item seal tooth
        goto infinite_use_end
    endif
    if hascombatitem spectre scepter
        item spectre scepter
        goto infinite_use_end
    endif
    if hascombatitem dictionary
        item dictionary
        goto infinite_use_end
    endif
    abort
    mark infinite_use_end
endsub

[ holiday monster ]
item love song of smoldering passion
item love song of smoldering passion

[ malevolent tofurkey ]
section Holiday Monster

[ possessed can of cranberry sauce ]
section Holiday Monster

[ stuffing golem ]
section Holiday Monster

Here is the generated macro and example of an adventure where I'm having the problem:

Code:
[67416] Giant's Castle
Encounter: Goth Giant
Strategy: /home/.kolmafia/ccs/hobomonkey_balls.ccs [default]
Round 0: Spiny Twizzler wins initiative!
Generated macro:
abort hppercentbelow 5
sub mafiaround
endsub#mafiaround
sub mafiamp
****if hascombatitem 3697
********call mafiaround; use 3697
********goto mafiampexit
****endif
****if hascombatitem 465
********call mafiaround; use 465
********goto mafiampexit
****endif
****if hascombatitem 1965
********call mafiaround; use 1965
********goto mafiampexit
****endif
****if hascombatitem 1788
********call mafiaround; use 1788
********goto mafiampexit
****endif
****if hascombatitem 466
********call mafiaround; use 466
********goto mafiampexit
****endif
****call mafiaround; use 345
****mark mafiampexit
endsub#mafiamp
#mafiaheader
pickpocket
call monkey_stasis
if monstername "Goth Giant"
****if !haseffect On the Trail && !mpbelow 40
****endif
endif
call attack_routine
sub monkey_stasis
****while !match "climbs up and sits on your shoulder" && !pastround 29
********call infinite_use_item
****endwhile
endsub
sub attack_routine
****#replace the commands in here with whatever you want
****call mafiaround; attack
endsub
sub infinite_use_item
****if hascombatitem facsimile dictionary
********call mafiaround; use 1316
********goto infinite_use_end
****endif
****if hascombatitem turtle totem
********call mafiaround; use 4
********goto infinite_use_end
****endif
****if hascombatitem spices
********call mafiaround; use 8
********goto infinite_use_end
****endif
****if hascombatitem seal tooth
********call mafiaround; use 2
********goto infinite_use_end
****endif
****if hascombatitem spectre scepter
********call mafiaround; use 2678
********goto infinite_use_end
****endif
****if hascombatitem dictionary
********call mafiaround; use 1316
********goto infinite_use_end
****endif
****abort "Click Script button again to continue"
****#mafiarestart
****mark infinite_use_end
****mark mafiafinal
endsub
goto mafiafinal

Round 1: Spiny Twizzler executes a macro!
Round 1: Spiny Twizzler tries to steal an item!
Round 2: Spiny Twizzler uses the facsimile dictionary!
Round 3: Spiny Twizzler uses the facsimile dictionary!
Round 4: Spiny Twizzler uses the facsimile dictionary!
Round 5: Meaty Monkey's bells jingle merrily
Round 5: Meaty Monkey climbs up and sits on your shoulder, and hands you some Meat. Huh, where did he find that?
You gain 83 Meat.
Round 5: Spiny Twizzler attacks!
You lose 1 hit point
[color=red]You're on your own, partner.[/color]

When I fumble, the mini browser pops up stating "Macro Aborted, return outside subroutine."

Any thoughts on what I need to do to avoid the abort on fumble?

Thanks much!

Edit: OOPS! Found the problem, didn't have the repeat after the attack because I thought I'd read that the CCS wouldn't understand repeat, but I put it in "" and that seems to have fixed my issue. Sorry for wasting anyone's time in looking at this thread!
 
Last edited:

jasonharper

Developer
The call to attack_routine is only attacking once; after that attack, execution falls off the end of the macro, and mafia's automatic repeat of the last CCS line takes over. Unfortunately, that last line is "endsub", which is meaningless to repeat. Several possible solutions:
* Modify attack_routine so that it attacks repeatedly, never returning.
* Put a loop around the call to attack_routine.
* Move the call attack_routine to the bottom of the CCS section, so that mafia repeats it for you.
* Get rid of attack_routine completely, and just put an attack at the bottom of the section.
 
Top