-
Content Count
200 -
Joined
-
Last visited
-
Days Won
5
Reputation Activity
-
banhelba2019 reacted to AnnieRuru in Max Atk
@RagnarokOnline2015 must be using RENEWAL
in renewal, its base atk + weapon atk
simply equip any weapon will do, like I'm using priest, equip a club
"@refine 0 10", the refine will increase the value along with bonus bAtk or bonus bAtk2
in renewal, equip fire-brand will increase the value there
@Orca must be using pre-renewal
yes, equip a fire-brand doesn't increase that value,
to increase bAtk2, the only way is through refine "@refine 0 10" on your fire-brand, or using bonus bAtk2
and I repeat again, THIS IS OFFICIAL <-- tested same thing happen in rathena as well(EDIT)
this atk/matk stuffs has even confuse some developers
EDIT: seems like I misunderstood the question,
you want to increase the 65535, not to add to the bAtk2 bonus ...
-
banhelba2019 got a reaction from RagnarokOnline2015 in Max Atk
Well i dont remember raising my max atk ..... I just changed the attk formula so that STR gives more ATK
status.c
void status_calc_misc(struct block_list *bl, struct status_data *st, int level) { nullpo_retv(bl); nullpo_retv(st); //Non players get the value set, players need to stack with previous bonuses. if ( bl->type != BL_PC ) st->batk = st->hit = st->flee = st->def2 = st->mdef2 = st->cri = st->flee2 = 0; if ( bl->type == BL_PC ) st->batk = st->str * 1250; I added the
if ( bl->type == BL_PC ) st->batk = st->str * 1250; at the bottom
-
banhelba2019 got a reaction from RagnarokOnline2015 in Max Atk
Thats a pretty good question
I can get my attack into the 100ks pretty easily...
You might appreciate this post i made on rathena by Lllaaazzz (me)
https://rathena.org/board/topic/118087-where-can-i-edit-stat-bonuses/#comment-357024
-
banhelba2019 reacted to Crown The Empire in New damage formula (Dragon Breath)
Old damage formula (before the 175/60 update, implemented December 10, 2014 in iRO):
Damage = [(CurrHP ÷ 50) + (MaxSP ÷ 4)] × (SkillLv × BaseLv ÷ 150) × (95 + DragonTraining_Lv × 5)% New damage formula (after the 175/60 update):
Damage = [(CurrHP ÷ 50) + (MaxSP ÷ 4)] × (SkillLv × BaseLv ÷ 150) × (95 + DragonTraining_Lv × 5)% × (100 + Ranged Damage Modifiers)% x (Elemental Modifiers)% battle.c (Hercules)
case RK_DRAGONBREATH: case RK_DRAGONBREATH_WATER: md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; RE_LVL_MDMOD(150); if (sd) md.damage = md.damage * (95 + 5 * pc->checkskill(sd,RK_DRAGONTRAINING)) / 100; md.flag |= BF_LONG|BF_WEAPON; break; battle.ccp (rAthena)
case RK_DRAGONBREATH: case RK_DRAGONBREATH_WATER: { int damagevalue = (sstatus->hp / 50 + status_get_max_sp(src) / 4) * skill_lv; if(status_get_lv(src) > 100) damagevalue = damagevalue * status_get_lv(src) / 150; if(sd) damagevalue = damagevalue * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); #endif wd->flag |= BF_LONG; } skill.c (Hercules)
case RK_DRAGONBREATH_WATER: case RK_DRAGONBREATH: { struct status_change *tsc = NULL; if( (tsc = status->get_sc(bl)) && (tsc->data[SC_HIDING] )) { clif->skill_nodamage(src,src,skill_id,skill_lv,1); } else skill->attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); } skill.cpp (rAthena)
case RK_DRAGONBREATH_WATER: case RK_DRAGONBREATH: if( tsc && tsc->data[SC_HIDING] ) clif_skill_nodamage(src,src,skill_id,skill_lv,1); else skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); break; So I think the difference is the new formula takes these range, elemental and racial modifiers into account.
It seems this formula was recently implemented in rAthena (BF_WEAPON TYPE), while Hercules is still using the old formula (BF_MISC TYPE). I have tried to merge rathena's new formula into Hercules, but encountered several problems.
-
banhelba2019 reacted to Panallox in High Definition Damage Font
View File High Definition Damage Font
Hi all,
This is a basic damage font alternative which can be used to bring a little more high definition resolution to Ragnarok! I made this purely because I was tired of staring at the hideously stretched and over-pixelated damage numbers while I was doing some testing. Feel free to give it a try! There is a slightly wider spacing between digits that I wasn't able to close off because the client must determine spacing/positionings between, but if you want to reduce some of the spacing I have provided another .act file suffixed "_larger" which reduces the spacing but makes the damage text a bit larger.
Thanks
Submitter Epoque Submitted 03/30/19 Category Sprites & Palettes
-
banhelba2019 reacted to Dastgir in Dastgir's Services
Hello Hercules Community,
I am offering my Services to you @ some expense of money.
Works for Emulator: Hercules/rAthena/Others(if any)
Services:
Scripting. (Min Price:5$ ) Source Modification(/Addition).(Min Price: 5$) Converting to/Creating a Plugin[Hercules Specific].(Min Price: 5$) Migrating Your Server. (Min Price: 10$) Adding Custom Items/Maps/Mobs. (Min Price: 5$) Creating/Adding New Skills. (Min Price: 10$) Changing of Emulator (Min Price: 10$) ClientSide Things. (Min Price: 5$) Fixing Errors. (Min Price: 5$) Script Review. Consulting And Anything else, that you want, just drop me a PM
Maximum Price: Depends on Complexity of the Work
What Else:
Free Support for Service bought from me.
Contact Info:
Post Here Via PM Payment Methods:
PayPal Only PM me if you want any other payment method, and I might check If I can have it.
Status: AVAILABLE
-
banhelba2019 reacted to raPalooza~ in raPalooza's Cursor
File Name: raPalooza's Cursor
File Submitter: raPalooza~
File Submitted: 24 May 2016
File Category: Sprites & Palettes
This is a cursor modification I made for ragnarok, following the thoughts and feeling of my past works,
I've created this with the intention of innovating the feeling of the game without letting the design break the game visual with a big gap in style.
Some pieces are made from other mmos such as maplestory for example ( and some others I cant remember right now )
I've got some files backed up and lost others due to lost data on my old computer(it's an old project) so it's a little hard to deal modifications from the feedback, but i'll do my best.
A lot of people came asking for this cursor over PM and Posts, glad you guys asked for it, otherwise I would let this project on the shelf, enjoy guys ;]
RAN OUT OF IDEAS FOR THE NAME!
cYA
Click here to download this file
-
banhelba2019 reacted to AnnieRuru in can i hide/show items in select list
https://rathena.org/board/topic/118341-conditions-for-labels-and-inside-menus/?do=findComment&comment=358053
just if-else if-else if-else if-else on every statement
-
banhelba2019 reacted to AnnieRuru in H> unlock menu with certain requeriments
why not?
prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((quest > .@i *2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@state = .@s *2; if ( quest > .@state ) { mes "you have completed this quest"; close; } else if ( quest < .@state ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; quest = .@state +1; close; } function script F_quest_state { .@npcid = getarg(0); .@state = (.@npcid -1) *2 +1; if ( quest == .@state ) { dispbottom sprintf( _$( "complete %d" ), .@npcid ); quest = .@state +1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ quest = 0; }
and this is quest log with achievement system
{ Id: 49920 Name: "Quest 1" }, { Id: 49921 Name: "Quest 2" }, { Id: 49922 Name: "Quest 3" }, [49920] = { Title = "Quest 1", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 1<INFO>prontera,150,180,</INFO></NAVI>" }, Summary = "Talk to NPC 1", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 150, NpcPosY = 180, }, [49921] = { Title = "Quest 2", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 2<INFO>prontera,155,180,</INFO></NAVI>" }, Summary = "Talk to NPC 2", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 155, NpcPosY = 180, }, [49922] = { Title = "Quest 3", IconName = "ico_nq.bmp", Description = { "Talk to <NAVI>NPC 3<INFO>prontera,160,180,</INFO></NAVI>" }, Summary = "Talk to NPC 3", NpcSpr = "1_F_MARIA", NpcNavi = "prontera", NpcPosX = 160, NpcPosY = 180, } { Id: 109993 Name: "Custom Quest" Type: "ACH_QUEST" Objectives: { *1: { Description: "Complete Quest 1" } *2: { Description: "Complete Quest 2" } *3: { Description: "Complete Quest 3" } } Points: 0 }, [109993] = { UI_Type = 0, group = "CHATTING", major = 4, minor = 0, title = "Custom Quest", content = { summary = "Visit the Quest Giver", details = "Visit the Quest Giver." }, resource = { [1] = { text = "Complete Quest 1" }, [2] = { text = "Complete Quest 2" }, [3] = { text = "Complete Quest 3" } }, score = 0 }, prontera,155,185,5 script quest 1_F_MARIA,{ mes "quest giver"; next; for ( .@i = 0; .@i < 3; ++.@i ) .@menu$[.@i] = sprintf( _$( "%sQuest %d" ), F_MesColor((questprogress( 49920+ .@i ) == 2)? C_GRAY : C_BLACK), .@i +1 ); .@s = select( implode( .@menu$, ":" ) ) -1; .@qid = 49920+ .@s; if ( questprogress(.@qid) == 2 ) { mes "you have completed this quest"; close; } else if ( .@qid == 49920 ); // break; else if ( questprogress(.@qid -1) != 2 ) { mes "you can't take this quest yet."; close; } mesf "Go talk to npc %d", .@s +1; if ( questprogress(.@qid) == 0 ) setquest .@qid; close; } function script F_quest_state { .@npcid = getarg(0); .@qid = .@npcid -1 + 49920; if ( questprogress(.@qid) == 1 ) { completequest .@qid; dispbottom sprintf( _$( "complete %d" ), .@npcid ); achievement_progress 109993, .@npcid, 1, 1; } end; } prontera,150,180,5 script npc 1 1_F_MARIA,{ F_quest_state(1); } prontera,155,180,5 script npc 2 1_F_MARIA,{ F_quest_state(2); } prontera,160,180,5 script npc 3 1_F_MARIA,{ F_quest_state(3); } prontera,160,185,5 script reset 1_F_MARIA,{ for ( .@i = 49920; .@i <= 49922; ++.@i ) if ( questprogress(.@i) ) erasequest(.@i); end; }
have fun playing with it
actually this is very simple script, just wanna play around a little bit
-
banhelba2019 reacted to 4144 in [Solved] Hexed 2014-03-05b Hide Map Button Failed
Ah then previous developer was broke some patches for old versions, i will try to check this
-
banhelba2019 reacted to AnnieRuru in Guild Skill Notification
https://github.com/AnnieRuru/Release/blob/master/plugins/guild_skill_notification.c
-
banhelba2019 reacted to astralprojection in Trigger OnMobDrop Event
Is there a way to trigger on ion mob drop a specific item?
- scrip itemdrop -1,{
end;
OnMobDrop:
If(nameid = 601)
dispbottom "Monster dropped ^+getitemname(601):
end;
}
-
banhelba2019 reacted to 4144 in Stable packet
From server side most or all versions should works. Older than 2017 may have some issues and need test for each client)
From client side, clients itself works fine, but in some can be issues. And more important not all clients may works patches what you need. Check patches what you need on http://nemo.herc.ws/clients/
On other emulators popular version 2018-06-21, because this emulators not support newer version. But in hercules you can use any new version too.
-
banhelba2019 got a reaction from Functor in Model/Texture Pack 01
View File Model/Texture Pack 01
My old models will find no place in my new project. . .
Future packs will be better organized (yes every model has its own folder maybe I could change it but i didnt) o/
Submitter lllaaazzz Submitted 03/23/19 Category Maps & Textures
-
banhelba2019 got a reaction from Tio Akima in custom card code
can be done easily enough
just by switching
in status.c
ctrl + f , find SC_AUTOBESERK
look for these
st->max_hp>>2 change them to this
st->max_hp*0.75 now autobeserk applies at 75% hp
ok to remove the toggle, im not sure off the top of my head but i dont see why not
so using this you need to:
make a new SC_CARDEFFECT
just copy impositio manus for straight ATK
or keep is like provoke but without the defense reduction
now you just gotta figure out how to make it a passive instead of toggled
-
banhelba2019 reacted to AnnieRuru in Outfits and Cashmount
I knew that, but this doesn't show the weapon sprite
although its a bit off when enable it
hmm ... I just re-read the topic, you only want to enable attack/skill on these job sprite,
not enabling the weapon sprite ... it was from lllaaazzz suggestion
-
banhelba2019 got a reaction from skyundersea in Outfits and Cashmount
no unfortunately i cant test it without downloading a bunch of stuff, but ive looked over it and thats the only thing i can see anyways
try deleting that entire block i mentioned
if its job related i have no idea
few other things :
sc_config.txt
// Unremovable SC_WEIGHTOVER50, 207 SC_WEIGHTOVER90, 207 SC_WEDDING, 77 SC_XMAS, 77 SC_SUMMER, 77 SC_NOCHAT, 205 SC_FUSION, 77 thats probably 64 + 8 + 4 + 1 or something but doubt it matters
sorry, but youve given me a sweet idea though
-
banhelba2019 got a reaction from Rotciv in Create Ground Skill
Also im working on a formula to apply effects, normally if u try to use specialeffects function. . .
case AM_WATER: clif_specialeffect(src,54,1); clif_specialeffect(bl,208,AREA); sc_start(src,bl,SC_SOAKED,100,skill_lv,skill->get_time2(skill_id,skill_lv)); break; When you try to use this , if you kill the monster with the skill the effects wont even show and really makes it ugly so what i did is i turn it into a 1 damage MISC skill . . .
skill.db
{ Id: 726 Name: "AM_HARVEST" Description: "Harvest" MaxLevel: 10 Range: 2 Hit: "BDT_SKILL" SkillType: { Place: true } SkillInfo: { IgnoreLandProtector: true AllowReproduce: true } AttackType: "Misc" Element: "Ele_Weapon" DamageType: { SplashArea: true IgnoreFlee: true } NumberOfHits: -3 AfterCastActDelay: { Lv1: 0 Lv2: 0 Lv3: 0 Lv4: 0 Lv5: 3000 } AfterCastWalkDelay: { Lv1: 2000 Lv2: 0 Lv3: 0 Lv4: 0 Lv5: 3000 } SkillData1: 1000 SkillData2: 50000 CoolDown: 0 Requirements: { SPCost: 15 } Unit: { Id: 0x86 Range: 1 Interval: 1000 Target: "Enemy" Flag: { UF_SKILL: true } } },
Anyways since the skill only deals 1 damage the effect will apply every time . . . .
But what i did is i made a Status similar to burning (Burning makes numbers appear over your head, poison doesnt) . . . the status actually deals all my damage, so i can kill mobs using special effect funtion, with access to the 1000+ effects in your effects_doc.
status.h Gotta declare your new SC add it at the bottom
// Summoner SC_SUHIDE, SC_SU_STOOP, SC_SPRITEMABLE, SC_CATNIPPOWDER, SC_SV_ROOTTWIST, SC_BITESCAR, SC_ARCLOUSEDASH, SC_TUNAPARTY, SC_SHRIMP, // 650 SC_FRESHSHRIMP, SC_DRESS_UP, // Rodex SC_DAILYSENDMAILCNT, // Clan System SC_CLAN_INFO, SC_HARVESTED, In your status.c
add_sc( AM_HARVEST , SC_HARVESTED ); this is where all the other skills are just look for SM_PROVOKE or something lol
case SC_FOGWALL: case SC_FROSTMISTY: case SC_BURNING: case SC_HARVESTED: case SC_MARSHOFABYSS: place it here
and here
nullpo_retr(true, sc); if (sc->data[SC_REFRESH]) { if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) // Confirmed. return true; // Immune to status ailements switch (type) { case SC_DEEP_SLEEP: case SC__CHAOS: case SC_BURNING: case SC_HARVESTED: case SC_STUN: case SC_SLEEP: case SC_CURSE: case SC_STONE: case SC_POISON: case SC_BLIND: case SC_SILENCE: case SC_BLOODING: and here
} else if (sc->data[SC_INSPIRATION]) { if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX) return true; // Immune to status ailements switch (type) { case SC_POISON: case SC_BLIND: case SC_STUN: case SC_SILENCE: case SC__CHAOS: case SC_STONE: case SC_SLEEP: case SC_BLOODING: case SC_CURSE: case SC_HARVESTED: case SC_BURNING: case SC_FROSTMISTY: case SC_FREEZE: case SC_COLD: (Im actually not 100% on what OPT s do but i placed it here
opt_flag = 1; switch(type) { case SC_STONE: case SC_FREEZE: case SC_STUN: case SC_SLEEP: case SC_BURNING: case SC_HARVESTED: case SC_WHITEIMPRISON: case SC_COLD: sc->opt1 = 0; break; Looking through this again i just realized i didnt use SC_BURNING but actually made it a poison lmao... but it works its up to you to test it and clean it and learn it........... this is just some random way to apply skill damage with ALL THE EFFECTS and make COMPLETLY NEW SKILLS
case SC_POISON: if (st->hp <= max(st->max_hp / 10, sce->val4)) //Stop damaging after 25% HP left. break; FALLTHROUGH case SC_HARVESTED: case SC_DPOISON: if (--(sce->val3) > 0) { if (sc->data[SC_SLOWPOISON] != NULL) { sc_timer_next(1000 + tick, status->change_timer, bl->id, data); return 0; } if (sce->val2 != 0 && bl->type == BL_MOB) { struct block_list* src = map->id2bl(sce->val2); if (src != NULL) mob->log_damage(BL_UCAST(BL_MOB, bl), src, sce->val4); } map->freeblock_lock(); status_zap(bl, sce->val4, 0); if (sc->data[type] != NULL) { // Check if the status still last (can be dead since then). sc_timer_next(1000 + tick, status->change_timer, bl->id, data); } map->freeblock_unlock(); return 0; } break; case SC_POISON: case SC_DPOISON: data.tick = sc->data[i]->val3 * 1000; break; case SC_HARVESTED: data.tick = sc->data[i]->val3 * 1000; break; case SC_FEAR: case SC_LEECHESEND: data.tick = sc->data[i]->val4 * 1000; break;
I hope you grasp my idea here, you can even make a formula that takes all your stats into account but im still working on make a REAL meta formula not something that just does 1000 more damge every skill level. . . ill post that some day
Super experimental post.
Summed up :
" using specialeffect funtion, doesnt show the effect when YOU KILL THE MOB WITH THE SKILL, so long as it still has HP the effect will show, So making a 1 damage skill and giving it a very specific damage formula ( Poison in this case cause this is in my farming minigame but YOU CAN MAKE A DAMAGE FORMULA BY CALLING ATK MARK STR LEVEL ETC ETC ) Just look at SC_BURNING "
Look ill even show you an example
case SC_BURNING: if( --(sce->val4) > 0 ) { struct block_list *src = map->id2bl(sce->val3); int damage = 1000 + 3 * status_get_max_hp(bl) / 100; // Deals fixed (1000 + 3%*MaxHP) map->freeblock_lock(); clif->damage(bl,bl,0,0,damage,1,BDT_MULTIENDURE,0); //damage is like endure effect with no walk delay status->damage(src, bl, damage, 0, 0, 1); if( sc->data[type]){ // Target still lives. [LimitLine] sc_timer_next(3000 + tick, status->change_timer, bl->id, data); } map->freeblock_unlock(); return 0; } break; case SC_LOCKEDB: if( --(sce->val4) > 0 ) { struct block_list *src = map->id2bl(sce->val3); int damage = (100 - (st->def)) * (50 * (sce->val1)); map->freeblock_lock(); clif->damage(bl,bl,0,0,damage/100,1,BDT_MULTIENDURE,0); //damage is like endure effect with no walk delay status->damage(src, bl, damage/100, 0, 0, 1); map->freeblock_unlock(); return 0; } break; Look at INT DAMAGE =
Val1 is my SKILL LEVEL
and im calling the TARGET DEFENSE. . . . So Yes this skill does damage and does less damage based on the targets defence and my skill level....
Super experimental
Good luck with this part , its really ugly but its all i could figure out for now
Oh if you dont know how to make a skill MISC damage, just copy TF_THROWSTONE and go in the battle.c and and copy it there too
-
-
-
banhelba2019 got a reaction from Echoes in (Name)'s Item creation question
go to your skill.c
switch (skill_id) { case BS_DAGGER: case BS_SWORD: case BS_TWOHANDSWORD: case BS_AXE: case BS_MACE: case BS_KNUCKLE: case BS_SPEAR: case BS_PLUS: flag = battle_config.produce_item_name_input&0x1; break; case AM_PHARMACY: case AM_TWILIGHT1: case AM_TWILIGHT2: case AM_TWILIGHT3: flag = battle_config.produce_item_name_input&0x2; break; case AL_HOLYWATER: /** * Arch Bishop **/ case AB_ANCILLA: flag = battle_config.produce_item_name_input&0x8; break; case ASC_CDP: flag = battle_config.produce_item_name_input&0x10; break; default: flag = battle_config.produce_item_name_input&0x80; break; } find this and probably somewhere here, i havnt test out adding it to my own items but i did remove names off of one of my creation lists so i know its this
-
banhelba2019 got a reaction from bWolfie in RNG anomaly
my favorite thing about Ragnarok is having 95% flee and your still getting hit like half the time 1v1 lol