init python:
def dice( face, nb )
retVal = 0
for i in range( 0, nb ):
retVal += renpy.random.randint( 1, face )
return retVal
def rollD6( nb=1 ):
return dice( 6, nb )
def rollD10( nb=1 ):
return dice( 10, nb )
def rollD20( nb=1 ):
return dice( 20, nb )
def rollCombined():
return rollD6( 2 ) + rollD20()
def dices( face, nb )
retVal = []
for i in range( 0, nb ):
retVal.append( renpy.random.randint( 1, face ) )
return retVal
The save compatibility is just half a problem actually, since you added the stats variables in the already wrote game. But the way you do your dictionary declaration isn't good :File "game/lothal.rpy", line 175, in <module>
$Trust["Dendo"] += 1
KeyError: u'Dendo'
default Love = {}
default Lust = {}
default Loyalty = {}
default Trust = {}
default Anger = {}
# Naida Stats
$Love["Naida"] = 0
$Lust["Naida"] = 0
$Loyalty["Naida"] = 0
$Trust["Naida"] = 0
$Anger["Naida"] = 0
# Naida Stats
$Love["Ainas"] = 0
$Lust["Ainas"] = 0
$Loyalty["Ainas"] = 0
$Trust["Ainas"] = 0
$Anger["Ainas"] = 0
default Love = { "Nadia": 0, "Ainas": 0, "Dendo": 0 }
[...]
label after_load:
if not "Dendo" in Love :
$ Love["Dendo"] = 0
$ Lust["Dendo"] = 0
$ Loyalty["Dendo"] = 0
$ Trust["Dendo"] = 0
$ Anger["Dendo"] = 0
Only three films*There is no movie after Jedi, there are only six films.
Hi AON and thank you for this constructive criticism.The game is interesting, but the code raise so many questions :/ Like, by example, why are you importing a shit tons of modules just to roll some dices in the future ?
Aren't things like :
Enough and more efficient than a real time text parser ?Code:init python: def dice( face, nb ) retVal = 0 for i in range( 0, nb ): retVal += renpy.random.randint( 1, face ) return retVal def rollD6( nb=1 ): return dice( 6, nb ) def rollD10( nb=1 ): return dice( 10, nb ) def rollD20( nb=1 ): return dice( 20, nb ) def rollCombined(): return rollD6( 2 ) + rollD20()
And if really you need to keep the result of each individual dice, this will still be easier and faster :
Keep your code as simple as possible, it would be a shame that your game end abandoned because you drowned on an over complicated code.Code:def dices( face, nb ) retVal = [] for i in range( 0, nb ): retVal.append( renpy.random.randint( 1, face ) ) return retVal
There's also the problems that will lead to save compatibility errors and already lead to errors :
The save compatibility is just half a problem actually, since you added the stats variables in the already wrote game. But the way you do your dictionary declaration isn't good :
The declaration for Nadia and Ainas will never be proceeded (reason why you had to report it again in the "game_start" label). Ren'py recognize as valid lines at 0 indentation, but to be proceeded they need to be put in the flow of the game, which isn't the case here.Code:default Love = {} default Lust = {} default Loyalty = {} default Trust = {} default Anger = {} # Naida Stats $Love["Naida"] = 0 $Lust["Naida"] = 0 $Loyalty["Naida"] = 0 $Trust["Naida"] = 0 $Anger["Naida"] = 0 # Naida Stats $Love["Ainas"] = 0 $Lust["Ainas"] = 0 $Loyalty["Ainas"] = 0 $Trust["Ainas"] = 0 $Anger["Ainas"] = 0
What you needed to do is to add the default values directly in the dictionary declaration :
And to add new ones in future updates, you'll need to also rely on theCode:default Love = { "Nadia": 0, "Ainas": 0, "Dendo": 0 } [...]
You must be registered to see the links:
Code:label after_load: if not "Dendo" in Love : $ Love["Dendo"] = 0 $ Lust["Dendo"] = 0 $ Loyalty["Dendo"] = 0 $ Trust["Dendo"] = 0 $ Anger["Dendo"] = 0
1) Darn ... I really thought that the "So how did things end up this way?" part comes trough as the MC rephrases that "it was a long way from Lothal" to there. The basic intention was to ... show a possible future where the MC is involved in the current star wars storyline and make a bridge to the mostly Legends inspired content of the game. I guess I will have to reiterate on the intro.This definitely has potential. That word might be meaningless when people constantly use it for "landlady+2 roommates" game #468, but the basic stat/skill system and groundwork for the character sheet is really good.
Its still too early and short to leave a rating, but I'd like to leave some constructive criticism.
1) The intro is a bit disorienting. You are dropped into a combat scene with some exposition on whats going on. Then you cut and flashback to the past (or rather the beginning of the game), getting dropped in the middle of another predicament with another exposition about whats happening. Normally when you employ this kind of intro, you show the "So how did things end up this way?" scene, and then flash back to a point in time before some major conflict is happening. I am not a writer or anything, but that's what I've seen in most movies that do this.
2) There are a lot of typos and small grammatical errors. It's definitely not engrish, so a quick proofreading session should be fine.
3) It's sometimes hard to follow what people are trying to say. Again, I don't think its a problem with the English. It might be a case of the author knowing the story too well and not catching how it might read for someone unfamiliar with the story. Sorry I can't list any concrete examples, but there were multiple times where I had to rollback to try and figure out whats going on. Again, maybe a proofreader might help at some point.
4) At some point, maybe you could add an encyclopedia? I mean, I've watched most of the Star Wars, and played KOTOR 1+2... but I never really delved into the lore too much. I don't know the planets, races, and what not. I know Twilek are the strippers of the universe. Mandalorian to me are the dudes with that cool ass armor in KOTOR with an orc-like mentality. Maybe that's too much extra writing and effort though.
5) I think the biggest point I want to make is about the stats and skill tree. I wasn't too sure on how the base stats interact with the skill system. It seems like its completely independent other than intelligence increasing skill points to distribute (per level? are there level ups?). cRPGs usually tie the skills and stats together in some way. Maybe the base stats could give a modifier to the respective skill checks. Or maybe you could give individual skill points for each category. It seems a bit werid that a 20 int guy with 10 str can max out brawl or something. Maybe 1 base skill point for each category with +1 per 2 stats over 10 or something like that? Some rebalancing is probably needed if you fiddle with the skills though.
Wrong, the prequels, though poorly directed, were serviceable. The "Sequels" (read soulless Hollywood cash-in) have nothing redeemable about them that wasn't stolen or plagarized from better material.Only three films*
No, thanks to you for your game.Hi AON and thank you for this constructive criticism.
Well, it's always possible to stay near to that :The dice roller, well it felt so ... comfortable as it uses terms I am used to as a classical PnP RPG player. Things like roll 5 dice and keep 3 highest rolls etc.
Probably you are right, that there are simpler and probably easier solutions to that.
init python:
# face = Number of face of the dice, by default 6
# nb = Number of dices to roll, by default 1
# highest = Number of the highest dices to keep, by default keep all
# lowest = Number of the lowest dices to keep, by default keep all
def dices( face=6, nb=1, highest=None, lowest=None ):
# No dice rolled yet, empty the list
store.rolled_dices = []
# Roll /nb/ dices with between 1 and /face/ face.
for i in range( 0, nb ):
store.rolled_dices.append( renpy.random.randint( 1, face ) )
# Sort the dices according to their value
rolled = sorted( store.rolled_dices )
# If asked to "keep the X highest", do it
if not highest is None:
rolled = rolled[0-highest:]
# If asked to "keep the X lowest", do it
if not lowest is None:
rolled = rolled[:lowest]
# Return the sum of the kept dices
return sum( rolled )
# shortcut for D6 dices
def rollD6( nb=1, highest=None, lowest=None ):
return dices( 6, nb, highest, lowest )
# shortcut for D10 dices
def rollD6( nb=1, highest=None, lowest=None ):
return dices( 10, nb, highest, lowest )
# Last set of rolled dice will be stored here
default rolled_dices = []
label whatever:
# Roll only one dice (use the default value for everything)
$ value = rollD6()
# Roll 3, keep the 2 highest
$ value = rollD6( nb=3, highest=2 )
# Roll 3, keep the lowest
$ value = rollD6( nb=3, lowest=1 )
# Roll 3, keep them all
$ value = rollD6( nb=3 )
# Test the last set of rolled dices
if 1 in rolled_dices:
"A 1, looser :D"
# Test deeper the last set of rolled dices
if rolled_dices.count( 6 ) == 3:
"You've rolled 666 man !"
AMEN, My Brother! Thanks to the Prequel Haters/Special Edition Haters/De-Specializers, Lucas Sold it to the Disney Empire and now we are all suffering for the abomination that is the Fake Sequel Trilogy.Wrong, the prequels, though poorly directed, were serviceable. The "Sequels" (read soulless Hollywood cash-in) have nothing redeemable about them that wasn't stolen or plagarized from better material.
It pains me to say, but probably not ...AMEN, My Brother! Thanks to the Prequel Haters/Special Edition Haters/De-Specializers, Lucas Sold it to the Disney Empire and now we are all suffering for the abomination that is the Fake Sequel Trilogy.
As for this game, is it enough for a decent gaming session?
I literally have no idea what youre talking about.Wrong, the prequels, though poorly directed, were serviceable. The "Sequels" (read soulless Hollywood cash-in) have nothing redeemable about them that wasn't stolen or plagarized from better material.
There are six Star Wars films, denier.I literally have no idea what youre talking about.