viewing paste ra_skill_move_issue.patch | Diff

Posted on the | Last edited on
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /home/lighta/Documents/Myscript/RO/Servs/rathena
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
 
Index: src/map/skill.c
--- src/map/skill.c Base (BASE)
+++ src/map/skill.c Locally Modified (Based On LOCAL)
@@ -6582,8 +6582,8 @@
                                case SC_DONTFORGETME:
                                case SC_FORTUNE:
                                case SC_SERVICE4U:
-                                       if( tsc->data[i]->val4 ) //val4 = out-of-song-area
-                                               continue;
+                                       if(tsc->data[i]->val4==0)
+                                               continue; //if in song-area don't end it
                                        break;
                                case SC_ASSUMPTIO:
                                        if( bl->type == BL_MOB )
@@ -11369,11 +11369,10 @@
                        if (!sc) return 0;
                        if (!sce)
                                sc_start4(bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit);
-                       else if (sce->val4 == 1) {
-                               //Readjust timers since the effect will not last long.
-                               sce->val4 = 0;
+                       else if (sce->val4 == 1) { //Readjust timers since the effect will not last long.
+                               sce->val4 = 0; //remove the mark that we stepped out
                                delete_timer(sce->timer, status_change_timer);
-                               sce->timer = add_timer(tick+sg->limit, status_change_timer, bl->id, type);
+                               sce->timer = add_timer(tick+sg->limit, status_change_timer, bl->id, type); //put duration back to 3min
                        }
                        break;
 
@@ -12214,6 +12213,7 @@
        struct status_change_entry *sce;
        enum sc_type type;
 
+       ShowDebug("skill_unit_onleft skill_id=%d\n",skill_id);
        sc = status_get_sc(bl);
        if (sc && !sc->count)
                sc = NULL;
@@ -12326,6 +12326,7 @@
  *------------------------------------------*/
 static int skill_unit_effect (struct block_list* bl, va_list ap)
 {
+
        struct skill_unit* unit = va_arg(ap,struct skill_unit*);
        struct skill_unit_group* group = unit->group;
        unsigned int tick = va_arg(ap,unsigned int);
@@ -12342,6 +12343,7 @@
 
        //Necessary in case the group is deleted after calling on_place/on_out [Skotlex]
        skill_id = group->skill_id;
+       ShowDebug("skill_unit_effect, skill_id=%d, flag=%d\n",skill_id,flag);
        //Target-type check.
        if( !(group->bl_flag&bl->type && battle_check_target(&unit->bl,bl,group->target_flag)>0) && (flag&4) ) {
                if( group->state.song_dance&0x1 || (group->src_id == bl->id && group->state.song_dance&0x2) )
@@ -15855,7 +15857,10 @@
 
 static int skill_unit_temp[20];  // temporary storage for tracking skill unit skill ids as players move in/out of them
 /*==========================================
- *
+ * flag :
+ *     1 : store that skill_unit in array
+ *     2 : clear that skill_unit
+ *     4 : call_on_left
  *------------------------------------------*/
 int skill_unit_move_sub (struct block_list* bl, va_list ap)
 {
@@ -15915,7 +15920,7 @@
                                }
 
                        }
-
+                       ShowDebug("skill_unit_move_sub, skill_id=%d, flag=%d\n",skill_id,flag);
                        if( flag&4 )
                                skill_unit_onleft(skill_id,target,tick);
                }
@@ -15954,6 +15959,7 @@
                //cells do not get deleted within them. [Skotlex]
                if( dissonance ) skill_dance_switch(unit, 1);
 
+               ShowDebug("skill_unit_move_sub2, skill_id=%d flag=%d\n",skill_id,flag);
                if( flag&4 )
                        skill_unit_onleft(skill_id,target,tick);
 
@@ -15987,9 +15993,11 @@
        {       //Onplace, check any skill units you have left.
                int i;
                for( i = 0; i < ARRAYLENGTH(skill_unit_temp); i++ )
-                       if( skill_unit_temp[i] )
+                       if( skill_unit_temp[i] ) {
+                               ShowDebug("skill_unit_move, skill_id=%d\n",skill_unit_temp[i]);
                                skill_unit_onleft(skill_unit_temp[i], bl, tick);
        }
+       }
 
        return 0;
 }
Index: src/map/status.c
--- src/map/status.c Base (BASE)
+++ src/map/status.c Locally Modified (Based On LOCAL)
@@ -338,8 +338,8 @@
        add_sc( BA_FROSTJOKER        , SC_FREEZE          );
        set_sc( BA_WHISTLE           , SC_WHISTLE         , SI_BLANK           , SCB_FLEE|SCB_FLEE2 );
        set_sc( BA_ASSASSINCROSS     , SC_ASSNCROS        , SI_BLANK           , SCB_ASPD );
-       add_sc( BA_POEMBRAGI         , SC_POEMBRAGI       );
-       set_sc( BA_APPLEIDUN         , SC_APPLEIDUN       , SI_BLANK           , SCB_MAXHP );
+       set_sc( BA_POEMBRAGI         , SC_POEMBRAGI       ,SI_FIREWEAPON        ,SCB_NONE);
+       set_sc( BA_APPLEIDUN         , SC_APPLEIDUN       , SI_WATERWEAPON           , SCB_MAXHP );
        add_sc( DC_SCREAM            , SC_STUN            );
        set_sc( DC_HUMMING           , SC_HUMMING         , SI_BLANK           , SCB_HIT );
        set_sc( DC_DONTFORGETME      , SC_DONTFORGETME    , SI_BLANK           , SCB_SPEED|SCB_ASPD );
@@ -9033,6 +9033,7 @@
        if( opt_flag&2 && sd && sd->touching_id )
                npc_touchnext_areanpc(sd,false); // run OnTouch_ on next char in range
 
+       ShowInfo("Status %d started with %d,%d,%d,%d\n\t tick=%d, flag=%d\n",type,val1,val2,val3,val4,tick,flag);
        return 1;
 }
 
@@ -9829,6 +9830,7 @@
                npc_touch_areanpc(sd,bl->m,bl->x,bl->y); //Trigger on-touch event.
 
        ers_free(sc_data_ers, sce);
+       ShowInfo("Status %d ended\n",type);
        return 1;
 }
Viewed 621 times, submitted by lighta.