Skip to content

Instantly share code, notes, and snippets.

@daid
Last active March 1, 2016 20:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daid/c0f1c0b4ad3e406b0bad to your computer and use it in GitHub Desktop.
Save daid/c0f1c0b4ad3e406b0bad to your computer and use it in GitHub Desktop.
-- Name: The black Wall
-- Description: Fight the Ghosts behind the wall
-- Author: Dyrian
require("utils.lua")
function init()
-- Spawne random Nebel in den Quadranten A6-D8 ... ca
-- for Nebula_spawn=1,70 do
-- Nebula():setPosition(random(15000,85000), random(-30000,-100000))
-- end
-- Spawne nen haufen Asteroiden in den Quadranten A6-D8 ... ca
-- for Asteroid_spawn=1,170 do
-- Asteroid():setPosition(random(15000, 85000), random(-40000, -100000))
-- end
-- Spawne Wurmloch von D1 in das Zentrum des Nebelfeldes
Wurmloch=WormHole():setPosition(-68123, -38987):setTargetPosition(33417, -61974)
-- Die schwarze Mauer
BlackHole():setPosition(36000, -100000)
-- BlackHole():setPosition(38000, -95000)
BlackHole():setPosition(40000, -90000)
-- BlackHole():setPosition(44000, -86000)
BlackHole():setPosition(48000, -82000)
-- BlackHole():setPosition(52000, -78000)
Portal_1=BlackHole():setPosition(57000, -74000)
-- BlackHole():setPosition(62000, -71000)
Portal_2=BlackHole():setPosition(67000, -68000)
-- BlackHole():setPosition(72000, -65000)
BlackHole():setPosition(77000, -63000)
-- BlackHole():setPosition(82000, -61000)
Nebula():setPosition(26700,-96400)
Nebula():setPosition(20400,-92100)
Nebula():setPosition(28100,-89400)
Nebula():setPosition(20800,-86000)
Nebula():setPosition(34700,-82000)
Nebula():setPosition(24500,-77800)
Nebula():setPosition(16000,-74200)
Nebula():setPosition(21100,-69100)
Nebula():setPosition(30500,-71300)
Nebula():setPosition(37800,-75600)
Nebula():setPosition(37800,-70000)
Nebula():setPosition(42600,-71500)
Nebula():setPosition(48500,-71200)
Nebula():setPosition(45800,-63700)
Nebula():setPosition(56200,-61600)
Nebula():setPosition(42200,-55300)
Nebula():setPosition(24500,-57900)
Nebula():setPosition(14800,-60100)
Nebula():setPosition(22800,-52100)
Nebula():setPosition(25900,-45600)
Nebula():setPosition(34400,-48700)
Nebula():setPosition(42200,-55300)
Nebula():setPosition(50900,-49200)
Nebula():setPosition(54800,-55300)
Nebula():setPosition(62700,-52400)
Nebula():setPosition(66600,-55500)
Nebula():setPosition(74100,-53800)
Nebula():setPosition(66900,-46300)
Nebula():setPosition(58400,-45100)
Nebula():setPosition(50900,-49200)
Nebula():setPosition(84000,-69600)
Nebula():setPosition(83800,-77800)
Nebula():setPosition(75500,-72800)
Nebula():setPosition(70400,-76700)
Nebula():setPosition(73000,-84400)
Nebula():setPosition(80100,-87700)
Nebula():setPosition(73000,-84400)
Nebula():setPosition(63500,-80100)
Nebula():setPosition(71100,-92600)
Nebula():setPosition(65000,-89100)
Nebula():setPosition(57600,-85800)
Nebula():setPosition(61200,-95600)
Nebula():setPosition(51400,-92300)
Nebula():setPosition(48200,-101200)
Nebula():setPosition(54400,-102000)
Wurmlochtarget=Nebula():setPosition(34100,-59900)
Nebula():setPosition(36900,-39000)
Nebula():setPosition(45100,-43900)
Nebula():setPosition(87200, -110100)
Nebula():setPosition(43600, -109300)
Nebula():setPosition(13100, -109300)
Nebula():setPosition(-18500, -55800)
Nebula():setPosition(-22300, -50100)
Nebula():setPosition(-64600, -49500)
Nebula():setPosition(-17600, -37300)
Nebula():setPosition(-21400, -50100)
Nebula():setPosition(-15600, -23900)
Nebula():setPosition(7600, -17700)
Nebula():setPosition(13600, -15900)
Nebula():setPosition(7500, -11900)
Nebula():setPosition(42200, -19900)
Nebula():setPosition(34600, -13900)
Nebula():setPosition(48800, -3700)
Nebula():setPosition(-3000, 14300)
Nebula():setPosition(2100, 19000)
Nebula():setPosition(-41200, 24400)
Nebula():setPosition(-83000, -13000)
Nebula():setPosition(-66800, -14000)
Nebula():setPosition(-64800, -21100)
Asteroid():setPosition(59600,-95400)
Asteroid():setPosition(51600,-45700)
Asteroid():setPosition(42900,-56700)
Asteroid():setPosition(41000,-53800)
Asteroid():setPosition(34700,-49700)
Asteroid():setPosition(33200,-47400)
Asteroid():setPosition(33100,-40800)
Asteroid():setPosition(46600,-40400)
Asteroid():setPosition(51600,-45700)
for Asteroid_spawn=1,6 do
Asteroid():setPosition((random(-4000,4000)+26700),(random(-4000,4000)-96400))
Asteroid():setPosition((random(-4000,4000)+20400),(random(-4000,4000)-92100))
Asteroid():setPosition((random(-4000,4000)+28100),(random(-4000,4000)-89400))
Asteroid():setPosition((random(-4000,4000)+20800),(random(-4000,4000)-86000))
Asteroid():setPosition((random(-4000,4000)+34700),(random(-4000,4000)-82000))
Asteroid():setPosition((random(-4000,4000)+24500),(random(-4000,4000)-77800))
Asteroid():setPosition((random(-4000,4000)+16000),(random(-4000,4000)-74200))
Asteroid():setPosition((random(-4000,4000)+21100),(random(-4000,4000)-69100))
Asteroid():setPosition((random(-4000,4000)+30500),(random(-4000,4000)-71300))
Asteroid():setPosition((random(-4000,4000)+37800),(random(-4000,4000)-75600))
Asteroid():setPosition((random(-4000,4000)+37800),(random(-4000,4000)-70000))
Asteroid():setPosition((random(-4000,4000)+42600),(random(-4000,4000)-71500))
Asteroid():setPosition((random(-4000,4000)+48500),(random(-4000,4000)-71200))
Asteroid():setPosition((random(-4000,4000)+45800),(random(-4000,4000)-63700))
--Asteroid():setPosition((random(-4000,4000)+56200),(random(-4000,4000)-61600))
Asteroid():setPosition((random(-4000,4000)+24500),(random(-4000,4000)-57900))
Asteroid():setPosition((random(-4000,4000)+14800),(random(-4000,4000)-60100))
Asteroid():setPosition((random(-4000,4000)+22800),(random(-4000,4000)-52100))
Asteroid():setPosition((random(-4000,4000)+25900),(random(-4000,4000)-45600))
--Asteroid():setPosition((random(-4000,4000)+34400),(random(-4000,4000)-48700))
--Asteroid():setPosition((random(-4000,4000)+42200),(random(-4000,4000)-55300))
--Asteroid():setPosition((random(-4000,4000)+50900),(random(-4000,4000)-49200))
--Asteroid():setPosition((random(-4000,4000)+54800),(random(-4000,4000)-55300))
Asteroid():setPosition((random(-4000,4000)+62700),(random(-4000,4000)-52400))
Asteroid():setPosition((random(-4000,4000)+66600),(random(-4000,4000)-55500))
Asteroid():setPosition((random(-4000,4000)+74100),(random(-4000,4000)-53800))
Asteroid():setPosition((random(-4000,4000)+66900),(random(-4000,4000)-46300))
Asteroid():setPosition((random(-4000,4000)+58400),(random(-4000,4000)-45100))
Asteroid():setPosition((random(-4000,4000)+84000),(random(-4000,4000)-69600))
Asteroid():setPosition((random(-4000,4000)+83800),(random(-4000,4000)-77800))
Asteroid():setPosition((random(-4000,4000)+75500),(random(-4000,4000)-72800))
Asteroid():setPosition((random(-4000,4000)+70400),(random(-4000,4000)-76700))
Asteroid():setPosition((random(-4000,4000)+73000),(random(-4000,4000)-84400))
Asteroid():setPosition((random(-4000,4000)+80100),(random(-4000,4000)-87700))
Asteroid():setPosition((random(-4000,4000)+73000),(random(-4000,4000)-84400))
--Asteroid():setPosition((random(-4000,4000)+63500),(random(-4000,4000)-80100))
--Asteroid():setPosition((random(-4000,4000)+71100),(random(-4000,4000)-92600))
--Asteroid():setPosition((random(-4000,4000)+65000),(random(-4000,4000)-89100))
Asteroid():setPosition((random(-4000,4000)+57600),(random(-4000,4000)-85800))
--Asteroid():setPosition((random(-4000,4000)+61200),(random(-4000,4000)-95600))
Asteroid():setPosition((random(-4000,4000)+51400),(random(-4000,4000)-92300))
Asteroid():setPosition((random(-4000,4000)+48200),(random(-4000,4000)-101200))
Asteroid():setPosition((random(-4000,4000)+54400),(random(-4000,4000)-102000))
Asteroid():setPosition((random(-4000,4000)+34100),(random(-4000,4000)-59900))
--Asteroid():setPosition((random(-4000,4000)+36900),(random(-4000,4000)-39000))
--Asteroid():setPosition((random(-4000,4000)+45100),(random(-4000,4000)-43900))
Asteroid():setPosition((random(-7000,7000)+87200),(random(-7000,7000)-110100))
Asteroid():setPosition((random(-7000,7000)+43600),(random(-7000,7000)-117100))
Asteroid():setPosition((random(-7000,7000)+13100),(random(-7000,7000)-109300))
Asteroid():setPosition((random(-7000,7000)-18500),(random(-7000,7000)-55800))
Asteroid():setPosition((random(-7000,7000)-22300),(random(-7000,7000)-55800))
Asteroid():setPosition((random(-7000,7000)-64600),(random(-7000,7000)-49500))
Asteroid():setPosition((random(-7000,7000)-17600),(random(-7000,7000)-37300))
Asteroid():setPosition((random(-7000,7000)-21400),(random(-7000,7000)-30100))
Asteroid():setPosition((random(-7000,7000)-15600),(random(-7000,7000)-23900))
Asteroid():setPosition((random(-7000,7000)+7600),(random(-7000,7000)-17700))
Asteroid():setPosition((random(-7000,7000)+13600),(random(-7000,7000)-15900))
Asteroid():setPosition((random(-7000,7000)+7500),(random(-7000,7000)-11900))
Asteroid():setPosition((random(-7000,7000)+42200),(random(-7000,7000)-19900))
Asteroid():setPosition((random(-7000,7000)+34600),(random(-7000,7000)-13900))
Asteroid():setPosition((random(-7000,7000)+48800),(random(-7000,7000)-3700))
Asteroid():setPosition((random(-7000,7000)-3000),(random(-7000,7000)+14300))
Asteroid():setPosition((random(-7000,7000)+2100),(random(-7000,7000)+19000))
Asteroid():setPosition((random(-7000,7000)-41200),(random(-7000,7000)+24400))
Asteroid():setPosition((random(-7000,7000)-83000),(random(-7000,7000)-13000))
Asteroid():setPosition((random(-7000,7000)-66800),(random(-7000,7000)-14000))
Asteroid():setPosition((random(-7000,7000)-64800),(random(-7000,7000)-21100))
VisualAsteroid():setPosition((random(-4000,4000)+26700),(random(-4000,4000)-96400))
VisualAsteroid():setPosition((random(-4000,4000)+20400),(random(-4000,4000)-92100))
VisualAsteroid():setPosition((random(-4000,4000)+28100),(random(-4000,4000)-89400))
VisualAsteroid():setPosition((random(-4000,4000)+20800),(random(-4000,4000)-86000))
VisualAsteroid():setPosition((random(-4000,4000)+34700),(random(-4000,4000)-82000))
VisualAsteroid():setPosition((random(-4000,4000)+24500),(random(-4000,4000)-77800))
VisualAsteroid():setPosition((random(-4000,4000)+16000),(random(-4000,4000)-74200))
VisualAsteroid():setPosition((random(-4000,4000)+21100),(random(-4000,4000)-69100))
VisualAsteroid():setPosition((random(-4000,4000)+30500),(random(-4000,4000)-71300))
VisualAsteroid():setPosition((random(-4000,4000)+37800),(random(-4000,4000)-75600))
VisualAsteroid():setPosition((random(-4000,4000)+37800),(random(-4000,4000)-70000))
VisualAsteroid():setPosition((random(-4000,4000)+42600),(random(-4000,4000)-71500))
VisualAsteroid():setPosition((random(-4000,4000)+48500),(random(-4000,4000)-71200))
VisualAsteroid():setPosition((random(-4000,4000)+45800),(random(-4000,4000)-63700))
VisualAsteroid():setPosition((random(-4000,4000)+56200),(random(-4000,4000)-61600))
VisualAsteroid():setPosition((random(-4000,4000)+42200),(random(-4000,4000)-55300))
VisualAsteroid():setPosition((random(-4000,4000)+24500),(random(-4000,4000)-57900))
VisualAsteroid():setPosition((random(-4000,4000)+14800),(random(-4000,4000)-60100))
VisualAsteroid():setPosition((random(-4000,4000)+22800),(random(-4000,4000)-52100))
VisualAsteroid():setPosition((random(-4000,4000)+25900),(random(-4000,4000)-45600))
VisualAsteroid():setPosition((random(-4000,4000)+34400),(random(-4000,4000)-48700))
VisualAsteroid():setPosition((random(-4000,4000)+42200),(random(-4000,4000)-55300))
VisualAsteroid():setPosition((random(-4000,4000)+50900),(random(-4000,4000)-49200))
VisualAsteroid():setPosition((random(-4000,4000)+54800),(random(-4000,4000)-55300))
VisualAsteroid():setPosition((random(-4000,4000)+62700),(random(-4000,4000)-52400))
VisualAsteroid():setPosition((random(-4000,4000)+66600),(random(-4000,4000)-55500))
VisualAsteroid():setPosition((random(-4000,4000)+74100),(random(-4000,4000)-53800))
VisualAsteroid():setPosition((random(-4000,4000)+66900),(random(-4000,4000)-46300))
VisualAsteroid():setPosition((random(-4000,4000)+58400),(random(-4000,4000)-45100))
VisualAsteroid():setPosition((random(-4000,4000)+50900),(random(-4000,4000)-49200))
VisualAsteroid():setPosition((random(-4000,4000)+84000),(random(-4000,4000)-69600))
VisualAsteroid():setPosition((random(-4000,4000)+83800),(random(-4000,4000)-77800))
VisualAsteroid():setPosition((random(-4000,4000)+75500),(random(-4000,4000)-72800))
VisualAsteroid():setPosition((random(-4000,4000)+70400),(random(-4000,4000)-76700))
VisualAsteroid():setPosition((random(-4000,4000)+73000),(random(-4000,4000)-84400))
VisualAsteroid():setPosition((random(-4000,4000)+80100),(random(-4000,4000)-87700))
VisualAsteroid():setPosition((random(-4000,4000)+73000),(random(-4000,4000)-84400))
VisualAsteroid():setPosition((random(-4000,4000)+63500),(random(-4000,4000)-80100))
VisualAsteroid():setPosition((random(-4000,4000)+71100),(random(-4000,4000)-92600))
VisualAsteroid():setPosition((random(-4000,4000)+65000),(random(-4000,4000)-89100))
VisualAsteroid():setPosition((random(-4000,4000)+57600),(random(-4000,4000)-85800))
VisualAsteroid():setPosition((random(-4000,4000)+61200),(random(-4000,4000)-95600))
VisualAsteroid():setPosition((random(-4000,4000)+51400),(random(-4000,4000)-92300))
VisualAsteroid():setPosition((random(-4000,4000)+48200),(random(-4000,4000)-101200))
VisualAsteroid():setPosition((random(-4000,4000)+54400),(random(-4000,4000)-102000))
VisualAsteroid():setPosition((random(-4000,4000)+34100),(random(-4000,4000)-59900))
VisualAsteroid():setPosition((random(-4000,4000)+36900),(random(-4000,4000)-39000))
VisualAsteroid():setPosition((random(-4000,4000)+45100),(random(-4000,4000)-43900))
VisualAsteroid():setPosition((random(-7000,7000)+87200),(random(-7000,7000)-110100))
VisualAsteroid():setPosition((random(-7000,7000)+43600),(random(-7000,7000)-117100))
VisualAsteroid():setPosition((random(-7000,7000)+13100),(random(-7000,7000)-109300))
VisualAsteroid():setPosition((random(-7000,7000)-18500),(random(-7000,7000)-55800))
VisualAsteroid():setPosition((random(-7000,7000)-22300),(random(-7000,7000)-55800))
VisualAsteroid():setPosition((random(-7000,7000)-64600),(random(-7000,7000)-49500))
VisualAsteroid():setPosition((random(-7000,7000)-17600),(random(-7000,7000)-37300))
VisualAsteroid():setPosition((random(-7000,7000)-21400),(random(-7000,7000)-30100))
VisualAsteroid():setPosition((random(-7000,7000)-15600),(random(-7000,7000)-23900))
VisualAsteroid():setPosition((random(-7000,7000)+7600),(random(-7000,7000)-17700))
VisualAsteroid():setPosition((random(-7000,7000)+13600),(random(-7000,7000)-15900))
VisualAsteroid():setPosition((random(-7000,7000)+7500),(random(-7000,7000)-11900))
VisualAsteroid():setPosition((random(-7000,7000)+42200),(random(-7000,7000)-19900))
VisualAsteroid():setPosition((random(-7000,7000)+34600),(random(-7000,7000)-13900))
VisualAsteroid():setPosition((random(-7000,7000)+48800),(random(-7000,7000)-3700))
VisualAsteroid():setPosition((random(-7000,7000)-3000),(random(-7000,7000)+14300))
VisualAsteroid():setPosition((random(-7000,7000)+2100),(random(-7000,7000)+19000))
VisualAsteroid():setPosition((random(-7000,7000)-41200),(random(-7000,7000)+24400))
VisualAsteroid():setPosition((random(-7000,7000)-83000),(random(-7000,7000)-13000))
VisualAsteroid():setPosition((random(-7000,7000)-66800),(random(-7000,7000)-14000))
VisualAsteroid():setPosition((random(-7000,7000)-64800),(random(-7000,7000)-21100))
end
-- Create the main ship for the players.
Serenity=PlayerSpaceship():setFaction("Human Navy"):setTemplate("Player Cruiser"):setPosition(-30000,18500):setCallSign("Serenity")
Reperaturwerft=SpaceStation():setTemplate("Medium Station"):setFaction("Human Navy"):setPosition(-30000,17000):setCallSign("Repairstation")
Heimatbasis=SpaceStation():setTemplate("Large Station"):setFaction("Human Navy"):setPosition(3000, 3000):setCallSign("Home Station")
Wurmlochbasis=SpaceStation():setTemplate("Medium Station"):setFaction("Human Navy"):setPosition(-53000,-25000):setCallSign("Wormhole Station")
Defend0r=CpuShip():setFaction("Human Navy"):setPosition(4000,6000):setCallSign("Defend0r II"):orderDefendTarget(Heimatbasis)
setShipToDreadnoughtII(Defend0r)
-- savegamethings
Save_1=Asteroid():setPosition(-37500,12500)
Save_2=Asteroid():setPosition(-30000,7500)
Save_3=Asteroid():setPosition(-22500,12500)
mytime = 0.0
Wurmlochmodifikation=0
Wurmlochrange=0
mission_state="Reperatur"
end
function savegamefunction()
if distance(Serenity, Save_1) < 1000 then
globalMessage("Through the wormhole ...")
mission_state="Durchs Wurmloch"
Test_Drohne:destroy()
Serenity:setPosition(-54000,-26000)
setShipToScout(Serenity)
Ghost_spawn=1
Wurmlochmodifikation=1
end
if distance(Serenity, Save_2) < 1000 then
globalMessage("Endfight")
Mauerbasis=SpaceStation():setTemplate("Small Station"):setFaction("Human Navy"):setCallSign("Mauerbasis"):setPosition(48837, -55467)
mission_state="Boom2"
Test_Drohne:destroy()
Ghost_spawn=5
Wurmlochmodifikation=1
Defend0r:setPosition(50000,-60000)
Serenity:setPosition(55400,-68500)
Bombe=SupplyDrop():setFaction("Ghosts"):setPosition(Serenity:getPosition()):setCommsFunction(commsSupplyDrop)
shipupgrade=random(0,3)
if shipupgrade < 1 then
setShipToBeamRS(Serenity)
elseif shipupgrade < 2 then
setShipToMissleBeamDType(Serenity)
else
setShipToSpeedShieldType(Serenity)
end
Serenity:setJumpDrive(false)
end
if distance(Serenity, Save_3) < 1000 then
end
end
function Delayfunction(delta)
mytime = mytime + delta
if mytime > 15 then
mission_state="Victory"
end
end
function compare(freq_min, freq_max)
frequency = 400 + (Serenity:getShieldsFrequency() * 20)
if mission_state == "Durchbruch" and (freq_min <= frequency) and (frequency <= freq_max) then
Bombe=SupplyDrop():setFaction("Ghosts"):setPosition(Serenity:getPosition()):setCommsFunction(commsSupplyDrop)
mission_state="Boom"
end
if Schildgenerator == 3 and (freq_min <= frequency) and (frequency <= freq_max) then
Defend0r:sendCommsMessage(Serenity, [[Nealy done! Now you have to put the Shields Frequency to 440, so the Shields of the Ghoststation will collapse.]])
Schildgenerator = 4
end
if Schildgenerator_2 == 1 and (freq_min <= frequency) and (frequency <= freq_max) then
Defend0r:sendCommsMessage(Serenity, [[Perfect. The Shields of the Ghoststation are destroyed. Now we can launch our Dropship.]])
Ghost_Station:setShields(0,0,0)
Schildgenerator = 5
end
end
function update(delta)
--Siegbedingung
if not Serenity:isValid() then
victory("Ghosts")
globalMessage("You did not manage to avoid the Ghosts!")
end
if Wurmlochmodifikation==0 then
if distance(Serenity, Wurmloch) < 3500 and Wurmlochrange ==0 then
Wurmlochbasis:sendCommsMessage(Serenity, [[Serenity! What are you doing? Your ship is not prepared for the transit!]])
Wurmlochrange=1
end
if distance(Serenity, Wurmloch) < 1500 and Wurmlochrange ==1 then
victory("Ghosts")
globalMessage("Your ship is lost in the wormhole!")
Serenity:destroy()
end
end
if mission_state=="Reperatur" then
Reperaturwerft:sendCommsMessage(Serenity, [[Finaly. The maintenance and repairs are completed!
Pay attention to your ship! Dont overstress your Reactor again.
Before you can recieve new orders, you should do a field exercise.
Move to Sector G3 and eliminate the hostile Drone.
May the stars guide you.]])
Test_Drohne=setShipToCruiserDrone(CpuShip()):setFaction("Kraylor"):setPosition(-30000, 47000):setCallSign("Test_Drone_046"):orderAttack(Serenity)
mission_state="Testlauf"
end
if mission_state=="Testlauf" then
if not Test_Drohne:isValid() then
Reperaturwerft:sendCommsMessage(Serenity, [[Yeah, well done! I see the he reactor is still working. Perfect!
Now the Serenity is full operational.
You should should navigate to the Home Station to get new orders. Your longrange scanner should be able to localise the Station.
Pay attention our there.
May the stars guide you.]])
mission_state="Heimatbasis"
end
savegamefunction()
end
if mission_state=="Heimatbasis" then
if Serenity:isDocked(Heimatbasis) then
Heimatbasis:sendCommsMessage(Serenity, [[Hey Serenity, good to hear that you finaly get released from the dry-dock!
While you are full operational the fleet commando have a small transportquest for your ship. Make your way to the Wormhole Station.
The order says: "Move to the Wormwole Station in "D2". They need a new deep-telemetry-telescope, wich already was charged to our cargo hold. Deliever the telescope to the Wormhole Station and wait there for new orders."
May the stars guide you.]])
mission_state="Transportmission"
end
end
-- Transportmission zum Wurmloch...
if mission_state=="Transportmission" then --Transportmission
if Serenity:isDocked(Wurmlochbasis) then
Wurmlochbasis:sendCommsMessage(Serenity, [[Welcome here at the Wormhole Station!
Thanks for the deep-telemetry-telescope, die cargo is just discharged.
Have a good stopover here.
May the stars. .. krrrrtzzzrtzrrrrzrrrrtz
kkrrrrrtrrrrzzzzr have krrrrtz Interferenkrrrrzrces
Wormholekrr krrzzzzrzrz activated krrrrzzzrzzzrzrzrzrzrz !!
krrzzz Ships krzzzrzzzrzz attack krzzzzzezrzz through Wormkrzzzrzrzzhole krrzzrzz!!!
emergencykrzzzzzrzzprotocol Omega krzzrzzzzzrzz three initiatedkkrrkrtttkrkkrkkkzzzzkkrkkkzz
On krzzrzzrzzrzrz battlekrzzrzzzzzzrzzrzrzrzzrzstation !!!
krzzzzzzrzz
krzzzrzztz
..]])
-- Spawne Gegner vor dem Wurmloch, die quasi aus dem Wurmloch herausgesprungen sind ..
Ghost_Snake=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setPosition(-65123, -33987):setCallSign("Ghost_Snake"):orderAttack(Serenity)
Ghost_Wolf=setShipToGunshipII(CpuShip()):setFaction("Ghosts"):setPosition(-64123, -34987):setCallSign("Ghost_Wolf"):orderAttack(Serenity)
Ghost_Rat=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setPosition(-65123, -34987):setCallSign("Ghost_Rat"):orderAttack(Serenity)
mission_state="Wurmlochverteidigung"
end
end
if mission_state=="Wurmlochverteidigung" then
if not Ghost_Wolf:isValid() and not Ghost_Snake:isValid() and not Ghost_Rat:isValid() then
Wurmlochbasis:sendCommsMessage(Serenity, [[Thanks for the Support! Good that Serenity was in range to help. Hopefully your ship doesent resieve too much damage.
The attack of the Ghosts came unexpected. It seems like they found a way to move their Troops save through the Wormholen. It seems they rearmed their ships in a special way. The debris of the Ghosts ships showed us wich modifcation they did. With a bit of luck our engineers can upgrade the Serenity in the same way.
We need to know where the attacks come from. So we can coordinate our attack and set up a defence.
You have to jump with the Serenity trough the Wormhole and scout where the attacks come from.
Dock with the Wormhole Station so we can do the needed modifications on our ship...]])
mission_state="Upgrade"
end
end
if mission_state=="Upgrade" then
if Serenity:isDocked(Wurmlochbasis) then
Wurmlochbasis:sendCommsMessage(Serenity, [[... thats all. Our engineers modified the Serenity. In addition to the wormholestabilizer we increase your speed and your shields. Now you should be able to avoid the enemy attacks.
In exchange we needed to demount some of your Weapons.
Your order is: "Scout where the attacks come from. Get an overview about the enemys strength. Than come back and make a report."
May the stars guide you.]])
setShipToScout(Serenity)
mission_state="Durchs Wurmloch"
Ghost_spawn=1
Wurmlochmodifikation=1
end
end
if mission_state=="Durchs Wurmloch" then
if distance(Serenity, Wurmloch) < 7500 then
Wurmlochbasis:sendCommsMessage(Serenity, [[Attention Serenity!!!
We get some unexpected measured values from the Wormhole! It seems the Ghosts manipulate the Wormhole with interferences. The firmness of the transistors are not longer warranted!
The jump may become bumpy!]])
mission_state="Gestrandet"
end
end
if mission_state=="Gestrandet" then
if Ghost_spawn==1 and distance(Serenity,Wurmlochtarget) < 5000 then
Ghost_Fly=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Fly"):setPosition(46382, -66891):orderAttack(Serenity)
--Ghost_Spider=CpuShip():setTemplate("Cruiser"):setFaction("Ghosts"):setCallSign("Ghost_Spider"):setPosition(32951, -70631):orderAttack(Serenity)
Ghost_Horse=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Horse"):setPosition(43800, -58599):orderAttack(Serenity)
Ghost_Donkey=CpuShip():setTemplate("Fighter"):setFaction("Ghosts"):setCallSign("Ghost_Donkey"):setPosition(36137, -46657):orderAttack(Serenity)
--Ghost_Sheep=CpuShip():setTemplate("Fighter"):setFaction("Ghosts"):setCallSign("Ghost_Sheep"):setPosition(24761, -54955):orderAttack(Serenity)
-- eventuell noch ne Abfrage machen ob man die Schilde anhatte, dann halt nur weniger dmg bekommen
globalMessage("Massive damage to all systems!")
Wurmlochbasis:sendCommsMessage(Serenity,[[Massive damage to all systems! Jump drive default!
Get yourself ready for battle!. We locate further powersignatures in the nebula!]])
Serenity:setJumpDrive(false)
Serenity:setSystemHealth("Impulse", -1)
Serenity:setSystemHealth("Maneuver", -0.6)
Serenity:setSystemHealth("Reactor", -0.1)
Serenity:setSystemHealth("RearShield", 0.5)
Serenity:setSystemHealth("FrontShield", 0.8)
Serenity:setSystemHealth("BeamWeapons", 0.9)
Serenity:setSystemHeat("Impulse", 1)
Serenity:setSystemHeat("Maneuver", 0.9)
Serenity:setSystemHeat("Reactor", 0.8)
Serenity:setSystemHeat("MissileSystem", 1)
Serenity:setSystemHeat("RearShield", 0.5)
Serenity:setSystemHeat("FrontShield", 0.4)
Ghost_spawn=2
end
if Ghost_spawn==2 and not Ghost_Fly:isValid() and not Ghost_Horse:isValid() and not Ghost_Donkey:isValid() then --and not Ghost_Sheep:isValid() then
mission_state="Überlebt"
end
end
if mission_state=="Überlebt" then
Heimatbasis:sendCommsMessage(Serenity, [[You are still alive! Good job Serenity!
The attacks of the Ghosts seems to come from behind the black wall. We dont know anything about the black wall and the things that lay behind it. We need to find a way to get behind the wall.
We constructed a small station near the wall. It provides a base and a research-post for the black wall. Our scients needs probes from the wall. scout the wall with your scout_probes and find the probes near the wall.
New orders, Serenity: "Gather two Probes from the black wall and get them to the "Wallbase". Beware of the Ghosts they might still be out in the Nebula"
May the stars guide you.]])
Mauerbasis=SpaceStation():setTemplate("Small Station"):setFaction("Human Navy"):setCallSign("Wallbase"):setPosition(48837, -55467)
Defend0r:orderDefendTarget(Mauerbasis)
Probe_1=SupplyDrop():setFaction("Human Navy"):setPosition(51744, -75433):setCommsFunction(commsSupplyDrop)
Probe_2=SupplyDrop():setFaction("Human Navy"):setPosition(37100, -85410):setCommsFunction(commsSupplyDrop)
Ghost_spawn=3
mission_state="Schwarze Mauer"
end
if mission_state=="Schwarze Mauer" then
if not Probe_1:isValid() or not Probe_2:isValid() then
if Ghost_spawn==3 then
Mauerbasis:sendCommsMessage(Serenity, [[Well done, we need one more Probe...]])
setShipToGunshipII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Bat"):setPosition(32300, -76400):orderAttack(Serenity)
setShipToGunshipII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Lamb"):setPosition(32400, -75800):orderAttack(Serenity)
Ghost_spawn=4
end
end
if not Probe_1:isValid() and not Probe_2:isValid() then
if Ghost_spawn==4 then
Mauerbasis:sendCommsMessage(Serenity, [[Good job, Serenity!
Now get the Probes to the "Wallbase"]])
Ghost_spawn=5
end
if Serenity:isDocked(Mauerbasis) then
Mauerbasis:sendCommsMessage(Serenity, [[Well done Serenity! With these Probes our scientists will find a way through the black wall.
Until the sciencereport is available we have time to upgrade our ship!
Stay docked with the base and contact our engeneers with via Comms.]])
Mauerbasis:setCommsFunction(commsUpgradeStation)
mission_state = "Modify"
end
end
end
if mission_state == "Modify" then
if not Serenity:isDocked(Mauerbasis) then
Mauerbasis:sendCommsMessage(Serenity, [[Our scientists find a way to collapse the wall. Or atleast a part of it. The scientists developed a disruptor. You have to place the disruptor inside the wall. Move the disruptor to the black wall in "B7". But dont move too deep into the wall!
Activate the Disruptor inside the wall with putting the shieldfrequency to 620tHz.
May the stars guide you.]])
mission_state="Durchbruch"
end
end
if mission_state=="Durchbruch" then
compare(620, 620)
end
if mission_state=="Boom" then
if distance(Bombe, Portal_1) < 1500 then --or distance(Bombe, Portal_2) < 1500 then
mission_state="Boom2"
end
end
if mission_state=="Boom2" then
Portal_1:destroy()
-- Portal_2:destroy()
Bombe:destroy()
Mauerbasis:sendCommsMessage(Serenity, [[It worked! A big part of the wall collapsed. Now we can get an impression of the Ghost Station out in the Nebula.
Our subspacedeepscanner managed to isolate some strong energysignatures in "zz8/zz9". It seems like the Ghost Attackbase is out there.
Our target is to destroy the Ghost station. We send the Defend0r and some more forces for assistance.
Your order is: "Destroy the Ghost Station"
May the stars guide you.]])
Ghost_Station=SpaceStation():setTemplate("Large Station"):setFaction("Ghosts"):setCallSign("Ghost Station"):setPosition(80040,-125444)
BattleStation_Links=setShipToWeaponsPlatformII(CpuShip()):setFaction("Ghosts"):setCallSign("BattleStation_Links"):setPosition(74370,-124100):orderRoaming()
BattleStation_Rechts=setShipToWeaponsPlatformII(CpuShip()):setFaction("Ghosts"):setCallSign("BattleStation_Rechts"):setPosition(82560,-119700):orderRoaming()
Ghost_Shark=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Shark"):setPosition(78747, -129559):orderDefendTarget(Ghost_Station)
Ghost_Croco=setShipToGunshipII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Croco"):setPosition(83593, -127820):orderDefendTarget(Ghost_Station)
Ghost_Lion=CpuShip():setTemplate("Cruiser"):setFaction("Ghosts"):setCallSign("Ghost_Lion"):setPosition(69580, -119856):orderDefendLocation(69580, -119856)
Ghost_Ele=setShipToGunshipII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Ele"):setPosition(73000,-115500):orderDefendLocation(73000,-115500)
-- Ghost_Turtle=setShipToDreadnoughtIII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Turtle"):setPosition(77000, -118500):orderDefendLocation(77000, -118500)
Ghost_Ant=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Ant"):setPosition(83546, -114698):orderDefendLocation(83546, -114698)
Ghost_Ape=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Ape"):setPosition(77100,-113700):orderDefendLocation(77100,-113700)
Ghost_Bee=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Bee"):setPosition(58246, -98445):orderDefendLocation(58246, -98445)
Ghost_Cat=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Cat"):setPosition(64631, -92350):orderDefendLocation(64631, -92350)
Ghost_Dog=setShipToFighterII(CpuShip()):setFaction("Ghosts"):setCallSign("Ghost_Dog"):setPosition(71139, -88665):orderDefendLocation(71139, -88665)
Defend0r:orderFlyFormation(Serenity, -500, 2500)
setShipToFighterII(CpuShip()):setFaction("Human Navy"):setCallSign("Defend_21"):setPosition(47646, -57097):orderFlyFormation(Defend0r, -750, 1000)
CpuShip():setTemplate("Fighter"):setFaction("Human Navy"):setCallSign("Defend_32"):setPosition(48348, -56731):orderFlyFormation(Serenity, -750, 1000)
CpuShip():setTemplate("Fighter"):setFaction("Human Navy"):setCallSign("Defend_63"):setPosition(49111, -56410):orderFlyFormation(Serenity, -750, -1000)
setShipToFighterII(CpuShip()):setFaction("Human Navy"):setCallSign("Defend_74"):setPosition(47356, -56151):orderFlyFormation(Defend0r, -750, -1000)
CpuShip():setTemplate("Fighter"):setFaction("Human Navy"):setCallSign("Defend_15"):setPosition(48119, -55754):orderFlyFormation(Serenity, -1000, -2000)
mission_state="Endkampf"
end
if mission_state=="Endkampf" then
if distance(Serenity, Ghost_Station) < 21000 then
Mauerbasis:sendCommsMessage(Serenity, [[Serenity, we got new informations about the Battlestations near the Ghost Station.
It seems they are connected to the mainstation through a c35-subspace-connection. If we manage to destroy the mainstation than the Battlestations will also explode.
One more thing:
The Defend0r carries a special high explosive charge wich she can attach to the Ghost Station with a Dropship. But the Defend0r must get very close to the Station.
Serenity, your order is: "Support the Defend0r in any way. Draw the fire and protect the Defend0r at all costs!"
May the stars guide you.]])
Defend0r:orderFlyTowardsBlind(80040,-125444)
Schildgenerator=1
mission_state="Defend0r"
end
end
if mission_state=="Defend0r" then
if Schildgenerator==1 and distance(Defend0r, Ghost_Station) < 3500 then
Defend0r:orderIdle()
Defend0r:sendCommsMessage(Serenity, [[Serenity, we are now in range for launching the Dropship, but the shields of the Ghostbase are too strong. You need to help us lowering the shields. If we use our own shieldgenerators and generate interferences we may manage to collapse the Shields of the Ghoststation.
First of all overheat your front and rear-shields]])
if Ghost_Shark:isValid() then
Ghost_Shark:orderAttack(Defend0r)
end
if Ghost_Croco:isValid() then
Ghost_Croco:orderAttack(Serenity)
end
if Ghost_Lion:isValid() then
Ghost_Lion:orderAttack(Defend0r)
end
if Ghost_Ele:isValid() then
Ghost_Ele:orderAttack(Serenity)
end
--[[ if Ghost_Turtle:isValid() then
Ghost_Turtle:orderAttack(Serenity)
end]]
if Ghost_Ant:isValid() then
Ghost_Ant:orderAttack(Defend0r)
end
if Ghost_Ape:isValid() then
Ghost_Ape:orderAttack(Defend0r)
end
Schildgenerator=2
end
if Schildgenerator == 2 and Serenity:getSystemHeat("FrontShield") > 0.9 and Serenity:getSystemHeat("RearShield") > 0.9 and distance(Serenity, Ghost_Station) < 4000 then
Defend0r:sendCommsMessage(Serenity, [[Well done! Now set the shieldfrequency to 720... Fast, we need to hurry!]])
Schildgenerator = 3
end
if Schildgenerator == 3 then
compare(720,720)
end
if Schildgenerator == 4 then
Schildgenerator_2 = 1
compare (440, 440)
end
if Schildgenerator == 5 then
if Schildgenerator_2 == 1 then
Dropship=CpuShip():setTemplate("Tug"):setFaction("Human Navy"):setCallSign("Dropship"):setPosition(Defend0r:getPosition()):orderFlyTowardsBlind(Ghost_Station:getPosition())
Schildgenerator_2 = 2
end
if Schildgenerator_2 == 2 and distance(Dropship, Ghost_Station) < 1000 then
Ghost_Station:destroy()
Dropship:destroy()
Schildgenerator_2 = 3
end
if Schildgenerator_2 == 3 then
BattleStation_Links:destroy()
BattleStation_Rechts:destroy()
Mauerbasis:sendCommsMessage(Serenity, [[Well done Serenity! You destroyed the emenys mainstation.
The attack of the ghosts is defended.
The remaining Ghosts will probably retreat now.]])
if Ghost_Shark:isValid() then
Ghost_Shark:orderFlyTowardsBlind(60000,-145000)
end
if Ghost_Croco:isValid() then
Ghost_Croco:orderFlyTowardsBlind(60000,-145000)
end
if Ghost_Lion:isValid() then
Ghost_Lion:orderFlyTowardsBlind(60000,-145000)
end
if Ghost_Ele:isValid() then
Ghost_Ele:orderFlyTowardsBlind(60000,-145000)
end
-- if Ghost_Turtle:isValid() then
-- Ghost_Turtle:orderAttack(Serenity)
-- end
if Ghost_Ant:isValid() then
Ghost_Ant:orderFlyTowardsBlind(60000,-145000)
end
if Ghost_Ape:isValid() then
Ghost_Ape:orderFlyTowardsBlind(60000,-145000)
end
Schildgenerator_2 = 4
end
if Schildgenerator_2 ==4 then
Delayfunction(delta)
end
end
end
if mission_state=="Victory" then
globalMessage("The Serenity was able to defend the Invasion of the ghosts! You can be proud of your crew!")
victory("Human Navy")
end
end
--[[ Communication function for supply drop ships. Does not allow for much interaction. --]]
function commsSupplyDrop()
if comms_source:isFriendly(comms_target) then
setCommsMessage("Scann here ...");
return true
end
if comms_source:isEnemy(comms_target) then
return false
end
setCommsMessage("Tick, Tick, Tick, Tick, ... Boooom!");
end
--[[ Communication function for the upgrade station. Allow you to upgrade your ship once. --]]
function commsUpgradeStation()
if comms_source:isEnemy(comms_target) then
return false
end
if comms_source:isFriendly(comms_target) then
if not comms_source:isDocked(comms_target) then
setCommsMessage("Good day officer,\nIf you want to upgrade the ship, you have to dock with us first.")
return
end
if comms_source:isDocked(comms_target) then
if comms_source:getTypeName() == "Player Cruiser" or comms_source:getTypeName() == "Serenity_Scout" then
setCommsMessage("Hey Serenity,\nWe can upgrade your ship in different ways. Please choose your way.")
addCommsReply("Upgrade our speed and shields please!",
function()
setShipToSpeedShieldType(comms_source)
setCommsMessage("A wise choise!\nYou can undock now.")
end)
addCommsReply("Upgrade our missile storage and beam damage!",
function()
setShipToMissleBeamDType(comms_source)
setCommsMessage("A wise choise!\nYou can undock now.")
end)
addCommsReply("Upgrade our beam range and the speed of fire!",
function()
setShipToBeamRS(comms_source)
setCommsMessage("A wise choise!\nYou can undock now.")
end)
else
setCommsMessage("Do you like your upgrades?")
end
end
end
end
--[[ Ship changing functions, to apply different ship updates to the player --]]
function setShipToScout(ship)
ship:setTypeName("Serenity_Scout")
ship:setWeaponTubeCount(1)
ship:setShieldsMax(150, 150)
ship:setImpulseMaxSpeed(120)
ship:setRotationMaxSpeed(20)
ship:setWeaponStorageMax("Homing", 8)
ship:setWeaponStorageMax("Mine", 1)
ship:setWeaponStorageMax("Nuke", 0)
ship:setWeaponStorageMax("EMP", 0)
end
function setShipToSpeedShieldType(ship)
ship:setTypeName("Serenity_Speed_Shield")
ship:setWeaponTubeCount(2)
ship:setShieldsMax(150, 150)
ship:setShields(150, 150)
ship:setImpulseMaxSpeed(105)
ship:setRotationMaxSpeed(15)
ship:setWeaponStorageMax("Homing", 12)
ship:setWeaponStorageMax("Mine", 8)
ship:setWeaponStorageMax("Nuke", 4)
ship:setWeaponStorageMax("EMP", 6)
end
function setShipToMissleBeamDType(ship)
ship:setTypeName("Serenity_Missile_BeamD")
ship:setBeamWeapon(0, 90, -15, 1000.0, 6.0, 15)
ship:setBeamWeapon(1, 90, 15, 1000.0, 6.0, 15)
ship:setWeaponTubeCount(2)
ship:setShieldsMax(80, 80)
ship:setImpulseMaxSpeed(90)
ship:setRotationMaxSpeed(10)
ship:setWeaponStorageMax("Homing", 15)
ship:setWeaponStorageMax("Mine", 10)
ship:setWeaponStorageMax("Nuke", 6)
ship:setWeaponStorageMax("EMP", 6)
ship:setWeaponStorage("Homing", 15)
ship:setWeaponStorage("Mine", 10)
ship:setWeaponStorage("Nuke", 6)
ship:setWeaponStorage("EMP", 6)
end
function setShipToBeamRS(ship)
ship:setTypeName("Serenity_BeamRS")
ship:setBeamWeapon(0, 90, -15, 1500.0, 4.0, 15)
ship:setBeamWeapon(1, 90, 15, 1500.0, 4.0, 15)
ship:setWeaponTubeCount(2)
ship:setShieldsMax(80, 80)
ship:setImpulseMaxSpeed(90)
ship:setRotationMaxSpeed(10)
ship:setWeaponStorageMax("Homing", 12)
ship:setWeaponStorageMax("Mine", 8)
ship:setWeaponStorageMax("Nuke", 4)
ship:setWeaponStorageMax("EMP", 6)
end
--[[ Conversion function to convert a CpuShip into a different version specially for this scenario --]]
function setShipToDreadnoughtII(ship)
ship:setTemplate("Dreadnought")
ship:setTypeName("Dreadnought II")
ship:setHullMax(200):setHull(200)
ship:setShieldsMax(100, 100, 100, 100, 100)
ship:setImpulseMaxSpeed(90)
ship:setRotationMaxSpeed(4)
ship:setWeaponTubeCount(1)
--TOFIX, no function for this ship:setWeaponTubeLoadTime(0, 15)
ship:setWeaponStorageMax("Homing", 8):setWeaponStorage("Homing", 8)
return ship
end
function setShipToWeaponsPlatformII(ship)
ship:setTemplate("Weapons platform")
ship:setTypeName("Weapons platform II")
ship:setBeamWeapon(0, 30, 0, 4000.0, 3.5, 10)
ship:setBeamWeapon(1, 30, 60, 4000.0, 3.5, 10)
ship:setBeamWeapon(2, 30, 120, 4000.0, 3.5, 10)
ship:setBeamWeapon(3, 30, 180, 4000.0, 3.5, 10)
ship:setBeamWeapon(4, 30, 240, 4000.0, 3.5, 10)
ship:setBeamWeapon(5, 30, 300, 4000.0, 3.5, 10)
ship:setHullMax(170):setHull(170)
return ship
end
function setShipToDreadnoughtIII(ship)
ship:setTemplate("Dreadnought")
ship:setTypeName("Dreadnought III")
ship:setHullMax(100):setHull(100)
ship:setShieldsMax(100, 100, 100, 100, 100)
ship:setImpulseMaxSpeed(40)
ship:setRotationMaxSpeed(3)
ship:setWeaponTubeCount(1)
--TOFIX, no function for this ship:setWeaponTubeLoadTime(0, 15)
ship:setWeaponStorageMax("Homing", 8):setWeaponStorage("Homing", 8)
return ship
end
function setShipToGunshipII(ship)
ship:setTemplate("Adv. Gunship")
ship:setTypeName("Gunship II")
ship:setBeamWeapon(0, 50,-15, 1000.0, 6.0, 10)
ship:setBeamWeapon(1, 50, 15, 1000.0, 6.0, 10)
ship:setHullMax(90):setHull(90)
return ship
end
function setShipToFighterII(ship)
ship:setTemplate("Fighter")
ship:setTypeName("Fighter II")
ship:setBeamWeapon(0, 60, 0, 1000.0, 4.0, 6)
ship:setHullMax(60):setHull(60)
ship:setShieldsMax(50):setShields(50)
ship:setImpulseMaxSpeed(100)
ship:setWeaponTubeCount(1)
--TOFIX, no function for this ship:setWeaponTubeLoadTime(0, 8)
ship:setWeaponStorageMax("Homing", 1):setWeaponStorage("Homing", 1)
return ship
end
function setShipToCruiserDrone(ship)
ship:setTemplate("Cruiser")
ship:setTypeName("Cruiser_Drone")
ship:setHullMax(80):setHull(80)
ship:setShieldsMax(60, 60):setShields(60, 60)
ship:setImpulseMaxSpeed(70)
ship:setRotationMaxSpeed(15)
return ship
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment