Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
2251 lines (1845 sloc) 68.1 KB
<?xml version="1.0" encoding="utf-8"?>
<TranscendenceModule>
<!-- LEVEL V ITEMS -->
<!-- itIncandescentStrawberries
EXTRA DATA:
expireTime: After this time, food is rotted
status: Current state
Nil = Fresh
'ripe = Ripe
'rotted = Rotted
-->
<ItemType UNID="&itIncandescentStrawberries;"
name= "[case(s) of ]strawberries"
level= "5"
value= "250"
mass= "5"
frequency= "notrandom"
numberAppearing= "1d12"
attributes= "Consumable; consumerGood, Food; FreshFood; Lux; Specialty"
description= "Fresh strawberries are a delicacy found only near living worlds."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
<StaticData>
<expireTime>5400</expireTime>
<priceIncrease>200</priceIncrease>
</StaticData>
<Events>
<GetName>
(list (cat "[case of " (stkFreshFoodStatus gItem) " ]strawberries") 0x02)
</GetName>
<GetTradePrice>
(stkFreshFoodPrice gItem)
</GetTradePrice>
<OnUpdate>
(stkFreshFoodUpdate gSource gItem)
</OnUpdate>
</Events>
</ItemType>
<ItemType UNID="&itIncandescentPeaches;"
name= "[case(s) of ]white peaches"
level= "5"
value= "300"
mass= "5"
frequency= "notrandom"
numberAppearing= "1d12"
attributes= "Consumable; consumerGood, Food; FreshFood; Lux; Specialty"
description= "White peaches are a delicacy found only near living worlds."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
<StaticData>
<expireTime>7200</expireTime>
<priceIncrease>150</priceIncrease>
</StaticData>
<Events>
<GetName>
(list (cat "[case of " (stkFreshFoodStatus gItem) " ]white peaches") 0x02)
</GetName>
<GetTradePrice>
(stkFreshFoodPrice gItem)
</GetTradePrice>
<OnUpdate>
(stkFreshFoodUpdate gSource gItem)
</OnUpdate>
</Events>
</ItemType>
<ItemType UNID="&itIncandescentBellFruit;"
name= "[case(s) of ]bellfruits"
level= "5"
value= "450"
mass= "5"
frequency= "notrandom"
numberAppearing= "1d12"
attributes= "Consumable; consumerGood, Food; FreshFood; Lux; Specialty"
description= "Bellfruits are a delicacy found only near living worlds."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
<StaticData>
<expireTime>7200</expireTime>
<priceIncrease>150</priceIncrease>
</StaticData>
<Events>
<GetName>
(list (cat "[case of " (stkFreshFoodStatus gItem) " ]bellfruit") 0x02)
</GetName>
<GetTradePrice>
(stkFreshFoodPrice gItem)
</GetTradePrice>
<OnUpdate>
(stkFreshFoodUpdate gSource gItem)
</OnUpdate>
</Events>
</ItemType>
<ItemType UNID="&itIncandescentLucuma;"
name= "[case(s) of ]lucumas"
level= "5"
value= "300"
mass= "5"
frequency= "notrandom"
numberAppearing= "1d12"
attributes= "Consumable; consumerGood, Food; FreshFood; Lux; Specialty"
description= "Lucumas are a delicious fruit found only near living worlds."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
<StaticData>
<expireTime>10800</expireTime>
<priceIncrease>100</priceIncrease>
</StaticData>
<Events>
<GetName>
(list (cat "[case of " (stkFreshFoodStatus gItem) " ]lucumas") 0x02)
</GetName>
<GetTradePrice>
(stkFreshFoodPrice gItem)
</GetTradePrice>
<OnUpdate>
(stkFreshFoodUpdate gSource gItem)
</OnUpdate>
</Events>
</ItemType>
<ItemType UNID="&itIncandescentCoffee;"
name= "[kilo(s) of ]Incandescent coffee"
level= "6"
value= "800"
mass= "1"
frequency= "notrandom"
numberAppearing= "1d12"
attributes= "Consumable; consumerGood, Food; Lux; Specialty"
description= "Coffee beans from the tropical regions of the planet Incandescent are famous throughout Human Space."
>
<Image imageID="&rsItems1;" imageX="288" imageY="0" imageWidth="96" imageHeight="96"/>
</ItemType>
<!-- STATIONS -->
<!-- Arcology
EXTRA DATA
totalProduced: Total number of items produced
-->
<StationType UNID="&stStKatsArcology;"
name= "Arcology of New Victoria"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
virtual= "true"
definiteArticle= "true"
level= "7"
attributes= "commonwealthCustoms, dockObj, generic, human, majorStation, stKatsArcology"
>
<Items>
<RandomItem count="8d10"
criteria= "ad~r L:1-7; -alien; -illegal; -military; -notForSale; -notStandard; -specialty;"
levelFrequency= "systemLevel:r|c|cur"
/>
<RandomItem count="1d6"
criteria= "r L:3-7; -alien; -illegal; -military; -notForSale; -notStandard;"
levelFrequency="systemLevel:ru|c|curv"
/>
<RandomItem count="20"
criteria= "*~ad -alien; -illegal; -military; -notForSale; -notStandard; -specialty;"
levelFrequency= "systemLevel:ru|c|cur"
/>
<Item count="1d20" item="&itIncandescentCoffee;"/>
</Items>
<Trade currency="credit">
<Sell criteria="m +commonwealth; -military; -illegal; -notForSale; -notStandard;" priceAdj="100" inventoryAdj="400" levelFrequency="systemLevel:ruc|c|cur"/>
<Sell criteria="*NU -Illegal; -ID; -NotForSale;" priceAdj="100"/>
<Buy criteria="amdNU -Illegal; -NotForSale;" priceAdj="50"/>
<Buy criteria="*NU -Illegal; -ID; -NotForSale;" priceAdj="90"/>
<Buy criteria="*NU -Illegal; -ID;" priceAdj="10"/>
<Refuel criteria="f +BasicFuel; L:1-7;" priceAdj="100"/>
<RepairArmor criteria="a L:1-7;" priceAdj="100"/>
<ReplaceArmor criteria="a L:1-7;" priceAdj="100"/>
<InstallDevice criteria="d L:1-7;" priceAdj="100"/>
<RemoveDevice criteria="d L:1-7;" priceAdj="100"/>
<SellShip criteria="s -notForSale;" priceAdj="100"/>
<BuyShip criteria="s L:1-10; -notForSale;" priceAdj="80"/>
<BalanceTrade criteria="{core.fusionFuel}" impact="20"/>
<BalanceTrade criteria="{human.basicFood}" impact="20"/>
<BalanceTrade criteria="{human.lux}" impact="20"/>
<BalanceTrade criteria="{human.meds}" impact="20"/>
<BalanceTrade criteria="{human.res}" impact="20"/>
<BalanceTrade criteria="{core.ore}" impact="10"/>
</Trade>
<!-- Satellites -->
<Satellites>
<Station type="&stStKatsArcology15;" xOffset="355" yOffset="88" segment="true"/>
<Station type="&stStKatsArcology45;" xOffset="260" yOffset="237" segment="true"/>
<Station type="&stStKatsArcology75;" xOffset="95" yOffset="320" segment="true"/>
<Station type="&stStKatsArcology105;" xOffset="-95" yOffset="320" segment="true"/>
<Station type="&stStKatsArcology135;" xOffset="-260" yOffset="237" segment="true"/>
<Station type="&stStKatsArcology165;" xOffset="-355" yOffset="88" segment="true"/>
<Station type="&stStKatsArcology195;" xOffset="-355" yOffset="-90" segment="true"/>
<Station type="&stStKatsArcology225;" xOffset="-260" yOffset="-252" segment="true"/>
<Station type="&stStKatsArcology255;" xOffset="-95" yOffset="-323" segment="true"/>
<Station type="&stStKatsArcology285;" xOffset="95" yOffset="-323" segment="true"/>
<Station type="&stStKatsArcology315;" xOffset="260" yOffset="-252" segment="true"/>
<Station type="&stStKatsArcology345;" xOffset="355" yOffset="-90" segment="true"/>
</Satellites>
<HeroImage imageID="&rsStKatsArcologyHero;" imageWidth="800" imageHeight="528"/>
<StaticData>
<ParliamentDebate>
(
(cat "\n\nThe minister from Zhang Li makes an impassioned appeal for "
"a bill funding the construction of three new Commonwealth Star Carriers. "
"She shows pictures of refugees displaced by the Ares, but the chamber "
"is nearly empty and her energy fades in mid-speech."
)
(cat "\n\nThe chamber is nearly full as ministers debate a bill calling for "
"material support to the Huari people. Those in favor cite the brutal and cruel "
"treatment the Huari have received under the Sung Slavers. Those opposed "
"recall that the Huari themselves were once aggressors who killed Commonwealth "
"settlers in the Ungoverned Territories."
)
(cat "The minister from 70 Ophiuchi speaks in the Center Well:\n\n"
"\"...and so I urge my fellow ministers to meet this challenge. With the "
"appropriations of CP1175 we can finally provide enough resources to the "
"Militia in order to secure the safety of our citizens against Marauder tyranny.\""
)
(cat "\n\nThe minister from Kinder's Star reads a bill commemorating the death of "
"Militia Colonel Simon Francis Jezerski, who was killed in the line of duty in "
"a confrontation with the Death Drugs Cartel."
)
(cat "The minister from Numerianus speaks in the Center Well:\n\n"
"\"My fellow citizens, if compassion is not enough to compel you to vote for "
"this bill, then consider the risk that we take by opposing it. If we do not provide "
"a safe home for our zoanthrope brethren then the Dwarg will happily exploit them."
)
)
</ParliamentDebate>
</StaticData>
<Events>
<OnCreate>
(block Nil
(enum (sysFindObject gSource "T +arcology") theObj
(block Nil
; Create some visiting ships
(for i 1 (random 2 3)
(block (theShip)
(setq theShip (sysCreateShip
&tbStKatsTraffic;
(sysVectorPolarOffset theObj (random 0 359) 10)
&svCommonwealth;
&evStKatsTrafficBehavior;
))
(setq aDockObj theObj)
(objFireEvent theShip "OrderDockAtStKats")
)
)
; Register for events from all the objects that make up
; the arcology
(objRegisterForEvents gSource theObj)
)
)
; Register a callbacks
(sysAddObjRecurringTimerEvent 60 gSource "OnProduceProduction")
(sysAddObjRecurringTimerEvent 90 gSource "OnTrafficControl")
)
</OnCreate>
<OnProduceProduction>
(block Nil
; Discard any rotted produce
(enum (objGetItems gSource "* +FreshFood") theItem
(if (eq (itmGetData theItem "status") 'rotted)
(block Nil
(objRemoveItem gSource theItem)
; Rotted items don't count as "produced" so subtract
(objIncData gSource "totalProduced" (subtract 0 (itmGetCount theItem)))
)
)
)
; Add fresh produce
(if (leq (random 1 100) 5)
(block (produceAvail)
(setq produceAvail 0)
(enum (objGetItems gSource "* +FreshFood") theItem
(setq produceAvail (add produceAvail (itmGetCount theItem)))
)
(if (and (ls produceAvail 20)
(ls (objGetData gSource "totalProduced") 50)
)
(block (produceCount theMonth theItemUNID expireTime)
; Figure out how much to produce
(setq produceCount (random 10 20))
; Figure out which to produce based on the real
; calendar
(setq theMonth (item (unvGetRealDate) 1))
(switch
(leq theMonth 3)
(setq theItemUNID &itIncandescentLucuma;)
(leq theMonth 6)
(setq theItemUNID &itIncandescentPeaches;)
(leq theMonth 9)
(setq theItemUNID &itIncandescentStrawberries;)
(setq theItemUNID &itIncandescentBellFruit;)
)
; Expire time
(setq expireTime (typGetStaticData theItemUNID "expireTime"))
(objAddItem gSource
(itmSetData
(itmCreate theItemUNID produceCount)
"expireTime"
(add (unvGetTick) (random expireTime (add expireTime 1800)))
produceCount
)
)
(objIncData gSource "totalProduced" produceCount)
)
)
)
)
)
</OnProduceProduction>
<OnTrafficControl>
(block (totalShips)
; Count the number of ships under traffic control
(setq totalShips (count (sysFindObject Nil "s D:0010201F_status")))
; If less than the ideal number, new ships jump in
(if (ls totalShips 50)
(block (theShip theTarget)
(setq theShip (sysCreateShip
&tbStKatsTraffic;
(random (sysFindObject Nil "G"))
&svCommonwealth;
&evStKatsTrafficBehavior;
))
(objFireEvent theShip "OrderEnterSystem")
)
)
)
</OnTrafficControl>
</Events>
<Language>
<Text id="core.mapDescMain">
"Capital of the Commonwealth"
</Text>
</Language>
</StationType>
<!-- Arcology Segment Base -->
<Type UNID="&baStKatsArcologyBase;">
<StaticData>
<NPCService>
( ; service level margin
( 'repairArmor 7 100 )
)
</NPCService>
</StaticData>
<Events>
<OnDestroy>
(intCommonwealthOnDestroy)
</OnDestroy>
<OnDockObjAdj>
(if (not (objIsAbandoned gSource))
(sysFindObject Nil "TNV +stKatsArcology;")
Nil
)
</OnDockObjAdj>
</Events>
</Type>
<!-- Arcology 15 -->
<StationType UNID="&stStKatsArcology15;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="45" imageY="0" imageWidth="115" imageHeight="220"/>
<DockingPorts>
<Port x="39" y="60" rotation="-159" />
<Port x="55" y="18" rotation="-164"/>
<Port x="67" y="-31" rotation="-170"/>
<Port x="-34" y="-38" rotation="10"/>
<Port x="-48" y="8" rotation="19"/>
</DockingPorts>
</StationType>
<!-- Arcology 45 -->
<StationType UNID="&stStKatsArcology45;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="0" imageY="245" imageWidth="220" imageHeight="180"/>
<DockingPorts>
<Port x="7" y="76" rotation="-128" />
<Port x="45" y="45" rotation="-134"/>
<Port x="80" y="8" rotation="-141"/>
<Port x="-22" y="-55" rotation="42"/>
<Port x="-53" y="-15" rotation="50"/>
</DockingPorts>
</StationType>
<!-- Arcology 75 -->
<StationType UNID="&stStKatsArcology75;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="0" imageY="500" imageWidth="220" imageHeight="115"/>
<DockingPorts>
<Port x="-30" y="70" rotation="-94" />
<Port x="26" y="65" rotation="-102"/>
<Port x="76" y="49" rotation="-112"/>
<Port x="18" y="-65" rotation="69"/>
<Port x="-33" y="-45" rotation="77"/>
</DockingPorts>
</StationType>
<!-- Arcology 105 -->
<StationType UNID="&stStKatsArcology105;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="220" imageY="500" imageWidth="220" imageHeight="115"/>
<DockingPorts>
<Port x="-72" y="48" rotation="-70" />
<Port x="-22" y="62" rotation="-74"/>
<Port x="31" y="71" rotation="-80"/>
<Port x="36" y="-46" rotation="107"/>
<Port x="-21" y="-57" rotation="102"/>
</DockingPorts>
</StationType>
<!-- Arcology 135 -->
<StationType UNID="&stStKatsArcology135;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="220" imageY="245" imageWidth="220" imageHeight="180"/>
<DockingPorts>
<Port x="-84" y="14" rotation="-37" />
<Port x="-48" y="51" rotation="-47"/>
<Port x="-8" y="76" rotation="-56"/>
<Port x="49" y="-20" rotation="138"/>
<Port x="13" y="-52" rotation="132"/>
</DockingPorts>
</StationType>
<!-- Arcology 165 -->
<StationType UNID="&stStKatsArcology165;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="280" imageY="0" imageWidth="115" imageHeight="220"/>
<DockingPorts>
<Port x="-70" y="-29" rotation="-6" />
<Port x="-61" y="22" rotation="-14"/>
<Port x="-42" y="62" rotation="-23"/>
<Port x="53" y="9" rotation="168"/>
<Port x="38" y="-39" rotation="161"/>
</DockingPorts>
</StationType>
<!-- Arcology 195 -->
<StationType UNID="&stStKatsArcology195;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="500" imageY="0" imageWidth="115" imageHeight="220"/>
<DockingPorts>
<Port x="-48" y="-54" rotation="21" />
<Port x="-65" y="-9" rotation="12"/>
<Port x="-70" y="37" rotation="3"/>
<Port x="35" y="35" rotation="-161"/>
<Port x="54" y="-10" rotation="-167"/>
</DockingPorts>
</StationType>
<!-- Arcology 225 -->
<StationType UNID="&stStKatsArcology225;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="440" imageY="245" imageWidth="220" imageHeight="180"/>
<DockingPorts>
<Port x="-6" y="-75" rotation="56" />
<Port x="-51" y="-43" rotation="47"/>
<Port x="-88" y="0" rotation="35"/>
<Port x="11" y="60" rotation="-131"/>
<Port x="48" y="27" rotation="-139"/>
</DockingPorts>
</StationType>
<!-- Arcology 255 -->
<StationType UNID="&stStKatsArcology255;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="440" imageY="485" imageWidth="220" imageHeight="115"/>
<DockingPorts>
<Port x="37" y="-73" rotation="84" />
<Port x="-22" y="-62" rotation="74"/>
<Port x="-77" y="-43" rotation="63"/>
<Port x="-18" y="57" rotation="-105"/>
<Port x="32" y="44" rotation="-107"/>
</DockingPorts>
</StationType>
<!-- Arcology 285 -->
<StationType UNID="&stStKatsArcology285;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="660" imageY="485" imageWidth="220" imageHeight="115"/>
<DockingPorts>
<Port x="77" y="-50" rotation="114" />
<Port x="24" y="-66" rotation="103"/>
<Port x="-30" y="-73" rotation="93"/>
<Port x="-41" y="40" rotation="-80"/>
<Port x="16" y="54" rotation="-73"/>
</DockingPorts>
</StationType>
<!-- Arcology 315 -->
<StationType UNID="&stStKatsArcology315;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="660" imageY="245" imageWidth="220" imageHeight="180"/>
<DockingPorts>
<Port x="85" y="2" rotation="146" />
<Port x="53" y="-35" rotation="134"/>
<Port x="10" y="-65" rotation="125"/>
<Port x="-48" y="28" rotation="-54"/>
<Port x="-9" y="60" rotation="-47"/>
</DockingPorts>
</StationType>
<!-- Arcology 345 -->
<StationType UNID="&stStKatsArcology345;"
name= "New Victoria arcology segment"
sovereign= "&svCommonwealth;"
dockScreen= "&dsStKatsArcology;"
abandonedScreen= "&dsRPGAbandonedStation;"
canAttack= "true"
noMapLabel= "true"
multiHull= "true"
armorID= "&itBlastPlate;"
hitPoints= "1000"
regen= "20"
shipRegen= "6"
explosionType= "&vtBlastExplosion3;"
ejectaType= "&vtWreckEjecta;"
attributes= "arcology, commonwealth, commonwealthCustoms, friendly, human, majorStation, populated"
inherit= "&baStKatsArcologyBase;"
>
<Image imageID="&rsStKatsArcology;" imageX="705" imageY="0" imageWidth="115" imageHeight="220"/>
<DockingPorts>
<Port x="72" y="39" rotation="162" />
<Port x="63" y="-9" rotation="170"/>
<Port x="47" y="-56" rotation="178"/>
<Port x="-51" y="-10" rotation="-19"/>
<Port x="-33" y="43" rotation="-11"/>
</DockingPorts>
</StationType>
<!-- Iocrym First Contact Monument
-->
<StationType UNID="&stIocrymMonument;"
name= "First Contact Monument"
definiteArticle= "true"
sovereign= "&svCommonwealth;"
inherit= "&baCommonwealthStation;"
dockScreen= "Main"
abandonedScreen= "&dsRPGAbandonedStation;"
defaultBackgroundID="&rsIocrymMonumentScreen;"
multiHull= "true"
armorID= "&itPlasteelPlate;"
hitPoints= "160"
regen= "2"
explosionType= "&vtBlastExplosion1;"
ejectaType= "&vtWreckEjecta;"
canAttack= "true"
attributes= "commonwealth, commonwealthCustoms, friendly, generic, human, majorStation, monument, populated"
>
<Image imageID="&rsIocrymMonument;" imageWidth="160" imageHeight="236"/>
<Ships>
<Lookup count="1d4" table="&tbCommPrivateCrafts;"/>
</Ships>
<StaticData>
<BarEncounter>
(
(cat "You talk to a pilgrim from Eridani:\n\n"
"\"Other pilgrims say that the way to the Core is blocked! "
"The Iocrym have trapped us in Human Space! Why does Domina call us? Why? "
"Is it all some sick joke?\""
)
(cat "You sit next to a couple of tourists:\n\n"
"\"We don't need aliens interfering in our affairs, you know? How would they "
"feel if we started flying around their worlds? I'm glad they're gone!\""
)
(cat "At the bar you talk with a young researcher who studies the Iocrym:\n\n"
"\"You wanna hear something that's not on the guided tour? We never actually "
"saw the Iocrym. I mean, we never saw the aliens themselves\x97we communicated with "
"their ships. But were we talking to them? Or were we talking to an AI? "
"We still don't know.\""
)
(cat "You talk to a pilgrim from Cairn:\n\n"
"\"Domina has a plan and I'm sure that the Iocrym are a part of it.\""
)
(cat "You sit next to two young men from New Victoria:\n\n"
"\"We're idiots if we trust the Iocrym. I bet they're preparing for an invasion "
"right now! Why else would they be gone so long? We have to be ready!\""
)
(if (eq (objGetProperty gPlayerShip 'characterClass) &unidPilgrimClass;)
(cat "You talk to a scientist from New Victoria:\n\n"
"\"So you're a pilgrim, huh? Well don't get too excited about getting to the Core. "
"I have a couple of friends in the Heretic system who say that the way is blocked. "
"Nobody knows why, but the Iocrym don't want us to leave.\""
)
(cat "You talk to a scientist from New Victoria:\n\n"
"\"I have a couple of friends in the Heretic system who say Human Space has been quarantined. "
"Nobody knows why, but the Iocrym don't want us to leave.\""
)
)
(cat "You sit next to a young man in a fancy corporate suit:\n\n"
"\"When the Iocrym return they will teach us how to live in peace. Why are humans "
"always trying to kill each other? The Ancient Races of the Galaxy have lived in "
"peace for millions of years! We should listen to them.\""
)
)
</BarEncounter>
</StaticData>
<DockScreens>
<Main>
<Panes>
<Default descID="descWelcome">
<Actions>
<Action id="actionInformation" default="1">
<ShowPane pane="Information"/>
</Action>
<Action id="actionPub">
<ShowPane pane="Pub"/>
</Action>
<Action id="actionUndock" cancel="1">
<Exit/>
</Action>
</Actions>
</Default>
<Information descID="descInformation">
<Actions>
<Action id="actionInfoLike">
<ShowPane pane="Info1"/>
</Action>
<Action id="actionInfoLearn">
<ShowPane pane="Info2"/>
</Action>
<Action id="actionInfoWhere">
<ShowPane pane="Info3"/>
</Action>
<Action id="actionLeave" cancel="1" key="v">
<ShowPane pane="Default"/>
</Action>
</Actions>
</Information>
<Info1 descID="descInfo1">
<Actions>
<Action id="actionContinue" default="1" cancel="1">
<ShowPane pane="Info1B"/>
</Action>
</Actions>
</Info1>
<Info1B descID="descInfo1b">
<Actions>
<Action id="actionDone" default="1" cancel="1">
<ShowPane pane="Information"/>
</Action>
</Actions>
</Info1B>
<Info2 descID="descInfo2">
<Actions>
<Action id="actionDone" default="1" cancel="1">
<ShowPane pane="Information"/>
</Action>
</Actions>
</Info2>
<Info3 descID="descInfo3">
<Actions>
<Action id="actionDone" default="1" cancel="1">
<ShowPane pane="Information"/>
</Action>
</Actions>
</Info3>
<Pub descID="descPub">
<Actions>
<Action id="actionBar" default="1">
(if (geq (plyGetCredits gPlayer) 10)
(block Nil
(plyCharge gPlayer 10)
(scrShowPane gScreen "Story")
)
(scrShowPane gScreen "NoMoney")
)
</Action>
<Action id="actionLeave" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</Pub>
<Story>
<OnPaneInit>
(scrSetDesc gScreen
(cat (eval (intRandomMessage gSource "BarEncounter"))
"\n\nYou settle the 10 credit bill and call it a night."
)
)
</OnPaneInit>
<Actions>
<Action id="actionLeave" default="1" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</Story>
<NoMoney descID="descNoMoney">
<Actions>
<Action id="actionLeave" default="1" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</NoMoney>
</Panes>
</Main>
</DockScreens>
<DockingPorts>
<Port x="-36" y="80" />
<Port x="-87" y="40" />
<Port x="-92" y="-33" />
<Port x="-42" y="-85" />
<Port x="36" y="80" />
<Port x="87" y="40" />
<Port x="92" y="-33" />
<Port x="42" y="-85" />
</DockingPorts>
<Language>
<Text id="actionInformation">[I]nformation</Text>
<Text id="actionPub">First Contact [P]ub</Text>
<Text id="actionUndock">[U]ndock</Text>
<Text id="actionInfoLike">[W]hat was it like?</Text>
<Text id="actionInfoLearn">What [d]id we learn?</Text>
<Text id="actionInfoWhere">Where are they [n]ow?</Text>
<Text id="actionLeave">[L]eave</Text>
<Text id="actionContinue">[C]ontinue</Text>
<Text id="actionDone">[D]one</Text>
<Text id="actionBar">[S]it at the Bar</Text>
<Text id="descWelcome">
You are docked with a massive crystalline monument commemorating the point of
first contact between humans and alien intelligent life in the universe.
Scores of tourists wander around the vast hall, chatting softly and pausing
randomly at various points of interest.
</Text>
<Text id="descInformation">
A holoscreen flickers to life as you approach:
"Here at this point, in the year 2363, members of the Human Race
first met with representatives of the Ancient Races of the Galaxy."
Do you want to know more?
</Text>
<Text id="descInfo1">
With almost no warning six alien ships, blue and translucent like
flying glaciers, appeared out of the inner gate. Fear gripped the Commonwealth
at first, but as the attitude of the alien fleet remained peaceful, wonderment
took over.
Scientists from New Victoria immediately attempted to communicate, but it
took two frustrating weeks before the Iocrym (as they called themselves) were able
to learn our language.
</Text>
<Text id="descInfo1b">
Communication proceeded via computer processed code. The Iocrym told us that they
were one of the many Ancient Races in the Galaxy and that they were curious about
us and our development. They shared much scientific knowledge with us and then they
continued on their journey to Sol.
</Text>
<Text id="descInfo2">
The Iocrym gave us several hyperglyph rods encoded with scientific information.
While most of the knowledge has been classified by the Council of Lords because of
its military potential, much remains public.
Scientists are overjoyed at the insights
gained from this treasure trove. In particular, our knowledge of antimatter, zero-point
energy, and transpace have been revolutionized by the Iocrym's gift.
</Text>
<Text id="descInfo3">
The Iocrym promised to return, and why they have not remains a mystery.
Some scientists believe that the Ancient Races deal in
centuries and millennia, and thus will not return for many more years. Others believe
that their own alien morality prevents interference in the affairs of lesser species.
But regardless, the most important gift that the Iocrym left behind is
the knowledge that we are not alone in the Galaxy and that someday we will
join our alien brethren as equals.
</Text>
<Text id="descPub">
You are in a large restaurant and bar filled with monument visitors.
</Text>
<Text id="descNoMoney">
You hang around for a while, but you have no money to buy drinks.
</Text>
<Text id="core.mapDesc">
"Museum &mdash; Restaurant and bar"
</Text>
</Language>
</StationType>
<!-- DOCK SCREENS -->
<!-- Arcology -->
<DockScreen UNID="&dsStKatsArcology;"
inherit= "&dsDockScreenBase;"
>
<Panes>
<Default descID="descWelcome">
<Actions>
<Action id="actionParliament">
(scrShowScreen gScreen &dsStKatsArcologyParliament;)
</Action>
<Action id="actionCommerce">
(scrShowScreen gScreen &dsStKatsArcologyCommerce;)
</Action>
<Action id="actionUniversity">
(scrShowScreen gScreen &dsStKatsArcologyUniversity;)
</Action>
<Action id="actionArts">
(scrShowScreen gScreen &dsStKatsArcologyArts;)
</Action>
<Action id="actionDockServices">
(rpgDockServices gPlayerShip {
checkMilitaryID: True
})
</Action>
<Action id="actionUndock" cancel="1">
<Exit/>
</Action>
</Actions>
</Default>
</Panes>
<Language>
<Text id="actionParliament">[P]arliament Quarter</Text>
<Text id="actionCommerce">[C]ommerce Quarter</Text>
<Text id="actionUniversity">U[n]iversity Quarter</Text>
<Text id="actionArts">[A]rts Quarter</Text>
<Text id="descWelcome">Welcome to the Arcology of New Victoria!</Text>
</Language>
</DockScreen>
<!-- Parliament Quarter -->
<DockScreen UNID="&dsStKatsArcologyParliament;"
inherit= "&dsDockScreenBase;"
backgroundID= "none"
nestedScreen= "true"
>
<Display>
<Canvas>
(block Nil
(cnvDrawText 20 10 "Parliament Quarter" 'SubTitle '(128 128 128) 'left)
(cnvDrawImage 180 60 (list &rsStKatsArcologySchematic; 0 0 580 330))
(cnvDrawText 170 110 "Parliament" 'Header '(192 192 192) 'left)
(cnvDrawText 390 140 "Militia HQ" 'Header '(192 192 192) 'left)
(cnvDrawText 90 240 "Orange Sector" 'Large '(192 192 192) 'left)
(cnvDrawText 265 275 "Olympus Apartments" 'Large '(192 192 192) 'left)
(cnvDrawText 75 310 "The Romanus" 'Large '(192 192 192) 'left)
)
</Canvas>
</Display>
<Panes>
<Default descID="descParliamentQuarter">
<Actions>
<Action id="actionParliament" default="1">
<ShowPane pane="Parliament"/>
</Action>
<Action id="actionMilitia">
(switch
(not (milCanEnterCC))
(scrShowScreen gScreen &dsRPGMessage; { desc: (scrTranslate gScreen 'descAccessDenied) })
(= (typGetData &unidCommonwealthMilitia; 'rank) -1)
(scrShowScreen gScreen &dsRPGMessage; { desc: (scrTranslate gScreen 'descTooManyFailures) })
(rpgMissionAssignment {
missionCriteria: (cat "n +stKatsMilitia; =" (sysGetLevel) ";")
displayCriteria: "n +stKatsMilitia;"
noMissionTextID: 'descNoMissions
maxPerStation: (+ 3 (modulo (objGetDestiny gSource) 3))
intervalPerStation: (random 3600 5400)
})
)
</Action>
<Action id="actionLeave" cancel="1">
(scrExitScreen gScreen)
</Action>
</Actions>
</Default>
<Parliament>
<OnPaneInit>
(scrSetDesc gScreen
"You enter a beautiful hall in which ministers from all over the "
"Commonwealth gather to legislate and debate."
(eval (intRandomMessage gSource "ParliamentDebate"))
)
</OnPaneInit>
<Actions>
<Action id="actionLeave" default="1" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</Parliament>
</Panes>
<Language>
<Text id="actionParliament">[P]arliament</Text>
<Text id="actionMilitia">[M]ilitia Headquarters</Text>
<Text id="actionLeave">[L]eave</Text>
<Text id="descParliamentQuarter">
You are in the Parliament Quarter. Well-dressed men and women walk along the wide avenues of the quarter,
making their way to jobs in Commonwealth government.
</Text>
<String id="descNoMissions">
"Sorry, there are no missions currently available."
</String>
<String id="descTooManyFailures">
"How about getting us a cup of tea or something? That's probably a mission you could handle."
</String>
<Text id="descAccessDenied">
Two guards flank the door to the Headquarters. One of them checks your ID against a computer list:
"Sorry, %sir%, only experienced captains are allowed inside."
</Text>
</Language>
</DockScreen>
<!-- Commerce Quarter -->
<DockScreen UNID="&dsStKatsArcologyCommerce;"
inherit= "&dsDockScreenBase;"
backgroundID= "none"
nestedScreen= "true"
>
<Display>
<Canvas>
(block Nil
(cnvDrawText 20 10 "Commerce Quarter" 'SubTitle '(128 128 128) 'left)
(cnvDrawImage 5 60 (list &rsStKatsArcologySchematic; 165 0 415 330))
(cnvDrawText 280 80 "Commodities Exchange" 'Header '(192 192 192) 'left)
(cnvDrawText 345 140 "Green Sector" 'Large '(192 192 192) 'left)
(cnvDrawText 130 205 "Incandescent Exports" 'Large '(192 192 192) 'left)
(cnvDrawText 400 240 "The Pharaoh" 'Large '(192 192 192) 'left)
(cnvDrawText 170 275 "Planetside Apartments" 'Large '(192 192 192) 'left)
(cnvDrawText 420 310 "Jenra's Bar" 'Large '(192 192 192) 'left)
)
</Canvas>
</Display>
<Panes>
<Default descID="descCommerceQuarter">
<Actions>
<Action id="actionCommoditiesExchange" default="1">
(scrShowScreen gScreen &dsRPGCommoditiesExchange; {
checkMilitaryID: True
})
</Action>
<Action id="actionIncandescentExports">
<ShowPane pane="IncandescentExports"/>
</Action>
<Action id="actionBuyShip">
(scrShowScreen gScreen &dsRPGShipBroker; {
createCriteria: "s +systemLevel:0-2; +commonwealth; -notStandard; +shipBroker;"
checkMilitaryID: True
})
</Action>
<Action id="actionLeave" cancel="1">
(scrExitScreen gScreen)
</Action>
</Actions>
</Default>
<IncandescentExports descID="descIncandescentExports">
<Actions>
<Action name="Buy Items" default="1" key="B">
(scrShowScreen gScreen &dsRPGCommoditiesExchangeBuy; {
criteria: "* +food; +specialty;"
checkMilitaryID: True
})
</Action>
<Action id="actionLeave" cancel="1">
(scrShowPane gScreen 'Default)
</Action>
</Actions>
</IncandescentExports>
</Panes>
<Language>
<Text id="actionIncandescentExports">[I]ncandescent Exports</Text>
<Text id="actionLeave">[L]eave</Text>
<Text id="descCommerceQuarter">
The Commerce Quarter is filled with sharp-dressed people and glowing
advertisements. A massive bioluminescent screen shows prices in front
of the Commodities Exchange, while smaller signs point to boutique
store fronts.
</Text>
<Text id="descIncandescentExports">
Welcome to Incandescent Exports, specializing in selling unique items
up from the surface of the planet.
</Text>
</Language>
</DockScreen>
<!-- University Quarter
GLOBAL DATA (on stStKatsArcology)
-->
<DockScreen UNID="&dsStKatsArcologyUniversity;"
inherit= "&dsDockScreenBase;"
backgroundID= "none"
nestedScreen= "true"
>
<Display>
<Canvas>
(block Nil
(cnvDrawText 20 10 "University Quarter" 'SubTitle '(128 128 128) 'left)
(cnvDrawImage 5 -220 (list &rsStKatsArcologySchematic; 165 0 415 580))
(cnvDrawText 200 80 "School of Medicine" 'Large '(192 192 192) 'left)
(cnvDrawText 190 115 "School of Xenology" 'Large '(192 192 192) 'left)
(cnvDrawText 100 150 "School of Interstellar Relations" 'Large '(192 192 192) 'left)
(cnvDrawText 400 185 "School of Engineering" 'Large '(192 192 192) 'left)
(cnvDrawText 415 130 "Taikon School\nof Exploration" 'Large '(192 192 192) 'left)
(cnvDrawText 360 240 "Onyx Bar" 'Large '(192 192 192) 'left)
(cnvDrawText 330 275 "Lilac Apartments" 'Large '(192 192 192) 'left)
(cnvDrawText 290 310 "Nocturn Apartments" 'Large '(192 192 192) 'left)
)
</Canvas>
</Display>
<Panes>
<Default descID="descUniversityQuarter">
<Actions>
<Action id="actionEngineering" default="1">
<ShowPane pane="Engineering"/>
</Action>
<Action id="actionUniversityTaikon">
(rpgMissionAssignment {
missionCriteria: (cat "n +stKatsTaikon; =" (sysGetLevel) ";")
displayCriteria: "n +stKatsTaikon;"
noMissionTextID: 'descTaikonEmpty
})
</Action>
<Action id="actionUniversityHospital">
(rpgMissionAssignment {
missionCriteria: (cat "n +stKatsHospital; =" (sysGetLevel) ";")
displayCriteria: "n +stKatsHospital;"
noMissionTextID: 'descHospitalEmpty
})
</Action>
<Action id="actionLeave" cancel="1">
(scrExitScreen gScreen)
</Action>
</Actions>
</Default>
<Engineering>
<OnPaneInit>
(block (roll course)
; Pick a random item to enhance
(setq roll (modulo (objGetDestiny gSource) 3))
(switch
(eq roll 0)
(block Nil
(setq gItem (random (objGetItems gPlayerShip "vI &lt;7 -alien;")))
(setq course "starship engines")
)
(eq roll 1)
(block Nil
(setq gItem (random (objGetItems gPlayerShip "rI &lt;7 -alien;")))
(setq course "starship reactors")
)
(eq roll 2)
(block Nil
(setq gItem (random (objGetItems gPlayerShip "sI &lt;7 -alien; -nonEnergyShields;")))
(setq course "shield generators")
)
(setq gItem Nil)
)
(if (itmIsEnhanced gItem) (setq gItem Nil))
(setq gCost (intRoundUp (divide (multiply 20 (itmGetPrice gItem 'credit)) 100) 10))
(scrSetDesc gScreen
"You enter a large computer-controlled engineering lab filled with students. "
"A professor approaches you:\n\n"
"\"Our project this semester is on " course "."
(if gItem
(cat " For " gCost " credits we can "
(if (itmIsDamaged gItem)
"repair"
"enhance"
)
" your ship's " (itmGetName gItem 0x80) "."
(if (ls (plyGetCredits gPlayer) gCost)
" Unfortunately, you cannot afford the cost."
""
)
)
""
)
"\""
)
(scrShowAction gScreen 0 gItem)
(scrEnableAction gScreen 0 (geq (plyGetCredits gPlayer) gCost))
(scrSetActionLabel gScreen 0
(switch
(itmMatches gItem "v")
"Enhance Drive"
(itmMatches gItem "r")
"Enhance Reactor"
(itmMatches gItem "s")
"Enhance Shields"
"Enhance"
)
"E"
)
)
</OnPaneInit>
<Actions>
<Action name="Enhance ???" key="E">
(block Nil
(switch
(not gItem)
Nil
(itmIsDamaged gItem)
(block Nil
(shpRepairItem gPlayerShip gItem)
(setq gResult (cat "Your " (itmGetName gItem 0x81) " has been repaired."))
)
(block (result theEnhancement)
(switch
(itmMatches gItem "s")
(setq theEnhancement (random '(0x0101 0x0102 0x0102 0x0103 0x0104 0x0905 0x0915 0x0925 0x0935 0x0F02 0x0F02)))
(setq theEnhancement 0x0001)
)
(setq result (shpEnhanceItem gPlayerShip gItem theEnhancement))
(setq gResult (intItemEnhanceStatus result (cat "Your " (itmGetName gItem 0x80) " is more powerful") (itmGetName gItem 0x80)))
)
)
(plyCharge gPlayer gCost)
(scrShowPane gScreen "EnhanceSuccess")
)
</Action>
<Action id="actionLeave" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</Engineering>
<EnhanceSuccess>
<OnPaneInit>
(scrSetDesc gScreen gResult)
</OnPaneInit>
<Actions>
<Action id="actionDone" default="1" cancel="1">
<ShowPane pane="Default"/>
</Action>
</Actions>
</EnhanceSuccess>
</Panes>
<Language>
<Text id="actionDone">[D]one</Text>
<Text id="actionEngineering">School of [E]ngineering</Text>
<Text id="actionUniversityHospital">[U]niversity Hospital</Text>
<Text id="actionUniversityTaikon">[T]aikon School of Exploration</Text>
<Text id="actionLeave">[L]eave</Text>
<Text id="descUniversityQuarter">
The schools that make up the University of New Victoria are strung along
the spine of the arcology. Students and professors make their way along
the wide avenues.
</Text>
<Text id="descTaikonEmpty">
You enter the Taikon School of Exploration. Several students are working
at various terminals, but no one appears interested in talking with you.
</Text>
<Text id="descHospitalEmpty">
You enter the brightly lit central garden of the New Victoria University Hospital.
Recovering patients sit on articulated gurneys, while doctors and medtechs pass through,
heads buried in datapads.
</Text>
</Language>
</DockScreen>
<!-- Arts Quarter -->
<DockScreen UNID="&dsStKatsArcologyArts;"
inherit= "&dsDockScreenBase;"
backgroundID= "none"
nestedScreen= "true"
>
<Display>
<Canvas>
(block Nil
(cnvDrawText 20 10 "Arts Quarter" 'SubTitle '(128 128 128) 'left)
(cnvDrawImage 180 -220 (list &rsStKatsArcologySchematic; 0 0 580 580))
(cnvDrawText 250 80 "The Victorian Nightclub" 'Large '(192 192 192) 'left)
(cnvDrawText 260 115 "Commonwealth Museum of Art" 'Large '(192 192 192) 'left)
(cnvDrawText 100 150 "3DV Theatre" 'Large '(192 192 192) 'left)
(cnvDrawText 305 205 "Symphonic Center" 'Large '(192 192 192) 'left)
(cnvDrawText 150 240 "Muriel's Bar" 'Large '(192 192 192) 'left)
(cnvDrawText 190 275 "Blue Sector" 'Large '(192 192 192) 'left)
(cnvDrawText 170 310 "Korelux Apartments" 'Large '(192 192 192) 'left)
)
</Canvas>
</Display>
<Panes>
<Default descID="descArtsQuarter">
<Actions>
<Action id="actionVictorianClub" default="1">
(scrShowScreen gScreen "&dsCommonwealthNightclub;")
</Action>
<Action id="actionLeave" cancel="1">
(scrExitScreen gScreen)
</Action>
</Actions>
</Default>
</Panes>
<Language>
<Text id="actionVictorianClub">The [V]ictorian Nightclub</Text>
<Text id="actionLeave">[L]eave</Text>
<Text id="descArtsQuarter">
The innovative architecture of the Arts Quarter draws tourists from
all over Human Space.
</Text>
</Language>
</DockScreen>
<!-- St Katharine's Star System -->
<SystemType UNID="&ssStKatharine;"
noRandomEncounters= "true"
noExtraEncounters= "true"
backgroundID= "&rsBrightStarSpace;"
>
<Tables>
<!-- Random Stations -->
<FriendlyOuterStations>
<Table>
<Station weight="20" type="&stContainerHabitat;"/>
<Station weight="20" type="&stCommonwealthSlums;"/>
<Station weight="15" type="&stFuelDepot;"/>
<Station weight="15" type="&stIceFarm;"/>
<Station weight="10" type="&stArmorDealer;"/>
<Station weight="10" type="&stArmsDealer;"/>
<Station weight="10" type="&stSistersOfDomina;"/>
<Station weight="5" type="&stHotel;"/>
<Station weight="5" type="&stArmsDealerRasiermesser;"/>
<Station weight="5" type="&stArmsDealerMakayev;"/>
</Table>
</FriendlyOuterStations>
<FriendlyStations>
<Table>
<Station weight="20" type="&stCorporateEnclave;"/>
<Station weight="20" type="&stCommonwealthResidentials;"/>
<Station weight="15" type="&stFuelDepot;"/>
<Station weight="15" type="&stHotel;"/>
<Station weight="10" type="&stContainerHabitat;"/>
<Station weight="10" type="&stCommonwealthSlums;"/>
<Station weight="10" type="&stArmorDealer;"/>
<Station weight="10" type="&stArmsDealer;"/>
<Station weight="10" type="&stManufacturingPlant;"/>
<Station weight="5" type="&stTinkerGathering;"/>
<Station weight="5" type="&stCommonwealthDryDock;"/>
<Station weight="5" type="&stArmsDealerRasiermesser;"/>
<Station weight="5" type="&stArmsDealerMakayev;"/>
<Station weight="5" type="&stInsuranceCompany;"/>
<Station weight="5" type="&stSistersOfDomina;"/>
<Station weight="2" type="&stArmsDealerBushido;"/>
</Table>
</FriendlyStations>
<EnemyStations>
<Table>
<Station weight="15" type="&stOutlawHaven;" noReinforcements="true"/>
<Station weight="15" type="&stCharonPirateOutpost3;" noReinforcements="true"/>
<Station weight="10" type="&stTerroristCamp;" noReinforcements="true"/>
<Station weight="10" type="&stMarauderOutpost;" noReinforcements="true"/>
<Station weight="5" type="&stTerroristCompound;" noReinforcements="true"/>
<Station weight="5" type="&stMarauderCompound;" noReinforcements="true"/>
<Station weight="5" type="&stDrugCartelOutpost;" noReinforcements="true"/>
<Station weight="5" type="&stWeaponsCache;" noReinforcements="true"/>
<Station weight="5" type="&stSungSlaveCamp;" noReinforcements="true"/>
</Table>
</EnemyStations>
</Tables>
<SystemGroup>
<Station type="&stStarClassA0;" name="St. Katharine's Star"/>
<AddAttribute attributes="ATypeSystem"/>
<AddTerritory minRadius="0" maxRadius="480" attributes="innerSystem, metallicComp, moltenZone"/>
<AddTerritory minRadius="480" maxRadius="800" attributes="lifeZone, waterComp, biosphereZone"/>
<AddTerritory minRadius="800" maxRadius="0" attributes="outerSystem, waterComp, iceZone"/>
<!-- Redglow -->
<Orbitals distance="50" angle="random">
<Group>
<Primary>
<Station type="&stVolcanicPlanetoidSizeG;" name="Redglow" showOrbit="true" />
</Primary>
<Orbitals distance="24" angle="equidistant">
<Group>
<Lookup table="StargateOutbound"/>
<Siblings radiusInc="18">
<Code>
; Don't create the navSign unless the stargate is there.
; In some adventures, for example, we don't have this gate.
(if (sysGetObjectByName 'Outbound)
(block (navSignObj)
(setq navSignObj (sysCreateStation &stCommonwealthNavSign; (sysOrbitPos aOrbit)))
(objSetData navSignObj 'Sign (typTranslate &ssStKatharine; 'navSignWarningTitle))
(objSetData navSignObj 'Info (typTranslate &ssStKatharine; 'navSignWarningDesc))
)
)
</Code>
</Siblings>
</Group>
<Station type="&stFuelDepot;" />
<Lookup chance="55" table="FriendlyStations" />
<Station type="&stIocrymMonument;" />
<Lookup chance="55" table="FriendlyStations" />
</Orbitals>
</Group>
</Orbitals>
<!-- Radiant -->
<Orbitals distance="110" angle="random">
<Group>
<Primary>
<Station type="&stDesertTerrestrialSizeH;" name="Radiant" showOrbit="true"/>
</Primary>
<Table>
<Orbitals chance="34" distance="16" angle="equidistant">
<Lookup table="FriendlyStations" />
<Label attributes="desert, planet, planetary, terrestrial"/>
</Orbitals>
<Orbitals chance="33" distance="16" angle="equidistant">
<Lookup table="FriendlyStations" />
<Lookup table="FriendlyStations" />
<Label attributes="desert, planet, planetary, terrestrial"/>
</Orbitals>
<Orbitals chance="33" distance="16" angle="equidistant">
<Lookup table="FriendlyStations" />
<Lookup table="FriendlyStations" />
<Lookup table="FriendlyStations" />
</Orbitals>
</Table>
</Group>
</Orbitals>
<!-- Incandescent -->
<Orbitals distance="260" angle="random">
<Group>
<Primary>
<Station type="&stBiosphereTerrestrialSizeI;" name="Incandescent" showOrbit="true"/>
<Station type="&stStKatsArcology;"/>
</Primary>
<Orbitals count="9" distance="36" angle="equidistant">
<Table>
<Station chance="5" type="&stSistersOfDomina;"/>
<Station chance="5" type="&stHotel;"/>
<Station chance="15" type="&stCorporateEnclave;"/>
<Station chance="10" type="&stFuelDepot;"/>
<Station chance="20" type="&stCommonwealthResidentials;" noMapLabel="true"/>
<Station chance="5" type="&stInsuranceCompany;"/>
<Station chance="10" type="&stArmsDealerRasiermesser;"/>
<Station chance="5" type="&stArmsDealerBushido;"/>
<Station chance="5" type="&stAutonDealer;"/>
<Station chance="10" type="&stContainerHabitat;" noMapLabel="true"/>
<Station chance="10" type="&stManufacturingPlant;"/>
</Table>
</Orbitals>
<Orbitals count="12-16" distance="52" angle="equidistant">
<Table>
<Station chance="40" type="&stContainerHabitat;" noMapLabel="true"/>
<Station chance="30" type="&stCommonwealthSlums;" noMapLabel="true"/>
<Station chance="30" type="&stManufacturingPlant;"/>
</Table>
</Orbitals>
</Group>
</Orbitals>
<!-- Majestic planetary system -->
<Orbitals distance="420" angle="random">
<Group>
<!-- Majestic -->
<Primary>
<Station type="&stHydrogenGasGiantSizeM;" name="Majestic" showOrbit="true" />
</Primary>
<!-- Majestic I -->
<Orbitals distance="22" angle="random">
<Group>
<Primary>
<Station type="&stRockyPlanetoidSizeE;" name="Nearworld"/>
</Primary>
<Orbitals count="1d3-1" distance="10" angle="equidistant">
<Lookup table="FriendlyStations" />
</Orbitals>
</Group>
</Orbitals>
<!-- Majestic II -->
<Orbitals distance="45" angle="random">
<Group>
<Primary>
<Station type="&stIcePlanetoidSizeG;" name="Farworld"/>
</Primary>
<Orbitals distance="16" angle="equidistant">
<Lookup table="FriendlyOuterStations" />
<Lookup table="FriendlyOuterStations" />
</Orbitals>
</Group>
</Orbitals>
<!-- Trojans -->
<Trojan>
<Group>
<Orbitals count="2d4+4" distance="2d8+8" angle="random">
<Station type="&stRockyAsteroidSizeA;"/>
</Orbitals>
<Orbitals count="1d6" distance="2d8+8" angle="random">
<Station type="&stRockyAsteroidSizeB;"/>
</Orbitals>
<Table>
<Label chance="20" attributes="asteroids"/>
<Lookup chance="50" table="FriendlyOuterStations" />
<Lookup chance="30" table="EnemyStations"/>
</Table>
</Group>
</Trojan>
<AntiTrojan>
<Group>
<Orbitals count="2d4+4" distance="2d8+8" angle="random">
<Station type="&stRockyAsteroidSizeA;"/>
</Orbitals>
<Orbitals count="1d6" distance="2d8+8" angle="random">
<Station type="&stRockyAsteroidSizeB;"/>
</Orbitals>
<Table>
<Label chance="20" attributes="asteroids"/>
<Lookup chance="50" table="FriendlyOuterStations" />
<Lookup chance="30" table="EnemyStations"/>
</Table>
</Group>
</AntiTrojan>
</Group>
</Orbitals>
<!-- Fulgent -->
<Orbitals distance="10" scale="light-minute" angle="random">
<Group>
<Primary>
<Station type="&stIcePlanetoidSizeG;" name="Fulgent" showOrbit="true"/>
</Primary>
<Orbitals distance="18" angle="equidistant">
<Group>
<Lookup table="StargateInbound"/>
<Siblings radiusInc="18">
<Code>
; Don't create the navSign unless the stargate is there.
; In some adventures, for example, we don't have this gate.
(if (sysGetObjectByName 'Inbound)
(block (navSignObj)
(setq navSignObj (sysCreateStation &stCommonwealthNavSign; (sysOrbitPos aOrbit)))
(objSetData navSignObj 'Sign (typTranslate &ssStKatharine; 'navSignWelcomeTitle))
(objSetData navSignObj 'Info (typTranslate &ssStKatharine; 'navSignWelcomeDesc))
)
)
</Code>
</Siblings>
</Group>
<Lookup chance="25" table="FriendlyOuterStations" />
<Station type="&stFuelDepot;" />
<Lookup chance="25" table="FriendlyOuterStations" />
<Lookup chance="25" table="FriendlyOuterStations" />
</Orbitals>
</Group>
</Orbitals>
<!-- Icy Ring -->
<Orbitals distance="780" angle="random">
<Group>
<Siblings count="500" distribution="4d60-122">
<Station type="&stIceAsteroidSizeA;"/>
</Siblings>
<Siblings count="50" distribution="4d20-42">
<Station type="&stIceAsteroidSizeB;"/>
</Siblings>
</Group>
</Orbitals>
<Orbitals count="2d4+4" distance="740-820" angle="minSeparation:10">
<Lookup table="EnemyStations"/>
</Orbitals>
<!-- Tenebrous -->
<Orbitals distance="17" scale="light-minute" angle="random">
<Group>
<Primary>
<Station type="&stPrimordialPlanetoidSizeG;" name="Tenebrous" showOrbit="true"/>
</Primary>
<Orbitals distance="20" angle="random">
<Label attributes="planet, planetary, planetoid, primordial"/>
</Orbitals>
</Group>
</Orbitals>
<!-- Create more stargates in case an extension added more links -->
<Lookup table="HumanSpaceStargates"/>
</SystemGroup>
<Language>
<Text id="navSignWelcomeTitle">Welcome!</Text>
<Text id="navSignWelcomeDesc">Welcome to St. Katharine's Star, capital of the Commonwealth and metropolitan jewel of Human Space.</Text>
<Text id="navSignWarningTitle">Travel\nWarning!</Text>
<Text id="navSignWarningDesc">
WARNING! Systems beyond St. Katharine's Star are not controlled
by the Commonwealth. By entering this stargate you agree to hold
the Commonwealth Transport System immune to liability in the
event of injury, involuntary servitude, or death.
</Text>
</Language>
</SystemType>
<!-- GLOBALS -->
<Globals>
(block Nil
(setq stkDistanceToStK (lambda (nodeID nodesChecked)
(switch
(eq nodeID 'SK)
0
(block (bestDist)
; Add this node to the list of nodes that we've checked
(setq nodesChecked (append nodesChecked (list nodeID)))
; For all the stargates, return the closest distance
(setq bestDist 1000)
(enum (sysGetStargates nodeID) theGate
(block (theDestNode theDist)
(setq theDestNode (sysGetStargateDestinationNode nodeID theGate))
(if (not (find nodesChecked theDestNode))
(block Nil
(setq theDist (stkDistanceToStK theDestNode nodesChecked))
(if (ls theDist bestDist)
(setq bestDist theDist)
)
)
)
)
)
; Done
(add bestDist 1)
)
)
))
(setq stkFreshFoodStatus (lambda (theItem)
(switch
(eq (itmGetData theItem "status") 'rotted)
"rotted"
(eq (itmGetData theItem "status") 'ripe)
"ripe"
"fresh"
)
))
(setq stkFreshFoodPrice (lambda (theItem)
(switch
; If rotted, then food is worthless
(eq (itmGetData theItem "status") 'rotted)
0
; If we're in the St Kat's system, then normal value
(eq (sysGetNode) 'SK)
(itmGetPrice theItem)
; Price increases the further away from StK's
(add (itmGetPrice theItem) (multiply (itmGetStaticData theItem "priceIncrease") (min 10 (stkDistanceToStK (sysGetNode)))))
)
))
(setq stkFreshFoodUpdate (lambda (theSource theItem)
(block ((status (itmGetData theItem "status"))
(expireTime (itmGetData theItem "expireTime")))
(switch
; If the food has rotted, mark it
(and (not (eq status 'rotted)) (gr (unvGetTick) expireTime))
(block Nil
(objSetItemData theSource theItem "status" 'rotted (itmGetCount theItem))
(if (eq theSource gPlayerShip)
(plyMessage gPlayer "The " (itmGetName theItem 0x80) " in your cargo hold have rotted")
)
)
; If the food has turned ripe, mark it
(and (not status) (gr (add (unvGetTick) 1800) expireTime))
(block Nil
(objSetItemData theSource theItem "status" 'ripe (itmGetCount theItem))
(if (eq theSource gPlayerShip)
(plyMessage gPlayer "The " (itmGetName theItem 0x80) " in your cargo hold look ripe")
)
)
)
)
))
)
</Globals>
<!-- BEHAVIORS -->
<ShipClass UNID="&evStKatsTrafficBehavior;"
class= "(St Katharine's traffic behavior)"
virtual= "true"
attributes= "behaviorClass"
>
<Events>
<OrderDockAtStKats>
(block Nil
(shpOrder gSource 'dock aDockObj)
(shpOrder gSource 'waitForThreat (random 10 200))
(objSetData gSource "0010201F_status" 'dockedAtNewVictoria)
)
</OrderDockAtStKats>
<OrderEnterSystem>
(objSetData gSource "0010201F_status" 'enteredSystem)
</OrderEnterSystem>
<OnOrdersCompleted>
(block (status dockedAt allLoot)
; Different order depending on our current state
(setq status (objGetData gSource "0010201F_status"))
(setq dockedAt (shpGetDockObj gSource))
; If we're docked at an object, dump any loot that we found
(if (and dockedAt
(objHasAttribute dockedAt "populated")
; Compose a list of all loot on board that the station
; might want to buy from us.
(setq allLoot (filter (objGetItems gSource "*~mf U") theItem
(objGetBuyPrice dockedAt theItem)
))
)
(block Nil
(enum allLoot theItem (objRemoveItem gSource theItem))
(enum allLoot theItem (objAddItem dockedAt theItem))
)
)
; Figure out what to do next
(switch
(eq status 'enteredSystem)
(block Nil
(setq theTarget (random (sysFindObject gSource "T +arcology")))
(shpOrder gSource 'orbit (sysFindObject Nil "TNV +stKatsArcology;") 20 (random 20 40))
(shpOrder gSource 'dock theTarget)
(shpOrder gSource 'waitForThreat (random 10 60))
(objSetData gSource "0010201F_status" 'dockedAtNewVictoria)
)
(eq status 'dockedAtNewVictoria)
(block (roll allWrecks)
; When leaving new victoria, orbit around for a bit
(shpOrder gSource 'orbit (sysFindObject Nil "TNV +stKatsArcology;") 20 (random 20 40))
; Randomly choose a path
(setq roll (random 1 100))
(switch
; Gate out
(leq roll 30)
(block Nil
(shpOrder gSource 'gate)
(objSetData gSource "0010201F_status" 'leavingSystem)
)
; If there are wrecks in the area, loot them
(and (leq (objGetDestiny gSource) 180)
(not (objHasAttribute gSource "freighter"))
(leq (random 1 100) 50)
; Compose a list of all wrecks in the area
(setq allWrecks (rpgFindWrecksToSalvage gSource '0010201F_marked))
)
(block (destObj)
(setq destObj (random allWrecks))
(shpOrder gSource 'loot destObj)
(objSetData destObj "0010201F_marked" True)
(objSetData gSource "0010201F_status" 'dockedAtStation)
)
; Dock at a random station in the system
(block (theTarget)
(setq theTarget (random (sysFindObject gSource "TAF +populated; -arcology; -occupation;")))
(shpOrder gSource 'dock theTarget)
(shpOrder gSource 'waitForThreat (random 10 20))
(objSetData gSource "0010201F_status" 'dockedAtStation)
)
)
)
(eq status 'dockedAtStation)
(block (roll allWrecks)
; Randomly choose a path
(setq roll (random 1 100))
(switch
; Gate out
(leq roll 30)
(block Nil
(shpOrder gSource 'gate)
(objSetData gSource "0010201F_status" 'leavingSystem)
)
; If there are wrecks in the area, loot them
(and (leq (objGetDestiny gSource) 180)
(not (objHasAttribute gSource "freighter"))
(leq (random 1 100) 50)
; Compose a list of all wrecks in the area
(setq allWrecks (rpgFindWrecksToSalvage gSource '0010201F_marked))
)
(block (destObj)
(setq destObj (random allWrecks))
(shpOrder gSource 'loot destObj)
(objSetData destObj "0010201F_marked" True)
(objSetData gSource "0010201F_status" 'dockedAtStation)
)
; Dock at new victoria
(leq roll 80)
(block (theTarget)
(setq theTarget (random (sysFindObject gSource "T +arcology")))
(shpOrder gSource 'orbit (sysFindObject Nil "TNV +stKatsArcology;") 20 (random 20 40))
(shpOrder gSource 'dock theTarget)
(shpOrder gSource 'waitForThreat (random 10 60))
(objSetData gSource "0010201F_status" 'dockedAtNewVictoria)
)
; Dock at a random station in the system
(block (theTarget)
(setq theTarget (random (sysFindObject gSource "TAF +populated; -arcology; -occupation;")))
(shpOrder gSource 'dock theTarget)
(shpOrder gSource 'waitForThreat (random 10 20))
(objSetData gSource "0010201F_status" 'dockedAtStation)
)
)
)
)
; If we were docked at an object that we just looted, then destroy the object
(if (and (objGetData dockedAt "0010201F_marked")
(ls (objGetProperty dockedAt 'mass) 2000)
(not (objGetProperty dockedAt 'immutable))
)
(objDestroy dockedAt gSource)
)
)
</OnOrdersCompleted>
</Events>
</ShipClass>
<!-- TABLES -->
<ShipTable unid="&tbStKatsTraffic;">
<Table>
<Ship chance="2" class="&scAntaresI;"/>
<Ship chance="4" class="&scAntaresII;"/>
<Ship chance="3" class="&scAntaresV;"/>
<Ship chance="3" class="&scEI7000;"/>
<Ship chance="8" class="&scEI500;"/>
<Ship chance="9" class="&scEI200;"/>
<Ship chance="14" class="&scEI100;"/>
<Ship chance="5" class="&scIAVLight;"/>
<Ship chance="10" class="&scIAVMedium;"/>
<Ship chance="5" class="&scIAVHeavy;"/>
<Ship chance="10" class="&scSapphireYacht;"/>
<Ship chance="3" class="&scScarabFreighter;"/>
<Ship chance="14" class="&scRoninB;"/>
<Ship chance="10" class="&scWolfen;"/>
</Table>
</ShipTable>
<!-- RESOURCES -->
<Image UNID="&rsStKatsArcology;" bitmap="Resources\StKatsArcology.jpg" bitmask="Resources\StKatsArcologyMask.bmp" loadOnUse="true"/>
<Image UNID="&rsIocrymMonument;" bitmap="Resources\FirstContactMonument.jpg" bitmask="Resources\FirstContactMonumentMask.bmp" loadOnUse="true"/>
<Image UNID="&rsStKatsArcologyHero;" bitmap="Resources\StKatsArcologyHero.jpg" bitmask="Resources\StKatsArcologyHeroMask.bmp" loadOnUse="true"/>
<Image UNID="&rsStKatsArcologyScreen;" bitmap="Resources\StKatsArcologyScreen.jpg" loadOnUse="true"/>
<Image UNID="&rsStKatsArcologySchematic;" bitmap="Resources\StKatsArcologySchematic.jpg" bitmask="Resources\StKatsArcologySchematicMask.bmp" loadOnUse="true"/>
<Image UNID="&rsIocrymMonumentScreen;" bitmap="Resources\FirstContactMonumentScreen.jpg" loadOnUse="true"/>
</TranscendenceModule>