Advertisement
Lighta

stats-mod Ea skillcalls

Feb 11th, 2012
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.58 KB | None | 0 0
  1. Index : src/map/skill.c
  2. =============================================
  3. --- Base (BASE)
  4. +++ Locally Modified (Based On LOCAL)
  5. @@ -10,6 +10,7 @@
  6.  #include "../common/utils.h"
  7.  #include "../common/ers.h"
  8.  
  9. +#include "statslof.h"
  10.  #include "skill.h"
  11.  #include "map.h"
  12.  #include "path.h"
  13. @@ -2434,6 +2435,7 @@
  14.     struct map_session_data *sd = NULL;
  15.     struct status_data *tstatus;
  16.     struct status_change *sc;
  17. +   int skilltype=SKILL_OFFENSIVE;
  18.  
  19.     if (skillid > 0 && skilllv <= 0) return 0;
  20.  
  21. @@ -3084,6 +3086,11 @@
  22.         skill_consume_requirement(sd,skillid,skilllv,2);
  23.     }
  24.  
  25. +   if (sd != NULL) {
  26. +       int callstats2 = statslof_skill_cnt(sd,sd->status.char_id,skillid,skilltype);//Stats lof skill cnt offensif
  27. +       //ShowError("Appel stats lof dmg offensif = %d\n",callstats2);
  28. +   }
  29. +
  30.     return 0;
  31.  }
  32.  
  33. @@ -3101,6 +3108,7 @@
  34.     struct status_change_entry *tsce;
  35.  
  36.     int i;
  37. +   int skilltype=SKILL_DEFENSIVE;
  38.     enum sc_type type;
  39.  
  40.     if(skillid > 0 && skilllv <= 0) return 0;   // celest
  41. @@ -3207,8 +3215,14 @@
  42.                 if (heal_get_jobexp <= 0)
  43.                     heal_get_jobexp = 1;
  44.                 pc_gainexp (sd, bl, 0, heal_get_jobexp, false);
  45. +               //Statslof [Lux] && [Lighta]
  46. +               ShowInfo("AL heal Heal done : %d",heal);
  47. +               if(sd != NULL) {
  48. +                   //ShowInfo("healed by :%d\n",sd->status.char_id);
  49. +                   int callstats03=statslof_heal_cnt(sd, sd->status.char_id, heal, HEAL_DONE);
  50.             }
  51.         }
  52. +       }
  53.         break;
  54.  
  55.     case PR_REDEMPTIO:
  56. @@ -3290,6 +3304,7 @@
  57.  
  58.     case AL_DECAGI:
  59.     case MER_DECAGI:
  60. +       skilltype=SKILL_OFFENSIVE;
  61.         clif_skill_nodamage (src, bl, skillid, skilllv,
  62.             sc_start(bl, type, (40 + skilllv * 2 + (status_get_lv(src) + sstatus->int_)/5), skilllv, skill_get_time(skillid,skilllv)));
  63.         break;
  64. @@ -3306,6 +3321,7 @@
  65.  
  66.     case PR_LEXDIVINA:
  67.     case MER_LEXDIVINA:
  68. +       skilltype=SKILL_OFFENSIVE;
  69.         if( tsce )
  70.             status_change_end(bl,type, INVALID_TIMER);
  71.         else
  72. @@ -3365,6 +3381,7 @@
  73.         break;
  74.  
  75.     case SA_COMA:
  76. +       skilltype=SKILL_OFFENSIVE;
  77.         clif_skill_nodamage(src,bl,skillid,skilllv,
  78.             sc_start(bl,type,100,skilllv,skill_get_time2(skillid,skilllv)));
  79.         break;
  80. @@ -3397,6 +3414,7 @@
  81.         if (sd && pc_nextbaseexp(sd)) pc_gainexp(sd, NULL, pc_nextbaseexp(sd) * 10 / 100, 0, false);
  82.         break;
  83.     case SA_INSTANTDEATH:
  84. +       skilltype=SKILL_OFFENSIVE;
  85.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  86.         status_set_hp(bl,1,0);
  87.         break;
  88. @@ -3428,6 +3446,7 @@
  89.         }
  90.         break;
  91.     case SA_DEATH:
  92. +       skilltype=SKILL_OFFENSIVE;
  93.         if ( sd && dstmd && dstmd->status.mode&MD_BOSS )
  94.         {
  95.             clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
  96. @@ -3597,7 +3616,6 @@
  97.         }
  98.     case PR_SLOWPOISON:
  99.     case PR_IMPOSITIO:
  100. -   case PR_LEXAETERNA:
  101.     case PR_SUFFRAGIUM:
  102.     case PR_BENEDICTIO:
  103.     case LK_BERSERK:
  104. @@ -3647,6 +3665,11 @@
  105.         clif_skill_nodamage(src,bl,skillid,skilllv,
  106.             sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
  107.         break;
  108. +   case PR_LEXAETERNA:
  109. +       skilltype=SKILL_OFFENSIVE;
  110. +       clif_skill_nodamage(src,bl,skillid,skilllv,
  111. +           sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
  112. +       break;
  113.     case NPC_STOP:
  114.         if( clif_skill_nodamage(src,bl,skillid,skilllv,
  115.             sc_start2(bl,type,100,skilllv,src->id,skill_get_time(skillid,skilllv)) ) )
  116. @@ -3764,6 +3787,7 @@
  117.     case SM_PROVOKE:
  118.     case SM_SELFPROVOKE:
  119.     case MER_PROVOKE:
  120. +       skilltype=SKILL_OFFENSIVE;
  121.         if( (tstatus->mode&MD_BOSS) || battle_check_undead(tstatus->race,tstatus->def_ele) )
  122.         {
  123.             map_freeblock_unlock();
  124. @@ -3878,6 +3902,7 @@
  125.         break;
  126.  
  127.     case MO_ABSORBSPIRITS:
  128. +       skilltype=SKILL_OFFENSIVE;
  129.         i = 0;
  130.         if (dstsd && dstsd->spiritball && (sd == dstsd || map_flag_vs(src->m)) && (dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER)
  131.         {   // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen]
  132. @@ -3929,6 +3954,7 @@
  133.  
  134.     case ASC_METEORASSAULT:
  135.     case GS_SPREADATTACK:
  136. +       skilltype=SKILL_OFFENSIVE;
  137.         skill_area_temp[1] = 0;
  138.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  139.         map_foreachinrange(skill_area_sub, bl, skill_get_splash(skillid, skilllv), splash_target(src),
  140. @@ -3939,6 +3965,7 @@
  141.     case NPC_VAMPIRE_GIFT:
  142.     case NPC_HELLJUDGEMENT:
  143.     case NPC_PULSESTRIKE:
  144. +       skilltype=SKILL_OFFENSIVE;
  145.         skill_castend_damage_id(src, src, skillid, skilllv, tick, flag);
  146.         break;
  147.  
  148. @@ -3948,6 +3975,7 @@
  149.         break;
  150.  
  151.     case WZ_SIGHTRASHER:
  152. +       skilltype=SKILL_OFFENSIVE;
  153.         //Passive side of the attack.
  154.         status_change_end(src, SC_SIGHT, INVALID_TIMER);
  155.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  156. @@ -3960,6 +3988,7 @@
  157.     case NJ_HYOUSYOURAKU:
  158.     case NJ_RAIGEKISAI:
  159.     case WZ_FROSTNOVA:
  160. +       skilltype=SKILL_OFFENSIVE;
  161.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  162.         skill_area_temp[1] = 0;
  163.         map_foreachinrange(skill_attack_area, src,
  164. @@ -3969,6 +3998,7 @@
  165.  
  166.     case HVAN_EXPLOSION:    //[orn]
  167.     case NPC_SELFDESTRUCTION:
  168. +       skilltype=SKILL_OFFENSIVE;
  169.         //Self Destruction hits everyone in range (allies+enemies)
  170.         //Except for Summoned Marine spheres on non-versus maps, where it's just enemy.
  171.         i = ((!md || md->special_state.ai == 2) && !map_flag_vs(src->m))?
  172. @@ -4119,6 +4149,7 @@
  173.  
  174.     case BA_FROSTJOKER:
  175.     case DC_SCREAM:
  176. +       skilltype=SKILL_OFFENSIVE;
  177.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  178.         skill_addtimerskill(src,tick+2000,bl->id,src->x,src->y,skillid,skilllv,0,flag);
  179.  
  180. @@ -4132,10 +4163,12 @@
  181.         break;
  182.  
  183.     case BA_PANGVOICE:
  184. +       skilltype=SKILL_OFFENSIVE;
  185.         clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,SC_CONFUSION,50,7,skill_get_time(skillid,skilllv)));
  186.         break;
  187.  
  188.     case DC_WINKCHARM:
  189. +       skilltype=SKILL_OFFENSIVE;
  190.         if( dstsd )
  191.             clif_skill_nodamage(src,bl,skillid,skilllv, sc_start(bl,SC_CONFUSION,30,7,skill_get_time2(skillid,skilllv)));
  192.         else
  193. @@ -4178,6 +4211,7 @@
  194.  
  195.     case MG_STONECURSE:
  196.         {
  197. +           skilltype=SKILL_OFFENSIVE;
  198.             if (tstatus->mode&MD_BOSS) {
  199.                 if (sd) clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
  200.                 break;
  201. @@ -4416,6 +4450,7 @@
  202.         unsigned short location = 0;
  203.         int d = 0;
  204.        
  205. +       skilltype=SKILL_OFFENSIVE;
  206.         //Rate in percent
  207.         if ( skillid == ST_FULLSTRIP ) {
  208.             i = 5 + 2*skilllv + (sstatus->dex - tstatus->dex)/5;
  209. @@ -4613,6 +4648,7 @@
  210.         }
  211.         break;
  212.     case SA_DISPELL:
  213. +       skilltype=SKILL_OFFENSIVE;
  214.         if (flag&1 || (i = skill_get_splash(skillid, skilllv)) < 1)
  215.         {
  216.             clif_skill_nodamage(src,bl,skillid,skilllv,1);
  217. @@ -4718,6 +4754,7 @@
  218.     case SA_SPELLBREAKER:
  219.         {
  220.             int sp;
  221. +           skilltype=SKILL_OFFENSIVE;
  222.             if(tsc && tsc->data[SC_MAGICROD]) {
  223.                 sp = skill_get_sp(skillid,skilllv);
  224.                 sp = sp * tsc->data[SC_MAGICROD]->val2 / 100;
  225. @@ -5086,6 +5123,7 @@
  226.         }
  227.         break;
  228.     case HT_SPRINGTRAP:
  229. +       skilltype=SKILL_OFFENSIVE;
  230.         clif_skill_nodamage(src,bl,skillid,skilllv,1);
  231.         {
  232.             struct skill_unit *su=NULL;
  233. @@ -5133,6 +5171,7 @@
  234.  
  235.     case PF_MINDBREAKER:
  236.         {
  237. +           skilltype=SKILL_OFFENSIVE;
  238.             if(tstatus->mode&MD_BOSS || battle_check_undead(tstatus->race,tstatus->def_ele))
  239.             {
  240.                 map_freeblock_unlock();
  241. @@ -5216,7 +5255,13 @@
  242.             if(sp > 0)
  243.                 clif_skill_nodamage(NULL,bl,MG_SRECOVERY,sp,1);
  244.             status_heal(bl,hp,sp,0);
  245. +           //Statslof [Lux] && [Lighta]
  246. +           ShowInfo("SPP Heal done : %d ",hp);
  247. +           if(sd != NULL){
  248. +               //ShowInfo("healed by :%d\n",sd->status.char_id);
  249. +               int callstats01=statslof_heal_cnt(sd, sd->status.char_id, hp, HEAL_DONE);
  250.         }
  251. +       }
  252.         break;
  253.     // Full Chemical Protection
  254.     case CR_FULLPROTECTION:
  255. @@ -5662,6 +5707,20 @@
  256.     }
  257.  
  258.     map_freeblock_unlock();
  259. +
  260. +   //Statslof [Lux] && [Lighta]
  261. +   if (sd != NULL) {
  262. +       if(skillid != CR_SLIMPITCHER){
  263. +           int callstats4 = statslof_skill_cnt(sd,sd->status.char_id,skillid,skilltype);//Stats lof skill cnt defensive
  264. +       }
  265. +       if (skillid == GD_BATTLEORDER || skillid == GD_REGENERATION || skillid == GD_RESTORE || skillid == GD_EMERGENCYCALL){
  266. +           int guildid=status_get_guild_id(src);
  267. +           //ShowInfo("Guild is %d ",guildid);
  268. +           int callstats8 = statslof_gskill_cnt(sd,guildid,skillid);//Stats lof skill cnt defensive
  269. +       }
  270. +       //ShowError("Appel stats lof defensive dmg = %d\n",callstats4);
  271. +   }
  272. +  
  273.     return 0;
  274.  }
  275.  
  276. @@ -6114,6 +6173,7 @@
  277.     struct skill_unit_group* sg;
  278.     enum sc_type type;
  279.     int i;
  280. +   int skilltype=SKILL_DEFENSIVE;
  281.  
  282.     //if(skilllv <= 0) return 0;
  283.     if(skillid > 0 && skilllv <= 0) return 0;   // celest
  284. @@ -6193,13 +6253,9 @@
  285.         skill_unitsetting(src,skillid,skilllv,x,y,0);
  286.         break;
  287.     }
  288. -   case MG_SAFETYWALL:
  289.     case MG_FIREWALL:
  290.     case MG_THUNDERSTORM:
  291. -   case AL_PNEUMA:
  292. -   case WZ_ICEWALL:
  293.     case WZ_FIREPILLAR:
  294. -   case WZ_QUAGMIRE:
  295.     case WZ_VERMILION:
  296.     case WZ_STORMGUST:
  297.     case WZ_HEAVENDRIVE:
  298. @@ -6207,10 +6263,23 @@
  299.     case PR_MAGNUS:
  300.     case CR_GRANDCROSS:
  301.     case NPC_GRANDDARKNESS:
  302. -   case HT_SKIDTRAP:
  303. -   case MA_SKIDTRAP:
  304. +   case AC_SHOWER: //Ground-placed skill implementation.
  305. +   case MA_SHOWER:
  306.     case HT_LANDMINE:
  307.     case MA_LANDMINE:
  308. +   case HT_BLASTMINE:
  309. +   case HT_CLAYMORETRAP:
  310. +   case AM_DEMONSTRATION:
  311. +       skilltype=SKILL_OFFENSIVE;
  312. +       flag|=1;
  313. +       skill_unitsetting(src,skillid,skilllv,x,y,0);
  314. +       break;
  315. +   case WZ_QUAGMIRE:
  316. +   case MG_SAFETYWALL:
  317. +   case AL_PNEUMA:
  318. +   case WZ_ICEWALL:
  319. +   case HT_SKIDTRAP:
  320. +   case MA_SKIDTRAP:
  321.     case HT_ANKLESNARE:
  322.     case HT_SHOCKWAVE:
  323.     case HT_SANDMAN:
  324. @@ -6218,18 +6287,13 @@
  325.     case HT_FLASHER:
  326.     case HT_FREEZINGTRAP:
  327.     case MA_FREEZINGTRAP:
  328. -   case HT_BLASTMINE:
  329. -   case HT_CLAYMORETRAP:
  330.     case AS_VENOMDUST:
  331. -   case AM_DEMONSTRATION:
  332.     case PF_FOGWALL:
  333.     case PF_SPIDERWEB:
  334.     case HT_TALKIEBOX:
  335.     case WE_CALLPARTNER:
  336.     case WE_CALLPARENT:
  337.     case WE_CALLBABY:
  338. -   case AC_SHOWER: //Ground-placed skill implementation.
  339. -   case MA_SHOWER:
  340.     case SA_LANDPROTECTOR:
  341.     case BD_LULLABY:
  342.     case BD_RICHMANKIM:
  343. @@ -6316,6 +6380,7 @@
  344.  
  345.             skill_addtimerskill(src,tick+i*1000,0,tmpx,tmpy,skillid,skilllv,-1,flag&2);
  346.         }
  347. +       skilltype=SKILL_OFFENSIVE;
  348.         break;
  349.  
  350.     case AL_WARP:
  351. @@ -6437,6 +6502,7 @@
  352.         if ((sg = skill_unitsetting(src,skillid,skilllv,x,y,0)))
  353.             sc_start4(src,type,100,skilllv,0,BCT_SELF,sg->group_id,skill_get_time(skillid,skilllv));
  354.         flag|=1;
  355. +       skilltype=SKILL_OFFENSIVE;
  356.         break;
  357.  
  358.     // Plant Cultivation [Celest]
  359. @@ -6521,6 +6587,12 @@
  360.         skill_consume_requirement(sd,skillid,skilllv,2);
  361.     }
  362.  
  363. +   //Stats Lof [Lighta] & [Lux]
  364. +   if (sd != NULL && src != NULL ) {
  365. +       int callstats3 = statslof_skill_cnt(sd,sd->status.char_id,skillid,skilltype);//Stats lof skill cnt
  366. +       //ShowError("Appel stats lof aoe dmg = %d type = %d\n",callstats3,skilltype);
  367. +   }
  368. +
  369.     return 0;
  370.  }
  371.  
  372. @@ -7404,7 +7476,13 @@
  373.                 status_heal(bl, heal, 0, 0);
  374.                 if( diff >= 500 )
  375.                     sg->val1--;
  376. +               //Statslof [Lux] && [Lighta]
  377. +               //ShowInfo("sanctu Heal done : %d ",heal);
  378. +               if(tsd != NULL) {
  379. +                   //ShowInfo("healed by :%d\n",tsd->status.char_id);
  380. +                   int callstats02=statslof_heal_cnt(tsd, tsd->status.char_id, heal, HEAL_DONE);
  381.             }
  382. +           }
  383.             if( sg->val1 <= 0 )
  384.                 skill_delunitgroup(sg);
  385.             break;
  386. @@ -8747,10 +8825,21 @@
  387.             if( itemid_isgemstone(req.itemid[i]) && skill != HW_GANBANTEIN && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_WIZARD )
  388.                 continue; //Gemstones are checked, but not substracted from inventory.
  389.  
  390. -           if( (n = pc_search_inventory(sd,req.itemid[i])) >= 0 )
  391. +           if( (n = pc_search_inventory(sd,req.itemid[i])) >= 0 ){
  392.                 pc_delitem(sd,n,req.amount[i],0,1);
  393. +
  394. +               //Statslof [Lux] && [Lighta]
  395. +               if (sd != NULL) {
  396. +                   int amountitem = req.amount[i];
  397. +                   while (amountitem != 0) {
  398. +                       int callstats0=statslof_conso_cnt(sd,sd->status.char_id,req.itemid[i]);
  399. +                       //ShowError("Appel stats lof conso = %d, itemid : %d amount :%d\n",callstats0,req.itemid[i],req.amount[i]);
  400. +                       amountitem--;
  401.         }
  402.     }
  403. +           }
  404. +       }
  405. +   }
  406.  
  407.     return 1;
  408.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement