Jump to content

maraskan_user

Members
  • Posts

    6
  • Joined

  • Last visited

Profile Information

  • Gender
    Male

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

maraskan_user's Achievements

Poring

Poring (1/15)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

2

Reputation

1

Community Answers

  1. Sorry for the late reply. The if-clauses were missing some brackets. This won't work: if ( countitem( 1000 ) >= getarg( 0 ) && countitem( 999 ) >= 30 ) This will : if ( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 30) ) Fixed script: //===== eAthena/rAthena Script ======================================= //= Weapon Forger //===== Template by: ========================================= //= Pang Cake //===== Modified by: ========================================= //= Mysterious //===== Current Version: ===================================== //= 1.2 //===== Compatible With: ===================================== //= eAthena / rAthena SVN //===== Description: ========================================= //= This NPC forges NAMELESS weapons, and can incorporate element stones and star crumbs. //= The forge chance is adjustable by changing the formula below. //===== Additional Comments: ======================================== //= v1.0 - Initial release [Pang Cake] //= v1.1 - Fixed a couple of things [Mysterious] //= v1.2 - Proper disclaimer [Mysterious] //============================================================ prontera,170,180,4 script The Forger 813,{ // ============= Configuration Settings ================== // Based on following forge success-rate formula: // ( 5 * Skill Level ) + ( Job Level / 5 ) + ( DEX / 10 ) + ( LUK / 10 ) + 50. set .ForgeSkLvl, 3; // Level of Forge Skill ( Forge Sword, Forge Mace, etc ). Recommended: 3 max. set .JLvl, 50; // Job level of the Forger NPC.Recommended: 70 max. set .ForDex, 80; // The dexterity stat of the Forge NPC. Recommended: 99 max. set .ForLuk, 80; // The luck stat of the Forge NPC.Recommended: 99 max. set .AnvMod, 5; // Anvil chance mods, e.g. 0 = Normal Anvil, 3 = Oridecon Anvil, 5 = Golden Anvil, 10 = Emperium Anvil. Recommended: 10 max. // Forge formula - don't fiddle with this one unless you want to change the formula. set .ForgeChance, ( .ForgeSkLvl * 5 ) + ( .JLvl / 5 ) + ( .ForDex / 10 ) + ( .ForLuk / 10 ) + .AnvMod + 50; // Misc. Configuration. set .GMBypassLv, 50; // Minimum GM level for ignoring item requirements. set .NameSet, 0; // Weapons will be forged with: 0 = Nameless, 1 = Invoking PC's name. set .PerfectChance, 0; // Set to 1 to enable 100% forge chance. // ============== End Configurations ================ mes "[^FF6600Forger^000000]"; mes "Hello, I am the Forger. If you provide the materials, I can forge weapons for you."; mes "Would you like me to forge you a weapon?"; switch( select( "Yes.:Information.:No." ) ) { case 1: break; case 2: next; mes "[^FF6600Forger^000000]"; mes "What weapons would you like to know about?"; switch( select( "Daggers.:1H Swords.:2H Swords.:Maces.:Spears.:Knuckles.:Axes.:Nothing." ) ) { case 1: mes "DAGGERS"; mes "^FF0099LEVEL ONE^000000:"; mes "Knife - ^FF00001x Iron, 10x Jellopies^000000."; mes "Cutter - ^FF000025x Iron^000000."; mes "Main Gauche - ^FF000050x Iron^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Dirk - ^FF000017x Steel^000000."; mes "Dagger - ^FF000030x Steel^000000."; mes "Stiletto - ^FF000040x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Gladius - ^FF00004x Oridecon, 40x Steel, 1x Sapphire^000000."; mes "Damascus - ^FF00004x Oridecon, 60x Steel, 1x Zircon^000000."; close; case 2: mes "1H SWORDS."; mes "^FF0099LEVEL ONE^000000:"; mes "Sword - ^FF00002x Iron^000000."; mes "Falchion - ^FF000030x Iron^000000."; mes "Blade - ^FF000045x Iron, 25x Tooth of Bat^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Rapier - ^FF000020x Steel^000000."; mes "Scimitar - ^FF000035x Steel^000000."; mes "Ring Pommel Saber - ^FF000040x Steel, 50x Wolf Claw^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Saber - ^FF00008x Oridecon, 5x Steel, 1x Opal^000000."; mes "Haedongum - ^FF00008x Oridecon, 10x Steel, 1x Topaz^000000."; mes "Tsurugi - ^FF00008x Oridecon, 15x Steel, 1x Garnet^000000."; mes "Flamberge - ^FF000016x Oridecon, 1x Cursed Ruby^000000."; close; case 3: mes "2H SWORDS."; mes "^FF0099LEVEL ONE^000000:"; mes "Katana - ^FF000035x Iron, 15x Horrendous Mouth^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Slayer - ^FF000025x Steel, 20x Decayed Nail^000000."; mes "Bastard Sword - ^FF000045x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Two-Handed Sword - ^FF000012x Oridecon, 10x Steel^000000."; mes "Broad Sword - ^FF000012x Oridecon, 10x Steel^000000."; mes "Claymore - ^FF000016x Oridecon, 20x Steel, 1x Cracked Diamond^000000."; close; case 4: mes "MACES."; mes "^FF0099LEVEL ONE^000000:"; mes "Club - ^FF00003x Iron^000000."; mes "Mace - ^FF000030x Iron^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Smasher - ^FF000020x Steel^000000."; mes "Flail - ^FF000033x Steel^000000."; mes "Chain - ^FF000040x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Morning Star - ^FF000085x Steel, 1x 1 Carat Diamond^000000."; mes "Sword Mace - ^FF0000100x Steel, 20x Sharp Scale^000000."; mes "Stunner - ^FF0000120x Steel, 1x Heroic Emblem^000000."; close; case 5: mes "SPEARS."; mes "^FF0099LEVEL ONE^000000:"; mes "Javelin - ^FF00003x Iron^000000."; mes "Spear - ^FF000035x Iron^000000."; mes "Pike - ^FF000070x Iron^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Guisarme - ^FF000025x Steel^000000."; mes "Glaive - ^FF000040x Steel^000000."; mes "Partizan - ^FF000055x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Trident - ^FF00008x Oridecon, 10x Steel, 1x Aquamarine^000000."; mes "Halberd - ^FF000012x Oridecon, 10x Steel^000000."; mes "Lance - ^FF000012x Oridecon, 3x Ruby, 2x Evil Horn^000000."; close; case 6: mes "KNUCKLES."; mes "^FF0099LEVEL ONE^000000:"; mes "Waghnak - ^FF0000160x Iron, 1x Pearl^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Knuckle Duster - ^FF000050x Steel^000000."; mes "Studded Knuckles - ^FF000065x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Fist - ^FF00004x Oridecon, 10x Ruby^000000."; mes "Claw - ^FF00008x Oridecon, 10x Topaz^000000."; mes "Finger - ^FF00004x Oridecon, 10x Opal^000000."; close; case 7: mes "AXES."; mes "^FF0099LEVEL ONE^000000:"; mes "Axe - ^FF000010x Iron^000000."; mes "Battle Axe - ^FF0000110x Iron^000000."; mes "^FF0099LEVEL TWO^000000:"; mes "Hammer - ^FF000030x Steel^000000."; mes "^FF0099LEVEL THREE^000000:"; mes "Buster - ^FF00004x Oridecon, 20x Steel, 30x Orcish Fang^000000."; mes "Two-Handed Axe - ^FF00008x Oridecon, 10x Steel, 1x Amethyst^000000."; close; case 8: mes "Come back when you would like to forge."; close; } case 3: mes "Alright, come back when you'd like me to forge."; close; } next; mes "[^FF6600Forger^000000]"; mes "What weapons would you like to forge?"; switch( select( "Daggers.:1H Swords.:2H Swords.:Maces.:Spears.:Knuckles.:Axes.:Nothing." ) ) { case 1: mes "Which ^FF0099DAGGER^000000 would you like me to produce?"; switch( select( "Knife (dmg 17):Cutter (dmg 30):Main Gauche (dmg 43):Dirk (dmg 59):Dagger (dmg 73):Stiletto (dmg 87):Gladius (dmg 105):Damascus (dmg 153)" ) ) { case 1: mes "You have selected ^FF0000KNIFE^000000."; set .ForgeID, 1201; break; case 2: mes "You have selected ^FF0000CUTTER^000000."; set .ForgeID, 1204; break; case 3: mes "You have selected ^FF0000MAIN GAUCHE^000000."; set .ForgeID, 1207; break; case 4: mes "You have selected ^FF0000DIRK^000000."; set .ForgeID, 1210; break; case 5: mes "You have selected ^FF0000DAGGER^000000."; set .ForgeID, 1213; break; case 6: mes "You have selected ^FF0000STILETTO^000000."; set .ForgeID, 1216; break; case 7: mes "You have selected ^FF0000GLADIUS^000000."; set .ForgeID, 1219; break; case 8: mes "You have selected ^FF0000DAMASCUS^000000."; set .ForgeID, 1222; break; } break; case 2: mes "Which ^FF00991H SWORD^000000 would you like me to produce?"; switch( select( "Sword (dmg 25):Falchion (dmg 39):Blade (dmg 53):Rapier (dmg 70):Scimitar (dmg 85):Ring Pommel Saber (dmg 100):Saber (dmg 115):Haedongum (dmg 120):Tsurugi (dmg 130):Flamberge (dmg 150)" ) ) { case 1: mes "You have selected ^FF0000SWORD^000000."; set .ForgeID, 1101; break; case 2: mes "You have selected ^FF0000FALCHION^000000."; set .ForgeID, 1104; break; case 3: mes "You have selected ^FF0000BLADE^000000."; set .ForgeID, 1107; break; case 4: mes "You have selected ^FF0000RAPIER^000000."; set .ForgeID, 1110; break; case 5: mes "You have selected ^FF0000SCIMITAR^000000."; set .ForgeID, 1113; break; case 6: mes "You have selected ^FF0000RING POMMEL SABER^000000."; set .ForgeID, 1122; break; case 7: mes "You have selected ^FF0000SABER^000000."; set .ForgeID, 1126; break; case 8: mes "You have selected ^FF0000HAEDONGUM^000000."; set .ForgeID, 1123; break; case 9: mes "You have selected ^FF0000TSURUGI^000000."; set .ForgeID, 1119; break; case 10: mes "You have selected ^FF0000FLAMBERGE^000000."; set .ForgeID, 1129; break; } break; case 3: mes "Which ^FF00992H SWORD^000000 would you like me to produce?"; switch( select( "Katana (dmg 60):Slayer (dmg 90):Bastard Sword (dmg 115):Two-Handed Sword (dmg 160):Broad Sword (dmg 140):Claymore (dmg 180)" ) ) { case 1: mes "You have selected ^FF0000KATANA^000000."; set .ForgeID, 1116; break; case 2: mes "You have selected ^FF0000SLAYER^000000."; set .ForgeID, 1151; break; case 3: mes "You have selected ^FF0000BASTARD SWORD^000000."; set .ForgeID, 1154; break; case 4: mes "You have selected ^FF0000TWO-HANDED SWORD^000000."; set .ForgeID, 1157; break; case 5: mes "You have selected ^FF0000BROAD SWORD^000000."; set .ForgeID, 1160; break; case 6: mes "You have selected ^FF0000CLAYMORE^000000."; set .ForgeID, 1163; break; } break; case 4: mes "Which ^FF0099MACE^000000 would you like me to produce?"; switch( select( "Club (dmg 23):Mace (dmg 37):Smasher (dmg 54):Flail (dmg 69):Chain (dmg 84):Morning Star (dmg 110):Sword Mace (dmg 130):Stunner (dmg 140)" ) ) { case 1: mes "You have selected ^FF0000CLUB^000000."; set .ForgeID, 1501; break; case 2: mes "You have selected ^FF0000MACE^000000."; set .ForgeID, 1504; break; case 3: mes "You have selected ^FF0000SMASHER^000000."; set .ForgeID, 1507; break; case 4: mes "You have selected ^FF0000FLAIL^000000."; set .ForgeID, 1510; break; case 5: mes "You have selected ^FF0000CHAIN^000000."; set .ForgeID, 1519; break; case 6: mes "You have selected ^FF0000MORNING STAR^000000."; set .ForgeID, 1513; break; case 7: mes "You have selected ^FF0000SWORD MACE^000000."; set .ForgeID, 1516; break; case 8: mes "You have selected ^FF0000STUNNER^000000."; set .ForgeID, 1522; break; } break; case 5: mes "Which ^FF0099SPEAR^000000 would you like me to produce?"; switch( select( "Javelin (dmg 28):Spear (dmg 44):Pike (dmg 74):Guisarme (dmg 84):Glaive (dmg 104):Partizan (dmg 124):Trident (dmg 150):Halberd (dmg 165):Lance (dmg 185)" ) ) { case 1: mes "You have selected ^FF0000JAVELIN^000000."; set .ForgeID, 1401; break; case 2: mes "You have selected ^FF0000SPEAR^000000."; set .ForgeID, 1404; break; case 3: mes "You have selected ^FF0000PIKE^000000."; set .ForgeID, 1407; break; case 4: mes "You have selected ^FF0000GUISARME^000000."; set .ForgeID, 1451; break; case 5: mes "You have selected ^FF0000GLAIVE^000000."; set .ForgeID, 1454; break; case 6: mes "You have selected ^FF0000PARTIZAN^000000."; set .ForgeID, 1457; break; case 7: mes "You have selected ^FF0000TRIDENT^000000."; set .ForgeID, 1460; break; case 8: mes "You have selected ^FF0000HALBERD^000000."; set .ForgeID, 1463; break; case 9: mes "You have selected ^FF0000LANCE^000000."; set .ForgeID, 1410; break; } break; case 6: mes "Which ^FF0099KNUCKLE^000000 would you like me to produce?"; switch( select( "Waghnakh (dmg 30):Knuckle Duster (dmg 50):Studded Knuckles (dmg 65):Fist (dmg 115):Claw (dmg 86):Finger (dmg 97)" ) ) { case 1: mes "You have selected ^FF0000WAGHNAKH^000000."; set .ForgeID, 1801; break; case 2: mes "You have selected ^FF0000KNUCKLE DUSTER^000000."; set .ForgeID, 1803; break; case 3: mes "You have selected ^FF0000STUDDED KNUCKLES^000000."; set .ForgeID, 1805; break; case 4: mes "You have selected ^FF0000FIST^000000."; set .ForgeID, 1807; break; case 5: mes "You have selected ^FF0000CLAW^000000."; set .ForgeID, 1809; break; case 6: mes "You have selected ^FF0000FINGER^000000."; set .ForgeID, 1811; break; } break; case 7: mes "Which ^FF0099AXE^000000 would you like me to produce?"; switch( select( "Axe (dmg 38):Battle Axe (dmg 80):Hammer (dmg 120):Buster (dmg 115):Two-Handed Axe (dmg 185)" ) ) { case 1: mes "You have selected ^FF0000AXE^000000."; set .ForgeID, 1301; break; case 2: mes "You have selected ^FF0000BATTLE AXE^000000."; set .ForgeID, 1351; break; case 3: mes "You have selected ^FF0000HAMMER^000000."; set .ForgeID, 1354; break; case 4: mes "You have selected ^FF0000BUSTER^000000."; set .ForgeID, 1357; break; case 5: mes "You have selected ^FF0000TWO-HANDED AXE^000000."; set .ForgeID, 1360; break; } break; case 8: mes "Okay, see you next time."; close; } if( getiteminfo( .ForgeID , 13 ) > 1 ) { set .ForgeChance, .ForgeChance - ( getiteminfo( .ForgeID , 13 ) * 10 ); } next; mes "[^FF6600Forger^000000]"; mes "How many ^FF0099Star Crumbs^000000 would you like to put in your weapon?"; switch( select( "1.:2.:3.:None." ) ) { case 1: mes "You wish to forge a ^FF0000VERY STRONG^000000 weapon."; set .SCFor, 1; set .ForgeChance, .ForgeChance - 15; break; case 2: mes "You wish to forge a ^FF0000VERY VERY STRONG^000000 weapon."; set .SCFor, 2; set .ForgeChance, .ForgeChance - 30; break; case 3: mes "You wish to forge a ^FF0000VERY VERY VERY STRONG^000000 weapon."; set .SCFor, 3; set .ForgeChance, .ForgeChance - 45; break; case 4: mes "You do not wish to put ^FF0099Star Crumbs^000000 in this weapon."; set .SCFor, 0; break; } if( .SCFor < 3 ) { next; mes "[^FF6600Forger^000000]"; mes "What ^FF0099element^000000 would you like to put into your weapon?"; switch( select( "^0000FFICE^000000.:^993300EARTH^000000.:^FF0000FIRE^000000.:^33CC00WIND^000000.:None." ) ) { case 1: mes "You wish to forge with ^0000FFMYSTIC FROZEN^000000."; set .EleFor, 1; set .ForgeChance, .ForgeChance - 20; break; case 2: mes "You wish to forge with ^993300GREAT NATURE^000000."; set .EleFor, 2; set .ForgeChance, .ForgeChance - 20; break; case 3: mes "You wish to forge with ^FF0000FLAME HEART^000000."; set .EleFor, 3; set .ForgeChance, .ForgeChance - 20; break; case 4: mes "You wish to forge with ^33CC00ROUGH WIND^000000."; set .EleFor, 4; set .ForgeChance, .ForgeChance - 20; break; case 5: mes "You do not wish to insert an element into your weapon."; set .EleFor, 0; break; } } if ( getgmlevel() < .GMBypassLv ) { callfunc ( "LOL_ChkSCEle", .EleFor ); setd ".ForgeItem", .ForgeID; set .forgeable, callfunc ( "LOL_Chk" + .ForgeItem + "i", .SCFor ); if ( .forgeable == 0 ) { next; mes "[^FF6600Forger^000000]"; mes "You do not have all the required materials. Please come back when you do."; close; } } if( .SCFor == 1 ) { setd ".StarCrumb$", "Very Strong "; } if( .SCFor == 2 ) { setd ".StarCrumb$", "Very Very Strong "; } if( .SCFor == 3 ) { setd ".StarCrumb$", "Very Very Very Strong "; } if( .EleFor == 1 ) { setd ".Element$", "Ice "; } if( .EleFor == 2 ) { setd ".Element$", "Earth "; } if( .EleFor == 3 ) { setd ".Element$", "Fire "; } if( .EleFor == 4 ) { setd ".Element$", "Wind "; } next; if( .PerfectChance == 1 ) { set .ForgeChance, 100; } mes "[^FF6600Forger^000000]"; mes "We are now ready to forge your ^FF0000" + .StarCrumb$ + .Element$ + getitemname( .ForgeID ) + "^000000, at a ^FF0000" + .ForgeChance + "^000000% chance."; mes "^009900ALL ITEMS WILL BE CONSUMED UPON EITHER FAILURE OR SUCCESS^000000. Continue?"; switch( select( "Yes.:No." ) ) { case 1: if( getgmlevel() < .GMBypassLv ) { callfunc ( "LOL_DelSCEle", .SCFor, .EleFor ); callfunc "LOL_Del" + .ForgeItem + "i"; } if( .ForgeChance >= rand( 100 ) ) { if( .NameSet == 1 ) { set .name3, getcharid( 0 ) & 65535; set .name4, getcharid( 0 ) >> 16; } set .lolface, .EleFor + ( ( .SCFor * 5 ) << 8 ); getitem2 .ForgeID, 1, 1, 0, 0, 255, .lolface, .name3, .name4; specialeffect 154; next; mes "[^FF6600Forger^000000]"; mes "There you go! Enjoy your new weapon!"; close; } else { specialeffect 155; next; mes "[^FF6600Forger^000000]"; mes "I am very sorry, item creation has ^FF0000failed^000000. Better luck next time."; close; } case 2: mes "[^FF6600Forger^000000]"; mes "Well alright, come back if you change your mind."; close; } } //Item-Check and Delete Functions! //STAR CRUMBS AND ELE. function script LOL_ChkSCEle { if( (getarg( 0 ) == 1) && (countitem( 995 ) < 1) ) { mes "[^FF6600Forger^000000]"; mes "You do not have the required ^0000FFMystic Frozen^000000. Come back when you do."; close; } if( (getarg( 0 ) == 2) && (countitem( 997 ) < 1) ) { mes "[^FF6600Forger^000000]"; mes "You do not have the required ^993300Great Nature^000000. Come back when you do."; close; } if( (getarg( 0 ) == 3) && (countitem( 994 ) < 1) ) { mes "[^FF6600Forger^000000]"; mes "You do not have the required ^FF0000Flame Heart^000000. Come back when you do."; close; } if( (getarg( 0 ) == 4) && (countitem( 996 ) < 1) ) { mes "[^FF6600Forger^000000]"; mes "You do not have the required ^33CC00Rough Wind^000000. Come back when you do."; close; } return; } function script LOL_DelSCEle { if( getarg( 0 ) != 0 ) { delitem 1000,getarg( 0 ); } if( getarg( 1 ) == 1 ) { delitem 995,1; } if( getarg( 1 ) == 2 ) { delitem 997,1; } if( getarg( 1 ) == 3 ) { delitem 994,1; } if( getarg( 1 ) == 4 ) { delitem 996,1; } return; } //DAGGERS: // -knife function script LOL_Chk1201i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 1) && (countitem( 909 ) >= 10) ) { return 1; } else { return 0; } } function script LOL_Del1201i { delitem 998,1; delitem 909,10; return; } // -cutter function script LOL_Chk1204i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 25) ) { return 1; } else { return 0; } } function script LOL_Del1204i { delitem 998,25; return; } // -main gauche function script LOL_Chk1207i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 50) ) { return 1; } else { return 0; } } function script LOL_Del1207i { delitem 998,50; return; } // -dirk function script LOL_Chk1210i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 17) ) { return 1; } else { return 0; } } function script LOL_Del1210i { delitem 999,17; return; } // -dagger function script LOL_Chk1213i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 30 )) { return 1; } else { return 0; } } function script LOL_Del1213i { delitem 999,30; return; } // -stiletto function script LOL_Chk1216i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 40 )) { return 1; } else { return 0; } } function script LOL_Del1216i { delitem 999,40; return; } // -gladius function script LOL_Chk1219i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 40) && (countitem( 984 ) >= 4) && (countitem( 726 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1219i { delitem 984,4; delitem 999,40; delitem 726,1; return; } // -damascus function script LOL_Chk1222i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 60) && (countitem( 984 ) >= 4) && (countitem( 729 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1222i { delitem 984,4; delitem 999,60; delitem 729,1; return; } //ONE-HANDED SWORDS: // -sword function script LOL_Chk1101i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 2 )) { return 1; } else { return 0; } } function script LOL_Del1101i { delitem 998,2; return; } // -falchion function script LOL_Chk1104i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 30 )) { return 1; } else { return 0; } } function script LOL_Del1104i { delitem 998,30; return; } // -blade function script LOL_Chk1107i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 45) && (countitem( 913 ) >= 25) ) { return 1; } else { return 0; } } function script LOL_Del1107i { delitem 998,45; delitem 913,25; return; } // -rapier function script LOL_Chk1110i { if( (countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 20) ) { return 1; } else { return 0; } } function script LOL_Del1110i { delitem 999,20; return; } // -scimitar function script LOL_Chk1113i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 35) ) { return 1; } else { return 0; } } function script LOL_Del1113i { delitem 999,35; return; } // -ring pommel saber function script LOL_Chk1122i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 40) && (countitem( 920 ) >= 50) ) { return 1; } else { return 0; } } function script LOL_Del1122i { delitem 999,40; delitem 920,50; return; } // -saber function script LOL_Chk1126i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 5) && (countitem( 984 ) >= 8) && (countitem( 727 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1126i { delitem 984,8; delitem 999,5; delitem 727,1; return; } // -haedongum function script LOL_Chk1123i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 10) && (countitem( 984 ) >= 8) && (countitem( 728 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1123i { delitem 984,8; delitem 999,10; delitem 728,1; return; } // -tsurugi function script LOL_Chk1119i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 15) && (countitem( 984 ) >= 8) && (countitem( 718 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1119i { delitem 984,8; delitem 999,15; delitem 718,1; return; } // -flamberge function script LOL_Chk1129i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 984 ) >= 16) && (countitem( 724 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1129i { delitem 984,16; delitem 724,1; return; } //TWO-HANDED SWORDS: // -katana function script LOL_Chk1116i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 35) && (countitem( 958 ) >= 15) ) { return 1; } else { return 0; } } function script LOL_Del1116i { delitem 998,35; delitem 958,15; return; } // -slayer function script LOL_Chk1151i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 25) && (countitem( 957 ) >= 20) ) { return 1; } else { return 0; } } function script LOL_Del1151i { delitem 999,25; delitem 957,20; return; } // -bastard sword function script LOL_Chk1154i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 45) ) { return 1; } else { return 0; } } function script LOL_Del1154i { delitem 999,45; return; } // -two-handed sword function script LOL_Chk1157i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 10) && (countitem( 984 ) >= 12) ) { return 1; } else { return 0; } } function script LOL_Del1157i { delitem 984,12; delitem 999,10; return; } // -broad sword function script LOL_Chk1160i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 20) && (countitem( 984 ) >= 12) ) { return 1; } else { return 0; } } function script LOL_Del1160i { delitem 984,12; delitem 999,20; return; } // -claymore function script LOL_Chk1163i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 20) && (countitem( 984 ) >= 16) && (countitem( 733 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1163i { delitem 999,20; delitem 984,16; delitem 733,1; return; } //MACES: // -club function script LOL_Chk1501i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 3) ) { return 1; } else { return 0; } } function script LOL_Del1501i { delitem 998,3; return; } // -mace function script LOL_Chk1504i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 30) ) { return 1; } else { return 0; } } function script LOL_Del1504i { delitem 998,30; return; } // -smasher function script LOL_Chk1507i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 20) ) { return 1; } else { return 0; } } function script LOL_Del1507i { delitem 999,20; return; } // -flail function script LOL_Chk1510i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 33) ) { return 1; } else { return 0; } } function script LOL_Del1510i { delitem 999,33; return; } // -chain function script LOL_Chk1519i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 45) ) { return 1; } else { return 0; } } function script LOL_Del1519i { delitem 999,45; return; } // -morning star function script LOL_Chk1513i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 85) && (countitem( 730 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1513i { delitem 999,85; delitem 730,1; return; } // -sword mace function script LOL_Chk1516i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 100) && (countitem( 963 ) >= 20) ) { return 1; } else { return 0; } } function script LOL_Del1516i { delitem 999,100; delitem 963,20; return; } // -stunner function script LOL_Chk1522i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 120) && (countitem( 968 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1522i { delitem 999,120; delitem 968,1; return; } //SPEARS: // -javelin function script LOL_Chk1401i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 3) ) { return 1; } else { return 0; } } function script LOL_Del1401i { delitem 998,3; return; } // -spear function script LOL_Chk1404i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 35) ) { return 1; } else { return 0; } } function script LOL_Del1404i { delitem 998,35; return; } // -pike function script LOL_Chk1407i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 70) ) { return 1; } else { return 0; } } function script LOL_Del1407i { delitem 998,70; return; } // -guisarme function script LOL_Chk1451i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 25) ) { return 1; } else { return 0; } } function script LOL_Del1451i { delitem 999,25; return; } // -glaive function script LOL_Chk1454i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 40) ) { return 1; } else { return 0; } } function script LOL_Del1454i { delitem 999,40; return; } // -partizan function script LOL_Chk1457i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 55) ) { return 1; } else { return 0; } } function script LOL_Del1457i { delitem 999,55; return; } // -trident function script LOL_Chk1460i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 10) && (countitem( 984 ) >= 8) && (countitem( 720 ) >= 5) ) { return 1; } else { return 0; } } function script LOL_Del1460i { delitem 984,8; delitem 999,10; delitem 720,5; return; } // -halberd function script LOL_Chk1463i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 10) && (countitem( 984 ) >= 12) ) { return 1; } else { return 0; } } function script LOL_Del1463i { delitem 984,12; delitem 999,10; return; } // -lance function script LOL_Chk1410i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 984 ) >= 12) && (countitem( 723 ) >= 3) && (countitem( 923 ) >= 2) ) { return 1; } else { return 0; } } function script LOL_Del1410i { delitem 984,12; delitem 723,3; delitem 923,2; return; } //KNUCKLES: // -waghnakh function script LOL_Chk1801i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 160) && (countitem( 722 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1801i { delitem 998,160; delitem 722,1; return; } // -knuckle duster function script LOL_Chk1803i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 50) ) { return 1; } else { return 0; } } function script LOL_Del1803i { delitem 999,50; return; } // -studded knuckles function script LOL_Chk1805i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 65) ) { return 1; } else { return 0; } } function script LOL_Del1805i { delitem 999,65; return; } // -fist function script LOL_Chk1807i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 984 ) >= 4) && (countitem( 723 ) >= 10) ) { return 1; } else { return 0; } } function script LOL_Del1807i { delitem 984,4; delitem 723,10; return; } // -claw function script LOL_Chk1809i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 984 ) >= 8) && (countitem( 728 ) >= 10) ) { return 1; } else { return 0; } } function script LOL_Del1809i { delitem 984,8; delitem 728,10; return; } // -finger function script LOL_Chk1811i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 984 ) >= 4) && (countitem( 727 ) >= 10) ) { return 1; } else { return 0; } } function script LOL_Del1811i { delitem 984,4; delitem 727,10; return; } //AXES: // -axe function script LOL_Chk1301i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 10) ) { return 1; } else { return 0; } } function script LOL_Del1301i { delitem 998,10; return; } // -battle axe function script LOL_Chk1351i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 998 ) >= 110) ) { return 1; } else { return 0; } } function script LOL_Del1351i { delitem 998,110; return; } // -hammer function script LOL_Chk1354i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 30) ) { return 1; } else { return 0; } } function script LOL_Del1354i { delitem 999,30; return; } // -buster function script LOL_Chk1357i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 20) && (countitem( 984 ) >= 4) && (countitem( 922 ) >= 30) ) { return 1; } else { return 0; } } function script LOL_Del1357i { delitem 984,4; delitem 999,20; delitem 922,30; return; } // -two-handed axe function script LOL_Chk1360i { if((countitem( 1000 ) >= getarg( 0 )) && (countitem( 999 ) >= 10) && (countitem( 984 ) >= 8) && (countitem( 719 ) >= 1) ) { return 1; } else { return 0; } } function script LOL_Del1360i { delitem 999,10; delitem 984,8; delitem 719,1; return; }
  2. rAthena Hash: d33ea1819 Client Date: 2018-06-20eRagexeRE / mostly 2020-12-04 grf Server Mode: Pre-Renewal Since this is not a bug with rAthena, but a question concerning the clients' GAT files, I'm posting this here. Yesterday I noticed that Aqua Benedicta was not working in places where I remember it to have worked on official servers years before. At first I thought there was something broken in the server code, but rAthena itself checked out fine: Aqua Benedicta failed because the cells concerned are not marked as water (gat type 3) in the actual gat files themselves. Ok, weird, I thought. Did they change the gat files? So I compared the gats of the map concerned (rachel) from 2020-12-04 grf with the ones from 2012-04-14 grf (the oldest i had at hand). They do have minor changes, but nothing pertaining to gat type 3. Then I batch parsed all gats to see which ones actually have gat type 3 at all. For the 2012-04-14 grf there were only 3 maps with water cells: - hu_fild05 (1 cell water) - kh_kiehl01 (1 cell water) - pay_arche (370 cells of water) For the 2020-12-04 grf there was a fourth one: - tur_d03_i (with 1 cell of water) I checked out pay_arche and indeed, I can produce holy water with the aqua benedicta skill there. Ok now I'm thoroughly confused. Ignoring the maps with only 1 hard to find cell of water on the whole map, I'm sure to have created holy water on several maps (for example the swimming pool in Rachel at 109/190, or along the little streams on prt_field05) back in the day, and hadn't even tried pay_arche back then. Does anybody have any idea about what's going on here? Were official GAT files possibly changed before 2012-04-14 to contain no water cells? Does the whole water system on officials work a different way alltogether? Am I just misremembering? Edit 1 I retried with the default map_cache.dat instead of the one created with WeeMapCache for my grf file. Interestingly, with the default one, Aqua Benedicta works at the places it's supposed to. Seems the like either WeeMapCache creates the DAT fiile in a different way then whatever produced the default GAT, or somehow different map files would have had to be used. Edit 2 Looks like the WeeMapCache I used for creating the DAT file was the culprit. Tokei's Map Cache Editor seems to have been created to fix exactly that issue.
  3. I noticed a weird thing about the 2010-07-30aRagexeRE client I am using: Ankle Snare traps look normal when they get placed on the ground, but when a mob walks into them, they snap shut, and after that become very... long? It looks like they're becoming infinitely long in one horizontal axis. I tried different clients then and they all showed different behaviour with Ankle Snare: 2009-06-17aSakexe - Traps don't snap closed at all, but no visual bugs 2010-07-30aRagexeRE - the aforementioned bug 2012-04-10aRagexeRE - the trap snaps shut, but opens again and remains like that. No visual bugs. The traps don't seem to have model or animation files in the GRF, as far as I can see, but seem to be part of the client itself. Did anyone have this problem before and found a way to solve it without switching to a newer client? (The newer clients all have the problem with fullscreen mode not using vsync, so there is a consistent tear line at the upper third of the screen.)
  4. The twitch for non-casting party members, though sucky, is official behaviour. This mod diverges from official in that it doesn't stop the party member movement while a priest (or ranger) is applying non-targeted buffs.
  5. This will prevent the twitch animation that all characters in a party show, when the group buffs AL_ANGELUS, PR_MAGNIFICAT, PR_GLORIA or SN_WINDWALK are cast. I always thought it to be very weird that all members would stop walking and show a cast animation when these skills complete, instead of just the caster himself. Uses clif_specialeffect() instead of clif_skill_nodamage() since the latter is hard wired to show the twitch for those skill ids. File: skill.c Function: skill_castend_nodamage_id() Find and change: 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) ) /*new*/ { /*new*/ if (src->id != bl->id) /*new*/ { /*new*/ if (sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))) /*new*/ { /*new*/ if (skill_id == AL_ANGELUS) /*new*/ clif_specialeffect(bl, 41, AREA); /*new*/ else if (skill_id == PR_MAGNIFICAT) /*new*/ clif_specialeffect(bl, 76, AREA); /*new*/ else if (skill_id == PR_GLORIA) /*new*/ clif_specialeffect(bl, 75, AREA); /*new*/ else if (skill_id == SN_WINDWALK) /*new*/ clif_specialeffect(bl, 389, AREA); /*new*/ } /*new*/ } /*new*/ else clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); /*new*/ } 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;
×
×
  • Create New...