1. Fix position lag issues.
2. Revert to pre-renewal but keep and all renewal maps added in a rebalanced way. Change 3rd classes to alternative trans classes (so from Swordsman High you can decide if you want to become a Lord Knight or a Rune Knight) and rebalance them.
3. Rebalance several monsters, so there are not just a few monsters worth killing.
It should be fine Backslide was already coded so it's not prevent by "No Knockback" equips:
case TF_BACKSLIDING: //This is the correct implementation as per packet logging information. [Skotlex]
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),2);
break;
/**
* Used to knock back players, monsters, traps, etc
* @param src Object that give knock back
* @param target Object that receive knock back
* @param count Number of knock back cell requested
* @param dir Direction indicates the way OPPOSITE to the knockback direction (or -1 for default behavior)
* @param flag
0x01 - position update packets must not be sent
0x02 - ignores players' special_state.no_knockback
These flags "return 'count' instead of 0 if target is cannot be knocked back":
0x04 - at WOE/BG map
0x08 - if target is MD_KNOCKBACK_IMMUNE
0x10 - if target has 'special_state.no_knockback'
0x20 - if target is in Basilica area
* @return Number of knocked back cells done
*/
Cloaking ending conditions are all over the place, check battle.c and status.c.
I think the main part is in status.c in function "status_damage", there it lists all status changes that end when taking damage.
// 16 inf3 (skill information 3):// 0x00001 - skill ignores land protector
653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,1,no,0,0x40002,0,magic,0,0x0, NPC_EARTHQUAKE,Earthquake
Try to change the 0x0 to 0x1.
And 9999 DEF / 9999 MDEF is probably too high. And it could be that 65535 damage is actually max for base damage, but not sure. Higher values are risking an overflow, so not sure about that.
Even if those class are not on my game? What cause them to be loaded? I don't even want them
If you don't want them in game, edit the at job command and remove the npcs, so they are unobtainable. That or do large src and db edits to remove completely.
Personally id just remove their skill tree and lower their max level to 1/1.
He just doesn't want the jobs to be read from the database. I'm just not sure how rAthena even knows which jobs to look for. Maybe job_db?
You'll have to work a bit with the code.
I give you one example in skill.c, find:
// Autospell when attacking if( sd && !status_isdead(bl) && sd->autospell[0].id )
If you scroll a bit further down inside that block you'll see:
//Set canact delay. [Skotlex] ud = unit_bl2ud(src); if (ud) { rate = skill_delayfix(src, skill, autospl_skill_lv); if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){ ud->canact_tick = max(tick + rate, ud->canact_tick); if ( battle_config.display_status_timers && sd ) clif_status_change(src, SI_ACTIONDELAY, 1, rate, 0, 0, 0); } }
If you remove that part, you have removed aftercast delay for autospells when attacking. Now you need to do the same for autospell when being hit. The code to be removed actually looks identical so you should be able to find it easily, just search for the comment from Skotlex.
If you wanted full renewal, you should actually not change anything in renewal.h. It's renewal by default. If you uncomment the PRERE define there, it will actually be pre-renewal.
Ok, can confirm it, but it has to do with the dissonance song overlap effect. Enemies inside that are killed throw skill id error 0. Enemies that lost overlap effect throw skill id error 65535.
Created issue on github: https://github.com/rathena/rathena/issues/1341
These have nothing to do with pre-renewal and renewal.
1. When the target moves behind an obstacle, the attack won't deal any damage. That's official behavior for both renewal and pre-renewal. Range should not matter for both. You can still be hit when you're on the other side of the map as long as there's no obstacle in between. Last time I checked it already worked like that.
2. MVPs switch target only when attacked by a normal attack from within their attack range + 1. That's the case in both pre-renewal and renewal. MVPs only switch to the closest target when in chase mode. Should already be working like that on rAthena default. I implemented that properly just a few months ago.
3. Hitlocking is a complicated topic. I haven't figured out how it should work. For me it feels I can actually slow down monsters, even bosses, sometimes but half of the time it doesn't work at all. We tried so much with improving the hitlock, but nobody managed it to get it right yet.
Feel free to try around yourself, it's all in unit.c:
int unit_set_walkdelay(struct block_list *bl, unsigned int tick, int delay, int type)
(according to aleos import-tmpl should be automatically copied to import on first compile, so the copy step might not be needed)
You also need to uncomment the corresponding lines and replace x with the jobs you want to have increased max levels.
You can also just add your own exp requirements to the official exp table.
Need to update skill.c.
In pre-re modify function:
int skill_castfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) {
In re:
int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id, uint16 skill_lv)