diff --git a/db/re/item_db_equip.yml b/db/re/item_db_equip.yml index ce503a613d9..f3ece41059a 100644 --- a/db/re/item_db_equip.yml +++ b/db/re/item_db_equip.yml @@ -133619,6 +133619,11 @@ Body: Type: ShadowGear Locations: Shadow_Right_Accessory: true + Trade: + NoDrop: true + NoSell: true + NoMail: true + NoAuction: true Refineable: true Script: | .@r = getrefine(); @@ -133635,11 +133640,13 @@ Body: AegisName: S_FullPene_Pendant Name: Full Penetration Shadow Pendant Type: ShadowGear - Jobs: - All: true - Novice: false Locations: Shadow_Left_Accessory: true + Trade: + NoDrop: true + NoSell: true + NoMail: true + NoAuction: true Refineable: true Script: | .@r = getrefine(); @@ -133658,6 +133665,11 @@ Body: Type: ShadowGear Locations: Shadow_Armor: true + Trade: + NoDrop: true + NoSell: true + NoMail: true + NoAuction: true Refineable: true Script: | .@r = getrefine(); @@ -133674,11 +133686,13 @@ Body: AegisName: S_FullPene_Shoes Name: Full Penetration Shadow Shoes Type: ShadowGear - Jobs: - All: true - Novice: false Locations: Shadow_Shoes: true + Trade: + NoDrop: true + NoSell: true + NoMail: true + NoAuction: true Refineable: true Script: | .@r = getrefine(); @@ -180688,6 +180702,38 @@ Body: Costume_Head_Top: true ArmorLevel: 1 View: 2814 + - Id: 401294 + AegisName: aegis_401294 + Name: Costume Tulip Hairpin (Yellow) # !todo check english name + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 499 + - Id: 401295 + AegisName: C_Nymph_Ear + Name: Costume Nymph's Ear + Type: Armor + Locations: + Costume_Head_Mid: true + ArmorLevel: 1 + View: 2818 + - Id: 401300 + AegisName: C_LG_Feather_Hat + Name: Costume Light Green Feather Hat # !todo check english name + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2819 + - Id: 401303 + AegisName: C_Ruck_Keeper + Name: Costume Ruck Keeper + Type: Armor + Locations: + Costume_Head_Top: true + ArmorLevel: 1 + View: 2822 - Id: 410000 AegisName: Resonate_Taego_J Name: Ancient Resonance @@ -189744,6 +189790,30 @@ Body: Costume_Head_Low: true ArmorLevel: 1 View: 2816 + - Id: 420774 + AegisName: aegis_420774 + Name: Costume Poporin Bubble Pipe + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2753 + - Id: 420775 + AegisName: C_Petal_Twin + Name: Costume Petal Twin + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2820 + - Id: 420776 + AegisName: C_Petal_Twin_N + Name: Costume Petal Twin (No Decoration) + Type: Armor + Locations: + Costume_Head_Low: true + ArmorLevel: 1 + View: 2821 - Id: 430001 AegisName: C_Helm_Of_Ra Name: Costume Hat of the Sun God @@ -219762,6 +219832,26 @@ Body: Costume_Garment: true ArmorLevel: 1 View: 301 + - Id: 480772 + AegisName: C_Angel_Gift + Name: Costume Angel's Gift + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 302 + Script: | + hateffect HAT_EF_C_ANGEL_GIFT,true; + UnEquipScript: | + hateffect HAT_EF_C_ANGEL_GIFT,false; + - Id: 480773 + AegisName: C_Sakura_Rod_PK + Name: Costume Blooming Staff Pink # !todo check english name + Type: Armor + Locations: + Costume_Garment: true + ArmorLevel: 1 + View: 303 - Id: 490004 AegisName: Atker_Ring Name: Attacker Booster Ring diff --git a/db/re/item_db_etc.yml b/db/re/item_db_etc.yml index 045c46f10aa..035c7c13c92 100644 --- a/db/re/item_db_etc.yml +++ b/db/re/item_db_etc.yml @@ -102030,6 +102030,51 @@ Body: Weight: 10 Trade: NoDrop: true + - Id: 1002834 + AegisName: ABI_Ground_Essence + Name: Ground Essence of the Rift # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002835 + AegisName: ABI_Ground_Rune_Ore + Name: Ground Rune Ore Shard # !todo check english name + Type: Etc + Weight: 1 + - Id: 1002836 + AegisName: ABI_Ground_Rune + Name: Ground Rune of Rift # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002837 + AegisName: ABI_Lava_Essence + Name: Rift Volcanic Essence # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002838 + AegisName: ABI_Lava_Rune_Ore + Name: Rift Volcano Rune Shard # !todo check english name + Type: Etc + Weight: 1 + - Id: 1002839 + AegisName: ABI_Lava_Rune + Name: Rift Volcano Rune # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002840 + AegisName: ABI_Fixed_Crack + Name: Fixed Crack # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002841 + AegisName: aegis_1002841 + Name: Dimensional Land Card Shard # !todo check english name + Type: Etc + Weight: 10 + - Id: 1002842 + AegisName: aegis_1002842 + Name: Dimensional Volcano Card Shard # !todo check english name + Type: Etc + Weight: 10 - Id: 1200000 AegisName: IDTest_arrow Name: IDTest arrow diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index a4b6b581c6a..889bde6d155 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -36951,15 +36951,18 @@ Body: MaxLevel: 10 Type: Magic TargetType: Attack + DamageFlags: + Splash: true Range: 9 - Hit: Single - HitCount: 1 + Hit: Multi_Hit + HitCount: 2 Element: Holy + SplashArea: 4 GiveAp: 2 CastTime: 4000 AfterCastActDelay: 500 Duration1: 20000 - Cooldown: 1000 + Cooldown: 750 FixedCastTime: 1500 Requires: SpCost: @@ -37116,7 +37119,7 @@ Body: FixedCastTime: 1500 Requires: SpCost: 150 - ApCost: 20 + ApCost: 15 Unit: Id: Pneumaticus_Procella Range: @@ -43548,7 +43551,7 @@ Body: Type: Weapon TargetType: Attack Range: 2 - Hit: Multi_hit + Hit: Multi_Hit HitCount: -2 GiveAp: 3 Element: Weapon diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 4b83c3e65da..0fdf544a703 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -2707,10 +2707,11 @@ static int32 battle_range_type(const block_list* src, const block_list* target, case SS_SHIMIRU: // 11 cell cast range. case SKE_STAR_LIGHT_KICK: // 7 cell cast range. return BF_SHORT; - case CD_PETITIO: { // Skill range is 2 but damage is melee with books and ranged with mace. - const map_session_data* sd = BL_CAST(BL_PC,src); + case CD_EFFLIGO: // Skill range is 2 but damage is melee with books and ranged with mace. + case CD_PETITIO: { + const map_session_data* sd = BL_CAST(BL_PC, src); - if (sd && (sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE)) + if (sd != nullptr && (sd->status.weapon == W_MACE || sd->status.weapon == W_2HMACE)) return BF_LONG; break; diff --git a/src/map/skills/acolyte/arbitrium.cpp b/src/map/skills/acolyte/arbitrium.cpp index 9502a2052af..0e98c892550 100644 --- a/src/map/skills/acolyte/arbitrium.cpp +++ b/src/map/skills/acolyte/arbitrium.cpp @@ -8,28 +8,21 @@ #include "map/pc.hpp" #include "map/status.hpp" -SkillArbitrium::SkillArbitrium() : SkillImpl(CD_ARBITRIUM) { -} - -void SkillArbitrium::castendDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const { - skill_attack(BF_MAGIC, src, src, target, getSkillId(), skill_lv, tick, flag); +SkillArbitrium::SkillArbitrium() : SkillImplRecursiveDamageSplash(CD_ARBITRIUM) { } void SkillArbitrium::calculateSkillRatio(const Damage* wd, const block_list* src, const block_list* target, uint16 skill_lv, int32& skillratio, int32 mflag) const { const map_session_data* sd = BL_CAST(BL_PC, src); const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 1000 * skill_lv + 10 * sstatus->spl; - skillratio += 10 * pc_checkskill(sd, CD_FIDUS_ANIMUS) * skill_lv; - RE_LVL_DMOD(100); -} + skillratio += -100 + 950 * skill_lv; + skillratio += 10 * sstatus->spl; // TODO : spl ratio has changed ? + skillratio += 35 * pc_checkskill(sd, CD_FIDUS_ANIMUS) * skill_lv; -void SkillArbitrium::applyAdditionalEffects(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const { - // Target is Deep Silenced by chance and is then dealt a 2nd splash hit. - sc_start(src, target, SC_HANDICAPSTATE_DEEPSILENCE, 20 + 5 * skill_lv, skill_lv, skill_get_time(getSkillId(), skill_lv)); - skill_castend_damage_id(src, target, CD_ARBITRIUM_ATK, skill_lv, tick, SD_LEVEL); + RE_LVL_DMOD(100); } +// TODO : CD_ARBITRIUM_ATK is no longer used ? SkillArbitriumAttack::SkillArbitriumAttack() : SkillImplRecursiveDamageSplash(CD_ARBITRIUM_ATK) { } diff --git a/src/map/skills/acolyte/arbitrium.hpp b/src/map/skills/acolyte/arbitrium.hpp index 7c6a0992ee1..3b251236a6c 100644 --- a/src/map/skills/acolyte/arbitrium.hpp +++ b/src/map/skills/acolyte/arbitrium.hpp @@ -5,13 +5,11 @@ #include "../skill_impl.hpp" -class SkillArbitrium : public SkillImpl { +class SkillArbitrium : public SkillImplRecursiveDamageSplash { public: SkillArbitrium(); - void castendDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const override; void calculateSkillRatio(const Damage* wd, const block_list* src, const block_list* target, uint16 skill_lv, int32& base_skillratio, int32 mflag) const override; - void applyAdditionalEffects(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const override; }; class SkillArbitriumAttack : public SkillImplRecursiveDamageSplash { diff --git a/src/map/skills/acolyte/effligo.cpp b/src/map/skills/acolyte/effligo.cpp index 6fa9075c80e..bf73b3f73b5 100644 --- a/src/map/skills/acolyte/effligo.cpp +++ b/src/map/skills/acolyte/effligo.cpp @@ -23,11 +23,14 @@ void SkillEffligo::calculateSkillRatio(const Damage* wd, const block_list* src, const status_data* sstatus = status_get_status_data(*src); const status_data* tstatus = status_get_status_data(*target); - skillratio += -100 + 1650 * skill_lv + 7 * sstatus->pow; + skillratio += -100 + 1800 * skill_lv; + skillratio += 7 * sstatus->pow; skillratio += 8 * pc_checkskill(sd, CD_MACE_BOOK_M); + if (tstatus->race == RC_UNDEAD || tstatus->race == RC_DEMON) { - skillratio += 150 * skill_lv; + skillratio += 200 * skill_lv; skillratio += 7 * pc_checkskill(sd, CD_MACE_BOOK_M); } + RE_LVL_DMOD(100); } diff --git a/src/map/skills/acolyte/petitio.cpp b/src/map/skills/acolyte/petitio.cpp index a31a04ba645..a03c8902dd6 100644 --- a/src/map/skills/acolyte/petitio.cpp +++ b/src/map/skills/acolyte/petitio.cpp @@ -16,7 +16,10 @@ void SkillPetitio::calculateSkillRatio(const Damage* wd, const block_list* src, const map_session_data* sd = BL_CAST(BL_PC, src); const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + (1050 + pc_checkskill(sd, CD_MACE_BOOK_M) * 50) * skill_lv + 5 * sstatus->pow; + skillratio += -100 + 1200 * skill_lv; + skillratio += pc_checkskill(sd, CD_MACE_BOOK_M) * 50 * skill_lv; + skillratio += 5 * sstatus->pow; + RE_LVL_DMOD(100); }