Hercules is a collaborative software development project revolving around the creation of a robust massively multiplayer online role playing game (MMORPG) server package. Written in C, the program is very versatile and provides NPCs, warps and modifications. The project is jointly managed by a group of volunteers located around the world as well as a tremendous community providing QA and support. Hercules is a continuation of the original Athena project.
KN_BOWLINGBASH
(Bowling Bash)
3x3
-> 5x5
centered on targetKN_BRANDISHSPEAR
(Brandish Spear)
0.5
s delay after skill1
s cooldown.KN_TWOHANDQUICKEN
(Two-Hand Quicken)
10%
of ASPD (as equipment ASPD)+(2 * SkillLevel)
+(2 + SkillLevel)
KN_CHARGEATK
(Charge Attack)0.5
sBS_ADRENALINE
(Adrenaline Rush)
+10%
to caster and party members (as Equip ASPD)+(5 + 3 * SkillLevel)
effect to caster and party membersBS_OVERTHRUST
(Over Thrust)
5%
/ 5%
/ 10%
/ 10%
/ 15%
AS_SONICBLOW
(Sonic Blow)
50%
more damage if target has less than 50%
HP2
s -> 0.5
s1
s cooldown addedAS_SPLASHER
(Venom Splasher)
WZ_VERMILION
(Lord of Vermilion)
(100 ~ 330)% x 4 waves
(10 hits each)[400 + (Skill Level x 100)]% x 1 wave
(20 hits)[2.48 - (Skill Level × 0.08)]
s1.5
s at all skill levels[9.92 - (Skill Level × 0.32)]
s[6.5 - (Skill Level × 0.2)]
s5
s at all skill levels1
s at all skill levels5
s cooldown addedWZ_METEOR
(Meteor Storm)
2.4
s at all skill levels1.5
s at all skill levels9.6
s at all skill levels6.3
s at all skill levels2
~ 7
s1
s at all skill levels[2 + (Skill Level x 0.5)]
sWZ_STORMGUST
(Storm Gust)
[0.8 + (Skill Level * 0.16)]
s1.5
s at all skill levels[3.2 + (Skill Level * 0.64)]
s[4.3 + (Skill Level * 0.2)]
s5
s at all skill levels1
s at all skill levels6
s cooldown added(100 + 40 * Skill Level)%
MATK(70 + 50 * Skill Level)%
MATKWZ_JUPITEL
(Jupitel Thunder)
[0.32 + (Skill Level × 0.08)]
s0.5
s at all skill levels[1.28 + (Skill Level × 0.32)]
s[1.8 + (Skill Level × 0.2)]
sWZ_EARTHSPIKE
(Earth Spike)
100%
per hit200%
per hit(Skill Level x 0.112)
s0.2 + (Skill Level x 0.2)
s(Skill Level x 0.448)
s0.7 + (Skill Level x 0.5)
s0.8 + (Skill Level x 0.2)
s0.9 + (Skill Level x 0.1)
sWZ_HEAVENDRIVE
(Heaven's Drive)
(Skill Level x 0.16)
s0.8
s at all skill levels(Skill Level x 0.64)
s0.9 + (Skill Level x 0.2)
s1
s at all skill levels0.5
s at all skill levelsPR_MAGNUS
(Magnus Exorcismus)
3
s -> 1
s12
s -> 4
s4
s -> 1
s6
s30%
damage per hits to monsters with:
PR_MACEMASTERY
(Mace Mastery)
+(SkillLevel)
when equipped with MacesPR_SUFFRAGIUM
(Suffragium)
18
cells)15%
/ 30%
/ 45%
-> 10%
/ 15%
/ 20%
cast time reduction30
s / 20
s / 10
s or when you cast a skill60
s (no longer ends when you cast a skill)8
SP -> 45
/ 57
/ 69
SP0.5
s fixed casting time added1
s variable casting time added2
s -> 1
s30
s cooldown addedPR_IMPOSITIO
(Impositio Manus)
18
cells)+(5 x SkillLevel)
+(5 x SkillLevel)
10 + (Skill Level x 3)
56 + (Skill Level x 3)
60
s -> 120
s0.5
s1
s3
s -> 1
s30
sHT_LANDMINE
(Land Mine), HT_CLAYMORE
(Claymore Trap) and HT_BLASTMINE
(Blast Mine)
1
s -> 0.3
s0.5
sHT_BLITZBEAT
(Blitz Beat)
skill->get_index_sub()
, allowing to prevent error reports on the console when a skill is not found, for testing whether a skill exists in places where its absence is not an error. (#3292)AtkPerc
, DefPerc
, MatkPerc
, MdefPerc
calc flags to sc_config.conf
to trigger recalculation of the respective statsgetitemgroupitems()
to obtain a list (without duplicates) of all items contained in a given item group (#3275)ZC_SOULENERGY
packet for displaying soul balls, split from ZC_SPIRITS
for new clients (#3291)ZC_SKILL_SELECT_REQUEST
, CZ_SKILL_SELECT_RESPONSE
and ZC_SPIRITS2
to the structure format. (#3292, #3291)CG_TAROTCARD
) Strength (atk), The Magician (matk), The Devil (atk, matk), The Sun (atk, matk, def) bonus calculation to use the newly implemented atk/def percent system. This includes the new SCs SC_TAROTCARD_ATK_PERC
, SC_TAROTCARD_MATK_PERC
, SC_TAROTCARD_DEF_PERC
. (#3290)PA_GOSPEL
) bonus calculations to use the newly implemented atk/def percent system. This includes the new SC SC_GOSPEL_ATK_PERC
. (#3290)SM_PROVOKE
, MER_PROVOKE
) SC (SC_PROVOKE
) to use the newly implemented atk/def percent system. (#3290)LK_CONCENTRATION
) SC (SC_CONCENTRATION
) to use the newly implemented atk/def percent system. (#3290)HAMI_BLOODLUST
) SC (SC_HAMI_BLOODLUST
) to use the newly implemented atk/def percent system. (#3290)LK_JOINTBEAT
) SC (SC_JOINTBEAT
) to use the newly implemented atk/def percent system. (#3290)SL_SKE
) SC (SC_SKE
) to use the newly implemented atk/def percent system. (#3290)HFLI_FLEET
) SC (SC_HLIF_FLEET
) to use the newly implemented atk/def percent system. (#3290)SC_CURSE
) to use the newly implemented atk/def percent system. (#3290)SC_INCATKRATE
to use the newly implemented atk/def percent system. (#3290)RG_STRIPWEAPON
) SC (SC_NOEQUIPWEAPON
) to use the newly implemented atk/def percent system. (#3290)PF_MINDBREAKER
) SC (SC_MINDBREAKER
) to use the newly implemented atk/def percent system. (#3290)RG_STRIPSHIELD
) SC (SC_NOEQUIPSHIELD
) to use the newly implemented atk/def percent system. (#3290)GS_FLING
) SC (SC_FLING
) to use the newly implemented atk/def percent system. (#3290)AL_ANGELUS
) SC (SC_ANGELUS
) to use the newly implemented atk/def percent system. (#3290)SC_POISON
) and Deadly Poison (SC_DPOISON
) to use the newly implemented atk/def percent system. (#3290)MO_EXTREMITYFIST
) to ignore atk percent bonuses. (#3290)enum scb_flag
where appropriate. (#3290)enum scb_flag
(via typedef to e_scb_flag
and int64_t
constants) for pre-C23 MSVC versions that don't support enum values larger than 32 bit. This is only conditionally enabled on such compilers, and will be dropped when we'll be able to switch the C standard to C23. (#3290)clif->spiritballs()
and clif->soulball()
, with incompatible arguments to the old clif->spiritball()
calls. Second argument is now the amount of spheres, instead of their type. (#3291)flag
field of packet ZC_SKILL_SELECT_REQUEST
, expected to be 1 (meaning auto shadow spell) rather than the amount of skills in the list. (#3292)rebalance
branch.All these changes only affect Renewal. Pre-renewal is unchanged.
SM_MAGNUM
(Magnum Break)
MC_LOUD
(Crazy Uproar)
MG_FIREBOLT
(Fire Bolt)
(0.4 + (Skill Level × 0.4)) x 0.2
seconds.0.2 + (Skill Level × 0.1)
seconds(0.4 + (Skill Level × 0.4)) x 0.8
seconds.0.2 + (Skill Level × 0.3)
seconds0.8 + (Skill Level × 0.2)
seconds1.4
seconds at all skill levels.MG_COLDBOLT
(Cold Bolt)
(0.4 + (Skill Level × 0.4)) x 0.2
seconds.0.2 + (Skill Level × 0.1)
seconds(0.4 + (Skill Level × 0.4)) x 0.8
seconds.0.2 + (Skill Level × 0.3)
seconds0.8 + (Skill Level × 0.2)
seconds1.4
seconds at all skill levels.MG_LIGHTNINGBOLT
(Lightning Bolt)
(0.4 + (Skill Level × 0.4)) x 0.2
seconds.0.2 + (Skill Level × 0.1)
seconds(0.4 + (Skill Level × 0.4)) x 0.8
seconds.0.2 + (Skill Level × 0.3)
seconds0.8 + (Skill Level × 0.2)
seconds1.4
seconds at all skill levels.MG_THUNDERSTORM
(Thunder Storm)
(Skill Level × 0.8) x 0.2
seconds.1.5
seconds at all skill levels.(Skill Level × 0.8) x 0.8
seconds.2.5 + (Skill Level × 0.2)
seconds0.3
seconds at skill level 1-5, 0.2
seconds at skill level 6-10.0.2
seconds at all skill levels.1.2
seconds at skill level 1-5, 0.8
seconds at skill level 6-10.0.8
seconds at all skill levels.1.5
seconds at skill level 1-5, 1.0
seconds at skill level 6-10.0.7
seconds at all skill levels.MG_SOULSTRIKE
(Soul Strike)
1.2
- 2.7
seconds at skill level 1-10.1.4
seconds at all skill levels.MG_FROSTDIVER
(Frost Diver)
1.5
s -> 0.5
sAB_CLEMENTIA
and AB_CANTO
to the sc_start
logic.AL_BLESSING
(Blessing)
AL_INCAGI
(Increase Agility)
AL_HOLYLIGHT
(Holy Light)
0.4
s -> 0.2
s1.6
s -> 0.8
sThis month @guilherme-gm joined us as a core developer. His long and respectable contribution history says he doesn't need much of an introduction.
He's currently working on a series of pull requests introducing the (long overdue) rebalance changes that I'll mention below, and during the past months he helped with templates and suggestions for the new proposed documentation website (also mentioned below).Welcome @guilherme-gm and thank you!
rebalance
branch to collect all the rebalance-related PRs as there will be inconsistencies in the game until they are all merged.
openlapineupgradeui()
and openlapineddukddakboxui()
to allow calls without an item id when used in item scripts. (#3272)aMalloc()
, aCalloc()
, aStrndup()
, aRealloc()
, aReallocz()
macros to make it harder to accidentally swap their order. (#3280)expandinventory()
not allowing to return to the initial minimum inventory size. (#3270)clif->pLoadEndAck()
before the client's loadendack is received. (#3277)aCalloc()
calls, causing warnings in gcc-14. (#3280)ENABLE_RODEX_ACCOUNT_MAIL_RE_PATCH
macro in core.h
. (#3263)combo_cache_skill
to true
in conf/map/battle/skill.conf
. (#3260, #3266)messages.conf
messages replacing a large amount of magic numbers. The maximum number of messages is now defined in common/msgtable.h
as MSGTBL_MAX
. See the related pull request description for a conversion tool that may be used to migrate custom constants. (#3265)class*.h
files. See the pull request description for migration details in case of custom jobs. (#3265, related to #165)snap_dodge
setting not working with MO_EXTREMITYFIST
. (#3241, issue #638)MO_TRIPLEATTACK
animation not workingn when there's no possible chainable combo skill. (#3259)afterCastActDelay
from PA_SACRIFICE
in pre-renewal. (#3259)MO_TRIPLEATTACK
overwriting attackabletime
. (#3259)SC_COMBOATTACK
based skills and not sending the proper time to the client. (#3259)keep_dir_free_cell
(conf/map/battle/misc.conf
) to true.attachrid()
. This solves a number of issues with many script commands assuming a client to be attached. (#3243, issue #568)MO_TRIPLEATTACK
not applying the same motion delay as the client in the case the next combo is not possible, causing visual glitches. (#3240)MO_TRIPLEATTACK
delay formula increasing delay with dex instead of decreasing it. (#3240)ASC_BREAKER
. (#3245, issue #1104)SA_DISPEL
not working in duels. (#3246, issue #640)CELL_NOSTACK
making mob ai not being able to reach target under certain conditions. (#3244, issue #574)WALKDELAY_SYNC
definition in src/config/core.h
to enable it. (#3232)getitemlink()
, including various core functionalities this relies on. (#3236, #3238)
base62
encoding used by the client.{re,pre-re}/autospell_db.conf
file, see the documentation in the file header.skill.c
) and client/display logic (in clif.c
) has been improved.skill->autospell()
has been renamed to skill->autospell_spell_selected()
to make its purpose clearer.AM_ACIDTERROR
not ignoring defense on units other than those defined in battle_config.vit_penalty_target
(i.e. players). (#3234)clang-13
build in the GitHub CI, failing due to a removed package in debian unstable. (#3238)mysql56
image. (#3238)Note: with this release the versioning scheme has slightly changed: the release day is no longer included in the release tag and is set to
00
in theHERCULES_VERSION
constant. Hotfix releases will take the formv2023.08.001
~v2023.08.999
(and will setHERCULES_VERSION
to202308001
~202308999
). Releases will still happen around the second wednesday of each month when possible.
gettime()
(defaults to localtime for backward compatibility). (#3224)getcalendartime()
(defaults to localtime for backward compatibility). (#3224)GETTIMETICK_*
constants to be used with the gettimetick()
script commands. It's recommended to update custom scripts to use the constants instead of numbers, as there is no guarantee that the values will not change in the future. (#3224)venom_dust_exp
in conf/battle/battle.conf
. (#3226, issue #3188)common/packets_struct.h
include to HPMapi.c
and HPMlogin.c
. (#3228)GETTIME_*
constants to source. (#3224)gettimetick(GETTIMETICK_HOUROFDAY_S)
(formerly known as type 1) when the server is running with a local timezone on the day daylight savings begin or end. (#3224)gettimetick()
to reject unknown types instead of defaulting to type 0. (#3224)sc_start()
rate description in the command documentation. (#3219)TF_DOUBLE
not granting the Hit bonus when triggered. (#3225)getcalendartime()
returning the wrong timestamp when fed with a localtime input while daylight savings are in effect. (#3224)npc.c
with some compilers. (#3224)DEBUG_ONLINEDB_LOG
definition in aclif.c
to enable it. (#3207)skill_db2.conf
to extend/override the skill DB. Just like the item and mob databases, it supports the Inherit
field to allow overriding part of a skill's entry without having to copy the rest. (#3216)remove_disconnected_delay
from 5000 to 50000. (#3207)SkillInfo
flag namesSkillType
flag namesDamageType
flags namesRequirements/WeaponTypes
flags namesRequirements/AmmoTypes
flags namesRequirements/State
valuesUnit/Flag
flag namesUnit/Target
values
SameGuild
value was previously incorrectly listed as Sameguild
in the examples and documentation. The correct version is SameGuild
.target
argument to skill->check_condition_castend()
to allow additional checks that require information about the skill's target. (part of #3215)MO_KITRANSLATION
. (#3215)
MO_ABSORBSPIRITS
. (#3215)
WM_POEMOFNETHERWORLD
to match the behavior described in the 2012.08.22 official patch notes: (#3215)