AinsLord Posted July 5, 2021 Share Posted July 5, 2021 i was trying to do some src edit for sanctuary heal on emp that can only be "1" but i got this kind of error i tried the src edit i found here case PR_SANCTUARY: hp = (skill_lv>6)?777:skill_lv*100; if (dstmd->class_ == MOBID_EMPERIUM) hp = 1; break; thanks in advance Quote Link to comment Share on other sites More sharing options...
1 Litro Endemic Posted July 7, 2021 Share Posted July 7, 2021 (edited) id is unit game id not mob id, the check is correct, if target is monster, then convert it to mob_data then check the target mob id if that monster is emperium. if(target->type == BL_MOB) { struct mob_data *md = BL_CAST(BL_MOB, target); if (md->mob_id == MOBID_EMPERIUM) hp = 1; } Edited July 7, 2021 by Litro Endemic 1 Quote Link to comment Share on other sites More sharing options...
0 DorekoNeko Posted July 5, 2021 Share Posted July 5, 2021 (edited) 6 hours ago, AinsLord said: i was trying to do some src edit for sanctuary heal on emp that can only be "1" but i got this kind of error i tried the src edit i found here case PR_SANCTUARY: hp = (skill_lv>6)?777:skill_lv*100; if (dstmd->class_ == MOBID_EMPERIUM) hp = 1; break; thanks in advance Shouldn't it be something like this? case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->id == MOBID_EMPERIUM) { hp = 1; } At least in my case, the argument to the skill_calc_heal method describing the target of the skill is called literally target. /** * Calculates heal value of skill's effect * @param src: Unit casting heal * @param target: Target of src * @param skill_id: Skill ID used * @param skill_lv: Skill Level used * @param heal: True if it's the heal part or false if it's the damage part of the skill * @return modified heal value */ int skill_calc_heal(struct block_list *src, struct block_list *target, uint16 skill_id, uint16 skill_lv, bool heal) { EDIT: Actually I think this would be better and safer: case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->type == BL_MOB && target->id == MOBID_EMPERIUM) { hp = 1; } I'm not 100% sure, but I think that it could be possible for another type of entity to have the same ID of the Emperium. So maybe checking the type of entity to ensure it's a monster is wise. Edited July 5, 2021 by DorekoNeko 1 Quote Link to comment Share on other sites More sharing options...
0 AinsLord Posted July 6, 2021 Author Share Posted July 6, 2021 (edited) On 7/6/2021 at 4:26 AM, DorekoNeko said: ... thanks i ll try this one when i came back home PS: @DorekoNekoThis codes still heals 777 case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->type == BL_MOB && target->id == MOBID_EMPERIUM) { hp = 1; } case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->id == MOBID_EMPERIUM) { hp = 1; } i tried this code case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->type == BL_MOB && target->id == MOBID_EMPERIUM); hp = 1; break; case PR_SANCTUARY: hp = (skill_lv > 6) ? 777 : skill_lv * 100; if (target->id == MOBID_EMPERIUM); hp = 1; break; it heals 1 but it also heals 1 on players yeyyyy thanks a lot it works On 7/7/2021 at 4:05 PM, Litro Endemic said: id is unit game id not mob id, the check is correct, if target is monster, then convert it to mob_data then check the target mob id if that monster is emperium. if(target->type == BL_MOB) { struct mob_data *md = BL_CAST(BL_MOB, target); if (md->mob_id == MOBID_EMPERIUM) hp = 1; } Edited July 7, 2021 by AinsLord more infor 1 Quote Link to comment Share on other sites More sharing options...
0 DorekoNeko Posted July 7, 2021 Share Posted July 7, 2021 9 hours ago, AinsLord said: yeyyyy thanks a lot it works You welcome Ains Sama. Oh supereme being ~ Quote Link to comment Share on other sites More sharing options...
i was trying to do some src edit for sanctuary heal on emp that can only be "1" but i got this kind of error
i tried the src edit i found here
thanks in advance
Link to comment
Share on other sites