Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 70 additions & 1 deletion db/re/item_db_equip.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178446,6 +178446,26 @@ Body:
Costume_Head_Top: true
ArmorLevel: 1
View: 2717
- Id: 400952
AegisName: aegis_400952
Name: Costume Indian Feather Headband
Type: Armor
Locations:
Costume_Head_Top: true
ArmorLevel: 1
View: 809
- Id: 400953
AegisName: C_Summer_Sunglasses
Name: Costume Summer Sunglasses
Type: Armor
Locations:
Costume_Head_Top: true
Trade:
NoMail: true
NoAuction: true
NoGuildStorage: true
ArmorLevel: 1
View: 2720
- Id: 400956
AegisName: C_Chestnut_Helmet
Name: Costume Chestnut Mask
Expand Down Expand Up @@ -188677,6 +188697,43 @@ Body:
NoGuildStorage: true
NoMail: true
NoAuction: true
- Id: 420545
AegisName: C_Vacation_Pope_Hair
Name: Costume Vacation Pope Hair
Type: Armor
Locations:
Costume_Head_Low: true
Trade:
NoMail: true
NoAuction: true
NoGuildStorage: true
ArmorLevel: 1
View: 2718
- Id: 420546
AegisName: C_Miriam_Hair
Name: Costume Miriam Ponytail
Type: Armor
Locations:
Costume_Head_Low: true
Trade:
NoMail: true
NoAuction: true
NoGuildStorage: true
ArmorLevel: 1
View: 2719
- Id: 420547
AegisName: C_Come_On_Soda
Name: Costume Blueberry Popsicle
Type: Armor
Locations:
Costume_Head_Low: true
Trade:
NoDrop: true
NoSell: true
NoMail: true
NoAuction: true
ArmorLevel: 1
View: 2721
- Id: 420552
AegisName: C_Divine_Sky_Invite
Name: Costume Divine Invitation
Expand Down Expand Up @@ -216849,7 +216906,7 @@ Body:
ArmorLevel: 1
View: 228
- Id: 480462
AegisName: aegis_480462
AegisName: C_Hanwha_Pool_Ring
Name: Costume Hanwha X RO Poring Tube
Type: Armor
Locations:
Expand Down Expand Up @@ -218113,6 +218170,18 @@ Body:
Costume_Garment: true
ArmorLevel: 1
View: 278
- Id: 480619
AegisName: C_Melon_Cream_Soda
Name: Costume Melon Cream Soda
Type: Armor
Locations:
Costume_Garment: true
Trade:
NoMail: true
NoAuction: true
NoGuildStorage: true
ArmorLevel: 1
View: 279
- Id: 480627
AegisName: C_2025RosFesta
Name: Costume ROS 2025 Champion Coat
Expand Down
12 changes: 0 additions & 12 deletions src/map/battle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4628,12 +4628,6 @@ static int32 battle_calc_attack_skill_ratio(struct Damage* wd, block_list *src,b
}

switch(skill_id) {
case HFLI_MOON: //[orn]
skillratio += 10 + 110 * skill_lv;
break;
case HFLI_SBR44: //[orn]
skillratio += 100 * (skill_lv - 1);
break;
case SKE_ALL_IN_THE_SKY:
// TODO: refactor
if (status_get_race(target) == RC_DEMIHUMAN || status_get_race(target) == RC_DEMON)
Expand Down Expand Up @@ -6365,12 +6359,6 @@ struct Damage battle_calc_magic_attack(block_list *src,block_list *target,uint16
if (sd && ad.div_ > 0)
ad.div_ *= -1; //For players, damage is divided by number of hits
break;
#ifdef RENEWAL
case HW_GRAVITATION:
skillratio += -100 + 100 * skill_lv;
RE_LVL_DMOD(100);
break;
#endif
case HN_GROUND_GRAVITATION:
if (mflag & SKILL_ALTDMG_FLAG) {
// Initial damage
Expand Down
12 changes: 12 additions & 0 deletions src/map/map-server.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@
<ClInclude Include="skills/acolyte/redemptio.hpp" />
<ClInclude Include="skills/acolyte/renovatio.hpp" />
<ClInclude Include="skills/acolyte/reparatio.hpp" />
<ClInclude Include="skills/acolyte/resurrection.hpp" />
<ClInclude Include="skills/acolyte/rideinlightening.hpp" />
<ClInclude Include="skills/acolyte/ruwach.hpp" />
<ClInclude Include="skills/acolyte/sanctuary.hpp" />
Expand Down Expand Up @@ -595,12 +596,14 @@
<ClInclude Include="skills/homunculus/homunculus_lightofregene.hpp" />
<ClInclude Include="skills/homunculus/homunculus_magmaflow.hpp" />
<ClInclude Include="skills/homunculus/homunculus_midnightfrenzy.hpp" />
<ClInclude Include="skills/homunculus/homunculus_moonlight.hpp" />
<ClInclude Include="skills/homunculus/homunculus_needleofparalyze.hpp" />
<ClInclude Include="skills/homunculus/homunculus_needlestinger.hpp" />
<ClInclude Include="skills/homunculus/homunculus_overedboost.hpp" />
<ClInclude Include="skills/homunculus/homunculus_painkiller.hpp" />
<ClInclude Include="skills/homunculus/homunculus_poisonmist.hpp" />
<ClInclude Include="skills/homunculus/homunculus_pyroclastic.hpp" />
<ClInclude Include="skills/homunculus/homunculus_sbr44.hpp" />
<ClInclude Include="skills/homunculus/homunculus_silentbreeze.hpp" />
<ClInclude Include="skills/homunculus/homunculus_silverveinrush.hpp" />
<ClInclude Include="skills/homunculus/homunculus_sonicclaw.hpp" />
Expand Down Expand Up @@ -1763,6 +1766,9 @@
<ClCompile Include="skills/acolyte/reparatio.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/acolyte/resurrection.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/acolyte/rideinlightening.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
Expand Down Expand Up @@ -2582,6 +2588,9 @@
<ClCompile Include="skills/homunculus/homunculus_midnightfrenzy.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_moonlight.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_needleofparalyze.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
Expand All @@ -2600,6 +2609,9 @@
<ClCompile Include="skills/homunculus/homunculus_pyroclastic.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_sbr44.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_silentbreeze.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
Expand Down
18 changes: 18 additions & 0 deletions src/map/map-server.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -621,6 +621,9 @@
<ClInclude Include="skills/acolyte/reparatio.hpp">
<Filter>Header Files\Skills\Acolyte</Filter>
</ClInclude>
<ClInclude Include="skills/acolyte/resurrection.hpp">
<Filter>Header Files\Skills\Acolyte</Filter>
</ClInclude>
<ClInclude Include="skills/acolyte/rideinlightening.hpp">
<Filter>Header Files\Skills\Acolyte</Filter>
</ClInclude>
Expand Down Expand Up @@ -1440,6 +1443,9 @@
<ClInclude Include="skills/homunculus/homunculus_midnightfrenzy.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
<ClInclude Include="skills/homunculus/homunculus_moonlight.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
<ClInclude Include="skills/homunculus/homunculus_needleofparalyze.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
Expand All @@ -1458,6 +1464,9 @@
<ClInclude Include="skills/homunculus/homunculus_pyroclastic.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
<ClInclude Include="skills/homunculus/homunculus_sbr44.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
<ClInclude Include="skills/homunculus/homunculus_silentbreeze.hpp">
<Filter>Header Files\Skills\Homunculus</Filter>
</ClInclude>
Expand Down Expand Up @@ -4340,6 +4349,9 @@
<ClCompile Include="skills/acolyte/reparatio.cpp">
<Filter>Source Files\Skills\Acolyte</Filter>
</ClCompile>
<ClCompile Include="skills/acolyte/resurrection.cpp">
<Filter>Source Files\Skills\Acolyte</Filter>
</ClCompile>
<ClCompile Include="skills/acolyte/rideinlightening.cpp">
<Filter>Source Files\Skills\Acolyte</Filter>
</ClCompile>
Expand Down Expand Up @@ -5159,6 +5171,9 @@
<ClCompile Include="skills/homunculus/homunculus_midnightfrenzy.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_moonlight.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_needleofparalyze.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
Expand All @@ -5177,6 +5192,9 @@
<ClCompile Include="skills/homunculus/homunculus_pyroclastic.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_sbr44.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
<ClCompile Include="skills/homunculus/homunculus_silentbreeze.cpp">
<Filter>Source Files\Skills\Homunculus</Filter>
</ClCompile>
Expand Down
52 changes: 0 additions & 52 deletions src/map/skill.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4242,11 +4242,6 @@ int32 skill_castend_damage_id (block_list* src, block_list *bl, uint16 skill_id,
FreeBlockLock freeLock;

switch(skill_id) {
case ALL_RESURRECTION:
if (!battle_check_undead(tstatus->race, tstatus->def_ele))
break;
skill_attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag);
break;

case 0:/* no skill - basic/normal attack */
if(sd) {
Expand Down Expand Up @@ -4489,53 +4484,6 @@ int32 skill_castend_nodamage_id (block_list *src, block_list *bl, uint16 skill_i
FreeBlockLock freeLock;
switch(skill_id)
{
case ALL_RESURRECTION:
if(sd && (map_flag_gvg2(bl->m) || map_getmapflag(bl->m, MF_BATTLEGROUND)))
{ //No reviving in WoE grounds!
clif_skill_fail( *sd, skill_id );
break;
}
if (!status_isdead(*bl))
break;
{
int32 per = 0, sper = 0;
if (tsc && tsc->getSCE(SC_HELLPOWER)) {
clif_skill_nodamage(src, *bl, ALL_RESURRECTION, skill_lv);
break;
}

if (map_getmapflag(bl->m, MF_PVP) && dstsd && dstsd->pvp_point < 0)
break;

switch(skill_lv){
case 1: per=10; break;
case 2: per=30; break;
case 3: per=50; break;
case 4: per=80; break;
}
if(dstsd && dstsd->special_state.restart_full_recover)
per = sper = 100;
if (status_revive(bl, per, sper))
{
clif_skill_nodamage(src,*bl,ALL_RESURRECTION,skill_lv); //Both Redemptio and Res show this skill-animation.
if(sd && dstsd && battle_config.resurrection_exp > 0)
{
t_exp exp = 0,jexp = 0;
int32 lv = dstsd->status.base_level - sd->status.base_level, jlv = dstsd->status.job_level - sd->status.job_level;
if(lv > 0 && pc_nextbaseexp(dstsd)) {
exp = (t_exp)(dstsd->status.base_exp * lv * battle_config.resurrection_exp / 1000000.);
if (exp < 1) exp = 1;
}
if(jlv > 0 && pc_nextjobexp(dstsd)) {
jexp = (t_exp)(dstsd->status.job_exp * lv * battle_config.resurrection_exp / 1000000.);
if (jexp < 1) jexp = 1;
}
if(exp > 0 || jexp > 0)
pc_gainexp (sd, bl, exp, jexp, 0);
}
}
}
break;
// New guild skills [Celest]
case GD_BATTLEORDER:
case GD_REGENERATION:
Expand Down
74 changes: 74 additions & 0 deletions src/map/skills/acolyte/resurrection.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder

#include "resurrection.hpp"

#include "map/battle.hpp"
#include "map/clif.hpp"
#include "map/map.hpp"
#include "map/pc.hpp"
#include "map/status.hpp"

SkillResurrection::SkillResurrection() : SkillImpl(ALL_RESURRECTION) {
}

void SkillResurrection::castendDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const {
status_data* tstatus = status_get_status_data(*target);

if (!battle_check_undead(tstatus->race, tstatus->def_ele))
return;
skill_attack(BF_MAGIC,src,src,target,getSkillId(),skill_lv,tick,flag);
}

void SkillResurrection::castendNoDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const {
status_change *tsc = status_get_sc(target);
map_session_data* sd = BL_CAST(BL_PC, src);
map_session_data* dstsd = BL_CAST(BL_PC, target);

if(map_flag_gvg2(target->m) || map_getmapflag(target->m, MF_BATTLEGROUND))
{ //No reviving in WoE grounds!
if( sd != nullptr ){
clif_skill_fail( *sd, getSkillId() );
}
return;
}
if (!status_isdead(*target))
return;

int32 per = 0, sper = 0;
if (tsc && tsc->getSCE(SC_HELLPOWER)) {
clif_skill_nodamage(src, *target, ALL_RESURRECTION, skill_lv);
return;
}

if (map_getmapflag(target->m, MF_PVP) && dstsd && dstsd->pvp_point < 0)
return;

switch(skill_lv){
case 1: per=10; break;
case 2: per=30; break;
case 3: per=50; break;
case 4: per=80; break;
}
if(dstsd && dstsd->special_state.restart_full_recover)
per = sper = 100;
if (status_revive(target, per, sper))
{
clif_skill_nodamage(src,*target,ALL_RESURRECTION,skill_lv); //Both Redemptio and Res show this skill-animation.
if(sd && dstsd && battle_config.resurrection_exp > 0)
{
t_exp exp = 0,jexp = 0;
int32 lv = dstsd->status.base_level - sd->status.base_level, jlv = dstsd->status.job_level - sd->status.job_level;
if(lv > 0 && pc_nextbaseexp(dstsd)) {
exp = (t_exp)(dstsd->status.base_exp * lv * battle_config.resurrection_exp / 1000000.);
if (exp < 1) exp = 1;
}
if(jlv > 0 && pc_nextjobexp(dstsd)) {
jexp = (t_exp)(dstsd->status.job_exp * lv * battle_config.resurrection_exp / 1000000.);
if (jexp < 1) jexp = 1;
}
if(exp > 0 || jexp > 0)
pc_gainexp (sd, target, exp, jexp, 0);
}
}
}
14 changes: 14 additions & 0 deletions src/map/skills/acolyte/resurrection.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder

#pragma once

#include "../skill_impl.hpp"

class SkillResurrection : public SkillImpl {
public:
SkillResurrection();

void castendDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const override;
void castendNoDamageId(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32& flag) const override;
};
Loading
Loading