Jump to content

Bringer

Members
  • Posts

    742
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Bringer

  1. just duplicate the mvp boss you like then remove the drop cards put on your mob_branch.txt
  2. unlike flora / // Whether or not Marine Spheres and Floras summoned by Alchemist drop items? // This setting has three available values: // 0: Nothing drops. // 1: Only marine spheres drop items. // 2: All alchemist summons drop items. alchemist_summon_reward: 1 easy to way just make duplicate of that monster with no drops or make new condition for this skill mob.cpp if( !(type&1) && !map_getmapflag(m, MF_NOMOBLOOT) && !md->state.rebirth && ( !md->special_state.ai || //Non special mob battle_config.alchemist_summon_reward == 2 || //All summoned give drops (md->special_state.ai==AI_SPHERE && battle_config.alchemist_summon_reward == 1) //Marine Sphere Drops items. ) ) // Plant Cultivation [Celest] case CR_CULTIVATION: if (sd) { if( map_count_oncell(src->m,x,y,BL_CHAR,0) > 0 ) { clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return 1; } clif_skill_poseffect(src,skill_id,skill_lv,x,y,tick); if (rnd()%100 < 50) { clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } else { TBL_MOB* md = NULL; int t, mob_id; if (skill_lv == 1) mob_id = MOBID_BLACK_MUSHROOM + rnd() % 2; else { int rand_val = rnd() % 100; if (rand_val < 30) mob_id = MOBID_GREEN_PLANT; else if (rand_val < 55) mob_id = MOBID_RED_PLANT; else if (rand_val < 80) mob_id = MOBID_YELLOW_PLANT; else if (rand_val < 90) mob_id = MOBID_WHITE_PLANT; else if (rand_val < 98) mob_id = MOBID_BLUE_PLANT; else mob_id = MOBID_SHINING_PLANT; } md = mob_once_spawn_sub(src, src->m, x, y, "--ja--", mob_id, "", SZ_SMALL, AI_NONE); if (!md) break; if ((t = skill_get_time(skill_id, skill_lv)) > 0) { if( md->deletetimer != INVALID_TIMER ) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer (tick + t, mob_timer_delete, md->bl.id, 0); } mob_spawn(md); } } break;
  3. @AnnieRuru another version for boss card to boss card
  4. @AnnieRuru even the monster attack you still monster deleted
  5. i test it but even the monster got hit they gone / teleport
  6. } else { if ( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) { // Don't reflect non-skill attack if has SC_REFLECTSHIELD from Devotion bonus inheritance if (!skill_id && battle_config.devotion_rdamage_skill_only && sc->data[SC_REFLECTSHIELD]->val4) rdamage = 0; else { rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; if (rdamage < 1) rdamage = 1; } }
  7. wait attack speed pala yan case UNT_GOSPEL: if (rnd() % 100 >= 50 + sg->skill_lv * 5 || ss == bl) break; if (battle_check_target(ss, bl, BCT_PARTY) > 0) { // Support Effect only on party, not guild int heal; int i = rnd() % 13; // Positive buff count int time = skill_get_time2(sg->skill_id, sg->skill_lv); //Duration switch (i) { case 0: // Heal 1000~9999 HP heal = rnd() % 9000 + 1000; clif_skill_nodamage(ss, bl, AL_HEAL, heal, 1); status_heal(bl, heal, 0, 0); break; case 1: // End all negative status status_change_clear_buffs(bl, SCCB_DEBUFFS | SCCB_REFRESH); if (tsd) clif_gospel_info(tsd, 0x15); break; case 2: // Immunity to all status sc_start(ss, bl, SC_SCRESIST, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x16); break; case 3: // MaxHP +100% sc_start(ss, bl, SC_INCMHPRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x17); break; case 4: // MaxSP +100% sc_start(ss, bl, SC_INCMSPRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x18); break; case 5: // All stats +20 sc_start(ss, bl, SC_INCALLSTATUS, 100, 20, time); if (tsd) clif_gospel_info(tsd, 0x19); break; case 6: // Level 10 Blessing sc_start(ss, bl, SC_BLESSING, 100, 10, skill_get_time(AL_BLESSING, 10)); break; case 7: // Level 10 Increase AGI sc_start(ss, bl, SC_INCREASEAGI, 100, 10, skill_get_time(AL_INCAGI, 10)); break; case 8: // Enchant weapon with Holy element sc_start(ss, bl, SC_ASPERSIO, 100, 1, time); if (tsd) clif_gospel_info(tsd, 0x1c); break; case 9: // Enchant armor with Holy element sc_start(ss, bl, SC_BENEDICTIO, 100, 1, time); if (tsd) clif_gospel_info(tsd, 0x1d); break; case 10: // DEF +25% sc_start(ss, bl, SC_INCDEFRATE, 100, 25, 10000); //10 seconds if (tsd) clif_gospel_info(tsd, 0x1e); break; case 11: // ATK +100% sc_start(ss, bl, SC_INCATKRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x1f); break; case 12: // HIT/Flee +50 sc_start(ss, bl, SC_INCHIT, 100, 50, time); sc_start(ss, bl, SC_INCFLEE, 100, 50, time); if (tsd) clif_gospel_info(tsd, 0x20); break; } } else if (battle_check_target(&unit->bl, bl, BCT_ENEMY) > 0) { // Offensive Effect int i = rnd() % 10; // Negative buff count switch (i) { case 0: // Deal 3000~7999 damage reduced by DEF case 1: // Deal 1500~5499 damage unreducable skill_attack(BF_MISC, ss, &unit->bl, bl, sg->skill_id, sg->skill_lv, tick, i); break; case 2: // Curse sc_start(ss, bl, SC_CURSE, 100, 1, 1800000); //30 minutes break; case 3: // Blind sc_start(ss, bl, SC_BLIND, 100, 1, 1800000); //30 minutes break; case 4: // Poison sc_start2(ss, bl, SC_POISON, 100, 1, ss->id, 1800000); //30 minutes break; case 5: // Level 10 Provoke clif_skill_nodamage(NULL, bl, SM_PROVOKE, 10, sc_start(ss, bl, SC_PROVOKE, 100, 10, INFINITE_TICK)); //Infinite break; case 6: // DEF -100% sc_start(ss, bl, SC_INCDEFRATE, 100, -100, 20000); //20 seconds break; case 7: // ATK -100% sc_start(ss, bl, SC_INCATKRATE, 100, -100, 20000); //20 seconds break; case 8: // Flee -100% sc_start(ss, bl, SC_INCFLEERATE, 100, -100, 20000); //20 seconds break; case 9: // Speed/ASPD -25% sc_start4(ss, bl, SC_GOSPEL, 100, 1, 0, 0, BCT_ENEMY, 20000); //20 seconds break; } } break; Skill.cpp
  8. same problem tayo yun nag lagay ako proxy server ng singapore
  9. case UNT_GOSPEL: if (rnd() % 100 >= 50 + sg->skill_lv * 5 || ss == bl) break; if (battle_check_target(ss, bl, BCT_PARTY) > 0) { // Support Effect only on party, not guild int heal; int i = rnd() % 13; // Positive buff count int time = skill_get_time2(sg->skill_id, sg->skill_lv); //Duration switch (i) { case 0: // Heal 1000~9999 HP heal = rnd() % 9000 + 1000; clif_skill_nodamage(ss, bl, AL_HEAL, heal, 1); status_heal(bl, heal, 0, 0); break; case 1: // End all negative status status_change_clear_buffs(bl, SCCB_DEBUFFS | SCCB_REFRESH); if (tsd) clif_gospel_info(tsd, 0x15); break; case 2: // Immunity to all status sc_start(ss, bl, SC_SCRESIST, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x16); break; case 3: // MaxHP +100% sc_start(ss, bl, SC_INCMHPRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x17); break; case 4: // MaxSP +100% sc_start(ss, bl, SC_INCMSPRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x18); break; case 5: // All stats +20 sc_start(ss, bl, SC_INCALLSTATUS, 100, 20, time); if (tsd) clif_gospel_info(tsd, 0x19); break; case 6: // Level 10 Blessing sc_start(ss, bl, SC_BLESSING, 100, 10, skill_get_time(AL_BLESSING, 10)); break; case 7: // Level 10 Increase AGI sc_start(ss, bl, SC_INCREASEAGI, 100, 10, skill_get_time(AL_INCAGI, 10)); break; case 8: // Enchant weapon with Holy element sc_start(ss, bl, SC_ASPERSIO, 100, 1, time); if (tsd) clif_gospel_info(tsd, 0x1c); break; case 9: // Enchant armor with Holy element sc_start(ss, bl, SC_BENEDICTIO, 100, 1, time); if (tsd) clif_gospel_info(tsd, 0x1d); break; case 10: // DEF +25% sc_start(ss, bl, SC_INCDEFRATE, 100, 25, 10000); //10 seconds if (tsd) clif_gospel_info(tsd, 0x1e); break; case 11: // ATK +100% sc_start(ss, bl, SC_INCATKRATE, 100, 100, time); if (tsd) clif_gospel_info(tsd, 0x1f); break; case 12: // HIT/Flee +50 sc_start(ss, bl, SC_INCHIT, 100, 50, time); sc_start(ss, bl, SC_INCFLEE, 100, 50, time); if (tsd) clif_gospel_info(tsd, 0x20); break; } } else if (battle_check_target(&unit->bl, bl, BCT_ENEMY) > 0) { // Offensive Effect int i = rnd() % 10; // Negative buff count switch (i) { case 0: // Deal 3000~7999 damage reduced by DEF case 1: // Deal 1500~5499 damage unreducable skill_attack(BF_MISC, ss, &unit->bl, bl, sg->skill_id, sg->skill_lv, tick, i); break; case 2: // Curse sc_start(ss, bl, SC_CURSE, 100, 1, 1800000); //30 minutes break; case 3: // Blind sc_start(ss, bl, SC_BLIND, 100, 1, 1800000); //30 minutes break; case 4: // Poison sc_start2(ss, bl, SC_POISON, 100, 1, ss->id, 1800000); //30 minutes break; case 5: // Level 10 Provoke clif_skill_nodamage(NULL, bl, SM_PROVOKE, 10, sc_start(ss, bl, SC_PROVOKE, 100, 10, INFINITE_TICK)); //Infinite break; case 6: // DEF -100% sc_start(ss, bl, SC_INCDEFRATE, 100, -100, 20000); //20 seconds break; case 7: // ATK -100% sc_start(ss, bl, SC_INCATKRATE, 100, -100, 20000); //20 seconds break; case 8: // Flee -100% sc_start(ss, bl, SC_INCFLEERATE, 100, -100, 20000); //20 seconds break; case 9: // Speed/ASPD -25% sc_start4(ss, bl, SC_GOSPEL, 100, 1, 0, 0, BCT_ENEMY, 20000); //20 seconds break; } } break; Skill.cpp
  10. server lcoation if singa malaki talaga delay
  11. https://github.com/rathena/rathena/blob/master/src/map/battle.cpp#L7302 if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id, INF2_ISTRAP) || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { if( sc->data[SC_REFLECTSHIELD] ) { struct status_change_entry *sce_d; struct block_list *d_bl = NULL; NO Reflect CT & Desperado if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) {
  12. + = Added New Line - = Delete old line
  13. Produce Stalker Reject Sword Skill Ninja Using Dagger Weapon Soul + Final Strike > HP 1 should be dead by Reflect Damage reject sword //Reject Sword bugreport:4493 by Daegaladh if(wd.damage && tsc && tsc->data[SC_REJECTSWORD] && (src->type!=BL_PC || ( ((TBL_PC *)src)->weapontype1 == W_DAGGER || ((TBL_PC *)src)->weapontype1 == W_1HSWORD || ((TBL_PC *)src)->status.weapon == W_2HSWORD )) && rnd()%100 < tsc->data[SC_REJECTSWORD]->val2 ) { ATK_RATER(wd.damage, 50) status_fix_damage(target,src,wd.damage,clif_damage(target,src,gettick(),0,0,wd.damage,0,DMG_NORMAL,0,false)); clif_skill_nodamage(target,target,ST_REJECTSWORD,tsc->data[SC_REJECTSWORD]->val1,1); if( --(tsc->data[SC_REJECTSWORD]->val3) <= 0 ) status_change_end(target, SC_REJECTSWORD, INVALID_TIMER); } REFLECT /*========================================== * Final damage return function *------------------------------------------ * Credits: * Original coder unknown * Initial refactoring by Baalberith * Refined and optimized by helvetica */ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, int64 *dmg, int flag, uint16 skill_id, bool status_reflect){ struct map_session_data* sd; int64 rdamage = 0, damage = *dmg; int max_damage = status_get_max_hp(bl); struct status_change *sc, *ssc; sd = BL_CAST(BL_PC, bl); sc = status_get_sc(bl); ssc = status_get_sc(src); if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id)&INF2_TRAP || !status_reflect) && sd && sd->bonus.short_weapon_damage_return && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO /*&& skill_id != MO_EXTREMITYFIST*/ ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; rdamage = i64max(rdamage,1); } else if( status_reflect && sc && sc->count ) { if( sc->data[SC_REFLECTSHIELD] ) { struct status_change_entry *sce_d; struct block_list *d_bl = NULL; if( (sce_d = sc->data[SC_DEVOTION]) && (d_bl = map_id2bl(sce_d->val1)) && ((d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == bl->id) || (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce_d->val2] == bl->id)) ) { //Don't reflect non-skill attack if has SC_REFLECTSHIELD from Devotion bonus inheritance if( (!skill_id && battle_config.devotion_rdamage_skill_only && sc->data[SC_REFLECTSHIELD]->val4) || !check_distance_bl(bl,d_bl,sce_d->val3) ) return 0; } } if( sc->data[SC_REFLECTDAMAGE] && !(skill_get_inf2(skill_id)&INF2_TRAP)) { if( rnd()%100 <= sc->data[SC_REFLECTDAMAGE]->val1*10 + 30 ){ max_damage = (int64)max_damage * status_get_lv(bl) / 100; rdamage = (*dmg) * sc->data[SC_REFLECTDAMAGE]->val2 / 100; if( --(sc->data[SC_REFLECTDAMAGE]->val3) < 1) status_change_end(bl,SC_REFLECTDAMAGE,INVALID_TIMER); } } else { if ( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) { // Don't reflect non-skill attack if has SC_REFLECTSHIELD from Devotion bonus inheritance if (!skill_id && battle_config.devotion_rdamage_skill_only && sc->data[SC_REFLECTSHIELD]->val4) rdamage = 0; else { rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; if (rdamage < 1) rdamage = 1; } } if (sc->data[SC_DEATHBOUND] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO && skill_id != GN_HELLS_PLANT_ATK && !status_bl_has_mode(src,MD_STATUS_IMMUNE)) { if (distance_bl(src,bl) <= 0 || !map_check_dir(map_calc_dir(bl,src->x,src->y), unit_getdir(bl))) { int64 rd1 = 0; rd1 = min(damage,status_get_max_hp(bl)) * sc->data[SC_DEATHBOUND]->val2 / 100; // Amplify damage. *dmg = rd1 * 30 / 100; // Received damage = 30% of amplified damage. clif_skill_damage(src, bl, gettick(), status_get_amotion(src), 0, -30000, 1, RK_DEATHBOUND, sc->data[SC_DEATHBOUND]->val1, DMG_SKILL); skill_blown(bl, src, skill_get_blewcount(RK_DEATHBOUND, 1), unit_getdir(src), BLOWN_NONE); status_change_end(bl, SC_DEATHBOUND, INVALID_TIMER); rdamage += rd1 * 70 / 100; // Target receives 70% of the amplified damage. [Rytech] } } if( sc->data[SC_SHIELDSPELL_DEF] && sc->data[SC_SHIELDSPELL_DEF]->val1 == 2 && !status_bl_has_mode(src,MD_STATUS_IMMUNE) ){ rdamage += damage * sc->data[SC_SHIELDSPELL_DEF]->val2 / 100; if (rdamage < 1) rdamage = 1; } } } } else { if (!status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage += damage * sd->bonus.long_weapon_damage_return / 100; if (rdamage < 1) rdamage = 1; } } if (ssc && ssc->data[SC_INSPIRATION]) { rdamage += damage / 100; #ifdef RENEWAL rdamage = cap_value(rdamage, 1, max_damage); #else rdamage = i64max(rdamage,1); #endif } if (sc && sc->data[SC_KYOMU] && (!ssc || !ssc->data[SC_SHIELDSPELL_DEF])) // Nullify reflecting ability except for Shield Spell - Def rdamage = 0; if (sc && sc->data[SC_MAXPAIN]) { rdamage = damage * sc->data[SC_MAXPAIN]->val1 * 10 / 100; } return cap_value(min(rdamage,max_damage),INT_MIN,INT_MAX); }
  14. requesting an NPC that will detect below items (minimum of 2) on your inventory then will show an option to trade to version2 items sample ID # 8001_BLK, Black, 8002_BLU, Blue, 8003_GRN, Green, 8004_GRY, Gray, 8005_ORG, Orange, 8006_PNK, Pink, 8007_PRP, Purple, 8008_RED, Red, 8009_WHT, White, 8010_YLW, Yellow,
  15. here my clip.cpp /// Non-damaging skill effect /// 011a <skill id>.W <heal>.W <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL). /// 09cb <skill id>.W <heal>.L <dst id>.L <src id>.L <result>.B (ZC_USE_SKILL2). int clif_skill_nodamage(struct block_list *src,struct block_list *dst, uint16 skill_id, int heal, int fail) { unsigned char buf[17]; #if PACKETVER < 20130731 const int cmd = 0x11a; #else const int cmd = 0x9cb; #endif int offset = 0; nullpo_ret(dst); WBUFW(buf,0) = cmd; WBUFW(buf,2) = skill_id; #if PACKETVER < 20130731 WBUFW(buf,4) = min(heal, INT16_MAX); #else WBUFL(buf,4) = min(heal, INT32_MAX); offset += 2; #endif WBUFL(buf,6+offset) = dst->id; WBUFL(buf,10+offset) = src ? src->id : 0; WBUFB(buf,14+offset) = fail; if (disguised(dst)) { clif_send(buf, packet_len(cmd), dst, AREA_WOS); WBUFL(buf,6+offset) = -dst->id; clif_send(buf, packet_len(cmd), dst, SELF); } else clif_send(buf, packet_len(cmd), dst, AREA); if(src && disguised(src)) { WBUFL(buf,10+offset) = -src->id; if (disguised(dst)) WBUFL(buf,6+offset) = dst->id; clif_send(buf, packet_len(cmd), src, SELF); } return fail; }
  16. my Past Server Location is LA Hiding + Shadow Jump can be Spamable but when i change my Host Location to Singapore there a huge Delay While Using This Skill's how i can remove the delay of Hiding + Shadow Jump @Haruka Mayumi i try test this but failed compile clif.cpp bool clif_skill_nodamage(struct block_list *src,struct block_list *dst, uint16 skill_id, int heal, t_tick tick) { unsigned char buf[17]; #if PACKETVER < 20130731 const int cmd = 0x11a; #else const int cmd = 0x9cb; #endif int offset = 0; bool success = ( tick != 0 ); nullpo_ret(dst); + if( skill_id == TF_HIDING ) return success;
  17. @Humble_Bee i will to make like i have 1m HP or 5HP will be = of the owner summoner
  18. int summons[5] = { 1661, 1643, 1640, 1644 }; int class_ = skill_id == AM_SPHEREMINE ? MOBID_MARINE_SPHERE : summons[skill_lv - 1]; enum mob_ai ai = (skill_id == AM_SPHEREMINE) ? AI_SPHERE : AI_FLORA; struct mob_data *md; // Correct info, don't change any of this! [celest] md = mob_once_spawn_sub(src, src->m, x, y, status_get_name(src), class_, "", SZ_SMALL, ai); if (md) { md->master_id = src->id; md->special_state.ai = ai; if (md->deletetimer != INVALID_TIMER) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer(gettick() + skill_get_time(skill_id, skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn(md); //Now it is ready for spawning. } } break;
  19. Find This on your Status.c here mine if (bl->type&battle_config.enable_perfect_flee) { stat = status->flee2; stat += 10 + (status->luk * 10/20); // (every 20 luk = +1 perfect flee) status->flee2 = cap_value(stat, 0, SHRT_MAX);
×
×
  • Create New...