Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1589 lines (1256 sloc) 43.2 KB
<?xml version="1.0" ?>
<TranscendenceModule>
<!--
PLAYER DATA
blackMarketCrime: Description of player's offense against the Sindikat
blackMarketCrimeCost: Price that the player has to pay to stop bounty hunters
blackMarketLevel: Black market level (1-6)
blackMarketShields: Level at which player got free shields
blackMarketWeapon: Level at which player got free weapon
blackMarketXP: Black Market experience points
-->
<!-- ENCOUNTERS -->
<!-- Black Market Station -->
<StationType UNID="&stBlackMarketStation;"
name= "Black Market station"
sovereign= "&svBlackMarket;"
inherit= "&baBlackMarketStation;"
attributes= "blackMarket, friendly, envEarth, envAvoidsAir, generic, human, majorStation, outlaws, populated"
dockScreen= "Main"
abandonedScreen= "&dsRPGAbandonedStation;"
armorID= "&itBlastPlate;"
hitPoints= "320"
multiHull= "true"
regen= "6"
fireRateAdj= "20"
canAttack= "true"
explosionType= "&vtBlastExplosion2;"
ejectaType= "&vtWreckEjecta;"
>
<!-- Encounter Info -->
<Encounter
systemCriteria= "+outlawSpace;"
systemAffinity= "+envEarth; -envAir;"
levelFrequency= "-uccu v---- ----- ----- -----"
locationCriteria= "+planetary"
enemyExclusionRadius= "50"
/>
<!-- Trade and Items -->
<Trade currency="credit">
<Sell criteria="m +illegal; -notForSale; -notStandard;" priceAdj="100" inventoryAdj="100" levelFrequency="systemLevel:ruc|c|cur"/>
<Sell criteria="m +military; -notForSale; -notStandard;" priceAdj="100" inventoryAdj="100" levelFrequency="systemLevel:ruc|c|cur"/>
<Sell criteria="*NU +Illegal; -ID; -NotForSale;" priceAdj="110"/>
<Sell criteria="*NU -ID; -NotForSale;" priceAdj="100"/>
<Buy criteria="*NU +Illegal; -ID; -NotForSale;" priceAdj="85"/>
<Buy criteria="*NU +military; -ID -NotForSale;" priceAdj="90"/>
<Buy criteria="*NU +Illegal; -ID;" priceAdj="10"/>
<Buy criteria="*NU +military; -ID;" priceAdj="10"/>
<Refuel criteria="f +BasicFuel; L:1-6;" priceAdj="100"/>
<RepairArmor criteria="a L:1-6;" priceAdj="100"/>
<ReplaceArmor criteria="a L:1-6;" priceAdj="100"/>
<InstallDevice criteria="d +Illegal; L:1-8" priceAdj="100" upgradeInstallOnly="true"/>
<InstallDevice criteria="d +Military; L:1-8" priceAdj="100" upgradeInstallOnly="true"/>
<RemoveDevice criteria="d L:1-8;" priceAdj="100" upgradeInstallOnly="true"/>
<InstallDevice criteria="d L:1-8;" priceAdj="unavailable" messageID="descNoInstall"/>
</Trade>
<Items>
<RandomItem count="1d4"
criteria= "c L:1-8; +illegal; -notForSale; -notStandard;"
levelFrequency= "systemLevel:rrrru|c|cur"
/>
<RandomItem count="6d12"
criteria= "t +consumerGood; +illegal;"
levelFrequency= "systemLevel:ruc|c|cur"
/>
<RandomItem count="4d4"
criteria= "* +illegal; -consumerGood; -id;"
levelFrequency= "systemLevel:ruc|c|cur"
/>
<RandomItem count="2d4"
criteria= "* +military;"
levelFrequency= "systemLevel:ru|c|crv"
/>
</Items>
<!-- Configuration -->
<Devices>
<Device deviceID="&itSlamCannon;" omnidirectional="true" posAngle="45" posRadius="60"/>
<Device deviceID="&itSlamCannon;" omnidirectional="true" posAngle="215" posRadius="60"/>
</Devices>
<!-- Ships and Defenses -->
<Ships>
<Lookup count="1" table="&tbBlackMarketBountyHunters;"/>
<Lookup count="1d3+1" table="&tbBlackMarketShips;"/>
</Ships>
<Reinforcements minShips="4">
<Table>
<Lookup chance="50" count="1" table="&tbBlackMarketBountyHunters;"/>
<Lookup chance="50" count="1d2" table="&tbBlackMarketShips;"/>
</Table>
</Reinforcements>
<!-- Image and Effects -->
<Image imageID="&rsStations3;" imageX="128" imageY="0" imageWidth="128" imageHeight="128"/>
<DockingPorts>
<Port x="0" y="90" />
<Port x="0" y="-90" />
<Port x="60" y="60" />
<Port x="60" y="-60" />
<Port x="90" y="0" />
<Port x="-90" y="0" />
<Port x="-60" y="60" />
<Port x="-60" y="-60" />
</DockingPorts>
<!-- Dock Screen -->
<DockScreens>
<Main>
<Panes>
<Default descID="descWelcome">
<Actions>
<Action id="actionTalk">
(block Nil
(setq gPrevScreen "Main")
(scrShowScreen gScreen "Boss")
)
</Action>
<Action id="actionBuyItems" default="1">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeBuy; {
checkMilitaryID: Nil
})
</Action>
<Action id="actionSellItems">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeSell; {
})
</Action>
<Action id="actionDockServices">
(rpgDockServices gPlayerShip {
checkMilitaryID: Nil
})
</Action>
<Action id="actionUndock" cancel="1">
<Exit/>
</Action>
</Actions>
</Default>
</Panes>
</Main>
<Boss>
<InitialPane>
(switch
(ls (objGetData gPlayerShip "blackMarketLevel") 2)
"NoAccess"
(ls (objGetData gPlayerShip "blackMarketLevel") 4)
"MemberBoss"
;"LordBoss"
"MemberBoss"
)
</InitialPane>
<Panes>
<MemberBoss descID="descMemberBoss">
<Actions>
<Action id="actionWantMission" default="1">
(rpgMissionAssignment {
missionCriteria: (cat "n +blackMarket; =" (sysGetLevel) ";")
noMissionTextID: 'descNoMissions
maxPerStation: 1
})
</Action>
<Action id="actionWantWeapon">
(if (ls (objGetData gPlayerShip 'blackMarketWeapon) (objGetData gPlayerShip 'blackMarketLevel))
(block (
(reward (objFireEvent gSource 'GetRewardUpgrade { type:'weapon }))
)
(scrSetData gScreen 'reward reward)
(scrShowPane gScreen 'UpgradeComplete)
(scrShowScreen gScreen &dsRPGInstallDeviceFromList; {
itemList: (list (@ reward 'device))
priceAdj: 0
installPriceAdj: 0
noSuccessPane: True
})
)
(scrShowPane gScreen 'NoUpgrade)
)
</Action>
<Action id="actionWantShields">
(if (ls (objGetData gPlayerShip 'blackMarketShields) (objGetData gPlayerShip 'blackMarketLevel))
(block (
(reward (objFireEvent gSource 'GetRewardUpgrade { type:'shields }))
)
(scrSetData gScreen 'reward reward)
(scrShowPane gScreen 'UpgradeComplete)
(scrShowScreen gScreen &dsRPGInstallDeviceFromList; {
itemList: (list (@ reward 'device))
priceAdj: 0
installPriceAdj: 0
noSuccessPane: True
})
)
(scrShowPane gScreen 'NoUpgrade)
)
</Action>
<Action id="actionLeave" cancel="1">
(scrShowScreen gScreen 'Main)
</Action>
</Actions>
</MemberBoss>
<LordBoss descID="descLordBoss">
<Actions>
<Action id="actionLeave" cancel="1">
(scrShowScreen gScreen 'Main)
</Action>
</Actions>
</LordBoss>
<NoAccess descID="descNoBoss">
<Actions>
<Action id="actionContinue" cancel="1" default="1">
(scrShowScreen gScreen 'Main)
</Action>
</Actions>
</NoAccess>
<NoUpgrade descID="descNoUpgrade">
<Actions>
<Action id="actionContinue" cancel="1" default="1">
(scrShowScreen gScreen 'Main)
</Action>
</Actions>
</NoUpgrade>
<UpgradeComplete>
<OnPaneInit>
(block (
(reward (scrGetData gScreen 'reward))
(rewardType (@ reward 'type))
)
(switch
(not (scrGetReturnData gScreen 'installed))
(scrSetDescTranslate gScreen 'descInstallCancel)
(= rewardType 'weapon)
(scrSetDescTranslate gScreen 'descInstalledWeapon)
(scrSetDescTranslate gScreen 'descInstalledShields)
)
)
</OnPaneInit>
<Actions>
<Action id="actionContinue" cancel="1" default="1">
(block ()
(if (scrGetReturnData gScreen 'installed)
(block (
(reward (scrGetData gScreen 'reward))
(rewardType (@ reward 'type))
(ammo (@ reward 'ammo))
)
(if ammo
(objAddItem gPlayerShip ammo)
)
(switch
(= rewardType 'shields)
(objSetData gPlayerShip 'blackMarketShields (objGetData gPlayerShip 'blackMarketLevel))
(= rewardType 'weapon)
(objSetData gPlayerShip 'blackMarketWeapon (objGetData gPlayerShip 'blackMarketLevel))
)
)
)
(scrShowScreen gScreen 'Main)
)
</Action>
</Actions>
</UpgradeComplete>
</Panes>
</Boss>
</DockScreens>
<!-- Events and Data -->
<Events>
<GetRewardUpgrade>
(block (
(level (objGetData gPlayerShip 'blackMarketLevel))
(rewardType (@ gData 'type))
)
(switch
(= rewardType 'shields)
(switch
(geq level 6)
{
type: 'shields
device: (itmCreate &itPlasmaShieldGenerator; 1)
}
(= level 5)
{
type: 'shields
device: (itmCreate &itYoroiMX; 1)
}
(= level 4)
{
type: 'shields
device: (itmCreate &itYoroiS500; 1)
}
(= level 3)
{
type: 'shields
device: (itmCreate &itYoroiS100; 1)
}
{
type: 'shields
device: (itmCreate &itClass3Deflector; 1)
}
)
(= rewardType 'weapon)
(switch
(geq level 6)
{
type: 'weapon
device: (itmCreate &itRasiermesserLauncher; 1)
ammo: (itmCreate &itGotha400Seeker; 50)
}
(= level 5)
{
type: 'weapon
device: (itmCreate &itHanzoBlaster; 1)
}
(= level 4)
{
type: 'weapon
device: (itmCreate &itDragonflyMissileSystem; 1)
ammo: (itmCreate &itDragonflyCartridge; 150)
}
{
type: 'weapon
device: (itmCreate &itMAGLauncher; 1)
ammo: (itmCreate &itZG24ClusterMAG; 100)
}
)
)
)
</GetRewardUpgrade>
<GetRumors>
{
attributes: "commonwealthPub"
priority: 31
textID: 'rumor.commonwealthPub
onExitRumor: (lambda (theRumor) (objSetKnown (@ theRumor 'sourceObj)))
}
</GetRumors>
</Events>
<StaticData>
<Data id="blackMarket.deployBountyHunters">True</Data>
<Data id="blackMarket.destroyPenalty">250000</Data>
<Data id="blackMarket.destroyBountyHunters">(random 1 3)</Data>
</StaticData>
<Language>
<String id="actionWantMission">"I want a [m]ission."</String>
<String id="actionWantWeapon">"I need a better [w]eapon."</String>
<String id="actionWantShields">"I need better [s]hields."</String>
<Text id="descNoMissions">
The dark-haired woman frowns for a second,
"I'm sorry, but we don't have any use for you right now."
</Text>
<Text id="descNoInstall">
We only install illegal or military equipment. We won't install
%itemName% on your ship.
</Text>
<Text id="dockServices:installAbility">
We install illegal or military equipment up to tech level %maxLevel%.
</Text>
<Text id="rumor.commonwealthPub">
A woman dressed in a fancy neolinen suit talks to you:
"Do you know how to get a contact at the black market station?
You look like you might know."
You spend 5 credits on drinks.
</Text>
<Text id="descMemberBoss">
You are escorted to Lord Mikho's outer office. But instead of
finding him there, you see a young, dark-haired woman sitting
at the desk. She looks at you slowly, perhaps trying to
remember your name.
"What can I do for you?"
</Text>
<Text id="descLordBoss">
You try to see Lord Mikho, but he is indisposed.
</Text>
<Text id="descInstallCancel">
The dark-haired woman frowns in disappointment.
</Text>
<Text id="descInstalledWeapon">
The dark-haired woman smiles as the crew installs your new
weapon:
"Enjoy your new toy."
</Text>
<Text id="descInstalledShields">
The dark-haired woman smiles as the crew installs your new
shield generator:
"Enjoy your new toy."
</Text>
<Text id="descNoUpgrade">
The dark-haired woman rolls her eyes.
"I'm sorry, but you'll just have to do with what you've got."
</Text>
<Text id="core.mapDesc">
Refuels up to level 6 &mdash;
Repairs/installs armor up to level 6 &mdash;
Installs purchased devices up to level 6 &mdash;
Buys and sells illegal and military items
</Text>
</Language>
</StationType>
<!-- Black Market Shipyard -->
<StationType UNID="&stBlackMarketShipyard;"
name= "Black Market shipyard"
sovereign= "&svBlackMarket;"
inherit= "&baBlackMarketStation;"
attributes= "blackMarket, envEarth, majorStation, envAvoidsAir, friendly, generic, human, outlaws, populated"
dockScreen= "Main"
abandonedScreen= "&dsRPGAbandonedStation;"
armorID= "&itBlastPlate;"
hitPoints= "1100"
multiHull= "true"
regen= "11"
shipRegen= "11"
fireRateAdj= "20"
canAttack= "true"
explosionType= "&vtBlastExplosion4;"
ejectaType= "&vtWreckEjecta;"
>
<!-- Encounter Info -->
<Encounter
systemCriteria= "+outlawSpace;"
systemAffinity= "+envEarth; -envAir;"
levelFrequency= "---uc crr-- ----- ----- -----"
locationCriteria= "+planetary"
enemyExclusionRadius= "50"
/>
<!-- Trade and Items -->
<Trade currency="credit">
<Sell criteria="m +illegal; -notForSale; -notStandard;" priceAdj="100" inventoryAdj="200" levelFrequency="systemLevel:ruc|c|cur"/>
<Sell criteria="m +military; -notForSale; -notStandard;" priceAdj="100" inventoryAdj="200" levelFrequency="systemLevel:ruc|c|cur"/>
<Sell criteria="*NU +Illegal; -ID; -NotForSale;" priceAdj="110"/>
<Sell criteria="*NU -ID; -NotForSale;" priceAdj="100"/>
<Buy criteria="*NU +Illegal; -ID; -NotForSale;" priceAdj="85"/>
<Buy criteria="*NU +military; -ID -NotForSale;" priceAdj="90"/>
<Buy criteria="*NU +Illegal; -ID;" priceAdj="10"/>
<Buy criteria="*NU +military; -ID;" priceAdj="10"/>
<Refuel criteria="f +BasicFuel; L:1-7;" priceAdj="100"/>
<RepairArmor criteria="a L:1-9;" priceAdj="100"/>
<ReplaceArmor criteria="a L:1-9;" priceAdj="100"/>
<InstallDevice criteria="d L:1-9;" priceAdj="100"/>
<RemoveDevice criteria="d L:1-9;" priceAdj="100"/>
</Trade>
<Items>
<RandomItem count="1d4"
criteria= "c L:1-9; +illegal; -notForSale; -notStandard;"
levelFrequency= "systemLevel:rrrru|c|cur"
/>
<RandomItem count="1d4"
criteria= "r L:5-9; -notForSale; -notStandard;"
levelFrequency="systemLevel:ru|c|curv"
/>
<RandomItem count="6d12"
criteria= "t +consumerGood; +illegal;"
levelFrequency= "systemLevel:ruc|c|cur"
/>
<RandomItem count="4d4"
criteria= "* +illegal; -consumerGood; -id;"
levelFrequency= "systemLevel:ruc|c|cur"
/>
<RandomItem count="4d4"
criteria= "* +military;"
levelFrequency= "systemLevel:ru|c|crv"
/>
<Item count="20d20" item="&it800HexageneMAG;" />
<Item count="20d20" item="&itZG24ClusterMAG;" />
<Item count="20d20" item="&itDragonflyCartridge;" />
</Items>
<!-- Configuration -->
<Devices>
<Device deviceID="&itSlamCannon;" omnidirectional="true" posAngle="45" posRadius="60"/>
<Device deviceID="&itSlamCannon;" omnidirectional="true" posAngle="215" posRadius="60"/>
</Devices>
<!-- Ships and Defenses -->
<Ships>
<Lookup count="2" table="&tbBlackMarketBountyHunters;"/>
<Lookup count="1d3+1" table="&tbBlackMarketShips;"/>
</Ships>
<Reinforcements minShips="4">
<Table>
<Lookup chance="50" count="1" table="&tbBlackMarketBountyHunters;"/>
<Lookup chance="50" count="1d2" table="&tbBlackMarketShips;"/>
</Table>
</Reinforcements>
<!-- Image and Effects -->
<Image imageID="&rsStations5;" imageX="0" imageY="896" imageWidth="256" imageHeight="256"/>
<DockingPorts>
<Port x="53" y="146" />
<Port x="-92" y="100" />
<Port x="-148" y="-42" />
<Port x="-64" y="-134" />
<Port x="108" y="-116" />
<Port x="148" y="5" />
<Port x="62" y="43" />
<Port x="-19" y="76" />
<Port x="-67" y="12" />
<Port x="-72" y="-60" />
<Port x="12" y="-72" />
</DockingPorts>
<!-- Dock Screens -->
<DockScreens>
<Main>
<Panes>
<Default descID="descWelcome">
<Actions>
<Action id="actionBuyItems" default="1">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeBuy; {
checkMilitaryID: Nil
})
</Action>
<Action id="actionSellItems">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeSell; {
})
</Action>
<Action id="actionDockServices">
(rpgDockServices gPlayerShip {
checkMilitaryID: Nil
})
</Action>
<Action id="actionUndock" cancel="1">
<Exit/>
</Action>
</Actions>
</Default>
</Panes>
</Main>
</DockScreens>
<!-- Events and Data -->
<StaticData>
<Data id="blackMarket.deployBountyHunters">True</Data>
<Data id="blackMarket.destroyPenalty">500000</Data>
<Data id="blackMarket.destroyBountyHunters">(random 1 5)</Data>
</StaticData>
<Language>
<Text id="core.mapDesc">
"Refuels up to level 7 &mdash; Repairs/installs armor up to level 9 &mdash; Installs devices up to level 9 &mdash; Buys and sells illegal and military items"
</Text>
</Language>
</StationType>
<!-- Tempus Lab -->
<StationType UNID="&stTempusLab;"
name= "tempus lab"
sovereign= "&svBlackMarket;"
inherit= "&baBlackMarketStation;"
attributes= "blackMarket, friendly, envAir, envAvoidsFire, generic, human, outlaws, populated"
dockScreen= "Main"
abandonedScreen= "&dsRPGAbandonedStation;"
armorID= "&itPlasteelPlate;"
hitPoints= "250"
multiHull= "true"
regen= "1.3"
canAttack= "true"
explosionType= "&vtKineticExplosion3;"
ejectaType= "&vtWreckEjecta;"
>
<!-- Encounter Info -->
<Encounter
systemCriteria= "+outlawSpace;"
systemAffinity= "+envAir; -envFire;"
levelFrequency= "rcuuu r---- ----- ----- -----"
locationCriteria= "--planetary"
/>
<!-- Trade and Items -->
<Trade currency="credit">
<Sell criteria="*NU +Illegal; -ID" priceAdj="75"/>
</Trade>
<Items>
<RandomItem count="12d12"
criteria= "t +consumerGood; +illegal;"
levelFrequency= "systemLevel:ruc|c|cur"
/>
</Items>
<!-- Configuration -->
<!-- Ships and Defenses -->
<Ships>
<Lookup count="1" table="&tbBlackMarketBountyHunters;"/>
<Lookup count="1d3" table="&tbBlackMarketShips;"/>
</Ships>
<Reinforcements minShips="3">
<Table>
<Lookup chance="40" count="1" table="&tbBlackMarketBountyHunters;"/>
<Lookup chance="60" count="1" table="&tbBlackMarketShips;"/>
</Table>
</Reinforcements>
<!-- Image and Effects -->
<Image imageID="&rsStations2;" imageX="128" imageY="128" imageWidth="128" imageHeight="128"/>
<DockingPorts>
<Port x="50" y="60" />
<Port x="-80" y="20" />
<Port x="-80" y="-20" />
<Port x="60" y="-52" />
<Port x="20" y="-80" />
<Port x="20" y="80" />
</DockingPorts>
<!-- Dock Screens -->
<DockScreens>
<Main
name= "Tempus Lab"
>
<Panes>
<Default descID="descWelcome">
<Actions>
<Action id="actionBuyItems" default="1">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeBuy; {
checkMilitaryID: Nil
})
</Action>
<Action id="actionUndock" cancel="1">
<Exit/>
</Action>
</Actions>
</Default>
</Panes>
</Main>
</DockScreens>
<!-- Events and Data -->
<Events>
<GetRumors>
{
attributes: "commonwealthPub"
priority: 23
textID: 'rumor.commonwealthPub
onExitRumor: (lambda (theRumor) (objSetKnown (@ theRumor 'sourceObj)))
}
</GetRumors>
</Events>
<StaticData>
<Data id="blackMarket.destroyPenalty">150000</Data>
</StaticData>
<Language>
<Text id="descWelcome">
You are docked at a Tempus manufacturing lab.
The docking bay is guarded by two men with heavy weapons.
They check you out and then step aside to let you in.
</Text>
<Text id="rumor.commonwealthPub">
A man dressed in an expensive suit talks to you:
"You look like you need some Tempus."
You ignore him and spend 5 credits buying your own drinks.
</Text>
<Text id="core.mapDesc">
"Sells illegal items"
</Text>
</Language>
</StationType>
<!-- SHIP CLASSES -->
<!-- Level 5: Molotok/A-class Heavy Gunship -->
<ShipClass UNID="&scMolotokA;"
manufacturer= "Makayev-Energia"
class= "Molotok/A"
type= "heavy gunship"
defaultSovereign= "&svBlackMarket;"
attributes= "blackMarket, genericClass, outlaws"
inherit= "&baHumanTechShip;"
>
<!-- Hull -->
<Hull
size= "27"
mass= "144"
cargoSpace= "50"
maxReactorPower= "10000"
maxCargoSpace= "100"
maxDevices= "8"
maxArmor= "massive"
stdArmor= "medium"
/>
<Drive
maxSpeed= "20"
thrust= "1600"
/>
<Maneuver
maxRotationRate= "9.0"
rotationAccel= "1.0"
/>
<!-- Configuration -->
<Armor
armorID= "&itLightBlastPlate;"
count= "4"
/>
<Devices>
<Device deviceID="&itMarkIHowitzer;"/>
<Device deviceID="&itMAGLauncher;" posAngle="0" posRadius="16" posZ="0">
<Items>
<Item count="20d6" item="&it600HexageneMAG;"/>
</Items>
</Device>
<Device deviceID="&itMonopoleDeflector;"/>
</Devices>
<Items>
<Item count="2d6" item="&itXenotiteFuelRod;"/>
</Items>
<Image imageID="&rsMolotokA;" imageWidth="64" imageHeight="64" rotationCount="120" rotationColumns="12" viewportRatio="0.004875"/>
<Image imageID="&rsMolotokAHero;" imageHeight="320" imageWidth="320"/>
<Effects>
<Effect type="thrustMain" posAngle="155" posRadius="22" posZ="0" rotation="180"/>
<Effect type="thrustMain" posAngle="-155" posRadius="22" posZ="0" rotation="180"/>
</Effects>
<AISettings
fireRateAdj= "30"
fireAccuracy= "85"
perception= "4"
combatStyle= "advanced"
/>
</ShipClass>
<!-- Level 6: Molotok/B-class Heavy Gunship -->
<ShipClass UNID="&scMolotokB;"
manufacturer= "Makayev-Energia"
class= "Molotok/B"
type= "heavy gunship"
defaultSovereign= "&svBlackMarket;"
attributes= "blackMarket, genericClass, outlaws"
inherit= "&baHumanTechShip;"
>
<!-- Hull -->
<Hull
size= "27"
mass= "144"
cargoSpace= "50"
maxReactorPower= "10000"
maxCargoSpace= "100"
maxDevices= "8"
maxArmor= "massive"
stdArmor= "medium"
/>
<Drive
maxSpeed= "22"
thrust= "2000"
/>
<Maneuver
maxRotationRate= "9.0"
rotationAccel= "1.0"
/>
<!-- Configuration -->
<Armor
armorID= "&itHeavyCeralloyArmor;"
count= "4"
/>
<Devices>
<Device deviceID="&itDragonflyMissileSystem;">
<Items>
<Item count="20d6" item="&itDragonflyCartridge;"/>
</Items>
</Device>
<Device deviceID="&itMAGLauncher;" posAngle="0" posRadius="16" posZ="0">
<Items>
<Item count="20d6" item="&it600HexageneMAG;"/>
</Items>
</Device>
<Device deviceID="&itClass3Deflector;"/>
</Devices>
<Items>
<Item count="4d6" item="&itXenotiteFuelRod;"/>
</Items>
<Image imageID="&rsMolotokB;" imageWidth="64" imageHeight="64" rotationCount="120" rotationColumns="12" viewportRatio="0.004875"/>
<Image imageID="&rsMolotokBHero;" imageHeight="320" imageWidth="320"/>
<Effects>
<Effect type="thrustMain" posAngle="155" posRadius="22" posZ="0" rotation="180"/>
<Effect type="thrustMain" posAngle="-155" posRadius="22" posZ="0" rotation="180"/>
</Effects>
<AISettings
fireRateAdj= "30"
fireAccuracy= "85"
perception= "4"
combatStyle= "advanced"
/>
</ShipClass>
<!-- ITEM TYPES -->
<!-- Black Market Container -->
<ItemType UNID="&itBlackMarketContainer;"
name= "sealed container with black markings"
level= "5"
value= "6500"
frequency= "notrandom"
mass= "1000"
attributes= "Illegal; SealedContainer"
description= "This is a sealed container generally used by the Sindikat to move illegal items around from system to system."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
</ItemType>
<!-- Identification Chip, Black Market -->
<ItemType UNID="&itBlackMarketID;"
name= "black market identification chip"
level= "2"
value= "250"
mass= "1"
frequency= "veryrare"
unknownType= "&itUnknownID;"
attributes= "BlackMarketID; ID; Illegal; MinorItem"
description= "This identification chip is used by pirates and other outlaws to identify each other in the black market. Only people who have this chip can trade in the black market."
sortName= "identification chip, black market"
>
<Image imageID="&rsItems1;" imageX="192" imageY="96" imageWidth="96" imageHeight="96"/>
</ItemType>
<!-- CODE -->
<Globals>
(block Nil
(setq intBlackMarketBuyPrice (lambda (thisItem)
(block (cost)
(setq cost (itmGetPrice thisItem 'credit))
(switch
; We don't sell items that are damaged or installed
(or (itmIsDamaged thisItem) (itmIsInstalled thisItem))
Nil
; Military items are priced depending on level
(itmHasAttribute thisItem 'Military)
(if (ls (objGetData gPlayerShip "blackMarketLevel") 4)
(multiply cost 2)
(divide (multiply cost 125) 100)
)
; Illegal items cost 10% more
(itmHasAttribute thisItem 'Illegal)
(divide (multiply cost 110) 100)
; Other items at cost
cost
)
)
))
(setq intBlackMarketSellPrice (lambda (thisItem)
(block (cost)
(setq cost (itmGetPrice thisItem 'credit))
(switch
(or (itmIsDamaged thisItem) (itmIsInstalled thisItem))
Nil
(itmHasAttribute thisItem 'ID)
Nil
(itmHasAttribute thisItem 'Military)
(divide (multiply cost 90) 100)
(itmHasAttribute thisItem 'Illegal)
(divide (multiply cost 85) 100)
Nil
)
)
))
(setq intBlackMarketPromotion (lambda Nil
; Returns level that the player is promoted to (or Nil)
(block (xp newLevel)
(setq xp (objGetData gPlayerShip "blackMarketXP"))
(switch
(geq xp 10000)
(setq newLevel 6)
(geq xp 3000)
(setq newLevel 5)
(geq xp 1500)
(setq newLevel 4)
(geq xp 600)
(setq newLevel 3)
(geq xp 200)
(setq newLevel 2)
(setq newLevel 1)
)
; Return if different from current level
(if (eq (objGetData gPlayerShip "blackMarketLevel") newLevel)
Nil
newLevel
)
)
))
(setq intBlackMarketOnDestroy (lambda (cost)
(block Nil
; Destroy items on the station
(rpgDestroyItems gSource)
; Player is tracked
(if (and gPlayerShip (eq aOrderGiver gPlayerShip))
(block (totalCrimeCost)
(setq totalCrimeCost (objIncData gPlayerShip "blackMarketCrimeCost" cost))
(if (objGetData gPlayerShip "blackMarketCrime")
(objSetData gPlayerShip "blackMarketCrime" "multiple offenses against the Sindikat")
(objSetData gPlayerShip "blackMarketCrime" (cat "the destruction of " (objGetName gSource 4)))
)
; If the cost of the player's crime is more than the equivalent
; current experience level, then the Black Market becomes an enemy.
; [I.e., the better the relationship with the BM, the greater the
; chance that the BM will allow the player to pay back her debts.]
(if (gr (/ totalCrimeCost 100) (objGetData gPlayerShip "blackMarketXP"))
(block Nil
(sovSetDisposition &svBlackMarket; &svPlayer; 'enemy)
(sovSetDisposition &svPlayer; &svBlackMarket; 'enemy)
)
)
)
)
)
))
)
</Globals>
<!-- DOCK SCREENS -->
<!-- Black Market Promotion -->
<DockScreen UNID="&dsBlackMarketPromotion;" nestedScreen="true">
<Panes>
<Default>
<OnPaneInit>
(block (desc)
(setq gLevel (intBlackMarketPromotion))
(switch
(ls gLevel 4)
(setq desc "Two men with heavy weapons grab you as soon as you come out of the airlock: \"The boss wants to see you!\" They take you inside the station.")
(setq desc "Two men with heavy weapons walk up to you as you come out of the airlock: \"The boss would like to see you, %sir%. Please follow us.\" They take you inside the station to see Lord Mikho.")
)
(scrSetDesc gScreen desc)
)
</OnPaneInit>
<Actions>
<Action name="Continue" default="1" cancel="1" key="C">
<ShowPane pane="Promotion"/>
</Action>
</Actions>
</Default>
<Promotion>
<OnPaneInit>
(block (desc)
(switch
(eq gLevel 2)
(setq desc "You are brought to Lord Mikho's outer office. A young, dark-haired woman in a tight neo-linen suit stands up as you walk in: \"In recognition of your services to the Sindikat, Lord Mikho has decided to promote you to the level of Smuggler. Congratulations and thank you for your loyalty.\"\n\nShe turns her back to you as you are escorted out.")
(eq gLevel 3)
(setq desc "You are brought to Lord Mikho's outer office. A young, dark-haired woman in a tight neo-linen suit smiles as you walk in: \"Lord Mikho has promoted you to the level of Enforcer. Congratulations and thank you for your loyalty.\"\n\nShe shakes hands with you before you leave. You are escorted out.")
(eq gLevel 4)
(setq desc "Lord Mikho is in his office. A young, dark-haired woman sits on the sofa next to him. Lord Mikho speaks: \"Good evening, %name%! Your services to us have been exemplary and the Sindikat has officially decided to make you a member. I am sure that you will not disappoint us.\"")
(eq gLevel 5)
(setq desc "Lord Mikho is in his office. A young, dark-haired woman sits on the sofa next to him. Lord Mikho speaks: \"Good evening, %name%! You have been most useful to us and we have decided to promote you to the rank of Lieutenant in the Sindikat. I am sure that you will not disappoint us.\"")
(eq gLevel 6)
(setq desc "Lord Mikho is waiting for you in his study. \"My dear %name%! Your fame and exploits have made you powerful friends among the Sindikat. I bow before your abilities and extend to you the title of Sindikat Lord!\"")
)
(scrSetDesc gScreen desc)
)
</OnPaneInit>
<Actions>
<Action name="Continue" default="1" cancel="1" key="C">
(block Nil
(objSetData gPlayerShip "blackMarketLevel" gLevel)
(scrExitScreen gScreen)
)
</Action>
</Actions>
</Promotion>
</Panes>
</DockScreen>
<!-- Black Market Pay Debt -->
<DockScreen UNID="&dsBlackMarketPayDebt;"
inherit="&dsDockScreenBase;"
nestedScreen="true"
>
<Panes>
<Default descID="descTakeThemToBoss">
<Actions>
<Action id="actionContinue" default="1" cancel="1">
(if (geq (plyGetCredits gPlayer) (objGetData gPlayerShip "blackMarketCrimeCost"))
; If the player has enough money, then let her pay off the boss
(scrShowPane gScreen "PaymentInFull")
; Otherwise, the player is killed
(scrShowPane gScreen "Killed")
)
</Action>
</Actions>
</Default>
<PaymentInFull>
<OnPaneInit>
(scrSetDescTranslate gScreen 'descPaymentInFull1 {
payment: (fmtCurrency 'credit (objGetData gPlayerShip "blackMarketCrimeCost"))
crime: (objGetData gPlayerShip "blackMarketCrime")
})
</OnPaneInit>
<Actions>
<Action id="actionContinue" default="1" cancel="1">
(block Nil
(plyCharge gPlayer (objGetData gPlayerShip "blackMarketCrimeCost"))
(objSetData gPlayerShip "blackMarketCrimeCost" Nil)
(scrShowPane gScreen "PaymentInFull2")
)
</Action>
</Actions>
</PaymentInFull>
<PaymentInFull2 descID="descPaymentInFull2">
<Actions>
<Action id="actionContinue" default="1" cancel="1">
(scrExitScreen gScreen)
</Action>
</Actions>
</PaymentInFull2>
<Killed>
<OnPaneInit>
(scrSetDescTranslate gScreen 'descKilled {
crime: (objGetData gPlayerShip "blackMarketCrime")
})
</OnPaneInit>
<Actions>
<Action id="actionContinue" default="1" cancel="1">
(block Nil
(plyDestroyed gPlayer "was killed by Lord Mikho")
(scrExitScreen gScreen 'forceUndock)
)
</Action>
</Actions>
</Killed>
</Panes>
<Language>
<Text id="descTakeThemToBoss">
Two men with heavy weapons grab you as soon as you come out the airlock.
"The boss wants to see you!"
They take you inside the station to see Lord Mikho.
</Text>
<Text id="descPaymentInFull1">
Lord Mikho is dining alone at a large table.
"Well, well! You've certainly caused us a bit of trouble! You owe us %payment% for
%crime%! You were wise to come here to repay your debt."
</Text>
<Text id="descPaymentInFull2">
After paying your debt, Lord Mikho assures you that the bounty hunters
will be called off. The armed guards lead you back to your ship.
</Text>
<Text id="descKilled">
Lord Mikho is waiting in his study, standing by a large portrait of a mustached
man in uniform.
"You are responsible for %crime%? I suppose I expected someone smarter.
Still, I respect you enough to kill you myself."
Two men hold you as Lord Mikho approaches with an old pistol...
</Text>
</Language>
</DockScreen>
<!-- Black market only allows docking with ID -->
<DockScreen UNID="&dsBlackMarketRefuseDock;" nestedScreen="true">
<Panes>
<Default descID="descRefuse">
<Actions>
<Action name="Undock" default="1" cancel="1" key="U">
(scrExitScreen gScreen 'forceUndock)
</Action>
</Actions>
</Default>
</Panes>
<Language>
<Text id="descRefuse">
Two men with heavy weapons stand guard in the docking bay. As
you approach, they stop you.
"No one is interested in doing business with you. Get lost!"
</Text>
</Language>
</DockScreen>
<!-- THE BLACK MARKET -->
<Sovereign UNID="&svBlackMarket;"
name=":the Black Market"
adjective="Black Market"
demonym=":a Black Market member"
alignment="neutral"
>
<Events>
<GetGlobalAchievements>
(block (theList)
(if (gr (objGetData gPlayerShip "blackMarketXP") 0)
(block (rank)
(setq rank (objGetData gPlayerShip "blackMarketLevel"))
(setq theList (list
(list
"Black Market rank"
(switch
(eq rank 1) "Civilian"
(eq rank 2) "Smuggler"
(eq rank 3) "Enforcer"
(eq rank 4) "Sindikat member"
(eq rank 5) "Sindikat lieutenant"
(eq rank 6) "Sindikat lord"
(cat "ERROR: Black Market rank: " (or rank "Nil"))
)
)
))
)
)
theList
)
</GetGlobalAchievements>
<GetGlobalDockScreen>
(switch
; This only applies to Black Market stations and ships
(not (objMatches gSource Nil "sTAV +blackMarket;"))
Nil
; If the ship is radioactive then refuse dock
(shpIsRadioactive gPlayerShip)
{ screen:&dsRefuseContamination; priority:10 overrideOnly:true }
; If there is a bounty on the player, then the player
; has to repay the debt.
(objGetData gPlayerShip "blackMarketCrimeCost")
{ screen:&dsBlackMarketPayDebt; priority:8 overrideOnly:true }
; If the player does not have a black market ID, then
; refuse dock
(not (objGetItems gPlayerShip "*+BlackMarketID"))
{ screen:&dsBlackMarketRefuseDock; priority:6 overrideOnly:true }
; See if the player is promoted
(intBlackMarketPromotion)
{ screen:&dsBlackMarketPromotion; priority:4 overrideOnly:true }
Nil
)
</GetGlobalDockScreen>
<GetGlobalPlayerPriceAdj>
(block (
(rank (objGetData gPlayerShip "blackMarketLevel"))
)
(switch
; Only at Black Market stations
(not (objHasAttribute aProviderObj 'blackMarket))
Nil
; Military items prices depend on rank
(and (eq aService 'priceForPlayerToBuy)
(itmMatches gItem "* +military")
)
(switch
(ls rank 4)
200
125
)
; No adjustment
Nil
)
)
</GetGlobalPlayerPriceAdj>
<OnGlobalPlayerBoughtItem>
(switch
; If the player bought illegal items from the Black Market then
; we add to XP.
(and (objHasAttribute aSellerObj 'blackMarket)
(itmHasAttribute gItem 'illegal)
)
(objIncData gPlayerShip 'blackMarketXP (divide (ecoExchange aPrice aCurrency 'credit) 100))
)
</OnGlobalPlayerBoughtItem>
<OnGlobalUniverseCreated>
(block Nil
; Initialize all variables that we need
(objSetData gPlayerShip "blackMarketXP" 0)
(objSetData gPlayerShip "blackMarketLevel" 1)
(objSetData gPlayerShip "blackMarketWeapon" 2)
(objSetData gPlayerShip "blackMarketShields" 1)
)
</OnGlobalUniverseCreated>
</Events>
</Sovereign>
<!-- Bounty Hunters
Based on code by JohnBWatson. Thank you! -->
<Sovereign UNID="&svBlackMarketBountyHunter;"
name="bounty hunters"
demonym=":a bounty hunter(s)"
alignment="neutral"
>
<Relationships>
<Relationship sovereign="&svBlackMarket;" disposition="friend" mutual="true"/>
<Relationship sovereign="&svOutlaw;" disposition="friend" mutual="true"/>
<Relationship sovereign="&svDeathDrugsCartel;" disposition="friend" mutual="true"/>
<Relationship sovereign="&svPlayer;" disposition="enemy" mutual="true"/>
</Relationships>
</Sovereign>
<!-- BASE CLASSES -->
<Type unid="&baBlackMarketStation;"
inherit="&unidCommonText;"
>
<Events>
<OnCreate>
(if (objGetStaticData gSource 'blackMarket.deployBountyHunters)
(block Nil
; Register timer event for bounty hunters
(sysAddObjRecurringTimerEvent (random 4000 5000) gSource 'OnBountyHunterCheck)
; While the station is alive, we have an infinite number of bounty hunters
; left.
(objSetData gSource 'molotoksRemaining -1)
)
)
</OnCreate>
<OnDestroy>
(block Nil
; Destroy items on the station
(rpgDestroyItems gSource)
; Player is tracked
(if (and gPlayerShip (eq aOrderGiver gPlayerShip))
(block Nil
; If the player is not part of the Black Market, then she is
; treated as an enemy.
(if (eq (objGetData gPlayerShip "blackMarketXP") 0)
(block Nil
(sovSetDisposition &svBlackMarket; &svPlayer; 'enemy)
(sovSetDisposition &svPlayer; &svBlackMarket; 'enemy)
)
; Otherwise, this is a Black Market crime
(block Nil
(objIncData gPlayerShip "blackMarketCrimeCost" (objGetStaticData gSource 'blackMarket.destroyPenalty))
(if (objGetData gPlayerShip "blackMarketCrime")
(objSetData gPlayerShip "blackMarketCrime" "multiple offenses against the Sindikat")
(objSetData gPlayerShip "blackMarketCrime" (cat "the destruction of " (objGetName gSource 4)))
)
)
)
; After death, only a certain number of bounty hunters go
; after the player.
(if (objGetStaticData gSource 'blackMarket.deployBountyHunters)
(objSetData gSource 'molotoksRemaining (eval (objGetStaticData gSource 'blackMarket.destroyBountyHunters)))
)
)
)
)
</OnDestroy>
<OnBountyHunterCheck>
(if (and (objGetData gPlayerShip 'blackMarketCrimeCost) (!= (objGetData gSource 'molotoksRemaining) 0))
(block (bountyHunter)
(setq bountyHunter (sysCreateShip &tbBlackMarketBountyHunters; (objGetNearestStargate gPlayerShip) &svBlackMarketBountyHunter;))
(shpOrderAttack bountyHunter gPlayerShip)
(objIncData gSource 'molotoksRemaining -1)
)
)
</OnBountyHunterCheck>
</Events>
<Language>
<Text id="actionTalk">[T]alk to Station Boss</Text>
<Text id="descWelcome">
The docking bay is guarded by two men with heavy weapons.
They scan you and then step aside to let you in.
</Text>
<Text id="descNoBoss">
You ask to see the station boss. Everyone turns to stare at you
for a second, but then they go about their business and
continue to ignore you.
</Text>
</Language>
</Type>
<!-- TABLES -->
<ShipTable unid="&tbBlackMarketBountyHunters;">
<LevelTable>
<Ship levelFrequency="ruccu r----" count="1" class="&scMolotokA;" orders="guard"/>
<Ship levelFrequency="vrucc urvvv" count="1" class="&scMolotokB;" orders="guard"/>
</LevelTable>
</ShipTable>
<!-- Black Market ships -->
<ShipTable unid="&tbBlackMarketShips;">
<LevelTable>
<Ship levelFrequency="ccur- -----" count="1" class="&scZulu-II;" orders="guard"/>
<Ship levelFrequency="uccur -----" count="1" class="&scOromo;" orders="guard"/>
<Ship levelFrequency="-rrcc crr--" count="1" class="&scIAVMedium;" orders="guard"/>
<Ship levelFrequency="--ruu ucccc" count="1" class="&scIAVHeavy;" orders="guard"/>
<Ship levelFrequency="--ruc cuuuu" count="1" class="&scManticore;" orders="guard"/>
<Ship levelFrequency="--ruc cur--" count="1" class="&scMolotokA;" orders="guard"/>
<Ship levelFrequency="---ru ccur-" count="1" class="&scMolotokB;" orders="guard"/>
<Ship levelFrequency="cccuu urrrr" count="1" class="&scEI500;" orders="gateOnThreat"/>
<Ship levelFrequency="uuuuu rvvvv" count="1" class="&scT31ArmedTransport;" orders="gateOnThreat">
<Items>
<Item count="8d20" item="&itSmartCannonShell;"/>
<Lookup chance="50" count="1d3-1" table="&trIllegalItems2;"/>
<Table chance="50">
<Lookup chance="40" count="1" table="&trConsumables2;"/>
<Lookup chance="40" count="1" table="&trMinorItem2;"/>
<Lookup chance="20" count="1" table="&trMajorItem2;"/>
</Table>
</Items>
</Ship>
<Ship levelFrequency="rrruu uuuuu" count="1" class="&scT55ArmedTransport;" orders="gateOnThreat">
<Items>
<Lookup chance="80" count="1d2+1" table="&trIllegalItems2;"/>
<Table>
<Lookup chance="75" count="1" table="&trConsumables4;"/>
<Lookup chance="15" count="1" table="&trMinorItem4;"/>
<Lookup chance="10" count="1" table="&trMajorItem4;"/>
</Table>
</Items>
</Ship>
</LevelTable>
</ShipTable>
<!-- RESOURCES -->
<Image UNID="&rsMolotokA;" bitmap="Resources\MolotokA.jpg" bitmask="Resources\MolotokAMask.bmp" loadOnUse="true"/>
<Image UNID="&rsMolotokAHero;" bitmap="Resources\MolotokALarge.jpg" bitmask="Resources\MolotokALargeMask.bmp" loadOnUse="true"/>
<Image UNID="&rsMolotokB;" bitmap="Resources\MolotokHD.jpg" bitmask="Resources\MolotokHDMask.bmp" loadOnUse="true"/>
<Image UNID="&rsMolotokBHero;" bitmap="Resources\MolotokLarge.jpg" bitmask="Resources\MolotokLargeMask.bmp" loadOnUse="true"/>
</TranscendenceModule>