Jump to content

Dragonis1701

Members
  • Posts

    96
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Dragonis1701

  1. I'm trying to use OnNPCKillEvent to make an item appear on the floor where the monster that was killed died. I don't really know what the command is to do so, though. I saw that I could also just use addmonsterdrop but that would require me to write a line for every single monster. Does anyone know if what I'm asking for already exists?

  2. I have a home-run server (rAthena from 2016) that runs on the computer I have for daily use. I noticed that after partying in groups of five or more (usually just two active users but the other three being auto-follows) clients will disconnect. This seems to occur after the player stands still for about 30 seconds. I have no idea why it is occurring. I can offer my server files for people who may want to experiment and see what the issue is. If you need any specific information, on the settings, just ask away~

    Edit: Some more information: Clients that are logged in but not a part of the party are unaffected by the disconnect. It seems to occur from a lot of non-stop or very few pauses in movement.

  3. On 11/22/2019 at 7:48 AM, tribal0306 said:

    You must state share on the forums what is the answer to your question. even if its you the original poster who figured it out.

    Thank you have a nice day.

    Sure. I just had the use script check if the player has a specific card equipped when you use the item. So, if you use a fire elemental resistance potion, I have it check if the player has a pasana card in their armor when they use it. Looks like this:

    12118,Resist_Fire,Fireproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getequipcardid(EQI_ARMOR,0) == 4099) { sc_start4 SC_ELEMENTALCHANGE,180000,2,Ele_Fire,1,0; } else { sc_start4 SC_ELEMENTALCHANGE,180000,1,Ele_Fire,1,0; } },{},{}
    12119,Resist_Water,Coldproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getequipcardid(EQI_ARMOR,0) == 4089) { sc_start4 SC_ELEMENTALCHANGE,180000,2,Ele_Water,1,0; } else { sc_start4 SC_ELEMENTALCHANGE,180000,1,Ele_Water,1,0; } },{},{}
    12120,Resist_Earth,Earthproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getequipcardid(EQI_ARMOR,0) == 4101) { sc_start4 SC_ELEMENTALCHANGE,180000,2,Ele_Earth,1,0; } else { sc_start4 SC_ELEMENTALCHANGE,180000,1,Ele_Earth,1,0; } },{},{}
    12121,Resist_Wind,Thunderproof Potion,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if(getequipcardid(EQI_ARMOR,0) == 4098) { sc_start4 SC_ELEMENTALCHANGE,180000,2,Ele_Wind,1,0; } else { sc_start4 SC_ELEMENTALCHANGE,180000,1,Ele_Wind,1,0; } },{},{}

    For those thinking it might be exploitable for people to wear a fire armor, use a potion and then armor switch to get the benefit without the drawback of losing the armor card, I have added in pc.c:

    status_change_end(&sd->bl, SC_ELEMENTALCHANGE, INVALID_TIMER);

    under:

    if (sd->status.inventory[n].equip & EQP_ARMOR) {

     

     

    • Upvote 2
  4. Having it so that it shows the monster's HP bar to all players that see the mob could work, too, but the reason I want to add these players to the damage log, is so that the hp bar updates when the mob takes damage/is healed. This way it's more fluid looking instead of just showing the HP bar but the bar does not change regardless on if the mob takes damage or not.

  5. Similar but not quite the same as:

    Is it possible to have the HP bar of a monster display to a party member when one person in the party attacks a mob and update the bar as the mob takes damage? Currently it only updates if the party member also damages the mob but I would like it to update in real-time as the mob is being damaged, for all players in the attacking player's party.

  6. 4 hours ago, nitrous said:

    There's a scroll for holy armor, you might be able to use that.

    http://ratemyserver.net/item_db.php?item_id=14540&ird=0&small=1&back=1

     

     

    That works perfectly. Is there a way to make it so that, if the player is equipped with X element, for example fire, and then uses a fireproof potion, that the player's element becomes fire level 2?

     

    Edit: Nevermind. I figured it out. 😃

  7. I wanted to make the elementproof potions a player acquires from the Plasma card similar to as if the player had a card that set their armor to that element. SC_Armor_Element gives a player bonus2 bsubele +75 for three minutes. This has worked fine so far but I ran into a bit of a hiccup. If a player has another bsubele boost, such as Valk Shield's +20, instead of it being an 80%  reduction in damage, it is a 95% reduction in damage from that element. Is there a way to easily have SC_Armor_element set an armor as a temporary element or is there no way around it? I experimented before with it and tried to get the potion to set an armor element for a set period of time but didn't succeed in my attempts. I would succeed in getting the potion to set the element but the element would not return to normal after the potion wore off.

  8. 15 hours ago, Functor said:

    High Priest doesn't have it by default for "Kyrie Eleison".

    Server without my modification in "clif_skill_nodamage": https://i.imgur.com/k1IypvL.gifv

    Server with my modification in "clif_skill_nodamage": https://i.imgur.com/glCSiLi.gifv

    So, my modification doesn't change anything on High Priest.

    Oh, I'm sorry. For some reason I really believed that Kyrie Eleison had a successful cast animation for the priest for some reason. Thank you for all your help~ 😃

    • Upvote 1
  9. 12 hours ago, Functor said:

    At first, you should show me your modification. I can say nothing about modification which I don't see.

    Sorry.

    Skill.c:

    case PR_KYRIE:
    	case MER_KYRIE:
    	case SU_TUNAPARTY:
    	case SU_GROOMING:
    	case SU_CHATTERING:
    		clif_skill_nodamage(bl,bl,skill_id,skill_lv,
    			sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
    		break;
    case AL_ANGELUS:
    	case PR_MAGNIFICAT:
    	case PR_GLORIA:
    	case SN_WINDWALK:
    	case CASH_BLESSING:
    	case CASH_INCAGI:
    	case CASH_ASSUMPTIO:
    	case WM_FRIGG_SONG:
    		if( sd == NULL || sd->status.party_id == 0 || (flag & 1) )
    			clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
    		else if( sd )
    			party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
    		break;
    case BS_ADRENALINE:
    	case BS_ADRENALINE2:
    	case BS_WEAPONPERFECT:
    	case BS_OVERTHRUST:
    		if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) {
    			int weapontype = skill_get_weapontype(skill_id);
    			if (!weapontype || !dstsd || pc_check_weapontype(dstsd, weapontype)) {
    				clif_skill_nodamage(src, bl, skill_id, skill_lv,
    					sc_start2(src, bl, type, 100, skill_lv, (src == bl) ? 1 : 0, skill_get_time(skill_id, skill_lv)));
    			}
    		} else if (sd) {
    			party_foreachsamemap(skill_area_sub,
    				sd,skill_get_splash(skill_id, skill_lv),
    				src,skill_id,skill_lv,tick, flag|BCT_PARTY|1,
    				skill_castend_nodamage_id);
    		}
    		break;

    I changed the first "bl" after clif_skill_nodamage to src, so that players in the same party that are affected by these skills no longer do an animation for receiving these party buffs. This works fine but Kyrie is different, being a cast on target skill vs. a party one. This makes it so that Kyrie will always give a visual animation to the priest, as well, if I want to avoid the cast animation on the targeted player.

     

    Clif.c
     

    if (skill_id == PR_MAGNIFICAT) {
    		clif_specialeffect(dst, 76, AREA);
    	}
    	if (skill_id == AL_ANGELUS) {
    		clif_specialeffect(dst, 41, AREA);
    	}
    	if (skill_id == PR_GLORIA) {
    		clif_specialeffect(dst, 75, AREA);
    	}
    	if (skill_id == SN_WINDWALK) {
    		clif_specialeffect(dst, 389, AREA);
    	}
    	if (skill_id == BS_ADRENALINE) {
    		clif_specialeffect(dst, 98, AREA);
    	}
    	if (skill_id == BS_ADRENALINE2) {
    		clif_specialeffect(dst, 98, AREA);
    	}
    	if (skill_id == BS_WEAPONPERFECT) {
    		clif_specialeffect(dst, 103, AREA);
    	}
    	if (skill_id == BS_OVERTHRUST) {
    		clif_specialeffect(dst, 128, AREA);
    	}
    	if (skill_id == PR_KYRIE) {
    		clif_specialeffect(dst, 112, AREA);
    	}

    If I try to use clif.c to return fail to skip the animation, it looks weird on the player's screen and also takes away the cast animation from the priest, which I would prefer to keep. It seems I can't really take away the visual animation from over the priest's head without having more knowledge on how the entire thing works.

  10. 2 hours ago, Functor said:

     

    Open ../src/map/clif.cpp and in the function clif_skill_nodamage after:

    	nullpo_ret(dst);

    add:

    	if (skill_id == PR_MAGNIFICAT) {
    		clif_specialeffect(dst, EF_MAGNIFICAT, AREA);
    		return fail;
    	}

     

    Thank you, this is what I needed. I kept the changes I made to skill.c because I still want the caster to have the animation, just not the party members/target. I added:

    if (skill_id == PR_MAGNIFICAT) {
            clif_specialeffect(dst, 76, AREA);
        }


    for each skill that caused an animation in clif.c under clif_skill_nodamage. It all works great and looks good in-game but, of course, there's one oddity; Kyrie Eleison. Now the target is no longer hit with an animation but now the priest that casts Kyrie Eleison also has the Kyrie Eleison effect player over their head, as well as their target. How do I fix that?

  11. Update: Took away that code from clif.c and instead changed the clif_skill_nodamage's first "bl" in magnificat and other like buffs skills that target a party member, to src in skill.c. Now it shows the buff animation over the buffer but not over the party member. It's strange but Assumptio uses the same method but Assumptio's animation plays over the targeted player. Why is that?

  12. I'm trying to figure out how to remove the player doing their standard skill animation from, for example, Magnificat but maintaining the visual effect of Magnificat when it affects a player. Is that possible? I have added if (skill_id == PR_MAGNIFICAT) return fail; under clif_skill_nodamage but that takes away both the player animation and the visual animation from Magnificat. Is there a way to keep one but not the other?

     

    Edit: To add a bit more clarity, I want to know if it's possible to have magnificat's animations work like blessing, where it shows the blessing on the player but does not trigger an animation that stops movement or attacking.

  13. I just implemented a feature I've been putting off scripting because I'm bad at scripting, Infusions. I took all cards that are "Get X item when you kill Y" and made them available for infusing into those closed card slots on Accessories and Headgears. This cards are

    Headgear:
                Cramp
                Dryad
                Giant Hornet
                Knocker
                Leaf Cat
                Leib Olmai
                Myst Case
            Accessory:
                Anopheles
                Armeyer Dinze
                Baroness of Retribution
                Blazer
                Cloud Hermit
                Dragon Egg
                Rice Cake Boy
                Galapago
                Gargoyle
                Gremlin
                Grove
                Hermit Plant
                Jing Guai
                Marin
                Mimic
                Orc Archer
                Plasma
                Raydric Archer
                Sage Worm
                Sea-Otter
                Sleeper
                Snowier
                Spring Rabbit
                Stem Worm
                Tengu
                Wraith

    It costs 400k and each armor piece can hold three, if slotted, and four if not slotted. I feel this gives some use to these cards as most of the time they're just not good enough or the item they provide is not good enough to warrant sacrificing the slot during normal gameplay. If any of the cards had an additional effect aside from the bonus item, the extra effect was removed.

  14. I believe dispell already does remove bard/dancer skills when the player is outside the effect area. 

     

    Buff icons are kind of difficult because of how the status icons are coded unless it was changed from when I last looked. It will give your player a buff icon that lasts three minutes but the icon will disappear if the player is outside the song effect area for twenty seconds. 

  15. For the status.c, 1st part: Case BL_Pet, BL_Mob, BL_Mer and BL_Elem is for Pets, Monsters, Mercenaries and Elementals. 2nd part: BL_Hom is for Homunculi and BL_PC is for players. Change the:

    return status->int_ + (status->int_ / 2) + (status->dex / 5) + (status->luk / 3) + (level / 4);

     to:

    return status->int_ + (status->int_ / 6) * (status->int_ / 6) + (status->dex * 3 / 5)

     

    Then for the max magic part change the same portion, the part under BL_PC from:
     

    return status->int_ + (status->int_ / 2) + (status->dex / 5) + (status->luk / 3) + (level / 4);

    to:
     

    return status->int_ + (status->int_ / 5) * (status->int_ / 5) + (status->luk * 3 / 5)

     

    • Love 1
  16. Currently, Banshees can throw down an evil land, which lasts 30 seconds, die, then evil land stops dealing damage until the Banshee respawns and then the evil land starts dealing damage again. Is there a way to make evil land's instance end and disappear on death?

  17. Today I spent about five hours adding new costumes for each headgear quest. Players will now obtain a costume version of the item they just completed the quest for. Binoculars, Helmet of Orc Hero, Opera Masque, etc. This will be the only way to get these specific costumes and I think it adds more use to those quests in general. Some headgears are nice looking but you don't wanna equip them because their effects are bad and some of them are too simple to warrant the 50 decent coins, imo. I feel it's a good inbetween move.

  18. I've been debating making a Discord to more easily document my changes for those that are interested but that requires me organizing my mess of a changelog. I quite often tweak or change things but some are too insignificant alone to post but could be worth mentioning all at the same time but, by the time I get a decent stack, I don't always remember everything I've done. Something worth mentioning I did earlier was I tweaked Dispell to be more uniform. Some buffs that target equipment don't get dispelled on Dispell/Death such as EDP. Some usable items that grant buffs, Hit I believe and Atkpotions, don't go away on Dispell/Death. I think this is strange and inconsistent, so I changed it to where any item that grants a buff no longer goes away on death or dispell and any skill that targets equipment rather than the player themselves also no longer goes away on dispell/death.

    I also lessened the time that the airship takes to run it's route; roughly 80% shorter. I added a sign at the entrance portal of Bio F3 that is only there if the Mvp is dead. A tomb of sorts so people can know quickly if it is up or not. Lowered the requirement of Crystalized Teardrops on Laphine Craftsman from 15 to 5. Added an "As Many As Possible" to Tripatriate's Union Feud NPCs turn-ins. Added portals to the Guild SE Dungeon Floors that were missing that lead back outside. But these are all pretty minor changes imo.

  19. I was talking to my partner about what Mvps we could do together once I finally found a marc card, because I also play on the server that I am working on to better find bugs and just 'cause I like RO, and one of the bosses was Ktullanux. I realized that, other than the Ice Necklace Quest, there was no other way to acquire more Freezing Snow Powder. It feels like a bit of an oversight that in order to summon the boss again, you need to get a character to base level 70 to do the quest. This is by far the highest requirement, especially since the server is 1x, to summon a boss and seems a bit strange to population-lock a boss like that. So, I implemented Freezing Snow Powder as a drop from all mobs in Ice Dungeon, excluding Iceicle, at varying rates. It was added to Siroma at 0.01% base, Snowier at 0.03% base, Gazeti at 0.08% base, Ice Titan at 0.10% base and Ktullanux at 30% base. I say base because my server has the +0.01% drop rate to all drops below 50%. So, that would make it 0.02, 0.04, 0.09, 0.11 and 30.01 across the mobs respectively. I never really gave Ktullanux much thought but I think this is a pretty decent change that should allow it to be summoned more often and would perhaps lead to an uptick in Ice Dungeon parties, as now, if you stay long enough, you can summon the boss.

  20. After hopping from server to server, I found that most servers had the same bugs that most people would suggest to be fixed after the server officially opened. I started to compile a list and post my list on the forums before the start of every server I played on. Being young at the time, 18 or 19, I thought maybe I could make a server, not knowing how much work really went into it. The seed was planted, though, and it stayed buried for a long time until about four years ago. I had just got done playing on a 1x server on renewal. It was fun and challenging in a few ways I didn't expect, mainly on the tedious spectrum and being used to autoloot. Unfortunately, the server died. A player from that server showed me how to set up my own instance of RO on my own computer and I could modify it to my liking but it needed a name. I wanted to make a good server, as most of us do, but I was no longer cocky. I knew being an admin was hard but I wanted to strive for something better than okay, something... decent. And thus the name was born.

    That preamble out of the way, I decided to just roll with what I was most comfortable with. Pre-renewal with some, pretty standard, tweaks and most of the usual suspects fixed. I taught myself script, so I'm pretty bad at it and most likely make redundant scripts but I've been able to get away with doing what I need to and, if I can't, I beg on these forums. It had to have BG and everybody loved eAmod BG, so I looked up the scripts for that and tried to get it to work. It needed some tweaks but I managed and, as far as I can test with one person running ten clients, it seemed to work properly with some play testing. Then I turned my eye to some normal features I felt were lacking: Pets, picking up loot, new content, etc. It was around this point I started modifying the src. I'm no where near even half decent at src modification but I've been able to put together how to get an idea of what is happening. It's allowed me to really make some decent modifications.

    I brought back pets fighting (not sure if that's enabled in renewal now), added arealoot with some bothering of Playtester, and started tweaking some renewal content. I've managed to get what I feel are some decent tweaks to New World, Dicastes, Mora, Old Glast Heim and Dewata. I implemented the pre-renewal Brasilis with some minor modifications. I've implemented all renewal cards, excluding maybe four or so.

    The amount of random tweaks I've made to this server I feel really make it stand out but I'm too worried, anxious and just scared to release it. I came close one time but then maintaining a website, finding the correct server to host it on and just the pressure of being an official admin was too much and I canceled.

    My changelog is pretty detailed and I've been adamant about making sure I write down every change or fix I make to the server. If you'd like to discuss, especially my unfinished ideas, I'm glad to hear feedback. Here's the link: https://pastebin.com/YCf0vnXp

    • Upvote 1
    • Like 1
×
×
  • Create New...

Important Information

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