Jump to content
  • 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
Link to comment
Share on other sites

12 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
Link to comment
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
Link to comment
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
Link to comment
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.

Link to comment
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.

Link to comment
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!

 

Hi @Scylla, do you know why this mod works in Long Range? I mean when stalker equipped with Strip Armor and Strip Weapon cards using a bow (range), the enemy will be stripped. It must not. It must only works when you cast it using Single Strip skill.

Link to comment
Share on other sites

  • 0

can someone will make a step by step if how to apply this single strip?

wheere ins src ?

skill.cpp?

battle.cpp?

status.cpp?

 

and where line to add??

thanks for the one who can make and i will put reputation on that

Edited by GGG2020
Link to comment
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.



×
×
  • Create New...

Important Information

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