Jump to content

Playtester

Developer
  • Posts

    905
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by Playtester

  1. I don't really know anything about that part of the code, sorry. Guess you should just debug by setting breakpoints to see what's going wrong.
  2. It's better to just uncomment #define PRERE in the same file. Then all the renewal stuff is removed.
  3. Playtester

    Crit 0

    Doesn't happen on default, maybe you have an item equipped that gives negative crit?
  4. Check the second line: // Only official levels included, check db/import-tmpl/job_exp.txt for an expanded list Alternatively you need to add required exp for levels 100-300. (Sorry, can't speak Portuguese.)
  5. If I'm not completely mistaken, a much easier way to check would be: sd->status.class_ == JOB_HIGH_PRIEST
  6. You need to check for "sd" first. sd is NULL when monsters use the skill which will cause a crash when you try to access sd->status.
  7. I can't do anything about it unless you tell me what packet needs to be send to the client so it works. Unit spells can't hit ice wall. LoV can not hit ice wall. Must be an iRO custom if it does on iRO. On rA you can already recast icewall on a destroyed wall tile. Everything is working as on Aegis already.
  8. I just checked again and when I compile current rAthena on pre-renewal setting without any changes, Sacrifice already never misses.
  9. It doesn't has much to do with immune attack. I didn't try around with that code too much but if you always set state |= BCT_ENEMY there, then I think monsters will always attack each other. If you find a good condition you can write for that you could pull it off.
  10. Even though you rewrote battle_check_target to return true in that situation?
  11. You can set this in your skill_db, just read the explanation at the top.
  12. So if the player is a super player he should be able to chain combos however he wants? If guess you can get group_id via: int pc_get_group_id(struct map_session_data *sd); So for example... uh... case MO_CHAINCOMBO: if(!sc) return false; if(sc->data[SC_BLADESTOP]) break; if(sc->data[SC_COMBO] && (pc_get_group_id(sd) > 0 || sc->data[SC_COMBO]->val1 == MO_TRIPLEATTACK)) break; return false; Like this maybe?
  13. It's not a bug, Tarot Card of Fate can dispell FCP. case 3: // THE HIGH PRIESTESS - all buffs removed { status_change_clear_buffs(target, SCCB_BUFFS | SCCB_CHEM_PROTECT); break; }
  14. Not defined any exp table for Novice maybe?
  15. Group ID?
  16. Is it so hard to press Ctrl+F and then enter that text to find it? Or just search for AL_BLESSING to see whereever it applies. As I said it's the block that is for all normal status changes without special rules. case AL_INCAGI: case AL_BLESSING: case MER_INCAGI: case MER_BLESSING: if (dstsd != NULL && tsc->data[SC_CHANGEUNDEAD]) { skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); break; } case PR_SLOWPOISON: case PR_IMPOSITIO: case PR_LEXAETERNA: case PR_SUFFRAGIUM: case PR_BENEDICTIO: case LK_BERSERK: case MS_BERSERK: case KN_TWOHANDQUICKEN: case KN_ONEHAND: case MER_QUICKEN: case CR_SPEARQUICKEN: case CR_REFLECTSHIELD: case MS_REFLECTSHIELD: case AS_POISONREACT: case MC_LOUD: case MG_ENERGYCOAT: case MO_EXPLOSIONSPIRITS: case MO_STEELBODY: case MO_BLADESTOP: case LK_AURABLADE: case LK_PARRYING: case MS_PARRYING: case LK_CONCENTRATION: case WS_CARTBOOST: case SN_SIGHT: case WS_MELTDOWN: case WS_OVERTHRUSTMAX: case ST_REJECTSWORD: case HW_MAGICPOWER: case PF_MEMORIZE: case PA_SACRIFICE: case ASC_EDP: case PF_DOUBLECASTING: case SG_SUN_COMFORT: case SG_MOON_COMFORT: case SG_STAR_COMFORT: case GS_MADNESSCANCEL: case GS_ADJUSTMENT: case GS_INCREASING: case NJ_KASUMIKIRI: case NJ_UTSUSEMI: case NJ_NEN: case NPC_DEFENDER: case NPC_MAGICMIRROR: case ST_PRESERVE: case NPC_INVINCIBLE: case NPC_INVINCIBLEOFF: case RK_DEATHBOUND: case AB_RENOVATIO: case AB_EXPIATIO: case AB_DUPLELIGHT: case AB_SECRAMENT: case AB_OFFERTORIUM: case NC_ACCELERATION: case NC_HOVERING: case NC_SHAPESHIFT: case WL_MARSHOFABYSS: case WL_RECOGNIZEDSPELL: case GC_VENOMIMPRESS: case SC_DEADLYINFECT: case LG_EXEEDBREAK: case LG_PRESTIGE: case SR_CRESCENTELBOW: case SR_LIGHTNINGWALK: case GN_CARTBOOST: case KO_MEIKYOUSISUI: case ALL_ODINS_POWER: case ALL_FULL_THROTTLE: case RA_UNLIMIT: case WL_TELEKINESIS_INTENSE: case RL_HEAT_BARREL: case RL_P_ALTER: case RL_E_CHAIN: case SU_FRESHSHRIMP: case SU_ARCLOUSEDASH: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break;
  17. Sorry, as I said I can give you hints but if you want more complex code solutions you should probably learn to understand the code yourself or hire a coder.
  18. It's complex, I don't really have time for this. You'll need to try around yourself in the source code. You could try change: int battle_check_target( struct block_list *src, struct block_list *target,int flag) This one is called for flag = BCT_ENEMY. You will want to write it so that it returns true if the monster can attack another monster. I don't really know more about it either.
  19. "or sniper" or "of sniper"? Anyway, there are tons of possibilties to modify damage, depends on how the damage should work... Generally you find everything in battle.c static struct Damage battle_calc_weapon_attack(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, int wflag) At any point in that function after: wd = battle_calc_skill_base_damage(wd, src, target, skill_id, skill_lv); // base skill damage You modify the damage. If it's a normal attack then skill_id is 0.
  20. Yeah is a bit more complex to do because Blessing and Agi have some special rules like you can offensively cast them too. Usually Blessing and Agi end up here: clif_skill_nodamage(src,bl,skill_id,skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; But that is used for all other status change skills too, so you need to split them away from that. And do an implementation that looks a bit more like the code you quoted above. if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); But this code should only be called when having link status, so something like: struct status_change* sc = status_get_sc(src); if(sd && sc && sc->data[SC_SPIRIT] && sc->data[SC_SPIRIT]->val2 == SL_PRIEST) With that info you should be able to code it together yourself.
  21. How do you want to modify it?
  22. I don't think those are general rAthena issues, though, so they will probably be labelled invalid if posted on github. If skills would just disappear, it would have been reported much earlier. Chain Crush Combo is working fine too, just tested. So I cannot confirm any of these issues. Must be caused by some customization. Try to use latest rAthena from Github and then slowly apply your changes until the bug starts to occur to see what causes it.
  23. aDelay is the delay between the attacks. aMotion is the time the monster needs after an attack before it can start moving again.
  24. That's very possible, but you need to change the code: case TK_HIGHJUMP: { int x,y, dir = unit_getdir(src); //Fails on noteleport maps, except for GvG and BG maps [Skotlex] if( map[src->m].flag.noteleport && !(map[src->m].flag.battleground || map_flag_gvg2(src->m) ) ) { x = src->x; y = src->y; } else if(dir%2) { //Diagonal x = src->x + dirx[dir]*(skill_lv*4)/3; y = src->y + diry[dir]*(skill_lv*4)/3; } else { x = src->x + dirx[dir]*skill_lv*2; y = src->y + diry[dir]*skill_lv*2; } clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1); if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x,y,CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0)) clif_blown(src); } break; I'm not sure if it works but maybe it's sufficient to change the last parameter in the unit_movepos call to "1".
  25. It wouldn't say "Skill has failed" if you still had aftercast delay. Doesn't it say that because you have no Spirit Sphere or are not in Fury Mode when trying to use it again? If you want a no delay with 4 cards you should put 25% reduction per card.
×
×
  • Create New...