STS: Slower than Sound

Game development specific discussions.
Post Reply
Kamui_Kazuma
Posts: 14
Joined: Oct 23, 2016 1:22

STS: Slower than Sound

Post by Kamui_Kazuma »

This was an attempt to create a text-only RPG in FreeBASIC.
That being said... please don't attempt to learn fb from this thing as it was coded in a single afternoon and, is not very good.

Code: Select all

'' Text Based Combat Engine (STS) Alpha v1.5.0

'' Variable Declaration Block
DIM SHARED AS INTEGER e_hp, p_hp, nukeammo, turn, etimer, curr
DIM SHARED attack AS STRING
nukeammo = 15 '' Starting Missile Ammo
p_hp = 25 '' Player's Health
curr = 0

SUB shop_station_scen '' Merchant Station Scenario
    DIM shopchoice AS STRING
    CLS
    PRINT
    '' UI Block
    PRINT "Your Ship:"
    PRINT "$:" & curr
    PRINT "Hull Integrity:" & p_hp
    PRINT "Missiles:" & nukeammo
    PRINT
    PRINT "1.Missile Refill (+5 Missiles) $25"
    PRINT "2.Missile Stockpile (+15 Missiles) $50"
    PRINT "3.Hull Repair (+5 HP) $30"
    PRINT "4.Additional Plating (+15 HP) $55"
    PRINT "Q.Quit"
    INPUT "Buy Something"; shopchoice
    SELECT CASE shopchoice
    CASE "Q","q","Quit","QUIT","quit"
        CLS
        PRINT "Quitting."
        SLEEP 300
        CLS
        PRINT "Quitting.."
        SLEEP 300
        CLS
        PRINT "Quitting..."
        SLEEP 150
        CLS
    CASE "1"
        IF curr < 25 THEN
            PRINT "Not Enough Credits."
        END IF
        IF curr >= 25 THEN
            PRINT "Thank you."
            curr = curr - 25
            nukeammo = nukeammo + 5
        END IF
        SLEEP 400
    CASE "2"
        IF curr < 50 THEN
            PRINT "Not Enough Credits."
        END IF
        IF curr >= 50 THEN
            PRINT "Thank you."
            curr = curr - 50
            nukeammo = nukeammo + 15
        END IF
        SLEEP 400
    CASE "3"
        IF curr < 30 THEN
            PRINT "Not Enough Credits."
        END IF
        IF curr >= 30 THEN
            PRINT "Thank you."
            curr = curr - 30
            p_hp = p_hp + 5
        END IF
        SLEEP 400
    CASE "4"
        IF curr < 55 THEN 
            PRINT "Not Enough Credits."
        END IF
        IF curr >= 55 THEN
            PRINT "Thank you."
            curr = curr - 55
            p_hp = p_hp + 15
        END IF
        SLEEP 400
    CASE ELSE 
        PRINT "Sorry we don't carry that."
        SLEEP 400
    END SELECT
    CLS
END SUB

SUB station_batl_scen '' Space Station Battle Scenario
    e_hp = 30 '' Enemy has 30HP
    
    PRINT "You encountered an enemy Space Station!" '' Alert Message
    DO
        
        '' Game Over Block
        IF p_hp <= 0 THEN
            CLS
            PRINT "GAME OVER"
            SLEEP 1200
            STOP
        END IF
        
        '' UI Block
        PRINT "HP:" & p_hp
        PRINT "ENEMY HP:" & e_hp
        PRINT "MISSILES:" & nukeammo
        turn = turn + 1
        PRINT "TURN NUMBER:" & turn
        PRINT
        PRINT "VALID WEAPON COMMANDS:"
        PRINT "L:Basic Laser"
        PRINT "M:Missile Launcher"
        PRINT
        INPUT "Attack with which weapon"; attack
        
        '' Actions Block
        SELECT CASE attack
        CASE "Laser","LASER","laser","L","l"
            e_hp = e_hp - 1
            etimer = etimer + 1
        CASE "Missile","MISSILE","missile","M","m"
            e_hp = e_hp - 5
            etimer = etimer + 2
            nukeammo = nukeammo - 1
        CASE ELSE
            PRINT "!Invalid Weapon Code!"
            SLEEP 400
        END SELECT
        
        '' Enemy Turn Block
        IF etimer >= 2 THEN
            PRINT "Enemy Space Station attacks with Laser Battery!"
            p_hp = p_hp - 3
            etimer = etimer - 2
            SLEEP 500
        END IF
        
        '' Battle Won Block
        CLS
    LOOP UNTIL e_hp <= 0
    PRINT "ENEMY NEUTRALIZED"
    PRINT "Station Debris Salvaged to Re-enforce Hull Plating (HP +7)"
    PRINT "Station Drops $45"
    p_hp = p_hp + 7
    curr = curr + 45
    SLEEP 1200
END SUB

SUB fighter_batl_scen '' 'Kestrel' battle scenario
    e_hp=15 '' Enemy has 15 HP
    
    PRINT "You encountered an enemy 'Kestrel' Fighter Ship" '' Alert Message
    DO
        
        '' Game Over Block
        IF p_hp <= 0 THEN
            CLS
            PRINT "GAME OVER"
            SLEEP 1200
            STOP
        END IF
        
        '' UI Block
        PRINT "HP:" & p_hp
        PRINT "ENEMY HP:" & e_hp
        PRINT "MISSILES:" & nukeammo
        turn = turn + 1
        PRINT "TURN NUMBER:" & turn
        PRINT
        PRINT "VALID WEAPON COMMANDS:"
        PRINT "L:Basic Laser"
        PRINT "M:Missile Launcher"
        PRINT
        INPUT "Attack with which weapon"; attack
        
        '' Actions Block
        SELECT CASE attack
        CASE "Laser","LASER","laser","L","l"
            e_hp = e_hp - 1
            etimer = etimer + 1
        CASE "Missile","MISSILE","missile","M","m"
            e_hp = e_hp - 5
            etimer = etimer + 2
            nukeammo = nukeammo - 1
        CASE ELSE
            PRINT "!Invalid Weapon Code!"
            SLEEP 400
        END SELECT
        
        '' Enemy Turn Block
        IF etimer = 1 THEN
            PRINT "'Kestrel' attacks with Chain Laser!"
            p_hp = p_hp - 2
            etimer = etimer - 1
            SLEEP 500
        END IF
        IF etimer = 2 THEN
            PRINT "'Kestrel' fires Rocket!"
            p_hp = p_hp - 3
            etimer = etimer - 2
            SLEEP 500
        END IF
        
        '' Battle Won Block
        CLS
    LOOP UNTIL e_hp <= 0
    PRINT "ENEMY NEUTRALIZED"
    PRINT "'Kestrel' drops $24"
    curr = curr + 24
    SLEEP 1200
END SUB

SUB bomber_batl_scen '' 'Krom'orant' Bomber battle scenario
    e_hp = 35 '' Enemy has 35HP
    
    PRINT "You encountered an Enemy 'Krom'orant' Bomber" '' Alert Message
    DO
         
        '' Game Over Block
        IF p_hp <= 0 THEN
            CLS
            PRINT "GAME OVER"
            SLEEP 1200
            STOP
        END IF
        
        '' UI Block
        PRINT "HP:" & p_hp
        PRINT "ENEMY HP:" & e_hp
        PRINT "MISSILES:" & nukeammo
        turn = turn + 1
        PRINT "TURN NUMBER:" & turn
        PRINT
        PRINT "VALID WEAPON COMMANDS:"
        PRINT "L:Basic Laser"
        PRINT "M:Missile Launcher"
        PRINT
        INPUT "Attack with which weapon"; attack
        
        '' Actions Block
        SELECT CASE attack
        CASE "Laser","LASER","laser","L","l"
            e_hp = e_hp - 1
            etimer = etimer + 1
        CASE "Missile","MISSILE","missile","M","m"
            e_hp = e_hp - 5
            etimer = etimer + 2
            nukeammo = nukeammo - 1
        CASE ELSE
            PRINT "!Invalid Weapon Code!"
            SLEEP 400
        END SELECT
        
        '' Enemy Turn Block
        PRINT "'Krom'orant' launches Subspace Bomb!"
        p_hp = p_hp - 2
        SLEEP 500
        IF etimer >= 6 THEN
            PRINT "'Krom'orant' repairs damage!"
            e_hp = e_hp + 1
            etimer = etimer - 6
            SLEEP 500
        END IF
        
        '' Battle Won Block
        CLS
    LOOP UNTIL e_hp <= 0
    PRINT "ENEMY NEUTRALIZED"
    PRINT "Krom'orant Drops 15 Missiles & $40"
    nukeammo = nukeammo + 15
    curr = curr + 40
    SLEEP 1200
END SUB

SUB thermaldart_batl_scen
    e_hp = 5
    
    PRINT "!ALERT! Kamikaze-Class ship detected: 'Thermal Dart'"
    
    DO
        
        '' Game Over Block
        IF p_hp <= 0 THEN
            CLS
            PRINT "GAME OVER"
            SLEEP 1200
            STOP
        END IF
        
        '' UI Block
        PRINT "HP:" & p_hp
        PRINT "ENEMY HP:" & e_hp
        PRINT "MISSLES:" & nukeammo
        turn = turn + 1
        PRINT "TURN NUMBER:" & turn
        PRINT
        PRINT "VALID WEAPON COMMANDS:"
        PRINT "L:Basic Laser"
        PRINT "M:Missile Launcher"
        PRINT
        INPUT "Attack with which weapon"; attack
        
        '' Actions Block
        SELECT CASE attack
        CASE "Laser","LASER","laser","L","l"
            e_hp = e_hp - 1
            etimer = etimer + 1
        CASE "Missile","MISSILE","missile","M","m"
            e_hp = e_hp - 5
            etimer = etimer + 2
            nukeammo = nukeammo - 1
        CASE ELSE
            PRINT "!Invalid Weapon Code!"
            SLEEP 400
        END SELECT
        
        '' Enemy Turn Block
        IF etimer < 6 THEN
            PRINT "!IMPACT IMMENENT!"
            SLEEP 500
        END IF
        IF etimer >= 6 THEN
            PRINT "'Thermal Dart' has impacted!"
            p_hp = P_hp - 15
            e_hp = e_hp - 5
            SLEEP 500
        END IF
        
        '' Battle Won Block
        CLS
    LOOP UNTIL e_hp <= 0
    PRINT "ENEMY NEUTRALIZED"
    SLEEP 1200
END SUB

SUB ship_batl_scen ''Ship Battle Scenario
    e_hp=25
    
    PRINT "You encountered an enemy Star Ship" '' Alert Message
    
    DO
        
        '' Game Over Block
        IF p_hp <= 0 THEN
            CLS
            PRINT "GAME OVER"
            SLEEP 1200
            STOP
        END IF
        
        '' UI Block
        PRINT "HP:" & p_hp
        PRINT "ENEMY HP:" & e_hp
        PRINT "MISSLES:" & nukeammo
        turn = turn + 1
        PRINT "TURN NUMBER:" & turn
        PRINT
        PRINT "VALID WEAPON COMMANDS:"
        PRINT "L:Basic Laser"
        PRINT "M:Missile Launcher"
        PRINT
        INPUT "Attack with which weapon"; attack
        
        '' Actions Block
        SELECT CASE attack
        CASE "Laser","LASER","laser","L","l"
            e_hp = e_hp - 1
            etimer = etimer + 1
        CASE "Missile","MISSILE","missile","M","m"
            e_hp = e_hp - 5
            etimer = etimer + 2
            nukeammo = nukeammo - 1
        CASE ELSE
            PRINT "!Invalid Weapon Code!"
            SLEEP 400
        END SELECT
        
        '' Enemy Turn Block
        IF etimer = 2 THEN
            PRINT "Enemy Ship fires Basic Laser"
            p_hp = p_hp - 1
            SLEEP 500
        END IF
        IF etimer >= 4 THEN
            PRINT "Enemy Ship fires Missile"
            p_hp = p_hp - 5
            etimer = etimer - 4
            SLEEP 500
        END IF
        
        '' Battle Won Block
        CLS
    LOOP UNTIL e_hp <= 0
    PRINT "ENEMY NEUTRALIZED"
    PRINT "Enemy Ship Dropped Some Spare Plating (+4 HP)"
    PRINT "And $22"
    p_hp = p_hp + 4
    curr = curr + 22
    SLEEP 1200
END SUB


'' Sector Choice Block
DIM sect_choice AS STRING
DO
    PRINT "{INVENTORY}"
    PRINT "HULL INTEGRITY:" & p_hp
    PRINT "MISSILES:" & nukeammo
    PRINT "CREDITS:" & curr
    PRINT
    PRINT "{HELM_CONSOLE}"
    PRINT "Please Choose A Sector..."
    PRINT "Available sectors:"
    PRINT "0.Home Sector: Known Repair Shop Location..."
    PRINT "1.Sector 1: Possible Station Detected..."
    PRINT "2.Sector 2: Possible Ship Detected...(Kestrel)"
    PRINT "3.Sector 3: Possible Ship Detected...(Thermal Dart)"
    PRINT "4.Sector 4: Possible Ship Detected...(Krom'orant Bomber)"
    PRINT "5.Sector 5: Possible Ship Detected...(Enemy Star Ship)"
    PRINT "Q:Quit..."
    PRINT
    INPUT "Jump to which sector"; sect_choice
    
    SELECT CASE sect_choice
    CASE "Uncle Pennybags"
        IF curr < 999 THEN
            PRINT "Debug/Cheat code activated..."
            curr = curr + 999
            SLEEP 400
            CLS
        END IF
    CASE "Q","q","Quit","QUIT","quit"
        CLS
        PRINT "Quitting."
        SLEEP 300
        CLS
        PRINT "Quitting.."
        SLEEP 300
        CLS
        PRINT "Quitting..."
        SLEEP 150
        STOP
    CASE "0"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        shop_station_scen
    CASE "1"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        station_batl_scen
    CASE "2"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        fighter_batl_scen
    CASE "3"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        thermaldart_batl_scen
    CASE "4"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        bomber_batl_scen
    CASE "5"
        CLS
        PRINT "JUMPING."
        SLEEP 300
        CLS
        PRINT "JUMPING.."
        SLEEP 300
        CLS
        PRINT "JUMPING..."
        SLEEP 300
        CLS
        ship_batl_scen
    CASE ELSE
        PRINT "!Sector ID Invalid!"
        SLEEP 600
        CLS
        
    END SELECT
    
LOOP
Tourist Trap
Posts: 2958
Joined: Jun 02, 2015 16:24

Re: STS: Slower than Sound

Post by Tourist Trap »

I like it, quite refreshing. For some reason, text only games are always inspirating.
D.J.Peters
Posts: 8586
Joined: May 28, 2005 3:28
Contact:

Re: STS: Slower than Sound

Post by D.J.Peters »

tiny and nice :-)

Joshy
Kamui_Kazuma
Posts: 14
Joined: Oct 23, 2016 1:22

Re: STS: Slower than Sound

Post by Kamui_Kazuma »

If you want an update, just say the word.

I've worked on this idea quite a lot since this version, which was the oldest version floating around on my hard drive.
Tourist Trap
Posts: 2958
Joined: Jun 02, 2015 16:24

Re: STS: Slower than Sound

Post by Tourist Trap »

Kamui_Kazuma wrote:If you want an update, just say the word.
Hello Kamui_Kazuma, no time to play right now but at the approach of Christmas hollydays I'm pretty sure your game update will have some success ;-)
Post Reply