viewing paste Unknown #5740 | Diff

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
Index: src/map/atcommand.c
===================================================================
--- src/map/atcommand.c (revision 17296)
+++ src/map/atcommand.c (working copy)
@@ -8904,6 +8904,8 @@
        return channel_pcban(sd,sub1,map_nick2sd(sub2),1);
    } else if ( strcmpi(key,"unbanall") == 0 ) {
        return channel_pcban(sd,sub1,NULL,2);
+   } else if ( strcmpi(key,"banlist") == 0 ) {
+       return channel_pcban(sd,sub1,NULL,3);
    } else if ( strcmpi(key,"setopt") == 0 ) {
        return channel_pcsetopt(sd,sub1,sub2,sub3);
    } else {
Index: src/map/skill.c
===================================================================
--- src/map/skill.c (revision 17296)
+++ src/map/skill.c (working copy)
@@ -13136,7 +13136,7 @@
         * Warlock
         **/
        case WL_COMET:
-           if( skill_check_pc_partner(sd,skill_id,&skill_lv,1,0) <= 0 
+           if( skill_check_pc_partner(sd,skill_id,&skill_lv,1,0) <= 0
                && ((i = pc_search_inventory(sd,require.itemid[0])) < 0 || sd->status.inventory[i].amount < require.amount[0]) ) {
                //clif_skill_fail(sd,skill_id,USESKILL_FAIL_NEED_ITEM,require.amount[0],require.itemid[0]);
                clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
Index: src/map/pc.c
===================================================================
--- src/map/pc.c    (revision 17296)
+++ src/map/pc.c    (working copy)
@@ -6644,7 +6644,7 @@
            sd->st->state = END;
    }
 
-   npc_script_event(sd,NPCE_DIE);
+   add_timer(gettick()+100,npc_delayed_script_event,sd->bl.id,NPCE_DIE);
 
    /* e.g. not killed thru pc_damage */
    if( pc_issit(sd) ) {
@@ -6691,14 +6691,10 @@
    }
    break;
    case BL_PET: //Pass on to master...
-       src = &((TBL_PET*)src)->msd->bl;
-   break;
    case BL_HOM:
-       src = &((TBL_HOM*)src)->master->bl;
-   break;
    case BL_MER:
-       src = &((TBL_MER*)src)->master->bl;
-   break;
+       src = battle_get_master(src);
+       break;
    }
 
    if (src && src->type == BL_PC)
Index: src/map/npc.c
===================================================================
--- src/map/npc.c   (revision 17296)
+++ src/map/npc.c   (working copy)
@@ -281,6 +281,16 @@
 }
 #endif
 
+int npc_delayed_script_event(int tid, unsigned int tick, int id, intptr_t data) {
+   struct map_session_data* sd = NULL;
+   if( (sd = map_id2sd(id)) == NULL || !sd->npc_id ) {
+       return 0;//Not logged in anymore OR no longer attached to a npc
+   }
+   npc_script_event(sd,data);
+   return 0;
+}
+
+
 /*==========================================
  * Dequeue event and add timer for execution (100ms)
  *------------------------------------------*/
Index: src/map/npc.h
===================================================================
--- src/map/npc.h   (revision 17296)
+++ src/map/npc.h   (working copy)
@@ -167,6 +167,7 @@
 int npc_reload(void);
 void npc_read_event_script(void);
 int npc_script_event(struct map_session_data* sd, enum npce_event type);
+int npc_delayed_script_event(int tid, unsigned int tick, int id, intptr_t data);
 
 int npc_duplicate4instance(struct npc_data *snd, int16 m);
 int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int points);
Viewed 1378 times, submitted by lighta.