8088 Commits

Author SHA1 Message Date
Cydh Ramdh
3c920759fa Fixed #366
* Somehow failed to get 'caster' status for calculation.
* A little cleanup for `SC_GT_ENERGYGAIN`, `SC_GT_CHANGE`, & `SC_GT_REVITALIZE` which don't need `bl->id` as `val2`. Caster is `src`, target is `bl`. (Was assumed `val2` to get caster status? `if (src2 = map_id2bl(val2))` but `bl` was target on skill_castend_nodamage_id.

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-29 08:59:26 +07:00
Cydh Ramdh
35e9c2b55c Temporary fix #321, reuse old matk calculation for monster until db/re/mob_db.txt is updated.
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-28 12:05:21 +07:00
Cydh Ramdh
7d929a06a3 NPC Market Shop support
* New shop script definition: `<map name>,<x>,<y>,<facing>%TAB%marketshop%TAB%<NPC Name>%TAB%<sprite id>,<itemid>:<price>:<quantity>{,<itemid>:<price>:<quantity>...}`
* Added script command to update shop NPC: 'npcshopupdate "<name>",<itemid>,<price>{,<stock>}'
* Added NPCMarketDB (DBMap) for market data persistance method.
* Added `market_table` definition for market table in conf/inter_athena.conf.
* Thank to @aleos89, @Lemongrass, @icxbb-xx, merged HerculesWS/Hercules@cf19b26.

NOTES:
* Minimum client needed 2013-12-23 (but this client has bugs there-and-there).
* There's new table, see `upgrade_20150327.sql`.
* Market shop doesn't support discount.
* Added items by script `npcshopitem` or `npchopadditem` will be assumed as persistance items, will be loaded on next script reload or server start even market_shop NPC does't list them (unless NPC is not exists, entries will be removed).

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-27 21:11:07 +07:00
aleos89
2dc38e77ca Follow up to 2cee5b6
* Updated setunitdata to recalculate the object's information and update the client immediately.
* For setunitdata, map name can also be passed in as a valid value instead of map ID.
* Added mapid2name script command.
* Added status_set_maxhp and status_set_maxsp functions.
* Updated documentation to reflect changes.
2015-03-26 11:47:36 -04:00
Cydh Ramdh
0b427a87e8 Fixed Cart Cannon skillratio, fixed #360. Thank @MrAntares
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-26 21:56:20 +07:00
Cydh Ramdh
d495751d1d Follow up 2cee5b6ff1bf53c4ae53bc1278b09ae84b8a0a76
* Revert `mercenary_create` command to don't return mercenary game id. Fixed #361

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-25 12:16:34 +07:00
Cydh Ramdh
49a0b55f60 Fixed map-server crashed by Crimson Marker. Thank @raynra
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-23 19:58:51 +07:00
Cydh Ramdh
12eaced423 Added CharID as optional param for
* `getchildid({<char_id>})`
* `getmotherid({<char_id>})`
* `getfatherid({<char_id>})`
* `divorce({<char_id>})`
* `ispartneron({<char_id>})`
* `getpartnerid({<char_id>})`
* `getlook(<type>{,<char_id>})`
* `getsavepoint(<information type>{,<char_id>})`
* `getinventorylist {<char_id>}`
* `mergeitem({<item_id>{,<char_id>}})`
* `getgmlevel({<char_id>})`
* `getgroupid({<char_id>})`
* `getskilllist({<char_id>})`
* `skillpointcount({<char_id>})`
* `checkoption(<option number>{,<char_id>})`
* `checkoption1(<option number>{,<char_id>})`
* `checkoption2(<option number>{,<char_id>})`
* `setoption <option number>{,<flag>{,<char_id>}}`
* `setcart {<type>{,<char_id>}}`
* `checkcart({<char_id>})`
* `setfalcon {<flag>{,<char_id>}}`
* `checkfalcon({<char_id>})`
* `setriding {<flag>{,<char_id>}}`
* `checkriding({<char_id>})`
* `setdragon {<color>{,<char_id>}}`
* `checkdragon({<char_id>})`
* `setmadogear {<flag>{,<char_id>}}`
* `checkmadogear({<char_id>})`
* `setmounting {<char_id>}`
* `ismounting({<char_id>})`
* `checkwug({<char_id>})`
* `dispbottom "<message>"{,<color>{,<char_id>}}`
* `savepoint "<map name>",<x>,<y>{,<char_id>}`
* `save "<map name>",<x>,<y>{,<char_id>}`
* `changesex({<char_id>})`
* `countbound({<bound type>{,<char_id>}})`
* `consumeitem <item id>{,<char_id>}`
* `consumeitem "<item name>"{,<char_id>}`
* `makerune <% success bonus>{,<char_id>}`
* `resetlvl <action type>{,<char_id>}`
* `resetstatus({<char_id>})`
* `resetskill({<char_id>})`
* `getstatus(<effect type>{,<type>{,<char_id>}})`
* `nude {<char_id>}`
* `disguise <Monster ID>{,<char_id>}`
* `undisguise {<char_id>}

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-23 12:30:09 +07:00
Cydh Ramdh
d7964edbda Another follow up 5f21afb2555d73bba219fd9fdb1d117c0e1950b1
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-22 18:36:39 +07:00
Cydh Ramdh
e93afad7db Follow up 2cee5b6ff1bf53c4ae53bc1278b09ae84b8a0a76
* A little clean up in BUILDIN_FUNC(getunitdata)

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-21 20:33:40 +07:00
Cydh Ramdh
be86cbd5a8 Merge pull request #352 from cydh/cleanup/instance
Instance cleanup
* Changed instance_db fixed array to DBMap
* Removed MAX_INSTANCE_DB
* Valid Instance ID is 1 ~ 65535
* Removed MAX_MAP_PER_INSTANCE from instance_db struct (in the map arrays)
* Change mapnames for instance_db to StringBuf
2015-03-21 20:01:48 +07:00
Cydh Ramdh
ee1866152f Follow up 5f21afb2555d73bba219fd9fdb1d117c0e1950b1
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-21 19:56:43 +07:00
Cydh Ramdh
2b00a1c9d3 Follow up 2cee5b6ff1bf53c4ae53bc1278b09ae84b8a0a76
* Some types aren't correct
* Missing '=' for Homunculi's max_sp change. Thank @lighta

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-20 19:37:26 +07:00
aleos89
2cee5b6ff1 Implemented Basic Unit Controller Script Commands
* Added getunitname, setunitname, getunitdata, and setunitdata script commands.
- getunitdata and setunitdata are open to suggestions for more values.
* Split unitstop to unitstopattack and unitstopwalk.
* Expanded unitskilluseid and unitskillusepos to be able to adjust casttime of skill.
* Added two new monster modes: MD_NORANDOM_WALK and MD_NOCAST_SKILL.
* The areamonster script command now saves spawned monster game IDs in an array called $@mobid[].
* Adjusted other monster spawning script commands to return game ID.
* Updated documentation to reflect changes.
2015-03-19 20:47:57 -04:00
Cydh Ramdh
0e5997e9ef Added map names check for entrance and maplist
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-19 23:12:36 +07:00
aleos89
231710c0fa Bug Fixes
* Fixed #119 - Corrected Flash Combo weapon ATK and to cancel skill cast when target is more than 2 cells away.
* Fixed #148 - Corrected Kings Grace to only cast on guild members in versus type maps and added missing effects. Updated cooldown from 60 to 90 seconds.
* Fixed #341 - Offertorium and Magnificat now cancel each other out (Mimics Kyrie Eleison and Assumptio).
* Follow up to 5a0f8dc. Added missing monster transformation bonuses.
* Updated the Status Icon list with newer icons.
2015-03-18 15:12:02 -04:00
Cydh Ramdh
fb01b02283 Instance (core) cleanup
* Changed instance_db array to DBMap
* Removed MAX_INSTANCE_DB
* Valid Instance ID is 1 ~ 65535
* Removed MAX_MAP_PER_INSTANCE from instance_db struct (in the map arrays)
* Change mapnames for instance_db to StringBuf

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-18 19:57:37 +07:00
Cydh Ramdh
46f010cb28 Bug fixes:
* #331: Fixed Auto Shadow Spell always failed, 9d3d34205fdb424e4a9281c3e6a951a1f0cdbdc1 fault
* #340: Phantom Thrust can be used to pull a party member

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-16 23:08:43 +07:00
Cydh Ramdh
739a8f5831 Fixed #176 Stealth Field effect
* Should drains 3% caster's SP each 3 seconds
* Speed penalty for not the caster

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-16 20:53:30 +07:00
Cydh Ramdh
17ffda6235 Fixed 'wrong' mapname in party info window when member is in instance.
... I think I saw the report somewhere ...

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-16 00:02:41 +07:00
Lighta
d92a8df4c2 Remove some duplicate code 2015-03-15 05:52:53 -04:00
Lighta
d1eeda3466 Fix 'make tools' target for ./configure
Fix update.pl wasn't able to recompile due to path error.
2015-03-15 04:24:58 -04:00
aleos89
bae469e6c6 Follow up to 9d247d8
* Disable Packet Obfuscation if it's enabled and client version is below 2011-08-17.
2015-03-14 14:31:04 -04:00
aleos89
5a9ffc489f Follow up to 9f6f55c.
* Fixed Dragon Breath skill type checks.
* Adjusted Camouflage to account for ground-based skills.
- Thanks to @reigneil.
2015-03-14 12:38:14 -04:00
Aleos
9d247d88c1 Merge pull request #312 from rathena/feature/official_packet_obfuscation
Added Packet Obfuscation support
* More info: https://rathena.org/board/topic/101092-packet-obfuscation-support/
2015-03-14 12:25:27 -04:00
aleos89
1b69b981fa More cleanups
- Enabled Packet Obfuscation by default.
- Added a bit of documentation.
2015-03-14 11:45:42 -04:00
Cydh Ramdh
3b197eb76c Added optional param <char_id> for some script commands:
* getexp <base xp>,<job xp>{,<char_id>};
* equip <item id>{,<char_id>};
* unequip <equipment slot>{,<char_id>};
* delequip <equipment slot>{,<char_id>};
* breakequip <equipment slot>{,<char_id>};
* clearitem {,<char_id>};
* openmail {<char_id>};
* openauction {<char_id>};
* setquest <ID>{,<char_id>};
* completequest <ID>{,<char_id>};
* erasequest <ID>{,<char_id>};
* changequest <ID>,<ID2>{,<char_id>};
* checkquest(<ID>{,PLAYTIME|HUNTING{,<char_id>}})
* isbegin_quest(<ID>{,<char_id>})
* showevent <icon>{,<mark color>{,<char_id>}}
* setd "<variable name>",<value>{,<char_id>};

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-14 19:19:53 +07:00
Cydh Ramdh
5f21afb255 Added script command optional param for account/char id
* `set`, added char id -> set <var>,<value>{,<charid>}
* `rentitem`, added account id -> rentitem <item id>,<time>{,<account_id>};
* `rentitem2`, added account id -> rentitem2 <item id>,<time>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account_id>};
* `strcharinfo`, added char id -> strcharinfo <type>{,<char_id>};
* `getequipisequiped`, added char id -> getequipisequiped <equipment slot>{,<char_id>};
* `repair`, added char id -> repair <broken item number>{,<char_id>};
* `repairall`, added char id -> repair {<char_id>};

Added macros
* Macro to replace a check "if there's additional param for account/char id then get the value or use attached rid"
* script_accid2sd(<param_location_for_account_id>,sd,<fail action>)
* script_charid2sd(<param_location_for_char_id>,sd,<fail action>)
* script_nick2sd(<param_location_for_char_id>,sd,<fail action>)

TODO:
* Add optional param for CharID/AccountID/Nick for other necessary commands

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-14 18:52:18 +07:00
Playtester
16d747af48 - Fixed trap HP and knock back (fixes #338)
* Talkie Box and all ranger traps no longer can be destroyed by HP damage
* Electric Shock can now be knocked back
2015-03-14 11:50:59 +01:00
aleos89
9f6f55c07c Bug Fixes
* Fixed #167 - Dragon Breath burning chance is now 15% for all levels. Also corrected damage calculation. Thanks to @exneval.
* Fixed #270 - Cleaned up Reverberation and how it's triggered.
* Fixed #321 - Follow up to 1b6be4e. Fixed MATK calculation for for all player, monster, homunculus, mercenary, etc.
* Fixed #332 - Camouflage now hides player from targeting skills. Added missing DEF/DEF2 bonus.
* Fixed #335 - Check to make sure script has data before trying to free null values.
* Fixed Full Throttle SP drain amount and movement speed increase value. Updated cooldown value to 30 minutes.
* Fixed Bloody Lust skill type from magic to none.
* Fixed Mix Cooking, Make Bomb, Special Pharmacy, Change Material, and Rune Mastery success and fail animations.
* Cleaned up some more compile warnings.
2015-03-13 17:49:38 -04:00
aleos89
1b6be4e0df Bug Fixes
* Fixed #145 - Corrected the duration of Frigg's Song ending too quickly.
* Fixed #202 - Added damage bonus for Rifle when using Piercing Shot (renewal).
* Fixed #257 - Adjusted get_status() in athena-start to return the correct string.
* Fixed #272 - Blood Lust not leeching HP from target.
* Fixed #298 - Corrected the renewal calculation of ATK and ASPD for Homunculus.
* Fixed #309 and #313 - Cleaned up warnings during compile.
* Fixed #321 - Monsters not calculating MATK at spawn (renewal).
* Added missing renewal calculations for Mercenary.
2015-03-11 10:10:05 -04:00
Playtester
ad8e22139f Kaahi and Arrow Shower RE fixes
- Removed Kaahi timer system (fixes #320)
* Kaahi will now heal BEFORE the damage is dealt
* Heals will no longer get lost due to timer system
* Decreased Kaahi duration 1800->350 seconds
- Implemented recent Arrow Shower Renewal updates (fixes #310)
* Arrow Shower now has 3x3 AoE on level 1~5 and 5x5 AoE on level 6~10
* Arrow Shower now has a fixed after cast delay of 500ms
* Note: The bug that causes the skill to hit twice is still present (couldn't fix it)
2015-03-07 19:27:49 +01:00
aleos89
1be5665580 Small cleanup
- Fixed some compile warnings when Packet Obfuscation is disabled.
2015-03-06 09:48:08 -05:00
aleos89
86f1cebee8 Merge branch 'master' of https://github.com/rathena/rathena into feature/official_packet_obfuscation 2015-03-06 09:41:41 -05:00
Cydh Ramdh
6472425c10 Something left behind...
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-05 00:14:30 +07:00
Cydh Ramdh
73bfa215e5 Fixed #317
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-04 23:49:56 +07:00
Cydh Ramdh
5c24534b51 Expanded msg len for e_msg in pc_useitem to CHAT_SIZE_MAX
Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-04 23:12:48 +07:00
Cydh Ramdh
f05119b36c Packet Obfuscation support
* Enable it by uncomment `#define PACKET_OBFUSCATION` in mmo.h
* Obfuscation keys are defined in db/packet_db.txt, each packet_ver has their own default keys (for temperory lookup) in `packet_keys:` right after `packet_ver:`
* Keys can be refined (user-defined keys) by defining the keys in `packet_keys_use:` in file db/[import/]packet_db.txt
* This feature only for client 20110817 or newer
* `@reloadpacketdb` won't changes the keys, so make sure define everything before run the map-server.

Thank to @icxbb-xx, @aleos, 5a942993dd

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-03-01 15:16:56 +07:00
Playtester
d4aa4c70a7 Walkpath loop fix (fixes #198)
- Move requests one cell west will now be ignored if the target cell is occupied
- You can now set official_cell_stack_limit to 0 to completely disable it including the limitation above
2015-02-28 15:41:18 +01:00
Cydh Ramdh
7d42cf2ba4 Follow up fa75733cc109f926b1df4156ccdf1292c78f8f79
* `getiteminfo` fix after `elvmax` added

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-28 13:05:06 +07:00
Aleos
d8ecfeb48b Merge pull request #307 from rathena/hotfix/issue296
Fixes #296
- Warg Strike can now trigger by Fist, Dagger, and Bow (no restrictions).
2015-02-27 10:59:01 -05:00
Cydh Ramdh
72a831aa2f Added "clear" for item group
* It is: <IG>,clear,0,0

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-27 11:29:41 +07:00
Cydh Ramdh
63b85277f5 Follow up 881bdb08714b257b5789da80c0f6017a9185ee62
* Added IG_Old_Ore_Box to db/const.txt with value 422

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-27 03:32:37 +07:00
Cydh Ramdh
714e670327 Follow up 20695d629a59310a9e6a04c2234bbf4870609d90
* Fixed #304
* Fixed #308

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-27 02:49:19 +07:00
aleos89
cec6ed110f Fixes #296
Warg Strike can now trigger by Fist, Dagger, and Bow (no restrictions).
2015-02-24 21:32:01 -05:00
aleos89
04359e04ec Fixes #301
Fixed status_percent_heal() not healing based on Max HP/SP.
2015-02-23 15:42:06 -05:00
Lemongrass3110
0e015ac370 Merge pull request #299 from RagnarokNova/patch-5
Fixed up Sorcerer's Elemental Sympathy

Thanks to @RagnarokNova
2015-02-21 22:10:02 +01:00
aleos89
d3625e5c10 Cleaned up merge issues. 2015-02-21 15:43:58 -05:00
Nova
537fb42a4b Fixed up Sorcerer's Elemental Sympathy
Without this, having level 1 ES would set your Elemental Summon to only have 5% of their original health, instead of adding 5% to the max HP.
2015-02-20 17:00:57 -08:00
Cydh Ramdh
c92915b6cd DEFAULT_MAP clean up
* Moved hardcoded `DEFAULT_MAP`, `DEFAULT_MAP_X`, and `DEFAULT_MAP_Y` definition to conf/char_athena.conf: `default_map`, `default_map_x`, and `default_map_y` for `DEFAULT_MAP`
* Default map existance check only will be checked once, after map_index finished load by char-server, previously map-server also do a check that maybe cause unnecessary debug message
* `instance_start` value should be init'd with `map_num` not by `map_num + 1`. I was causing send extra 1 empty map to char-server.
* A little clean up in `chmapif_parse_getmapname()` and `doc/packet_interserv.txt`

Signed-off-by: Cydh Ramdh <house.bad@gmail.com>
2015-02-19 15:02:14 +07:00