Jump to content
  • 0
Sign in to follow this  
jaiko23

Tarot Bypass FCP help !

Question

And im here again lol...

 

to make it short... I wanna edit Clown's Skill which is Tarot... the skill can bypass the FCP, and i wanna change it so it cannot destroy the equipment... where can i edit that? Thank you very much in advace ^_^

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

@@Mysterious i think FCP has been dispelled so equips can be destroyed

@@jaiko23

goto sc_config.txt (path : trunk/db/sc_config.txt)


FIND

SC_PROTECTWEAPON, 28SC_PROTECTSHIELD, 28SC_PROTECTARMOR, 28SC_PROTECTHELM, 28

CHANGE TO THIS

SC_PROTECTWEAPON, 12SC_PROTECTSHIELD, 12SC_PROTECTARMOR, 12SC_PROTECTHELM, 12
Edited by Zhao Chow

Share this post


Link to post
Share on other sites
  • 0

But didn't jaiko already have a topic regarding FCP being dispelled? Wasn't that already fixed in a previous topic? o_O Unless I read someone else's topic o_O

Share this post


Link to post
Share on other sites
  • 0

actually i got this setup

 

SC_PROTECTWEAPON, 28
SC_PROTECTSHIELD, 28
SC_PROTECTARMOR, 28
SC_PROTECTHELM, 28

 

.. fcp is not being dispelled by proff.. but still being dispelled by tarot.. im gonna try that @zhao.. thanks !

Share this post


Link to post
Share on other sites
  • 0

@@jaiko23 then remove the dispell in tarot in skill.c,

Find in trunk/src/map/skill.c

 

case CG_TAROTCARD:			{				int count = -1;				if (tsc && tsc->data[type]) {					map->freeblock_unlock();					return 0;				}				if( rnd() % 100 > skill_lv * 8 || (dstmd && ((dstmd->guardian_data && dstmd->class_ == MOBID_EMPERIUM) || mob_is_battleground(dstmd))) ) {					if( sd )						clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);					map->freeblock_unlock();					return 0;				}				status_zap(src,0,skill->db[skill->get_index(skill_id)].sp[skill_lv]); // consume sp only if succeeded [Inkfish]				do {					int eff = rnd() % 14;					if( eff == 5 )						clif->specialeffect(src, 528, AREA);					else						clif->specialeffect(bl, 523 + eff, AREA);					switch (eff)					{					case 0: // heals SP to 0						status_percent_damage(src, bl, 0, 100, false);						break;					case 1: // matk halved						sc_start(src,bl,SC_INCMATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						break;					case 2: // all buffs removed						status->change_clear_buffs(bl,1);						break;					case 3: // 1000 damage, random armor destroyed						{							status_fix_damage(src, bl, 1000, 0);							clif->damage(src,bl,0,0,1000,0,0,0);							if( !status->isdead(bl) ) {								int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };								skill->break_equip(bl, where[rnd()%5], 10000, BCT_ENEMY);							}						}						break;					case 4: // atk halved						sc_start(src,bl,SC_INCATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						break;					case 5: // 2000HP heal, random teleported						status->heal(src, 2000, 0, 0);						if( !map_flag_vs(bl->m) )							unit->warp(bl, -1,-1,-1, CLR_TELEPORT);						break;					case 6: // random 2 other effects						if (count == -1)							count = 3;						else							count++; //Should not re-trigger this one.						break;					case 7: // stop freeze or stoned						{							enum sc_type sc[] = { SC_STOP, SC_FREEZE, SC_STONE };							sc_start(src,bl,sc[rnd()%3],100,skill_lv,skill->get_time2(skill_id,skill_lv));						}						break;					case 8: // curse coma and poison						sc_start(src,bl,SC_COMA,100,skill_lv,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_CURSE,100,skill_lv,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_POISON,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					case 9: // confusion						sc_start(src,bl,SC_CONFUSION,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					case 10: // 6666 damage, atk matk halved, cursed						status_fix_damage(src, bl, 6666, 0);						clif->damage(src,bl,0,0,6666,0,0,0);						sc_start(src,bl,SC_INCATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCMATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_CURSE,skill_lv,100,skill->get_time2(skill_id,skill_lv));						break;					case 11: // 4444 damage						status_fix_damage(src, bl, 4444, 0);						clif->damage(src,bl,0,0,4444,0,0,0);						break;					case 12: // stun						sc_start(src,bl,SC_STUN,100,skill_lv,5000);						break;					case 13: // atk,matk,hit,flee,def reduced						sc_start(src,bl,SC_INCATKRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCMATKRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCHITRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCFLEERATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCDEFRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,type,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					default:						break;					}				} while ((--count) > 0);				clif->skill_nodamage(src,bl,skill_id,skill_lv,1);			}			break;

change to this :
 

		case CG_TAROTCARD:			{				int count = -1;				if (tsc && tsc->data[type]) {					map->freeblock_unlock();					return 0;				}				if( rnd() % 100 > skill_lv * 8 || (dstmd && ((dstmd->guardian_data && dstmd->class_ == MOBID_EMPERIUM) || mob_is_battleground(dstmd))) ) {					if( sd )						clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);					map->freeblock_unlock();					return 0;				}				status_zap(src,0,skill->db[skill->get_index(skill_id)].sp[skill_lv]); // consume sp only if succeeded [Inkfish]				do {					int eff = rnd() % 13;					if( eff == 5 )						clif->specialeffect(src, 528, AREA);					else						clif->specialeffect(bl, 523 + eff, AREA);					switch (eff)					{					case 0: // heals SP to 0						status_percent_damage(src, bl, 0, 100, false);						break;					case 1: // matk halved						sc_start(src,bl,SC_INCMATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						break;						/*					case 2: // all buffs removed						status->change_clear_buffs(bl,1);						break;						*/					case 2: // 1000 damage, random armor destroyed						{							status_fix_damage(src, bl, 1000, 0);							clif->damage(src,bl,0,0,1000,0,0,0);							if( !status->isdead(bl) ) {								int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };								skill->break_equip(bl, where[rnd()%5], 10000, BCT_ENEMY);							}						}						break;					case 3: // atk halved						sc_start(src,bl,SC_INCATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						break;					case 4: // 2000HP heal, random teleported						status->heal(src, 2000, 0, 0);						if( !map_flag_vs(bl->m) )							unit->warp(bl, -1,-1,-1, CLR_TELEPORT);						break;					case 5: // random 2 other effects						if (count == -1)							count = 3;						else							count++; //Should not re-trigger this one.						break;					case 6: // stop freeze or stoned						{							enum sc_type sc[] = { SC_STOP, SC_FREEZE, SC_STONE };							sc_start(src,bl,sc[rnd()%3],100,skill_lv,skill->get_time2(skill_id,skill_lv));						}						break;					case 7: // curse coma and poison						sc_start(src,bl,SC_COMA,100,skill_lv,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_CURSE,100,skill_lv,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_POISON,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					case 8: // confusion						sc_start(src,bl,SC_CONFUSION,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					case 9: // 6666 damage, atk matk halved, cursed						status_fix_damage(src, bl, 6666, 0);						clif->damage(src,bl,0,0,6666,0,0,0);						sc_start(src,bl,SC_INCATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCMATKRATE,100,-50,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_CURSE,skill_lv,100,skill->get_time2(skill_id,skill_lv));						break;					case 10: // 4444 damage						status_fix_damage(src, bl, 4444, 0);						clif->damage(src,bl,0,0,4444,0,0,0);						break;					case 11: // stun						sc_start(src,bl,SC_STUN,100,skill_lv,5000);						break;					case 12: // atk,matk,hit,flee,def reduced						sc_start(src,bl,SC_INCATKRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCMATKRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCHITRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCFLEERATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,SC_INCDEFRATE,100,-20,skill->get_time2(skill_id,skill_lv));						sc_start(src,bl,type,100,skill_lv,skill->get_time2(skill_id,skill_lv));						break;					default:						break;					}				} while ((--count) > 0);				clif->skill_nodamage(src,bl,skill_id,skill_lv,1);			}			break;

this will remove the dispell effect of tarot, after editing recompile your server

actually by changing the SC from 28 to 12 is the another option

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.   Restore formatting

  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...
Sign in to follow this  

×
×
  • Create New...

Important Information

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