| Back to Index | Page generated: Oct 27, 2025, 5:37:21 AM | 
 Expansion DTT Snake Charmer
 Expansion DTT Snake Charmer| from Expansion Manager's OXP list | from Expansion Manifest | |
|---|---|---|
| Description | Specs similar to a Cobra Mk III, but has 4 integral passenger berths built in. | Specs similar to a Cobra Mk III, but has 4 integral passenger berths built in. | 
| Identifier | DTT.Snake Charmer 1.1.Paradox | DTT.Snake Charmer 1.1.Paradox | 
| Title | DTT Snake Charmer | DTT Snake Charmer | 
| Category | Ships | Ships | 
| Author | Paradox | Paradox | 
| Version | 1.1 | 1.1 | 
| Tags | ||
| Required Oolite Version | ||
| Maximum Oolite Version | ||
| Required Expansions | ||
| Optional Expansions | ||
| Conflict Expansions |  |  | 
| Information URL | http://wiki.alioth.net/index.php/D.T.T._Ship_Builders_Inc. | n/a | 
| Download URL | https://wiki.alioth.net/img_auth.php/7/7a/DTT_Snake_Charmer_1.1.oxz | http://wiki.alioth.net/img_auth.php/7/7a/DTT_Snake_Charmer_1.1.oxz | 
| License | CC-BY-NC-SA 3.0 | CC-BY-NC-SA 3.0 | 
| File Size | n/a | |
| Upload date | 1610873343 | 
Also read http://wiki.alioth.net/index.php/DTT%20Snake%20Charmer
D.T.T Shipbuilders introduces the D.T.T. Snake Charmer! The Snake Charmer is meant to be an upgrade to the traditional Cobra Mk III. Like the Mk III she handles 25 tons of cargo, and she also has 4 structurally integral passenger berths! Yes sir folks, you heard me right! Four passenger berths and 25 tons of free cargo space! Try that in your Cobra Mk III! To make this possible however, the four berths are structurally integral to the ship, and cannot be removed. Further more, more berths cannot be added to this ship. Other ship systems have also been upgraded as listed below. In addition to the basic D.T.T. Snake Charmer, we are also excited to offer a special limited edition Snake Charmer Pinup model! In a tribute to those fighter planes of so very long ago, this special version of the Snake Charmer features a 1950's style mural painted on both sides of the hull by the universally renowned artist Paradox himself! That's right ladies and gentlemen, this limited edition features a sexy "Snake Charmer" pinup that you will find no where else in the universe! (pinup paint job will appear on player version of the ship only, npc versions will feature "normal" paint jobs.) Due to it's more "mature" nature, you may see the full size image by clicking on the picture below. Length 110m Width 59m Height 30.5m energy_recharge_rate = 2.5; max_cargo = 45; (20 used by permanent passenger berths = 25 free) max_energy = 175; max_flight_pitch = 1.0; max_flight_roll = 2.0; max_flight_yaw = 1.0; max_flight_speed = 325; max_missiles = 6; thrust = 35; 4 Structurally Integral Passenger Berths (cannot be removed) Price 175,000 Tech lvl 7 and up. To install, just unzip and place the .oxp folder into your AddOns folder. Released under Creative Commons Attribution-Non-Commercial-Share-Alike 3.0 license yada yada yada... I HIGHLY encourage you to change/modify this ship to meet your needs, I only ask that you give me credit for the original mesh/texture. Thanks and enjoy! Thanks to Smivs, Cim, and Nyarlatothep for developing the Berth Control scripts! They ROCK! Paradox cyborspasm@gmail.com
| Name | Visible | Cost [deci-credits] | Tech-Level | 
|---|---|---|---|
| Passenger Berth - takes up 5t of cargo space | yes | 8250 | 6+ | 
| Remove Passenger Berth - reclaims 5t of cargo space | yes | 1000 | 2+ | 
| Name | 
|---|
| D.T.T. Snake Charmer | 
| dtt_snake_charmer_player | 
| Path | |
|---|---|
| Scripts/berthControl-conditions.js | 
/*jslint white: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
/*global missionVariables, player*/
"use strict";
this.name			= "berthControl-conditions";
this.author			= "Nyarlatothep";
this.copyright		= "This script is hereby placed in the public domain.";
this.version		= "1.2";
/* contexts: npc, purchase, scripted, newShip, (loading), (damage), (portable) */
this.allowAwardEquipment = function(equipment, ship, context)
{
	// OXP hook to allow stations to forbid specific equipment
	if (context == "purchase" && player.ship.dockedStation && player.ship.dockedStation.scriptInfo["oolite-barred-equipment"])
	{
		if (player.ship.dockedStation.scriptInfo["oolite-barred-equipment"].indexOf(equipment) != -1)
		{
			return false;
		}
	}
	// fixed berthts?
	var fixedBerths = ship.scriptInfo.fixedBerths;
	if (context == "purchase" && (fixedBerths === "Yes" || fixedBerths === "Y"))
	{
		player.consoleMessage(missionVariables.berthControl_marketMessage, 1.5);
		return false;
	}
	
	if (context == "purchase" && equipment == "EQ_PASSENGER_BERTH_REMOVAL")
	{
		//var removableBerths = parseInt(missionVariables.berthControl_removableBerths);
		if (missionVariables.berthControl_removableBerths === 0)
		{
			player.consoleMessage(missionVariables.berthControl_marketMessage, 1.5);
			return false;
		}
	}
	// otherwise allowed
	return true;
}
 | 
| Scripts/berthControl.js | /*jslint white: true, undef: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
"use strict";
// Standard attributes
this.name           = "BerthControl";
this.author         = "Smivs, Nyarlatothep";
this.copyright      = "This script is hereby placed in the public domain.";
this.version        = "1.2";
this.description    = "Passenger berths management script.";
this.playerBoughtNewShip = function(ship)
// set removable berth count when ship is bought
{
	missionVariables.berthControl_removableBerths = null;
	missionVariables.berthControl_marketMessage = null;
	
	var msg = "";
	var berths = ship.passengerCapacity;  // !
	var fixedBerths = ship.scriptInfo.fixedBerths;
	// get bool value from string
	fixedBerths = (fixedBerths === "Yes" || fixedBerths === "Y");
	
	if (fixedBerths)
	{
		msg = "This ship cannot be equipped with standard Passenger Berths.";
	}
	
	var minBerths = parseInt(ship.scriptInfo.minBerths);
	// ensure minBerth is a valid integer & it's > 0
	if (fixedBerths || (!isNaN(minBerths) && minBerths > 0))
	{
		// no berths to start with? no need for minBerths!
		if (berths > 0)
		{
			//  calculate the actual number of permanent berths
			if (fixedBerths || minBerths > berths) minBerths = berths;
			//  compose a nice formatted message...
			msg = (minBerths ===  berths ? "The " + minBerths : minBerths + " of the" ) + " Passenger Berth" + (berths === 1 ? "" : "s");
			msg += " that came with the ship cannot be " + (fixedBerths? "modified" : "removed") + " at this shipyard.";
			// save the number of removable berths for later
			missionVariables.berthControl_removableBerths =  berths - minBerths;
		}
	}
	
	if (msg !== "")
	{
		player.consoleMessage(msg, 5);
		//  save a message for later
		if (berths > 0 && minBerths > 0)
		{
			msg = minBerths + " Passenger Berths cannot be modified at this shipyard."
		}
		missionVariables.berthControl_marketMessage = msg;
	}
}
this.playerBoughtEquipment = function(equipment)
{
  if (missionVariables.berthControl_removableBerths === null)
	{
		// no berthControl mission variable? do nothing
		return;
	}
 
  if (equipment == "EQ_PASSENGER_BERTH")
    {
		missionVariables.berthControl_removableBerths++;  // update counter
    }
  if (equipment == "EQ_PASSENGER_BERTH_REMOVAL")
    {
		missionVariables.berthControl_removableBerths--;  // update counter
    }
} |