A downloadable game

MINI CONAN II

for the Commodore 128 (native 128 mode) in plain BASIC V7

This game is an original text role game by Fabrizio Caruso.

It is a greatly improved version of the first MINI CONAN.

The is a menu-driven and text role game, where you are presented a short list of choices.

The game concept was inspired by the Italian text-based role-playing game "Conan" (aka "Avventura"):

http://ready64.org/giochi/scheda_gioco/id/858/conan


- GOAL

The goal of the game is to reach the highest possible score.

CONTROLS:

Use 1 2 3 4 keys

--------------------------------------------------------------------------------------------

DETAILED INSTRUCTIONS (not strictly necessary to play)

- SETTING

You are Conan, an adventurer who goes on quests to recover treasures and slaughter enemies.

- ENVIRONMENTS

The game has 3 types of environments:

1. "The Inn" (main menu to select quests and/or the merchant)

2. "Merchant" (where you buy items)

3. "Quests" (where you fight or try to escape enemies and where you can find treasures)

- THE INN

The Inn is your base from which you can choose to start either one of 3 quests or go to the merchant to buy some of its items.

- ABILITIES AND STATUS

The full status of Conan is displayed on the first two top lines:

1. energy,

2. power,

3. speed,

4. boots level,

5. armor level,

6. money,

7. score

-- Energy

Conan's life level is given by the his energy.

When the energy is below 1, he is dead.

-- Power and Speed

Conan (as well as the enemies) has 2 main abilities:

1. power (used in attacks): it increase by fighting and by completing quests

2. speed (used when fleeing enemies): it increases by succeeding escapes and completing quests

-- Boots level

This is a non-permanent consumable special ability that lets your hero escape enemies safely.

-- Armor level

This is permanent ability that provides a reduction of lost hit points in fights and failed escapes.

-- Money ($)

Money are used to buy items from the merchant.

They are acquired by:

- fights (small random amounts)

- completing quests (the harder the quest, the higher the amount)

-- Score

The score is the sum of the number of successful attacks and successful escapes.

- MERCHANT

The merchant sells 3 types of items:

1. Potion (+20 energy, consumed immediately)

2. Boots (+5 safe escapes, non-permanent, consumed when escaping from enemy encounters): Each upgrade provides safety in the next 5 escape attempts

3. Armor: (+1 armor level, permanent): It provides a damage reduction factor both when you fight and when you fail an escape

Remark: There is a constant supply of potions when your return from a quest. Boots and armor upgrades are never replenished.

- ENEMIES

1. Trolls (fast and weak)

2. Kobolds (slow and strong)

3. Elves (very fast and moderately strong)

4. Demons (very strong and moderately fast)

- QUESTS

1. Plains (only trolls and orcs here)

2. Woods (only trolls, orcs and elves here)

3. Desert (trolls, orcs, elves and kobolds here)

- FIGHTS

When you fight, you lose an amount of energy that depends on:

- the enemy nominal strength

- the number of enemies (quadratically)

- a random factor so that enemies' strenght in a fight is in a range MIN...MAX where MAX=6xMIN (*)

- your armor level

A fight ends with 1 dead enemy. You may also die if your energy goes below 1. 

If enemies are left, the game goes back to the choice between fight and run.

If no enemy is left, you receive a small reward in money.

(*) For example, if you have already beaten 3 trolls with no dammage, it is very luckly that you can beat 3 trolls with zero or no dammage again and almost sure you can beat 2 trolls.

- RUN (escape attempt)

When you run, you are trynig an escape you may succeed or fail.

When you fail you get a penalty that depends on:

- the enemy nominal speed

- the number of enemies (quadratically)

- a random factor so that enemies' speed in an escape attempt is in a range MIN...MAX where MAX=6xMIN (**)

The lost points are significantly fewer than in a fight.

After you fail you can decide to try an escape or attack.

If you have a positive boots level, your escape will always succeed with no lost points but your boot level decreases by 1.

(**) For example, if you have already escaped 3 orcs with zero or few failed attempts, it is luckly that you can escape 3 orcs again.

- GAME DIFFICULTY

The number of enemies will slowly increases in all 3 quests.

- BASIC STRATEGY

Simple initial strategy is to attack weak/fast enemies and escape from strong/slow enemies.

As your abilities increase, you will be able to fight against stronger enemies and run away from faster enemies.

- THE END

You will get an increasing number of enemies in your encounters.

The game has no ending other than your death!


EXPANDED CODE (CBM Prg Studio syntax)

0z=1:e=100:color0,7:r$="return":v=1:fori=1to5:w(i)=5:readj$(i),m$(i),p(i),e$(i):v(i)=2+i+4*(iand1):data"{light green}plains","{cyan}potion{yellow}":next
1deffnf(x)=int(n*n*x*x/(9+rnd(1)*45)):g=e:b=2:f=1:data50,"{light green}trolls","{green}woods","{light green}boots{yellow}",120,"{orange}kobolds","{orange}desert","{gray}armor{yellow}",300
2color4,7:scnclr:gosub9:fori=1to4:print"{white}"i;j$(i):next:getkeyj$:j=val(j$):on-(j<4andj>.)goto4:gosub9:printj$(4):fori=1to3:print"{white}"i"{dark gray}"w(i)m$(i)p(i):next
3print" {white}4"m$(4):getkeyj$:j=val(j$):on-(g<p(j)orw(j)=.)goto2:e=e-(j=1)*20:b=b-(j=2)*5:z=z-(j=3):g=g-p(j):w(j)=w(j)-1:goto2
4y$="{orange}lost":fork=.to1:fori=1toj*3:print"{clear}":printj$(j):print"{down}{white}day{light gray}"i;q$:r=1+rnd(1)*(j+1):n=2+int(rnd(1)*(2*j+t)):printn;e$(r)" {white}attack you!"
5gosub9:ife>.thenprint"{light gray}1.fight":print"2.run away{down}":getkeyj$:a=val(j$):a=aand1:h=fnf(v(r+1)/(1+z/2)):h=a*h-f:ifh>.thenprinty$;h:e=e-h:vol15:vol.
6ife<1thenprintz$:sleep4:gosub9:getkeyk$:run:elseifathenprint"{white}{down}{X} {cyan}1 dies":sleep1:f=f+1:n=n-1:ifn<1thenp%=1+r:print"{yellow}${white}"p%:g=g+p%:sleep1:goto8:elseif-agoto5
7m=fnf(v(r)):ifa=0andm>vandb<1thenx%=1+m/9/z:printy$;x%:e=e-x%:vol9:vol.:sleep1:goto5:elseifa=0thenprint"{cyan}you escaped!":sleep2:v=v+1:b=b+(b>.)
8z$="{orange}{down}end":next:p%=j*j*7+rnd(1)*9:ifk=.thent=t+.2-(t>2)*.2:q$=r$:print"reward {yellow}${white}{007}"p%:g=g+p%:sleep2:next:elseq$="":next:w(1)=w(1)+1:goto2
9print"{down*2}{orange}S{pink}"e" {orange}po{white}"f"{cyan}sp{white}"v"{light green}bo{green}"b"{gray}ar{light gray}"z"{yellow}${white}"g:print"{down}{gray}score{white}";v+f-2:print:return:data"{green}elves","{cyan}{reverse on}merchant{reverse off}{down}","{gray} exit{down}",,"{orange}demons",,,,

VARIABLES

e energy

f player's power

v player's speed

b boots level

z armor upgrade level

g money

w(i) number of the i-th items

m$(i) i-th item string

p(i) price of the i-th item

e$(i) i-th enemy string

v(i) i-th enemy's power and (i-1)-th enemy's speed

h computed enemy attack force in a fight

m computed effective enemy speed in an escape attempt

EXPLAINED CODE

0

// Initialize variables: 1 initial armor, initial energy = 100, initial speed = 1

z=1:e=100:color0,7:r$="return":v=1:

// Read game settings (name of the i-th quest or merchant, number of i-items, name of the i-th item, price of the i-th item, name of the i-th enemy, 

fori=1to5:w(i)=5:readj$(i),m$(i),p(i),e$(i):

// strentgh factor of the i-th enemy

v(i)=2+i+4*(iand1):

// Some game settings

data"{light green}plains","{cyan}potion{yellow}":next

1

// strength/speed strength function

deffnf(x)=int(n*n*x*x/(9+rnd(1)*45)):

// energy and gold = 100, 5 initial boots, 1 initial force

g=e:b=2:f=1:

// Some game settings

data50,"{light green}trolls","{green}woods","{light green}boots{yellow}",100,"{orange}kobolds","{orange}desert","{gray}armor{yellow}",300

2

// Set color to cyan. Display the inn and the stats. Display the list of quests. Wait for key press. 

color4,7:scnclr:gosub9:fori=1to4:print"{white}"i;j$(i):next:getkeyj$:j=val(j$)

// If selection is 1,2 or 3 than goto to 4

on-(j<4andj>.)goto4:

// Otherwise display stats and the merchant menu

gosub9:printj$(4):fori=1to3:print"{white}"i"{dark gray}"w(i)m$(i)p(i):next

3

// Display "merchant"

print" {white}4"m$(4):

// Wait for input. If input is invalid or exit, then go back to 2

getkeyj$:j=val(j$):on-(j=4org<p(j)orw(j)=.)goto2:

// Increase selected stat (energy with potion, boots, armor).  Reduce number of available item. Substract spent gold. Go back to 2

e=e-(j=1)*20:b=b-(j=2)*8:z=z-(j=3):g=g-p(j):w(j)=w(j)-1:goto2

4

// Initialization

y$="{orange}lost":

// Quest loop (j*3 days for the way there and back)

fork=.to1:fori=1toj*3:

// Display number of day on the journey

print"{clear}":printj$(j):print"{down}{white}day{light gray}"i;q$:

// Select enemy type

r=1+rnd(1)*(j+1):

// Select number of enemies

n=2+int(rnd(1)*(2*j+t)):

// Display number and type of enemies that attack you

printn;e$(r)" {white}attack you!"

5

// Display stats

gosub9:

// If still alive, display selection fight vs run

ife>.thenprint"{light gray}1.fight":print"2.run away{down}":

// Wait for input

getkeyj$:a=val(j$):a=aand1:

// Compute h, the strength/speed of the enemies

h=fnf(v(r+1)/(1+z/2)):h=a*h-f:

// If in a fight, if h is bigger than f, then you lose h energy. A click sound is produced

ifh>.thenprinty$;h:e=e-h:vol15:vol.

6

// if no energy left, wait 4 seconds, show stats, wait for a key, restart the game, else if in a fight, then display "1 dies", wait 1 sec, increase your strength, reduce number of enemies, if no enemies left then display small reward and display it, increase gold, display it, wait 1 a second and go back to 8, otherwise go to 5.

ife<1thenprintz$:sleep4:gosub9:getkeyk$:run:elseifathenprint"{white}{down}{X} {cyan}1 dies":sleep1:f=f+1:n=n-1:ifn<1thenp%=1+r:print"{yellow}${white}"p%:g=g+p%:sleep1:goto8:elseif-agoto5

7

// Compute enemy's speed m

m=fnf(v(r)):

// if running away and enemy's faster than player and player is not wearing magic boots, then player loses x% enemry, a click sound is produce, 1 second wait and go back to 5

// if running away and enemy is slower than player, then display "you escaped!", wait 2 seconds, increase player's speed, reduce boots if boots were available.

ifa=0andm>vandb<1thenx%=1+m/9/z:printy$;x%;e$:e=e-x%:vol9:vol.:sleep1:goto5:elseifa=0thenprint"you escaped!":sleep2:v=v+1:b=b+(b>.)

8

// Initialization

z$="{orange}{down}end":

next:

// Compute main quest reward

p%=j*j*7+rnd(1)*9:

// Increase t (which has an effect on the number of enemies encountered during the quests)

ifk=.thent=t+.2-(t>2)*.2:

// Compute q$ string ("back" or empty)

q$=r$:

// Display reward and produce a bell sound. Increase gold. Wait 2 secs. 

print"reward {yellow}${white}{007}"p%:g=g+p%:sleep2:next:elseq$="":next:w(1)=w(1)+1:goto2

9

// [Stats display routine]

// Display stats: energy, power, strength, speed, boots, armor, gold, score

print"{down*2}{orange}S{pink}"e" {orange}po{white}"f"{cyan}sp{white}"v"{light green}bo{green}"b"{gray}ar{light gray}"z"{yellow}${white}"g:print"{down}{gray}score{white}";v+f-2:print:return:

// More data

data"{green}elves","{cyan}{reverse on}merchant{reverse off}{down}","{gray} 


Download

Download
HOW_TO_PLAY_MiniConanII.txt 4 kB
Download
LOAD_INSTRUTIONS_MiniConanII.txt 439 bytes
Download
Mini Conan II PUR120.bas 1 kB
Download
Mini Conan II.D64 170 kB
Download
Mini Conan II.prg 1 kB
Download
MiniConanPlus_commented.txt 6 kB

Install instructions

Just use any C128 emulator such as Vice or Z64K and either use the .prg or .D64 file.

You can load the game into a real C128 by using many methods such as an SD2IEC card reader to load the .PRG or .D64 file.

Remark: The game is meant for the 40 column screen (VIC-IIe) but might work in 80 column mode (VDC) as well.

You can also load the .bas file through CBM Prg Studio and Vice.

You may have to type RUN to start the game.

Leave a comment

Log in with itch.io to leave a comment.