viewing paste SC resist dispel | 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 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
Index: src/map/script.c
===================================================================
--- src/map/script.c    (revision 16799)
+++ src/map/script.c    (working copy)
@@ -9660,12 +9660,15 @@
        int tick;
        int val1;
        int val4 = 0;
+       int dispell = 0;
 
        type = (sc_type)script_getnum(st,2);
        tick = script_getnum(st,3);
        val1 = script_getnum(st,4);
        if( script_hasdata(st,5) )
-               bl = map_id2bl(script_getnum(st,5));
+               dispell = script_getnum(st,5);
+       if( script_hasdata(st,6) )
+               bl = map_id2bl(script_getnum(st,6));
        else
                bl = map_id2bl(st->rid);
 
@@ -9682,7 +9685,7 @@
        }
 
        if( bl )
-               status_change_start(bl, type, 10000, val1, 0, 0, val4, tick, 2);
+               status_change_start(bl, type, 10000, val1, 0, 0, val4, tick, dispell?18:2);
 
        return 0;
 }
@@ -17112,7 +17115,7 @@
        BUILDIN_DEF(disablenpc,"s"),
        BUILDIN_DEF(hideoffnpc,"s"),
        BUILDIN_DEF(hideonnpc,"s"),
-       BUILDIN_DEF(sc_start,"iii?"),
+       BUILDIN_DEF(sc_start,"iii??"),
        BUILDIN_DEF(sc_start2,"iiii?"),
        BUILDIN_DEF(sc_start4,"iiiiii?"),
        BUILDIN_DEF(sc_end,"i?"),
Index: src/map/status.c
===================================================================
--- src/map/status.c    (revision 16799)
+++ src/map/status.c    (working copy)
@@ -8581,6 +8584,7 @@
        sce->val2 = val2;
        sce->val3 = val3;
        sce->val4 = val4;
+       sce->dispell = flag&16?1:0;
        if (tick >= 0)
                sce->timer = add_timer(gettick() + tick, status_change_timer, bl->id, type);
        else
@@ -8801,6 +8805,9 @@
 
        if (sce->timer != tid && tid != INVALID_TIMER)
                return 0;
+      
+       if(sce->dispell)
+               return 0;
 
        if (tid == INVALID_TIMER) {
                if (type == SC_ENDURE && sce->val4)
Index: src/map/status.h
===================================================================
--- src/map/status.h    (revision 16799)
+++ src/map/status.h    (working copy)
@@ -1608,6 +1608,7 @@
 struct status_change_entry {
        int timer;
        int val1,val2,val3,val4;
+       int dispell;
 };
 
 struct status_change {
Viewed 483 times, submitted by Lilith.