viewing paste camo | C

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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
Index: src/map/skill.c
===================================================================
--- src/map/skill.c     (revision 17288)
+++ src/map/skill.c     (working copy)
 
@@ -5939,6 +5983,7 @@
        case LG_FORCEOFVANGUARD:
        case SC_REPRODUCE:
        case SC_INVISIBILITY:
+       case RA_CAMOUFLAGE:
                if (tsce) {
                        i = status_change_end(bl, type, INVALID_TIMER);
                        if( i )
@@ -5948,7 +5993,6 @@
                        map_freeblock_unlock();
                        return 0;
                }
-       case RA_CAMOUFLAGE:
                i = sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv));
                if( i )
                        clif_skill_nodamage(src,bl,skill_id,( skill_id == LG_FORCEOFVANGUARD ) ? skill_lv : -1,i);
@@ -15199,11 +15264,8 @@
                if( !wall ) {
                        if( sce->val1 < 3 ) //End camouflage.
                                status_change_end(bl, SC_CAMOUFLAGE, INVALID_TIMER);
-                       else if( sce->val3&1 ) { //Remove wall bonus
-                               sce->val3&=~1;
-                               status_calc_bl(bl,SCB_SPEED);
-                       }
                }
+               status_calc_bl(bl,SCB_SPEED);
        }
 
        return wall;
Index: src/map/status.c
===================================================================
--- src/map/status.c    (revision 17288)
+++ src/map/status.c    (working copy)
@@ -598,7 +598,7 @@
        set_sc( RA_FEARBREEZE        , SC_FEARBREEZE      , SI_FEARBREEZE      , SCB_NONE );
        set_sc( RA_ELECTRICSHOCKER   , SC_ELECTRICSHOCKER , SI_ELECTRICSHOCKER , SCB_NONE );
        set_sc( RA_WUGDASH           , SC_WUGDASH         , SI_WUGDASH         , SCB_SPEED );
-       set_sc( RA_CAMOUFLAGE        , SC_CAMOUFLAGE      , SI_CAMOUFLAGE      , SCB_SPEED );
+       set_sc( RA_CAMOUFLAGE        , SC_CAMOUFLAGE      , SI_CAMOUFLAGE      , SCB_CRI|SCB_SPEED|SCB_WATK|SCB_DEF );
        add_sc( RA_MAGENTATRAP       , SC_ELEMENTALCHANGE );
        add_sc( RA_COBALTTRAP        , SC_ELEMENTALCHANGE );
        add_sc( RA_MAIZETRAP         , SC_ELEMENTALCHANGE );
@@ -3574,8 +3574,7 @@
                                  || (sc->data[SC_BASILICA] && sc->data[SC_BASILICA]->val4 == bl->id) // Basilica caster cannot move
                                  || (sc->data[SC_GRAVITATION] && sc->data[SC_GRAVITATION]->val3 == BCT_SELF)
                                  || (sc->data[SC_CRYSTALIZE] && bl->type != BL_MOB)
-                                 || (sc->data[SC_CAMOUFLAGE] && sc->data[SC_CAMOUFLAGE]->val1 < 3
-                                                       && !(sc->data[SC_CAMOUFLAGE]->val3&1))
+                                 || (sc->data[SC_CAMOUFLAGE] && sc->data[SC_CAMOUFLAGE]->val1 < 3 )
                                 ) {
                        sc->cant.move += ( start ? 1 : -1 );
                }
@@ -5230,7 +5229,7 @@
                                        val = max( val, 70 );
                                if( sc->data[SC_MARSHOFABYSS] )
                                        val = max( val, 40 + 10 * sc->data[SC_MARSHOFABYSS]->val1 );
-                               if( sc->data[SC_CAMOUFLAGE] && (sc->data[SC_CAMOUFLAGE]->val3&1) == 0 )
+                               if( sc->data[SC_CAMOUFLAGE] )
                                        val = max( val, sc->data[SC_CAMOUFLAGE]->val1 < 3 ? 0 : 25 * (5 - sc->data[SC_CAMOUFLAGE]->val1) );
                                if( sc->data[SC__GROOMY] )
                                        val = max( val, sc->data[SC__GROOMY]->val2);
@@ -10480,12 +10479,32 @@
                break;
 
        case SC_CAMOUFLAGE:
-               if(--(sce->val4) > 0){
-                       status_charge(bl,0,7 - sce->val1);
-                       sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
-                       return 0;
+               if (!status_charge(bl, 0, 7 - sce->val1))
+                       break;
+               if (sd) {
+                       if (--sce->val4 >= 0) {
+                               status->cri += sd->base_status.cri * 1 / 10; //+10% per second
+                               if (!(sce->val2 & 1)) {
+                                       if (status->cri > 1000) { //max 100%
+                                               status->cri = 1000;
+                                               sce->val2 |= 1;
+                                       }
+                                       clif_updatestatus(sd, SP_CRITICAL);
+                               }
+                               if (!(sce->val2 & 2)) {
+                                       status->def2 -= sd->base_status.def2 * 1 / 20; //-5% per second
+                                       if (status->def2 < 0) { //min 0
+                                               status->def2 = 0;
+                                               sce->val2 |= 2;
+                                       }
+                                       clif_updatestatus(sd, SP_DEF1);
+                               }
+                               status->rhw.atk += 30; //+30 per second
+                               clif_updatestatus(sd, SP_ATK2);
+                       }
                }
-               break;
+               sc_timer_next(1000 + tick, status_change_timer, bl->id, data);
+               return 0;
 
        case SC__REPRODUCE:
                if(!status_charge(bl, 0, 1))
Viewed 210 times, submitted by unknown.