viewing paste Unknown #7476 | Athena

Posted on the
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
        case GD_EMERGENCYCALL:
        case GD_ITEMEMERGENCYCALL:
                {
                        int8 dx[9] = {-1, 1, 0, 0,-1, 1,-1, 1, 0};
                        int8 dy[9] = { 0, 0, 1,-1, 1,-1,-1, 1, 0};
                        uint8 j = 0, calls = 0, called = 0;
                        struct guild *g;
                        // i don't know if it actually summons in a circle, but oh well. ;P
                        g = sd?sd->state.gmaster_flag:guild_search(status_get_guild_id(src));
                        if (!g)
                                break;
 
                        if (skill_id == GD_ITEMEMERGENCYCALL)
                                switch (skill_lv) {
                                        case 1: calls = 7; break;
                                        case 2: calls = 12; break;
                                        case 3: calls = 20; break;
                                        default: calls = 0;     break;
                                }
 
                        clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
                        for (i = 0; i < g->max_member && (!calls || (calls && called < calls)); i++, j++) {
                                if (j > 8)
                                        j = 0;
                                if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) {
                                        if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m))
                                                continue;
                                        if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH))
                                                dx[j] = dy[j] = 0;
                                        pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN);
                                        called++;
                                }
                        }
                        if (sd)
                                guild_block_skill(sd,skill_get_time2(skill_id,skill_lv));
                                sc_start(&sd->bl,SC_EMERGENCYCALL,100,0,skill_get_time(skill_id, skill_lv));
                }
                break;
Viewed 360 times, submitted by unknown.