Jump to content
Frequently Asked Questions
  • Are you not able to open the client? Try following our getting started guide
  • Still not working? Try downloading and running JarFix
  • Help! My bot doesn't do anything! Enable fresh start in client settings and restart the client
  • How to purchase with PayPal/OSRS/Crypto gold? You can purchase vouchers from other users
  • holic

    Scripter
    • Posts

      639
    • Joined

    • Last visited

    • Days Won

      20

    Reputation Activity

    1. Like
      holic reacted to letsbothard in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      hey! thanks for adding, my suggestion that is awsome! ty
    2. Like
      holic reacted to 2349md in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Nearly 2m combat exp in f2p, been running it for about a week or so quite carelessly yet no bans so far. Worked flawlessly in pretty much every training spot I checked with the exception of the security stronghold.
      Thanks for making such a solid script for free.
    3. Like
      holic reacted to ChaosKilla in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      I've noticed many of the complaints are based om the DB client, not the script itself. Thank you for making such a versatile, free combat script. I've said this already but I've had no problems and it's the only combat script I trust so far. Thank you holic
    4. Like
      holic reacted to hbwvgm in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      I got an error message and it kept spamming these two messages in the chat, but once it started the AFK break it sorted itself out. Didn't really cause any issues but I thought I'd let you know just incase. Cheers, great script I use it a lot, I have a few bots that have a few days in-game already and no bans. Thanks for all the work you put into this.
    5. Like
      holic reacted to wettofu in Wet Quests - 2 Quests   
      Wet Quests (back from hiatus)
      Current Quest List:
       
      Quests are cool.
    6. Like
      holic got a reaction from iPray3ternity in [FREE] The Wild Lootaholic - Wilderness Looter - Reuploaded   
      Script is now on SDN, thread here:
      The Wild Lootaholic beta
      About
      A wilderness looter with a bunch of nifty features, banks and eats when necessary. Two click start!
      Looking for testers and feedback. 
      This is my first script since ARGA was alive, COVID pulled me back into this world.
      Features
      Script automatically sets up Turns off auto-retaliate Hides "Attack" option Hops to desired world Finds it way to the wilderness Dismisses wilderness warning All fields pre-defined with optimal F2P settings Multiple looting modes Smart Mixed (Random-ish) Value Amount Distance Simple and informative paint Loot list, including total profit Profit per hour Small action log to keep you updated At-a-glance Attack Warning, gamescreen flashes when attacked for easy babysitting (see screenshots) Customizable inventory value limit, banks when reached Customizable loot list, full matches only Customizable valuable list, partial and matches Customizable pickup limits for Value Amount Auto-add valuables to search list Smart banking Banks when inventory value limit reached or valuable looted Searches for more valuables in pile then banks if none Banks after a close call Withdraws food while banking, may rest if necessary Smart safing Runs when attacked Crosses ditch, when necessary Moves away from attacker, when necessary Avoids poachers, builds a "shit list" but needs improvement Rests when necessary Pauses break handler until safe to prevent attempting to take a break while in combat, failing to log out but still sleeping and signing your bot's life away. Force-bank, click the bank button on screen  Force-click, double-click anywhere to queue a click Pulse-running, knows when to run and when to walk Prioritizes valuables and runs to make sure you get the loot Eats food when HP is low and being attacked, may rest when safe Supports world-hopping when struggling to loot Supports death walking with alternative routes, avoids ban doors Rests on death Pauses break handler and logouts sometimes on death Auto-saves preferences on script start Loot log, shows on script finish Anti-ban, does various human-like things and has randomized actions to create variances between script users. Probably more that I've forgotten to write down Screenshots
      Account 1 - Roughly 5 hours on a Friday, no breaks
       
      Account 2 - Roughly 7 hours, no breaks
       
      Looting Results, 9 and a half hours on a Monday straight from Tutorial Island
       
      Known bugs
      Sometimes crosses the ditch twice when banking Sometimes double-clicks or loots while already looting Certain items cause loot log on screen to disappear, mostly fixed Sometime doesn't choose the closest item if all the reachable ground items are of the same value/amount  

    7. Like
      holic reacted to ThumperOF in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      just thought i'd give an update, I've just been banned after 30 something hours at hill giants hahaha. A very good script to be fair, good banking system etc cant fault it
       
      suiciding accounts can be fun.
    8. Like
      holic reacted to ThumperOF in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      So, I decided to run a new account and see how far i can actually bot it...
      Genuinely couldn't fault this bot bro, Great work.
      its been logged in for over 24 hours now, Was using a different script before this one but thought you'd like a 10 hour proggy of hill giants.
       
       
      Edit; Forgot to say anyone having issues with the setting up part of the bot make sure you give DB more memory as it sorts the problem out.

    9. Like
      holic got a reaction from Szarikov in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Fightaholic - The scrappy AIO fightin' script


       
       

      Bug Reports - READ THIS FIRST
      To submit a bug report, please do the following. Failing to do so may result in being ignored all together. These are simple requests
      Ensure you're on the latest version first Explain your problem as clearly and concise as possible Share the error Share what settings you are using by setting up the script, saving your config to a file and pasting it here or PM me.  
       
       
      Description
      Fights shit, like anything, eats, banks, loots, buries bones, switches combat styles, etc. Very easy to setup but a complex script nonetheless.
      Setup
      Selecting your NPC(s) is required. All other options are optional. Click Refresh to auto-fill the form and get available NPCs Click Start Troubleshooting
      StackoverflowError: Give more memory to DreamBot on launch (slider above "Launch" button) Images failed to download: Manually download them below this post and extract the files to "~/DreamBot/Scripts/Fightaholic" Chinese users will almost certainly need to download these Main features
      Extremely simple setup: simple GUI that auto-fills the fields for you as much as possible. Combat switching: supports all combat types (ie Melee, Range and Magic) Click on-screen "Switch" to switch styles whenever Right-click on-screen "Switch" to manually choose which style to use Buys missing items from GE: if any equipment, food, runes, arrows, potions or required items are missing, it will walk to the GE and attempt to buy them Script will end if you lack the resources to afford your items Script will buy equipment upgrades when specified. Sells loot at GE: select looted items to sell in the "Loot" tab. Will attempt to sell items first for cash before buying missing items Script will only show loot options in the list, to add custom items edit the .ini file manually. Level targets: stops training combat style when your desired level is reached Drinks potions: don't include the number of doses ("Strength potion", not "Strength potion(4)"), won't use Prayer potions until your prayer is almost drained Add antivenom potion to your inventory or required items and it will automatically cure you when necessary. Optional: Check drop vials to get rid of them Uses prayer: Select one or many prayers to use. Quick prayers and quick prayer setup supported Dungeons supported: Edgeville (with or without Brass key, add key to required items), Dwarven Mines, Asgarnian Ice Dungeon, Karamja Dungeon, Varrock Sewers Equipment switching: supports switching equipment when changing combat style Withdraws equipment if missing Upgrades equipment when specified (either have it in your bank or select "Buy upgradeable equipment"), use "^" as the upgrade wildcard. "^ scimitar" or "^ shortbow". DOESN'T WORK FOR ALL ITEMS. High Alch support: choose what to loot and in the opposite column choose which items to alch and the script will take care of the rest Multiple loot options: change the frequency of looting, style of looting and what to loot Supports options like loot by price and blacklist Ironman loot option: loot only what your NPC drops Features item blacklist to prevent looting the wrong items when looting by a price threshold Death walking / Grave looting: handles deaths by returning, collecting your grave, re-equipping equipment and continuing Still zero deaths to date with this script but will handle it once it happens Option to logout on death so you can handle it yourself Collects and equips arrows: makes sure you don't run out of arrows, checks your bank for more if needed. Safe spotting: set your "Target area" to below 3 and the script will automatically safe-spot Aggro support: check the "Aggro mode" checkbox when dealing with monster like Rock Crabs, who will become tame and impossible to fight after a certain amount of time. This will do its best to leave the area, rest and return to continue the fight. GIVE IT TIME TO DO ITS THING. This will not prefer AFK training over active training but will still allow for AFK training. Buries bones: all bones supported, you can also specify to bury only certain bones. Eats food: what kind of fighter would this be if it didn't eat when necessary, right? Bones to Peaches: experimental but should work. If it isn't, please screen record it or at least share the error from your console with me. Bones to Bananas: experimental but should work. If it isn't, please screen record it or at least share the error from your console with me. Customize bank locations: set the bank you'd like to use, or just set it to the closest and let the script handle it for you. Custom random-event handler: Talks to Genie, Old-Man, Drunken Dwarf , Frog, Freaky Forester and Rick Turpentine to collect their goodies and a delay for all other randoms to be more human-like Lamps will be used to increase your current combat skill Random handler will only fire if you have selected "Dismiss Randoms" in DreamBot's settings Anti-Ban: Bunch of features to keep your accounts safe Comprehensive obstacle handler:  meaning you can start this script just about anywhere and the script will navigate Gielinor to your specified area Quickstart support: Parameters: "path\to\config.ini" Example: Windows: java -jar C:\Users\USERNAME\DreamBot\BotData\client.jar -script Fightaholic -params "C:\Users\USERNAME\Desktop\CONFIG.ini" Linux:
      java -jar ~/BotData/client.jar -script Fightaholic -params "C:/Users/USERNAME/CONFIG.ini"  
      More to be included in this list that are already in the script.


      *Temporarily disabled Script information
      Click "Refresh" once logged in to see NPCs and auto-fill the script. Select the NPCs you want, and their potential drops will be listed below This is the only required setting. Select the loot you want. Click "Add" to add combat level targets, these skills will be trained until the specified target is reached. If you want to set a Magic level target, you can only do that with the first level target currently (because I'm lazy). If you want to use different equipment, fill out and select "Use" per equipment setup Arrows, bows, staves, melee weapons, shield and food should automatically be detected and filled out in their respective textfields Check "Use bank" to bank when inventory is full or out of food/arrows/runes Your target area will be set to the tile you are standing on when you click the "Start" button if no tile is set.
      OR you can set the tile in the "Optional" tab and have the script walk there next time on start (provided you save the info) Set your target area to below 3 and the script will automatically safe-spot All other setup options have explanatory tool-tips (if you hover over them) and aren't required.
        Item Support
      These are items that will be automatically recognized in your settings

      GUI
      As of version 0.941

      Progress Reports
      27 hours                                        3 days                                                  all using overnight+1hr breaks
        

        
       
        Changelog (For updates beyond version 1.0, please search this topic for "SDN Bot")
       




      Fightaholic images.zip
       
       

    10. Like
      holic reacted to keke0513 in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Thank you for your reply. Thank you
    11. Like
      holic got a reaction from keke0513 in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Thanks! Might be a bug with the updates to DB path-finding, I'll look into it.
      Sure, I can add a toggle for that. For now, set your "Eat at %" to 0 and see if that disables it for you. You might have to put a food name in there but anything should do.
    12. Like
      holic got a reaction from tjet in [FREE] The Wild Lootaholic - Wilderness Looter - Reuploaded   
      Download link is in the first post, it's free.
    13. Upvote
      holic reacted to Bunnybun in WindMouse - Custom Mouse Movement Algorithm   
      @holic Fyi MethodProvider.sleep() can cause random events to block forever, make sure to use Thread.sleep() instead
    14. Like
      holic reacted to zega in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      bro he i got it to work i just closed dream bot and restarted it lol 
      thanks for the quick responses tho much appreciated
      great script
       
    15. Upvote
      holic got a reaction from hKTz in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Hmm, could you please share your config file? Save the setup youre using and upload the file here.
      Because it doesn't support the stronghold. It says right in the OP which dungeons it supports.
    16. Like
      holic reacted to cookiemonstah in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      this script is pretty epic, honestly. got 80 combat using purely this scipt  thanks for the good work
    17. Upvote
      holic reacted to gggmagik in Walkaholic - Map walker - Walk almost anywhere in Gielinor - Now with improved accuracy!   
      The solution to the map loading issue, is to, when Dreambot starts, press the 256MB button and make it higher. it's probably referring to ram given to the client and script, and the map scripts use alot of memory loading the map. Issue prevented me from using this and another script as well.
    18. Like
      holic got a reaction from boomslap in WindMouse - Custom Mouse Movement Algorithm   
      Hey all,
      Since DB3 officially supports custom mouse algorithms I thought I would port over a classic one: WindMouse.
      WindMouse was written by BenLand100 for SCAR some years back (maybe 10 years?) and has been used on so many damn bots throughout the years because it functions really well so it only seemed right to bring it here.
      In the source code below, there are two implementations of WindMouse:
      Point windMouse(int x, int y) Which comes directly from the SMART github with minor adjustments to work with DB3.
      Better in fixed mode.
        void windMouse2(Point point) My tweaked version from years back that supports all screen sizes.
      I've added a random point between the original and the destination point if the distance between them is large to feel more human but has a 50% chance of happening. By default my implementation is the active algorithm (as it handles all sizes), swap the comments in handleMovement to change to the original.
       
      To use it, simply add the file WindMouse.java to your project and add the following to your onStart method:
      Client.getInstance().setMouseMovementAlgorithm(new WindMouse());  
      All credits go to Benjamin J. Land a.k.a. BenLand100
      WindMouse.java:
      /** * WindMouse from SMART by Benland100 * Copyright to Benland100, (Benjamin J. Land) * * Prepped for DreamBot 3 **/ import org.dreambot.api.Client; import org.dreambot.api.input.Mouse; import org.dreambot.api.input.mouse.algorithm.MouseMovementAlgorithm; import org.dreambot.api.input.mouse.destination.AbstractMouseDestination; import org.dreambot.api.methods.Calculations; import org.dreambot.api.methods.input.mouse.MouseSettings; import java.awt.*; import static java.lang.Thread.sleep; public class WindMouse implements MouseMovementAlgorithm { private int _mouseSpeed = MouseSettings.getSpeed() > 15 ? MouseSettings.getSpeed() - 10 : 15; private int _mouseSpeedLow = Math.round(_mouseSpeed / 2); private int _mouseGravity = Calculations.random(4, 20); private int _mouseWind = Calculations.random(1, 10); @Override public boolean handleMovement(AbstractMouseDestination abstractMouseDestination) { //Get a suitable point for the mouse's destination Point suitPos = abstractMouseDestination.getSuitablePoint(); // Select which implementation of WindMouse you'd like to use // by uncommenting out the line you want to use below: //windMouse(suitPos.x, suitPos.y); //Original implementation windMouse2(suitPos); //Tweaked implementation return distance(Client.getMousePosition(), suitPos) < 2; } public static void sleep(int min, int max) { try { Thread.sleep(Calculations.random(min,max)); } catch (InterruptedException e) { log(e.getMessage()); } } public static void sleep(int ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { log(e.getMessage()); } } /** * Tweaked implementation of WindMouse * Moves to a mid point on longer moves to seem a little more human-like * Remove the if statement below if you'd rather straighter movement * @param point The destination point */ public void windMouse2(Point point) { Point curPos = Client.getMousePosition(); if (distance(point, curPos) > 250 && Calculations.random(1) == 2) { Point rp = randomPoint(point, curPos); windMouse2(curPos.x, curPos.y, rp.x, rp.y, _mouseGravity, _mouseWind, _mouseSpeed, Calculations.random(5, 25)); sleep(1, 150); } windMouse2(curPos.x, curPos.y, point.x, point.y, _mouseGravity, _mouseWind, _mouseSpeed, Calculations.random(5, 25)); _mouseGravity = Calculations.random(4, 20); _mouseWind = Calculations.random(1, 10); _mouseSpeed = Calculations.random(_mouseSpeedLow, MouseSettings.getSpeed()); } /** * Tweaked implementation of WindMouse by holic * All credit to Benjamin J. Land for the original. (see below) * * @param xs The x start * @param ys The y start * @param xe The x destination * @param ye The y destination * @param gravity Strength pulling the position towards the destination * @param wind Strength pulling the position in random directions * @param targetArea Radius of area around the destination that should * trigger slowing, prevents spiraling */ private void windMouse2(double xs, double ys, double xe, double ye, double gravity, double wind, double speed, double targetArea) { double dist, veloX = 0, veloY = 0, windX = 0, windY = 0; double sqrt2 = Math.sqrt(2); double sqrt3 = Math.sqrt(3); double sqrt5 = Math.sqrt(5); int tDist = (int) distance(xs, ys, xe, ye); long t = System.currentTimeMillis() + 10000; while (!(Math.hypot((xs - xe), (ys - ye)) < 1)) { if (System.currentTimeMillis() > t) break; dist = Math.hypot((xs - xe), (ys - ye)); wind = Math.min(wind, dist); if ((dist < 1)) { dist = 1; } long d = (Math.round((Math.round(((double) (tDist))) * 0.3)) / 7); if ((d > 25)) { d = 25; } if ((d < 5)) { d = 5; } double rCnc = Calculations.random(6); if ((rCnc == 1)) { d = 2; } double maxStep = (Math.min(d, Math.round(dist))) * 1.5; if ((dist >= targetArea)) { windX = (windX / sqrt3) + ((Calculations.random((int) ((Math.round(wind) * 2) + 1)) - wind) / sqrt5); windY = (windY / sqrt3) + ((Calculations.random((int) ((Math.round(wind) * 2) + 1)) - wind) / sqrt5); } else { windX = (windX / sqrt2); windY = (windY / sqrt2); } veloX += windX + gravity * (xe - xs) / dist; veloY += windY + gravity * (ye - ys) / dist; if ((Math.hypot(veloX, veloY) > maxStep)) { maxStep = ((maxStep / 2) < 1) ? 2 : maxStep; double randomDist = (maxStep / 2) + Calculations.random((int) (Math.round(maxStep) / 2)); double veloMag = Math.sqrt(((veloX * veloX) + (veloY * veloY))); veloX = (veloX / veloMag) * randomDist; veloY = (veloY / veloMag) * randomDist; } int lastX = ((int) (Math.round(xs))); int lastY = ((int) (Math.round(ys))); xs += veloX; ys += veloY; if ((lastX != Math.round(xs)) || (lastY != Math.round(ys))) { Mouse.hop(new Point((int) Math.round(xs), (int) Math.round(ys))); } int w = Calculations.random((int) (Math.round(100 / speed))) * 6; if ((w < 5)) { w = 5; } w = (int) Math.round(w * 0.9); sleep(w); } if (((Math.round(xe) != Math.round(xs)) || (Math.round(ye) != Math.round(ys)))) { Mouse.hop(new Point(((int) (Math.round(xe))), ((int) (Math.round(ye))))); } } /** * Internal mouse movement algorithm from SMART. Do not use this without credit to either * Benjamin J. Land or BenLand100. This was originally synchronized to prevent multiple * motions and bannage but functions poorly with DB3. * * BEST USED IN FIXED MODE * * @param xs The x start * @param ys The y start * @param xe The x destination * @param ye The y destination * @param gravity Strength pulling the position towards the destination * @param wind Strength pulling the position in random directions * @param minWait Minimum relative time per step * @param maxWait Maximum relative time per step * @param maxStep Maximum size of a step, prevents out of control motion * @param targetArea Radius of area around the destination that should * trigger slowing, prevents spiraling * @result The actual end point */ private Point windMouseImpl(double xs, double ys, double xe, double ye, double gravity, double wind, double minWait, double maxWait, double maxStep, double targetArea) { final double sqrt3 = Math.sqrt(3); final double sqrt5 = Math.sqrt(5); double dist, veloX = 0, veloY = 0, windX = 0, windY = 0; while ((dist = Math.hypot(xs - xe, ys - ye)) >= 1) { wind = Math.min(wind, dist); if (dist >= targetArea) { windX = windX / sqrt3 + (2D * Math.random() - 1D) * wind / sqrt5; windY = windY / sqrt3 + (2D * Math.random() - 1D) * wind / sqrt5; } else { windX /= sqrt3; windY /= sqrt3; if (maxStep < 3) { maxStep = Math.random() * 3D + 3D; } else { maxStep /= sqrt5; } } veloX += windX + gravity * (xe - xs) / dist; veloY += windY + gravity * (ye - ys) / dist; double veloMag = Math.hypot(veloX, veloY); if (veloMag > maxStep) { double randomDist = maxStep / 2D + Math.random() * maxStep / 2D; veloX = (veloX / veloMag) * randomDist; veloY = (veloY / veloMag) * randomDist; } int lastX = ((int) (Math.round(xs))); int lastY = ((int) (Math.round(ys))); xs += veloX; ys += veloY; if ((lastX != Math.round(xs)) || (lastY != Math.round(ys))) { setMousePosition(new Point((int) Math.round(xs), (int) Math.round(ys))); } double step = Math.hypot(xs - lastX, ys - lastY); sleep((int) Math.round((maxWait - minWait) * (step / maxStep) + minWait)); } return new Point((int) xs, (int) ys); } /** * Moves the mouse from the current position to the specified position. * Approximates human movement in a way where smoothness and accuracy are * relative to speed, as it should be. * * @param x The x destination * @param y The y destination * @result The actual end point */ public Point windMouse(int x, int y) { Point c = Client.getMousePosition(); double speed = (Math.random() * 15D + 15D) / 10D; return windMouseImpl(c.x, c.y, x, y, 9D, 3D, 5D / speed, 10D / speed, 10D * speed, 8D * speed); } private void setMousePosition(Point p) { Mouse.hop(p.x, p.y); } private static double distance(double x1, double y1, double x2, double y2) { return Math.sqrt((Math.pow((Math.round(x2) - Math.round(x1)), 2) + Math.pow((Math.round(y2) - Math.round(y1)), 2))); } public double distance(Point p1, Point p2) { return Math.sqrt((p2.y - p1.y) * (p2.y - p1.y) + (p2.x - p1.x) * (p2.x - p1.x)); } public static float randomPointBetween(float corner1, float corner2) { if (corner1 == corner2) { return corner1; } float delta = corner2 - corner1; float offset = Calculations.getRandom().nextFloat() * delta; return corner1 + offset; } public Point randomPoint(Point p1, Point p2) { int randomX = (int) randomPointBetween(p1.x, p2.x); int randomY = (int) randomPointBetween(p1.y, p2.y); return new Point(randomX, randomY); } }  
      Happy botting!
    19. Like
    20. Like
      holic got a reaction from littlebotterd in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Hey there, thanks for letting me know. I was unaware of this bug but sounds like it should be a simple fix. Expect an update in the next day or two that fixes that.
    21. Like
      holic got a reaction from littlebotterd in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Hey, buddy. Thank you very much! It's kind words like this that keep me going on projects like this.
      So you're welcome and have a great day!
    22. Like
      holic reacted to Terminusz in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      came here just to say this bot is great and you are great for being so vigilant on the bug fixing and updates
    23. Like
      holic got a reaction from learntobot123 in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      No worries, buddy And yeah unfortunately its a known bug, on the list. Seems to have just started happening randomly so I'm guessing my break delay thingy is throwing an error. Should be fixed soon.
    24. Like
      holic got a reaction from learntobot123 in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      Hey thank you very much I have some time tomorrow to work on this so I'll add it to the list!
       
      Ah I see, cheers! And no worries, I know it's not criticism. I appreciate the feedback, it goes a long way to making the script better for everyone. Thanks for the kind words.
      Just for the sake of debugging, what NPC(s) in particular were you fighting? It'll help it see if any NPCs in particular make it slower than others.
    25. Like
      holic reacted to benosborne in Fightaholic - The scrappy AIO fightin' script - Interaction Before Fight Added   
      i have made a 1 def pure f2p with this script, 30 att 66 str, 69 range script works fine, eats , banks fine, not died once.
    ×
    ×
    • Create New...

    Important Information

    We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.