Leaderboard
Popular Content
Showing content with the highest reputation on 02/03/25 in all areas
-
1 point
-
1 point
-
It's funny that every time I say I'm done I still constantly make small tweaks, mostly still to monster skill use rates and stats. Something I've been looking at lately is monster sizes, which are all over the place and make no sense 95% of the time. For example, Dullahan is Medium size, while Loli Ruri and Bloody Murderer are Large size. Okay, that kinda makes sense, they are bigger than Dullahan. But wait, Argos is Large size. Is that because it's comparatively large for a bug? I mean, sure, it's huge for a spider, but it's much smaller than Dullahan. It's also smaller than Mantis, which is considered Medium. Rocker, Metaller, and Ashhopper are even bigger and are still Medium. Argiope is Large, even though Centipede, which uses an edited version of its sprite, is only Medium. Giant Hornet is Small, even though it has the word "Giant" right in its name. The list goes on and on. It would be impossible to ever get them to be totally consistent, but I think it's getting a little better. I'm sorry Knights and users of Size cards if this disrupts your farming. I'm glad to hear you've been enjoying the topic. I will note that in Ragnarok time, 10 seconds is an eternity. I actually once had a boss (Lost Dragon) that had a 10 second cast skill, not even intentionally, but because I didn't see it when it was editing its skill list. This boss then became absurdly easy to solo by simply running around, waiting for it to try to cast that skill, beating on it for 8 seconds, then dodging the skill and repeating the process. Of course, it would help if the skill was interruptable (then it would at least fight back), but that super slow charge bar is still basically a "come hit me" indicator. Generally, peak human reaction time is around 120ms, but in Ragnarok the network latency time plays into this because the boss starts casting when the packet is sent, not when you receive it. Generally though, I tend to use around 700-1200ms as charge time on spells I want to be fairly reactable, and 500ms on spells that you can avoid if you're really paying attention. Lower cast times are basically only for skills you can only dodge if you're already moving or hovering over the "Back Slide" / "Time Slip" key. But that's fine, you're not supposed to be able to dodge everything. A key element of Ragnarok's success in my opinion is that it's only semi action-based. You can dodge some stuff, but not everything, you're still definitely going to be hit, which makes both your skill as a player and your build and equipment vital to success. In a lot of games where skill has a very large impact (generally where almost every attack is potentially avoidable) gear tends to be kind of irrelevant, or at least you only care about offense, and they just don't have the endless replayability that Ragnarok has. This is actually a good segway though because it lets us talk about Boss Design, which is actually something I've never really talked about until now. My server has over 100 bosses, and I've pretty sure I've tweaked the skill lists of all of them a few times, so I guess I can talk about some of the bigger changes to bosses and a bit of how I generally try to design them. For starters, one change I've made pretty much across the board is that bosses have far longer cooldowns on their minion summoning skills. In base, many of them can cast these every few seconds, so killing their minions is almost a total waste of time, but on my server these cooldowns are much longer. For most bosses, the cooldown on their minions is 60-120 seconds, depending generally on how hard their minions are. This makes killing them pretty viable, especially if you're planning to facetank the boss. A couple bosses have faster minions, but they're generally very weak. Dracula can call his bats every 20 seconds, but they're so wimpy that you can actually abuse "when being hit" cards to farm them. Another skill that a ton of bosses have in their lists, which is in most cases outright gone is Teleport. Of course, they still have their Rude Attack teleport, but many other bosses can Teleport every 20 seconds or so, which is unspeakably annoying, because you spend 2 minutes finding them again, hit them once, then they just do another teleport. A few bosses can still do this, generally with a cooldown of about 2-5 minutes, but most can't. There are a couple skills like Crimson Marker and Wrath of the Sun, Moon, and Stars (which seals teleporting and works on bosses) that you can use to counter the ones that can still do it. Most bosses also can no longer cast Heal, but a few still can. So what about the skills bosses can use? In most cases it's still kind of similar to base, but with a few additions and deletions here and there. For the bosses that are totally original, it's generally just based on what I think they should be able to do. For example, let's take a random look at Anglerfish, which is an original boss. Here's a quick look at his skill list: His mob is 2 Tacnu, on a 2 minute cooldown. Tacnus are kind of scary upclose fighters. His standard spells are Lightning Bolt, Thunderstorm, Chain Lightning, and Holy Light. He can cast all of these near-constantly and he has high INT, so this is much of his offense. He also has level 8 waterball, though his waterball is actually interruptable. Obviously, high level Waterball is something you really don't want to be hit with since it hits like 100 times. His melee attacks are Bleeding, Critical Wound, Blood Drain, and Jupitel Thunder (although Jupitel is a spell, he only uses it in melee range). These are less threatening than his spells so melee is a good option when his mob is down. He has Static Field, which is a new spell that was mentioned earlier, this creates damaging electric zones on the ground that can paralyze you. His cooldown on this is pretty short too, so you may have to move him if he spams a lot of these. He has Wide Confuse, which is annoying, as this makes it very hard to move around. You probably want some way to heal this off or be immune to it. Finally, he also has Reflect Shield, though it's a low-level version and on a long cooldown. Obviously, you have to be pretty careful when this is up. So what's the general idea on how you deal with this? For starters, Lightning Armor is pretty strong. It both protects you from most of his spells and gives some defense against Water Ball. If you want more elemental defense you could take additional lightning or water defense, or just MDef in general. His physical attacks aren't that scary if you can get rid of the Tacnus. You probably also want confusion immunity. Then you just attack with strong Earth element stuff or criticals or something, though you may want to be careful of EDP in case he puts reflect shield up and you instantly delete yourself. This is sort of my boss design philosophy in a nutshell. The idea is that you want to know what a boss does, then create a setup to counter that. Since RO gives you so many options to work with, there's almost nothing that's insurmountable with all the tools at your disposal. As such, I basically never worry about whether or not a boss is "too hard" because I know someone will find a way to do it. Worst case there's always boss cards, which can generally turn you into a god with just 1 or 2 of them. Wow, this got surprisingly long, and I haven't even gotten to new skills yet, of which there's a couple. For starters, there's a bugfix. Here's a fun experiment. Play a Rogue and equip a bow. Run away from an enemy, then take a shot at them and use Back Slide. Assuming you clicked directly on them without moving anywhere else first, you'll slide TOWARDS the enemy! What is this "Front Slide" madness?! We only slide back around here! The problem here is that the game doesn't update the user's facing direction when you attack. This is easily fixed by adding this code to unit_attack, unit_skilluse_pos2, and unit_skilluse_id2 (probably somewhere towards the middle of the method, after the validity checks) // make the user face the target if (src != target) unit_setdir(src, map_calc_dir(src, target->x, target->y)); You now properly slide away from your target after attacking. I can't believe it took this long for this glitch to be found. Bow Rogue really is that bad, I guess. Onto new skills. For some time, I've felt that a few classes were a little low on skills, but at the same time I didn't want to give them a ton of new stuff because I didn't want to adjust the balance too much, so it took some time to come up with an appropriate adjustment. Lord Knight now gets Trample. This is a skill I was looking at for a long time. I like that it counters Trap cheese, but I also really don't like the idea of Paladin having it. Paladin is already almost unkillable and having them running around deleting your traps would almost certainly be too oppressive for Hunters. Surprisingly it took me a long time to come up with the rather simple solution of just giving it to Lord Knight instead. It's still a good skill, but it doesn't mesh nearly as well with what Lord Knight wants to be doing, they typically just want to use Berserk and rush the Emperium, which of course prevents you from using Trample since you can't use skills during Berserk. LK is actually deceptively less tanky than you'd think a lot of the time without Berserk, especially where magic is concerned, and Trample has cast time and is even uninterruptable, so you're probably going to have to commit at least some of your build to this if you want it to be effective. I think it's probably best for Blade Beam LKs who might be running Uninterruptable Cast anyway, but that's sort of a niche build and it could probably use the help. Also, I love how the Peco does a little stamp when you use this skill. Speaking of Paladin, they now get Prestige, which is renamed to Divine Will (and has a somewhat weaker effect). Paladin is a funny class in that it got an absolutely massive buff when I first started working on the game via the reworked of Pressure, and I've had to gradually scale back their power to prevent them from being a master of all. As such, while other classes kept getting new skills, Paladin kind of fell behind and now has among the lowest total skill costs of any class, which is the main reason they get this new buff. Divine Will gives you a small boost to VIT Def and a chance to dodge spells. This is a Royal Guard ability, and of all the third classes, Royal Guard probably has the least skills that I've ported over, mainly since I find a lot of their skills really boring and the ones that aren't boring give massive boosts to sustain that Paladin absolutely shouldn't have with the Pre-RE Def formula. Even this skill is maybe kinda pushing it, but it's buried pretty deep in the tree so you're probably not getting it on Magic-oriented Paladin, so it primarily exists to make non-magic Paladin a bit more bulky against spells. Also, the most interesting thing about it is that at level 6+ it becomes a party-wide spell, and I always find team buffs to be interesting. While Paladin kinda doesn't care about getting some flat VIT Def, to a class like Wizard this could be pretty big. Champion also now has a new skill in Full Throttle. On base, this is a skill that everyone gets, but here it's limited to Champion. It's actually an even better skill than in the base game, it retains its "heal to full and get boosted stats and move speed" effect but with no downsides whatsoever, as the rebound debuff is eliminated. Instead, it has a totally different drawback. To use it, you have to be in Fury Status, which it removes, and you can't cast Fury again while it's active, so no Boosted Asura for you (unless you're using Combo Asura and lol Combo Asura). This also means there's an inherent limit to how often you can get the heal, since it has to wear off before you can cast Fury again and thus recast it. This might give you some incentive to only use the level 1 version, which gives almost no stat boost, but doesn't last very long so it's a more reliable heal, though the big stat boost on the level 10 version is also appealing. Either way, it gives Monks something else to do besides combos and Asura, which has always been a challenge. Oh, speaking of Fury / Critical Explosion, it also now shows a status icon that shows you how much time it has left. I've been going through the game and fixing most of the statuses that didn't have this by swapping them to unused EFSTs. Very tech-savvy users might know that Fury's original EFST, despite not having any description, is responsible for the colour change that accompanies Fury's animation, though I ensure that you still get this by also sending Fury's EFST in status_change_start. This also finally allowed me to fix Bard / Dancer's Up Tempo not displaying the quicken afterimage. Last, but definitely not least, we have Whitesmith. I've long felt Whitesmith was one of the most dull classes in the game, and while the new skills have helped a lot, I still felt it was missing something fun. For a long time, I've wished Blacksmith could use more of the weapons it can forge. I'd like the class to be able to use 2 Handed Swords, but this is not attainable without Client Modification. Even if we give them a sprite file for using 2 handed swords, they will always use their Attack2 animation for this weapon type, which is a punch, so it will never look good. Maybe you could make a spear animation for that, but hey, if they already have a decent looking Punch animation, why not let them use Fist-type weapons? Fist has always felt like a bit of an underappreciated weapon type because even though Priests can use it, they basically never want to, but a Brawler like Blacksmith might get some use out of it! Since it just uses Attack2's animation it looks perfectly fine with no adjustments too. Of course, the second I decided to let Whitesmith use Fist Weapons I knew what the new attack had to be. RocketPunch.mp4 GET OVER HERE! This is a heavily reworked version of Mechanic's Knuckle Boost. Obviously, the biggest change is that it now pulls the target towards you, which is a cool effect that nothing else in the game currently has. Besides its obvious PVP uses, I think this is an interesting way to increase Blacksmith's tanking skills, since they can now pull enemies towards them that might try to target backliners. It's also quite deliberate that the pull effect isn't optional - this isn't intended to be a godlike kiting skill or replace the function of Cart Cannon, it's primarily to get enemies in range for a melee beatdown faster. On a technical level, you might notice that the pull effect isn't instant, it occurs after the damage. Most skills that do knockback actually inflict the knockback before the damage, but in this case this would cause the actual projectile to visually miss, which is very lame, so here the pull effect is a "timerskill" that occurs 200ms after the damage packet. There's also a bit of a weird issue where this attack normally locks the Whitesmith into a strange hammer animation that they can't directly attack out of, which is why the skill does 2 hits, with the second being a normal attack packet. It took a deceptively long time to get this skill working properly, but I'm very happy with the result. Well, that's it for now. This is probably the end of major skill changes, though I say that every time. Still, there's now not really any classes where I'm unhappy with their skill selection, which is a good feeling. It took a long time to get here.1 point
-
My server started out simply by implementing content into PRE-RE that already existed in the game, but was exclusive to Renewal, and then when I ran out of Renewal content I started harvesting content from the Korean version, and then the alpha, but we've reached the point where there simply isn't any more content that is usable for what I want to do. Actually, we probably reached that point a few months ago. Unfortunately, I still have new ideas. While the "present" on my server is pretty well filled with stuff, there are still a few places in the past that feel a bit sparse. As such, I had an idea for a castle in the middle of the desert that would feature the "abyss arthur" boss, which is one of the only MVPs that isn't in my server already. I knew there was an unused desert castle map at moc_vilg00 that I don't use because I don't think the past version of Morroc particularly needs to have a castle (and Morroc's Fortress is south of it), so it was just sitting around unused in the GRF. There are also a couple maps representing the inside of the castle, which also might be usable. The outside map is actually kinda usable! It'll only be enterable from one side (the bottom) and I'd like to move the castle up towards the top of the map so there's more space, but this is a good start! The inside maps, though, are just a mess. Renewal actually has a few maps like this (ie, Octopus Cave, Misty Forest Labyrinth), but they simply don't play well (neither of these maps are on my server). Having a map that's made up exclusively of extremely small rooms with teleporters every few feet gives you no space to fight, and it's very common to teleport into a room full of enemies and get ganked immediately. These maps are also designed solely as indoor maps and thus only have walls on the northeast side, as the indoor camera doesn't allow you to rotate the map any other way. These are not usable. So if I wanted to make this dungeon, I'd have to create the indoor maps from scratch, which is far more complex than anything I'd ever done with the map editor before. However, at least I have the old maps as a general guide for the aesthetics of the map, as I do like the general feeling of these maps, they're just not suitable for gameplay. The first step was to alter the outdoor map to move the castle. This was comparatively fairly straightforward. There's no kind of "multi select and drag" feature here (at least, not in this old version of Browedit), so I had to move the terrain and objects manually, but having the old version as a guide this was not overly hard. I did have to learn a fair bit about how walls worked for this (as the moat around the castle has a ton of walls, which was useful practice for later. Here's my version of the outdoor map. It's a little more open, befitting its status as a combat map, but it's still pretty similar overall. Now came the hard part, creating the indoor maps. For each one, I started out with the floorplan, just laying out the rooms and hallways using texture tiles, then building walls around them, and finally filling them with objects. Here's my version of the upper floor of the castle. This has a sort of generally similar feel to the original, and in particular I liked the idea of the water room, which I kept and expanded for my version. It feels appropriately decadent for a desert castle. And here's the bottom floor. This part of the castle has more of a pyramid feel. I like the idea that perhaps the castle was built on top of an ancient tomb or some such. It's also divided into two halves that are linked by a portal, making it feel a bit more like it's in three pieces. The boss always spawns in the big room in the upper right. I learned a ton about the way Ragnarok maps are constructed while working on this. For example, let's take a look at this guest bedroom on the lower right of the upper floor. You might think that those paintings on the walls are objects, for example, but they are actually simply wall textures, and ditto for the windows. The wall graphics contain a ton of different variants for different wall textures, all shoved into the same texture file, and the walls are made out of one section of that larger texture. Similarly, those carpets are floor textures, but do you think they store the entire carpet? Oh no. Only the corner is actually part of the texture, which you then have to rotate and overlay upon itself to create the full thing. These sorts of little efficiencies are everywhere. Many of the objects you see in the maps are actually made up of multiple objects. For example, let's appreciate this little shelf in Payon: You might think this is a single object, but no, this is dozens of objects meticulously aligned together. Each one of those little sets of 2 doors is an object. So the bottom layer is made up of 3 objects, and so is the second, the third layer is 4 objects, The top 4 rows are made up of 10 objects each! It probably took an hour to create this shelf, and this house has two of them on opposite walls. For as many crazy things as I've done with Ragnarok, I can't even come close to what the original creators did. It's amazing how much they were able to do with such a simple engine. It's probably part of why the game feels as compelling as it does, and how it's still interesting to tinker with even 20 years later. With the maps finally done and added to the game, it was time to fill them with enemies. Having gone to all that work, simply adding effects to clone monsters using monster_size_effect_sak_new.lub didn't feel like enough, so I used my newfound knowledge of how to recolour sprites to create some entirely new palette swaps. I quite like the new blue bird. I also went back and created new sprites for a few enemies who just had effects before, like this harder version of Isis from Past Pyramid. Dang, I kind of want a Green Isis pet now. Adding new sprites to existing monsters is quite easy, you just have to change their sprite file in jobname.lub and add the new act and spr files to the monsters folder in your GRF file. I also went back and improved the dungeon I made out of 1@jorchs some time back. It now has significantly more objects. I had wanted to put lab objects in here before, but slabw doesn't load in my browedit for some reason. However, 1@lab and biolab both load, so I was able to steal some of their objects. This map is much creepier now. Anyway, that's enough map editing for now, and hopefully for quite some time, as I think the past finally has enough dungeons now. It definitely gave me a deeper appreciation for the map design in this game, and makes me even more impressed with Toy Factory, which I've always considered to be the best-looking map in the game. Look at how many different texture pieces are used in this tiny section of the map. The attention to detail is crazy. Seriously, open this map up in the editor, it's worth seeing how this was put together. It just goes to show that there'll never be another Ragnarok. The amount of love and care that went into this game isn't something you see every day.1 point
-
Well, break time's over, I'm back to it with more crazy new mechanics. I know what you're thinking: "I love the Bard / Dancer class, but I'm a total loser with no friends so the party support aspect of the class isn't useful to me!". Well, there's an easy solution to that problem, we'll just have to make some friends! Not through tedious social interaction, but with a new skill! Introducing Captivate, a new skill for Bard / Dancer. Just find a friendly-looking mob and cast the skill on them to make them your new friend! (This spell does have a lengthy cast time so if you're planning to cast this on a hostile mob or a monster that can cast-detect you might want to find a source of uninterruptable cast) After captivating your target, they'll follow you around and attack things that attack you or that you attack, kind of like a pet. If you'd prefer to take a more active approach, you can also direct them using the Conductor skill: Go my minion! You can even support your new friend with your song and dance abilities to enhance their fighting abilities or heal. Of course, nothing lasts forever. After the skill's duration expires you'll be all alone again. But there's plenty of mobs in the dungeon! Now to have my new friends do my dirty work in PVP. The way this works under the hood is that when you use the spell on a monster, they are despawned and recreated as a minion using "mob_once_spawn_sub", similar to AM_CANNIBALIZE. Most of the heavy lifting is already done by the follower AI, though some tweaks to "battle_check_target" were needed to allow mobs and players to attack them. At any rate, I think this is a fun ability. It's not actually super powerful (of course, you can't use it on bosses or monsters that are higher level than you, and it has a cooldown so if you're going through minions fast you'll have to wait), but it's unique and I think it fits with the character. Speaking of minions, Blacksmith also now has the ability to summon these. Nothing crazy here, this was already a Mechanic ability that has few changes. For Blacksmith, you need the forging abilities to learn this skill, which gives forgers a little more offensive presense. Also, I fixed the Magic ones. In the base game, they're all Yellow, regardless of element, so I recoloured them to match their element. Here are the fire and earth ones. It turns out this is actually super easy. Using Act Editor, you can use the "Quick Palette Edit" to instantly swap out the colours across the entire Act file. It only took a couple minutes to create the palette swaps. I encourage anyone else who wants them recoloured to learn how to do this, because you could easily use this to recolor other sprites too. Makes you wonder why Gravity didn't bother.1 point
-
Apparently my forum account is now 1 year old, which means it's also been a year since I started working on my server. I actually haven't made a ton of big changes since the last post, mostly small tweaks like bug fixes and the occasional new item or enemy. Still, I wanted to put up some sort of update, so I decided to make a video showing some gameplay of the past area. I've thought about doing a video before but I've held off on it because Gravity is apparently pretty aggressive with takedowns, so it's unlisted (and all of my videos are unmonetized anyway). I still may not leave it up forever, so enjoy a brief look at past gameplay (make sure to set the video to 1080p in case it doesn't do that automatically).1 point
-
Another small update, but no less time-consuming. I got my hands on the GRF file with the information from the beta, and I was able to harvest the last removed map, etc_cave01. This map did not initially load properly as its textures are looking at some nonexistent location, but hex editing the GND file easily allowed these to be replaced. It seems to use the same textures as Dungeon001, so I've added it to the game as another floor to that dungeon. There's a few new enemies here, like Papare and that Black Bat enemy. I found a new item I wanted the black bat to drop, the Black Devil Mask. It's a neat-looking mask that covers one eye. However, there's a big problem with it! If you turn in certain directions, the eye that it covers changes! This looks super stupid and I wasn't willing to put it in the game like that. So, because I'm way too picky about stuff like this, I decided to see if I could fix the sprite myself. There's a pretty good tool that can be used to do this called Act Editor which I used a little bit before for editing enemy sprites. A naive person (ie, me before I did this) would probably think that because the character can be displayed from 8 directions, this will only require 2 new sprites (only 2 directions are messed up). Oh no. The game manually specifies the position of the headgear for every possible animation frame the character can have. I'm sure there's probably some automatic way to update this but I didn't find it, I just did them all manually by calculating how much the sprite moved each frame. There are also different sprites for male and female characters since they have different animations. This took a while. Since I was already spending my whole evening on this, I decided to see if I could fix the Kitty Band as well, which has a strange issue where the inside of the ear always faces outward regardless of which direction you face, causing people on my server to joke about it being the worst headgear in the game. This was comparatively much easier because I didn't have to reposition anything, I just had to add some new sprites and then swap out the sprite index in the animations. Interestingly, the male act file for the Kitty band already specifies a back sprite, it's just identical to the front sprite, but the female act file does not. Did two different people work on these? At any rate, here's what they look like once they're fixed. Should you want these sprite edits for your own server, I've attached a GRF file that contains the updates. You'll probably just want to merge this into one of your grf files, since it's very small. headgearfix.grf1 point
-
I saw a lot of posts about this over the years, but none seemed updated for the most recent version. I recently spent a lot of time on pets, so here's a quick guide. I did everything for pre-renewal, but I would imagine most of this would work for renewal too, you might just need to add some stuff about evolution. What you'll need: GRF Editor SDE (Server Database Editor) Both of these can be found elsewhere on this forum and are used for most things involving editing your server. Understanding GRF files: When the client needs a file, it searches through the GRF files in a certain order to find it. The order it uses is specified in data.ini in the client's root folder. Mine looks like this. [Data] 0=rathena_resources.grf 1=pre20190427.grf 2=renewal20190427.grf 3=palettes.grf 4=data.grf 5=rdata.grf It looks in files that are higher in the list first. This means rathena_resources.grf is checked first, and rdata.grf is checked last. This means that if I need to override a file which is normally in data,grf, I can simply add it to any grf file that is higher in the list, and it will be used instead of the one in data.grf, without having to modify that file. Since rathena_resources.grf is first in the list, it's easiest to add your files to that. Getting started with your custom pet: The first two things your pet needs are an egg and a taming item. For eggs, I simply chose to replace an existing pet egg that was unused. In Pre-Re, there aren't any unused eggs, but we can fix that. In a text editor, open up the item_db.txt file for renewal, which is under your db/re folder. Search for 9001, which will get you to the beginning of the pet eggs. Renewal has tons of them! Copy and paste all the eggs that renewal's item_db has into pre-re's item db, and now they'll be available for pre-re to use. Now open up SDE. To add an egg for your new pet, all we have to do is rename it. Use the item search and find an egg you don't care about. Change its Aegis Name and Name to be the one of the pet you want. For example, I made Garm Baby, so the Aegis name is Garm_Baby_Egg and the Name is Garm Baby Egg. This part is done. Now we need a taming item. It's easiest to make a taming item by using a miscellaneous item. For Garm Baby, I used Nursing Bottle. To turn this item into a taming item, first we have to change it from a Misc Item to a Usable item, which is done using the dropdown in the upper right. We then need to set the Applicable Job to FFFFFFFF, upper to 7, and Gender to Both. Now we need to set the script. The script must look like this: pet 1515; Except that the number must match the id number of the enemy you want to be able to capture. Look this up in the mob database. You might want to modify the drop rates on your item through the mob database too, particularly if it's an item that no one in the game drops. Most pet items also have a sell price of 2500 and a weight of 50, if you want to be consistent. Use "save database (quick)" to save your changes. We're done with SDE for now. Adding your pet to the game: The next thing to do is to add your pet to pet_db.yml so it can spawn into the game. The installation I have actually breaks pet_db.yml into two parts. There's one file inside pre-re that contains the pet's basic information, and one inside import that contains its skill information. You could merge these files if you wanted, but if not you'll need to update both. There are already a bunch of entries in this file, so you can probably just copy one. Note that when it comes to yaml files, the spacing of the file is important, so make sure you copy it exactly including the spacing. Here's the one I used for Garm Baby. - Mob: GARM_BABY TameItem: Milk_Bottle EggItem: Garm_Baby_Egg FoodItem: Ice_Piece Fullness: 4 IntimacyFed: 10 CaptureRate: 500 Script: > .@i = getpetinfo(PETINFO_INTIMATE); if( .@i >= PET_INTIMATE_LOYAL ){ bonus2 bResEff,Eff_Freeze,5000; } The entries for MOB, TameItem, EggItem, and FoodItem are all Aegis_Names, you can look these up through SDE. For example, the Nursing Bottle's Aegis Name is actually Milk_Bottle. The script is something you'll have to come up with on your own. There's a bunch of examples in the file already you can draw on. My script makes the pet give you 50% resistance to the freeze status. If you want the pet to use skills, you'll need to update the other yml file inside import. Garm Baby has this inside that file: - Mob: GARM_BABY AttackRate: 8000 RetaliateRate: 8000 ChangeTargetRate: 800 SupportScript: > petskillattack "MG_FROSTDIVER",5,10,30; The main thing we care about is the SupportScript. This is what attack your pet will use. Here, this pet uses Frost Driver level 5, between 10-30% of the time depending on how happy it is. For a support skill, you use petskillsupport instead, with values like this one: petskillsupport "HP_ASSUMPTIO",1,80,100,100; This pet would cast Assumptio level 1 with an 80 second delay, when your hp and sp are 100% or less. There's also stat bonuses available: petskillbonus bLuk,5,20,40; This pet gives a bonus of 5 luck for 20 seconds, with a 40 second delay between uses. For more detail, look in script_commands.txt within Rathena's doc folder. With this, you can now restart your server and your pet will exist in the game! There will still be a bit of jank, for example its egg won't show the right name on the client, it won't have a picture, and it won't talk, we'll discuss how to fix that next. Fixing your pet's egg entry: This one is fairly easy. Navigate to your client folder and open up System/iteminfo.lua This is where the game stores all the item translations. Find the egg that you used by searching for its item id inside square brackets, like this [9001]. The description will be listed here. If you added a completely new egg, it won't be in this file and you'll need to add an entry for it. Update the name so it shows the right name. You can also add a description if you want. Mine looks like this, but it doesn't need to be this fancy. [9108] = { unidentifiedDisplayName = "Garm Baby Egg", unidentifiedResourceName = "¾ðµ¥µå¾Ë", unidentifiedDescriptionName = { "..." }, identifiedDisplayName = "Garm Baby Egg", identifiedResourceName = "¾ðµ¥µå¾Ë", identifiedDescriptionName = { "An egg in which a Garm Baby Cute Pet rests.", "Can be hatched by using a ^33CC33Pet Incubator^000000.", "^33CC33Special Power ^000000:", "Casts level 5 Frost Driver against the enemy", "^33CC33Loyal Bonus^000000", "Increases resistance to the Freeze status by 50%", "Class:^6666CC Monster Egg^000000" }, slotCount = 0, ClassNum = 0 }, Adding a picture for your pet: Every pet has a little picture that is displayed in their pet window. If you don't do this step, it'll just display NO IMAGE. This is not cool, so let's add an image. This requires GRF editor. To start with, you should probably open up data.grf, just to know how it's structured. Images for pets are stored in data/texture/userinterface/illust . If you search this folder for "pet", you'll see the existing images. They are all 90x134 pixels, your image will need to be this size too. Name it something like pet_garm_baby.bmp. You could just upload your file into data.grf, but data.grf is huge and thus it's slow to send update to this file to your players. Instead, it's easier to put it into rathena_resources.grf. It does not have this folder, but you can create it using GRF editor. Remember, any files you put inside something higher in the list of GRF files will override the earlier files. After adding your file, you'll notice that it won't actually display in game. This is because there is also a table of pets in the application that maintains the paths to the images that you need to update. This file is called petinfo.lub, and it is stored inside data.grf in the folder data/luafiles514/lua files/datainfo. We'll need to make a copy of this file, so extract it using right click extract with GRF editor. This file needs specific encoding to read the Korean characters, so make sure to save the file with ANSI encoding when you're done. There are many tables in this file that you'll need to add your pet to. Generally, you can follow the format they use. You'll notice that most of the entries use an identifier that looks like this: [jobtbl.JT_GARM_BABY] = "GARM_BABY", This is an entry into the file jobidentity.lub, which is in the same folder. You should not need to modify that file, pretty much every enemy in the game is already in there, just enter your pet's Aegis name here, in all caps. When you come to this table: PetEggItemID_PetJobID You'll need to give your pet a new JobID, you can just assign a new one at the end. When you're finished updating this file, add it into your rathena_resources.grf, making the same folder path for it as above, so it will overwrite the one in the base game. Make sure to save your GRF afterwards. If you find that the pet accessories on your server no longer work after doing this, you saved the file with the wrong encoding. I fixed this by switching all the pet accessory files to the english names and adding them all to my GRF files, but the smart way is probably just to use a text editor that handles encoding properly, like notepad++. Making your pet talk: To make your pet talk, it needs entries in pettalktable.xml. For me, this file was in my renewal.grf file, in the data folder. This is fairly straightforward, you can just copy and then modify Poring's entry. You just need to know what to put for the enclosing tags. The name must match the entry you made in the PetNameTable inside petinfo.lub. I put the name "GARM_BABY" for my pet, so the tag must say <GARM_BABY>. For some reason, my pets only talked when I put their entries near the beginning of the file. I suspect one of the entries inside the default file has an error in it, but I haven't found it. Either way, adding them to the top of the file is safe. With all of this stuff done, just save your GRF edits and restart the game (it's not necessary to restart the server for GRF changes) and hopefully your pet should talk and have a picture! Once you confirm everything works, you'll need to distribute the changed grf files and iteminfo.lua to your players. It's probably worth adding all your custom pets to the server first before you open in to the public! I'm sorry that this was long, no one said custom pets were going to be easy. Hopefully it all works for you.1 point
-
@Eros @Haruka Mayumi You can remove ID of this effect from "..\data\luafiles514\lua files\effecttool\forcerendereffect.lub" Fury Cast Animation == 2611 point