I've been trying to get a new status effect I've called SC_BIFROST for Mora Berry and I'm not sure what I'm doing wrong. I figured I'll implement it in the same vein as Pinguicula's Fruit Jam and such items. I've done the following:
battle.c:
if (bl->type == BL_MOB) {
uint8 i;
if ( ((sce=sc->data[SC_MANU_ATK]) && (flag&BF_WEAPON)) ||
((sce=sc->data[SC_MANU_MATK]) && (flag&BF_MAGIC))
) {
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++) {
if (((TBL_MOB*)bl)->mob_id==mob_manuk[i]) {
damage += damage * sce->val1 / 100;
break;
}
}
}
if ( ((sce=sc->data[SC_SPL_ATK]) && (flag&BF_WEAPON)) ||
((sce=sc->data[SC_SPL_MATK]) && (flag&BF_MAGIC))
) {
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++) {
if (((TBL_MOB*)bl)->mob_id==mob_splendide[i]) {
damage += damage * sce->val1 / 100;
break;
}
}
}
if ( (sce=sc->data[SC_BIFROST]) ) {
for (i=0;ARRAYLENGTH(mob_bifrost)>i;i++) {
if (((TBL_MOB*)bl)->mob_id==mob_bifrost[i]) {
damage += damage * sce->val1 / 100;
break;
}
}
}
}
battle.c2:
if (src->type == BL_MOB) {
int i;
if (sc->data[SC_MANU_DEF]) {
for (i=0;ARRAYLENGTH(mob_manuk)>i;i++) {
if (mob_manuk[i]==((TBL_MOB*)src)->mob_id) {
damage -= damage * sc->data[SC_MANU_DEF]->val1 / 100;
break;
}
}
}
if (sc->data[SC_SPL_DEF]) {
for (i=0;ARRAYLENGTH(mob_splendide)>i;i++) {
if (mob_splendide[i]==((TBL_MOB*)src)->mob_id) {
damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100;
break;
}
}
}
if (sc->data[SC_BIFROST]) {
for (i=0;ARRAYLENGTH(mob_bifrost)>i;i++) {
if (mob_bifrost[i]==((TBL_MOB*)src)->mob_id) {
damage -= damage * sc->data[SC_BIFROST]->val1 / 500;
break;
}
}
}
}
case SC_MANU_DEF:
case SC_MANU_ATK:
case SC_MANU_MATK:
val2 = 1; // Manuk group
break;
case SC_SPL_DEF:
case SC_SPL_ATK:
case SC_SPL_MATK:
val2 = 2; // Splendide group
break;
case SC_BIFROST:
val2 = 3;
break;
status.h:
SC_BIFROST,
SC_MAX,
status.h2:
SI_BIFROST = 1018,
SI_MAX,
Inserted it into three points where it is also implemented in skill.c under Banishing Buster, Dispell and Clearance.
Pinguicula's Fruit Jam and those items work fine after the modifications I made to them but this new one doesn't. Am I missing a spot I should have added some lines of code to?
Question
Dragonis1701
I've been trying to get a new status effect I've called SC_BIFROST for Mora Berry and I'm not sure what I'm doing wrong. I figured I'll implement it in the same vein as Pinguicula's Fruit Jam and such items. I've done the following:
battle.c:
if (bl->type == BL_MOB) { uint8 i; if ( ((sce=sc->data[SC_MANU_ATK]) && (flag&BF_WEAPON)) || ((sce=sc->data[SC_MANU_MATK]) && (flag&BF_MAGIC)) ) { for (i=0;ARRAYLENGTH(mob_manuk)>i;i++) { if (((TBL_MOB*)bl)->mob_id==mob_manuk[i]) { damage += damage * sce->val1 / 100; break; } } } if ( ((sce=sc->data[SC_SPL_ATK]) && (flag&BF_WEAPON)) || ((sce=sc->data[SC_SPL_MATK]) && (flag&BF_MAGIC)) ) { for (i=0;ARRAYLENGTH(mob_splendide)>i;i++) { if (((TBL_MOB*)bl)->mob_id==mob_splendide[i]) { damage += damage * sce->val1 / 100; break; } } } if ( (sce=sc->data[SC_BIFROST]) ) { for (i=0;ARRAYLENGTH(mob_bifrost)>i;i++) { if (((TBL_MOB*)bl)->mob_id==mob_bifrost[i]) { damage += damage * sce->val1 / 100; break; } } } }
battle.c2:
if (src->type == BL_MOB) { int i; if (sc->data[SC_MANU_DEF]) { for (i=0;ARRAYLENGTH(mob_manuk)>i;i++) { if (mob_manuk[i]==((TBL_MOB*)src)->mob_id) { damage -= damage * sc->data[SC_MANU_DEF]->val1 / 100; break; } } } if (sc->data[SC_SPL_DEF]) { for (i=0;ARRAYLENGTH(mob_splendide)>i;i++) { if (mob_splendide[i]==((TBL_MOB*)src)->mob_id) { damage -= damage * sc->data[SC_SPL_DEF]->val1 / 100; break; } } } if (sc->data[SC_BIFROST]) { for (i=0;ARRAYLENGTH(mob_bifrost)>i;i++) { if (mob_bifrost[i]==((TBL_MOB*)src)->mob_id) { damage -= damage * sc->data[SC_BIFROST]->val1 / 500; break; } } } }
status.c:
StatusIconChangeTable[SC_MANU_ATK] = SI_MANU_ATK; StatusIconChangeTable[SC_MANU_DEF] = SI_MANU_DEF; StatusIconChangeTable[SC_SPL_ATK] = SI_SPL_ATK; StatusIconChangeTable[SC_SPL_DEF] = SI_SPL_DEF; StatusIconChangeTable[SC_MANU_MATK] = SI_MANU_MATK; StatusIconChangeTable[SC_SPL_MATK] = SI_SPL_MATK; StatusIconChangeTable[SC_BIFROST] = SI_BIFROST;
status.c2:
case SC_MANU_DEF: case SC_MANU_ATK: case SC_MANU_MATK: val2 = 1; // Manuk group break; case SC_SPL_DEF: case SC_SPL_ATK: case SC_SPL_MATK: val2 = 2; // Splendide group break; case SC_BIFROST: val2 = 3; break;
status.h:
SC_BIFROST, SC_MAX,
status.h2:
SI_BIFROST = 1018, SI_MAX,
Inserted it into three points where it is also implemented in skill.c under Banishing Buster, Dispell and Clearance.
mob.c:
const int mob_manuk[20] = { MOBID_TATACHO, MOBID_CENTIPEDE, MOBID_NEPENTHES, MOBID_HILLSRION, MOBID_HARDROCK_MOMMOTH, MOBID_G_TATACHO, MOBID_G_HILLSRION, MOBID_CENTIPEDE_LARVA, MOBID_HORN_SCARABA, MOBID_HORN_SCARABA2, MOBID_ANTLER_SCARABA, MOBID_RAKE_SCARABA, MOBID_QUEEN_SCARABA, MOBID_HORN_SCARABA_EGG, MOBID_HORN_SCARABA2_EGG, MOBID_ANTLER_SCARABA_EGG, MOBID_RAKE_SCARABA_EGG, MOBID_DOLOMEDES, MOBID_G_ANTLER_SCARABA, MOBID_G_RAKE_SCARABA }; const int mob_splendide[17] = { MOBID_TENDRILRION, MOBID_CORNUS, MOBID_NAGA, MOBID_LUCIOLA_VESPA, MOBID_PINGUICULA, MOBID_LOST_DRAGON, MOBID_POM_SPIDER, MOBID_ANGRA_MANTIS, MOBID_PARUS, MOBID_LITTLE_FATUM, MOBID_MIMING, MOBID_DRACO, MOBID_DRACO_EGG, MOBID_PINGUICULA_D, MOBID_AQUA_ELEMENTAL, MOBID_RATA, MOBID_DUNEYRR }; const int mob_bifrost[6] = { MOBID_POM_SPIDER, MOBID_LOST_DRAGON, MOBID_ANGRA_MANTIS, MOBID_PARUS, MOBID_LITTLE_FATUM, MOBID_MIMING };
mob.h:
extern const int mob_manuk[20]; extern const int mob_splendide[17]; extern const int mob_bifrost[6];
itemdb:
12574,Mora_Berry,Mora Berry,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ specialeffect2 EF_POTION_BERSERK; sc_start SC_BIFROST,1800000,250; },{},{}
Pinguicula's Fruit Jam and those items work fine after the modifications I made to them but this new one doesn't. Am I missing a spot I should have added some lines of code to?
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.