-
Posts
765 -
Joined
-
Last visited
-
Days Won
19
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Playtester
-
-
Maybe your rAthena is outdated. This flag was added on February 1st 2022:
https://github.com/rathena/rathena/commit/3deb3e204852f169c84e5ea9399e8a1e5129a71e
-
45 minutes ago, kalabasa said:
how can i only allow the splashing of skill when being in soul link state only?
You could for example check for the Soul Link status change and if you don't have it just call skill_attack directly, otherwise call map_foreachinrange as for other splash skills.
-
Adding the flag as qtdan described is the easiest solution.
If this is a bug in the emulator and it should not make targets immune to GTB, then that's usually more an indication of that it shouldn't be a magic spell in the first place (maybe misc?). Though changing the damage type often requires to also move the skill's code to another function (might not be needed for no-damage skills though).
-
Yeah basically you need to edit skill.cpp, but the change should be minimal if you have a different skill that works similar already.
Basically open skill.cpp in Visual Studio and make Ctrl+F, make sure you select to search only in this document so you don't get too many results.
Then you first search for the skill you want to change to understand how it works. You don't want to change anything about its effects, you just want to change how often it calls "skill_attack" (you want to call it once for each enemy in the area instead of just the target).
So if you search for AM_ACIDTERROR in skill.cpp and check where it calls skill_attack you will find it in a long lists of single target skills:
[...] case AC_CHARGEARROW: case MA_CHARGEARROW: case RG_INTIMIDATE: case AM_ACIDTERROR: case BA_MUSICALSTRIKE: case DC_THROWARROW: case BA_DISSONANCE: case CR_HOLYCROSS: [...]
You will want to remove it here.
Now you search for a skill that you want it to behave like. For example MG_FIREBALL. Then you find a larger list of skills, it's even commented as "Splash skills":
//Splash attack skills. case AS_GRIMTOOTH: case MC_CARTREVOLUTION: case NPC_SPLASHATTACK: flag |= SD_PREAMBLE; // a fake packet will be sent for the first target to be hit case AS_SPLASHER: case HT_BLITZBEAT: case AC_SHOWER: case MA_SHOWER: case MG_NAPALMBEAT: case MG_FIREBALL: case RG_RAID: #ifdef RENEWAL case SN_SHARPSHOOTING: #endif case HW_NAPALMVULCAN: case NJ_HUUMA: case ASC_METEORASSAULT:
You just need to add your skill here ("case AM_ACIDTERROR:").
Now it works like a splash skill. The code below looks a bit scary because devs put way too many exceptions in there, but you can just ignore this unless you want your skill to have a unique handling unlike normal splash skills.
Most of the other things you can just define in the skill_db.yml
If you wonder how this section works, basically it will first be called without a flag:
if( flag&1 ) {//Recursive invocation
So this will be false and it goes into the else:
} else {
In the else it then calls a sub function for all units in the area:
// recursive invocation of skill_castend_damage_id() with flag|1
map_foreachinrange(skill_area_sub, bl, splash_size, starget, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);This will in the end loop back to the same function again for each valid target, except now it has "flag&1" and will just call skill_attack for that target instead.
-
1
-
-
On a sidenote, this was a bug on the emulator which is fixed now:
https://github.com/rathena/rathena/commit/64f10ed10bfb174709f3a0ed0abe93be20d64cf5
-
Not familiar with that diff (you're better off asking on WARP Discord), but I can tell you that you cannot just use any executable, first of all you need one that's not encrypted, so you kind of rely it being provided by the Nemo/Warp project, because Gravity now encrypts their executables. Second, if you take a too modern executable, some of its feature might not be supported in rAthena yet. Using older ones should be fine though as long as you adapt PACKETVER in packets.hpp.
-
I created an issue on Steel Body on the bug tracker too: https://github.com/rathena/rathena/issues/6910
-
You can use Status.yml to define special properties of status changes:
- Status: Steelbody Icon: EFST_STEELBODY DurationLookup: MO_STEELBODY States: NoCast: true CalcFlags: Def: true Mdef: true Aspd: true Speed: true Opt3: SteelBody: trueFor example you can use the flag "NoSave", so that a status change is removed on logout, similar to how it is defined for Devotion:
- Status: Devotion Icon: EFST_DEVOTION DurationLookup: CR_DEVOTION Flags: NoSave: true RemoveOnChangeMap: true OverlapIgnoreLevel: trueNote: Endow is not remove on logout on official servers so that's correct. However, I can confirm that Steel Body should be removed, but isn't.
-
Just a quick heads up, your original reports are fixed on the emulator now: https://github.com/rathena/rathena/commit/3b9c28aa464b8adb3decb5357725e1f705c8517e
-
There's one more thing, right now the transition from SC_STONEWAIT to SC_STONE can also be resisted. That also needs to be fixed by making it unavoidable.
We are also checking an issue in renewal right now. I recommend you just wait for the next update though otherwise you'll run into merge conflicts.
-
You're perfectly right, I will forward that one as well. Good thinking!
-
I assume this "Shadow Cross" is a new 4th job class? Your file doesn't contain this class at all, so it uses the official values from the emulator. You will need to expand your job_status.yml with the new jobs.
-
1
-
-
It's a small error in the rework on the Stone SC.
In status.cpp this part:
case SC_STONE: case SC_FREEZE: // Undead are immune to Freeze/Stone if (undead_flag && !(flag&SCSTART_NOAVOID)) return 0; break;
Needs to be changes to:
case SC_STONE: case SC_STONEWAIT: case SC_FREEZE: // Undead are immune to Freeze/Stone if (undead_flag && !(flag&SCSTART_NOAVOID)) return 0; break;
I'll forward this to Aleos so he can fix this directly on the emulator.
-
1
-
-
Lemongrass already fixed this here: https://github.com/rathena/rathena/commit/aae930198d1bf1c491444a55bb028af2a147ad41
Just update rAthena to latest and it should be fixed.
-
I strongly recommend that you set up your server in a way you can always update rAthena without merging trouble. That way you can always stay up-to-date on all the fixes without much effort.
For conf/db changes, you only need to make sure to use the import folder for your changes instead of the files themselves. Those folders are set to be ignored by git so your changes are safe there.
SRC/NPC changes are part of the git repository, it's a bit more tricky there, it depends a little bit on how you apply your customization. If you are like me and just edit the files directly, but not check them in at all, not even locally (kinda risky), then you need to call "Stash changes" (I'm using Tortoise Git) first, this will remove all your custom changes temporarily and put them into a stash. Then you can just call "Pull" which will update your base files to the latest rAthena (assuming you are still on the master branch). Afterwards just call "Stash pop" that puts your custom changes back in. Sometimes if you changed something that was also updated on rAthena you will have to do a merge and decide what changes to keep / adjust.
If you commit your changes into your local respository then as far as I know you can just call Pull directly and it will automatically merge it. If you have your own branch you need to select yourself that you want to merge master into your branch. Not too familiar with that process though.
If are really scared of losing your changes, you could also just copy your whole rathena folder as a backup before you pull. Then you can restore lost changes by moving files from the backup back into the main folder. Or to keep a better overview, just backup the files you actually changed.
Hope this helps.
-
You already asked about this here:
No need to have two topics about the same thing, especially since you already got an answer.
-
There is no conversion, just apply the changes you want to the new file or via the import folder as usual.
-
Ah you define PC_PERM_MAX in the enum (first one is 0, second is 1, third is 2, etc.). You will have to put it last so that it works.
-
It's not hard to find that out yourself. If you use visual studio Ctrl+F then select to search the whole project and then just enter PC_PERM_MAX and search where it's defined.
-
You probably need to increase PC_PERM_MAX by 2 then.
-
-
There was an update to system and it now uses groups.yml instead of groups.conf, might be related to your issue.
If you had customized the original source file you might have a merge error?
The code you quoted doesn't even include "const s_pcg_permission_name". From the error message I'd say you have the same const in the array appear twice.
Look for this code:
static const struct s_pcg_permission_name { const char *name; enum e_pc_permission permission; } pc_g_permission_name[PC_PERM_MAX] = { { "can_trade", PC_PERM_TRADE }, { "can_party", PC_PERM_PARTY }, { "all_skill", PC_PERM_ALL_SKILL }, { "all_equipment", PC_PERM_USE_ALL_EQUIPMENT }, { "skill_unconditional", PC_PERM_SKILL_UNCONDITIONAL }, { "join_chat", PC_PERM_JOIN_ALL_CHAT }, { "kick_chat", PC_PERM_NO_CHAT_KICK }, { "hide_session", PC_PERM_HIDE_SESSION }, { "who_display_aid", PC_PERM_WHO_DISPLAY_AID }, { "hack_info", PC_PERM_RECEIVE_HACK_INFO }, { "any_warp", PC_PERM_WARP_ANYWHERE }, { "view_hpmeter", PC_PERM_VIEW_HPMETER }, { "view_equipment", PC_PERM_VIEW_EQUIPMENT }, { "use_check", PC_PERM_USE_CHECK }, { "use_changemaptype", PC_PERM_USE_CHANGEMAPTYPE }, { "all_commands", PC_PERM_USE_ALL_COMMANDS }, { "receive_requests", PC_PERM_RECEIVE_REQUESTS }, { "show_bossmobs", PC_PERM_SHOW_BOSS }, { "disable_pvm", PC_PERM_DISABLE_PVM }, { "disable_pvp", PC_PERM_DISABLE_PVP }, { "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD }, { "channel_admin", PC_PERM_CHANNEL_ADMIN }, { "can_trade_bounded", PC_PERM_TRADE_BOUNDED }, { "item_unconditional", PC_PERM_ITEM_UNCONDITIONAL }, { "command_enable",PC_PERM_ENABLE_COMMAND }, { "bypass_stat_onclone",PC_PERM_BYPASS_STAT_ONCLONE }, { "bypass_max_stat",PC_PERM_BYPASS_MAX_STAT }, { "attendance",PC_PERM_ATTENDANCE }, };
-
groups.conf is no longer used, it was converted to YAML format: https://github.com/rathena/rathena/blob/master/conf/groups.yml
If you had manual modifications to the group rights, you will have to do them again in the new file.
-
There seems to be an issue with the SQL version right now, I forwarded it to Lemongrass, he'll work on a fix.
-
1
-

Status Recover not working
in General Support
Posted
It's normal that Stone Curse (from the Stone Curse spell) has an incubation time of 5 seconds. During this time you can still walk but not use skills.
Blessing on Stone Curse should be working, but you need to cast it after the incubation time (Blessing will then not be applied and instead it heals the stone status).
Status Recovery on frozen works for me.