Jump to content

  •  

Photo

TAROT YELLOW SUN

TAROT YELLOW SUN

  • Please log in to reply
No replies to this topic

#1 Vanfly

Vanfly

    Newbie

  • Members
  • Pip
  • 3 posts
  • Github:Vanfly

Posted 04 June 2017 - 02:01 PM

I have this problem in my script which is the tarot script in skill.c, the issue is when i use the tarot skill to a player when the yellow sun which is the card will appear it will stop i need to hit the player so that na tarot will start again, this is my script see picture attached also.
 

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_EMPELIUM) || mob_is_battleground(dstmd)))) {
                    if (sd != NULL)
                        clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
 
                    map->freeblock_unlock();
                    return 0;
                }
                status_zap(src,0,skill->dbs->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,BDT_NORMAL,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,BDT_NORMAL,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,BDT_NORMAL,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);
            }
 

Attached Files






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users


This topic has been visited by 7 user(s)