Assumptio Cancel Kyrie if Kyrie level is < 11

prism

New member
Messages
69
Points
0
Level 11 Kyrie and higher is possible with a certain build on my server. However, I wait to make it so that if a player casts Assumptio on a player that has Kyrie that is less than level 11, it will dispel it. I have the opposite working where if Kyrie level is less than level 11 it will cancel Assumptio. Getting the status level and canceling it is is my problem however.

I tried this in status.c

case SC_ASSUMPTIO:
            if (sc-&gt;data[sC_KYRIE] &amp;&amp; sc-&gt;data[sC_KYRIE]-&gt;val1 &lt; 11)
            status_change_end(bl, SC_KYRIE, INVALID_TIMER);
            break;


Also tried this in skill.c:

case HP_ASSUMPTIO:
            if( sd &amp;&amp; dstmd )
                clif-&gt;skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
            else
                clif-&gt;skill_nodamage(src,bl,skill_id,skill_lv,
                    sc_start(src,bl,type,100,skill_lv,skill-&gt;get_time(skill_id,skill_lv)));
            if( tsc &amp;&amp; tsc-&gt;data[sC_KYRIE] &amp;&amp; tsc-&gt;data[sC_KYRIE]-&gt;val1 &lt; 11 )
        {
            status_change_end(bl, SC_KYRIE, INVALID_TIMER);
            
        }
 
            break;
 
I've tried changing the val1 from 1-4 and the 11 to various numbers as well as reversing the &gt; and &lt;. but no luck getting what I want.
Code for canceling Assumptio for reference:

case PR_KYRIE:
        //case SL_KAAHI:
        case MER_KYRIE:
            clif-&gt;skill_nodamage(bl, bl, skill_id, -1,
                sc_start(src, bl, type, 100, skill_lv, skill-&gt;get_time(skill_id, skill_lv)));
            if( skill_lv &lt; 11 )
        {
            status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
            
        }
            break;
 
Last edited by a moderator:
In status.c, find:

case SC_ASSUMPTIO:
status_change_end(bl, SC_KYRIE, INVALID_TIMER);
status_change_end(bl, SC_KAITE, INVALID_TIMER);
break;

And comment these lines:

case SC_ASSUMPTIO:
//status_change_end(bl, SC_KYRIE, INVALID_TIMER);
//status_change_end(bl, SC_KAITE, INVALID_TIMER);
break;

In skill.c, find:

case PR_KYRIE:
case MER_KYRIE:
case SU_TUNAPARTY:

And replace for:

case PR_KYRIE:
clif-&gt;skill_nodamage(bl, bl, skill_id, -1,
sc_start(src, bl, type, 100, skill_lv, skill-&gt;get_time(skill_id, skill_lv)));
if (tsc &amp;&amp; tsc-&gt;data[SC_ASSUMPTIO] &amp;&amp; tsc-&gt;data[SC_ASSUMPTIO]-&gt;val1 &lt; 11)
status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
break;
case MER_KYRIE:
case SU_TUNAPARTY:

Later find:

case HP_ASSUMPTIO:
if( sd &amp;&amp; dstmd )
clif-&gt;skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
else
clif-&gt;skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill-&gt;get_time(skill_id,skill_lv)));
                                        break;

And replace for:

case HP_ASSUMPTIO:
if( sd &amp;&amp; dstmd )
clif-&gt;skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
else
clif-&gt;skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill-&gt;get_time(skill_id,skill_lv)));
if (tsc &amp;&amp; tsc-&gt;data[SC_KYRIE] &amp;&amp; tsc-&gt;data[SC_KYRIE]-&gt;val1 &lt; 11)
status_change_end(bl, SC_KYRIE, INVALID_TIMER);
break;


This will cancel these states if the target have kyrie/assumptio lower level than 11.

The problems with this:

- If player get Assumptio/Kyrie by a NPC/Script, buffs can be stacked.

- Cancellation of buffs only can work by skills.

 
Thanks a lot! It's working perfectly.

Also thanks for the heads up. Good to keep in mind though I can't see myself giving out Kyrie/Assump through script.

 
Back
Top