Jump to content
  • 0
Oh Wow

Absorb spiritball stop asura in some map

Question

Can anyone help me to modify this source only work on some maps such as pvp_y_8-5
 

 

if( skill_id == MO_EXTREMITYFIST && sd->spiritball == 0)	{		clif_skill_fail(sd,skill,0,0,0);		return 0;} 


Thank in advance
and sorry for my bad english skill :(

Edited by haball

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0
The mod that's in the topic that you posted doesn't work at all :x So I've made some changes to fit what you want...

Open src/map/atcommand.c and search for:
    if (map->list[m_id].flag.nomemo)        strcat(atcmd_output, msg_txt(1064)); // NoMemo |
add below:
    if (map->list[m_id].flag.asuraabsorb)        strcat(atcmd_output, "AsuraAbsorb |");
Search for:
CHECKFLAG(nocashshop);
Add below:
CHECKFLAG(asuraabsorb);
Search for:
SETFLAG(nocashshop);
Add below:
SETFLAG(asuraabsorb);
Search for:
clif->message(sd->fd,"guildlock, src4instance, notomb, nocashshop");
Replace it with:
clif->message(sd->fd,"guildlock, src4instance, notomb, nocashshop, asuraabsorb");
Now open src/map/map.c and search for:
    } else if (!strcmpi(flag,"nocashshop")) {        if( state && map->list[m].flag.nocashshop )            ;/* nothing to do */        else {            if( state )                map_zone_mf_cache_add(m,"nocashshoptoff");            else if( map->list[m].flag.nocashshop )                map_zone_mf_cache_add(m,"nocashshop");        }    }
Add below:
else if( !strcmpi(flag,"asuraabsorb")) {        if( state && map->list[m].flag.asuraabsorb )            ; /* nothing to do */        else {            if( state )                map_zone_mf_cache_add(m,"asuraabsorbtoff");            else if( map->list[m].flag.asuraabsorb )                map_zone_mf_cache_add(m,"asuraabsorb");        }    }
Now open src/map/map.h and find:
        unsigned nocashshop : 1;
Add below it:
        unsigned asuraabsorb : 1;
Now open src/map/npc.c and search for:
    } else if ( !strcmpi(w3,"nocashshop") ) {        map->list[m].flag.nocashshop = (state) ? 1 : 0;    } else        ShowError("npc_parse_mapflag: unrecognized mapflag '%s' in file '%s', line '%d'.n", w3, filepath, strline(buffer,start-buffer));
Replace it with:
    } else if ( !strcmpi(w3,"nocashshop") ) {        map->list[m].flag.nocashshop = (state) ? 1 : 0;    } else if( !strcmpi(w3, "asuraabsorb") ) {        map->list[m].flag.asuraabsorb = state;    } else        ShowError("npc_parse_mapflag: unrecognized mapflag '%s' in file '%s', line '%d'.n", w3, filepath, strline(buffer,start-buffer));
Open src/map/script.h and search for:
MF_NOCASHSHOP
Replace it with:
	MF_NOCASHSHOP,	MF_ASURAABSORB
 
Now open src/map/script.c and search for:
            case MF_NOCASHSHOP:         script_pushint(st,map->list[m].flag.nocashshop); break;
Add below:
            case MF_ASURAABSORB:        script_pushint(st,map->list[m].flag.asuraabsorb); break;
Search for:
            case MF_NOCASHSHOP:         map->list[m].flag.nocashshop = 1; break;
Add below:
            case MF_ASURAABSORB:        map->list[m].flag.asuraabsorb = 1; break;
Search for:
            case MF_NOCASHSHOP:         map->list[m].flag.nocashshop = 0; break;
Add below:
            case MF_ASURAABSORB:        map->list[m].flag.asuraabsorb = 0; break;
And finally open src/map/skill.c and search for:
        case NJ_ISSEN:        case MO_EXTREMITYFIST:            {                short x, y, i = 2; // Move 2 cells for Issen(from target)                struct block_list *mbl = bl;                short dir = 0;
Add below:
                struct skill_condition req = skill->get_requirement(sd,skill_id,skill_lv);                if( req.spiritball > sd->spiritball && map->list[src->m].flag.asuraabsorb )                {                    clif->skill_fail(sd, skill_id, 0, 0);                    break;                }

 

 

Built successfully and tested in-game c: If you want any map to have asuraabsorb just set the mapflag and it'll work.

 

Happy holidays

Edited by pan

Share this post


Link to post
Share on other sites
  • 0

Sorry, I didn't understand what you need, could you post what you want to do? Do you want to block asura (MO_EXTREMITYFIST) outside a map?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.