# 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; }