grenat50 Posted January 21, 2022 Group: Members Topic Count: 15 Topics Per Day: 0.01 Content Count: 69 Reputation: 79 Joined: 02/20/20 Last Seen: December 1, 2024 Share Posted January 21, 2022 View File Unimplemented Official Skills After the success of our previous release Battleground Extended , Mystic Project has decided to release another work for free in the community of rAthena - The Gravity's Unimplemented Official Skills. We've long heard about them since the beginning. I've seen posts of people wondering if there was any releases of them. It took a while but here it is. We did some researches about what was intended by Gravity. I think we came close to the initial project with a few modifications. What are the Unimplemented Official Skills ? Unimplemented Official Skills are skills designed by Gravity long ago that have never been released. They were forgotten / dropped by Gravity. On iRO official wiki, you can see some informations about them. For example: Fire Ivy - iRO Wiki Classic Forgotten Skills List and Effect: Fire Ivy: Wizard has plenty of fire skills, as it was supposed to be an immobile skill that causes damage, we've renamed it to Wind Ivy and made it Wind. It can stop the target and does damage each second. Can be stackable up to 5. Class: Wizard Fury: The LK enters a Fury Phase. Each attack received increases LK's ATK by 1 each 500 damage (up to 5). Some damage are being absorbed and reduced depending of current maxhp. Class: Lord Knight Steal Backpack: Steal 1 stuff / item of Players directly in the inventory. Item is sent to the storage and the Stalker will have it as a rental for 5 minutes. If used on monsters, does a AOE Steal/Steal Coin Class: Stalker System Creation: Auto-Attack system of Whitesmith was designed to summon small devices to attack targets. There are ATK/MATK devices depending on level. Iron is required to make the device. Class: Whitesmith Synthesis Potion: Creates a rental potion that lasts 5 min for the whole party around the Creator if items requirements met. It costs 3 misc items to create a potion. Amount of players in the party increases the amount of items required. Those items are healing potions (heal over 10 seconds), ATK/MATK/Flee/Hit potions. Class: Creator Ragnarok: Ensemble Skill done by a bard and a dancer together. It causes damage in the area, as well as abnormal statuses. Allies receive buffs. Buffs and abnormal statuses are random each second. (similar to gospel) Class: Bard/Dancer Hallucination Walk: Summons a clone of self and cloak the SinX. If used while being cloaked: uncloaked the SinX and causes Hallucination in an area. Class: Assassin Cross Biotechnology: Passive skill. Increases chance to create an embryo and MaxHP of Homunculus by 2% per level. Class: Alchemist Drill Master: Passive skill. Increases damage of homunculus by 2% per level. Class: Alchemist Heal Homunculus: Same as Potion Pitcher lv 4 but targets directly the homunculus by using it without having to click on the homunculus. Class: Alchemist Flame Control: Alchemist inflicts damage linked to the homunculus based on homunculus's ATK and MATK. Chances to inflict a common status depending on homunculus type. Class: Alchemist Twilight Alchemy IV: Creates 200 blue potions if all requirements are met. Bonus - Extra Custom Skills: Earth Wall: Same as Ice Wall but it is indestructible and one cell only. 5 instances maximum. Class: Wizard Earthquake: Adapted version of Earthquake for Wizard. Part of ATK and MATK are defining damage. Class: Wizard Installation and Compatibility: I did put some instructions in the read me file regarding the installation. The diff is compatible with the latest rathena but it is easy to adapt to any version really. Any Questions ? You can contact me on Discord: Grenat#5220 for support regarding the installation. Submitter grenat50 Submitted 01/21/2022 Category Source Modifications Video Content Author Grenat 2 2 1 1 Quote Link to comment Share on other sites More sharing options...
Poring King Posted January 22, 2022 Group: Members Topic Count: 63 Topics Per Day: 0.02 Content Count: 1016 Reputation: 191 Joined: 11/27/14 Last Seen: February 15 Share Posted January 22, 2022 I would love to see this too Auto-Attack System : Summon 3 different clone each level lvl 1 Sniper , lvl 2 Whitesmith and lvl 3 is High priest Job: Priest Create Nugget : Jump to enemy inside cell 1x1 Job: Stalker Fire Ivy: Swap enemy with your location Job: High Wizard 1 1 Quote Link to comment Share on other sites More sharing options...
WhiteEagle Posted January 24, 2022 Group: Members Topic Count: 79 Topics Per Day: 0.02 Content Count: 480 Reputation: 67 Joined: 08/28/12 Last Seen: 9 hours ago Share Posted January 24, 2022 Awesome work. Thanks !! Quote Link to comment Share on other sites More sharing options...
Brynner Posted January 27, 2022 Group: Members Topic Count: 120 Topics Per Day: 0.02 Content Count: 1960 Reputation: 202 Joined: 01/08/12 Last Seen: 7 hours ago Share Posted January 27, 2022 Category:Unimplemented Skills - iRO Wiki Quote Link to comment Share on other sites More sharing options...
sotf Posted February 7, 2022 Group: Members Topic Count: 43 Topics Per Day: 0.01 Content Count: 173 Reputation: 9 Joined: 11/14/12 Last Seen: June 7, 2023 Share Posted February 7, 2022 Hello! Is there a version of this that uses txt db files? Thanks. Quote Link to comment Share on other sites More sharing options...
Gidz Cross Posted February 9, 2022 Group: Members Topic Count: 133 Topics Per Day: 0.03 Content Count: 686 Reputation: 89 Joined: 04/07/14 Last Seen: 16 hours ago Share Posted February 9, 2022 It would be awesome for txt version of skill db. Quote Link to comment Share on other sites More sharing options...
aoshinho Posted March 9, 2023 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 15 Reputation: 8 Joined: 02/20/23 Last Seen: Thursday at 05:52 PM Share Posted March 9, 2023 lot of errors on apply diff with git apply Unimplemented_Official_Skills.diff Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted June 26, 2023 Group: Members Topic Count: 37 Topics Per Day: 0.01 Content Count: 177 Reputation: 33 Joined: 06/22/13 Last Seen: 5 hours ago Share Posted June 26, 2023 Good day! Does this still work? I've encountered different structure on map.cpp. It was supposed to be like this but diff --git a/src/map/map.cpp b/src/map/map.cpp index 735bfc678..10537d75e 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -2088,6 +2088,9 @@ int map_quit(struct map_session_data *sd) { status_change_end(&sd->bl, SC_AUTOTRADE, INVALID_TIMER); status_change_end(&sd->bl, SC_SPURT, INVALID_TIMER); status_change_end(&sd->bl, SC_BERSERK, INVALID_TIMER); +#ifdef FORGOTTEN_SKILLS + status_change_end(&sd->bl, SC_FURY2, INVALID_TIMER); +#endif status_change_end(&sd->bl, SC__BLOODYLUST, INVALID_TIMER); status_change_end(&sd->bl, SC_TRICKDEAD, INVALID_TIMER); status_change_end(&sd->bl, SC_LEADERSHIP, INVALID_TIMER); it's different now. /*========================================== * Standard call when a player connection is closed. *------------------------------------------*/ int map_quit(map_session_data *sd) { int i; if (sd->state.keepshop == false) { // Close vending/buyingstore if (sd->state.vending) vending_closevending(sd); else if (sd->state.buyingstore) buyingstore_close(sd); } if(!sd->state.active) { //Removing a player that is not active. struct auth_node *node = chrif_search(sd->status.account_id); if (node && node->char_id == sd->status.char_id && node->state != ST_LOGOUT) //Except when logging out, clear the auth-connect data immediately. chrif_auth_delete(node->account_id, node->char_id, node->state); //Non-active players should not have loaded any data yet (or it was cleared already) so no additional cleanups are needed. return 0; } if (sd->expiration_tid != INVALID_TIMER) delete_timer(sd->expiration_tid, pc_expiration_timer); if (sd->npc_timer_id != INVALID_TIMER) //Cancel the event timer. npc_timerevent_quit(sd); if (sd->autotrade_tid != INVALID_TIMER) delete_timer(sd->autotrade_tid, pc_autotrade_timer); if (sd->npc_id) npc_event_dequeue(sd); if (sd->bg_id) bg_team_leave(sd, true, true); if (sd->bg_queue_id > 0) bg_queue_leave(sd, false); if( sd->status.clan_id ) clan_member_left(sd); pc_itemcd_do(sd,false); npc_script_event(sd, NPCE_LOGOUT); //Unit_free handles clearing the player related data, //map_quit handles extra specific data which is related to quitting normally //(changing map-servers invokes unit_free but bypasses map_quit) if( sd->sc.count ) { for (const auto &it : status_db) { std::bitset<SCF_MAX> &flag = it.second->flag; //No need to save infinite status if (flag[SCF_NOSAVEINFINITE] && sd->sc.getSCE(it.first) && sd->sc.getSCE(it.first)->val4 > 0) { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } //Status that are not saved if (flag[SCF_NOSAVE]) { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } //Removes status by config if (battle_config.debuff_on_logout&1 && flag[SCF_DEBUFF] || //Removes debuffs (battle_config.debuff_on_logout&2 && !(flag[SCF_DEBUFF]))) //Removes buffs { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } } } for (i = 0; i < EQI_MAX; i++) { if (sd->equip_index[i] >= 0) if (pc_isequip(sd,sd->equip_index[i])) pc_unequipitem(sd,sd->equip_index[i],2); } // Return loot to owner if( sd->pd ) pet_lootitem_drop(sd->pd, sd); if (sd->ed) // Remove effects here rather than unit_remove_map_pc so we don't clear on Teleport/map change. elemental_clean_effect(sd->ed); if (sd->state.permanent_speed == 1) sd->state.permanent_speed = 0; // Remove lock so speed is set back to normal at login. struct map_data *mapdata = map_getmapdata(sd->bl.m); if( mapdata->instance_id > 0 ) instance_delusers(mapdata->instance_id); unit_remove_map_pc(sd,CLR_RESPAWN); if (sd->state.vending) idb_remove(vending_getdb(), sd->status.char_id); if (sd->state.buyingstore) idb_remove(buyingstore_getdb(), sd->status.char_id); pc_damage_log_clear(sd,0); party_booking_delete(sd); // Party Booking [Spiria] pc_makesavestatus(sd); pc_clean_skilltree(sd); pc_crimson_marker_clear(sd); pc_macro_detector_disconnect(*sd); chrif_save(sd, CSAVE_QUIT|CSAVE_INVENTORY|CSAVE_CART); unit_free_pc(sd); return 0; } Quote Link to comment Share on other sites More sharing options...
Forshaken Posted September 5, 2023 Group: Members Topic Count: 15 Topics Per Day: 0.01 Content Count: 152 Reputation: 21 Joined: 11/12/18 Last Seen: Friday at 02:07 PM Share Posted September 5, 2023 On 6/26/2023 at 9:07 AM, Louis T Steinhil said: Good day! Does this still work? I've encountered different structure on map.cpp. It was supposed to be like this but diff --git a/src/map/map.cpp b/src/map/map.cpp index 735bfc678..10537d75e 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -2088,6 +2088,9 @@ int map_quit(struct map_session_data *sd) { status_change_end(&sd->bl, SC_AUTOTRADE, INVALID_TIMER); status_change_end(&sd->bl, SC_SPURT, INVALID_TIMER); status_change_end(&sd->bl, SC_BERSERK, INVALID_TIMER); +#ifdef FORGOTTEN_SKILLS + status_change_end(&sd->bl, SC_FURY2, INVALID_TIMER); +#endif status_change_end(&sd->bl, SC__BLOODYLUST, INVALID_TIMER); status_change_end(&sd->bl, SC_TRICKDEAD, INVALID_TIMER); status_change_end(&sd->bl, SC_LEADERSHIP, INVALID_TIMER); it's different now. /*========================================== * Standard call when a player connection is closed. *------------------------------------------*/ int map_quit(map_session_data *sd) { int i; if (sd->state.keepshop == false) { // Close vending/buyingstore if (sd->state.vending) vending_closevending(sd); else if (sd->state.buyingstore) buyingstore_close(sd); } if(!sd->state.active) { //Removing a player that is not active. struct auth_node *node = chrif_search(sd->status.account_id); if (node && node->char_id == sd->status.char_id && node->state != ST_LOGOUT) //Except when logging out, clear the auth-connect data immediately. chrif_auth_delete(node->account_id, node->char_id, node->state); //Non-active players should not have loaded any data yet (or it was cleared already) so no additional cleanups are needed. return 0; } if (sd->expiration_tid != INVALID_TIMER) delete_timer(sd->expiration_tid, pc_expiration_timer); if (sd->npc_timer_id != INVALID_TIMER) //Cancel the event timer. npc_timerevent_quit(sd); if (sd->autotrade_tid != INVALID_TIMER) delete_timer(sd->autotrade_tid, pc_autotrade_timer); if (sd->npc_id) npc_event_dequeue(sd); if (sd->bg_id) bg_team_leave(sd, true, true); if (sd->bg_queue_id > 0) bg_queue_leave(sd, false); if( sd->status.clan_id ) clan_member_left(sd); pc_itemcd_do(sd,false); npc_script_event(sd, NPCE_LOGOUT); //Unit_free handles clearing the player related data, //map_quit handles extra specific data which is related to quitting normally //(changing map-servers invokes unit_free but bypasses map_quit) if( sd->sc.count ) { for (const auto &it : status_db) { std::bitset<SCF_MAX> &flag = it.second->flag; //No need to save infinite status if (flag[SCF_NOSAVEINFINITE] && sd->sc.getSCE(it.first) && sd->sc.getSCE(it.first)->val4 > 0) { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } //Status that are not saved if (flag[SCF_NOSAVE]) { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } //Removes status by config if (battle_config.debuff_on_logout&1 && flag[SCF_DEBUFF] || //Removes debuffs (battle_config.debuff_on_logout&2 && !(flag[SCF_DEBUFF]))) //Removes buffs { status_change_end(&sd->bl, static_cast<sc_type>(it.first)); continue; } } } for (i = 0; i < EQI_MAX; i++) { if (sd->equip_index[i] >= 0) if (pc_isequip(sd,sd->equip_index[i])) pc_unequipitem(sd,sd->equip_index[i],2); } // Return loot to owner if( sd->pd ) pet_lootitem_drop(sd->pd, sd); if (sd->ed) // Remove effects here rather than unit_remove_map_pc so we don't clear on Teleport/map change. elemental_clean_effect(sd->ed); if (sd->state.permanent_speed == 1) sd->state.permanent_speed = 0; // Remove lock so speed is set back to normal at login. struct map_data *mapdata = map_getmapdata(sd->bl.m); if( mapdata->instance_id > 0 ) instance_delusers(mapdata->instance_id); unit_remove_map_pc(sd,CLR_RESPAWN); if (sd->state.vending) idb_remove(vending_getdb(), sd->status.char_id); if (sd->state.buyingstore) idb_remove(buyingstore_getdb(), sd->status.char_id); pc_damage_log_clear(sd,0); party_booking_delete(sd); // Party Booking [Spiria] pc_makesavestatus(sd); pc_clean_skilltree(sd); pc_crimson_marker_clear(sd); pc_macro_detector_disconnect(*sd); chrif_save(sd, CSAVE_QUIT|CSAVE_INVENTORY|CSAVE_CART); unit_free_pc(sd); return 0; } yes cause latest rev is now using status.yml Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.