• 0
BlazingSpear

FCP bypass by single strip when soul link

Question

im using this code but it doesnt work any more with latest revision

 

		if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 15 &&
			( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
			skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
			skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
			skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
			int item_id = 7139; // Glistening Coat
			int ii;
			ARR_FIND( 0, MAX_INVENTORY, ii, sd->status.inventory[ii].nameid == item_id );
			if ( ii < MAX_INVENTORY ) {
				pc_delitem( sd, ii, 1, 0, 0);
				switch ( skill_id ) {
					case RG_STRIPWEAPON:
						status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
						sc_start( bl, SC_STRIPWEAPON, 100, skill_lv, d );
						break;
					case RG_STRIPSHIELD:
						status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
						sc_start( bl, SC_STRIPSHIELD, 100, skill_lv, d );
						break;
					case RG_STRIPARMOR:
						status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
						sc_start( bl, SC_STRIPARMOR, 100, skill_lv, d );
						break;
					case RG_STRIPHELM:
						status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
						sc_start( bl, SC_STRIPHELM, 100, skill_lv, d );
					break;
				}
				clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
				break;
			}
		}

 

Edited by BlazingSpear

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0
sd->status.inventory this is not supported anymore on latest rathena

here the working Src Code for Rogue Link Strip

	// By pass FCP when using single strip skills by 15%(requires Glistening Coat).
	if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75
	&&
	( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
	skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
	skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
	skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
	int item_id = 7139; // Glistening Coat
	int ii;
	ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id );
	if ( ii < MAX_INVENTORY ) {
		pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
		switch ( skill_id ) {
			case RG_STRIPWEAPON:
				status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPSHIELD:
				status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPARMOR:
				status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPHELM:
				status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			}
			clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
				break;
				}
			}

 

Edited by Bringer

Share this post


Link to post
Share on other sites
  • 0

i got error on this one

// By pass FCP when using single strip skills by 15%(requires Glistening Coat).
	if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75
	&&
	( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
	skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
	skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
	skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
	int item_id = 7139; // Glistening Coat
	int ii;
	ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id );
	if ( ii < MAX_INVENTORY ) {
		pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
		switch ( skill_id ) {
			case RG_STRIPWEAPON:
				status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPSHIELD:
				status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPARMOR:
				status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPHELM:
				status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			}
			clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
				break;
				}
			}

here's the error

skill.c: In function ‘skill_castend_nodamage_id’:
skill.c:7678:31: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
                               ^
skill.c:7680:28: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
                            ^
skill.c:7681:27: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
                           ^
In file included from clan.h:12:0,
                 from pc.h:19,
                 from skill.c:17:
skill.c:7690:22: error: ‘SC_WEAPON’ undeclared (first use in this function)
     sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)))
                      ^
status.h:2316:78: note: in definition of macro ‘sc_start’
 c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r
                                                                     ^
skill.c:7690:22: note: each undeclared identifier is reported only once for each function it appears in
     sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)))
                      ^
status.h:2316:78: note: in definition of macro ‘sc_start’
 c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r
                                                                     ^
skill.c:7690:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7690:79: error: expected statement before ‘)’ token
skill.c:7694:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7694:79: error: expected statement before ‘)’ token
skill.c:7698:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7698:79: error: expected statement before ‘)’ token
skill.c:7702:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7702:79: error: expected statement before ‘)’ token
make[1]: *** [obj/skill.o] Error 1
make[1]: Leaving directory `/root/rathena/src/map'
make: *** [map] Error 2

 

Edited by whodhell

Share this post


Link to post
Share on other sites
  • 0
On 10/25/2017 at 9:05 PM, AinsLord said:

i got error on this one

// By pass FCP when using single strip skills by 15%(requires Glistening Coat).
	if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75
	&&
	( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
	skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] ||
	skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
	skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
	int item_id = 7139; // Glistening Coat
	int ii;
	ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id );
	if ( ii < MAX_INVENTORY ) {
		pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
		switch ( skill_id ) {
			case RG_STRIPWEAPON:
				status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPSHIELD:
				status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPARMOR:
				status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			case RG_STRIPHELM:
				status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
				sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
				break;
			}
			clif_skill_nodamage( src, bl, skill_id, skill_lv, i );
				break;
				}
			}

here's the error

skill.c: In function ‘skill_castend_nodamage_id’:
skill.c:7678:31: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] ||
                               ^
skill.c:7680:28: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] ||
                            ^
skill.c:7681:27: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
  skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) {
                           ^
In file included from clan.h:12:0,
                 from pc.h:19,
                 from skill.c:17:
skill.c:7690:22: error: ‘SC_WEAPON’ undeclared (first use in this function)
     sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)))
                      ^
status.h:2316:78: note: in definition of macro ‘sc_start’
 c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r
                                                                     ^
skill.c:7690:22: note: each undeclared identifier is reported only once for each function it appears in
     sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)))
                      ^
status.h:2316:78: note: in definition of macro ‘sc_start’
 c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r
                                                                     ^
skill.c:7690:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7690:79: error: expected statement before ‘)’ token
skill.c:7694:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7694:79: error: expected statement before ‘)’ token
skill.c:7698:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7698:79: error: expected statement before ‘)’ token
skill.c:7702:79: error: expected ‘;’ before ‘)’ token
    sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)));
                                                                              ^
skill.c:7702:79: error: expected statement before ‘)’ token
make[1]: *** [obj/skill.o] Error 1
make[1]: Leaving directory `/root/rathena/src/map'
make: *** [map] Error 2

 

Try this:

			case RG_STRIPWEAPON:
				status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER );
				sc_start(src,bl,SC_STRIPWEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv));
				break;
			case RG_STRIPSHIELD:
				status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER );
				sc_start(src,bl,SC_STRIPSHIELD,100,skill_lv,skill_get_time(skill_id,skill_lv));
				break;
			case RG_STRIPARMOR:
				status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER );
				sc_start(src,bl,SC_STRIPARMOR,100,skill_lv,skill_get_time(skill_id,skill_lv));
				break;
			case RG_STRIPHELM:
				status_change_end( bl, SC_CP_HELM, INVALID_TIMER );
				sc_start(src,bl,SC_STRIPHELM,100,skill_lv,skill_get_time(skill_id,skill_lv));
				break;

You can ignore the warnings when compiling.

 

P.S

Sorry if I'm necro'ing a thread from 2 years ago, but nobody has answered this yet.

  • MVP 2

Share this post


Link to post
Share on other sites
  • 0

@Scylla thank you! The source mod is working fine with the error. However, how to fix to make the single strip always consume 1 GCoat for every attempt? The current mod is not consuming any gcoat.

Share this post


Link to post
Share on other sites
  • 0
3 hours ago, AinsLord said:

will this work with the latest rathena git?

 

I'm not really sure but you can try.

47 minutes ago, idLaZ said:

@Scylla thank you! The source mod is working fine with the error. However, how to fix to make the single strip always consume 1 GCoat for every attempt? The current mod is not consuming any gcoat.

Are you soul linked tho?

It'll only consume glistening coats if you're soul linked and if the enemy has chemical protection buff.

Share this post


Link to post
Share on other sites
  • 0

Hi @Scylla! I have tried it again just now. I forgot to FCP the other character. It all works fine. Thank you!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...