/*
* KaramjaFisher.java
* v.1.8
* By Linux_Communist
* Fixed by veejay, samyyy123, mrz.
* www.chemfy.fi
* First release 26.03.08
*
* Features:
* -Can bank or power
* -Can catch lobsters, tuna, swordfish.
* -Anti whirlpool, random combat, losing tools, logout
* -Deathwalk
*
*
* With harpoon argument it fishes tuna and swordfish.
* With tuna/swordfish argument it fishes for tuna and swordfish but
* drops the other fish.
*
* Updates:
* Karamja Fisher 1.3
* - Removed bugs
* - Put working bank
*
* Karamja Fisher 1.4
* - The script text box is now in a better place with a frame
* - Added text "Holding ** fishes"
*
* Karamja Fisher 1.5
* - Calculator till next lvl.
* - "exp" will be changed to "XP".
* - "Banked *** lobster"/swordfish/etc will be added "s".
* - In credits will be added a dot.
*
* Karamja Fisher 1.6
* - Removed warnings
* - "sworfishes" were renamed to "swordfishes"
* - Doesn't click anymore on papermap
* - Withdrawing 60 gp, if inventory has less money than 60 gp. NOTE: CASH SHOULD BE IN 1st SLOT! Cash tab should be already opened! And fishes should be in the cash tab.
*
* Karamja Fisher 1.7
* - Added more custom's officers
* - Fixed clicking / answering for custom's officer's questions
* - Won't wait 5-7 seconds after clicking on "Pay-Fare". It will wait 1-2 seconds.
* - Now script can withdraw anything, so cash can be anywhere.
*
* Karamja Fisher 1.8
* - Fixed withdraw/deposit of tools - by fusion89k
* - Fixed tuna dropping in swordie fishing method - by fusion89k
*
*/
import java.awt.*;
import java.util.Map;
import com.speljohan.rsbot.bot.Bot;
import com.speljohan.rsbot.script.Script;
import com.speljohan.rsbot.script.wrappers.*;
import com.speljohan.rsbot.event.listeners.PaintListener;
import java.awt.event.KeyEvent;
public class KaramjaFisher extends Script implements PaintListener {
private static final Color BLACK = new Color(0, 0, 0, 100);
public static final Color GREEN = new Color(0, 255, 0, 255);
private static final Color ORANGE = new Color(255, 128, 0, 255);
public boolean interfaceExists(int id) {
boolean[] vi = Bot.getClient().getValidInterfaceArray();
if (vi == null) {
return false;
}
if (!(id < vi.length)) {
return false;
}
return vi[id];
}
public void turnCamera() {
char[] LR = new char[] { KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT };
char[] UD = new char[] { KeyEvent.VK_UP, KeyEvent.VK_DOWN };
char[] LRUD = new char[] { KeyEvent.VK_LEFT, KeyEvent.VK_RIGHT,
KeyEvent.VK_UP, KeyEvent.VK_DOWN };
int random2 = random(0, 2);
int random1 = random(0, 2);
int random4 = random(0, 4);
if (random(0, 3) == 0) {
Bot.getInputManager().pressKey(LR[random1]);
try {
Thread.sleep(random(100, 400));
} catch (Exception e) {
}
Bot.getInputManager().pressKey(UD[random2]);
try {
Thread.sleep(random(300, 600));
} catch (Exception e) {
}
Bot.getInputManager().releaseKey(UD[random2]);
try {
Thread.sleep(random(100, 400));
} catch (Exception e) {
}
Bot.getInputManager().releaseKey(LR[random1]);
} else {
Bot.getInputManager().pressKey(LRUD[random4]);
if (random4 > 1)
try {
Thread.sleep(random(300, 600));
} catch (Exception e) {
}
else
try {
Thread.sleep(random(500, 900));
} catch (Exception e) {
}
Bot.getInputManager().releaseKey(LRUD[random4]);
}
}
public void onRepaint(Graphics g)
{
if(isLoggedIn()) {
long millis = System.currentTimeMillis() - startTime;
long hours = millis / (1000 * 60 * 60);
millis -= hours * (1000 * 60 * 60);
long minutes = millis / (1000 * 60);
millis -= minutes * (1000 * 60);
long seconds = millis / 1000;
int XPChange = skills.getCurrentSkillExp(10) - startXP;
int LevelChange = skills.getCurrentSkillLevel(10) - startLevel;
int x = 18;
int y = 108;
g.setColor(BLACK);
g.fill3DRect(14, 108, 219, 214, true);
g.setColor(GREEN);
g.drawString(getName() + " " + getVersion(), x, y += 15);
g.drawString("by " + getAuthor() + ", fixed by", x, y += 15);
g.drawString(getFixers() + ".", x, y += 15);
g.setColor(ORANGE);
if(fishHarpoon && dropTuna)
g.drawString("Banked " + Integer.toString(swordfishBanked) + " swordfishes.", x, y += 20);
else if(fishHarpoon && !dropTuna && !dropSwordfish)
g.drawString("Banked " + Integer.toString(swordfishBanked) + " swordfishes and " + Integer.toString(tunaBanked) + " tunas.", x, y += 20);
else if(fishHarpoon && dropSwordfish)
g.drawString("Banked " + Integer.toString(tunaBanked) + " tunas.", x, y += 20);
else if(!fishHarpoon)
g.drawString("Banked " + Integer.toString(lobsterBanked) + " lobsters.", x, y += 20);
g.drawString("Runtime: " + hours + "h " + minutes + "min " + seconds + "sec.", x, y += 20);
g.drawString("Current: " + skills.getCurrentSkillLevel(10) + " levels and " + skills.getCurrentSkillExp(10) + " XP.", x, y += 20);
g.drawString("Gained: " + LevelChange + " levels and " + XPChange + " XP.", x, y += 20);
g.drawString("We're " + skills.getPercentToNextLevel(10) + "% to next level, which now", x, y += 20);
g.drawString("needs " + skills.getXPToNextLevel(10) + " XP.", x, y += 20);
if(fishHarpoon && dropTuna)
g.drawString("Next level needs " + skills.getXPToNextLevel(10) / 100 + " swordfishes.", x, y += 20);
else if(fishHarpoon && !dropTuna && !dropSwordfish)
g.drawString("Next level needs " + skills.getXPToNextLevel(10) / 90 + " both fishes.", x, y += 20);
else if(fishHarpoon && dropSwordfish)
g.drawString("Next level needs " + skills.getXPToNextLevel(10) / 80 + " tunas.", x, y += 20);
else if(!fishHarpoon)
g.drawString("Next level needs " + skills.getXPToNextLevel(10) / 90 + " lobsters.", x, y += 20);
if(fishHarpoon && dropTuna)
g.drawString("Holding " + getInventoryCount(swordfishID) + " swordfishes.", x, y += 20);
else if(fishHarpoon && !dropTuna && !dropSwordfish)
g.drawString("Holding " + getInventoryCount(swordfishID) + " swordfishes and " + getInventoryCount(tunaID) + " tunas.", x, y += 20);
else if(fishHarpoon && dropSwordfish)
g.drawString("Holding " + getInventoryCount(tunaID) + " tunas.", x, y += 20);
else if(!fishHarpoon)
g.drawString("Holding " + getInventoryCount(lobsterID) + " lobsters.", x, y += 20);
}
}
public static final int lobsterID = 377;
public static final int tunaID = 359;
public static final int swordfishID = 371;
// Deathpath
private static final RSTile[] DEATH_PATH = {
new RSTile(3232, 3219), new RSTile(3233, 3227),
new RSTile(3228, 3234), new RSTile(3220, 3237),
new RSTile(3212, 3237), new RSTile(3204, 3238),
new RSTile(3196, 3240), new RSTile(3188, 3242),
new RSTile(3180, 3243), new RSTile(3172, 3241),
new RSTile(3164, 3241), new RSTile(3156, 3239),
new RSTile(3148, 3237), new RSTile(3140, 3235),
new RSTile(3135, 3229), new RSTile(3126, 3227),
new RSTile(3118, 3228), new RSTile(3109, 3231),
new RSTile(3097, 3232), new RSTile(3087, 3230) };
public static final RSTile[] bankPath = new RSTile[] { new RSTile(3095, 3241), new RSTile(3089, 3247), new RSTile(3081, 3246),
new RSTile(3073, 3249), new RSTile(3073, 3257), new RSTile(3073, 3265),
new RSTile(3073, 3273), new RSTile(3065, 3275), new RSTile(3061, 3268),
new RSTile(3059, 3260), new RSTile(3053, 3254), new RSTile(3045, 3253),
new RSTile(3042, 3245), new RSTile(3041, 3237), new RSTile(3033, 3237),
new RSTile(3028, 3230), new RSTile(3028, 3222), new RSTile(3027, 3218) };
public static final RSTile[] karamjaPath = new RSTile[] { new RSTile(2924, 3177), new RSTile(2926, 3169),
new RSTile(2920, 3163), new RSTile(2917, 3155), new RSTile(2925, 3153),
new RSTile(2933, 3150), new RSTile(2942, 3146), new RSTile(2952, 3146) };
public RSTile[] shipToBank = reversePath(bankPath);
public RSTile[] shipToKaramja = reversePath(karamjaPath);
//Fishing spot id
public static final int[] fishingSpots = new int[] { 324 };
public static final int lobsterPotID = 301;
public static final int harpoonID = 311;
public static final int coinsID = 995;
// Getting time so we can check if we have been idle for awhile
public long time = System.currentTimeMillis();
// Items to drop when using power fishing and inventory is full
public static final int[] dropThis = new int[] { 377, 359, 371 };
public static final int[] bankWindows = new int[] { 2213 };
public static final int[] BankCustoms = new int[] { 377, 376, 378 }; // All custom officers in port sarim, with them you can get to Karamja
public static final int[] KaramjaCustoms = new int[] { 380 }; // All custom officers in karamja port, with them you can get to Port Sarim
// Banks tile
public boolean powerFish, fishHarpoon, dropTuna, dropSwordfish;
public int startLevel = 0;
public int startXP = 0;
public int tunaBanked = 0;
public int lobsterBanked = 0;
public int swordfishBanked = 0;
int tunaCount = 0;
int lobsterCount = 0;
int swordfishCount = 0;
public long startTime = System.currentTimeMillis();
int progress = 0;
boolean walking = false;
int randomTime = 0;
boolean weAreOnKaramja = true;
boolean sailinggp = false;
public double getVersion() {
return 1.8;
}
public String getName() {
return "Karamja Fisher";
}
public String getScriptCategory() {
return "Fishing";
}
public String getAuthor() {
return "Linux_Communist";
}
public String getFixers() {
return "veejay, samyyy123, mrz";
}
public boolean onStart(Map<String, String> args) {
switch(doWeHarpoon(args.get("what")))
{
case 1: fishHarpoon = true;
dropTuna = false;
dropSwordfish = false;
break;
case 2: fishHarpoon = false;
dropTuna = false;
dropSwordfish = false;
break;
case 3: dropSwordfish = false;
fishHarpoon = true;
dropTuna = true;
break;
case 4: dropTuna = false;
fishHarpoon = true;
dropSwordfish = true;
break;
case 0: return false;
}
if(args.get("how").equals("power"))
powerFish = true;
else
powerFish = false;
if (args.get("sailingmoney").equals("take"))
sailinggp = true;
else sailinggp = false;
lobsterBanked = 0;
tunaBanked = 0;
swordfishBanked = 0;
startTime = System.currentTimeMillis();
if(isLoggedIn()){
startLevel = skills.getCurrentSkillLevel(10);
startXP = skills.getCurrentSkillExp(10);
}
Bot.getEventManager().addListener(PaintListener.class, this);
return true;
}
public void onFinish() {
Bot.getEventManager().removeListener(PaintListener.class, this);
}
public int loop() {
if(isLoggedIn() && startLevel == 0)
{
startLevel = skills.getCurrentSkillLevel(10);
startXP = skills.getCurrentSkillExp(10);
}
switch(progress)
{
case 0: //Fishing part
if(distanceTo(bankPath[0]) < 15) {
log("We are at the bank");
turnCamera();
weAreOnKaramja = false;
progress = 2;
return random(1000,2000);
}
if (!walking && dead()) // check if we are dead and not deathwalking
{
log("Dead");
walking = true;
setRun(true);
return random(500, 1000);
}
if(walking) // Does deathwalk
{
if(!getMyPlayer().isMoving())
doDeathWalk();
return random(500, 1000);
}
if (isInventoryFull() && !powerFish){ //If we bank and have inv full moves to next progress
if(dropTuna)
dropAllExcept(harpoonID,coinsID,swordfishID);
if(dropSwordfish)
dropAllExcept(harpoonID,coinsID,tunaID);
if(isInventoryFull())
{
progress++;
setRun(true);
return random(1000,1500);
}
return random(500,1000);
} else if(isInventoryFull() && powerFish) // If we power and have inv full drops fish
{
dropFish();
}
if(getMyPlayer().isInCombat()) // If we are in combat runs away
{
runAway();
return random (400,700);
}
if(System.currentTimeMillis() - time < 30000+randomTime || getNearestNPCByID(405) != null)
{
if (getMyPlayer().getAnimation() == 618 || getMyPlayer().getAnimation() == 619 || getMyPlayer().isMoving())
{
return random(350,500);
}
}
if(fishHarpoon)
{
if(!inventoryContains(harpoonID))
{
if(getGroundItemByID(15, harpoonID) != null) {
RSItemTile item = getGroundItemByID(15, harpoonID);
if(item != null && !getMyPlayer().isMoving()) {
if(distanceTo(item) > 8) {
walkTileMM(item);
return random(1000,2000);
}
atTile(item, "Take");
return random(500, 1000);
} else
return random(500, 1000);
} else {
progress++;
return random(300,500);
}
}
} else if(!fishHarpoon)
{
if(!inventoryContains(lobsterPotID))
{
if(getGroundItemByID(15, lobsterPotID) != null) {
RSItemTile item = getGroundItemByID(15, lobsterPotID);
if(item != null && !getMyPlayer().isMoving()) {
if(distanceTo(item) > 8) {
walkTileMM(item);
return random(1000,2000);
}
atTile(item, "Take");
return random(500, 1000);
} else
return random(500,1000);
} else {
progress++;
return random(300,500);
}
}
}
fish(); // Lets fish
randomTime = random(1000,20000); // Gets some random for the timer
time = System.currentTimeMillis(); // resets timer
return random(2000,3000);
case 1:
return walkToBank();
case 2:
weAreOnKaramja = false;
RSObject bankWindow = findObject(bankWindows);
turnCamera();
if(distanceTo(bankWindow.getLocation()) > 5)
{
walkTileMM(bankWindow.getLocation());
return random(500,750);
}
if(!interfaceExists(INTERFACE_BANK))
{
atObject(bankWindow,"Use-quickly");
return random(1500,1750);
}
if(lobsterCount == 0)
lobsterCount = getInventoryCount(377);
if(tunaCount == 0)
tunaCount = getInventoryCount(359);
if(swordfishCount == 0)
swordfishCount = getInventoryCount(371);
if(fishHarpoon){
turnCamera();
bank.depositAllExcept(harpoonID, coinsID);}
if(!fishHarpoon){
turnCamera();
bank.depositAllExcept(lobsterPotID, coinsID);}
if (sailinggp == true) { // If arguments said that we have to take 60gp for sailing, then we will take them
withdraw("Coins", coinsID, 60);
}
checkForTool();
if(!isInventoryFull()) { // if inventory isnt full goes to second progress
lobsterBanked += lobsterCount;
lobsterCount = 0;
swordfishBanked += swordfishCount;
swordfishCount = 0;
tunaBanked += tunaCount;
tunaCount = 0;
progress++;
}
bank.close(); // close bank window
return random(500,750);
case 3:
return walkToFishingSpot();
}
return random(500, 1000);
}
public boolean withdraw(String itemName, int itemID, int count) {
bank.searchItem(itemName);
wait(random(1000,2000));
clickMouse(random(40, 60), random(100, 115), 1, 1, false);
wait(random(250,500));
if (count == 0) {
atMenu("Withdraw-All");
wait(random(200,300));
}
if (count == 1 || count == 5 || count == 10) {
atMenu("Withdraw-" + count);
wait(random(200,300));
} else {
atMenu("Withdraw-X");
wait(random(800,1000));
if(RSInterface.getInterface(INTERFACE_BANK_SEARCH).isValid()) {
Bot.getInputManager().sendKeys("" + count, true);
wait(random(700,800));
}
}
wait(random(1000,2000));
if (getInventoryCount(itemID) < 1) {
log("Seems you don't have more " + itemName + ".");
stopAllScripts();
}
wait(random(500,1000));
clickMouse(random(301, 330), random(298, 317), 1, 1, true);
wait(random(1000,2000));
return true;
}
public int doWeHarpoon(String whatToFish) { // checks if argument contained n as in net or b as in bait
if (whatToFish.contains("both"))
return 1;
else if (whatToFish.contains("lobster"))
return 2;
else if(whatToFish.contains("sword"))
return 3;
else if(whatToFish.contains("tuna"))
return 4;
else {
log("To use this script give arguments either harpoon, tuna, lobster or swordfish for first and power or bank on second like \"harpoon,bank\"");
return 0;
}
}
public boolean dead() { // Are we dead ?
return distanceTo(new RSTile(3232, 3219)) < 15;
}
public void doDeathWalk() { // doing deathwalk
weAreOnKaramja = false;
if (distanceTo(DEATH_PATH[DEATH_PATH.length-1]) < 10){
walking = false;;
} else
walkPathMM(randomizePath(DEATH_PATH, 2, 2), 15);
}
public void dropFish() { // Dropping items that are set on dropThis array
boolean drop = false;
for(int i = 0; i < 27; i++)
{
for(int y = 0; y < dropThis.length; y++)
{
if(dropThis[y] == getInventoryItems()[i].getID()) {
drop = true;
}
}
if(drop)
{
atInventoryItem(getInventoryItems()[i].getID(), "Drop");
wait(random(1000,2000));
drop = false;
}
}
}
public void drop(int id) {
if(inventoryContains(id))
{
for(int i = 0; i < 27; i++)
{
if(getInventoryItems()[i].getID() == id)
{
atInventoryItem(id, "Drop");
if(inventoryContains(id))
break;
}
}
}
}
public void runAway() { // running away and running back after a while
RSTile foo, bar;
foo = getMyPlayer().getLocation();
setRun(true);
bar = new RSTile(foo.getX()-random(8,10),foo.getY()-random(8,10));
walkTileMM(bar);
wait(random(17000,20000));
walkTileMM(foo);
}
public void fish() { // Fishing
RSNPC spot = getNearestNPCByID(fishingSpots);
if (spot == null || distanceTo(spot.getLocation()) > 25) {
log("No (nearby) fishing spot. This sucks.");
}
else if (distanceTo(spot.getLocation()) > 4){
walkTileMM(spot.getLocation());
} else {
weAreOnKaramja = true;
if(fishHarpoon) atNPC(spot,"Harpoon");
else if(!fishHarpoon) atNPC(spot,"Cage");
}
}
public int walkToBank() {
if (getMyPlayer().isMoving()) return random(250,500);
if(findObject(2084) != null) {
wait(random(6000,8000)); // Wait's 6-8 seconds till it will click on "Cross"
if(atObject(findObject(2084), "Cross"))
{
weAreOnKaramja = false;
return random(2000,3000);
} else return random(1000,2000);
}
if(distanceTo(shipToBank[0]) < 8) { weAreOnKaramja = false; }
if(weAreOnKaramja)
{
if(distanceTo(karamjaPath[karamjaPath.length -1]) < 8){
if(Bot.getClient().getInterfaceCache()[64] != null) {
clickMouse(220+random(-77,60) ,455+random(-5,2), true); // Clicks on: Click here to continue // Interface: [64] [5]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[228] != null) {
clickMouse(260+random(-85,87) ,403+random(-5,3), true); // Clicks on: Can I journey on this ship? // Ok. // Interface: [228] [2]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[230] != null) {
clickMouse(260+random(-118,116) ,420+random(-6,5), true); // Clicks on: Search away, I have nothing to hide. // Interface: [230] [3]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[241] != null) {
clickMouse(310+random(-70,63) ,455+random(-7,1), true); // Clicks on: Click here to continue // Interface: [241] [5]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[242] != null) {
clickMouse(310+random(-73,65) ,455+random(-5,2), true); // Clicks on: Click here to continue // Interface: [242] [6]
return random(1000,2000);
} else {
RSNPC customs = getNearestNPCByID(KaramjaCustoms);
if(customs != null)
{
atNPC(customs, "Pay-Fare");
return random(1000,2000);
} else {
return random(1000,2000);
}
}
}
walkPathMM(randomizePath(karamjaPath,2,2),12);
} else
{
if (distanceTo(bankPath[0]) < 8){
progress++;
return random(500,750);
}
walkPathMM(randomizePath(shipToBank,2,2) ,15);
}
return random(3500,4000);
}
public int walkToFishingSpot() {
if (getMyPlayer().isMoving()) return random(250,500);
if(findObject(2082) != null) {
wait(random(6000,8000)); // Wait's 6-8 seconds till it will click on "Cross"
if(atObject(findObject(2082), "Cross"))
{
weAreOnKaramja = false;
return random(2000,3000);
} else return random(1000,2000);
}
if(distanceTo(shipToKaramja[0]) < 20) weAreOnKaramja = true;
if(!weAreOnKaramja)
{
if(distanceTo(bankPath[bankPath.length -1]) < 8){
if(Bot.getClient().getInterfaceCache()[64] != null) {
clickMouse(220+random(-77,60) ,455+random(-5,2), true); // Clicks on: Click here to continue // Interface: [64] [5]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[228] != null) {
clickMouse(260+random(-28,33) ,403+random(-4,5), true); // Clicks on: Yes please. // Interface: [228] [2]
return random(1000,2000);
} else if(Bot.getClient().getInterfaceCache()[241] != null) {
clickMouse(310+random(-70,63) ,455+random(-7,1), true); // Clicks on: Click here to continue // Interface: [241] [5]
return random(1000,2000);
} else {
RSNPC customs = getNearestNPCByID(BankCustoms);
if(customs != null)
{
atNPC(customs, "Pay-Fare");
return random(1000,2000);
} else return random(1000,2000);
}
}
walkPathMM(randomizePath(bankPath,2,2),15);
} else
{
if (distanceTo(karamjaPath[0]) < 8){
progress = 0;
return random(500,750);
}
walkPathMM(randomizePath(shipToKaramja,2,2) ,18);
}
return random(3500,4000);
}
public void checkForTool() {
boolean tool = false;
if(fishHarpoon)
{
if(inventoryContains(harpoonID))
{
log("Have harpoon");
tool = true;
}
} else if(!fishHarpoon)
{
if(inventoryContains(lobsterPotID))
{
log("Have lobster pot");
tool = true;
}
}
if(!tool)
{
log("No tool, taking one");
//for(int i = 0; i < bank.getItemArray().length; i++) {
if(!fishHarpoon)
{
//if(bank.getItemArray()[i] == lobsterPotID)
//{
//withdraw("Coins", 995, 60);
withdraw("Lobster pot", lobsterPotID, 1);
//bank.atItem(lobsterPotID,"Withdraw 1");
tool = true;
log("Took lobster pot");
//}
} else if(fishHarpoon)
{
//if(bank.getItemArray()[i] == harpoonID)
//{
withdraw("Harpoon", 311, 1);
//bank.atItem(harpoonID,"Withdraw 1");
tool = true;
log("Took harpoon");
//}
}
//if(tool)
// break;
//}
}
}
public String getScriptDescription() {
return "<html>\n" +
"<head></head>\n" +
"<body>\n" +
"<center>" +
"<h2>" + getName() + "</h2>" +
"</center>\n" +
"<b>Author:</b> " + getAuthor() + "<br />" +
"<b>Fixed by:</b> " + getFixers() + "<br />" +
"<b>Website:</b> <a href=\"http://www.chemfy.fi/\">http://www.chemfy.fi/</a><br />" +
"<b>Version:</b> " + getVersion() + "<br />" +
"<b>Features:</b>" +
"<ul><li>Can bank or power</li>" +
"<li>Can catch lobster, tuna, swordfish.</li>" +
"<li>Anti whirlpool, random combat, losing tools, logout.</li>" +
"<li>Shows fish banked and runtime.</li>" +
"<li>Deathwalk.</li></ul><br />" +
"<b>Arguments:<b><br />" +
"<form>Take 60gp for sailing each time:<input type=\"radio\" name=\"sailingmoney\" value=\"take\" checked=\"checked\"> yes " +
"<input type=\"radio\" name=\"sailingmoney\" value=\"notake\"> no<BR></form>" +
"<form>Bank:<input type=\"radio\" name=\"how\" value=\"bank\" checked=\"checked\"> " +
"Power:<input type=\"radio\" name=\"how\" value=\"power\"><br /></form>" +
"<form>Lobster:<input type=\"radio\" name=\"what\" value=\"lobster\" checked=\"checked\"> " +
"Tuna:<input type=\"radio\" name=\"what\" value=\"tuna\"> " +
"Swordfish:<input type=\"radio\" name=\"what\" value=\"swordfish\"> " +
"Tuna & Swordfish:<input type=\"radio\" name=\"what\" value=\"both\"><br /></form>" +
"</body>\n" +
"</html>";
}
}