summaryrefslogtreecommitdiff
path: root/src/map/skill.c
AgeCommit message (Collapse)AuthorFilesLines
2017-11-26Fix handling of the special case of SplashRange < 0 meaning AREA_SIZEHaru1-3/+6
This restores the behavior that was broken in 2b4bfa5d0. Fixes #1911 Signed-off-by: Haru <haru@dotalux.com>
2017-11-24Allow using the skill DB accessors on non-skill attacks (skill_id = 0)Haru1-53/+182
This suppresses an assertion in the skill DB accessors when called with `skill_id = 0` (such as during normal attacks). In such case, they'll now return an appropriate zero value, as it happened before 2b4bfa5d0. Fixes #1909 Signed-off-by: Haru <haru@dotalux.com>
2017-11-18Merge pull request #1903 from Asheraf/skill_scaleHaru1-0/+6
Implement skill scale packet for client versions >= 20151223.
2017-11-16Implement skill scale packet for client versions >= 20151223.Asheraf1-0/+6
2017-11-05Fix/clarify various incorrect modulo operationsHaru1-23/+24
Most relevantly, `skill_lv%11 - 1` is not a valid skill item requirement index, since it can return -1 depending on the skill_lv. It was replaced with `(skill_lv - 1) % MAX_SKILL_ITEM_REQUIRE`, which always returns a value in the 0 ~ MAX_SKILL_ITEM_REQUIRE range. Signed-off-by: Haru <haru@dotalux.com>
2017-11-05Reduce confusion between skill IDs and skill DB indexes (part 2)Haru1-4/+4
Remove MAX_SKILL in favor of MAX_SKILL_DB, when referring to the maximum skill DB index. This is opposed to MAX_SKILL_ID, the maximum skill ID. Signed-off-by: Haru <haru@dotalux.com>
2017-11-05Use the skill DB accessors where possible/appropriateHaru1-46/+50
This includes some renamed local variables, in order to minimize the cases of unsafe variable reuse. Signed-off-by: Haru <haru@dotalux.com>
2017-11-05Reduce confusion between skill IDs and skill DB indexes (part 1)Haru1-68/+444
Rewrite skill DB accessors to clarify the difference between IDs and indexes, and to report a backtrace to the console when an invalid ID is passed. The type of the skill_id and skill_lv arguments has been changed to int. Signed-off-by: Haru <haru@dotalux.com>
2017-11-05Fix a subtle error in case skill->unit_group_newid overflowsHaru1-7/+8
The incorrect handling of the overflowed values would cause certain skill unit entries to get stuck and never get deleted correctly. A possible symptom of the issue are monsters that become immune to certain AoE spells having the UF_NOOVERLAP flag (Storm Gust, Lord of Vermillion, etc). Signed-off-by: Haru <haru@dotalux.com>
2017-10-21Merge pull request #1854 from Asheraf/skillHaru1-1/+2
Change skill_init_unit_layout to report skill id instead of index
2017-10-21Add packets for 64 bit exp.Andrei Karas1-2/+2
Also update some functions for support 64 bit exp calculation.
2017-10-21Change skill_init_unit_layout to report skill id instead of indexAsheraf1-1/+2
2017-09-21Convert some functions from int32 types to int64.Andrei Karas1-2/+2
This mainly need for base and job exp, because now they using int64 type.
2017-09-19remove trailing whitespaces from sourcegumi1-16/+16
2017-09-17Differentiate variables that hold a ViewSprite and a Subtype (part 2)Haru1-1/+1
`sd->status.shield` is renamed to `sd->status.look.shield` and only holds ViewSprite IDs. Its previous other meaning is now transferred to `sd->has_shield`, of boolean type (to detect the presence of a shield) Signed-off-by: Haru <haru@dotalux.com>
2017-09-17Differentiate variables that hold a ViewSprite and a weapon SubtypeHaru1-5/+5
`sd->status.weapon` is renamed to `sd->status.look.weapon` and only holds ViewSprite IDs. Its previous other meaning is now transferred to `sd->weapontype` (holding the currently equipped weapon type, considering both hands at once) Signed-off-by: Haru <haru@dotalux.com>
2017-09-17Split 'View' in two different fields in the item databaseHaru1-1/+1
- The field was used both for sprite view IDs and for weapon or ammunition subtypes. Now the fields 'ViewSprite' and 'Subtype' are used respectively. Signed-off-by: Haru <haru@dotalux.com>
2017-06-09Merge pull request #1139 from SamuelHercules/WarlockCLFixsmokexyz1-1/+1
Fixed Chain Lighting animation was sent in wrong flow.
2017-06-06Fixed assert report when arrow shower(skill) was used on traps.Dastgir1-3/+3
Fixes #1676
2017-05-21Refine rate correction from kRO.smokexyz1-1/+1
Normal Ores: http://ro.gnjoy.com/news/probability/View.asp?category=4&seq=1941553&curpage=1 Enriched Ores: http://ro.gnjoy.com/news/probability/View.asp?category=4&seq=1941565&curpage=1 Event Normal Ores: http://ro.gnjoy.com/news/probability/View.asp?category=4&seq=1941558&curpage=1 Event Enriched Ores: http://ro.gnjoy.com/news/probability/View.asp?category=4&seq=1941567&curpage=1
2017-04-10Monster Vulture's Eye and Snake's Eye removed.Smokexyz1-2/+2
Original PR #1148 by @SamuelHercules committed on 8 Feb 2016 * Monsters no longer have Vulture's Eye level 10 and Snake's Eye level 10 learned by default * When you tank Cecil Damon from 10-14 cells away, she will no longer use her target skills * Added a configuration with which you can set the level of Vulture's Eye and Snake's Eye that monsters have learned Merged rAthena @ cccd1496f716fe02a3db20780b6e52b3c33391b4 Credit: Playtester
2017-03-16Correct Castling skill to use cooldownAsheraf1-2/+8
2017-03-16Official status change base durations for Stun (#1234) (#1632)Flipp1-3/+3
- NPC_LICK now has a base chance of 20%*level and a base duration of 5s - Excruciating Palm now has a base duration 5s - Shield Press now has a base duration of 5s+0.5s*level - Earth Shaker now has a base duration of 2s (level 2-3) and 3s (level 4-5) - Sightless Mind now has a base duration of 30s in pre-re and 20s in renewal - Credit rathena/rathena@80e026433
2016-12-03Change the argument to pc->famerank() to a rank type (instead of job mapid)Haru1-2/+3
For consistency with `pc->addfame()`, the argument to pc->famerank() is now an enum fame_list_type. The function was renamed to `pc->fame_rank()` to avoid silently compiling old non-compliant code. Signed-off-by: Haru <haru@dotalux.com>
2016-12-03Ensure that pc->addfame() increments the correct fame pointsHaru1-14/+15
The function now takes the rank type as argument, rather than guessing it from the character's class. If the wrong fame point type for the current character is requested, the request is ignored. This fixes some (unofficial) edge cases where a Taekwon or an Alchemist refined a signed item, they could obtain rank points. Signed-off-by: Haru <haru@dotalux.com>
2016-12-03Clarify some Job Class vs MapID confusion (2/2)Haru1-32/+30
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>
2016-12-03Clarify some Job Class vs MapID confusion (1/2)Haru1-12/+13
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>
2016-11-20Synchronized the AegisNames to the in-source ITEMID_ constantsHaru1-15/+15
Some missing items were copied to the pre-renewal database. In general, when an item ID is hardcoded in source, it's preferable that the item exists in both databases. Signed-off-by: Haru <haru@dotalux.com>
2016-11-07Corrected an issue causing WZ_HEAVENDRIVE to be ineffectiveHaru1-4/+4
The issue was caused by an evident patch mishap in commit 5e04f472e1ef618d9201fd22e382dca829992b3b. The misplaced piece of code has now been moved to the most likely place it was supposed to be in. This commit also removes an extra 'break' introduced by accident in commit f4e8189545642ee0bf87f3da546bddc918682935 (which caused no harm). Related: http://herc.ws/board/topic/13672-heaven-driver/ Signed-off-by: Haru <haru@dotalux.com>
2016-10-22Fix incorrect coding style used in char/char.c and map/skill.cDastgir Pojee1-4/+4
2016-10-22Minor Typo fixes, also added tsc declarationDastgir Pojee1-3/+4
2016-10-22Implemented UNT_CATNIPPOWDER.Dastgir Pojee1-0/+7
Implemented SC_CATNIPPOWDER: Increases WAtk%, MAtk% and Reduces Movement Speed. Increases Natural Hp/Sp Recovery
2016-10-22Increases SkillID Range on skill_get_index.Dastgir Pojee1-1/+1
2016-10-22Implemented SC_BITESCAR:Dastgir Pojee1-1/+5
Cannot be reset by dispell. Cannot be healed by item/NPC once in BITESCAR. Heal Skill would end the BiteScar Effect.
2016-10-22Implemented SU_BUNCHOFSHRIMP Skill.Dastgir Pojee1-0/+10
Lasts for (30+30*SkillLv) Seconds. Consumes 1 Shrimp. Increases ATK and MATK by 10% for limited time.
2016-10-22Implemented SU_TUNAPARTY Skill.Dastgir Pojee1-0/+1
Protects the target for 30 seconds. Tuna's Defense Power: (10+(20*(SkillLv-1)))% of Caster's MaxHP
2016-10-22Implemented SU_TUNABELLY Skill.Dastgir Pojee1-2/+8
Restores 10% MaxHP. Additionally Restores 20*(SkillLv-1)% MaxHP
2016-10-22Implemented SU_POWEROFSEA.Dastgir Pojee1-0/+5
Increases Heal Effect by 10%. if >= 20 skill points are invested in seafood-based skills, Increases Heal Effect by 20%.
2016-10-22Implemented SU_LUNATICCARROTBEAT Skill.Dastgir Pojee1-3/+24
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
2016-10-22Implemented SU_ARCLOUSEDASH Skill.Dastgir Pojee1-0/+1
For (50+10*SkillLv) Seconds, Atk +(15+5*SkillLv). Increases Movement Speed. If Target is Doram Race, Increases Range Physical attack by 10%.
2016-10-22Implemented SU_PICKYPECK Skill.Dastgir Pojee1-0/+4
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.
2016-10-22Implemented SU_SCAROFTAROU Skill.Dastgir Pojee1-0/+6
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.
2016-10-22Implemented SU_SV_ROOTTWIST Skill.Dastgir Pojee1-0/+30
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.
2016-10-22Implemented SU_CN_METEOR:Dastgir Pojee1-4/+22
Catnip Meteor: Increases Matk by 200+100*SkillLevel%. When 1 Catnip is consumed, Adds a Chance to curse target[Not Implemented].
2016-10-22Implemented SU_CN_POWDERING Skill.Dastgir Pojee1-1/+3
Consumes 1 Catnip Fruit. Lv 1-2: 3x3 AoE Lv 3-4: 5x5 AoE Lv 5: 7x7 AoE Lasts for (2+SkillLevel) Seconds Increases Natural Recovery of HP/SP. Reduces Atk and MAtk by 50% Reduces Movement Speed.
2016-10-22Implemented SU_SV_STEMSPEAR Skill.Dastgir Pojee1-0/+9
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.
2016-10-22Implemented SU_FRESHSHRIMP Skill.Dastgir Pojee1-2/+6
Consumes Fresh Shrimp to recover HP for 2 Minutes. Max Level 5: Recovers Every (11-SkillLevel) Seconds.
2016-10-22Implemented SU_LOPE Skill.Dastgir Pojee1-0/+13
Skill Cannot be Used on GvG/Battlegrounds. Cast time of Emergency Call doubles. Moves to Another Position by performing High Jump: Lv 1: Move 6 cells Lv 2: Move 10 cells Lv 3: Move 14 cells
2016-10-22Implemented SU_STOOP Skill.Dastgir Pojee1-0/+10
Reduces Incoming Damange by 90% for 6 seconds. When Knock Back, the effect disappears.
2016-10-22Implemented SU_SCRATCH:Dastgir Pojee1-2/+12
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.