function klutz_install()
{
    module_addhook("newday");
    global $session;
    module_addeventhook("village", "return (max(1,(200-\$session['user']['dragonkills'])/2));");
    return true;
}
function pinata_install()
{
    module_addeventhook("forest", "return 100;");
    module_addhook("gardens");
    module_addhook("newday");
    return true;
}
function peerpressure_install()
{
    module_addeventhook("village", "require_once(\"modules/peerpressure.php\"); return peerpressure_victimtest();");
    module_addhook("newday");
    module_addhook("battle-defeat");
    return true;
}
function crying_install()
{
    global $session;
    module_addeventhook("inn", "require_once(\"modules/crying.php\"); return crying_seentest();");
    module_addhook("newday");
    return true;
}
function quester_install()
{
    module_addeventhook("forest", "return 100;");
    module_addhook("ale");
    module_addhook("footer-hof");
    return true;
}
function abigail_install()
{
    module_addhook('newday');
    module_addeventhook('village', "\$bought = get_module_pref(\"bought\", \"abigail\"); return (\$bought ? 0 : 50);");
    module_addeventhook('gardens', "\$bought = get_module_pref(\"bought\", \"abigail\"); return (\$bought ? 0 : 50);");
    return true;
}
function abandoncastle_install()
{
    module_addhook("newday");
    module_addhook("village");
    module_addeventhook("forest", "return 100;");
    return true;
}
function dragonattack_install()
{
    module_addeventhook("forest", "require_once(\"modules/dragonattack.php\"); return dragonattack_victimtest();");
    module_addeventhook("travel", "require_once(\"modules/dragonattack.php\"); return dragonattack_victimtest();");
    module_addhook("newday");
    module_addhook("battle-defeat");
    return true;
}
function crazyaudrey_install()
{
    module_addhook("village");
    module_addhook("village-desc");
    module_addhook("newday");
    module_addhook("newday-runonce");
    module_addeventhook("forest", "return 100;");
    return true;
}
function goldmine_install()
{
    module_addeventhook("forest", "return 100;");
    $sql = "DESCRIBE " . db_prefix("mounts");
    $result = db_query($sql);
    while ($row = db_fetch_assoc($result)) {
        if ($row['Field'] == "mine_canenter") {
            debug("Migrating mine_canenter for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','entermine',mountid,mine_canenter FROM " . db_prefix("mounts") . " WHERE mine_canenter>0";
            db_query($sql);
            debug("Dropping mine_canenter field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_canenter";
            db_query($sql);
        }
        if ($row['Field'] == "mine_candie") {
            debug("Migrating mine_candie for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','dieinmine',mountid,mine_candie FROM " . db_prefix("mounts") . " WHERE mine_candie>0";
            db_query($sql);
            debug("Dropping mine_candie field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_candie";
            db_query($sql);
        }
        if ($row['Field'] == "mine_cansave") {
            debug("Migrating mine_cansave for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','saveplayer',mountid,mine_cansave FROM " . db_prefix("mounts") . " WHERE mine_cansave>0";
            db_query($sql);
            debug("Dropping mine_cansave field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_cansave";
            db_query($sql);
        }
        if ($row['Field'] == "mine_tethermsg") {
            debug("Migrating mine_tethermsg for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','tethermsg',mountid,mine_tethermsg FROM " . db_prefix("mounts") . " WHERE mine_tethermsg!=''";
            db_query($sql);
            debug("Dropping mine_tethermsg field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_tethermsg";
            db_query($sql);
        }
        if ($row['Field'] == "mine_deathmsg") {
            debug("Migrating mine_deathmsg for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','deathmsg',mountid,mine_deathmsg FROM " . db_prefix("mounts") . " WHERE mine_deathmsg!=''";
            db_query($sql);
            debug("Dropping mine_deathmsg field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_deathmsg";
            db_query($sql);
        }
        if ($row['Field'] == "mine_savemsg") {
            debug("Migrating mine_savemsg for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'goldmine','mounts','savemsg',mountid,mine_savemsg FROM " . db_prefix("mounts") . " WHERE mine_savemsg!=''";
            db_query($sql);
            debug("Dropping mine_savemsg field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP mine_savemsg";
            db_query($sql);
        }
    }
    return true;
}
function hepzibah_install()
{
    module_addhook("changesetting");
    module_addeventhook("village", "require_once(\"modules/hepzibah.php\"); return hepzibah_test();");
    // This doesn't work
    //
    //module_addeventhook("village", "return (max(1,(500-\$session['user']['dragonkills'])/2));");
    // only in Esoterra
    //if ($session['user']['location'] != get_module_setting("hepzibahloc")) $aloc=1;
    //module_addeventhook("village","\$aloc=get_module_setting(\"aloc\", \"hepzibah\");return (\$aloc?0:100);");
    return true;
}
function riddles_install()
{
    if (db_table_exists(db_prefix("riddles"))) {
        debug("Riddles table already exists");
    } else {
        debug("Creating riddles table.");
        // This is pulled out to another file just because it's so big.
        // no reason to parse it every time this module runs.
        require_once "modules/riddles/riddles_install.php";
    }
    module_addhook("superuser");
    module_addeventhook("forest", "return 100;");
    return true;
}
function rail_collector_install()
{
    //	$locs = rail_collector_getlocs();
    //	foreach($locs AS $loc => $locarray){
    //		$hid = $locarray[0];
    //		$rid = $locarray[1];
    //		$hookname = "dwelling-".$hid."-".$rid;
    //		module_addhook($hookname);
    //	}
    module_addhook("improbablehousing_interior");
    module_addhook("newday");
    module_addhook("iitems_tradables-top");
    module_addeventhook("forest", "return 10;");
    // very rare
    module_addeventhook("travel", "return 5;");
    // *extremely* rare
    return true;
}
function darkhorse_install()
{
    module_addeventhook("forest", "require_once(\"modules/darkhorse.php\");\r\n\t\t\treturn (darkhorse_tavernmount() ? 0 : 100);");
    module_addeventhook("travel", "require_once(\"modules/darkhorse.php\");\r\n\t\t\treturn (darkhorse_tavernmount() ? 0 : 20);");
    $sql = "DESCRIBE " . db_prefix("mounts");
    $result = db_query($sql);
    while ($row = db_fetch_assoc($result)) {
        if ($row['Field'] == "tavern") {
            debug("Migrating tavern for all mounts");
            $sql = "INSERT INTO " . db_prefix("module_objprefs") . " (modulename,objtype,setting,objid,value) SELECT 'darkhorse','mounts','findtavern',mountid,tavern FROM " . db_prefix("mounts");
            db_query($sql);
            debug("Dropping tavern field from mounts table");
            $sql = "ALTER TABLE " . db_prefix("mounts") . " DROP tavern";
            db_query($sql);
        }
    }
    module_addhook("forest");
    module_addhook("mountfeatures");
    module_addhook("moderate");
    return true;
}
function glowingstream_install()
{
    module_addeventhook("forest", "return 100;");
    return true;
}
function getimprobablestuff_install()
{
    module_addeventhook("forest", "return 100;");
    module_addeventhook("travel", "return 100;");
    return true;
}
function ferryman_install()
{
    module_addeventhook("forest", "return 100;");
    return true;
}
function stonehenge_install()
{
    module_addeventhook("forest", "return 100;");
    module_addhook("hprecalc");
    return true;
}
function tatmonster_install()
{
    module_addeventhook("forest", "return 30;");
    return true;
}
function quest_rohit_install()
{
    module_addhook("worldnav");
    module_addeventhook("village", "require_once(\"modules/quest_rohit.php\"); return quest_rohit_test();");
    return true;
}
function drunkard_install()
{
    module_addeventhook("inn", "require_once(\"modules/drunkard.php\"); return drunkard_chance();");
    module_addhook("newday");
    return true;
}
function jewelmonster_install()
{
    module_addeventhook("forest", "return 20;");
    return true;
}
function rspmutant_install()
{
    module_addeventhook("forest", "return 100;");
    return true;
}
function grassyfield_install()
{
    module_addeventhook("forest", "require_once(\"modules/grassyfield.php\");\r\n\t\t\t return grassyfield_percent();");
    return true;
}
function salesman_install()
{
    module_addeventhook("inn", "require_once(\"modules/salesman.php\"); return salesman_seentest();");
    module_addhook("newday");
}
function pubjokes_install()
{
    module_addeventhook("inn", "require_once(\"modules/pubjokes.php\"); 100;");
    return true;
}
function findgold_install()
{
    module_addeventhook("forest", "return 100;");
    module_addeventhook("travel", "return 20;");
    return true;
}
function waterfall_install()
{
    module_addeventhook("forest", "return 100;");
    module_addhook("hprecalc");
    return true;
}
function offering_install()
{
    module_addhook("newday");
    module_addeventhook("village", "\$seen=get_module_pref(\"seen\", \"offering\");return (\$seen>5?0:10);");
    return true;
}