Item Updates and New Status Changes (#1539)
* Item Updates * Added new Status Changes * Implemented effect for respective items * 12874,Frost_Giant_Blood: SC_GVG_GIANT * 12875,Golem_Stone: SC_GVG_GOLEM * 12876,Elf_Tear_Stun: SC_GVG_STUN * 12877,Elf_Tear_Stone_Curse: SC_GVG_STONE * 12878,Elf_Tear_Freezing: SC_GVG_FREEZ * 12879,Elf_Tear_Sleep: SC_GVG_SLEEP * 12880,Elf_Tear_Curse: SC_GVG_CURSE * 12881,Elf_Tear_Silence: SC_GVG_SILENCE * 12882,Elf_Tear_Blind: SC_GVG_BLIND * Thanks Divine-Pride.net Signed-off-by: Cydh Ramdh <cydh@pservero.com> * Follow up 9267a32d8c4828bde19f2fe80f83aeec7056b18f * Updated Status Change doc
This commit is contained in:
parent
7d0c7d8b24
commit
b46e4332df
@ -6989,15 +6989,15 @@
|
||||
12860,Mommy_Day_Cake,Mommy Day Cake,2,0,,200,,,,,0xFFFFFFFF,63,2,,,,,,{ percentheal 50,50; skilleffect "HP_ASSUMPTIO",0; sc_start SC_ASSUMPTIO,100000,5; },{},{}
|
||||
12863,Treasure_Chest_Summoned_II,Treasure Chest Summoned II,2,10,,0,,,,,0xFFFFFFFF,63,2,,,,,,{ monster "this",-1,-1,"--ja--",rand(1324,1363),1,""; },{},{}
|
||||
12873,TE_Potion_Box,TE Potion Box,18,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem(11558,10); },{},{}
|
||||
12874,Frost_Giant_Blood,Frost Giant Blood,2,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12875,Golem_Stone,Golem Stone,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12876,Elf_Tear_Stun,Elf Tear Stun,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12877,Elf_Tear_Stone_Curse,Elf Tear Stone Curse,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12878,Elf_Tear_Freezing,Elf Tear Freezing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12879,Elf_Tear_Sleep,Elf Tear Sleep,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12880,Elf_Tear_Curse,Elf Tear Curse,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12881,Elf_Tear_Silence,Elf Tear Silence,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12882,Elf_Tear_Blind,Elf Tear Blind,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{}
|
||||
12874,Frost_Giant_Blood,Frost Giant Blood,2,0,,100,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_CON; sc_start4 SC_GVG_GIANT,10000,3000,0,100,100; },{},{}
|
||||
12875,Golem_Stone,Golem Stone,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_POTION_CON; sc_start4 SC_GVG_GOLEM,10000,0,200,50,50; },{},{}
|
||||
12876,Elf_Tear_Stun,Elf Tear Stun,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_STUN,10000,3000,0; },{},{}
|
||||
12877,Elf_Tear_Stone_Curse,Elf Tear Stone Curse,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_STONE,10000,3000,0; },{},{}
|
||||
12878,Elf_Tear_Freezing,Elf Tear Freezing,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_FREEZ,10000,3000,0; },{},{}
|
||||
12879,Elf_Tear_Sleep,Elf Tear Sleep,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_SLEEP,10000,3000,0; },{},{}
|
||||
12880,Elf_Tear_Curse,Elf Tear Curse,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_CURSE,10000,3000,0; },{},{}
|
||||
12881,Elf_Tear_Silence,Elf Tear Silence,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_SILENCE,10000,3000,0; },{},{}
|
||||
12882,Elf_Tear_Blind,Elf Tear Blind,2,0,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ sc_start2 SC_GVG_BLIND,10000,3000,0; },{},{}
|
||||
12883,Almighty,Almighty,2,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ specialeffect2 EF_BASH3D; sc_start SC_2011RWC_SCROLL,1800000,10; },{},{}
|
||||
12884,Infinite_Concentration_Potion,Infinite Concentration Potion,11,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ASPDPOTION0,1800000,4; },{},{}
|
||||
12885,Infinite_Awakening_Potion,Infinite Awakening Potion,11,10,,0,,,,0,0xFFFFFFFF,63,2,,,,,,{ sc_start SC_ASPDPOTION1,1800000,6; },{},{}
|
||||
|
@ -2528,6 +2528,55 @@ SC_CHASEWALK2 (SI_CHASEWALK2)
|
||||
desc: 2nd effect of Chasewalk
|
||||
val1: +STR
|
||||
|
||||
SC_GVG_GIANT (SI_GVG_GIANT)
|
||||
desc: Instantly consumes HP/SP, increases Physical/Magic damage on player enemies by n%.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
val3: Increases % Physical damage
|
||||
val4: Increases % Magical damage
|
||||
|
||||
SC_GVG_GOLEM (SI_GVG_GOLEM)
|
||||
desc: Instantly consumes HP/SP, decreases n% damage received from other adventurers.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
val3: Decreases % damage received of physical attack
|
||||
val4: Decreases % damage received of magical attack
|
||||
|
||||
SC_GVG_STUN (SI_GVG_STUN)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Stun.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_STONE (SI_GVG_STONE)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Petrification.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_FREEZ (SI_GVG_FREEZ)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Frost.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_SLEEP (SI_GVG_SLEEP)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Sleep.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_CURSE (SI_GVG_CURSE)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Curse.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_SILENCE (SI_GVG_SILENCE)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Silence.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_GVG_BLIND (SI_GVG_BLIND)
|
||||
desc: Instantly consumes HP/SP, immunizes you against Blind.
|
||||
val1: Amount of HP that are instantly consumed
|
||||
val2: Amount of SP that are instantly consumed
|
||||
|
||||
SC_EXTREMITYFIST2 ()
|
||||
desc:
|
||||
val1:
|
||||
|
@ -1357,6 +1357,13 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
status_change_end(bl, SC_STONEHARDSKIN, INVALID_TIMER);
|
||||
}
|
||||
|
||||
if (src->type == BL_PC && sc->data[SC_GVG_GOLEM]) {
|
||||
if (flag&BF_WEAPON)
|
||||
damage -= damage * sc->data[SC_GVG_GOLEM]->val3 / 100;
|
||||
if (flag&BF_MAGIC)
|
||||
damage -= damage * sc->data[SC_GVG_GOLEM]->val4 / 100;
|
||||
}
|
||||
|
||||
#ifdef RENEWAL
|
||||
// Renewal: steel body reduces all incoming damage to 1/10 [helvetica]
|
||||
if( sc->data[SC_STEELBODY] )
|
||||
@ -1448,6 +1455,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
if ((sce = sc->data[SC_BLOODLUST]) && flag&BF_WEAPON && damage > 0 && rnd()%100 < sce->val3)
|
||||
status_heal(src, damage * sce->val4 / 100, 0, 3);
|
||||
|
||||
if (flag&BF_MAGIC && bl->type == BL_PC && sc->data[SC_GVG_GIANT] && sc->data[SC_GVG_GIANT]->val4)
|
||||
damage += damage * sc->data[SC_GVG_GIANT]->val4 / 100;
|
||||
|
||||
// [Epoque]
|
||||
if (bl->type == BL_MOB) {
|
||||
if ( (((sce=sc->data[SC_MANU_ATK]) && (flag&BF_WEAPON)) ||
|
||||
@ -4476,6 +4486,11 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s
|
||||
RE_ALLATK_ADDRATE(wd, sc->data[SC_ARCLOUSEDASH]->val4);
|
||||
}
|
||||
}
|
||||
|
||||
if (sd && wd.flag&BF_WEAPON && sc->data[SC_GVG_GIANT] && sc->data[SC_GVG_GIANT]->val3) {
|
||||
ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_GVG_GIANT]->val3);
|
||||
RE_ALLATK_ADDRATE(wd, sc->data[SC_GVG_GIANT]->val3);
|
||||
}
|
||||
}
|
||||
|
||||
if ((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) {
|
||||
|
@ -1404,6 +1404,15 @@
|
||||
export_constant(SC_MAPLE_FALLS);
|
||||
export_constant(SC_TIME_ACCESSORY);
|
||||
export_constant(SC_MAGICAL_FEATHER);
|
||||
export_constant(SC_GVG_GIANT);
|
||||
export_constant(SC_GVG_GOLEM);
|
||||
export_constant(SC_GVG_STUN);
|
||||
export_constant(SC_GVG_STONE);
|
||||
export_constant(SC_GVG_FREEZ);
|
||||
export_constant(SC_GVG_SLEEP);
|
||||
export_constant(SC_GVG_CURSE);
|
||||
export_constant(SC_GVG_SILENCE);
|
||||
export_constant(SC_GVG_BLIND);
|
||||
#ifdef RENEWAL
|
||||
export_constant(SC_EXTREMITYFIST2);
|
||||
#endif
|
||||
|
@ -1053,6 +1053,15 @@ void initChangeTables(void)
|
||||
StatusIconChangeTable[SC_MTF_MSP] = SI_MTF_MSP;
|
||||
StatusIconChangeTable[SC_MTF_PUMPKIN] = SI_MTF_PUMPKIN;
|
||||
StatusIconChangeTable[SC_NORECOVER_STATE] = SI_HANDICAPSTATE_NORECOVER;
|
||||
StatusIconChangeTable[SC_GVG_GIANT] = SI_GVG_GIANT;
|
||||
StatusIconChangeTable[SC_GVG_GOLEM] = SI_GVG_GOLEM;
|
||||
StatusIconChangeTable[SC_GVG_STUN] = SI_GVG_STUN;
|
||||
StatusIconChangeTable[SC_GVG_STONE] = SI_GVG_STONE;
|
||||
StatusIconChangeTable[SC_GVG_FREEZ] = SI_GVG_FREEZ;
|
||||
StatusIconChangeTable[SC_GVG_SLEEP] = SI_GVG_SLEEP;
|
||||
StatusIconChangeTable[SC_GVG_CURSE] = SI_GVG_CURSE;
|
||||
StatusIconChangeTable[SC_GVG_SILENCE] = SI_GVG_SILENCE;
|
||||
StatusIconChangeTable[SC_GVG_BLIND] = SI_GVG_BLIND;
|
||||
|
||||
// Costumes
|
||||
StatusIconChangeTable[SC_MOONSTAR] = SI_MOONSTAR;
|
||||
@ -8085,25 +8094,53 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
return 0;
|
||||
break;
|
||||
case SC_STONE:
|
||||
if(sc->data[SC_POWER_OF_GAIA])
|
||||
return 0;
|
||||
case SC_FREEZE:
|
||||
// Undead are immune to Freeze/Stone
|
||||
// Undead are immune to Stone
|
||||
if (undead_flag && !(flag&SCSTART_NOAVOID))
|
||||
return 0;
|
||||
case SC_DEEPSLEEP:
|
||||
case SC_SLEEP:
|
||||
case SC_STUN:
|
||||
if(sc->data[SC_POWER_OF_GAIA])
|
||||
return 0;
|
||||
if (sc->data[SC_GVG_STONE])
|
||||
return 0;
|
||||
break;
|
||||
case SC_FREEZE:
|
||||
// Undead are immune to Freeze
|
||||
if (undead_flag && !(flag&SCSTART_NOAVOID))
|
||||
return 0;
|
||||
if (sc->data[SC_GVG_FREEZ])
|
||||
return 0;
|
||||
case SC_FREEZING:
|
||||
case SC_CRYSTALIZE:
|
||||
if (sc->opt1)
|
||||
return 0; // Cannot override other opt1 status changes. [Skotlex]
|
||||
if((type == SC_FREEZE || type == SC_FREEZING || type == SC_CRYSTALIZE) && sc->data[SC_WARMER])
|
||||
if (sc->data[SC_WARMER])
|
||||
return 0; // Immune to Frozen and Freezing status if under Warmer status. [Jobbie]
|
||||
break;
|
||||
case SC_SLEEP:
|
||||
if (sc->data[SC_GVG_SLEEP])
|
||||
return 0;
|
||||
case SC_DEEPSLEEP:
|
||||
if (sc->opt1)
|
||||
return 0; // Cannot override other opt1 status changes. [Skotlex]
|
||||
break;
|
||||
case SC_STUN:
|
||||
if (sc->opt1)
|
||||
return 0; // Cannot override other opt1 status changes. [Skotlex]
|
||||
if (sc->data[SC_GVG_STUN])
|
||||
return 0;
|
||||
break;
|
||||
case SC_BLIND:
|
||||
if (sc->data[SC_FEAR])
|
||||
return 0;
|
||||
if (sc->data[SC_GVG_BLIND])
|
||||
return 0;
|
||||
break;
|
||||
case SC_CURSE:
|
||||
if (sc->data[SC_GVG_CURSE])
|
||||
return 0;
|
||||
break;
|
||||
case SC_SILENCE:
|
||||
if (sc->data[SC_GVG_SILENCE])
|
||||
return 0;
|
||||
break;
|
||||
case SC_ALL_RIDING:
|
||||
if( !sd || !&sd->sc || sc->option&(OPTION_RIDING|OPTION_DRAGON|OPTION_WUGRIDER|OPTION_MADOGEAR) )
|
||||
@ -11086,6 +11123,18 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
if (src->type == BL_PC && (sd = map_id2sd(src->id)))
|
||||
clif_crimson_marker(sd, bl, false);
|
||||
break;
|
||||
case SC_GVG_GIANT:
|
||||
case SC_GVG_GOLEM:
|
||||
case SC_GVG_STUN:
|
||||
case SC_GVG_STONE:
|
||||
case SC_GVG_FREEZ:
|
||||
case SC_GVG_SLEEP:
|
||||
case SC_GVG_CURSE:
|
||||
case SC_GVG_SILENCE:
|
||||
case SC_GVG_BLIND:
|
||||
if (val1 || val2)
|
||||
status_zap(bl, val1 ? val1 : 0, val2 ? val2 : 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if( opt_flag&2 && sd && sd->touching_id )
|
||||
|
@ -769,6 +769,15 @@ typedef enum sc_type {
|
||||
SC_MAPLE_FALLS,
|
||||
SC_TIME_ACCESSORY,
|
||||
SC_MAGICAL_FEATHER,
|
||||
SC_GVG_GIANT,
|
||||
SC_GVG_GOLEM,
|
||||
SC_GVG_STUN,
|
||||
SC_GVG_STONE,
|
||||
SC_GVG_FREEZ,
|
||||
SC_GVG_SLEEP,
|
||||
SC_GVG_CURSE,
|
||||
SC_GVG_SILENCE,
|
||||
SC_GVG_BLIND,
|
||||
|
||||
#ifdef RENEWAL
|
||||
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
|
||||
|
Loading…
x
Reference in New Issue
Block a user