Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
This commit ensures that `sd->job` and related variables only contain
MapIDs (i.e. the serverside optimized values, where High Novice is
MAPID_NOVICE | JOBL_UPPER) and are never checked against the
client-based Job Class values.
As a rule of thumb, from now on, when a variable is named `job` or
`jobid`, it is intended to contain a MapID and not a Job Class ID. The
type of such variable shall be an unsigned `uint16` or `uint32`.
To ensure that related third party code is also verified when this
commit is merged, the variable `struct map_session_data::class_ (i.e.
`sd->class_`) is renamed to `job`.
Some issues in related lines are also fixed, including:
- The atcommand `@mount` would not check properly that the requesting
character is a 2nd class Swordsman type.
- `pc->addfame()` would silently accept invalid MapIDs, sending unknown
values to the client (more on this in a subsequent commit).
- `pc->famerank()` would not use the passed job as a bitmask, causing
the caller to have to mask it beforehand (more on this in a
subsequent commit).
- The Soul Linker check in TK_JUMPKICK wasn't future-proof (no harm
caused currently).
- Gunslingers would be able to be targeted by Spiritual Bestowment
(`MO_KITRANSLATION`) and Spiritual Sphere Absorption
(`MO_ABSORBSPIRITS`) due to a faulty check introduced when the
Rebellion class was implemented (causing unintended interaction with
Coins).
Signed-off-by: Haru <haru@dotalux.com>
|
|
This commit ensures that `sd->status.class` and related variables only
contain Job Classes (i.e. the client-compatible values, where High
Novice 4001) and are never checked against the bitmask-based MapID
values.
As a rule of thumb, from now on, when a variable is named `class`, it
is intended to contain a Job Class ID and not a MapID. The type of such
variable shall be a signed `int16` or `int`.
To ensure that related third party code is also verified when this
commit is merged, the variable `struct mmo_charstatus::class_ (i.e.
`sd->status.class_`) is renamed to `class`.
Some issues in related lines are also fixed, including:
- A wrong check in the char server would prevent the correct detection
of babies in code related to the family exp sharing.
- Baby Arch Bishops would not be affected by Eucharistica.
- A wrong check would cause the `questinfo()` script command not to
display its information for most classes (except 1-1 classes).
- Map IDs and Job Classes were mixed up in `itemdb_jobid2mapid()` and
`itemdb_jobmask2mapid()` for 1-1 classes (causing currently no harm,
since they just happen to coincide).
- The Baby Sura class would not cause parties to be marked as
containing a monk type character (for SLS Team Up purposes).
- Baby Geneticists would bypass the cart check when trying to equip
ammunitions.
- Baby Mechanics would bypass the Mado Gear check when trying to equip
ammunitions.
- Transcendent Shadow Chasers would lose the Stalkers' ability to clone
transcendent skills.
Signed-off-by: Haru <haru@dotalux.com>
|
|
Default max parameter for summoner is 120.
|
|
Protects the target for 30 seconds.
Tuna's Defense Power: (10+(20*(SkillLv-1)))% of Caster's MaxHP
|
|
Atk +(200+100*SkillLv)%.
When 1 Carrot is consumed, Add's a chance to stun enemy.
Lv1-2: 3x3 AoE
Lv3-4: 5x5 AoE
Lv5: 7x7 AoE
Added Item Constants in itemdb.h
|
|
For (50+10*SkillLv) Seconds, Atk +(15+5*SkillLv). Increases Movement
Speed.
If Target is Doram Race, Increases Range Physical attack by 10%.
|
|
ATK + (200+100*SkillLv)%
Every 30 Base Levels, Adds an Additional Chance to reactivate the skill.
When the Enemy has Less than 50% HP Left, Damage is doubled.
|
|
Heal,Cure,Clearance cancels the effect.
Atk + 100*SkillLv%.
Reduces Fixed Amount of MaxHP for 9 seconds.
For Every 30 Base Levels, Adds an Additional chance that skill will be
activated again.
|
|
Duration: (5+(2*SkillLv)) seconds.
Cannot be used on Boss Monsters. Effect is cancelled when Heaven's Drive
or Trample is used.
Enemies trapped on roots receive poison property damage.
|
|
Increases Flee, Hit and CRI by 20.
If >= 20 Skill points invested in animal-based skills, Ranged Physical
Attack + 20%.
|
|
Catnip Meteor:
Increases Matk by 200+100*SkillLevel%.
When 1 Catnip is consumed, Adds a Chance to curse target[Not Implemented].
|
|
Silvervine Steam Spear:
10% Bleeding Chance, 700% Matk at all levels.
Lv 1: Earth Magic
Lv 2: Fire Magic
Lv 3: Water Magic
Lv 4: Wind Magic
Lv 5: Ghost Magic
Base Level 30: Chance to activate skill again.
Every 30 Base Level: Increases the chance to activate skill.
|
|
Reduces Incoming Damange by 90% for 6 seconds.
When Knock Back, the effect disappears.
|
|
Max Level: 3
Attack Increases by 50+(50+Level)%
Base Level >= 30: Activates a Chance to cast skill again.
Every 30 Base Level: Increases the chance to cast skill again.
|
|
Lv.1: Atk+ 200%
BaseLevel 30: Adds a Chance to Reactive the skill.
Every 30 Base Levels: Increases the chance to reactive the skill.
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Some possible buffer overflows.
Add attribute for mark fallthrough cases.
Skipped libconfig warnings.
|
|
Plugin settings should be relative to the the libconfig file root. For
example, a configuration setting of type HPCT_CHAR will be relative to
the root of conf/char/char-server.conf. In order to add a configuration
entry inside the char_configuration block, the full configuration path
(slash-delimited) should be passed to addCharConf(), as in the
following example:
`addCharConf("char_configuration/my_setting", my_parser_function);`
Signed-off-by: Haru <haru@dotalux.com>
|
|
Ported to modern Hercules and cleaned up from Panikon's commits: 44fea0b3cdba6901599265220228ba4359b1f96d, 9cba05bc0811e638bbaaa6cff887d0b2c9872560
Signed-off-by: Haru <haru@dotalux.com>
|
|
Based on @Lemongrass3110's commit
https://github.com/rathena/rathena/commit/9157318ee9939728b8d332a5668c13d4ad0a6f8b:
Added a configuration to enable the atcommands baselevel and joblevel to
trigger their respective npc events.
This will help you guys with testing your custom scripts that are
listening to OnPCBaseLvUpEvent or OnPCJobLvUpEvent.
For safety reasons we only trigger the events on level increase.
|
|
Fixed various issues reported by coverity
|
|
Fixes #1240
Closes #1353 as merged
|
|
Fixes several -Wsign-compare issues
Signed-off-by: Haru <haru@dotalux.com>
|
|
|
|
Also improve a bit cast end functions call.
|
|
|
|
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
more meaningful variable names in battle_calc_damage()
|
|
- WBUFP now returns a pointer to void, which automatically casts to any
non-const or const pointer.
Signed-off-by: Haru <haru@dotalux.com>
|
|
|
|
to the status of the source.
Blame goes to 6f264513.
|
|
|
|
source of damage.
This cleans up the various badly-named duplicates that have accumulated in local scopes over time.
The unusual name, s_sd (with underscore), was chosen to prevent interaction with any existing custom code.
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
- Replaced safe casts (bl type already checked)
Signed-off-by: Haru <haru@dotalux.com>
|
|
- Replaced casts in foreach callbacks.
- Added assertions and nullpo checks where applicable.
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
Signed-off-by: Haru <haru@dotalux.com>
|
|
- client can't handle value over 21474836
- SQL also can't save value over 16777215 due to mediumint unsigned
Closes #965 as merged
Signed-off-by: Haru <haru@dotalux.com>
|
|
Closes #974 as merged
|
|
Set the skillratio to 20*skill_lv as mentioned in skill describtions.
|
|
- MOBID_ constant names now follow the Mob DB spritenames.
- The following names were changed:
* MOBID_EMPERIUM => MOBID_EMPELIUM
* MOBID_TREAS01 => MOBID_TREASURE_BOX1
* MOBID_TREAS40 => MOBID_TREASURE_BOX40
* MOBID_BARRICADE1 => MOBID_BARRICADE
* MOBID_BARRICADE2 => MOBID_BARRICADE_
* MOBID_GUARIDAN_STONE1 => MOBID_S_EMPEL_1
* MOBID_GUARIDAN_STONE2 => MOBID_S_EMPEL_2
* MOBID_FOOD_STOR => MOBID_OBJ_A
* MOBID_BLUE_CRYST => MOBID_OBJ_A2
* MOBID_PINK_CRYST => MOBID_OBJ_B2
* MOBID_TREAS41 => MOBID_TREASURE_BOX41
* MOBID_TREAS49 => MOBID_TREASURE_BOX49
- Added several missing items
Signed-off-by: Haru <haru@dotalux.com>
|