The forums will be going offline for an extended maintenance period at 1400hrs GMT on 19th June 2025. The number of hours for this downtime is intentionally not advertised due to the nature of these upgrades.
×
- 0
Hunter Trap GVG Knockback
-
Recently Browsing 0 members
- No registered users viewing this page.
Question
Nyaniverse
Good day rAthena,
I am currently trying to edit my Blast Mine to be able to get knocked back using Arrow Shower. ( I want it to behave like how it behaves in non-gvg maps)
I am very new to source coding so I am not even sure on what I should work with, I know that I have to look at this particular area, but I am not sure on what or how I should proceed. Any tips or guide on what to do next would be really appreciated.
/** * Checks if unit can be knocked back / stopped by skills. * @param bl: Object to check * @param flag * 0x1 - Offensive (not set: self skill, e.g. Backslide) * 0x2 - Knockback type (not set: Stop type, e.g. Ankle Snare) * 0x4 - Boss attack * 0x8 - Ignore target player 'special_state.no_knockback' * @return reason for immunity * UB_KNOCKABLE - can be knocked back / stopped * UB_NO_KNOCKBACK_MAP - at WOE/BG map * UB_MD_KNOCKBACK_IMMUNE - target is MD_KNOCKBACK_IMMUNE * UB_TARGET_BASILICA - target is in Basilica area (Pre-Renewal) * UB_TARGET_NO_KNOCKBACK - target has 'special_state.no_knockback' * UB_TARGET_TRAP - target is trap that cannot be knocked back */ enum e_unit_blown unit_blown_immune(struct block_list* bl, uint8 flag) { if ((flag&0x1) && (map_flag_gvg2(bl->m) || map_getmapflag(bl->m, MF_BATTLEGROUND)) && ((flag&0x2) || !(battle_config.skill_trap_type&0x1))) return UB_NO_KNOCKBACK_MAP; // No knocking back in WoE / BG switch (bl->type) { case BL_MOB: // Immune can't be knocked back if (((flag&0x1) && status_bl_has_mode(bl,MD_KNOCKBACKIMMUNE)) && ((flag&0x2) || !(battle_config.skill_trap_type&0x2))) return UB_MD_KNOCKBACK_IMMUNE; break; case BL_PC: { map_session_data *sd = BL_CAST(BL_PC, bl); #ifndef RENEWAL // Basilica caster can't be knocked-back by normal monsters. if( !(flag&0x4) && sd->sc.getSCE(SC_BASILICA) && sd->sc.getSCE(SC_BASILICA)->val4 == sd->bl.id) return UB_TARGET_BASILICA; #endif // Target has special_state.no_knockback (equip) if( (flag&(0x1|0x2)) && !(flag&0x8) && sd->special_state.no_knockback ) return UB_TARGET_NO_KNOCKBACK; } break; case BL_SKILL: { struct skill_unit* su = (struct skill_unit *)bl; // Trap cannot be knocked back if (su && su->group && skill_get_unit_flag(su->group->skill_id, UF_NOKNOCKBACK)) return UB_TARGET_TRAP; } break; } //Object can be knocked back / stopped return UB_KNOCKABLE; }
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.