diff --git a/db/pre-re/item_db.txt b/db/pre-re/item_db.txt index 2fa7b8282a..42d5782572 100644 --- a/db/pre-re/item_db.txt +++ b/db/pre-re/item_db.txt @@ -4681,10 +4681,10 @@ 12115,Elemental_Water,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",2; },{},{} 12116,Elemental_Earth,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",3; },{},{} 12117,Elemental_Wind,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",5; },{},{} -12118,Resist_Fire,Fireproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,-15,0,20,0; },{},{} -12119,Resist_Water,Coldproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,20,0,0,-15; },{},{} -12120,Resist_Earth,Earthproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,0,20,-15,0; },{},{} -12121,Resist_Wind,Thunderproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,0,-15,0,20; },{},{} +12118,Resist_Fire,Fireproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_FIRE,1200000,-15,0,20,0; },{},{} +12119,Resist_Water,Coldproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_WATER,1200000,20,0,0,-15; },{},{} +12120,Resist_Earth,Earthproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_EARTH,1200000,0,20,-15,0; },{},{} +12121,Resist_Wind,Thunderproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_WIND,1200000,0,-15,0,20; },{},{} 12122,Sesame_Pastry,Sesame Pastry,2,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_HITFOOD,1200000,30; },{},{} 12123,Honey_Pastry,Honey Pastry,2,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FLEEFOOD,1200000,30; },{},{} 12124,Rainbow_Cake,Rainbow Cake,2,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_BATKFOOD,1200000,10; sc_start SC_MATKFOOD,120000,10; },{},{} diff --git a/db/re/item_db.txt b/db/re/item_db.txt index 4711531687..a9698a9ccc 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -6252,10 +6252,10 @@ 12115,Elemental_Water,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",2; },{},{} 12116,Elemental_Earth,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",3; },{},{} 12117,Elemental_Wind,Elemental Converter,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "ITEM_ENCHANTARMS",5; },{},{} -12118,Resist_Fire,Fireproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,-15,0,20,0; },{},{} -12119,Resist_Water,Coldproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,20,0,0,-15; },{},{} -12120,Resist_Earth,Earthproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,0,20,-15,0; },{},{} -12121,Resist_Wind,Thunderproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT,1200000,0,-15,0,20; },{},{} +12118,Resist_Fire,Fireproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_FIRE,1200000,-15,0,20,0; },{},{} +12119,Resist_Water,Coldproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_WATER,1200000,20,0,0,-15; },{},{} +12120,Resist_Earth,Earthproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_EARTH,1200000,0,20,-15,0; },{},{} +12121,Resist_Wind,Thunderproof Potion,2,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start4 SC_ARMOR_ELEMENT_WIND,1200000,0,-15,0,20; },{},{} 12122,Sesame_Pastry,Sesame Pastry,2,2,,70,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_HITFOOD,180000,30; },{},{} 12123,Honey_Pastry,Honey Pastry,2,2,,70,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_FLEEFOOD,180000,30; },{},{} 12124,Rainbow_Cake,Rainbow Cake,2,2,,70,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_BATKFOOD,60000,10; sc_start SC_MATKFOOD,60000,10; },{},{} diff --git a/src/map/script_constants.h b/src/map/script_constants.h index 42b13a5d2a..bf83fa9d28 100644 --- a/src/map/script_constants.h +++ b/src/map/script_constants.h @@ -876,7 +876,7 @@ export_constant(SC_VIOLENTGALE); export_constant(SC_WATK_ELEMENT); export_constant(SC_ARMOR); - export_constant(SC_ARMOR_ELEMENT); + export_constant(SC_ARMOR_ELEMENT_WATER); export_constant(SC_NOCHAT); export_constant(SC_BABY); export_constant(SC_AURABLADE); @@ -1439,6 +1439,9 @@ export_constant(SC_GEFFEN_MAGIC2); export_constant(SC_GEFFEN_MAGIC3); export_constant(SC_MAXPAIN); + export_constant(SC_ARMOR_ELEMENT_EARTH); + export_constant(SC_ARMOR_ELEMENT_FIRE); + export_constant(SC_ARMOR_ELEMENT_WIND); #ifdef RENEWAL export_constant(SC_EXTREMITYFIST2); #endif diff --git a/src/map/skill.c b/src/map/skill.c index f587c6c041..39e22dd8ed 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7891,7 +7891,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_MTF_ASPD2: case SC_MTF_RANGEATK2: case SC_MTF_MATK2: case SC_2011RWC_SCROLL: case SC_JP_EVENT04: case SC_MTF_MHP: case SC_MTF_MSP: case SC_MTF_PUMPKIN: case SC_MTF_HITFLEE: - case SC_ATTHASTE_CASH: case SC_ARMOR_ELEMENT: case SC_REUSE_REFRESH: + case SC_ATTHASTE_CASH: case SC_ARMOR_ELEMENT_WATER: case SC_REUSE_REFRESH: case SC_REUSE_LIMIT_A: case SC_REUSE_LIMIT_B: case SC_REUSE_LIMIT_C: case SC_REUSE_LIMIT_D: case SC_REUSE_LIMIT_E: case SC_REUSE_LIMIT_F: case SC_REUSE_LIMIT_G: case SC_REUSE_LIMIT_H: case SC_REUSE_LIMIT_MTF: @@ -7899,6 +7899,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_REUSE_STORMBLAST: case SC_ALL_RIDING_REUSE_LIMIT: case SC_SPRITEMABLE: case SC_BITESCAR: case SC_CRUSHSTRIKE: case SC_QUEST_BUFF1: case SC_QUEST_BUFF2: case SC_QUEST_BUFF3: + case SC_ARMOR_ELEMENT_EARTH: case SC_ARMOR_ELEMENT_FIRE: case SC_ARMOR_ELEMENT_WIND: // Clans case SC_CLAN_INFO: case SC_SWORDCLAN: diff --git a/src/map/status.c b/src/map/status.c index ede227fbcc..c66d262702 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1061,6 +1061,10 @@ void initChangeTables(void) StatusIconChangeTable[SC_GVG_CURSE] = SI_GVG_CURSE; StatusIconChangeTable[SC_GVG_SILENCE] = SI_GVG_SILENCE; StatusIconChangeTable[SC_GVG_BLIND] = SI_GVG_BLIND; + StatusIconChangeTable[SC_ARMOR_ELEMENT_WATER] = SI_RESIST_PROPERTY_WATER; + StatusIconChangeTable[SC_ARMOR_ELEMENT_EARTH] = SI_RESIST_PROPERTY_EARTH; + StatusIconChangeTable[SC_ARMOR_ELEMENT_FIRE] = SI_RESIST_PROPERTY_FIRE; + StatusIconChangeTable[SC_ARMOR_ELEMENT_WIND] = SI_RESIST_PROPERTY_WIND; // Costumes StatusIconChangeTable[SC_MOONSTAR] = SI_MOONSTAR; @@ -1154,7 +1158,10 @@ void initChangeTables(void) StatusChangeFlagTable[SC_BATKFOOD] |= SCB_BATK; StatusChangeFlagTable[SC_WATKFOOD] |= SCB_WATK; StatusChangeFlagTable[SC_MATKFOOD] |= SCB_MATK; - StatusChangeFlagTable[SC_ARMOR_ELEMENT] |= SCB_ALL; + StatusChangeFlagTable[SC_ARMOR_ELEMENT_WATER] |= SCB_ALL; + StatusChangeFlagTable[SC_ARMOR_ELEMENT_EARTH] |= SCB_ALL; + StatusChangeFlagTable[SC_ARMOR_ELEMENT_FIRE] |= SCB_ALL; + StatusChangeFlagTable[SC_ARMOR_ELEMENT_WIND] |= SCB_ALL; StatusChangeFlagTable[SC_ARMOR_RESIST] |= SCB_ALL; StatusChangeFlagTable[SC_SPCOST_RATE] |= SCB_ALL; StatusChangeFlagTable[SC_WALKSPEED] |= SCB_SPEED; @@ -4051,11 +4058,29 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) sd->subrace[RC_PLAYER] += sc->data[SC_GEFFEN_MAGIC3]->val1; sd->subrace[RC_DEMIHUMAN] += sc->data[SC_GEFFEN_MAGIC3]->val1; } - if(sc->data[SC_ARMOR_ELEMENT]) { // This status change should grant card-type elemental resist. - sd->subele[ELE_WATER] += sc->data[SC_ARMOR_ELEMENT]->val1; - sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_ELEMENT]->val2; - sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_ELEMENT]->val3; - sd->subele[ELE_WIND] += sc->data[SC_ARMOR_ELEMENT]->val4; + if(sc->data[SC_ARMOR_ELEMENT_WATER]) { // This status change should grant card-type elemental resist. + sd->subele[ELE_WATER] += sc->data[SC_ARMOR_ELEMENT_WATER]->val1; + sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_ELEMENT_WATER]->val2; + sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_ELEMENT_WATER]->val3; + sd->subele[ELE_WIND] += sc->data[SC_ARMOR_ELEMENT_WATER]->val4; + } + if(sc->data[SC_ARMOR_ELEMENT_EARTH]) { // This status change should grant card-type elemental resist. + sd->subele[ELE_WATER] += sc->data[SC_ARMOR_ELEMENT_EARTH]->val1; + sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_ELEMENT_EARTH]->val2; + sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_ELEMENT_EARTH]->val3; + sd->subele[ELE_WIND] += sc->data[SC_ARMOR_ELEMENT_EARTH]->val4; + } + if(sc->data[SC_ARMOR_ELEMENT_FIRE]) { // This status change should grant card-type elemental resist. + sd->subele[ELE_WATER] += sc->data[SC_ARMOR_ELEMENT_FIRE]->val1; + sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_ELEMENT_FIRE]->val2; + sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_ELEMENT_FIRE]->val3; + sd->subele[ELE_WIND] += sc->data[SC_ARMOR_ELEMENT_FIRE]->val4; + } + if(sc->data[SC_ARMOR_ELEMENT_WIND]) { // This status change should grant card-type elemental resist. + sd->subele[ELE_WATER] += sc->data[SC_ARMOR_ELEMENT_WIND]->val1; + sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_ELEMENT_WIND]->val2; + sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_ELEMENT_WIND]->val3; + sd->subele[ELE_WIND] += sc->data[SC_ARMOR_ELEMENT_WIND]->val4; } if(sc->data[SC_ARMOR_RESIST]) { // Undead Scroll sd->subele[ELE_WATER] += sc->data[SC_ARMOR_RESIST]->val1; @@ -9070,7 +9095,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_ATKPOTION: case SC_MATKPOTION: case SC_ENCHANTARMS: - case SC_ARMOR_ELEMENT: + case SC_ARMOR_ELEMENT_WATER: + case SC_ARMOR_ELEMENT_EARTH: + case SC_ARMOR_ELEMENT_FIRE: + case SC_ARMOR_ELEMENT_WIND: case SC_ARMOR_RESIST: case SC_ATTHASTE_CASH: break; @@ -9953,7 +9981,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_KAIZEL: val2 = 10*val1; // % of life to be revived with break; - // case SC_ARMOR_ELEMENT: + // case SC_ARMOR_ELEMENT_WATER: + // case SC_ARMOR_ELEMENT_EARTH: + // case SC_ARMOR_ELEMENT_FIRE: + // case SC_ARMOR_ELEMENT_WIND: // case SC_ARMOR_RESIST: // Mod your resistance against elements: // val1 = water | val2 = earth | val3 = fire | val4 = wind diff --git a/src/map/status.h b/src/map/status.h index 5a920bf857..0d86ce803a 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -141,7 +141,7 @@ typedef enum sc_type { SC_VIOLENTGALE, SC_WATK_ELEMENT, SC_ARMOR, - SC_ARMOR_ELEMENT, + SC_ARMOR_ELEMENT_WATER, SC_NOCHAT, SC_BABY, SC_AURABLADE, @@ -794,6 +794,9 @@ typedef enum sc_type { SC_GEFFEN_MAGIC3, SC_MAXPAIN, + SC_ARMOR_ELEMENT_EARTH, + SC_ARMOR_ELEMENT_FIRE, + SC_ARMOR_ELEMENT_WIND, #ifdef RENEWAL SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled