Jump to content

Vanfly

Members
  • Content Count

    3
  • Joined

  • Last visited

Posts posted by Vanfly


  1. 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);
                }
     

    post-15665-0-85413800-1496584762_thumb.jpg

×
×
  • Create New...

Important Information

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