Jump to content

Bringer

Members
  • Content Count

    659
  • Avg. Content Per Day

    0
  • Joined

  • Last visited

Everything posted by Bringer

  1. } 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; } }
  2. 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
  3. same problem tayo yun nag lagay ako proxy server ng singapore
  4. 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
  5. server lcoation if singa malaki talaga delay
  6. live server na yan or local server?
  7. 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 ) {
  8. + = Added New Line - = Delete old line
  9. 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); }
  10. 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,
  11. 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; }
  12. 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;
  13. @Humble_Bee i will to make like i have 1m HP or 5HP will be = of the owner summoner
  14. 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;
  15. 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);
  16. Free Version https://github.com/pajodex/ScriptCollections/blob/master/mvp_kill.txt
  17. so far i know that sprite made it for Sarah server
  18. i try to make MOD for Monk Spirit /** * Does attribute fix modifiers. * Added passing of the chars so that the status changes can affect it. [Skotlex] * Note: Passing src/target == NULL is perfectly valid, it skips SC_ checks. * @param src * @param target * @param damage * @param atk_elem * @param def_type * @param def_lv * @return damage */ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 damage,int atk_elem,int def_type, int def_lv) if (sc->data[SC_SPIRIT] && (sc->data[SC_SPIRIT]->val2 == SL_MONK && def_type == ELE_GHOST)) ratio = 75; #ifdef RENEWAL //In renewal, reductions are always rounded down so damage can never reach 0 unless ratio is 0 damage = damage - (int64)((damage * (100 - ratio)) / 100); #else damage = (int64)((damage*ratio)/100); #endif //Damage can be negative, see battle_config.attr_recover return damage; }
  19. announce ""+strcharinfo(0)+" has won the Guess the Number Event! My number was "+.usednumber+"!",0; mes [email protected]$; mes "You have guessed my number! Congratulations!"; getitem @prize,@amoun; disablenpc "guess"; --------------------------------------- *disablenpc "<NPC object name>"; *enablenpc "<NPC object name>"; These two commands will disable and enable, respectively, an NPC object specified by name. The disabled NPC will disappear from sight and will no longer be triggerable in the normal way. It is not clear whether it will still be accessible through 'donpcevent' and other triggering commands, but it probably will be. You can disable even warp NPCs if you know their object names, which is an easy way to make a map only accessible through walking half the time. Then you 'enablenpc' them back. You can also use these commands to create the illusion of an NPC switching between several locations, which is often better than actually moving the NPC - create one NPC object with a visible and a hidden part to their name, make a few copies, and then disable all except one. --------------------------------------- *hideonnpc "<NPC object name>"; *hideoffnpc "<NPC object name>"; These commands will make the NPC object specified display as hidden/visible, even though not actually disabled per se. Hidden as in thief Hide skill, but unfortunately, not detectable by Ruwach or Sight. As they are now, these commands are pointless, it is suggested to use 'disablenpc'/'enablenpc', because these two commands actually unload the NPC sprite location and other accompanying data from memory when it is not used. However, you can use these for some quest ideas (such as cloaking NPCs talking while hidden then revealing.... you can wonder around =P
  20. i dont have any idea about hexing
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.