Jump to content

Chronicscape

Member
  • Content count

    1,516
  • Joined

  • Last visited

3 Followers

About Chronicscape

  • Rank
    Rune Member
  • Birthday 04/08/1985

Recent Profile Visitors

3,151 profile views
  1. I am here today to give you a couple scripts for The Inadequacy fight. I will include everything to its spawn location as well as its main combat script. Please do enjoy. Just a nice boss to have and nobody has it yet. I would like to see a server with this in it. Its a nice world boss. This is for the 718/830/876 server data packages. First off make a new folder in the com.rs.game.npc directory called age. Next we put this bit of code in a java document. TheInadequacy.java package com.rs.game.npc.age; import java.util.List; import java.util.concurrent.TimeUnit; import com.rs.cores.CoresManager; import com.rs.game.Animation; import com.rs.game.Entity; import com.rs.game.Graphics; import com.rs.game.Hit; import com.rs.game.Hit.HitLook; import com.rs.game.World; import com.rs.game.WorldTile; import com.rs.game.player.Skills; import com.rs.game.npc.NPC; import com.rs.game.npc.combat.NPCCombatDefinitions; import com.rs.game.player.Player; import com.rs.game.tasks.WorldTask; import com.rs.game.tasks.WorldTasksManager; import com.rs.utils.Utils; @SuppressWarnings("serial") public class TheInadequacy extends NPC { private int fixedCombatType; private int fixedAmount; public TheInadequacy(int id, WorldTile tile, int mapAreaNameHash, boolean canBeAttackFromOutOfArea, boolean spawned) { super(id, tile, mapAreaNameHash, canBeAttackFromOutOfArea, spawned); setLureDelay(0); setForceAgressive(true); } @Override public void sendDeath(Entity source) { final NPCCombatDefinitions defs = getCombatDefinitions(); resetWalkSteps(); getCombat().removeTarget(); setNextAnimation(null); WorldTasksManager.schedule(new WorldTask() { int loop; @Override public void run() { if (loop == 0) { setNextAnimation(new Animation(defs.getDeathEmote())); } else if (loop >= defs.getDeathDelay()) { if(getId() == 5902) { for (NPC n : World.getNPCs()) { if (n == null || n.getId() != 5906) continue; n.sendDeath(n); } setCantInteract(true); transformIntoNPC(5903); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { reset(); setCantInteract(false); } }, 5); } else if(getId() == 5903) { setCantInteract(true); transformIntoNPC(5904); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { reset(); setCantInteract(false); } }, 8); } else if(getId() == 5904) { setCantInteract(true); transformIntoNPC(5905); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { reset(); setCantInteract(false); } }, 11); } else{ drop(); reset(); setLocation(getRespawnTile()); finish(); setRespawnTask(); transformIntoNPC(5902); } stop(); } loop++; } }, 0, 1); } @Override public void setRespawnTask() { if (!hasFinished()) { reset(); setLocation(getRespawnTile()); finish(); } final NPC npc = this; CoresManager.slowExecutor.schedule(new Runnable() { @Override public void run() { setFinished(false); World.addNPC(npc); npc.setLastRegionId(0); World.updateEntityRegion(npc); loadMapRegions(); checkMultiArea(); fixedCombatType = 0; fixedAmount = 0; } }, getCombatDefinitions().getRespawnDelay() * 800, TimeUnit.MILLISECONDS); } public int getFixedCombatType() { return fixedCombatType; } public void setFixedCombatType(int fixedCombatType) { this.fixedCombatType = fixedCombatType; } public int getFixedAmount() { return fixedAmount; } public void setFixedAmount(int fixedAmount) { this.fixedAmount = fixedAmount; } } Next step is going to take you to the npc.combat.impl directory and put this in there package com.rs.game.npc.combat.impl; import com.rs.game.Animation; import com.rs.game.Graphics; import com.rs.game.Entity; import com.rs.game.World; import com.rs.game.ForceTalk; import com.rs.game.npc.NPC; import com.rs.game.player.CombatDefinitions; import com.rs.game.npc.combat.CombatScript; import com.rs.game.npc.combat.NPCCombatDefinitions; import com.rs.utils.Utils; /** * * @author Baki * * * */ public class TheInadequacyCombat extends CombatScript { @Override public Object[] getKeys() { return new Object[] { 5902 }; } @Override public int attack(NPC npc, Entity target) { final NPCCombatDefinitions defs = npc.getCombatDefinitions(); int distanceX = target.getX() - npc.getX(); int distanceY = target.getY() - npc.getY(); int size = npc.getSize(); int hit = 0; int attackStyle = Utils.random(6); if (attackStyle == 0 && (distanceX > size || distanceX < -1 || distanceY > size || distanceY < -1)) { attackStyle = 6; } switch(attackStyle) { case 0: hit = getRandomMaxHit(npc, defs.getMaxHit() - 36, NPCCombatDefinitions.MELEE, target); npc.setNextAnimation(new Animation(6318)); delayHit(npc, 0, target, getMeleeHit(npc, hit)); break; case 1: hit = getRandomMaxHit(npc, defs.getMaxHit(), NPCCombatDefinitions.MAGE, target); npc.setNextAnimation(new Animation(6325)); delayHit(npc, 3, target, getMagicHit(npc, hit)); break; case 2: hit = getRandomMaxHit(npc, defs.getMaxHit() - 36, NPCCombatDefinitions.MELEE, target); npc.setNextAnimation(new Animation(6318)); target.getPoison().makePoisoned(48); delayHit(npc, 0, target, getMeleeHit(npc, hit)); break; case 3: hit = getRandomMaxHit(npc, defs.getMaxHit(), NPCCombatDefinitions.MAGE, target); npc.setNextAnimation(new Animation(6325)); World.spawnNPC(5906, npc, -1, true, true); delayHit(npc, 3, target, getMagicHit(npc, hit)); break; case 4: hit = getRandomMaxHit(npc, defs.getMaxHit() - 36, NPCCombatDefinitions.MELEE, target); npc.setNextGraphics(new Graphics(6318)); delayHit(npc, 3, target, getMeleeHit(npc, hit)); break; case 5: hit = getRandomMaxHit(npc, defs.getMaxHit(), NPCCombatDefinitions.MAGE, target); npc.setNextAnimation(new Animation(6325)); delayHit(npc, 3, target, getMagicHit(npc, hit)); break; } return defs.getAttackDelay(); } } Next into World.java we add the respawn section as well as the multi zone for the fight area import com.rs.game.npc.age.TheInadequacy; else if (id == 5902 || id == 5903 || id == 5904 || id == 5905) n = new TheInadequacy(id, tile, mapAreaNameHash, canBeAttackFromOutOfArea, spawned); || (destX >= 1803 && destX <= 1844 && destY >= 5129 && destY <= 5174) // Inadequacy Fight Next part is go into the data folder and replace these NPC Ids with the ones listed below in unpackedCombatDefinitions.txt 5902 - 18000 6318 6324 6322 6 2 60 520 SPECIAL -1 -1 AGRESSIVE 5903 - 18000 6345 6346 6347 6 2 60 520 MELEE -1 -1 AGRESSIVE 5904 - 18000 6329 6330 6331 6 2 60 520 MELEE -1 -1 AGRESSIVE 5905 - 18000 6342 -1 6349 6 2 60 520 SPECIAL -1 -1 AGRESSIVE Last but not least is the final combat script. Once again go to your npc.combat.impl directory and add the illusive combat script in. package com.rs.game.npc.combat.impl; import com.rs.game.Animation; import com.rs.game.Entity; import com.rs.game.Graphics; import com.rs.game.World; import com.rs.game.WorldTile; import com.rs.game.npc.NPC; import com.rs.game.npc.combat.CombatScript; import com.rs.game.npc.combat.NPCCombatDefinitions; import com.rs.game.player.Player; import com.rs.game.tasks.WorldTask; import com.rs.game.tasks.WorldTasksManager; import com.rs.utils.Utils; public class TheIllusiveCombat extends CombatScript { private static final WorldTile[] COORDS = { new WorldTile(1825, 5162, 2),//North new WorldTile(1825, 5138, 2),//South new WorldTile(1811, 5152, 2),//West new WorldTile(1837, 5152, 2),//East new WorldTile(1830, 5146, 2),//SE new WorldTile(1818, 5145, 2),//SW new WorldTile(1819, 5157, 2),//NW new WorldTile(1831, 5156, 2)//NE }; @Override public Object[] getKeys() { return new Object[] { 5905 }; } @Override public int attack(final NPC npc, Entity target) { NPCCombatDefinitions defs = npc.getCombatDefinitions(); if(Utils.random(5) == 0) { //bury npc.setNextAnimation(new Animation(6340)); npc.setCantInteract(true); npc.getCombat().removeTarget(); final Player player = (Player) (target instanceof Player ? target : null); if(player != null) player.getInterfaceManager().sendTab(player.getInterfaceManager().hasRezizableScreen() ? 1 : 11, 226); final WorldTile middle = npc.getMiddleWorldTile(); WorldTasksManager.schedule(new WorldTask() { @Override public void run() { if(player != null) player.getPackets().closeInterface(player.getInterfaceManager().hasRezizableScreen() ? 1 : 11); npc.setCantInteract(false); if(npc.isDead()) return; npc.setNextWorldTile(new WorldTile(COORDS[Utils.random(COORDS.length)])); npc.setNextAnimation(new Animation(6341)); } }, 2); }else{ npc.setNextAnimation(new Animation(defs.getAttackEmote())); delayHit(npc, 0, target, getMeleeHit(npc, getRandomMaxHit(npc, defs.getMaxHit(), NPCCombatDefinitions.MELEE, target))); } return defs.getAttackDelay(); } } Now all you have to do is save and compile. If you use a .bat compiler paste this code into the batch file if not dont worry about it src/com/rs/game/npc/age/*.java Lastly inside NPCSpawning.java add this line: World.spawnNPC(5902, new WorldTile(1824, 5165, 2), -1, true, true);//The Inadequacy
  2. There are many ways to do this. If it is just friends I would suggest using Hamachi so you dont have to pay for a vps for you and a couple people. It also depends on what revision you want as well.
  3. i would look either in settings.java player.java commands.java and a couple login scripts
  4. Sorry for the late reply life has been busy. I have updated the links properly. Thank you.
  5. if you still would like some help on this I can figure something out. I am pretty sure this release works only well once its made into a jar. I know my 876 does. But try making a localhost jar client first. If not then we can see about the other solution which is in eclipse.
  6. First off you are in the wrong section. This is EOC+ not 317/osrs. But what java are you running?
  7. lol well what was your in game name? Sorry I had been on vacation so I am replying now. I might be looking for mod spots soon. Depends on how big we can get with advertisements and so forth. Main thing I need an intro video done (i suck at making videos).
  8. Why yes there is https://discord.gg/ha6Trq I will update main post to reflect that. Thanks.
  9. All I can see is what looks like a normal image if a 317/oldschool server. The issue is on your PC. Try playing with the aspect ratio.
  10. I see no blurring. have you tried right clicking your desktop background to change the aspect ratio?
  11. thanks. its no longer 876 but a stable 831 that doesnt null on its own lol. idk what happened but 876 has lots of issues.
  12. Yea something happened (after a 3 month stress test) to the server that happens to be unknown in origins. So I have now changed to the 831 that I used to host. It is now back. Links have been changed as well.
  13. https://www.merriam-webster.com/dictionary/Yggdrasil
  14. Yggdrasil is my new server I am bringing out. A lot of changes are in the future here. So when you join don't expect it to remain the same way it is as I am going for close to rs emulation with lower exp rates. I am always open to suggestions as far as what content you may want to see. I have added a special boss that you can do for fun called Skeletal Horror. It has 4 stages of battle and he hits pretty hard. I suggest prayer potions and food. I am currently doing the dev work along with a helper of mine, we decided to team up. I think most of you know me for my prior works and I know some of you enjoyed them. > All skills trainable > Skeletal Horror (Old boss but nobody has him besides me with full combat script/by the limestone quarry) > Hydrix gems (creating gems from incomplete hydrix+onyx/jewelry making/enchanting) > GE (Player based so it's more legit) > Lunar magics (heal group and tele group spells working great) > Priff pillar farming > Proper Runespan > Equipment Interactions (right click said equipped item like Gold torch to use its special emote) > Giant Mole (updated) > Vorago / Rise of six (still needs some tweaking but they are do-able/All bosses besides araxxor working right now) > Pest Control > Bonds (used for membership) Website : Link Forums : Link Client : Link Discord: Link
×