Mini Conan II by Fabrizio Caruso
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}
Status | Released |
Author | BASIC 10Liner |
Genre | Role Playing |
Tags | 8-Bit, basic, c128, Commodore 64 |
Download
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.